diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/404.html b/404.html new file mode 100644 index 00000000..f262aa8f --- /dev/null +++ b/404.html @@ -0,0 +1,13 @@ + + + + + +Calimero 2.0 + + + + +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

+ + \ No newline at end of file diff --git a/admin-dashboard/add-application-release.png b/admin-dashboard/add-application-release.png new file mode 100644 index 00000000..5c3f23da Binary files /dev/null and b/admin-dashboard/add-application-release.png differ diff --git a/admin-dashboard/application-details.png b/admin-dashboard/application-details.png new file mode 100644 index 00000000..e12e67a7 Binary files /dev/null and b/admin-dashboard/application-details.png differ diff --git a/admin-dashboard/applications.png b/admin-dashboard/applications.png new file mode 100644 index 00000000..7f362b33 Binary files /dev/null and b/admin-dashboard/applications.png differ diff --git a/admin-dashboard/context-details.png b/admin-dashboard/context-details.png new file mode 100644 index 00000000..e1dffa19 Binary files /dev/null and b/admin-dashboard/context-details.png differ diff --git a/admin-dashboard/contexts.png b/admin-dashboard/contexts.png new file mode 100644 index 00000000..d2ec3c73 Binary files /dev/null and b/admin-dashboard/contexts.png differ diff --git a/admin-dashboard/export-identity.png b/admin-dashboard/export-identity.png new file mode 100644 index 00000000..34c79a2c Binary files /dev/null and b/admin-dashboard/export-identity.png differ diff --git a/admin-dashboard/identity.png b/admin-dashboard/identity.png new file mode 100644 index 00000000..94450cc4 Binary files /dev/null and b/admin-dashboard/identity.png differ diff --git a/admin-dashboard/install-application.png b/admin-dashboard/install-application.png new file mode 100644 index 00000000..9ce0b8b5 Binary files /dev/null and b/admin-dashboard/install-application.png differ diff --git a/admin-dashboard/login-page.png b/admin-dashboard/login-page.png new file mode 100644 index 00000000..5b286fe7 Binary files /dev/null and b/admin-dashboard/login-page.png differ diff --git a/admin-dashboard/publish-new-application.png b/admin-dashboard/publish-new-application.png new file mode 100644 index 00000000..291a234f Binary files /dev/null and b/admin-dashboard/publish-new-application.png differ diff --git a/admin-dashboard/request-root-key.png b/admin-dashboard/request-root-key.png new file mode 100644 index 00000000..0f2de7b9 Binary files /dev/null and b/admin-dashboard/request-root-key.png differ diff --git a/admin-dashboard/select-available-applications.png b/admin-dashboard/select-available-applications.png new file mode 100644 index 00000000..33474780 Binary files /dev/null and b/admin-dashboard/select-available-applications.png differ diff --git a/admin-dashboard/start-context.png b/admin-dashboard/start-context.png new file mode 100644 index 00000000..cecd0ef6 Binary files /dev/null and b/admin-dashboard/start-context.png differ diff --git a/assets/css/styles.97f36cf3.css b/assets/css/styles.97f36cf3.css new file mode 100644 index 00000000..ec2028a8 --- /dev/null +++ b/assets/css/styles.97f36cf3.css @@ -0,0 +1 @@ +.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}.toggleButton_Nz89,html{-webkit-tap-highlight-color:transparent}.clean-list,.containsTaskList_njjY,.details_YB2c>summary,.dropdown__menu,.menu__list{list-style:none}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:#0000;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:#0000000d;--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 #0000001a;--ifm-global-shadow-md:0 5px 40px #0003;--ifm-global-shadow-tl:0 12px 28px 0 #0003,0 2px 4px 0 #0000001a;--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:#0000;--ifm-table-stripe-background:#00000008;--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.125rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem;--docusaurus-progress-bar-color:var(--ifm-color-primary);--ifm-color-primary:#33b4b7;--ifm-color-primary-dark:#2ea2a5;--ifm-color-primary-darker:#2b999c;--ifm-color-primary-darkest:#247e80;--ifm-color-primary-light:#39c5c8;--ifm-color-primary-lighter:#43c7ca;--ifm-color-primary-lightest:#5ed0d2;--ifm-code-font-size:95%;--docusaurus-highlighted-code-line-bg:#fff;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300);--docusaurus-announcement-bar-height:auto;--docusaurus-collapse-button-bg:#0000;--docusaurus-collapse-button-bg-hover:#0000001a;--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:#0000}*{box-sizing:border-box}html{background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;-webkit-text-size-adjust:100%;text-size-adjust:100%}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none{margin-top:0!important}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid #0000001a;border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:initial;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}img{max-width:100%}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}.docItemContainer_mlrF article>:first-child,.docItemContainer_mlrF header+*,.footer__item,blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary,.wordWrapButtonEnabled_b9gR .wordWrapButtonIcon_w6Zv{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.admonitionHeading_Hz5a,.alert__heading,.feelback-btn.btn-action,.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:#3578e526;--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:#ebedf026;--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:#00a40026;--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:#54c7ec26;--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:#ffba0026;--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:#fa383e26;--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);overflow:hidden;width:var(--ifm-avatar-photo-size)}.card--full-height,.navbar__logo img,body,html{height:100%}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after,.feelback-container.feelback-message.layout-button-dialogue,.feelback-container.feelback-pulse,.feelback-container.feelback-reaction,.feelback-container.feelback-tagged-message.layout-button-dialog,.feelback-style.feelback-message.layout-button-dialogue,.feelback-style.feelback-pulse,.feelback-style.feelback-reaction,.feelback-style.feelback-tagged-message.layout-button-dialog{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs__link:any-link:hover,.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area[href].breadcrumbs__link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;-webkit-user-select:none;user-select:none;white-space:nowrap}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:#0000;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column;overflow:hidden}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);text-decoration:none}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.close:hover,.feelback-btn.disabled>.feelback-icon{opacity:.7}.close:focus,.theme-code-block-highlighted-line .codeLineNumber_O_eG:before{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}#nprogress,.dropdown__menu,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem;white-space:nowrap}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color);text-decoration:none}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor #0000;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:var(--ifm-footer-logo-max-width)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.admonitionContent_CGmw>:last-child,.collapsibleContent_w384 p:last-child,.details_YB2c>summary>p:last-child,.footer__items{margin-bottom:0}.codeBlockStandalone_kuj2,[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.details_YB2c[data-collapsed=false].isBrowser_KW2d>summary:before,.details_YB2c[open]:not(.isBrowser_KW2d)>summary:before,.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.navbar-sidebar,.navbar-sidebar__backdrop{opacity:0;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;bottom:0;top:0;left:0;visibility:hidden}.menu__link{color:var(--ifm-menu-color);flex:1;line-height:1.25}.menu__link:hover{color:var(--ifm-menu-color);text-decoration:none}.menu__caret:before,.menu__link--sublist-caret:after{height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;filter:var(--ifm-menu-link-sublist-icon-filter);content:""}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;margin-left:auto;min-width:1.25rem}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.feelback-btn.active>.feelback-icon.active,.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.announcementBarContent_YFhr,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;height:2rem;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.navbar__items--center .navbar__brand{margin:0}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:#ffffff1a;--ifm-navbar-search-input-placeholder-color:#ffffff80;color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:#ffffff0d;--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:.9rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);position:fixed;transform:translate3d(-100%,0,0);transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:#0009;position:fixed;right:0;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination__link:hover{text-decoration:none}.pagination-nav{display:grid;grid-gap:var(--ifm-spacing-horizontal);gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover);text-decoration:none}.pagination-nav__link--next{grid-column:2/3;text-align:right}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"Β« "}.pagination-nav__link--next .pagination-nav__label:after{content:" Β»"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.pills__item{border-radius:.5rem;cursor:pointer;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pills__item--active{color:var(--ifm-pills-color-active)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto;padding-left:0}.tabs__item{border-bottom:3px solid #0000;border-radius:var(--ifm-global-radius);cursor:pointer;display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:#ffffff0d;--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:#ffffff1a;--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:#ffffff12;--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}.feelback-container,.feelback-style{--highlight:0,0,0;--highlight-opacity:0.08;--border-color:#80808080;--max-width:unset;--bg:#fff;max-width:var(--max-width);position:relative}.feelback-container textarea,.feelback-style textarea{height:120px;padding:.5rem;width:100%}.feelback-container input,.feelback-style input{width:100%}.feelback-container input[type=email],.feelback-container input[type=text],.feelback-style input[type=email],.feelback-style input[type=text]{padding:.5rem}.feelback-container .popup,.feelback-style .popup{background-color:var(--theme-bg,var(--bg));border:1px solid var(--border-color);border-radius:4px;display:none;position:absolute;z-index:2}.feelback-container .dialog,.feelback-style .dialog{background-color:#00004226;bottom:0;left:0;position:fixed;right:0;top:0;z-index:99999}.feelback-btn.active,.feelback-btn.btn-reaction-picker{background-color:rgba(var(--highlight),var(--highlight-opacity))}.feelback-container .dialog>:first-child,.feelback-style .dialog>:first-child{margin:10% auto;max-width:480px}.feelback-container .dialog .content,.feelback-style .dialog .content{background-color:#f3f9ff;border:1px solid #7d8792;border-radius:6px;padding:1.5rem}.feelback-container .hidden,.feelback-style .hidden{display:none}.feelback-container.bordered .content,.feelback-style.bordered .content{border:1px solid var(--border-color);border-radius:1rem;padding:.5rem .75rem}.feelback-container.width-md,.feelback-style.width-md{--max-width:440px;margin:0 auto}.feelback-container.width-sm,.feelback-style.width-sm{--max-width:320px;margin:0 auto}.feelback-container.align-center .feelback-q,.feelback-style.align-center .feelback-q{justify-content:center}.feelback-q{align-items:center;display:flex;gap:1.2em;padding-inline:.4em}.feelback-a{line-height:32px;padding-inline:.4em}.feelback-form>.content{display:flex;flex-direction:column;gap:.3rem}.feelback-form .form-title{font-size:1.1em;font-weight:700}.feelback-buttons{align-items:baseline;display:flex;gap:2px}.feelback-buttons.with-count{gap:6px}.feelback-buttons.hide-zero .feelback-btn:has(.feelback-count:not([data-feelback-count-value]),.feelback-count[data-feelback-count-value="0"]),.feelback-buttons.hide-zero .feelback-btn:not(:has(.feelback-count)){display:none}.feelback-buttons.attached{gap:0}.feelback-buttons.align-end{flex-direction:row-reverse}.feelback-buttons.large>.feelback-btn{font-size:1.25em}.feelback-buttons .label{font-size:.9em;padding-inline:.25em}.feelback-radio-group{border:none;margin:0;padding:0}.feelback-radio-item{align-items:flex-start;display:flex;flex-direction:row;padding-bottom:.25rem;padding-top:.25rem}.feelback-radio-item input[type=radio]{display:inline-block;flex-shrink:0;margin:.5rem;width:unset}.feelback-radio-item label{cursor:pointer;display:block}.feelback-radio-item .feelback-text{font-size:.9em}.feelback-icon{display:flex;line-height:1em}.feelback-count{font-weight:700;padding-inline-start:.25em}#__docusaurus-base-url-issue-banner-container,.docSidebarContainer_cXIi,.feelback-btn.active>.feelback-icon.inactive,.feelback-btn>.active,.feelback-count.hide-zero:not([data-feelback-count-value]),.feelback-count.hide-zero[data-feelback-count-value="0"],.navbarSearchContainer_VT3I:empty,.sidebarLogo_QiBE,.themedComponent_oBnk,[data-theme=dark] .lightToggleIcon_kqLD,[data-theme=light] .darkToggleIcon_F1FA,html[data-announcement-bar-initially-dismissed=true] .announcementBar_iltt{display:none}.feelback-btn{align-items:center;background-color:initial;border:0;border-radius:.15em;cursor:pointer;display:flex;font-size:1em;height:32px;justify-content:center;min-width:32px;padding:0 .4em;text-align:center}.feelback-btn.disabled{cursor:default}.feelback-btn.active>.feelback-icon{opacity:1;transform:scale(1.3)}.feelback-btn:hover:not(.disabled){background-color:rgba(var(--highlight),calc(var(--highlight-opacity)*2))}.feelback-btn:hover:not(.disabled)>.feelback-icon{transform:scale(1.3);transition:.35s cubic-bezier(.35,1.23,.5,1.37)}.feelback-btn.btn-reaction-picker{border:1px solid #80808080;border-radius:100%}.feelback-btn.btn-reaction-picker .feelback-icon{transform:scale(1.15)}.feelback-btn.btn-action{border:1px solid;font-size:.9em;min-width:80px;padding-inline:.5rem}.theme-dark .feelback-container,.theme-dark .feelback-style,html.dark .feelback-container,html.dark .feelback-style,html[data-theme=dark] .feelback-container,html[data-theme=dark] .feelback-style{--highlight:255,255,255;--highlight-opacity:0.15;--bg:#0000;--border-color:#fff6}.theme-dark .feelback-container .dialog .content,.theme-dark .feelback-style .dialog .content,html.dark .feelback-container .dialog .content,html.dark .feelback-style .dialog .content,html[data-theme=dark] .feelback-container .dialog .content,html[data-theme=dark] .feelback-style .dialog .content{background:#111c29}[data-theme=dark]{--ifm-color-primary:#33b4b7;--ifm-color-primary-dark:#2ea2a5;--ifm-color-primary-darker:#2b999c;--ifm-color-primary-darkest:#247e80;--ifm-color-primary-light:#39c5c8;--ifm-color-primary-lighter:#43c7ca;--ifm-color-primary-lightest:#5ed0d2;--docusaurus-highlighted-code-line-bg:#0000004d;--ifm-background-color:#111;--ifm-code-background:#e90cd6}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white);background-color:#247e80}.feelback-container .feelback-btn{background-color:#1a8870;color:#fff}.feelback-container textarea{border:1px solid #ccc;border-radius:4px;padding:.5rem}.tag_kbZO{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_kbZO:hover{--docusaurus-tag-list-border:var(--ifm-link-color);text-decoration:none}.tagRegular_q7Tm{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_ZwAW{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_ZwAW:after,.tagWithCount_ZwAW:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_ZwAW:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_ZwAW:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_ZwAW span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.tags_KGbB{display:inline}.tag_c1zK{display:inline-block;margin:0 .4rem .5rem 0}.iconEdit_QUEh{margin-right:.3em;vertical-align:sub}.lastUpdated_EqfD{font-size:smaller;font-style:italic;margin-top:.2rem}.tocCollapsibleButton_M12c{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_M12c:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleButtonExpanded_xlzk:after,.tocCollapsibleExpanded_sMYC{transform:none}.tocCollapsible_crFy{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.tocCollapsibleContent_K9Y7>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_K9Y7 ul li{margin:.4rem .8rem}.tocCollapsibleContent_K9Y7 a{display:block}.tableOfContents_sWMA{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.backToTopButton_SKCq{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.backToTopButton_SKCq:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_bF2A{opacity:1;transform:scale(1);visibility:visible}.skipToContent_fesW{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem;z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_fesW:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_xLEJ{line-height:0;padding:0}.content_BFwO{font-size:85%;padding:5px 0;text-align:center}.content_BFwO a{color:inherit;text-decoration:underline}.announcementBar_iltt{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}.announcementBarPlaceholder_uEZi{flex:0 0 10px}.announcementBarClose__T52{align-self:stretch;flex:0 0 30px}.toggle_aafI{height:2rem;width:2rem}.toggleButton_Nz89{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.toggleButton_Nz89:hover{background:var(--ifm-color-emphasis-200)}.toggleButtonDisabled_T1FS{cursor:not-allowed}.darkNavbarColorModeToggle_eWwK:hover{background:var(--ifm-color-gray-800)}[data-theme=dark] .themedComponent--dark_prkl,[data-theme=light] .themedComponent--light_mXU6,html:not([data-theme]) .themedComponent--light_mXU6{display:initial}[data-theme=dark]:root{--docusaurus-collapse-button-bg:#ffffff0d;--docusaurus-collapse-button-bg-hover:#ffffff1a}.collapseSidebarButton_JXXE{display:none;margin:0}.iconExternalLink_lhLb{margin-left:.3rem}.buttons_AeoN,.menuExternalLink_T2Zs{align-items:center}.docMainContainer_ZDW3,.docRoot_QYMv{display:flex;width:100%}.docsWrapper_xW7h{display:flex;flex:1 0 auto}.dropdownNavbarItemMobile_xkDW{cursor:pointer}.iconLanguage__rYD{margin-right:5px;vertical-align:text-bottom}.navbarHideable_Bm2L{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_e6Mv{transform:translate3d(0,calc(-100% - 2px),0)}.errorBoundaryError_PDGB{color:red;white-space:pre-wrap}.errorBoundaryFallback_CQoQ{color:red;padding:.55rem}.buttonGroup___rI button,.codeBlockContainer_om3b{background:var(--prism-background-color);color:var(--prism-color)}.footerLogoLink_H73O{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.footerLogoLink_H73O:hover,.hash-link:focus,:hover>.hash-link{opacity:1}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}.anchorWithStickyNavbar_UcM0{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorWithHideOnScrollNavbar_J7iO{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);-webkit-user-select:none;user-select:none}.hash-link:before{content:"#"}.mainWrapper_SYWr{display:flex;flex:1 0 auto;flex-direction:column}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.codeBlockContainer_om3b{border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading)}.codeBlockContent_wy8a{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_ghPa{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlock_Ml9p{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockTitle_ghPa+.codeBlockContent_wy8a .codeBlock_Ml9p{border-top-left-radius:0;border-top-right-radius:0}.codeBlockLines_nvaI{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_jeec{display:table;padding:var(--ifm-pre-padding) 0}.buttonGroup___rI{column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup___rI button{align-items:center;border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);display:flex;line-height:0;opacity:0;padding:.4rem;transition:opacity var(--ifm-transition-fast) ease-in-out}.buttonGroup___rI button:focus-visible,.buttonGroup___rI button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup___rI button{opacity:.4}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_rz2B{counter-increment:a;display:table-row}.codeLineNumber_O_eG{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:sticky;text-align:right;width:1%}.codeLineNumber_O_eG:before{content:counter(a);opacity:.4}.codeLineContent_GZzm{padding-right:var(--ifm-pre-padding)}.theme-code-block:hover .copyButtonCopied_BLhh{opacity:1!important}.copyButtonIcons_AOAC{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_KQr7,.copyButtonSuccessIcon_UDIV{left:0;position:absolute;top:0;fill:currentColor;height:inherit;opacity:inherit;transition:all var(--ifm-transition-fast) ease;width:inherit}.copyButtonSuccessIcon_UDIV{color:#00d600;left:50%;opacity:0;top:50%;transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_BLhh .copyButtonIcon_KQr7{opacity:0;transform:scale(.33)}.copyButtonCopied_BLhh .copyButtonSuccessIcon_UDIV{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.wordWrapButtonIcon_w6Zv{height:1.2rem;width:1.2rem}.details_YB2c{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_YB2c>summary{cursor:pointer;padding-left:1rem;position:relative}.details_YB2c>summary::-webkit-details-marker{display:none}.details_YB2c>summary:before{border-color:#0000 #0000 #0000 var(--docusaurus-details-decoration-color);border-style:solid;border-width:var(--docusaurus-details-summary-arrow-size);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.collapsibleContent_w384{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.details_FSj2{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}:not(.containsTaskList_njjY>li)>.containsTaskList_njjY{padding-left:0}.img_Aha3{height:auto}.admonition_Xxwy{margin-bottom:1em}.admonitionHeading_Hz5a{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family)}.admonitionHeading_Hz5a:not(:last-child){margin-bottom:.3rem}.admonitionHeading_Hz5a code{text-transform:none}.admonitionIcon_u47d{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_u47d svg{display:inline-block;height:1.6em;width:1.6em;fill:var(--ifm-alert-foreground-color)}.breadcrumbHomeIcon_jWVc{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.breadcrumbsContainer_SGes{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}.features_t9lD{align-items:center;display:flex;padding:2rem 0;width:100%}.buttons_AeoN,.headerContainer_Dcc3,.heroSubtitle_jFu1{justify-content:center;display:flex}.featureSvg_GfXr{height:200px;width:200px}.heroBanner_qdFl{overflow:hidden;padding:4rem 0 2rem;position:relative;text-align:center}.headerContainer_Dcc3{padding:2rem 0;width:100%}.heroSubtitle_jFu1,.textPadding_Bwvp{padding:10px;width:1000px}.textPadding_Bwvp{border-left:5px solid #ccc;font-style:italic}.bodyContainer_uay2{display:flex;justify-content:center;padding:0 0 4rem;width:100%}@media (min-width:997px){.collapseSidebarButton_JXXE,.expandButton_J3G9{background-color:var(--docusaurus-collapse-button-bg)}.lastUpdated_EqfD{text-align:right}.tocMobile_eZNg{display:none}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose__T52,.announcementBarPlaceholder_uEZi{flex-basis:50px}.collapseSidebarButton_JXXE{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.collapseSidebarButtonIcon_IFmu{margin-top:4px;transform:rotate(180deg)}.expandButtonIcon_tUI1,[dir=rtl] .collapseSidebarButtonIcon_IFmu{transform:rotate(0)}.collapseSidebarButton_JXXE:focus,.collapseSidebarButton_JXXE:hover,.expandButton_J3G9:focus,.expandButton_J3G9:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.menuHtmlItem_KBjg{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_vdXT{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_vdXT{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_jacn{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_BlfT{display:flex;flex-direction:column;height:100%;padding-top:var(--ifm-navbar-height);width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_HSHF{padding-top:0}.sidebarHidden_I1u8{opacity:0;visibility:hidden}.sidebarLogo_QiBE{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);text-decoration:none!important}.sidebarLogo_QiBE img{height:2rem;margin-right:.5rem}.expandButton_J3G9{align-items:center;display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;transition:background-color var(--ifm-transition-fast) ease;width:100%}[dir=rtl] .expandButtonIcon_tUI1{transform:rotate(180deg)}.docSidebarContainer_cXIi{border-right:1px solid var(--ifm-toc-border-color);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_ZUk8{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.sidebarViewport_zEPt{height:100%;max-height:100vh;position:sticky;top:0}.docMainContainer_ZDW3{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced__qER{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_pzsv{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}.navbarSearchContainer_VT3I{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.docItemCol_UIRF{max-width:75%!important}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:996px){.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.colorModeToggle_LBc1,.footer__link-separator,.navbar__item,.tableOfContents_sWMA{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.docItemContainer__79N{padding:0 .3rem}.navbarSearchContainer_VT3I{position:absolute;right:var(--ifm-navbar-padding-horizontal)}}@media screen and (max-width:996px){.heroBanner_qdFl{padding:2rem}}@media (max-width:768px){.feelback-q{justify-content:space-between}}@media (max-width:576px){.markdown h1:first-child{--ifm-h1-font-size:2rem}.markdown>h2{--ifm-h2-font-size:1.5rem}.markdown>h3{--ifm-h3-font-size:1.25rem}}@media (hover:hover){.backToTopButton_SKCq:hover{background-color:var(--ifm-color-emphasis-300)}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media (prefers-reduced-motion:reduce){:root{--ifm-transition-fast:0ms;--ifm-transition-slow:0ms}}@media print{.announcementBar_iltt,.footer,.menu,.navbar,.pagination-nav,.table-of-contents,.tocMobile_eZNg{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_nvaI{white-space:pre-wrap}} \ No newline at end of file diff --git a/assets/images/applications-65c777f084225d92fc42a490b4a1b3e1.png b/assets/images/applications-65c777f084225d92fc42a490b4a1b3e1.png new file mode 100644 index 00000000..7f362b33 Binary files /dev/null and b/assets/images/applications-65c777f084225d92fc42a490b4a1b3e1.png differ diff --git a/assets/images/architecture-88be4e09ef7ca7e8a3bf6b5a69783f03.png b/assets/images/architecture-88be4e09ef7ca7e8a3bf6b5a69783f03.png new file mode 100644 index 00000000..506266d4 Binary files /dev/null and b/assets/images/architecture-88be4e09ef7ca7e8a3bf6b5a69783f03.png differ diff --git a/assets/images/contexts-6319c93e803b1ca884e210104b4e654c.png b/assets/images/contexts-6319c93e803b1ca884e210104b4e654c.png new file mode 100644 index 00000000..d2ec3c73 Binary files /dev/null and b/assets/images/contexts-6319c93e803b1ca884e210104b4e654c.png differ diff --git a/assets/images/export-identity-4108c244241ad8b32d09d98e3ec3bd29.png b/assets/images/export-identity-4108c244241ad8b32d09d98e3ec3bd29.png new file mode 100644 index 00000000..34c79a2c Binary files /dev/null and b/assets/images/export-identity-4108c244241ad8b32d09d98e3ec3bd29.png differ diff --git a/assets/images/identity-4bfbe6d0828c9b408f0c8a6506a92327.png b/assets/images/identity-4bfbe6d0828c9b408f0c8a6506a92327.png new file mode 100644 index 00000000..94450cc4 Binary files /dev/null and b/assets/images/identity-4bfbe6d0828c9b408f0c8a6506a92327.png differ diff --git a/assets/images/publish-new-application-f4493f9baa5b1dc59d62ab483b52bb65.png b/assets/images/publish-new-application-f4493f9baa5b1dc59d62ab483b52bb65.png new file mode 100644 index 00000000..291a234f Binary files /dev/null and b/assets/images/publish-new-application-f4493f9baa5b1dc59d62ab483b52bb65.png differ diff --git a/assets/js/08c23959.aab582d6.js b/assets/js/08c23959.aab582d6.js new file mode 100644 index 00000000..da3704d1 --- /dev/null +++ b/assets/js/08c23959.aab582d6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[822],{5431:(e,o,t)=>{t.r(o),t.d(o,{assets:()=>a,contentTitle:()=>s,default:()=>p,frontMatter:()=>r,metadata:()=>l,toc:()=>c});var n=t(6070),i=t(5710);const r={id:"protocol-sdk",title:"Protocol SDK"},s=void 0,l={id:"build/protocol-sdks/protocol-sdk",title:"Protocol SDK",description:"The Protocol SDK within the Calimero Network serves as a foundational tool for developers, enabling them to design, develop, and deploy the specific protocols that govern the operation of their decentralized applications (DApps). This SDK is particularly crucial in a network like Calimero, where privacy, security, and decentralized communication are paramount. Here's an overview of the Protocol SDK, highlighting its features, functionalities, and its role in the development lifecycle of DApps:",source:"@site/docs/03-build/01-protocol-sdks/01-protocol-sdk.mdx",sourceDirName:"03-build/01-protocol-sdks",slug:"/build/protocol-sdks/protocol-sdk",permalink:"/build/protocol-sdks/protocol-sdk",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1718189423e3,sidebarPosition:1,frontMatter:{id:"protocol-sdk",title:"Protocol SDK"},sidebar:"tutorialSidebar",previous:{title:"Quickstart",permalink:"/build/quickstart"},next:{title:"Rust Protocol SDK",permalink:"/build/protocol-sdks/protocol-rs-sdk"}},a={},c=[{value:"Features and Functionalities",id:"features-and-functionalities",level:3},{value:"Role in DApp Development",id:"role-in-dapp-development",level:3},{value:"Integration with Other Calimero Components",id:"integration-with-other-calimero-components",level:3},{value:"Use Cases",id:"use-cases",level:3}];function d(e){const o={h3:"h3",li:"li",p:"p",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(o.p,{children:"The Protocol SDK within the Calimero Network serves as a foundational tool for developers, enabling them to design, develop, and deploy the specific protocols that govern the operation of their decentralized applications (DApps). This SDK is particularly crucial in a network like Calimero, where privacy, security, and decentralized communication are paramount. Here's an overview of the Protocol SDK, highlighting its features, functionalities, and its role in the development lifecycle of DApps:"}),"\n",(0,n.jsx)(o.h3,{id:"features-and-functionalities",children:"Features and Functionalities"}),"\n",(0,n.jsxs)(o.ul,{children:["\n",(0,n.jsxs)(o.li,{children:[(0,n.jsx)(o.strong,{children:"Protocol Definition"}),": Allows developers to define the rules and behaviors of their application networks, including communication protocols, data formats, and interaction patterns among nodes."]}),"\n",(0,n.jsxs)(o.li,{children:[(0,n.jsx)(o.strong,{children:"Code Generation"}),": Automates the generation of boilerplate code required to implement the defined protocols, significantly speeding up the development process and reducing the potential for errors."]}),"\n",(0,n.jsxs)(o.li,{children:[(0,n.jsx)(o.strong,{children:"Interoperability Support"}),": Facilitates the creation of protocols that can interact with various blockchains and external systems, ensuring that Calimero-based DApps can operate within the broader blockchain ecosystem."]}),"\n",(0,n.jsxs)(o.li,{children:[(0,n.jsx)(o.strong,{children:"Security Focus"}),": Provides tools and libraries to incorporate advanced security features into protocols, such as end-to-end encryption, secure key management, and privacy-preserving data sharing mechanisms."]}),"\n",(0,n.jsxs)(o.li,{children:[(0,n.jsx)(o.strong,{children:"Performance Optimization"}),": Includes optimization tools and best practices to ensure that the protocols are efficient in terms of resource usage, suitable for decentralized networks where performance can be a critical concern."]}),"\n"]}),"\n",(0,n.jsx)(o.h3,{id:"role-in-dapp-development",children:"Role in DApp Development"}),"\n",(0,n.jsxs)(o.ul,{children:["\n",(0,n.jsxs)(o.li,{children:[(0,n.jsx)(o.strong,{children:"Protocol Development"}),": At the core of any DApp on the Calimero Network is a protocol that dictates how the application functions, how nodes within the application's network communicate, and how data is handled and stored. The Protocol SDK is the primary tool for developing these protocols."]}),"\n",(0,n.jsxs)(o.li,{children:[(0,n.jsx)(o.strong,{children:"Testing and Deployment"}),": The SDK provides an environment for thorough testing of the protocols in simulated conditions before they are deployed on the live network. This ensures that any issues can be identified and resolved in a controlled setting, minimizing risks."]}),"\n",(0,n.jsxs)(o.li,{children:[(0,n.jsx)(o.strong,{children:"Versioning and Updates"}),": Supports protocol versioning, enabling developers to iterate on their protocols and roll out updates in a structured manner. This is crucial for maintaining compatibility and ensuring the longevity and scalability of DApps."]}),"\n"]}),"\n",(0,n.jsx)(o.h3,{id:"integration-with-other-calimero-components",children:"Integration with Other Calimero Components"}),"\n",(0,n.jsxs)(o.ul,{children:["\n",(0,n.jsxs)(o.li,{children:[(0,n.jsx)(o.strong,{children:"Client Nodes"}),": Protocols developed with the Protocol SDK are deployed on client nodes, which act as the runtime environment for the DApps built on these protocols."]}),"\n",(0,n.jsxs)(o.li,{children:[(0,n.jsx)(o.strong,{children:"Client SDKs"}),": These SDKs interact with the protocols at a higher level, providing interfaces for end-users to interact with the DApps. The seamless integration between the Protocol SDK and Client SDKs ensures a smooth user experience."]}),"\n",(0,n.jsxs)(o.li,{children:[(0,n.jsx)(o.strong,{children:"Specialized Nodes"}),": Some protocols may require specialized computational resources or functionalities. The Protocol SDK allows for the integration of these services, enabling DApps to leverage the specialized nodes within the Calimero Network."]}),"\n"]}),"\n",(0,n.jsx)(o.h3,{id:"use-cases",children:"Use Cases"}),"\n",(0,n.jsxs)(o.ul,{children:["\n",(0,n.jsxs)(o.li,{children:[(0,n.jsx)(o.strong,{children:"Decentralized Messaging"}),": For a messaging app, the Protocol SDK could be used to define the encryption protocols, message delivery mechanisms, and peer discovery protocols."]}),"\n",(0,n.jsxs)(o.li,{children:[(0,n.jsx)(o.strong,{children:"Decentralized Finance (DeFi)"}),": In a DeFi application, the SDK could define the protocols for executing smart contracts, handling transactions, and interacting with external blockchains for asset transfers."]}),"\n"]}),"\n",(0,n.jsx)(o.p,{children:"The Protocol SDK is a critical component of the Calimero Network, empowering developers to build sophisticated, secure, and efficient decentralized applications. By abstracting much of the complexity associated with protocol development, the SDK enables developers to focus on the unique features and functionalities of their DApps, fostering innovation and growth within the Calimero ecosystem."})]})}function p(e={}){const{wrapper:o}={...(0,i.R)(),...e.components};return o?(0,n.jsx)(o,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}},5710:(e,o,t)=>{t.d(o,{R:()=>s,x:()=>l});var n=t(758);const i={},r=n.createContext(i);function s(e){const o=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function l(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),n.createElement(r.Provider,{value:o},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/0b38cd53.e27d5979.js b/assets/js/0b38cd53.e27d5979.js new file mode 100644 index 00000000..120e97fb --- /dev/null +++ b/assets/js/0b38cd53.e27d5979.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[673],{8171:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>a,metadata:()=>r,toc:()=>l});var i=t(6070),s=t(5710);const a={id:"specialized-nodes",title:"Specialized Nodes"},o=void 0,r={id:"learn/advanced-concepts/specialized-nodes",title:"Specialized Nodes",description:"Specialized nodes in the Calimero Network are third-party nodes that augment a context's capacity and reliability. They participate in a context but have additional capabilities, providing various services while maintaining the decentralized nature of the network.",source:"@site/docs/02-learn/04-advanced-concepts/01-specialized-nodes.mdx",sourceDirName:"02-learn/04-advanced-concepts",slug:"/learn/advanced-concepts/specialized-nodes",permalink:"/learn/advanced-concepts/specialized-nodes",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1718189423e3,sidebarPosition:1,frontMatter:{id:"specialized-nodes",title:"Specialized Nodes"},sidebar:"tutorialSidebar",previous:{title:"Contexts",permalink:"/learn/core-concepts/contexts"},next:{title:"Encryption",permalink:"/learn/advanced-concepts/encryption"}},c={},l=[{value:"Key Concepts",id:"key-concepts",level:3},{value:"Types of Specialized Nodes",id:"types-of-specialized-nodes",level:3},{value:"Reliability Through Decentralization",id:"reliability-through-decentralization",level:3}];function d(e){const n={h3:"h3",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.p,{children:"Specialized nodes in the Calimero Network are third-party nodes that augment a context's capacity and reliability. They participate in a context but have additional capabilities, providing various services while maintaining the decentralized nature of the network."}),"\n",(0,i.jsx)(n.h3,{id:"key-concepts",children:"Key Concepts"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Incentivization"}),": These nodes can be incentivized through contracts on blockchains that pay them for their services, ensuring they remain motivated to perform their roles effectively."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Permissions and Roles"}),": Specialized nodes can have different levels of permissions, ranging from being subscribed to encrypted network events to fully participating as part of the context."]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"types-of-specialized-nodes",children:"Types of Specialized Nodes"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Storage Nodes"}),":"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Encrypted Transaction Storage"}),": These nodes store encrypted transactions without the ability to read them. They guarantee 100% uptime, ensuring that all transactions are available even when peers are offline. When peers come back online, the node provides missed transactions and new transactions for replication."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Blob Storage"}),": These nodes also store encrypted blobs of non-state-transitional data, ensuring that all necessary data is always available without holding decryption keys."]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Delegated Execution Nodes"}),":"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Context Maintenance"}),": These nodes fully join a context and maintain the context state on their end. They can handle resource-intensive executions, delegating specific calls to optimize performance and resource utilization."]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Administrative Nodes"}),":"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Event Observation and Action"}),": These nodes observe real-world events and act on them within the context. For example, in a billionaire's club context, an administrative node could monitor members' accounts on a blockchain and evict them if their balance falls below a certain threshold."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"reliability-through-decentralization",children:"Reliability Through Decentralization"}),"\n",(0,i.jsx)(n.p,{children:"Specialized nodes ensure that the context remains operational and consistent, even when primary peers are offline. They provide the necessary data and transactions to keep the context up-to-date. The decentralized nature ensures that the state is eventually consistent. Fragmentation does not cause issues as the system reconciles itself when peers come back online, highlighting the network's reliability without reliance on any single specialized node."})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},5710:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>r});var i=t(758);const s={},a=i.createContext(s);function o(e){const n=i.useContext(a);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),i.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/17896441.2424f4db.js b/assets/js/17896441.2424f4db.js new file mode 100644 index 00000000..01194d0a --- /dev/null +++ b/assets/js/17896441.2424f4db.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[401],{3494:(e,t,o)=>{o.d(t,{A:()=>p});var a=o(758),r=o(5846),s=o(2041),i=o(6070);const n=[{value:"accurate",title:"Accurate",description:"Accurately describes the product or feature."},{value:"problem-solved",title:"Solved my problem",description:"Helped me resolve an issue."},{value:"clear",title:"Easy to understand",description:"Easy to follow and comprehend."},{value:"product-chosen",title:"Helped me decide to use the product",description:"Convinced me to adopt the product or feature."},{value:"other-yes",title:"Another reason"}],l=[{value:"inaccurate",title:"Inaccurate",description:"Doesn't accurately describe the product or feature."},{value:"missing-info",title:"Couldn't find what I was looking for",description:"Missing important information."},{value:"unclear",title:"Hard to understand",description:"Too complicated or unclear."},{value:"bad-examples",title:"Code samples errors",description:"One or more code samples are incorrect."},{value:"other-no",title:"Another reason"}],c="61a5fb78-4d70-402a-9692-c8ecf3755ed8";function d(){const[e,t]=(0,a.useState)();return(0,i.jsx)("div",{className:"feelback-container",children:e?(0,i.jsx)(s.l6,{contentSetId:c,layout:"radio-group",preset:s.MB,tags:"y"===e?n:l,title:"y"===e?"What did you like?":"What can we improve?",placeholder:"(optional) Please, provide additional feedback.",textAnswer:e}):(0,i.jsx)(s.vN,{text:"Was this page helpful?",items:s.D1,showLabels:!0,onClick:e=>t(e)})})}function u(){return(0,i.jsx)(i.Fragment,{children:(0,i.jsx)("div",{className:"alert alert--success",children:(0,i.jsxs)("summary",{children:["Need some help? ",(0,i.jsx)("a",{children:"Check "}),(0,i.jsx)("a",{href:"/resources/community-and-support",children:"Support"})," page"]})})})}function p(e){return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(r.A,{...e}),(0,i.jsx)("div",{style:{marginTop:"16px"},className:"theme-admonition theme-admonition-tip admonition_node_modules-@docusaurus-theme-classic-lib-theme-Admonition-Layout-styles-module alert alert--info",children:(0,i.jsx)(d,{})}),(0,i.jsx)("div",{style:{paddingTop:"16px"},children:(0,i.jsx)(u,{})})]})}}}]); \ No newline at end of file diff --git a/assets/js/190ec3a6.4fcc4f54.js b/assets/js/190ec3a6.4fcc4f54.js new file mode 100644 index 00000000..65937872 --- /dev/null +++ b/assets/js/190ec3a6.4fcc4f54.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[707],{8202:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>o,contentTitle:()=>l,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>c});var s=i(6070),t=i(5710);const r={id:"admin-client-api",title:"Admin Client API"},l=void 0,a={id:"learn/core-concepts/node/admin-client-api",title:"Admin Client API",description:"About Admin Client API",source:"@site/docs/02-learn/03-core-concepts/02-node/admin-api.mdx",sourceDirName:"02-learn/03-core-concepts/02-node",slug:"/learn/core-concepts/node/admin-client-api",permalink:"/learn/core-concepts/node/admin-client-api",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1718189423e3,frontMatter:{id:"admin-client-api",title:"Admin Client API"},sidebar:"tutorialSidebar",previous:{title:"Network",permalink:"/learn/core-concepts/node/network"},next:{title:"Applications",permalink:"/learn/core-concepts/applications"}},o={},c=[{value:"About Admin Client API",id:"about-admin-client-api",level:3},{value:"How to Use",id:"how-to-use",level:3},{value:"API Endpoints",id:"api-endpoints",level:3}];function d(e){const n={code:"code",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h3,{id:"about-admin-client-api",children:"About Admin Client API"}),"\n",(0,s.jsxs)(n.p,{children:["Our Admin Client API offers a comprehensive set of endpoints designed to facilitate the management and administration of the node states.\nWith intuitive routes and robust handlers, administrators can seamlessly navigate various node operations with ease and efficiency.\nThe Admin Client API, paired with the ",(0,s.jsx)(n.strong,{children:"Admin UI"})," \u2014 a web application, is your go-to tool for managing node states,\nsimplifying interactions with the server."]}),"\n",(0,s.jsx)(n.p,{children:"The Admin API empowers you to:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Revoke root keys"}),"\n",(0,s.jsx)(n.li,{children:"Request validation challenge"}),"\n",(0,s.jsx)(n.li,{children:"Install and list node applications"}),"\n",(0,s.jsx)(n.li,{children:"Fetch decentralized identifiers (DID)"}),"\n",(0,s.jsx)(n.li,{children:"Manage client keys"}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"In essence, the Admin API simplifies node management, while the Admin UI offers an intuitive interface for seamless control."}),"\n",(0,s.jsx)(n.h3,{id:"how-to-use",children:"How to Use"}),"\n",(0,s.jsxs)(n.p,{children:["To utilize the Admin API endpoints effectively, the recommended approach is to leverage the ",(0,s.jsx)(n.strong,{children:"Admin UI web application"}),". The Admin UI automates various steps involved in interacting with the Admin API, ensuring seamless integration and providing the best user experience."]}),"\n",(0,s.jsx)(n.p,{children:"By using the Admin UI, administrators can streamline their workflow, access essential functionalities with ease, and benefit from intuitive visualizations and controls. This approach not only simplifies the management of decentralized networks but also ensures that administrators have access to the best options and features available."}),"\n",(0,s.jsx)(n.h3,{id:"api-endpoints",children:"API Endpoints"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Root Key Request"})," - This endpoint allows administrators to add root keys for secure authentication and access control within the decentralized network environment.\nValidation Challenge Generation"]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Pre requirements"}),' - Before calling "Root Key Request" endpoint, it is essential to first call the "/request-challenge" endpoint. This step is necessary as the "Root Key Request" endpoint requires a challenge to be passed and verified during the process of adding the root key']}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"POST"})," ",(0,s.jsx)(n.code,{children:"/root-key"})]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Parameters"}),":"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"accountId"})," : The account identifier associated with the request."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"signature"})," : The signature generated by signing the challenge and message with the wallet."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"publicKey"})," : The public key used for verification."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"callbackUrl"})," : The URL to which the response callback should be sent."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Note: The parameters for this POST request, including accountId, signature, and publicKey, are generated by signing the challenge and message with the wallet."}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Example call with curl"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:'curl -X POST \\\n-H "Content-Type: application/json" \\\n-d \'{"accountId": "", "signature": "", "publicKey": "", "callbackUrl": ""}\' \\\nhttp:///admin-api/root-key\n'})}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Example response"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:'> Success response\n { data: "Root key added" }\n> Error response\n { error: "Failed to add root key: " }\n'})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Request authentication challenge"})," - Administrators can utilize this endpoint to generate validation challenges, enabling users to authenticate their identity via wallet signatures for enhanced security measures."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"POST"})," ",(0,s.jsx)(n.code,{children:"/request-challenge"})]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Example call with curl"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"curl -X POST http:///admin-api/request-challenge\n"})}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Example response"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:'> Success response\n { data: { challenge: } }\n> Error response\n { error: "Failed to fetch challenge: " }\n'})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Install Application"})," - This endpoint facilitates the installation of new applications on the node, expanding the functionality and capabilities of the decentralized network ecosystem."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"POST"})," ",(0,s.jsx)(n.code,{children:"/install-application"})]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Parameters"}),":"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"application"})," : Application name - can be selected from the Admin UI"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"version"})," : Application release version - can be selected from the Admin UI"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Example call with curl"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:'curl -X POST \\\n-H "Content-Type: application/json" \\\n-d \'{"application": "", "version": ""}\' \\\nhttp:///admin-api/install-application\n'})}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Example response"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:'> Success response\n { data: "Application Installed" }\n> Error response\n { error: "Failed to install application: " }\n'})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"List installed Application"})," - This endpoint returns a list of installed applications, providing valuable insights into the current state of the decentralized network ecosystem"]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"GET"})," ",(0,s.jsx)(n.code,{children:"/applications"})]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Example call with curl"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"curl -X GET http:///admin-api/applications\n"})}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Example response"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:'> Success response\n { data: {\n applications:\n [{\n application_name: ,\n version: \n }]\n }}\n> Error response\n { error: "Failed to fetch installed applications: " }\n'})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Add Client Key"})," - Administrators can add new client keys via this endpoint, enabling seamless access and authentication for authorized users within the network."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"POST"})," ",(0,s.jsx)(n.code,{children:"/add-client-key"})]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Parameters"}),":"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"wallet_signature"})," : Signature generated with the wallet"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"payload"})," : Reqest payload containing message and metadata"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"wallet_metadata"})," : Crypto wallet metadata containing information for wallet_type and signing_key"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Example call with curl"})}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:'curl -X POST \\\n-H "Content-Type: application/json" \\\n-d \'{"wallet_signature": "", "payload": { "message": , "metadata": }. "wallet_metadata": {"wallet_type": , "signing_key": }}\' \\\nhttp:///admin-api/add-client-key\n'})}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Example response"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:'> Success response\n { data: "Client key stored" }\n> Error response\n { error: "Failed to add client key: " }\n'})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Get the DID"})," - Fetches the Decentralized Identifier (DID) associated with the node, providing a unique identifier for network entities and enabling interoperability across decentralized applications."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"GET"})," ",(0,s.jsx)(n.code,{children:"/did"})]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"curl -X GET http:///admin-api/did\n"})}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Example response"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:'> Success response\n { data:\n {\n id: ,\n root_keys:\n [{\n signing_key: \n }]\n }\n }\n> Error response\n { error: "Failed to fetch DID: " }\n'})}),"\n"]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},5710:(e,n,i)=>{i.d(n,{R:()=>l,x:()=>a});var s=i(758);const t={},r=s.createContext(t);function l(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),s.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1df93b7f.5f1302ba.js b/assets/js/1df93b7f.5f1302ba.js new file mode 100644 index 00000000..fb8c13d4 --- /dev/null +++ b/assets/js/1df93b7f.5f1302ba.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[583],{3982:(l,t,e)=>{e.d(t,{A:()=>r});var a,q,m=e(758);function h(){return h=Object.assign?Object.assign.bind():function(l){for(var t=1;t{let{title:t,titleId:e,...r}=l;return m.createElement("svg",h({xmlns:"http://www.w3.org/2000/svg",width:539,height:434,fill:"none",viewBox:"0 0 539 434","aria-labelledby":e},r),t?m.createElement("title",{id:e},t):null,a||(a=m.createElement("g",{clipPath:"url(#a)"},m.createElement("path",{stroke:"#10B981",strokeMiterlimit:10,strokeWidth:5,d:"M43 366.116a166 166 0 0 1 59.412-2.058c46.77 7.058 63.747 31.295 79.278 23.156 24.011-12.593-9.858-73.997 23.178-119.274 24.227-33.213 72.569-41.446 83.762-43.347 43.649-7.437 65.48 8.9 85.47-8.644 14.63-12.818 9.241-27.081 27.484-52.129 12.696-17.441 28.079-28.089 39.24-34.427"}),m.createElement("path",{stroke:"#10B981",strokeMiterlimit:10,strokeWidth:5,d:"M291.97 295.045c9.186-11.332 21.43-22.11 36.141-31.814 34.967-22.91 63.935-25.894 67.676-36.081 5.775-15.75-61.816-13.006-74.859-41.553-9.571-20.936 14.912-48.435 20.585-54.802 22.104-24.83 48.219-32.315 47.726-47.165-.345-10.863-14.473-11.531-21.71-27.306-5.042-10.98-3.28-21.706-.959-29.146"}),m.createElement("rect",{width:336.682,height:223.194,x:102.535,y:95.946,fill:"#2D2D38",stroke:"#393939",strokeWidth:1.891,rx:6.62}),m.createElement("rect",{width:306.419,height:198.605,x:117.666,y:111.078,fill:"#2D2D38",stroke:"#393939",strokeWidth:1.891,rx:6.62}),m.createElement("rect",{width:306.419,height:198.605,x:117.666,y:111.078,fill:"#2D2D38",stroke:"#393939",strokeWidth:1.891,rx:6.62}),m.createElement("path",{fill:"#2D2D38",stroke:"#393939",strokeWidth:1.891,d:"M77.946 319.139h383.969v2.837a6.62 6.62 0 0 1-6.62 6.62H84.565a6.62 6.62 0 0 1-6.62-6.62zM81.729 328.597h376.403v2.837a6.62 6.62 0 0 1-6.62 6.62H88.349a6.62 6.62 0 0 1-6.62-6.62z"}),m.createElement("path",{fill:"#6CECAC",fillOpacity:.25,d:"M121.566 124.145q-1.173 0-1.998-.638-.825-.644-1.261-1.862-.435-1.225-.435-2.958 0-1.722.435-2.941.441-1.225 1.266-1.868.83-.65 1.993-.649 1.161 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.161 0 1.805-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.836 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V124h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.648 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.131 1.141q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.831-.65 1.992-.649 1.163 0 1.988.649.83.643 1.265 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.639-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.295-2.35-.29-.97-.841-1.479a1.86 1.86 0 0 0-1.313-.508q-1.15 0-1.8 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.835 1.469q.55.503 1.323.503m9.132 1.141q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.265-1.868.83-.65 1.993-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.162 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345.291.966.836 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V124h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.151 0-1.8 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.835 1.469q.55.503 1.323.503m9.132 1.141q-1.173 0-1.998-.638-.825-.644-1.261-1.862-.435-1.225-.435-2.958 0-1.722.435-2.941.441-1.225 1.266-1.868.83-.65 1.993-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.161 0 1.805-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.836 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V124h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.649 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V124h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.162 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V124h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.831-.65 1.992-.649 1.163 0 1.988.649.83.643 1.265 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.639-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.295-2.35-.29-.97-.841-1.479a1.86 1.86 0 0 0-1.313-.508q-1.151 0-1.8 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.835 1.469q.55.503 1.323.503m9.132 1.141q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.44-1.225 1.265-1.868.83-.65 1.993-.649 1.161 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.161 0 1.805-1.121t.644-3.196q0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345.291.966.836 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V124h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.639-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.649 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V124h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.998-.638-.824-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.163 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.131 1.141q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.649 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V124h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.824.639-1.997.638m0-1.141q1.162 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V124h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.831-.65 1.992-.649 1.163 0 1.988.649.83.643 1.265 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.86 1.86 0 0 0-1.313-.508q-1.151 0-1.8 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.835 1.469q.55.503 1.323.503m9.401-9.629V124h-1.286v-9.277h-.062l-2.595 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.997-.638-.826-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.131 1.141q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.649 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V124h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.163 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V124h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.261-1.862-.435-1.225-.435-2.958 0-1.722.435-2.941.441-1.225 1.266-1.868.83-.65 1.993-.649 1.161 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.161 0 1.805-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.86 1.86 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.836 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V124h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.173 0-1.997-.638-.825-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.131 1.141q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.831-.65 1.992-.649 1.163 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.639-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.151 0-1.8 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.835 1.469q.55.503 1.323.503m9.401-9.629V124h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.997-.638-.826-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.261 1.862-.824.639-1.997.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V124h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm-296.236 28.77q-1.173 0-1.998-.638-.825-.644-1.261-1.862-.435-1.225-.435-2.958 0-1.722.435-2.941.441-1.225 1.266-1.868.83-.65 1.993-.649 1.161 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.161 0 1.805-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.836 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V142h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.648 1.131-.649 3.201 0 1.38.291 2.345.29.965.835 1.469.55.503 1.323.503m9.401-9.629V142h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.792 0V142h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.791 0V142h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.791 0V142h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.998-.638-.824-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.163 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.965.835 1.469.55.503 1.323.503m9.131 1.141q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.648 1.131-.649 3.201 0 1.38.291 2.345.29.965.835 1.469.55.503 1.323.503m9.131 1.141q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.831-.65 1.992-.649 1.163 0 1.988.649.83.643 1.265 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.639-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.295-2.35-.29-.97-.841-1.479a1.86 1.86 0 0 0-1.313-.508q-1.15 0-1.8 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.835 1.469q.55.503 1.323.503m9.132 1.141q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.44-1.225 1.265-1.868.83-.65 1.993-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.161 0 1.805-1.121t.644-3.196q0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345.291.965.836 1.469a1.9 1.9 0 0 0 1.323.503m9.131 1.141q-1.173 0-1.998-.638-.824-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.163 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.965.835 1.469.55.503 1.323.503m9.401-9.629V142h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.261-1.862-.435-1.225-.435-2.958 0-1.722.435-2.941.441-1.225 1.266-1.868.83-.65 1.993-.649 1.161 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.161 0 1.805-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.86 1.86 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.836 1.469a1.9 1.9 0 0 0 1.323.503m9.131 1.141q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.162 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.965.835 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V142h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.831-.65 1.992-.649 1.163 0 1.988.649.83.643 1.265 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.86 1.86 0 0 0-1.313-.508q-1.151 0-1.8 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.835 1.469q.55.503 1.323.503m9.132 1.141q-1.173 0-1.998-.638-.825-.644-1.261-1.862-.435-1.225-.435-2.958 0-1.722.435-2.941.441-1.225 1.266-1.868.83-.65 1.993-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.161 0 1.805-1.121t.644-3.196q0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345.291.965.836 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V142h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.649 1.131-.649 3.201 0 1.38.291 2.345.29.965.835 1.469.55.503 1.323.503m9.401-9.629V142h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.998-.638-.824-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.163 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.965.835 1.469.55.503 1.323.503m9.131 1.141q-1.173 0-1.997-.638-.825-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.649 1.131-.649 3.201 0 1.38.291 2.345.29.965.835 1.469.55.503 1.323.503m9.401-9.629V142h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.162 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345.291.965.836 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V142h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.831-.65 1.992-.649 1.163 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.639-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.295-2.35-.29-.97-.841-1.479a1.86 1.86 0 0 0-1.313-.508q-1.151 0-1.8 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.835 1.469q.55.503 1.323.503m9.401-9.629V142h-1.286v-9.277h-.062l-2.595 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.997-.638-.825-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.824.639-1.997.638m0-1.141q1.162 0 1.806-1.121.642-1.12.643-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.965.835 1.469.55.503 1.323.503m9.401-9.629V142h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.261-1.862-.435-1.225-.435-2.958 0-1.722.435-2.941.441-1.225 1.266-1.868.83-.65 1.993-.649 1.161 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.161 0 1.805-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.836 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V142h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.649 1.131-.649 3.201 0 1.38.291 2.345.29.965.835 1.469.55.503 1.323.503m9.401-9.629V142h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.261 1.862-.824.639-1.997.638m0-1.141q1.162 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.965.835 1.469.55.503 1.323.503m9.401-9.629V142h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.791 0V142h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.792 0V142h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm-298.079 18V160h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.997-.638-.826-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.824.639-1.997.638m0-1.141q1.163 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.965.835 1.469.55.503 1.323.503m9.131 1.141q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.648 1.131-.649 3.201 0 1.38.291 2.345.29.965.835 1.469.55.503 1.323.503m9.131 1.141q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.831-.65 1.992-.649 1.163 0 1.988.649.83.643 1.265 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.639-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.295-2.35-.29-.97-.841-1.479a1.86 1.86 0 0 0-1.313-.508q-1.15 0-1.8 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.835 1.469q.55.503 1.323.503m9.132 1.141q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.265-1.868.83-.65 1.993-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.162 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345.291.965.836 1.469a1.9 1.9 0 0 0 1.323.503m9.131 1.141q-1.173 0-1.997-.638-.826-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.163 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.965.835 1.469.55.503 1.323.503m9.131 1.141q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.648 1.131-.649 3.201 0 1.38.291 2.345.29.965.835 1.469.55.503 1.323.503m9.401-9.629V160h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.162 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.965.835 1.469a1.9 1.9 0 0 0 1.323.503m9.131 1.141q-1.173 0-1.997-.638-.825-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.965.835 1.469.55.503 1.323.503m9.131 1.141q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.835 1.469q.55.503 1.323.503m9.401-9.629V160h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.997-.638-.826-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.163 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.965.835 1.469.55.503 1.323.503m9.131 1.141q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.648 1.131-.649 3.201 0 1.38.291 2.345.29.965.835 1.469.55.503 1.323.503m9.401-9.629V160h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.162 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.965.835 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V160h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.831-.65 1.992-.649 1.163 0 1.988.649.83.643 1.265 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.86 1.86 0 0 0-1.313-.508q-1.151 0-1.8 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.835 1.469q.55.503 1.323.503m9.401-9.629V160h-1.286v-9.277h-.062l-2.595 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.997-.638-.826-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121.642-1.12.643-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.965.835 1.469.55.503 1.323.503m9.131 1.141q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.639-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.649 1.131-.649 3.201 0 1.38.291 2.345.29.965.835 1.469.55.503 1.323.503m9.401-9.629V160h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.998-.638-.824-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.824.639-1.997.638m0-1.141q1.163 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.965.835 1.469.55.503 1.323.503m9.401-9.629V160h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.261-1.862-.435-1.225-.435-2.958 0-1.722.435-2.941.441-1.225 1.266-1.868.83-.65 1.993-.649 1.161 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.161 0 1.805-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.86 1.86 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.836 1.469a1.9 1.9 0 0 0 1.323.503m9.131 1.141q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.162 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.291 2.345.29.965.835 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V160h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.831-.65 1.992-.649 1.163 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.639-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.295-2.35-.29-.97-.841-1.479a1.86 1.86 0 0 0-1.313-.508q-1.151 0-1.8 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.835 1.469q.55.503 1.323.503m9.401-9.629V160h-1.286v-9.277h-.062l-2.595 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.172 0-1.997-.638-.826-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.824.639-1.997.638m0-1.141q1.163 0 1.806-1.121.642-1.12.643-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.965.835 1.469.55.503 1.323.503m9.401-9.629V160h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.261-1.862-.435-1.225-.435-2.958 0-1.722.435-2.941.441-1.225 1.266-1.868.83-.65 1.993-.649 1.161 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.161 0 1.805-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.836 1.469a1.9 1.9 0 0 0 1.323.503m9.131 1.141q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.261 1.862-.824.639-1.997.638m0-1.141q1.163 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.965.835 1.469.55.503 1.323.503m9.401-9.629V160h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.993-.649 1.161 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.161 0 1.805-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.86 1.86 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.836 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V160h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.173 0-1.997-.638-.826-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.965.835 1.469.55.503 1.323.503m-298.037 8.371V178h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.997-.638-.826-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.824.639-1.997.638m0-1.141q1.163 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.131 1.141q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.648 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V178h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.162 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V178h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.831-.65 1.992-.649 1.163 0 1.988.649.83.643 1.265 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.639-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.295-2.35-.29-.97-.841-1.479a1.86 1.86 0 0 0-1.313-.508q-1.15 0-1.8 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.835 1.469q.55.503 1.323.503m9.402-9.629V178h-1.287v-9.277h-.062l-2.595 1.723v-1.307l2.657-1.764zm6.521 10.77q-1.172 0-1.997-.638-.826-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121.642-1.12.643-3.196 0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V178h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.791 0V178h-1.286v-9.277h-.062l-2.595 1.723v-1.307l2.657-1.764zm6.792 0V178h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.791 0V178h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.162 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.291 2.345.29.966.835 1.469a1.9 1.9 0 0 0 1.323.503m9.131 1.141q-1.173 0-1.997-.638-.826-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.162 0 1.806-1.121.642-1.12.643-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.131 1.141q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.648 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.132 1.141q-1.173 0-1.998-.638-.825-.644-1.261-1.862-.435-1.225-.435-2.958 0-1.722.435-2.941.441-1.225 1.266-1.868.83-.65 1.993-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.161 0 1.805-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.86 1.86 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.836 1.469a1.9 1.9 0 0 0 1.323.503m9.131 1.141q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.162 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.291 2.345.29.966.835 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V178h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.831-.65 1.992-.649 1.163 0 1.988.649.83.643 1.265 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.86 1.86 0 0 0-1.313-.508q-1.151 0-1.8 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.835 1.469q.55.503 1.323.503m9.132 1.141q-1.173 0-1.998-.638-.825-.644-1.261-1.862-.435-1.225-.435-2.958 0-1.722.435-2.941.441-1.225 1.266-1.868.83-.65 1.993-.649 1.161 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.161 0 1.805-1.121t.644-3.196q0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.836 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V178h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.649 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.132 1.141q-1.173 0-1.998-.638-.825-.644-1.261-1.862-.435-1.225-.435-2.958 0-1.722.435-2.941.441-1.225 1.266-1.868.83-.65 1.993-.649 1.161 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.161 0 1.805-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.86 1.86 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.836 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V178H316.3v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.826-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V178h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.162 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345.291.966.836 1.469a1.9 1.9 0 0 0 1.323.503m9.131 1.141q-1.173 0-1.997-.638-.825-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.824.639-1.997.638m0-1.141q1.162 0 1.806-1.121.642-1.12.643-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V178h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.261-1.862-.435-1.225-.435-2.958 0-1.722.435-2.941.441-1.225 1.266-1.868.83-.65 1.993-.649 1.161 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.161 0 1.805-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.836 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V178h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.649 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V178h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.261 1.862-.824.639-1.997.638m0-1.141q1.162 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V178h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.831-.65 1.992-.649 1.163 0 1.988.649.83.643 1.265 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.86 1.86 0 0 0-1.313-.508q-1.15 0-1.8 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.835 1.469q.55.503 1.323.503m9.402-9.629V178h-1.287v-9.277h-.062l-2.595 1.723v-1.307l2.657-1.764zm-300.688 28.77q-1.173 0-1.998-.638-.825-.644-1.261-1.862-.435-1.225-.435-2.958 0-1.722.435-2.941.441-1.225 1.266-1.868.83-.65 1.993-.649 1.161 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.161 0 1.805-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.836 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V196h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.648 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V196h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.792 0V196h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.791 0V196h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.791 0V196h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.998-.638-.824-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.163 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.131 1.141q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.648 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.131 1.141q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.831-.65 1.992-.649 1.163 0 1.988.649.83.643 1.265 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.639-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.295-2.35-.29-.97-.841-1.479a1.86 1.86 0 0 0-1.313-.508q-1.15 0-1.8 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.835 1.469q.55.503 1.323.503m9.132 1.141q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.44-1.225 1.265-1.868.83-.65 1.993-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.161 0 1.805-1.121t.644-3.196q0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345.291.966.836 1.469a1.9 1.9 0 0 0 1.323.503m9.131 1.141q-1.173 0-1.998-.638-.824-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.163 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.131 1.141q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.648 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V196h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.162 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469a1.9 1.9 0 0 0 1.323.503m9.131 1.141q-1.173 0-1.997-.638-.826-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.162 0 1.806-1.121.642-1.12.643-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.131 1.141q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.639-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.649 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V196h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.998-.638-.824-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.163 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.131 1.141q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.649 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V196h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.824.639-1.997.638m0-1.141q1.162 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V196h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.831-.65 1.992-.649 1.163 0 1.988.649.83.643 1.265 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.86 1.86 0 0 0-1.313-.508q-1.151 0-1.8 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.835 1.469q.55.503 1.323.503m9.401-9.629V196h-1.286v-9.277h-.062l-2.595 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.997-.638-.826-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.131 1.141q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.649 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V196h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.163 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V196h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.261-1.862-.435-1.225-.435-2.958 0-1.722.435-2.941.441-1.225 1.266-1.868.83-.65 1.993-.649 1.161 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.161 0 1.805-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.86 1.86 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.836 1.469a1.9 1.9 0 0 0 1.323.503m9.131 1.141q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.265-1.868.83-.65 1.993-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.162 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345.291.966.836 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V196h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.831-.65 1.992-.649 1.163 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.639-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.151 0-1.8 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.835 1.469q.55.503 1.323.503m9.401-9.629V196h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.997-.638-.826-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.261 1.862-.824.639-1.997.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V196h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm-295.967 18V214h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.997-.638-.826-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.824.639-1.997.638m0-1.141q1.163 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V214h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.261-1.862-.435-1.225-.435-2.958 0-1.722.435-2.941.441-1.225 1.266-1.868.83-.65 1.993-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.161 0 1.805-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.836 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V214h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.649 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V214h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.162 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469a1.9 1.9 0 0 0 1.323.503m9.131 1.141q-1.172 0-1.997-.638-.826-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121.642-1.12.643-3.196 0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V214h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.44-1.225 1.265-1.868.83-.65 1.993-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.161 0 1.805-1.121t.644-3.196q0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345.291.966.836 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V214h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.639-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.649 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V214h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.998-.638-.824-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.163 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V214h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.791 0V214h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.792 0V214h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.791 0V214h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.261-1.862-.435-1.225-.435-2.958 0-1.722.435-2.941.441-1.225 1.266-1.868.83-.65 1.993-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.161 0 1.805-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.836 1.469a1.9 1.9 0 0 0 1.323.503m9.131 1.141q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.163 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.131 1.141q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.131 1.141q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.831-.65 1.992-.649 1.163 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.639-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.295-2.35-.29-.97-.841-1.479a1.86 1.86 0 0 0-1.313-.508q-1.151 0-1.8 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.835 1.469q.55.503 1.323.503m9.132 1.141q-1.173 0-1.998-.638-.825-.644-1.261-1.862-.435-1.225-.435-2.958 0-1.722.435-2.941.441-1.225 1.266-1.868.83-.65 1.993-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.161 0 1.805-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.836 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V214h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.649 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.132 1.141q-1.173 0-1.998-.638-.825-.644-1.261-1.862-.435-1.225-.435-2.958 0-1.722.435-2.941.441-1.225 1.266-1.868.83-.65 1.993-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.161 0 1.805-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.86 1.86 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.836 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V214h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.173 0-1.997-.638-.826-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.131 1.141q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.831-.65 1.992-.649 1.163 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.639-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.151 0-1.8 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.835 1.469q.55.503 1.323.503m9.401-9.629V214h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.997-.638-.825-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.824.639-1.997.638m0-1.141q1.163 0 1.806-1.121.642-1.12.643-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V214h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.261-1.862-.435-1.225-.435-2.958 0-1.722.435-2.941.441-1.225 1.266-1.868.83-.65 1.993-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.161 0 1.805-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.836 1.469a1.9 1.9 0 0 0 1.323.503m9.131 1.141q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.261 1.862-.824.639-1.997.638m0-1.141q1.162 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V214h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.831-.65 1.992-.649 1.163 0 1.988.649.83.643 1.265 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.86 1.86 0 0 0-1.313-.508q-1.15 0-1.8 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.835 1.469q.55.503 1.323.503m9.402-9.629V214h-1.287v-9.277h-.062l-2.595 1.723v-1.307l2.657-1.764zm-300.688 28.77q-1.173 0-1.998-.638-.825-.644-1.261-1.862-.435-1.225-.435-2.958 0-1.722.435-2.941.441-1.225 1.266-1.868.83-.65 1.993-.649 1.161 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.161 0 1.805-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.836 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V232h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.648 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V232h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.162 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V232h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.831-.65 1.992-.649 1.163 0 1.988.649.83.643 1.265 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.639-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.295-2.35-.29-.97-.841-1.479a1.86 1.86 0 0 0-1.313-.508q-1.15 0-1.8 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.835 1.469q.55.503 1.323.503m9.402-9.629V232h-1.287v-9.277h-.062l-2.595 1.723v-1.307l2.657-1.764zm6.521 10.77q-1.172 0-1.997-.638-.826-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121.642-1.12.643-3.196 0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V232h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.791 0V232h-1.286v-9.277h-.062l-2.595 1.723v-1.307l2.657-1.764zm6.792 0V232h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.791 0V232h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.162 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.291 2.345.29.966.835 1.469a1.9 1.9 0 0 0 1.323.503m9.131 1.141q-1.173 0-1.997-.638-.826-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.162 0 1.806-1.121.642-1.12.643-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.131 1.141q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.648 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.132 1.141q-1.173 0-1.998-.638-.825-.644-1.261-1.862-.435-1.225-.435-2.958 0-1.722.435-2.941.441-1.225 1.266-1.868.83-.65 1.993-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.161 0 1.805-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.86 1.86 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.836 1.469a1.9 1.9 0 0 0 1.323.503m9.131 1.141q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.162 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.291 2.345.29.966.835 1.469a1.9 1.9 0 0 0 1.323.503m9.131 1.141q-1.172 0-1.997-.638-.826-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V232h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.261-1.862-.435-1.225-.435-2.958 0-1.722.435-2.941.441-1.225 1.266-1.868.83-.65 1.993-.649 1.161 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.161 0 1.805-1.121t.644-3.196q0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.836 1.469a1.9 1.9 0 0 0 1.323.503m9.131 1.141q-1.173 0-1.998-.638-.824-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.163 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.131 1.141q-1.173 0-1.997-.638-.825-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.649 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V232h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.162 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345.291.966.836 1.469a1.9 1.9 0 0 0 1.323.503m9.131 1.141q-1.173 0-1.997-.638-.826-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V232h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.261-1.862-.435-1.225-.435-2.958 0-1.722.435-2.941.441-1.225 1.266-1.868.83-.65 1.993-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.161 0 1.805-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.836 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V232h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.649 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V232h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.162 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.131 1.141q-1.173 0-1.997-.638-.825-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V232h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.265-1.868.83-.65 1.993-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.162 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345.291.966.836 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V232h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.831-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.639-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.151 0-1.8 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.835 1.469q.55.503 1.323.503m-293.626 19.141q-1.173 0-1.998-.638-.825-.644-1.261-1.862-.435-1.225-.435-2.958 0-1.722.435-2.941.441-1.225 1.266-1.868.83-.65 1.993-.649 1.161 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.161 0 1.805-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.836 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V250h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.648 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V250h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.162 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V250h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.831-.65 1.992-.649 1.163 0 1.988.649.83.643 1.265 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.639-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.295-2.35-.29-.97-.841-1.479a1.86 1.86 0 0 0-1.313-.508q-1.15 0-1.8 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.835 1.469q.55.503 1.323.503m9.132 1.141q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.44-1.225 1.265-1.868.83-.65 1.993-.649 1.161 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.161 0 1.805-1.121t.644-3.196q0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345.291.966.836 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V250h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.835 1.469q.55.503 1.323.503m9.401-9.629V250h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.998-.638-.824-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.163 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V250h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.261-1.862-.435-1.225-.435-2.958 0-1.722.435-2.941.441-1.225 1.266-1.868.83-.65 1.993-.649 1.161 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.161 0 1.805-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.86 1.86 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.836 1.469a1.9 1.9 0 0 0 1.323.503m9.131 1.141q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.162 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V250h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.831-.65 1.992-.649 1.163 0 1.988.649.83.643 1.265 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.86 1.86 0 0 0-1.313-.508q-1.151 0-1.8 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.835 1.469q.55.503 1.323.503m9.401-9.629V250h-1.286v-9.277h-.062l-2.595 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.172 0-1.997-.638-.826-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V250h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.261-1.862-.435-1.225-.435-2.958 0-1.722.435-2.941.441-1.225 1.266-1.868.83-.65 1.993-.649 1.161 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.161 0 1.805-1.121t.644-3.196q0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.836 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V250h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.791 0V250h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.791 0V250h-1.286v-9.277h-.062l-2.595 1.723v-1.307l2.657-1.764zm6.792 0V250h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.831-.65 1.992-.649 1.163 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.151 0-1.8 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.835 1.469q.55.503 1.323.503m9.132 1.141q-1.173 0-1.998-.638-.825-.644-1.261-1.862-.435-1.225-.435-2.958 0-1.722.435-2.941.441-1.225 1.266-1.868.83-.65 1.993-.649 1.161 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.639-1.997.638m0-1.141q1.161 0 1.805-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.836 1.469a1.9 1.9 0 0 0 1.323.503m9.131 1.141q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.261 1.862-.824.639-1.997.638m0-1.141q1.162 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.131 1.141q-1.173 0-1.997-.638-.826-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.131 1.141q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.831-.65 1.992-.649 1.163 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.639-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.151 0-1.8 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.835 1.469q.55.503 1.323.503m9.401-9.629V250h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.997-.638-.825-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.824.639-1.997.638m0-1.141q1.163 0 1.806-1.121.642-1.12.643-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.131 1.141q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.649 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V250h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.261 1.862-.824.639-1.997.638m0-1.141q1.162 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.131 1.141q-1.172 0-1.997-.638-.826-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.722.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.639-1.998.638m0-1.141q1.162 0 1.806-1.121.642-1.12.643-3.196 0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V250h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm-293.896 28.77q-1.173 0-1.998-.638-.825-.644-1.261-1.862-.435-1.225-.435-2.958 0-1.723.435-2.941.441-1.225 1.266-1.868.83-.65 1.993-.649 1.161 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.638-1.997.638m0-1.141q1.161 0 1.805-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.836 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V268h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.638-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.648 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.131 1.141q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.831-.65 1.992-.649 1.163 0 1.988.649.83.643 1.265 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.638-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.295-2.35-.29-.97-.841-1.479a1.86 1.86 0 0 0-1.313-.508q-1.15 0-1.8 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.835 1.469q.55.503 1.323.503m9.402-9.629V268h-1.287v-9.277h-.062l-2.595 1.723v-1.307l2.657-1.764zm6.521 10.77q-1.173 0-1.997-.638-.826-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.638-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V268h-1.287v-9.277h-.062L168 260.446v-1.307l2.656-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.723.436-2.941.44-1.225 1.265-1.868.83-.65 1.993-.649 1.161 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.638-1.997.638m0-1.141q1.161 0 1.805-1.121t.644-3.196q0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345.291.966.836 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V268h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.638-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.835 1.469q.55.503 1.323.503m9.401-9.629V268h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.998-.638-.824-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.261 1.862-.825.638-1.997.638m0-1.141q1.163 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V268h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.261-1.862-.435-1.225-.435-2.958 0-1.723.435-2.941.441-1.225 1.266-1.868.83-.65 1.993-.649 1.161 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.638-1.997.638m0-1.141q1.161 0 1.805-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.86 1.86 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.836 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V268h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.173 0-1.997-.638-.825-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.638-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.649 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V268h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.792 0V268h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.791 0V268h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.791 0V268h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.261 1.862-.825.638-1.997.638m0-1.141q1.163 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.131 1.141q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.638-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.131 1.141q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.831-.65 1.992-.649 1.163 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.638-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.295-2.35-.29-.97-.841-1.479a1.86 1.86 0 0 0-1.313-.508q-1.151 0-1.8 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.835 1.469q.55.503 1.323.503m9.132 1.141q-1.173 0-1.998-.638-.825-.644-1.261-1.862-.435-1.225-.435-2.958 0-1.723.435-2.941.441-1.225 1.266-1.868.83-.65 1.993-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.638-1.997.638m0-1.141q1.161 0 1.805-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.836 1.469a1.9 1.9 0 0 0 1.323.503m9.131 1.141q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.638-1.997.638m0-1.141q1.163 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.131 1.141q-1.172 0-1.997-.638-.826-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.638-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V268h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.638-1.997.638m0-1.141q1.162 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345.291.966.836 1.469a1.9 1.9 0 0 0 1.323.503m9.131 1.141q-1.173 0-1.997-.638-.825-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.824.638-1.997.638m0-1.141q1.162 0 1.806-1.121.642-1.12.643-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.131 1.141q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.638-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.649 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V268h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.261 1.862-.825.638-1.997.638m0-1.141q1.162 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.131 1.141q-1.173 0-1.997-.638-.825-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.638-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V268h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.265-1.868.83-.65 1.993-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.638-1.997.638m0-1.141q1.162 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345.291.966.836 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V268h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.831-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.638-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.151 0-1.8 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.835 1.469q.55.503 1.323.503m-293.357 8.371V286h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.997-.638-.826-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.824.638-1.997.638m0-1.141q1.163 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.131 1.141q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.638-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.648 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V286h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.261 1.862-.825.638-1.997.638m0-1.141q1.162 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V286h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.831-.65 1.992-.649 1.163 0 1.988.649.83.643 1.265 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.638-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.295-2.35-.29-.97-.841-1.479a1.86 1.86 0 0 0-1.313-.508q-1.15 0-1.8 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.835 1.469q.55.503 1.323.503m9.132 1.141q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.723.436-2.941.44-1.225 1.265-1.868.83-.65 1.993-.649 1.161 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.638-1.997.638m0-1.141q1.161 0 1.805-1.121t.644-3.196q0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345.291.966.836 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V286h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.638-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.835 1.469q.55.503 1.323.503m9.401-9.629V286h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.998-.638-.824-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.261 1.862-.825.638-1.997.638m0-1.141q1.163 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V286h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.261-1.862-.435-1.225-.435-2.958 0-1.723.435-2.941.441-1.225 1.266-1.868.83-.65 1.993-.649 1.161 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.638-1.997.638m0-1.141q1.161 0 1.805-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.86 1.86 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.836 1.469a1.9 1.9 0 0 0 1.323.503m9.131 1.141q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.638-1.997.638m0-1.141q1.162 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V286h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.831-.65 1.992-.649 1.163 0 1.988.649.83.643 1.265 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.638-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.86 1.86 0 0 0-1.313-.508q-1.151 0-1.8 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.835 1.469q.55.503 1.323.503m9.401-9.629V286h-1.286v-9.277h-.062l-2.595 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.172 0-1.997-.638-.826-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.26 1.862-.825.638-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V286h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.261-1.862-.435-1.225-.435-2.958 0-1.723.435-2.941.441-1.225 1.266-1.868.83-.65 1.993-.649 1.161 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.638-1.997.638m0-1.141q1.161 0 1.805-1.121t.644-3.196q0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.836 1.469a1.9 1.9 0 0 0 1.323.503m9.131 1.141q-1.173 0-1.998-.638-.824-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.261 1.862-.825.638-1.997.638m0-1.141q1.163 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V286h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.261-1.862-.435-1.225-.435-2.958 0-1.723.435-2.941.441-1.225 1.266-1.868.83-.65 1.993-.649 1.161 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.638-1.997.638m0-1.141q1.161 0 1.805-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.86 1.86 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.836 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V286H316.3v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.826-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.638-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V286h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.638-1.997.638m0-1.141q1.162 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345.291.966.836 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V286h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.791 0V286h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.792 0V286h-1.287v-9.277h-.062l-2.595 1.723v-1.307l2.657-1.764zm6.791 0V286h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.831-.65 1.992-.649 1.163 0 1.988.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.638-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.86 1.86 0 0 0-1.313-.508q-1.15 0-1.8 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.836 1.469a1.9 1.9 0 0 0 1.322.503m9.132 1.141q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.265-1.868.83-.65 1.993-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.638-1.997.638m0-1.141q1.162 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345.291.966.836 1.469a1.9 1.9 0 0 0 1.323.503m9.131 1.141q-1.173 0-1.997-.638-.826-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.261 1.862-.825.638-1.997.638m0-1.141q1.163 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.131 1.141q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.638-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.649 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.131 1.141q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.831-.65 1.992-.649 1.163 0 1.988.649.83.643 1.265 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.638-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.86 1.86 0 0 0-1.313-.508q-1.15 0-1.8 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.835 1.469q.55.503 1.323.503m9.402-9.629V286h-1.287v-9.277h-.062l-2.595 1.723v-1.307l2.657-1.764zm-300.688 28.77q-1.173 0-1.998-.638-.825-.644-1.261-1.862-.435-1.225-.435-2.958 0-1.723.435-2.941.441-1.225 1.266-1.868.83-.65 1.993-.649 1.161 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.638-1.997.638m0-1.141q1.161 0 1.805-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.836 1.469a1.9 1.9 0 0 0 1.323.503m9.131 1.141q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.638-1.997.638m0-1.141q1.162 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V304h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.831-.65 1.992-.649 1.163 0 1.988.649.83.643 1.265 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.638-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.295-2.35-.29-.97-.841-1.479a1.86 1.86 0 0 0-1.313-.508q-1.15 0-1.8 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.835 1.469q.55.503 1.323.503m9.132 1.141q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.265-1.868.83-.65 1.993-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.638-1.997.638m0-1.141q1.162 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345.291.966.836 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V304h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.638-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.151 0-1.8 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.835 1.469q.55.503 1.323.503m9.401-9.629V304h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.997-.638-.825-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.638-1.997.638m0-1.141q1.163 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.131 1.141q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.638-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.649 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V304h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.638-1.997.638m0-1.141q1.162 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V304h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.831-.65 1.992-.649 1.163 0 1.988.649.83.643 1.265 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.638-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.295-2.35-.29-.97-.841-1.479a1.86 1.86 0 0 0-1.313-.508q-1.151 0-1.8 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.835 1.469q.55.503 1.323.503m9.401-9.629V304h-1.286v-9.277h-.062l-2.595 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.997-.638-.826-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.26 1.862-.825.638-1.998.638m0-1.141q1.162 0 1.806-1.121.642-1.12.643-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V304h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.261-1.862-.435-1.225-.435-2.958 0-1.723.435-2.941.441-1.225 1.266-1.868.83-.65 1.993-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.638-1.997.638m0-1.141q1.161 0 1.805-1.121t.644-3.196q0-1.38-.296-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345.291.966.836 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V304h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.521 10.77q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.638-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.649 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V304h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.522 10.77q-1.173 0-1.998-.638-.824-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.261 1.862-.825.638-1.997.638m0-1.141q1.163 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.401-9.629V304h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.791 0V304h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.792 0V304h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.791 0V304h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.522 10.77q-1.173 0-1.998-.638-.825-.644-1.261-1.862-.435-1.225-.435-2.958 0-1.723.435-2.941.441-1.225 1.266-1.868.83-.65 1.993-.649 1.161 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.638-1.997.638m0-1.141q1.161 0 1.805-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.836 1.469a1.9 1.9 0 0 0 1.323.503m9.131 1.141q-1.173 0-1.998-.638-.825-.644-1.26-1.862-.436-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.261 1.862-.824.638-1.997.638m0-1.141q1.162 0 1.805-1.121.644-1.12.644-3.196 0-1.38-.296-2.35-.291-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.131 1.141q-1.173 0-1.997-.638-.826-.644-1.261-1.862-.436-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.83-.65 1.992-.649 1.162 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.435 1.218-1.26 1.862-.825.638-1.998.638m0-1.141q1.163 0 1.806-1.121t.643-3.196q0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.152 0-1.8 1.136-.65 1.131-.649 3.201 0 1.38.291 2.345.29.966.835 1.469.55.503 1.323.503m9.131 1.141q-1.172 0-1.997-.638-.825-.644-1.261-1.862-.435-1.225-.436-2.958 0-1.723.436-2.941.441-1.225 1.266-1.868.831-.65 1.992-.649 1.163 0 1.987.649.831.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.435 2.958-.436 1.218-1.261 1.862-.825.638-1.998.638m0-1.141q1.162 0 1.806-1.121.643-1.12.643-3.196 0-1.38-.296-2.35-.29-.97-.84-1.479a1.86 1.86 0 0 0-1.313-.508q-1.151 0-1.8 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.835 1.469q.55.503 1.323.503m9.132 1.141q-1.173 0-1.998-.638-.825-.644-1.261-1.862-.435-1.225-.435-2.958 0-1.723.435-2.941.441-1.225 1.266-1.868.83-.65 1.993-.649 1.161 0 1.987.649.83.643 1.266 1.868.441 1.219.441 2.941 0 1.733-.436 2.958-.436 1.218-1.261 1.862-.825.638-1.997.638m0-1.141q1.161 0 1.805-1.121t.643-3.196q0-1.38-.295-2.35-.29-.97-.841-1.479a1.85 1.85 0 0 0-1.312-.508q-1.152 0-1.801 1.136-.648 1.131-.648 3.201 0 1.38.29 2.345t.836 1.469a1.9 1.9 0 0 0 1.323.503m9.401-9.629V304h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zm6.791 0V304h-1.287v-9.277h-.062l-2.594 1.723v-1.307l2.656-1.764zM384.333 304v-.934l3.507-3.839q.618-.675 1.017-1.173a4.3 4.3 0 0 0 .591-.944q.198-.446.198-.934 0-.56-.27-.97a1.76 1.76 0 0 0-.727-.633 2.35 2.35 0 0 0-1.037-.223q-.613 0-1.069.254a1.75 1.75 0 0 0-.7.701q-.244.45-.244 1.058h-1.225q0-.934.431-1.64.43-.705 1.173-1.099a3.5 3.5 0 0 1 1.675-.395q.935 0 1.655.395.721.394 1.131 1.063.41.67.41 1.489 0 .586-.212 1.147-.208.555-.727 1.24a22 22 0 0 1-1.427 1.66l-2.386 2.553v.083h4.939V304zm12.581-10.625V304h-1.286v-9.277h-.063l-2.594 1.723v-1.307l2.657-1.764zm6.646 10.77q-1.026 0-1.831-.353a3.14 3.14 0 0 1-1.271-.98 2.64 2.64 0 0 1-.509-1.468h1.308q.041.513.353.887.311.368.814.571.504.202 1.116.202.684 0 1.214-.239.528-.238.83-.664.3-.426.301-.986 0-.586-.291-1.032-.29-.451-.851-.706t-1.369-.254h-.851v-1.141h.851q.633 0 1.11-.229.483-.228.752-.643a1.7 1.7 0 0 0 .275-.975q0-.54-.238-.939a1.64 1.64 0 0 0-.675-.623q-.43-.223-1.017-.223-.55 0-1.037.202a1.94 1.94 0 0 0-.789.576q-.306.374-.332.903h-1.245q.03-.836.503-1.463a3.17 3.17 0 0 1 1.235-.986 4 4 0 0 1 1.686-.353q.986 0 1.691.4.706.394 1.085 1.043.378.648.378 1.4 0 .898-.472 1.531a2.4 2.4 0 0 1-1.271.877v.083q1.006.166 1.572.856.566.684.566 1.696 0 .867-.472 1.557a3.2 3.2 0 0 1-1.277 1.079q-.809.394-1.842.394m5.713-.145v-.934l3.507-3.839q.616-.675 1.017-1.173.399-.503.591-.944.197-.446.197-.934 0-.56-.269-.97a1.76 1.76 0 0 0-.727-.633 2.35 2.35 0 0 0-1.037-.223q-.613 0-1.069.254-.452.25-.701.701-.243.45-.243 1.058h-1.225q0-.934.431-1.64.43-.705 1.172-1.099a3.53 3.53 0 0 1 1.676-.395q.934 0 1.655.395.721.394 1.131 1.063.41.67.41 1.489 0 .586-.213 1.147-.207.555-.726 1.24a22 22 0 0 1-1.427 1.66l-2.386 2.553v.083h4.939V304z"}),m.createElement("g",{clipPath:"url(#b)"},m.createElement("path",{fill:"#fff",d:"M278.205 187.321a4.12 4.12 0 0 1 2.484 1.951 4.12 4.12 0 0 1 .376 3.136l-12.186 43.414a4.123 4.123 0 0 1-5.086 2.859 4.123 4.123 0 0 1-2.858-5.086l12.185-43.42a4.132 4.132 0 0 1 3.482-2.982 4.1 4.1 0 0 1 1.605.125zm-19.415 11.096a4.126 4.126 0 0 1 0 5.83L250.045 213l8.75 8.751a4.123 4.123 0 0 1-.001 5.834 4.126 4.126 0 0 1-5.834-.002l-11.669-11.668a4.126 4.126 0 0 1 0-5.83l11.666-11.668a4.13 4.13 0 0 1 4.497-.895c.5.207.953.512 1.336.895m24.42 5.83a4.11 4.11 0 0 1-1.313-2.945 4.13 4.13 0 0 1 2.58-3.898 4.13 4.13 0 0 1 4.563 1.013l11.668 11.665a4.13 4.13 0 0 1 0 5.833l-11.666 11.668a4.13 4.13 0 0 1-2.916 1.209 4.13 4.13 0 0 1-2.918-1.207 4.124 4.124 0 0 1-.001-5.834l8.75-8.751z"})),m.createElement("path",{fill:"#fff",d:"M458.5 334.563a17.063 17.063 0 1 1 .001-34.126 17.063 17.063 0 0 1-.001 34.126m36.221-12.334c.195-1.56.341-3.12.341-4.729s-.146-3.217-.341-4.875l10.286-7.946c.927-.731 1.17-2.048.585-3.12l-9.75-16.868c-.585-1.072-1.901-1.511-2.973-1.072l-12.139 4.875c-2.535-1.901-5.168-3.559-8.239-4.778l-1.804-12.918a2.466 2.466 0 0 0-2.437-2.048h-19.5a2.465 2.465 0 0 0-2.438 2.048l-1.803 12.918c-3.072 1.219-5.704 2.877-8.239 4.778l-12.139-4.875c-1.072-.439-2.389 0-2.974 1.072l-9.75 16.868a2.405 2.405 0 0 0 .585 3.12l10.287 7.946c-.195 1.658-.342 3.266-.342 4.875s.147 3.169.342 4.729l-10.287 8.092a2.405 2.405 0 0 0-.585 3.12l9.75 16.868c.585 1.072 1.902 1.462 2.974 1.072l12.139-4.923c2.535 1.95 5.167 3.607 8.239 4.826l1.803 12.919a2.464 2.464 0 0 0 2.438 2.047h19.5a2.46 2.46 0 0 0 2.437-2.047l1.804-12.919c3.071-1.268 5.704-2.876 8.239-4.826l12.139 4.923c1.072.39 2.388 0 2.973-1.072l9.75-16.868c.585-1.072.342-2.388-.585-3.12z"}),m.createElement("path",{fill:"#000",d:"M117 97.792a10.793 10.793 0 1 1 0-21.585 10.793 10.793 0 0 1 0 21.585m22.909-7.8c.123-.988.216-1.974.216-2.992 0-1.017-.093-2.035-.216-3.083l6.506-5.026c.586-.462.74-1.295.37-1.973l-6.167-10.669a1.516 1.516 0 0 0-1.881-.678l-7.677 3.084c-1.604-1.203-3.269-2.251-5.211-3.022l-1.141-8.171a1.56 1.56 0 0 0-1.542-1.295h-12.333a1.56 1.56 0 0 0-1.542 1.295l-1.14 8.17c-1.943.772-3.608 1.82-5.211 3.022l-7.678-3.083c-.678-.277-1.51 0-1.88.678l-6.167 10.669a1.52 1.52 0 0 0 .37 1.973l6.506 5.026c-.124 1.048-.216 2.066-.216 3.083s.092 2.004.216 2.991l-6.506 5.118a1.52 1.52 0 0 0-.37 1.974l6.166 10.668c.37.678 1.203.925 1.881.678l7.678-3.114c1.603 1.234 3.268 2.282 5.211 3.053l1.14 8.171a1.56 1.56 0 0 0 1.542 1.295h12.333c.771 0 1.419-.555 1.542-1.295l1.141-8.171c1.942-.802 3.607-1.819 5.211-3.053l7.677 3.114c.679.247 1.511 0 1.881-.678l6.167-10.668c.37-.678.216-1.511-.37-1.974z"}),m.createElement("path",{fill:"#fff",d:"M117 97.792a10.793 10.793 0 1 1 0-21.585 10.793 10.793 0 0 1 0 21.585m22.909-7.8c.123-.988.216-1.974.216-2.992 0-1.017-.093-2.035-.216-3.083l6.506-5.026c.586-.462.74-1.295.37-1.973l-6.167-10.669a1.516 1.516 0 0 0-1.881-.678l-7.677 3.084c-1.604-1.203-3.269-2.251-5.211-3.022l-1.141-8.171a1.56 1.56 0 0 0-1.542-1.295h-12.333a1.56 1.56 0 0 0-1.542 1.295l-1.14 8.17c-1.943.772-3.608 1.82-5.211 3.022l-7.678-3.083c-.678-.277-1.51 0-1.88.678l-6.167 10.669a1.52 1.52 0 0 0 .37 1.973l6.506 5.026c-.124 1.048-.216 2.066-.216 3.083s.092 2.004.216 2.991l-6.506 5.118a1.52 1.52 0 0 0-.37 1.974l6.166 10.668c.37.678 1.203.925 1.881.678l7.678-3.114c1.603 1.234 3.268 2.282 5.211 3.053l1.14 8.171a1.56 1.56 0 0 0 1.542 1.295h12.333c.771 0 1.419-.555 1.542-1.295l1.141-8.171c1.942-.802 3.607-1.819 5.211-3.053l7.677 3.114c.679.247 1.511 0 1.881-.678l6.167-10.668c.37-.678.216-1.511-.37-1.974zM147 283.583a7.583 7.583 0 1 1 0-15.167 7.583 7.583 0 0 1 0 15.167m16.098-5.482c.087-.693.152-1.386.152-2.101s-.065-1.43-.152-2.167l4.572-3.532c.412-.325.52-.91.26-1.386l-4.333-7.497c-.26-.477-.845-.672-1.322-.477l-5.395 2.167c-1.127-.845-2.297-1.582-3.662-2.123l-.801-5.742a1.096 1.096 0 0 0-1.084-.91h-8.666c-.542 0-.997.39-1.084.91l-.801 5.742c-1.365.541-2.535 1.278-3.662 2.123l-5.395-2.167a1.065 1.065 0 0 0-1.322.477l-4.333 7.497a1.07 1.07 0 0 0 .26 1.386l4.572 3.532a19 19 0 0 0-.152 2.167c0 .715.065 1.408.152 2.101l-4.572 3.597c-.412.325-.542.91-.26 1.387l4.333 7.496c.26.477.845.65 1.322.477l5.395-2.188c1.127.866 2.297 1.603 3.662 2.145l.801 5.741c.087.52.542.91 1.084.91h8.666c.542 0 .997-.39 1.084-.91l.801-5.741c1.365-.564 2.535-1.279 3.662-2.145l5.395 2.188c.477.173 1.062 0 1.322-.477l4.333-7.496c.26-.477.152-1.062-.26-1.387z"}),m.createElement("path",{fill:"#fff",d:"M147 283.583a7.583 7.583 0 1 1 0-15.167 7.583 7.583 0 0 1 0 15.167m16.098-5.482c.087-.693.152-1.386.152-2.101s-.065-1.43-.152-2.167l4.572-3.532c.412-.325.52-.91.26-1.386l-4.333-7.497c-.26-.477-.845-.672-1.322-.477l-5.395 2.167c-1.127-.845-2.297-1.582-3.662-2.123l-.801-5.742a1.096 1.096 0 0 0-1.084-.91h-8.666c-.542 0-.997.39-1.084.91l-.801 5.742c-1.365.541-2.535 1.278-3.662 2.123l-5.395-2.167a1.065 1.065 0 0 0-1.322.477l-4.333 7.497a1.07 1.07 0 0 0 .26 1.386l4.572 3.532a19 19 0 0 0-.152 2.167c0 .715.065 1.408.152 2.101l-4.572 3.597c-.412.325-.542.91-.26 1.387l4.333 7.496c.26.477.845.65 1.322.477l5.395-2.188c1.127.866 2.297 1.603 3.662 2.145l.801 5.741c.087.52.542.91 1.084.91h8.666c.542 0 .997-.39 1.084-.91l.801-5.741c1.365-.564 2.535-1.279 3.662-2.145l5.395 2.188c.477.173 1.062 0 1.322-.477l4.333-7.496c.26-.477.152-1.062-.26-1.387z"}),m.createElement("g",{filter:"url(#c)"},m.createElement("path",{fill:"url(#d)",d:"M66.384 231.214c-.243-57.499 46.401-106.882 103.688-101.925 37.256 3.224 77.588 5.817 110.928 5.817s73.672-2.593 110.928-5.817c57.287-4.957 103.931 44.426 103.688 101.925l-.003 1.286c0 57.229-47.663 105.863-104.542 99.541-36.994-4.112-76.95-7.404-110.071-7.404s-73.077 3.292-110.071 7.404C114.05 338.363 66.387 289.729 66.387 232.5z"})))),q||(q=m.createElement("defs",null,m.createElement("clipPath",{id:"a"},m.createElement("path",{fill:"#fff",d:"M0 0h539v434H0z"})),m.createElement("clipPath",{id:"b"},m.createElement("path",{fill:"#fff",d:"M238 180h66v66h-66z"})),m.createElement("radialGradient",{id:"d",cx:0,cy:0,r:1,gradientTransform:"matrix(205.915 0 0 507.377 281 232.5)",gradientUnits:"userSpaceOnUse"},m.createElement("stop",{offset:.484,stopColor:"#4959EC",stopOpacity:0}),m.createElement("stop",{offset:.865,stopColor:"#4959EC",stopOpacity:.05}),m.createElement("stop",{offset:1,stopColor:"#4959EC",stopOpacity:.1})),m.createElement("filter",{id:"c",width:471.108,height:245.523,x:45.446,y:108.008,colorInterpolationFilters:"sRGB",filterUnits:"userSpaceOnUse"},m.createElement("feFlood",{floodOpacity:0,result:"BackgroundImageFix"}),m.createElement("feBlend",{in:"SourceGraphic",in2:"BackgroundImageFix",result:"shape"}),m.createElement("feGaussianBlur",{result:"effect1_foregroundBlur_1664_4279",stdDeviation:10.469})))))}},1724:(l,t,e)=>{e.d(t,{A:()=>f});var a,q,m,h,r,c,v,n,i,o,s,d=e(758);function z(){return z=Object.assign?Object.assign.bind():function(l){for(var t=1;t{let{title:t,titleId:e,...f}=l;return d.createElement("svg",z({xmlns:"http://www.w3.org/2000/svg",width:539,height:434,fill:"none",viewBox:"0 0 539 434","aria-labelledby":e},f),t?d.createElement("title",{id:e},t):null,a||(a=d.createElement("path",{stroke:"#6CECAC",strokeMiterlimit:10,strokeOpacity:.25,strokeWidth:1.397,d:"m50.606 221.071 3.641-.332a384.5 384.5 0 0 1 139.295 12.973M52.725 204.769h3.642c47.055-.086 93.713 8.461 137.581 25.202M56.299 188.72l3.642.318c46.865 4.063 92.549 16.686 134.708 37.22M61.344 173.055l3.588.636c46.328 8.173 90.699 24.772 130.837 48.945M67.777 157.894l3.52.941c45.373 12.234 88.028 32.679 125.78 60.286M75.576 143.356l3.426 1.327c44.074 16.181 84.693 40.301 119.777 71.123M84.664 129.574l3.291 1.592c42.425 20.001 80.685 47.607 112.817 81.403M94.983 116.643l3.13 1.83c40.428 23.663 76.016 54.53 104.939 91.019M106.423 104.638l2.954 2.095c38.111 27.132 70.744 61.013 96.226 99.907M118.912 93.76l2.698 2.362c35.486 30.373 64.899 66.99 86.73 107.971M132.361 83.999l2.496 2.587c32.57 33.383 58.525 72.446 76.533 115.186M146.632 75.456l2.279 2.799c29.396 36.123 51.686 77.318 65.729 121.474M161.629 68.201l2.01 2.998c25.985 38.568 44.428 81.563 54.385 126.78M177.223 62.298l1.726 3.157c22.367 40.702 36.817 85.15 42.61 131.064M193.287 57.802l1.443 3.303c18.562 42.51 28.904 88.05 30.498 134.287M209.702 54.738l1.133 3.476a366.3 366.3 0 0 1 18.129 136.436M226.334 53.133l.809 3.488a366 366 0 0 1 5.625 137.498M243.045 53l.486 3.555a366.2 366.2 0 0 1-6.933 137.431M259.69 54.34l.175 3.581a366.5 366.5 0 0 1-19.436 136.264M276.159 57.139l-.162 3.581c-2.028 46.211-12.805 91.645-31.778 133.969M292.305 61.384l-.486 3.555c-6.24 45.856-21.115 90.168-43.864 130.666M307.991 67.033l-.809 3.489c-10.388 45.125-29.244 87.949-55.599 126.275M323.099 74.038l-1.119 3.409c-14.464 44.023-37.143 85.011-66.876 120.864M337.519 82.354l-1.43 3.289c-18.41 42.58-44.735 81.41-77.625 114.497M351.115 91.892l-1.727 3.17c-22.219 40.777-51.975 77.123-87.742 107.175M363.781 102.607l-1.997 2.998c-25.84 38.645-58.774 72.219-97.116 99.005M375.435 114.387l-2.28 2.812c-29.266 36.222-65.147 66.757-105.802 90.037M385.956 127.188l-2.523 2.652c-32.451 33.498-70.971 60.75-113.585 80.355M395.274 140.783l-2.793 2.321c-35.375 30.498-76.223 54.24-120.451 70.009M403.276 155.188l-2.954 2.123c-38.014 27.255-80.861 47.304-126.345 59.119M410.019 170.257l-3.13 1.844c-40.345 23.796-84.848 39.99-131.228 47.751M415.292 185.828l-3.278 1.565c-42.353 20.148-88.156 32.352-135.059 35.986M419.15 201.825l-3.412 1.327c-44.022 16.327-90.752 24.446-137.798 23.942M421.524 218.087l-3.507.955a384.6 384.6 0 0 1-139.429 11.699M422.413 234.495l-3.588.65a384.9 384.9 0 0 1-139.929-.65M421.793 250.916l-3.628.331a384.8 384.8 0 0 1-139.295-12.985M419.69 267.218h-3.642c-47.055.086-93.714-8.461-137.581-25.202M416.101 283.268l-3.628-.318c-46.842-4.083-92.501-16.709-134.641-37.233M411.069 298.933l-3.588-.637c-46.331-8.171-90.703-24.775-130.837-48.958M404.624 314.093l-3.521-.955c-45.371-12.229-88.026-32.669-125.779-60.273M396.84 328.632l-3.426-1.326c-44.07-16.187-84.689-40.306-119.776-71.123M387.749 342.413l-3.291-1.552c-42.424-20.001-80.684-47.608-112.816-81.403M377.431 355.332l-3.129-1.844c-40.428-23.657-76.016-54.52-104.94-91.006M365.979 367.27l-2.954-2.109c-38.106-27.128-70.734-61.004-96.213-99.893M353.491 378.226l-2.698-2.361c-35.482-30.379-64.891-67-86.717-107.984M340.053 387.989l-2.522-2.653c-32.574-33.386-58.529-72.454-76.533-115.2M325.782 396.531l-2.28-2.733c-29.395-36.123-51.686-77.318-65.729-121.474M310.784 403.774l-2.01-2.985c-25.988-38.566-44.432-81.561-54.385-126.779M295.192 409.716l-1.727-3.157c-22.374-40.714-36.825-85.176-42.61-131.104M279.182 414.186l-1.444-3.303c-18.561-42.51-28.904-88.05-30.497-134.287M262.713 417.249l-1.133-3.409a366.1 366.1 0 0 1-18.129-136.449M246.082 418.855l-.823-3.502a365.9 365.9 0 0 1-5.611-137.484M229.369 418.999l-.499-3.554a366.1 366.1 0 0 1 6.946-137.431M212.722 417.674l-.175-3.581a366.4 366.4 0 0 1 19.423-136.29M196.254 414.848l.162-3.581c2.028-46.211 12.805-91.645 31.778-133.969M180.11 410.604l.486-3.555c6.233-45.858 21.109-90.171 43.864-130.666M164.422 404.954l.809-3.502c10.389-45.121 29.244-87.941 55.599-126.263M149.315 397.951l1.12-3.423c14.455-44.022 37.135-85.007 66.875-120.85M134.855 389.634l1.43-3.303c18.416-42.57 44.741-81.39 77.626-114.471M121.366 380.083l1.727-3.157c22.223-40.775 51.978-77.12 87.742-107.175M108.622 369.379l1.956-2.998c25.833-38.651 58.768-72.226 97.116-99.004M96.98 357.599l2.266-2.812c29.253-36.217 65.115-66.756 105.748-90.051M86.459 344.827l2.509-2.653c32.45-33.499 70.971-60.75 113.585-80.355M77.138 331.192l2.697-2.361c35.377-30.499 76.225-54.246 120.452-70.022M69.1 316.785l2.954-2.109c38.01-27.26 80.858-47.309 126.345-59.118M62.407 301.731l3.13-1.844c40.342-23.805 84.846-39.999 131.228-47.751M57.121 286.146l3.278-1.565c42.356-20.139 88.157-32.338 135.059-35.973M53.265 270.162l3.412-1.326c44.024-16.312 90.755-24.409 137.797-23.876M50.89 253.9l3.507-.968a384.9 384.9 0 0 1 139.415-11.673M50 237.492l3.588-.65a384.6 384.6 0 0 1 139.915.65"})),q||(q=d.createElement("g",{filter:"url(#a)"},d.createElement("path",{fill:"url(#b)",d:"M65.325 220.5c0-52.11 42.146-96.863 94.065-92.404 33.174 2.85 68.97 5.129 98.61 5.129s65.436-2.279 98.61-5.129c51.919-4.459 94.065 40.294 94.065 92.404 0 51.285-42.696 94.881-93.667 89.22-33.265-3.695-69.217-6.656-99.008-6.656s-65.743 2.961-99.008 6.656c-50.972 5.661-93.667-37.935-93.667-89.22"}))),m||(m=d.createElement("path",{fill:"#6CECAC",d:"M316.5 120.625c19.228 0 34.875 15.647 34.875 34.875v34.875h-23.25V155.5c0-6.405-5.22-11.625-11.625-11.625h-23.25c-6.405 0-11.625 5.22-11.625 11.625v34.875h2.906c4.79 0 8.719 3.929 8.719 8.719v87.187c0 4.79-3.929 8.719-8.719 8.719h-98.812a8.753 8.753 0 0 1-8.719-8.719v-87.187c0-4.79 3.929-8.719 8.719-8.719h72.656V155.5c0-19.228 15.647-34.875 34.875-34.875z"})),h||(h=d.createElement("path",{fill:"#111",d:"M243.185 218.57a4.14 4.14 0 0 1 2.491 1.974 4.2 4.2 0 0 1 .377 3.173l-12.219 43.923a4.17 4.17 0 0 1-1.956 2.511 4.1 4.1 0 0 1-3.144.381 4.14 4.14 0 0 1-2.489-1.974 4.2 4.2 0 0 1-.377-3.172l12.218-43.928a4.2 4.2 0 0 1 .731-1.452 4.2 4.2 0 0 1 1.226-1.059 4.1 4.1 0 0 1 3.145-.379zm-19.468 11.227a4.2 4.2 0 0 1 1.209 2.949 4.2 4.2 0 0 1-1.209 2.949l-8.769 8.855 8.774 8.853a4.2 4.2 0 0 1 1.211 2.952 4.2 4.2 0 0 1-1.212 2.951 4.114 4.114 0 0 1-5.85-.002l-11.7-11.805a4.2 4.2 0 0 1-1.21-2.949c0-1.106.435-2.166 1.21-2.949l11.697-11.804a4.103 4.103 0 0 1 5.849 0m24.487 5.898a4.2 4.2 0 0 1-.959-1.355 4.2 4.2 0 0 1-.057-3.261 4.17 4.17 0 0 1 2.286-2.307 4.1 4.1 0 0 1 3.233.058 4.1 4.1 0 0 1 1.343.967l11.7 11.801a4.2 4.2 0 0 1 1.211 2.951 4.2 4.2 0 0 1-1.211 2.95l-11.698 11.805a4.102 4.102 0 0 1-4.507.906 4.16 4.16 0 0 1-2.24-2.258 4.21 4.21 0 0 1 .896-4.549l8.774-8.853z"})),r||(r=d.createElement("g",{clipPath:"url(#c)"},d.createElement("path",{fill:"#fff",d:"m85.46 323.403 46.383 13.887-3.968 13.252c-1.871 6.249-2.805 9.37-5.328 10.73s-5.644.425-11.892-1.445l-19.878-5.952c-6.248-1.871-9.37-2.806-10.73-5.328s-.425-5.644 1.446-11.892zm-4.079-12.72 5.072 9.407 17.22-9.284-6.393-7.719a3.454 3.454 0 0 0-3.86-1.037l-10.19 3.747a3.45 3.45 0 0 0-2.04 2.021 3.46 3.46 0 0 0 .191 2.865m60.86 18.223-9.406 5.071-9.284-17.22 9.582-2.935a3.46 3.46 0 0 1 3.794 1.255l6.455 8.73a3.47 3.47 0 0 1-.025 4.143c-.299.395-.68.721-1.116.956"}),d.createElement("path",{stroke:"#fff",strokeLinecap:"round",strokeWidth:2,d:"m129.521 332.985-.991 3.313-39.757-11.903.992-3.313 12.915-6.964 19.878 5.952z"}))),c||(c=d.createElement("g",{clipPath:"url(#d)"},d.createElement("path",{fill:"#fff",d:"m84.46 134.403 46.383 13.887-3.968 13.252c-1.871 6.249-2.805 9.37-5.328 10.73s-5.644.425-11.892-1.445l-19.878-5.952c-6.248-1.871-9.37-2.806-10.73-5.328s-.425-5.644 1.446-11.892zm-4.079-12.72 5.072 9.407 17.22-9.284-6.393-7.719a3.454 3.454 0 0 0-3.86-1.037l-10.19 3.747a3.45 3.45 0 0 0-2.04 2.021 3.46 3.46 0 0 0 .191 2.865m60.86 18.223-9.406 5.071-9.284-17.22 9.582-2.935a3.46 3.46 0 0 1 3.794 1.255l6.455 8.73a3.47 3.47 0 0 1-.025 4.143c-.299.395-.68.721-1.116.956"}),d.createElement("path",{stroke:"#fff",strokeLinecap:"round",strokeWidth:2,d:"m128.521 143.985-.991 3.313-39.757-11.903.992-3.313 12.915-6.964 19.878 5.952z"}))),v||(v=d.createElement("g",{clipPath:"url(#e)"},d.createElement("path",{fill:"#fff",d:"m371.591 83.165 21.313-16.52 4.72 6.09c2.225 2.871 3.337 4.306 3.136 5.89s-1.635 2.694-4.506 4.92l-9.134 7.079c-2.871 2.225-4.305 3.337-5.889 3.136-1.583-.2-2.695-1.635-4.92-4.506zm-7.084-2.27 5.904.747 1.37-10.809-5.568.397a1.93 1.93 0 0 0-1.719 1.413l-1.603 5.83a1.927 1.927 0 0 0 1.616 2.42m27.965-21.676-.748 5.905-10.809-1.37 1.773-5.293a1.93 1.93 0 0 1 1.798-1.313l6.045-.097a1.93 1.93 0 0 1 1.87 1.353c.082.263.106.541.071.815"}),d.createElement("path",{stroke:"#fff",strokeLinecap:"round",strokeWidth:2,d:"m390.202 66.304 1.18 1.522-18.269 14.159-1.18-1.522 1.028-8.107 9.134-7.08z"}))),n||(n=d.createElement("path",{fill:"#fff",d:"m376.272 330.574 71.265-8.33 2.38 20.362c1.122 9.6 1.683 14.395-.952 17.727-2.634 3.331-7.429 3.892-17.03 5.014l-30.542 3.57c-9.6 1.122-14.395 1.682-17.727-.952-3.331-2.634-3.892-7.43-5.014-17.03zm-13.017-14.913 12.422 9.822 17.982-22.741-13.23-6.751a5.13 5.13 0 0 0-5.859.855l-11.667 11.08a5.133 5.133 0 0 0-1.03 6.052 5.1 5.1 0 0 0 1.382 1.683m93.51-10.929-9.823 12.422-22.741-17.982 11.316-9.619a5.12 5.12 0 0 1 5.899-.519l13.907 8.09a5.125 5.125 0 0 1 1.442 7.608"})),i||(i=d.createElement("path",{stroke:"#fff",strokeLinecap:"round",strokeWidth:2,d:"m441.851 317.749.595 5.09-61.084 7.14-.595-5.091 13.486-17.056 30.543-3.569z"})),o||(o=d.createElement("path",{fill:"#fff",d:"M411.05 246.21a5.407 5.407 0 0 1 6.473 4.052l1.211 5.263-3.508.807-1.211-5.263a1.8 1.8 0 0 0-2.158-1.35l-3.508.807a1.803 1.803 0 0 0-1.351 2.158l1.211 5.262.438-.101a1.356 1.356 0 0 1 1.619 1.013l3.026 13.157a1.355 1.355 0 0 1-1.013 1.618l-14.91 3.43a1.36 1.36 0 0 1-1.619-1.013l-3.026-13.157a1.355 1.355 0 0 1 1.013-1.618l10.963-2.522-1.21-5.262a5.407 5.407 0 0 1 4.052-6.474zM366.502 38.513a5.407 5.407 0 0 1 5.889 4.863l.512 5.375-3.583.342-.513-5.376a1.803 1.803 0 0 0-1.963-1.62l-3.584.341a1.8 1.8 0 0 0-1.62 1.963l.512 5.376.448-.043a1.355 1.355 0 0 1 1.472 1.216l1.282 13.439a1.356 1.356 0 0 1-1.216 1.472l-15.231 1.452a1.354 1.354 0 0 1-1.472-1.215l-1.281-13.44a1.354 1.354 0 0 1 1.215-1.471l11.199-1.069-.512-5.375a5.406 5.406 0 0 1 4.863-5.889zM131.964 271.975a5.407 5.407 0 0 1 5.889 4.863l.512 5.375-3.583.342-.513-5.376a1.804 1.804 0 0 0-1.963-1.621l-3.584.342a1.804 1.804 0 0 0-1.621 1.963l.513 5.376.448-.043a1.354 1.354 0 0 1 1.472 1.216l1.282 13.439a1.356 1.356 0 0 1-1.216 1.472l-15.231 1.452a1.356 1.356 0 0 1-1.472-1.215l-1.282-13.439a1.357 1.357 0 0 1 1.216-1.473l11.199-1.068-.512-5.375a5.407 5.407 0 0 1 4.863-5.889zM124.6 83c2.977 0 5.4 2.423 5.4 5.4v5.4h-3.6v-5.4c0-.992-.808-1.8-1.8-1.8H121c-.992 0-1.8.808-1.8 1.8v5.4h.45c.742 0 1.35.608 1.35 1.35v13.5c0 .742-.608 1.35-1.35 1.35h-15.3a1.353 1.353 0 0 1-1.35-1.35v-13.5c0-.742.608-1.35 1.35-1.35h11.25v-5.4c0-2.977 2.423-5.4 5.4-5.4z"})),s||(s=d.createElement("defs",null,d.createElement("clipPath",{id:"c"},d.createElement("path",{fill:"#fff",d:"m79.808 282 79.512 23.807-23.807 79.513L56 361.512z"})),d.createElement("clipPath",{id:"d"},d.createElement("path",{fill:"#fff",d:"m78.808 93 79.512 23.807-23.807 79.513L55 172.512z"})),d.createElement("clipPath",{id:"e"},d.createElement("path",{fill:"#fff",d:"M351 72.318 387.537 44l28.318 36.537-36.537 28.318z"})),d.createElement("radialGradient",{id:"b",cx:0,cy:0,r:1,gradientTransform:"matrix(184.866 0 0 454.662 258 220.5)",gradientUnits:"userSpaceOnUse"},d.createElement("stop",{offset:.484,stopColor:"#4959EC",stopOpacity:0}),d.createElement("stop",{offset:.865,stopColor:"#4959EC",stopOpacity:.05}),d.createElement("stop",{offset:1,stopColor:"#4959EC",stopOpacity:.1})),d.createElement("filter",{id:"a",width:427.223,height:224.301,x:44.388,y:106.852,colorInterpolationFilters:"sRGB",filterUnits:"userSpaceOnUse"},d.createElement("feFlood",{floodOpacity:0,result:"BackgroundImageFix"}),d.createElement("feBlend",{in:"SourceGraphic",in2:"BackgroundImageFix",result:"shape"}),d.createElement("feGaussianBlur",{result:"effect1_foregroundBlur_1664_4134",stdDeviation:10.469})))))}},602:(l,t,e)=>{e.d(t,{A:()=>g});var a,q,m,h,r,c,v,n,i,o,s,d,z,f,p,V,u,M,E=e(758);function k(){return k=Object.assign?Object.assign.bind():function(l){for(var t=1;t{let{title:t,titleId:e,...g}=l;return E.createElement("svg",k({xmlns:"http://www.w3.org/2000/svg",width:539,height:434,fill:"none",viewBox:"0 0 539 434","aria-labelledby":e},g),t?E.createElement("title",{id:e},t):null,a||(a=E.createElement("path",{stroke:"#fff",strokeLinecap:"round",strokeLinejoin:"round",strokeOpacity:.09,strokeWidth:1.397,d:"M256.5 429C367.233 429 457 339.233 457 228.5S367.233 28 256.5 28 56 117.767 56 228.5 145.767 429 256.5 429"})),q||(q=E.createElement("path",{stroke:"#fff",strokeLinecap:"round",strokeLinejoin:"round",strokeOpacity:.09,strokeWidth:1.397,d:"M256.499 413.043c101.921 0 184.544-82.623 184.544-184.544 0-101.92-82.623-184.543-184.544-184.543-101.92 0-184.543 82.623-184.543 184.543 0 101.921 82.623 184.544 184.543 184.544"})),m||(m=E.createElement("path",{stroke:"#fff",strokeLinecap:"round",strokeLinejoin:"round",strokeOpacity:.09,strokeWidth:1.397,d:"M256.501 397.082c93.104 0 168.581-75.477 168.581-168.581 0-93.105-75.477-168.581-168.581-168.581-93.105 0-168.581 75.476-168.581 168.581S163.396 397.082 256.5 397.082"})),h||(h=E.createElement("path",{stroke:"#fff",strokeLinecap:"round",strokeLinejoin:"round",strokeOpacity:.09,strokeWidth:1.397,d:"M256.5 381.125c84.292 0 152.625-68.333 152.625-152.625S340.792 75.876 256.5 75.876 103.876 144.208 103.876 228.5 172.208 381.125 256.5 381.125"})),r||(r=E.createElement("path",{stroke:"#fff",strokeLinecap:"round",strokeLinejoin:"round",strokeOpacity:.09,strokeWidth:1.397,d:"M256.501 365.162c75.476 0 136.661-61.185 136.661-136.661 0-75.477-61.185-136.662-136.661-136.662-75.477 0-136.662 61.185-136.662 136.662 0 75.476 61.185 136.661 136.662 136.661"})),c||(c=E.createElement("path",{stroke:"#fff",strokeLinecap:"round",strokeLinejoin:"round",strokeOpacity:.09,strokeWidth:1.397,d:"M256.501 349.203c66.664 0 120.705-54.041 120.705-120.705 0-66.663-54.041-120.705-120.705-120.705s-120.705 54.042-120.705 120.705c0 66.664 54.041 120.705 120.705 120.705"})),v||(v=E.createElement("path",{stroke:"#fff",strokeLinecap:"round",strokeLinejoin:"round",strokeOpacity:.09,strokeWidth:1.397,d:"M256.5 333.243c57.848 0 104.743-46.895 104.743-104.743S314.348 123.758 256.5 123.758 151.758 170.653 151.758 228.5 198.653 333.243 256.5 333.243"})),n||(n=E.createElement("path",{stroke:"#fff",strokeLinecap:"round",strokeLinejoin:"round",strokeOpacity:.09,strokeWidth:1.397,d:"M256.499 317.285c49.035 0 88.786-39.751 88.786-88.786s-39.751-88.786-88.786-88.786-88.786 39.751-88.786 88.786 39.751 88.786 88.786 88.786"})),i||(i=E.createElement("path",{stroke:"#fff",strokeLinecap:"round",strokeLinejoin:"round",strokeOpacity:.09,strokeWidth:1.397,d:"M256.499 301.323c40.22 0 72.824-32.604 72.824-72.824s-32.604-72.823-72.824-72.823-72.823 32.604-72.823 72.823c0 40.22 32.604 72.824 72.823 72.824"})),o||(o=E.createElement("path",{stroke:"#fff",strokeLinecap:"round",strokeLinejoin:"round",strokeOpacity:.09,strokeWidth:1.397,d:"M256.501 285.366c31.406 0 56.867-25.461 56.867-56.867 0-31.407-25.461-56.867-56.867-56.867-31.407 0-56.867 25.46-56.867 56.867s25.46 56.867 56.867 56.867"})),s||(s=E.createElement("path",{stroke:"#fff",strokeLinecap:"round",strokeLinejoin:"round",strokeOpacity:.09,strokeWidth:1.397,d:"M256.499 269.403c22.591 0 40.904-18.313 40.904-40.904s-18.313-40.904-40.904-40.904-40.904 18.313-40.904 40.904 18.313 40.904 40.904 40.904"})),d||(d=E.createElement("path",{stroke:"#fff",strokeLinecap:"round",strokeLinejoin:"round",strokeOpacity:.09,strokeWidth:1.397,d:"M256.501 253.448c13.778 0 24.947-11.169 24.947-24.947 0-13.779-11.169-24.948-24.947-24.948-13.779 0-24.948 11.169-24.948 24.948s11.169 24.947 24.948 24.947"})),z||(z=E.createElement("path",{fill:"#fff",d:"M358 384v-65.022L367.839 307h57.322L435 318.978V384zm10.267-64.167h56.466l-3.636-4.277h-49.194zm41.922 32.084-8.983 8.983 6.202 6.203 15.186-15.186-15.186-15.186-6.202 6.202zm-27.164 0 8.983-8.984-6.202-6.202-15.187 15.186 15.187 15.186 6.202-6.203zM76.474 112.783l15.802-47.289 10.066-6.32 41.689 13.93 4.244 11.102-15.801 47.289zm23.06-44.172 41.067 13.723-1.605-3.995-35.778-11.955zm22.692 33.521-8.716 4.35 3.004 6.019 14.734-7.354-7.353-14.735-6.019 3.004zm-19.755-6.6 8.716-4.351-3.003-6.019-14.735 7.354 7.354 14.735 6.018-3.004zM132.873 359.49l-7.485-22.477 2.022-5.273 19.814-6.599 4.78 3.008 7.486 22.476zm-3.838-23.363 19.519-6.5-1.749-1.061-17.005 5.664zm18.185 6.264-2.071 4.14 2.858 1.43 3.501-6.998-6.998-3.501-1.43 2.858zm-9.39 3.127 2.071-4.139-2.858-1.43-3.501 6.998 6.998 3.501 1.43-2.859zM342.576 115.529l2.006-23.604 3.941-4.045 20.81 1.767 3.202 4.652-2.005 23.605zm5.706-22.977 20.5 1.741-1.189-1.665-17.859-1.517zm14.23 12.94-3.538 2.984 2.06 2.443 5.982-5.045-5.045-5.981-2.443 2.06zm-9.861-.838 3.538-2.984-2.06-2.443-5.982 5.044 5.045 5.982 2.443-2.061z"})),f||(f=E.createElement("g",{filter:"url(#a)"},E.createElement("path",{fill:"url(#b)",d:"M65.325 220.5c0-52.11 42.146-96.863 94.065-92.404 33.174 2.85 68.97 5.129 98.61 5.129s65.436-2.279 98.61-5.129c51.919-4.459 94.065 40.294 94.065 92.404 0 51.285-42.696 94.881-93.667 89.22-33.265-3.695-69.217-6.656-99.008-6.656s-65.743 2.961-99.008 6.656c-50.972 5.661-93.667-37.935-93.667-89.22"}))),p||(p=E.createElement("rect",{width:132,height:132,x:193.5,y:162.5,fill:"#2D2D38",rx:15.5})),V||(V=E.createElement("rect",{width:132,height:132,x:193.5,y:162.5,stroke:"#6CECAC",rx:15.5})),u||(u=E.createElement("path",{fill:"#6CECAC",d:"M301 208h-6.15l-11.421 19.329V208h-5.858v41h5.858v-12.593l2.635-4.393L294.85 249H301l-11.421-22.257zm-41 41h-11.714v-41H260a11.743 11.743 0 0 1 11.714 11.714v17.572A11.74 11.74 0 0 1 260 249m-5.857-5.857H260a5.876 5.876 0 0 0 5.857-5.857v-17.572a5.87 5.87 0 0 0-5.857-5.857h-5.857zM236.571 249H219v-5.857h17.571v-11.714h-11.714a5.876 5.876 0 0 1-5.857-5.858v-11.714a5.87 5.87 0 0 1 5.857-5.857h17.572v5.857h-17.572v11.714h11.714a5.88 5.88 0 0 1 5.858 5.858v11.714a5.876 5.876 0 0 1-5.858 5.857"})),M||(M=E.createElement("defs",null,E.createElement("radialGradient",{id:"b",cx:0,cy:0,r:1,gradientTransform:"matrix(184.866 0 0 454.662 258 220.5)",gradientUnits:"userSpaceOnUse"},E.createElement("stop",{offset:.484,stopColor:"#4959EC",stopOpacity:0}),E.createElement("stop",{offset:.865,stopColor:"#4959EC",stopOpacity:.05}),E.createElement("stop",{offset:1,stopColor:"#4959EC",stopOpacity:.1})),E.createElement("filter",{id:"a",width:427.223,height:224.301,x:44.388,y:106.852,colorInterpolationFilters:"sRGB",filterUnits:"userSpaceOnUse"},E.createElement("feFlood",{floodOpacity:0,result:"BackgroundImageFix"}),E.createElement("feBlend",{in:"SourceGraphic",in2:"BackgroundImageFix",result:"shape"}),E.createElement("feGaussianBlur",{result:"effect1_foregroundBlur_1664_4209",stdDeviation:10.469})))))}},1938:(l,t,e)=>{e.r(t),e.d(t,{default:()=>f});var a=e(3526),q=e(8257),m=e(8765),h=e(3086),r=e(9663);const c={features:"features_t9lD",featureSvg:"featureSvg_GfXr"};var v=e(6070);const n=[{title:"Robust framework",Svg:e(3982).A,description:(0,v.jsx)(v.Fragment,{children:"Quickly launch and configure nodes in our peer-to-peer network with user-friendly tools that minimize the complexity and technical challenges."})},{title:"Comprehensive SDKs",Svg:e(602).A,description:(0,v.jsxs)(v.Fragment,{children:[" ","Jumpstart your decentralized apps with our SDKs, designed for easy integration into our robust peer-to-peer network."]})},{title:"Open Source project",Svg:e(1724).A,description:(0,v.jsx)(v.Fragment,{children:"Contribute your code to help forge a platform that leads the way in innovation in the decentralized space"})}];function i(l){let{title:t,Svg:e,description:q}=l;return(0,v.jsxs)("div",{className:(0,a.A)("col col--4"),children:[(0,v.jsx)("div",{className:"text--center",children:(0,v.jsx)(e,{className:c.featureSvg,role:"img"})}),(0,v.jsxs)("div",{className:"text--center padding-horiz--md",children:[(0,v.jsx)(r.A,{as:"h3",children:t}),(0,v.jsx)("p",{children:q})]})]})}function o(){return(0,v.jsx)("section",{className:c.features,children:(0,v.jsx)("div",{className:"container",children:(0,v.jsx)("div",{className:"row",children:n.map(((l,t)=>(0,v.jsx)(i,{...l},t)))})})})}const s={heroBanner:"heroBanner_qdFl",headerContainer:"headerContainer_Dcc3",buttons:"buttons_AeoN",heroSubtitle:"heroSubtitle_jFu1",textPadding:"textPadding_Bwvp",bodyContainer:"bodyContainer_uay2"};function d(){const{siteConfig:l}=(0,m.A)();return(0,v.jsx)("header",{className:(0,a.A)("",s.heroBanner),children:(0,v.jsx)("div",{className:"container",children:(0,v.jsx)(r.A,{as:"h1",className:"hero__title",children:l.title})})})}function z(){return(0,v.jsxs)("header",{className:s.features,children:[(0,v.jsx)("div",{className:s.bodyContainer,children:(0,v.jsx)("div",{className:s.textPadding,children:"You're about to dive into the Calimero Network, a place designed to shake up the digital world by prioritizing what matters most: privacy, data control, and freedom in your creations. Calimero offers a foundation for those committed to building the new digital landscape where privacy and user autonomy are non-negotiable. It's a shift towards an ecosystem where applications are built on principles of decentralization, ensuring users retain control over their digital footprint."})}),(0,v.jsx)("div",{className:s.buttons,children:(0,v.jsx)(q.A,{className:"button button--secondary button--lg",to:"/explore/intro",children:"Dive into privacy preserving technology"})})]})}function f(){const{siteConfig:l}=(0,m.A)();return(0,v.jsxs)(h.A,{title:`Hello from ${l.title}`,description:"Description will go into a meta tag in ",children:[(0,v.jsx)(d,{}),(0,v.jsxs)("main",{children:[(0,v.jsx)(z,{}),(0,v.jsx)(o,{})]})]})}}}]); \ No newline at end of file diff --git a/assets/js/22dd74f7.8937fd88.js b/assets/js/22dd74f7.8937fd88.js new file mode 100644 index 00000000..fa24004d --- /dev/null +++ b/assets/js/22dd74f7.8937fd88.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[567],{5226:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"tutorialSidebar":[{"type":"category","label":"Explore","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Introduction","href":"/explore/intro","docId":"explore/intro","unlisted":false},{"type":"category","label":"Developers Quickstart","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Getting started","href":"/explore/developers-quickstart/getting-started","docId":"explore/developers-quickstart/getting-started","unlisted":false},{"type":"link","label":"Admin Dashboard","href":"/explore/developers-quickstart/admin-dashboard","docId":"explore/developers-quickstart/admin-dashboard","unlisted":false},{"type":"link","label":"Example Application","href":"/explore/developers-quickstart/example-app","docId":"explore/developers-quickstart/example-app","unlisted":false}]}]},{"type":"category","label":"Learn","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Architecture","href":"/learn/architecture","docId":"learn/architecture","unlisted":false},{"type":"link","label":"Terminology","href":"/learn/terminology","docId":"learn/terminology","unlisted":false},{"type":"category","label":"Core Concepts","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Identity","href":"/learn/core-concepts/identity","docId":"learn/core-concepts/identity","unlisted":false},{"type":"category","label":"Node","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Client Node","href":"/learn/core-concepts/node/client-node","docId":"learn/core-concepts/node/client-node","unlisted":false},{"type":"link","label":"Runtime","href":"/learn/core-concepts/node/runtime","docId":"learn/core-concepts/node/runtime","unlisted":false},{"type":"link","label":"Server","href":"/learn/core-concepts/node/server","docId":"learn/core-concepts/node/server","unlisted":false},{"type":"link","label":"Storage","href":"/learn/core-concepts/node/storage","docId":"learn/core-concepts/node/storage","unlisted":false},{"type":"link","label":"Network","href":"/learn/core-concepts/node/network","docId":"learn/core-concepts/node/network","unlisted":false},{"type":"link","label":"Admin Client API","href":"/learn/core-concepts/node/admin-client-api","docId":"learn/core-concepts/node/admin-client-api","unlisted":false}]},{"type":"link","label":"Applications","href":"/learn/core-concepts/applications","docId":"learn/core-concepts/applications","unlisted":false},{"type":"link","label":"Contexts","href":"/learn/core-concepts/contexts","docId":"learn/core-concepts/contexts","unlisted":false}]},{"type":"category","label":"Advanced Concepts","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Specialized Nodes","href":"/learn/advanced-concepts/specialized-nodes","docId":"learn/advanced-concepts/specialized-nodes","unlisted":false},{"type":"link","label":"Encryption","href":"/learn/advanced-concepts/encryption","docId":"learn/advanced-concepts/encryption","unlisted":false}]}]},{"type":"category","label":"Build","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Quickstart","href":"/build/quickstart","docId":"build/quickstart","unlisted":false},{"type":"category","label":"Protocol SDKs","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Protocol SDK","href":"/build/protocol-sdks/protocol-sdk","docId":"build/protocol-sdks/protocol-sdk","unlisted":false},{"type":"link","label":"Rust Protocol SDK","href":"/build/protocol-sdks/protocol-rs-sdk","docId":"build/protocol-sdks/protocol-rs-sdk","unlisted":false}]},{"type":"category","label":"Client SDKs","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"TypeScript Client SDK","href":"/build/client-sdks/client-ts-sdk","docId":"build/client-sdks/client-ts-sdk","unlisted":false}]},{"type":"link","label":"Publish App","href":"/build/publish-app","docId":"build/publish-app","unlisted":false}]},{"type":"category","label":"Contribute","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Github","href":"/contribute/github","docId":"contribute/github","unlisted":false},{"type":"link","label":"Hackathons","href":"/contribute/hackathons","docId":"contribute/hackathons","unlisted":false},{"type":"link","label":"Bounty Program","href":"/contribute/bounty-program","docId":"contribute/bounty-program","unlisted":false}]},{"type":"category","label":"Resources","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Community and Support","href":"/resources/community-and-support","docId":"resources/community-and-support","unlisted":false},{"type":"link","label":"Learning","href":"/resources/learning","docId":"resources/learning","unlisted":false}]}]},"docs":{"build/client-sdks/client-ts-sdk":{"id":"build/client-sdks/client-ts-sdk","title":"TypeScript Client SDK","description":"Getting Started with Calimero SDK for Typescript","sidebar":"tutorialSidebar"},"build/protocol-sdks/protocol-rs-sdk":{"id":"build/protocol-sdks/protocol-rs-sdk","title":"Rust Protocol SDK","description":"Getting Started with Calimero SDK for Rust","sidebar":"tutorialSidebar"},"build/protocol-sdks/protocol-sdk":{"id":"build/protocol-sdks/protocol-sdk","title":"Protocol SDK","description":"The Protocol SDK within the Calimero Network serves as a foundational tool for developers, enabling them to design, develop, and deploy the specific protocols that govern the operation of their decentralized applications (DApps). This SDK is particularly crucial in a network like Calimero, where privacy, security, and decentralized communication are paramount. Here\'s an overview of the Protocol SDK, highlighting its features, functionalities, and its role in the development lifecycle of DApps:","sidebar":"tutorialSidebar"},"build/publish-app":{"id":"build/publish-app","title":"Publish App","description":"After you have built your application, you can publish it to the network. This will make it available for users to interact with.","sidebar":"tutorialSidebar"},"build/quickstart":{"id":"build/quickstart","title":"Quickstart","description":"Welcome to the exciting world of application development in the decentralized space! As a developer, you have the opportunity to build cutting-edge applications using our comprehensive suite of tools. Start by shaping the core application logic with our Protocol SDK and then bring your application to life by crafting intuitive user interfaces with the Client SDK. Join our community of developers and start creating powerful decentralized applications that can make a significant impact in the tech world.","sidebar":"tutorialSidebar"},"contribute/bounty-program":{"id":"contribute/bounty-program","title":"Bounty Program","description":"We\'re excited to announce that Calimero will soon be launching a bounty program! This program is designed to reward contributors who help us tackle various issues and enhance our project.","sidebar":"tutorialSidebar"},"contribute/github":{"id":"contribute/github","title":"Github","description":"All work on Calimero happens directly on GitHub. Both core team members and external contributors send pull requests which go through the same review process.","sidebar":"tutorialSidebar"},"contribute/hackathons":{"id":"contribute/hackathons","title":"Hackathons","description":"At Calimero, we love innovation and collaboration, which is why we plan to regularly organize hackathons that include our product. We have exciting events planned for the future. Stay tuned by following us on our social media channels to get the latest updates.","sidebar":"tutorialSidebar"},"explore/developers-quickstart/admin-dashboard":{"id":"explore/developers-quickstart/admin-dashboard","title":"Admin Dashboard","description":"Node is gated with authentication. In order to interact with the node from any app, you need to register a decentralized identity.","sidebar":"tutorialSidebar"},"explore/developers-quickstart/example-app":{"id":"explore/developers-quickstart/example-app","title":"Example Application","description":"We have created simple and easy to use example application called only-peers. Application enables writing posts and leaving comments.","sidebar":"tutorialSidebar"},"explore/developers-quickstart/getting-started":{"id":"explore/developers-quickstart/getting-started","title":"Getting started","description":"Before you start, make sure you are familiar with Calimero Terminology.","sidebar":"tutorialSidebar"},"explore/intro":{"id":"explore/intro","title":"Introduction","description":"Welcome to Our Project Documentation","sidebar":"tutorialSidebar"},"learn/advanced-concepts/encryption":{"id":"learn/advanced-concepts/encryption","title":"Encryption","description":"Encryption in Calimero ensures data security in transit over the network, maintaining confidentiality and integrity.","sidebar":"tutorialSidebar"},"learn/advanced-concepts/specialized-nodes":{"id":"learn/advanced-concepts/specialized-nodes","title":"Specialized Nodes","description":"Specialized nodes in the Calimero Network are third-party nodes that augment a context\'s capacity and reliability. They participate in a context but have additional capabilities, providing various services while maintaining the decentralized nature of the network.","sidebar":"tutorialSidebar"},"learn/architecture":{"id":"learn/architecture","title":"Architecture","description":"Calimero Network offers a robust framework for developing and running peer-to-peer (P2P) applications. Our framework allows users to participate in the network or build applications for others to use.","sidebar":"tutorialSidebar"},"learn/core-concepts/applications":{"id":"learn/core-concepts/applications","title":"Applications","description":"Applications in Calimero define the core logic governing how peers interact within a decentralized network. Developers can programmatically augment the protocol to create customized functionalities, supporting a wide range of applications tailored to various use cases, from direct messaging and communication channels to interactive games and collaborative editing.","sidebar":"tutorialSidebar"},"learn/core-concepts/contexts":{"id":"learn/core-concepts/contexts","title":"Contexts","description":"Contexts are the core of the Calimero ecosystem. These are application specific networks designed to enable direct communication between users, eliminating the need for intermediaries. Here\'s a closer look at how they operate:","sidebar":"tutorialSidebar"},"learn/core-concepts/identity":{"id":"learn/core-concepts/identity","title":"Identity","description":"Key Management","sidebar":"tutorialSidebar"},"learn/core-concepts/node/admin-client-api":{"id":"learn/core-concepts/node/admin-client-api","title":"Admin Client API","description":"About Admin Client API","sidebar":"tutorialSidebar"},"learn/core-concepts/node/client-node":{"id":"learn/core-concepts/node/client-node","title":"Client Node","description":"Runtime","sidebar":"tutorialSidebar"},"learn/core-concepts/node/network":{"id":"learn/core-concepts/node/network","title":"Network","description":"Overview","sidebar":"tutorialSidebar"},"learn/core-concepts/node/runtime":{"id":"learn/core-concepts/node/runtime","title":"Runtime","description":"The runtime environment in the Calimero Network is essential for executing decentralized applications (DApps). It acts as a bridge between the application logic, the network, and storage layers, ensuring seamless operation and integration. The runtime ensures secure, isolated, and efficient execution of applications by managing resources effectively, supporting real-time event handling, enabling scalability, and providing robust storage and transaction management.","sidebar":"tutorialSidebar"},"learn/core-concepts/node/server":{"id":"learn/core-concepts/node/server","title":"Server","description":"The server is a core component for interacting with a Calimero node. Calimero can be embedded with your client to make it a self-contained node, or it can run as a remote node that multiple clients can connect to, allowing centralized state management.","sidebar":"tutorialSidebar"},"learn/core-concepts/node/storage":{"id":"learn/core-concepts/node/storage","title":"Storage","description":"The storage component in the Calimero Network is essential for managing and maintaining the data generated and utilized by decentralized applications (DApps). It ensures data integrity, security, and efficient access, enabling seamless operation of applications within the network.","sidebar":"tutorialSidebar"},"learn/terminology":{"id":"learn/terminology","title":"Terminology","description":"As projects grow, it\'s important to have a shared vocabulary to help communicate effectively. This page provides a list of terms used in the documentation and throughout the codebase.","sidebar":"tutorialSidebar"},"resources/community-and-support":{"id":"resources/community-and-support","title":"Community and Support","description":"We value our community and are here to support you. Here are the best ways to get in touch and find help:","sidebar":"tutorialSidebar"},"resources/learning":{"id":"resources/learning","title":"Learning","description":"Expand your knowledge and stay informed by exploring the following resources:","sidebar":"tutorialSidebar"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/23ed0991.f4e84401.js b/assets/js/23ed0991.f4e84401.js new file mode 100644 index 00000000..43bc18b7 --- /dev/null +++ b/assets/js/23ed0991.f4e84401.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[162],{5899:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>d,frontMatter:()=>a,metadata:()=>s,toc:()=>c});var n=i(6070),r=i(5710);const a={id:"architecture",title:"Architecture"},o=void 0,s={id:"learn/architecture",title:"Architecture",description:"Calimero Network offers a robust framework for developing and running peer-to-peer (P2P) applications. Our framework allows users to participate in the network or build applications for others to use.",source:"@site/docs/02-learn/01-architecture.mdx",sourceDirName:"02-learn",slug:"/learn/architecture",permalink:"/learn/architecture",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1718189423e3,sidebarPosition:1,frontMatter:{id:"architecture",title:"Architecture"},sidebar:"tutorialSidebar",previous:{title:"Example Application",permalink:"/explore/developers-quickstart/example-app"},next:{title:"Terminology",permalink:"/learn/terminology"}},l={},c=[{value:"Participate",id:"participate",level:2},{value:"Build",id:"build",level:2}];function p(e){const t={h2:"h2",img:"img",li:"li",p:"p",ul:"ul",...(0,r.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.p,{children:"Calimero Network offers a robust framework for developing and running peer-to-peer (P2P) applications. Our framework allows users to participate in the network or build applications for others to use."}),"\n",(0,n.jsx)(t.h2,{id:"participate",children:"Participate"}),"\n",(0,n.jsx)(t.p,{children:"Users participate in the network with a client node. By encapsulating the complexities of operating a client node, we aim to make it easy and intuitive for everyone to engage in the decentralized world."}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsx)(t.li,{children:"Client node acts as a gateway that runs applications and connects with other peers"}),"\n",(0,n.jsx)(t.li,{children:"Each application is loaded and isolated from other applications into a separate context. This ensures that each application runs independently while still allowing interactions through shared states or messages."}),"\n",(0,n.jsx)(t.li,{children:"Context consolidates all necessary components into a secure, isolated environment."}),"\n"]}),"\n",(0,n.jsx)(t.p,{children:"Some networks may require specialized functionalities, which are provided by a dedicated compute market. Users can integrate these special functionalities from a pool of available specialized nodes."}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"Calimero Architecture",src:i(9063).A+"",width:"1920",height:"1080"})}),"\n",(0,n.jsx)(t.h2,{id:"build",children:"Build"}),"\n",(0,n.jsx)(t.p,{children:"To develop applications on the Calimero Network, we provide comprehensive SDKs:"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsx)(t.li,{children:"Protocol SDK to define how the application should behave and communicate with the node."}),"\n",(0,n.jsx)(t.li,{children:"Client SDK to connect to node and use data in user interface and authenticate using wallets UI."}),"\n"]}),"\n",(0,n.jsx)(t.p,{children:"Developer applications are shared through application registry where developers upload their applications and share it with other users"}),"\n",(0,n.jsx)(t.p,{children:"Explore other sections to learn more about each component, and how they contribute to a seamless decentralized experience."})]})}function d(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(p,{...e})}):p(e)}},9063:(e,t,i)=>{i.d(t,{A:()=>n});const n=i.p+"assets/images/architecture-88be4e09ef7ca7e8a3bf6b5a69783f03.png"},5710:(e,t,i)=>{i.d(t,{R:()=>o,x:()=>s});var n=i(758);const r={},a=n.createContext(r);function o(e){const t=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),n.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/27468b3d.3c8a6a17.js b/assets/js/27468b3d.3c8a6a17.js new file mode 100644 index 00000000..2e184ba2 --- /dev/null +++ b/assets/js/27468b3d.3c8a6a17.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[235],{9642:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>r,contentTitle:()=>d,default:()=>p,frontMatter:()=>a,metadata:()=>o,toc:()=>l});var i=t(6070),s=t(5710);const a={id:"admin-dashboard",title:"Admin Dashboard"},d=void 0,o={id:"explore/developers-quickstart/admin-dashboard",title:"Admin Dashboard",description:"Node is gated with authentication. In order to interact with the node from any app, you need to register a decentralized identity.",source:"@site/docs/01-explore/04-developers-quickstart/02-admin-dashboard.mdx",sourceDirName:"01-explore/04-developers-quickstart",slug:"/explore/developers-quickstart/admin-dashboard",permalink:"/explore/developers-quickstart/admin-dashboard",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1718189423e3,sidebarPosition:2,frontMatter:{id:"admin-dashboard",title:"Admin Dashboard"},sidebar:"tutorialSidebar",previous:{title:"Getting started",permalink:"/explore/developers-quickstart/getting-started"},next:{title:"Example Application",permalink:"/explore/developers-quickstart/example-app"}},r={},l=[{value:"Run Admin Dashboard",id:"run-admin-dashboard",level:3},{value:"Admin Dashboard functionalities:",id:"admin-dashboard-functionalities",level:3},{value:"Identity",id:"identity",level:4},{value:"Contexts",id:"contexts",level:4},{value:"Applications",id:"applications",level:4},{value:"Export",id:"export",level:4}];function c(e){const n={a:"a",blockquote:"blockquote",code:"code",em:"em",h3:"h3",h4:"h4",img:"img",p:"p",pre:"pre",strong:"strong",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.p,{children:"Node is gated with authentication. In order to interact with the node from any app, you need to register a decentralized identity.\nWe have build an Admin Dashboard which is a web application designed to streamline the management of node states within your system. Seamlessly connected with the API provided by the Admin Client API, this user interface offers a user-friendly platform for overseeing and controlling various aspects of your node infrastructure."}),"\n",(0,i.jsx)(n.h3,{id:"run-admin-dashboard",children:"Run Admin Dashboard"}),"\n",(0,i.jsx)(n.p,{children:"Position to the Admin Dashboard directory"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-console",children:" cd node-ui\n"})}),"\n",(0,i.jsx)(n.p,{children:"Install dependencies"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-console",children:" pnpm install\n"})}),"\n",(0,i.jsx)(n.p,{children:"Build the app"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-console",children:" pnpm build\n"})}),"\n",(0,i.jsx)(n.p,{children:"Run the Admin Dashboard"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-console",children:" pnpm start\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Open your web browser and access admin dashboard on ",(0,i.jsx)(n.code,{children:"http://localhost:NODE_PORT/admin/"}),"."]}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:(0,i.jsx)(n.em,{children:"NOTE:"})}),"\nReplace ",(0,i.jsx)(n.code,{children:"NODE_PORT"})," with the ",(0,i.jsx)(n.code,{children:"--server-port"})," value defined during node setup in ",(0,i.jsx)(n.a,{href:"/explore/developers-quickstart/getting-started",children:"Getting-started"})]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"You will see login page. On the first login, your selected wallet will be used as a root key to use further functionalities."}),"\n",(0,i.jsx)(n.h3,{id:"admin-dashboard-functionalities",children:"Admin Dashboard functionalities:"}),"\n",(0,i.jsx)(n.h4,{id:"identity",children:"Identity"}),"\n",(0,i.jsx)(n.p,{children:"Preview added root keys or add new root key."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Identity",src:t(5544).A+"",width:"3014",height:"1554"})}),"\n",(0,i.jsx)(n.h4,{id:"contexts",children:"Contexts"}),"\n",(0,i.jsx)(n.p,{children:"Preview context which you have already joined or invited. You can also create a new context."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Contexts",src:t(5022).A+"",width:"3010",height:"1558"})}),"\n",(0,i.jsx)(n.h4,{id:"applications",children:"Applications"}),"\n",(0,i.jsx)(n.p,{children:"Preview available applications from other developers or applications you published. You can also publish new application"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Applications",src:t(111).A+"",width:"3016",height:"1558"})}),"\n",(0,i.jsx)(n.h4,{id:"export",children:"Export"}),"\n",(0,i.jsx)(n.p,{children:"Allows you to export you identity on current device and import it on new device so you have seamless experience while onboarding to another device."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Export",src:t(5933).A+"",width:"3018",height:"1560"})})]})}function p(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},111:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/applications-65c777f084225d92fc42a490b4a1b3e1.png"},5022:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/contexts-6319c93e803b1ca884e210104b4e654c.png"},5933:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/export-identity-4108c244241ad8b32d09d98e3ec3bd29.png"},5544:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/identity-4bfbe6d0828c9b408f0c8a6506a92327.png"},5710:(e,n,t)=>{t.d(n,{R:()=>d,x:()=>o});var i=t(758);const s={},a=i.createContext(s);function d(e){const n=i.useContext(a);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:d(e.components),i.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2b77e7d3.b44d5f9e.js b/assets/js/2b77e7d3.b44d5f9e.js new file mode 100644 index 00000000..5867fe2a --- /dev/null +++ b/assets/js/2b77e7d3.b44d5f9e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[802],{8522:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>s,metadata:()=>a,toc:()=>c});var i=t(6070),r=t(5710);const s={id:"protocol-rs-sdk",title:"Rust Protocol SDK"},o=void 0,a={id:"build/protocol-sdks/protocol-rs-sdk",title:"Rust Protocol SDK",description:"Getting Started with Calimero SDK for Rust",source:"@site/docs/03-build/01-protocol-sdks/02-protocol-rs-sdk.mdx",sourceDirName:"03-build/01-protocol-sdks",slug:"/build/protocol-sdks/protocol-rs-sdk",permalink:"/build/protocol-sdks/protocol-rs-sdk",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1718189423e3,sidebarPosition:2,frontMatter:{id:"protocol-rs-sdk",title:"Rust Protocol SDK"},sidebar:"tutorialSidebar",previous:{title:"Protocol SDK",permalink:"/build/protocol-sdks/protocol-sdk"},next:{title:"TypeScript Client SDK",permalink:"/build/client-sdks/client-ts-sdk"}},l={},c=[{value:"Getting Started with Calimero SDK for Rust",id:"getting-started-with-calimero-sdk-for-rust",level:2},{value:"Prerequisites",id:"prerequisites",level:3},{value:"Setting Up Your Project",id:"setting-up-your-project",level:3},{value:"Writing Your Application",id:"writing-your-application",level:3},{value:"Building Your Application",id:"building-your-application",level:3},{value:"Deploying Your Application",id:"deploying-your-application",level:3},{value:"Writing Efficient Code with Calimero SDK",id:"writing-efficient-code-with-calimero-sdk",level:3},{value:"Handling Errors with Calimero SDK",id:"handling-errors-with-calimero-sdk",level:3},{value:"Emitting Events with Calimero SDK",id:"emitting-events-with-calimero-sdk",level:3},{value:"Ensuring Atomicity and Event Reliability in Calimero Applications",id:"ensuring-atomicity-and-event-reliability-in-calimero-applications",level:3},{value:"Atomic State Changes",id:"atomic-state-changes",level:4},{value:"Reliable Event Emission",id:"reliable-event-emission",level:4},{value:"Local-First Efficiency: No Network Overhead for Read-Only Calls",id:"local-first-efficiency-no-network-overhead-for-read-only-calls",level:3},{value:"Conclusion",id:"conclusion",level:3}];function d(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",h4:"h4",p:"p",pre:"pre",...(0,r.R)(),...e.components},{Details:t}=n;return t||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h2,{id:"getting-started-with-calimero-sdk-for-rust",children:"Getting Started with Calimero SDK for Rust"}),"\n",(0,i.jsx)(n.p,{children:"The Calimero SDK for Rust empowers developers to build applications that compile to WebAssembly (Wasm) and run securely within the Calimero virtual machine (VM). This guide will walk you through setting up a Rust project using the Calimero SDK, writing an application, and preparing it for deployment."}),"\n",(0,i.jsx)(n.h3,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,i.jsxs)(n.p,{children:["Before you begin, ensure you have Rust installed on your system. If not, follow the official Rust installation guide for your platform: ",(0,i.jsx)(n.a,{href:"https://www.rust-lang.org/tools/install",children:"Rust Installation Guide"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["You should ensure you have the ",(0,i.jsx)(n.code,{children:"wasm32-unknown-unknown"})," target installed. Run the following command in your terminal to install the target:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",metastring:'title="Terminal"',children:"rustup target add wasm32-unknown-unknown\n"})}),"\n",(0,i.jsx)(n.h3,{id:"setting-up-your-project",children:"Setting Up Your Project"}),"\n",(0,i.jsx)(n.p,{children:"To create a new project, initialize a Rust library project using Cargo. Run the following command in your terminal:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",metastring:'title="Terminal"',children:"cargo new --lib kv-store\n"})}),"\n",(0,i.jsx)(n.p,{children:"You should have a tree that looks like this:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",metastring:'title="Terminal"',children:"$ tree kv-store\nkv-store\n\u251c\u2500\u2500 Cargo.toml\n\u2514\u2500\u2500 src\n \u2514\u2500\u2500 lib.rs\n\n2 directories, 2 files\n"})}),"\n",(0,i.jsxs)(n.p,{children:["At this point, we can ",(0,i.jsx)(n.code,{children:"cd"})," into the ",(0,i.jsx)(n.code,{children:"kv-store"})," directory:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",metastring:'title="Terminal"',children:"cd kv-store\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Next, you need to specify the crate-type as ",(0,i.jsx)(n.code,{children:"cdylib"})," in your ",(0,i.jsx)(n.code,{children:"Cargo.toml"})," file to generate a dynamic library that can be compiled to Wasm:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-toml",metastring:'title="File: Cargo.toml"',children:'[lib]\ncrate-type = ["cdylib"]\n'})}),"\n",(0,i.jsxs)(n.p,{children:["You can now configure your project to use the Calimero SDK by adding it as a dependency in your ",(0,i.jsx)(n.code,{children:"Cargo.toml"})," file:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-toml",metastring:'title="File: Cargo.toml"',children:'[dependencies]\ncalimero-sdk = { git = "https://github.com/calimero-network/core" }\n'})}),"\n",(0,i.jsx)(n.p,{children:"Then, we need to specify a custom build profile for the most compact Wasm output:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-toml",metastring:'title="File: Cargo.toml"',children:'[profile.app-release]\ninherits = "release"\ncodegen-units = 1\nopt-level = "z"\nlto = true\ndebug = false\npanic = "abort"\noverflow-checks = true\n'})}),"\n",(0,i.jsxs)(t,{children:[(0,i.jsxs)("summary",{children:[" Your ",(0,i.jsx)(n.code,{children:"Cargo.toml"})," file should now look like this "]}),(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-toml",metastring:'title="File: Cargo.toml" showLineNumbers',children:'[package]\nname = "kv-store"\nversion = "0.1.0"\nedition = "2021"\n\n# highlight-start\n[lib]\ncrate-type = ["cdylib"]\n# highlight-end\n\n# highlight-start\n[dependencies]\ncalimero-sdk = { git = "https://github.com/calimero-network/core" }\n# highlight-end\n\n# highlight-start\n[profile.app-release]\ninherits = "release"\ncodegen-units = 1\nopt-level = "z"\nlto = true\ndebug = false\npanic = "abort"\noverflow-checks = true\n# highlight-end\n'})})]}),"\n",(0,i.jsxs)(n.p,{children:["And finally, create a ",(0,i.jsx)(n.code,{children:"build.sh"})," script to compile your application into Wasm format, for example:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",metastring:'title="File: build.sh" showLineNumbers',children:'#!/bin/bash\nset -e\n\ncd "$(dirname $0)"\n\nTARGET="${CARGO_TARGET_DIR:-../../target}"\n\nrustup target add wasm32-unknown-unknown\n\ncargo build --target wasm32-unknown-unknown --profile app-release\n\nmkdir -p res\n\ncp $TARGET/wasm32-unknown-unknown/app-release/kv_store.wasm ./res/\n'})}),"\n",(0,i.jsxs)(n.p,{children:["You can optionally choose to install and use ",(0,i.jsx)(n.a,{href:"https://github.com/WebAssembly/binaryen",children:(0,i.jsx)(n.code,{children:"wasm-opt"})}),", for an additional optimization step in the build script. This step is not required but can help reduce the size of the generated Wasm file:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",metastring:'title="File: build.sh"',children:"if command -v wasm-opt > /dev/null; then\n wasm-opt -Oz ./res/kv_store.wasm -o ./res/kv_store.wasm\nfi\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Don't forget to make the ",(0,i.jsx)(n.code,{children:"build.sh"})," script executable:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",metastring:'title="Terminal"',children:"chmod +x build.sh\n"})}),"\n",(0,i.jsx)(n.p,{children:"At this point, your project structure should look like this:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",metastring:'title="Terminal"',children:"$ tree\n.\n\u251c\u2500\u2500 Cargo.toml\n\u251c\u2500\u2500 build.sh\n\u2514\u2500\u2500 src\n \u2514\u2500\u2500 lib.rs\n\n2 directories, 3 files\n"})}),"\n",(0,i.jsx)(n.h3,{id:"writing-your-application",children:"Writing Your Application"}),"\n",(0,i.jsxs)(n.p,{children:["Now, let's create a simple key-value store application using the Calimero SDK. Start by defining your application logic in ",(0,i.jsx)(n.code,{children:"lib.rs"}),":"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-rust",metastring:'title="File: src/lib.rs" showLineNumbers',children:"use calimero_sdk::borsh::{BorshDeserialize, BorshSerialize};\nuse calimero_sdk::app;\n\n#[app::state]\n#[derive(Default, BorshSerialize, BorshDeserialize)]\nstruct KvStore {}\n\n#[app::logic]\nimpl KvStore {}\n"})}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"KvStore"})," struct represents the state of your application, which will be borsh-encoded in the app-scoped state partition on the node's storage. The ",(0,i.jsx)(n.code,{children:"#[app::state]"})," attribute macro marks the struct as the application state, permitting its use by Calimero SDK."]}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"#[app::logic]"})," attribute macro marks the implementation block as the application logic, allowing you to define the methods that interact with the application state."]}),"\n",(0,i.jsxs)(n.p,{children:["Consider a method like ",(0,i.jsx)(n.code,{children:"get"})," that retrieves a value from the key-value store:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-rust",children:"pub fn get(&self, key: &str) -> Option<&str> {\n // Snip...\n}\n"})}),"\n",(0,i.jsxs)(n.p,{children:["The inputs must be deserializable from the transaction data, and the output must be serializable to the response data. The ",(0,i.jsx)(n.code,{children:"Option"})," type is used to represent the possibility of the key not being present in the store."]}),"\n",(0,i.jsx)(n.p,{children:"And now, here's a complete example of a key-value store application:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-rust",metastring:'title="File: src/lib.rs" showLineNumbers',children:'use std::collections::HashMap;\n\nuse calimero_sdk::borsh::{BorshDeserialize, BorshSerialize};\nuse calimero_sdk::{app, env};\n\n#[app::state]\n#[derive(Default, BorshSerialize, BorshDeserialize)]\nstruct KvStore {\n entries: HashMap,\n}\n\n#[app::logic]\nimpl KvStore {\n // highlight-start\n pub fn set(&mut self, key: String, value: String) {\n env::log(&format!("Setting key: {:?} to value: {:?}", key, value));\n\n self.entries.insert(key, value);\n }\n // highlight-end\n\n // highlight-start\n pub fn entries(&self) -> &HashMap {\n env::log("Getting all entries");\n\n &self.entries\n }\n // highlight-end\n\n // highlight-start\n pub fn get(&self, key: &str) -> Option<&str> {\n env::log(&format!("Getting key: {:?}", key));\n\n self.entries.get(key).map(|v| v.as_str())\n }\n // highlight-end\n\n // highlight-start\n pub fn remove(&mut self, key: &str) -> Option {\n env::log(&format!("Removing key: {:?}", key));\n\n self.entries.remove(key)\n }\n // highlight-end\n}\n'})}),"\n",(0,i.jsx)(n.h3,{id:"building-your-application",children:"Building Your Application"}),"\n",(0,i.jsxs)(n.p,{children:["Once your application logic is defined, run the ",(0,i.jsx)(n.code,{children:"./build.sh"})," script to compile your application into Wasm format. This script will generate ",(0,i.jsx)(n.code,{children:"kv_store.wasm"})," in the ",(0,i.jsx)(n.code,{children:"res"})," folder of your application."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",metastring:'title="Terminal"',children:"$ ./build.sh\ninfo: component 'rust-std' for target 'wasm32-unknown-unknown' is up to date\n # Snip...\n Compiling calimero-sdk v0.1.0\n Compiling kv-store v0.1.0 (/apps/kv-store)\n Finished `app-release` profile [optimized] target(s) in 1.20s\n\n$ tree\n.\n\u251c\u2500\u2500 Cargo.toml\n\u251c\u2500\u2500 build.sh\n\u251c\u2500\u2500 res\n\u2502\xa0\xa0 \u2514\u2500\u2500 kv_store.wasm\n\u2514\u2500\u2500 src\n \u2514\u2500\u2500 lib.rs\n\n3 directories, 4 files\n"})}),"\n",(0,i.jsx)(n.h3,{id:"deploying-your-application",children:"Deploying Your Application"}),"\n",(0,i.jsxs)(n.p,{children:["After successfully building your application, you can upload the compiled ",(0,i.jsx)(n.code,{children:"kv_store.wasm"})," to the registry for use by a live Calimero node."]}),"\n",(0,i.jsx)(n.h3,{id:"writing-efficient-code-with-calimero-sdk",children:"Writing Efficient Code with Calimero SDK"}),"\n",(0,i.jsx)(n.p,{children:"In the following code snippet:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-rust",metastring:'title="File: src/lib.rs"',children:"pub fn get(&self, key: &str) -> Option<&str> {\n // Snip...\n}\n"})}),"\n",(0,i.jsx)(n.p,{children:"you'll notice that we prioritize using references instead of owned values. This approach optimizes performance and memory usage by minimizing unnecessary data copying."}),"\n",(0,i.jsxs)(n.p,{children:["For input parameters, such as ",(0,i.jsx)(n.code,{children:"&str"})," and ",(0,i.jsx)(n.code,{children:"&[u8]"}),", utilizing references allows you to avoid unnecessary copying of data. Similarly, for output values, you can return references to data that live as long as ",(0,i.jsx)(n.code,{children:"&self"})," or any of the input parameters. By doing so, you reduce memory overhead and improve the overall efficiency of your application."]}),"\n",(0,i.jsx)(n.p,{children:"By returning a reference to the value associated with the provided key instead of cloning the entire value, you ensure efficient memory usage and enhance the performance of your application."}),"\n",(0,i.jsx)(n.h3,{id:"handling-errors-with-calimero-sdk",children:"Handling Errors with Calimero SDK"}),"\n",(0,i.jsxs)(n.p,{children:["When designing methods that may potentially fail, it's recommended to return a ",(0,i.jsx)(n.code,{children:"Result"})," type with an error variant representing the possible failure cases. This enables you to handle errors more effectively and communicate error conditions to users of your application. As opposed to panicking which would only return a string message, using ",(0,i.jsx)(n.code,{children:"Result"})," allows you to provide a structured error type with additional context."]}),"\n",(0,i.jsxs)(n.p,{children:["First, let's define an error type ",(0,i.jsx)(n.code,{children:"Error<'a>"})," with a lifetime tied to the key ",(0,i.jsx)(n.code,{children:"&'a str"}),":"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-rust",metastring:'title="File: src/lib.rs"',children:"use calimero_sdk::serde::Serialize;\n\n#[derive(Debug, Serialize)]\npub enum Error<'a> {\n NotFound(&'a str),\n // Add more error variants as needed\n}\n"})}),"\n",(0,i.jsxs)(n.p,{children:["In the above definition, ",(0,i.jsx)(n.code,{children:"Error"})," represents the possible error variants that may occur during the execution of your method. Each variant can carry additional data to provide context about the error condition."]}),"\n",(0,i.jsxs)(n.p,{children:["Next, let's modify the ",(0,i.jsx)(n.code,{children:"get"})," method to return a ",(0,i.jsx)(n.code,{children:"Result"})," with ",(0,i.jsx)(n.code,{children:"Error"})," as the error type:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-rust",metastring:'title="File: src/lib.rs"',children:"pub fn get<'a>(&self, key: &'a str) -> Result<&'a str, Error<'a>> {\n match self.entries.get(key) {\n Some(value) => Ok(value),\n None => Err(Error::NotFound(key)),\n }\n}\n"})}),"\n",(0,i.jsxs)(n.p,{children:["In the ",(0,i.jsx)(n.code,{children:"get"})," method, we return ",(0,i.jsx)(n.code,{children:"Ok(value)"})," if the key exists in the key-value store, and ",(0,i.jsx)(n.code,{children:"Err(Error::NotFound(key))"})," if the key is not found. This allows callers of the method to handle the possibility of the key not being present in the store."]}),"\n",(0,i.jsxs)(n.p,{children:["Additionally, ensure that the ",(0,i.jsx)(n.code,{children:"Error"})," type is serializable by implementing (or deriving) the ",(0,i.jsx)(n.code,{children:"Serialize"})," trait, as shown in the definition above. This enables errors to be encoded in a structured format when returned as part of a call error."]}),"\n",(0,i.jsx)(n.p,{children:"By following this approach, you can handle errors more gracefully and provide meaningful feedback to users of your Calimero application."}),"\n",(0,i.jsx)(n.h3,{id:"emitting-events-with-calimero-sdk",children:"Emitting Events with Calimero SDK"}),"\n",(0,i.jsxs)(n.p,{children:["To facilitate real-time monitoring of state transitions within your Calimero application, you can emit events using the ",(0,i.jsx)(n.code,{children:"app::emit!"})," macro provided by the Calimero SDK. Event emission is particularly useful for handling live state transitions triggered by other actors, allowing subscribed clients to receive immediate updates about relevant actions."]}),"\n",(0,i.jsxs)(n.p,{children:["Let's focus on emitting events for mutating calls, specifically ",(0,i.jsx)(n.code,{children:"set"})," and ",(0,i.jsx)(n.code,{children:"remove"})," methods:"]}),"\n",(0,i.jsxs)(n.p,{children:["First, define your custom events using the ",(0,i.jsx)(n.code,{children:"#[app::event]"})," proc macro. In this example, we'll define events for setting a new key-value pair (",(0,i.jsx)(n.code,{children:"Inserted"}),"), updating an existing value (",(0,i.jsx)(n.code,{children:"Updated"}),"), and removing a key-value pair (",(0,i.jsx)(n.code,{children:"Removed"}),"):"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-rust",metastring:'title="File: src/lib.rs"',children:"use calimero_sdk::app;\n\n#[app::event]\npub enum Event<'a> {\n Inserted { key: &'a str, value: &'a str },\n Updated { key: &'a str, value: &'a str },\n Removed { key: &'a str },\n}\n"})}),"\n",(0,i.jsx)(n.p,{children:"Each event variant can carry additional data to provide context about the event."}),"\n",(0,i.jsx)(n.p,{children:"Now, you need to associate the event with the application logic by annotating the application state."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-rust",metastring:'title="File: src/lib.rs"',children:"#[app::state(emits = for<'a> Event<'a>)]\n#[derive(Default, BorshSerialize, BorshDeserialize)]\nstruct KvStore {\n // Snip...\n}\n"})}),"\n",(0,i.jsxs)(n.p,{children:["And finally, within your application logic methods, emit events using the ",(0,i.jsx)(n.code,{children:"app::emit!"})," macro:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-rust",metastring:'title="File: src/lib.rs"',children:"use std::collections::hash_map::Entry;\n\npub fn set(&mut self, key: String, value: String) {\n match self.items.entry(key) {\n Entry::Occupied(mut entry) => {\n app::emit!(Event::Updated {\n key: entry.key(),\n value: &value,\n });\n entry.insert(value);\n }\n Entry::Vacant(entry) => {\n app::emit!(Event::Inserted {\n key: entry.key(),\n value: &value,\n });\n entry.insert(value);\n }\n }\n}\n\npub fn remove(&mut self, key: &str) -> Result {\n app::emit!(Event::Removed { key });\n\n self.entries.remove(key).ok_or_else(|| Error::NotFound(key))\n}\n"})}),"\n",(0,i.jsx)(n.p,{children:"In each method, we emit the corresponding event with relevant data. This allows external observers to react to these events and take appropriate actions."}),"\n",(0,i.jsx)(n.p,{children:"By emitting events, you can ensure connected clients receive real-time updates about state transitions within your Calimero application, enabling them to respond to changes as they occur."}),"\n",(0,i.jsx)(n.h3,{id:"ensuring-atomicity-and-event-reliability-in-calimero-applications",children:"Ensuring Atomicity and Event Reliability in Calimero Applications"}),"\n",(0,i.jsx)(n.p,{children:"In Calimero applications, ensuring atomicity of state changes and reliability of event emission is crucial for maintaining data consistency and facilitating reliable communication between actors. Here's how atomicity and event reliability are enforced:"}),"\n",(0,i.jsx)(n.h4,{id:"atomic-state-changes",children:"Atomic State Changes"}),"\n",(0,i.jsxs)(n.p,{children:["When a method call fails, whether due to panics or returning an ",(0,i.jsx)(n.code,{children:"Err"}),", all state changes made up to that point are discarded. This ensures that if an operation cannot be completed successfully, the application's state remains consistent and unaffected by partial updates. By enforcing atomicity, Calimero promotes data integrity and prevents inconsistencies that may arise from incomplete transactions."]}),"\n",(0,i.jsx)(n.h4,{id:"reliable-event-emission",children:"Reliable Event Emission"}),"\n",(0,i.jsx)(n.p,{children:"Similarly, event emission in Calimero applications is tied to the successful execution of transactions. Events are only relayed when a transaction has been successfully executed, ensuring that external observers receive updates about state changes reliably. By linking event emission to transaction execution, Calimero guarantees that event notifications accurately reflect the application's current state, enhancing the reliability and consistency of communication between actors."}),"\n",(0,i.jsx)(n.p,{children:"This also means it doesn't matter if the event emission is done before or after the state change, as the event will only be emitted if the state change is successful."}),"\n",(0,i.jsx)(n.p,{children:"By adhering to these principles of atomicity and event reliability, Calimero applications maintain data integrity and enable robust interaction between different components, facilitating the development of secure and dependable decentralized systems."}),"\n",(0,i.jsx)(n.h3,{id:"local-first-efficiency-no-network-overhead-for-read-only-calls",children:"Local-First Efficiency: No Network Overhead for Read-Only Calls"}),"\n",(0,i.jsx)(n.p,{children:"In Calimero, adherence to the local-first principle eliminates the need for network communication in read-only calls. Since read-only operations don't modify the state, there's no associated network overhead. This local-first approach streamlines data access, promoting efficient and responsive application performance without unnecessary network activity."}),"\n",(0,i.jsx)(n.h3,{id:"conclusion",children:"Conclusion"}),"\n",(0,i.jsx)(n.p,{children:"You've now learned how to set up a Rust project using the Calimero SDK, write a simple application, build it into Wasm, and prepare it for deployment. Experiment with different features and functionalities to create powerful and secure applications with Calimero."}),"\n",(0,i.jsx)(n.p,{children:"Happy coding! \ud83d\ude80"})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},5710:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>a});var i=t(758);const r={},s=i.createContext(r);function o(e){const n=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),i.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/37e9fbd6.299cdd55.js b/assets/js/37e9fbd6.299cdd55.js new file mode 100644 index 00000000..8638d9a1 --- /dev/null +++ b/assets/js/37e9fbd6.299cdd55.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[193],{3591:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>s,metadata:()=>a,toc:()=>c});var t=r(6070),o=r(5710);const s={id:"learning",title:"Learning"},i="Learning",a={id:"resources/learning",title:"Learning",description:"Expand your knowledge and stay informed by exploring the following resources:",source:"@site/docs/05-resources/02-learning.mdx",sourceDirName:"05-resources",slug:"/resources/learning",permalink:"/resources/learning",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1718189423e3,sidebarPosition:2,frontMatter:{id:"learning",title:"Learning"},sidebar:"tutorialSidebar",previous:{title:"Community and Support",permalink:"/resources/community-and-support"}},l={},c=[{value:"Learn More",id:"learn-more",level:2}];function u(e){const n={a:"a",h1:"h1",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"learning",children:"Learning"}),"\n",(0,t.jsx)(n.p,{children:"Expand your knowledge and stay informed by exploring the following resources:"}),"\n",(0,t.jsx)(n.h2,{id:"learn-more",children:"Learn More"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Website:"})," Visit our ",(0,t.jsx)(n.a,{href:"https://www.calimero.network/",children:"website"})," for comprehensive information about the project, including features and documentation."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Blog:"})," Check out our ",(0,t.jsx)(n.a,{href:"https://www.calimero.network/blogs",children:"blog"})," for insightful articles, tutorials, and the latest news about our project."]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:"We provide a variety of resources to help you learn more about our project and stay up-to-date with the latest developments. Dive into our documentation, read our blog, and explore our website to get the most out of our project."})]})}function d(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(u,{...e})}):u(e)}},5710:(e,n,r)=>{r.d(n,{R:()=>i,x:()=>a});var t=r(758);const o={},s=t.createContext(o);function i(e){const n=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),t.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/42b3b6e0.d4c4c11e.js b/assets/js/42b3b6e0.d4c4c11e.js new file mode 100644 index 00000000..459ebe6d --- /dev/null +++ b/assets/js/42b3b6e0.d4c4c11e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[391],{9442:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>c,contentTitle:()=>s,default:()=>u,frontMatter:()=>r,metadata:()=>a,toc:()=>d});var n=o(6070),i=o(5710);const r={id:"intro",title:"Introduction"},s=void 0,a={id:"explore/intro",title:"Introduction",description:"Welcome to Our Project Documentation",source:"@site/docs/01-explore/01-intro.mdx",sourceDirName:"01-explore",slug:"/explore/intro",permalink:"/explore/intro",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1718189423e3,sidebarPosition:1,frontMatter:{id:"intro",title:"Introduction"},sidebar:"tutorialSidebar",next:{title:"Getting started",permalink:"/explore/developers-quickstart/getting-started"}},c={},d=[{value:"Welcome to Our Project Documentation",id:"welcome-to-our-project-documentation",level:2},{value:"Explore",id:"explore",level:3},{value:"Learn",id:"learn",level:3},{value:"Build",id:"build",level:3},{value:"Contribute",id:"contribute",level:3},{value:"Resources",id:"resources",level:3},{value:"Next steps",id:"next-steps",level:3}];function l(e){const t={h2:"h2",h3:"h3",p:"p",...(0,i.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h2,{id:"welcome-to-our-project-documentation",children:"Welcome to Our Project Documentation"}),"\n",(0,n.jsx)(t.p,{children:"Welcome to our comprehensive documentation.\nHere, you'll find all the resources and guidance needed to understand and engage with our technology. Whether you are new to privacy technology or looking to deepen your existing knowledge, this documentation is structured to assist you every step of the way."}),"\n",(0,n.jsx)(t.p,{children:"Our documentation is divided into several key sections, each designed to provide you with detailed insights and practical tools:"}),"\n",(0,n.jsx)(t.h3,{id:"explore",children:"Explore"}),"\n",(0,n.jsx)(t.p,{children:"Explore is your starting point for smoothly moving between our documentation sections. Here, you'll get a quick overview of what each part covers. Dive into our Manifesto to understand our key beliefs. Then, jump into the Developers Quickstart for simple steps to get hands-on with our product if you prefer to dive into example first."}),"\n",(0,n.jsx)(t.h3,{id:"learn",children:"Learn"}),"\n",(0,n.jsx)(t.p,{children:"This section is your gateway to understanding our technology and foundational privacy principles. It provides a structured approach to learning, from system architecture and essential terminology to in-depth exploration of both basic and complex privacy concepts. It also addresses the limitations of our technology, ensuring you have a comprehensive understanding."}),"\n",(0,n.jsx)(t.h3,{id:"build",children:"Build"}),"\n",(0,n.jsx)(t.p,{children:'The "Build" section equips you with the necessary tools and documentation to start creating applications using our technology. It features a quickstart guide for immediate setup, detailed descriptions of our SDKs for Rust and TypeScript, and insights into our protocol, catering to developers at all skill levels.'}),"\n",(0,n.jsx)(t.h3,{id:"contribute",children:"Contribute"}),"\n",(0,n.jsx)(t.p,{children:'In the "Contribute" section, we invite you to actively participate in the development and improvement of our project. It provides detailed instructions on how to use GitHub for contributions, including environment setup, submission of changes, and community guidelines. Information on hackathons and available bounties is also included to engage with our community further.'}),"\n",(0,n.jsx)(t.h3,{id:"resources",children:"Resources"}),"\n",(0,n.jsx)(t.p,{children:'Our "Resources" section serves as a comprehensive directory of additional materials, including detailed documentation, community forums, and external readings. It is designed to support your ongoing learning and application of our technology.'}),"\n",(0,n.jsx)(t.h3,{id:"next-steps",children:"Next steps"}),"\n",(0,n.jsx)(t.p,{children:"Ready to embark on this journey? Welcome to Calimero Network!"})]})}function u(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(l,{...e})}):l(e)}},5710:(e,t,o)=>{o.d(t,{R:()=>s,x:()=>a});var n=o(758);const i={},r=n.createContext(i);function s(e){const t=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),n.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/47adee10.1a8fa6c9.js b/assets/js/47adee10.1a8fa6c9.js new file mode 100644 index 00000000..93a49456 --- /dev/null +++ b/assets/js/47adee10.1a8fa6c9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[806],{3015:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>i,default:()=>l,frontMatter:()=>r,metadata:()=>a,toc:()=>c});var o=n(6070),s=n(5710);const r={id:"community-and-support",title:"Community and Support"},i="Community and Support",a={id:"resources/community-and-support",title:"Community and Support",description:"We value our community and are here to support you. Here are the best ways to get in touch and find help:",source:"@site/docs/05-resources/01-community-and-support.mdx",sourceDirName:"05-resources",slug:"/resources/community-and-support",permalink:"/resources/community-and-support",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1718189423e3,sidebarPosition:1,frontMatter:{id:"community-and-support",title:"Community and Support"},sidebar:"tutorialSidebar",previous:{title:"Bounty Program",permalink:"/contribute/bounty-program"},next:{title:"Learning",permalink:"/resources/learning"}},u={},c=[{value:"GitHub",id:"github",level:2},{value:"Discord",id:"discord",level:2},{value:"Social Media",id:"social-media",level:2}];function d(e){const t={a:"a",h1:"h1",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.h1,{id:"community-and-support",children:"Community and Support"}),"\n",(0,o.jsx)(t.p,{children:"We value our community and are here to support you. Here are the best ways to get in touch and find help:"}),"\n",(0,o.jsx)(t.h2,{id:"github",children:"GitHub"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"Issues:"})," For development-related queries, bug reports, and feature requests, please use our ",(0,o.jsx)(t.a,{href:"https://github.com/calimero-network/core/issues",children:"GitHub Issues"}),"."]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"Discussions:"})," For more extensive discussions on various topics, join our ",(0,o.jsx)(t.a,{href:"https://github.com/orgs/calimero-network/discussions",children:"GitHub Discussions"}),"."]}),"\n"]}),"\n",(0,o.jsx)(t.h2,{id:"discord",children:"Discord"}),"\n",(0,o.jsxs)(t.p,{children:["For news, casual conversations, and random questions, join our ",(0,o.jsx)(t.a,{href:"https://discord.gg/jxAeJd2E",children:"Discord Server"}),". It\u2019s a great place to connect with other contributors, share ideas, and stay informed about the latest updates."]}),"\n",(0,o.jsx)(t.h2,{id:"social-media",children:"Social Media"}),"\n",(0,o.jsx)(t.p,{children:"Stay connected and get the latest news and updates by following us on social media:"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"LinkedIn:"})," Follow us on ",(0,o.jsx)(t.a,{href:"https://www.linkedin.com/company/calimero-network/",children:"LinkedIn"})," for professional updates and networking opportunities."]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"Twitter:"})," Stay up-to-date with our latest tweets by following us on ",(0,o.jsx)(t.a,{href:"https://twitter.com/CalimeroNetwork",children:"Twitter"}),"."]}),"\n"]}),"\n",(0,o.jsx)(t.p,{children:"Thank you for being a part of the Calimero community. Your contributions and engagement help us grow and improve!"})]})}function l(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},5710:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>a});var o=n(758);const s={},r=o.createContext(s);function i(e){const t=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),o.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/514a65da.04d63d3f.js b/assets/js/514a65da.04d63d3f.js new file mode 100644 index 00000000..bd2457b1 --- /dev/null +++ b/assets/js/514a65da.04d63d3f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[182],{9830:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>r,default:()=>p,frontMatter:()=>i,metadata:()=>o,toc:()=>l});var s=n(6070),a=n(5710);const i={id:"storage",title:"Storage"},r=void 0,o={id:"learn/core-concepts/node/storage",title:"Storage",description:"The storage component in the Calimero Network is essential for managing and maintaining the data generated and utilized by decentralized applications (DApps). It ensures data integrity, security, and efficient access, enabling seamless operation of applications within the network.",source:"@site/docs/02-learn/03-core-concepts/02-node/04-storage.mdx",sourceDirName:"02-learn/03-core-concepts/02-node",slug:"/learn/core-concepts/node/storage",permalink:"/learn/core-concepts/node/storage",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1718189423e3,sidebarPosition:4,frontMatter:{id:"storage",title:"Storage"},sidebar:"tutorialSidebar",previous:{title:"Server",permalink:"/learn/core-concepts/node/server"},next:{title:"Network",permalink:"/learn/core-concepts/node/network"}},c={},l=[{value:"Core Capabilities",id:"core-capabilities",level:3}];function d(e){const t={h3:"h3",li:"li",p:"p",strong:"strong",ul:"ul",...(0,a.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.p,{children:"The storage component in the Calimero Network is essential for managing and maintaining the data generated and utilized by decentralized applications (DApps). It ensures data integrity, security, and efficient access, enabling seamless operation of applications within the network."}),"\n",(0,s.jsx)(t.h3,{id:"core-capabilities",children:"Core Capabilities"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Generic Storage Interface"}),": Calimero provides a flexible storage interface that allows app developers to choose their preferred database. By default, Calimero uses RocksDB, but it can also support LevelDB, Sled, TigerBeetle, SQLite, or even cloud storage solutions like S3."]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Context State Storage"}),": The context state is backed by a Patricia-Trie structure flattened into the key-value map of the datastore. This structure ensures efficient state management and retrieval."]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Data Blobs"}),": The storage system handles non-state-transitional, encrypted blobs of data, similar to BitTorrent or IPFS. Nodes can lazily share these data blobs without needing centralized storage, ensuring efficient and secure data distribution across the network. By default, the blobstore is the local filesystem, but it can be configured to use any cloud storage option or content-addressed storage like IPFS."]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Data Encryption"}),": All data stored within the network is encrypted at rest, ensuring that sensitive information remains protected. This includes both state-transitional data and non-state-transitional data like attached files in DMs or collaborative document assets."]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Efficient Data Operations"}),": The storage component is optimized for quick data operations, ensuring that applications can access, retrieve, and update the data they need promptly. Caching mechanisms are employed to further improve data access speeds."]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Garbage Collection"}),": The system includes mechanisms for garbage collection using reference counting for trie data, allowing for the cleanup of obsolete or redundant data. This helps in maintaining optimal storage performance and resource utilization."]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Metrics and Monitoring"}),": The storage component provides detailed metrics on storage usage, including total usage and breakdowns by context. This allows for effective monitoring and management of storage resources."]}),"\n"]}),"\n"]})]})}function p(e={}){const{wrapper:t}={...(0,a.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},5710:(e,t,n)=>{n.d(t,{R:()=>r,x:()=>o});var s=n(758);const a={},i=s.createContext(a);function r(e){const t=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:r(e.components),s.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/5b892390.408a97df.js b/assets/js/5b892390.408a97df.js new file mode 100644 index 00000000..60f8707c --- /dev/null +++ b/assets/js/5b892390.408a97df.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[725],{5635:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>p,frontMatter:()=>a,metadata:()=>o,toc:()=>l});var i=t(6070),s=t(5710);const a={id:"runtime",title:"Runtime"},r=void 0,o={id:"learn/core-concepts/node/runtime",title:"Runtime",description:"The runtime environment in the Calimero Network is essential for executing decentralized applications (DApps). It acts as a bridge between the application logic, the network, and storage layers, ensuring seamless operation and integration. The runtime ensures secure, isolated, and efficient execution of applications by managing resources effectively, supporting real-time event handling, enabling scalability, and providing robust storage and transaction management.",source:"@site/docs/02-learn/03-core-concepts/02-node/02-runtime.mdx",sourceDirName:"02-learn/03-core-concepts/02-node",slug:"/learn/core-concepts/node/runtime",permalink:"/learn/core-concepts/node/runtime",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1718189423e3,sidebarPosition:2,frontMatter:{id:"runtime",title:"Runtime"},sidebar:"tutorialSidebar",previous:{title:"Client Node",permalink:"/learn/core-concepts/node/client-node"},next:{title:"Server",permalink:"/learn/core-concepts/node/server"}},c={},l=[{value:"Core Capabilities",id:"core-capabilities",level:3}];function d(e){const n={h3:"h3",li:"li",p:"p",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.p,{children:"The runtime environment in the Calimero Network is essential for executing decentralized applications (DApps). It acts as a bridge between the application logic, the network, and storage layers, ensuring seamless operation and integration. The runtime ensures secure, isolated, and efficient execution of applications by managing resources effectively, supporting real-time event handling, enabling scalability, and providing robust storage and transaction management."}),"\n",(0,i.jsx)(n.h3,{id:"core-capabilities",children:"Core Capabilities"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Security and Isolation"}),": The runtime provides a secure execution environment for Calimero applications using WebAssembly (WASM). Each application is sandboxed in the WASM VM, ensuring proper isolation and preventing interference between applications. This setup also ensures that applications cannot access unauthorized resources, maintaining a secure environment."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Multi-Application Support"}),": The runtime allows multiple applications to run concurrently on the same node and supports multiple instances (contexts) of the same application, each with its own state. This capability enhances the flexibility and scalability of the network."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Scoped Storage"}),": The runtime manages storage by partitioning it and governing where each context stores its state. These implementation details are abstracted from the app developer, ensuring that storage management is handled seamlessly and securely."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Atomic Transactions"}),": The runtime guarantees atomic transactions, ensuring that if a transaction fails, it is completely rolled back with no state updates or side effects detected. This guarantees consistency and reliability in the application's state and any connected clients."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Log Collection and Relaying Events"}),": The runtime facilitates log collection and relays events emitted by the applications to connected clients, enabling real-time monitoring and interaction."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Resource Management"}),": The runtime defines resource limits for applications to ensure fair usage and prevent malicious behavior. This includes limiting CPU, memory, and network usage to prevent any single application from monopolizing system resources or compromising the host system."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Task Management and Performance"}),": The runtime keeps track of WASM instances up to a defined threshold, effortlessly queueing transactions to reuse live instances and shutting down stale ones to reclaim system resources. These optimizations ensure efficient resource utilization and improved performance."]}),"\n"]}),"\n"]})]})}function p(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},5710:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>o});var i=t(758);const s={},a=i.createContext(s);function r(e){const n=i.useContext(a);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),i.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/5bb4bac1.04d46c8e.js b/assets/js/5bb4bac1.04d46c8e.js new file mode 100644 index 00000000..150de4b6 --- /dev/null +++ b/assets/js/5bb4bac1.04d46c8e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[331],{2374:(t,e,o)=>{o.r(e),o.d(e,{assets:()=>c,contentTitle:()=>s,default:()=>h,frontMatter:()=>n,metadata:()=>u,toc:()=>l});var i=o(6070),r=o(5710);const n={id:"github",title:"Github"},s=void 0,u={id:"contribute/github",title:"Github",description:"All work on Calimero happens directly on GitHub. Both core team members and external contributors send pull requests which go through the same review process.",source:"@site/docs/04-contribute/01-github.mdx",sourceDirName:"04-contribute",slug:"/contribute/github",permalink:"/contribute/github",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1718189423e3,sidebarPosition:1,frontMatter:{id:"github",title:"Github"},sidebar:"tutorialSidebar",previous:{title:"Publish App",permalink:"/build/publish-app"},next:{title:"Hackathons",permalink:"/contribute/hackathons"}},c={},l=[{value:"How to Contribute",id:"how-to-contribute",level:2},{value:"Additional Ways to Contribute",id:"additional-ways-to-contribute",level:2}];function a(t){const e={a:"a",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...t.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(e.p,{children:"All work on Calimero happens directly on GitHub. Both core team members and external contributors send pull requests which go through the same review process."}),"\n",(0,i.jsx)(e.h2,{id:"how-to-contribute",children:"How to Contribute"}),"\n",(0,i.jsxs)(e.p,{children:["We appreciate your interest in contributing to our project! To get started with contributing, please follow the instructions outlined in our ",(0,i.jsx)(e.a,{href:"https://github.com/calimero-network/core/blob/master/CONTRIBUTING.md",children:"CONTRIBUTING"})," file."]}),"\n",(0,i.jsx)(e.h2,{id:"additional-ways-to-contribute",children:"Additional Ways to Contribute"}),"\n",(0,i.jsxs)(e.ul,{children:["\n",(0,i.jsxs)(e.li,{children:[(0,i.jsx)(e.strong,{children:"Show Your Support:"})," If you find this project helpful, please star it on GitHub. Your stars help the project grow and reach more developers like you."]}),"\n",(0,i.jsxs)(e.li,{children:[(0,i.jsx)(e.strong,{children:"Spread the Word:"})," Share the project with your friends and colleagues who might be interested in contributing or using it."]}),"\n",(0,i.jsxs)(e.li,{children:[(0,i.jsx)(e.strong,{children:"Join Discussions:"})," Participate in discussions on GitHub ",(0,i.jsx)(e.a,{href:"https://github.com/calimero-network/core/issues",children:"Issues"})," or ",(0,i.jsx)(e.a,{href:"https://github.com/orgs/calimero-network/discussions",children:"Discussions"})," to share your ideas and provide feedback."]}),"\n",(0,i.jsxs)(e.li,{children:[(0,i.jsx)(e.strong,{children:"Write Tutorials or Blog Posts:"})," Create tutorials or blog posts about how to use the project or your experience contributing to it."]}),"\n"]})]})}function h(t={}){const{wrapper:e}={...(0,r.R)(),...t.components};return e?(0,i.jsx)(e,{...t,children:(0,i.jsx)(a,{...t})}):a(t)}},5710:(t,e,o)=>{o.d(e,{R:()=>s,x:()=>u});var i=o(758);const r={},n=i.createContext(r);function s(t){const e=i.useContext(n);return i.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function u(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(r):t.components||r:s(t.components),i.createElement(n.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/5e95c892.8725aa23.js b/assets/js/5e95c892.8725aa23.js new file mode 100644 index 00000000..b85db14e --- /dev/null +++ b/assets/js/5e95c892.8725aa23.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[647],{2416:(e,s,r)=>{r.r(s),r.d(s,{default:()=>l});r(758);var c=r(3526),u=r(3896),a=r(2702),d=r(1977),n=r(3086),t=r(6070);function l(e){return(0,t.jsx)(u.e3,{className:(0,c.A)(a.G.wrapper.docsPages),children:(0,t.jsx)(n.A,{children:(0,d.v)(e.route.routes)})})}}}]); \ No newline at end of file diff --git a/assets/js/604.7785a151.js b/assets/js/604.7785a151.js new file mode 100644 index 00000000..cd735a65 --- /dev/null +++ b/assets/js/604.7785a151.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[604],{1906:(e,t,n)=>{n.d(t,{A:()=>a});n(758);var i=n(3526),o=n(7706),s=n(9663),r=n(6070);function a(e){let{className:t}=e;return(0,r.jsx)("main",{className:(0,i.A)("container margin-vert--xl",t),children:(0,r.jsx)("div",{className:"row",children:(0,r.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,r.jsx)(s.A,{as:"h1",className:"hero__title",children:(0,r.jsx)(o.A,{id:"theme.NotFound.title",description:"The title of the 404 page",children:"Page Not Found"})}),(0,r.jsx)("p",{children:(0,r.jsx)(o.A,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page",children:"We could not find what you were looking for."})}),(0,r.jsx)("p",{children:(0,r.jsx)(o.A,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page",children:"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."})})]})})})}},3604:(e,t,n)=>{n.r(t),n.d(t,{default:()=>d});n(758);var i=n(7706),o=n(3896),s=n(3086),r=n(1906),a=n(6070);function d(){const e=(0,i.T)({id:"theme.NotFound.title",message:"Page Not Found"});return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(o.be,{title:e}),(0,a.jsx)(s.A,{children:(0,a.jsx)(r.A,{})})]})}}}]); \ No newline at end of file diff --git a/assets/js/64bee9bd.249dfa36.js b/assets/js/64bee9bd.249dfa36.js new file mode 100644 index 00000000..5545f3ee --- /dev/null +++ b/assets/js/64bee9bd.249dfa36.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[74],{9864:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>h,frontMatter:()=>s,metadata:()=>o,toc:()=>l});var t=i(6070),r=i(5710);const s={id:"encryption",title:"Encryption"},a=void 0,o={id:"learn/advanced-concepts/encryption",title:"Encryption",description:"Encryption in Calimero ensures data security in transit over the network, maintaining confidentiality and integrity.",source:"@site/docs/02-learn/04-advanced-concepts/02-encryption.mdx",sourceDirName:"02-learn/04-advanced-concepts",slug:"/learn/advanced-concepts/encryption",permalink:"/learn/advanced-concepts/encryption",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1718189423e3,sidebarPosition:2,frontMatter:{id:"encryption",title:"Encryption"},sidebar:"tutorialSidebar",previous:{title:"Specialized Nodes",permalink:"/learn/advanced-concepts/specialized-nodes"},next:{title:"Quickstart",permalink:"/build/quickstart"}},c={},l=[{value:"Key Principles",id:"key-principles",level:3},{value:"Double Ratchet Algorithm",id:"double-ratchet-algorithm",level:3},{value:"Tree-Based Diffie-Hellman Key Exchange",id:"tree-based-diffie-hellman-key-exchange",level:3}];function d(e){const n={h3:"h3",li:"li",ol:"ol",p:"p",strong:"strong",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.p,{children:"Encryption in Calimero ensures data security in transit over the network, maintaining confidentiality and integrity."}),"\n",(0,t.jsx)(n.h3,{id:"key-principles",children:"Key Principles"}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Forward Secrecy"}),": Ensuring past messages remain secure even if a key is compromised in the future."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Post-Compromise Security"}),": Ensuring future messages remain secure even after any previous message has been compromised."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Zero Trust in Third Parties"}),": No reliance on intermediaries for security."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Verifiable End-to-End Encryption"}),": Confirming that only the intended recipients can read the messages."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Asynchronous Communication"}),": Ability to start communications without recipients being online."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Multi-Device Support"}),": Ensuring seamless use across multiple devices."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Deniability"}),": Providing plausible deniability for message authorship to non-context members."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Non-Interactive Group Management"}),": Adding and removing context members without requiring interaction."]}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"double-ratchet-algorithm",children:"Double Ratchet Algorithm"}),"\n",(0,t.jsx)(n.p,{children:"Each network message uses a distinct encryption key derived from the ratchet state, providing forward secrecy by ensuring that the compromise of one key does not affect the security of previous messages."}),"\n",(0,t.jsx)(n.p,{children:"Each context can configure Diffie-Hellman reset parameters. For one-on-one peer interactions, resets can occur instantaneously, while for larger groups, resets can happen at non-deterministic intervals to balance security and performance."}),"\n",(0,t.jsx)(n.h3,{id:"tree-based-diffie-hellman-key-exchange",children:"Tree-Based Diffie-Hellman Key Exchange"}),"\n",(0,t.jsx)(n.p,{children:"All contexts use a tree-based Diffie-Hellman key exchange. This method efficiently manages shared secrets among multiple members, ensuring that keys are updated and propagated correctly. The reset of keys occurs at the leaf nodes of the tree, guaranteeing post-compromise security."}),"\n",(0,t.jsx)(n.p,{children:"Adding a new member involves existing members using their prekeys to complete an X3DH (Triple Diffie-Hellman) exchange, securely adding the new member without requiring direct interaction. Removing a member involves invalidating their keys and updating the shared secrets among remaining members, ensuring efficient and secure updates."}),"\n",(0,t.jsx)(n.p,{children:"By leveraging advanced encryption techniques such as the Double Ratchet Algorithm and tree-based Diffie-Hellman key exchange, Calimero ensures that all data in transit is protected, maintaining the confidentiality and integrity of network messages."})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},5710:(e,n,i)=>{i.d(n,{R:()=>a,x:()=>o});var t=i(758);const r={},s=t.createContext(r);function a(e){const n=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),t.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/66902dc0.44764588.js b/assets/js/66902dc0.44764588.js new file mode 100644 index 00000000..13287c6a --- /dev/null +++ b/assets/js/66902dc0.44764588.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[811],{3259:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>s,default:()=>d,frontMatter:()=>i,metadata:()=>a,toc:()=>l});var o=t(6070),r=t(5710);const i={id:"bounty-program",title:"Bounty Program"},s="Bounty Program",a={id:"contribute/bounty-program",title:"Bounty Program",description:"We're excited to announce that Calimero will soon be launching a bounty program! This program is designed to reward contributors who help us tackle various issues and enhance our project.",source:"@site/docs/04-contribute/03-bounty-program.mdx",sourceDirName:"04-contribute",slug:"/contribute/bounty-program",permalink:"/contribute/bounty-program",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1718189423e3,sidebarPosition:3,frontMatter:{id:"bounty-program",title:"Bounty Program"},sidebar:"tutorialSidebar",previous:{title:"Hackathons",permalink:"/contribute/hackathons"},next:{title:"Community and Support",permalink:"/resources/community-and-support"}},u={},l=[{value:"What is a Bounty Program?",id:"what-is-a-bounty-program",level:2},{value:"How it Works",id:"how-it-works",level:2},{value:"Exceptional Contributions",id:"exceptional-contributions",level:3},{value:"Stay Tuned",id:"stay-tuned",level:2}];function c(e){const n={a:"a",h1:"h1",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",strong:"strong",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.h1,{id:"bounty-program",children:"Bounty Program"}),"\n",(0,o.jsx)(n.p,{children:"We're excited to announce that Calimero will soon be launching a bounty program! This program is designed to reward contributors who help us tackle various issues and enhance our project."}),"\n",(0,o.jsx)(n.h2,{id:"what-is-a-bounty-program",children:"What is a Bounty Program?"}),"\n",(0,o.jsx)(n.p,{children:"A bounty program is an initiative where contributors can earn rewards for completing specific tasks or resolving issues. These tasks can range from fixing bugs to adding new features, improving documentation, or optimizing performance. The rewards can vary and may include monetary compensation, swag, exclusive access to new features, or public recognition."}),"\n",(0,o.jsx)(n.h2,{id:"how-it-works",children:"How it Works"}),"\n",(0,o.jsx)(n.p,{children:"While we are still in the process of finalizing the details of our bounty program, here\u2019s an overview of how it will function:"}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Identify Bounty Issues:"})," We will mark specific ",(0,o.jsx)(n.a,{href:"https://github.com/calimero-network/core/issues",children:"issues"}),' in our repository with a "bounty" label. These issues will be eligible for rewards.']}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Contribute:"})," Choose a bounty-labeled issue that interests you, solve it, and submit a pull request."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Review:"})," Our team will review your contribution. If your solution meets the requirements and quality standards, it will be merged."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Reward:"})," Once the issue is resolved and your contribution is accepted, you will receive a reward. The exact nature of the reward will be specified in the issue description."]}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"exceptional-contributions",children:"Exceptional Contributions"}),"\n",(0,o.jsx)(n.p,{children:"While not all issues may be marked with a bounty label, we recognize that exceptional solutions deserve recognition. If you provide a particularly outstanding solution to an issue not marked as a bounty, we may still decide to reward your contribution."}),"\n",(0,o.jsx)(n.h2,{id:"stay-tuned",children:"Stay Tuned"}),"\n",(0,o.jsx)(n.p,{children:"We are currently refining the details of our bounty program, including the reward system. Follow us on social media and keep an eye on our announcements to be the first to know when the bounty program goes live."}),"\n",(0,o.jsx)(n.p,{children:"Thank you for your patience and continued support. We look forward to collaborating with you and rewarding your valuable contributions!"})]})}function d(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(c,{...e})}):c(e)}},5710:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>a});var o=t(758);const r={},i=o.createContext(r);function s(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/70.d30a02cb.js b/assets/js/70.d30a02cb.js new file mode 100644 index 00000000..abfddb6a --- /dev/null +++ b/assets/js/70.d30a02cb.js @@ -0,0 +1 @@ +(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[70],{5846:(e,t,n)=>{"use strict";n.d(t,{A:()=>y});n(758);var s=n(3526),a=n(2702),o=n(9336),i=n(7706),r=n(8257);const l={tag:"tag_kbZO",tagRegular:"tagRegular_q7Tm",tagWithCount:"tagWithCount_ZwAW"};var c=n(6070);function d(e){let{permalink:t,label:n,count:a,description:o}=e;return(0,c.jsxs)(r.A,{href:t,title:o,className:(0,s.A)(l.tag,a?l.tagWithCount:l.tagRegular),children:[n,a&&(0,c.jsx)("span",{children:a})]})}const u={tags:"tags_KGbB",tag:"tag_c1zK"};function m(e){let{tags:t}=e;return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("b",{children:(0,c.jsx)(i.A,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list",children:"Tags:"})}),(0,c.jsx)("ul",{className:(0,s.A)(u.tags,"padding--none","margin-left--sm"),children:t.map((e=>(0,c.jsx)("li",{className:u.tag,children:(0,c.jsx)(d,{...e})},e.permalink)))})]})}const h={iconEdit:"iconEdit_QUEh"};function f(e){let{className:t,...n}=e;return(0,c.jsx)("svg",{fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,s.A)(h.iconEdit,t),"aria-hidden":"true",...n,children:(0,c.jsx)("g",{children:(0,c.jsx)("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})})})}function p(e){let{editUrl:t}=e;return(0,c.jsxs)(r.A,{to:t,className:a.G.common.editThisPage,children:[(0,c.jsx)(f,{}),(0,c.jsx)(i.A,{id:"theme.common.editThisPage",description:"The link label to edit the current page",children:"Edit this page"})]})}var b=n(8765);function x(e){void 0===e&&(e={});const{i18n:{currentLocale:t}}=(0,b.A)(),n=function(){const{i18n:{currentLocale:e,localeConfigs:t}}=(0,b.A)();return t[e].calendar}();return new Intl.DateTimeFormat(t,{calendar:n,...e})}function g(e){let{lastUpdatedAt:t}=e;const n=new Date(t),s=x({day:"numeric",month:"short",year:"numeric",timeZone:"UTC"}).format(n);return(0,c.jsx)(i.A,{id:"theme.lastUpdated.atDate",description:"The words used to describe on which date a page has been last updated",values:{date:(0,c.jsx)("b",{children:(0,c.jsx)("time",{dateTime:n.toISOString(),itemProp:"dateModified",children:s})})},children:" on {date}"})}function v(e){let{lastUpdatedBy:t}=e;return(0,c.jsx)(i.A,{id:"theme.lastUpdated.byUser",description:"The words used to describe by who the page has been last updated",values:{user:(0,c.jsx)("b",{children:t})},children:" by {user}"})}function j(e){let{lastUpdatedAt:t,lastUpdatedBy:n}=e;return(0,c.jsxs)("span",{className:a.G.common.lastUpdated,children:[(0,c.jsx)(i.A,{id:"theme.lastUpdated.lastUpdatedAtBy",description:"The sentence used to display when a page has been last updated, and by who",values:{atDate:t?(0,c.jsx)(g,{lastUpdatedAt:t}):"",byUser:n?(0,c.jsx)(v,{lastUpdatedBy:n}):""},children:"Last updated{atDate}{byUser}"}),!1]})}const k={lastUpdated:"lastUpdated_EqfD"};function N(e){let{className:t,editUrl:n,lastUpdatedAt:a,lastUpdatedBy:o}=e;return(0,c.jsxs)("div",{className:(0,s.A)("row",t),children:[(0,c.jsx)("div",{className:"col",children:n&&(0,c.jsx)(p,{editUrl:n})}),(0,c.jsx)("div",{className:(0,s.A)("col",k.lastUpdated),children:(a||o)&&(0,c.jsx)(j,{lastUpdatedAt:a,lastUpdatedBy:o})})]})}function y(){const{metadata:e}=(0,o.u)(),{editUrl:t,lastUpdatedAt:n,lastUpdatedBy:i,tags:r}=e,l=r.length>0,d=!!(t||n||i);return l||d?(0,c.jsxs)("footer",{className:(0,s.A)(a.G.docs.docFooter,"docusaurus-mt-lg"),children:[l&&(0,c.jsx)("div",{className:(0,s.A)("row margin-top--sm",a.G.docs.docFooterTagsRow),children:(0,c.jsx)("div",{className:"col",children:(0,c.jsx)(m,{tags:r})})}),d&&(0,c.jsx)(N,{className:(0,s.A)("margin-top--sm",a.G.docs.docFooterEditMetaRow),editUrl:t,lastUpdatedAt:n,lastUpdatedBy:i})]}):null}},9031:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>_t});var s=n(758),a=n(3896),o=n(9336),i=n(6070);function r(){const{metadata:e,frontMatter:t,assets:n}=(0,o.u)();return(0,i.jsx)(a.be,{title:e.title,description:e.description,keywords:t.keywords,image:n.image??t.image})}var l=n(3526),c=n(3104),d=n(7706),u=n(8257);function m(e){const{permalink:t,title:n,subLabel:s,isNext:a}=e;return(0,i.jsxs)(u.A,{className:(0,l.A)("pagination-nav__link",a?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t,children:[s&&(0,i.jsx)("div",{className:"pagination-nav__sublabel",children:s}),(0,i.jsx)("div",{className:"pagination-nav__label",children:n})]})}function h(e){const{previous:t,next:n}=e;return(0,i.jsxs)("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,d.T)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages",description:"The ARIA label for the docs pagination"}),children:[t&&(0,i.jsx)(m,{...t,subLabel:(0,i.jsx)(d.A,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc",children:"Previous"})}),n&&(0,i.jsx)(m,{...n,subLabel:(0,i.jsx)(d.A,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc",children:"Next"}),isNext:!0})]})}function f(){const{metadata:e}=(0,o.u)();return(0,i.jsx)(h,{previous:e.previous,next:e.next})}var p=n(8765),b=n(2907),x=n(2702),g=n(6804),v=n(8051);const j={unreleased:function(e){let{siteTitle:t,versionMetadata:n}=e;return(0,i.jsx)(d.A,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:t,versionLabel:(0,i.jsx)("b",{children:n.label})},children:"This is unreleased documentation for {siteTitle} {versionLabel} version."})},unmaintained:function(e){let{siteTitle:t,versionMetadata:n}=e;return(0,i.jsx)(d.A,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:t,versionLabel:(0,i.jsx)("b",{children:n.label})},children:"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained."})}};function k(e){const t=j[e.versionMetadata.banner];return(0,i.jsx)(t,{...e})}function N(e){let{versionLabel:t,to:n,onClick:s}=e;return(0,i.jsx)(d.A,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:t,latestVersionLink:(0,i.jsx)("b",{children:(0,i.jsx)(u.A,{to:n,onClick:s,children:(0,i.jsx)(d.A,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label",children:"latest version"})})})},children:"For up-to-date documentation, see the {latestVersionLink} ({versionLabel})."})}function y(e){let{className:t,versionMetadata:n}=e;const{siteConfig:{title:s}}=(0,p.A)(),{pluginId:a}=(0,b.vT)({failfast:!0}),{savePreferredVersionName:o}=(0,g.g1)(a),{latestDocSuggestion:r,latestVersionSuggestion:c}=(0,b.HW)(a),d=r??(u=c).docs.find((e=>e.id===u.mainDocId));var u;return(0,i.jsxs)("div",{className:(0,l.A)(t,x.G.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert",children:[(0,i.jsx)("div",{children:(0,i.jsx)(k,{siteTitle:s,versionMetadata:n})}),(0,i.jsx)("div",{className:"margin-top--md",children:(0,i.jsx)(N,{versionLabel:c.label,to:d.path,onClick:()=>o(c.name)})})]})}function C(e){let{className:t}=e;const n=(0,v.r)();return n.banner?(0,i.jsx)(y,{className:t,versionMetadata:n}):null}function w(e){let{className:t}=e;const n=(0,v.r)();return n.badge?(0,i.jsx)("span",{className:(0,l.A)(t,x.G.docs.docVersionBadge,"badge badge--secondary"),children:(0,i.jsx)(d.A,{id:"theme.docs.versionBadge.label",values:{versionLabel:n.label},children:"Version: {versionLabel}"})}):null}var A=n(3494),L=n(1661),E=n(8949);function B(e){const t=e.map((e=>({...e,parentIndex:-1,children:[]}))),n=Array(7).fill(-1);t.forEach(((e,t)=>{const s=n.slice(2,e.level);e.parentIndex=Math.max(...s),n[e.level]=t}));const s=[];return t.forEach((e=>{const{parentIndex:n,...a}=e;n>=0?t[n].children.push(a):s.push(a)})),s}function T(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:s}=e;return t.flatMap((e=>{const t=T({toc:e.children,minHeadingLevel:n,maxHeadingLevel:s});return function(e){return e.level>=n&&e.level<=s}(e)?[{...e,children:t}]:t}))}function S(e){const t=e.getBoundingClientRect();return t.top===t.bottom?S(e.parentNode):t}function _(e,t){let{anchorTopOffset:n}=t;const s=e.find((e=>S(e).top>=n));if(s){return function(e){return e.top>0&&e.bottom{e.current=t?0:document.querySelector(".navbar").clientHeight}),[t]),e}function M(e){const t=(0,s.useRef)(void 0),n=I();(0,s.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:s,linkActiveClassName:a,minHeadingLevel:o,maxHeadingLevel:i}=e;function r(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(s),r=function(e){let{minHeadingLevel:t,maxHeadingLevel:n}=e;const s=[];for(let a=t;a<=n;a+=1)s.push(`h${a}.anchor`);return Array.from(document.querySelectorAll(s.join()))}({minHeadingLevel:o,maxHeadingLevel:i}),l=_(r,{anchorTopOffset:n.current}),c=e.find((e=>l&&l.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,n){n?(t.current&&t.current!==e&&t.current.classList.remove(a),e.classList.add(a),t.current=e):e.classList.remove(a)}(e,e===c)}))}return document.addEventListener("scroll",r),document.addEventListener("resize",r),r(),()=>{document.removeEventListener("scroll",r),document.removeEventListener("resize",r)}}),[e,n])}function R(e){let{toc:t,className:n,linkClassName:s,isChild:a}=e;return t.length?(0,i.jsx)("ul",{className:a?void 0:n,children:t.map((e=>(0,i.jsxs)("li",{children:[(0,i.jsx)(u.A,{to:`#${e.id}`,className:s??void 0,dangerouslySetInnerHTML:{__html:e.value}}),(0,i.jsx)(R,{isChild:!0,toc:e.children,className:n,linkClassName:s})]},e.id)))}):null}const H=s.memo(R);function U(e){let{toc:t,className:n="table-of-contents table-of-contents__left-border",linkClassName:a="table-of-contents__link",linkActiveClassName:o,minHeadingLevel:r,maxHeadingLevel:l,...c}=e;const d=(0,E.p)(),u=r??d.tableOfContents.minHeadingLevel,m=l??d.tableOfContents.maxHeadingLevel,h=function(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:a}=e;return(0,s.useMemo)((()=>T({toc:B(t),minHeadingLevel:n,maxHeadingLevel:a})),[t,n,a])}({toc:t,minHeadingLevel:u,maxHeadingLevel:m});return M((0,s.useMemo)((()=>{if(a&&o)return{linkClassName:a,linkActiveClassName:o,minHeadingLevel:u,maxHeadingLevel:m}}),[a,o,u,m])),(0,i.jsx)(H,{toc:h,className:n,linkClassName:a,...c})}const $={tocCollapsibleButton:"tocCollapsibleButton_M12c",tocCollapsibleButtonExpanded:"tocCollapsibleButtonExpanded_xlzk"};function z(e){let{collapsed:t,...n}=e;return(0,i.jsx)("button",{type:"button",...n,className:(0,l.A)("clean-btn",$.tocCollapsibleButton,!t&&$.tocCollapsibleButtonExpanded,n.className),children:(0,i.jsx)(d.A,{id:"theme.TOCCollapsible.toggleButtonLabel",description:"The label used by the button on the collapsible TOC component",children:"On this page"})})}const O={tocCollapsible:"tocCollapsible_crFy",tocCollapsibleContent:"tocCollapsibleContent_K9Y7",tocCollapsibleExpanded:"tocCollapsibleExpanded_sMYC"};function D(e){let{toc:t,className:n,minHeadingLevel:s,maxHeadingLevel:a}=e;const{collapsed:o,toggleCollapsed:r}=(0,L.u)({initialState:!0});return(0,i.jsxs)("div",{className:(0,l.A)(O.tocCollapsible,!o&&O.tocCollapsibleExpanded,n),children:[(0,i.jsx)(z,{collapsed:o,onClick:r}),(0,i.jsx)(L.N,{lazy:!0,className:O.tocCollapsibleContent,collapsed:o,children:(0,i.jsx)(U,{toc:t,minHeadingLevel:s,maxHeadingLevel:a})})]})}const V={tocMobile:"tocMobile_eZNg"};function F(){const{toc:e,frontMatter:t}=(0,o.u)();return(0,i.jsx)(D,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:(0,l.A)(x.G.docs.docTocMobile,V.tocMobile)})}const G={tableOfContents:"tableOfContents_sWMA",docItemContainer:"docItemContainer__79N"},P="table-of-contents__link toc-highlight",W="table-of-contents__link--active";function q(e){let{className:t,...n}=e;return(0,i.jsx)("div",{className:(0,l.A)(G.tableOfContents,"thin-scrollbar",t),children:(0,i.jsx)(U,{...n,linkClassName:P,linkActiveClassName:W})})}function Z(){const{toc:e,frontMatter:t}=(0,o.u)();return(0,i.jsx)(q,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:x.G.docs.docTocDesktop})}var Y=n(9663),K=n(5710),J=n(5463),Q=n(4272),X=n(1382);function ee(){const{prism:e}=(0,E.p)(),{colorMode:t}=(0,X.G)(),n=e.theme,s=e.darkTheme||n;return"dark"===t?s:n}var te=n(4809),ne=n.n(te);const se=/title=(?["'])(?.*?)\1/,ae=/\{(?<range>[\d,-]+)\}/,oe={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},bash:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}},ie={...oe,lua:{start:"--",end:""},wasm:{start:"\\;\\;",end:""},tex:{start:"%",end:""},vb:{start:"['\u2018\u2019]",end:""},vbnet:{start:"(?:_\\s*)?['\u2018\u2019]",end:""},rem:{start:"[Rr][Ee][Mm]\\b",end:""},f90:{start:"!",end:""},ml:{start:"\\(\\*",end:"\\*\\)"},cobol:{start:"\\*>",end:""}},re=Object.keys(oe);function le(e,t){const n=e.map((e=>{const{start:n,end:s}=ie[e];return`(?:${n}\\s*(${t.flatMap((e=>[e.line,e.block?.start,e.block?.end].filter(Boolean))).join("|")})\\s*${s})`})).join("|");return new RegExp(`^\\s*(?:${n})\\s*$`)}function ce(e,t){let n=e.replace(/\n$/,"");const{language:s,magicComments:a,metastring:o}=t;if(o&&ae.test(o)){const e=o.match(ae).groups.range;if(0===a.length)throw new Error(`A highlight range has been given in code block's metastring (\`\`\` ${o}), but no magic comment config is available. Docusaurus applies the first magic comment entry's className for metastring ranges.`);const t=a[0].className,s=ne()(e).filter((e=>e>0)).map((e=>[e-1,[t]]));return{lineClassNames:Object.fromEntries(s),code:n}}if(void 0===s)return{lineClassNames:{},code:n};const i=function(e,t){switch(e){case"js":case"javascript":case"ts":case"typescript":return le(["js","jsBlock"],t);case"jsx":case"tsx":return le(["js","jsBlock","jsx"],t);case"html":return le(["js","jsBlock","html"],t);case"python":case"py":case"bash":return le(["bash"],t);case"markdown":case"md":return le(["html","jsx","bash"],t);case"tex":case"latex":case"matlab":return le(["tex"],t);case"lua":case"haskell":case"sql":return le(["lua"],t);case"wasm":return le(["wasm"],t);case"vb":case"vba":case"visual-basic":return le(["vb","rem"],t);case"vbnet":return le(["vbnet","rem"],t);case"batch":return le(["rem"],t);case"basic":return le(["rem","f90"],t);case"fsharp":return le(["js","ml"],t);case"ocaml":case"sml":return le(["ml"],t);case"fortran":return le(["f90"],t);case"cobol":return le(["cobol"],t);default:return le(re,t)}}(s,a),r=n.split("\n"),l=Object.fromEntries(a.map((e=>[e.className,{start:0,range:""}]))),c=Object.fromEntries(a.filter((e=>e.line)).map((e=>{let{className:t,line:n}=e;return[n,t]}))),d=Object.fromEntries(a.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.start,t]}))),u=Object.fromEntries(a.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.end,t]})));for(let h=0;h<r.length;){const e=r[h].match(i);if(!e){h+=1;continue}const t=e.slice(1).find((e=>void 0!==e));c[t]?l[c[t]].range+=`${h},`:d[t]?l[d[t]].start=h:u[t]&&(l[u[t]].range+=`${l[u[t]].start}-${h-1},`),r.splice(h,1)}n=r.join("\n");const m={};return Object.entries(l).forEach((e=>{let[t,{range:n}]=e;ne()(n).forEach((e=>{m[e]??=[],m[e].push(t)}))})),{lineClassNames:m,code:n}}const de={codeBlockContainer:"codeBlockContainer_om3b"};function ue(e){let{as:t,...n}=e;const s=function(e){const t={color:"--prism-color",backgroundColor:"--prism-background-color"},n={};return Object.entries(e.plain).forEach((e=>{let[s,a]=e;const o=t[s];o&&"string"==typeof a&&(n[o]=a)})),n}(ee());return(0,i.jsx)(t,{...n,style:s,className:(0,l.A)(n.className,de.codeBlockContainer,x.G.common.codeBlock)})}const me={codeBlockContent:"codeBlockContent_wy8a",codeBlockTitle:"codeBlockTitle_ghPa",codeBlock:"codeBlock_Ml9p",codeBlockStandalone:"codeBlockStandalone_kuj2",codeBlockLines:"codeBlockLines_nvaI",codeBlockLinesWithNumbering:"codeBlockLinesWithNumbering_jeec",buttonGroup:"buttonGroup___rI"};function he(e){let{children:t,className:n}=e;return(0,i.jsx)(ue,{as:"pre",tabIndex:0,className:(0,l.A)(me.codeBlockStandalone,"thin-scrollbar",n),children:(0,i.jsx)("code",{className:me.codeBlockLines,children:t})})}var fe=n(1495);const pe={attributes:!0,characterData:!0,childList:!0,subtree:!0};function be(e,t){const[n,a]=(0,s.useState)(),o=(0,s.useCallback)((()=>{a(e.current?.closest("[role=tabpanel][hidden]"))}),[e,a]);(0,s.useEffect)((()=>{o()}),[o]),function(e,t,n){void 0===n&&(n=pe);const a=(0,fe._q)(t),o=(0,fe.Be)(n);(0,s.useEffect)((()=>{const t=new MutationObserver(a);return e&&t.observe(e,o),()=>t.disconnect()}),[e,a,o])}(n,(e=>{e.forEach((e=>{"attributes"===e.type&&"hidden"===e.attributeName&&(t(),o())}))}),{attributes:!0,characterData:!1,childList:!1,subtree:!1})}var xe=n(3477);const ge={codeLine:"codeLine_rz2B",codeLineNumber:"codeLineNumber_O_eG",codeLineContent:"codeLineContent_GZzm"};function ve(e){let{line:t,classNames:n,showLineNumbers:s,getLineProps:a,getTokenProps:o}=e;1===t.length&&"\n"===t[0].content&&(t[0].content="");const r=a({line:t,className:(0,l.A)(n,s&&ge.codeLine)}),c=t.map(((e,t)=>(0,i.jsx)("span",{...o({token:e})},t)));return(0,i.jsxs)("span",{...r,children:[s?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("span",{className:ge.codeLineNumber}),(0,i.jsx)("span",{className:ge.codeLineContent,children:c})]}):c,(0,i.jsx)("br",{})]})}function je(e){return(0,i.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"})})}function ke(e){return(0,i.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"})})}const Ne={copyButtonCopied:"copyButtonCopied_BLhh",copyButtonIcons:"copyButtonIcons_AOAC",copyButtonIcon:"copyButtonIcon_KQr7",copyButtonSuccessIcon:"copyButtonSuccessIcon_UDIV"};function ye(e){let{code:t,className:n}=e;const[a,o]=(0,s.useState)(!1),r=(0,s.useRef)(void 0),c=(0,s.useCallback)((()=>{!function(e,t){let{target:n=document.body}=void 0===t?{}:t;if("string"!=typeof e)throw new TypeError(`Expected parameter \`text\` to be a \`string\`, got \`${typeof e}\`.`);const s=document.createElement("textarea"),a=document.activeElement;s.value=e,s.setAttribute("readonly",""),s.style.contain="strict",s.style.position="absolute",s.style.left="-9999px",s.style.fontSize="12pt";const o=document.getSelection(),i=o.rangeCount>0&&o.getRangeAt(0);n.append(s),s.select(),s.selectionStart=0,s.selectionEnd=e.length;let r=!1;try{r=document.execCommand("copy")}catch{}s.remove(),i&&(o.removeAllRanges(),o.addRange(i)),a&&a.focus()}(t),o(!0),r.current=window.setTimeout((()=>{o(!1)}),1e3)}),[t]);return(0,s.useEffect)((()=>()=>window.clearTimeout(r.current)),[]),(0,i.jsx)("button",{type:"button","aria-label":a?(0,d.T)({id:"theme.CodeBlock.copied",message:"Copied",description:"The copied button label on code blocks"}):(0,d.T)({id:"theme.CodeBlock.copyButtonAriaLabel",message:"Copy code to clipboard",description:"The ARIA label for copy code blocks button"}),title:(0,d.T)({id:"theme.CodeBlock.copy",message:"Copy",description:"The copy button label on code blocks"}),className:(0,l.A)("clean-btn",n,Ne.copyButton,a&&Ne.copyButtonCopied),onClick:c,children:(0,i.jsxs)("span",{className:Ne.copyButtonIcons,"aria-hidden":"true",children:[(0,i.jsx)(je,{className:Ne.copyButtonIcon}),(0,i.jsx)(ke,{className:Ne.copyButtonSuccessIcon})]})})}function Ce(e){return(0,i.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,i.jsx)("path",{fill:"currentColor",d:"M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"})})}const we={wordWrapButtonIcon:"wordWrapButtonIcon_w6Zv",wordWrapButtonEnabled:"wordWrapButtonEnabled_b9gR"};function Ae(e){let{className:t,onClick:n,isEnabled:s}=e;const a=(0,d.T)({id:"theme.CodeBlock.wordWrapToggle",message:"Toggle word wrap",description:"The title attribute for toggle word wrapping button of code block lines"});return(0,i.jsx)("button",{type:"button",onClick:n,className:(0,l.A)("clean-btn",t,s&&we.wordWrapButtonEnabled),"aria-label":a,title:a,children:(0,i.jsx)(Ce,{className:we.wordWrapButtonIcon,"aria-hidden":"true"})})}function Le(e){let{children:t,className:n="",metastring:a,title:o,showLineNumbers:r,language:c}=e;const{prism:{defaultLanguage:d,magicComments:u}}=(0,E.p)(),m=function(e){return e?.toLowerCase()}(c??function(e){const t=e.split(" ").find((e=>e.startsWith("language-")));return t?.replace(/language-/,"")}(n)??d),h=ee(),f=function(){const[e,t]=(0,s.useState)(!1),[n,a]=(0,s.useState)(!1),o=(0,s.useRef)(null),i=(0,s.useCallback)((()=>{const n=o.current.querySelector("code");e?n.removeAttribute("style"):(n.style.whiteSpace="pre-wrap",n.style.overflowWrap="anywhere"),t((e=>!e))}),[o,e]),r=(0,s.useCallback)((()=>{const{scrollWidth:e,clientWidth:t}=o.current,n=e>t||o.current.querySelector("code").hasAttribute("style");a(n)}),[o]);return be(o,r),(0,s.useEffect)((()=>{r()}),[e,r]),(0,s.useEffect)((()=>(window.addEventListener("resize",r,{passive:!0}),()=>{window.removeEventListener("resize",r)})),[r]),{codeBlockRef:o,isEnabled:e,isCodeScrollable:n,toggle:i}}(),p=function(e){return e?.match(se)?.groups.title??""}(a)||o,{lineClassNames:b,code:x}=ce(t,{metastring:a,language:m,magicComments:u}),g=r??function(e){return Boolean(e?.includes("showLineNumbers"))}(a);return(0,i.jsxs)(ue,{as:"div",className:(0,l.A)(n,m&&!n.includes(`language-${m}`)&&`language-${m}`),children:[p&&(0,i.jsx)("div",{className:me.codeBlockTitle,children:p}),(0,i.jsxs)("div",{className:me.codeBlockContent,children:[(0,i.jsx)(xe.f4,{theme:h,code:x,language:m??"text",children:e=>{let{className:t,style:n,tokens:s,getLineProps:a,getTokenProps:o}=e;return(0,i.jsx)("pre",{tabIndex:0,ref:f.codeBlockRef,className:(0,l.A)(t,me.codeBlock,"thin-scrollbar"),style:n,children:(0,i.jsx)("code",{className:(0,l.A)(me.codeBlockLines,g&&me.codeBlockLinesWithNumbering),children:s.map(((e,t)=>(0,i.jsx)(ve,{line:e,getLineProps:a,getTokenProps:o,classNames:b[t],showLineNumbers:g},t)))})})}}),(0,i.jsxs)("div",{className:me.buttonGroup,children:[(f.isEnabled||f.isCodeScrollable)&&(0,i.jsx)(Ae,{className:me.codeButton,onClick:()=>f.toggle(),isEnabled:f.isEnabled}),(0,i.jsx)(ye,{className:me.codeButton,code:x})]})]})]})}function Ee(e){let{children:t,...n}=e;const a=(0,Q.A)(),o=function(e){return s.Children.toArray(e).some((e=>(0,s.isValidElement)(e)))?e:Array.isArray(e)?e.join(""):e}(t),r="string"==typeof o?Le:he;return(0,i.jsx)(r,{...n,children:o},String(a))}function Be(e){return(0,i.jsx)("code",{...e})}var Te=n(1843);const Se={details:"details_YB2c",isBrowser:"isBrowser_KW2d",collapsibleContent:"collapsibleContent_w384"};function _e(e){return!!e&&("SUMMARY"===e.tagName||_e(e.parentElement))}function Ie(e,t){return!!e&&(e===t||Ie(e.parentElement,t))}function Me(e){let{summary:t,children:n,...a}=e;(0,Te.A)().collectAnchor(a.id);const o=(0,Q.A)(),r=(0,s.useRef)(null),{collapsed:c,setCollapsed:d}=(0,L.u)({initialState:!a.open}),[u,m]=(0,s.useState)(a.open),h=s.isValidElement(t)?t:(0,i.jsx)("summary",{children:t??"Details"});return(0,i.jsxs)("details",{...a,ref:r,open:u,"data-collapsed":c,className:(0,l.A)(Se.details,o&&Se.isBrowser,a.className),onMouseDown:e=>{_e(e.target)&&e.detail>1&&e.preventDefault()},onClick:e=>{e.stopPropagation();const t=e.target;_e(t)&&Ie(t,r.current)&&(e.preventDefault(),c?(d(!1),m(!0)):d(!0))},children:[h,(0,i.jsx)(L.N,{lazy:!1,collapsed:c,disableSSRStyle:!0,onCollapseTransitionEnd:e=>{d(e),m(!e)},children:(0,i.jsx)("div",{className:Se.collapsibleContent,children:n})})]})}const Re={details:"details_FSj2"},He="alert alert--info";function Ue(e){let{...t}=e;return(0,i.jsx)(Me,{...t,className:(0,l.A)(He,Re.details,t.className)})}function $e(e){const t=s.Children.toArray(e.children),n=t.find((e=>s.isValidElement(e)&&"summary"===e.type)),a=(0,i.jsx)(i.Fragment,{children:t.filter((e=>e!==n))});return(0,i.jsx)(Ue,{...e,summary:n,children:a})}function ze(e){return(0,i.jsx)(Y.A,{...e})}const Oe={containsTaskList:"containsTaskList_njjY"};function De(e){if(void 0!==e)return(0,l.A)(e,e?.includes("contains-task-list")&&Oe.containsTaskList)}const Ve={img:"img_Aha3"};function Fe(e){const{mdxAdmonitionTitle:t,rest:n}=function(e){const t=s.Children.toArray(e),n=t.find((e=>s.isValidElement(e)&&"mdxAdmonitionTitle"===e.type)),a=t.filter((e=>e!==n)),o=n?.props.children;return{mdxAdmonitionTitle:o,rest:a.length>0?(0,i.jsx)(i.Fragment,{children:a}):null}}(e.children),a=e.title??t;return{...e,...a&&{title:a},children:n}}const Ge={admonition:"admonition_Xxwy",admonitionHeading:"admonitionHeading_Hz5a",admonitionIcon:"admonitionIcon_u47d",admonitionContent:"admonitionContent_CGmw"};function Pe(e){let{type:t,className:n,children:s}=e;return(0,i.jsx)("div",{className:(0,l.A)(x.G.common.admonition,x.G.common.admonitionType(t),Ge.admonition,n),children:s})}function We(e){let{icon:t,title:n}=e;return(0,i.jsxs)("div",{className:Ge.admonitionHeading,children:[(0,i.jsx)("span",{className:Ge.admonitionIcon,children:t}),n]})}function qe(e){let{children:t}=e;return t?(0,i.jsx)("div",{className:Ge.admonitionContent,children:t}):null}function Ze(e){const{type:t,icon:n,title:s,children:a,className:o}=e;return(0,i.jsxs)(Pe,{type:t,className:o,children:[s||n?(0,i.jsx)(We,{title:s,icon:n}):null,(0,i.jsx)(qe,{children:a})]})}function Ye(e){return(0,i.jsx)("svg",{viewBox:"0 0 14 16",...e,children:(0,i.jsx)("path",{fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"})})}const Ke={icon:(0,i.jsx)(Ye,{}),title:(0,i.jsx)(d.A,{id:"theme.admonition.note",description:"The default label used for the Note admonition (:::note)",children:"note"})};function Je(e){return(0,i.jsx)(Ze,{...Ke,...e,className:(0,l.A)("alert alert--secondary",e.className),children:e.children})}function Qe(e){return(0,i.jsx)("svg",{viewBox:"0 0 12 16",...e,children:(0,i.jsx)("path",{fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"})})}const Xe={icon:(0,i.jsx)(Qe,{}),title:(0,i.jsx)(d.A,{id:"theme.admonition.tip",description:"The default label used for the Tip admonition (:::tip)",children:"tip"})};function et(e){return(0,i.jsx)(Ze,{...Xe,...e,className:(0,l.A)("alert alert--success",e.className),children:e.children})}function tt(e){return(0,i.jsx)("svg",{viewBox:"0 0 14 16",...e,children:(0,i.jsx)("path",{fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"})})}const nt={icon:(0,i.jsx)(tt,{}),title:(0,i.jsx)(d.A,{id:"theme.admonition.info",description:"The default label used for the Info admonition (:::info)",children:"info"})};function st(e){return(0,i.jsx)(Ze,{...nt,...e,className:(0,l.A)("alert alert--info",e.className),children:e.children})}function at(e){return(0,i.jsx)("svg",{viewBox:"0 0 16 16",...e,children:(0,i.jsx)("path",{fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"})})}const ot={icon:(0,i.jsx)(at,{}),title:(0,i.jsx)(d.A,{id:"theme.admonition.warning",description:"The default label used for the Warning admonition (:::warning)",children:"warning"})};function it(e){return(0,i.jsx)("svg",{viewBox:"0 0 12 16",...e,children:(0,i.jsx)("path",{fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"})})}const rt={icon:(0,i.jsx)(it,{}),title:(0,i.jsx)(d.A,{id:"theme.admonition.danger",description:"The default label used for the Danger admonition (:::danger)",children:"danger"})};const lt={icon:(0,i.jsx)(at,{}),title:(0,i.jsx)(d.A,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)",children:"caution"})};const ct={...{note:Je,tip:et,info:st,warning:function(e){return(0,i.jsx)(Ze,{...ot,...e,className:(0,l.A)("alert alert--warning",e.className),children:e.children})},danger:function(e){return(0,i.jsx)(Ze,{...rt,...e,className:(0,l.A)("alert alert--danger",e.className),children:e.children})}},...{secondary:e=>(0,i.jsx)(Je,{title:"secondary",...e}),important:e=>(0,i.jsx)(st,{title:"important",...e}),success:e=>(0,i.jsx)(et,{title:"success",...e}),caution:function(e){return(0,i.jsx)(Ze,{...lt,...e,className:(0,l.A)("alert alert--warning",e.className),children:e.children})}}};function dt(e){const t=Fe(e),n=(s=t.type,ct[s]||(console.warn(`No admonition component found for admonition type "${s}". Using Info as fallback.`),ct.info));var s;return(0,i.jsx)(n,{...t})}var ut=n(8525);const mt={Head:J.A,details:$e,Details:$e,code:function(e){return function(e){return void 0!==e.children&&s.Children.toArray(e.children).every((e=>"string"==typeof e&&!e.includes("\n")))}(e)?(0,i.jsx)(Be,{...e}):(0,i.jsx)(Ee,{...e})},a:function(e){return(0,i.jsx)(u.A,{...e})},pre:function(e){return(0,i.jsx)(i.Fragment,{children:e.children})},ul:function(e){return(0,i.jsx)("ul",{...e,className:De(e.className)})},li:function(e){return(0,Te.A)().collectAnchor(e.id),(0,i.jsx)("li",{...e})},img:function(e){return(0,i.jsx)("img",{decoding:"async",loading:"lazy",...e,className:(t=e.className,(0,l.A)(t,Ve.img))});var t},h1:e=>(0,i.jsx)(ze,{as:"h1",...e}),h2:e=>(0,i.jsx)(ze,{as:"h2",...e}),h3:e=>(0,i.jsx)(ze,{as:"h3",...e}),h4:e=>(0,i.jsx)(ze,{as:"h4",...e}),h5:e=>(0,i.jsx)(ze,{as:"h5",...e}),h6:e=>(0,i.jsx)(ze,{as:"h6",...e}),admonition:dt,mermaid:ut.A};function ht(e){let{children:t}=e;return(0,i.jsx)(K.x,{components:mt,children:t})}function ft(e){let{children:t}=e;const n=function(){const{metadata:e,frontMatter:t,contentTitle:n}=(0,o.u)();return t.hide_title||void 0!==n?null:e.title}();return(0,i.jsxs)("div",{className:(0,l.A)(x.G.docs.docMarkdown,"markdown"),children:[n&&(0,i.jsx)("header",{children:(0,i.jsx)(Y.A,{as:"h1",children:n})}),(0,i.jsx)(ht,{children:t})]})}var pt=n(3766),bt=n(428),xt=n(1958);function gt(e){return(0,i.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,i.jsx)("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z",fill:"currentColor"})})}const vt={breadcrumbHomeIcon:"breadcrumbHomeIcon_jWVc"};function jt(){const e=(0,xt.Ay)("/");return(0,i.jsx)("li",{className:"breadcrumbs__item",children:(0,i.jsx)(u.A,{"aria-label":(0,d.T)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:"breadcrumbs__link",href:e,children:(0,i.jsx)(gt,{className:vt.breadcrumbHomeIcon})})})}const kt={breadcrumbsContainer:"breadcrumbsContainer_SGes"};function Nt(e){let{children:t,href:n,isLast:s}=e;const a="breadcrumbs__link";return s?(0,i.jsx)("span",{className:a,itemProp:"name",children:t}):n?(0,i.jsx)(u.A,{className:a,href:n,itemProp:"item",children:(0,i.jsx)("span",{itemProp:"name",children:t})}):(0,i.jsx)("span",{className:a,children:t})}function yt(e){let{children:t,active:n,index:s,addMicrodata:a}=e;return(0,i.jsxs)("li",{...a&&{itemScope:!0,itemProp:"itemListElement",itemType:"https://schema.org/ListItem"},className:(0,l.A)("breadcrumbs__item",{"breadcrumbs__item--active":n}),children:[t,(0,i.jsx)("meta",{itemProp:"position",content:String(s+1)})]})}function Ct(){const e=(0,pt.OF)(),t=(0,bt.Dt)();return e?(0,i.jsx)("nav",{className:(0,l.A)(x.G.docs.docBreadcrumbs,kt.breadcrumbsContainer),"aria-label":(0,d.T)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"}),children:(0,i.jsxs)("ul",{className:"breadcrumbs",itemScope:!0,itemType:"https://schema.org/BreadcrumbList",children:[t&&(0,i.jsx)(jt,{}),e.map(((t,n)=>{const s=n===e.length-1,a="category"===t.type&&t.linkUnlisted?void 0:t.href;return(0,i.jsx)(yt,{active:s,index:n,addMicrodata:!!a,children:(0,i.jsx)(Nt,{href:a,isLast:s,children:t.label})},n)}))]})}):null}function wt(){return(0,i.jsx)(d.A,{id:"theme.unlistedContent.title",description:"The unlisted content banner title",children:"Unlisted page"})}function At(){return(0,i.jsx)(d.A,{id:"theme.unlistedContent.message",description:"The unlisted content banner message",children:"This page is unlisted. Search engines will not index it, and only users having a direct link can access it."})}function Lt(){return(0,i.jsx)(J.A,{children:(0,i.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})}function Et(e){let{className:t}=e;return(0,i.jsx)(dt,{type:"caution",title:(0,i.jsx)(wt,{}),className:(0,l.A)(t,x.G.common.unlistedBanner),children:(0,i.jsx)(At,{})})}function Bt(e){return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(Lt,{}),(0,i.jsx)(Et,{...e})]})}const Tt={docItemContainer:"docItemContainer_mlrF",docItemCol:"docItemCol_UIRF"};function St(e){let{children:t}=e;const n=function(){const{frontMatter:e,toc:t}=(0,o.u)(),n=(0,c.l)(),s=e.hide_table_of_contents,a=!s&&t.length>0;return{hidden:s,mobile:a?(0,i.jsx)(F,{}):void 0,desktop:!a||"desktop"!==n&&"ssr"!==n?void 0:(0,i.jsx)(Z,{})}}(),{metadata:{unlisted:s}}=(0,o.u)();return(0,i.jsxs)("div",{className:"row",children:[(0,i.jsxs)("div",{className:(0,l.A)("col",!n.hidden&&Tt.docItemCol),children:[s&&(0,i.jsx)(Bt,{}),(0,i.jsx)(C,{}),(0,i.jsxs)("div",{className:Tt.docItemContainer,children:[(0,i.jsxs)("article",{children:[(0,i.jsx)(Ct,{}),(0,i.jsx)(w,{}),n.mobile,(0,i.jsx)(ft,{children:t}),(0,i.jsx)(A.A,{})]}),(0,i.jsx)(f,{})]})]}),n.desktop&&(0,i.jsx)("div",{className:"col col--3",children:n.desktop})]})}function _t(e){const t=`docs-doc-id-${e.content.metadata.id}`,n=e.content;return(0,i.jsx)(o._,{content:e.content,children:(0,i.jsxs)(a.e3,{className:t,children:[(0,i.jsx)(r,{}),(0,i.jsx)(St,{children:(0,i.jsx)(n,{})})]})})}},9336:(e,t,n)=>{"use strict";n.d(t,{_:()=>r,u:()=>l});var s=n(758),a=n(1495),o=n(6070);const i=s.createContext(null);function r(e){let{children:t,content:n}=e;const a=function(e){return(0,s.useMemo)((()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc})),[e])}(n);return(0,o.jsx)(i.Provider,{value:a,children:t})}function l(){const e=(0,s.useContext)(i);if(null===e)throw new a.dV("DocProvider");return e}},4809:(e,t)=>{function n(e){let t,n=[];for(let s of e.split(",").map((e=>e.trim())))if(/^-?\d+$/.test(s))n.push(parseInt(s,10));else if(t=s.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,s,a,o]=t;if(s&&o){s=parseInt(s),o=parseInt(o);const e=s<o?1:-1;"-"!==a&&".."!==a&&"\u2025"!==a||(o+=e);for(let t=s;t!==o;t+=e)n.push(t)}}return n}t.default=n,e.exports=n},2041:(e,t,n)=>{"use strict";n.d(t,{D1:()=>G,MB:()=>P,l6:()=>$,vN:()=>_});var s=n(758),a=n(6070),o=n(8143);function i(e,t){if(!e||"$auto"===e)return t?.toString()||(typeof window<"u"?window.location.href:"/");if("$path"===e){"string"==typeof t&&(t=new URL(t));let e=t||(typeof window<"u"?window.location:void 0);return e?`${e.origin}${e.pathname}`:"/"}return e}var r="fbs-store";function l(e){return"contentId"in e?e.contentId:`${e.contentSetId}/${i(e.key)}`}var c,d,u=class{constructor(e){if(this.feelbacks=void 0,e??="local",typeof window>"u"&&(e="memory"),"local"===e)this.storage=window.localStorage;else if("session"===e)this.storage=window.sessionStorage;else{let e=()=>{};this.storage={getItem:e,setItem:e,removeItem:e,clear:e,key:e,length:0}}this.load()}add(e){let t=l(e.target),n=(this.feelbacks??=[]).findIndex((e=>e.key===t));n>=0&&this.feelbacks.splice(n,1),this.feelbacks.push({key:t,value:e.value,expire:e.expireIn&&e.expireIn>0?Math.floor(Date.now()/1e3)+e.expireIn:void 0,feelbackId:e.feelbackId,revokeToken:e.revokable?.token,revokeExpire:e.revokable?.expireAt&&Math.floor(new Date(e.revokable.expireAt).getTime()/1e3)||void 0}),this.save()}clear(){this.feelbacks?.splice(0,this.feelbacks.length),this.storage.removeItem(r)}remove(e){let t="string"==typeof e?this.feelbacks?.findIndex((t=>t.feelbackId===e)):(e=l(e),this.feelbacks?.findIndex((t=>t.key===e)));void 0!==t&&t>=0&&(this.feelbacks.splice(t,1),this.save())}getValue(e){return this.getFeelback(e)?.value}isRevokable(e){return!!this.getRevocable(e)}getRevocable(e){let t=this.getFeelback(e);if(t&&t.revokeToken&&!(t.revokeExpire&&t.revokeExpire<Date.now()/1e3))return{feelbackId:t.feelbackId,revokeToken:t.revokeToken}}load(e){if(this.feelbacks&&!e)return;let t;try{t=JSON.parse(this.storage.getItem(r))||[]}catch{t=[]}this.feelbacks=t.filter((e=>!e.expire||e.expire>Date.now()/1e3)),t.length!==this.feelbacks.length&&this.save()}save(){try{this.storage.setItem(r,JSON.stringify(this.feelbacks))}catch{}}getFeelback(e){let t="string"==typeof e?this.feelbacks?.find((t=>t.feelbackId===e)):(e=l(e),this.feelbacks?.find((t=>t.key===e)));if(!(t&&t.expire&&t.expire<Date.now()/1e3))return t;this.remove(t.feelbackId)}};function m(e){return e??=d||"local",c&&d===e?c:(d=e,c=new u(e))}async function h(e){if((e=await e).status>=400)throw new Error("[feelback] API error");if(204!==e.status)return await e.json()}var f={get:async function(e,...t){return t.length>0&&(e=`${e}?$p=${JSON.stringify(t)}`),await h(fetch(e,{method:"GET"}))},post:async function(e,...t){return await h(fetch(e,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(t)}))}},p="https://api.feelback.dev/v0";var b=(0,s.createContext)(void 0);function x(){return(0,s.useContext)(b)}var g=()=>{let e=(0,s.useRef)(!1);return(0,s.useEffect)((()=>(e.current=!0,()=>{e.current=!1})),[]),()=>e.current};function v(e=5e3,t,n){(0,s.useEffect)((()=>{if(t)return function(e,t){let n=setTimeout(t,e);return()=>clearTimeout(n)}(e,(()=>n(t)))}),[t])}function j(e=5e3,t=!1){let n=(0,s.useRef)(t),[a,o]=(0,s.useState)(),i=(0,s.useCallback)((()=>r(n.current)),[]),r=(0,s.useCallback)((e=>o(e??!0)),[]);return v(e,a,i),{value:a,set:r,reset:i}}function k(e,t){let n=(0,s.useRef)(null);return(0,s.useEffect)((()=>{if(e&&t){let e=e=>{(!e.target||!n.current?.contains(e.target))&&(t(),e.stopPropagation(),e.preventDefault())};return document.addEventListener("click",e,{capture:!0}),()=>document.removeEventListener("click",e,{capture:!0})}}),[e]),n}var N={data:void 0,isLoading:!1,isCompleted:!1,isSuccess:!1,isError:!1,error:void 0};function y(e,t,n){let a=(0,s.useRef)(0),o=g(),i=!!n?.paused,r=!!t&&!i,[l,c]=(0,s.useReducer)(C,r,(e=>({...N,isLoading:e})));async function d(...t){let n=++a.current;try{l.isLoading||c({type:"LOADING"});let s=await e(...t);return o()&&n===a.current&&c({type:"SUCCESS",data:s}),C(l,{type:"SUCCESS",data:s})}catch(s){return o()&&n===a.current&&c({type:"ERROR",error:s}),C(l,{type:"ERROR",error:s})}}return(0,s.useEffect)((()=>{!i&&t&&d()}),[i,...t||[]]),{...l,call:d,exec:async(...e)=>{let t=await d(...e);if(t.error)throw t.error;return t.data},reset:()=>{c({type:"RESET"})}}}function C(e,t){switch(t.type){case"LOADING":return{...N,isLoading:!0,data:e.data};case"SUCCESS":return{...N,isCompleted:!0,isSuccess:!0,data:t.data};case"ERROR":return{...N,isCompleted:!0,error:t.error,isError:!0};case"RESET":return{...N};default:throw new Error("unknown action")}}function w(){let e=(0,s.useRef)("");return e.current||(e.current="i"+Math.random().toString().substring(2)),e.current}function A(e){if("function"==typeof e)return(0,s.createElement)(e);if("object"==typeof e&&"text"in e)return(0,s.createElement)(s.Fragment,void 0,[e.text]);if((0,s.isValidElement)(e))return e;throw console.error("Invalid icon",e),new Error("Invalid icon")}function L(e,t){return e&&t?function(){e.apply(this,arguments),t.apply(this,arguments)}:e||t}function E(e){let{count:t=!1,isActive:n=!1,isDisabled:s=!1,label:o,title:i,icon:r,onClick:l}=e;return(0,a.jsxs)("button",{title:i,className:`feelback-btn ${s?"disabled":""} ${n?"active":""}`,onClick:l,children:[r&&(Array.isArray(r)?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{className:"feelback-icon inactive",children:A(r[0])}),(0,a.jsx)("span",{className:"feelback-icon active",children:A(r[1])})]}):(0,a.jsx)("span",{className:"feelback-icon",children:A(r)})),o&&(0,a.jsx)("span",{className:"label",children:o}),!1!==t&&(0,a.jsx)("span",{className:"feelback-count",children:t})]})}function B(e){let{active:t,showCount:n=!1,showLabels:s=!1,showTitle:o=!s,hideZero:i=!1,hideZeroCount:r=!0,isDisabled:l=!1,items:c,counts:d,onClick:u}=e;return(0,a.jsx)("div",{className:"feelback-buttons"+(n&&c.length>1?" with-count":""),children:c.map((({value:e,icon:c,title:m},h)=>{let f=d?.[h]||(t===e?1:0);return i&&f<=0?null:(0,a.jsx)(E,{title:o&&m||void 0,label:s&&m||void 0,icon:c,count:n&&f||(r?void 0:0),isDisabled:l,isActive:t===e,onClick:()=>u?.(e)},e)}))})}function T(e){let{group:t,value:n,label:s,description:o,checked:i,onSelected:r}=e,l=`radio-${w()}`;return(0,a.jsxs)("div",{className:"feelback-radio-item",children:[(0,a.jsx)("input",{id:l,name:t,type:"radio",value:n,checked:i,onChange:e=>e.target.checked?r?.():void 0}),(0,a.jsxs)("div",{className:"feelback-radio-side",children:[s&&(0,a.jsx)("label",{htmlFor:l,children:s}),o&&(0,a.jsx)("span",{className:"feelback-text",children:o})]})]})}function S(e){let{active:t,isDisabled:n=!1,items:s,onRenderAddon:o,onSelected:i}=e,r=`rg-${w()}`;return(0,a.jsx)("fieldset",{className:"feelback-radio-group",children:s.map((e=>(0,a.jsxs)("div",{className:"feelback-radio-item-wrap",children:[(0,a.jsx)(T,{group:r,checked:t===e.value,value:e.value,label:e.title,description:e.description,onSelected:()=>i?.(e.value)}),o?.({item:e,isSelected:t===e.value,isDisabled:n})||null]},e.value)))})}function _(e){let{text:t,...n}=e;return(0,a.jsxs)("div",{className:"feelback-q",children:[t&&"string"==typeof t&&(0,a.jsx)("span",{className:"feelback-text",children:t}),t&&(0,s.isValidElement)(t)&&t,(0,a.jsx)(B,{...n})]})}function I(e){let{text:t}=e;return(0,a.jsx)("div",{className:"feelback-a",children:(0,a.jsx)("span",{className:"feelback-text",children:t})})}var M=(0,s.forwardRef)(((e,t)=>{let{className:n,layout:o,label:i="Send feedback",textAnswer:r="Thanks for your feedback",revokable:l=!0,onClose:c,onSuccess:d,children:u,...m}=e,{call:h,isSuccess:f}=O(m),{value:p,set:b}=j(1e3),x=({value:e,metadata:t})=>{b(!0),h(e,{metadata:t,revokable:l}).then((({isSuccess:t})=>{t&&d?.({...m,value:e})}))};return(0,a.jsxs)("div",{ref:t,className:"feelback-container"+(n?" "+n:""),style:{pointerEvents:p?"none":void 0},children:[!f&&(()=>{switch(o){case"button-switch":return(0,a.jsx)(R,{label:i,behavior:"remove-when-open",children:e=>(0,s.cloneElement)(u,{onSubmit:x,onCancel:e})});case"button-dialog":return(0,a.jsx)(R,{label:i,behavior:"disable-when-open",children:e=>(0,a.jsx)(H,{onClose:e,children:(0,s.cloneElement)(u,{onSubmit:x,onCancel:e})})});case"radio-group-dialog":return(0,a.jsx)(H,{onClose:c,children:(0,s.cloneElement)(u,{onSubmit:x,onCancel:L(u.props.onCancel,c)})});default:return(0,s.cloneElement)(u,{onSubmit:x})}})(),f&&(0,a.jsx)(I,{text:r})]})}));function R(e){let{label:t,behavior:n="remove-when-open",children:o}=e,[i,r]=(0,s.useState)(!1);return(0,a.jsxs)(a.Fragment,{children:[(!i||"remove-when-open"!==n)&&(0,a.jsx)("button",{className:"feelback-btn btn-action trigger-btn",disabled:i,onClick:()=>r(!0),children:t}),i&&o((()=>r(!1)))]})}function H(e){let{onClose:t,children:n}=e,i=k(!0,t);return(0,o.createPortal)((0,a.jsx)("div",{className:"feelback-style",children:(0,a.jsx)("div",{className:"dialog",children:(0,s.cloneElement)(n,{ref:i})})}),document.body)}var U=(0,s.forwardRef)(((e,t)=>{let{title:n="Send feedback",alignButton:s="right",showButton:o=!0,onCancel:i,onSubmit:r,onValidate:l,slots:c,children:d}=e;return(0,a.jsx)("div",{ref:t,className:"feelback-form",children:(0,a.jsxs)("div",{className:"content",children:[n&&(0,a.jsx)("span",{className:"feelback-text form-title",children:n}),d,o&&c?.BeforeFormButtons,o&&(0,a.jsxs)("div",{className:"form-buttons feelback-buttons "+("right"===s?"align-end":""),children:[(0,a.jsx)("button",{className:"feelback-btn btn-action",onClick:()=>{let e=l();void 0!==e&&r?.(e)},children:"Send"}),i&&(0,a.jsx)("button",{className:"feelback-btn btn-cancel",onClick:i,children:"Cancel"})]})]})})}));(0,s.forwardRef)(((e,t)=>{let{title:n="Send feedback",placeholder:o="Type your message",minLength:i,maxLength:r,withEmail:l,placeholderEmail:c="your@email.com"+(l&&"required"!==l?" (optional)":""),slots:d,onCancel:u,onSubmit:m}=e,h=(0,s.useRef)(null),f="required"===l,p=(0,s.useRef)(null);return(0,a.jsxs)(U,{slots:d,title:n,onCancel:u,onSubmit:m,ref:t,onValidate:()=>{let e=h.current?.value.trim()||void 0,t=p.current?.value?.trim()||void 0;if(e&&!(i&&i>0&&e.length<i)&&!(t&&!t.match(/^(.+)@(.+)$/)||f))return{value:e,metadata:t?{$user:t}:void 0}},children:[d?.BeforeMessage,(0,a.jsx)("textarea",{ref:h,required:!0,placeholder:o||void 0,minLength:i,maxLength:r}),l&&(0,a.jsxs)(a.Fragment,{children:[d?.BeforeEmail,(0,a.jsx)("input",{ref:p,type:"email",name:"email",required:f,placeholder:c||void 0})]})]})}));function $(e){let{layout:t="button-switch",label:n="Send feedback",revokable:s,preset:o,tags:i=o,active:r,title:l,placeholder:c,minLength:d,maxLength:u,textAnswer:m="Thanks for your feedback",showLabels:h=!1,style:f,withEmail:p,placeholderEmail:b,onCancel:x,onSuccess:g,slots:v,...j}=e;if(!i)return console.warn("Missing tags"),null;let k=f&&Array.isArray(f)?f.join(" "):f||void 0;return(0,a.jsx)(M,{className:`feelback-tagged-message layout-${t} ${k}`,layout:t,label:n,revokable:s,onSuccess:g,...j,children:(0,a.jsx)(z,{title:l,tags:i,showLabels:h,placeholder:c,minLength:d,maxLength:u,withEmail:p,placeholderEmail:b,onCancel:x,slots:v,layout:"reveal-message"===t?t:"radio-group"===t||"radio-group-dialog"===t?"radio-group":"form"})})}var z=(0,s.forwardRef)(((e,t)=>{let{layout:n,title:o="Send feedback",active:i,tags:r,showLabels:l=!0,placeholder:c="Type your message",minLength:d,maxLength:u,withEmail:m,placeholderEmail:h="your@email.com"+(m&&"required"!==m?" (optional)":""),slots:f,onCancel:p,onSubmit:b}=e,x=!!d&&d>0,g=(0,s.useRef)(null),v="required"===m,j=(0,s.useRef)(null),[k,N]=(0,s.useState)("$auto"===i?r[0].value:i),y=(0,a.jsxs)(a.Fragment,{children:[f?.BeforeMessage,(0,a.jsx)("textarea",{ref:g,required:x,placeholder:c||void 0,minLength:d,maxLength:u})]}),C=m&&(0,a.jsxs)(a.Fragment,{children:[f?.BeforeEmail,(0,a.jsx)("input",{ref:j,type:"email",name:"email",required:v,placeholder:h||void 0})]});return(0,a.jsxs)(U,{onCancel:p,onSubmit:b,ref:t,onValidate:()=>{let e=g.current?.value?.trim()||void 0,t=j.current?.value?.trim()||void 0;if(k&&(!x||e&&!(e.length<d))&&!(t&&!t.match(/^(.+)@(.+)$/)||v))return{value:{tag:k,message:e},metadata:t?{$user:t}:void 0}},title:"reveal-message"!==n&&o,showButton:"reveal-message"!==n||!!k,alignButton:"radio-group"===n?"left":"right",slots:f,children:["form"===n&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(B,{items:r,showLabels:l,active:k,onClick:N}),y,C]}),"radio-group"===n&&(0,a.jsx)(S,{items:r,active:k,onSelected:N,onRenderAddon:({isSelected:e})=>e&&(0,a.jsxs)(a.Fragment,{children:[y,C]})}),"reveal-message"===n&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(_,{text:o,items:r,showLabels:l,active:k,onClick:N}),k&&(0,a.jsxs)(a.Fragment,{children:[y,C]})]})]})}));function O(e){let t=x(),n=D(e);return y(((e,s)=>async function(e){let{endpoint:t=p,store:n="local",revokable:s=!0,value:a,metadata:o,expireIn:r=3600}=e,l="contentId"in e?{contentId:e.contentId}:{contentSetId:e.contentSetId,key:i(e.key)},c=n&&"none"!==n&&m(n)||void 0,d=s&&c?.getRevocable(l)||void 0,u=d?await f.post(`${t}/feelbacks/edit`,{...d,value:a}):await f.post(`${t}/feelbacks/create`,{...l,value:a,context:o,revokable:s});c?.add({...u,target:l,value:a,expireIn:r})}({endpoint:t?.endpoint,store:t?.store,...s,...n,value:e})))}function D(e){let t=(0,s.useRef)(e);return t.current!==e&&("contentId"in t.current&&"contentId"in e?t.current.contentId!==e.contentId&&t.current:"contentSetId"in t.current&&"contentSetId"in e?(t.current.contentSetId!==e.contentSetId||t.current.key!==e.key)&&(t.current=e):t.current=e),t.current}var V=e=>s.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 500 500",fill:"currentColor",width:"1em",height:"1em",...e},s.createElement("g",null,s.createElement("path",{d:"M172.7,309.1c0-7.4-3-14.6-8.3-19.9s-12.4-8.3-19.9-8.3H74.4c-10.1,0-19.3,5.4-24.4,14.1c-5.1,8.7-5,19.5,0,28.1 s14.3,14.1,24.4,14.1h70.2c7.4,0,14.6-3,19.9-8.3S172.7,316.5,172.7,309.1L172.7,309.1z"}),s.createElement("path",{d:"M102.5,449.5h70.2c10.1,0,19.3-5.4,24.4-14.1c5-8.6,5-19.5,0-28.1s-14.3-14.1-24.4-14.1h-70.2c-10.1,0-19.3,5.4-24.4,14.1 c-5,8.6-5,19.5,0,28.1C83.2,444.1,92.5,449.5,102.5,449.5z"}),s.createElement("path",{d:"M53.2,224.9h83.3c18.8,0,36.4-9.4,46.8-24.9l95.7-143.6h5c11.6,0,22.5,5.7,29.2,15.1s8.6,21.6,5,32.5l-25.4,76.5 c-1.3,3.7-0.6,7.9,1.8,11.2c2.3,3.2,6.2,5.2,10.1,5.2h65.6c14.7-0.3,28.8,6.3,37.9,17.7c5.3,6.6,8.6,14.3,9.8,22.6 c1.3,8.3,0.3,16.7-2.7,24.5l-47.6,118.7c-1.5,3.9-4.3,7.2-7.6,9.5c-3.5,2.3-7.5,3.6-11.6,3.6h-61.8l0,0c-7.1-0.3-14.2,2.2-19.7,7 c-5.4,4.6-8.9,11.2-9.9,18.4c-0.8,7.9,1.9,15.8,7.1,21.7c5.4,5.9,12.9,9.2,20.9,9.2h63.3c15.5,0,30.5-4.6,43.2-13.3 c12.8-8.6,22.7-20.9,28.5-35.2l47.6-118.8c12.8-32.1,8.8-68.5-11-97c-19.7-28.5-52.1-45.3-86.8-44.6h-4.6l5.7-17 c5.2-14.8,6.7-30.6,4.3-46.2c-3.6-21.6-14.8-41.3-31.5-55.5s-37.9-22.1-60-22h-20c-9.4,0-18.2,4.6-23.3,12.5l-104,156H54.5 c-7.1-0.1-14.1,2.3-19.6,7c-5.5,4.7-8.9,11.2-9.8,18.3c-0.8,7.9,1.9,15.8,7.1,21.7C37.8,221.4,45.2,224.9,53.2,224.9L53.2,224.9z"}))),F=e=>s.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 500 500",fill:"currentColor",width:"1em",height:"1em",...e},s.createElement("g",null,s.createElement("path",{d:"M327.3,190.8c0,7.3,2.9,14.6,8.3,19.8c5.3,5.3,12.4,8.3,19.8,8.3h70.2c10.1,0,19.4-5.4,24.4-14c5-8.6,5-19.5,0-28.1 c-5-8.6-14.3-14-24.4-14h-70.2c-7.3,0-14.6,2.9-19.8,8.3C330.3,176.3,327.3,183.4,327.3,190.8L327.3,190.8z"}),s.createElement("path",{d:"M397.5,50.4h-70.2c-10.1,0-19.4,5.4-24.4,14c-5,8.6-5,19.5,0,28.1c5,8.6,14.3,14,24.4,14h70.2c10.1,0,19.4-5.4,24.4-14 s5-19.5,0-28.1S407.6,50.4,397.5,50.4z"}),s.createElement("path",{d:"M446.8,275.1h-83.3c-18.8,0-36.3,9.5-46.8,25l-95.7,143.6h-5c-11.6,0-22.5-5.7-29.3-15.1c-6.8-9.4-8.6-21.6-5-32.5 l25.4-76.5c1.3-3.8,0.6-7.9-1.8-11.2c-2.3-3.2-6.2-5.1-10.1-5.1h-65.5c-14.7,0.3-28.7-6.3-38.1-17.7c-5.3-6.6-8.6-14.3-9.8-22.6 c-1.3-8.3-0.3-16.6,2.7-24.5l47.6-118.8c1.6-3.9,4.2-7.2,7.6-9.5c3.5-2.3,7.5-3.6,11.6-3.6h61.8l0,0c7.1,0.3,14.2-2.3,19.7-7 c5.4-4.7,8.9-11.3,9.9-18.4c0.7-7.9-1.9-15.8-7.1-21.7c-5.4-6-12.9-9.2-20.9-9.2h-63.3c-15.5,0-30.5,4.7-43.2,13.3 C95.7,72.4,85.8,84.7,80,99L32.4,217.8c-12.8,32.1-8.8,68.5,10.9,97.1c19.7,28.6,52.1,45.2,86.8,44.7h4.7l-5.7,17.1 c-5.1,14.9-6.7,30.6-4.2,46.2c3.6,21.6,14.9,41.3,31.5,55.4s37.9,21.8,59.8,21.7h20c9.5,0,18.2-4.7,23.3-12.5l104.1-156h82.1 c7.1,0.1,14-2.3,19.6-7c5.5-4.7,8.9-11.2,9.8-18.4c0.7-7.9-1.9-15.8-7.1-21.7C462.4,278.5,454.8,275.1,446.8,275.1L446.8,275.1z"}))),G=[{value:"y",icon:V,title:"Yes"},{value:"n",icon:F,title:"No"}],P=[{value:"idea",icon:{text:"\ud83d\udca1"},title:"Idea"},{value:"error",icon:{text:"\ud83d\udca5"},title:"Error"},{value:"other",icon:{text:"\ud83d\udcac"},title:"Other"}]},5710:(e,t,n)=>{"use strict";n.d(t,{R:()=>i,x:()=>r});var s=n(758);const a={},o=s.createContext(a);function i(e){const t=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:i(e.components),s.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/70d114dd.a19536dd.js b/assets/js/70d114dd.a19536dd.js new file mode 100644 index 00000000..2e5c1058 --- /dev/null +++ b/assets/js/70d114dd.a19536dd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[12],{5283:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>u,frontMatter:()=>i,metadata:()=>d,toc:()=>l});var n=r(6070),o=r(5710);const i={id:"getting-started",title:"Getting started"},a=void 0,d={id:"explore/developers-quickstart/getting-started",title:"Getting started",description:"Before you start, make sure you are familiar with Calimero Terminology.",source:"@site/docs/01-explore/04-developers-quickstart/01-getting-started.mdx",sourceDirName:"01-explore/04-developers-quickstart",slug:"/explore/developers-quickstart/getting-started",permalink:"/explore/developers-quickstart/getting-started",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1718189423e3,sidebarPosition:1,frontMatter:{id:"getting-started",title:"Getting started"},sidebar:"tutorialSidebar",previous:{title:"Introduction",permalink:"/explore/intro"},next:{title:"Admin Dashboard",permalink:"/explore/developers-quickstart/admin-dashboard"}},s={},l=[{value:"Setup your local node",id:"setup-your-local-node",level:2},{value:"Prerequisites",id:"prerequisites",level:3},{value:"Setup",id:"setup",level:3},{value:"Initialize and start coordinator node (separate terminal)",id:"initialize-and-start-coordinator-node-separate-terminal",level:4},{value:"Initialize and start your node (separate terminal)",id:"initialize-and-start-your-node-separate-terminal",level:4},{value:"Congratulations on setting up your node!",id:"congratulations-on-setting-up-your-node",level:3}];function c(e){const t={a:"a",code:"code",h2:"h2",h3:"h3",h4:"h4",p:"p",pre:"pre",...(0,o.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(t.p,{children:["Before you start, make sure you are familiar with ",(0,n.jsx)(t.a,{href:"/learn/terminology",children:"Calimero Terminology"}),"."]}),"\n",(0,n.jsx)(t.h2,{id:"setup-your-local-node",children:"Setup your local node"}),"\n",(0,n.jsx)(t.h3,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,n.jsx)(t.p,{children:"Position in the root of the project and create a data folder for all configuration files."}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-console",children:"$ mkdir data\n"})}),"\n",(0,n.jsx)(t.h3,{id:"setup",children:"Setup"}),"\n",(0,n.jsx)(t.p,{children:"Setup coordinator node used for managing the network transactions and peer nodes representing the network participants."}),"\n",(0,n.jsx)(t.h4,{id:"initialize-and-start-coordinator-node-separate-terminal",children:"Initialize and start coordinator node (separate terminal)"}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{children:"$ cargo run -p calimero-node -- --home data/coordinator init --server-port 2427 --swarm-port 2527\n$ cargo run -p calimero-node -- --home data/coordinator run --node-type coordinator\n"})}),"\n",(0,n.jsx)(t.h4,{id:"initialize-and-start-your-node-separate-terminal",children:"Initialize and start your node (separate terminal)"}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{children:"$ cargo run -p calimero-node -- --home data/node1 init --server-port 2428 --swarm-port 2528\n$ cargo run -p calimero-node -- --home data/node1 run\n"})}),"\n",(0,n.jsx)(t.p,{children:"Node is now initialized and ready for use."}),"\n",(0,n.jsx)(t.h3,{id:"congratulations-on-setting-up-your-node",children:"Congratulations on setting up your node!"}),"\n",(0,n.jsx)(t.p,{children:"Your next step is to add an authentication mechanism to your node by adding a decentralized identity."})]})}function u(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(c,{...e})}):c(e)}},5710:(e,t,r)=>{r.d(t,{R:()=>a,x:()=>d});var n=r(758);const o={},i=n.createContext(o);function a(e){const t=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:a(e.components),n.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/73ad1aec.90fb7c8e.js b/assets/js/73ad1aec.90fb7c8e.js new file mode 100644 index 00000000..6d1f6d22 --- /dev/null +++ b/assets/js/73ad1aec.90fb7c8e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[420],{2770:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>p,frontMatter:()=>a,metadata:()=>s,toc:()=>l});var i=t(6070),o=t(5710);const a={id:"client-node",title:"Client Node"},r=void 0,s={id:"learn/core-concepts/node/client-node",title:"Client Node",description:"Runtime",source:"@site/docs/02-learn/03-core-concepts/02-node/01-client-node.mdx",sourceDirName:"02-learn/03-core-concepts/02-node",slug:"/learn/core-concepts/node/client-node",permalink:"/learn/core-concepts/node/client-node",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1718189423e3,sidebarPosition:1,frontMatter:{id:"client-node",title:"Client Node"},sidebar:"tutorialSidebar",previous:{title:"Identity",permalink:"/learn/core-concepts/identity"},next:{title:"Runtime",permalink:"/learn/core-concepts/node/runtime"}},c={},l=[{value:"Runtime",id:"runtime",level:3},{value:"Recommendations for Developers: Thorough testing of applications in a controlled environment is advised before deploying them in production to ensure stability and security. Additionally, developers are encouraged to implement locked update rules to prevent unauthorized modifications to the application's behavior.",id:"recommendations-for-developers-thorough-testing-of-applications-in-a-controlled-environment-is-advised-before-deploying-them-in-production-to-ensure-stability-and-security-additionally-developers-are-encouraged-to-implement-locked-update-rules-to-prevent-unauthorized-modifications-to-the-applications-behavior",level:4},{value:"Storage",id:"storage",level:3},{value:"Encryption:",id:"encryption",level:3},{value:"Identity Management",id:"identity-management",level:3},{value:"Authentication",id:"authentication",level:3},{value:"Key Management",id:"key-management",level:3},{value:"Application Marketplace",id:"application-marketplace",level:3}];function d(e){const n={h3:"h3",h4:"h4",li:"li",p:"p",ul:"ul",...(0,o.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h3,{id:"runtime",children:"Runtime"}),"\n",(0,i.jsx)(n.p,{children:"Overview: The runtime environment of a client node in the Calimero Network is crucial for the execution of decentralized applications (DApps), particularly those compiled to WebAssembly (WASM)."}),"\n",(0,i.jsx)(n.p,{children:"Functionality:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"State Synchronization: Each node can download and synchronize the state with existing applications, ensuring that all nodes participating in a particular application network are consistent and up-to-date."}),"\n",(0,i.jsx)(n.li,{children:"Application Settings: Nodes can be configured with specific settings for each application, including which WASM modules to run, source URLs for fetching these modules, encryption protocols to be used, and more."}),"\n",(0,i.jsx)(n.li,{children:"Network Topology & Update Rules: Defines the structure of the network and how nodes communicate and update each other. Proper update rules are crucial for application security and integrity, particularly in a decentralized setting where trust is distributed."}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"recommendations-for-developers-thorough-testing-of-applications-in-a-controlled-environment-is-advised-before-deploying-them-in-production-to-ensure-stability-and-security-additionally-developers-are-encouraged-to-implement-locked-update-rules-to-prevent-unauthorized-modifications-to-the-applications-behavior",children:"Recommendations for Developers: Thorough testing of applications in a controlled environment is advised before deploying them in production to ensure stability and security. Additionally, developers are encouraged to implement locked update rules to prevent unauthorized modifications to the application's behavior."}),"\n",(0,i.jsx)(n.h3,{id:"storage",children:"Storage"}),"\n",(0,i.jsx)(n.p,{children:"Overview: Storage on client nodes involves maintaining the state and data required for the decentralized applications they support."}),"\n",(0,i.jsx)(n.p,{children:"Functionality:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Local Storage: Each node stores application data locally, contributing to the overall decentralized storage model of the network. This ensures that data is distributed across the network, enhancing privacy and resilience against central points of failure."}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"encryption",children:"Encryption:"}),"\n",(0,i.jsx)(n.p,{children:"Data stored on client nodes can be encrypted, providing an additional layer of security and privacy for user data."}),"\n",(0,i.jsx)(n.h3,{id:"identity-management",children:"Identity Management"}),"\n",(0,i.jsx)(n.p,{children:"Overview: Managing identities on the Calimero Network is fundamental for ensuring secure and private interactions between nodes and applications.\nFunctionality:"}),"\n",(0,i.jsx)(n.h3,{id:"authentication",children:"Authentication"}),"\n",(0,i.jsx)(n.p,{children:"Nodes implement mechanisms for authenticating users and applications, ensuring that interactions are secure and that entities are who they claim to be."}),"\n",(0,i.jsx)(n.h3,{id:"key-management",children:"Key Management"}),"\n",(0,i.jsx)(n.p,{children:"The management of cryptographic keys is an integral part of identity management, enabling secure communication and data encryption across the network."}),"\n",(0,i.jsx)(n.h3,{id:"application-marketplace",children:"Application Marketplace"}),"\n",(0,i.jsx)(n.p,{children:"Current State: The marketplace for decentralized applications within the Calimero Network is facilitated by a smart contract on the NEAR blockchain, with application data and metadata hosted on IPFS. This setup serves as a temporary solution while further community engagement and discussions are underway to refine the marketplace's infrastructure and governance.\nThe Calimero Network's approach to client nodes emphasizes security, decentralization, and privacy, with a strong recommendation for users to engage with applications that have securely locked update mechanisms. These applications are more reliable for critical use cases and are the only ones featured in the official marketplace, ensuring a curated and trustworthy selection of DApps for users. This framework demonstrates Calimero Network's commitment to building a secure and user-centric decentralized ecosystem."})]})}function p(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},5710:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>s});var i=t(758);const o={},a=i.createContext(o);function r(e){const n=i.useContext(a);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),i.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/77c0519e.5d4c0744.js b/assets/js/77c0519e.5d4c0744.js new file mode 100644 index 00000000..086829d7 --- /dev/null +++ b/assets/js/77c0519e.5d4c0744.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[636],{6197:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>u,frontMatter:()=>a,metadata:()=>s,toc:()=>c});var n=i(6070),o=i(5710);const a={id:"quickstart",title:"Quickstart"},r=void 0,s={id:"build/quickstart",title:"Quickstart",description:"Welcome to the exciting world of application development in the decentralized space! As a developer, you have the opportunity to build cutting-edge applications using our comprehensive suite of tools. Start by shaping the core application logic with our Protocol SDK and then bring your application to life by crafting intuitive user interfaces with the Client SDK. Join our community of developers and start creating powerful decentralized applications that can make a significant impact in the tech world.",source:"@site/docs/03-build/00-quickstart.mdx",sourceDirName:"03-build",slug:"/build/quickstart",permalink:"/build/quickstart",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1718189423e3,sidebarPosition:0,frontMatter:{id:"quickstart",title:"Quickstart"},sidebar:"tutorialSidebar",previous:{title:"Encryption",permalink:"/learn/advanced-concepts/encryption"},next:{title:"Protocol SDK",permalink:"/build/protocol-sdks/protocol-sdk"}},l={},c=[{value:"Protocol SDK",id:"protocol-sdk",level:2},{value:"Client SDKs",id:"client-sdks",level:2},{value:"Publish app",id:"publish-app",level:2}];function p(e){const t={a:"a",h2:"h2",li:"li",ol:"ol",p:"p",...(0,o.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.p,{children:"Welcome to the exciting world of application development in the decentralized space! As a developer, you have the opportunity to build cutting-edge applications using our comprehensive suite of tools. Start by shaping the core application logic with our Protocol SDK and then bring your application to life by crafting intuitive user interfaces with the Client SDK. Join our community of developers and start creating powerful decentralized applications that can make a significant impact in the tech world."}),"\n",(0,n.jsx)(t.p,{children:"Application development consists of two main parts:"}),"\n",(0,n.jsxs)(t.ol,{children:["\n",(0,n.jsx)(t.li,{children:"building the application logic with the Protocol SDK"}),"\n",(0,n.jsx)(t.li,{children:"building the application client interface with the Client SDK"}),"\n"]}),"\n",(0,n.jsx)(t.h2,{id:"protocol-sdk",children:"Protocol SDK"}),"\n",(0,n.jsx)(t.p,{children:"The Protocol SDK within the Calimero Network equips developers with tools for creating, testing, and deploying protocols essential for decentralized applications (DApps). It features capabilities such as code generation, security enhancement, and interoperability support to ensure robust and efficient DApp operations. This SDK is crucial for integrating with the Calimero Network's components, facilitating seamless updates and versioning critical for DApps in fields like decentralized messaging and finance."}),"\n",(0,n.jsx)(t.p,{children:"Currently we have SDK only for rust but in the future we will have SDKs for other languages as well."}),"\n",(0,n.jsx)(t.h2,{id:"client-sdks",children:"Client SDKs"}),"\n",(0,n.jsx)(t.p,{children:"The Client SDK includes straightforward tools to help you build your application. For logging in, we provide functions that allow users to authenticate using their wallet credentials, which must be set up as root keys in the admin dashboard. This setup ensures that access is both secure and straightforward. For handling data, the SDK supports JSON-RPC for direct data transactions and websockets for live updates. These features are designed to make your development process efficient and effective, allowing you to focus on creating a great user experience."}),"\n",(0,n.jsx)(t.p,{children:"Currently we have SDK only for typescript but in the future we will have SDKs for other languages as well."}),"\n",(0,n.jsx)(t.h2,{id:"publish-app",children:"Publish app"}),"\n",(0,n.jsxs)(t.p,{children:["After you have created your application logic with Rust and your application UI with TypeScript, you can publish your app. Follow instructions in the ",(0,n.jsx)(t.a,{href:"/build/publish-app",children:"Publish App"})," guide to learn how to publish your app and how users can download and run it."]})]})}function u(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(p,{...e})}):p(e)}},5710:(e,t,i)=>{i.d(t,{R:()=>r,x:()=>s});var n=i(758);const o={},a=n.createContext(o);function r(e){const t=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),n.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/799afb5f.98b299e2.js b/assets/js/799afb5f.98b299e2.js new file mode 100644 index 00000000..6e45b064 --- /dev/null +++ b/assets/js/799afb5f.98b299e2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[620],{6226:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>c,contentTitle:()=>s,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>l});var n=i(6070),o=i(5710);const r={id:"terminology",title:"Terminology"},s=void 0,a={id:"learn/terminology",title:"Terminology",description:"As projects grow, it's important to have a shared vocabulary to help communicate effectively. This page provides a list of terms used in the documentation and throughout the codebase.",source:"@site/docs/02-learn/02-terminology.mdx",sourceDirName:"02-learn",slug:"/learn/terminology",permalink:"/learn/terminology",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1718189423e3,sidebarPosition:2,frontMatter:{id:"terminology",title:"Terminology"},sidebar:"tutorialSidebar",previous:{title:"Architecture",permalink:"/learn/architecture"},next:{title:"Identity",permalink:"/learn/core-concepts/identity"}},c={},l=[];function d(e){const t={li:"li",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.p,{children:"As projects grow, it's important to have a shared vocabulary to help communicate effectively. This page provides a list of terms used in the documentation and throughout the codebase."}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.strong,{children:"Node"})," is any individual device or computer that participates in the network. To avoid confusion with network layer used in the protocol, instead of network we are using term ",(0,n.jsx)(t.strong,{children:"Context"}),"."]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.strong,{children:"Peer"})," is a specific instance of a node within a P2P network that interacts with other peers. Peer represents user."]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.strong,{children:"Peer Id"})," is a unique identifier assigned to each peer in the network. It is used to distinguish between different peers and ensure that messages are delivered to the correct recipient."]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.strong,{children:"Context"})," is the core of the Calimero ecosystem. It is an application specific network designed to enable direct communication between users, eliminating the need for intermediaries"]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.strong,{children:"Application"})," is a software program designed to perform specific tasks or solve particular problems. To ensure compatibility and functionality, it should be developed according to the protocol SDK instructions provided. Once developed, the application should be published in a format that others can use during runtime, specifically in WebAssembly (WASM) format. Developer can also build frontend for an application, deployed separately, allowing users to interact with an app directly. This user interface facilitates interaction with the underlying software, making the application accessible and user-friendly."]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.strong,{children:"Root key"})," is the public part of a wallet cryptographic key pair used to verify the signature of sensitive actions. This public key is used to ensure that any data or actions signed with the corresponding private key can be trusted. Essentially, the root key serves as a trust anchor, enabling users to validate the authenticity and integrity of operations or communications associated with the node. It does not grant direct control over the node but ensures that actions authenticated with the private part of the root key are legitimate."]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.strong,{children:"Client key"})," is a cryptographic key tailored for each user session, acting as a session key or token. Each client key must be signed with the root key to be valid which is done automatically during login. This ensures that only sessions authenticated by the trusted root key can interact with the node."]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.strong,{children:"Specialized node"})," is third-party node that augment a context's capacity and reliability. It participates in a context but have additional capabilities, providing various services while maintaining the decentralized nature of the network."]}),"\n"]})]})}function h(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}},5710:(e,t,i)=>{i.d(t,{R:()=>s,x:()=>a});var n=i(758);const o={},r=n.createContext(o);function s(e){const t=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),n.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/90e69b51.9508d61e.js b/assets/js/90e69b51.9508d61e.js new file mode 100644 index 00000000..ea7686d0 --- /dev/null +++ b/assets/js/90e69b51.9508d61e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[262],{3564:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>h,contentTitle:()=>r,default:()=>d,frontMatter:()=>i,metadata:()=>s,toc:()=>l});var o=n(6070),a=n(5710);const i={id:"hackathons",title:"Hackathons"},r="Hackathons",s={id:"contribute/hackathons",title:"Hackathons",description:"At Calimero, we love innovation and collaboration, which is why we plan to regularly organize hackathons that include our product. We have exciting events planned for the future. Stay tuned by following us on our social media channels to get the latest updates.",source:"@site/docs/04-contribute/02-hackathons.mdx",sourceDirName:"04-contribute",slug:"/contribute/hackathons",permalink:"/contribute/hackathons",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1718189423e3,sidebarPosition:2,frontMatter:{id:"hackathons",title:"Hackathons"},sidebar:"tutorialSidebar",previous:{title:"Github",permalink:"/contribute/github"},next:{title:"Bounty Program",permalink:"/contribute/bounty-program"}},h={},l=[{value:"What is a Hackathon?",id:"what-is-a-hackathon",level:2},{value:"How to Get Involved",id:"how-to-get-involved",level:2},{value:"Stay Updated",id:"stay-updated",level:3}];function c(e){const t={h1:"h1",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,a.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.h1,{id:"hackathons",children:"Hackathons"}),"\n",(0,o.jsx)(t.p,{children:"At Calimero, we love innovation and collaboration, which is why we plan to regularly organize hackathons that include our product. We have exciting events planned for the future. Stay tuned by following us on our social media channels to get the latest updates."}),"\n",(0,o.jsx)(t.h2,{id:"what-is-a-hackathon",children:"What is a Hackathon?"}),"\n",(0,o.jsx)(t.p,{children:"A hackathon is an event where developers, designers, and other tech enthusiasts come together to create innovative solutions in a short amount of time. Participants work in teams to build projects, often centered around a specific theme or technology. Hackathons are a great opportunity to:"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"Learn New Skills:"})," Whether you\u2019re a beginner or an expert, hackathons provide a platform to learn new technologies and tools."]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"Collaborate:"})," Work with other passionate individuals, share ideas, and collaborate on projects."]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"Showcase Your Talent:"})," Present your project to a panel of judges and other participants, winning prizes and recognition."]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"Network:"})," Meet like-minded individuals, industry experts, and potential employers or collaborators."]}),"\n"]}),"\n",(0,o.jsx)(t.h2,{id:"how-to-get-involved",children:"How to Get Involved"}),"\n",(0,o.jsx)(t.p,{children:"When we announce a new hackathon, here\u2019s how you can participate:"}),"\n",(0,o.jsxs)(t.ol,{children:["\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"Register for the Event:"})," Sign up through the event link provided in our announcements."]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"Form a Team:"})," Join with friends or team up with other participants."]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"Build Your Project:"})," Use our product and other tools to create something amazing."]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"Submit Your Work:"})," Present your project at the end of the hackathon for a chance to win prizes and gain recognition."]}),"\n"]}),"\n",(0,o.jsx)(t.h3,{id:"stay-updated",children:"Stay Updated"}),"\n",(0,o.jsx)(t.p,{children:"Follow us on social media to be the first to know about our upcoming hackathons and other events. We\u2019ll share all the details, including how to register and participate."}),"\n",(0,o.jsx)(t.p,{children:"Thank you for your interest in contributing to our project through hackathons. We look forward to seeing your innovative ideas and solutions!"})]})}function d(e={}){const{wrapper:t}={...(0,a.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(c,{...e})}):c(e)}},5710:(e,t,n)=>{n.d(t,{R:()=>r,x:()=>s});var o=n(758);const a={},i=o.createContext(a);function r(e){const t=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:r(e.components),o.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/910b5ce4.a516eb9e.js b/assets/js/910b5ce4.a516eb9e.js new file mode 100644 index 00000000..dd0e2ccc --- /dev/null +++ b/assets/js/910b5ce4.a516eb9e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[968],{9625:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>d,frontMatter:()=>r,metadata:()=>l,toc:()=>p});var o=n(6070),a=n(5710);const r={id:"example-app",title:"Example Application"},i=void 0,l={id:"explore/developers-quickstart/example-app",title:"Example Application",description:"We have created simple and easy to use example application called only-peers. Application enables writing posts and leaving comments.",source:"@site/docs/01-explore/04-developers-quickstart/03-example-app.mdx",sourceDirName:"01-explore/04-developers-quickstart",slug:"/explore/developers-quickstart/example-app",permalink:"/explore/developers-quickstart/example-app",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1718189423e3,sidebarPosition:3,frontMatter:{id:"example-app",title:"Example Application"},sidebar:"tutorialSidebar",previous:{title:"Admin Dashboard",permalink:"/explore/developers-quickstart/admin-dashboard"},next:{title:"Architecture",permalink:"/learn/architecture"}},s={},p=[{value:"Create new context",id:"create-new-context",level:3},{value:"Try out Only-peers application",id:"try-out-only-peers-application",level:3}];function c(e){const t={a:"a",blockquote:"blockquote",code:"code",em:"em",h3:"h3",li:"li",p:"p",strong:"strong",ul:"ul",...(0,a.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(t.p,{children:["We have created simple and easy to use example application called ",(0,o.jsx)(t.code,{children:"only-peers"}),". Application enables writing posts and leaving comments.\nTo try out application you need to create new context where application will be installed."]}),"\n",(0,o.jsx)(t.h3,{id:"create-new-context",children:"Create new context"}),"\n",(0,o.jsxs)(t.p,{children:["Navigate back to Admin Dashboard. If you have not started Admin Dashboard, follow the instructions in ",(0,o.jsx)(t.a,{href:"/explore/developers-quickstart/admin-dashboard",children:"Admin Dashboard"}),"."]}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:["Follow context creation instructions and select ",(0,o.jsx)(t.code,{children:"only-peers"})," app."]}),"\n"]}),"\n",(0,o.jsx)(t.p,{children:"You are now part of the context and can start using the application."}),"\n",(0,o.jsx)(t.h3,{id:"try-out-only-peers-application",children:"Try out Only-peers application"}),"\n",(0,o.jsx)(t.p,{children:"We have built and deployed a demo app so you can try it out immediately."}),"\n",(0,o.jsxs)(t.p,{children:["Navigate to ",(0,o.jsx)(t.a,{href:"https://calimero-network.github.io/only-peers-client/",children:"https://calimero-network.github.io/only-peers-client/"})," to access app frontend."]}),"\n",(0,o.jsxs)(t.p,{children:["You will be asked to setup the app by the adding the node url. It is the same url you used while starting the node in ",(0,o.jsx)(t.a,{href:"/explore/developers-quickstart/getting-started",children:"Getting-started"})," ",(0,o.jsx)(t.code,{children:"http://localhost:NODE_PORT"}),"\nAfter setting up node url, you will be asked to login."]}),"\n",(0,o.jsxs)(t.blockquote,{children:["\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.strong,{children:(0,o.jsx)(t.em,{children:"NOTE:"})}),"\nUse your wallet which you have already added as root key in ",(0,o.jsx)(t.a,{href:"/explore/developers-quickstart/admin-dashboard",children:"Admin Dashboard. "})]}),"\n"]}),"\n",(0,o.jsx)(t.p,{children:"You are now ready to use the app. Enjoy!"})]})}function d(e={}){const{wrapper:t}={...(0,a.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(c,{...e})}):c(e)}},5710:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>l});var o=n(758);const a={},r=o.createContext(a);function i(e){const t=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:i(e.components),o.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/9471ce52.efa3a852.js b/assets/js/9471ce52.efa3a852.js new file mode 100644 index 00000000..19a7a5f6 --- /dev/null +++ b/assets/js/9471ce52.efa3a852.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[229],{4007:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>p,frontMatter:()=>a,metadata:()=>r,toc:()=>c});var t=i(6070),s=i(5710);const a={id:"applications",title:"Applications"},o=void 0,r={id:"learn/core-concepts/applications",title:"Applications",description:"Applications in Calimero define the core logic governing how peers interact within a decentralized network. Developers can programmatically augment the protocol to create customized functionalities, supporting a wide range of applications tailored to various use cases, from direct messaging and communication channels to interactive games and collaborative editing.",source:"@site/docs/02-learn/03-core-concepts/03-applications.mdx",sourceDirName:"02-learn/03-core-concepts",slug:"/learn/core-concepts/applications",permalink:"/learn/core-concepts/applications",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1718189423e3,sidebarPosition:3,frontMatter:{id:"applications",title:"Applications"},sidebar:"tutorialSidebar",previous:{title:"Admin Client API",permalink:"/learn/core-concepts/node/admin-client-api"},next:{title:"Contexts",permalink:"/learn/core-concepts/contexts"}},l={},c=[{value:"Examples of Applications",id:"examples-of-applications",level:3},{value:"Benefits of Decentralized Applications",id:"benefits-of-decentralized-applications",level:3},{value:"Security and Data Management",id:"security-and-data-management",level:3},{value:"Building Applications",id:"building-applications",level:3}];function d(e){const n={h3:"h3",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.p,{children:"Applications in Calimero define the core logic governing how peers interact within a decentralized network. Developers can programmatically augment the protocol to create customized functionalities, supporting a wide range of applications tailored to various use cases, from direct messaging and communication channels to interactive games and collaborative editing."}),"\n",(0,t.jsx)(n.h3,{id:"examples-of-applications",children:"Examples of Applications"}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Communication Platforms"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Direct Messages and Channels"}),": Support for private, encrypted messaging between users and group communications in shared, secure spaces. This setup can scale from one-on-one conversations to large group discussions, similar to Slack channels or Discord communities."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Community Platforms"}),": Decentralized alternatives to platforms like Reddit or Hacker News, enabling independent contexts for different purposes, fostering discussions, and sharing content securely."]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Interactive Games"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Privacy-Focused Games"}),": These games require the privacy of each player's moves until both have played, ensuring fair play and maintaining the confidentiality of strategies. Examples include:"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Rock-Paper-Scissors"}),": Players' choices are revealed simultaneously after both have made their moves."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Battleship"}),": The positions of ships are kept secret until revealed through gameplay."]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Non-Privacy Games"}),": These games do not require concealment of moves and allow all actions to be visible to both players. Examples include:"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Chess"}),": A strategy game where all moves are visible to both players, with game logic running locally."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Checkers"}),": Another strategy game where all moves are open and visible to both players."]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Collaborative Work"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Document Collaboration"}),": Real-time collaboration on documents, akin to Google Docs, but decentralized and secure."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Creative Projects"}),": Shared canvases or environments for drawing, designing, or working on various creative projects, where all contributions are securely encrypted."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"benefits-of-decentralized-applications",children:"Benefits of Decentralized Applications"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Resilience"}),": Distributed application logic ensures the system functions smoothly even if some devices go offline."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Autonomy"}),": Users control their data and activities without relying on a central authority."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Scalability"}),": The system scales effectively as more users join due to optimistic execution, with state being conflict-free and eventually reconciled."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Privacy"}),": Keeping data local and encrypted prevents exposure to third parties, crucial for sensitive information."]}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"security-and-data-management",children:"Security and Data Management"}),"\n",(0,t.jsx)(n.p,{children:"All non-state-transitional data, such as attached files in DMs, collaborative document assets, and game resources, inherit the same level of security as state-transitional transactions. This ensures that all forms of data within the Calimero network are encrypted and secure."}),"\n",(0,t.jsx)(n.p,{children:"Calimero also functions as a decentralized filesystem for these non-state-transitional, encrypted blobs of data. Similar to BitTorrent or IPFS, nodes can lazily share the data without needing any centralized storage options. This decentralized approach allows for efficient and secure data distribution across the network."}),"\n",(0,t.jsx)(n.h3,{id:"building-applications",children:"Building Applications"}),"\n",(0,t.jsx)(n.p,{children:"Developers can leverage Calimero's framework to programmatically build and augment a wide range of applications using provided tools and documentation. This includes setting up the development environment and deploying applications within the network."}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Development Tools"}),"\nCalimero offers the Rust SDK and intuitive APIs, enabling developers to create applications that integrate seamlessly with the network."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Documentation and Support"}),"\nComprehensive documentation and community support assist developers in every step of the application development process, ensuring that they can build and deploy high-quality, secure applications efficiently."]}),"\n"]}),"\n"]})]})}function p(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},5710:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>r});var t=i(758);const s={},a=t.createContext(s);function o(e){const n=t.useContext(a);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),t.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/962e3ea7.0848e97b.js b/assets/js/962e3ea7.0848e97b.js new file mode 100644 index 00000000..7408ecc8 --- /dev/null +++ b/assets/js/962e3ea7.0848e97b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[77],{334:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>h,frontMatter:()=>t,metadata:()=>l,toc:()=>c});var i=s(6070),r=s(5710);const t={id:"network",title:"Network"},o=void 0,l={id:"learn/core-concepts/node/network",title:"Network",description:"Overview",source:"@site/docs/02-learn/03-core-concepts/02-node/05-network.mdx",sourceDirName:"02-learn/03-core-concepts/02-node",slug:"/learn/core-concepts/node/network",permalink:"/learn/core-concepts/node/network",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1718189423e3,sidebarPosition:5,frontMatter:{id:"network",title:"Network"},sidebar:"tutorialSidebar",previous:{title:"Storage",permalink:"/learn/core-concepts/node/storage"},next:{title:"Admin Client API",permalink:"/learn/core-concepts/node/admin-client-api"}},a={},c=[{value:"Overview",id:"overview",level:2},{value:"Node Types",id:"node-types",level:2},{value:"Client Node",id:"client-node",level:3},{value:"Boot Node",id:"boot-node",level:3},{value:"P2P protocols and techniques",id:"p2p-protocols-and-techniques",level:2},{value:"Protocol Descriptions",id:"protocol-descriptions",level:3},{value:"DCUtR (Direct Connection Upgrade through Relay)",id:"dcutr-direct-connection-upgrade-through-relay",level:4},{value:"Gossipsub",id:"gossipsub",level:4},{value:"Identify",id:"identify",level:4},{value:"Kademlia (Kad)",id:"kademlia-kad",level:4},{value:"mDNS (Multicast DNS)",id:"mdns-multicast-dns",level:4},{value:"Ping",id:"ping",level:4},{value:"Relay",id:"relay",level:4},{value:"Rendezvous",id:"rendezvous",level:4},{value:"NAT Traversal Techniques",id:"nat-traversal-techniques",level:3}];function d(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h2,{id:"overview",children:"Overview"}),"\n",(0,i.jsxs)(n.p,{children:["This document provides an overview of the networking component of Calimero Network, which is implemented using the ",(0,i.jsx)(n.code,{children:"libp2p"})," library. The network consists of two types of peers: client nodes and boot nodes, each serving distinct roles and utilizing specific protocols to facilitate peer-to-peer communication.\nClient node is the component which hosts and runs client applications, communicates and shares data between other client nodes.\nBoot node is the component used for the initial discovery of the peers in the network."]}),"\n",(0,i.jsx)(n.h2,{id:"node-types",children:"Node Types"}),"\n",(0,i.jsx)(n.h3,{id:"client-node",children:"Client Node"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Deployment:"})," Can run on any machine"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Protocols Utilized:"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#dcutr-direct-connection-upgrade-through-relay",children:"dcutr"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#gossipsub",children:"gossipsub"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#identify",children:"identify"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#kademlia-kad",children:"kad"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#mdns-multicast-dns",children:"mdns"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#ping",children:"ping"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#rendezvous",children:"rendezvous"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#relay",children:"relay"})}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Behavior:"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Configuration:"})," A client node can be configured to use zero boot nodes."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"External Address:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Direct Public External Address:"})," Nodes with a direct public external address do not require reservation at the relay server. These nodes publish their public external address to the Kademlia DHT, making them directly accessible to other peers."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Relayed External Address:"})," Nodes that do not have a direct public external address, typically those behind a NAT or firewall, can obtain a relayed external address by requesting a reservation at a relay server. Once the reservation is accepted, the node publishes its new external address to the rendezvous server. This allows other nodes to discover relayed addresses of a peers in a certain rendezvous namespace. The relay server can be used for the coordination of the hole punching between two nodes. If the hole punching attempt fails, the relay server will bridge the traffic."]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Discovery Protocols:"})," ",(0,i.jsx)(n.code,{children:"mDNS"}),", ",(0,i.jsx)(n.code,{children:"rendezvous"})," and ",(0,i.jsx)(n.code,{children:"Kademlia"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Connection Management:"})," A peer, identified via PeerId, can be discovered either via mDNS, rendezvous or Kademlia. mDNS discovery provides local network addresses, rendezvous discovery provides relayed addresses, and Kademlia discovery provides direct public external addresses. The node maintains information about its connections to peers, including the discovery source. For a discovered external address, either relayed or direct public, the node will only attempt to dial the peer if the same peer is not already connected via a discovered local address. This ensures that local connections have higher priority and that there are no unnecessary hole punching attempts."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Message Relaying:"})," The node participates in the ",(0,i.jsx)(n.code,{children:"gossipsub"})," protocol, relaying messages to all connected peers that support it. This enables efficient and scalable message dissemination across the network."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"boot-node",children:"Boot Node"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Deployment:"})," Must run on a publicly available machine with a static IP address."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Protocols Utilized:"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#identify",children:"identify"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#kademlia-kad",children:"kad"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#ping",children:"ping"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#rendezvous",children:"rendezvous"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#relay",children:"relay"})}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Behavior:"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Characteristics:"})," Boot nodes are publicly available, long-running nodes that provide stable entry points to the network."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Functions:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Bootstrap Node:"})," Acts as a well-known peer for the Kademlia protocol, facilitating peer discovery and network join operations."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Circuit Relay Server:"})," Serves as a generic relay that provides the medium that facilitates the hole punching, enabling peers to establish direct connections even when they are behind NAT or firewalls. The relay server is used for the coordination of the hole punching between two nodes, and briding traffic if the hole punching attempt fails."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Rendezvous Server:"})," Facilitates peer discovery by allowing nodes to register their presence and query for other peers within a shared rendezvous namespace. This enables dynamic and efficient peer-to-peer connections without relying on a static list of peers."]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"p2p-protocols-and-techniques",children:"P2P protocols and techniques"}),"\n",(0,i.jsx)(n.h3,{id:"protocol-descriptions",children:"Protocol Descriptions"}),"\n",(0,i.jsx)(n.h4,{id:"dcutr-direct-connection-upgrade-through-relay",children:"DCUtR (Direct Connection Upgrade through Relay)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"DCUtR is used to upgrade connections through relay nodes, allowing peers to establish direct connections even if they are behind NATs or firewalls. Peers initially connect via a relay node, then use the DCUtR protocol to attempt a direct connection, which reduces latency and bandwidth usage."}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Reference:"})," ",(0,i.jsx)(n.a,{href:"https://github.com/libp2p/specs/blob/master/relay/DCUtR.md",children:"libp2p DCUtR Documentation"})]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"gossipsub",children:"Gossipsub"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Gossipsub is a scalable and efficient pub-sub protocol for message dissemination. It combines the best aspects of gossip protocols and topic-based pub-sub systems. It minimizes bandwidth usage by only gossiping metadata and ensuring that messages are only sent once per peer."}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Reference:"})," ",(0,i.jsx)(n.a,{href:"https://github.com/libp2p/specs/tree/master/pubsub/gossipsub",children:"libp2p Gossipsub Documentation"})]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"identify",children:"Identify"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"The Identify protocol allows peers to identify themselves and share their capabilities with other peers. Peers exchange identification information such as supported protocols, listen addresses, and public keys. This helps peers make informed decisions about connecting and interacting."}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Reference:"})," ",(0,i.jsx)(n.a,{href:"https://github.com/libp2p/specs/blob/master/identify/README.md",children:"libp2p Identify Documentation"})]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"kademlia-kad",children:"Kademlia (Kad)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Kademlia is a distributed hash table (DHT) protocol used for peer discovery and data routing. It uses an XOR metric to ensure efficient and scalable peer lookup. Each node maintains a routing table with information about other nodes, facilitating quick lookups and robust network operation."}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Reference:"})," ",(0,i.jsx)(n.a,{href:"https://github.com/libp2p/specs/tree/master/kad-dht",children:"libp2p Kademlia DHT Documentation"})]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"mdns-multicast-dns",children:"mDNS (Multicast DNS)"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"mDNS enables local network peer discovery without the need for a central server. It uses multicast DNS to allow peers to find each other on the same local network by broadcasting their presence and listening for broadcasts from other peers."}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Reference:"})," ",(0,i.jsx)(n.a,{href:"https://github.com/libp2p/specs/tree/master/discovery/mdns",children:"libp2p mDNS Documentation"})]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"ping",children:"Ping"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"The Ping protocol measures the round-trip time (latency) between peers. It regularly pings connected peers and measures the time it takes for a response. This helps in maintaining healthy connections and understanding network latency."}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Reference:"})," ",(0,i.jsx)(n.a,{href:"https://github.com/libp2p/go-libp2p-ping",children:"libp2p Ping Documentation"})]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"relay",children:"Relay"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"The Relay protocol supports relay-based communication, allowing peers to communicate through intermediary nodes when direct connections are not possible. Nodes can use relay nodes to forward their traffic, which is especially useful for nodes behind NATs or firewalls. The protocol includes mechanisms for reserving relay slots and managing relay connections."}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Reference:"})," ",(0,i.jsx)(n.a,{href:"https://github.com/libp2p/specs/tree/master/relay",children:"libp2p Relay Documentation"})]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"rendezvous",children:"Rendezvous"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"The Rendezvous protocol enables peers to discover each other by registering at and querying a shared rendezvous point. This is useful for dynamically finding peers without needing a central directory or pre-established list of peers. Peers register their presence at a rendezvous server and can also query the server to find other peers."}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Reference:"})," ",(0,i.jsx)(n.a,{href:"https://github.com/libp2p/specs/tree/master/rendezvous",children:"libp2p Rendezvous Documentation"})]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"nat-traversal-techniques",children:"NAT Traversal Techniques"}),"\n",(0,i.jsxs)(n.p,{children:["One of the common techniques used for NAT traversal in P2P networks is ",(0,i.jsx)(n.strong,{children:"Hole Punching"}),". This technique allows two peers, each behind a NAT, to establish a direct connection with each other. Here's a brief explanation:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Hole Punching:"})," This technique involves three steps:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Step 1 - Connection to Public Server:"}),' Both peers initially connect to a public server (in this case, the relay server). This creates a NAT mapping (a "hole") for outgoing packets to the server.']}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Step 2 - Exchange of Address Information:"})," The server shares the public address information of each peer with the other. This information includes the IP address and port number that the NAT has assigned for the connection to the server."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Step 3 - Direct Connection:"})," Each peer sends a packet to the other peer's public address. Since a mapping for this address already exists in the NAT (from the connection to the server), the NAT forwards the packet to the appropriate internal address, and a direct connection is established."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"This technique is particularly useful in P2P networks, as it allows peers to communicate directly, reducing the load on relay servers and improving network efficiency. However, it's worth noting that hole punching may not work with all types of NATs, and success can depend on the specific NAT implementation and configuration."}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Reference:"})," ",(0,i.jsx)(n.a,{href:"https://blog.ipfs.tech/2022-01-20-libp2p-hole-punching/",children:"Hole punching in libp2p"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Reference:"})," ",(0,i.jsx)(n.a,{href:"https://tailscale.com/blog/how-nat-traversal-works",children:"How NAT traversal works"})]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},5710:(e,n,s)=>{s.d(n,{R:()=>o,x:()=>l});var i=s(758);const r={},t=i.createContext(r);function o(e){const n=i.useContext(t);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),i.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/964ce0ca.2a2af6f0.js b/assets/js/964ce0ca.2a2af6f0.js new file mode 100644 index 00000000..f41c0686 --- /dev/null +++ b/assets/js/964ce0ca.2a2af6f0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[106],{4552:(e,i,t)=>{t.r(i),t.d(i,{assets:()=>o,contentTitle:()=>s,default:()=>u,frontMatter:()=>p,metadata:()=>l,toc:()=>r});var n=t(6070),a=t(5710);const p={id:"publish-app",title:"Publish App"},s=void 0,l={id:"build/publish-app",title:"Publish App",description:"After you have built your application, you can publish it to the network. This will make it available for users to interact with.",source:"@site/docs/03-build/03-publish-app.mdx",sourceDirName:"03-build",slug:"/build/publish-app",permalink:"/build/publish-app",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1718189423e3,sidebarPosition:3,frontMatter:{id:"publish-app",title:"Publish App"},sidebar:"tutorialSidebar",previous:{title:"TypeScript Client SDK",permalink:"/build/client-sdks/client-ts-sdk"},next:{title:"Github",permalink:"/contribute/github"}},o={},r=[{value:"Publishing application",id:"publishing-application",level:2},{value:"Application preview",id:"application-preview",level:2},{value:"Example app preview",id:"example-app-preview",level:2}];function c(e){const i={a:"a",code:"code",h2:"h2",img:"img",p:"p",...(0,a.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(i.p,{children:"After you have built your application, you can publish it to the network. This will make it available for users to interact with."}),"\n",(0,n.jsx)(i.h2,{id:"publishing-application",children:"Publishing application"}),"\n",(0,n.jsxs)(i.p,{children:["Navigate to ",(0,n.jsx)(i.a,{href:"../explore/developers-quickstart/admin-dashboard",children:"Admin Dashboard"})," and select ",(0,n.jsx)(i.code,{children:"Applications"})," tab."]}),"\n",(0,n.jsx)(i.p,{children:(0,n.jsx)(i.img,{alt:"Publish application",src:t(8617).A+"",width:"1968",height:"1562"})}),"\n",(0,n.jsx)(i.p,{children:"Enter the required data and publish the application. After publishing, your application will be available for users to interact with in new contexts."}),"\n",(0,n.jsx)(i.h2,{id:"application-preview",children:"Application preview"}),"\n",(0,n.jsx)(i.p,{children:"Good practice allows users to try an app before they decide to use it. You can deploy an app to any host provider."}),"\n",(0,n.jsxs)(i.p,{children:["We have used Github Pages to preview our ",(0,n.jsx)(i.a,{href:"../explore/developers-quickstart/example-app",children:"example app"}),". You can do the same by following the steps below."]}),"\n",(0,n.jsx)(i.h2,{id:"example-app-preview",children:"Example app preview"}),"\n",(0,n.jsxs)(i.p,{children:["First you need to enable Github Pages by following ",(0,n.jsx)(i.a,{href:"https://docs.github.com/en/pages/getting-started-with-github-pages/creating-a-github-pages-site",children:"Creating a Github Pages"})]}),"\n",(0,n.jsxs)(i.p,{children:["Our example app is written in next.js and code is available in ",(0,n.jsx)(i.a,{href:"https://github.com/calimero-network/only-peers-client",children:"only-peers-client"}),"\nAfter enabling Github Pages, a few changes are required in your next.js app.\n",(0,n.jsx)(i.code,{children:"next.config.mjs"}),' should contain output: "export" field']}),"\n",(0,n.jsxs)(i.p,{children:["Github Actions is a platform used to automate the deployment process. You can find example in ",(0,n.jsx)(i.a,{href:"https://github.com/calimero-network/only-peers-client/tree/master/.github/workflows",children:"github workflow"})]})]})}function u(e={}){const{wrapper:i}={...(0,a.R)(),...e.components};return i?(0,n.jsx)(i,{...e,children:(0,n.jsx)(c,{...e})}):c(e)}},8617:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/publish-new-application-f4493f9baa5b1dc59d62ab483b52bb65.png"},5710:(e,i,t)=>{t.d(i,{R:()=>s,x:()=>l});var n=t(758);const a={},p=n.createContext(a);function s(e){const i=n.useContext(p);return n.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function l(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:s(e.components),n.createElement(p.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a7456010.d714be23.js b/assets/js/a7456010.d714be23.js new file mode 100644 index 00000000..f6be58ac --- /dev/null +++ b/assets/js/a7456010.d714be23.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[616],{8552:s=>{s.exports=JSON.parse('{"name":"docusaurus-plugin-content-pages","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/a7bd4aaa.9b88e1ff.js b/assets/js/a7bd4aaa.9b88e1ff.js new file mode 100644 index 00000000..d6112068 --- /dev/null +++ b/assets/js/a7bd4aaa.9b88e1ff.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[98],{6829:(n,e,s)=>{s.r(e),s.d(e,{default:()=>d});s(758);var r=s(3896),o=s(5266),t=s(8051),c=s(1977),i=s(2622),u=s(6070);function a(n){const{version:e}=n;return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(i.A,{version:e.version,tag:(0,o.tU)(e.pluginId,e.version)}),(0,u.jsx)(r.be,{children:e.noIndex&&(0,u.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})]})}function l(n){const{version:e,route:s}=n;return(0,u.jsx)(r.e3,{className:e.className,children:(0,u.jsx)(t.n,{version:e,children:(0,c.v)(s.routes)})})}function d(n){return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(a,{...n}),(0,u.jsx)(l,{...n})]})}}}]); \ No newline at end of file diff --git a/assets/js/a94703ab.0743a859.js b/assets/js/a94703ab.0743a859.js new file mode 100644 index 00000000..8e667c0a --- /dev/null +++ b/assets/js/a94703ab.0743a859.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[48],{8034:(e,t,n)=>{n.r(t),n.d(t,{default:()=>be});var a=n(758),o=n(3526),i=n(3896),s=n(2702),l=n(3766),r=n(2987),c=n(7706),d=n(3709),u=n(3403);const m={backToTopButton:"backToTopButton_SKCq",backToTopButtonShow:"backToTopButtonShow_bF2A"};var b=n(6070);function h(){const{shown:e,scrollToTop:t}=function(e){let{threshold:t}=e;const[n,o]=(0,a.useState)(!1),i=(0,a.useRef)(!1),{startScroll:s,cancelScroll:l}=(0,d.gk)();return(0,d.Mq)(((e,n)=>{let{scrollY:a}=e;const s=n?.scrollY;s&&(i.current?i.current=!1:a>=s?(l(),o(!1)):a<t?o(!1):a+window.innerHeight<document.documentElement.scrollHeight&&o(!0))})),(0,u.$)((e=>{e.location.hash&&(i.current=!0,o(!1))})),{shown:n,scrollToTop:()=>s(0)}}({threshold:300});return(0,b.jsx)("button",{"aria-label":(0,c.T)({id:"theme.BackToTopButton.buttonAriaLabel",message:"Scroll back to top",description:"The ARIA label for the back to top button"}),className:(0,o.A)("clean-btn",s.G.common.backToTopButton,m.backToTopButton,e&&m.backToTopButtonShow),type:"button",onClick:t})}var p=n(2838),x=n(5557),f=n(3104),j=n(8949),v=n(1240);function _(e){return(0,b.jsx)("svg",{width:"20",height:"20","aria-hidden":"true",...e,children:(0,b.jsxs)("g",{fill:"#7a7a7a",children:[(0,b.jsx)("path",{d:"M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.55 0-1-.453-1-1 0-.2.059-.403.168-.551l4.629-6.942L.168 3.078A.939.939 0 010 2.528c0-.548.45-.997 1-.997h2.996c.352 0 .649.18.828.45L9.82 9.472c.11.148.172.347.172.55zm0 0"}),(0,b.jsx)("path",{d:"M19.98 10.023c0 .2-.058.399-.168.547l-4.996 7.492a.987.987 0 01-.828.454h-3c-.547 0-.996-.453-.996-1 0-.2.059-.403.168-.551l4.625-6.942-4.625-6.945a.939.939 0 01-.168-.55 1 1 0 01.996-.997h3c.348 0 .649.18.828.45l4.996 7.492c.11.148.168.347.168.55zm0 0"})]})})}const g={collapseSidebarButton:"collapseSidebarButton_JXXE",collapseSidebarButtonIcon:"collapseSidebarButtonIcon_IFmu"};function A(e){let{onClick:t}=e;return(0,b.jsx)("button",{type:"button",title:(0,c.T)({id:"theme.docs.sidebar.collapseButtonTitle",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),"aria-label":(0,c.T)({id:"theme.docs.sidebar.collapseButtonAriaLabel",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),className:(0,o.A)("button button--secondary button--outline",g.collapseSidebarButton),onClick:t,children:(0,b.jsx)(_,{className:g.collapseSidebarButtonIcon})})}var C=n(42),S=n(1495);const k=Symbol("EmptyContext"),T=a.createContext(k);function I(e){let{children:t}=e;const[n,o]=(0,a.useState)(null),i=(0,a.useMemo)((()=>({expandedItem:n,setExpandedItem:o})),[n]);return(0,b.jsx)(T.Provider,{value:i,children:t})}var N=n(1661),B=n(428),y=n(8257),w=n(4272);function E(e){let{collapsed:t,categoryLabel:n,onClick:a}=e;return(0,b.jsx)("button",{"aria-label":t?(0,c.T)({id:"theme.DocSidebarItem.expandCategoryAriaLabel",message:"Expand sidebar category '{label}'",description:"The ARIA label to expand the sidebar category"},{label:n}):(0,c.T)({id:"theme.DocSidebarItem.collapseCategoryAriaLabel",message:"Collapse sidebar category '{label}'",description:"The ARIA label to collapse the sidebar category"},{label:n}),"aria-expanded":!t,type:"button",className:"clean-btn menu__caret",onClick:a})}function L(e){let{item:t,onItemClick:n,activePath:i,level:r,index:c,...d}=e;const{items:u,label:m,collapsible:h,className:p,href:x}=t,{docs:{sidebar:{autoCollapseCategories:f}}}=(0,j.p)(),v=function(e){const t=(0,w.A)();return(0,a.useMemo)((()=>e.href&&!e.linkUnlisted?e.href:!t&&e.collapsible?(0,l.Nr)(e):void 0),[e,t])}(t),_=(0,l.w8)(t,i),g=(0,B.ys)(x,i),{collapsed:A,setCollapsed:C}=(0,N.u)({initialState:()=>!!h&&(!_&&t.collapsed)}),{expandedItem:I,setExpandedItem:L}=function(){const e=(0,a.useContext)(T);if(e===k)throw new S.dV("DocSidebarItemsExpandedStateProvider");return e}(),H=function(e){void 0===e&&(e=!A),L(e?null:c),C(e)};return function(e){let{isActive:t,collapsed:n,updateCollapsed:o}=e;const i=(0,S.ZC)(t);(0,a.useEffect)((()=>{t&&!i&&n&&o(!1)}),[t,i,n,o])}({isActive:_,collapsed:A,updateCollapsed:H}),(0,a.useEffect)((()=>{h&&null!=I&&I!==c&&f&&C(!0)}),[h,I,c,C,f]),(0,b.jsxs)("li",{className:(0,o.A)(s.G.docs.docSidebarItemCategory,s.G.docs.docSidebarItemCategoryLevel(r),"menu__list-item",{"menu__list-item--collapsed":A},p),children:[(0,b.jsxs)("div",{className:(0,o.A)("menu__list-item-collapsible",{"menu__list-item-collapsible--active":g}),children:[(0,b.jsx)(y.A,{className:(0,o.A)("menu__link",{"menu__link--sublist":h,"menu__link--sublist-caret":!x&&h,"menu__link--active":_}),onClick:h?e=>{n?.(t),x?H(!1):(e.preventDefault(),H())}:()=>{n?.(t)},"aria-current":g?"page":void 0,role:h&&!x?"button":void 0,"aria-expanded":h&&!x?!A:void 0,href:h?v??"#":v,...d,children:m}),x&&h&&(0,b.jsx)(E,{collapsed:A,categoryLabel:m,onClick:e=>{e.preventDefault(),H()}})]}),(0,b.jsx)(N.N,{lazy:!0,as:"ul",className:"menu__list",collapsed:A,children:(0,b.jsx)(z,{items:u,tabIndex:A?-1:0,onItemClick:n,activePath:i,level:r+1})})]})}var H=n(8167),M=n(7615);const W={menuExternalLink:"menuExternalLink_T2Zs"};function G(e){let{item:t,onItemClick:n,activePath:a,level:i,index:r,...c}=e;const{href:d,label:u,className:m,autoAddBaseUrl:h}=t,p=(0,l.w8)(t,a),x=(0,H.A)(d);return(0,b.jsx)("li",{className:(0,o.A)(s.G.docs.docSidebarItemLink,s.G.docs.docSidebarItemLinkLevel(i),"menu__list-item",m),children:(0,b.jsxs)(y.A,{className:(0,o.A)("menu__link",!x&&W.menuExternalLink,{"menu__link--active":p}),autoAddBaseUrl:h,"aria-current":p?"page":void 0,to:d,...x&&{onClick:n?()=>n(t):void 0},...c,children:[u,!x&&(0,b.jsx)(M.A,{})]})},u)}const P={menuHtmlItem:"menuHtmlItem_KBjg"};function R(e){let{item:t,level:n,index:a}=e;const{value:i,defaultStyle:l,className:r}=t;return(0,b.jsx)("li",{className:(0,o.A)(s.G.docs.docSidebarItemLink,s.G.docs.docSidebarItemLinkLevel(n),l&&[P.menuHtmlItem,"menu__list-item"],r),dangerouslySetInnerHTML:{__html:i}},a)}function D(e){let{item:t,...n}=e;switch(t.type){case"category":return(0,b.jsx)(L,{item:t,...n});case"html":return(0,b.jsx)(R,{item:t,...n});default:return(0,b.jsx)(G,{item:t,...n})}}function F(e){let{items:t,...n}=e;const a=(0,l.Y)(t,n.activePath);return(0,b.jsx)(I,{children:a.map(((e,t)=>(0,b.jsx)(D,{item:e,index:t,...n},t)))})}const z=(0,a.memo)(F),U={menu:"menu_vdXT",menuWithAnnouncementBar:"menuWithAnnouncementBar_jacn"};function V(e){let{path:t,sidebar:n,className:i}=e;const l=function(){const{isActive:e}=(0,C.M)(),[t,n]=(0,a.useState)(e);return(0,d.Mq)((t=>{let{scrollY:a}=t;e&&n(0===a)}),[e]),e&&t}();return(0,b.jsx)("nav",{"aria-label":(0,c.T)({id:"theme.docs.sidebar.navAriaLabel",message:"Docs sidebar",description:"The ARIA label for the sidebar navigation"}),className:(0,o.A)("menu thin-scrollbar",U.menu,l&&U.menuWithAnnouncementBar,i),children:(0,b.jsx)("ul",{className:(0,o.A)(s.G.docs.docSidebarMenu,"menu__list"),children:(0,b.jsx)(z,{items:n,activePath:t,level:1})})})}const X="sidebar_BlfT",Y="sidebarWithHideableNavbar_HSHF",q="sidebarHidden_I1u8",Z="sidebarLogo_QiBE";function K(e){let{path:t,sidebar:n,onCollapse:a,isHidden:i}=e;const{navbar:{hideOnScroll:s},docs:{sidebar:{hideable:l}}}=(0,j.p)();return(0,b.jsxs)("div",{className:(0,o.A)(X,s&&Y,i&&q),children:[s&&(0,b.jsx)(v.A,{tabIndex:-1,className:Z}),(0,b.jsx)(V,{path:t,sidebar:n}),l&&(0,b.jsx)(A,{onClick:a})]})}const J=a.memo(K);var O=n(6083),Q=n(2483);const $=e=>{let{sidebar:t,path:n}=e;const a=(0,Q.M)();return(0,b.jsx)("ul",{className:(0,o.A)(s.G.docs.docSidebarMenu,"menu__list"),children:(0,b.jsx)(z,{items:t,activePath:n,onItemClick:e=>{"category"===e.type&&e.href&&a.toggle(),"link"===e.type&&a.toggle()},level:1})})};function ee(e){return(0,b.jsx)(O.GX,{component:$,props:e})}const te=a.memo(ee);function ne(e){const t=(0,f.l)(),n="desktop"===t||"ssr"===t,a="mobile"===t;return(0,b.jsxs)(b.Fragment,{children:[n&&(0,b.jsx)(J,{...e}),a&&(0,b.jsx)(te,{...e})]})}const ae={expandButton:"expandButton_J3G9",expandButtonIcon:"expandButtonIcon_tUI1"};function oe(e){let{toggleSidebar:t}=e;return(0,b.jsx)("div",{className:ae.expandButton,title:(0,c.T)({id:"theme.docs.sidebar.expandButtonTitle",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),"aria-label":(0,c.T)({id:"theme.docs.sidebar.expandButtonAriaLabel",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),tabIndex:0,role:"button",onKeyDown:t,onClick:t,children:(0,b.jsx)(_,{className:ae.expandButtonIcon})})}const ie={docSidebarContainer:"docSidebarContainer_cXIi",docSidebarContainerHidden:"docSidebarContainerHidden_ZUk8",sidebarViewport:"sidebarViewport_zEPt"};function se(e){let{children:t}=e;const n=(0,r.t)();return(0,b.jsx)(a.Fragment,{children:t},n?.name??"noSidebar")}function le(e){let{sidebar:t,hiddenSidebarContainer:n,setHiddenSidebarContainer:i}=e;const{pathname:l}=(0,x.zy)(),[r,c]=(0,a.useState)(!1),d=(0,a.useCallback)((()=>{r&&c(!1),!r&&(0,p.O)()&&c(!0),i((e=>!e))}),[i,r]);return(0,b.jsx)("aside",{className:(0,o.A)(s.G.docs.docSidebarContainer,ie.docSidebarContainer,n&&ie.docSidebarContainerHidden),onTransitionEnd:e=>{e.currentTarget.classList.contains(ie.docSidebarContainer)&&n&&c(!0)},children:(0,b.jsx)(se,{children:(0,b.jsxs)("div",{className:(0,o.A)(ie.sidebarViewport,r&&ie.sidebarViewportHidden),children:[(0,b.jsx)(ne,{sidebar:t,path:l,onCollapse:d,isHidden:r}),r&&(0,b.jsx)(oe,{toggleSidebar:d})]})})})}const re={docMainContainer:"docMainContainer_ZDW3",docMainContainerEnhanced:"docMainContainerEnhanced__qER",docItemWrapperEnhanced:"docItemWrapperEnhanced_pzsv"};function ce(e){let{hiddenSidebarContainer:t,children:n}=e;const a=(0,r.t)();return(0,b.jsx)("main",{className:(0,o.A)(re.docMainContainer,(t||!a)&&re.docMainContainerEnhanced),children:(0,b.jsx)("div",{className:(0,o.A)("container padding-top--md padding-bottom--lg",re.docItemWrapper,t&&re.docItemWrapperEnhanced),children:n})})}const de={docRoot:"docRoot_QYMv",docsWrapper:"docsWrapper_xW7h"};function ue(e){let{children:t}=e;const n=(0,r.t)(),[o,i]=(0,a.useState)(!1);return(0,b.jsxs)("div",{className:de.docsWrapper,children:[(0,b.jsx)(h,{}),(0,b.jsxs)("div",{className:de.docRoot,children:[n&&(0,b.jsx)(le,{sidebar:n.items,hiddenSidebarContainer:o,setHiddenSidebarContainer:i}),(0,b.jsx)(ce,{hiddenSidebarContainer:o,children:t})]})]})}var me=n(1906);function be(e){const t=(0,l.B5)(e);if(!t)return(0,b.jsx)(me.A,{});const{docElement:n,sidebarName:a,sidebarItems:c}=t;return(0,b.jsx)(i.e3,{className:(0,o.A)(s.G.page.docsDocPage),children:(0,b.jsx)(r.V,{name:a,items:c,children:(0,b.jsx)(ue,{children:n})})})}},1906:(e,t,n)=>{n.d(t,{A:()=>l});n(758);var a=n(3526),o=n(7706),i=n(9663),s=n(6070);function l(e){let{className:t}=e;return(0,s.jsx)("main",{className:(0,a.A)("container margin-vert--xl",t),children:(0,s.jsx)("div",{className:"row",children:(0,s.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,s.jsx)(i.A,{as:"h1",className:"hero__title",children:(0,s.jsx)(o.A,{id:"theme.NotFound.title",description:"The title of the 404 page",children:"Page Not Found"})}),(0,s.jsx)("p",{children:(0,s.jsx)(o.A,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page",children:"We could not find what you were looking for."})}),(0,s.jsx)("p",{children:(0,s.jsx)(o.A,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page",children:"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."})})]})})})}}}]); \ No newline at end of file diff --git a/assets/js/aba21aa0.eb7bf6f2.js b/assets/js/aba21aa0.eb7bf6f2.js new file mode 100644 index 00000000..8df44791 --- /dev/null +++ b/assets/js/aba21aa0.eb7bf6f2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[742],{7093:s=>{s.exports=JSON.parse('{"name":"docusaurus-plugin-content-docs","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/bf6ec8e5.eeef95cf.js b/assets/js/bf6ec8e5.eeef95cf.js new file mode 100644 index 00000000..642e008a --- /dev/null +++ b/assets/js/bf6ec8e5.eeef95cf.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[607],{8026:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>r,default:()=>h,frontMatter:()=>o,metadata:()=>a,toc:()=>c});var i=t(6070),s=t(5710);const o={id:"identity",title:"Identity"},r=void 0,a={id:"learn/core-concepts/identity",title:"Identity",description:"Key Management",source:"@site/docs/02-learn/03-core-concepts/01-identity (DID).mdx",sourceDirName:"02-learn/03-core-concepts",slug:"/learn/core-concepts/identity",permalink:"/learn/core-concepts/identity",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1718189423e3,sidebarPosition:1,frontMatter:{id:"identity",title:"Identity"},sidebar:"tutorialSidebar",previous:{title:"Terminology",permalink:"/learn/terminology"},next:{title:"Client Node",permalink:"/learn/core-concepts/node/client-node"}},l={},c=[{value:"Key Management",id:"key-management",level:3},{value:"Node Keys",id:"node-keys",level:3},{value:"Application Keys",id:"application-keys",level:3}];function d(e){const n={a:"a",h3:"h3",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h3,{id:"key-management",children:"Key Management"}),"\n",(0,i.jsx)(n.p,{children:"Calimero's key management is centered around two types: Node Keys for node management and Application Keys for app operation. This structure ensures secure, anonymous and decentralized control across the network."}),"\n",(0,i.jsx)(n.h3,{id:"node-keys",children:"Node Keys"}),"\n",(0,i.jsx)(n.p,{children:"Node Keys are used to for node operations which include, add new node keys, identifier listing, and key deletion. Web3 wallets can be used as node keys, easing the setup process."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Key Initialization Process"}),":"]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Starting Without Keys"}),": Initially, nodes have no keys. The addition of the first key is crucial for setting up application identities."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Adding the First Key"}),":","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["In the node admin UI, connect a wallet, such as MetaMask or Near wallets compliant with ",(0,i.jsx)(n.a,{href:"https://github.com/near/NEPs/blob/master/neps/nep-0413.md",children:"NEP-413"}),"."]}),"\n",(0,i.jsx)(n.li,{children:"Sign a challenge from the node and submit the signature."}),"\n",(0,i.jsx)(n.li,{children:"If the signature matches the challenge and the public key, the first node key is added, activating key management capabilities."}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"application-keys",children:"Application Keys"}),"\n",(0,i.jsx)(n.p,{children:"Application Keys initiate applications, with keypairs stored in browser local storage."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Application Key Usage"}),":"]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Key Creation"}),": Users generate a new keypair in their browser."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Verification"}),":","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"A Verifiable Presentation Request is sent to the node, which responds with a challenge."}),"\n",(0,i.jsx)(n.li,{children:"The challenge and public key are signed using the node key."}),"\n",(0,i.jsx)(n.li,{children:"Upon node verification of the request and signature, the new key is cleared for JSONRPC API communication from the browser to the node."}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Calimero's TypeScript SDK supports developers in building browser and CLI applications by simplifying interaction with the network."}),"\n",(0,i.jsx)(n.p,{children:"This key management setup underpins secure and efficient operations within the Calimero Network, facilitating both node and application functionalities."})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},5710:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>a});var i=t(758);const s={},o=i.createContext(s);function r(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d84133a6.7b03dc69.js b/assets/js/d84133a6.7b03dc69.js new file mode 100644 index 00000000..adbd5b9a --- /dev/null +++ b/assets/js/d84133a6.7b03dc69.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[965],{4735:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>d,frontMatter:()=>r,metadata:()=>c,toc:()=>l});var i=t(6070),s=t(5710);const r={id:"client-ts-sdk",title:"TypeScript Client SDK"},o=void 0,c={id:"build/client-sdks/client-ts-sdk",title:"TypeScript Client SDK",description:"Getting Started with Calimero SDK for Typescript",source:"@site/docs/03-build/02-client-sdks/02-client-ts-sdk.mdx",sourceDirName:"03-build/02-client-sdks",slug:"/build/client-sdks/client-ts-sdk",permalink:"/build/client-sdks/client-ts-sdk",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1718189423e3,sidebarPosition:2,frontMatter:{id:"client-ts-sdk",title:"TypeScript Client SDK"},sidebar:"tutorialSidebar",previous:{title:"Rust Protocol SDK",permalink:"/build/protocol-sdks/protocol-rs-sdk"},next:{title:"Publish App",permalink:"/build/publish-app"}},a={},l=[{value:"Getting Started with Calimero SDK for Typescript",id:"getting-started-with-calimero-sdk-for-typescript",level:2},{value:"Components",id:"components",level:3},{value:"RpcClient interface",id:"rpcclient-interface",level:4},{value:"SubscriptionsClient",id:"subscriptionsclient",level:4},{value:"Examples",id:"examples",level:3},{value:"JsonRpcClient",id:"jsonrpcclient",level:4},{value:"WsSubscriptionsClient",id:"wssubscriptionsclient",level:4}];function p(e){const n={code:"code",h2:"h2",h3:"h3",h4:"h4",p:"p",pre:"pre",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h2,{id:"getting-started-with-calimero-sdk-for-typescript",children:"Getting Started with Calimero SDK for Typescript"}),"\n",(0,i.jsx)(n.p,{children:"Our TypeScript Client SDK is a powerful tool designed to simplify the process of interacting with decentralized peer-to-peer applications installed on the node. It serves as an efficient conduit for communication between the client and the node\u2019s server. This SDK is particularly beneficial for developers as it abstracts the complexities of server communication, allowing them to concentrate on the core application logic."}),"\n",(0,i.jsx)(n.p,{children:"The SDK is built with the modern features of TypeScript, a language that is gaining popularity for its static typing and advanced capabilities. By using our SDK, developers can write applications in TypeScript, and the SDK takes care of the rest. It handles all the interactions with the server, making the development process more streamlined and efficient."}),"\n",(0,i.jsx)(n.p,{children:"This not only enhances the overall development experience but also accelerates the deployment of innovative decentralized applications on our network. In essence, our TypeScript SDK is a comprehensive solution that makes building and interacting with decentralized applications a breeze. It\u2019s all about making the development process more enjoyable and productive for developers worldwide."}),"\n",(0,i.jsx)(n.h3,{id:"components",children:"Components"}),"\n",(0,i.jsxs)(n.p,{children:["Our TypeScript Client SDK is composed of two main components: ",(0,i.jsx)(n.code,{children:"RpcClient"})," and ",(0,i.jsx)(n.code,{children:"SubscriptionsClient"}),". Each of these components has an interface and a class that implements the interface. The ",(0,i.jsx)(n.code,{children:"RpcClient"})," interface is implemented by the ",(0,i.jsx)(n.code,{children:"JsonRpcClient"})," class, and the ",(0,i.jsx)(n.code,{children:"SubscriptionsClient"})," interface is implemented by the ",(0,i.jsx)(n.code,{children:"WsSubscriptionsClient"})," class."]}),"\n",(0,i.jsx)(n.p,{children:"These components are designed with flexibility and future growth in mind. While currently there is only one implementation of each interface, we anticipate multiple implementations in the future. This is because our server will have multiple implementations of both the Rpc server and the Subscriptions server. This design allows us to easily add new classes that implement these interfaces as our server capabilities expand."}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"RpcClient"})," and ",(0,i.jsx)(n.code,{children:"SubscriptionsClient"})," interfaces define a standard set of methods that all implementations must provide. This ensures consistency across different implementations, making it easier for developers to switch between different Rpc and Subscriptions servers as needed."]}),"\n",(0,i.jsx)(n.p,{children:"By designing our SDK in this way, we ensure that it remains flexible, scalable, and easy to use, regardless of how our server implementations evolve in the future."}),"\n",(0,i.jsx)(n.h4,{id:"rpcclient-interface",children:"RpcClient interface"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-typescript",children:"export interface RpcClient {\n query<Args, Output>(\n params: RpcQueryParams<Args>,\n config?: RequestConfig\n ): Promise<RpcQueryResponse<Output>>;\n mutate<Args, Output>(\n params: RpcMutateParams<Args>,\n config?: RequestConfig\n ): Promise<RpcMutateResponse<Output>>;\n}\n\nexport interface RequestConfig {\n timeout?: number;\n}\n\nexport interface RpcQueryParams<Args> {\n applicationId: ApplicationId;\n method: string;\n argsJson: Args;\n}\n\nexport interface RpcQueryResponse<Output> {\n output?: Output;\n}\n\nexport interface RpcMutateParams<Args> {\n applicationId: ApplicationId;\n method: string;\n argsJson: Args;\n}\n\nexport interface RpcMutateResponse<Output> {\n output?: Output;\n}\n"})}),"\n",(0,i.jsx)(n.h4,{id:"subscriptionsclient",children:"SubscriptionsClient"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-typescript",children:'export interface SubscriptionsClient {\n connect(connectionId?: string): void;\n disconnect(connectionId?: string): void;\n subscribe(applicationIds: string[], connectionId?: string): void;\n unsubscribe(applicationIds: string[], connectionId?: string): void;\n addCallback(\n callback: (event: NodeEvent) => void,\n connectionId?: string\n ): void;\n removeCallback(\n callback: (event: NodeEvent) => void,\n connectionId?: string\n ): void;\n}\n\nexport type NodeEvent = ApplicationEvent;\n\nexport interface ApplicationEvent {\n application_id: ApplicationId;\n type: "TransactionExecuted" | "PeerJoined";\n data: TransactionExecuted | PeerJoined;\n}\n\nexport interface TransactionExecuted {\n hash: string;\n}\n\nexport interface PeerJoined {\n peerId: string;\n}\n'})}),"\n",(0,i.jsx)(n.h3,{id:"examples",children:"Examples"}),"\n",(0,i.jsx)(n.h4,{id:"jsonrpcclient",children:"JsonRpcClient"}),"\n",(0,i.jsx)(n.p,{children:"Here's an example of how to use it:"}),"\n",(0,i.jsx)(n.p,{children:"Define application endpoint and application id.\nYou can find application id in the Admin Dashboard -> Contexts -> select application id from the context where your app logic is installed"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'NEXT_PUBLIC_API_URL=http://localhost:{NODE_PORT}\nNEXT_PUBLIC_APPLICATION_ID="my-application-id"\n'})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-typescript",children:'// Import the necessary classes and interfaces from the SDK\nimport {\n RpcClient,\n JsonRpcClient,\n RpcMutateParams,\n RpcMutateResponse,\n} from "@calimero-is-near/calimero-p2p-sdk";\n\n// Define the Args and Output interfaces\ninterface CreatePost {\n title: string;\n text: string;\n}\n\ninterface Post {\n id: string;\n title: string;\n text: string;\n}\n\n// Create an instance of JsonRpcClient\nconst rpcClient: RpcClient = new JsonRpcClient(\n process.env["NEXT_PUBLIC_API_URL],\n "/jsonrpc"\n);\n\n// Define the parameters for the mutate\nconst params: RpcMutateParams<CreatePost> = {\n applicationId: process.env["NEXT_PUBLIC_APPLICATION_ID"],\n method: "create_post",\n argsJson: {\n title: "My First Post",\n text: "This is my first post using the TypeScript Client SDK",\n },\n};\n\n// Use the mutate method\nconst respone: RpcMutateResponse<Post> = await rpcClient.mutate<\nCreatePost,\nPost\n\n> (params);\n\nconsole.log(response);\n\n'})}),"\n",(0,i.jsx)(n.h4,{id:"wssubscriptionsclient",children:"WsSubscriptionsClient"}),"\n",(0,i.jsx)(n.p,{children:"Here's an example of how to use it:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-typescript",children:'// Import the necessary classes and interfaces from the SDK\nimport {\n SubscriptionsClient,\n WsSubscriptionsClient,\n NodeEvent,\n} from "@calimero-is-near/calimero-p2p-sdk";\n\n// Create an instance of WsSubscriptionsClient\nconst subscriptionsClient: SubscriptionsClient = new WsSubscriptionsClient(\n process.env["NEXT_PUBLIC_API_URL],\n "/ws"\n);\n\n// Create (default) connection to the server\nawait subscriptionsClient.connect();\n\n// Subscribe to an application events\nsubscriptionsClient.subscribe([process.env["NEXT_PUBLIC_APPLICATION_ID"]]);\n\n// Add a callback to process messages\nsubscriptionsClient.addCallback((data: NodeEvent) => {\n console.log(data);\n});\n'})})]})}function d(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(p,{...e})}):p(e)}},5710:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>c});var i=t(758);const s={},r=i.createContext(s);function o(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/e6fe25da.fce6186c.js b/assets/js/e6fe25da.fce6186c.js new file mode 100644 index 00000000..55e0585a --- /dev/null +++ b/assets/js/e6fe25da.fce6186c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[667],{9601:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>p,frontMatter:()=>o,metadata:()=>s,toc:()=>l});var r=t(6070),i=t(5710);const o={id:"server",title:"Server"},a=void 0,s={id:"learn/core-concepts/node/server",title:"Server",description:"The server is a core component for interacting with a Calimero node. Calimero can be embedded with your client to make it a self-contained node, or it can run as a remote node that multiple clients can connect to, allowing centralized state management.",source:"@site/docs/02-learn/03-core-concepts/02-node/03-server.mdx",sourceDirName:"02-learn/03-core-concepts/02-node",slug:"/learn/core-concepts/node/server",permalink:"/learn/core-concepts/node/server",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1718189423e3,sidebarPosition:3,frontMatter:{id:"server",title:"Server"},sidebar:"tutorialSidebar",previous:{title:"Runtime",permalink:"/learn/core-concepts/node/runtime"},next:{title:"Storage",permalink:"/learn/core-concepts/node/storage"}},c={},l=[{value:"Core Capabilities",id:"core-capabilities",level:3}];function d(e){const n={h3:"h3",li:"li",p:"p",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.p,{children:"The server is a core component for interacting with a Calimero node. Calimero can be embedded with your client to make it a self-contained node, or it can run as a remote node that multiple clients can connect to, allowing centralized state management."}),"\n",(0,r.jsx)(n.h3,{id:"core-capabilities",children:"Core Capabilities"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"JSON-RPC API"}),": Provides a standardized way for clients to query or mutate the state of their counterpart applications on the node, ensuring seamless integration and communication."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"WebSocket Interface"}),": Allows clients to subscribe to events emitted from applications, enabling real-time reactions to activity triggered by other peers in the network."]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Admin API"}),": Manages various aspects of the node, including:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Context Administration"}),": Create, delete, invite others to contexts, and accept invitations."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Storage Management"}),": Track usage, view raw state storage for each context, and view encrypted blobs."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"State Management"}),": Manually garbage collect state-transitional transactions."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Network Management"}),": Manually connect to peers and manage blocklists."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Application Management"}),": Manage installed applications, create contexts from applications, delete applications if no contexts are associated, and manually sideload applications."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Peer Identity Management"}),": Rotate peer identities without affecting context identities."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Node Metrics"}),": Track network bandwidth usage, both total and by context, to manage resource usage effectively."]}),"\n"]}),"\n"]}),"\n"]})]})}function p(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},5710:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>s});var r=t(758);const i={},o=r.createContext(i);function a(e){const n=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),r.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/f582a9aa.776cfdfb.js b/assets/js/f582a9aa.776cfdfb.js new file mode 100644 index 00000000..3d311e64 --- /dev/null +++ b/assets/js/f582a9aa.776cfdfb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[226],{4446:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>o,metadata:()=>a,toc:()=>l});var i=t(6070),s=t(5710);const o={id:"contexts",title:"Contexts"},r=void 0,a={id:"learn/core-concepts/contexts",title:"Contexts",description:"Contexts are the core of the Calimero ecosystem. These are application specific networks designed to enable direct communication between users, eliminating the need for intermediaries. Here's a closer look at how they operate:",source:"@site/docs/02-learn/03-core-concepts/04-context.mdx",sourceDirName:"02-learn/03-core-concepts",slug:"/learn/core-concepts/contexts",permalink:"/learn/core-concepts/contexts",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1718189423e3,sidebarPosition:4,frontMatter:{id:"contexts",title:"Contexts"},sidebar:"tutorialSidebar",previous:{title:"Applications",permalink:"/learn/core-concepts/applications"},next:{title:"Specialized Nodes",permalink:"/learn/advanced-concepts/specialized-nodes"}},c={},l=[{value:"<strong>How Contexts Work:</strong>",id:"how-contexts-work",level:4}];function d(e){const n={h4:"h4",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.p,{children:"Contexts are the core of the Calimero ecosystem. These are application specific networks designed to enable direct communication between users, eliminating the need for intermediaries. Here's a closer look at how they operate:"}),"\n",(0,i.jsx)(n.h4,{id:"how-contexts-work",children:(0,i.jsx)(n.strong,{children:"How Contexts Work:"})}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Initialization"}),": A user selects a WebAssembly (WASM) module from a repository, which contains the logic and rules for the application. With this, they initiate a new Application Network, creating a unique identity for this specific network and setting the initial parameters and update strategies."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Joining the Network"}),":"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Inviting Peers"}),": The initial user can invite others directly or set up Access Control Lists (ACLs) to govern how new members can join the network."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"New Member Process"}),": When a new user joins, they generate a unique identity for the network, download the relevant WASM module, and synchronize with the existing data on the network. This process ensures they're up to speed and ready to engage fully with the network's activities."]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Data Interaction"}),": Within the network, users can query and modify data according to the application's rules. Each Application Network autonomously manages data interactions, ensuring consistency and integrity."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Security and Privacy"}),": All communications within an Application Network are secured with end-to-end encryption, utilizing the Double Ratchet Algorithm. This ensures that data exchanged between peers remains private and secure."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Offline Capability and Consistency"}),": Calimero's design is 'offline-first,' accommodating the reality that peers may not always be online. When a peer goes offline and later returns, they synchronize with the network to update and reconcile any changes, maintaining eventual consistency across the network's state."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Governance and Updates"}),": Application Networks can be governed by the users themselves, with decisions made through a consensus mechanism. Updates to the network, including changes to the WASM module or network parameters, can be proposed and voted on by the network's members."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Extending network capabilities"}),": In addition to the core components of Application Networks, Calimero introduces Specialized Nodes to further enhance network capabilities. These nodes are designed to perform specific functions that go beyond the standard operations of client nodes, such as heavy data processing, advanced encryption tasks, or providing additional storage solutions. They play a crucial role in scaling the network's functionality and performance, ensuring that even as demand grows, the network remains efficient and responsive. Specialized Nodes can be deployed by any participant in the network, including Calimero, third-party developers, or users themselves, offering a flexible and decentralized approach to augmenting the network's capabilities. By leveraging these nodes, Application Networks can meet the diverse needs of different applications, ensuring that each network can be customized and optimized for its unique requirements, all while maintaining the overarching principles of privacy, security, and decentralization inherent to Calimero."]}),"\n"]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},5710:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>a});var i=t(758);const s={},o=i.createContext(s);function r(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/main.e9ab1c16.js b/assets/js/main.e9ab1c16.js new file mode 100644 index 00000000..6a5237ed --- /dev/null +++ b/assets/js/main.e9ab1c16.js @@ -0,0 +1,2 @@ +/*! For license information please see main.e9ab1c16.js.LICENSE.txt */ +(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[792],{1721:(e,t,n)=>{var r={"./prism-bash":8520,"./prism-toml":6290};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=1721},8218:(e,t,n)=>{"use strict";n.d(t,{A:()=>p});n(758);var r=n(2059),a=n.n(r),o=n(4054);const i={"08c23959":[()=>n.e(822).then(n.bind(n,5431)),"@site/docs/03-build/01-protocol-sdks/01-protocol-sdk.mdx",5431],"0b38cd53":[()=>n.e(673).then(n.bind(n,8171)),"@site/docs/02-learn/04-advanced-concepts/01-specialized-nodes.mdx",8171],17896441:[()=>Promise.all([n.e(869),n.e(70),n.e(401)]).then(n.bind(n,9031)),"@theme/DocItem",9031],"190ec3a6":[()=>n.e(707).then(n.bind(n,8202)),"@site/docs/02-learn/03-core-concepts/02-node/admin-api.mdx",8202],"1df93b7f":[()=>Promise.all([n.e(869),n.e(583)]).then(n.bind(n,1938)),"@site/src/pages/index.tsx",1938],"22dd74f7":[()=>n.e(567).then(n.t.bind(n,5226,19)),"@generated/docusaurus-plugin-content-docs/default/p/index-466.json",5226],"23ed0991":[()=>n.e(162).then(n.bind(n,5899)),"@site/docs/02-learn/01-architecture.mdx",5899],"27468b3d":[()=>n.e(235).then(n.bind(n,9642)),"@site/docs/01-explore/04-developers-quickstart/02-admin-dashboard.mdx",9642],"2b77e7d3":[()=>n.e(802).then(n.bind(n,8522)),"@site/docs/03-build/01-protocol-sdks/02-protocol-rs-sdk.mdx",8522],"37e9fbd6":[()=>n.e(193).then(n.bind(n,3591)),"@site/docs/05-resources/02-learning.mdx",3591],"42b3b6e0":[()=>n.e(391).then(n.bind(n,9442)),"@site/docs/01-explore/01-intro.mdx",9442],"47adee10":[()=>n.e(806).then(n.bind(n,3015)),"@site/docs/05-resources/01-community-and-support.mdx",3015],"514a65da":[()=>n.e(182).then(n.bind(n,9830)),"@site/docs/02-learn/03-core-concepts/02-node/04-storage.mdx",9830],"5b892390":[()=>n.e(725).then(n.bind(n,5635)),"@site/docs/02-learn/03-core-concepts/02-node/02-runtime.mdx",5635],"5bb4bac1":[()=>n.e(331).then(n.bind(n,2374)),"@site/docs/04-contribute/01-github.mdx",2374],"5e95c892":[()=>n.e(647).then(n.bind(n,2416)),"@theme/DocsRoot",2416],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,4784)),"@generated/docusaurus.config",4784],"64bee9bd":[()=>n.e(74).then(n.bind(n,9864)),"@site/docs/02-learn/04-advanced-concepts/02-encryption.mdx",9864],"66902dc0":[()=>n.e(811).then(n.bind(n,3259)),"@site/docs/04-contribute/03-bounty-program.mdx",3259],"70d114dd":[()=>n.e(12).then(n.bind(n,5283)),"@site/docs/01-explore/04-developers-quickstart/01-getting-started.mdx",5283],"73ad1aec":[()=>n.e(420).then(n.bind(n,2770)),"@site/docs/02-learn/03-core-concepts/02-node/01-client-node.mdx",2770],"77c0519e":[()=>n.e(636).then(n.bind(n,6197)),"@site/docs/03-build/00-quickstart.mdx",6197],"799afb5f":[()=>n.e(620).then(n.bind(n,6226)),"@site/docs/02-learn/02-terminology.mdx",6226],"90e69b51":[()=>n.e(262).then(n.bind(n,3564)),"@site/docs/04-contribute/02-hackathons.mdx",3564],"910b5ce4":[()=>n.e(968).then(n.bind(n,9625)),"@site/docs/01-explore/04-developers-quickstart/03-example-app.mdx",9625],"9471ce52":[()=>n.e(229).then(n.bind(n,4007)),"@site/docs/02-learn/03-core-concepts/03-applications.mdx",4007],"962e3ea7":[()=>n.e(77).then(n.bind(n,334)),"@site/docs/02-learn/03-core-concepts/02-node/05-network.mdx",334],"964ce0ca":[()=>n.e(106).then(n.bind(n,4552)),"@site/docs/03-build/03-publish-app.mdx",4552],a7456010:[()=>n.e(616).then(n.t.bind(n,8552,19)),"@generated/docusaurus-plugin-content-pages/default/__plugin.json",8552],a7bd4aaa:[()=>n.e(98).then(n.bind(n,6829)),"@theme/DocVersionRoot",6829],a94703ab:[()=>Promise.all([n.e(869),n.e(48)]).then(n.bind(n,8034)),"@theme/DocRoot",8034],aba21aa0:[()=>n.e(742).then(n.t.bind(n,7093,19)),"@generated/docusaurus-plugin-content-docs/default/__plugin.json",7093],bf6ec8e5:[()=>n.e(607).then(n.bind(n,8026)),"@site/docs/02-learn/03-core-concepts/01-identity (DID).mdx",8026],d84133a6:[()=>n.e(965).then(n.bind(n,4735)),"@site/docs/03-build/02-client-sdks/02-client-ts-sdk.mdx",4735],e6fe25da:[()=>n.e(667).then(n.bind(n,9601)),"@site/docs/02-learn/03-core-concepts/02-node/03-server.mdx",9601],f582a9aa:[()=>n.e(226).then(n.bind(n,4446)),"@site/docs/02-learn/03-core-concepts/04-context.mdx",4446]};var l=n(6070);function s(e){let{error:t,retry:n,pastDelay:r}=e;return t?(0,l.jsxs)("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"},children:[(0,l.jsx)("p",{children:String(t)}),(0,l.jsx)("div",{children:(0,l.jsx)("button",{type:"button",onClick:n,children:"Retry"})})]}):r?(0,l.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:(0,l.jsx)("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb",children:(0,l.jsxs)("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2",children:[(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsx)("circle",{cx:"22",cy:"22",r:"8",children:(0,l.jsx)("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"})})]})})}):null}var u=n(7114),c=n(7281);function d(e,t){if("*"===e)return a()({loading:s,loader:()=>n.e(604).then(n.bind(n,3604)),modules:["@theme/NotFound"],webpack:()=>[3604],render(e,t){const n=e.default;return(0,l.jsx)(c.W,{value:{plugin:{name:"native",id:"default"}},children:(0,l.jsx)(n,{...t})})}});const r=o[`${e}-${t}`],d={},p=[],f=[],h=(0,u.A)(r);return Object.entries(h).forEach((e=>{let[t,n]=e;const r=i[n];r&&(d[t]=r[0],p.push(r[1]),f.push(r[2]))})),a().Map({loading:s,loader:d,modules:p,webpack:()=>f,render(t,n){const a=JSON.parse(JSON.stringify(r));Object.entries(t).forEach((t=>{let[n,r]=t;const o=r.default;if(!o)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof o&&"function"!=typeof o||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{o[e]=r[e]}));let i=a;const l=n.split(".");l.slice(0,-1).forEach((e=>{i=i[e]})),i[l[l.length-1]]=o}));const o=a.__comp;delete a.__comp;const i=a.__context;delete a.__context;const s=a.__props;return delete a.__props,(0,l.jsx)(c.W,{value:i,children:(0,l.jsx)(o,{...a,...s,...n})})}})}const p=[{path:"/",component:d("/","e5f"),exact:!0},{path:"/",component:d("/","caf"),routes:[{path:"/",component:d("/","37e"),routes:[{path:"/",component:d("/","ff8"),routes:[{path:"/build/client-sdks/client-ts-sdk",component:d("/build/client-sdks/client-ts-sdk","da5"),exact:!0,sidebar:"tutorialSidebar"},{path:"/build/protocol-sdks/protocol-rs-sdk",component:d("/build/protocol-sdks/protocol-rs-sdk","60b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/build/protocol-sdks/protocol-sdk",component:d("/build/protocol-sdks/protocol-sdk","0a1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/build/publish-app",component:d("/build/publish-app","cd8"),exact:!0,sidebar:"tutorialSidebar"},{path:"/build/quickstart",component:d("/build/quickstart","714"),exact:!0,sidebar:"tutorialSidebar"},{path:"/contribute/bounty-program",component:d("/contribute/bounty-program","6a5"),exact:!0,sidebar:"tutorialSidebar"},{path:"/contribute/github",component:d("/contribute/github","50d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/contribute/hackathons",component:d("/contribute/hackathons","ff1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/explore/developers-quickstart/admin-dashboard",component:d("/explore/developers-quickstart/admin-dashboard","dbb"),exact:!0,sidebar:"tutorialSidebar"},{path:"/explore/developers-quickstart/example-app",component:d("/explore/developers-quickstart/example-app","606"),exact:!0,sidebar:"tutorialSidebar"},{path:"/explore/developers-quickstart/getting-started",component:d("/explore/developers-quickstart/getting-started","f59"),exact:!0,sidebar:"tutorialSidebar"},{path:"/explore/intro",component:d("/explore/intro","d52"),exact:!0,sidebar:"tutorialSidebar"},{path:"/learn/advanced-concepts/encryption",component:d("/learn/advanced-concepts/encryption","0df"),exact:!0,sidebar:"tutorialSidebar"},{path:"/learn/advanced-concepts/specialized-nodes",component:d("/learn/advanced-concepts/specialized-nodes","040"),exact:!0,sidebar:"tutorialSidebar"},{path:"/learn/architecture",component:d("/learn/architecture","ca0"),exact:!0,sidebar:"tutorialSidebar"},{path:"/learn/core-concepts/applications",component:d("/learn/core-concepts/applications","d8b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/learn/core-concepts/contexts",component:d("/learn/core-concepts/contexts","f69"),exact:!0,sidebar:"tutorialSidebar"},{path:"/learn/core-concepts/identity",component:d("/learn/core-concepts/identity","a1b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/learn/core-concepts/node/admin-client-api",component:d("/learn/core-concepts/node/admin-client-api","2d7"),exact:!0,sidebar:"tutorialSidebar"},{path:"/learn/core-concepts/node/client-node",component:d("/learn/core-concepts/node/client-node","027"),exact:!0,sidebar:"tutorialSidebar"},{path:"/learn/core-concepts/node/network",component:d("/learn/core-concepts/node/network","4de"),exact:!0,sidebar:"tutorialSidebar"},{path:"/learn/core-concepts/node/runtime",component:d("/learn/core-concepts/node/runtime","ef7"),exact:!0,sidebar:"tutorialSidebar"},{path:"/learn/core-concepts/node/server",component:d("/learn/core-concepts/node/server","688"),exact:!0,sidebar:"tutorialSidebar"},{path:"/learn/core-concepts/node/storage",component:d("/learn/core-concepts/node/storage","c84"),exact:!0,sidebar:"tutorialSidebar"},{path:"/learn/terminology",component:d("/learn/terminology","7da"),exact:!0,sidebar:"tutorialSidebar"},{path:"/resources/community-and-support",component:d("/resources/community-and-support","26f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/resources/learning",component:d("/resources/learning","b1a"),exact:!0,sidebar:"tutorialSidebar"}]}]}]},{path:"*",component:d("*")}]},3550:(e,t,n)=>{"use strict";n.d(t,{o:()=>o,x:()=>i});var r=n(758),a=n(6070);const o=r.createContext(!1);function i(e){let{children:t}=e;const[n,i]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{i(!0)}),[]),(0,a.jsx)(o.Provider,{value:n,children:t})}},9947:(e,t,n)=>{"use strict";var r=n(758),a=n(9576),o=n(932),i=n(1742),l=n(4784),s=n(9902);const u=[n(3533),n(2409),n(6229),n(6267)];var c=n(8218),d=n(5557),p=n(1977),f=n(6070);function h(e){let{children:t}=e;return(0,f.jsx)(f.Fragment,{children:t})}var m=n(5463),g=n(8765),y=n(1958),b=n(8949),v=n(3896),w=n(5514),k=n(6860),x=n(5266),S=n(1887),E=n(2622);function _(){const{i18n:{currentLocale:e,defaultLocale:t,localeConfigs:n}}=(0,g.A)(),r=(0,w.o)(),a=n[e].htmlLang,o=e=>e.replace("-","_");return(0,f.jsxs)(m.A,{children:[Object.entries(n).map((e=>{let[t,{htmlLang:n}]=e;return(0,f.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:n},t)})),(0,f.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}),(0,f.jsx)("meta",{property:"og:locale",content:o(a)}),Object.values(n).filter((e=>a!==e.htmlLang)).map((e=>(0,f.jsx)("meta",{property:"og:locale:alternate",content:o(e.htmlLang)},`meta-og-${e.htmlLang}`)))]})}function C(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,g.A)(),r=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,g.A)(),{pathname:r}=(0,d.zy)();return e+(0,S.applyTrailingSlash)((0,y.Ay)(r),{trailingSlash:n,baseUrl:t})}(),a=t?`${n}${t}`:r;return(0,f.jsxs)(m.A,{children:[(0,f.jsx)("meta",{property:"og:url",content:a}),(0,f.jsx)("link",{rel:"canonical",href:a})]})}function A(){const{i18n:{currentLocale:e}}=(0,g.A)(),{metadata:t,image:n}=(0,b.p)();return(0,f.jsxs)(f.Fragment,{children:[(0,f.jsxs)(m.A,{children:[(0,f.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,f.jsx)("body",{className:k.w})]}),n&&(0,f.jsx)(v.be,{image:n}),(0,f.jsx)(C,{}),(0,f.jsx)(_,{}),(0,f.jsx)(E.A,{tag:x.Cy,locale:e}),(0,f.jsx)(m.A,{children:t.map(((e,t)=>(0,f.jsx)("meta",{...e},t)))})]})}const T=new Map;var N=n(3550),O=n(3792),L=n(9700);function P(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];const a=u.map((t=>{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>a.forEach((e=>e?.()))}const j=function(e){let{children:t,location:n,previousLocation:r}=e;return(0,L.A)((()=>{r!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,a=t.hash===n.hash,o=t.search===n.search;if(r&&a&&!o)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:r}),P("onRouteDidUpdate",{previousLocation:r,location:n}))}),[r,n]),t};function R(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,p.u)(c.A,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class I extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=s.A.canUseDOM?P("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=P("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),R(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return(0,f.jsx)(j,{previousLocation:this.previousLocation,location:t,children:(0,f.jsx)(d.qh,{location:t,render:()=>e})})}}const D=I,F="__docusaurus-base-url-issue-banner-container",M="__docusaurus-base-url-issue-banner",z="__docusaurus-base-url-issue-banner-suggestion-container";function B(e){return`\ndocument.addEventListener('DOMContentLoaded', function maybeInsertBanner() {\n var shouldInsert = typeof window['docusaurus'] === 'undefined';\n shouldInsert && insertBanner();\n});\n\nfunction insertBanner() {\n var bannerContainer = document.createElement('div');\n bannerContainer.id = '${F}';\n var bannerHtml = ${JSON.stringify(function(e){return`\n<div id="${M}" style="border: thick solid red; background-color: rgb(255, 230, 179); margin: 20px; padding: 20px; font-size: 20px;">\n <p style="font-weight: bold; font-size: 30px;">Your Docusaurus site did not load properly.</p>\n <p>A very common reason is a wrong site <a href="https://docusaurus.io/docs/docusaurus.config.js/#baseUrl" style="font-weight: bold;">baseUrl configuration</a>.</p>\n <p>Current configured baseUrl = <span style="font-weight: bold; color: red;">${e}</span> ${"/"===e?" (default value)":""}</p>\n <p>We suggest trying baseUrl = <span id="${z}" style="font-weight: bold; color: green;"></span></p>\n</div>\n`}(e)).replace(/</g,"\\<")};\n bannerContainer.innerHTML = bannerHtml;\n document.body.prepend(bannerContainer);\n var suggestionContainer = document.getElementById('${z}');\n var actualHomePagePath = window.location.pathname;\n var suggestedBaseUrl = actualHomePagePath.substr(-1) === '/'\n ? actualHomePagePath\n : actualHomePagePath + '/';\n suggestionContainer.innerHTML = suggestedBaseUrl;\n}\n`}function $(){const{siteConfig:{baseUrl:e}}=(0,g.A)();return(0,f.jsx)(f.Fragment,{children:!s.A.canUseDOM&&(0,f.jsx)(m.A,{children:(0,f.jsx)("script",{children:B(e)})})})}function U(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,g.A)(),{pathname:n}=(0,d.zy)();return t&&n===e?(0,f.jsx)($,{}):null}function H(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:r,localeConfigs:a}}=(0,g.A)(),o=(0,y.Ay)(e),{htmlLang:i,direction:l}=a[r];return(0,f.jsxs)(m.A,{children:[(0,f.jsx)("html",{lang:i,dir:l}),(0,f.jsx)("title",{children:t}),(0,f.jsx)("meta",{property:"og:title",content:t}),(0,f.jsx)("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),n&&(0,f.jsx)("meta",{name:"robots",content:"noindex, nofollow"}),e&&(0,f.jsx)("link",{rel:"icon",href:o})]})}var V=n(2264),W=n(4272);function q(){const e=(0,W.A)();return(0,f.jsx)(m.A,{children:(0,f.jsx)("html",{"data-has-hydrated":e})})}const G=(0,p.v)(c.A);function Y(){const e=function(e){if(T.has(e.pathname))return{...e,pathname:T.get(e.pathname)};if((0,p.u)(c.A,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return T.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return T.set(e.pathname,t),{...e,pathname:t}}((0,d.zy)());return(0,f.jsx)(D,{location:e,children:G})}function K(){return(0,f.jsx)(V.A,{children:(0,f.jsx)(O.l,{children:(0,f.jsxs)(N.x,{children:[(0,f.jsxs)(h,{children:[(0,f.jsx)(H,{}),(0,f.jsx)(A,{}),(0,f.jsx)(U,{}),(0,f.jsx)(Y,{})]}),(0,f.jsx)(q,{})]})})})}var Q=n(4054);const Z=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise(((t,n)=>{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const a=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;a?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var X=n(7114);const J=new Set,ee=new Set,te=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,ne={prefetch:e=>{if(!(e=>!te()&&!ee.has(e)&&!J.has(e))(e))return!1;J.add(e);const t=(0,p.u)(c.A,e).flatMap((e=>{return t=e.route.path,Object.entries(Q).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,X.A)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?Z(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!te()&&!ee.has(e))(e)&&(ee.add(e),R(e))},re=Object.freeze(ne);function ae(e){let{children:t}=e;return"hash"===l.default.future.experimental_router?(0,f.jsx)(i.I9,{children:t}):(0,f.jsx)(i.Kd,{children:t})}const oe=Boolean(!0);if(s.A.canUseDOM){window.docusaurus=re;const e=document.getElementById("__docusaurus"),t=(0,f.jsx)(o.vd,{children:(0,f.jsx)(ae,{children:(0,f.jsx)(K,{})})}),n=(e,t)=>{console.error("Docusaurus React Root onRecoverableError:",e,t)},i=()=>{if(window.docusaurusRoot)window.docusaurusRoot.render(t);else if(oe)window.docusaurusRoot=a.hydrateRoot(e,t,{onRecoverableError:n});else{const r=a.createRoot(e,{onRecoverableError:n});r.render(t),window.docusaurusRoot=r}};R(window.location.pathname).then((()=>{(0,r.startTransition)(i)}))}},3792:(e,t,n)=>{"use strict";n.d(t,{o:()=>d,l:()=>p});var r=n(758),a=n(4784);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/","versions":[{"name":"current","label":"Next","isLast":true,"path":"/","mainDocId":"explore/intro","docs":[{"id":"build/client-sdks/client-ts-sdk","path":"/build/client-sdks/client-ts-sdk","sidebar":"tutorialSidebar"},{"id":"build/protocol-sdks/protocol-rs-sdk","path":"/build/protocol-sdks/protocol-rs-sdk","sidebar":"tutorialSidebar"},{"id":"build/protocol-sdks/protocol-sdk","path":"/build/protocol-sdks/protocol-sdk","sidebar":"tutorialSidebar"},{"id":"build/publish-app","path":"/build/publish-app","sidebar":"tutorialSidebar"},{"id":"build/quickstart","path":"/build/quickstart","sidebar":"tutorialSidebar"},{"id":"contribute/bounty-program","path":"/contribute/bounty-program","sidebar":"tutorialSidebar"},{"id":"contribute/github","path":"/contribute/github","sidebar":"tutorialSidebar"},{"id":"contribute/hackathons","path":"/contribute/hackathons","sidebar":"tutorialSidebar"},{"id":"explore/developers-quickstart/admin-dashboard","path":"/explore/developers-quickstart/admin-dashboard","sidebar":"tutorialSidebar"},{"id":"explore/developers-quickstart/example-app","path":"/explore/developers-quickstart/example-app","sidebar":"tutorialSidebar"},{"id":"explore/developers-quickstart/getting-started","path":"/explore/developers-quickstart/getting-started","sidebar":"tutorialSidebar"},{"id":"explore/intro","path":"/explore/intro","sidebar":"tutorialSidebar"},{"id":"learn/advanced-concepts/encryption","path":"/learn/advanced-concepts/encryption","sidebar":"tutorialSidebar"},{"id":"learn/advanced-concepts/specialized-nodes","path":"/learn/advanced-concepts/specialized-nodes","sidebar":"tutorialSidebar"},{"id":"learn/architecture","path":"/learn/architecture","sidebar":"tutorialSidebar"},{"id":"learn/core-concepts/applications","path":"/learn/core-concepts/applications","sidebar":"tutorialSidebar"},{"id":"learn/core-concepts/contexts","path":"/learn/core-concepts/contexts","sidebar":"tutorialSidebar"},{"id":"learn/core-concepts/identity","path":"/learn/core-concepts/identity","sidebar":"tutorialSidebar"},{"id":"learn/core-concepts/node/admin-client-api","path":"/learn/core-concepts/node/admin-client-api","sidebar":"tutorialSidebar"},{"id":"learn/core-concepts/node/client-node","path":"/learn/core-concepts/node/client-node","sidebar":"tutorialSidebar"},{"id":"learn/core-concepts/node/network","path":"/learn/core-concepts/node/network","sidebar":"tutorialSidebar"},{"id":"learn/core-concepts/node/runtime","path":"/learn/core-concepts/node/runtime","sidebar":"tutorialSidebar"},{"id":"learn/core-concepts/node/server","path":"/learn/core-concepts/node/server","sidebar":"tutorialSidebar"},{"id":"learn/core-concepts/node/storage","path":"/learn/core-concepts/node/storage","sidebar":"tutorialSidebar"},{"id":"learn/terminology","path":"/learn/terminology","sidebar":"tutorialSidebar"},{"id":"resources/community-and-support","path":"/resources/community-and-support","sidebar":"tutorialSidebar"},{"id":"resources/learning","path":"/resources/learning","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/explore/intro","label":"explore/intro"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var l=n(2654);const s=JSON.parse('{"docusaurusVersion":"3.4.0","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"3.4.0"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"3.4.0"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"3.4.0"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"3.4.0"},"docusaurus-plugin-sass":{"type":"package","name":"docusaurus-plugin-sass","version":"0.2.5"}}}');var u=n(6070);const c={siteConfig:a.default,siteMetadata:s,globalData:o,i18n:i,codeTranslations:l},d=r.createContext(c);function p(e){let{children:t}=e;return(0,u.jsx)(d.Provider,{value:c,children:t})}},2264:(e,t,n)=>{"use strict";n.d(t,{A:()=>m});var r=n(758),a=n(9902),o=n(5463),i=n(1887),l=n(3086),s=n(7281),u=n(6070);function c(e){let{error:t,tryAgain:n}=e;return(0,u.jsxs)("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"},children:[(0,u.jsx)("h1",{style:{fontSize:"3rem"},children:"This page crashed"}),(0,u.jsx)("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"},children:"Try again"}),(0,u.jsx)(d,{error:t})]})}function d(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,u.jsx)("p",{style:{whiteSpace:"pre-wrap"},children:n})}function p(e){let{children:t}=e;return(0,u.jsx)(s.W,{value:{plugin:{name:"docusaurus-core-error-boundary",id:"default"}},children:t})}function f(e){let{error:t,tryAgain:n}=e;return(0,u.jsx)(p,{children:(0,u.jsxs)(m,{fallback:()=>(0,u.jsx)(c,{error:t,tryAgain:n}),children:[(0,u.jsx)(o.A,{children:(0,u.jsx)("title",{children:"Page Error"})}),(0,u.jsx)(l.A,{children:(0,u.jsx)(c,{error:t,tryAgain:n})})]})})}const h=e=>(0,u.jsx)(f,{...e});class m extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.A.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??h)(e)}return e??null}}},9902:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,a={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},5463:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});n(758);var r=n(932),a=n(6070);function o(e){return(0,a.jsx)(r.mg,{...e})}},8257:(e,t,n)=>{"use strict";n.d(t,{A:()=>f});var r=n(758),a=n(1742),o=n(1887),i=n(8765),l=n(8167),s=n(9902),u=n(1843),c=n(1958),d=n(6070);function p(e,t){let{isNavLink:n,to:p,href:f,activeClassName:h,isActive:m,"data-noBrokenLinkCheck":g,autoAddBaseUrl:y=!0,...b}=e;const{siteConfig:v}=(0,i.A)(),{trailingSlash:w,baseUrl:k}=v,x=v.future.experimental_router,{withBaseUrl:S}=(0,c.hH)(),E=(0,u.A)(),_=(0,r.useRef)(null);(0,r.useImperativeHandle)(t,(()=>_.current));const C=p||f;const A=(0,l.A)(C),T=C?.replace("pathname://","");let N=void 0!==T?(O=T,y&&(e=>e.startsWith("/"))(O)?S(O):O):void 0;var O;"hash"===x&&N?.startsWith("./")&&(N=N?.slice(1)),N&&A&&(N=(0,o.applyTrailingSlash)(N,{trailingSlash:w,baseUrl:k}));const L=(0,r.useRef)(!1),P=n?a.k2:a.N_,j=s.A.canUseIntersectionObserver,R=(0,r.useRef)(),I=()=>{L.current||null==N||(window.docusaurus.preload(N),L.current=!0)};(0,r.useEffect)((()=>(!j&&A&&null!=N&&window.docusaurus.prefetch(N),()=>{j&&R.current&&R.current.disconnect()})),[R,N,j,A]);const D=N?.startsWith("#")??!1,F=!b.target||"_self"===b.target,M=!N||!A||!F;return g||!D&&M||E.collectLink(N),b.id&&E.collectAnchor(b.id),M?(0,d.jsx)("a",{ref:_,href:N,...C&&!A&&{target:"_blank",rel:"noopener noreferrer"},...b}):(0,d.jsx)(P,{...b,onMouseEnter:I,onTouchStart:I,innerRef:e=>{_.current=e,j&&e&&A&&(R.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(R.current.unobserve(e),R.current.disconnect(),null!=N&&window.docusaurus.prefetch(N))}))})),R.current.observe(e))},to:N,...n&&{isActive:m,activeClassName:h}})}const f=r.forwardRef(p)},8525:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});const r=()=>null},7706:(e,t,n)=>{"use strict";n.d(t,{A:()=>u,T:()=>s});var r=n(758),a=n(6070);function o(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var i=n(2654);function l(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return i[t??n]??n??t}function s(e,t){let{message:n,id:r}=e;return o(l({message:n,id:r}),t)}function u(e){let{children:t,id:n,values:r}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal <Translate> children",t),new Error("The Docusaurus <Translate> component only accept simple string values");const i=l({message:t,id:n});return(0,a.jsx)(a.Fragment,{children:o(i,r)})}},76:(e,t,n)=>{"use strict";n.d(t,{W:()=>r});const r="default"},8167:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{A:()=>a,z:()=>r})},1958:(e,t,n)=>{"use strict";n.d(t,{Ay:()=>l,hH:()=>i});var r=n(758),a=n(8765),o=n(8167);function i(){const{siteConfig:e}=(0,a.A)(),{baseUrl:t,url:n}=e,i=e.future.experimental_router,l=(0,r.useCallback)(((e,r)=>function(e){let{siteUrl:t,baseUrl:n,url:r,options:{forcePrependBaseUrl:a=!1,absolute:i=!1}={},router:l}=e;if(!r||r.startsWith("#")||(0,o.z)(r))return r;if("hash"===l)return r.startsWith("/")?`.${r}`:`./${r}`;if(a)return n+r.replace(/^\//,"");if(r===n.replace(/\/$/,""))return n;const s=r.startsWith(n)?r:n+r.replace(/^\//,"");return i?t+s:s}({siteUrl:n,baseUrl:t,url:e,options:r,router:i})),[n,t,i]);return{withBaseUrl:l}}function l(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},1843:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var r=n(758);n(6070);const a=r.createContext({collectAnchor:()=>{},collectLink:()=>{}}),o=()=>(0,r.useContext)(a);function i(){return o()}},8765:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(758),a=n(3792);function o(){return(0,r.useContext)(a.o)}},4272:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(758),a=n(3550);function o(){return(0,r.useContext)(a.o)}},9700:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=n(758);const a=n(9902).A.canUseDOM?r.useLayoutEffect:r.useEffect},7114:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function a(e){const t={};return function e(n,a){Object.entries(n).forEach((n=>{let[o,i]=n;const l=a?`${a}.${o}`:o;r(i)?e(i,l):t[l]=i}))}(e),t}},7281:(e,t,n)=>{"use strict";n.d(t,{W:()=>i,o:()=>o});var r=n(758),a=n(6070);const o=r.createContext(null);function i(e){let{children:t,value:n}=e;const i=r.useContext(o),l=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:i,value:n})),[i,n]);return(0,a.jsx)(o.Provider,{value:l,children:t})}},2907:(e,t,n)=>{"use strict";n.d(t,{zK:()=>m,vT:()=>p,Gy:()=>c,HW:()=>g,ht:()=>d,r7:()=>h,jh:()=>f});var r=n(5557),a=n(8765),o=n(76);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,a.A)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const l=e=>e.versions.find((e=>e.isLast));function s(e,t){const n=function(e,t){const n=l(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.B6)(t,{path:e.path,exact:!1,strict:!1})))}(e,t),a=n?.docs.find((e=>!!(0,r.B6)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:a,alternateDocVersions:a?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(a.id):{}}}const u={},c=()=>i("docusaurus-plugin-content-docs")??u,d=e=>{try{return function(e,t,n){void 0===t&&(t=o.W),void 0===n&&(n={});const r=i(e),a=r?.[t];if(!a&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return a}("docusaurus-plugin-content-docs",e,{failfast:!0})}catch(t){throw new Error("You are using a feature of the Docusaurus docs plugin, but this plugin does not seem to be enabled"+("Default"===e?"":` (pluginId=${e}`),{cause:t})}};function p(e){void 0===e&&(e={});const t=c(),{pathname:n}=(0,r.zy)();return function(e,t,n){void 0===n&&(n={});const a=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.B6)(t,{path:n.path,exact:!1,strict:!1})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return o}(t,n,e)}function f(e){return d(e).versions}function h(e){const t=d(e);return l(t)}function m(e){const t=d(e),{pathname:n}=(0,r.zy)();return s(t,n)}function g(e){const t=d(e),{pathname:n}=(0,r.zy)();return function(e,t){const n=l(e);return{latestDocSuggestion:s(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},2059:(e,t,n)=>{"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function a(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i.apply(this,arguments)}var l=n(758),s=[],u=[];var c=l.createContext(null);function d(e){var t=e(),n={loading:!0,loaded:null,error:null};return n.promise=t.then((function(e){return n.loading=!1,n.loaded=e,e})).catch((function(e){throw n.loading=!1,n.error=e,e})),n}function p(e){var t={loading:!1,loaded:{},error:null},n=[];try{Object.keys(e).forEach((function(r){var a=d(e[r]);a.loading?t.loading=!0:(t.loaded[r]=a.loaded,t.error=a.error),n.push(a.promise),a.promise.then((function(e){t.loaded[r]=e})).catch((function(e){t.error=e}))}))}catch(r){t.error=r}return t.promise=Promise.all(n).then((function(e){return t.loading=!1,e})).catch((function(e){throw t.loading=!1,e})),t}function f(e,t){return l.createElement((n=e)&&n.__esModule?n.default:n,t);var n}function h(e,t){var d,p;if(!t.loading)throw new Error("react-loadable requires a `loading` component");var h=i({loader:null,loading:null,delay:200,timeout:null,render:f,webpack:null,modules:null},t),m=null;function g(){return m||(m=e(h.loader)),m.promise}return s.push(g),"function"==typeof h.webpack&&u.push((function(){if((0,h.webpack)().every((function(e){return void 0!==e&&void 0!==n.m[e]})))return g()})),p=d=function(t){function n(n){var r;return o(a(a(r=t.call(this,n)||this)),"retry",(function(){r.setState({error:null,loading:!0,timedOut:!1}),m=e(h.loader),r._loadModule()})),g(),r.state={error:m.error,pastDelay:!1,timedOut:!1,loading:m.loading,loaded:m.loaded},r}r(n,t),n.preload=function(){return g()};var i=n.prototype;return i.UNSAFE_componentWillMount=function(){this._loadModule()},i.componentDidMount=function(){this._mounted=!0},i._loadModule=function(){var e=this;if(this.context&&Array.isArray(h.modules)&&h.modules.forEach((function(t){e.context.report(t)})),m.loading){var t=function(t){e._mounted&&e.setState(t)};"number"==typeof h.delay&&(0===h.delay?this.setState({pastDelay:!0}):this._delay=setTimeout((function(){t({pastDelay:!0})}),h.delay)),"number"==typeof h.timeout&&(this._timeout=setTimeout((function(){t({timedOut:!0})}),h.timeout));var n=function(){t({error:m.error,loaded:m.loaded,loading:m.loading}),e._clearTimeouts()};m.promise.then((function(){return n(),null})).catch((function(e){return n(),null}))}},i.componentWillUnmount=function(){this._mounted=!1,this._clearTimeouts()},i._clearTimeouts=function(){clearTimeout(this._delay),clearTimeout(this._timeout)},i.render=function(){return this.state.loading||this.state.error?l.createElement(h.loading,{isLoading:this.state.loading,pastDelay:this.state.pastDelay,timedOut:this.state.timedOut,error:this.state.error,retry:this.retry}):this.state.loaded?h.render(this.state.loaded,this.props):null},n}(l.Component),o(d,"contextType",c),p}function m(e){return h(d,e)}m.Map=function(e){if("function"!=typeof e.render)throw new Error("LoadableMap requires a `render(loaded, props)` function");return h(p,e)};var g=function(e){function t(){return e.apply(this,arguments)||this}return r(t,e),t.prototype.render=function(){return l.createElement(c.Provider,{value:{report:this.props.report}},l.Children.only(this.props.children))},t}(l.Component);function y(e){for(var t=[];e.length;){var n=e.pop();t.push(n())}return Promise.all(t).then((function(){if(e.length)return y(e)}))}m.Capture=g,m.preloadAll=function(){return new Promise((function(e,t){y(s).then(e,t)}))},m.preloadReady=function(){return new Promise((function(e,t){y(u).then(e,e)}))},e.exports=m},6229:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(8744),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{a().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){a().done()}}},2409:(e,t,n)=>{"use strict";n.r(t);var r=n(3477),a=n(4784);!function(e){const{themeConfig:{prism:t}}=a.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{"php"===e&&n(1274),n(1721)(`./prism-${e}`)})),delete globalThis.Prism}(r.My)},9663:(e,t,n)=>{"use strict";n.d(t,{A:()=>c});n(758);var r=n(3526),a=n(7706),o=n(8949),i=n(8257),l=n(1843);const s={anchorWithStickyNavbar:"anchorWithStickyNavbar_UcM0",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_J7iO"};var u=n(6070);function c(e){let{as:t,id:n,...c}=e;const d=(0,l.A)(),{navbar:{hideOnScroll:p}}=(0,o.p)();if("h1"===t||!n)return(0,u.jsx)(t,{...c,id:void 0});d.collectAnchor(n);const f=(0,a.T)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof c.children?c.children:n});return(0,u.jsxs)(t,{...c,className:(0,r.A)("anchor",p?s.anchorWithHideOnScrollNavbar:s.anchorWithStickyNavbar,c.className),id:n,children:[c.children,(0,u.jsx)(i.A,{className:"hash-link",to:`#${n}`,"aria-label":f,title:f,children:"\u200b"})]})}},7615:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});n(758);const r={iconExternalLink:"iconExternalLink_lhLb"};var a=n(6070);function o(e){let{width:t=13.5,height:n=13.5}=e;return(0,a.jsx)("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:r.iconExternalLink,children:(0,a.jsx)("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"})})}},3086:(e,t,n)=>{"use strict";n.d(t,{A:()=>ft});var r=n(758),a=n(3526),o=n(2264),i=n(3896),l=n(5557),s=n(7706),u=n(3403),c=n(6070);const d="__docusaurus_skipToContent_fallback";function p(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,r.useRef)(null),{action:t}=(0,l.W6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&p(t)}),[]);return(0,u.$)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&p(e.current)})),{containerRef:e,onClick:n}}const h=(0,s.T)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function m(e){const t=e.children??h,{containerRef:n,onClick:r}=f();return(0,c.jsx)("div",{ref:n,role:"region","aria-label":h,children:(0,c.jsx)("a",{...e,href:`#${d}`,onClick:r,children:t})})}var g=n(2702),y=n(6860);const b={skipToContent:"skipToContent_fesW"};function v(){return(0,c.jsx)(m,{className:b.skipToContent})}var w=n(8949),k=n(42);function x(e){let{width:t=21,height:n=21,color:r="currentColor",strokeWidth:a=1.2,className:o,...i}=e;return(0,c.jsx)("svg",{viewBox:"0 0 15 15",width:t,height:n,...i,children:(0,c.jsx)("g",{stroke:r,strokeWidth:a,children:(0,c.jsx)("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})})})}const S={closeButton:"closeButton_xLEJ"};function E(e){return(0,c.jsx)("button",{type:"button","aria-label":(0,s.T)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"}),...e,className:(0,a.A)("clean-btn close",S.closeButton,e.className),children:(0,c.jsx)(x,{width:14,height:14,strokeWidth:3.1})})}const _={content:"content_BFwO"};function C(e){const{announcementBar:t}=(0,w.p)(),{content:n}=t;return(0,c.jsx)("div",{...e,className:(0,a.A)(_.content,e.className),dangerouslySetInnerHTML:{__html:n}})}const A={announcementBar:"announcementBar_iltt",announcementBarPlaceholder:"announcementBarPlaceholder_uEZi",announcementBarClose:"announcementBarClose__T52",announcementBarContent:"announcementBarContent_YFhr"};function T(){const{announcementBar:e}=(0,w.p)(),{isActive:t,close:n}=(0,k.M)();if(!t)return null;const{backgroundColor:r,textColor:a,isCloseable:o}=e;return(0,c.jsxs)("div",{className:A.announcementBar,style:{backgroundColor:r,color:a},role:"banner",children:[o&&(0,c.jsx)("div",{className:A.announcementBarPlaceholder}),(0,c.jsx)(C,{className:A.announcementBarContent}),o&&(0,c.jsx)(E,{onClick:n,className:A.announcementBarClose})]})}var N=n(2483),O=n(3709);var L=n(1495),P=n(6083);const j=r.createContext(null);function R(e){let{children:t}=e;const n=function(){const e=(0,N.M)(),t=(0,P.YL)(),[n,a]=(0,r.useState)(!1),o=null!==t.component,i=(0,L.ZC)(o);return(0,r.useEffect)((()=>{o&&!i&&a(!0)}),[o,i]),(0,r.useEffect)((()=>{o?e.shown||a(!0):a(!1)}),[e.shown,o]),(0,r.useMemo)((()=>[n,a]),[n])}();return(0,c.jsx)(j.Provider,{value:n,children:t})}function I(e){if(e.component){const t=e.component;return(0,c.jsx)(t,{...e.props})}}function D(){const e=(0,r.useContext)(j);if(!e)throw new L.dV("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,a=(0,r.useCallback)((()=>n(!1)),[n]),o=(0,P.YL)();return(0,r.useMemo)((()=>({shown:t,hide:a,content:I(o)})),[a,o,t])}function F(e){let{header:t,primaryMenu:n,secondaryMenu:r}=e;const{shown:o}=D();return(0,c.jsxs)("div",{className:"navbar-sidebar",children:[t,(0,c.jsxs)("div",{className:(0,a.A)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":o}),children:[(0,c.jsx)("div",{className:"navbar-sidebar__item menu",children:n}),(0,c.jsx)("div",{className:"navbar-sidebar__item menu",children:r})]})]})}var M=n(1382),z=n(4272);function B(e){return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,c.jsx)("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"})})}function $(e){return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,c.jsx)("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"})})}const U={toggle:"toggle_aafI",toggleButton:"toggleButton_Nz89",darkToggleIcon:"darkToggleIcon_F1FA",lightToggleIcon:"lightToggleIcon_kqLD",toggleButtonDisabled:"toggleButtonDisabled_T1FS"};function H(e){let{className:t,buttonClassName:n,value:r,onChange:o}=e;const i=(0,z.A)(),l=(0,s.T)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===r?(0,s.T)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,s.T)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return(0,c.jsx)("div",{className:(0,a.A)(U.toggle,t),children:(0,c.jsxs)("button",{className:(0,a.A)("clean-btn",U.toggleButton,!i&&U.toggleButtonDisabled,n),type:"button",onClick:()=>o("dark"===r?"light":"dark"),disabled:!i,title:l,"aria-label":l,"aria-live":"polite",children:[(0,c.jsx)(B,{className:(0,a.A)(U.toggleIcon,U.lightToggleIcon)}),(0,c.jsx)($,{className:(0,a.A)(U.toggleIcon,U.darkToggleIcon)})]})})}const V=r.memo(H),W={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_eWwK"};function q(e){let{className:t}=e;const n=(0,w.p)().navbar.style,r=(0,w.p)().colorMode.disableSwitch,{colorMode:a,setColorMode:o}=(0,M.G)();return r?null:(0,c.jsx)(V,{className:t,buttonClassName:"dark"===n?W.darkNavbarColorModeToggle:void 0,value:a,onChange:o})}var G=n(1240);function Y(){return(0,c.jsx)(G.A,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function K(){const e=(0,N.M)();return(0,c.jsx)("button",{type:"button","aria-label":(0,s.T)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle(),children:(0,c.jsx)(x,{color:"var(--ifm-color-emphasis-600)"})})}function Q(){return(0,c.jsxs)("div",{className:"navbar-sidebar__brand",children:[(0,c.jsx)(Y,{}),(0,c.jsx)(q,{className:"margin-right--md"}),(0,c.jsx)(K,{})]})}var Z=n(8257),X=n(1958),J=n(8167);function ee(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var te=n(7615);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:r,href:a,label:o,html:i,isDropdownLink:l,prependBaseUrlToHref:s,...u}=e;const d=(0,X.Ay)(r),p=(0,X.Ay)(t),f=(0,X.Ay)(a,{forcePrependBaseUrl:!0}),h=o&&a&&!(0,J.A)(a),m=i?{dangerouslySetInnerHTML:{__html:i}}:{children:(0,c.jsxs)(c.Fragment,{children:[o,h&&(0,c.jsx)(te.A,{...l&&{width:12,height:12}})]})};return a?(0,c.jsx)(Z.A,{href:s?f:a,...u,...m}):(0,c.jsx)(Z.A,{to:d,isNavLink:!0,...(t||n)&&{isActive:(e,t)=>n?ee(n,t.pathname):t.pathname.startsWith(p)},...u,...m})}function re(e){let{className:t,isDropdownItem:n=!1,...r}=e;const o=(0,c.jsx)(ne,{className:(0,a.A)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n,...r});return n?(0,c.jsx)("li",{children:o}):o}function ae(e){let{className:t,isDropdownItem:n,...r}=e;return(0,c.jsx)("li",{className:"menu__list-item",children:(0,c.jsx)(ne,{className:(0,a.A)("menu__link",t),...r})})}function oe(e){let{mobile:t=!1,position:n,...r}=e;const a=t?ae:re;return(0,c.jsx)(a,{...r,activeClassName:r.activeClassName??(t?"menu__link--active":"navbar__link--active")})}var ie=n(1661),le=n(428),se=n(8765);const ue={dropdownNavbarItemMobile:"dropdownNavbarItemMobile_xkDW"};function ce(e,t){return e.some((e=>function(e,t){return!!(0,le.ys)(e.to,t)||!!ee(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function de(e){let{items:t,position:n,className:o,onClick:i,...l}=e;const s=(0,r.useRef)(null),[u,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{s.current&&!s.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[s]),(0,c.jsxs)("div",{ref:s,className:(0,a.A)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":u}),children:[(0,c.jsx)(ne,{"aria-haspopup":"true","aria-expanded":u,role:"button",href:l.to?void 0:"#",className:(0,a.A)("navbar__link",o),...l,onClick:l.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!u))},children:l.children??l.label}),(0,c.jsx)("ul",{className:"dropdown__menu",children:t.map(((e,t)=>(0,r.createElement)(_e,{isDropdownItem:!0,activeClassName:"dropdown__link--active",...e,key:t})))})]})}function pe(e){let{items:t,className:n,position:o,onClick:i,...s}=e;const u=function(){const{siteConfig:{baseUrl:e}}=(0,se.A)(),{pathname:t}=(0,l.zy)();return t.replace(e,"/")}(),d=ce(t,u),{collapsed:p,toggleCollapsed:f,setCollapsed:h}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&h(!d)}),[u,d,h]),(0,c.jsxs)("li",{className:(0,a.A)("menu__list-item",{"menu__list-item--collapsed":p}),children:[(0,c.jsx)(ne,{role:"button",className:(0,a.A)(ue.dropdownNavbarItemMobile,"menu__link menu__link--sublist menu__link--sublist-caret",n),...s,onClick:e=>{e.preventDefault(),f()},children:s.children??s.label}),(0,c.jsx)(ie.N,{lazy:!0,as:"ul",className:"menu__list",collapsed:p,children:t.map(((e,t)=>(0,r.createElement)(_e,{mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active",...e,key:t})))})]})}function fe(e){let{mobile:t=!1,...n}=e;const r=t?pe:de;return(0,c.jsx)(r,{...n})}var he=n(5514);function me(e){let{width:t=20,height:n=20,...r}=e;return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0,...r,children:(0,c.jsx)("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"})})}const ge="iconLanguage__rYD";var ye=n(8525);const be={navbarSearchContainer:"navbarSearchContainer_VT3I"};function ve(e){let{children:t,className:n}=e;return(0,c.jsx)("div",{className:(0,a.A)(n,be.navbarSearchContainer),children:t})}var we=n(2907),ke=n(3766);var xe=n(6804);const Se=e=>e.docs.find((t=>t.id===e.mainDocId));const Ee={default:oe,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:r,queryString:a="",...o}=e;const{i18n:{currentLocale:i,locales:u,localeConfigs:d}}=(0,se.A)(),p=(0,he.o)(),{search:f,hash:h}=(0,l.zy)(),m=[...n,...u.map((e=>{const n=`${`pathname://${p.createUrl({locale:e,fullyQualified:!1})}`}${f}${h}${a}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...r],g=t?(0,s.T)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return(0,c.jsx)(fe,{...o,mobile:t,label:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(me,{className:ge}),g]}),items:m})},search:function(e){let{mobile:t,className:n}=e;return t?null:(0,c.jsx)(ve,{className:n,children:(0,c.jsx)(ye.A,{})})},dropdown:fe,html:function(e){let{value:t,className:n,mobile:r=!1,isDropdownItem:o=!1}=e;const i=o?"li":"div";return(0,c.jsx)(i,{className:(0,a.A)({navbar__item:!r&&!o,"menu__list-item":r},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:r,...a}=e;const{activeDoc:o}=(0,we.zK)(r),i=(0,ke.QB)(t,r),l=o?.path===i?.path;return null===i||i.unlisted&&!l?null:(0,c.jsx)(oe,{exact:!0,...a,isActive:()=>l||!!o?.sidebar&&o.sidebar===i.sidebar,label:n??i.id,to:i.path})},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:r,...a}=e;const{activeDoc:o}=(0,we.zK)(r),i=(0,ke.fW)(t,r).link;if(!i)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return(0,c.jsx)(oe,{exact:!0,...a,isActive:()=>o?.sidebar===t,label:n??i.label,to:i.path})},docsVersion:function(e){let{label:t,to:n,docsPluginId:r,...a}=e;const o=(0,ke.Vd)(r)[0],i=t??o.label,l=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(o).path;return(0,c.jsx)(oe,{...a,label:i,to:l})},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:r,dropdownItemsBefore:a,dropdownItemsAfter:o,...i}=e;const{search:u,hash:d}=(0,l.zy)(),p=(0,we.zK)(n),f=(0,we.jh)(n),{savePreferredVersionName:h}=(0,xe.g1)(n),m=[...a,...f.map((e=>{const t=p.alternateDocVersions[e.name]??Se(e);return{label:e.label,to:`${t.path}${u}${d}`,isActive:()=>e===p.activeVersion,onClick:()=>h(e.name)}})),...o],g=(0,ke.Vd)(n)[0],y=t&&m.length>1?(0,s.T)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):g.label,b=t&&m.length>1?void 0:Se(g).path;return m.length<=1?(0,c.jsx)(oe,{...i,mobile:t,label:y,to:b,isActive:r?()=>!1:void 0}):(0,c.jsx)(fe,{...i,mobile:t,label:y,to:b,items:m,isActive:r?()=>!1:void 0})}};function _e(e){let{type:t,...n}=e;const r=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),a=Ee[r];if(!a)throw new Error(`No NavbarItem component found for type "${t}".`);return(0,c.jsx)(a,{...n})}function Ce(){const e=(0,N.M)(),t=(0,w.p)().navbar.items;return(0,c.jsx)("ul",{className:"menu__list",children:t.map(((t,n)=>(0,r.createElement)(_e,{mobile:!0,...t,onClick:()=>e.toggle(),key:n})))})}function Ae(e){return(0,c.jsx)("button",{...e,type:"button",className:"clean-btn navbar-sidebar__back",children:(0,c.jsx)(s.A,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)",children:"\u2190 Back to main menu"})})}function Te(){const e=0===(0,w.p)().navbar.items.length,t=D();return(0,c.jsxs)(c.Fragment,{children:[!e&&(0,c.jsx)(Ae,{onClick:()=>t.hide()}),t.content]})}function Ne(){const e=(0,N.M)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?(0,c.jsx)(F,{header:(0,c.jsx)(Q,{}),primaryMenu:(0,c.jsx)(Ce,{}),secondaryMenu:(0,c.jsx)(Te,{})}):null}const Oe={navbarHideable:"navbarHideable_Bm2L",navbarHidden:"navbarHidden_e6Mv"};function Le(e){return(0,c.jsx)("div",{role:"presentation",...e,className:(0,a.A)("navbar-sidebar__backdrop",e.className)})}function Pe(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:o}}=(0,w.p)(),i=(0,N.M)(),{navbarRef:l,isNavbarVisible:d}=function(e){const[t,n]=(0,r.useState)(e),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(o.current=e.getBoundingClientRect().height)}),[]);return(0,O.Mq)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i<o.current)return void n(!0);if(a.current)return void(a.current=!1);const l=r?.scrollY,s=document.documentElement.scrollHeight-o.current,u=window.innerHeight;l&&i>=l?n(!1):i+u<s&&n(!0)})),(0,u.$)((t=>{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return a.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return(0,c.jsxs)("nav",{ref:l,"aria-label":(0,s.T)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,a.A)("navbar","navbar--fixed-top",n&&[Oe.navbarHideable,!d&&Oe.navbarHidden],{"navbar--dark":"dark"===o,"navbar--primary":"primary"===o,"navbar-sidebar--show":i.shown}),children:[t,(0,c.jsx)(Le,{onClick:i.toggle}),(0,c.jsx)(Ne,{})]})}var je=n(1887);const Re={errorBoundaryError:"errorBoundaryError_PDGB",errorBoundaryFallback:"errorBoundaryFallback_CQoQ"};function Ie(e){return(0,c.jsx)("button",{type:"button",...e,children:(0,c.jsx)(s.A,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error",children:"Try again"})})}function De(e){let{error:t}=e;const n=(0,je.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,c.jsx)("p",{className:Re.errorBoundaryError,children:n})}class Fe extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}const Me="right";function ze(e){let{width:t=30,height:n=30,className:r,...a}=e;return(0,c.jsx)("svg",{className:r,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true",...a,children:(0,c.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"})})}function Be(){const{toggle:e,shown:t}=(0,N.M)();return(0,c.jsx)("button",{onClick:e,"aria-label":(0,s.T)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button",children:(0,c.jsx)(ze,{})})}const $e={colorModeToggle:"colorModeToggle_LBc1"};function Ue(e){let{items:t}=e;return(0,c.jsx)(c.Fragment,{children:t.map(((e,t)=>(0,c.jsx)(Fe,{onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t}),children:(0,c.jsx)(_e,{...e})},t)))})}function He(e){let{left:t,right:n}=e;return(0,c.jsxs)("div",{className:"navbar__inner",children:[(0,c.jsx)("div",{className:"navbar__items",children:t}),(0,c.jsx)("div",{className:"navbar__items navbar__items--right",children:n})]})}function Ve(){const e=(0,N.M)(),t=(0,w.p)().navbar.items,[n,r]=function(e){function t(e){return"left"===(e.position??Me)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),a=t.find((e=>"search"===e.type));return(0,c.jsx)(He,{left:(0,c.jsxs)(c.Fragment,{children:[!e.disabled&&(0,c.jsx)(Be,{}),(0,c.jsx)(Y,{}),(0,c.jsx)(Ue,{items:n})]}),right:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(Ue,{items:r}),(0,c.jsx)(q,{className:$e.colorModeToggle}),!a&&(0,c.jsx)(ve,{children:(0,c.jsx)(ye.A,{})})]})})}function We(){return(0,c.jsx)(Pe,{children:(0,c.jsx)(Ve,{})})}function qe(e){let{item:t}=e;const{to:n,href:r,label:a,prependBaseUrlToHref:o,...i}=t,l=(0,X.Ay)(n),s=(0,X.Ay)(r,{forcePrependBaseUrl:!0});return(0,c.jsxs)(Z.A,{className:"footer__link-item",...r?{href:o?s:r}:{to:l},...i,children:[a,r&&!(0,J.A)(r)&&(0,c.jsx)(te.A,{})]})}function Ge(e){let{item:t}=e;return t.html?(0,c.jsx)("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):(0,c.jsx)("li",{className:"footer__item",children:(0,c.jsx)(qe,{item:t})},t.href??t.to)}function Ye(e){let{column:t}=e;return(0,c.jsxs)("div",{className:"col footer__col",children:[(0,c.jsx)("div",{className:"footer__title",children:t.title}),(0,c.jsx)("ul",{className:"footer__items clean-list",children:t.items.map(((e,t)=>(0,c.jsx)(Ge,{item:e},t)))})]})}function Ke(e){let{columns:t}=e;return(0,c.jsx)("div",{className:"row footer__links",children:t.map(((e,t)=>(0,c.jsx)(Ye,{column:e},t)))})}function Qe(){return(0,c.jsx)("span",{className:"footer__link-separator",children:"\xb7"})}function Ze(e){let{item:t}=e;return t.html?(0,c.jsx)("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):(0,c.jsx)(qe,{item:t})}function Xe(e){let{links:t}=e;return(0,c.jsx)("div",{className:"footer__links text--center",children:(0,c.jsx)("div",{className:"footer__links",children:t.map(((e,n)=>(0,c.jsxs)(r.Fragment,{children:[(0,c.jsx)(Ze,{item:e}),t.length!==n+1&&(0,c.jsx)(Qe,{})]},n)))})})}function Je(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?(0,c.jsx)(Ke,{columns:t}):(0,c.jsx)(Xe,{links:t})}var et=n(1715);const tt={footerLogoLink:"footerLogoLink_H73O"};function nt(e){let{logo:t}=e;const{withBaseUrl:n}=(0,X.hH)(),r={light:n(t.src),dark:n(t.srcDark??t.src)};return(0,c.jsx)(et.A,{className:(0,a.A)("footer__logo",t.className),alt:t.alt,sources:r,width:t.width,height:t.height,style:t.style})}function rt(e){let{logo:t}=e;return t.href?(0,c.jsx)(Z.A,{href:t.href,className:tt.footerLogoLink,target:t.target,children:(0,c.jsx)(nt,{logo:t})}):(0,c.jsx)(nt,{logo:t})}function at(e){let{copyright:t}=e;return(0,c.jsx)("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function ot(e){let{style:t,links:n,logo:r,copyright:o}=e;return(0,c.jsx)("footer",{className:(0,a.A)("footer",{"footer--dark":"dark"===t}),children:(0,c.jsxs)("div",{className:"container container-fluid",children:[n,(r||o)&&(0,c.jsxs)("div",{className:"footer__bottom text--center",children:[r&&(0,c.jsx)("div",{className:"margin-bottom--sm",children:r}),o]})]})})}function it(){const{footer:e}=(0,w.p)();if(!e)return null;const{copyright:t,links:n,logo:r,style:a}=e;return(0,c.jsx)(ot,{style:a,links:n&&n.length>0&&(0,c.jsx)(Je,{links:n}),logo:r&&(0,c.jsx)(rt,{logo:r}),copyright:t&&(0,c.jsx)(at,{copyright:t})})}const lt=r.memo(it),st=(0,L.fM)([M.a,k.o,O.Tv,xe.VQ,i.Jx,function(e){let{children:t}=e;return(0,c.jsx)(P.y_,{children:(0,c.jsx)(N.e,{children:(0,c.jsx)(R,{children:t})})})}]);function ut(e){let{children:t}=e;return(0,c.jsx)(st,{children:t})}var ct=n(9663);function dt(e){let{error:t,tryAgain:n}=e;return(0,c.jsx)("main",{className:"container margin-vert--xl",children:(0,c.jsx)("div",{className:"row",children:(0,c.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,c.jsx)(ct.A,{as:"h1",className:"hero__title",children:(0,c.jsx)(s.A,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed",children:"This page crashed."})}),(0,c.jsx)("div",{className:"margin-vert--lg",children:(0,c.jsx)(Ie,{onClick:n,className:"button button--primary shadow--lw"})}),(0,c.jsx)("hr",{}),(0,c.jsx)("div",{className:"margin-vert--md",children:(0,c.jsx)(De,{error:t})})]})})})}const pt={mainWrapper:"mainWrapper_SYWr"};function ft(e){const{children:t,noFooter:n,wrapperClassName:r,title:l,description:s}=e;return(0,y.J)(),(0,c.jsxs)(ut,{children:[(0,c.jsx)(i.be,{title:l,description:s}),(0,c.jsx)(v,{}),(0,c.jsx)(T,{}),(0,c.jsx)(We,{}),(0,c.jsx)("div",{id:d,className:(0,a.A)(g.G.wrapper.main,pt.mainWrapper,r),children:(0,c.jsx)(o.A,{fallback:e=>(0,c.jsx)(dt,{...e}),children:t})}),!n&&(0,c.jsx)(lt,{})]})}},1240:(e,t,n)=>{"use strict";n.d(t,{A:()=>c});n(758);var r=n(8257),a=n(1958),o=n(8765),i=n(8949),l=n(1715),s=n(6070);function u(e){let{logo:t,alt:n,imageClassName:r}=e;const o={light:(0,a.Ay)(t.src),dark:(0,a.Ay)(t.srcDark||t.src)},i=(0,s.jsx)(l.A,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return r?(0,s.jsx)("div",{className:r,children:i}):i}function c(e){const{siteConfig:{title:t}}=(0,o.A)(),{navbar:{title:n,logo:l}}=(0,i.p)(),{imageClassName:c,titleClassName:d,...p}=e,f=(0,a.Ay)(l?.href||"/"),h=n?"":t,m=l?.alt??h;return(0,s.jsxs)(r.A,{to:f,...p,...l?.target&&{target:l.target},children:[l&&(0,s.jsx)(u,{logo:l,alt:m,imageClassName:c}),null!=n&&(0,s.jsx)("b",{className:d,children:n})]})}},2622:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});n(758);var r=n(5463),a=n(6070);function o(e){let{locale:t,version:n,tag:o}=e;const i=t;return(0,a.jsxs)(r.A,{children:[t&&(0,a.jsx)("meta",{name:"docusaurus_locale",content:t}),n&&(0,a.jsx)("meta",{name:"docusaurus_version",content:n}),o&&(0,a.jsx)("meta",{name:"docusaurus_tag",content:o}),i&&(0,a.jsx)("meta",{name:"docsearch:language",content:i}),n&&(0,a.jsx)("meta",{name:"docsearch:version",content:n}),o&&(0,a.jsx)("meta",{name:"docsearch:docusaurus_tag",content:o})]})}},1715:(e,t,n)=>{"use strict";n.d(t,{A:()=>c});var r=n(758),a=n(3526),o=n(4272),i=n(1382);const l={themedComponent:"themedComponent_oBnk","themedComponent--light":"themedComponent--light_mXU6","themedComponent--dark":"themedComponent--dark_prkl"};var s=n(6070);function u(e){let{className:t,children:n}=e;const u=(0,o.A)(),{colorMode:c}=(0,i.G)();return(0,s.jsx)(s.Fragment,{children:(u?"dark"===c?["dark"]:["light"]:["light","dark"]).map((e=>{const o=n({theme:e,className:(0,a.A)(t,l.themedComponent,l[`themedComponent--${e}`])});return(0,s.jsx)(r.Fragment,{children:o},e)}))})}function c(e){const{sources:t,className:n,alt:r,...a}=e;return(0,s.jsx)(u,{className:n,children:e=>{let{theme:n,className:o}=e;return(0,s.jsx)("img",{src:t[n],alt:r,className:o,...a})}})}},1661:(e,t,n)=>{"use strict";n.d(t,{N:()=>y,u:()=>u});var r=n(758),a=n(9902),o=n(9700),i=n(2838),l=n(6070);const s="ease-in-out";function u(e){let{initialState:t}=e;const[n,a]=(0,r.useState)(t??!1),o=(0,r.useCallback)((()=>{a((e=>!e))}),[]);return{collapsed:n,setCollapsed:a,toggleCollapsed:o}}const c={display:"none",overflow:"hidden",height:"0px"},d={display:"block",overflow:"visible",height:"auto"};function p(e,t){const n=t?c:d;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function f(e){let{collapsibleRef:t,collapsed:n,animation:a}=e;const o=(0,r.useRef)(!1);(0,r.useEffect)((()=>{const e=t.current;function r(){const t=e.scrollHeight,n=a?.duration??function(e){if((0,i.O)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${a?.easing??s}`,height:`${t}px`}}function l(){const t=r();e.style.transition=t.transition,e.style.height=t.height}if(!o.current)return p(e,n),void(o.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(l(),requestAnimationFrame((()=>{e.style.height=c.height,e.style.overflow=c.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{l()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,a])}function h(e){if(!a.A.canUseDOM)return e?c:d}function m(e){let{as:t="div",collapsed:n,children:a,animation:o,onCollapseTransitionEnd:i,className:s,disableSSRStyle:u}=e;const c=(0,r.useRef)(null);return f({collapsibleRef:c,collapsed:n,animation:o}),(0,l.jsx)(t,{ref:c,style:u?void 0:h(n),onTransitionEnd:e=>{"height"===e.propertyName&&(p(c.current,n),i?.(n))},className:s,children:a})}function g(e){let{collapsed:t,...n}=e;const[a,i]=(0,r.useState)(!t),[s,u]=(0,r.useState)(t);return(0,o.A)((()=>{t||i(!0)}),[t]),(0,o.A)((()=>{a&&u(t)}),[a,t]),a?(0,l.jsx)(m,{...n,collapsed:s}):null}function y(e){let{lazy:t,...n}=e;const r=t?g:m;return(0,l.jsx)(r,{...n})}},42:(e,t,n)=>{"use strict";n.d(t,{M:()=>m,o:()=>h});var r=n(758),a=n(4272),o=n(2180),i=n(1495),l=n(8949),s=n(6070);const u=(0,o.Wf)("docusaurus.announcement.dismiss"),c=(0,o.Wf)("docusaurus.announcement.id"),d=()=>"true"===u.get(),p=e=>u.set(String(e)),f=r.createContext(null);function h(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,l.p)(),t=(0,a.A)(),[n,o]=(0,r.useState)((()=>!!t&&d()));(0,r.useEffect)((()=>{o(d())}),[]);const i=(0,r.useCallback)((()=>{p(!0),o(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=c.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;c.set(t),r&&p(!1),!r&&d()||o(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return(0,s.jsx)(f.Provider,{value:n,children:t})}function m(){const e=(0,r.useContext)(f);if(!e)throw new i.dV("AnnouncementBarProvider");return e}},1382:(e,t,n)=>{"use strict";n.d(t,{G:()=>y,a:()=>g});var r=n(758),a=n(9902),o=n(1495),i=n(2180),l=n(8949),s=n(6070);const u=r.createContext(void 0),c="theme",d=(0,i.Wf)(c),p={light:"light",dark:"dark"},f=e=>e===p.dark?p.dark:p.light,h=e=>a.A.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e),m=e=>{d.set(f(e))};function g(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.p)(),[a,o]=(0,r.useState)(h(e));(0,r.useEffect)((()=>{t&&d.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:a=!0}=r;t?(o(t),a&&m(t)):(o(n?window.matchMedia("(prefers-color-scheme: dark)").matches?p.dark:p.light:e),d.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",f(a))}),[a]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==c)return;const t=d.get();null!==t&&i(f(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const s=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||s.current?s.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:a,setColorMode:i,get isDarkTheme(){return a===p.dark},setLightTheme(){i(p.light)},setDarkTheme(){i(p.dark)}})),[a,i])}();return(0,s.jsx)(u.Provider,{value:n,children:t})}function y(){const e=(0,r.useContext)(u);if(null==e)throw new o.dV("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},6804:(e,t,n)=>{"use strict";n.d(t,{VQ:()=>y,g1:()=>v});var r=n(758),a=n(2907),o=n(76),i=n(8949),l=n(3766),s=n(1495),u=n(2180),c=n(6070);const d=e=>`docs-preferred-version-${e}`,p={save:(e,t,n)=>{(0,u.Wf)(d(e),{persistence:t}).set(n)},read:(e,t)=>(0,u.Wf)(d(e),{persistence:t}).get(),clear:(e,t)=>{(0,u.Wf)(d(e),{persistence:t}).del()}},f=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const h=r.createContext(null);function m(){const e=(0,a.Gy)(),t=(0,i.p)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[o,l]=(0,r.useState)((()=>f(n)));(0,r.useEffect)((()=>{l(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function a(e){const t=p.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(p.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,a(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[o,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){p.save(e,t,n),l((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function g(e){let{children:t}=e;const n=m();return(0,c.jsx)(h.Provider,{value:n,children:t})}function y(e){let{children:t}=e;return l.C5?(0,c.jsx)(g,{children:t}):(0,c.jsx)(c.Fragment,{children:t})}function b(){const e=(0,r.useContext)(h);if(!e)throw new s.dV("DocsPreferredVersionContextProvider");return e}function v(e){void 0===e&&(e=o.W);const t=(0,a.ht)(e),[n,i]=b(),{preferredVersionName:l}=n[e];return{preferredVersion:t.versions.find((e=>e.name===l))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}},2987:(e,t,n)=>{"use strict";n.d(t,{V:()=>s,t:()=>u});var r=n(758),a=n(1495),o=n(6070);const i=Symbol("EmptyContext"),l=r.createContext(i);function s(e){let{children:t,name:n,items:a}=e;const i=(0,r.useMemo)((()=>n&&a?{name:n,items:a}:null),[n,a]);return(0,o.jsx)(l.Provider,{value:i,children:t})}function u(){const e=(0,r.useContext)(l);if(e===i)throw new a.dV("DocsSidebarProvider");return e}},8051:(e,t,n)=>{"use strict";n.d(t,{n:()=>l,r:()=>s});var r=n(758),a=n(1495),o=n(6070);const i=r.createContext(null);function l(e){let{children:t,version:n}=e;return(0,o.jsx)(i.Provider,{value:n,children:t})}function s(){const e=(0,r.useContext)(i);if(null===e)throw new a.dV("DocsVersionProvider");return e}},2483:(e,t,n)=>{"use strict";n.d(t,{e:()=>f,M:()=>h});var r=n(758),a=n(6083),o=n(3104),i=n(5557),l=n(1495);function s(e){!function(e){const t=(0,i.W6)(),n=(0,l._q)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}var u=n(8949),c=n(6070);const d=r.createContext(void 0);function p(){const e=function(){const e=(0,a.YL)(),{items:t}=(0,u.p)().navbar;return 0===t.length&&!e.component}(),t=(0,o.l)(),n=!e&&"mobile"===t,[i,l]=(0,r.useState)(!1);s((()=>{if(i)return l(!1),!1}));const c=(0,r.useCallback)((()=>{l((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&l(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:c,shown:i})),[e,n,c,i])}function f(e){let{children:t}=e;const n=p();return(0,c.jsx)(d.Provider,{value:n,children:t})}function h(){const e=r.useContext(d);if(void 0===e)throw new l.dV("NavbarMobileSidebarProvider");return e}},6083:(e,t,n)=>{"use strict";n.d(t,{GX:()=>u,YL:()=>s,y_:()=>l});var r=n(758),a=n(1495),o=n(6070);const i=r.createContext(null);function l(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return(0,o.jsx)(i.Provider,{value:n,children:t})}function s(){const e=(0,r.useContext)(i);if(!e)throw new a.dV("NavbarSecondaryMenuContentProvider");return e[0]}function u(e){let{component:t,props:n}=e;const o=(0,r.useContext)(i);if(!o)throw new a.dV("NavbarSecondaryMenuContentProvider");const[,l]=o,s=(0,a.Be)(n);return(0,r.useEffect)((()=>{l({component:t,props:s})}),[l,t,s]),(0,r.useEffect)((()=>()=>l({component:null,props:null})),[l]),null}},6860:(e,t,n)=>{"use strict";n.d(t,{w:()=>a,J:()=>o});var r=n(758);const a="navigation-with-keyboard";function o(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},3104:(e,t,n)=>{"use strict";n.d(t,{l:()=>l});var r=n(758),a=n(9902);const o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function l(e){let{desktopBreakpoint:t=i}=void 0===e?{}:e;const[n,l]=(0,r.useState)((()=>"ssr"));return(0,r.useEffect)((()=>{function e(){l(function(e){if(!a.A.canUseDOM)throw new Error("getWindowSize() should only be called after React hydration");return window.innerWidth>e?o.desktop:o.mobile}(t))}return e(),window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}}),[t]),n}},2702:(e,t,n)=>{"use strict";n.d(t,{G:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",unlistedBanner:"theme-unlisted-banner",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{blogFooterTagsRow:"theme-blog-footer-tags-row",blogFooterEditMetaRow:"theme-blog-footer-edit-meta-row"},pages:{pageFooterEditMetaRow:"theme-pages-footer-edit-meta-row"}}},2838:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{O:()=>r})},3766:(e,t,n)=>{"use strict";n.d(t,{Nr:()=>f,w8:()=>g,C5:()=>p,B5:()=>E,Vd:()=>k,QB:()=>S,fW:()=>x,OF:()=>w,Y:()=>b});var r=n(758),a=n(5557),o=n(1977),i=n(2907),l=n(6804),s=n(8051),u=n(2987);function c(e){return Array.from(new Set(e))}var d=n(428);const p=!!i.Gy;function f(e){return"link"!==e.type||e.unlisted?"category"===e.type?function(e){if(e.href&&!e.linkUnlisted)return e.href;for(const t of e.items){const e=f(t);if(e)return e}}(e):void 0:e.href}const h=(e,t)=>void 0!==e&&(0,d.ys)(e,t),m=(e,t)=>e.some((e=>g(e,t)));function g(e,t){return"link"===e.type?h(e.href,t):"category"===e.type&&(h(e.href,t)||m(e.items,t))}function y(e,t){switch(e.type){case"category":return g(e,t)||e.items.some((e=>y(e,t)));case"link":return!e.unlisted||g(e,t);default:return!0}}function b(e,t){return(0,r.useMemo)((()=>e.filter((e=>y(e,t)))),[e,t])}function v(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const a=[];return function e(t){for(const o of t)if("category"===o.type&&((0,d.ys)(o.href,n)||e(o.items))||"link"===o.type&&(0,d.ys)(o.href,n)){return r&&"category"!==o.type||a.unshift(o),!0}return!1}(t),a}function w(){const e=(0,u.t)(),{pathname:t}=(0,a.zy)(),n=(0,i.vT)()?.pluginData.breadcrumbs;return!1!==n&&e?v({sidebarItems:e.items,pathname:t}):null}function k(e){const{activeVersion:t}=(0,i.zK)(e),{preferredVersion:n}=(0,l.g1)(e),a=(0,i.r7)(e);return(0,r.useMemo)((()=>c([t,n,a].filter(Boolean))),[t,n,a])}function x(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return r[1]}),[e,n])}function S(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${c(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function E(e){let{route:t}=e;const n=(0,a.zy)(),r=(0,s.r)(),i=t.routes,l=i.find((e=>(0,a.B6)(n.pathname,e)));if(!l)return null;const u=l.sidebar,c=u?r.docsSidebars[u]:void 0;return{docElement:(0,o.v)(i),sidebarName:u,sidebarItems:c}}},3896:(e,t,n)=>{"use strict";n.d(t,{e3:()=>f,be:()=>d,Jx:()=>h});var r=n(758),a=n(3526),o=n(5463),i=n(7281);function l(){const e=r.useContext(i.o);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var s=n(1958),u=n(8765);var c=n(6070);function d(e){let{title:t,description:n,keywords:r,image:a,children:i}=e;const l=function(e){const{siteConfig:t}=(0,u.A)(),{title:n,titleDelimiter:r}=t;return e?.trim().length?`${e.trim()} ${r} ${n}`:n}(t),{withBaseUrl:d}=(0,s.hH)(),p=a?d(a,{absolute:!0}):void 0;return(0,c.jsxs)(o.A,{children:[t&&(0,c.jsx)("title",{children:l}),t&&(0,c.jsx)("meta",{property:"og:title",content:l}),n&&(0,c.jsx)("meta",{name:"description",content:n}),n&&(0,c.jsx)("meta",{property:"og:description",content:n}),r&&(0,c.jsx)("meta",{name:"keywords",content:Array.isArray(r)?r.join(","):r}),p&&(0,c.jsx)("meta",{property:"og:image",content:p}),p&&(0,c.jsx)("meta",{name:"twitter:image",content:p}),i]})}const p=r.createContext(void 0);function f(e){let{className:t,children:n}=e;const i=r.useContext(p),l=(0,a.A)(i,t);return(0,c.jsxs)(p.Provider,{value:l,children:[(0,c.jsx)(o.A,{children:(0,c.jsx)("html",{className:l})}),n]})}function h(e){let{children:t}=e;const n=l(),r=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const o=`plugin-id-${n.plugin.id}`;return(0,c.jsx)(f,{className:(0,a.A)(r,o),children:t})}},1495:(e,t,n)=>{"use strict";n.d(t,{Be:()=>u,ZC:()=>l,_q:()=>i,dV:()=>s,fM:()=>c});var r=n(758),a=n(9700),o=n(6070);function i(e){const t=(0,r.useRef)(e);return(0,a.A)((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function l(e){const t=(0,r.useRef)();return(0,a.A)((()=>{t.current=e})),t.current}class s extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?<name>\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function u(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function c(e){return t=>{let{children:n}=t;return(0,o.jsx)(o.Fragment,{children:e.reduceRight(((e,t)=>(0,o.jsx)(t,{children:e})),n)})}}},428:(e,t,n)=>{"use strict";n.d(t,{Dt:()=>l,ys:()=>i});var r=n(758),a=n(8218),o=n(8765);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function l(){const{baseUrl:e}=(0,o.A)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function a(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(a).flatMap((e=>e.routes??[])))}(n)}({routes:a.A,baseUrl:e})),[e])}},3709:(e,t,n)=>{"use strict";n.d(t,{Mq:()=>p,Tv:()=>u,gk:()=>f});var r=n(758),a=n(9902),o=n(4272),i=(n(9700),n(1495)),l=n(6070);const s=r.createContext(void 0);function u(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return(0,l.jsx)(s.Provider,{value:n,children:t})}function c(){const e=(0,r.useContext)(s);if(null==e)throw new i.dV("ScrollControllerProvider");return e}const d=()=>a.A.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function p(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=c(),a=(0,r.useRef)(d()),o=(0,i._q)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=d();o(e,a.current),a.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[o,n,...t])}function f(){const e=(0,r.useRef)(null),t=(0,o.A)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const a=document.documentElement.scrollTop;(n&&a>e||!n&&a<e)&&(t=requestAnimationFrame(r),window.scrollTo(0,Math.floor(.85*(a-e))+e))}(),()=>t&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},5266:(e,t,n)=>{"use strict";n.d(t,{Cy:()=>r,tU:()=>a});n(8765);const r="default";function a(e,t){return`docs-${e}-${t}`}},2180:(e,t,n)=>{"use strict";n.d(t,{Wf:()=>u});n(758);const r=JSON.parse('{"N":"localStorage","M":""}'),a=r.N;function o(e){let{key:t,oldValue:n,newValue:r,storage:a}=e;if(n===r)return;const o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,a),window.dispatchEvent(o)}function i(e){if(void 0===e&&(e=a),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,l||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),l=!0),null}var t}let l=!1;const s={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function u(e,t){const n=`${e}${r.M}`;if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(n);const a=i(t?.persistence);return null===a?s:{get:()=>{try{return a.getItem(n)}catch(e){return console.error(`Docusaurus storage error, can't get key=${n}`,e),null}},set:e=>{try{const t=a.getItem(n);a.setItem(n,e),o({key:n,oldValue:t,newValue:e,storage:a})}catch(t){console.error(`Docusaurus storage error, can't set ${n}=${e}`,t)}},del:()=>{try{const e=a.getItem(n);a.removeItem(n),o({key:n,oldValue:e,newValue:null,storage:a})}catch(e){console.error(`Docusaurus storage error, can't delete key=${n}`,e)}},listen:e=>{try{const t=t=>{t.storageArea===a&&t.key===n&&e(t)};return window.addEventListener("storage",t),()=>window.removeEventListener("storage",t)}catch(t){return console.error(`Docusaurus storage error, can't listen for changes of key=${n}`,t),()=>{}}}}}},5514:(e,t,n)=>{"use strict";n.d(t,{o:()=>i});var r=n(8765),a=n(5557),o=n(1887);function i(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:i,currentLocale:l}}=(0,r.A)(),{pathname:s}=(0,a.zy)(),u=(0,o.applyTrailingSlash)(s,{trailingSlash:n,baseUrl:e}),c=l===i?e:e.replace(`/${l}/`,"/"),d=u.replace(e,"");return{createUrl:function(e){let{locale:n,fullyQualified:r}=e;return`${r?t:""}${function(e){return e===i?`${c}`:`${c}${e}/`}(n)}${d}`}}}},3403:(e,t,n)=>{"use strict";n.d(t,{$:()=>i});var r=n(758),a=n(5557),o=n(1495);function i(e){const t=(0,a.zy)(),n=(0,o.ZC)(t),i=(0,o._q)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},8949:(e,t,n)=>{"use strict";n.d(t,{p:()=>a});var r=n(8765);function a(){return(0,r.A)().siteConfig.themeConfig}},3214:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.removeTrailingSlash=t.addLeadingSlash=t.addTrailingSlash=void 0;const r=n(5329);function a(e){return e.endsWith("/")?e:`${e}/`}function o(e){return(0,r.removeSuffix)(e,"/")}t.addTrailingSlash=a,t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[i]=e.split(/[#?]/),l="/"===i||i===r?i:(s=i,n?a(s):o(s));var s;return e.replace(i,l)},t.addLeadingSlash=function(e){return(0,r.addPrefix)(e,"/")},t.removeTrailingSlash=o},820:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},1887:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.removePrefix=t.addSuffix=t.removeSuffix=t.addPrefix=t.removeTrailingSlash=t.addLeadingSlash=t.addTrailingSlash=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var a=n(3214);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}}),Object.defineProperty(t,"addTrailingSlash",{enumerable:!0,get:function(){return a.addTrailingSlash}}),Object.defineProperty(t,"addLeadingSlash",{enumerable:!0,get:function(){return a.addLeadingSlash}}),Object.defineProperty(t,"removeTrailingSlash",{enumerable:!0,get:function(){return a.removeTrailingSlash}});var o=n(5329);Object.defineProperty(t,"addPrefix",{enumerable:!0,get:function(){return o.addPrefix}}),Object.defineProperty(t,"removeSuffix",{enumerable:!0,get:function(){return o.removeSuffix}}),Object.defineProperty(t,"addSuffix",{enumerable:!0,get:function(){return o.addSuffix}}),Object.defineProperty(t,"removePrefix",{enumerable:!0,get:function(){return o.removePrefix}});var i=n(820);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return i.getErrorCausalChain}})},5329:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.removePrefix=t.addSuffix=t.removeSuffix=t.addPrefix=void 0,t.addPrefix=function(e,t){return e.startsWith(t)?e:`${t}${e}`},t.removeSuffix=function(e,t){return""===t?e:e.endsWith(t)?e.slice(0,-t.length):e},t.addSuffix=function(e,t){return e.endsWith(t)?e:`${e}${t}`},t.removePrefix=function(e,t){return e.startsWith(t)?e.slice(t.length):e}},3332:(e,t,n)=>{"use strict";n.d(t,{zR:()=>w,TM:()=>C,yJ:()=>f,sC:()=>T,AO:()=>p});var r=n(5265);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r<a;n+=1,r+=1)e[n]=e[r];e.pop()}const i=function(e,t){void 0===t&&(t="");var n,r=e&&e.split("/")||[],i=t&&t.split("/")||[],l=e&&a(e),s=t&&a(t),u=l||s;if(e&&a(e)?i=r:r.length&&(i.pop(),i=i.concat(r)),!i.length)return"/";if(i.length){var c=i[i.length-1];n="."===c||".."===c||""===c}else n=!1;for(var d=0,p=i.length;p>=0;p--){var f=i[p];"."===f?o(i,p):".."===f?(o(i,p),d++):d&&(o(i,p),d--)}if(!u)for(;d--;d)i.unshift("..");!u||""===i[0]||i[0]&&a(i[0])||i.unshift("");var h=i.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h};var l=n(5385);function s(e){return"/"===e.charAt(0)?e:"/"+e}function u(e){return"/"===e.charAt(0)?e.substr(1):e}function c(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function p(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function f(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.A)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function h(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];t.forEach((function(e){return e.apply(void 0,n)}))}}}var m=!("undefined"==typeof window||!window.document||!window.document.createElement);function g(e,t){t(window.confirm(e))}var y="popstate",b="hashchange";function v(){try{return window.history.state||{}}catch(e){return{}}}function w(e){void 0===e&&(e={}),m||(0,l.A)(!1);var t,n=window.history,a=(-1===(t=window.navigator.userAgent).indexOf("Android 2.")&&-1===t.indexOf("Android 4.0")||-1===t.indexOf("Mobile Safari")||-1!==t.indexOf("Chrome")||-1!==t.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history,o=!(-1===window.navigator.userAgent.indexOf("Trident")),i=e,u=i.forceRefresh,w=void 0!==u&&u,k=i.getUserConfirmation,x=void 0===k?g:k,S=i.keyLength,E=void 0===S?6:S,_=e.basename?d(s(e.basename)):"";function C(e){var t=e||{},n=t.key,r=t.state,a=window.location,o=a.pathname+a.search+a.hash;return _&&(o=c(o,_)),f(o,r,n)}function A(){return Math.random().toString(36).substr(2,E)}var T=h();function N(e){(0,r.A)($,e),$.length=n.length,T.notifyListeners($.location,$.action)}function O(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||j(C(e.state))}function L(){j(C(v()))}var P=!1;function j(e){if(P)P=!1,N();else{T.confirmTransitionTo(e,"POP",x,(function(t){t?N({action:"POP",location:e}):function(e){var t=$.location,n=I.indexOf(t.key);-1===n&&(n=0);var r=I.indexOf(e.key);-1===r&&(r=0);var a=n-r;a&&(P=!0,F(a))}(e)}))}}var R=C(v()),I=[R.key];function D(e){return _+p(e)}function F(e){n.go(e)}var M=0;function z(e){1===(M+=e)&&1===e?(window.addEventListener(y,O),o&&window.addEventListener(b,L)):0===M&&(window.removeEventListener(y,O),o&&window.removeEventListener(b,L))}var B=!1;var $={length:n.length,action:"POP",location:R,createHref:D,push:function(e,t){var r="PUSH",o=f(e,t,A(),$.location);T.confirmTransitionTo(o,r,x,(function(e){if(e){var t=D(o),i=o.key,l=o.state;if(a)if(n.pushState({key:i,state:l},null,t),w)window.location.href=t;else{var s=I.indexOf($.location.key),u=I.slice(0,s+1);u.push(o.key),I=u,N({action:r,location:o})}else window.location.href=t}}))},replace:function(e,t){var r="REPLACE",o=f(e,t,A(),$.location);T.confirmTransitionTo(o,r,x,(function(e){if(e){var t=D(o),i=o.key,l=o.state;if(a)if(n.replaceState({key:i,state:l},null,t),w)window.location.replace(t);else{var s=I.indexOf($.location.key);-1!==s&&(I[s]=o.key),N({action:r,location:o})}else window.location.replace(t)}}))},go:F,goBack:function(){F(-1)},goForward:function(){F(1)},block:function(e){void 0===e&&(e=!1);var t=T.setPrompt(e);return B||(z(1),B=!0),function(){return B&&(B=!1,z(-1)),t()}},listen:function(e){var t=T.appendListener(e);return z(1),function(){z(-1),t()}}};return $}var k="hashchange",x={hashbang:{encodePath:function(e){return"!"===e.charAt(0)?e:"!/"+u(e)},decodePath:function(e){return"!"===e.charAt(0)?e.substr(1):e}},noslash:{encodePath:u,decodePath:s},slash:{encodePath:s,decodePath:s}};function S(e){var t=e.indexOf("#");return-1===t?e:e.slice(0,t)}function E(){var e=window.location.href,t=e.indexOf("#");return-1===t?"":e.substring(t+1)}function _(e){window.location.replace(S(window.location.href)+"#"+e)}function C(e){void 0===e&&(e={}),m||(0,l.A)(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),a=n.getUserConfirmation,o=void 0===a?g:a,i=n.hashType,u=void 0===i?"slash":i,y=e.basename?d(s(e.basename)):"",b=x[u],v=b.encodePath,w=b.decodePath;function C(){var e=w(E());return y&&(e=c(e,y)),f(e)}var A=h();function T(e){(0,r.A)(B,e),B.length=t.length,A.notifyListeners(B.location,B.action)}var N=!1,O=null;function L(){var e,t,n=E(),r=v(n);if(n!==r)_(r);else{var a=C(),i=B.location;if(!N&&(t=a,(e=i).pathname===t.pathname&&e.search===t.search&&e.hash===t.hash))return;if(O===p(a))return;O=null,function(e){if(N)N=!1,T();else{var t="POP";A.confirmTransitionTo(e,t,o,(function(n){n?T({action:t,location:e}):function(e){var t=B.location,n=I.lastIndexOf(p(t));-1===n&&(n=0);var r=I.lastIndexOf(p(e));-1===r&&(r=0);var a=n-r;a&&(N=!0,D(a))}(e)}))}}(a)}}var P=E(),j=v(P);P!==j&&_(j);var R=C(),I=[p(R)];function D(e){t.go(e)}var F=0;function M(e){1===(F+=e)&&1===e?window.addEventListener(k,L):0===F&&window.removeEventListener(k,L)}var z=!1;var B={length:t.length,action:"POP",location:R,createHref:function(e){var t=document.querySelector("base"),n="";return t&&t.getAttribute("href")&&(n=S(window.location.href)),n+"#"+v(y+p(e))},push:function(e,t){var n="PUSH",r=f(e,void 0,void 0,B.location);A.confirmTransitionTo(r,n,o,(function(e){if(e){var t=p(r),a=v(y+t);if(E()!==a){O=t,function(e){window.location.hash=e}(a);var o=I.lastIndexOf(p(B.location)),i=I.slice(0,o+1);i.push(t),I=i,T({action:n,location:r})}else T()}}))},replace:function(e,t){var n="REPLACE",r=f(e,void 0,void 0,B.location);A.confirmTransitionTo(r,n,o,(function(e){if(e){var t=p(r),a=v(y+t);E()!==a&&(O=t,_(a));var o=I.indexOf(p(B.location));-1!==o&&(I[o]=t),T({action:n,location:r})}}))},go:D,goBack:function(){D(-1)},goForward:function(){D(1)},block:function(e){void 0===e&&(e=!1);var t=A.setPrompt(e);return z||(M(1),z=!0),function(){return z&&(z=!1,M(-1)),t()}},listen:function(e){var t=A.appendListener(e);return M(1),function(){M(-1),t()}}};return B}function A(e,t,n){return Math.min(Math.max(e,t),n)}function T(e){void 0===e&&(e={});var t=e,n=t.getUserConfirmation,a=t.initialEntries,o=void 0===a?["/"]:a,i=t.initialIndex,l=void 0===i?0:i,s=t.keyLength,u=void 0===s?6:s,c=h();function d(e){(0,r.A)(w,e),w.length=w.entries.length,c.notifyListeners(w.location,w.action)}function m(){return Math.random().toString(36).substr(2,u)}var g=A(l,0,o.length-1),y=o.map((function(e){return f(e,void 0,"string"==typeof e?m():e.key||m())})),b=p;function v(e){var t=A(w.index+e,0,w.entries.length-1),r=w.entries[t];c.confirmTransitionTo(r,"POP",n,(function(e){e?d({action:"POP",location:r,index:t}):d()}))}var w={length:y.length,action:"POP",location:y[g],index:g,entries:y,createHref:b,push:function(e,t){var r="PUSH",a=f(e,t,m(),w.location);c.confirmTransitionTo(a,r,n,(function(e){if(e){var t=w.index+1,n=w.entries.slice(0);n.length>t?n.splice(t,n.length-t,a):n.push(a),d({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=f(e,t,m(),w.location);c.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=w.index+e;return t>=0&&t<w.entries.length},block:function(e){return void 0===e&&(e=!1),c.setPrompt(e)},listen:function(e){return c.appendListener(e)}};return w}},1035:(e,t,n)=>{"use strict";var r=n(5959),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||a}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,h=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(h){var a=f(n);a&&a!==h&&e(t,a,r)}var i=c(n);d&&(i=i.concat(d(n)));for(var l=s(t),m=s(n),g=0;g<i.length;++g){var y=i[g];if(!(o[y]||r&&r[y]||m&&m[y]||l&&l[y])){var b=p(n,y);try{u(t,y,b)}catch(v){}}}}return t}},9597:e=>{"use strict";e.exports=function(e,t,n,r,a,o,i,l){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,a,o,i,l],c=0;(s=new Error(t.replace(/%s/g,(function(){return u[c++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},5526:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},6267:(e,t,n)=>{"use strict";n.r(t)},3533:(e,t,n)=>{"use strict";n.r(t)},8744:function(e,t,n){var r,a;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'};function a(e,t,n){return e<t?t:e>n?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),u=o.querySelector(r.barSelector),c=r.speed,d=r.easing;return o.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(u,i(e,c,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){s(o,{transition:"all "+c+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),c)}),c)):setTimeout(t,c)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),l=e?"-100":o(n.status||0),u=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&f(a),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&f(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function u(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=p(e),r=n+t;u(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);u(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},6150:(e,t,n)=>{var r=n(5526);e.exports=f,e.exports.parse=o,e.exports.compile=function(e,t){return l(o(e,t),t)},e.exports.tokensToFunction=l,e.exports.tokensToRegExp=p;var a=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function o(e,t){for(var n,r=[],o=0,i=0,l="",c=t&&t.delimiter||"/";null!=(n=a.exec(e));){var d=n[0],p=n[1],f=n.index;if(l+=e.slice(i,f),i=f+d.length,p)l+=p[1];else{var h=e[i],m=n[2],g=n[3],y=n[4],b=n[5],v=n[6],w=n[7];l&&(r.push(l),l="");var k=null!=m&&null!=h&&h!==m,x="+"===v||"*"===v,S="?"===v||"*"===v,E=n[2]||c,_=y||b;r.push({name:g||o++,prefix:m||"",delimiter:E,optional:S,repeat:x,partial:k,asterisk:!!w,pattern:_?u(_):w?".*":"[^"+s(E)+"]+?"})}}return i<e.length&&(l+=e.substr(i)),l&&r.push(l),r}function i(e){return encodeURI(e).replace(/[\/?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function l(e,t){for(var n=new Array(e.length),a=0;a<e.length;a++)"object"==typeof e[a]&&(n[a]=new RegExp("^(?:"+e[a].pattern+")$",d(t)));return function(t,a){for(var o="",l=t||{},s=(a||{}).pretty?i:encodeURIComponent,u=0;u<e.length;u++){var c=e[u];if("string"!=typeof c){var d,p=l[c.name];if(null==p){if(c.optional){c.partial&&(o+=c.prefix);continue}throw new TypeError('Expected "'+c.name+'" to be defined')}if(r(p)){if(!c.repeat)throw new TypeError('Expected "'+c.name+'" to not repeat, but received `'+JSON.stringify(p)+"`");if(0===p.length){if(c.optional)continue;throw new TypeError('Expected "'+c.name+'" to not be empty')}for(var f=0;f<p.length;f++){if(d=s(p[f]),!n[u].test(d))throw new TypeError('Expected all "'+c.name+'" to match "'+c.pattern+'", but received `'+JSON.stringify(d)+"`");o+=(0===f?c.prefix:c.delimiter)+d}}else{if(d=c.asterisk?encodeURI(p).replace(/[?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})):s(p),!n[u].test(d))throw new TypeError('Expected "'+c.name+'" to match "'+c.pattern+'", but received "'+d+'"');o+=c.prefix+d}}else o+=c}return o}}function s(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function u(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function c(e,t){return e.keys=t,e}function d(e){return e&&e.sensitive?"":"i"}function p(e,t,n){r(t)||(n=t||n,t=[]);for(var a=(n=n||{}).strict,o=!1!==n.end,i="",l=0;l<e.length;l++){var u=e[l];if("string"==typeof u)i+=s(u);else{var p=s(u.prefix),f="(?:"+u.pattern+")";t.push(u),u.repeat&&(f+="(?:"+p+f+")*"),i+=f=u.optional?u.partial?p+"("+f+")?":"(?:"+p+"("+f+"))?":p+"("+f+")"}}var h=s(n.delimiter||"/"),m=i.slice(-h.length)===h;return a||(i=(m?i.slice(0,-h.length):i)+"(?:"+h+"(?=$))?"),i+=o?"$":a&&m?"":"(?="+h+"|$)",c(new RegExp("^"+i,d(n)),t)}function f(e,t,n){return r(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp?function(e,t){var n=e.source.match(/\((?!\?)/g);if(n)for(var r=0;r<n.length;r++)t.push({name:r,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return c(e,t)}(e,t):r(e)?function(e,t,n){for(var r=[],a=0;a<e.length;a++)r.push(f(e[a],t,n).source);return c(new RegExp("(?:"+r.join("|")+")",d(n)),t)}(e,t,n):function(e,t,n){return p(o(e,n),t,n)}(e,t,n)}},8520:()=>{!function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},parameter:{pattern:/(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/,alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var a=["comment","function-name","for-or-select","assign-left","parameter","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=r.variable[1].inside,i=0;i<a.length;i++)o[a[i]]=e.languages.bash[a[i]];e.languages.sh=e.languages.bash,e.languages.shell=e.languages.bash}(Prism)},1274:()=>{!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,l=i.length;-1!==n.code.indexOf(a=t(r,l));)++l;return i[l]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(l){for(var s=0;s<l.length&&!(a>=o.length);s++){var u=l[s];if("string"==typeof u||u.content&&"string"==typeof u.content){var c=o[a],d=n.tokenStack[c],p="string"==typeof u?u:u.content,f=t(r,c),h=p.indexOf(f);if(h>-1){++a;var m=p.substring(0,h),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),y=p.substring(h+f.length),b=[];m&&b.push.apply(b,i([m])),b.push(g),y&&b.push.apply(b,i([y])),"string"==typeof u?l.splice.apply(l,[s,1].concat(b)):u.content=b}}else u.content&&i(u.content)}return l}(n.tokens)}}}})}(Prism)},6290:()=>{!function(e){var t=/(?:[\w-]+|'[^'\n\r]*'|"(?:\\.|[^\\"\r\n])*")/.source;function n(e){return e.replace(/__/g,(function(){return t}))}e.languages.toml={comment:{pattern:/#.*/,greedy:!0},table:{pattern:RegExp(n(/(^[\t ]*\[\s*(?:\[\s*)?)__(?:\s*\.\s*__)*(?=\s*\])/.source),"m"),lookbehind:!0,greedy:!0,alias:"class-name"},key:{pattern:RegExp(n(/(^[\t ]*|[{,]\s*)__(?:\s*\.\s*__)*(?=\s*=)/.source),"m"),lookbehind:!0,greedy:!0,alias:"property"},string:{pattern:/"""(?:\\[\s\S]|[^\\])*?"""|'''[\s\S]*?'''|'[^'\n\r]*'|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},date:[{pattern:/\b\d{4}-\d{2}-\d{2}(?:[T\s]\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})?)?\b/i,alias:"number"},{pattern:/\b\d{2}:\d{2}:\d{2}(?:\.\d+)?\b/,alias:"number"}],number:/(?:\b0(?:x[\da-zA-Z]+(?:_[\da-zA-Z]+)*|o[0-7]+(?:_[0-7]+)*|b[10]+(?:_[10]+)*))\b|[-+]?\b\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?\b|[-+]?\b(?:inf|nan)\b/,boolean:/\b(?:false|true)\b/,punctuation:/[.,=[\]{}]/}}(Prism)},6186:(e,t,n)=>{"use strict";var r=n(2985);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},2736:(e,t,n)=>{e.exports=n(6186)()},2985:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},9481:(e,t,n)=>{"use strict";var r=n(758),a=n(1896);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var i=new Set,l={};function s(e,t){u(e,t),u(e+"Capture",t)}function u(e,t){for(l[e]=t,e=0;e<t.length;e++)i.add(t[e])}var c=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),d=Object.prototype.hasOwnProperty,p=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,f={},h={};function m(e,t,n,r,a,o,i){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=a,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=i}var g={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){g[e]=new m(e,0,!1,e,null,!1,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];g[t]=new m(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){g[e]=new m(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){g[e]=new m(e,2,!1,e,null,!1,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){g[e]=new m(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){g[e]=new m(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){g[e]=new m(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){g[e]=new m(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){g[e]=new m(e,5,!1,e.toLowerCase(),null,!1,!1)}));var y=/[\-:]([a-z])/g;function b(e){return e[1].toUpperCase()}function v(e,t,n,r){var a=g.hasOwnProperty(t)?g[t]:null;(null!==a?0!==a.type:r||!(2<t.length)||"o"!==t[0]&&"O"!==t[0]||"n"!==t[1]&&"N"!==t[1])&&(function(e,t,n,r){if(null==t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,a,r)&&(n=null),r||null===a?function(e){return!!d.call(h,e)||!d.call(f,e)&&(p.test(e)?h[e]=!0:(f[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):a.mustUseProperty?e[a.propertyName]=null===n?3!==a.type&&"":n:(t=a.attributeName,r=a.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(a=a.type)||4===a&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(y,b);g[t]=new m(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(y,b);g[t]=new m(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(y,b);g[t]=new m(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){g[e]=new m(e,1,!1,e.toLowerCase(),null,!1,!1)})),g.xlinkHref=new m("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){g[e]=new m(e,1,!1,e.toLowerCase(),null,!0,!0)}));var w=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,k=Symbol.for("react.element"),x=Symbol.for("react.portal"),S=Symbol.for("react.fragment"),E=Symbol.for("react.strict_mode"),_=Symbol.for("react.profiler"),C=Symbol.for("react.provider"),A=Symbol.for("react.context"),T=Symbol.for("react.forward_ref"),N=Symbol.for("react.suspense"),O=Symbol.for("react.suspense_list"),L=Symbol.for("react.memo"),P=Symbol.for("react.lazy");Symbol.for("react.scope"),Symbol.for("react.debug_trace_mode");var j=Symbol.for("react.offscreen");Symbol.for("react.legacy_hidden"),Symbol.for("react.cache"),Symbol.for("react.tracing_marker");var R=Symbol.iterator;function I(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=R&&e[R]||e["@@iterator"])?e:null}var D,F=Object.assign;function M(e){if(void 0===D)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);D=t&&t[1]||""}return"\n"+D+e}var z=!1;function B(e,t){if(!e||z)return"";z=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(u){var r=u}Reflect.construct(e,[],t)}else{try{t.call()}catch(u){r=u}e.call(t.prototype)}else{try{throw Error()}catch(u){r=u}e()}}catch(u){if(u&&r&&"string"==typeof u.stack){for(var a=u.stack.split("\n"),o=r.stack.split("\n"),i=a.length-1,l=o.length-1;1<=i&&0<=l&&a[i]!==o[l];)l--;for(;1<=i&&0<=l;i--,l--)if(a[i]!==o[l]){if(1!==i||1!==l)do{if(i--,0>--l||a[i]!==o[l]){var s="\n"+a[i].replace(" at new "," at ");return e.displayName&&s.includes("<anonymous>")&&(s=s.replace("<anonymous>",e.displayName)),s}}while(1<=i&&0<=l);break}}}finally{z=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?M(e):""}function $(e){switch(e.tag){case 5:return M(e.type);case 16:return M("Lazy");case 13:return M("Suspense");case 19:return M("SuspenseList");case 0:case 2:case 15:return e=B(e.type,!1);case 11:return e=B(e.type.render,!1);case 1:return e=B(e.type,!0);default:return""}}function U(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case S:return"Fragment";case x:return"Portal";case _:return"Profiler";case E:return"StrictMode";case N:return"Suspense";case O:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case A:return(e.displayName||"Context")+".Consumer";case C:return(e._context.displayName||"Context")+".Provider";case T:var t=e.render;return(e=e.displayName)||(e=""!==(e=t.displayName||t.name||"")?"ForwardRef("+e+")":"ForwardRef"),e;case L:return null!==(t=e.displayName||null)?t:U(e.type)||"Memo";case P:t=e._payload,e=e._init;try{return U(e(t))}catch(n){}}return null}function H(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=(e=t.render).displayName||e.name||"",t.displayName||(""!==e?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return U(t);case 8:return t===E?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if("function"==typeof t)return t.displayName||t.name||null;if("string"==typeof t)return t}return null}function V(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":case"object":return e;default:return""}}function W(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function q(e){e._valueTracker||(e._valueTracker=function(e){var t=W(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var a=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return a.call(this)},set:function(e){r=""+e,o.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function G(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=W(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function Y(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function K(e,t){var n=t.checked;return F({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function Q(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=V(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function Z(e,t){null!=(t=t.checked)&&v(e,"checked",t,!1)}function X(e,t){Z(e,t);var n=V(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?ee(e,t.type,n):t.hasOwnProperty("defaultValue")&&ee(e,t.type,V(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function J(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function ee(e,t,n){"number"===t&&Y(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var te=Array.isArray;function ne(e,t,n,r){if(e=e.options,t){t={};for(var a=0;a<n.length;a++)t["$"+n[a]]=!0;for(n=0;n<e.length;n++)a=t.hasOwnProperty("$"+e[n].value),e[n].selected!==a&&(e[n].selected=a),a&&r&&(e[n].defaultSelected=!0)}else{for(n=""+V(n),t=null,a=0;a<e.length;a++){if(e[a].value===n)return e[a].selected=!0,void(r&&(e[a].defaultSelected=!0));null!==t||e[a].disabled||(t=e[a])}null!==t&&(t.selected=!0)}}function re(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(o(91));return F({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function ae(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(o(92));if(te(n)){if(1<n.length)throw Error(o(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:V(n)}}function oe(e,t){var n=V(t.value),r=V(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function ie(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}function le(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function se(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?le(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var ue,ce,de=(ce=function(e,t){if("http://www.w3.org/2000/svg"!==e.namespaceURI||"innerHTML"in e)e.innerHTML=t;else{for((ue=ue||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=ue.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return ce(e,t)}))}:ce);function pe(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var fe={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},he=["Webkit","ms","Moz","O"];function me(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||fe.hasOwnProperty(e)&&fe[e]?(""+t).trim():t+"px"}function ge(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),a=me(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,a):e[n]=a}}Object.keys(fe).forEach((function(e){he.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),fe[t]=fe[e]}))}));var ye=F({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function be(e,t){if(t){if(ye[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(o(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(o(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(o(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(o(62))}}function ve(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var we=null;function ke(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var xe=null,Se=null,Ee=null;function _e(e){if(e=va(e)){if("function"!=typeof xe)throw Error(o(280));var t=e.stateNode;t&&(t=ka(t),xe(e.stateNode,e.type,t))}}function Ce(e){Se?Ee?Ee.push(e):Ee=[e]:Se=e}function Ae(){if(Se){var e=Se,t=Ee;if(Ee=Se=null,_e(e),t)for(e=0;e<t.length;e++)_e(t[e])}}function Te(e,t){return e(t)}function Ne(){}var Oe=!1;function Le(e,t,n){if(Oe)return e(t,n);Oe=!0;try{return Te(e,t,n)}finally{Oe=!1,(null!==Se||null!==Ee)&&(Ne(),Ae())}}function Pe(e,t){var n=e.stateNode;if(null===n)return null;var r=ka(n);if(null===r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(o(231,t,typeof n));return n}var je=!1;if(c)try{var Re={};Object.defineProperty(Re,"passive",{get:function(){je=!0}}),window.addEventListener("test",Re,Re),window.removeEventListener("test",Re,Re)}catch(ce){je=!1}function Ie(e,t,n,r,a,o,i,l,s){var u=Array.prototype.slice.call(arguments,3);try{t.apply(n,u)}catch(c){this.onError(c)}}var De=!1,Fe=null,Me=!1,ze=null,Be={onError:function(e){De=!0,Fe=e}};function $e(e,t,n,r,a,o,i,l,s){De=!1,Fe=null,Ie.apply(Be,arguments)}function Ue(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{!!(4098&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function He(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function Ve(e){if(Ue(e)!==e)throw Error(o(188))}function We(e){return null!==(e=function(e){var t=e.alternate;if(!t){if(null===(t=Ue(e)))throw Error(o(188));return t!==e?null:e}for(var n=e,r=t;;){var a=n.return;if(null===a)break;var i=a.alternate;if(null===i){if(null!==(r=a.return)){n=r;continue}break}if(a.child===i.child){for(i=a.child;i;){if(i===n)return Ve(a),e;if(i===r)return Ve(a),t;i=i.sibling}throw Error(o(188))}if(n.return!==r.return)n=a,r=i;else{for(var l=!1,s=a.child;s;){if(s===n){l=!0,n=a,r=i;break}if(s===r){l=!0,r=a,n=i;break}s=s.sibling}if(!l){for(s=i.child;s;){if(s===n){l=!0,n=i,r=a;break}if(s===r){l=!0,r=i,n=a;break}s=s.sibling}if(!l)throw Error(o(189))}}if(n.alternate!==r)throw Error(o(190))}if(3!==n.tag)throw Error(o(188));return n.stateNode.current===n?e:t}(e))?qe(e):null}function qe(e){if(5===e.tag||6===e.tag)return e;for(e=e.child;null!==e;){var t=qe(e);if(null!==t)return t;e=e.sibling}return null}var Ge=a.unstable_scheduleCallback,Ye=a.unstable_cancelCallback,Ke=a.unstable_shouldYield,Qe=a.unstable_requestPaint,Ze=a.unstable_now,Xe=a.unstable_getCurrentPriorityLevel,Je=a.unstable_ImmediatePriority,et=a.unstable_UserBlockingPriority,tt=a.unstable_NormalPriority,nt=a.unstable_LowPriority,rt=a.unstable_IdlePriority,at=null,ot=null;var it=Math.clz32?Math.clz32:function(e){return e>>>=0,0===e?32:31-(lt(e)/st|0)|0},lt=Math.log,st=Math.LN2;var ut=64,ct=4194304;function dt(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194240&e;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return 130023424&e;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function pt(e,t){var n=e.pendingLanes;if(0===n)return 0;var r=0,a=e.suspendedLanes,o=e.pingedLanes,i=268435455&n;if(0!==i){var l=i&~a;0!==l?r=dt(l):0!==(o&=i)&&(r=dt(o))}else 0!==(i=n&~a)?r=dt(i):0!==o&&(r=dt(o));if(0===r)return 0;if(0!==t&&t!==r&&!(t&a)&&((a=r&-r)>=(o=t&-t)||16===a&&4194240&o))return t;if(4&r&&(r|=16&n),0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0<t;)a=1<<(n=31-it(t)),r|=e[n],t&=~a;return r}function ft(e,t){switch(e){case 1:case 2:case 4:return t+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;default:return-1}}function ht(e){return 0!==(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function mt(){var e=ut;return!(4194240&(ut<<=1))&&(ut=64),e}function gt(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function yt(e,t,n){e.pendingLanes|=t,536870912!==t&&(e.suspendedLanes=0,e.pingedLanes=0),(e=e.eventTimes)[t=31-it(t)]=n}function bt(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-it(n),a=1<<r;a&t|e[r]&t&&(e[r]|=t),n&=~a}}var vt=0;function wt(e){return 1<(e&=-e)?4<e?268435455&e?16:536870912:4:1}var kt,xt,St,Et,_t,Ct=!1,At=[],Tt=null,Nt=null,Ot=null,Lt=new Map,Pt=new Map,jt=[],Rt="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function It(e,t){switch(e){case"focusin":case"focusout":Tt=null;break;case"dragenter":case"dragleave":Nt=null;break;case"mouseover":case"mouseout":Ot=null;break;case"pointerover":case"pointerout":Lt.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":Pt.delete(t.pointerId)}}function Dt(e,t,n,r,a,o){return null===e||e.nativeEvent!==o?(e={blockedOn:t,domEventName:n,eventSystemFlags:r,nativeEvent:o,targetContainers:[a]},null!==t&&(null!==(t=va(t))&&xt(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==a&&-1===t.indexOf(a)&&t.push(a),e)}function Ft(e){var t=ba(e.target);if(null!==t){var n=Ue(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=He(n)))return e.blockedOn=t,void _t(e.priority,(function(){St(n)}))}else if(3===t&&n.stateNode.current.memoizedState.isDehydrated)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function Mt(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Kt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=va(n))&&xt(t),e.blockedOn=n,!1;var r=new(n=e.nativeEvent).constructor(n.type,n);we=r,n.target.dispatchEvent(r),we=null,t.shift()}return!0}function zt(e,t,n){Mt(e)&&n.delete(t)}function Bt(){Ct=!1,null!==Tt&&Mt(Tt)&&(Tt=null),null!==Nt&&Mt(Nt)&&(Nt=null),null!==Ot&&Mt(Ot)&&(Ot=null),Lt.forEach(zt),Pt.forEach(zt)}function $t(e,t){e.blockedOn===t&&(e.blockedOn=null,Ct||(Ct=!0,a.unstable_scheduleCallback(a.unstable_NormalPriority,Bt)))}function Ut(e){function t(t){return $t(t,e)}if(0<At.length){$t(At[0],e);for(var n=1;n<At.length;n++){var r=At[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==Tt&&$t(Tt,e),null!==Nt&&$t(Nt,e),null!==Ot&&$t(Ot,e),Lt.forEach(t),Pt.forEach(t),n=0;n<jt.length;n++)(r=jt[n]).blockedOn===e&&(r.blockedOn=null);for(;0<jt.length&&null===(n=jt[0]).blockedOn;)Ft(n),null===n.blockedOn&&jt.shift()}var Ht=w.ReactCurrentBatchConfig,Vt=!0;function Wt(e,t,n,r){var a=vt,o=Ht.transition;Ht.transition=null;try{vt=1,Gt(e,t,n,r)}finally{vt=a,Ht.transition=o}}function qt(e,t,n,r){var a=vt,o=Ht.transition;Ht.transition=null;try{vt=4,Gt(e,t,n,r)}finally{vt=a,Ht.transition=o}}function Gt(e,t,n,r){if(Vt){var a=Kt(e,t,n,r);if(null===a)Vr(e,t,r,Yt,n),It(e,r);else if(function(e,t,n,r,a){switch(t){case"focusin":return Tt=Dt(Tt,e,t,n,r,a),!0;case"dragenter":return Nt=Dt(Nt,e,t,n,r,a),!0;case"mouseover":return Ot=Dt(Ot,e,t,n,r,a),!0;case"pointerover":var o=a.pointerId;return Lt.set(o,Dt(Lt.get(o)||null,e,t,n,r,a)),!0;case"gotpointercapture":return o=a.pointerId,Pt.set(o,Dt(Pt.get(o)||null,e,t,n,r,a)),!0}return!1}(a,e,t,n,r))r.stopPropagation();else if(It(e,r),4&t&&-1<Rt.indexOf(e)){for(;null!==a;){var o=va(a);if(null!==o&&kt(o),null===(o=Kt(e,t,n,r))&&Vr(e,t,r,Yt,n),o===a)break;a=o}null!==a&&r.stopPropagation()}else Vr(e,t,r,null,n)}}var Yt=null;function Kt(e,t,n,r){if(Yt=null,null!==(e=ba(e=ke(r))))if(null===(t=Ue(e)))e=null;else if(13===(n=t.tag)){if(null!==(e=He(t)))return e;e=null}else if(3===n){if(t.stateNode.current.memoizedState.isDehydrated)return 3===t.tag?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null);return Yt=e,null}function Qt(e){switch(e){case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 1;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"toggle":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 4;case"message":switch(Xe()){case Je:return 1;case et:return 4;case tt:case nt:return 16;case rt:return 536870912;default:return 16}default:return 16}}var Zt=null,Xt=null,Jt=null;function en(){if(Jt)return Jt;var e,t,n=Xt,r=n.length,a="value"in Zt?Zt.value:Zt.textContent,o=a.length;for(e=0;e<r&&n[e]===a[e];e++);var i=r-e;for(t=1;t<=i&&n[r-t]===a[o-t];t++);return Jt=a.slice(e,1<t?1-t:void 0)}function tn(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function nn(){return!0}function rn(){return!1}function an(e){function t(t,n,r,a,o){for(var i in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=a,this.target=o,this.currentTarget=null,e)e.hasOwnProperty(i)&&(t=e[i],this[i]=t?t(a):a[i]);return this.isDefaultPrevented=(null!=a.defaultPrevented?a.defaultPrevented:!1===a.returnValue)?nn:rn,this.isPropagationStopped=rn,this}return F(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=nn)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=nn)},persist:function(){},isPersistent:nn}),t}var on,ln,sn,un={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},cn=an(un),dn=F({},un,{view:0,detail:0}),pn=an(dn),fn=F({},dn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:_n,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==sn&&(sn&&"mousemove"===e.type?(on=e.screenX-sn.screenX,ln=e.screenY-sn.screenY):ln=on=0,sn=e),on)},movementY:function(e){return"movementY"in e?e.movementY:ln}}),hn=an(fn),mn=an(F({},fn,{dataTransfer:0})),gn=an(F({},dn,{relatedTarget:0})),yn=an(F({},un,{animationName:0,elapsedTime:0,pseudoElement:0})),bn=F({},un,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),vn=an(bn),wn=an(F({},un,{data:0})),kn={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},xn={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},Sn={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function En(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=Sn[e])&&!!t[e]}function _n(){return En}var Cn=F({},dn,{key:function(e){if(e.key){var t=kn[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=tn(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?xn[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:_n,charCode:function(e){return"keypress"===e.type?tn(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?tn(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),An=an(Cn),Tn=an(F({},fn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),Nn=an(F({},dn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:_n})),On=an(F({},un,{propertyName:0,elapsedTime:0,pseudoElement:0})),Ln=F({},fn,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),Pn=an(Ln),jn=[9,13,27,32],Rn=c&&"CompositionEvent"in window,In=null;c&&"documentMode"in document&&(In=document.documentMode);var Dn=c&&"TextEvent"in window&&!In,Fn=c&&(!Rn||In&&8<In&&11>=In),Mn=String.fromCharCode(32),zn=!1;function Bn(e,t){switch(e){case"keyup":return-1!==jn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function $n(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Un=!1;var Hn={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Vn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Hn[e.type]:"textarea"===t}function Wn(e,t,n,r){Ce(r),0<(t=qr(t,"onChange")).length&&(n=new cn("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var qn=null,Gn=null;function Yn(e){Mr(e,0)}function Kn(e){if(G(wa(e)))return e}function Qn(e,t){if("change"===e)return t}var Zn=!1;if(c){var Xn;if(c){var Jn="oninput"in document;if(!Jn){var er=document.createElement("div");er.setAttribute("oninput","return;"),Jn="function"==typeof er.oninput}Xn=Jn}else Xn=!1;Zn=Xn&&(!document.documentMode||9<document.documentMode)}function tr(){qn&&(qn.detachEvent("onpropertychange",nr),Gn=qn=null)}function nr(e){if("value"===e.propertyName&&Kn(Gn)){var t=[];Wn(t,Gn,e,ke(e)),Le(Yn,t)}}function rr(e,t,n){"focusin"===e?(tr(),Gn=n,(qn=t).attachEvent("onpropertychange",nr)):"focusout"===e&&tr()}function ar(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Kn(Gn)}function or(e,t){if("click"===e)return Kn(t)}function ir(e,t){if("input"===e||"change"===e)return Kn(t)}var lr="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t};function sr(e,t){if(lr(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++){var a=n[r];if(!d.call(t,a)||!lr(e[a],t[a]))return!1}return!0}function ur(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function cr(e,t){var n,r=ur(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=ur(r)}}function dr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?dr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function pr(){for(var e=window,t=Y();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=Y((e=t.contentWindow).document)}return t}function fr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}function hr(e){var t=pr(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&dr(n.ownerDocument.documentElement,n)){if(null!==r&&fr(n))if(t=r.start,void 0===(e=r.end)&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if((e=(t=n.ownerDocument||document)&&t.defaultView||window).getSelection){e=e.getSelection();var a=n.textContent.length,o=Math.min(r.start,a);r=void 0===r.end?o:Math.min(r.end,a),!e.extend&&o>r&&(a=r,r=o,o=a),a=cr(n,o);var i=cr(n,r);a&&i&&(1!==e.rangeCount||e.anchorNode!==a.node||e.anchorOffset!==a.offset||e.focusNode!==i.node||e.focusOffset!==i.offset)&&((t=t.createRange()).setStart(a.node,a.offset),e.removeAllRanges(),o>r?(e.addRange(t),e.extend(i.node,i.offset)):(t.setEnd(i.node,i.offset),e.addRange(t)))}for(t=[],e=n;e=e.parentNode;)1===e.nodeType&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for("function"==typeof n.focus&&n.focus(),n=0;n<t.length;n++)(e=t[n]).element.scrollLeft=e.left,e.element.scrollTop=e.top}}var mr=c&&"documentMode"in document&&11>=document.documentMode,gr=null,yr=null,br=null,vr=!1;function wr(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;vr||null==gr||gr!==Y(r)||("selectionStart"in(r=gr)&&fr(r)?r={start:r.selectionStart,end:r.selectionEnd}:r={anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},br&&sr(br,r)||(br=r,0<(r=qr(yr,"onSelect")).length&&(t=new cn("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=gr)))}function kr(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var xr={animationend:kr("Animation","AnimationEnd"),animationiteration:kr("Animation","AnimationIteration"),animationstart:kr("Animation","AnimationStart"),transitionend:kr("Transition","TransitionEnd")},Sr={},Er={};function _r(e){if(Sr[e])return Sr[e];if(!xr[e])return e;var t,n=xr[e];for(t in n)if(n.hasOwnProperty(t)&&t in Er)return Sr[e]=n[t];return e}c&&(Er=document.createElement("div").style,"AnimationEvent"in window||(delete xr.animationend.animation,delete xr.animationiteration.animation,delete xr.animationstart.animation),"TransitionEvent"in window||delete xr.transitionend.transition);var Cr=_r("animationend"),Ar=_r("animationiteration"),Tr=_r("animationstart"),Nr=_r("transitionend"),Or=new Map,Lr="abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function Pr(e,t){Or.set(e,t),s(t,[e])}for(var jr=0;jr<Lr.length;jr++){var Rr=Lr[jr];Pr(Rr.toLowerCase(),"on"+(Rr[0].toUpperCase()+Rr.slice(1)))}Pr(Cr,"onAnimationEnd"),Pr(Ar,"onAnimationIteration"),Pr(Tr,"onAnimationStart"),Pr("dblclick","onDoubleClick"),Pr("focusin","onFocus"),Pr("focusout","onBlur"),Pr(Nr,"onTransitionEnd"),u("onMouseEnter",["mouseout","mouseover"]),u("onMouseLeave",["mouseout","mouseover"]),u("onPointerEnter",["pointerout","pointerover"]),u("onPointerLeave",["pointerout","pointerover"]),s("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),s("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),s("onBeforeInput",["compositionend","keypress","textInput","paste"]),s("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),s("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),s("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Ir="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Dr=new Set("cancel close invalid load scroll toggle".split(" ").concat(Ir));function Fr(e,t,n){var r=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,r,a,i,l,s,u){if($e.apply(this,arguments),De){if(!De)throw Error(o(198));var c=Fe;De=!1,Fe=null,Me||(Me=!0,ze=c)}}(r,t,void 0,e),e.currentTarget=null}function Mr(e,t){t=!!(4&t);for(var n=0;n<e.length;n++){var r=e[n],a=r.event;r=r.listeners;e:{var o=void 0;if(t)for(var i=r.length-1;0<=i;i--){var l=r[i],s=l.instance,u=l.currentTarget;if(l=l.listener,s!==o&&a.isPropagationStopped())break e;Fr(a,l,u),o=s}else for(i=0;i<r.length;i++){if(s=(l=r[i]).instance,u=l.currentTarget,l=l.listener,s!==o&&a.isPropagationStopped())break e;Fr(a,l,u),o=s}}}if(Me)throw e=ze,Me=!1,ze=null,e}function zr(e,t){var n=t[ma];void 0===n&&(n=t[ma]=new Set);var r=e+"__bubble";n.has(r)||(Hr(t,e,2,!1),n.add(r))}function Br(e,t,n){var r=0;t&&(r|=4),Hr(n,e,r,t)}var $r="_reactListening"+Math.random().toString(36).slice(2);function Ur(e){if(!e[$r]){e[$r]=!0,i.forEach((function(t){"selectionchange"!==t&&(Dr.has(t)||Br(t,!1,e),Br(t,!0,e))}));var t=9===e.nodeType?e:e.ownerDocument;null===t||t[$r]||(t[$r]=!0,Br("selectionchange",!1,t))}}function Hr(e,t,n,r){switch(Qt(t)){case 1:var a=Wt;break;case 4:a=qt;break;default:a=Gt}n=a.bind(null,t,n,e),a=void 0,!je||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(a=!0),r?void 0!==a?e.addEventListener(t,n,{capture:!0,passive:a}):e.addEventListener(t,n,!0):void 0!==a?e.addEventListener(t,n,{passive:a}):e.addEventListener(t,n,!1)}function Vr(e,t,n,r,a){var o=r;if(!(1&t||2&t||null===r))e:for(;;){if(null===r)return;var i=r.tag;if(3===i||4===i){var l=r.stateNode.containerInfo;if(l===a||8===l.nodeType&&l.parentNode===a)break;if(4===i)for(i=r.return;null!==i;){var s=i.tag;if((3===s||4===s)&&((s=i.stateNode.containerInfo)===a||8===s.nodeType&&s.parentNode===a))return;i=i.return}for(;null!==l;){if(null===(i=ba(l)))return;if(5===(s=i.tag)||6===s){r=o=i;continue e}l=l.parentNode}}r=r.return}Le((function(){var r=o,a=ke(n),i=[];e:{var l=Or.get(e);if(void 0!==l){var s=cn,u=e;switch(e){case"keypress":if(0===tn(n))break e;case"keydown":case"keyup":s=An;break;case"focusin":u="focus",s=gn;break;case"focusout":u="blur",s=gn;break;case"beforeblur":case"afterblur":s=gn;break;case"click":if(2===n.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":s=hn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":s=mn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":s=Nn;break;case Cr:case Ar:case Tr:s=yn;break;case Nr:s=On;break;case"scroll":s=pn;break;case"wheel":s=Pn;break;case"copy":case"cut":case"paste":s=vn;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":s=Tn}var c=!!(4&t),d=!c&&"scroll"===e,p=c?null!==l?l+"Capture":null:l;c=[];for(var f,h=r;null!==h;){var m=(f=h).stateNode;if(5===f.tag&&null!==m&&(f=m,null!==p&&(null!=(m=Pe(h,p))&&c.push(Wr(h,m,f)))),d)break;h=h.return}0<c.length&&(l=new s(l,u,null,n,a),i.push({event:l,listeners:c}))}}if(!(7&t)){if(s="mouseout"===e||"pointerout"===e,(!(l="mouseover"===e||"pointerover"===e)||n===we||!(u=n.relatedTarget||n.fromElement)||!ba(u)&&!u[ha])&&(s||l)&&(l=a.window===a?a:(l=a.ownerDocument)?l.defaultView||l.parentWindow:window,s?(s=r,null!==(u=(u=n.relatedTarget||n.toElement)?ba(u):null)&&(u!==(d=Ue(u))||5!==u.tag&&6!==u.tag)&&(u=null)):(s=null,u=r),s!==u)){if(c=hn,m="onMouseLeave",p="onMouseEnter",h="mouse","pointerout"!==e&&"pointerover"!==e||(c=Tn,m="onPointerLeave",p="onPointerEnter",h="pointer"),d=null==s?l:wa(s),f=null==u?l:wa(u),(l=new c(m,h+"leave",s,n,a)).target=d,l.relatedTarget=f,m=null,ba(a)===r&&((c=new c(p,h+"enter",u,n,a)).target=f,c.relatedTarget=d,m=c),d=m,s&&u)e:{for(p=u,h=0,f=c=s;f;f=Gr(f))h++;for(f=0,m=p;m;m=Gr(m))f++;for(;0<h-f;)c=Gr(c),h--;for(;0<f-h;)p=Gr(p),f--;for(;h--;){if(c===p||null!==p&&c===p.alternate)break e;c=Gr(c),p=Gr(p)}c=null}else c=null;null!==s&&Yr(i,l,s,c,!1),null!==u&&null!==d&&Yr(i,d,u,c,!0)}if("select"===(s=(l=r?wa(r):window).nodeName&&l.nodeName.toLowerCase())||"input"===s&&"file"===l.type)var g=Qn;else if(Vn(l))if(Zn)g=ir;else{g=ar;var y=rr}else(s=l.nodeName)&&"input"===s.toLowerCase()&&("checkbox"===l.type||"radio"===l.type)&&(g=or);switch(g&&(g=g(e,r))?Wn(i,g,n,a):(y&&y(e,l,r),"focusout"===e&&(y=l._wrapperState)&&y.controlled&&"number"===l.type&&ee(l,"number",l.value)),y=r?wa(r):window,e){case"focusin":(Vn(y)||"true"===y.contentEditable)&&(gr=y,yr=r,br=null);break;case"focusout":br=yr=gr=null;break;case"mousedown":vr=!0;break;case"contextmenu":case"mouseup":case"dragend":vr=!1,wr(i,n,a);break;case"selectionchange":if(mr)break;case"keydown":case"keyup":wr(i,n,a)}var b;if(Rn)e:{switch(e){case"compositionstart":var v="onCompositionStart";break e;case"compositionend":v="onCompositionEnd";break e;case"compositionupdate":v="onCompositionUpdate";break e}v=void 0}else Un?Bn(e,n)&&(v="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(v="onCompositionStart");v&&(Fn&&"ko"!==n.locale&&(Un||"onCompositionStart"!==v?"onCompositionEnd"===v&&Un&&(b=en()):(Xt="value"in(Zt=a)?Zt.value:Zt.textContent,Un=!0)),0<(y=qr(r,v)).length&&(v=new wn(v,e,null,n,a),i.push({event:v,listeners:y}),b?v.data=b:null!==(b=$n(n))&&(v.data=b))),(b=Dn?function(e,t){switch(e){case"compositionend":return $n(t);case"keypress":return 32!==t.which?null:(zn=!0,Mn);case"textInput":return(e=t.data)===Mn&&zn?null:e;default:return null}}(e,n):function(e,t){if(Un)return"compositionend"===e||!Rn&&Bn(e,t)?(e=en(),Jt=Xt=Zt=null,Un=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return Fn&&"ko"!==t.locale?null:t.data}}(e,n))&&(0<(r=qr(r,"onBeforeInput")).length&&(a=new wn("onBeforeInput","beforeinput",null,n,a),i.push({event:a,listeners:r}),a.data=b))}Mr(i,t)}))}function Wr(e,t,n){return{instance:e,listener:t,currentTarget:n}}function qr(e,t){for(var n=t+"Capture",r=[];null!==e;){var a=e,o=a.stateNode;5===a.tag&&null!==o&&(a=o,null!=(o=Pe(e,n))&&r.unshift(Wr(e,o,a)),null!=(o=Pe(e,t))&&r.push(Wr(e,o,a))),e=e.return}return r}function Gr(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function Yr(e,t,n,r,a){for(var o=t._reactName,i=[];null!==n&&n!==r;){var l=n,s=l.alternate,u=l.stateNode;if(null!==s&&s===r)break;5===l.tag&&null!==u&&(l=u,a?null!=(s=Pe(n,o))&&i.unshift(Wr(n,s,l)):a||null!=(s=Pe(n,o))&&i.push(Wr(n,s,l))),n=n.return}0!==i.length&&e.push({event:t,listeners:i})}var Kr=/\r\n?/g,Qr=/\u0000|\uFFFD/g;function Zr(e){return("string"==typeof e?e:""+e).replace(Kr,"\n").replace(Qr,"")}function Xr(e,t,n){if(t=Zr(t),Zr(e)!==t&&n)throw Error(o(425))}function Jr(){}var ea=null,ta=null;function na(e,t){return"textarea"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var ra="function"==typeof setTimeout?setTimeout:void 0,aa="function"==typeof clearTimeout?clearTimeout:void 0,oa="function"==typeof Promise?Promise:void 0,ia="function"==typeof queueMicrotask?queueMicrotask:void 0!==oa?function(e){return oa.resolve(null).then(e).catch(la)}:ra;function la(e){setTimeout((function(){throw e}))}function sa(e,t){var n=t,r=0;do{var a=n.nextSibling;if(e.removeChild(n),a&&8===a.nodeType)if("/$"===(n=a.data)){if(0===r)return e.removeChild(a),void Ut(t);r--}else"$"!==n&&"$?"!==n&&"$!"!==n||r++;n=a}while(n);Ut(t)}function ua(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break;if(8===t){if("$"===(t=e.data)||"$!"===t||"$?"===t)break;if("/$"===t)return null}}return e}function ca(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var da=Math.random().toString(36).slice(2),pa="__reactFiber$"+da,fa="__reactProps$"+da,ha="__reactContainer$"+da,ma="__reactEvents$"+da,ga="__reactListeners$"+da,ya="__reactHandles$"+da;function ba(e){var t=e[pa];if(t)return t;for(var n=e.parentNode;n;){if(t=n[ha]||n[pa]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=ca(e);null!==e;){if(n=e[pa])return n;e=ca(e)}return t}n=(e=n).parentNode}return null}function va(e){return!(e=e[pa]||e[ha])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function wa(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(o(33))}function ka(e){return e[fa]||null}var xa=[],Sa=-1;function Ea(e){return{current:e}}function _a(e){0>Sa||(e.current=xa[Sa],xa[Sa]=null,Sa--)}function Ca(e,t){Sa++,xa[Sa]=e.current,e.current=t}var Aa={},Ta=Ea(Aa),Na=Ea(!1),Oa=Aa;function La(e,t){var n=e.type.contextTypes;if(!n)return Aa;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var a,o={};for(a in n)o[a]=t[a];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function Pa(e){return null!=(e=e.childContextTypes)}function ja(){_a(Na),_a(Ta)}function Ra(e,t,n){if(Ta.current!==Aa)throw Error(o(168));Ca(Ta,t),Ca(Na,n)}function Ia(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var a in r=r.getChildContext())if(!(a in t))throw Error(o(108,H(e)||"Unknown",a));return F({},n,r)}function Da(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Aa,Oa=Ta.current,Ca(Ta,e),Ca(Na,Na.current),!0}function Fa(e,t,n){var r=e.stateNode;if(!r)throw Error(o(169));n?(e=Ia(e,t,Oa),r.__reactInternalMemoizedMergedChildContext=e,_a(Na),_a(Ta),Ca(Ta,e)):_a(Na),Ca(Na,n)}var Ma=null,za=!1,Ba=!1;function $a(e){null===Ma?Ma=[e]:Ma.push(e)}function Ua(){if(!Ba&&null!==Ma){Ba=!0;var e=0,t=vt;try{var n=Ma;for(vt=1;e<n.length;e++){var r=n[e];do{r=r(!0)}while(null!==r)}Ma=null,za=!1}catch(a){throw null!==Ma&&(Ma=Ma.slice(e+1)),Ge(Je,Ua),a}finally{vt=t,Ba=!1}}return null}var Ha=[],Va=0,Wa=null,qa=0,Ga=[],Ya=0,Ka=null,Qa=1,Za="";function Xa(e,t){Ha[Va++]=qa,Ha[Va++]=Wa,Wa=e,qa=t}function Ja(e,t,n){Ga[Ya++]=Qa,Ga[Ya++]=Za,Ga[Ya++]=Ka,Ka=e;var r=Qa;e=Za;var a=32-it(r)-1;r&=~(1<<a),n+=1;var o=32-it(t)+a;if(30<o){var i=a-a%5;o=(r&(1<<i)-1).toString(32),r>>=i,a-=i,Qa=1<<32-it(t)+a|n<<a|r,Za=o+e}else Qa=1<<o|n<<a|r,Za=e}function eo(e){null!==e.return&&(Xa(e,1),Ja(e,1,0))}function to(e){for(;e===Wa;)Wa=Ha[--Va],Ha[Va]=null,qa=Ha[--Va],Ha[Va]=null;for(;e===Ka;)Ka=Ga[--Ya],Ga[Ya]=null,Za=Ga[--Ya],Ga[Ya]=null,Qa=Ga[--Ya],Ga[Ya]=null}var no=null,ro=null,ao=!1,oo=null;function io(e,t){var n=Lu(5,null,null,0);n.elementType="DELETED",n.stateNode=t,n.return=e,null===(t=e.deletions)?(e.deletions=[n],e.flags|=16):t.push(n)}function lo(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,no=e,ro=ua(t.firstChild),!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,no=e,ro=null,!0);case 13:return null!==(t=8!==t.nodeType?null:t)&&(n=null!==Ka?{id:Qa,overflow:Za}:null,e.memoizedState={dehydrated:t,treeContext:n,retryLane:1073741824},(n=Lu(18,null,null,0)).stateNode=t,n.return=e,e.child=n,no=e,ro=null,!0);default:return!1}}function so(e){return!(!(1&e.mode)||128&e.flags)}function uo(e){if(ao){var t=ro;if(t){var n=t;if(!lo(e,t)){if(so(e))throw Error(o(418));t=ua(n.nextSibling);var r=no;t&&lo(e,t)?io(r,n):(e.flags=-4097&e.flags|2,ao=!1,no=e)}}else{if(so(e))throw Error(o(418));e.flags=-4097&e.flags|2,ao=!1,no=e}}}function co(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;no=e}function po(e){if(e!==no)return!1;if(!ao)return co(e),ao=!0,!1;var t;if((t=3!==e.tag)&&!(t=5!==e.tag)&&(t="head"!==(t=e.type)&&"body"!==t&&!na(e.type,e.memoizedProps)),t&&(t=ro)){if(so(e))throw fo(),Error(o(418));for(;t;)io(e,t),t=ua(t.nextSibling)}if(co(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(o(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){ro=ua(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}ro=null}}else ro=no?ua(e.stateNode.nextSibling):null;return!0}function fo(){for(var e=ro;e;)e=ua(e.nextSibling)}function ho(){ro=no=null,ao=!1}function mo(e){null===oo?oo=[e]:oo.push(e)}var go=w.ReactCurrentBatchConfig;function yo(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(o(309));var r=n.stateNode}if(!r)throw Error(o(147,e));var a=r,i=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===i?t.ref:(t=function(e){var t=a.refs;null===e?delete t[i]:t[i]=e},t._stringRef=i,t)}if("string"!=typeof e)throw Error(o(284));if(!n._owner)throw Error(o(290,e))}return e}function bo(e,t){throw e=Object.prototype.toString.call(t),Error(o(31,"[object Object]"===e?"object with keys {"+Object.keys(t).join(", ")+"}":e))}function vo(e){return(0,e._init)(e._payload)}function wo(e){function t(t,n){if(e){var r=t.deletions;null===r?(t.deletions=[n],t.flags|=16):r.push(n)}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function a(e,t){return(e=ju(e,t)).index=0,e.sibling=null,e}function i(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.flags|=2,n):r:(t.flags|=2,n):(t.flags|=1048576,n)}function l(t){return e&&null===t.alternate&&(t.flags|=2),t}function s(e,t,n,r){return null===t||6!==t.tag?((t=Fu(n,e.mode,r)).return=e,t):((t=a(t,n)).return=e,t)}function u(e,t,n,r){var o=n.type;return o===S?d(e,t,n.props.children,r,n.key):null!==t&&(t.elementType===o||"object"==typeof o&&null!==o&&o.$$typeof===P&&vo(o)===t.type)?((r=a(t,n.props)).ref=yo(e,t,n),r.return=e,r):((r=Ru(n.type,n.key,n.props,null,e.mode,r)).ref=yo(e,t,n),r.return=e,r)}function c(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Mu(n,e.mode,r)).return=e,t):((t=a(t,n.children||[])).return=e,t)}function d(e,t,n,r,o){return null===t||7!==t.tag?((t=Iu(n,e.mode,r,o)).return=e,t):((t=a(t,n)).return=e,t)}function p(e,t,n){if("string"==typeof t&&""!==t||"number"==typeof t)return(t=Fu(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case k:return(n=Ru(t.type,t.key,t.props,null,e.mode,n)).ref=yo(e,null,t),n.return=e,n;case x:return(t=Mu(t,e.mode,n)).return=e,t;case P:return p(e,(0,t._init)(t._payload),n)}if(te(t)||I(t))return(t=Iu(t,e.mode,n,null)).return=e,t;bo(e,t)}return null}function f(e,t,n,r){var a=null!==t?t.key:null;if("string"==typeof n&&""!==n||"number"==typeof n)return null!==a?null:s(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case k:return n.key===a?u(e,t,n,r):null;case x:return n.key===a?c(e,t,n,r):null;case P:return f(e,t,(a=n._init)(n._payload),r)}if(te(n)||I(n))return null!==a?null:d(e,t,n,r,null);bo(e,n)}return null}function h(e,t,n,r,a){if("string"==typeof r&&""!==r||"number"==typeof r)return s(t,e=e.get(n)||null,""+r,a);if("object"==typeof r&&null!==r){switch(r.$$typeof){case k:return u(t,e=e.get(null===r.key?n:r.key)||null,r,a);case x:return c(t,e=e.get(null===r.key?n:r.key)||null,r,a);case P:return h(e,t,n,(0,r._init)(r._payload),a)}if(te(r)||I(r))return d(t,e=e.get(n)||null,r,a,null);bo(t,r)}return null}function m(a,o,l,s){for(var u=null,c=null,d=o,m=o=0,g=null;null!==d&&m<l.length;m++){d.index>m?(g=d,d=null):g=d.sibling;var y=f(a,d,l[m],s);if(null===y){null===d&&(d=g);break}e&&d&&null===y.alternate&&t(a,d),o=i(y,o,m),null===c?u=y:c.sibling=y,c=y,d=g}if(m===l.length)return n(a,d),ao&&Xa(a,m),u;if(null===d){for(;m<l.length;m++)null!==(d=p(a,l[m],s))&&(o=i(d,o,m),null===c?u=d:c.sibling=d,c=d);return ao&&Xa(a,m),u}for(d=r(a,d);m<l.length;m++)null!==(g=h(d,a,m,l[m],s))&&(e&&null!==g.alternate&&d.delete(null===g.key?m:g.key),o=i(g,o,m),null===c?u=g:c.sibling=g,c=g);return e&&d.forEach((function(e){return t(a,e)})),ao&&Xa(a,m),u}function g(a,l,s,u){var c=I(s);if("function"!=typeof c)throw Error(o(150));if(null==(s=c.call(s)))throw Error(o(151));for(var d=c=null,m=l,g=l=0,y=null,b=s.next();null!==m&&!b.done;g++,b=s.next()){m.index>g?(y=m,m=null):y=m.sibling;var v=f(a,m,b.value,u);if(null===v){null===m&&(m=y);break}e&&m&&null===v.alternate&&t(a,m),l=i(v,l,g),null===d?c=v:d.sibling=v,d=v,m=y}if(b.done)return n(a,m),ao&&Xa(a,g),c;if(null===m){for(;!b.done;g++,b=s.next())null!==(b=p(a,b.value,u))&&(l=i(b,l,g),null===d?c=b:d.sibling=b,d=b);return ao&&Xa(a,g),c}for(m=r(a,m);!b.done;g++,b=s.next())null!==(b=h(m,a,g,b.value,u))&&(e&&null!==b.alternate&&m.delete(null===b.key?g:b.key),l=i(b,l,g),null===d?c=b:d.sibling=b,d=b);return e&&m.forEach((function(e){return t(a,e)})),ao&&Xa(a,g),c}return function e(r,o,i,s){if("object"==typeof i&&null!==i&&i.type===S&&null===i.key&&(i=i.props.children),"object"==typeof i&&null!==i){switch(i.$$typeof){case k:e:{for(var u=i.key,c=o;null!==c;){if(c.key===u){if((u=i.type)===S){if(7===c.tag){n(r,c.sibling),(o=a(c,i.props.children)).return=r,r=o;break e}}else if(c.elementType===u||"object"==typeof u&&null!==u&&u.$$typeof===P&&vo(u)===c.type){n(r,c.sibling),(o=a(c,i.props)).ref=yo(r,c,i),o.return=r,r=o;break e}n(r,c);break}t(r,c),c=c.sibling}i.type===S?((o=Iu(i.props.children,r.mode,s,i.key)).return=r,r=o):((s=Ru(i.type,i.key,i.props,null,r.mode,s)).ref=yo(r,o,i),s.return=r,r=s)}return l(r);case x:e:{for(c=i.key;null!==o;){if(o.key===c){if(4===o.tag&&o.stateNode.containerInfo===i.containerInfo&&o.stateNode.implementation===i.implementation){n(r,o.sibling),(o=a(o,i.children||[])).return=r,r=o;break e}n(r,o);break}t(r,o),o=o.sibling}(o=Mu(i,r.mode,s)).return=r,r=o}return l(r);case P:return e(r,o,(c=i._init)(i._payload),s)}if(te(i))return m(r,o,i,s);if(I(i))return g(r,o,i,s);bo(r,i)}return"string"==typeof i&&""!==i||"number"==typeof i?(i=""+i,null!==o&&6===o.tag?(n(r,o.sibling),(o=a(o,i)).return=r,r=o):(n(r,o),(o=Fu(i,r.mode,s)).return=r,r=o),l(r)):n(r,o)}}var ko=wo(!0),xo=wo(!1),So=Ea(null),Eo=null,_o=null,Co=null;function Ao(){Co=_o=Eo=null}function To(e){var t=So.current;_a(So),e._currentValue=t}function No(e,t,n){for(;null!==e;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,null!==r&&(r.childLanes|=t)):null!==r&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function Oo(e,t){Eo=e,Co=_o=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(!!(e.lanes&t)&&(vl=!0),e.firstContext=null)}function Lo(e){var t=e._currentValue;if(Co!==e)if(e={context:e,memoizedValue:t,next:null},null===_o){if(null===Eo)throw Error(o(308));_o=e,Eo.dependencies={lanes:0,firstContext:e}}else _o=_o.next=e;return t}var Po=null;function jo(e){null===Po?Po=[e]:Po.push(e)}function Ro(e,t,n,r){var a=t.interleaved;return null===a?(n.next=n,jo(t)):(n.next=a.next,a.next=n),t.interleaved=n,Io(e,r)}function Io(e,t){e.lanes|=t;var n=e.alternate;for(null!==n&&(n.lanes|=t),n=e,e=e.return;null!==e;)e.childLanes|=t,null!==(n=e.alternate)&&(n.childLanes|=t),n=e,e=e.return;return 3===n.tag?n.stateNode:null}var Do=!1;function Fo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Mo(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function zo(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function Bo(e,t,n){var r=e.updateQueue;if(null===r)return null;if(r=r.shared,2&Ts){var a=r.pending;return null===a?t.next=t:(t.next=a.next,a.next=t),r.pending=t,Io(e,n)}return null===(a=r.interleaved)?(t.next=t,jo(r)):(t.next=a.next,a.next=t),r.interleaved=t,Io(e,n)}function $o(e,t,n){if(null!==(t=t.updateQueue)&&(t=t.shared,4194240&n)){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,bt(e,n)}}function Uo(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var a=null,o=null;if(null!==(n=n.firstBaseUpdate)){do{var i={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};null===o?a=o=i:o=o.next=i,n=n.next}while(null!==n);null===o?a=o=t:o=o.next=t}else a=o=t;return n={baseState:r.baseState,firstBaseUpdate:a,lastBaseUpdate:o,shared:r.shared,effects:r.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function Ho(e,t,n,r){var a=e.updateQueue;Do=!1;var o=a.firstBaseUpdate,i=a.lastBaseUpdate,l=a.shared.pending;if(null!==l){a.shared.pending=null;var s=l,u=s.next;s.next=null,null===i?o=u:i.next=u,i=s;var c=e.alternate;null!==c&&((l=(c=c.updateQueue).lastBaseUpdate)!==i&&(null===l?c.firstBaseUpdate=u:l.next=u,c.lastBaseUpdate=s))}if(null!==o){var d=a.baseState;for(i=0,c=u=s=null,l=o;;){var p=l.lane,f=l.eventTime;if((r&p)===p){null!==c&&(c=c.next={eventTime:f,lane:0,tag:l.tag,payload:l.payload,callback:l.callback,next:null});e:{var h=e,m=l;switch(p=t,f=n,m.tag){case 1:if("function"==typeof(h=m.payload)){d=h.call(f,d,p);break e}d=h;break e;case 3:h.flags=-65537&h.flags|128;case 0:if(null==(p="function"==typeof(h=m.payload)?h.call(f,d,p):h))break e;d=F({},d,p);break e;case 2:Do=!0}}null!==l.callback&&0!==l.lane&&(e.flags|=64,null===(p=a.effects)?a.effects=[l]:p.push(l))}else f={eventTime:f,lane:p,tag:l.tag,payload:l.payload,callback:l.callback,next:null},null===c?(u=c=f,s=d):c=c.next=f,i|=p;if(null===(l=l.next)){if(null===(l=a.shared.pending))break;l=(p=l).next,p.next=null,a.lastBaseUpdate=p,a.shared.pending=null}}if(null===c&&(s=d),a.baseState=s,a.firstBaseUpdate=u,a.lastBaseUpdate=c,null!==(t=a.shared.interleaved)){a=t;do{i|=a.lane,a=a.next}while(a!==t)}else null===o&&(a.shared.lanes=0);Ds|=i,e.lanes=i,e.memoizedState=d}}function Vo(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],a=r.callback;if(null!==a){if(r.callback=null,r=n,"function"!=typeof a)throw Error(o(191,a));a.call(r)}}}var Wo={},qo=Ea(Wo),Go=Ea(Wo),Yo=Ea(Wo);function Ko(e){if(e===Wo)throw Error(o(174));return e}function Qo(e,t){switch(Ca(Yo,t),Ca(Go,e),Ca(qo,Wo),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:se(null,"");break;default:t=se(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}_a(qo),Ca(qo,t)}function Zo(){_a(qo),_a(Go),_a(Yo)}function Xo(e){Ko(Yo.current);var t=Ko(qo.current),n=se(t,e.type);t!==n&&(Ca(Go,e),Ca(qo,n))}function Jo(e){Go.current===e&&(_a(qo),_a(Go))}var ei=Ea(0);function ti(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(128&t.flags)return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var ni=[];function ri(){for(var e=0;e<ni.length;e++)ni[e]._workInProgressVersionPrimary=null;ni.length=0}var ai=w.ReactCurrentDispatcher,oi=w.ReactCurrentBatchConfig,ii=0,li=null,si=null,ui=null,ci=!1,di=!1,pi=0,fi=0;function hi(){throw Error(o(321))}function mi(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!lr(e[n],t[n]))return!1;return!0}function gi(e,t,n,r,a,i){if(ii=i,li=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,ai.current=null===e||null===e.memoizedState?Ji:el,e=n(r,a),di){i=0;do{if(di=!1,pi=0,25<=i)throw Error(o(301));i+=1,ui=si=null,t.updateQueue=null,ai.current=tl,e=n(r,a)}while(di)}if(ai.current=Xi,t=null!==si&&null!==si.next,ii=0,ui=si=li=null,ci=!1,t)throw Error(o(300));return e}function yi(){var e=0!==pi;return pi=0,e}function bi(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===ui?li.memoizedState=ui=e:ui=ui.next=e,ui}function vi(){if(null===si){var e=li.alternate;e=null!==e?e.memoizedState:null}else e=si.next;var t=null===ui?li.memoizedState:ui.next;if(null!==t)ui=t,si=e;else{if(null===e)throw Error(o(310));e={memoizedState:(si=e).memoizedState,baseState:si.baseState,baseQueue:si.baseQueue,queue:si.queue,next:null},null===ui?li.memoizedState=ui=e:ui=ui.next=e}return ui}function wi(e,t){return"function"==typeof t?t(e):t}function ki(e){var t=vi(),n=t.queue;if(null===n)throw Error(o(311));n.lastRenderedReducer=e;var r=si,a=r.baseQueue,i=n.pending;if(null!==i){if(null!==a){var l=a.next;a.next=i.next,i.next=l}r.baseQueue=a=i,n.pending=null}if(null!==a){i=a.next,r=r.baseState;var s=l=null,u=null,c=i;do{var d=c.lane;if((ii&d)===d)null!==u&&(u=u.next={lane:0,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null}),r=c.hasEagerState?c.eagerState:e(r,c.action);else{var p={lane:d,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null};null===u?(s=u=p,l=r):u=u.next=p,li.lanes|=d,Ds|=d}c=c.next}while(null!==c&&c!==i);null===u?l=r:u.next=s,lr(r,t.memoizedState)||(vl=!0),t.memoizedState=r,t.baseState=l,t.baseQueue=u,n.lastRenderedState=r}if(null!==(e=n.interleaved)){a=e;do{i=a.lane,li.lanes|=i,Ds|=i,a=a.next}while(a!==e)}else null===a&&(n.lanes=0);return[t.memoizedState,n.dispatch]}function xi(e){var t=vi(),n=t.queue;if(null===n)throw Error(o(311));n.lastRenderedReducer=e;var r=n.dispatch,a=n.pending,i=t.memoizedState;if(null!==a){n.pending=null;var l=a=a.next;do{i=e(i,l.action),l=l.next}while(l!==a);lr(i,t.memoizedState)||(vl=!0),t.memoizedState=i,null===t.baseQueue&&(t.baseState=i),n.lastRenderedState=i}return[i,r]}function Si(){}function Ei(e,t){var n=li,r=vi(),a=t(),i=!lr(r.memoizedState,a);if(i&&(r.memoizedState=a,vl=!0),r=r.queue,Di(Ai.bind(null,n,r,e),[e]),r.getSnapshot!==t||i||null!==ui&&1&ui.memoizedState.tag){if(n.flags|=2048,Li(9,Ci.bind(null,n,r,a,t),void 0,null),null===Ns)throw Error(o(349));30&ii||_i(n,t,a)}return a}function _i(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},null===(t=li.updateQueue)?(t={lastEffect:null,stores:null},li.updateQueue=t,t.stores=[e]):null===(n=t.stores)?t.stores=[e]:n.push(e)}function Ci(e,t,n,r){t.value=n,t.getSnapshot=r,Ti(t)&&Ni(e)}function Ai(e,t,n){return n((function(){Ti(t)&&Ni(e)}))}function Ti(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!lr(e,n)}catch(r){return!0}}function Ni(e){var t=Io(e,1);null!==t&&nu(t,e,1,-1)}function Oi(e){var t=bi();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:wi,lastRenderedState:e},t.queue=e,e=e.dispatch=Yi.bind(null,li,e),[t.memoizedState,e]}function Li(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=li.updateQueue)?(t={lastEffect:null,stores:null},li.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function Pi(){return vi().memoizedState}function ji(e,t,n,r){var a=bi();li.flags|=e,a.memoizedState=Li(1|t,n,void 0,void 0===r?null:r)}function Ri(e,t,n,r){var a=vi();r=void 0===r?null:r;var o=void 0;if(null!==si){var i=si.memoizedState;if(o=i.destroy,null!==r&&mi(r,i.deps))return void(a.memoizedState=Li(t,n,o,r))}li.flags|=e,a.memoizedState=Li(1|t,n,o,r)}function Ii(e,t){return ji(8390656,8,e,t)}function Di(e,t){return Ri(2048,8,e,t)}function Fi(e,t){return Ri(4,2,e,t)}function Mi(e,t){return Ri(4,4,e,t)}function zi(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function Bi(e,t,n){return n=null!=n?n.concat([e]):null,Ri(4,4,zi.bind(null,t,e),n)}function $i(){}function Ui(e,t){var n=vi();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&mi(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Hi(e,t){var n=vi();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&mi(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function Vi(e,t,n){return 21&ii?(lr(n,t)||(n=mt(),li.lanes|=n,Ds|=n,e.baseState=!0),t):(e.baseState&&(e.baseState=!1,vl=!0),e.memoizedState=n)}function Wi(e,t){var n=vt;vt=0!==n&&4>n?n:4,e(!0);var r=oi.transition;oi.transition={};try{e(!1),t()}finally{vt=n,oi.transition=r}}function qi(){return vi().memoizedState}function Gi(e,t,n){var r=tu(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},Ki(e))Qi(t,n);else if(null!==(n=Ro(e,t,n,r))){nu(n,e,r,eu()),Zi(n,t,r)}}function Yi(e,t,n){var r=tu(e),a={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(Ki(e))Qi(t,a);else{var o=e.alternate;if(0===e.lanes&&(null===o||0===o.lanes)&&null!==(o=t.lastRenderedReducer))try{var i=t.lastRenderedState,l=o(i,n);if(a.hasEagerState=!0,a.eagerState=l,lr(l,i)){var s=t.interleaved;return null===s?(a.next=a,jo(t)):(a.next=s.next,s.next=a),void(t.interleaved=a)}}catch(u){}null!==(n=Ro(e,t,a,r))&&(nu(n,e,r,a=eu()),Zi(n,t,r))}}function Ki(e){var t=e.alternate;return e===li||null!==t&&t===li}function Qi(e,t){di=ci=!0;var n=e.pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Zi(e,t,n){if(4194240&n){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,bt(e,n)}}var Xi={readContext:Lo,useCallback:hi,useContext:hi,useEffect:hi,useImperativeHandle:hi,useInsertionEffect:hi,useLayoutEffect:hi,useMemo:hi,useReducer:hi,useRef:hi,useState:hi,useDebugValue:hi,useDeferredValue:hi,useTransition:hi,useMutableSource:hi,useSyncExternalStore:hi,useId:hi,unstable_isNewReconciler:!1},Ji={readContext:Lo,useCallback:function(e,t){return bi().memoizedState=[e,void 0===t?null:t],e},useContext:Lo,useEffect:Ii,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,ji(4194308,4,zi.bind(null,t,e),n)},useLayoutEffect:function(e,t){return ji(4194308,4,e,t)},useInsertionEffect:function(e,t){return ji(4,2,e,t)},useMemo:function(e,t){var n=bi();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=bi();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=Gi.bind(null,li,e),[r.memoizedState,e]},useRef:function(e){return e={current:e},bi().memoizedState=e},useState:Oi,useDebugValue:$i,useDeferredValue:function(e){return bi().memoizedState=e},useTransition:function(){var e=Oi(!1),t=e[0];return e=Wi.bind(null,e[1]),bi().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=li,a=bi();if(ao){if(void 0===n)throw Error(o(407));n=n()}else{if(n=t(),null===Ns)throw Error(o(349));30&ii||_i(r,t,n)}a.memoizedState=n;var i={value:n,getSnapshot:t};return a.queue=i,Ii(Ai.bind(null,r,i,e),[e]),r.flags|=2048,Li(9,Ci.bind(null,r,i,n,t),void 0,null),n},useId:function(){var e=bi(),t=Ns.identifierPrefix;if(ao){var n=Za;t=":"+t+"R"+(n=(Qa&~(1<<32-it(Qa)-1)).toString(32)+n),0<(n=pi++)&&(t+="H"+n.toString(32)),t+=":"}else t=":"+t+"r"+(n=fi++).toString(32)+":";return e.memoizedState=t},unstable_isNewReconciler:!1},el={readContext:Lo,useCallback:Ui,useContext:Lo,useEffect:Di,useImperativeHandle:Bi,useInsertionEffect:Fi,useLayoutEffect:Mi,useMemo:Hi,useReducer:ki,useRef:Pi,useState:function(){return ki(wi)},useDebugValue:$i,useDeferredValue:function(e){return Vi(vi(),si.memoizedState,e)},useTransition:function(){return[ki(wi)[0],vi().memoizedState]},useMutableSource:Si,useSyncExternalStore:Ei,useId:qi,unstable_isNewReconciler:!1},tl={readContext:Lo,useCallback:Ui,useContext:Lo,useEffect:Di,useImperativeHandle:Bi,useInsertionEffect:Fi,useLayoutEffect:Mi,useMemo:Hi,useReducer:xi,useRef:Pi,useState:function(){return xi(wi)},useDebugValue:$i,useDeferredValue:function(e){var t=vi();return null===si?t.memoizedState=e:Vi(t,si.memoizedState,e)},useTransition:function(){return[xi(wi)[0],vi().memoizedState]},useMutableSource:Si,useSyncExternalStore:Ei,useId:qi,unstable_isNewReconciler:!1};function nl(e,t){if(e&&e.defaultProps){for(var n in t=F({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}function rl(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:F({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var al={isMounted:function(e){return!!(e=e._reactInternals)&&Ue(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=eu(),a=tu(e),o=zo(r,a);o.payload=t,null!=n&&(o.callback=n),null!==(t=Bo(e,o,a))&&(nu(t,e,a,r),$o(t,e,a))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=eu(),a=tu(e),o=zo(r,a);o.tag=1,o.payload=t,null!=n&&(o.callback=n),null!==(t=Bo(e,o,a))&&(nu(t,e,a,r),$o(t,e,a))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=eu(),r=tu(e),a=zo(n,r);a.tag=2,null!=t&&(a.callback=t),null!==(t=Bo(e,a,r))&&(nu(t,e,r,n),$o(t,e,r))}};function ol(e,t,n,r,a,o,i){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,o,i):!t.prototype||!t.prototype.isPureReactComponent||(!sr(n,r)||!sr(a,o))}function il(e,t,n){var r=!1,a=Aa,o=t.contextType;return"object"==typeof o&&null!==o?o=Lo(o):(a=Pa(t)?Oa:Ta.current,o=(r=null!=(r=t.contextTypes))?La(e,a):Aa),t=new t(n,o),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=al,e.stateNode=t,t._reactInternals=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=a,e.__reactInternalMemoizedMaskedChildContext=o),t}function ll(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&al.enqueueReplaceState(t,t.state,null)}function sl(e,t,n,r){var a=e.stateNode;a.props=n,a.state=e.memoizedState,a.refs={},Fo(e);var o=t.contextType;"object"==typeof o&&null!==o?a.context=Lo(o):(o=Pa(t)?Oa:Ta.current,a.context=La(e,o)),a.state=e.memoizedState,"function"==typeof(o=t.getDerivedStateFromProps)&&(rl(e,t,o,n),a.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof a.getSnapshotBeforeUpdate||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||(t=a.state,"function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount(),t!==a.state&&al.enqueueReplaceState(a,a.state,null),Ho(e,n,a,r),a.state=e.memoizedState),"function"==typeof a.componentDidMount&&(e.flags|=4194308)}function ul(e,t){try{var n="",r=t;do{n+=$(r),r=r.return}while(r);var a=n}catch(o){a="\nError generating stack: "+o.message+"\n"+o.stack}return{value:e,source:t,stack:a,digest:null}}function cl(e,t,n){return{value:e,source:null,stack:null!=n?n:null,digest:null!=t?t:null}}function dl(e,t){try{console.error(t.value)}catch(n){setTimeout((function(){throw n}))}}var pl="function"==typeof WeakMap?WeakMap:Map;function fl(e,t,n){(n=zo(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Vs||(Vs=!0,Ws=r),dl(0,t)},n}function hl(e,t,n){(n=zo(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var a=t.value;n.payload=function(){return r(a)},n.callback=function(){dl(0,t)}}var o=e.stateNode;return null!==o&&"function"==typeof o.componentDidCatch&&(n.callback=function(){dl(0,t),"function"!=typeof r&&(null===qs?qs=new Set([this]):qs.add(this));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}function ml(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new pl;var a=new Set;r.set(t,a)}else void 0===(a=r.get(t))&&(a=new Set,r.set(t,a));a.has(n)||(a.add(n),e=_u.bind(null,e,t,n),t.then(e,e))}function gl(e){do{var t;if((t=13===e.tag)&&(t=null===(t=e.memoizedState)||null!==t.dehydrated),t)return e;e=e.return}while(null!==e);return null}function yl(e,t,n,r,a){return 1&e.mode?(e.flags|=65536,e.lanes=a,e):(e===t?e.flags|=65536:(e.flags|=128,n.flags|=131072,n.flags&=-52805,1===n.tag&&(null===n.alternate?n.tag=17:((t=zo(-1,1)).tag=2,Bo(n,t,1))),n.lanes|=1),e)}var bl=w.ReactCurrentOwner,vl=!1;function wl(e,t,n,r){t.child=null===e?xo(t,null,n,r):ko(t,e.child,n,r)}function kl(e,t,n,r,a){n=n.render;var o=t.ref;return Oo(t,a),r=gi(e,t,n,r,o,a),n=yi(),null===e||vl?(ao&&n&&eo(t),t.flags|=1,wl(e,t,r,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~a,Vl(e,t,a))}function xl(e,t,n,r,a){if(null===e){var o=n.type;return"function"!=typeof o||Pu(o)||void 0!==o.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Ru(n.type,null,r,t,t.mode,a)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=o,Sl(e,t,o,r,a))}if(o=e.child,!(e.lanes&a)){var i=o.memoizedProps;if((n=null!==(n=n.compare)?n:sr)(i,r)&&e.ref===t.ref)return Vl(e,t,a)}return t.flags|=1,(e=ju(o,r)).ref=t.ref,e.return=t,t.child=e}function Sl(e,t,n,r,a){if(null!==e){var o=e.memoizedProps;if(sr(o,r)&&e.ref===t.ref){if(vl=!1,t.pendingProps=r=o,!(e.lanes&a))return t.lanes=e.lanes,Vl(e,t,a);131072&e.flags&&(vl=!0)}}return Cl(e,t,n,r,a)}function El(e,t,n){var r=t.pendingProps,a=r.children,o=null!==e?e.memoizedState:null;if("hidden"===r.mode)if(1&t.mode){if(!(1073741824&n))return e=null!==o?o.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,Ca(js,Ps),Ps|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},r=null!==o?o.baseLanes:n,Ca(js,Ps),Ps|=r}else t.memoizedState={baseLanes:0,cachePool:null,transitions:null},Ca(js,Ps),Ps|=n;else null!==o?(r=o.baseLanes|n,t.memoizedState=null):r=n,Ca(js,Ps),Ps|=r;return wl(e,t,a,n),t.child}function _l(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=512,t.flags|=2097152)}function Cl(e,t,n,r,a){var o=Pa(n)?Oa:Ta.current;return o=La(t,o),Oo(t,a),n=gi(e,t,n,r,o,a),r=yi(),null===e||vl?(ao&&r&&eo(t),t.flags|=1,wl(e,t,n,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~a,Vl(e,t,a))}function Al(e,t,n,r,a){if(Pa(n)){var o=!0;Da(t)}else o=!1;if(Oo(t,a),null===t.stateNode)Hl(e,t),il(t,n,r),sl(t,n,r,a),r=!0;else if(null===e){var i=t.stateNode,l=t.memoizedProps;i.props=l;var s=i.context,u=n.contextType;"object"==typeof u&&null!==u?u=Lo(u):u=La(t,u=Pa(n)?Oa:Ta.current);var c=n.getDerivedStateFromProps,d="function"==typeof c||"function"==typeof i.getSnapshotBeforeUpdate;d||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==r||s!==u)&&ll(t,i,r,u),Do=!1;var p=t.memoizedState;i.state=p,Ho(t,r,i,a),s=t.memoizedState,l!==r||p!==s||Na.current||Do?("function"==typeof c&&(rl(t,n,c,r),s=t.memoizedState),(l=Do||ol(t,n,l,r,p,s,u))?(d||"function"!=typeof i.UNSAFE_componentWillMount&&"function"!=typeof i.componentWillMount||("function"==typeof i.componentWillMount&&i.componentWillMount(),"function"==typeof i.UNSAFE_componentWillMount&&i.UNSAFE_componentWillMount()),"function"==typeof i.componentDidMount&&(t.flags|=4194308)):("function"==typeof i.componentDidMount&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=s),i.props=r,i.state=s,i.context=u,r=l):("function"==typeof i.componentDidMount&&(t.flags|=4194308),r=!1)}else{i=t.stateNode,Mo(e,t),l=t.memoizedProps,u=t.type===t.elementType?l:nl(t.type,l),i.props=u,d=t.pendingProps,p=i.context,"object"==typeof(s=n.contextType)&&null!==s?s=Lo(s):s=La(t,s=Pa(n)?Oa:Ta.current);var f=n.getDerivedStateFromProps;(c="function"==typeof f||"function"==typeof i.getSnapshotBeforeUpdate)||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==d||p!==s)&&ll(t,i,r,s),Do=!1,p=t.memoizedState,i.state=p,Ho(t,r,i,a);var h=t.memoizedState;l!==d||p!==h||Na.current||Do?("function"==typeof f&&(rl(t,n,f,r),h=t.memoizedState),(u=Do||ol(t,n,u,r,p,h,s)||!1)?(c||"function"!=typeof i.UNSAFE_componentWillUpdate&&"function"!=typeof i.componentWillUpdate||("function"==typeof i.componentWillUpdate&&i.componentWillUpdate(r,h,s),"function"==typeof i.UNSAFE_componentWillUpdate&&i.UNSAFE_componentWillUpdate(r,h,s)),"function"==typeof i.componentDidUpdate&&(t.flags|=4),"function"==typeof i.getSnapshotBeforeUpdate&&(t.flags|=1024)):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=h),i.props=r,i.state=h,i.context=s,r=u):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=1024),r=!1)}return Tl(e,t,n,r,o,a)}function Tl(e,t,n,r,a,o){_l(e,t);var i=!!(128&t.flags);if(!r&&!i)return a&&Fa(t,n,!1),Vl(e,t,o);r=t.stateNode,bl.current=t;var l=i&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&i?(t.child=ko(t,e.child,null,o),t.child=ko(t,null,l,o)):wl(e,t,l,o),t.memoizedState=r.state,a&&Fa(t,n,!0),t.child}function Nl(e){var t=e.stateNode;t.pendingContext?Ra(0,t.pendingContext,t.pendingContext!==t.context):t.context&&Ra(0,t.context,!1),Qo(e,t.containerInfo)}function Ol(e,t,n,r,a){return ho(),mo(a),t.flags|=256,wl(e,t,n,r),t.child}var Ll,Pl,jl,Rl,Il={dehydrated:null,treeContext:null,retryLane:0};function Dl(e){return{baseLanes:e,cachePool:null,transitions:null}}function Fl(e,t,n){var r,a=t.pendingProps,i=ei.current,l=!1,s=!!(128&t.flags);if((r=s)||(r=(null===e||null!==e.memoizedState)&&!!(2&i)),r?(l=!0,t.flags&=-129):null!==e&&null===e.memoizedState||(i|=1),Ca(ei,1&i),null===e)return uo(t),null!==(e=t.memoizedState)&&null!==(e=e.dehydrated)?(1&t.mode?"$!"===e.data?t.lanes=8:t.lanes=1073741824:t.lanes=1,null):(s=a.children,e=a.fallback,l?(a=t.mode,l=t.child,s={mode:"hidden",children:s},1&a||null===l?l=Du(s,a,0,null):(l.childLanes=0,l.pendingProps=s),e=Iu(e,a,n,null),l.return=t,e.return=t,l.sibling=e,t.child=l,t.child.memoizedState=Dl(n),t.memoizedState=Il,e):Ml(t,s));if(null!==(i=e.memoizedState)&&null!==(r=i.dehydrated))return function(e,t,n,r,a,i,l){if(n)return 256&t.flags?(t.flags&=-257,zl(e,t,l,r=cl(Error(o(422))))):null!==t.memoizedState?(t.child=e.child,t.flags|=128,null):(i=r.fallback,a=t.mode,r=Du({mode:"visible",children:r.children},a,0,null),(i=Iu(i,a,l,null)).flags|=2,r.return=t,i.return=t,r.sibling=i,t.child=r,1&t.mode&&ko(t,e.child,null,l),t.child.memoizedState=Dl(l),t.memoizedState=Il,i);if(!(1&t.mode))return zl(e,t,l,null);if("$!"===a.data){if(r=a.nextSibling&&a.nextSibling.dataset)var s=r.dgst;return r=s,zl(e,t,l,r=cl(i=Error(o(419)),r,void 0))}if(s=!!(l&e.childLanes),vl||s){if(null!==(r=Ns)){switch(l&-l){case 4:a=2;break;case 16:a=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:a=32;break;case 536870912:a=268435456;break;default:a=0}0!==(a=a&(r.suspendedLanes|l)?0:a)&&a!==i.retryLane&&(i.retryLane=a,Io(e,a),nu(r,e,a,-1))}return mu(),zl(e,t,l,r=cl(Error(o(421))))}return"$?"===a.data?(t.flags|=128,t.child=e.child,t=Au.bind(null,e),a._reactRetry=t,null):(e=i.treeContext,ro=ua(a.nextSibling),no=t,ao=!0,oo=null,null!==e&&(Ga[Ya++]=Qa,Ga[Ya++]=Za,Ga[Ya++]=Ka,Qa=e.id,Za=e.overflow,Ka=t),t=Ml(t,r.children),t.flags|=4096,t)}(e,t,s,a,r,i,n);if(l){l=a.fallback,s=t.mode,r=(i=e.child).sibling;var u={mode:"hidden",children:a.children};return 1&s||t.child===i?(a=ju(i,u)).subtreeFlags=14680064&i.subtreeFlags:((a=t.child).childLanes=0,a.pendingProps=u,t.deletions=null),null!==r?l=ju(r,l):(l=Iu(l,s,n,null)).flags|=2,l.return=t,a.return=t,a.sibling=l,t.child=a,a=l,l=t.child,s=null===(s=e.child.memoizedState)?Dl(n):{baseLanes:s.baseLanes|n,cachePool:null,transitions:s.transitions},l.memoizedState=s,l.childLanes=e.childLanes&~n,t.memoizedState=Il,a}return e=(l=e.child).sibling,a=ju(l,{mode:"visible",children:a.children}),!(1&t.mode)&&(a.lanes=n),a.return=t,a.sibling=null,null!==e&&(null===(n=t.deletions)?(t.deletions=[e],t.flags|=16):n.push(e)),t.child=a,t.memoizedState=null,a}function Ml(e,t){return(t=Du({mode:"visible",children:t},e.mode,0,null)).return=e,e.child=t}function zl(e,t,n,r){return null!==r&&mo(r),ko(t,e.child,null,n),(e=Ml(t,t.pendingProps.children)).flags|=2,t.memoizedState=null,e}function Bl(e,t,n){e.lanes|=t;var r=e.alternate;null!==r&&(r.lanes|=t),No(e.return,t,n)}function $l(e,t,n,r,a){var o=e.memoizedState;null===o?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:a}:(o.isBackwards=t,o.rendering=null,o.renderingStartTime=0,o.last=r,o.tail=n,o.tailMode=a)}function Ul(e,t,n){var r=t.pendingProps,a=r.revealOrder,o=r.tail;if(wl(e,t,r.children,n),2&(r=ei.current))r=1&r|2,t.flags|=128;else{if(null!==e&&128&e.flags)e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&Bl(e,n,t);else if(19===e.tag)Bl(e,n,t);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(Ca(ei,r),1&t.mode)switch(a){case"forwards":for(n=t.child,a=null;null!==n;)null!==(e=n.alternate)&&null===ti(e)&&(a=n),n=n.sibling;null===(n=a)?(a=t.child,t.child=null):(a=n.sibling,n.sibling=null),$l(t,!1,a,n,o);break;case"backwards":for(n=null,a=t.child,t.child=null;null!==a;){if(null!==(e=a.alternate)&&null===ti(e)){t.child=a;break}e=a.sibling,a.sibling=n,n=a,a=e}$l(t,!0,n,null,o);break;case"together":$l(t,!1,null,null,void 0);break;default:t.memoizedState=null}else t.memoizedState=null;return t.child}function Hl(e,t){!(1&t.mode)&&null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2)}function Vl(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),Ds|=t.lanes,!(n&t.childLanes))return null;if(null!==e&&t.child!==e.child)throw Error(o(153));if(null!==t.child){for(n=ju(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=ju(e,e.pendingProps)).return=t;n.sibling=null}return t.child}function Wl(e,t){if(!ao)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function ql(e){var t=null!==e.alternate&&e.alternate.child===e.child,n=0,r=0;if(t)for(var a=e.child;null!==a;)n|=a.lanes|a.childLanes,r|=14680064&a.subtreeFlags,r|=14680064&a.flags,a.return=e,a=a.sibling;else for(a=e.child;null!==a;)n|=a.lanes|a.childLanes,r|=a.subtreeFlags,r|=a.flags,a.return=e,a=a.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function Gl(e,t,n){var r=t.pendingProps;switch(to(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return ql(t),null;case 1:case 17:return Pa(t.type)&&ja(),ql(t),null;case 3:return r=t.stateNode,Zo(),_a(Na),_a(Ta),ri(),r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(po(t)?t.flags|=4:null===e||e.memoizedState.isDehydrated&&!(256&t.flags)||(t.flags|=1024,null!==oo&&(iu(oo),oo=null))),Pl(e,t),ql(t),null;case 5:Jo(t);var a=Ko(Yo.current);if(n=t.type,null!==e&&null!=t.stateNode)jl(e,t,n,r,a),e.ref!==t.ref&&(t.flags|=512,t.flags|=2097152);else{if(!r){if(null===t.stateNode)throw Error(o(166));return ql(t),null}if(e=Ko(qo.current),po(t)){r=t.stateNode,n=t.type;var i=t.memoizedProps;switch(r[pa]=t,r[fa]=i,e=!!(1&t.mode),n){case"dialog":zr("cancel",r),zr("close",r);break;case"iframe":case"object":case"embed":zr("load",r);break;case"video":case"audio":for(a=0;a<Ir.length;a++)zr(Ir[a],r);break;case"source":zr("error",r);break;case"img":case"image":case"link":zr("error",r),zr("load",r);break;case"details":zr("toggle",r);break;case"input":Q(r,i),zr("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!i.multiple},zr("invalid",r);break;case"textarea":ae(r,i),zr("invalid",r)}for(var s in be(n,i),a=null,i)if(i.hasOwnProperty(s)){var u=i[s];"children"===s?"string"==typeof u?r.textContent!==u&&(!0!==i.suppressHydrationWarning&&Xr(r.textContent,u,e),a=["children",u]):"number"==typeof u&&r.textContent!==""+u&&(!0!==i.suppressHydrationWarning&&Xr(r.textContent,u,e),a=["children",""+u]):l.hasOwnProperty(s)&&null!=u&&"onScroll"===s&&zr("scroll",r)}switch(n){case"input":q(r),J(r,i,!0);break;case"textarea":q(r),ie(r);break;case"select":case"option":break;default:"function"==typeof i.onClick&&(r.onclick=Jr)}r=a,t.updateQueue=r,null!==r&&(t.flags|=4)}else{s=9===a.nodeType?a:a.ownerDocument,"http://www.w3.org/1999/xhtml"===e&&(e=le(n)),"http://www.w3.org/1999/xhtml"===e?"script"===n?((e=s.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=s.createElement(n,{is:r.is}):(e=s.createElement(n),"select"===n&&(s=e,r.multiple?s.multiple=!0:r.size&&(s.size=r.size))):e=s.createElementNS(e,n),e[pa]=t,e[fa]=r,Ll(e,t,!1,!1),t.stateNode=e;e:{switch(s=ve(n,r),n){case"dialog":zr("cancel",e),zr("close",e),a=r;break;case"iframe":case"object":case"embed":zr("load",e),a=r;break;case"video":case"audio":for(a=0;a<Ir.length;a++)zr(Ir[a],e);a=r;break;case"source":zr("error",e),a=r;break;case"img":case"image":case"link":zr("error",e),zr("load",e),a=r;break;case"details":zr("toggle",e),a=r;break;case"input":Q(e,r),a=K(e,r),zr("invalid",e);break;case"option":default:a=r;break;case"select":e._wrapperState={wasMultiple:!!r.multiple},a=F({},r,{value:void 0}),zr("invalid",e);break;case"textarea":ae(e,r),a=re(e,r),zr("invalid",e)}for(i in be(n,a),u=a)if(u.hasOwnProperty(i)){var c=u[i];"style"===i?ge(e,c):"dangerouslySetInnerHTML"===i?null!=(c=c?c.__html:void 0)&&de(e,c):"children"===i?"string"==typeof c?("textarea"!==n||""!==c)&&pe(e,c):"number"==typeof c&&pe(e,""+c):"suppressContentEditableWarning"!==i&&"suppressHydrationWarning"!==i&&"autoFocus"!==i&&(l.hasOwnProperty(i)?null!=c&&"onScroll"===i&&zr("scroll",e):null!=c&&v(e,i,c,s))}switch(n){case"input":q(e),J(e,r,!1);break;case"textarea":q(e),ie(e);break;case"option":null!=r.value&&e.setAttribute("value",""+V(r.value));break;case"select":e.multiple=!!r.multiple,null!=(i=r.value)?ne(e,!!r.multiple,i,!1):null!=r.defaultValue&&ne(e,!!r.multiple,r.defaultValue,!0);break;default:"function"==typeof a.onClick&&(e.onclick=Jr)}switch(n){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break e;case"img":r=!0;break e;default:r=!1}}r&&(t.flags|=4)}null!==t.ref&&(t.flags|=512,t.flags|=2097152)}return ql(t),null;case 6:if(e&&null!=t.stateNode)Rl(e,t,e.memoizedProps,r);else{if("string"!=typeof r&&null===t.stateNode)throw Error(o(166));if(n=Ko(Yo.current),Ko(qo.current),po(t)){if(r=t.stateNode,n=t.memoizedProps,r[pa]=t,(i=r.nodeValue!==n)&&null!==(e=no))switch(e.tag){case 3:Xr(r.nodeValue,n,!!(1&e.mode));break;case 5:!0!==e.memoizedProps.suppressHydrationWarning&&Xr(r.nodeValue,n,!!(1&e.mode))}i&&(t.flags|=4)}else(r=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[pa]=t,t.stateNode=r}return ql(t),null;case 13:if(_a(ei),r=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(ao&&null!==ro&&1&t.mode&&!(128&t.flags))fo(),ho(),t.flags|=98560,i=!1;else if(i=po(t),null!==r&&null!==r.dehydrated){if(null===e){if(!i)throw Error(o(318));if(!(i=null!==(i=t.memoizedState)?i.dehydrated:null))throw Error(o(317));i[pa]=t}else ho(),!(128&t.flags)&&(t.memoizedState=null),t.flags|=4;ql(t),i=!1}else null!==oo&&(iu(oo),oo=null),i=!0;if(!i)return 65536&t.flags?t:null}return 128&t.flags?(t.lanes=n,t):((r=null!==r)!==(null!==e&&null!==e.memoizedState)&&r&&(t.child.flags|=8192,1&t.mode&&(null===e||1&ei.current?0===Rs&&(Rs=3):mu())),null!==t.updateQueue&&(t.flags|=4),ql(t),null);case 4:return Zo(),Pl(e,t),null===e&&Ur(t.stateNode.containerInfo),ql(t),null;case 10:return To(t.type._context),ql(t),null;case 19:if(_a(ei),null===(i=t.memoizedState))return ql(t),null;if(r=!!(128&t.flags),null===(s=i.rendering))if(r)Wl(i,!1);else{if(0!==Rs||null!==e&&128&e.flags)for(e=t.child;null!==e;){if(null!==(s=ti(e))){for(t.flags|=128,Wl(i,!1),null!==(r=s.updateQueue)&&(t.updateQueue=r,t.flags|=4),t.subtreeFlags=0,r=n,n=t.child;null!==n;)e=r,(i=n).flags&=14680066,null===(s=i.alternate)?(i.childLanes=0,i.lanes=e,i.child=null,i.subtreeFlags=0,i.memoizedProps=null,i.memoizedState=null,i.updateQueue=null,i.dependencies=null,i.stateNode=null):(i.childLanes=s.childLanes,i.lanes=s.lanes,i.child=s.child,i.subtreeFlags=0,i.deletions=null,i.memoizedProps=s.memoizedProps,i.memoizedState=s.memoizedState,i.updateQueue=s.updateQueue,i.type=s.type,e=s.dependencies,i.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return Ca(ei,1&ei.current|2),t.child}e=e.sibling}null!==i.tail&&Ze()>Us&&(t.flags|=128,r=!0,Wl(i,!1),t.lanes=4194304)}else{if(!r)if(null!==(e=ti(s))){if(t.flags|=128,r=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),Wl(i,!0),null===i.tail&&"hidden"===i.tailMode&&!s.alternate&&!ao)return ql(t),null}else 2*Ze()-i.renderingStartTime>Us&&1073741824!==n&&(t.flags|=128,r=!0,Wl(i,!1),t.lanes=4194304);i.isBackwards?(s.sibling=t.child,t.child=s):(null!==(n=i.last)?n.sibling=s:t.child=s,i.last=s)}return null!==i.tail?(t=i.tail,i.rendering=t,i.tail=t.sibling,i.renderingStartTime=Ze(),t.sibling=null,n=ei.current,Ca(ei,r?1&n|2:1&n),t):(ql(t),null);case 22:case 23:return du(),r=null!==t.memoizedState,null!==e&&null!==e.memoizedState!==r&&(t.flags|=8192),r&&1&t.mode?!!(1073741824&Ps)&&(ql(t),6&t.subtreeFlags&&(t.flags|=8192)):ql(t),null;case 24:case 25:return null}throw Error(o(156,t.tag))}function Yl(e,t){switch(to(t),t.tag){case 1:return Pa(t.type)&&ja(),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return Zo(),_a(Na),_a(Ta),ri(),65536&(e=t.flags)&&!(128&e)?(t.flags=-65537&e|128,t):null;case 5:return Jo(t),null;case 13:if(_a(ei),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(o(340));ho()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return _a(ei),null;case 4:return Zo(),null;case 10:return To(t.type._context),null;case 22:case 23:return du(),null;default:return null}}Ll=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Pl=function(){},jl=function(e,t,n,r){var a=e.memoizedProps;if(a!==r){e=t.stateNode,Ko(qo.current);var o,i=null;switch(n){case"input":a=K(e,a),r=K(e,r),i=[];break;case"select":a=F({},a,{value:void 0}),r=F({},r,{value:void 0}),i=[];break;case"textarea":a=re(e,a),r=re(e,r),i=[];break;default:"function"!=typeof a.onClick&&"function"==typeof r.onClick&&(e.onclick=Jr)}for(c in be(n,r),n=null,a)if(!r.hasOwnProperty(c)&&a.hasOwnProperty(c)&&null!=a[c])if("style"===c){var s=a[c];for(o in s)s.hasOwnProperty(o)&&(n||(n={}),n[o]="")}else"dangerouslySetInnerHTML"!==c&&"children"!==c&&"suppressContentEditableWarning"!==c&&"suppressHydrationWarning"!==c&&"autoFocus"!==c&&(l.hasOwnProperty(c)?i||(i=[]):(i=i||[]).push(c,null));for(c in r){var u=r[c];if(s=null!=a?a[c]:void 0,r.hasOwnProperty(c)&&u!==s&&(null!=u||null!=s))if("style"===c)if(s){for(o in s)!s.hasOwnProperty(o)||u&&u.hasOwnProperty(o)||(n||(n={}),n[o]="");for(o in u)u.hasOwnProperty(o)&&s[o]!==u[o]&&(n||(n={}),n[o]=u[o])}else n||(i||(i=[]),i.push(c,n)),n=u;else"dangerouslySetInnerHTML"===c?(u=u?u.__html:void 0,s=s?s.__html:void 0,null!=u&&s!==u&&(i=i||[]).push(c,u)):"children"===c?"string"!=typeof u&&"number"!=typeof u||(i=i||[]).push(c,""+u):"suppressContentEditableWarning"!==c&&"suppressHydrationWarning"!==c&&(l.hasOwnProperty(c)?(null!=u&&"onScroll"===c&&zr("scroll",e),i||s===u||(i=[])):(i=i||[]).push(c,u))}n&&(i=i||[]).push("style",n);var c=i;(t.updateQueue=c)&&(t.flags|=4)}},Rl=function(e,t,n,r){n!==r&&(t.flags|=4)};var Kl=!1,Ql=!1,Zl="function"==typeof WeakSet?WeakSet:Set,Xl=null;function Jl(e,t){var n=e.ref;if(null!==n)if("function"==typeof n)try{n(null)}catch(r){Eu(e,t,r)}else n.current=null}function es(e,t,n){try{n()}catch(r){Eu(e,t,r)}}var ts=!1;function ns(e,t,n){var r=t.updateQueue;if(null!==(r=null!==r?r.lastEffect:null)){var a=r=r.next;do{if((a.tag&e)===e){var o=a.destroy;a.destroy=void 0,void 0!==o&&es(t,n,o)}a=a.next}while(a!==r)}}function rs(e,t){if(null!==(t=null!==(t=t.updateQueue)?t.lastEffect:null)){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function as(e){var t=e.ref;if(null!==t){var n=e.stateNode;e.tag,e=n,"function"==typeof t?t(e):t.current=e}}function os(e){var t=e.alternate;null!==t&&(e.alternate=null,os(t)),e.child=null,e.deletions=null,e.sibling=null,5===e.tag&&(null!==(t=e.stateNode)&&(delete t[pa],delete t[fa],delete t[ma],delete t[ga],delete t[ya])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function is(e){return 5===e.tag||3===e.tag||4===e.tag}function ls(e){e:for(;;){for(;null===e.sibling;){if(null===e.return||is(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&&6!==e.tag&&18!==e.tag;){if(2&e.flags)continue e;if(null===e.child||4===e.tag)continue e;e.child.return=e,e=e.child}if(!(2&e.flags))return e.stateNode}}function ss(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=Jr));else if(4!==r&&null!==(e=e.child))for(ss(e,t,n),e=e.sibling;null!==e;)ss(e,t,n),e=e.sibling}function us(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(us(e,t,n),e=e.sibling;null!==e;)us(e,t,n),e=e.sibling}var cs=null,ds=!1;function ps(e,t,n){for(n=n.child;null!==n;)fs(e,t,n),n=n.sibling}function fs(e,t,n){if(ot&&"function"==typeof ot.onCommitFiberUnmount)try{ot.onCommitFiberUnmount(at,n)}catch(l){}switch(n.tag){case 5:Ql||Jl(n,t);case 6:var r=cs,a=ds;cs=null,ps(e,t,n),ds=a,null!==(cs=r)&&(ds?(e=cs,n=n.stateNode,8===e.nodeType?e.parentNode.removeChild(n):e.removeChild(n)):cs.removeChild(n.stateNode));break;case 18:null!==cs&&(ds?(e=cs,n=n.stateNode,8===e.nodeType?sa(e.parentNode,n):1===e.nodeType&&sa(e,n),Ut(e)):sa(cs,n.stateNode));break;case 4:r=cs,a=ds,cs=n.stateNode.containerInfo,ds=!0,ps(e,t,n),cs=r,ds=a;break;case 0:case 11:case 14:case 15:if(!Ql&&(null!==(r=n.updateQueue)&&null!==(r=r.lastEffect))){a=r=r.next;do{var o=a,i=o.destroy;o=o.tag,void 0!==i&&(2&o||4&o)&&es(n,t,i),a=a.next}while(a!==r)}ps(e,t,n);break;case 1:if(!Ql&&(Jl(n,t),"function"==typeof(r=n.stateNode).componentWillUnmount))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(l){Eu(n,t,l)}ps(e,t,n);break;case 21:ps(e,t,n);break;case 22:1&n.mode?(Ql=(r=Ql)||null!==n.memoizedState,ps(e,t,n),Ql=r):ps(e,t,n);break;default:ps(e,t,n)}}function hs(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new Zl),t.forEach((function(t){var r=Tu.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function ms(e,t){var n=t.deletions;if(null!==n)for(var r=0;r<n.length;r++){var a=n[r];try{var i=e,l=t,s=l;e:for(;null!==s;){switch(s.tag){case 5:cs=s.stateNode,ds=!1;break e;case 3:case 4:cs=s.stateNode.containerInfo,ds=!0;break e}s=s.return}if(null===cs)throw Error(o(160));fs(i,l,a),cs=null,ds=!1;var u=a.alternate;null!==u&&(u.return=null),a.return=null}catch(c){Eu(a,t,c)}}if(12854&t.subtreeFlags)for(t=t.child;null!==t;)gs(t,e),t=t.sibling}function gs(e,t){var n=e.alternate,r=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:if(ms(t,e),ys(e),4&r){try{ns(3,e,e.return),rs(3,e)}catch(g){Eu(e,e.return,g)}try{ns(5,e,e.return)}catch(g){Eu(e,e.return,g)}}break;case 1:ms(t,e),ys(e),512&r&&null!==n&&Jl(n,n.return);break;case 5:if(ms(t,e),ys(e),512&r&&null!==n&&Jl(n,n.return),32&e.flags){var a=e.stateNode;try{pe(a,"")}catch(g){Eu(e,e.return,g)}}if(4&r&&null!=(a=e.stateNode)){var i=e.memoizedProps,l=null!==n?n.memoizedProps:i,s=e.type,u=e.updateQueue;if(e.updateQueue=null,null!==u)try{"input"===s&&"radio"===i.type&&null!=i.name&&Z(a,i),ve(s,l);var c=ve(s,i);for(l=0;l<u.length;l+=2){var d=u[l],p=u[l+1];"style"===d?ge(a,p):"dangerouslySetInnerHTML"===d?de(a,p):"children"===d?pe(a,p):v(a,d,p,c)}switch(s){case"input":X(a,i);break;case"textarea":oe(a,i);break;case"select":var f=a._wrapperState.wasMultiple;a._wrapperState.wasMultiple=!!i.multiple;var h=i.value;null!=h?ne(a,!!i.multiple,h,!1):f!==!!i.multiple&&(null!=i.defaultValue?ne(a,!!i.multiple,i.defaultValue,!0):ne(a,!!i.multiple,i.multiple?[]:"",!1))}a[fa]=i}catch(g){Eu(e,e.return,g)}}break;case 6:if(ms(t,e),ys(e),4&r){if(null===e.stateNode)throw Error(o(162));a=e.stateNode,i=e.memoizedProps;try{a.nodeValue=i}catch(g){Eu(e,e.return,g)}}break;case 3:if(ms(t,e),ys(e),4&r&&null!==n&&n.memoizedState.isDehydrated)try{Ut(t.containerInfo)}catch(g){Eu(e,e.return,g)}break;case 4:default:ms(t,e),ys(e);break;case 13:ms(t,e),ys(e),8192&(a=e.child).flags&&(i=null!==a.memoizedState,a.stateNode.isHidden=i,!i||null!==a.alternate&&null!==a.alternate.memoizedState||($s=Ze())),4&r&&hs(e);break;case 22:if(d=null!==n&&null!==n.memoizedState,1&e.mode?(Ql=(c=Ql)||d,ms(t,e),Ql=c):ms(t,e),ys(e),8192&r){if(c=null!==e.memoizedState,(e.stateNode.isHidden=c)&&!d&&1&e.mode)for(Xl=e,d=e.child;null!==d;){for(p=Xl=d;null!==Xl;){switch(h=(f=Xl).child,f.tag){case 0:case 11:case 14:case 15:ns(4,f,f.return);break;case 1:Jl(f,f.return);var m=f.stateNode;if("function"==typeof m.componentWillUnmount){r=f,n=f.return;try{t=r,m.props=t.memoizedProps,m.state=t.memoizedState,m.componentWillUnmount()}catch(g){Eu(r,n,g)}}break;case 5:Jl(f,f.return);break;case 22:if(null!==f.memoizedState){ks(p);continue}}null!==h?(h.return=f,Xl=h):ks(p)}d=d.sibling}e:for(d=null,p=e;;){if(5===p.tag){if(null===d){d=p;try{a=p.stateNode,c?"function"==typeof(i=a.style).setProperty?i.setProperty("display","none","important"):i.display="none":(s=p.stateNode,l=null!=(u=p.memoizedProps.style)&&u.hasOwnProperty("display")?u.display:null,s.style.display=me("display",l))}catch(g){Eu(e,e.return,g)}}}else if(6===p.tag){if(null===d)try{p.stateNode.nodeValue=c?"":p.memoizedProps}catch(g){Eu(e,e.return,g)}}else if((22!==p.tag&&23!==p.tag||null===p.memoizedState||p===e)&&null!==p.child){p.child.return=p,p=p.child;continue}if(p===e)break e;for(;null===p.sibling;){if(null===p.return||p.return===e)break e;d===p&&(d=null),p=p.return}d===p&&(d=null),p.sibling.return=p.return,p=p.sibling}}break;case 19:ms(t,e),ys(e),4&r&&hs(e);case 21:}}function ys(e){var t=e.flags;if(2&t){try{e:{for(var n=e.return;null!==n;){if(is(n)){var r=n;break e}n=n.return}throw Error(o(160))}switch(r.tag){case 5:var a=r.stateNode;32&r.flags&&(pe(a,""),r.flags&=-33),us(e,ls(e),a);break;case 3:case 4:var i=r.stateNode.containerInfo;ss(e,ls(e),i);break;default:throw Error(o(161))}}catch(l){Eu(e,e.return,l)}e.flags&=-3}4096&t&&(e.flags&=-4097)}function bs(e,t,n){Xl=e,vs(e,t,n)}function vs(e,t,n){for(var r=!!(1&e.mode);null!==Xl;){var a=Xl,o=a.child;if(22===a.tag&&r){var i=null!==a.memoizedState||Kl;if(!i){var l=a.alternate,s=null!==l&&null!==l.memoizedState||Ql;l=Kl;var u=Ql;if(Kl=i,(Ql=s)&&!u)for(Xl=a;null!==Xl;)s=(i=Xl).child,22===i.tag&&null!==i.memoizedState?xs(a):null!==s?(s.return=i,Xl=s):xs(a);for(;null!==o;)Xl=o,vs(o,t,n),o=o.sibling;Xl=a,Kl=l,Ql=u}ws(e)}else 8772&a.subtreeFlags&&null!==o?(o.return=a,Xl=o):ws(e)}}function ws(e){for(;null!==Xl;){var t=Xl;if(8772&t.flags){var n=t.alternate;try{if(8772&t.flags)switch(t.tag){case 0:case 11:case 15:Ql||rs(5,t);break;case 1:var r=t.stateNode;if(4&t.flags&&!Ql)if(null===n)r.componentDidMount();else{var a=t.elementType===t.type?n.memoizedProps:nl(t.type,n.memoizedProps);r.componentDidUpdate(a,n.memoizedState,r.__reactInternalSnapshotBeforeUpdate)}var i=t.updateQueue;null!==i&&Vo(t,i,r);break;case 3:var l=t.updateQueue;if(null!==l){if(n=null,null!==t.child)switch(t.child.tag){case 5:case 1:n=t.child.stateNode}Vo(t,l,n)}break;case 5:var s=t.stateNode;if(null===n&&4&t.flags){n=s;var u=t.memoizedProps;switch(t.type){case"button":case"input":case"select":case"textarea":u.autoFocus&&n.focus();break;case"img":u.src&&(n.src=u.src)}}break;case 6:case 4:case 12:case 19:case 17:case 21:case 22:case 23:case 25:break;case 13:if(null===t.memoizedState){var c=t.alternate;if(null!==c){var d=c.memoizedState;if(null!==d){var p=d.dehydrated;null!==p&&Ut(p)}}}break;default:throw Error(o(163))}Ql||512&t.flags&&as(t)}catch(f){Eu(t,t.return,f)}}if(t===e){Xl=null;break}if(null!==(n=t.sibling)){n.return=t.return,Xl=n;break}Xl=t.return}}function ks(e){for(;null!==Xl;){var t=Xl;if(t===e){Xl=null;break}var n=t.sibling;if(null!==n){n.return=t.return,Xl=n;break}Xl=t.return}}function xs(e){for(;null!==Xl;){var t=Xl;try{switch(t.tag){case 0:case 11:case 15:var n=t.return;try{rs(4,t)}catch(s){Eu(t,n,s)}break;case 1:var r=t.stateNode;if("function"==typeof r.componentDidMount){var a=t.return;try{r.componentDidMount()}catch(s){Eu(t,a,s)}}var o=t.return;try{as(t)}catch(s){Eu(t,o,s)}break;case 5:var i=t.return;try{as(t)}catch(s){Eu(t,i,s)}}}catch(s){Eu(t,t.return,s)}if(t===e){Xl=null;break}var l=t.sibling;if(null!==l){l.return=t.return,Xl=l;break}Xl=t.return}}var Ss,Es=Math.ceil,_s=w.ReactCurrentDispatcher,Cs=w.ReactCurrentOwner,As=w.ReactCurrentBatchConfig,Ts=0,Ns=null,Os=null,Ls=0,Ps=0,js=Ea(0),Rs=0,Is=null,Ds=0,Fs=0,Ms=0,zs=null,Bs=null,$s=0,Us=1/0,Hs=null,Vs=!1,Ws=null,qs=null,Gs=!1,Ys=null,Ks=0,Qs=0,Zs=null,Xs=-1,Js=0;function eu(){return 6&Ts?Ze():-1!==Xs?Xs:Xs=Ze()}function tu(e){return 1&e.mode?2&Ts&&0!==Ls?Ls&-Ls:null!==go.transition?(0===Js&&(Js=mt()),Js):0!==(e=vt)?e:e=void 0===(e=window.event)?16:Qt(e.type):1}function nu(e,t,n,r){if(50<Qs)throw Qs=0,Zs=null,Error(o(185));yt(e,n,r),2&Ts&&e===Ns||(e===Ns&&(!(2&Ts)&&(Fs|=n),4===Rs&&lu(e,Ls)),ru(e,r),1===n&&0===Ts&&!(1&t.mode)&&(Us=Ze()+500,za&&Ua()))}function ru(e,t){var n=e.callbackNode;!function(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,a=e.expirationTimes,o=e.pendingLanes;0<o;){var i=31-it(o),l=1<<i,s=a[i];-1===s?l&n&&!(l&r)||(a[i]=ft(l,t)):s<=t&&(e.expiredLanes|=l),o&=~l}}(e,t);var r=pt(e,e===Ns?Ls:0);if(0===r)null!==n&&Ye(n),e.callbackNode=null,e.callbackPriority=0;else if(t=r&-r,e.callbackPriority!==t){if(null!=n&&Ye(n),1===t)0===e.tag?function(e){za=!0,$a(e)}(su.bind(null,e)):$a(su.bind(null,e)),ia((function(){!(6&Ts)&&Ua()})),n=null;else{switch(wt(r)){case 1:n=Je;break;case 4:n=et;break;case 16:default:n=tt;break;case 536870912:n=rt}n=Nu(n,au.bind(null,e))}e.callbackPriority=t,e.callbackNode=n}}function au(e,t){if(Xs=-1,Js=0,6&Ts)throw Error(o(327));var n=e.callbackNode;if(xu()&&e.callbackNode!==n)return null;var r=pt(e,e===Ns?Ls:0);if(0===r)return null;if(30&r||r&e.expiredLanes||t)t=gu(e,r);else{t=r;var a=Ts;Ts|=2;var i=hu();for(Ns===e&&Ls===t||(Hs=null,Us=Ze()+500,pu(e,t));;)try{bu();break}catch(s){fu(e,s)}Ao(),_s.current=i,Ts=a,null!==Os?t=0:(Ns=null,Ls=0,t=Rs)}if(0!==t){if(2===t&&(0!==(a=ht(e))&&(r=a,t=ou(e,a))),1===t)throw n=Is,pu(e,0),lu(e,r),ru(e,Ze()),n;if(6===t)lu(e,r);else{if(a=e.current.alternate,!(30&r||function(e){for(var t=e;;){if(16384&t.flags){var n=t.updateQueue;if(null!==n&&null!==(n=n.stores))for(var r=0;r<n.length;r++){var a=n[r],o=a.getSnapshot;a=a.value;try{if(!lr(o(),a))return!1}catch(l){return!1}}}if(n=t.child,16384&t.subtreeFlags&&null!==n)n.return=t,t=n;else{if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}(a)||(t=gu(e,r),2===t&&(i=ht(e),0!==i&&(r=i,t=ou(e,i))),1!==t)))throw n=Is,pu(e,0),lu(e,r),ru(e,Ze()),n;switch(e.finishedWork=a,e.finishedLanes=r,t){case 0:case 1:throw Error(o(345));case 2:case 5:ku(e,Bs,Hs);break;case 3:if(lu(e,r),(130023424&r)===r&&10<(t=$s+500-Ze())){if(0!==pt(e,0))break;if(((a=e.suspendedLanes)&r)!==r){eu(),e.pingedLanes|=e.suspendedLanes&a;break}e.timeoutHandle=ra(ku.bind(null,e,Bs,Hs),t);break}ku(e,Bs,Hs);break;case 4:if(lu(e,r),(4194240&r)===r)break;for(t=e.eventTimes,a=-1;0<r;){var l=31-it(r);i=1<<l,(l=t[l])>a&&(a=l),r&=~i}if(r=a,10<(r=(120>(r=Ze()-r)?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*Es(r/1960))-r)){e.timeoutHandle=ra(ku.bind(null,e,Bs,Hs),r);break}ku(e,Bs,Hs);break;default:throw Error(o(329))}}}return ru(e,Ze()),e.callbackNode===n?au.bind(null,e):null}function ou(e,t){var n=zs;return e.current.memoizedState.isDehydrated&&(pu(e,t).flags|=256),2!==(e=gu(e,t))&&(t=Bs,Bs=n,null!==t&&iu(t)),e}function iu(e){null===Bs?Bs=e:Bs.push.apply(Bs,e)}function lu(e,t){for(t&=~Ms,t&=~Fs,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-it(t),r=1<<n;e[n]=-1,t&=~r}}function su(e){if(6&Ts)throw Error(o(327));xu();var t=pt(e,0);if(!(1&t))return ru(e,Ze()),null;var n=gu(e,t);if(0!==e.tag&&2===n){var r=ht(e);0!==r&&(t=r,n=ou(e,r))}if(1===n)throw n=Is,pu(e,0),lu(e,t),ru(e,Ze()),n;if(6===n)throw Error(o(345));return e.finishedWork=e.current.alternate,e.finishedLanes=t,ku(e,Bs,Hs),ru(e,Ze()),null}function uu(e,t){var n=Ts;Ts|=1;try{return e(t)}finally{0===(Ts=n)&&(Us=Ze()+500,za&&Ua())}}function cu(e){null!==Ys&&0===Ys.tag&&!(6&Ts)&&xu();var t=Ts;Ts|=1;var n=As.transition,r=vt;try{if(As.transition=null,vt=1,e)return e()}finally{vt=r,As.transition=n,!(6&(Ts=t))&&Ua()}}function du(){Ps=js.current,_a(js)}function pu(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,aa(n)),null!==Os)for(n=Os.return;null!==n;){var r=n;switch(to(r),r.tag){case 1:null!=(r=r.type.childContextTypes)&&ja();break;case 3:Zo(),_a(Na),_a(Ta),ri();break;case 5:Jo(r);break;case 4:Zo();break;case 13:case 19:_a(ei);break;case 10:To(r.type._context);break;case 22:case 23:du()}n=n.return}if(Ns=e,Os=e=ju(e.current,null),Ls=Ps=t,Rs=0,Is=null,Ms=Fs=Ds=0,Bs=zs=null,null!==Po){for(t=0;t<Po.length;t++)if(null!==(r=(n=Po[t]).interleaved)){n.interleaved=null;var a=r.next,o=n.pending;if(null!==o){var i=o.next;o.next=a,r.next=i}n.pending=r}Po=null}return e}function fu(e,t){for(;;){var n=Os;try{if(Ao(),ai.current=Xi,ci){for(var r=li.memoizedState;null!==r;){var a=r.queue;null!==a&&(a.pending=null),r=r.next}ci=!1}if(ii=0,ui=si=li=null,di=!1,pi=0,Cs.current=null,null===n||null===n.return){Rs=1,Is=t,Os=null;break}e:{var i=e,l=n.return,s=n,u=t;if(t=Ls,s.flags|=32768,null!==u&&"object"==typeof u&&"function"==typeof u.then){var c=u,d=s,p=d.tag;if(!(1&d.mode||0!==p&&11!==p&&15!==p)){var f=d.alternate;f?(d.updateQueue=f.updateQueue,d.memoizedState=f.memoizedState,d.lanes=f.lanes):(d.updateQueue=null,d.memoizedState=null)}var h=gl(l);if(null!==h){h.flags&=-257,yl(h,l,s,0,t),1&h.mode&&ml(i,c,t),u=c;var m=(t=h).updateQueue;if(null===m){var g=new Set;g.add(u),t.updateQueue=g}else m.add(u);break e}if(!(1&t)){ml(i,c,t),mu();break e}u=Error(o(426))}else if(ao&&1&s.mode){var y=gl(l);if(null!==y){!(65536&y.flags)&&(y.flags|=256),yl(y,l,s,0,t),mo(ul(u,s));break e}}i=u=ul(u,s),4!==Rs&&(Rs=2),null===zs?zs=[i]:zs.push(i),i=l;do{switch(i.tag){case 3:i.flags|=65536,t&=-t,i.lanes|=t,Uo(i,fl(0,u,t));break e;case 1:s=u;var b=i.type,v=i.stateNode;if(!(128&i.flags||"function"!=typeof b.getDerivedStateFromError&&(null===v||"function"!=typeof v.componentDidCatch||null!==qs&&qs.has(v)))){i.flags|=65536,t&=-t,i.lanes|=t,Uo(i,hl(i,s,t));break e}}i=i.return}while(null!==i)}wu(n)}catch(w){t=w,Os===n&&null!==n&&(Os=n=n.return);continue}break}}function hu(){var e=_s.current;return _s.current=Xi,null===e?Xi:e}function mu(){0!==Rs&&3!==Rs&&2!==Rs||(Rs=4),null===Ns||!(268435455&Ds)&&!(268435455&Fs)||lu(Ns,Ls)}function gu(e,t){var n=Ts;Ts|=2;var r=hu();for(Ns===e&&Ls===t||(Hs=null,pu(e,t));;)try{yu();break}catch(a){fu(e,a)}if(Ao(),Ts=n,_s.current=r,null!==Os)throw Error(o(261));return Ns=null,Ls=0,Rs}function yu(){for(;null!==Os;)vu(Os)}function bu(){for(;null!==Os&&!Ke();)vu(Os)}function vu(e){var t=Ss(e.alternate,e,Ps);e.memoizedProps=e.pendingProps,null===t?wu(e):Os=t,Cs.current=null}function wu(e){var t=e;do{var n=t.alternate;if(e=t.return,32768&t.flags){if(null!==(n=Yl(n,t)))return n.flags&=32767,void(Os=n);if(null===e)return Rs=6,void(Os=null);e.flags|=32768,e.subtreeFlags=0,e.deletions=null}else if(null!==(n=Gl(n,t,Ps)))return void(Os=n);if(null!==(t=t.sibling))return void(Os=t);Os=t=e}while(null!==t);0===Rs&&(Rs=5)}function ku(e,t,n){var r=vt,a=As.transition;try{As.transition=null,vt=1,function(e,t,n,r){do{xu()}while(null!==Ys);if(6&Ts)throw Error(o(327));n=e.finishedWork;var a=e.finishedLanes;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(o(177));e.callbackNode=null,e.callbackPriority=0;var i=n.lanes|n.childLanes;if(function(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0<n;){var a=31-it(n),o=1<<a;t[a]=0,r[a]=-1,e[a]=-1,n&=~o}}(e,i),e===Ns&&(Os=Ns=null,Ls=0),!(2064&n.subtreeFlags)&&!(2064&n.flags)||Gs||(Gs=!0,Nu(tt,(function(){return xu(),null}))),i=!!(15990&n.flags),!!(15990&n.subtreeFlags)||i){i=As.transition,As.transition=null;var l=vt;vt=1;var s=Ts;Ts|=4,Cs.current=null,function(e,t){if(ea=Vt,fr(e=pr())){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{var r=(n=(n=e.ownerDocument)&&n.defaultView||window).getSelection&&n.getSelection();if(r&&0!==r.rangeCount){n=r.anchorNode;var a=r.anchorOffset,i=r.focusNode;r=r.focusOffset;try{n.nodeType,i.nodeType}catch(k){n=null;break e}var l=0,s=-1,u=-1,c=0,d=0,p=e,f=null;t:for(;;){for(var h;p!==n||0!==a&&3!==p.nodeType||(s=l+a),p!==i||0!==r&&3!==p.nodeType||(u=l+r),3===p.nodeType&&(l+=p.nodeValue.length),null!==(h=p.firstChild);)f=p,p=h;for(;;){if(p===e)break t;if(f===n&&++c===a&&(s=l),f===i&&++d===r&&(u=l),null!==(h=p.nextSibling))break;f=(p=f).parentNode}p=h}n=-1===s||-1===u?null:{start:s,end:u}}else n=null}n=n||{start:0,end:0}}else n=null;for(ta={focusedElem:e,selectionRange:n},Vt=!1,Xl=t;null!==Xl;)if(e=(t=Xl).child,1028&t.subtreeFlags&&null!==e)e.return=t,Xl=e;else for(;null!==Xl;){t=Xl;try{var m=t.alternate;if(1024&t.flags)switch(t.tag){case 0:case 11:case 15:case 5:case 6:case 4:case 17:break;case 1:if(null!==m){var g=m.memoizedProps,y=m.memoizedState,b=t.stateNode,v=b.getSnapshotBeforeUpdate(t.elementType===t.type?g:nl(t.type,g),y);b.__reactInternalSnapshotBeforeUpdate=v}break;case 3:var w=t.stateNode.containerInfo;1===w.nodeType?w.textContent="":9===w.nodeType&&w.documentElement&&w.removeChild(w.documentElement);break;default:throw Error(o(163))}}catch(k){Eu(t,t.return,k)}if(null!==(e=t.sibling)){e.return=t.return,Xl=e;break}Xl=t.return}m=ts,ts=!1}(e,n),gs(n,e),hr(ta),Vt=!!ea,ta=ea=null,e.current=n,bs(n,e,a),Qe(),Ts=s,vt=l,As.transition=i}else e.current=n;if(Gs&&(Gs=!1,Ys=e,Ks=a),i=e.pendingLanes,0===i&&(qs=null),function(e){if(ot&&"function"==typeof ot.onCommitFiberRoot)try{ot.onCommitFiberRoot(at,e,void 0,!(128&~e.current.flags))}catch(t){}}(n.stateNode),ru(e,Ze()),null!==t)for(r=e.onRecoverableError,n=0;n<t.length;n++)a=t[n],r(a.value,{componentStack:a.stack,digest:a.digest});if(Vs)throw Vs=!1,e=Ws,Ws=null,e;!!(1&Ks)&&0!==e.tag&&xu(),i=e.pendingLanes,1&i?e===Zs?Qs++:(Qs=0,Zs=e):Qs=0,Ua()}(e,t,n,r)}finally{As.transition=a,vt=r}return null}function xu(){if(null!==Ys){var e=wt(Ks),t=As.transition,n=vt;try{if(As.transition=null,vt=16>e?16:e,null===Ys)var r=!1;else{if(e=Ys,Ys=null,Ks=0,6&Ts)throw Error(o(331));var a=Ts;for(Ts|=4,Xl=e.current;null!==Xl;){var i=Xl,l=i.child;if(16&Xl.flags){var s=i.deletions;if(null!==s){for(var u=0;u<s.length;u++){var c=s[u];for(Xl=c;null!==Xl;){var d=Xl;switch(d.tag){case 0:case 11:case 15:ns(8,d,i)}var p=d.child;if(null!==p)p.return=d,Xl=p;else for(;null!==Xl;){var f=(d=Xl).sibling,h=d.return;if(os(d),d===c){Xl=null;break}if(null!==f){f.return=h,Xl=f;break}Xl=h}}}var m=i.alternate;if(null!==m){var g=m.child;if(null!==g){m.child=null;do{var y=g.sibling;g.sibling=null,g=y}while(null!==g)}}Xl=i}}if(2064&i.subtreeFlags&&null!==l)l.return=i,Xl=l;else e:for(;null!==Xl;){if(2048&(i=Xl).flags)switch(i.tag){case 0:case 11:case 15:ns(9,i,i.return)}var b=i.sibling;if(null!==b){b.return=i.return,Xl=b;break e}Xl=i.return}}var v=e.current;for(Xl=v;null!==Xl;){var w=(l=Xl).child;if(2064&l.subtreeFlags&&null!==w)w.return=l,Xl=w;else e:for(l=v;null!==Xl;){if(2048&(s=Xl).flags)try{switch(s.tag){case 0:case 11:case 15:rs(9,s)}}catch(x){Eu(s,s.return,x)}if(s===l){Xl=null;break e}var k=s.sibling;if(null!==k){k.return=s.return,Xl=k;break e}Xl=s.return}}if(Ts=a,Ua(),ot&&"function"==typeof ot.onPostCommitFiberRoot)try{ot.onPostCommitFiberRoot(at,e)}catch(x){}r=!0}return r}finally{vt=n,As.transition=t}}return!1}function Su(e,t,n){e=Bo(e,t=fl(0,t=ul(n,t),1),1),t=eu(),null!==e&&(yt(e,1,t),ru(e,t))}function Eu(e,t,n){if(3===e.tag)Su(e,e,n);else for(;null!==t;){if(3===t.tag){Su(t,e,n);break}if(1===t.tag){var r=t.stateNode;if("function"==typeof t.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===qs||!qs.has(r))){t=Bo(t,e=hl(t,e=ul(n,e),1),1),e=eu(),null!==t&&(yt(t,1,e),ru(t,e));break}}t=t.return}}function _u(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),t=eu(),e.pingedLanes|=e.suspendedLanes&n,Ns===e&&(Ls&n)===n&&(4===Rs||3===Rs&&(130023424&Ls)===Ls&&500>Ze()-$s?pu(e,0):Ms|=n),ru(e,t)}function Cu(e,t){0===t&&(1&e.mode?(t=ct,!(130023424&(ct<<=1))&&(ct=4194304)):t=1);var n=eu();null!==(e=Io(e,t))&&(yt(e,t,n),ru(e,n))}function Au(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),Cu(e,n)}function Tu(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,a=e.memoizedState;null!==a&&(n=a.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(o(314))}null!==r&&r.delete(t),Cu(e,n)}function Nu(e,t){return Ge(e,t)}function Ou(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Lu(e,t,n,r){return new Ou(e,t,n,r)}function Pu(e){return!(!(e=e.prototype)||!e.isReactComponent)}function ju(e,t){var n=e.alternate;return null===n?((n=Lu(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=14680064&e.flags,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Ru(e,t,n,r,a,i){var l=2;if(r=e,"function"==typeof e)Pu(e)&&(l=1);else if("string"==typeof e)l=5;else e:switch(e){case S:return Iu(n.children,a,i,t);case E:l=8,a|=8;break;case _:return(e=Lu(12,n,t,2|a)).elementType=_,e.lanes=i,e;case N:return(e=Lu(13,n,t,a)).elementType=N,e.lanes=i,e;case O:return(e=Lu(19,n,t,a)).elementType=O,e.lanes=i,e;case j:return Du(n,a,i,t);default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case C:l=10;break e;case A:l=9;break e;case T:l=11;break e;case L:l=14;break e;case P:l=16,r=null;break e}throw Error(o(130,null==e?e:typeof e,""))}return(t=Lu(l,n,t,a)).elementType=e,t.type=r,t.lanes=i,t}function Iu(e,t,n,r){return(e=Lu(7,e,r,t)).lanes=n,e}function Du(e,t,n,r){return(e=Lu(22,e,r,t)).elementType=j,e.lanes=n,e.stateNode={isHidden:!1},e}function Fu(e,t,n){return(e=Lu(6,e,null,t)).lanes=n,e}function Mu(e,t,n){return(t=Lu(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function zu(e,t,n,r,a){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=gt(0),this.expirationTimes=gt(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=gt(0),this.identifierPrefix=r,this.onRecoverableError=a,this.mutableSourceEagerHydrationData=null}function Bu(e,t,n,r,a,o,i,l,s){return e=new zu(e,t,n,l,s),1===t?(t=1,!0===o&&(t|=8)):t=0,o=Lu(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Fo(o),e}function $u(e){if(!e)return Aa;e:{if(Ue(e=e._reactInternals)!==e||1!==e.tag)throw Error(o(170));var t=e;do{switch(t.tag){case 3:t=t.stateNode.context;break e;case 1:if(Pa(t.type)){t=t.stateNode.__reactInternalMemoizedMergedChildContext;break e}}t=t.return}while(null!==t);throw Error(o(171))}if(1===e.tag){var n=e.type;if(Pa(n))return Ia(e,n,t)}return t}function Uu(e,t,n,r,a,o,i,l,s){return(e=Bu(n,r,!0,e,0,o,0,l,s)).context=$u(null),n=e.current,(o=zo(r=eu(),a=tu(n))).callback=null!=t?t:null,Bo(n,o,a),e.current.lanes=a,yt(e,a,r),ru(e,r),e}function Hu(e,t,n,r){var a=t.current,o=eu(),i=tu(a);return n=$u(n),null===t.context?t.context=n:t.pendingContext=n,(t=zo(o,i)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),null!==(e=Bo(a,t,i))&&(nu(e,a,i,o),$o(e,a,i)),i}function Vu(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function Wu(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function qu(e,t){Wu(e,t),(e=e.alternate)&&Wu(e,t)}Ss=function(e,t,n){if(null!==e)if(e.memoizedProps!==t.pendingProps||Na.current)vl=!0;else{if(!(e.lanes&n||128&t.flags))return vl=!1,function(e,t,n){switch(t.tag){case 3:Nl(t),ho();break;case 5:Xo(t);break;case 1:Pa(t.type)&&Da(t);break;case 4:Qo(t,t.stateNode.containerInfo);break;case 10:var r=t.type._context,a=t.memoizedProps.value;Ca(So,r._currentValue),r._currentValue=a;break;case 13:if(null!==(r=t.memoizedState))return null!==r.dehydrated?(Ca(ei,1&ei.current),t.flags|=128,null):n&t.child.childLanes?Fl(e,t,n):(Ca(ei,1&ei.current),null!==(e=Vl(e,t,n))?e.sibling:null);Ca(ei,1&ei.current);break;case 19:if(r=!!(n&t.childLanes),128&e.flags){if(r)return Ul(e,t,n);t.flags|=128}if(null!==(a=t.memoizedState)&&(a.rendering=null,a.tail=null,a.lastEffect=null),Ca(ei,ei.current),r)break;return null;case 22:case 23:return t.lanes=0,El(e,t,n)}return Vl(e,t,n)}(e,t,n);vl=!!(131072&e.flags)}else vl=!1,ao&&1048576&t.flags&&Ja(t,qa,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Hl(e,t),e=t.pendingProps;var a=La(t,Ta.current);Oo(t,n),a=gi(null,t,r,e,a,n);var i=yi();return t.flags|=1,"object"==typeof a&&null!==a&&"function"==typeof a.render&&void 0===a.$$typeof?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Pa(r)?(i=!0,Da(t)):i=!1,t.memoizedState=null!==a.state&&void 0!==a.state?a.state:null,Fo(t),a.updater=al,t.stateNode=a,a._reactInternals=t,sl(t,r,e,n),t=Tl(null,t,r,!0,i,n)):(t.tag=0,ao&&i&&eo(t),wl(null,t,a,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Hl(e,t),e=t.pendingProps,r=(a=r._init)(r._payload),t.type=r,a=t.tag=function(e){if("function"==typeof e)return Pu(e)?1:0;if(null!=e){if((e=e.$$typeof)===T)return 11;if(e===L)return 14}return 2}(r),e=nl(r,e),a){case 0:t=Cl(null,t,r,e,n);break e;case 1:t=Al(null,t,r,e,n);break e;case 11:t=kl(null,t,r,e,n);break e;case 14:t=xl(null,t,r,nl(r.type,e),n);break e}throw Error(o(306,r,""))}return t;case 0:return r=t.type,a=t.pendingProps,Cl(e,t,r,a=t.elementType===r?a:nl(r,a),n);case 1:return r=t.type,a=t.pendingProps,Al(e,t,r,a=t.elementType===r?a:nl(r,a),n);case 3:e:{if(Nl(t),null===e)throw Error(o(387));r=t.pendingProps,a=(i=t.memoizedState).element,Mo(e,t),Ho(t,r,null,n);var l=t.memoizedState;if(r=l.element,i.isDehydrated){if(i={element:r,isDehydrated:!1,cache:l.cache,pendingSuspenseBoundaries:l.pendingSuspenseBoundaries,transitions:l.transitions},t.updateQueue.baseState=i,t.memoizedState=i,256&t.flags){t=Ol(e,t,r,n,a=ul(Error(o(423)),t));break e}if(r!==a){t=Ol(e,t,r,n,a=ul(Error(o(424)),t));break e}for(ro=ua(t.stateNode.containerInfo.firstChild),no=t,ao=!0,oo=null,n=xo(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|4096,n=n.sibling}else{if(ho(),r===a){t=Vl(e,t,n);break e}wl(e,t,r,n)}t=t.child}return t;case 5:return Xo(t),null===e&&uo(t),r=t.type,a=t.pendingProps,i=null!==e?e.memoizedProps:null,l=a.children,na(r,a)?l=null:null!==i&&na(r,i)&&(t.flags|=32),_l(e,t),wl(e,t,l,n),t.child;case 6:return null===e&&uo(t),null;case 13:return Fl(e,t,n);case 4:return Qo(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=ko(t,null,r,n):wl(e,t,r,n),t.child;case 11:return r=t.type,a=t.pendingProps,kl(e,t,r,a=t.elementType===r?a:nl(r,a),n);case 7:return wl(e,t,t.pendingProps,n),t.child;case 8:case 12:return wl(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,a=t.pendingProps,i=t.memoizedProps,l=a.value,Ca(So,r._currentValue),r._currentValue=l,null!==i)if(lr(i.value,l)){if(i.children===a.children&&!Na.current){t=Vl(e,t,n);break e}}else for(null!==(i=t.child)&&(i.return=t);null!==i;){var s=i.dependencies;if(null!==s){l=i.child;for(var u=s.firstContext;null!==u;){if(u.context===r){if(1===i.tag){(u=zo(-1,n&-n)).tag=2;var c=i.updateQueue;if(null!==c){var d=(c=c.shared).pending;null===d?u.next=u:(u.next=d.next,d.next=u),c.pending=u}}i.lanes|=n,null!==(u=i.alternate)&&(u.lanes|=n),No(i.return,n,t),s.lanes|=n;break}u=u.next}}else if(10===i.tag)l=i.type===t.type?null:i.child;else if(18===i.tag){if(null===(l=i.return))throw Error(o(341));l.lanes|=n,null!==(s=l.alternate)&&(s.lanes|=n),No(l,n,t),l=i.sibling}else l=i.child;if(null!==l)l.return=i;else for(l=i;null!==l;){if(l===t){l=null;break}if(null!==(i=l.sibling)){i.return=l.return,l=i;break}l=l.return}i=l}wl(e,t,a.children,n),t=t.child}return t;case 9:return a=t.type,r=t.pendingProps.children,Oo(t,n),r=r(a=Lo(a)),t.flags|=1,wl(e,t,r,n),t.child;case 14:return a=nl(r=t.type,t.pendingProps),xl(e,t,r,a=nl(r.type,a),n);case 15:return Sl(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,a=t.pendingProps,a=t.elementType===r?a:nl(r,a),Hl(e,t),t.tag=1,Pa(r)?(e=!0,Da(t)):e=!1,Oo(t,n),il(t,r,a),sl(t,r,a,n),Tl(null,t,r,!0,e,n);case 19:return Ul(e,t,n);case 22:return El(e,t,n)}throw Error(o(156,t.tag))};var Gu="function"==typeof reportError?reportError:function(e){console.error(e)};function Yu(e){this._internalRoot=e}function Ku(e){this._internalRoot=e}function Qu(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType)}function Zu(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function Xu(){}function Ju(e,t,n,r,a){var o=n._reactRootContainer;if(o){var i=o;if("function"==typeof a){var l=a;a=function(){var e=Vu(i);l.call(e)}}Hu(t,i,e,a)}else i=function(e,t,n,r,a){if(a){if("function"==typeof r){var o=r;r=function(){var e=Vu(i);o.call(e)}}var i=Uu(t,r,e,0,null,!1,0,"",Xu);return e._reactRootContainer=i,e[ha]=i.current,Ur(8===e.nodeType?e.parentNode:e),cu(),i}for(;a=e.lastChild;)e.removeChild(a);if("function"==typeof r){var l=r;r=function(){var e=Vu(s);l.call(e)}}var s=Bu(e,0,!1,null,0,!1,0,"",Xu);return e._reactRootContainer=s,e[ha]=s.current,Ur(8===e.nodeType?e.parentNode:e),cu((function(){Hu(t,s,n,r)})),s}(n,t,e,a,r);return Vu(i)}Ku.prototype.render=Yu.prototype.render=function(e){var t=this._internalRoot;if(null===t)throw Error(o(409));Hu(e,t,null,null)},Ku.prototype.unmount=Yu.prototype.unmount=function(){var e=this._internalRoot;if(null!==e){this._internalRoot=null;var t=e.containerInfo;cu((function(){Hu(null,e,null,null)})),t[ha]=null}},Ku.prototype.unstable_scheduleHydration=function(e){if(e){var t=Et();e={blockedOn:null,target:e,priority:t};for(var n=0;n<jt.length&&0!==t&&t<jt[n].priority;n++);jt.splice(n,0,e),0===n&&Ft(e)}},kt=function(e){switch(e.tag){case 3:var t=e.stateNode;if(t.current.memoizedState.isDehydrated){var n=dt(t.pendingLanes);0!==n&&(bt(t,1|n),ru(t,Ze()),!(6&Ts)&&(Us=Ze()+500,Ua()))}break;case 13:cu((function(){var t=Io(e,1);if(null!==t){var n=eu();nu(t,e,1,n)}})),qu(e,1)}},xt=function(e){if(13===e.tag){var t=Io(e,134217728);if(null!==t)nu(t,e,134217728,eu());qu(e,134217728)}},St=function(e){if(13===e.tag){var t=tu(e),n=Io(e,t);if(null!==n)nu(n,e,t,eu());qu(e,t)}},Et=function(){return vt},_t=function(e,t){var n=vt;try{return vt=e,t()}finally{vt=n}},xe=function(e,t,n){switch(t){case"input":if(X(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var a=ka(r);if(!a)throw Error(o(90));G(r),X(r,a)}}}break;case"textarea":oe(e,n);break;case"select":null!=(t=n.value)&&ne(e,!!n.multiple,t,!1)}},Te=uu,Ne=cu;var ec={usingClientEntryPoint:!1,Events:[va,wa,ka,Ce,Ae,uu]},tc={findFiberByHostInstance:ba,bundleType:0,version:"18.3.1",rendererPackageName:"react-dom"},nc={bundleType:tc.bundleType,version:tc.version,rendererPackageName:tc.rendererPackageName,rendererConfig:tc.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:w.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=We(e))?null:e.stateNode},findFiberByHostInstance:tc.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.3.1-next-f1338f8080-20240426"};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var rc=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!rc.isDisabled&&rc.supportsFiber)try{at=rc.inject(nc),ot=rc}catch(ce){}}t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=ec,t.createPortal=function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!Qu(t))throw Error(o(200));return function(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:x,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}(e,t,null,n)},t.createRoot=function(e,t){if(!Qu(e))throw Error(o(299));var n=!1,r="",a=Gu;return null!=t&&(!0===t.unstable_strictMode&&(n=!0),void 0!==t.identifierPrefix&&(r=t.identifierPrefix),void 0!==t.onRecoverableError&&(a=t.onRecoverableError)),t=Bu(e,1,!1,null,0,n,0,r,a),e[ha]=t.current,Ur(8===e.nodeType?e.parentNode:e),new Yu(t)},t.findDOMNode=function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=e._reactInternals;if(void 0===t){if("function"==typeof e.render)throw Error(o(188));throw e=Object.keys(e).join(","),Error(o(268,e))}return e=null===(e=We(t))?null:e.stateNode},t.flushSync=function(e){return cu(e)},t.hydrate=function(e,t,n){if(!Zu(t))throw Error(o(200));return Ju(null,e,t,!0,n)},t.hydrateRoot=function(e,t,n){if(!Qu(e))throw Error(o(405));var r=null!=n&&n.hydratedSources||null,a=!1,i="",l=Gu;if(null!=n&&(!0===n.unstable_strictMode&&(a=!0),void 0!==n.identifierPrefix&&(i=n.identifierPrefix),void 0!==n.onRecoverableError&&(l=n.onRecoverableError)),t=Uu(t,null,e,1,null!=n?n:null,a,0,i,l),e[ha]=t.current,Ur(e),r)for(e=0;e<r.length;e++)a=(a=(n=r[e])._getVersion)(n._source),null==t.mutableSourceEagerHydrationData?t.mutableSourceEagerHydrationData=[n,a]:t.mutableSourceEagerHydrationData.push(n,a);return new Ku(t)},t.render=function(e,t,n){if(!Zu(t))throw Error(o(200));return Ju(null,e,t,!1,n)},t.unmountComponentAtNode=function(e){if(!Zu(e))throw Error(o(40));return!!e._reactRootContainer&&(cu((function(){Ju(null,null,e,!1,(function(){e._reactRootContainer=null,e[ha]=null}))})),!0)},t.unstable_batchedUpdates=uu,t.unstable_renderSubtreeIntoContainer=function(e,t,n,r){if(!Zu(n))throw Error(o(200));if(null==e||void 0===e._reactInternals)throw Error(o(38));return Ju(e,t,n,!1,r)},t.version="18.3.1-next-f1338f8080-20240426"},9576:(e,t,n)=>{"use strict";var r=n(8143);t.createRoot=r.createRoot,t.hydrateRoot=r.hydrateRoot},8143:(e,t,n)=>{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(9481)},4072:e=>{var t="undefined"!=typeof Element,n="function"==typeof Map,r="function"==typeof Set,a="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function o(e,i){if(e===i)return!0;if(e&&i&&"object"==typeof e&&"object"==typeof i){if(e.constructor!==i.constructor)return!1;var l,s,u,c;if(Array.isArray(e)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(!o(e[s],i[s]))return!1;return!0}if(n&&e instanceof Map&&i instanceof Map){if(e.size!==i.size)return!1;for(c=e.entries();!(s=c.next()).done;)if(!i.has(s.value[0]))return!1;for(c=e.entries();!(s=c.next()).done;)if(!o(s.value[1],i.get(s.value[0])))return!1;return!0}if(r&&e instanceof Set&&i instanceof Set){if(e.size!==i.size)return!1;for(c=e.entries();!(s=c.next()).done;)if(!i.has(s.value[0]))return!1;return!0}if(a&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(i)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(e[s]!==i[s])return!1;return!0}if(e.constructor===RegExp)return e.source===i.source&&e.flags===i.flags;if(e.valueOf!==Object.prototype.valueOf&&"function"==typeof e.valueOf&&"function"==typeof i.valueOf)return e.valueOf()===i.valueOf();if(e.toString!==Object.prototype.toString&&"function"==typeof e.toString&&"function"==typeof i.toString)return e.toString()===i.toString();if((l=(u=Object.keys(e)).length)!==Object.keys(i).length)return!1;for(s=l;0!=s--;)if(!Object.prototype.hasOwnProperty.call(i,u[s]))return!1;if(t&&e instanceof Element)return!1;for(s=l;0!=s--;)if(("_owner"!==u[s]&&"__v"!==u[s]&&"__o"!==u[s]||!e.$$typeof)&&!o(e[u[s]],i[u[s]]))return!1;return!0}return e!=e&&i!=i}e.exports=function(e,t){try{return o(e,t)}catch(n){if((n.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw n}}},932:(e,t,n)=>{"use strict";n.d(t,{mg:()=>J,vd:()=>W});var r=n(758),a=n(2736),o=n.n(a),i=n(4072),l=n.n(i),s=n(9597),u=n.n(s),c=n(2945),d=n.n(c);function p(){return p=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},p.apply(this,arguments)}function f(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,h(e,t)}function h(e,t){return h=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},h(e,t)}function m(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t.indexOf(n=o[r])>=0||(a[n]=e[n]);return a}var g={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title",FRAGMENT:"Symbol(react.fragment)"},y={rel:["amphtml","canonical","alternate"]},b={type:["application/ld+json"]},v={charset:"",name:["robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]},w=Object.keys(g).map((function(e){return g[e]})),k={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},x=Object.keys(k).reduce((function(e,t){return e[k[t]]=t,e}),{}),S=function(e,t){for(var n=e.length-1;n>=0;n-=1){var r=e[n];if(Object.prototype.hasOwnProperty.call(r,t))return r[t]}return null},E=function(e){var t=S(e,g.TITLE),n=S(e,"titleTemplate");if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,(function(){return t}));var r=S(e,"defaultTitle");return t||r||void 0},_=function(e){return S(e,"onChangeClientState")||function(){}},C=function(e,t){return t.filter((function(t){return void 0!==t[e]})).map((function(t){return t[e]})).reduce((function(e,t){return p({},e,t)}),{})},A=function(e,t){return t.filter((function(e){return void 0!==e[g.BASE]})).map((function(e){return e[g.BASE]})).reverse().reduce((function(t,n){if(!t.length)for(var r=Object.keys(n),a=0;a<r.length;a+=1){var o=r[a].toLowerCase();if(-1!==e.indexOf(o)&&n[o])return t.concat(n)}return t}),[])},T=function(e,t,n){var r={};return n.filter((function(t){return!!Array.isArray(t[e])||(void 0!==t[e]&&console&&"function"==typeof console.warn&&console.warn("Helmet: "+e+' should be of type "Array". Instead found type "'+typeof t[e]+'"'),!1)})).map((function(t){return t[e]})).reverse().reduce((function(e,n){var a={};n.filter((function(e){for(var n,o=Object.keys(e),i=0;i<o.length;i+=1){var l=o[i],s=l.toLowerCase();-1===t.indexOf(s)||"rel"===n&&"canonical"===e[n].toLowerCase()||"rel"===s&&"stylesheet"===e[s].toLowerCase()||(n=s),-1===t.indexOf(l)||"innerHTML"!==l&&"cssText"!==l&&"itemprop"!==l||(n=l)}if(!n||!e[n])return!1;var u=e[n].toLowerCase();return r[n]||(r[n]={}),a[n]||(a[n]={}),!r[n][u]&&(a[n][u]=!0,!0)})).reverse().forEach((function(t){return e.push(t)}));for(var o=Object.keys(a),i=0;i<o.length;i+=1){var l=o[i],s=p({},r[l],a[l]);r[l]=s}return e}),[]).reverse()},N=function(e,t){if(Array.isArray(e)&&e.length)for(var n=0;n<e.length;n+=1)if(e[n][t])return!0;return!1},O=function(e){return Array.isArray(e)?e.join(""):e},L=function(e,t){return Array.isArray(e)?e.reduce((function(e,n){return function(e,t){for(var n=Object.keys(e),r=0;r<n.length;r+=1)if(t[n[r]]&&t[n[r]].includes(e[n[r]]))return!0;return!1}(n,t)?e.priority.push(n):e.default.push(n),e}),{priority:[],default:[]}):{default:e}},P=function(e,t){var n;return p({},e,((n={})[t]=void 0,n))},j=[g.NOSCRIPT,g.SCRIPT,g.STYLE],R=function(e,t){return void 0===t&&(t=!0),!1===t?String(e):String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")},I=function(e){return Object.keys(e).reduce((function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r}),"")},D=function(e,t){return void 0===t&&(t={}),Object.keys(e).reduce((function(t,n){return t[k[n]||n]=e[n],t}),t)},F=function(e,t){return t.map((function(t,n){var a,o=((a={key:n})["data-rh"]=!0,a);return Object.keys(t).forEach((function(e){var n=k[e]||e;"innerHTML"===n||"cssText"===n?o.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:o[n]=t[e]})),r.createElement(e,o)}))},M=function(e,t,n){switch(e){case g.TITLE:return{toComponent:function(){return n=t.titleAttributes,(a={key:e=t.title})["data-rh"]=!0,o=D(n,a),[r.createElement(g.TITLE,o,e)];var e,n,a,o},toString:function(){return function(e,t,n,r){var a=I(n),o=O(t);return a?"<"+e+' data-rh="true" '+a+">"+R(o,r)+"</"+e+">":"<"+e+' data-rh="true">'+R(o,r)+"</"+e+">"}(e,t.title,t.titleAttributes,n)}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return D(t)},toString:function(){return I(t)}};default:return{toComponent:function(){return F(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,r){var a=Object.keys(r).filter((function(e){return!("innerHTML"===e||"cssText"===e)})).reduce((function(e,t){var a=void 0===r[t]?t:t+'="'+R(r[t],n)+'"';return e?e+" "+a:a}),""),o=r.innerHTML||r.cssText||"",i=-1===j.indexOf(e);return t+"<"+e+' data-rh="true" '+a+(i?"/>":">"+o+"</"+e+">")}),"")}(e,t,n)}}}},z=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,a=e.htmlAttributes,o=e.noscriptTags,i=e.styleTags,l=e.title,s=void 0===l?"":l,u=e.titleAttributes,c=e.linkTags,d=e.metaTags,p=e.scriptTags,f={toComponent:function(){},toString:function(){return""}};if(e.prioritizeSeoTags){var h=function(e){var t=e.linkTags,n=e.scriptTags,r=e.encode,a=L(e.metaTags,v),o=L(t,y),i=L(n,b);return{priorityMethods:{toComponent:function(){return[].concat(F(g.META,a.priority),F(g.LINK,o.priority),F(g.SCRIPT,i.priority))},toString:function(){return M(g.META,a.priority,r)+" "+M(g.LINK,o.priority,r)+" "+M(g.SCRIPT,i.priority,r)}},metaTags:a.default,linkTags:o.default,scriptTags:i.default}}(e);f=h.priorityMethods,c=h.linkTags,d=h.metaTags,p=h.scriptTags}return{priority:f,base:M(g.BASE,t,r),bodyAttributes:M("bodyAttributes",n,r),htmlAttributes:M("htmlAttributes",a,r),link:M(g.LINK,c,r),meta:M(g.META,d,r),noscript:M(g.NOSCRIPT,o,r),script:M(g.SCRIPT,p,r),style:M(g.STYLE,i,r),title:M(g.TITLE,{title:s,titleAttributes:u},r)}},B=[],$=function(e,t){var n=this;void 0===t&&(t="undefined"!=typeof document),this.instances=[],this.value={setHelmet:function(e){n.context.helmet=e},helmetInstances:{get:function(){return n.canUseDOM?B:n.instances},add:function(e){(n.canUseDOM?B:n.instances).push(e)},remove:function(e){var t=(n.canUseDOM?B:n.instances).indexOf(e);(n.canUseDOM?B:n.instances).splice(t,1)}}},this.context=e,this.canUseDOM=t,t||(e.helmet=z({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},U=r.createContext({}),H=o().shape({setHelmet:o().func,helmetInstances:o().shape({get:o().func,add:o().func,remove:o().func})}),V="undefined"!=typeof document,W=function(e){function t(n){var r;return(r=e.call(this,n)||this).helmetData=new $(r.props.context,t.canUseDOM),r}return f(t,e),t.prototype.render=function(){return r.createElement(U.Provider,{value:this.helmetData.value},this.props.children)},t}(r.Component);W.canUseDOM=V,W.propTypes={context:o().shape({helmet:o().shape()}),children:o().node.isRequired},W.defaultProps={context:{}},W.displayName="HelmetProvider";var q=function(e,t){var n,r=document.head||document.querySelector(g.HEAD),a=r.querySelectorAll(e+"[data-rh]"),o=[].slice.call(a),i=[];return t&&t.length&&t.forEach((function(t){var r=document.createElement(e);for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&("innerHTML"===a?r.innerHTML=t.innerHTML:"cssText"===a?r.styleSheet?r.styleSheet.cssText=t.cssText:r.appendChild(document.createTextNode(t.cssText)):r.setAttribute(a,void 0===t[a]?"":t[a]));r.setAttribute("data-rh","true"),o.some((function(e,t){return n=t,r.isEqualNode(e)}))?o.splice(n,1):i.push(r)})),o.forEach((function(e){return e.parentNode.removeChild(e)})),i.forEach((function(e){return r.appendChild(e)})),{oldTags:o,newTags:i}},G=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute("data-rh"),a=r?r.split(","):[],o=[].concat(a),i=Object.keys(t),l=0;l<i.length;l+=1){var s=i[l],u=t[s]||"";n.getAttribute(s)!==u&&n.setAttribute(s,u),-1===a.indexOf(s)&&a.push(s);var c=o.indexOf(s);-1!==c&&o.splice(c,1)}for(var d=o.length-1;d>=0;d-=1)n.removeAttribute(o[d]);a.length===o.length?n.removeAttribute("data-rh"):n.getAttribute("data-rh")!==i.join(",")&&n.setAttribute("data-rh",i.join(","))}},Y=function(e,t){var n=e.baseTag,r=e.htmlAttributes,a=e.linkTags,o=e.metaTags,i=e.noscriptTags,l=e.onChangeClientState,s=e.scriptTags,u=e.styleTags,c=e.title,d=e.titleAttributes;G(g.BODY,e.bodyAttributes),G(g.HTML,r),function(e,t){void 0!==e&&document.title!==e&&(document.title=O(e)),G(g.TITLE,t)}(c,d);var p={baseTag:q(g.BASE,n),linkTags:q(g.LINK,a),metaTags:q(g.META,o),noscriptTags:q(g.NOSCRIPT,i),scriptTags:q(g.SCRIPT,s),styleTags:q(g.STYLE,u)},f={},h={};Object.keys(p).forEach((function(e){var t=p[e],n=t.newTags,r=t.oldTags;n.length&&(f[e]=n),r.length&&(h[e]=p[e].oldTags)})),t&&t(),l(e,f,h)},K=null,Q=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).rendered=!1,t}f(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!d()(e,this.props)},n.componentDidUpdate=function(){this.emitChange()},n.componentWillUnmount=function(){this.props.context.helmetInstances.remove(this),this.emitChange()},n.emitChange=function(){var e,t,n=this.props.context,r=n.setHelmet,a=null,o=(e=n.helmetInstances.get().map((function(e){var t=p({},e.props);return delete t.context,t})),{baseTag:A(["href"],e),bodyAttributes:C("bodyAttributes",e),defer:S(e,"defer"),encode:S(e,"encodeSpecialCharacters"),htmlAttributes:C("htmlAttributes",e),linkTags:T(g.LINK,["rel","href"],e),metaTags:T(g.META,["name","charset","http-equiv","property","itemprop"],e),noscriptTags:T(g.NOSCRIPT,["innerHTML"],e),onChangeClientState:_(e),scriptTags:T(g.SCRIPT,["src","innerHTML"],e),styleTags:T(g.STYLE,["cssText"],e),title:E(e),titleAttributes:C("titleAttributes",e),prioritizeSeoTags:N(e,"prioritizeSeoTags")});W.canUseDOM?(t=o,K&&cancelAnimationFrame(K),t.defer?K=requestAnimationFrame((function(){Y(t,(function(){K=null}))})):(Y(t),K=null)):z&&(a=z(o)),r(a)},n.init=function(){this.rendered||(this.rendered=!0,this.props.context.helmetInstances.add(this),this.emitChange())},n.render=function(){return this.init(),null},t}(r.Component);Q.propTypes={context:H.isRequired},Q.displayName="HelmetDispatcher";var Z=["children"],X=["children"],J=function(e){function t(){return e.apply(this,arguments)||this}f(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!l()(P(this.props,"helmetData"),P(e,"helmetData"))},n.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case g.SCRIPT:case g.NOSCRIPT:return{innerHTML:t};case g.STYLE:return{cssText:t};default:throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")}},n.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren;return p({},r,((t={})[n.type]=[].concat(r[n.type]||[],[p({},e.newChildProps,this.mapNestedChildrenToProps(n,e.nestedChildren))]),t))},n.mapObjectTypeChildren=function(e){var t,n,r=e.child,a=e.newProps,o=e.newChildProps,i=e.nestedChildren;switch(r.type){case g.TITLE:return p({},a,((t={})[r.type]=i,t.titleAttributes=p({},o),t));case g.BODY:return p({},a,{bodyAttributes:p({},o)});case g.HTML:return p({},a,{htmlAttributes:p({},o)});default:return p({},a,((n={})[r.type]=p({},o),n))}},n.mapArrayTypeChildrenToProps=function(e,t){var n=p({},t);return Object.keys(e).forEach((function(t){var r;n=p({},n,((r={})[t]=e[t],r))})),n},n.warnOnInvalidChildren=function(e,t){return u()(w.some((function(t){return e.type===t})),"function"==typeof e.type?"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.":"Only elements types "+w.join(", ")+" are allowed. Helmet does not support rendering <"+e.type+"> elements. Refer to our API for more information."),u()(!t||"string"==typeof t||Array.isArray(t)&&!t.some((function(e){return"string"!=typeof e})),"Helmet expects a string as a child of <"+e.type+">. Did you forget to wrap your children in braces? ( <"+e.type+">{``}</"+e.type+"> ) Refer to our API for more information."),!0},n.mapChildrenToProps=function(e,t){var n=this,a={};return r.Children.forEach(e,(function(e){if(e&&e.props){var r=e.props,o=r.children,i=m(r,Z),l=Object.keys(i).reduce((function(e,t){return e[x[t]||t]=i[t],e}),{}),s=e.type;switch("symbol"==typeof s?s=s.toString():n.warnOnInvalidChildren(e,o),s){case g.FRAGMENT:t=n.mapChildrenToProps(o,t);break;case g.LINK:case g.META:case g.NOSCRIPT:case g.SCRIPT:case g.STYLE:a=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:a,newChildProps:l,nestedChildren:o});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:l,nestedChildren:o})}}})),this.mapArrayTypeChildrenToProps(a,t)},n.render=function(){var e=this.props,t=e.children,n=m(e,X),a=p({},n),o=n.helmetData;return t&&(a=this.mapChildrenToProps(t,a)),!o||o instanceof $||(o=new $(o.context,o.instances)),o?r.createElement(Q,p({},a,{context:o.value,helmetData:void 0})):r.createElement(U.Consumer,null,(function(e){return r.createElement(Q,p({},a,{context:e}))}))},t}(r.Component);J.propTypes={base:o().object,bodyAttributes:o().object,children:o().oneOfType([o().arrayOf(o().node),o().node]),defaultTitle:o().string,defer:o().bool,encodeSpecialCharacters:o().bool,htmlAttributes:o().object,link:o().arrayOf(o().object),meta:o().arrayOf(o().object),noscript:o().arrayOf(o().object),onChangeClientState:o().func,script:o().arrayOf(o().object),style:o().arrayOf(o().object),title:o().string,titleAttributes:o().object,titleTemplate:o().string,prioritizeSeoTags:o().bool,helmetData:o().object},J.defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1},J.displayName="Helmet"},5843:(e,t)=>{"use strict";var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,a=n?Symbol.for("react.portal"):60106,o=n?Symbol.for("react.fragment"):60107,i=n?Symbol.for("react.strict_mode"):60108,l=n?Symbol.for("react.profiler"):60114,s=n?Symbol.for("react.provider"):60109,u=n?Symbol.for("react.context"):60110,c=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,p=n?Symbol.for("react.forward_ref"):60112,f=n?Symbol.for("react.suspense"):60113,h=n?Symbol.for("react.suspense_list"):60120,m=n?Symbol.for("react.memo"):60115,g=n?Symbol.for("react.lazy"):60116,y=n?Symbol.for("react.block"):60121,b=n?Symbol.for("react.fundamental"):60117,v=n?Symbol.for("react.responder"):60118,w=n?Symbol.for("react.scope"):60119;function k(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case c:case d:case o:case l:case i:case f:return e;default:switch(e=e&&e.$$typeof){case u:case p:case g:case m:case s:return e;default:return t}}case a:return t}}}function x(e){return k(e)===d}t.AsyncMode=c,t.ConcurrentMode=d,t.ContextConsumer=u,t.ContextProvider=s,t.Element=r,t.ForwardRef=p,t.Fragment=o,t.Lazy=g,t.Memo=m,t.Portal=a,t.Profiler=l,t.StrictMode=i,t.Suspense=f,t.isAsyncMode=function(e){return x(e)||k(e)===c},t.isConcurrentMode=x,t.isContextConsumer=function(e){return k(e)===u},t.isContextProvider=function(e){return k(e)===s},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return k(e)===p},t.isFragment=function(e){return k(e)===o},t.isLazy=function(e){return k(e)===g},t.isMemo=function(e){return k(e)===m},t.isPortal=function(e){return k(e)===a},t.isProfiler=function(e){return k(e)===l},t.isStrictMode=function(e){return k(e)===i},t.isSuspense=function(e){return k(e)===f},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===d||e===l||e===i||e===f||e===h||"object"==typeof e&&null!==e&&(e.$$typeof===g||e.$$typeof===m||e.$$typeof===s||e.$$typeof===u||e.$$typeof===p||e.$$typeof===b||e.$$typeof===v||e.$$typeof===w||e.$$typeof===y)},t.typeOf=k},5959:(e,t,n)=>{"use strict";e.exports=n(5843)},1977:(e,t,n)=>{"use strict";n.d(t,{u:()=>i,v:()=>l});var r=n(5557),a=n(5265),o=n(758);function i(e,t,n){return void 0===n&&(n=[]),e.some((function(e){var a=e.path?(0,r.B6)(t,e):n.length?n[n.length-1].match:r.Ix.computeRootMatch(t);return a&&(n.push({route:e,match:a}),e.routes&&i(e.routes,t,n)),a})),n}function l(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e?o.createElement(r.dO,n,e.map((function(e,n){return o.createElement(r.qh,{key:e.key||n,path:e.path,exact:e.exact,strict:e.strict,render:function(n){return e.render?e.render((0,a.A)({},n,{},t,{route:e})):o.createElement(e.component,(0,a.A)({},n,t,{route:e}))}})}))):null}},1742:(e,t,n)=>{"use strict";n.d(t,{I9:()=>d,Kd:()=>c,N_:()=>y,k2:()=>w});var r=n(5557),a=n(9423),o=n(758),i=n(3332),l=n(5265),s=n(4032),u=n(5385),c=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).history=(0,i.zR)(t.props),t}return(0,a.A)(t,e),t.prototype.render=function(){return o.createElement(r.Ix,{history:this.history,children:this.props.children})},t}(o.Component);var d=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).history=(0,i.TM)(t.props),t}return(0,a.A)(t,e),t.prototype.render=function(){return o.createElement(r.Ix,{history:this.history,children:this.props.children})},t}(o.Component);var p=function(e,t){return"function"==typeof e?e(t):e},f=function(e,t){return"string"==typeof e?(0,i.yJ)(e,null,null,t):e},h=function(e){return e},m=o.forwardRef;void 0===m&&(m=h);var g=m((function(e,t){var n=e.innerRef,r=e.navigate,a=e.onClick,i=(0,s.A)(e,["innerRef","navigate","onClick"]),u=i.target,c=(0,l.A)({},i,{onClick:function(e){try{a&&a(e)}catch(t){throw e.preventDefault(),t}e.defaultPrevented||0!==e.button||u&&"_self"!==u||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)||(e.preventDefault(),r())}});return c.ref=h!==m&&t||n,o.createElement("a",c)}));var y=m((function(e,t){var n=e.component,a=void 0===n?g:n,c=e.replace,d=e.to,y=e.innerRef,b=(0,s.A)(e,["component","replace","to","innerRef"]);return o.createElement(r.XZ.Consumer,null,(function(e){e||(0,u.A)(!1);var n=e.history,r=f(p(d,e.location),e.location),s=r?n.createHref(r):"",g=(0,l.A)({},b,{href:s,navigate:function(){var t=p(d,e.location),r=(0,i.AO)(e.location)===(0,i.AO)(f(t));(c||r?n.replace:n.push)(t)}});return h!==m?g.ref=t||y:g.innerRef=y,o.createElement(a,g)}))})),b=function(e){return e},v=o.forwardRef;void 0===v&&(v=b);var w=v((function(e,t){var n=e["aria-current"],a=void 0===n?"page":n,i=e.activeClassName,c=void 0===i?"active":i,d=e.activeStyle,h=e.className,m=e.exact,g=e.isActive,w=e.location,k=e.sensitive,x=e.strict,S=e.style,E=e.to,_=e.innerRef,C=(0,s.A)(e,["aria-current","activeClassName","activeStyle","className","exact","isActive","location","sensitive","strict","style","to","innerRef"]);return o.createElement(r.XZ.Consumer,null,(function(e){e||(0,u.A)(!1);var n=w||e.location,i=f(p(E,n),n),s=i.pathname,A=s&&s.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),T=A?(0,r.B6)(n.pathname,{path:A,exact:m,sensitive:k,strict:x}):null,N=!!(g?g(T,n):T),O="function"==typeof h?h(N):h,L="function"==typeof S?S(N):S;N&&(O=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter((function(e){return e})).join(" ")}(O,c),L=(0,l.A)({},L,d));var P=(0,l.A)({"aria-current":N&&a||null,className:O,style:L,to:i},C);return b!==v?P.ref=t||_:P.innerRef=_,o.createElement(y,P)}))}))},5557:(e,t,n)=>{"use strict";n.d(t,{B6:()=>S,Ix:()=>v,W6:()=>P,XZ:()=>b,dO:()=>O,qh:()=>E,zy:()=>j});var r=n(9423),a=n(758),o=n(2736),i=n.n(o),l=n(3332),s=n(5385),u=n(5265),c=n(6150),d=n.n(c),p=(n(5959),n(4032)),f=(n(1035),1073741823),h="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:{};var m=a.createContext||function(e,t){var n,o,l="__create-react-context-"+function(){var e="__global_unique_id__";return h[e]=(h[e]||0)+1}()+"__",s=function(e){function n(){for(var t,n,r,a=arguments.length,o=new Array(a),i=0;i<a;i++)o[i]=arguments[i];return(t=e.call.apply(e,[this].concat(o))||this).emitter=(n=t.props.value,r=[],{on:function(e){r.push(e)},off:function(e){r=r.filter((function(t){return t!==e}))},get:function(){return n},set:function(e,t){n=e,r.forEach((function(e){return e(n,t)}))}}),t}(0,r.A)(n,e);var a=n.prototype;return a.getChildContext=function(){var e;return(e={})[l]=this.emitter,e},a.componentWillReceiveProps=function(e){if(this.props.value!==e.value){var n,r=this.props.value,a=e.value;((o=r)===(i=a)?0!==o||1/o==1/i:o!=o&&i!=i)?n=0:(n="function"==typeof t?t(r,a):f,0!==(n|=0)&&this.emitter.set(e.value,n))}var o,i},a.render=function(){return this.props.children},n}(a.Component);s.childContextTypes=((n={})[l]=i().object.isRequired,n);var u=function(t){function n(){for(var e,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(e=t.call.apply(t,[this].concat(r))||this).observedBits=void 0,e.state={value:e.getValue()},e.onUpdate=function(t,n){(0|e.observedBits)&n&&e.setState({value:e.getValue()})},e}(0,r.A)(n,t);var a=n.prototype;return a.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=null==t?f:t},a.componentDidMount=function(){this.context[l]&&this.context[l].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=null==e?f:e},a.componentWillUnmount=function(){this.context[l]&&this.context[l].off(this.onUpdate)},a.getValue=function(){return this.context[l]?this.context[l].get():e},a.render=function(){return(e=this.props.children,Array.isArray(e)?e[0]:e)(this.state.value);var e},n}(a.Component);return u.contextTypes=((o={})[l]=i().object,o),{Provider:s,Consumer:u}},g=function(e){var t=m();return t.displayName=e,t},y=g("Router-History"),b=g("Router"),v=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={location:t.history.location},n._isMounted=!1,n._pendingLocation=null,t.staticContext||(n.unlisten=t.history.listen((function(e){n._pendingLocation=e}))),n}(0,r.A)(t,e),t.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var n=t.prototype;return n.componentDidMount=function(){var e=this;this._isMounted=!0,this.unlisten&&this.unlisten(),this.props.staticContext||(this.unlisten=this.props.history.listen((function(t){e._isMounted&&e.setState({location:t})}))),this._pendingLocation&&this.setState({location:this._pendingLocation})},n.componentWillUnmount=function(){this.unlisten&&(this.unlisten(),this._isMounted=!1,this._pendingLocation=null)},n.render=function(){return a.createElement(b.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},a.createElement(y.Provider,{children:this.props.children||null,value:this.props.history}))},t}(a.Component);a.Component;a.Component;var w={},k=1e4,x=0;function S(e,t){void 0===t&&(t={}),("string"==typeof t||Array.isArray(t))&&(t={path:t});var n=t,r=n.path,a=n.exact,o=void 0!==a&&a,i=n.strict,l=void 0!==i&&i,s=n.sensitive,u=void 0!==s&&s;return[].concat(r).reduce((function(t,n){if(!n&&""!==n)return null;if(t)return t;var r=function(e,t){var n=""+t.end+t.strict+t.sensitive,r=w[n]||(w[n]={});if(r[e])return r[e];var a=[],o={regexp:d()(e,a,t),keys:a};return x<k&&(r[e]=o,x++),o}(n,{end:o,strict:l,sensitive:u}),a=r.regexp,i=r.keys,s=a.exec(e);if(!s)return null;var c=s[0],p=s.slice(1),f=e===c;return o&&!f?null:{path:n,url:"/"===n&&""===c?"/":c,isExact:f,params:i.reduce((function(e,t,n){return e[t.name]=p[n],e}),{})}}),null)}var E=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.A)(t,e),t.prototype.render=function(){var e=this;return a.createElement(b.Consumer,null,(function(t){t||(0,s.A)(!1);var n=e.props.location||t.location,r=e.props.computedMatch?e.props.computedMatch:e.props.path?S(n.pathname,e.props):t.match,o=(0,u.A)({},t,{location:n,match:r}),i=e.props,l=i.children,c=i.component,d=i.render;return Array.isArray(l)&&function(e){return 0===a.Children.count(e)}(l)&&(l=null),a.createElement(b.Provider,{value:o},o.match?l?"function"==typeof l?l(o):l:c?a.createElement(c,o):d?d(o):null:"function"==typeof l?l(o):null)}))},t}(a.Component);function _(e){return"/"===e.charAt(0)?e:"/"+e}function C(e,t){if(!e)return t;var n=_(e);return 0!==t.pathname.indexOf(n)?t:(0,u.A)({},t,{pathname:t.pathname.substr(n.length)})}function A(e){return"string"==typeof e?e:(0,l.AO)(e)}function T(e){return function(){(0,s.A)(!1)}}function N(){}a.Component;var O=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.A)(t,e),t.prototype.render=function(){var e=this;return a.createElement(b.Consumer,null,(function(t){t||(0,s.A)(!1);var n,r,o=e.props.location||t.location;return a.Children.forEach(e.props.children,(function(e){if(null==r&&a.isValidElement(e)){n=e;var i=e.props.path||e.props.from;r=i?S(o.pathname,(0,u.A)({},e.props,{path:i})):t.match}})),r?a.cloneElement(n,{location:o,computedMatch:r}):null}))},t}(a.Component);var L=a.useContext;function P(){return L(y)}function j(){return L(b).location}},7462:(e,t,n)=>{"use strict";var r=n(758),a=Symbol.for("react.element"),o=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,l=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,s={key:!0,ref:!0,__self:!0,__source:!0};function u(e,t,n){var r,o={},u=null,c=null;for(r in void 0!==n&&(u=""+n),void 0!==t.key&&(u=""+t.key),void 0!==t.ref&&(c=t.ref),t)i.call(t,r)&&!s.hasOwnProperty(r)&&(o[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===o[r]&&(o[r]=t[r]);return{$$typeof:a,type:e,key:u,ref:c,props:o,_owner:l.current}}t.Fragment=o,t.jsx=u,t.jsxs=u},2713:(e,t)=>{"use strict";var n=Symbol.for("react.element"),r=Symbol.for("react.portal"),a=Symbol.for("react.fragment"),o=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),l=Symbol.for("react.provider"),s=Symbol.for("react.context"),u=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),d=Symbol.for("react.memo"),p=Symbol.for("react.lazy"),f=Symbol.iterator;var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},m=Object.assign,g={};function y(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||h}function b(){}function v(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||h}y.prototype.isReactComponent={},y.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},y.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},b.prototype=y.prototype;var w=v.prototype=new b;w.constructor=v,m(w,y.prototype),w.isPureReactComponent=!0;var k=Array.isArray,x=Object.prototype.hasOwnProperty,S={current:null},E={key:!0,ref:!0,__self:!0,__source:!0};function _(e,t,r){var a,o={},i=null,l=null;if(null!=t)for(a in void 0!==t.ref&&(l=t.ref),void 0!==t.key&&(i=""+t.key),t)x.call(t,a)&&!E.hasOwnProperty(a)&&(o[a]=t[a]);var s=arguments.length-2;if(1===s)o.children=r;else if(1<s){for(var u=Array(s),c=0;c<s;c++)u[c]=arguments[c+2];o.children=u}if(e&&e.defaultProps)for(a in s=e.defaultProps)void 0===o[a]&&(o[a]=s[a]);return{$$typeof:n,type:e,key:i,ref:l,props:o,_owner:S.current}}function C(e){return"object"==typeof e&&null!==e&&e.$$typeof===n}var A=/\/+/g;function T(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,(function(e){return t[e]}))}(""+e.key):t.toString(36)}function N(e,t,a,o,i){var l=typeof e;"undefined"!==l&&"boolean"!==l||(e=null);var s=!1;if(null===e)s=!0;else switch(l){case"string":case"number":s=!0;break;case"object":switch(e.$$typeof){case n:case r:s=!0}}if(s)return i=i(s=e),e=""===o?"."+T(s,0):o,k(i)?(a="",null!=e&&(a=e.replace(A,"$&/")+"/"),N(i,t,a,"",(function(e){return e}))):null!=i&&(C(i)&&(i=function(e,t){return{$$typeof:n,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(i,a+(!i.key||s&&s.key===i.key?"":(""+i.key).replace(A,"$&/")+"/")+e)),t.push(i)),1;if(s=0,o=""===o?".":o+":",k(e))for(var u=0;u<e.length;u++){var c=o+T(l=e[u],u);s+=N(l,t,a,c,i)}else if(c=function(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=f&&e[f]||e["@@iterator"])?e:null}(e),"function"==typeof c)for(e=c.call(e),u=0;!(l=e.next()).done;)s+=N(l=l.value,t,a,c=o+T(l,u++),i);else if("object"===l)throw t=String(e),Error("Objects are not valid as a React child (found: "+("[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.");return s}function O(e,t,n){if(null==e)return e;var r=[],a=0;return N(e,r,"","",(function(e){return t.call(n,e,a++)})),r}function L(e){if(-1===e._status){var t=e._result;(t=t()).then((function(t){0!==e._status&&-1!==e._status||(e._status=1,e._result=t)}),(function(t){0!==e._status&&-1!==e._status||(e._status=2,e._result=t)})),-1===e._status&&(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}var P={current:null},j={transition:null},R={ReactCurrentDispatcher:P,ReactCurrentBatchConfig:j,ReactCurrentOwner:S};function I(){throw Error("act(...) is not supported in production builds of React.")}t.Children={map:O,forEach:function(e,t,n){O(e,(function(){t.apply(this,arguments)}),n)},count:function(e){var t=0;return O(e,(function(){t++})),t},toArray:function(e){return O(e,(function(e){return e}))||[]},only:function(e){if(!C(e))throw Error("React.Children.only expected to receive a single React element child.");return e}},t.Component=y,t.Fragment=a,t.Profiler=i,t.PureComponent=v,t.StrictMode=o,t.Suspense=c,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=R,t.act=I,t.cloneElement=function(e,t,r){if(null==e)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var a=m({},e.props),o=e.key,i=e.ref,l=e._owner;if(null!=t){if(void 0!==t.ref&&(i=t.ref,l=S.current),void 0!==t.key&&(o=""+t.key),e.type&&e.type.defaultProps)var s=e.type.defaultProps;for(u in t)x.call(t,u)&&!E.hasOwnProperty(u)&&(a[u]=void 0===t[u]&&void 0!==s?s[u]:t[u])}var u=arguments.length-2;if(1===u)a.children=r;else if(1<u){s=Array(u);for(var c=0;c<u;c++)s[c]=arguments[c+2];a.children=s}return{$$typeof:n,type:e.type,key:o,ref:i,props:a,_owner:l}},t.createContext=function(e){return(e={$$typeof:s,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null}).Provider={$$typeof:l,_context:e},e.Consumer=e},t.createElement=_,t.createFactory=function(e){var t=_.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:u,render:e}},t.isValidElement=C,t.lazy=function(e){return{$$typeof:p,_payload:{_status:-1,_result:e},_init:L}},t.memo=function(e,t){return{$$typeof:d,type:e,compare:void 0===t?null:t}},t.startTransition=function(e){var t=j.transition;j.transition={};try{e()}finally{j.transition=t}},t.unstable_act=I,t.useCallback=function(e,t){return P.current.useCallback(e,t)},t.useContext=function(e){return P.current.useContext(e)},t.useDebugValue=function(){},t.useDeferredValue=function(e){return P.current.useDeferredValue(e)},t.useEffect=function(e,t){return P.current.useEffect(e,t)},t.useId=function(){return P.current.useId()},t.useImperativeHandle=function(e,t,n){return P.current.useImperativeHandle(e,t,n)},t.useInsertionEffect=function(e,t){return P.current.useInsertionEffect(e,t)},t.useLayoutEffect=function(e,t){return P.current.useLayoutEffect(e,t)},t.useMemo=function(e,t){return P.current.useMemo(e,t)},t.useReducer=function(e,t,n){return P.current.useReducer(e,t,n)},t.useRef=function(e){return P.current.useRef(e)},t.useState=function(e){return P.current.useState(e)},t.useSyncExternalStore=function(e,t,n){return P.current.useSyncExternalStore(e,t,n)},t.useTransition=function(){return P.current.useTransition()},t.version="18.3.1"},758:(e,t,n)=>{"use strict";e.exports=n(2713)},6070:(e,t,n)=>{"use strict";e.exports=n(7462)},4733:(e,t)=>{"use strict";function n(e,t){var n=e.length;e.push(t);e:for(;0<n;){var r=n-1>>>1,a=e[r];if(!(0<o(a,t)))break e;e[r]=t,e[n]=a,n=r}}function r(e){return 0===e.length?null:e[0]}function a(e){if(0===e.length)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,a=e.length,i=a>>>1;r<i;){var l=2*(r+1)-1,s=e[l],u=l+1,c=e[u];if(0>o(s,n))u<a&&0>o(c,s)?(e[r]=c,e[u]=n,r=u):(e[r]=s,e[l]=n,r=l);else{if(!(u<a&&0>o(c,n)))break e;e[r]=c,e[u]=n,r=u}}}return t}function o(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if("object"==typeof performance&&"function"==typeof performance.now){var i=performance;t.unstable_now=function(){return i.now()}}else{var l=Date,s=l.now();t.unstable_now=function(){return l.now()-s}}var u=[],c=[],d=1,p=null,f=3,h=!1,m=!1,g=!1,y="function"==typeof setTimeout?setTimeout:null,b="function"==typeof clearTimeout?clearTimeout:null,v="undefined"!=typeof setImmediate?setImmediate:null;function w(e){for(var t=r(c);null!==t;){if(null===t.callback)a(c);else{if(!(t.startTime<=e))break;a(c),t.sortIndex=t.expirationTime,n(u,t)}t=r(c)}}function k(e){if(g=!1,w(e),!m)if(null!==r(u))m=!0,j(x);else{var t=r(c);null!==t&&R(k,t.startTime-e)}}function x(e,n){m=!1,g&&(g=!1,b(C),C=-1),h=!0;var o=f;try{for(w(n),p=r(u);null!==p&&(!(p.expirationTime>n)||e&&!N());){var i=p.callback;if("function"==typeof i){p.callback=null,f=p.priorityLevel;var l=i(p.expirationTime<=n);n=t.unstable_now(),"function"==typeof l?p.callback=l:p===r(u)&&a(u),w(n)}else a(u);p=r(u)}if(null!==p)var s=!0;else{var d=r(c);null!==d&&R(k,d.startTime-n),s=!1}return s}finally{p=null,f=o,h=!1}}"undefined"!=typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);var S,E=!1,_=null,C=-1,A=5,T=-1;function N(){return!(t.unstable_now()-T<A)}function O(){if(null!==_){var e=t.unstable_now();T=e;var n=!0;try{n=_(!0,e)}finally{n?S():(E=!1,_=null)}}else E=!1}if("function"==typeof v)S=function(){v(O)};else if("undefined"!=typeof MessageChannel){var L=new MessageChannel,P=L.port2;L.port1.onmessage=O,S=function(){P.postMessage(null)}}else S=function(){y(O,0)};function j(e){_=e,E||(E=!0,S())}function R(e,n){C=y((function(){e(t.unstable_now())}),n)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){m||h||(m=!0,j(x))},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):A=0<e?Math.floor(1e3/e):5},t.unstable_getCurrentPriorityLevel=function(){return f},t.unstable_getFirstCallbackNode=function(){return r(u)},t.unstable_next=function(e){switch(f){case 1:case 2:case 3:var t=3;break;default:t=f}var n=f;f=t;try{return e()}finally{f=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=function(){},t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=f;f=e;try{return t()}finally{f=n}},t.unstable_scheduleCallback=function(e,a,o){var i=t.unstable_now();switch("object"==typeof o&&null!==o?o="number"==typeof(o=o.delay)&&0<o?i+o:i:o=i,e){case 1:var l=-1;break;case 2:l=250;break;case 5:l=1073741823;break;case 4:l=1e4;break;default:l=5e3}return e={id:d++,callback:a,priorityLevel:e,startTime:o,expirationTime:l=o+l,sortIndex:-1},o>i?(e.sortIndex=o,n(c,e),null===r(u)&&e===r(c)&&(g?(b(C),C=-1):g=!0,R(k,o-i))):(e.sortIndex=l,n(u,e),m||h||(m=!0,j(x))),e},t.unstable_shouldYield=N,t.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}},1896:(e,t,n)=>{"use strict";e.exports=n(4733)},2945:e=>{e.exports=function(e,t,n,r){var a=n?n.call(r,e,t):void 0;if(void 0!==a)return!!a;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var o=Object.keys(e),i=Object.keys(t);if(o.length!==i.length)return!1;for(var l=Object.prototype.hasOwnProperty.bind(t),s=0;s<o.length;s++){var u=o[s];if(!l(u))return!1;var c=e[u],d=t[u];if(!1===(a=n?n.call(r,c,d,u):void 0)||void 0===a&&c!==d)return!1}return!0}},4784:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={title:"Calimero 2.0",tagline:"Calimero Network is a framework which enables building fully decentralized applications, ensuring everyone's data privacy.",favicon:"img/favicon.ico",url:"https://calimero-network.github.io",baseUrl:"/",organizationName:"calimero-network",projectName:"calimero-2.0",onBrokenLinks:"throw",onBrokenMarkdownLinks:"warn",i18n:{defaultLocale:"en",locales:["en"],path:"i18n",localeConfigs:{}},headTags:[{tagName:"script",attributes:{"data-collect-dnt":"true",src:"https://scripts.simpleanalyticscdn.com/latest.js",async:"async",defer:"defer"}}],presets:[["classic",{docs:{sidebarPath:"./sidebars.ts",routeBasePath:"/",breadcrumbs:!0,showLastUpdateTime:!0},blog:!1,theme:{customCss:"./src/css/custom.scss"}}]],plugins:["docusaurus-plugin-sass"],themeConfig:{colorMode:{disableSwitch:!1,defaultMode:"dark",respectPrefersColorScheme:!0},announcementBar:{id:"id-0002",content:'**\ud83c\udf89 Come check <a href="https://www.calimero.network/">our new website</a> \ud83c\udf89**',backgroundColor:"#247E80",textColor:"#fff",isCloseable:!0},docs:{sidebar:{hideable:!0,autoCollapseCategories:!1},versionPersistence:"localStorage"},navbar:{style:"dark",logo:{alt:"Calimero Network",src:"img/logo.svg"},items:[{to:"/explore/intro",position:"left",label:"Explore"},{to:"/learn/architecture",position:"left",label:"Learn"},{to:"/build/quickstart",position:"left",label:"Build"},{to:"/contribute/github",position:"left",label:"Contribute"},{to:"/resources/community-and-support",position:"left",label:"Resources"},{href:"https://github.com/calimero-network/core",label:"GitHub",position:"right"}],hideOnScroll:!1},footer:{style:"dark",copyright:"Copyright \xa9 2024 Calimero Limited LLC.",links:[]},prism:{theme:{plain:{color:"#393A34",backgroundColor:"#f6f8fa"},styles:[{types:["comment","prolog","doctype","cdata"],style:{color:"#999988",fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}},{types:["string","attr-value"],style:{color:"#e3116c"}},{types:["punctuation","operator"],style:{color:"#393A34"}},{types:["entity","url","symbol","number","boolean","variable","constant","property","regex","inserted"],style:{color:"#36acaa"}},{types:["atrule","keyword","attr-name","selector"],style:{color:"#00a4db"}},{types:["function","deleted","tag"],style:{color:"#d73a49"}},{types:["function-variable"],style:{color:"#6f42c1"}},{types:["tag","selector","keyword"],style:{color:"#00009f"}}]},darkTheme:{plain:{color:"#F8F8F2",backgroundColor:"#282A36"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},additionalLanguages:["bash","toml"],magicComments:[{className:"theme-code-block-highlighted-line",line:"highlight-next-line",block:{start:"highlight-start",end:"highlight-end"}}]},metadata:[],tableOfContents:{minHeadingLevel:2,maxHeadingLevel:3}},baseUrlIssueBanner:!0,future:{experimental_storage:{type:"localStorage",namespace:!1},experimental_router:"browser"},onBrokenAnchors:"warn",onDuplicateRoutes:"warn",staticDirectories:["static"],customFields:{},themes:[],scripts:[],stylesheets:[],clientModules:[],titleDelimiter:"|",noIndex:!1,markdown:{format:"mdx",mermaid:!1,mdx1Compat:{comments:!0,admonitions:!0,headingIds:!0},anchors:{maintainCase:!1}}}},5265:(e,t,n)=>{"use strict";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},r.apply(null,arguments)}n.d(t,{A:()=>r})},9423:(e,t,n)=>{"use strict";function r(e,t){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},r(e,t)}function a(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)}n.d(t,{A:()=>a})},4032:(e,t,n)=>{"use strict";function r(e,t){if(null==e)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}n.d(t,{A:()=>r})},3526:(e,t,n)=>{"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(n=r(e[t]))&&(a&&(a+=" "),a+=n)}else for(n in e)e[n]&&(a&&(a+=" "),a+=n);return a}n.d(t,{A:()=>a});const a=function(){for(var e,t,n=0,a="",o=arguments.length;n<o;n++)(e=arguments[n])&&(t=r(e))&&(a&&(a+=" "),a+=t);return a}},3477:(e,t,n)=>{"use strict";n.d(t,{My:()=>A,f4:()=>ee});var r,a,o,i,l,s,u,c=n(758),d=n(3526),p=Object.create,f=Object.defineProperty,h=Object.defineProperties,m=Object.getOwnPropertyDescriptor,g=Object.getOwnPropertyDescriptors,y=Object.getOwnPropertyNames,b=Object.getOwnPropertySymbols,v=Object.getPrototypeOf,w=Object.prototype.hasOwnProperty,k=Object.prototype.propertyIsEnumerable,x=(e,t,n)=>t in e?f(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,S=(e,t)=>{for(var n in t||(t={}))w.call(t,n)&&x(e,n,t[n]);if(b)for(var n of b(t))k.call(t,n)&&x(e,n,t[n]);return e},E=(e,t)=>h(e,g(t)),_=(e,t)=>{var n={};for(var r in e)w.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&b)for(var r of b(e))t.indexOf(r)<0&&k.call(e,r)&&(n[r]=e[r]);return n},C=(r={"../../node_modules/.pnpm/prismjs@1.29.0_patch_hash=vrxx3pzkik6jpmgpayxfjunetu/node_modules/prismjs/prism.js"(e,t){var n=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof a?new a(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/</g,"<").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++t}),e.__id},clone:function e(t,n){var a,o;switch(n=n||{},r.util.type(t)){case"Object":if(o=r.util.objId(t),n[o])return n[o];for(var i in a={},n[o]=a,t)t.hasOwnProperty(i)&&(a[i]=e(t[i],n));return a;case"Array":return o=r.util.objId(t),n[o]?n[o]:(a=[],n[o]=a,t.forEach((function(t,r){a[r]=e(t,n)})),a);default:return t}},getLanguage:function(t){for(;t;){var n=e.exec(t.className);if(n)return n[1].toLowerCase();t=t.parentElement}return"none"},setLanguage:function(t,n){t.className=t.className.replace(RegExp(e,"gi"),""),t.classList.add("language-"+n)},isActive:function(e,t,n){for(var r="no-"+t;e;){var a=e.classList;if(a.contains(t))return!0;if(a.contains(r))return!1;e=e.parentElement}return!!n}},languages:{plain:n,plaintext:n,text:n,txt:n,extend:function(e,t){var n=r.util.clone(r.languages[e]);for(var a in t)n[a]=t[a];return n},insertBefore:function(e,t,n,a){var o=(a=a||r.languages)[e],i={};for(var l in o)if(o.hasOwnProperty(l)){if(l==t)for(var s in n)n.hasOwnProperty(s)&&(i[s]=n[s]);n.hasOwnProperty(l)||(i[l]=o[l])}var u=a[e];return a[e]=i,r.languages.DFS(r.languages,(function(t,n){n===u&&t!=e&&(this[t]=i)})),i},DFS:function e(t,n,a,o){o=o||{};var i=r.util.objId;for(var l in t)if(t.hasOwnProperty(l)){n.call(t,l,t[l],a||l);var s=t[l],u=r.util.type(s);"Object"!==u||o[i(s)]?"Array"!==u||o[i(s)]||(o[i(s)]=!0,e(s,n,l,o)):(o[i(s)]=!0,e(s,n,null,o))}}},plugins:{},highlight:function(e,t,n){var o={code:e,grammar:t,language:n};if(r.hooks.run("before-tokenize",o),!o.grammar)throw new Error('The language "'+o.language+'" has no grammar.');return o.tokens=r.tokenize(o.code,o.grammar),r.hooks.run("after-tokenize",o),a.stringify(r.util.encode(o.tokens),o.language)},tokenize:function(e,t){var n=t.rest;if(n){for(var r in n)t[r]=n[r];delete t.rest}var a=new l;return s(a,a.head,e),i(e,a,t,a.head,0),function(e){for(var t=[],n=e.head.next;n!==e.tail;)t.push(n.value),n=n.next;return t}(a)},hooks:{all:{},add:function(e,t){var n=r.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=r.hooks.all[e];if(n&&n.length)for(var a,o=0;a=n[o++];)a(t)}},Token:a};function a(e,t,n,r){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length}function o(e,t,n,r){e.lastIndex=t;var a=e.exec(n);if(a&&r&&a[1]){var o=a[1].length;a.index+=o,a[0]=a[0].slice(o)}return a}function i(e,t,n,l,c,d){for(var p in n)if(n.hasOwnProperty(p)&&n[p]){var f=n[p];f=Array.isArray(f)?f:[f];for(var h=0;h<f.length;++h){if(d&&d.cause==p+","+h)return;var m=f[h],g=m.inside,y=!!m.lookbehind,b=!!m.greedy,v=m.alias;if(b&&!m.pattern.global){var w=m.pattern.toString().match(/[imsuy]*$/)[0];m.pattern=RegExp(m.pattern.source,w+"g")}for(var k=m.pattern||m,x=l.next,S=c;x!==t.tail&&!(d&&S>=d.reach);S+=x.value.length,x=x.next){var E=x.value;if(t.length>e.length)return;if(!(E instanceof a)){var _,C=1;if(b){if(!(_=o(k,S,e,y))||_.index>=e.length)break;var A=_.index,T=_.index+_[0].length,N=S;for(N+=x.value.length;A>=N;)N+=(x=x.next).value.length;if(S=N-=x.value.length,x.value instanceof a)continue;for(var O=x;O!==t.tail&&(N<T||"string"==typeof O.value);O=O.next)C++,N+=O.value.length;C--,E=e.slice(S,N),_.index-=S}else if(!(_=o(k,0,E,y)))continue;A=_.index;var L=_[0],P=E.slice(0,A),j=E.slice(A+L.length),R=S+E.length;d&&R>d.reach&&(d.reach=R);var I=x.prev;if(P&&(I=s(t,I,P),S+=P.length),u(t,I,C),x=s(t,I,new a(p,g?r.tokenize(L,g):L,v,L)),j&&s(t,x,j),C>1){var D={cause:p+","+h,reach:R};i(e,t,n,x.prev,S,D),d&&D.reach>d.reach&&(d.reach=D.reach)}}}}}}function l(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function s(e,t,n){var r=t.next,a={value:n,prev:t,next:r};return t.next=a,r.prev=a,e.length++,a}function u(e,t,n){for(var r=t.next,a=0;a<n&&r!==e.tail;a++)r=r.next;t.next=r,r.prev=t,e.length-=a}return a.stringify=function e(t,n){if("string"==typeof t)return t;if(Array.isArray(t)){var a="";return t.forEach((function(t){a+=e(t,n)})),a}var o={type:t.type,content:e(t.content,n),tag:"span",classes:["token",t.type],attributes:{},language:n},i=t.alias;i&&(Array.isArray(i)?Array.prototype.push.apply(o.classes,i):o.classes.push(i)),r.hooks.run("wrap",o);var l="";for(var s in o.attributes)l+=" "+s+'="'+(o.attributes[s]||"").replace(/"/g,""")+'"';return"<"+o.tag+' class="'+o.classes.join(" ")+'"'+l+">"+o.content+"</"+o.tag+">"},r}();t.exports=n,n.default=n}},function(){return a||(0,r[y(r)[0]])((a={exports:{}}).exports,a),a.exports}),A=((e,t,n)=>(n=null!=e?p(v(e)):{},((e,t,n,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let a of y(t))w.call(e,a)||a===n||f(e,a,{get:()=>t[a],enumerable:!(r=m(t,a))||r.enumerable});return e})(!t&&e&&e.__esModule?n:f(n,"default",{value:e,enumerable:!0}),e)))(C());A.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},A.languages.markup.tag.inside["attr-value"].inside.entity=A.languages.markup.entity,A.languages.markup.doctype.inside["internal-subset"].inside=A.languages.markup,A.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(A.languages.markup.tag,"addInlined",{value:function(e,t){var n;(t=((n=((n={})["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:A.languages[t]},n.cdata=/^<!\[CDATA\[|\]\]>$/i,{"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}}))["language-"+t]={pattern:/[\s\S]+/,inside:A.languages[t]},{}))[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:n},A.languages.insertBefore("markup","cdata",t)}}),Object.defineProperty(A.languages.markup.tag,"addAttribute",{value:function(e,t){A.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:A.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),A.languages.html=A.languages.markup,A.languages.mathml=A.languages.markup,A.languages.svg=A.languages.markup,A.languages.xml=A.languages.extend("markup",{}),A.languages.ssml=A.languages.xml,A.languages.atom=A.languages.xml,A.languages.rss=A.languages.xml,o=A,i={pattern:/\\[\\(){}[\]^$+*?|.]/,alias:"escape"},s="(?:[^\\\\-]|"+(l=/\\(?:x[\da-fA-F]{2}|u[\da-fA-F]{4}|u\{[\da-fA-F]+\}|0[0-7]{0,2}|[123][0-7]{2}|c[a-zA-Z]|.)/).source+")",s=RegExp(s+"-"+s),u={pattern:/(<|')[^<>']+(?=[>']$)/,lookbehind:!0,alias:"variable"},o.languages.regex={"char-class":{pattern:/((?:^|[^\\])(?:\\\\)*)\[(?:[^\\\]]|\\[\s\S])*\]/,lookbehind:!0,inside:{"char-class-negation":{pattern:/(^\[)\^/,lookbehind:!0,alias:"operator"},"char-class-punctuation":{pattern:/^\[|\]$/,alias:"punctuation"},range:{pattern:s,inside:{escape:l,"range-punctuation":{pattern:/-/,alias:"operator"}}},"special-escape":i,"char-set":{pattern:/\\[wsd]|\\p\{[^{}]+\}/i,alias:"class-name"},escape:l}},"special-escape":i,"char-set":{pattern:/\.|\\[wsd]|\\p\{[^{}]+\}/i,alias:"class-name"},backreference:[{pattern:/\\(?![123][0-7]{2})[1-9]/,alias:"keyword"},{pattern:/\\k<[^<>']+>/,alias:"keyword",inside:{"group-name":u}}],anchor:{pattern:/[$^]|\\[ABbGZz]/,alias:"function"},escape:l,group:[{pattern:/\((?:\?(?:<[^<>']+>|'[^<>']+'|[>:]|<?[=!]|[idmnsuxU]+(?:-[idmnsuxU]+)?:?))?/,alias:"punctuation",inside:{"group-name":u}},{pattern:/\)/,alias:"punctuation"}],quantifier:{pattern:/(?:[+*?]|\{\d+(?:,\d*)?\})[?+]?/,alias:"number"},alternation:{pattern:/\|/,alias:"keyword"}},A.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},A.languages.javascript=A.languages.extend("clike",{"class-name":[A.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),A.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,A.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:A.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:A.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:A.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:A.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:A.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),A.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:A.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),A.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),A.languages.markup&&(A.languages.markup.tag.addInlined("script","javascript"),A.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),A.languages.js=A.languages.javascript,A.languages.actionscript=A.languages.extend("javascript",{keyword:/\b(?:as|break|case|catch|class|const|default|delete|do|dynamic|each|else|extends|final|finally|for|function|get|if|implements|import|in|include|instanceof|interface|internal|is|namespace|native|new|null|override|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|use|var|void|while|with)\b/,operator:/\+\+|--|(?:[+\-*\/%^]|&&?|\|\|?|<<?|>>?>?|[!=]=?)=?|[~?@]/}),A.languages.actionscript["class-name"].alias="function",delete A.languages.actionscript.parameter,delete A.languages.actionscript["literal-property"],A.languages.markup&&A.languages.insertBefore("actionscript","string",{xml:{pattern:/(^|[^.])<\/?\w+(?:\s+[^\s>\/=]+=("|')(?:\\[\s\S]|(?!\2)[^\\])*\2)*\s*\/?>/,lookbehind:!0,inside:A.languages.markup}}),function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(A),function(e){var t=e.languages.javadoclike={parameter:{pattern:/(^[\t ]*(?:\/{3}|\*|\/\*\*)\s*@(?:arg|arguments|param)\s+)\w+/m,lookbehind:!0},keyword:{pattern:/(^[\t ]*(?:\/{3}|\*|\/\*\*)\s*|\{)@[a-z][a-zA-Z-]+\b/m,lookbehind:!0},punctuation:/[{}]/};Object.defineProperty(t,"addSupport",{value:function(t,n){(t="string"==typeof t?[t]:t).forEach((function(t){var r=function(e){e.inside||(e.inside={}),e.inside.rest=n},a="doc-comment";if(o=e.languages[t]){var o,i=o[a];if((i=i||(o=e.languages.insertBefore(t,"comment",{"doc-comment":{pattern:/(^|[^\\])\/\*\*[^/][\s\S]*?(?:\*\/|$)/,lookbehind:!0,alias:"comment"}}))[a])instanceof RegExp&&(i=o[a]={pattern:i}),Array.isArray(i))for(var l=0,s=i.length;l<s;l++)i[l]instanceof RegExp&&(i[l]={pattern:i[l]}),r(i[l]);else r(i)}}))}}),t.addSupport(["java","javascript","php"],t)}(A),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;(t=(e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+t.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css,e.languages.markup))&&(t.tag.addInlined("style","css"),t.tag.addAttribute("style","css"))}(A),function(e){var t=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,n=(t=(e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+t.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[t,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}}),{pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0}),{pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0});e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|RebeccaPurple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,number:n})}(A),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",a=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-]<PLAIN>)(?:[ \t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*/.source.replace(/<PLAIN>/g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),o=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<<prop>>[ \t]+)?)(?:<<value>>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<value>>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<<prop>>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<<prop>>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<<prop>>[ \t]+)?)<<key>>(?=\s*:\s)/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<key>>/g,(function(){return"(?:"+a+"|"+o+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(o),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(A),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(/<inner>/g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,a=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),o=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source,i=(e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+a+o+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+o+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\b|\*\*(?:(?!\*)<inner>|\*(?:(?!\*)<inner>)+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\b|\*(?:(?!\*)<inner>|\*\*(?:(?!\*)<inner>)+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~)<inner>)+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\])<inner>)+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\])<inner>)+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike","code-snippet"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n<r;n++){var a,o=t[n];"code"!==o.type?e(o.content):(a=o.content[1],o=o.content[3],a&&o&&"code-language"===a.type&&"code-block"===o.type&&"string"==typeof a.content&&(a=a.content.replace(/\b#/g,"sharp").replace(/\b\+\+/g,"pp"),a="language-"+(a=(/[a-z][\w-]*/i.exec(a)||[""])[0].toLowerCase()),o.alias?"string"==typeof o.alias?o.alias=[o.alias,a]:o.alias.push(a):o.alias=[a]))}}(e.tokens)})),e.hooks.add("wrap",(function(t){if("code-block"===t.type){for(var n="",r=0,a=t.classes.length;r<a;r++){var o=t.classes[r];if(o=/language-(.+)/.exec(o)){n=o[1];break}}var u,c=e.languages[n];c?t.content=e.highlight(t.content.replace(i,"").replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi,(function(e,t){var n;return"#"===(t=t.toLowerCase())[0]?(n="x"===t[1]?parseInt(t.slice(2),16):Number(t.slice(1)),s(n)):l[t]||e})),c,n):n&&"none"!==n&&e.plugins.autoloader&&(u="md-"+(new Date).valueOf()+"-"+Math.floor(1e16*Math.random()),t.attributes.id=u,e.plugins.autoloader.loadLanguages(n,(function(){var t=document.getElementById(u);t&&(t.innerHTML=e.highlight(t.textContent,e.languages[n],n))})))}})),RegExp(e.languages.markup.tag.pattern.source,"gi")),l={amp:"&",lt:"<",gt:">",quot:'"'},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(A),A.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:A.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},A.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var t=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),n=0;n<t.length;){var r=t[n++];if("keyword"===r.type&&"mutation"===r.content){var a=[];if(d(["definition-mutation","punctuation"])&&"("===c(1).content){n+=2;var o=p(/^\($/,/^\)$/);if(-1===o)continue;for(;n<o;n++){var i=c(0);"variable"===i.type&&(f(i,"variable-input"),a.push(i.content))}n=o+1}if(d(["punctuation","property-query"])&&"{"===c(0).content&&(n++,f(c(0),"property-mutation"),0<a.length)){var l=p(/^\{$/,/^\}$/);if(-1!==l)for(var s=n;s<l;s++){var u=t[s];"variable"===u.type&&0<=a.indexOf(u.content)&&f(u,"variable-input")}}}}function c(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n<e.length;n++){var r=c(n+t);if(!r||r.type!==e[n])return}return 1}function p(e,r){for(var a=1,o=n;o<t.length;o++){var i=t[o],l=i.content;if("punctuation"===i.type&&"string"==typeof l)if(e.test(l))a++;else if(r.test(l)&&0==--a)return o}return-1}function f(e,t){var n=e.alias;n?Array.isArray(n)||(e.alias=n=[n]):e.alias=n=[],n.push(t)}})),A.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,a=r.inside["interpolation-punctuation"],o=r.pattern.source;function i(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function l(t,n,r){return t={code:t,grammar:n,language:r},e.hooks.run("before-tokenize",t),t.tokens=e.tokenize(t.code,t.grammar),e.hooks.run("after-tokenize",t),t.tokens}function s(t,n,i){var s=e.tokenize(t,{interpolation:{pattern:RegExp(o),lookbehind:!0}}),u=0,c={},d=(s=l(s.map((function(e){if("string"==typeof e)return e;var n,r;for(e=e.content;-1!==t.indexOf((r=u++,n="___"+i.toUpperCase()+"_"+r+"___")););return c[n]=e,n})).join(""),n,i),Object.keys(c));return u=0,function t(n){for(var o=0;o<n.length;o++){if(u>=d.length)return;var i,s,p,f,h,m,g,y=n[o];"string"==typeof y||"string"==typeof y.content?(i=d[u],-1!==(g=(m="string"==typeof y?y:y.content).indexOf(i))&&(++u,s=m.substring(0,g),h=c[i],p=void 0,(f={})["interpolation-punctuation"]=a,3===(f=e.tokenize(h,f)).length&&((p=[1,1]).push.apply(p,l(f[1],e.languages.javascript,"javascript")),f.splice.apply(f,p)),p=new e.Token("interpolation",f,r.alias,h),f=m.substring(g+i.length),h=[],s&&h.push(s),h.push(p),f&&(t(m=[f]),h.push.apply(h,m)),"string"==typeof y?(n.splice.apply(n,[o,1].concat(h)),o+=h.length-1):y.content=h)):(g=y.content,Array.isArray(g)?t(g):t([g]))}}(s),new e.Token(i,s,"language-"+i,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var u={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function c(e){return"string"==typeof e?e:Array.isArray(e)?e.map(c).join(""):c(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in u&&function t(n){for(var r=0,a=n.length;r<a;r++){var o,i,l,u=n[r];"string"!=typeof u&&(o=u.content,Array.isArray(o)?"template-string"===u.type?(u=o[1],3===o.length&&"string"!=typeof u&&"embedded-code"===u.type&&(i=c(u),u=u.alias,u=Array.isArray(u)?u[0]:u,l=e.languages[u])&&(o[1]=s(i,l,u))):t(o):"string"!=typeof o&&t([o]))}}(t.tokens)}))}(A),function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(A),function(e){var t=e.languages.javascript,n=/\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/.source,r="(@(?:arg|argument|param|property)\\s+(?:"+n+"\\s+)?)";e.languages.jsdoc=e.languages.extend("javadoclike",{parameter:{pattern:RegExp(r+/(?:(?!\s)[$\w\xA0-\uFFFF.])+(?=\s|$)/.source),lookbehind:!0,inside:{punctuation:/\./}}}),e.languages.insertBefore("jsdoc","keyword",{"optional-parameter":{pattern:RegExp(r+/\[(?:(?!\s)[$\w\xA0-\uFFFF.])+(?:=[^[\]]+)?\](?=\s|$)/.source),lookbehind:!0,inside:{parameter:{pattern:/(^\[)[$\w\xA0-\uFFFF\.]+/,lookbehind:!0,inside:{punctuation:/\./}},code:{pattern:/(=)[\s\S]*(?=\]$)/,lookbehind:!0,inside:t,alias:"language-javascript"},punctuation:/[=[\]]/}},"class-name":[{pattern:RegExp(/(@(?:augments|class|extends|interface|memberof!?|template|this|typedef)\s+(?:<TYPE>\s+)?)[A-Z]\w*(?:\.[A-Z]\w*)*/.source.replace(/<TYPE>/g,(function(){return n}))),lookbehind:!0,inside:{punctuation:/\./}},{pattern:RegExp("(@[a-z]+\\s+)"+n),lookbehind:!0,inside:{string:t.string,number:t.number,boolean:t.boolean,keyword:e.languages.typescript.keyword,operator:/=>|\.\.\.|[&|?:*]/,punctuation:/[.,;=<>{}()[\]]/}}],example:{pattern:/(@example\s+(?!\s))(?:[^@\s]|\s+(?!\s))+?(?=\s*(?:\*\s*)?(?:@\w|\*\/))/,lookbehind:!0,inside:{code:{pattern:/^([\t ]*(?:\*\s*)?)\S.*$/m,lookbehind:!0,inside:t,alias:"language-javascript"}}}}),e.languages.javadoclike.addSupport("javascript",e.languages.jsdoc)}(A),function(e){e.languages.flow=e.languages.extend("javascript",{}),e.languages.insertBefore("flow","keyword",{type:[{pattern:/\b(?:[Bb]oolean|Function|[Nn]umber|[Ss]tring|[Ss]ymbol|any|mixed|null|void)\b/,alias:"class-name"}]}),e.languages.flow["function-variable"].pattern=/(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=\s*(?:function\b|(?:\([^()]*\)(?:\s*:\s*\w+)?|(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/i,delete e.languages.flow.parameter,e.languages.insertBefore("flow","operator",{"flow-punctuation":{pattern:/\{\||\|\}/,alias:"punctuation"}}),Array.isArray(e.languages.flow.keyword)||(e.languages.flow.keyword=[e.languages.flow.keyword]),e.languages.flow.keyword.unshift({pattern:/(^|[^$]\b)(?:Class|declare|opaque|type)\b(?!\$)/,lookbehind:!0},{pattern:/(^|[^$]\B)\$(?:Diff|Enum|Exact|Keys|ObjMap|PropertyType|Record|Shape|Subtype|Supertype|await)\b(?!\$)/,lookbehind:!0})}(A),A.languages.n4js=A.languages.extend("javascript",{keyword:/\b(?:Array|any|boolean|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|module|new|null|number|package|private|protected|public|return|set|static|string|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/}),A.languages.insertBefore("n4js","constant",{annotation:{pattern:/@+\w+/,alias:"operator"}}),A.languages.n4jsd=A.languages.n4js,function(e){function t(e,t){return RegExp(e.replace(/<ID>/g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:<ID>(?:\s*,\s*(?:\*\s*as\s+<ID>|\{[^{}]*\}))?|\*\s*as\s+<ID>|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+<ID>)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?<ID>/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r<n.length;r++){var a=n[r],o=e.languages.javascript[a];a=(o="RegExp"===e.util.type(o)?e.languages.javascript[a]={pattern:o}:o).inside||{};(o.inside=a)["maybe-class-name"]=/^[A-Z][\s\S]*/}}(A),function(e){var t=e.util.clone(e.languages.javascript),n=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,r=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,a=/(?:\{<S>*\.{3}(?:[^{}]|<BRACES>)*\})/.source;function o(e,t){return e=e.replace(/<S>/g,(function(){return n})).replace(/<BRACES>/g,(function(){return r})).replace(/<SPREAD>/g,(function(){return a})),RegExp(e,t)}function i(t){for(var n=[],r=0;r<t.length;r++){var a=t[r],o=!1;"string"!=typeof a&&("tag"===a.type&&a.content[0]&&"tag"===a.content[0].type?"</"===a.content[0].content[0].content?0<n.length&&n[n.length-1].tagName===l(a.content[0].content[1])&&n.pop():"/>"!==a.content[a.content.length-1].content&&n.push({tagName:l(a.content[0].content[1]),openedBraces:0}):0<n.length&&"punctuation"===a.type&&"{"===a.content?n[n.length-1].openedBraces++:0<n.length&&0<n[n.length-1].openedBraces&&"punctuation"===a.type&&"}"===a.content?n[n.length-1].openedBraces--:o=!0),(o||"string"==typeof a)&&0<n.length&&0===n[n.length-1].openedBraces&&(o=l(a),r<t.length-1&&("string"==typeof t[r+1]||"plain-text"===t[r+1].type)&&(o+=l(t[r+1]),t.splice(r+1,1)),0<r&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(o=l(t[r-1])+o,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",o,null,o)),a.content&&"string"!=typeof a.content&&i(a.content)}}a=o(a).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=o(/<\/?(?:[\w.:-]+(?:<S>+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|<BRACES>))?|<SPREAD>))*<S>*\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:o(/<SPREAD>/.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:o(/=<BRACES>/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var l=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(l).join(""):""};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||i(e.tokens)}))}(A),function(e){var t=e.util.clone(e.languages.typescript);(t=(e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"],e.languages.tsx.tag)).pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+t.pattern.source+")",t.pattern.flags),t.lookbehind=!0}(A),A.languages.swift={comment:{pattern:/(^|[^\\:])(?:\/\/.*|\/\*(?:[^/*]|\/(?!\*)|\*(?!\/)|\/\*(?:[^*]|\*(?!\/))*\*\/)*\*\/)/,lookbehind:!0,greedy:!0},"string-literal":[{pattern:RegExp(/(^|[^"#])/.source+"(?:"+/"(?:\\(?:\((?:[^()]|\([^()]*\))*\)|\r\n|[^(])|[^\\\r\n"])*"/.source+"|"+/"""(?:\\(?:\((?:[^()]|\([^()]*\))*\)|[^(])|[^\\"]|"(?!""))*"""/.source+")"+/(?!["#])/.source),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\\($/,alias:"punctuation"},punctuation:/\\(?=[\r\n])/,string:/[\s\S]+/}},{pattern:RegExp(/(^|[^"#])(#+)/.source+"(?:"+/"(?:\\(?:#+\((?:[^()]|\([^()]*\))*\)|\r\n|[^#])|[^\\\r\n])*?"/.source+"|"+/"""(?:\\(?:#+\((?:[^()]|\([^()]*\))*\)|[^#])|[^\\])*?"""/.source+")\\2"),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\#+\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\#+\($/,alias:"punctuation"},string:/[\s\S]+/}}],directive:{pattern:RegExp(/#/.source+"(?:"+/(?:elseif|if)\b/.source+"(?:[ \t]*"+/(?:![ \t]*)?(?:\b\w+\b(?:[ \t]*\((?:[^()]|\([^()]*\))*\))?|\((?:[^()]|\([^()]*\))*\))(?:[ \t]*(?:&&|\|\|))?/.source+")+|"+/(?:else|endif)\b/.source+")"),alias:"property",inside:{"directive-name":/^#\w+/,boolean:/\b(?:false|true)\b/,number:/\b\d+(?:\.\d+)*\b/,operator:/!|&&|\|\||[<>]=?/,punctuation:/[(),]/}},literal:{pattern:/#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\b/,alias:"constant"},"other-directive":{pattern:/#\w+\b/,alias:"property"},attribute:{pattern:/@\w+/,alias:"atrule"},"function-definition":{pattern:/(\bfunc\s+)\w+/,lookbehind:!0,alias:"function"},label:{pattern:/\b(break|continue)\s+\w+|\b[a-zA-Z_]\w*(?=\s*:\s*(?:for|repeat|while)\b)/,lookbehind:!0,alias:"important"},keyword:/\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|isolated|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\b/,boolean:/\b(?:false|true)\b/,nil:{pattern:/\bnil\b/,alias:"constant"},"short-argument":/\$\d+\b/,omit:{pattern:/\b_\b/,alias:"keyword"},number:/\b(?:[\d_]+(?:\.[\de_]+)?|0x[a-f0-9_]+(?:\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,"class-name":/\b[A-Z](?:[A-Z_\d]*[a-z]\w*)?\b/,function:/\b[a-z_]\w*(?=\s*\()/i,constant:/\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,operator:/[-+*/%=!<>&|^~?]+|\.[.\-+*/%=!<>&|^~?]+/,punctuation:/[{}[\]();,.:\\]/},A.languages.swift["string-literal"].forEach((function(e){e.inside.interpolation.inside=A.languages.swift})),function(e){e.languages.kotlin=e.languages.extend("clike",{keyword:{pattern:/(^|[^.])\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\b/,lookbehind:!0},function:[{pattern:/(?:`[^\r\n`]+`|\b\w+)(?=\s*\()/,greedy:!0},{pattern:/(\.)(?:`[^\r\n`]+`|\w+)(?=\s*\{)/,lookbehind:!0,greedy:!0}],number:/\b(?:0[xX][\da-fA-F]+(?:_[\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?[fFL]?)\b/,operator:/\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/}),delete e.languages.kotlin["class-name"];var t={"interpolation-punctuation":{pattern:/^\$\{?|\}$/,alias:"punctuation"},expression:{pattern:/[\s\S]+/,inside:e.languages.kotlin}};e.languages.insertBefore("kotlin","string",{"string-literal":[{pattern:/"""(?:[^$]|\$(?:(?!\{)|\{[^{}]*\}))*?"""/,alias:"multiline",inside:{interpolation:{pattern:/\$(?:[a-z_]\w*|\{[^{}]*\})/i,inside:t},string:/[\s\S]+/}},{pattern:/"(?:[^"\\\r\n$]|\\.|\$(?:(?!\{)|\{[^{}]*\}))*"/,alias:"singleline",inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:[a-z_]\w*|\{[^{}]*\})/i,lookbehind:!0,inside:t},string:/[\s\S]+/}}],char:{pattern:/'(?:[^'\\\r\n]|\\(?:.|u[a-fA-F0-9]{0,4}))'/,greedy:!0}}),delete e.languages.kotlin.string,e.languages.insertBefore("kotlin","keyword",{annotation:{pattern:/\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,alias:"builtin"}}),e.languages.insertBefore("kotlin","function",{label:{pattern:/\b\w+@|@\w+\b/,alias:"symbol"}}),e.languages.kt=e.languages.kotlin,e.languages.kts=e.languages.kotlin}(A),A.languages.c=A.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),A.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),A.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},A.languages.c.string],char:A.languages.c.char,comment:A.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:A.languages.c}}}}),A.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete A.languages.c.boolean,A.languages.objectivec=A.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<<?=?|>>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete A.languages.objectivec["class-name"],A.languages.objc=A.languages.objectivec,A.languages.reason=A.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),A.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete A.languages.reason.function,function(e){for(var t=/\/\*(?:[^*/]|\*(?!\/)|\/(?!\*)|<self>)*\*\//.source,n=0;n<2;n++)t=t.replace(/<self>/g,(function(){return t}));t=t.replace(/<self>/g,(function(){return/[^\s\S]/.source})),e.languages.rust={comment:[{pattern:RegExp(/(^|[^\\])/.source+t),lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/b?"(?:\\[\s\S]|[^\\"])*"|b?r(#*)"(?:[^"]|"(?!\1))*"\1/,greedy:!0},char:{pattern:/b?'(?:\\(?:x[0-7][\da-fA-F]|u\{(?:[\da-fA-F]_*){1,6}\}|.)|[^\\\r\n\t'])'/,greedy:!0},attribute:{pattern:/#!?\[(?:[^\[\]"]|"(?:\\[\s\S]|[^\\"])*")*\]/,greedy:!0,alias:"attr-name",inside:{string:null}},"closure-params":{pattern:/([=(,:]\s*|\bmove\s*)\|[^|]*\||\|[^|]*\|(?=\s*(?:\{|->))/,lookbehind:!0,greedy:!0,inside:{"closure-punctuation":{pattern:/^\||\|$/,alias:"punctuation"},rest:null}},"lifetime-annotation":{pattern:/'\w+/,alias:"symbol"},"fragment-specifier":{pattern:/(\$\w+:)[a-z]+/,lookbehind:!0,alias:"punctuation"},variable:/\$\w+/,"function-definition":{pattern:/(\bfn\s+)\w+/,lookbehind:!0,alias:"function"},"type-definition":{pattern:/(\b(?:enum|struct|trait|type|union)\s+)\w+/,lookbehind:!0,alias:"class-name"},"module-declaration":[{pattern:/(\b(?:crate|mod)\s+)[a-z][a-z_\d]*/,lookbehind:!0,alias:"namespace"},{pattern:/(\b(?:crate|self|super)\s*)::\s*[a-z][a-z_\d]*\b(?:\s*::(?:\s*[a-z][a-z_\d]*\s*::)*)?/,lookbehind:!0,alias:"namespace",inside:{punctuation:/::/}}],keyword:[/\b(?:Self|abstract|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|final|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|override|priv|pub|ref|return|self|static|struct|super|trait|try|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/,/\b(?:bool|char|f(?:32|64)|[ui](?:8|16|32|64|128|size)|str)\b/],function:/\b[a-z_]\w*(?=\s*(?:::\s*<|\())/,macro:{pattern:/\b\w+!/,alias:"property"},constant:/\b[A-Z_][A-Z_\d]+\b/,"class-name":/\b[A-Z]\w*\b/,namespace:{pattern:/(?:\b[a-z][a-z_\d]*\s*::\s*)*\b[a-z][a-z_\d]*\s*::(?!\s*<)/,inside:{punctuation:/::/}},number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)(?:_?(?:f32|f64|[iu](?:8|16|32|64|size)?))?\b/,boolean:/\b(?:false|true)\b/,punctuation:/->|\.\.=|\.{1,3}|::|[{}[\];(),:]/,operator:/[-+*\/%!^]=?|=[=>]?|&[&=]?|\|[|=]?|<<?=?|>>?=?|[@?]/},e.languages.rust["closure-params"].inside.rest=e.languages.rust,e.languages.rust.attribute.inside.string=e.languages.rust.string}(A),A.languages.go=A.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),A.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete A.languages.go["class-name"],function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!<keyword>)\w+(?:\s*\.\s*\w+)*\b/.source.replace(/<keyword>/g,(function(){return t.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!<keyword>)\w+/.source.replace(/<keyword>/g,(function(){return t.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/<mod-name>(?:\s*:\s*<mod-name>)?|:\s*<mod-name>/.source.replace(/<mod-name>/g,(function(){return n}))+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(A),A.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},A.languages.python["string-interpolation"].inside.interpolation.inside.rest=A.languages.python,A.languages.py=A.languages.python;((e,t)=>{for(var n in t)f(e,n,{get:t[n],enumerable:!0})})({},{dracula:()=>T,duotoneDark:()=>N,duotoneLight:()=>O,github:()=>L,jettwaveDark:()=>V,jettwaveLight:()=>W,nightOwl:()=>P,nightOwlLight:()=>j,oceanicNext:()=>D,okaidia:()=>F,oneDark:()=>q,oneLight:()=>G,palenight:()=>M,shadesOfPurple:()=>z,synthwave84:()=>B,ultramin:()=>$,vsDark:()=>U,vsLight:()=>H});var T={plain:{color:"#F8F8F2",backgroundColor:"#282A36"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},N={plain:{backgroundColor:"#2a2734",color:"#9a86fd"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#6c6783"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#e09142"}},{types:["property","function"],style:{color:"#9a86fd"}},{types:["tag-id","selector","atrule-id"],style:{color:"#eeebff"}},{types:["attr-name"],style:{color:"#c4b9fe"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule","placeholder","variable"],style:{color:"#ffcc99"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#c4b9fe"}}]},O={plain:{backgroundColor:"#faf8f5",color:"#728fcb"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#b6ad9a"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#063289"}},{types:["property","function"],style:{color:"#b29762"}},{types:["tag-id","selector","atrule-id"],style:{color:"#2d2006"}},{types:["attr-name"],style:{color:"#896724"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule"],style:{color:"#728fcb"}},{types:["placeholder","variable"],style:{color:"#93abdc"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#896724"}}]},L={plain:{color:"#393A34",backgroundColor:"#f6f8fa"},styles:[{types:["comment","prolog","doctype","cdata"],style:{color:"#999988",fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}},{types:["string","attr-value"],style:{color:"#e3116c"}},{types:["punctuation","operator"],style:{color:"#393A34"}},{types:["entity","url","symbol","number","boolean","variable","constant","property","regex","inserted"],style:{color:"#36acaa"}},{types:["atrule","keyword","attr-name","selector"],style:{color:"#00a4db"}},{types:["function","deleted","tag"],style:{color:"#d73a49"}},{types:["function-variable"],style:{color:"#6f42c1"}},{types:["tag","selector","keyword"],style:{color:"#00009f"}}]},P={plain:{color:"#d6deeb",backgroundColor:"#011627"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)",fontStyle:"italic"}},{types:["inserted","attr-name"],style:{color:"rgb(173, 219, 103)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(99, 119, 119)",fontStyle:"italic"}},{types:["string","url"],style:{color:"rgb(173, 219, 103)"}},{types:["variable"],style:{color:"rgb(214, 222, 235)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation"],style:{color:"rgb(199, 146, 234)"}},{types:["selector","doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["class-name"],style:{color:"rgb(255, 203, 139)"}},{types:["tag","operator","keyword"],style:{color:"rgb(127, 219, 202)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["property"],style:{color:"rgb(128, 203, 196)"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}}]},j={plain:{color:"#403f53",backgroundColor:"#FBFBFB"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)",fontStyle:"italic"}},{types:["inserted","attr-name"],style:{color:"rgb(72, 118, 214)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(152, 159, 177)",fontStyle:"italic"}},{types:["string","builtin","char","constant","url"],style:{color:"rgb(72, 118, 214)"}},{types:["variable"],style:{color:"rgb(201, 103, 101)"}},{types:["number"],style:{color:"rgb(170, 9, 130)"}},{types:["punctuation"],style:{color:"rgb(153, 76, 195)"}},{types:["function","selector","doctype"],style:{color:"rgb(153, 76, 195)",fontStyle:"italic"}},{types:["class-name"],style:{color:"rgb(17, 17, 17)"}},{types:["tag"],style:{color:"rgb(153, 76, 195)"}},{types:["operator","property","keyword","namespace"],style:{color:"rgb(12, 150, 155)"}},{types:["boolean"],style:{color:"rgb(188, 84, 84)"}}]},R="#c5a5c5",I="#8dc891",D={plain:{backgroundColor:"#282c34",color:"#ffffff"},styles:[{types:["attr-name"],style:{color:R}},{types:["attr-value"],style:{color:I}},{types:["comment","block-comment","prolog","doctype","cdata","shebang"],style:{color:"#999999"}},{types:["property","number","function-name","constant","symbol","deleted"],style:{color:"#5a9bcf"}},{types:["boolean"],style:{color:"#ff8b50"}},{types:["tag"],style:{color:"#fc929e"}},{types:["string"],style:{color:I}},{types:["punctuation"],style:{color:I}},{types:["selector","char","builtin","inserted"],style:{color:"#D8DEE9"}},{types:["function"],style:{color:"#79b6f2"}},{types:["operator","entity","url","variable"],style:{color:"#d7deea"}},{types:["keyword"],style:{color:R}},{types:["atrule","class-name"],style:{color:"#FAC863"}},{types:["important"],style:{fontWeight:"400"}},{types:["bold"],style:{fontWeight:"bold"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}}]},F={plain:{color:"#f8f8f2",backgroundColor:"#272822"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"#f92672",fontStyle:"italic"}},{types:["inserted"],style:{color:"rgb(173, 219, 103)",fontStyle:"italic"}},{types:["comment"],style:{color:"#8292a2",fontStyle:"italic"}},{types:["string","url"],style:{color:"#a6e22e"}},{types:["variable"],style:{color:"#f8f8f2"}},{types:["number"],style:{color:"#ae81ff"}},{types:["builtin","char","constant","function","class-name"],style:{color:"#e6db74"}},{types:["punctuation"],style:{color:"#f8f8f2"}},{types:["selector","doctype"],style:{color:"#a6e22e",fontStyle:"italic"}},{types:["tag","operator","keyword"],style:{color:"#66d9ef"}},{types:["boolean"],style:{color:"#ae81ff"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)",opacity:.7}},{types:["tag","property"],style:{color:"#f92672"}},{types:["attr-name"],style:{color:"#a6e22e !important"}},{types:["doctype"],style:{color:"#8292a2"}},{types:["rule"],style:{color:"#e6db74"}}]},M={plain:{color:"#bfc7d5",backgroundColor:"#292d3e"},styles:[{types:["comment"],style:{color:"rgb(105, 112, 152)",fontStyle:"italic"}},{types:["string","inserted"],style:{color:"rgb(195, 232, 141)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation","selector"],style:{color:"rgb(199, 146, 234)"}},{types:["variable"],style:{color:"rgb(191, 199, 213)"}},{types:["class-name","attr-name"],style:{color:"rgb(255, 203, 107)"}},{types:["tag","deleted"],style:{color:"rgb(255, 85, 114)"}},{types:["operator"],style:{color:"rgb(137, 221, 255)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["keyword"],style:{fontStyle:"italic"}},{types:["doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}},{types:["url"],style:{color:"rgb(221, 221, 221)"}}]},z={plain:{color:"#9EFEFF",backgroundColor:"#2D2A55"},styles:[{types:["changed"],style:{color:"rgb(255, 238, 128)"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)"}},{types:["inserted"],style:{color:"rgb(173, 219, 103)"}},{types:["comment"],style:{color:"rgb(179, 98, 255)",fontStyle:"italic"}},{types:["punctuation"],style:{color:"rgb(255, 255, 255)"}},{types:["constant"],style:{color:"rgb(255, 98, 140)"}},{types:["string","url"],style:{color:"rgb(165, 255, 144)"}},{types:["variable"],style:{color:"rgb(255, 238, 128)"}},{types:["number","boolean"],style:{color:"rgb(255, 98, 140)"}},{types:["attr-name"],style:{color:"rgb(255, 180, 84)"}},{types:["keyword","operator","property","namespace","tag","selector","doctype"],style:{color:"rgb(255, 157, 0)"}},{types:["builtin","char","constant","function","class-name"],style:{color:"rgb(250, 208, 0)"}}]},B={plain:{backgroundColor:"linear-gradient(to bottom, #2a2139 75%, #34294f)",backgroundImage:"#34294f",color:"#f92aad",textShadow:"0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"},styles:[{types:["comment","block-comment","prolog","doctype","cdata"],style:{color:"#495495",fontStyle:"italic"}},{types:["punctuation"],style:{color:"#ccc"}},{types:["tag","attr-name","namespace","number","unit","hexcode","deleted"],style:{color:"#e2777a"}},{types:["property","selector"],style:{color:"#72f1b8",textShadow:"0 0 2px #100c0f, 0 0 10px #257c5575, 0 0 35px #21272475"}},{types:["function-name"],style:{color:"#6196cc"}},{types:["boolean","selector-id","function"],style:{color:"#fdfdfd",textShadow:"0 0 2px #001716, 0 0 3px #03edf975, 0 0 5px #03edf975, 0 0 8px #03edf975"}},{types:["class-name","maybe-class-name","builtin"],style:{color:"#fff5f6",textShadow:"0 0 2px #000, 0 0 10px #fc1f2c75, 0 0 5px #fc1f2c75, 0 0 25px #fc1f2c75"}},{types:["constant","symbol"],style:{color:"#f92aad",textShadow:"0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"}},{types:["important","atrule","keyword","selector-class"],style:{color:"#f4eee4",textShadow:"0 0 2px #393a33, 0 0 8px #f39f0575, 0 0 2px #f39f0575"}},{types:["string","char","attr-value","regex","variable"],style:{color:"#f87c32"}},{types:["parameter"],style:{fontStyle:"italic"}},{types:["entity","url"],style:{color:"#67cdcc"}},{types:["operator"],style:{color:"ffffffee"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["entity"],style:{cursor:"help"}},{types:["inserted"],style:{color:"green"}}]},$={plain:{color:"#282a2e",backgroundColor:"#ffffff"},styles:[{types:["comment"],style:{color:"rgb(197, 200, 198)"}},{types:["string","number","builtin","variable"],style:{color:"rgb(150, 152, 150)"}},{types:["class-name","function","tag","attr-name"],style:{color:"rgb(40, 42, 46)"}}]},U={plain:{color:"#9CDCFE",backgroundColor:"#1E1E1E"},styles:[{types:["prolog"],style:{color:"rgb(0, 0, 128)"}},{types:["comment"],style:{color:"rgb(106, 153, 85)"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"rgb(86, 156, 214)"}},{types:["number","inserted"],style:{color:"rgb(181, 206, 168)"}},{types:["constant"],style:{color:"rgb(100, 102, 149)"}},{types:["attr-name","variable"],style:{color:"rgb(156, 220, 254)"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"rgb(206, 145, 120)"}},{types:["selector"],style:{color:"rgb(215, 186, 125)"}},{types:["tag"],style:{color:"rgb(78, 201, 176)"}},{types:["tag"],languages:["markup"],style:{color:"rgb(86, 156, 214)"}},{types:["punctuation","operator"],style:{color:"rgb(212, 212, 212)"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"rgb(220, 220, 170)"}},{types:["class-name"],style:{color:"rgb(78, 201, 176)"}},{types:["char"],style:{color:"rgb(209, 105, 105)"}}]},H={plain:{color:"#000000",backgroundColor:"#ffffff"},styles:[{types:["comment"],style:{color:"rgb(0, 128, 0)"}},{types:["builtin"],style:{color:"rgb(0, 112, 193)"}},{types:["number","variable","inserted"],style:{color:"rgb(9, 134, 88)"}},{types:["operator"],style:{color:"rgb(0, 0, 0)"}},{types:["constant","char"],style:{color:"rgb(129, 31, 63)"}},{types:["tag"],style:{color:"rgb(128, 0, 0)"}},{types:["attr-name"],style:{color:"rgb(255, 0, 0)"}},{types:["deleted","string"],style:{color:"rgb(163, 21, 21)"}},{types:["changed","punctuation"],style:{color:"rgb(4, 81, 165)"}},{types:["function","keyword"],style:{color:"rgb(0, 0, 255)"}},{types:["class-name"],style:{color:"rgb(38, 127, 153)"}}]},V={plain:{color:"#f8fafc",backgroundColor:"#011627"},styles:[{types:["prolog"],style:{color:"#000080"}},{types:["comment"],style:{color:"#6A9955"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"#569CD6"}},{types:["number","inserted"],style:{color:"#B5CEA8"}},{types:["constant"],style:{color:"#f8fafc"}},{types:["attr-name","variable"],style:{color:"#9CDCFE"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"#cbd5e1"}},{types:["selector"],style:{color:"#D7BA7D"}},{types:["tag"],style:{color:"#0ea5e9"}},{types:["tag"],languages:["markup"],style:{color:"#0ea5e9"}},{types:["punctuation","operator"],style:{color:"#D4D4D4"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"#7dd3fc"}},{types:["class-name"],style:{color:"#0ea5e9"}},{types:["char"],style:{color:"#D16969"}}]},W={plain:{color:"#0f172a",backgroundColor:"#f1f5f9"},styles:[{types:["prolog"],style:{color:"#000080"}},{types:["comment"],style:{color:"#6A9955"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"#0c4a6e"}},{types:["number","inserted"],style:{color:"#B5CEA8"}},{types:["constant"],style:{color:"#0f172a"}},{types:["attr-name","variable"],style:{color:"#0c4a6e"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"#64748b"}},{types:["selector"],style:{color:"#D7BA7D"}},{types:["tag"],style:{color:"#0ea5e9"}},{types:["tag"],languages:["markup"],style:{color:"#0ea5e9"}},{types:["punctuation","operator"],style:{color:"#475569"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"#0e7490"}},{types:["class-name"],style:{color:"#0ea5e9"}},{types:["char"],style:{color:"#D16969"}}]},q={plain:{backgroundColor:"hsl(220, 13%, 18%)",color:"hsl(220, 14%, 71%)",textShadow:"0 1px rgba(0, 0, 0, 0.3)"},styles:[{types:["comment","prolog","cdata"],style:{color:"hsl(220, 10%, 40%)"}},{types:["doctype","punctuation","entity"],style:{color:"hsl(220, 14%, 71%)"}},{types:["attr-name","class-name","maybe-class-name","boolean","constant","number","atrule"],style:{color:"hsl(29, 54%, 61%)"}},{types:["keyword"],style:{color:"hsl(286, 60%, 67%)"}},{types:["property","tag","symbol","deleted","important"],style:{color:"hsl(355, 65%, 65%)"}},{types:["selector","string","char","builtin","inserted","regex","attr-value"],style:{color:"hsl(95, 38%, 62%)"}},{types:["variable","operator","function"],style:{color:"hsl(207, 82%, 66%)"}},{types:["url"],style:{color:"hsl(187, 47%, 55%)"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"hsl(220, 14%, 71%)"}}]},G={plain:{backgroundColor:"hsl(230, 1%, 98%)",color:"hsl(230, 8%, 24%)"},styles:[{types:["comment","prolog","cdata"],style:{color:"hsl(230, 4%, 64%)"}},{types:["doctype","punctuation","entity"],style:{color:"hsl(230, 8%, 24%)"}},{types:["attr-name","class-name","boolean","constant","number","atrule"],style:{color:"hsl(35, 99%, 36%)"}},{types:["keyword"],style:{color:"hsl(301, 63%, 40%)"}},{types:["property","tag","symbol","deleted","important"],style:{color:"hsl(5, 74%, 59%)"}},{types:["selector","string","char","builtin","inserted","regex","attr-value","punctuation"],style:{color:"hsl(119, 34%, 47%)"}},{types:["variable","operator","function"],style:{color:"hsl(221, 87%, 60%)"}},{types:["url"],style:{color:"hsl(198, 99%, 37%)"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"hsl(230, 8%, 24%)"}}]},Y=(e,t)=>{const{plain:n}=e,r=e.styles.reduce(((e,n)=>{const{languages:r,style:a}=n;return r&&!r.includes(t)||n.types.forEach((t=>{const n=S(S({},e[t]),a);e[t]=n})),e}),{});return r.root=n,r.plain=E(S({},n),{backgroundColor:void 0}),r},K=/\r\n|\r|\n/,Q=e=>{0===e.length?e.push({types:["plain"],content:"\n",empty:!0}):1===e.length&&""===e[0].content&&(e[0].content="\n",e[0].empty=!0)},Z=(e,t)=>{const n=e.length;return n>0&&e[n-1]===t?e:e.concat(t)},X=e=>{const t=[[]],n=[e],r=[0],a=[e.length];let o=0,i=0,l=[];const s=[l];for(;i>-1;){for(;(o=r[i]++)<a[i];){let e,u=t[i];const c=n[i][o];if("string"==typeof c?(u=i>0?u:["plain"],e=c):(u=Z(u,c.type),c.alias&&(u=Z(u,c.alias)),e=c.content),"string"!=typeof e){i++,t.push(u),n.push(e),r.push(0),a.push(e.length);continue}const d=e.split(K),p=d.length;l.push({types:u,content:d[0]});for(let t=1;t<p;t++)Q(l),s.push(l=[]),l.push({types:u,content:d[t]})}i--,t.pop(),n.pop(),r.pop(),a.pop()}return Q(l),s},J=({children:e,language:t,code:n,theme:r,prism:a})=>{const o=t.toLowerCase(),i=((e,t)=>{const[n,r]=(0,c.useState)(Y(t,e)),a=(0,c.useRef)(),o=(0,c.useRef)();return(0,c.useEffect)((()=>{t===a.current&&e===o.current||(a.current=t,o.current=e,r(Y(t,e)))}),[e,t]),n})(o,r),l=(e=>(0,c.useCallback)((t=>{var n=t,{className:r,style:a,line:o}=n,i=_(n,["className","style","line"]);const l=E(S({},i),{className:(0,d.A)("token-line",r)});return"object"==typeof e&&"plain"in e&&(l.style=e.plain),"object"==typeof a&&(l.style=S(S({},l.style||{}),a)),l}),[e]))(i),s=(e=>{const t=(0,c.useCallback)((({types:t,empty:n})=>{if(null!=e)return 1===t.length&&"plain"===t[0]?null!=n?{display:"inline-block"}:void 0:1===t.length&&null!=n?e[t[0]]:Object.assign(null!=n?{display:"inline-block"}:{},...t.map((t=>e[t])))}),[e]);return(0,c.useCallback)((e=>{var n=e,{token:r,className:a,style:o}=n,i=_(n,["token","className","style"]);const l=E(S({},i),{className:(0,d.A)("token",...r.types,a),children:r.content,style:t(r)});return null!=o&&(l.style=S(S({},l.style||{}),o)),l}),[t])})(i),u=(({prism:e,code:t,grammar:n,language:r})=>{const a=(0,c.useRef)(e);return(0,c.useMemo)((()=>{if(null==n)return X([t]);const e={code:t,grammar:n,language:r,tokens:[]};return a.current.hooks.run("before-tokenize",e),e.tokens=a.current.tokenize(t,n),a.current.hooks.run("after-tokenize",e),X(e.tokens)}),[t,n,r])})({prism:a,language:o,code:n,grammar:a.languages[o]});return e({tokens:u,className:`prism-code language-${o}`,style:null!=i?i.root:{},getLineProps:l,getTokenProps:s})},ee=e=>(0,c.createElement)(J,E(S({},e),{prism:e.prism||A,theme:e.theme||U,code:e.code,language:e.language}))},5385:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=!0,a="Invariant failed";function o(e,t){if(!e){if(r)throw new Error(a);var n="function"==typeof t?t():t,o=n?"".concat(a,": ").concat(n):a;throw new Error(o)}}},2654:e=>{"use strict";e.exports={}},4054:e=>{"use strict";e.exports=JSON.parse('{"/-e5f":{"__comp":"1df93b7f","__context":{"plugin":"a7456010"},"config":"5e9f5e1a"},"/-caf":{"__comp":"5e95c892","__context":{"plugin":"aba21aa0"}},"/-37e":{"__comp":"a7bd4aaa","__props":"22dd74f7"},"/-ff8":{"__comp":"a94703ab"},"/build/client-sdks/client-ts-sdk-da5":{"__comp":"17896441","content":"d84133a6"},"/build/protocol-sdks/protocol-rs-sdk-60b":{"__comp":"17896441","content":"2b77e7d3"},"/build/protocol-sdks/protocol-sdk-0a1":{"__comp":"17896441","content":"08c23959"},"/build/publish-app-cd8":{"__comp":"17896441","content":"964ce0ca"},"/build/quickstart-714":{"__comp":"17896441","content":"77c0519e"},"/contribute/bounty-program-6a5":{"__comp":"17896441","content":"66902dc0"},"/contribute/github-50d":{"__comp":"17896441","content":"5bb4bac1"},"/contribute/hackathons-ff1":{"__comp":"17896441","content":"90e69b51"},"/explore/developers-quickstart/admin-dashboard-dbb":{"__comp":"17896441","content":"27468b3d"},"/explore/developers-quickstart/example-app-606":{"__comp":"17896441","content":"910b5ce4"},"/explore/developers-quickstart/getting-started-f59":{"__comp":"17896441","content":"70d114dd"},"/explore/intro-d52":{"__comp":"17896441","content":"42b3b6e0"},"/learn/advanced-concepts/encryption-0df":{"__comp":"17896441","content":"64bee9bd"},"/learn/advanced-concepts/specialized-nodes-040":{"__comp":"17896441","content":"0b38cd53"},"/learn/architecture-ca0":{"__comp":"17896441","content":"23ed0991"},"/learn/core-concepts/applications-d8b":{"__comp":"17896441","content":"9471ce52"},"/learn/core-concepts/contexts-f69":{"__comp":"17896441","content":"f582a9aa"},"/learn/core-concepts/identity-a1b":{"__comp":"17896441","content":"bf6ec8e5"},"/learn/core-concepts/node/admin-client-api-2d7":{"__comp":"17896441","content":"190ec3a6"},"/learn/core-concepts/node/client-node-027":{"__comp":"17896441","content":"73ad1aec"},"/learn/core-concepts/node/network-4de":{"__comp":"17896441","content":"962e3ea7"},"/learn/core-concepts/node/runtime-ef7":{"__comp":"17896441","content":"5b892390"},"/learn/core-concepts/node/server-688":{"__comp":"17896441","content":"e6fe25da"},"/learn/core-concepts/node/storage-c84":{"__comp":"17896441","content":"514a65da"},"/learn/terminology-7da":{"__comp":"17896441","content":"799afb5f"},"/resources/community-and-support-26f":{"__comp":"17896441","content":"47adee10"},"/resources/learning-b1a":{"__comp":"17896441","content":"37e9fbd6"}}')}},e=>{e.O(0,[869],(()=>{return t=9947,e(e.s=t);var t}));e.O()}]); \ No newline at end of file diff --git a/assets/js/main.e9ab1c16.js.LICENSE.txt b/assets/js/main.e9ab1c16.js.LICENSE.txt new file mode 100644 index 00000000..91dc8949 --- /dev/null +++ b/assets/js/main.e9ab1c16.js.LICENSE.txt @@ -0,0 +1,64 @@ +/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress + * @license MIT */ + +/*! Bundled license information: + +prismjs/prism.js: + (** + * Prism: Lightweight, robust, elegant syntax highlighting + * + * @license MIT <https://opensource.org/licenses/MIT> + * @author Lea Verou <https://lea.verou.me> + * @namespace + * @public + *) +*/ + +/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * scheduler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** @license React v16.13.1 + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/assets/js/runtime~main.e83fd2cc.js b/assets/js/runtime~main.e83fd2cc.js new file mode 100644 index 00000000..ed13edc1 --- /dev/null +++ b/assets/js/runtime~main.e83fd2cc.js @@ -0,0 +1 @@ +(()=>{"use strict";var e,a,t,r,d,o={},c={};function b(e){var a=c[e];if(void 0!==a)return a.exports;var t=c[e]={exports:{}};return o[e].call(t.exports,t,t.exports,b),t.exports}b.m=o,e=[],b.O=(a,t,r,d)=>{if(!t){var o=1/0;for(i=0;i<e.length;i++){t=e[i][0],r=e[i][1],d=e[i][2];for(var c=!0,f=0;f<t.length;f++)(!1&d||o>=d)&&Object.keys(b.O).every((e=>b.O[e](t[f])))?t.splice(f--,1):(c=!1,d<o&&(o=d));if(c){e.splice(i--,1);var n=r();void 0!==n&&(a=n)}}return a}d=d||0;for(var i=e.length;i>0&&e[i-1][2]>d;i--)e[i]=e[i-1];e[i]=[t,r,d]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var d=Object.create(null);b.r(d);var o={};a=a||[null,t({}),t([]),t(t)];for(var c=2&r&&e;"object"==typeof c&&!~a.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((a=>o[a]=()=>e[a]));return o.default=()=>e,b.d(d,o),d},b.d=(e,a)=>{for(var t in a)b.o(a,t)&&!b.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:a[t]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,t)=>(b.f[t](e,a),a)),[])),b.u=e=>"assets/js/"+({12:"70d114dd",48:"a94703ab",74:"64bee9bd",77:"962e3ea7",98:"a7bd4aaa",106:"964ce0ca",162:"23ed0991",182:"514a65da",193:"37e9fbd6",226:"f582a9aa",229:"9471ce52",235:"27468b3d",262:"90e69b51",331:"5bb4bac1",391:"42b3b6e0",401:"17896441",420:"73ad1aec",567:"22dd74f7",583:"1df93b7f",607:"bf6ec8e5",616:"a7456010",620:"799afb5f",636:"77c0519e",647:"5e95c892",667:"e6fe25da",673:"0b38cd53",707:"190ec3a6",725:"5b892390",742:"aba21aa0",802:"2b77e7d3",806:"47adee10",811:"66902dc0",822:"08c23959",965:"d84133a6",968:"910b5ce4"}[e]||e)+"."+{12:"a19536dd",48:"0743a859",70:"d30a02cb",74:"249dfa36",77:"0848e97b",98:"9b88e1ff",106:"2a2af6f0",162:"f4e84401",182:"04d63d3f",193:"299cdd55",226:"776cfdfb",229:"efa3a852",235:"3c8a6a17",262:"9508d61e",331:"04d46c8e",391:"d4c4c11e",401:"2424f4db",420:"90fb7c8e",567:"8937fd88",583:"5f1302ba",604:"7785a151",607:"eeef95cf",616:"d714be23",620:"98b299e2",636:"5d4c0744",647:"8725aa23",667:"fce6186c",673:"e27d5979",707:"4fcc4f54",725:"408a97df",742:"eb7bf6f2",802:"b44d5f9e",806:"1a8fa6c9",811:"44764588",822:"aab582d6",965:"7b03dc69",968:"a516eb9e"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),r={},d="docs:",b.l=(e,a,t,o)=>{if(r[e])r[e].push(a);else{var c,f;if(void 0!==t)for(var n=document.getElementsByTagName("script"),i=0;i<n.length;i++){var u=n[i];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")==d+t){c=u;break}}c||(f=!0,(c=document.createElement("script")).charset="utf-8",c.timeout=120,b.nc&&c.setAttribute("nonce",b.nc),c.setAttribute("data-webpack",d+t),c.src=e),r[e]=[a];var l=(a,t)=>{c.onerror=c.onload=null,clearTimeout(s);var d=r[e];if(delete r[e],c.parentNode&&c.parentNode.removeChild(c),d&&d.forEach((e=>e(t))),a)return a(t)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=l.bind(null,c.onerror),c.onload=l.bind(null,c.onload),f&&document.head.appendChild(c)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/",b.gca=function(e){return e={17896441:"401","70d114dd":"12",a94703ab:"48","64bee9bd":"74","962e3ea7":"77",a7bd4aaa:"98","964ce0ca":"106","23ed0991":"162","514a65da":"182","37e9fbd6":"193",f582a9aa:"226","9471ce52":"229","27468b3d":"235","90e69b51":"262","5bb4bac1":"331","42b3b6e0":"391","73ad1aec":"420","22dd74f7":"567","1df93b7f":"583",bf6ec8e5:"607",a7456010:"616","799afb5f":"620","77c0519e":"636","5e95c892":"647",e6fe25da:"667","0b38cd53":"673","190ec3a6":"707","5b892390":"725",aba21aa0:"742","2b77e7d3":"802","47adee10":"806","66902dc0":"811","08c23959":"822",d84133a6:"965","910b5ce4":"968"}[e]||e,b.p+b.u(e)},(()=>{var e={354:0,869:0};b.f.j=(a,t)=>{var r=b.o(e,a)?e[a]:void 0;if(0!==r)if(r)t.push(r[2]);else if(/^(354|869)$/.test(a))e[a]=0;else{var d=new Promise(((t,d)=>r=e[a]=[t,d]));t.push(r[2]=d);var o=b.p+b.u(a),c=new Error;b.l(o,(t=>{if(b.o(e,a)&&(0!==(r=e[a])&&(e[a]=void 0),r)){var d=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;c.message="Loading chunk "+a+" failed.\n("+d+": "+o+")",c.name="ChunkLoadError",c.type=d,c.request=o,r[1](c)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,t)=>{var r,d,o=t[0],c=t[1],f=t[2],n=0;if(o.some((a=>0!==e[a]))){for(r in c)b.o(c,r)&&(b.m[r]=c[r]);if(f)var i=f(b)}for(a&&a(t);n<o.length;n++)d=o[n],b.o(e,d)&&e[d]&&e[d][0](),e[d]=0;return b.O(i)},t=self.webpackChunkdocs=self.webpackChunkdocs||[];t.forEach(a.bind(null,0)),t.push=a.bind(null,t.push.bind(t))})()})(); \ No newline at end of file diff --git a/build/client-sdks/client-ts-sdk/index.html b/build/client-sdks/client-ts-sdk/index.html new file mode 100644 index 00000000..e210675f --- /dev/null +++ b/build/client-sdks/client-ts-sdk/index.html @@ -0,0 +1,35 @@ +<!doctype html> +<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-build/client-sdks/client-ts-sdk" data-has-hydrated="false"> +<head> +<meta charset="UTF-8"> +<meta name="generator" content="Docusaurus v3.4.0"> +<title data-rh="true">TypeScript Client SDK | Calimero 2.0 + + + + +

TypeScript Client SDK

Getting Started with Calimero SDK for Typescript​

+

Our TypeScript Client SDK is a powerful tool designed to simplify the process of interacting with decentralized peer-to-peer applications installed on the node. It serves as an efficient conduit for communication between the client and the node’s server. This SDK is particularly beneficial for developers as it abstracts the complexities of server communication, allowing them to concentrate on the core application logic.

+

The SDK is built with the modern features of TypeScript, a language that is gaining popularity for its static typing and advanced capabilities. By using our SDK, developers can write applications in TypeScript, and the SDK takes care of the rest. It handles all the interactions with the server, making the development process more streamlined and efficient.

+

This not only enhances the overall development experience but also accelerates the deployment of innovative decentralized applications on our network. In essence, our TypeScript SDK is a comprehensive solution that makes building and interacting with decentralized applications a breeze. It’s all about making the development process more enjoyable and productive for developers worldwide.

+

Components​

+

Our TypeScript Client SDK is composed of two main components: RpcClient and SubscriptionsClient. Each of these components has an interface and a class that implements the interface. The RpcClient interface is implemented by the JsonRpcClient class, and the SubscriptionsClient interface is implemented by the WsSubscriptionsClient class.

+

These components are designed with flexibility and future growth in mind. While currently there is only one implementation of each interface, we anticipate multiple implementations in the future. This is because our server will have multiple implementations of both the Rpc server and the Subscriptions server. This design allows us to easily add new classes that implement these interfaces as our server capabilities expand.

+

The RpcClient and SubscriptionsClient interfaces define a standard set of methods that all implementations must provide. This ensures consistency across different implementations, making it easier for developers to switch between different Rpc and Subscriptions servers as needed.

+

By designing our SDK in this way, we ensure that it remains flexible, scalable, and easy to use, regardless of how our server implementations evolve in the future.

+

RpcClient interface​

+
export interface RpcClient {
query<Args, Output>(
params: RpcQueryParams<Args>,
config?: RequestConfig
): Promise<RpcQueryResponse<Output>>;
mutate<Args, Output>(
params: RpcMutateParams<Args>,
config?: RequestConfig
): Promise<RpcMutateResponse<Output>>;
}

export interface RequestConfig {
timeout?: number;
}

export interface RpcQueryParams<Args> {
applicationId: ApplicationId;
method: string;
argsJson: Args;
}

export interface RpcQueryResponse<Output> {
output?: Output;
}

export interface RpcMutateParams<Args> {
applicationId: ApplicationId;
method: string;
argsJson: Args;
}

export interface RpcMutateResponse<Output> {
output?: Output;
}
+

SubscriptionsClient​

+
export interface SubscriptionsClient {
connect(connectionId?: string): void;
disconnect(connectionId?: string): void;
subscribe(applicationIds: string[], connectionId?: string): void;
unsubscribe(applicationIds: string[], connectionId?: string): void;
addCallback(
callback: (event: NodeEvent) => void,
connectionId?: string
): void;
removeCallback(
callback: (event: NodeEvent) => void,
connectionId?: string
): void;
}

export type NodeEvent = ApplicationEvent;

export interface ApplicationEvent {
application_id: ApplicationId;
type: "TransactionExecuted" | "PeerJoined";
data: TransactionExecuted | PeerJoined;
}

export interface TransactionExecuted {
hash: string;
}

export interface PeerJoined {
peerId: string;
}
+

Examples​

+

JsonRpcClient​

+

Here's an example of how to use it:

+

Define application endpoint and application id. +You can find application id in the Admin Dashboard -> Contexts -> select application id from the context where your app logic is installed

+
NEXT_PUBLIC_API_URL=http://localhost:{NODE_PORT}
NEXT_PUBLIC_APPLICATION_ID="my-application-id"
+
// Import the necessary classes and interfaces from the SDK
import {
RpcClient,
JsonRpcClient,
RpcMutateParams,
RpcMutateResponse,
} from "@calimero-is-near/calimero-p2p-sdk";

// Define the Args and Output interfaces
interface CreatePost {
title: string;
text: string;
}

interface Post {
id: string;
title: string;
text: string;
}

// Create an instance of JsonRpcClient
const rpcClient: RpcClient = new JsonRpcClient(
process.env["NEXT_PUBLIC_API_URL],
"/jsonrpc"
);

// Define the parameters for the mutate
const params: RpcMutateParams<CreatePost> = {
applicationId: process.env["NEXT_PUBLIC_APPLICATION_ID"],
method: "create_post",
argsJson: {
title: "My First Post",
text: "This is my first post using the TypeScript Client SDK",
},
};

// Use the mutate method
const respone: RpcMutateResponse<Post> = await rpcClient.mutate<
CreatePost,
Post

> (params);

console.log(response);

+

WsSubscriptionsClient​

+

Here's an example of how to use it:

+
// Import the necessary classes and interfaces from the SDK
import {
SubscriptionsClient,
WsSubscriptionsClient,
NodeEvent,
} from "@calimero-is-near/calimero-p2p-sdk";

// Create an instance of WsSubscriptionsClient
const subscriptionsClient: SubscriptionsClient = new WsSubscriptionsClient(
process.env["NEXT_PUBLIC_API_URL],
"/ws"
);

// Create (default) connection to the server
await subscriptionsClient.connect();

// Subscribe to an application events
subscriptionsClient.subscribe([process.env["NEXT_PUBLIC_APPLICATION_ID"]]);

// Add a callback to process messages
subscriptionsClient.addCallback((data: NodeEvent) => {
console.log(data);
});
Was this page helpful?
Need some help? Check Support page
+ + \ No newline at end of file diff --git a/build/protocol-sdks/protocol-rs-sdk/index.html b/build/protocol-sdks/protocol-rs-sdk/index.html new file mode 100644 index 00000000..01effcc2 --- /dev/null +++ b/build/protocol-sdks/protocol-rs-sdk/index.html @@ -0,0 +1,96 @@ + + + + + +Rust Protocol SDK | Calimero 2.0 + + + + +

Rust Protocol SDK

Getting Started with Calimero SDK for Rust​

+

The Calimero SDK for Rust empowers developers to build applications that compile to WebAssembly (Wasm) and run securely within the Calimero virtual machine (VM). This guide will walk you through setting up a Rust project using the Calimero SDK, writing an application, and preparing it for deployment.

+

Prerequisites​

+

Before you begin, ensure you have Rust installed on your system. If not, follow the official Rust installation guide for your platform: Rust Installation Guide.

+

You should ensure you have the wasm32-unknown-unknown target installed. Run the following command in your terminal to install the target:

+
Terminal
rustup target add wasm32-unknown-unknown
+

Setting Up Your Project​

+

To create a new project, initialize a Rust library project using Cargo. Run the following command in your terminal:

+
Terminal
cargo new --lib kv-store
+

You should have a tree that looks like this:

+
Terminal
$ tree kv-store
kv-store
β”œβ”€β”€ Cargo.toml
└── src
└── lib.rs

2 directories, 2 files
+

At this point, we can cd into the kv-store directory:

+
Terminal
cd kv-store
+

Next, you need to specify the crate-type as cdylib in your Cargo.toml file to generate a dynamic library that can be compiled to Wasm:

+
File: Cargo.toml
[lib]
crate-type = ["cdylib"]
+

You can now configure your project to use the Calimero SDK by adding it as a dependency in your Cargo.toml file:

+
File: Cargo.toml
[dependencies]
calimero-sdk = { git = "https://github.com/calimero-network/core" }
+

Then, we need to specify a custom build profile for the most compact Wasm output:

+
File: Cargo.toml
[profile.app-release]
inherits = "release"
codegen-units = 1
opt-level = "z"
lto = true
debug = false
panic = "abort"
overflow-checks = true
+
Your Cargo.toml file should now look like this
File: Cargo.toml
[package]
name = "kv-store"
version = "0.1.0"
edition = "2021"

[lib]
crate-type = ["cdylib"]

[dependencies]
calimero-sdk = { git = "https://github.com/calimero-network/core" }

[profile.app-release]
inherits = "release"
codegen-units = 1
opt-level = "z"
lto = true
debug = false
panic = "abort"
overflow-checks = true
+

And finally, create a build.sh script to compile your application into Wasm format, for example:

+
File: build.sh
#!/bin/bash
set -e

cd "$(dirname $0)"

TARGET="${CARGO_TARGET_DIR:-../../target}"

rustup target add wasm32-unknown-unknown

cargo build --target wasm32-unknown-unknown --profile app-release

mkdir -p res

cp $TARGET/wasm32-unknown-unknown/app-release/kv_store.wasm ./res/
+

You can optionally choose to install and use wasm-opt, for an additional optimization step in the build script. This step is not required but can help reduce the size of the generated Wasm file:

+
File: build.sh
if command -v wasm-opt > /dev/null; then
wasm-opt -Oz ./res/kv_store.wasm -o ./res/kv_store.wasm
fi
+

Don't forget to make the build.sh script executable:

+
Terminal
chmod +x build.sh
+

At this point, your project structure should look like this:

+
Terminal
$ tree
.
β”œβ”€β”€ Cargo.toml
β”œβ”€β”€ build.sh
└── src
└── lib.rs

2 directories, 3 files
+

Writing Your Application​

+

Now, let's create a simple key-value store application using the Calimero SDK. Start by defining your application logic in lib.rs:

+
File: src/lib.rs
use calimero_sdk::borsh::{BorshDeserialize, BorshSerialize};
use calimero_sdk::app;

#[app::state]
#[derive(Default, BorshSerialize, BorshDeserialize)]
struct KvStore {}

#[app::logic]
impl KvStore {}
+

The KvStore struct represents the state of your application, which will be borsh-encoded in the app-scoped state partition on the node's storage. The #[app::state] attribute macro marks the struct as the application state, permitting its use by Calimero SDK.

+

The #[app::logic] attribute macro marks the implementation block as the application logic, allowing you to define the methods that interact with the application state.

+

Consider a method like get that retrieves a value from the key-value store:

+
pub fn get(&self, key: &str) -> Option<&str> {
// Snip...
}
+

The inputs must be deserializable from the transaction data, and the output must be serializable to the response data. The Option type is used to represent the possibility of the key not being present in the store.

+

And now, here's a complete example of a key-value store application:

+
File: src/lib.rs
use std::collections::HashMap;

use calimero_sdk::borsh::{BorshDeserialize, BorshSerialize};
use calimero_sdk::{app, env};

#[app::state]
#[derive(Default, BorshSerialize, BorshDeserialize)]
struct KvStore {
entries: HashMap<String, String>,
}

#[app::logic]
impl KvStore {
pub fn set(&mut self, key: String, value: String) {
env::log(&format!("Setting key: {:?} to value: {:?}", key, value));

self.entries.insert(key, value);
}

pub fn entries(&self) -> &HashMap<String, String> {
env::log("Getting all entries");

&self.entries
}

pub fn get(&self, key: &str) -> Option<&str> {
env::log(&format!("Getting key: {:?}", key));

self.entries.get(key).map(|v| v.as_str())
}

pub fn remove(&mut self, key: &str) -> Option<String> {
env::log(&format!("Removing key: {:?}", key));

self.entries.remove(key)
}
}
+

Building Your Application​

+

Once your application logic is defined, run the ./build.sh script to compile your application into Wasm format. This script will generate kv_store.wasm in the res folder of your application.

+
Terminal
$ ./build.sh
info: component 'rust-std' for target 'wasm32-unknown-unknown' is up to date
# Snip...
Compiling calimero-sdk v0.1.0
Compiling kv-store v0.1.0 (/apps/kv-store)
Finished `app-release` profile [optimized] target(s) in 1.20s

$ tree
.
β”œβ”€β”€ Cargo.toml
β”œβ”€β”€ build.sh
β”œβ”€β”€ res
β”‚Β Β  └── kv_store.wasm
└── src
└── lib.rs

3 directories, 4 files
+

Deploying Your Application​

+

After successfully building your application, you can upload the compiled kv_store.wasm to the registry for use by a live Calimero node.

+

Writing Efficient Code with Calimero SDK​

+

In the following code snippet:

+
File: src/lib.rs
pub fn get(&self, key: &str) -> Option<&str> {
// Snip...
}
+

you'll notice that we prioritize using references instead of owned values. This approach optimizes performance and memory usage by minimizing unnecessary data copying.

+

For input parameters, such as &str and &[u8], utilizing references allows you to avoid unnecessary copying of data. Similarly, for output values, you can return references to data that live as long as &self or any of the input parameters. By doing so, you reduce memory overhead and improve the overall efficiency of your application.

+

By returning a reference to the value associated with the provided key instead of cloning the entire value, you ensure efficient memory usage and enhance the performance of your application.

+

Handling Errors with Calimero SDK​

+

When designing methods that may potentially fail, it's recommended to return a Result type with an error variant representing the possible failure cases. This enables you to handle errors more effectively and communicate error conditions to users of your application. As opposed to panicking which would only return a string message, using Result allows you to provide a structured error type with additional context.

+

First, let's define an error type Error<'a> with a lifetime tied to the key &'a str:

+
File: src/lib.rs
use calimero_sdk::serde::Serialize;

#[derive(Debug, Serialize)]
pub enum Error<'a> {
NotFound(&'a str),
// Add more error variants as needed
}
+

In the above definition, Error represents the possible error variants that may occur during the execution of your method. Each variant can carry additional data to provide context about the error condition.

+

Next, let's modify the get method to return a Result with Error as the error type:

+
File: src/lib.rs
pub fn get<'a>(&self, key: &'a str) -> Result<&'a str, Error<'a>> {
match self.entries.get(key) {
Some(value) => Ok(value),
None => Err(Error::NotFound(key)),
}
}
+

In the get method, we return Ok(value) if the key exists in the key-value store, and Err(Error::NotFound(key)) if the key is not found. This allows callers of the method to handle the possibility of the key not being present in the store.

+

Additionally, ensure that the Error type is serializable by implementing (or deriving) the Serialize trait, as shown in the definition above. This enables errors to be encoded in a structured format when returned as part of a call error.

+

By following this approach, you can handle errors more gracefully and provide meaningful feedback to users of your Calimero application.

+

Emitting Events with Calimero SDK​

+

To facilitate real-time monitoring of state transitions within your Calimero application, you can emit events using the app::emit! macro provided by the Calimero SDK. Event emission is particularly useful for handling live state transitions triggered by other actors, allowing subscribed clients to receive immediate updates about relevant actions.

+

Let's focus on emitting events for mutating calls, specifically set and remove methods:

+

First, define your custom events using the #[app::event] proc macro. In this example, we'll define events for setting a new key-value pair (Inserted), updating an existing value (Updated), and removing a key-value pair (Removed):

+
File: src/lib.rs
use calimero_sdk::app;

#[app::event]
pub enum Event<'a> {
Inserted { key: &'a str, value: &'a str },
Updated { key: &'a str, value: &'a str },
Removed { key: &'a str },
}
+

Each event variant can carry additional data to provide context about the event.

+

Now, you need to associate the event with the application logic by annotating the application state.

+
File: src/lib.rs
#[app::state(emits = for<'a> Event<'a>)]
#[derive(Default, BorshSerialize, BorshDeserialize)]
struct KvStore {
// Snip...
}
+

And finally, within your application logic methods, emit events using the app::emit! macro:

+
File: src/lib.rs
use std::collections::hash_map::Entry;

pub fn set(&mut self, key: String, value: String) {
match self.items.entry(key) {
Entry::Occupied(mut entry) => {
app::emit!(Event::Updated {
key: entry.key(),
value: &value,
});
entry.insert(value);
}
Entry::Vacant(entry) => {
app::emit!(Event::Inserted {
key: entry.key(),
value: &value,
});
entry.insert(value);
}
}
}

pub fn remove(&mut self, key: &str) -> Result<String, Error> {
app::emit!(Event::Removed { key });

self.entries.remove(key).ok_or_else(|| Error::NotFound(key))
}
+

In each method, we emit the corresponding event with relevant data. This allows external observers to react to these events and take appropriate actions.

+

By emitting events, you can ensure connected clients receive real-time updates about state transitions within your Calimero application, enabling them to respond to changes as they occur.

+

Ensuring Atomicity and Event Reliability in Calimero Applications​

+

In Calimero applications, ensuring atomicity of state changes and reliability of event emission is crucial for maintaining data consistency and facilitating reliable communication between actors. Here's how atomicity and event reliability are enforced:

+

Atomic State Changes​

+

When a method call fails, whether due to panics or returning an Err, all state changes made up to that point are discarded. This ensures that if an operation cannot be completed successfully, the application's state remains consistent and unaffected by partial updates. By enforcing atomicity, Calimero promotes data integrity and prevents inconsistencies that may arise from incomplete transactions.

+

Reliable Event Emission​

+

Similarly, event emission in Calimero applications is tied to the successful execution of transactions. Events are only relayed when a transaction has been successfully executed, ensuring that external observers receive updates about state changes reliably. By linking event emission to transaction execution, Calimero guarantees that event notifications accurately reflect the application's current state, enhancing the reliability and consistency of communication between actors.

+

This also means it doesn't matter if the event emission is done before or after the state change, as the event will only be emitted if the state change is successful.

+

By adhering to these principles of atomicity and event reliability, Calimero applications maintain data integrity and enable robust interaction between different components, facilitating the development of secure and dependable decentralized systems.

+

Local-First Efficiency: No Network Overhead for Read-Only Calls​

+

In Calimero, adherence to the local-first principle eliminates the need for network communication in read-only calls. Since read-only operations don't modify the state, there's no associated network overhead. This local-first approach streamlines data access, promoting efficient and responsive application performance without unnecessary network activity.

+

Conclusion​

+

You've now learned how to set up a Rust project using the Calimero SDK, write a simple application, build it into Wasm, and prepare it for deployment. Experiment with different features and functionalities to create powerful and secure applications with Calimero.

+

Happy coding! πŸš€

Was this page helpful?
Need some help? Check Support page
+ + \ No newline at end of file diff --git a/build/protocol-sdks/protocol-sdk/index.html b/build/protocol-sdks/protocol-sdk/index.html new file mode 100644 index 00000000..ef882ed7 --- /dev/null +++ b/build/protocol-sdks/protocol-sdk/index.html @@ -0,0 +1,39 @@ + + + + + +Protocol SDK | Calimero 2.0 + + + + +

Protocol SDK

The Protocol SDK within the Calimero Network serves as a foundational tool for developers, enabling them to design, develop, and deploy the specific protocols that govern the operation of their decentralized applications (DApps). This SDK is particularly crucial in a network like Calimero, where privacy, security, and decentralized communication are paramount. Here's an overview of the Protocol SDK, highlighting its features, functionalities, and its role in the development lifecycle of DApps:

+

Features and Functionalities​

+
    +
  • Protocol Definition: Allows developers to define the rules and behaviors of their application networks, including communication protocols, data formats, and interaction patterns among nodes.
  • +
  • Code Generation: Automates the generation of boilerplate code required to implement the defined protocols, significantly speeding up the development process and reducing the potential for errors.
  • +
  • Interoperability Support: Facilitates the creation of protocols that can interact with various blockchains and external systems, ensuring that Calimero-based DApps can operate within the broader blockchain ecosystem.
  • +
  • Security Focus: Provides tools and libraries to incorporate advanced security features into protocols, such as end-to-end encryption, secure key management, and privacy-preserving data sharing mechanisms.
  • +
  • Performance Optimization: Includes optimization tools and best practices to ensure that the protocols are efficient in terms of resource usage, suitable for decentralized networks where performance can be a critical concern.
  • +
+

Role in DApp Development​

+
    +
  • Protocol Development: At the core of any DApp on the Calimero Network is a protocol that dictates how the application functions, how nodes within the application's network communicate, and how data is handled and stored. The Protocol SDK is the primary tool for developing these protocols.
  • +
  • Testing and Deployment: The SDK provides an environment for thorough testing of the protocols in simulated conditions before they are deployed on the live network. This ensures that any issues can be identified and resolved in a controlled setting, minimizing risks.
  • +
  • Versioning and Updates: Supports protocol versioning, enabling developers to iterate on their protocols and roll out updates in a structured manner. This is crucial for maintaining compatibility and ensuring the longevity and scalability of DApps.
  • +
+

Integration with Other Calimero Components​

+
    +
  • Client Nodes: Protocols developed with the Protocol SDK are deployed on client nodes, which act as the runtime environment for the DApps built on these protocols.
  • +
  • Client SDKs: These SDKs interact with the protocols at a higher level, providing interfaces for end-users to interact with the DApps. The seamless integration between the Protocol SDK and Client SDKs ensures a smooth user experience.
  • +
  • Specialized Nodes: Some protocols may require specialized computational resources or functionalities. The Protocol SDK allows for the integration of these services, enabling DApps to leverage the specialized nodes within the Calimero Network.
  • +
+

Use Cases​

+
    +
  • Decentralized Messaging: For a messaging app, the Protocol SDK could be used to define the encryption protocols, message delivery mechanisms, and peer discovery protocols.
  • +
  • Decentralized Finance (DeFi): In a DeFi application, the SDK could define the protocols for executing smart contracts, handling transactions, and interacting with external blockchains for asset transfers.
  • +
+

The Protocol SDK is a critical component of the Calimero Network, empowering developers to build sophisticated, secure, and efficient decentralized applications. By abstracting much of the complexity associated with protocol development, the SDK enables developers to focus on the unique features and functionalities of their DApps, fostering innovation and growth within the Calimero ecosystem.

Was this page helpful?
Need some help? Check Support page
+ + \ No newline at end of file diff --git a/build/publish-app/index.html b/build/publish-app/index.html new file mode 100644 index 00000000..6b331cde --- /dev/null +++ b/build/publish-app/index.html @@ -0,0 +1,26 @@ + + + + + +Publish App | Calimero 2.0 + + + + +

Publish App

After you have built your application, you can publish it to the network. This will make it available for users to interact with.

+

Publishing application​

+

Navigate to Admin Dashboard and select Applications tab.

+

Publish application

+

Enter the required data and publish the application. After publishing, your application will be available for users to interact with in new contexts.

+

Application preview​

+

Good practice allows users to try an app before they decide to use it. You can deploy an app to any host provider.

+

We have used Github Pages to preview our example app. You can do the same by following the steps below.

+

Example app preview​

+

First you need to enable Github Pages by following Creating a Github Pages

+

Our example app is written in next.js and code is available in only-peers-client +After enabling Github Pages, a few changes are required in your next.js app. +next.config.mjs should contain output: "export" field

+

Github Actions is a platform used to automate the deployment process. You can find example in github workflow

Was this page helpful?
Need some help? Check Support page
+ + \ No newline at end of file diff --git a/build/quickstart/index.html b/build/quickstart/index.html new file mode 100644 index 00000000..a009937a --- /dev/null +++ b/build/quickstart/index.html @@ -0,0 +1,26 @@ + + + + + +Quickstart | Calimero 2.0 + + + + +

Quickstart

Welcome to the exciting world of application development in the decentralized space! As a developer, you have the opportunity to build cutting-edge applications using our comprehensive suite of tools. Start by shaping the core application logic with our Protocol SDK and then bring your application to life by crafting intuitive user interfaces with the Client SDK. Join our community of developers and start creating powerful decentralized applications that can make a significant impact in the tech world.

+

Application development consists of two main parts:

+
    +
  1. building the application logic with the Protocol SDK
  2. +
  3. building the application client interface with the Client SDK
  4. +
+

Protocol SDK​

+

The Protocol SDK within the Calimero Network equips developers with tools for creating, testing, and deploying protocols essential for decentralized applications (DApps). It features capabilities such as code generation, security enhancement, and interoperability support to ensure robust and efficient DApp operations. This SDK is crucial for integrating with the Calimero Network's components, facilitating seamless updates and versioning critical for DApps in fields like decentralized messaging and finance.

+

Currently we have SDK only for rust but in the future we will have SDKs for other languages as well.

+

Client SDKs​

+

The Client SDK includes straightforward tools to help you build your application. For logging in, we provide functions that allow users to authenticate using their wallet credentials, which must be set up as root keys in the admin dashboard. This setup ensures that access is both secure and straightforward. For handling data, the SDK supports JSON-RPC for direct data transactions and websockets for live updates. These features are designed to make your development process efficient and effective, allowing you to focus on creating a great user experience.

+

Currently we have SDK only for typescript but in the future we will have SDKs for other languages as well.

+

Publish app​

+

After you have created your application logic with Rust and your application UI with TypeScript, you can publish your app. Follow instructions in the Publish App guide to learn how to publish your app and how users can download and run it.

Was this page helpful?
Need some help? Check Support page
+ + \ No newline at end of file diff --git a/contribute/bounty-program/index.html b/contribute/bounty-program/index.html new file mode 100644 index 00000000..d8e58855 --- /dev/null +++ b/contribute/bounty-program/index.html @@ -0,0 +1,29 @@ + + + + + +Bounty Program | Calimero 2.0 + + + + +

Bounty Program

+

We're excited to announce that Calimero will soon be launching a bounty program! This program is designed to reward contributors who help us tackle various issues and enhance our project.

+

What is a Bounty Program?​

+

A bounty program is an initiative where contributors can earn rewards for completing specific tasks or resolving issues. These tasks can range from fixing bugs to adding new features, improving documentation, or optimizing performance. The rewards can vary and may include monetary compensation, swag, exclusive access to new features, or public recognition.

+

How it Works​

+

While we are still in the process of finalizing the details of our bounty program, here’s an overview of how it will function:

+
    +
  1. Identify Bounty Issues: We will mark specific issues in our repository with a "bounty" label. These issues will be eligible for rewards.
  2. +
  3. Contribute: Choose a bounty-labeled issue that interests you, solve it, and submit a pull request.
  4. +
  5. Review: Our team will review your contribution. If your solution meets the requirements and quality standards, it will be merged.
  6. +
  7. Reward: Once the issue is resolved and your contribution is accepted, you will receive a reward. The exact nature of the reward will be specified in the issue description.
  8. +
+

Exceptional Contributions​

+

While not all issues may be marked with a bounty label, we recognize that exceptional solutions deserve recognition. If you provide a particularly outstanding solution to an issue not marked as a bounty, we may still decide to reward your contribution.

+

Stay Tuned​

+

We are currently refining the details of our bounty program, including the reward system. Follow us on social media and keep an eye on our announcements to be the first to know when the bounty program goes live.

+

Thank you for your patience and continued support. We look forward to collaborating with you and rewarding your valuable contributions!

Was this page helpful?
Need some help? Check Support page
+ + \ No newline at end of file diff --git a/contribute/github/index.html b/contribute/github/index.html new file mode 100644 index 00000000..433b1159 --- /dev/null +++ b/contribute/github/index.html @@ -0,0 +1,22 @@ + + + + + +Github | Calimero 2.0 + + + + +

Github

All work on Calimero happens directly on GitHub. Both core team members and external contributors send pull requests which go through the same review process.

+

How to Contribute​

+

We appreciate your interest in contributing to our project! To get started with contributing, please follow the instructions outlined in our CONTRIBUTING file.

+

Additional Ways to Contribute​

+
    +
  • Show Your Support: If you find this project helpful, please star it on GitHub. Your stars help the project grow and reach more developers like you.
  • +
  • Spread the Word: Share the project with your friends and colleagues who might be interested in contributing or using it.
  • +
  • Join Discussions: Participate in discussions on GitHub Issues or Discussions to share your ideas and provide feedback.
  • +
  • Write Tutorials or Blog Posts: Create tutorials or blog posts about how to use the project or your experience contributing to it.
  • +
Was this page helpful?
Need some help? Check Support page
+ + \ No newline at end of file diff --git a/contribute/hackathons/index.html b/contribute/hackathons/index.html new file mode 100644 index 00000000..1bbbf6f3 --- /dev/null +++ b/contribute/hackathons/index.html @@ -0,0 +1,33 @@ + + + + + +Hackathons | Calimero 2.0 + + + + +

Hackathons

+

At Calimero, we love innovation and collaboration, which is why we plan to regularly organize hackathons that include our product. We have exciting events planned for the future. Stay tuned by following us on our social media channels to get the latest updates.

+

What is a Hackathon?​

+

A hackathon is an event where developers, designers, and other tech enthusiasts come together to create innovative solutions in a short amount of time. Participants work in teams to build projects, often centered around a specific theme or technology. Hackathons are a great opportunity to:

+
    +
  • Learn New Skills: Whether you’re a beginner or an expert, hackathons provide a platform to learn new technologies and tools.
  • +
  • Collaborate: Work with other passionate individuals, share ideas, and collaborate on projects.
  • +
  • Showcase Your Talent: Present your project to a panel of judges and other participants, winning prizes and recognition.
  • +
  • Network: Meet like-minded individuals, industry experts, and potential employers or collaborators.
  • +
+

How to Get Involved​

+

When we announce a new hackathon, here’s how you can participate:

+
    +
  1. Register for the Event: Sign up through the event link provided in our announcements.
  2. +
  3. Form a Team: Join with friends or team up with other participants.
  4. +
  5. Build Your Project: Use our product and other tools to create something amazing.
  6. +
  7. Submit Your Work: Present your project at the end of the hackathon for a chance to win prizes and gain recognition.
  8. +
+

Stay Updated​

+

Follow us on social media to be the first to know about our upcoming hackathons and other events. We’ll share all the details, including how to register and participate.

+

Thank you for your interest in contributing to our project through hackathons. We look forward to seeing your innovative ideas and solutions!

Was this page helpful?
Need some help? Check Support page
+ + \ No newline at end of file diff --git a/explore/developers-quickstart/admin-dashboard/index.html b/explore/developers-quickstart/admin-dashboard/index.html new file mode 100644 index 00000000..ad9681d2 --- /dev/null +++ b/explore/developers-quickstart/admin-dashboard/index.html @@ -0,0 +1,42 @@ + + + + + +Admin Dashboard | Calimero 2.0 + + + + +

Admin Dashboard

Node is gated with authentication. In order to interact with the node from any app, you need to register a decentralized identity. +We have build an Admin Dashboard which is a web application designed to streamline the management of node states within your system. Seamlessly connected with the API provided by the Admin Client API, this user interface offers a user-friendly platform for overseeing and controlling various aspects of your node infrastructure.

+

Run Admin Dashboard​

+

Position to the Admin Dashboard directory

+
 cd node-ui
+

Install dependencies

+
 pnpm install
+

Build the app

+
 pnpm build
+

Run the Admin Dashboard

+
 pnpm start
+

Open your web browser and access admin dashboard on http://localhost:NODE_PORT/admin/.

+
+

NOTE: +Replace NODE_PORT with the --server-port value defined during node setup in Getting-started

+
+

You will see login page. On the first login, your selected wallet will be used as a root key to use further functionalities.

+

Admin Dashboard functionalities:​

+

Identity​

+

Preview added root keys or add new root key.

+

Identity

+

Contexts​

+

Preview context which you have already joined or invited. You can also create a new context.

+

Contexts

+

Applications​

+

Preview available applications from other developers or applications you published. You can also publish new application

+

Applications

+

Export​

+

Allows you to export you identity on current device and import it on new device so you have seamless experience while onboarding to another device.

+

Export

Was this page helpful?
Need some help? Check Support page
+ + \ No newline at end of file diff --git a/explore/developers-quickstart/example-app/index.html b/explore/developers-quickstart/example-app/index.html new file mode 100644 index 00000000..bfaa5049 --- /dev/null +++ b/explore/developers-quickstart/example-app/index.html @@ -0,0 +1,30 @@ + + + + + +Example Application | Calimero 2.0 + + + + +

Example Application

We have created simple and easy to use example application called only-peers. Application enables writing posts and leaving comments. +To try out application you need to create new context where application will be installed.

+

Create new context​

+

Navigate back to Admin Dashboard. If you have not started Admin Dashboard, follow the instructions in Admin Dashboard.

+
    +
  • Follow context creation instructions and select only-peers app.
  • +
+

You are now part of the context and can start using the application.

+

Try out Only-peers application​

+

We have built and deployed a demo app so you can try it out immediately.

+

Navigate to https://calimero-network.github.io/only-peers-client/ to access app frontend.

+

You will be asked to setup the app by the adding the node url. It is the same url you used while starting the node in Getting-started http://localhost:NODE_PORT +After setting up node url, you will be asked to login.

+
+

NOTE: +Use your wallet which you have already added as root key in Admin Dashboard.

+
+

You are now ready to use the app. Enjoy!

Was this page helpful?
Need some help? Check Support page
+ + \ No newline at end of file diff --git a/explore/developers-quickstart/getting-started/index.html b/explore/developers-quickstart/getting-started/index.html new file mode 100644 index 00000000..2ed0dbaa --- /dev/null +++ b/explore/developers-quickstart/getting-started/index.html @@ -0,0 +1,26 @@ + + + + + +Getting started | Calimero 2.0 + + + + +

Getting started

Before you start, make sure you are familiar with Calimero Terminology.

+

Setup your local node​

+

Prerequisites​

+

Position in the root of the project and create a data folder for all configuration files.

+
$ mkdir data
+

Setup​

+

Setup coordinator node used for managing the network transactions and peer nodes representing the network participants.

+

Initialize and start coordinator node (separate terminal)​

+
$ cargo run -p calimero-node -- --home data/coordinator init --server-port 2427 --swarm-port 2527
$ cargo run -p calimero-node -- --home data/coordinator run --node-type coordinator
+

Initialize and start your node (separate terminal)​

+
$ cargo run -p calimero-node -- --home data/node1 init --server-port 2428 --swarm-port 2528
$ cargo run -p calimero-node -- --home data/node1 run
+

Node is now initialized and ready for use.

+

Congratulations on setting up your node!​

+

Your next step is to add an authentication mechanism to your node by adding a decentralized identity.

Was this page helpful?
Need some help? Check Support page
+ + \ No newline at end of file diff --git a/explore/intro/index.html b/explore/intro/index.html new file mode 100644 index 00000000..11cd3633 --- /dev/null +++ b/explore/intro/index.html @@ -0,0 +1,28 @@ + + + + + +Introduction | Calimero 2.0 + + + + +

Introduction

Welcome to Our Project Documentation​

+

Welcome to our comprehensive documentation. +Here, you'll find all the resources and guidance needed to understand and engage with our technology. Whether you are new to privacy technology or looking to deepen your existing knowledge, this documentation is structured to assist you every step of the way.

+

Our documentation is divided into several key sections, each designed to provide you with detailed insights and practical tools:

+

Explore​

+

Explore is your starting point for smoothly moving between our documentation sections. Here, you'll get a quick overview of what each part covers. Dive into our Manifesto to understand our key beliefs. Then, jump into the Developers Quickstart for simple steps to get hands-on with our product if you prefer to dive into example first.

+

Learn​

+

This section is your gateway to understanding our technology and foundational privacy principles. It provides a structured approach to learning, from system architecture and essential terminology to in-depth exploration of both basic and complex privacy concepts. It also addresses the limitations of our technology, ensuring you have a comprehensive understanding.

+

Build​

+

The "Build" section equips you with the necessary tools and documentation to start creating applications using our technology. It features a quickstart guide for immediate setup, detailed descriptions of our SDKs for Rust and TypeScript, and insights into our protocol, catering to developers at all skill levels.

+

Contribute​

+

In the "Contribute" section, we invite you to actively participate in the development and improvement of our project. It provides detailed instructions on how to use GitHub for contributions, including environment setup, submission of changes, and community guidelines. Information on hackathons and available bounties is also included to engage with our community further.

+

Resources​

+

Our "Resources" section serves as a comprehensive directory of additional materials, including detailed documentation, community forums, and external readings. It is designed to support your ongoing learning and application of our technology.

+

Next steps​

+

Ready to embark on this journey? Welcome to Calimero Network!

Was this page helpful?
Need some help? Check Support page
+ + \ No newline at end of file diff --git a/home/home-framework.svg b/home/home-framework.svg new file mode 100644 index 00000000..eb008610 --- /dev/null +++ b/home/home-framework.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/home/home-open-source.svg b/home/home-open-source.svg new file mode 100644 index 00000000..44299917 --- /dev/null +++ b/home/home-open-source.svg @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/home/home-sdk.svg b/home/home-sdk.svg new file mode 100644 index 00000000..774abfcb --- /dev/null +++ b/home/home-sdk.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/favicon.ico b/img/favicon.ico new file mode 100644 index 00000000..f819e0d5 Binary files /dev/null and b/img/favicon.ico differ diff --git a/img/logo.svg b/img/logo.svg new file mode 100644 index 00000000..3ae3e633 --- /dev/null +++ b/img/logo.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/img/undraw_docusaurus_mountain.svg b/img/undraw_docusaurus_mountain.svg new file mode 100644 index 00000000..af961c49 --- /dev/null +++ b/img/undraw_docusaurus_mountain.svg @@ -0,0 +1,171 @@ + + Easy to Use + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/undraw_docusaurus_react.svg b/img/undraw_docusaurus_react.svg new file mode 100644 index 00000000..94b5cf08 --- /dev/null +++ b/img/undraw_docusaurus_react.svg @@ -0,0 +1,170 @@ + + Powered by React + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/undraw_docusaurus_tree.svg b/img/undraw_docusaurus_tree.svg new file mode 100644 index 00000000..d9161d33 --- /dev/null +++ b/img/undraw_docusaurus_tree.svg @@ -0,0 +1,40 @@ + + Focus on What Matters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/index.html b/index.html new file mode 100644 index 00000000..9868203a --- /dev/null +++ b/index.html @@ -0,0 +1,13 @@ + + + + + +Hello from Calimero 2.0 | Calimero 2.0 + + + + +

Calimero 2.0

You're about to dive into the Calimero Network, a place designed to shake up the digital world by prioritizing what matters most: privacy, data control, and freedom in your creations. Calimero offers a foundation for those committed to building the new digital landscape where privacy and user autonomy are non-negotiable. It's a shift towards an ecosystem where applications are built on principles of decentralization, ensuring users retain control over their digital footprint.

Robust framework

Quickly launch and configure nodes in our peer-to-peer network with user-friendly tools that minimize the complexity and technical challenges.

Comprehensive SDKs

Jumpstart your decentralized apps with our SDKs, designed for easy integration into our robust peer-to-peer network.

Open Source project

Contribute your code to help forge a platform that leads the way in innovation in the decentralized space

+ + \ No newline at end of file diff --git a/learn/advanced-concepts/encryption/index.html b/learn/advanced-concepts/encryption/index.html new file mode 100644 index 00000000..43663091 --- /dev/null +++ b/learn/advanced-concepts/encryption/index.html @@ -0,0 +1,31 @@ + + + + + +Encryption | Calimero 2.0 + + + + +

Encryption

Encryption in Calimero ensures data security in transit over the network, maintaining confidentiality and integrity.

+

Key Principles​

+
    +
  1. Forward Secrecy: Ensuring past messages remain secure even if a key is compromised in the future.
  2. +
  3. Post-Compromise Security: Ensuring future messages remain secure even after any previous message has been compromised.
  4. +
  5. Zero Trust in Third Parties: No reliance on intermediaries for security.
  6. +
  7. Verifiable End-to-End Encryption: Confirming that only the intended recipients can read the messages.
  8. +
  9. Asynchronous Communication: Ability to start communications without recipients being online.
  10. +
  11. Multi-Device Support: Ensuring seamless use across multiple devices.
  12. +
  13. Deniability: Providing plausible deniability for message authorship to non-context members.
  14. +
  15. Non-Interactive Group Management: Adding and removing context members without requiring interaction.
  16. +
+

Double Ratchet Algorithm​

+

Each network message uses a distinct encryption key derived from the ratchet state, providing forward secrecy by ensuring that the compromise of one key does not affect the security of previous messages.

+

Each context can configure Diffie-Hellman reset parameters. For one-on-one peer interactions, resets can occur instantaneously, while for larger groups, resets can happen at non-deterministic intervals to balance security and performance.

+

Tree-Based Diffie-Hellman Key Exchange​

+

All contexts use a tree-based Diffie-Hellman key exchange. This method efficiently manages shared secrets among multiple members, ensuring that keys are updated and propagated correctly. The reset of keys occurs at the leaf nodes of the tree, guaranteeing post-compromise security.

+

Adding a new member involves existing members using their prekeys to complete an X3DH (Triple Diffie-Hellman) exchange, securely adding the new member without requiring direct interaction. Removing a member involves invalidating their keys and updating the shared secrets among remaining members, ensuring efficient and secure updates.

+

By leveraging advanced encryption techniques such as the Double Ratchet Algorithm and tree-based Diffie-Hellman key exchange, Calimero ensures that all data in transit is protected, maintaining the confidentiality and integrity of network messages.

Was this page helpful?
Need some help? Check Support page
+ + \ No newline at end of file diff --git a/learn/advanced-concepts/specialized-nodes/index.html b/learn/advanced-concepts/specialized-nodes/index.html new file mode 100644 index 00000000..164fab0e --- /dev/null +++ b/learn/advanced-concepts/specialized-nodes/index.html @@ -0,0 +1,42 @@ + + + + + +Specialized Nodes | Calimero 2.0 + + + + +

Specialized Nodes

Specialized nodes in the Calimero Network are third-party nodes that augment a context's capacity and reliability. They participate in a context but have additional capabilities, providing various services while maintaining the decentralized nature of the network.

+

Key Concepts​

+
    +
  • Incentivization: These nodes can be incentivized through contracts on blockchains that pay them for their services, ensuring they remain motivated to perform their roles effectively.
  • +
  • Permissions and Roles: Specialized nodes can have different levels of permissions, ranging from being subscribed to encrypted network events to fully participating as part of the context.
  • +
+

Types of Specialized Nodes​

+
    +
  1. +

    Storage Nodes:

    +
      +
    • Encrypted Transaction Storage: These nodes store encrypted transactions without the ability to read them. They guarantee 100% uptime, ensuring that all transactions are available even when peers are offline. When peers come back online, the node provides missed transactions and new transactions for replication.
    • +
    • Blob Storage: These nodes also store encrypted blobs of non-state-transitional data, ensuring that all necessary data is always available without holding decryption keys.
    • +
    +
  2. +
  3. +

    Delegated Execution Nodes:

    +
      +
    • Context Maintenance: These nodes fully join a context and maintain the context state on their end. They can handle resource-intensive executions, delegating specific calls to optimize performance and resource utilization.
    • +
    +
  4. +
  5. +

    Administrative Nodes:

    +
      +
    • Event Observation and Action: These nodes observe real-world events and act on them within the context. For example, in a billionaire's club context, an administrative node could monitor members' accounts on a blockchain and evict them if their balance falls below a certain threshold.
    • +
    +
  6. +
+

Reliability Through Decentralization​

+

Specialized nodes ensure that the context remains operational and consistent, even when primary peers are offline. They provide the necessary data and transactions to keep the context up-to-date. The decentralized nature ensures that the state is eventually consistent. Fragmentation does not cause issues as the system reconciles itself when peers come back online, highlighting the network's reliability without reliance on any single specialized node.

Was this page helpful?
Need some help? Check Support page
+ + \ No newline at end of file diff --git a/learn/architecture.png b/learn/architecture.png new file mode 100644 index 00000000..506266d4 Binary files /dev/null and b/learn/architecture.png differ diff --git a/learn/architecture/index.html b/learn/architecture/index.html new file mode 100644 index 00000000..df4594e6 --- /dev/null +++ b/learn/architecture/index.html @@ -0,0 +1,30 @@ + + + + + +Architecture | Calimero 2.0 + + + + +

Architecture

Calimero Network offers a robust framework for developing and running peer-to-peer (P2P) applications. Our framework allows users to participate in the network or build applications for others to use.

+

Participate​

+

Users participate in the network with a client node. By encapsulating the complexities of operating a client node, we aim to make it easy and intuitive for everyone to engage in the decentralized world.

+
    +
  • Client node acts as a gateway that runs applications and connects with other peers
  • +
  • Each application is loaded and isolated from other applications into a separate context. This ensures that each application runs independently while still allowing interactions through shared states or messages.
  • +
  • Context consolidates all necessary components into a secure, isolated environment.
  • +
+

Some networks may require specialized functionalities, which are provided by a dedicated compute market. Users can integrate these special functionalities from a pool of available specialized nodes.

+

Calimero Architecture

+

Build​

+

To develop applications on the Calimero Network, we provide comprehensive SDKs:

+
    +
  • Protocol SDK to define how the application should behave and communicate with the node.
  • +
  • Client SDK to connect to node and use data in user interface and authenticate using wallets UI.
  • +
+

Developer applications are shared through application registry where developers upload their applications and share it with other users

+

Explore other sections to learn more about each component, and how they contribute to a seamless decentralized experience.

Was this page helpful?
Need some help? Check Support page
+ + \ No newline at end of file diff --git a/learn/core-concepts/applications/index.html b/learn/core-concepts/applications/index.html new file mode 100644 index 00000000..bbaed162 --- /dev/null +++ b/learn/core-concepts/applications/index.html @@ -0,0 +1,71 @@ + + + + + +Applications | Calimero 2.0 + + + + +

Applications

Applications in Calimero define the core logic governing how peers interact within a decentralized network. Developers can programmatically augment the protocol to create customized functionalities, supporting a wide range of applications tailored to various use cases, from direct messaging and communication channels to interactive games and collaborative editing.

+

Examples of Applications​

+
    +
  1. +

    Communication Platforms

    +
      +
    • Direct Messages and Channels: Support for private, encrypted messaging between users and group communications in shared, secure spaces. This setup can scale from one-on-one conversations to large group discussions, similar to Slack channels or Discord communities.
    • +
    • Community Platforms: Decentralized alternatives to platforms like Reddit or Hacker News, enabling independent contexts for different purposes, fostering discussions, and sharing content securely.
    • +
    +
  2. +
  3. +

    Interactive Games

    +
      +
    • +

      Privacy-Focused Games: These games require the privacy of each player's moves until both have played, ensuring fair play and maintaining the confidentiality of strategies. Examples include:

      +
        +
      • Rock-Paper-Scissors: Players' choices are revealed simultaneously after both have made their moves.
      • +
      • Battleship: The positions of ships are kept secret until revealed through gameplay.
      • +
      +
    • +
    • +

      Non-Privacy Games: These games do not require concealment of moves and allow all actions to be visible to both players. Examples include:

      +
        +
      • Chess: A strategy game where all moves are visible to both players, with game logic running locally.
      • +
      • Checkers: Another strategy game where all moves are open and visible to both players.
      • +
      +
    • +
    +
  4. +
  5. +

    Collaborative Work

    +
      +
    • Document Collaboration: Real-time collaboration on documents, akin to Google Docs, but decentralized and secure.
    • +
    • Creative Projects: Shared canvases or environments for drawing, designing, or working on various creative projects, where all contributions are securely encrypted.
    • +
    +
  6. +
+

Benefits of Decentralized Applications​

+
    +
  • Resilience: Distributed application logic ensures the system functions smoothly even if some devices go offline.
  • +
  • Autonomy: Users control their data and activities without relying on a central authority.
  • +
  • Scalability: The system scales effectively as more users join due to optimistic execution, with state being conflict-free and eventually reconciled.
  • +
  • Privacy: Keeping data local and encrypted prevents exposure to third parties, crucial for sensitive information.
  • +
+

Security and Data Management​

+

All non-state-transitional data, such as attached files in DMs, collaborative document assets, and game resources, inherit the same level of security as state-transitional transactions. This ensures that all forms of data within the Calimero network are encrypted and secure.

+

Calimero also functions as a decentralized filesystem for these non-state-transitional, encrypted blobs of data. Similar to BitTorrent or IPFS, nodes can lazily share the data without needing any centralized storage options. This decentralized approach allows for efficient and secure data distribution across the network.

+

Building Applications​

+

Developers can leverage Calimero's framework to programmatically build and augment a wide range of applications using provided tools and documentation. This includes setting up the development environment and deploying applications within the network.

+
    +
  1. +

    Development Tools +Calimero offers the Rust SDK and intuitive APIs, enabling developers to create applications that integrate seamlessly with the network.

    +
  2. +
  3. +

    Documentation and Support +Comprehensive documentation and community support assist developers in every step of the application development process, ensuring that they can build and deploy high-quality, secure applications efficiently.

    +
  4. +
Was this page helpful?
Need some help? Check Support page
+ + \ No newline at end of file diff --git a/learn/core-concepts/contexts/index.html b/learn/core-concepts/contexts/index.html new file mode 100644 index 00000000..656cdfb8 --- /dev/null +++ b/learn/core-concepts/contexts/index.html @@ -0,0 +1,41 @@ + + + + + +Contexts | Calimero 2.0 + + + + +

Contexts

Contexts are the core of the Calimero ecosystem. These are application specific networks designed to enable direct communication between users, eliminating the need for intermediaries. Here's a closer look at how they operate:

+

How Contexts Work:​

+
    +
  1. +

    Initialization: A user selects a WebAssembly (WASM) module from a repository, which contains the logic and rules for the application. With this, they initiate a new Application Network, creating a unique identity for this specific network and setting the initial parameters and update strategies.

    +
  2. +
  3. +

    Joining the Network:

    +
      +
    • Inviting Peers: The initial user can invite others directly or set up Access Control Lists (ACLs) to govern how new members can join the network.
    • +
    • New Member Process: When a new user joins, they generate a unique identity for the network, download the relevant WASM module, and synchronize with the existing data on the network. This process ensures they're up to speed and ready to engage fully with the network's activities.
    • +
    +
  4. +
  5. +

    Data Interaction: Within the network, users can query and modify data according to the application's rules. Each Application Network autonomously manages data interactions, ensuring consistency and integrity.

    +
  6. +
  7. +

    Security and Privacy: All communications within an Application Network are secured with end-to-end encryption, utilizing the Double Ratchet Algorithm. This ensures that data exchanged between peers remains private and secure.

    +
  8. +
  9. +

    Offline Capability and Consistency: Calimero's design is 'offline-first,' accommodating the reality that peers may not always be online. When a peer goes offline and later returns, they synchronize with the network to update and reconcile any changes, maintaining eventual consistency across the network's state.

    +
  10. +
  11. +

    Governance and Updates: Application Networks can be governed by the users themselves, with decisions made through a consensus mechanism. Updates to the network, including changes to the WASM module or network parameters, can be proposed and voted on by the network's members.

    +
  12. +
  13. +

    Extending network capabilities: In addition to the core components of Application Networks, Calimero introduces Specialized Nodes to further enhance network capabilities. These nodes are designed to perform specific functions that go beyond the standard operations of client nodes, such as heavy data processing, advanced encryption tasks, or providing additional storage solutions. They play a crucial role in scaling the network's functionality and performance, ensuring that even as demand grows, the network remains efficient and responsive. Specialized Nodes can be deployed by any participant in the network, including Calimero, third-party developers, or users themselves, offering a flexible and decentralized approach to augmenting the network's capabilities. By leveraging these nodes, Application Networks can meet the diverse needs of different applications, ensuring that each network can be customized and optimized for its unique requirements, all while maintaining the overarching principles of privacy, security, and decentralization inherent to Calimero.

    +
  14. +
Was this page helpful?
Need some help? Check Support page
+ + \ No newline at end of file diff --git a/learn/core-concepts/identity/index.html b/learn/core-concepts/identity/index.html new file mode 100644 index 00000000..afcd22bc --- /dev/null +++ b/learn/core-concepts/identity/index.html @@ -0,0 +1,42 @@ + + + + + +Identity | Calimero 2.0 + + + + +

Identity

Key Management​

+

Calimero's key management is centered around two types: Node Keys for node management and Application Keys for app operation. This structure ensures secure, anonymous and decentralized control across the network.

+

Node Keys​

+

Node Keys are used to for node operations which include, add new node keys, identifier listing, and key deletion. Web3 wallets can be used as node keys, easing the setup process.

+

Key Initialization Process:

+
    +
  1. Starting Without Keys: Initially, nodes have no keys. The addition of the first key is crucial for setting up application identities.
  2. +
  3. Adding the First Key: +
      +
    • In the node admin UI, connect a wallet, such as MetaMask or Near wallets compliant with NEP-413.
    • +
    • Sign a challenge from the node and submit the signature.
    • +
    • If the signature matches the challenge and the public key, the first node key is added, activating key management capabilities.
    • +
    +
  4. +
+

Application Keys​

+

Application Keys initiate applications, with keypairs stored in browser local storage.

+

Application Key Usage:

+
    +
  1. Key Creation: Users generate a new keypair in their browser.
  2. +
  3. Verification: +
      +
    • A Verifiable Presentation Request is sent to the node, which responds with a challenge.
    • +
    • The challenge and public key are signed using the node key.
    • +
    • Upon node verification of the request and signature, the new key is cleared for JSONRPC API communication from the browser to the node.
    • +
    +
  4. +
+

Calimero's TypeScript SDK supports developers in building browser and CLI applications by simplifying interaction with the network.

+

This key management setup underpins secure and efficient operations within the Calimero Network, facilitating both node and application functionalities.

Was this page helpful?
Need some help? Check Support page
+ + \ No newline at end of file diff --git a/learn/core-concepts/node/admin-client-api/index.html b/learn/core-concepts/node/admin-client-api/index.html new file mode 100644 index 00000000..002d469d --- /dev/null +++ b/learn/core-concepts/node/admin-client-api/index.html @@ -0,0 +1,106 @@ + + + + + +Admin Client API | Calimero 2.0 + + + + +

Admin Client API

About Admin Client API​

+

Our Admin Client API offers a comprehensive set of endpoints designed to facilitate the management and administration of the node states. +With intuitive routes and robust handlers, administrators can seamlessly navigate various node operations with ease and efficiency. +The Admin Client API, paired with the Admin UI β€” a web application, is your go-to tool for managing node states, +simplifying interactions with the server.

+

The Admin API empowers you to:

+
    +
  • Revoke root keys
  • +
  • Request validation challenge
  • +
  • Install and list node applications
  • +
  • Fetch decentralized identifiers (DID)
  • +
  • Manage client keys
  • +
+

In essence, the Admin API simplifies node management, while the Admin UI offers an intuitive interface for seamless control.

+

How to Use​

+

To utilize the Admin API endpoints effectively, the recommended approach is to leverage the Admin UI web application. The Admin UI automates various steps involved in interacting with the Admin API, ensuring seamless integration and providing the best user experience.

+

By using the Admin UI, administrators can streamline their workflow, access essential functionalities with ease, and benefit from intuitive visualizations and controls. This approach not only simplifies the management of decentralized networks but also ensures that administrators have access to the best options and features available.

+

API Endpoints​

+
    +
  1. +

    Root Key Request - This endpoint allows administrators to add root keys for secure authentication and access control within the decentralized network environment. +Validation Challenge Generation

    +

    Pre requirements - Before calling "Root Key Request" endpoint, it is essential to first call the "/request-challenge" endpoint. This step is necessary as the "Root Key Request" endpoint requires a challenge to be passed and verified during the process of adding the root key

    +

    POST /root-key

    +

    Parameters:

    +
      +
    • accountId : The account identifier associated with the request.
    • +
    • signature : The signature generated by signing the challenge and message with the wallet.
    • +
    • publicKey : The public key used for verification.
    • +
    • callbackUrl : The URL to which the response callback should be sent.
    • +
    +

    Note: The parameters for this POST request, including accountId, signature, and publicKey, are generated by signing the challenge and message with the wallet.

    +

    Example call with curl

    +
    curl -X POST \
    -H "Content-Type: application/json" \
    -d '{"accountId": "<ACCOUNT_ID>", "signature": "<SIGNATURE>", "publicKey": "<PUBLIC_KEY>", "callbackUrl": "<CALLBACK_URL>"}' \
    http://<NODE-URL>/admin-api/root-key
    +

    Example response

    +
    > Success response
    { data: "Root key added" }
    > Error response
    { error: "Failed to add root key: <error_message>" }
    +
  2. +
  3. +

    Request authentication challenge - Administrators can utilize this endpoint to generate validation challenges, enabling users to authenticate their identity via wallet signatures for enhanced security measures.

    +

    POST /request-challenge

    +

    Example call with curl

    +
    curl -X POST http://<NODE-URL>/admin-api/request-challenge
    +

    Example response

    +
    > Success response
    { data: { challenge: <challenge> } }
    > Error response
    { error: "Failed to fetch challenge: <error_message>" }
    +
  4. +
  5. +

    Install Application - This endpoint facilitates the installation of new applications on the node, expanding the functionality and capabilities of the decentralized network ecosystem.

    +

    POST /install-application

    +

    Parameters:

    +
      +
    • application : Application name - can be selected from the Admin UI
    • +
    • version : Application release version - can be selected from the Admin UI
    • +
    +

    Example call with curl

    +
    curl -X POST \
    -H "Content-Type: application/json" \
    -d '{"application": "<APPLICATION_NAME>", "version": "<VERSION>"}' \
    http://<NODE-URL>/admin-api/install-application
    +

    Example response

    +
    > Success response
    { data: "Application Installed" }
    > Error response
    { error: "Failed to install application: <error_message>" }
    +
  6. +
  7. +

    List installed Application - This endpoint returns a list of installed applications, providing valuable insights into the current state of the decentralized network ecosystem

    +

    GET /applications

    +

    Example call with curl

    +
    curl -X GET http://<NODE-URL>/admin-api/applications
    +

    Example response

    +
    > Success response
    { data: {
    applications:
    [{
    application_name: <application_name>,
    version: <application_version>
    }]
    }}
    > Error response
    { error: "Failed to fetch installed applications: <error_message>" }
    +
  8. +
  9. +

    Add Client Key - Administrators can add new client keys via this endpoint, enabling seamless access and authentication for authorized users within the network.

    +

    POST /add-client-key

    +

    Parameters:

    +
      +
    • +

      wallet_signature : Signature generated with the wallet

      +
    • +
    • +

      payload : Reqest payload containing message and metadata

      +
    • +
    • +

      wallet_metadata : Crypto wallet metadata containing information for wallet_type and signing_key

      +

      Example call with curl

      +
    • +
    +
    curl -X POST \
    -H "Content-Type: application/json" \
    -d '{"wallet_signature": "<WALLET_SIGNATURE>", "payload": { "message": <MESSAGE>, "metadata": <METADATA_VALUE>}. "wallet_metadata": {"wallet_type": <WALLET_TYPE>, "signing_key": <SIGNING_KEY>}}' \
    http://<NODE-URL>/admin-api/add-client-key
    +

    Example response

    +
    > Success response
    { data: "Client key stored" }
    > Error response
    { error: "Failed to add client key: <error_message>" }
    +
  10. +
  11. +

    Get the DID - Fetches the Decentralized Identifier (DID) associated with the node, providing a unique identifier for network entities and enabling interoperability across decentralized applications.

    +

    GET /did

    +
    curl -X GET http://<NODE-URL>/admin-api/did
    +

    Example response

    +
    > Success response
    { data:
    {
    id: <id>,
    root_keys:
    [{
    signing_key: <signing_key>
    }]
    }
    }
    > Error response
    { error: "Failed to fetch DID: <error_message>" }
    +
  12. +
Was this page helpful?
Need some help? Check Support page
+ + \ No newline at end of file diff --git a/learn/core-concepts/node/client-node/index.html b/learn/core-concepts/node/client-node/index.html new file mode 100644 index 00000000..1a866580 --- /dev/null +++ b/learn/core-concepts/node/client-node/index.html @@ -0,0 +1,39 @@ + + + + + +Client Node | Calimero 2.0 + + + + +

Client Node

Runtime​

+

Overview: The runtime environment of a client node in the Calimero Network is crucial for the execution of decentralized applications (DApps), particularly those compiled to WebAssembly (WASM).

+

Functionality:

+
    +
  • State Synchronization: Each node can download and synchronize the state with existing applications, ensuring that all nodes participating in a particular application network are consistent and up-to-date.
  • +
  • Application Settings: Nodes can be configured with specific settings for each application, including which WASM modules to run, source URLs for fetching these modules, encryption protocols to be used, and more.
  • +
  • Network Topology & Update Rules: Defines the structure of the network and how nodes communicate and update each other. Proper update rules are crucial for application security and integrity, particularly in a decentralized setting where trust is distributed.
  • +
+

Recommendations for Developers: Thorough testing of applications in a controlled environment is advised before deploying them in production to ensure stability and security. Additionally, developers are encouraged to implement locked update rules to prevent unauthorized modifications to the application's behavior.​

+

Storage​

+

Overview: Storage on client nodes involves maintaining the state and data required for the decentralized applications they support.

+

Functionality:

+
    +
  • Local Storage: Each node stores application data locally, contributing to the overall decentralized storage model of the network. This ensures that data is distributed across the network, enhancing privacy and resilience against central points of failure.
  • +
+

Encryption:​

+

Data stored on client nodes can be encrypted, providing an additional layer of security and privacy for user data.

+

Identity Management​

+

Overview: Managing identities on the Calimero Network is fundamental for ensuring secure and private interactions between nodes and applications. +Functionality:

+

Authentication​

+

Nodes implement mechanisms for authenticating users and applications, ensuring that interactions are secure and that entities are who they claim to be.

+

Key Management​

+

The management of cryptographic keys is an integral part of identity management, enabling secure communication and data encryption across the network.

+

Application Marketplace​

+

Current State: The marketplace for decentralized applications within the Calimero Network is facilitated by a smart contract on the NEAR blockchain, with application data and metadata hosted on IPFS. This setup serves as a temporary solution while further community engagement and discussions are underway to refine the marketplace's infrastructure and governance. +The Calimero Network's approach to client nodes emphasizes security, decentralization, and privacy, with a strong recommendation for users to engage with applications that have securely locked update mechanisms. These applications are more reliable for critical use cases and are the only ones featured in the official marketplace, ensuring a curated and trustworthy selection of DApps for users. This framework demonstrates Calimero Network's commitment to building a secure and user-centric decentralized ecosystem.

Was this page helpful?
Need some help? Check Support page
+ + \ No newline at end of file diff --git a/learn/core-concepts/node/network/index.html b/learn/core-concepts/node/network/index.html new file mode 100644 index 00000000..084d5816 --- /dev/null +++ b/learn/core-concepts/node/network/index.html @@ -0,0 +1,138 @@ + + + + + +Network | Calimero 2.0 + + + + +

Network

Overview​

+

This document provides an overview of the networking component of Calimero Network, which is implemented using the libp2p library. The network consists of two types of peers: client nodes and boot nodes, each serving distinct roles and utilizing specific protocols to facilitate peer-to-peer communication. +Client node is the component which hosts and runs client applications, communicates and shares data between other client nodes. +Boot node is the component used for the initial discovery of the peers in the network.

+

Node Types​

+

Client Node​

+
    +
  • +

    Deployment: Can run on any machine

    +
  • +
  • +

    Protocols Utilized:

    + +
  • +
  • +

    Behavior:

    +
      +
    • Configuration: A client node can be configured to use zero boot nodes.
    • +
    • External Address: +
        +
      • Direct Public External Address: Nodes with a direct public external address do not require reservation at the relay server. These nodes publish their public external address to the Kademlia DHT, making them directly accessible to other peers.
      • +
      • Relayed External Address: Nodes that do not have a direct public external address, typically those behind a NAT or firewall, can obtain a relayed external address by requesting a reservation at a relay server. Once the reservation is accepted, the node publishes its new external address to the rendezvous server. This allows other nodes to discover relayed addresses of a peers in a certain rendezvous namespace. The relay server can be used for the coordination of the hole punching between two nodes. If the hole punching attempt fails, the relay server will bridge the traffic.
      • +
      +
    • +
    • Discovery Protocols: mDNS, rendezvous and Kademlia
    • +
    • Connection Management: A peer, identified via PeerId, can be discovered either via mDNS, rendezvous or Kademlia. mDNS discovery provides local network addresses, rendezvous discovery provides relayed addresses, and Kademlia discovery provides direct public external addresses. The node maintains information about its connections to peers, including the discovery source. For a discovered external address, either relayed or direct public, the node will only attempt to dial the peer if the same peer is not already connected via a discovered local address. This ensures that local connections have higher priority and that there are no unnecessary hole punching attempts.
    • +
    • Message Relaying: The node participates in the gossipsub protocol, relaying messages to all connected peers that support it. This enables efficient and scalable message dissemination across the network.
    • +
    +
  • +
+

Boot Node​

+
    +
  • +

    Deployment: Must run on a publicly available machine with a static IP address.

    +
  • +
  • +

    Protocols Utilized:

    + +
  • +
  • +

    Behavior:

    +
      +
    • Characteristics: Boot nodes are publicly available, long-running nodes that provide stable entry points to the network.
    • +
    • Functions: +
        +
      • Bootstrap Node: Acts as a well-known peer for the Kademlia protocol, facilitating peer discovery and network join operations.
      • +
      • Circuit Relay Server: Serves as a generic relay that provides the medium that facilitates the hole punching, enabling peers to establish direct connections even when they are behind NAT or firewalls. The relay server is used for the coordination of the hole punching between two nodes, and briding traffic if the hole punching attempt fails.
      • +
      • Rendezvous Server: Facilitates peer discovery by allowing nodes to register their presence and query for other peers within a shared rendezvous namespace. This enables dynamic and efficient peer-to-peer connections without relying on a static list of peers.
      • +
      +
    • +
    +
  • +
+

P2P protocols and techniques​

+

Protocol Descriptions​

+

DCUtR (Direct Connection Upgrade through Relay)​

+
    +
  • DCUtR is used to upgrade connections through relay nodes, allowing peers to establish direct connections even if they are behind NATs or firewalls. Peers initially connect via a relay node, then use the DCUtR protocol to attempt a direct connection, which reduces latency and bandwidth usage.
  • +
  • Reference: libp2p DCUtR Documentation
  • +
+

Gossipsub​

+
    +
  • Gossipsub is a scalable and efficient pub-sub protocol for message dissemination. It combines the best aspects of gossip protocols and topic-based pub-sub systems. It minimizes bandwidth usage by only gossiping metadata and ensuring that messages are only sent once per peer.
  • +
  • Reference: libp2p Gossipsub Documentation
  • +
+

Identify​

+
    +
  • The Identify protocol allows peers to identify themselves and share their capabilities with other peers. Peers exchange identification information such as supported protocols, listen addresses, and public keys. This helps peers make informed decisions about connecting and interacting.
  • +
  • Reference: libp2p Identify Documentation
  • +
+

Kademlia (Kad)​

+
    +
  • Kademlia is a distributed hash table (DHT) protocol used for peer discovery and data routing. It uses an XOR metric to ensure efficient and scalable peer lookup. Each node maintains a routing table with information about other nodes, facilitating quick lookups and robust network operation.
  • +
  • Reference: libp2p Kademlia DHT Documentation
  • +
+

mDNS (Multicast DNS)​

+
    +
  • mDNS enables local network peer discovery without the need for a central server. It uses multicast DNS to allow peers to find each other on the same local network by broadcasting their presence and listening for broadcasts from other peers.
  • +
  • Reference: libp2p mDNS Documentation
  • +
+

Ping​

+
    +
  • The Ping protocol measures the round-trip time (latency) between peers. It regularly pings connected peers and measures the time it takes for a response. This helps in maintaining healthy connections and understanding network latency.
  • +
  • Reference: libp2p Ping Documentation
  • +
+

Relay​

+
    +
  • The Relay protocol supports relay-based communication, allowing peers to communicate through intermediary nodes when direct connections are not possible. Nodes can use relay nodes to forward their traffic, which is especially useful for nodes behind NATs or firewalls. The protocol includes mechanisms for reserving relay slots and managing relay connections.
  • +
  • Reference: libp2p Relay Documentation
  • +
+

Rendezvous​

+
    +
  • The Rendezvous protocol enables peers to discover each other by registering at and querying a shared rendezvous point. This is useful for dynamically finding peers without needing a central directory or pre-established list of peers. Peers register their presence at a rendezvous server and can also query the server to find other peers.
  • +
  • Reference: libp2p Rendezvous Documentation
  • +
+

NAT Traversal Techniques​

+

One of the common techniques used for NAT traversal in P2P networks is Hole Punching. This technique allows two peers, each behind a NAT, to establish a direct connection with each other. Here's a brief explanation:

+
    +
  • Hole Punching: This technique involves three steps: +
      +
    • Step 1 - Connection to Public Server: Both peers initially connect to a public server (in this case, the relay server). This creates a NAT mapping (a "hole") for outgoing packets to the server.
    • +
    • Step 2 - Exchange of Address Information: The server shares the public address information of each peer with the other. This information includes the IP address and port number that the NAT has assigned for the connection to the server.
    • +
    • Step 3 - Direct Connection: Each peer sends a packet to the other peer's public address. Since a mapping for this address already exists in the NAT (from the connection to the server), the NAT forwards the packet to the appropriate internal address, and a direct connection is established.
    • +
    +
  • +
+

This technique is particularly useful in P2P networks, as it allows peers to communicate directly, reducing the load on relay servers and improving network efficiency. However, it's worth noting that hole punching may not work with all types of NATs, and success can depend on the specific NAT implementation and configuration.

+
Was this page helpful?
Need some help? Check Support page
+ + \ No newline at end of file diff --git a/learn/core-concepts/node/runtime/index.html b/learn/core-concepts/node/runtime/index.html new file mode 100644 index 00000000..eb7aa44c --- /dev/null +++ b/learn/core-concepts/node/runtime/index.html @@ -0,0 +1,37 @@ + + + + + +Runtime | Calimero 2.0 + + + + +

Runtime

The runtime environment in the Calimero Network is essential for executing decentralized applications (DApps). It acts as a bridge between the application logic, the network, and storage layers, ensuring seamless operation and integration. The runtime ensures secure, isolated, and efficient execution of applications by managing resources effectively, supporting real-time event handling, enabling scalability, and providing robust storage and transaction management.

+

Core Capabilities​

+
    +
  • +

    Security and Isolation: The runtime provides a secure execution environment for Calimero applications using WebAssembly (WASM). Each application is sandboxed in the WASM VM, ensuring proper isolation and preventing interference between applications. This setup also ensures that applications cannot access unauthorized resources, maintaining a secure environment.

    +
  • +
  • +

    Multi-Application Support: The runtime allows multiple applications to run concurrently on the same node and supports multiple instances (contexts) of the same application, each with its own state. This capability enhances the flexibility and scalability of the network.

    +
  • +
  • +

    Scoped Storage: The runtime manages storage by partitioning it and governing where each context stores its state. These implementation details are abstracted from the app developer, ensuring that storage management is handled seamlessly and securely.

    +
  • +
  • +

    Atomic Transactions: The runtime guarantees atomic transactions, ensuring that if a transaction fails, it is completely rolled back with no state updates or side effects detected. This guarantees consistency and reliability in the application's state and any connected clients.

    +
  • +
  • +

    Log Collection and Relaying Events: The runtime facilitates log collection and relays events emitted by the applications to connected clients, enabling real-time monitoring and interaction.

    +
  • +
  • +

    Resource Management: The runtime defines resource limits for applications to ensure fair usage and prevent malicious behavior. This includes limiting CPU, memory, and network usage to prevent any single application from monopolizing system resources or compromising the host system.

    +
  • +
  • +

    Task Management and Performance: The runtime keeps track of WASM instances up to a defined threshold, effortlessly queueing transactions to reuse live instances and shutting down stale ones to reclaim system resources. These optimizations ensure efficient resource utilization and improved performance.

    +
  • +
Was this page helpful?
Need some help? Check Support page
+ + \ No newline at end of file diff --git a/learn/core-concepts/node/server/index.html b/learn/core-concepts/node/server/index.html new file mode 100644 index 00000000..bb593fe1 --- /dev/null +++ b/learn/core-concepts/node/server/index.html @@ -0,0 +1,34 @@ + + + + + +Server | Calimero 2.0 + + + + +

Server

The server is a core component for interacting with a Calimero node. Calimero can be embedded with your client to make it a self-contained node, or it can run as a remote node that multiple clients can connect to, allowing centralized state management.

+

Core Capabilities​

+
    +
  • +

    JSON-RPC API: Provides a standardized way for clients to query or mutate the state of their counterpart applications on the node, ensuring seamless integration and communication.

    +
  • +
  • +

    WebSocket Interface: Allows clients to subscribe to events emitted from applications, enabling real-time reactions to activity triggered by other peers in the network.

    +
  • +
  • +

    Admin API: Manages various aspects of the node, including:

    +
      +
    • Context Administration: Create, delete, invite others to contexts, and accept invitations.
    • +
    • Storage Management: Track usage, view raw state storage for each context, and view encrypted blobs.
    • +
    • State Management: Manually garbage collect state-transitional transactions.
    • +
    • Network Management: Manually connect to peers and manage blocklists.
    • +
    • Application Management: Manage installed applications, create contexts from applications, delete applications if no contexts are associated, and manually sideload applications.
    • +
    • Peer Identity Management: Rotate peer identities without affecting context identities.
    • +
    • Node Metrics: Track network bandwidth usage, both total and by context, to manage resource usage effectively.
    • +
    +
  • +
Was this page helpful?
Need some help? Check Support page
+ + \ No newline at end of file diff --git a/learn/core-concepts/node/storage/index.html b/learn/core-concepts/node/storage/index.html new file mode 100644 index 00000000..f8f77e1e --- /dev/null +++ b/learn/core-concepts/node/storage/index.html @@ -0,0 +1,37 @@ + + + + + +Storage | Calimero 2.0 + + + + +

Storage

The storage component in the Calimero Network is essential for managing and maintaining the data generated and utilized by decentralized applications (DApps). It ensures data integrity, security, and efficient access, enabling seamless operation of applications within the network.

+

Core Capabilities​

+
    +
  • +

    Generic Storage Interface: Calimero provides a flexible storage interface that allows app developers to choose their preferred database. By default, Calimero uses RocksDB, but it can also support LevelDB, Sled, TigerBeetle, SQLite, or even cloud storage solutions like S3.

    +
  • +
  • +

    Context State Storage: The context state is backed by a Patricia-Trie structure flattened into the key-value map of the datastore. This structure ensures efficient state management and retrieval.

    +
  • +
  • +

    Data Blobs: The storage system handles non-state-transitional, encrypted blobs of data, similar to BitTorrent or IPFS. Nodes can lazily share these data blobs without needing centralized storage, ensuring efficient and secure data distribution across the network. By default, the blobstore is the local filesystem, but it can be configured to use any cloud storage option or content-addressed storage like IPFS.

    +
  • +
  • +

    Data Encryption: All data stored within the network is encrypted at rest, ensuring that sensitive information remains protected. This includes both state-transitional data and non-state-transitional data like attached files in DMs or collaborative document assets.

    +
  • +
  • +

    Efficient Data Operations: The storage component is optimized for quick data operations, ensuring that applications can access, retrieve, and update the data they need promptly. Caching mechanisms are employed to further improve data access speeds.

    +
  • +
  • +

    Garbage Collection: The system includes mechanisms for garbage collection using reference counting for trie data, allowing for the cleanup of obsolete or redundant data. This helps in maintaining optimal storage performance and resource utilization.

    +
  • +
  • +

    Metrics and Monitoring: The storage component provides detailed metrics on storage usage, including total usage and breakdowns by context. This allows for effective monitoring and management of storage resources.

    +
  • +
Was this page helpful?
Need some help? Check Support page
+ + \ No newline at end of file diff --git a/learn/terminology/index.html b/learn/terminology/index.html new file mode 100644 index 00000000..0f50bf5d --- /dev/null +++ b/learn/terminology/index.html @@ -0,0 +1,23 @@ + + + + + +Terminology | Calimero 2.0 + + + + +

Terminology

As projects grow, it's important to have a shared vocabulary to help communicate effectively. This page provides a list of terms used in the documentation and throughout the codebase.

+
    +
  • Node is any individual device or computer that participates in the network. To avoid confusion with network layer used in the protocol, instead of network we are using term Context.
  • +
  • Peer is a specific instance of a node within a P2P network that interacts with other peers. Peer represents user.
  • +
  • Peer Id is a unique identifier assigned to each peer in the network. It is used to distinguish between different peers and ensure that messages are delivered to the correct recipient.
  • +
  • Context is the core of the Calimero ecosystem. It is an application specific network designed to enable direct communication between users, eliminating the need for intermediaries
  • +
  • Application is a software program designed to perform specific tasks or solve particular problems. To ensure compatibility and functionality, it should be developed according to the protocol SDK instructions provided. Once developed, the application should be published in a format that others can use during runtime, specifically in WebAssembly (WASM) format. Developer can also build frontend for an application, deployed separately, allowing users to interact with an app directly. This user interface facilitates interaction with the underlying software, making the application accessible and user-friendly.
  • +
  • Root key is the public part of a wallet cryptographic key pair used to verify the signature of sensitive actions. This public key is used to ensure that any data or actions signed with the corresponding private key can be trusted. Essentially, the root key serves as a trust anchor, enabling users to validate the authenticity and integrity of operations or communications associated with the node. It does not grant direct control over the node but ensures that actions authenticated with the private part of the root key are legitimate.
  • +
  • Client key is a cryptographic key tailored for each user session, acting as a session key or token. Each client key must be signed with the root key to be valid which is done automatically during login. This ensures that only sessions authenticated by the trusted root key can interact with the node.
  • +
  • Specialized node is third-party node that augment a context's capacity and reliability. It participates in a context but have additional capabilities, providing various services while maintaining the decentralized nature of the network.
  • +
Was this page helpful?
Need some help? Check Support page
+ + \ No newline at end of file diff --git a/resources/community-and-support/index.html b/resources/community-and-support/index.html new file mode 100644 index 00000000..1a7998aa --- /dev/null +++ b/resources/community-and-support/index.html @@ -0,0 +1,28 @@ + + + + + +Community and Support | Calimero 2.0 + + + + +

Community and Support

+

We value our community and are here to support you. Here are the best ways to get in touch and find help:

+

GitHub​

+
    +
  • Issues: For development-related queries, bug reports, and feature requests, please use our GitHub Issues.
  • +
  • Discussions: For more extensive discussions on various topics, join our GitHub Discussions.
  • +
+

Discord​

+

For news, casual conversations, and random questions, join our Discord Server. It’s a great place to connect with other contributors, share ideas, and stay informed about the latest updates.

+

Social Media​

+

Stay connected and get the latest news and updates by following us on social media:

+
    +
  • LinkedIn: Follow us on LinkedIn for professional updates and networking opportunities.
  • +
  • Twitter: Stay up-to-date with our latest tweets by following us on Twitter.
  • +
+

Thank you for being a part of the Calimero community. Your contributions and engagement help us grow and improve!

Was this page helpful?
Need some help? Check Support page
+ + \ No newline at end of file diff --git a/resources/learning/index.html b/resources/learning/index.html new file mode 100644 index 00000000..3cfa92be --- /dev/null +++ b/resources/learning/index.html @@ -0,0 +1,20 @@ + + + + + +Learning | Calimero 2.0 + + + + +

Learning

+

Expand your knowledge and stay informed by exploring the following resources:

+

Learn More​

+
    +
  • Website: Visit our website for comprehensive information about the project, including features and documentation.
  • +
  • Blog: Check out our blog for insightful articles, tutorials, and the latest news about our project.
  • +
+

We provide a variety of resources to help you learn more about our project and stay up-to-date with the latest developments. Dive into our documentation, read our blog, and explore our website to get the most out of our project.

Was this page helpful?
Need some help? Check Support page
+ + \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 00000000..e7548cb9 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1 @@ +https://calimero-network.github.io/weekly0.5https://calimero-network.github.io/build/client-sdks/client-ts-sdkweekly0.5https://calimero-network.github.io/build/protocol-sdks/protocol-rs-sdkweekly0.5https://calimero-network.github.io/build/protocol-sdks/protocol-sdkweekly0.5https://calimero-network.github.io/build/publish-appweekly0.5https://calimero-network.github.io/build/quickstartweekly0.5https://calimero-network.github.io/contribute/bounty-programweekly0.5https://calimero-network.github.io/contribute/githubweekly0.5https://calimero-network.github.io/contribute/hackathonsweekly0.5https://calimero-network.github.io/explore/developers-quickstart/admin-dashboardweekly0.5https://calimero-network.github.io/explore/developers-quickstart/example-appweekly0.5https://calimero-network.github.io/explore/developers-quickstart/getting-startedweekly0.5https://calimero-network.github.io/explore/introweekly0.5https://calimero-network.github.io/learn/advanced-concepts/encryptionweekly0.5https://calimero-network.github.io/learn/advanced-concepts/specialized-nodesweekly0.5https://calimero-network.github.io/learn/architectureweekly0.5https://calimero-network.github.io/learn/core-concepts/applicationsweekly0.5https://calimero-network.github.io/learn/core-concepts/contextsweekly0.5https://calimero-network.github.io/learn/core-concepts/identityweekly0.5https://calimero-network.github.io/learn/core-concepts/node/admin-client-apiweekly0.5https://calimero-network.github.io/learn/core-concepts/node/client-nodeweekly0.5https://calimero-network.github.io/learn/core-concepts/node/networkweekly0.5https://calimero-network.github.io/learn/core-concepts/node/runtimeweekly0.5https://calimero-network.github.io/learn/core-concepts/node/serverweekly0.5https://calimero-network.github.io/learn/core-concepts/node/storageweekly0.5https://calimero-network.github.io/learn/terminologyweekly0.5https://calimero-network.github.io/resources/community-and-supportweekly0.5https://calimero-network.github.io/resources/learningweekly0.5 \ No newline at end of file