@hitchy/plugin-auth 0.3.7 → 0.3.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/.editorconfig +9 -0
  2. package/api/model/authorization/rule.js +1 -1
  3. package/api/model/role.js +1 -1
  4. package/api/model/user.js +1 -1
  5. package/api/policy/authentication.js +44 -13
  6. package/api/policy/user.js +1 -1
  7. package/api/service/auth/manager.js +2 -2
  8. package/api/service/authentication/passport.js +3 -3
  9. package/api/service/authentication/strategies.js +4 -4
  10. package/api/service/authorization/node.js +25 -17
  11. package/api/service/authorization/tree.js +10 -8
  12. package/api/service/session.js +150 -0
  13. package/index.js +2 -2
  14. package/package.json +12 -12
  15. package/public/404.html +21 -0
  16. package/public/api/config.html +100 -0
  17. package/public/api/controller/index.html +24 -0
  18. package/public/api/controller/user.html +29 -0
  19. package/public/api/index.html +24 -0
  20. package/public/api/model/authorization-rule.html +24 -0
  21. package/public/api/model/index.html +24 -0
  22. package/public/api/model/role.html +24 -0
  23. package/public/api/model/user-to-role.html +24 -0
  24. package/public/api/model/user.html +24 -0
  25. package/public/api/policy/authentication.html +28 -0
  26. package/public/api/policy/authorization.html +31 -0
  27. package/public/api/policy/index.html +24 -0
  28. package/public/api/policy/user.html +24 -0
  29. package/public/api/routing.html +40 -0
  30. package/public/api/service/auth-manager.html +24 -0
  31. package/public/api/service/authentication-passport.html +24 -0
  32. package/public/api/service/authentication-strategies.html +24 -0
  33. package/public/api/service/authorization-node.html +24 -0
  34. package/public/api/service/authorization-policy-generator.html +42 -0
  35. package/public/api/service/authorization-tree.html +24 -0
  36. package/public/api/service/index.html +24 -0
  37. package/public/assets/api_config.md.BiPnBhyk.js +77 -0
  38. package/public/assets/api_config.md.BiPnBhyk.lean.js +1 -0
  39. package/public/assets/api_controller_index.md.mhiyhr_C.js +1 -0
  40. package/public/assets/api_controller_index.md.mhiyhr_C.lean.js +1 -0
  41. package/public/assets/api_controller_user.md.BiFYPTow.js +6 -0
  42. package/public/assets/api_controller_user.md.BiFYPTow.lean.js +1 -0
  43. package/public/assets/api_index.md.j6eBaebO.js +1 -0
  44. package/public/assets/api_index.md.j6eBaebO.lean.js +1 -0
  45. package/public/assets/api_model_authorization-rule.md.CFNqudsp.js +1 -0
  46. package/public/assets/api_model_authorization-rule.md.CFNqudsp.lean.js +1 -0
  47. package/public/assets/api_model_index.md.Dw3UH73J.js +1 -0
  48. package/public/assets/api_model_index.md.Dw3UH73J.lean.js +1 -0
  49. package/public/assets/api_model_role.md.DFCGXTBA.js +1 -0
  50. package/public/assets/api_model_role.md.DFCGXTBA.lean.js +1 -0
  51. package/public/assets/api_model_user-to-role.md.QNC96rs-.js +1 -0
  52. package/public/assets/api_model_user-to-role.md.QNC96rs-.lean.js +1 -0
  53. package/public/assets/api_model_user.md.C2GSzwZj.js +1 -0
  54. package/public/assets/api_model_user.md.C2GSzwZj.lean.js +1 -0
  55. package/public/assets/api_policy_authentication.md.Ccj8Rneb.js +5 -0
  56. package/public/assets/api_policy_authentication.md.Ccj8Rneb.lean.js +1 -0
  57. package/public/assets/api_policy_authorization.md.CP3y7VOT.js +8 -0
  58. package/public/assets/api_policy_authorization.md.CP3y7VOT.lean.js +1 -0
  59. package/public/assets/api_policy_index.md.CmaeRtru.js +1 -0
  60. package/public/assets/api_policy_index.md.CmaeRtru.lean.js +1 -0
  61. package/public/assets/api_policy_user.md.ePU_LHGT.js +1 -0
  62. package/public/assets/api_policy_user.md.ePU_LHGT.lean.js +1 -0
  63. package/public/assets/api_routing.md.BP98xeNw.js +17 -0
  64. package/public/assets/api_routing.md.BP98xeNw.lean.js +1 -0
  65. package/public/assets/api_service_auth-manager.md.CcpV6slZ.js +1 -0
  66. package/public/assets/api_service_auth-manager.md.CcpV6slZ.lean.js +1 -0
  67. package/public/assets/api_service_authentication-passport.md.DvhoW1TR.js +1 -0
  68. package/public/assets/api_service_authentication-passport.md.DvhoW1TR.lean.js +1 -0
  69. package/public/assets/api_service_authentication-strategies.md.DjDT2F9g.js +1 -0
  70. package/public/assets/api_service_authentication-strategies.md.DjDT2F9g.lean.js +1 -0
  71. package/public/assets/api_service_authorization-node.md.DAN4WdDZ.js +1 -0
  72. package/public/assets/api_service_authorization-node.md.DAN4WdDZ.lean.js +1 -0
  73. package/public/assets/api_service_authorization-policy-generator.md.IaQjgxfZ.js +19 -0
  74. package/public/assets/api_service_authorization-policy-generator.md.IaQjgxfZ.lean.js +1 -0
  75. package/public/assets/api_service_authorization-tree.md.I7ff4vao.js +1 -0
  76. package/public/assets/api_service_authorization-tree.md.I7ff4vao.lean.js +1 -0
  77. package/public/assets/api_service_index.md.Bfk1E4Zn.js +1 -0
  78. package/public/assets/api_service_index.md.Bfk1E4Zn.lean.js +1 -0
  79. package/public/assets/app.Bnek3cfe.js +1 -0
  80. package/public/assets/chunks/framework.BaHG-QLs.js +17 -0
  81. package/public/assets/chunks/idp-login.B596H5Zv.js +1 -0
  82. package/public/assets/chunks/theme.BUrgq2uM.js +1 -0
  83. package/public/assets/guides_getting-started.md.BMwF59kE.js +5 -0
  84. package/public/assets/guides_getting-started.md.BMwF59kE.lean.js +1 -0
  85. package/public/assets/guides_index.md.CUqoqPFW.js +1 -0
  86. package/public/assets/guides_index.md.CUqoqPFW.lean.js +1 -0
  87. package/public/assets/guides_openid-connect.md.CWezg52j.js +49 -0
  88. package/public/assets/guides_openid-connect.md.CWezg52j.lean.js +1 -0
  89. package/public/assets/guides_saml.md.BBlq_CTl.js +44 -0
  90. package/public/assets/guides_saml.md.BBlq_CTl.lean.js +1 -0
  91. package/public/assets/idp-login.B4Dj1tzS.png +0 -0
  92. package/public/assets/idp-saml-cert.Dyrxdyfk.png +0 -0
  93. package/public/assets/index.md.B8uyAhM4.js +1 -0
  94. package/public/assets/index.md.B8uyAhM4.lean.js +1 -0
  95. package/public/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 +0 -0
  96. package/public/assets/inter-italic-cyrillic.By2_1cv3.woff2 +0 -0
  97. package/public/assets/inter-italic-greek-ext.1u6EdAuj.woff2 +0 -0
  98. package/public/assets/inter-italic-greek.DJ8dCoTZ.woff2 +0 -0
  99. package/public/assets/inter-italic-latin-ext.CN1xVJS-.woff2 +0 -0
  100. package/public/assets/inter-italic-latin.C2AdPX0b.woff2 +0 -0
  101. package/public/assets/inter-italic-vietnamese.BSbpV94h.woff2 +0 -0
  102. package/public/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 +0 -0
  103. package/public/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 +0 -0
  104. package/public/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 +0 -0
  105. package/public/assets/inter-roman-greek.BBVDIX6e.woff2 +0 -0
  106. package/public/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 +0 -0
  107. package/public/assets/inter-roman-latin.Di8DUHzh.woff2 +0 -0
  108. package/public/assets/inter-roman-vietnamese.BjW4sHH5.woff2 +0 -0
  109. package/public/assets/introduction.md.DjcXFFe8.js +9 -0
  110. package/public/assets/introduction.md.DjcXFFe8.lean.js +1 -0
  111. package/public/assets/style.C4vbPc5Z.css +1 -0
  112. package/public/guides/getting-started.html +28 -0
  113. package/public/guides/index.html +24 -0
  114. package/public/guides/openid-connect.html +73 -0
  115. package/public/guides/saml.html +68 -0
  116. package/public/hashmap.json +1 -0
  117. package/public/index.html +24 -0
  118. package/public/introduction.html +32 -0
@@ -0,0 +1 @@
1
+ import{_ as e,c as a,o as s,a2 as i}from"./chunks/framework.BaHG-QLs.js";const m=JSON.parse('{"title":"AuthManager","description":"","frontmatter":{"prev":"authentication-strategies.md","next":"authorization-tree.md"},"headers":[],"relativePath":"api/service/auth-manager.md","filePath":"api/service/auth-manager.md"}'),t={name:"api/service/auth-manager.md"},r=i('<h1 id="authmanager" tabindex="-1">AuthManager <a class="header-anchor" href="#authmanager" aria-label="Permalink to &quot;AuthManager&quot;">​</a></h1><p>This service provides several helper functions commonly useful on managing authentication and authorization at runtime.</p><div class="tip custom-block"><p class="custom-block-title">FYI</p><p>Due to supporting both parts, the name is reduced to common prefix <em>Auth</em> by intention.</p></div><h2 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to &quot;Properties&quot;">​</a></h2><h3 id="adminrole" tabindex="-1">adminRole <a class="header-anchor" href="#adminrole" aria-label="Permalink to &quot;adminRole&quot;">​</a></h3><p>This property commonly exposes name of role implicitly granting access to any resource without regards to existing authorization rules in runtime configuration or in local database. The resulting name depends on current runtime environment and runtime configuration.</p><h2 id="methods" tabindex="-1">Methods <a class="header-anchor" href="#methods" aria-label="Permalink to &quot;Methods&quot;">​</a></h2><h3 id="asuser" tabindex="-1">asUser() <a class="header-anchor" href="#asuser" aria-label="Permalink to &quot;asUser()&quot;">​</a></h3><p><strong>Signature:</strong> <code>async asUser( user, [ createIfMissing ] ): User</code></p><p>This wrapper is meant to assure that provided user is actually an instance of model <a href="./../model/user.html">User</a> existing in local database.</p><p>It takes a user&#39;s name, ...</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> user</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> AuthManager.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">asUser</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">( </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;john.doe&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> );</span></span></code></pre></div><p>... an object with property name selecting desired user (ignoring any other property in that object) ...</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> user</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> AuthManager.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">asUser</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">( { name: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;john.doe&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, foo: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;bar&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> } );</span></span></code></pre></div><p>... or the user&#39;s existing instance as input.</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> user</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> AuthManager.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">asUser</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">( </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> User</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">( uuid ) );</span></span></code></pre></div><p>It retrieves instance of user selected either way. Due to accepting instances of <a href="./../model/user.html">User</a>, it can be safely used multiple times.</p><p>Optional boolean parameter <code>createIfMissing</code> must be set true to implicitly create selected user in local database if missing. Otherwise, the method throws an error causing promised result to be rejected.</p><h3 id="asrole" tabindex="-1">asRole() <a class="header-anchor" href="#asrole" aria-label="Permalink to &quot;asRole()&quot;">​</a></h3><p><strong>Signature:</strong> <code>async asRole( role, [ createIfMissing ] ): Role</code></p><p>This is the counterpart to <a href="#asuser">asUser()</a> for simplifying access on roles. The same semantics apply.</p><h3 id="listrolesofuser" tabindex="-1">listRolesOfUser() <a class="header-anchor" href="#listrolesofuser" aria-label="Permalink to &quot;listRolesOfUser()&quot;">​</a></h3><p><strong>Signature:</strong> <code>async listRolesOfUser( user, [ createIfMissing ], [ uuidsOnly ] ): Roles[]</code></p><p>The method takes a user and qualifies it via <a href="#asuser">asUser()</a> before fetching list of user&#39;s associated roles. Argument for optional <code>createIfMissing</code> is forwarded to <code>asUser()</code> and <code>false</code> by default. Argument for optional <code>uuidsOnly</code> must be set explicitly to prevent listed instances of <a href="./../model/role.html">Role</a> to implicitly load their records from database.</p><h3 id="listusersofrole" tabindex="-1">listUsersOfRole() <a class="header-anchor" href="#listusersofrole" aria-label="Permalink to &quot;listUsersOfRole()&quot;">​</a></h3><p><strong>Signature:</strong> <code>async listUsersOfRole( role, [ createIfMissing ], [ uuidsOnly ] ): User[]</code></p><p>This method is the counterpart to <a href="#listrolesofuser">listRolesOfUser()</a>: it is querying local database for users associated with a given role. Provided role is qualified via <a href="#asrole">asRole()</a> with argument <code>createIfMissing</code> being forwarded.</p><p>Optional boolean parameter <code>uuidsOnly</code> must be set to prevent implicit retrieval of either listed user&#39;s record from database.</p><h3 id="grantroletouser" tabindex="-1">grantRoleToUser() <a class="header-anchor" href="#grantroletouser" aria-label="Permalink to &quot;grantRoleToUser()&quot;">​</a></h3><p><strong>Signature:</strong> <code>async grantRoleToUser( role, user, [ createIfMissing] ): void</code></p><p>This helper is provided for conveniently <a href="./../model/user-to-role.html">associating</a> a <a href="./../model/user.html">user</a> with a <a href="./../model/role.html">role</a>. Provided arguments for <code>role</code> and <code>user</code> are qualified with <a href="#asrole">asRole()</a> and <a href="#asuser">asUser()</a>. Optional argument for <code>createIfMissing</code> is forwarded to either method internally.</p><h3 id="revokerolefromuser" tabindex="-1">revokeRoleFromUser() <a class="header-anchor" href="#revokerolefromuser" aria-label="Permalink to &quot;revokeRoleFromUser()&quot;">​</a></h3><p><strong>Signature:</strong> <code>async revokeRoleFromUser( role, user, [ createIfMissing] ): void</code></p><p>This helper is provided for conveniently removing any existing <a href="./../model/user-to-role.html">association</a> between a <a href="./../model/user.html">user</a> and a <a href="./../model/role.html">role</a>. Provided arguments for <code>role</code> and <code>user</code> are qualified with <a href="#asrole">asRole()</a> and <a href="#asuser">asUser()</a>. Optional argument for <code>createIfMissing</code> is forwarded to either method internally.</p><h3 id="createadminifmissing" tabindex="-1">createAdminIfMissing() <a class="header-anchor" href="#createadminifmissing" aria-label="Permalink to &quot;createAdminIfMissing()&quot;">​</a></h3><p><strong>Signature:</strong> <code>async createAdminIfMissing(): void</code></p><p>This method is used during bootstrap to make sure there is always a user associated with configured <a href="#adminrole">administrator role</a> preventing any authorization management from locking out all existing users.</p>',37),o=[r];function n(l,h,d,p,c,u){return s(),a("div",null,o)}const k=e(t,[["render",n]]);export{m as __pageData,k as default};
@@ -0,0 +1 @@
1
+ import{_ as e,c as a,o as s,a2 as i}from"./chunks/framework.BaHG-QLs.js";const m=JSON.parse('{"title":"AuthManager","description":"","frontmatter":{"prev":"authentication-strategies.md","next":"authorization-tree.md"},"headers":[],"relativePath":"api/service/auth-manager.md","filePath":"api/service/auth-manager.md"}'),t={name:"api/service/auth-manager.md"},r=i("",37),o=[r];function n(l,h,d,p,c,u){return s(),a("div",null,o)}const k=e(t,[["render",n]]);export{m as __pageData,k as default};
@@ -0,0 +1 @@
1
+ import{_ as t,c as e,o as a,a2 as i}from"./chunks/framework.BaHG-QLs.js";const f=JSON.parse('{"title":"AuthenticationPassport","description":"","frontmatter":{"prev":"/api/service/","next":"authentication-strategies.md"},"headers":[],"relativePath":"api/service/authentication-passport.md","filePath":"api/service/authentication-passport.md"}'),s={name:"api/service/authentication-passport.md"},r=i('<h1 id="authenticationpassport" tabindex="-1">AuthenticationPassport <a class="header-anchor" href="#authenticationpassport" aria-label="Permalink to &quot;AuthenticationPassport&quot;">​</a></h1><p>This service integrates <a href="https://www.passportjs.org/" target="_blank" rel="noreferrer">Passport</a> with Hitchy&#39;s request routing. The service itself represents instance of Passport created for integration with Hitchy-based application.</p><p>This service is primarily for internal use. You should use it in edge cases to additionally customize Passport, only.</p><h2 id="methods" tabindex="-1">Methods <a class="header-anchor" href="#methods" aria-label="Permalink to &quot;Methods&quot;">​</a></h2><h3 id="integratewithhitchy" tabindex="-1">integrateWithHitchy() <a class="header-anchor" href="#integratewithhitchy" aria-label="Permalink to &quot;integrateWithHitchy()&quot;">​</a></h3><p><strong>Signature:</strong> <code>integrateWithHitchy(): void</code></p><p>This method has been implemented for internal use. It is executed on every incoming request</p><ul><li>to set up handlers persisting authenticated user&#39;s information to server-side session and restoring it from there in follow-up requests and</li><li>to instruct passport to <a href="https://www.passportjs.org/docs/configure/#strategies" target="_blank" rel="noreferrer">use</a> every configured strategy.</li></ul>',8),o=[r];function n(h,c,p,d,l,u){return a(),e("div",null,o)}const g=t(s,[["render",n]]);export{f as __pageData,g as default};
@@ -0,0 +1 @@
1
+ import{_ as t,c as e,o as a,a2 as i}from"./chunks/framework.BaHG-QLs.js";const f=JSON.parse('{"title":"AuthenticationPassport","description":"","frontmatter":{"prev":"/api/service/","next":"authentication-strategies.md"},"headers":[],"relativePath":"api/service/authentication-passport.md","filePath":"api/service/authentication-passport.md"}'),s={name:"api/service/authentication-passport.md"},r=i("",8),o=[r];function n(h,c,p,d,l,u){return a(),e("div",null,o)}const g=t(s,[["render",n]]);export{f as __pageData,g as default};
@@ -0,0 +1 @@
1
+ import{_ as t,c as e,o as a,a2 as r}from"./chunks/framework.BaHG-QLs.js";const _=JSON.parse('{"title":"AuthenticationStrategies","description":"","frontmatter":{"prev":"authentication-passport.md","next":"auth-manager.md"},"headers":[],"relativePath":"api/service/authentication-strategies.md","filePath":"api/service/authentication-strategies.md"}'),i={name:"api/service/authentication-strategies.md"},o=r('<h1 id="authenticationstrategies" tabindex="-1">AuthenticationStrategies <a class="header-anchor" href="#authenticationstrategies" aria-label="Permalink to &quot;AuthenticationStrategies&quot;">​</a></h1><p>This service helps with picking a default strategy. In addition, it exposes a strategy for local authentication. The latter is used on integrating <a href="https://www.passportjs.org/" target="_blank" rel="noreferrer">Passport</a> while bootstrapping your application and this plugin.</p><h2 id="methods" tabindex="-1">Methods <a class="header-anchor" href="#methods" aria-label="Permalink to &quot;Methods&quot;">​</a></h2><h3 id="defaultstrategy" tabindex="-1">defaultStrategy() <a class="header-anchor" href="#defaultstrategy" aria-label="Permalink to &quot;defaultStrategy()&quot;">​</a></h3><p><strong>Signature:</strong> <code>defaultStrategy(): string</code></p><p>Provides name of strategy to use by default depending on current application&#39;s configuration.</p><h3 id="generatelocal" tabindex="-1">generateLocal() <a class="header-anchor" href="#generatelocal" aria-label="Permalink to &quot;generateLocal()&quot;">​</a></h3><p><strong>Signature:</strong> <code>generateLocal(): Strategy</code></p><p>Creates custom instance of Passport&#39;s LocalStrategy set up for integrating with Hitchy&#39;s request routing.</p>',9),n=[o];function s(c,h,l,d,g,p){return a(),e("div",null,n)}const f=t(i,[["render",s]]);export{_ as __pageData,f as default};
@@ -0,0 +1 @@
1
+ import{_ as t,c as e,o as a,a2 as r}from"./chunks/framework.BaHG-QLs.js";const _=JSON.parse('{"title":"AuthenticationStrategies","description":"","frontmatter":{"prev":"authentication-passport.md","next":"auth-manager.md"},"headers":[],"relativePath":"api/service/authentication-strategies.md","filePath":"api/service/authentication-strategies.md"}'),i={name:"api/service/authentication-strategies.md"},o=r("",9),n=[o];function s(c,h,l,d,g,p){return a(),e("div",null,n)}const f=t(i,[["render",s]]);export{_ as __pageData,f as default};
@@ -0,0 +1 @@
1
+ import{_ as e,c as r,o,a2 as a}from"./chunks/framework.BaHG-QLs.js";const g=JSON.parse('{"title":"AuthorizationNode","description":"","frontmatter":{"prev":"authorization-tree.md","next":"authorization-policy-generator.md"},"headers":[],"relativePath":"api/service/authorization-node.md","filePath":"api/service/authorization-node.md"}'),t={name:"api/service/authorization-node.md"},n=a('<h1 id="authorizationnode" tabindex="-1">AuthorizationNode <a class="header-anchor" href="#authorizationnode" aria-label="Permalink to &quot;AuthorizationNode&quot;">​</a></h1><p>This class is primarily used by <a href="./authorization-tree.html">AuthorizationTree</a> to describe a tree of nodes.</p><h2 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to &quot;Properties&quot;">​</a></h2><h3 id="parent" tabindex="-1">parent <a class="header-anchor" href="#parent" aria-label="Permalink to &quot;parent&quot;">​</a></h3><p>Refers to parent authorization node in a tree of nodes. It is nullish on top-most node of tree.</p><h3 id="name" tabindex="-1">name <a class="header-anchor" href="#name" aria-label="Permalink to &quot;name&quot;">​</a></h3><p>Provides segment of resource name used to address this node in context of its parent node.</p><h2 id="methods" tabindex="-1">Methods <a class="header-anchor" href="#methods" aria-label="Permalink to &quot;Methods&quot;">​</a></h2><h3 id="clear" tabindex="-1">clear() <a class="header-anchor" href="#clear" aria-label="Permalink to &quot;clear()&quot;">​</a></h3><p><strong>Signature:</strong> <code>clear(): AuthorizationNode</code></p><p>Clears thread of current node by recursively invoking this very method on superordinated nodes before deleting any list of users and roles tracked in context of current node for being granted or revoked access on resource represented by current node.</p><p>Returns this node for daisy-chaining calls.</p><h3 id="addrole" tabindex="-1">addRole() <a class="header-anchor" href="#addrole" aria-label="Permalink to &quot;addRole()&quot;">​</a></h3><p><strong>Signature:</strong> <code>addRole( roleName, [ accept ] ): AuthorizationNode</code></p><p>Adds named role to current node for being granted or revoked access depending on optionally provided argument <code>accept</code>. On omitting or on providing <code>true</code>, access on resource represented by current node is granted to named role. Otherwise, access is revoked.</p><p>Returns this node for daisy-chaining calls.</p><h3 id="adduser" tabindex="-1">addUser() <a class="header-anchor" href="#adduser" aria-label="Permalink to &quot;addUser()&quot;">​</a></h3><p><strong>Signature:</strong> <code>addUser( userName, [ accept ] ): AuthorizationNode</code></p><p>Adds named user to current node for being granted or revoked access depending on optionally provided argument <code>accept</code>. On omitting or on providing <code>true</code>, access on resource represented by current node is granted to named user. Otherwise, access is revoked.</p><p>Returns this node for daisy-chaining calls.</p><h3 id="removerole" tabindex="-1">removeRole() <a class="header-anchor" href="#removerole" aria-label="Permalink to &quot;removeRole()&quot;">​</a></h3><p><strong>Signature:</strong> <code>removeRole( roleName, [ accept ] ): AuthorizationNode</code></p><p>Revokes previously granted or revoked access on resource represented by current node to/from named role. Optionally provided argument <code>accept</code> must be equivalent to what was provided on adding role before.</p><p>Returns this node for daisy-chaining calls.</p><h3 id="removeuser" tabindex="-1">removeUser() <a class="header-anchor" href="#removeuser" aria-label="Permalink to &quot;removeUser()&quot;">​</a></h3><p><strong>Signature:</strong> <code>removeUser( userName, [ accept ] ): AuthorizationNode</code></p><p>Revokes previously granted or revoked access on resource represented by current node to/from named user. Optionally provided argument <code>accept</code> must be equivalent to what was provided on adding role before.</p><p>Returns this node for daisy-chaining calls.</p><h3 id="getchild" tabindex="-1">getChild() <a class="header-anchor" href="#getchild" aria-label="Permalink to &quot;getChild()&quot;">​</a></h3><p><strong>Signature:</strong> <code>getChild( name, [ addIfMissing ] ): AuthorizationNode</code></p><p>Retrieves reference on node subordinated to current one representing immediate child of current resource in a hierarchy of resources.</p><p>Provided <code>name</code> must be a single segment&#39;s name, only. Optional argument <code>addIfMissing</code> must be <code>true</code> to always return another node. Otherwise, undefined is returned if selected child node does not exist.</p><h3 id="isauthorized" tabindex="-1">isAuthorized() <a class="header-anchor" href="#isauthorized" aria-label="Permalink to &quot;isAuthorized()&quot;">​</a></h3><p><strong>Signature:</strong> <code>isAuthorized( userName, roleName ): number</code></p><p>Checks if current nodes&#39; lists of grants and revokes for accessing represented resource are containing provided user name or role name.</p><p>The method returns</p><ul><li>-1 if user/role is revoked access on represented resource,</li><li>1 if user/role is granted access on represented resource and</li><li>0 if current node doesn&#39;t affect provided user or role.</li></ul><p>If either provided name of a user or role is granted access while the other is rejected, the method throws exception.</p><h3 id="isspare" tabindex="-1">isSpare() <a class="header-anchor" href="#isspare" aria-label="Permalink to &quot;isSpare()&quot;">​</a></h3><p><strong>Signature:</strong> <code>isSpare(): boolean</code></p><p>Detects if current node and all of its child nodes are spare by means of not granting or revoking access on their represented resource to/from any user or role.</p><p>This information is used on garbage collection to drop data in runtime memory which isn&#39;t actually required anymore.</p><h3 id="gc" tabindex="-1">gc() <a class="header-anchor" href="#gc" aria-label="Permalink to &quot;gc()&quot;">​</a></h3><p><strong>Signature:</strong> <code>gc(): AuthorizationNode</code></p><p>Runs garbage collection on thread of current node returning a reduced copy of current node&#39;s thread for replacement in scope of parent node. <code>undefined</code> is returned in case of current node being available for removal.</p><h3 id="path" tabindex="-1">path() <a class="header-anchor" href="#path" aria-label="Permalink to &quot;path()&quot;">​</a></h3><p><strong>Signature:</strong> <code>path(): string</code></p><p>Recursively compiles qualified name of resource represented by current node.</p>',48),i=[n];function d(s,c,l,h,u,p){return o(),r("div",null,i)}const f=e(t,[["render",d]]);export{g as __pageData,f as default};
@@ -0,0 +1 @@
1
+ import{_ as e,c as r,o,a2 as a}from"./chunks/framework.BaHG-QLs.js";const g=JSON.parse('{"title":"AuthorizationNode","description":"","frontmatter":{"prev":"authorization-tree.md","next":"authorization-policy-generator.md"},"headers":[],"relativePath":"api/service/authorization-node.md","filePath":"api/service/authorization-node.md"}'),t={name:"api/service/authorization-node.md"},n=a("",48),i=[n];function d(s,c,l,h,u,p){return o(),r("div",null,i)}const f=e(t,[["render",d]]);export{g as __pageData,f as default};
@@ -0,0 +1,19 @@
1
+ import{_ as s,c as i,o as a,a2 as e}from"./chunks/framework.BaHG-QLs.js";const u=JSON.parse('{"title":"AuthorizationPolicyGenerator","description":"","frontmatter":{"prev":"authorization-node.md","next":"../config.md"},"headers":[],"relativePath":"api/service/authorization-policy-generator.md","filePath":"api/service/authorization-policy-generator.md"}'),t={name:"api/service/authorization-policy-generator.md"},n=e(`<h1 id="authorizationpolicygenerator" tabindex="-1">AuthorizationPolicyGenerator <a class="header-anchor" href="#authorizationpolicygenerator" aria-label="Permalink to &quot;AuthorizationPolicyGenerator&quot;">​</a></h1><p>This service is generating functions suitable for <a href="https://core.hitchy.org/internals/routing-basics.html#policies" target="_blank" rel="noreferrer">policy-handling</a> requests. Generated functions filter mismatching requests thus help with writing more self-explanatory request routing configurations.</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>Users with administrator role always pass any generated policy.</p></div><h2 id="methods" tabindex="-1">Methods <a class="header-anchor" href="#methods" aria-label="Permalink to &quot;Methods&quot;">​</a></h2><h3 id="hasrole" tabindex="-1">hasRole() <a class="header-anchor" href="#hasrole" aria-label="Permalink to &quot;hasRole()&quot;">​</a></h3><p><strong>Signature:</strong> <code>hasRole( roles ): Hitchy.Core.RequestPolicyHandler</code></p><p>Generates request policy handler testing if a provided request&#39;s user is associated with one of the roles listed here. If request&#39;s user is associated with either role, the request processing is continued. Otherwise this policy responds with HTTP status code 403.</p><p>Argument <code>roles</code> is</p><ul><li>a string naming single role without any prefix or suffix or</li><li>an array of such strings.</li></ul><p>Returned function can be injected into runtime configuration for policies like this:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">module</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">exports</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> function</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() {</span></span>
2
+ <span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> const</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">hasRole</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.runtime.service.AuthorizationPolicyGenerator;</span></span>
3
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </span></span>
4
+ <span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
5
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> policies: {</span></span>
6
+ <span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;GET /api/premium&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">hasRole</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">( </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;customer&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ),</span></span>
7
+ <span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;GET /api/public&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">hasRole</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">( [ </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;guest&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;customer&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;manager&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ] ),</span></span>
8
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
9
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> };</span></span>
10
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">};</span></span></code></pre></div><h3 id="mayaccess-resource" tabindex="-1">mayAccess( resource ) <a class="header-anchor" href="#mayaccess-resource" aria-label="Permalink to &quot;mayAccess( resource )&quot;">​</a></h3><p><strong>Signature:</strong> <code>mayAccess( resource ): Hitchy.Core.RequestPolicyHandler</code></p><p>Generates request policy handler testing if a provided request&#39;s user is authorized to access any of the listed resources.</p><p>Argument <code>resource</code> is</p><ul><li>a string naming single resource or</li><li>an array of such resource names.</li></ul><p>Resulting handler can be injected into runtime configuration for policies like this:</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">module</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">exports</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> function</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">() {</span></span>
11
+ <span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> const</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">mayAccess</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> this</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">.runtime.service.AuthorizationPolicyGenerator;</span></span>
12
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </span></span>
13
+ <span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
14
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> policies: {</span></span>
15
+ <span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;GET /api/premium&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">mayAccess</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">( </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;plan.premium&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ),</span></span>
16
+ <span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;GET /api/export&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">mayAccess</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">( [ </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;plan.premium&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;level.manager&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ] ),</span></span>
17
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
18
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> };</span></span>
19
+ <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">};</span></span></code></pre></div>`,18),h=[n];function l(r,p,o,k,c,E){return a(),i("div",null,h)}const g=s(t,[["render",l]]);export{u as __pageData,g as default};
@@ -0,0 +1 @@
1
+ import{_ as s,c as i,o as a,a2 as e}from"./chunks/framework.BaHG-QLs.js";const u=JSON.parse('{"title":"AuthorizationPolicyGenerator","description":"","frontmatter":{"prev":"authorization-node.md","next":"../config.md"},"headers":[],"relativePath":"api/service/authorization-policy-generator.md","filePath":"api/service/authorization-policy-generator.md"}'),t={name:"api/service/authorization-policy-generator.md"},n=e("",18),h=[n];function l(r,p,o,k,c,E){return a(),i("div",null,h)}const g=s(t,[["render",l]]);export{u as __pageData,g as default};
@@ -0,0 +1 @@
1
+ import{_ as e,c as a,o,a2 as t}from"./chunks/framework.BaHG-QLs.js";const m=JSON.parse('{"title":"AuthorizationTree","description":"","frontmatter":{"prev":"auth-manager.md","next":"authorization-node.md"},"headers":[],"relativePath":"api/service/authorization-tree.md","filePath":"api/service/authorization-tree.md"}'),r={name:"api/service/authorization-tree.md"},i=t('<h1 id="authorizationtree" tabindex="-1">AuthorizationTree <a class="header-anchor" href="#authorizationtree" aria-label="Permalink to &quot;AuthorizationTree&quot;">​</a></h1><p>This service implements class for tracking state of authorizations by means of granting or revoking access on named resources to/from users and role in a tree of <a href="./authorization-node.html">nodes</a>.</p><p>In opposition to other services, this service is primarily a class which could be instantiated to describe a tree of authorization settings. It complies with existing services by <a href="#current">exposing a single instance as current tree of authorizations</a>, only.</p><p>On starting application, this plugin is processing runtime configuration and local database for existing <a href="./../model/authorization-rule.html">authorization rules</a> building this tree in runtime memory for improved authorizations testing during request routing.</p><h2 id="properties" tabindex="-1">Properties <a class="header-anchor" href="#properties" aria-label="Permalink to &quot;Properties&quot;">​</a></h2><h3 id="current" tabindex="-1">current <a class="header-anchor" href="#current" aria-label="Permalink to &quot;current&quot;">​</a></h3><p>This static property exposes single instance of current runtime representing the tree which has been set up by the plugin on starting application. This instance is implicitly updated by some actions affecting existing users, roles and authorization rules in local database.</p><h2 id="methods" tabindex="-1">Methods <a class="header-anchor" href="#methods" aria-label="Permalink to &quot;Methods&quot;">​</a></h2><div class="warning custom-block"><p class="custom-block-title">Instance methods</p><p>In opposition to other services, these methods are instance methods and thus are available e.g. on current tree, only.</p><p>Instead of writing</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">AuthorizationTree.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">addRule</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">( rule )</span></span></code></pre></div><p>you must write</p><div class="language-javascript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">AuthorizationTree.current.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">addRule</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">( rule )</span></span></code></pre></div></div><h3 id="selectnode" tabindex="-1">selectNode() <a class="header-anchor" href="#selectnode" aria-label="Permalink to &quot;selectNode()&quot;">​</a></h3><p><strong>Signature:</strong> <code>selectNode( selector, [ addIfMissing ], [ callback ] ): AuthorizationNode</code></p><p>This method descends into tree of nodes according to provided selector which is a resource&#39;s hierarchical name. If optional argument <code>addIfMissing</code> is <code>true</code>, any missing node is created on the fly assuring to always return a node representing selected resource.</p><p>When providing callback in third argument, it is invoked on every existing (or implicitly created) node passed while descending into tree. The callback is invoked with</p><ul><li>current node,</li><li>segment of selector a.k.a. resource name selecting this node in context of its parent,</li><li>the segment&#39;s index in list of segments extracted from selector and</li><li>the full list of segments to be processed.</li></ul><p>The callback may return <code>false</code> to prematurely stop descending into tree.</p><h3 id="clear" tabindex="-1">clear() <a class="header-anchor" href="#clear" aria-label="Permalink to &quot;clear()&quot;">​</a></h3><p><strong>Signature:</strong> <code>clear(): AuthorizationTree</code></p><p>Clears tree by recursive deleting all its nodes. Returns tree itself for daisy-chaining calls.</p><h3 id="addrule" tabindex="-1">addRule() <a class="header-anchor" href="#addrule" aria-label="Permalink to &quot;addRule()&quot;">​</a></h3><p><strong>Signature:</strong> <code>addRule( rule ): AuthorizationTree</code></p><p>Adjusts tree to represent provided <a href="./../model/authorization-rule.html">authorization rule</a>. The provided rule may be instance of model <a href="./../model/authorization-rule.html">AuthorizationRule</a> or any other object resembling authorization rules by providing equivalent properties <code>selector</code>, <code>user</code>, <code>role</code> and <code>accept</code>.</p><div class="warning custom-block"><p class="custom-block-title">Note</p><p>Adding a rule doesn&#39;t imply to eventually grant access on some resource.</p></div><p>The method returns current tree for daisy-chaining calls.</p><h3 id="removerule" tabindex="-1">removeRule() <a class="header-anchor" href="#removerule" aria-label="Permalink to &quot;removeRule()&quot;">​</a></h3><p><strong>Signature:</strong> <code>removeRule( rule ): AuthorizationTree</code></p><p>This is the counterpart of <a href="#addrule">addRule()</a>. It adjusts tree to stop representing provided <a href="./../model/authorization-rule.html">authorization rule</a>.</p><div class="warning custom-block"><p class="custom-block-title">Note</p><p>Removing a rule doesn&#39;t imply to eventually revoke access on some resource. It&#39;s reverting some previous change of tree, only.</p></div><div class="warning custom-block"><p class="custom-block-title">Note</p><p>When adding a rule multiple times, it will be counted as such. You need to remove the rule as many times as it has been added before to actually remove it from tree.</p></div><p>The method returns current tree for daisy-chaining calls.</p><h3 id="isauthorized" tabindex="-1">isAuthorized() <a class="header-anchor" href="#isauthorized" aria-label="Permalink to &quot;isAuthorized()&quot;">​</a></h3><p><strong>Signature:</strong> <code>isAuthorized( selector, user, role, [ acceptByDefault ] ): boolean</code></p><p>This method checks, whether tree is currently granting or revoking access on a selected resource to/from user and/or role.</p><div class="warning custom-block"><p class="custom-block-title">Note</p><p>Access on a resource can be granted or revoked on particular resource. It might be granted/revoked on a superordinated resource, too.</p></div><p>The method takes a user or a role and checks if it is affected by any rule tracked for either node of tree which is passed on descending into tree according to provided selector. If there is no rule on any passed node affecting provided user or role, the default provided in optional fourth argument is used, which is false by default, thus preventing access by default.</p><p>The method returns <code>true</code>, if access is granted, and <code>false</code> otherwise.</p><h3 id="gc" tabindex="-1">gc() <a class="header-anchor" href="#gc" aria-label="Permalink to &quot;gc()&quot;">​</a></h3><p><strong>Signature:</strong> <code>gc( [ force ] ): void</code></p><p>This method is meant to search tree for sparse threads and remove them if necessary. It is implicitly invoked each time a rule is removed with <a href="#removerule">removeRule()</a>, though garbage collection is triggered after seeing a certain number of calls, only. You can enforce a garbage collection by setting optional argument <code>force</code>.</p><h3 id="loadfromdatabase" tabindex="-1">loadFromDatabase() <a class="header-anchor" href="#loadfromdatabase" aria-label="Permalink to &quot;loadFromDatabase()&quot;">​</a></h3><p><strong>Signature:</strong> <code>async loadFromDatabase(): void</code></p><p>This method is reading all existing instances of <a href="./../model/authorization-rule.html">AuthorizationRule</a> from local database invoking <a href="#addrule">addRule()</a> on every found rule.</p><h3 id="loadfromconfiguration" tabindex="-1">loadFromConfiguration() <a class="header-anchor" href="#loadfromconfiguration" aria-label="Permalink to &quot;loadFromConfiguration()&quot;">​</a></h3><p><strong>Signature:</strong> <code>loadFromConfiguration( configuration ): void</code></p><p>The method searches provided configuration for describing rules in one of several supported formats and adds them to current tree. The provided configuration can be</p><ul><li>an object mapping resource names into <ul><li>a string naming user or role granted or revoked access on named resource,</li><li>a string naming multiple users and/or roles separated by comma with each granted or revoked access on resource,</li><li>an array of either sort of string or</li><li>an object providing <code>users</code> and <code>roles</code> or <code>grants</code> and <code>revokes</code> in separate properties each supporting a format similar to the one of strings described above and another map of relative resource names into rules for resources subordinated to current one.</li></ul></li></ul>',45),s=[i];function n(d,l,c,u,h,p){return o(),a("div",null,s)}const f=e(r,[["render",n]]);export{m as __pageData,f as default};
@@ -0,0 +1 @@
1
+ import{_ as e,c as a,o,a2 as t}from"./chunks/framework.BaHG-QLs.js";const m=JSON.parse('{"title":"AuthorizationTree","description":"","frontmatter":{"prev":"auth-manager.md","next":"authorization-node.md"},"headers":[],"relativePath":"api/service/authorization-tree.md","filePath":"api/service/authorization-tree.md"}'),r={name:"api/service/authorization-tree.md"},i=t("",45),s=[i];function n(d,l,c,u,h,p){return o(),a("div",null,s)}const f=e(r,[["render",n]]);export{m as __pageData,f as default};
@@ -0,0 +1 @@
1
+ import{_ as e,c as t,o as a,a2 as i}from"./chunks/framework.BaHG-QLs.js";const f=JSON.parse('{"title":"Services","description":"","frontmatter":{"prev":"../","next":false},"headers":[],"relativePath":"api/service/index.md","filePath":"api/service/index.md"}'),r={name:"api/service/index.md"},o=i('<h1 id="services" tabindex="-1">Services <a class="header-anchor" href="#services" aria-label="Permalink to &quot;Services&quot;">​</a></h1><p>Select one of the provided <a href="https://core.hitchy.org/internals/components.html#services" target="_blank" rel="noreferrer">services</a>:</p><ul><li><a href="./authentication-passport.html">AuthenticationPassport</a></li><li><a href="./authentication-strategies.html">AuthenticationStrategies</a></li><li><a href="./auth-manager.html">AuthManager</a></li><li><a href="./authorization-tree.html">AuthorizationTree</a></li><li><a href="./authorization-node.html">AuthorizationNode</a></li><li><a href="./authorization-policy-generator.html">AuthorizationPolicyGenerator</a></li></ul>',3),n=[o];function s(c,h,l,_,d,p){return a(),t("div",null,n)}const m=e(r,[["render",s]]);export{f as __pageData,m as default};
@@ -0,0 +1 @@
1
+ import{_ as e,c as t,o as a,a2 as i}from"./chunks/framework.BaHG-QLs.js";const f=JSON.parse('{"title":"Services","description":"","frontmatter":{"prev":"../","next":false},"headers":[],"relativePath":"api/service/index.md","filePath":"api/service/index.md"}'),r={name:"api/service/index.md"},o=i("",3),n=[o];function s(c,h,l,_,d,p){return a(),t("div",null,n)}const m=e(r,[["render",s]]);export{f as __pageData,m as default};
@@ -0,0 +1 @@
1
+ import{U as o,a3 as p,a4 as u,a5 as l,a6 as c,a7 as f,a8 as d,a9 as m,aa as h,ab as g,ac as A,d as P,u as v,y,x as w,ad as C,ae as R,af as b,ag as E}from"./chunks/framework.BaHG-QLs.js";import{R as S}from"./chunks/theme.BUrgq2uM.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(S),T=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=v();return y(()=>{w(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&C(),R(),b(),s.setup&&s.setup(),()=>E(s.Layout)}});async function _(){globalThis.__VITEPRESS__=!0;const e=D(),a=x();a.provide(u,e);const t=l(e.route);return a.provide(c,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function x(){return h(T)}function D(){let e=o,a;return g(t=>{let n=A(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&_().then(({app:e,router:a,data:t})=>{a.go().then(()=>{p(a.route,t.site),e.mount("#app")})});export{_ as createApp};
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @vue/shared v3.4.33
3
+ * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
+ * @license MIT
5
+ **//*! #__NO_SIDE_EFFECTS__ */function us(e,t){const n=new Set(e.split(","));return s=>n.has(s)}const se={},mt=[],Te=()=>{},po=()=>!1,Vt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),ds=e=>e.startsWith("onUpdate:"),le=Object.assign,hs=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},go=Object.prototype.hasOwnProperty,z=(e,t)=>go.call(e,t),V=Array.isArray,yt=e=>mn(e)==="[object Map]",Pr=e=>mn(e)==="[object Set]",K=e=>typeof e=="function",ie=e=>typeof e=="string",Je=e=>typeof e=="symbol",Z=e=>e!==null&&typeof e=="object",Nr=e=>(Z(e)||K(e))&&K(e.then)&&K(e.catch),Fr=Object.prototype.toString,mn=e=>Fr.call(e),mo=e=>mn(e).slice(8,-1),$r=e=>mn(e)==="[object Object]",ps=e=>ie(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,_t=us(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),yn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},yo=/-(\w)/g,Oe=yn(e=>e.replace(yo,(t,n)=>n?n.toUpperCase():"")),_o=/\B([A-Z])/g,Qe=yn(e=>e.replace(_o,"-$1").toLowerCase()),_n=yn(e=>e.charAt(0).toUpperCase()+e.slice(1)),nn=yn(e=>e?`on${_n(e)}`:""),Ye=(e,t)=>!Object.is(e,t),Fn=(e,...t)=>{for(let n=0;n<e.length;n++)e[n](...t)},Hr=(e,t,n,s=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},bo=e=>{const t=parseFloat(e);return isNaN(t)?e:t},vo=e=>{const t=ie(e)?Number(e):NaN;return isNaN(t)?e:t};let js;const jr=()=>js||(js=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function gs(e){if(V(e)){const t={};for(let n=0;n<e.length;n++){const s=e[n],r=ie(s)?So(s):gs(s);if(r)for(const i in r)t[i]=r[i]}return t}else if(ie(e)||Z(e))return e}const wo=/;(?![^(]*\))/g,Eo=/:([^]+)/,Co=/\/\*[^]*?\*\//g;function So(e){const t={};return e.replace(Co,"").split(wo).forEach(n=>{if(n){const s=n.split(Eo);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function ms(e){let t="";if(ie(e))t=e;else if(V(e))for(let n=0;n<e.length;n++){const s=ms(e[n]);s&&(t+=s+" ")}else if(Z(e))for(const n in e)e[n]&&(t+=n+" ");return t.trim()}const xo="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",To=us(xo);function Dr(e){return!!e||e===""}const Vr=e=>!!(e&&e.__v_isRef===!0),Ao=e=>ie(e)?e:e==null?"":V(e)||Z(e)&&(e.toString===Fr||!K(e.toString))?Vr(e)?Ao(e.value):JSON.stringify(e,Ur,2):String(e),Ur=(e,t)=>Vr(t)?Ur(e,t.value):yt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],i)=>(n[$n(s,i)+" =>"]=r,n),{})}:Pr(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>$n(n))}:Je(t)?$n(t):Z(t)&&!V(t)&&!$r(t)?String(t):t,$n=(e,t="")=>{var n;return Je(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/**
6
+ * @vue/reactivity v3.4.33
7
+ * (c) 2018-present Yuxi (Evan) You and Vue contributors
8
+ * @license MIT
9
+ **/let we;class Ro{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=we,!t&&we&&(this.index=(we.scopes||(we.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=we;try{return we=this,t()}finally{we=n}}}on(){we=this}off(){we=this.parent}stop(t){if(this._active){let n,s;for(n=0,s=this.effects.length;n<s;n++)this.effects[n].stop();for(n=0,s=this.cleanups.length;n<s;n++)this.cleanups[n]();if(this.scopes)for(n=0,s=this.scopes.length;n<s;n++)this.scopes[n].stop(!0);if(!this.detached&&this.parent&&!t){const r=this.parent.scopes.pop();r&&r!==this&&(this.parent.scopes[this.index]=r,r.index=this.index)}this.parent=void 0,this._active=!1}}}function Oo(e,t=we){t&&t.active&&t.effects.push(e)}function Br(){return we}function Lo(e){we&&we.cleanups.push(e)}let ct;class ys{constructor(t,n,s,r){this.fn=t,this.trigger=n,this.scheduler=s,this.active=!0,this.deps=[],this._dirtyLevel=4,this._trackId=0,this._runnings=0,this._shouldSchedule=!1,this._depsLength=0,Oo(this,r)}get dirty(){if(this._dirtyLevel===2||this._dirtyLevel===3){this._dirtyLevel=1,Ze();for(let t=0;t<this._depsLength;t++){const n=this.deps[t];if(n.computed&&(Io(n.computed),this._dirtyLevel>=4))break}this._dirtyLevel===1&&(this._dirtyLevel=0),et()}return this._dirtyLevel>=4}set dirty(t){this._dirtyLevel=t?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=qe,n=ct;try{return qe=!0,ct=this,this._runnings++,Ds(this),this.fn()}finally{Vs(this),this._runnings--,ct=n,qe=t}}stop(){this.active&&(Ds(this),Vs(this),this.onStop&&this.onStop(),this.active=!1)}}function Io(e){return e.value}function Ds(e){e._trackId++,e._depsLength=0}function Vs(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t<e.deps.length;t++)kr(e.deps[t],e);e.deps.length=e._depsLength}}function kr(e,t){const n=e.get(t);n!==void 0&&t._trackId!==n&&(e.delete(t),e.size===0&&e.cleanup())}let qe=!0,es=0;const Kr=[];function Ze(){Kr.push(qe),qe=!1}function et(){const e=Kr.pop();qe=e===void 0?!0:e}function _s(){es++}function bs(){for(es--;!es&&ts.length;)ts.shift()()}function Wr(e,t,n){if(t.get(e)!==e._trackId){t.set(e,e._trackId);const s=e.deps[e._depsLength];s!==t?(s&&kr(s,e),e.deps[e._depsLength++]=t):e._depsLength++}}const ts=[];function qr(e,t,n){_s();for(const s of e.keys()){let r;s._dirtyLevel<t&&(r??(r=e.get(s)===s._trackId))&&(s._shouldSchedule||(s._shouldSchedule=s._dirtyLevel===0),s._dirtyLevel=t),s._shouldSchedule&&(r??(r=e.get(s)===s._trackId))&&(s.trigger(),(!s._runnings||s.allowRecurse)&&s._dirtyLevel!==2&&(s._shouldSchedule=!1,s.scheduler&&ts.push(s.scheduler)))}bs()}const Gr=(e,t)=>{const n=new Map;return n.cleanup=e,n.computed=t,n},cn=new WeakMap,at=Symbol(""),ns=Symbol("");function be(e,t,n){if(qe&&ct){let s=cn.get(e);s||cn.set(e,s=new Map);let r=s.get(n);r||s.set(n,r=Gr(()=>s.delete(n))),Wr(ct,r)}}function He(e,t,n,s,r,i){const o=cn.get(e);if(!o)return;let l=[];if(t==="clear")l=[...o.values()];else if(n==="length"&&V(e)){const c=Number(s);o.forEach((u,d)=>{(d==="length"||!Je(d)&&d>=c)&&l.push(u)})}else switch(n!==void 0&&l.push(o.get(n)),t){case"add":V(e)?ps(n)&&l.push(o.get("length")):(l.push(o.get(at)),yt(e)&&l.push(o.get(ns)));break;case"delete":V(e)||(l.push(o.get(at)),yt(e)&&l.push(o.get(ns)));break;case"set":yt(e)&&l.push(o.get(at));break}_s();for(const c of l)c&&qr(c,4);bs()}function Mo(e,t){const n=cn.get(e);return n&&n.get(t)}const Po=us("__proto__,__v_isRef,__isVue"),Xr=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Je)),Us=No();function No(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const s=J(this);for(let i=0,o=this.length;i<o;i++)be(s,"get",i+"");const r=s[t](...n);return r===-1||r===!1?s[t](...n.map(J)):r}}),["push","pop","shift","unshift","splice"].forEach(t=>{e[t]=function(...n){Ze(),_s();const s=J(this)[t].apply(this,n);return bs(),et(),s}}),e}function Fo(e){Je(e)||(e=String(e));const t=J(this);return be(t,"has",e),t.hasOwnProperty(e)}class Yr{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){const r=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return i;if(n==="__v_raw")return s===(r?i?Xo:Zr:i?Qr:Jr).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const o=V(t);if(!r){if(o&&z(Us,n))return Reflect.get(Us,n,s);if(n==="hasOwnProperty")return Fo}const l=Reflect.get(t,n,s);return(Je(n)?Xr.has(n):Po(n))||(r||be(t,"get",n),i)?l:pe(l)?o&&ps(n)?l:l.value:Z(l)?r?wn(l):vn(l):l}}class zr extends Yr{constructor(t=!1){super(!1,t)}set(t,n,s,r){let i=t[n];if(!this._isShallow){const c=dt(i);if(!Ct(s)&&!dt(s)&&(i=J(i),s=J(s)),!V(t)&&pe(i)&&!pe(s))return c?!1:(i.value=s,!0)}const o=V(t)&&ps(n)?Number(n)<t.length:z(t,n),l=Reflect.set(t,n,s,r);return t===J(r)&&(o?Ye(s,i)&&He(t,"set",n,s):He(t,"add",n,s)),l}deleteProperty(t,n){const s=z(t,n);t[n];const r=Reflect.deleteProperty(t,n);return r&&s&&He(t,"delete",n,void 0),r}has(t,n){const s=Reflect.has(t,n);return(!Je(n)||!Xr.has(n))&&be(t,"has",n),s}ownKeys(t){return be(t,"iterate",V(t)?"length":at),Reflect.ownKeys(t)}}class $o extends Yr{constructor(t=!1){super(!0,t)}set(t,n){return!0}deleteProperty(t,n){return!0}}const Ho=new zr,jo=new $o,Do=new zr(!0);const vs=e=>e,bn=e=>Reflect.getPrototypeOf(e);function Kt(e,t,n=!1,s=!1){e=e.__v_raw;const r=J(e),i=J(t);n||(Ye(t,i)&&be(r,"get",t),be(r,"get",i));const{has:o}=bn(r),l=s?vs:n?Cs:Ft;if(o.call(r,t))return l(e.get(t));if(o.call(r,i))return l(e.get(i));e!==r&&e.get(t)}function Wt(e,t=!1){const n=this.__v_raw,s=J(n),r=J(e);return t||(Ye(e,r)&&be(s,"has",e),be(s,"has",r)),e===r?n.has(e):n.has(e)||n.has(r)}function qt(e,t=!1){return e=e.__v_raw,!t&&be(J(e),"iterate",at),Reflect.get(e,"size",e)}function Bs(e,t=!1){!t&&!Ct(e)&&!dt(e)&&(e=J(e));const n=J(this);return bn(n).has.call(n,e)||(n.add(e),He(n,"add",e,e)),this}function ks(e,t,n=!1){!n&&!Ct(t)&&!dt(t)&&(t=J(t));const s=J(this),{has:r,get:i}=bn(s);let o=r.call(s,e);o||(e=J(e),o=r.call(s,e));const l=i.call(s,e);return s.set(e,t),o?Ye(t,l)&&He(s,"set",e,t):He(s,"add",e,t),this}function Ks(e){const t=J(this),{has:n,get:s}=bn(t);let r=n.call(t,e);r||(e=J(e),r=n.call(t,e)),s&&s.call(t,e);const i=t.delete(e);return r&&He(t,"delete",e,void 0),i}function Ws(){const e=J(this),t=e.size!==0,n=e.clear();return t&&He(e,"clear",void 0,void 0),n}function Gt(e,t){return function(s,r){const i=this,o=i.__v_raw,l=J(o),c=t?vs:e?Cs:Ft;return!e&&be(l,"iterate",at),o.forEach((u,d)=>s.call(r,c(u),c(d),i))}}function Xt(e,t,n){return function(...s){const r=this.__v_raw,i=J(r),o=yt(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,u=r[e](...s),d=n?vs:t?Cs:Ft;return!t&&be(i,"iterate",c?ns:at),{next(){const{value:h,done:b}=u.next();return b?{value:h,done:b}:{value:l?[d(h[0]),d(h[1])]:d(h),done:b}},[Symbol.iterator](){return this}}}}function Ve(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Vo(){const e={get(i){return Kt(this,i)},get size(){return qt(this)},has:Wt,add:Bs,set:ks,delete:Ks,clear:Ws,forEach:Gt(!1,!1)},t={get(i){return Kt(this,i,!1,!0)},get size(){return qt(this)},has:Wt,add(i){return Bs.call(this,i,!0)},set(i,o){return ks.call(this,i,o,!0)},delete:Ks,clear:Ws,forEach:Gt(!1,!0)},n={get(i){return Kt(this,i,!0)},get size(){return qt(this,!0)},has(i){return Wt.call(this,i,!0)},add:Ve("add"),set:Ve("set"),delete:Ve("delete"),clear:Ve("clear"),forEach:Gt(!0,!1)},s={get(i){return Kt(this,i,!0,!0)},get size(){return qt(this,!0)},has(i){return Wt.call(this,i,!0)},add:Ve("add"),set:Ve("set"),delete:Ve("delete"),clear:Ve("clear"),forEach:Gt(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(i=>{e[i]=Xt(i,!1,!1),n[i]=Xt(i,!0,!1),t[i]=Xt(i,!1,!0),s[i]=Xt(i,!0,!0)}),[e,n,t,s]}const[Uo,Bo,ko,Ko]=Vo();function ws(e,t){const n=t?e?Ko:ko:e?Bo:Uo;return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(z(n,r)&&r in s?n:s,r,i)}const Wo={get:ws(!1,!1)},qo={get:ws(!1,!0)},Go={get:ws(!0,!1)};const Jr=new WeakMap,Qr=new WeakMap,Zr=new WeakMap,Xo=new WeakMap;function Yo(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function zo(e){return e.__v_skip||!Object.isExtensible(e)?0:Yo(mo(e))}function vn(e){return dt(e)?e:Es(e,!1,Ho,Wo,Jr)}function Jo(e){return Es(e,!1,Do,qo,Qr)}function wn(e){return Es(e,!0,jo,Go,Zr)}function Es(e,t,n,s,r){if(!Z(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const o=zo(e);if(o===0)return e;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function bt(e){return dt(e)?bt(e.__v_raw):!!(e&&e.__v_isReactive)}function dt(e){return!!(e&&e.__v_isReadonly)}function Ct(e){return!!(e&&e.__v_isShallow)}function ei(e){return e?!!e.__v_raw:!1}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function sn(e){return Object.isExtensible(e)&&Hr(e,"__v_skip",!0),e}const Ft=e=>Z(e)?vn(e):e,Cs=e=>Z(e)?wn(e):e;class ti{constructor(t,n,s,r){this.getter=t,this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new ys(()=>t(this._value),()=>Lt(this,this.effect._dirtyLevel===2?2:3)),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=s}get value(){const t=J(this);return(!t._cacheable||t.effect.dirty)&&Ye(t._value,t._value=t.effect.run())&&Lt(t,4),Ss(t),t.effect._dirtyLevel>=2&&Lt(t,2),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function Qo(e,t,n=!1){let s,r;const i=K(e);return i?(s=e,r=Te):(s=e.get,r=e.set),new ti(s,r,i||!r,n)}function Ss(e){var t;qe&&ct&&(e=J(e),Wr(ct,(t=e.dep)!=null?t:e.dep=Gr(()=>e.dep=void 0,e instanceof ti?e:void 0)))}function Lt(e,t=4,n,s){e=J(e);const r=e.dep;r&&qr(r,t)}function pe(e){return!!(e&&e.__v_isRef===!0)}function ae(e){return si(e,!1)}function ni(e){return si(e,!0)}function si(e,t){return pe(e)?e:new Zo(e,t)}class Zo{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:J(t),this._value=n?t:Ft(t)}get value(){return Ss(this),this._value}set value(t){const n=this.__v_isShallow||Ct(t)||dt(t);t=n?t:J(t),Ye(t,this._rawValue)&&(this._rawValue,this._rawValue=t,this._value=n?t:Ft(t),Lt(this,4))}}function ri(e){return pe(e)?e.value:e}const el={get:(e,t,n)=>ri(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return pe(r)&&!pe(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function ii(e){return bt(e)?e:new Proxy(e,el)}class tl{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:s}=t(()=>Ss(this),()=>Lt(this));this._get=n,this._set=s}get value(){return this._get()}set value(t){this._set(t)}}function nl(e){return new tl(e)}class sl{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return Mo(J(this._object),this._key)}}class rl{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function il(e,t,n){return pe(e)?e:K(e)?new rl(e):Z(e)&&arguments.length>1?ol(e,t,n):ae(e)}function ol(e,t,n){const s=e[t];return pe(s)?s:new sl(e,t,n)}/**
10
+ * @vue/runtime-core v3.4.33
11
+ * (c) 2018-present Yuxi (Evan) You and Vue contributors
12
+ * @license MIT
13
+ **/function Ge(e,t,n,s){try{return s?e(...s):e()}catch(r){En(r,t,n)}}function Ae(e,t,n,s){if(K(e)){const r=Ge(e,t,n,s);return r&&Nr(r)&&r.catch(i=>{En(i,t,n)}),r}if(V(e)){const r=[];for(let i=0;i<e.length;i++)r.push(Ae(e[i],t,n,s));return r}}function En(e,t,n,s=!0){const r=t?t.vnode:null;if(t){let i=t.parent;const o=t.proxy,l=`https://vuejs.org/error-reference/#runtime-${n}`;for(;i;){const u=i.ec;if(u){for(let d=0;d<u.length;d++)if(u[d](e,o,l)===!1)return}i=i.parent}const c=t.appContext.config.errorHandler;if(c){Ze(),Ge(c,null,10,[e,o,l]),et();return}}ll(e,n,r,s)}function ll(e,t,n,s=!0){console.error(e)}let $t=!1,ss=!1;const de=[];let Pe=0;const vt=[];let ke=null,it=0;const oi=Promise.resolve();let xs=null;function Cn(e){const t=xs||oi;return e?t.then(this?e.bind(this):e):t}function cl(e){let t=Pe+1,n=de.length;for(;t<n;){const s=t+n>>>1,r=de[s],i=Ht(r);i<e||i===e&&r.pre?t=s+1:n=s}return t}function Ts(e){(!de.length||!de.includes(e,$t&&e.allowRecurse?Pe+1:Pe))&&(e.id==null?de.push(e):de.splice(cl(e.id),0,e),li())}function li(){!$t&&!ss&&(ss=!0,xs=oi.then(ci))}function al(e){const t=de.indexOf(e);t>Pe&&de.splice(t,1)}function fl(e){V(e)?vt.push(...e):(!ke||!ke.includes(e,e.allowRecurse?it+1:it))&&vt.push(e),li()}function qs(e,t,n=$t?Pe+1:0){for(;n<de.length;n++){const s=de[n];if(s&&s.pre){if(e&&s.id!==e.uid)continue;de.splice(n,1),n--,s()}}}function an(e){if(vt.length){const t=[...new Set(vt)].sort((n,s)=>Ht(n)-Ht(s));if(vt.length=0,ke){ke.push(...t);return}for(ke=t,it=0;it<ke.length;it++){const n=ke[it];n.active!==!1&&n()}ke=null,it=0}}const Ht=e=>e.id==null?1/0:e.id,ul=(e,t)=>{const n=Ht(e)-Ht(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function ci(e){ss=!1,$t=!0,de.sort(ul);try{for(Pe=0;Pe<de.length;Pe++){const t=de[Pe];t&&t.active!==!1&&Ge(t,t.i,t.i?15:14)}}finally{Pe=0,de.length=0,an(),$t=!1,xs=null,(de.length||vt.length)&&ci()}}let he=null,Sn=null;function fn(e){const t=he;return he=e,Sn=e&&e.type.__scopeId||null,t}function qa(e){Sn=e}function Ga(){Sn=null}function dl(e,t=he,n){if(!t||e._n)return e;const s=(...r)=>{s._d&&or(-1);const i=fn(t);let o;try{o=e(...r)}finally{fn(i),s._d&&or(1)}return o};return s._n=!0,s._c=!0,s._d=!0,s}function Me(e,t,n,s){const r=e.dirs,i=t&&t.dirs;for(let o=0;o<r.length;o++){const l=r[o];i&&(l.oldValue=i[o].value);let c=l.dir[s];c&&(Ze(),Ae(c,n,8,[e.el,l,e,t]),et())}}const Ke=Symbol("_leaveCb"),Yt=Symbol("_enterCb");function hl(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return xt(()=>{e.isMounted=!0}),gi(()=>{e.isUnmounting=!0}),e}const Ce=[Function,Array],ai={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Ce,onEnter:Ce,onAfterEnter:Ce,onEnterCancelled:Ce,onBeforeLeave:Ce,onLeave:Ce,onAfterLeave:Ce,onLeaveCancelled:Ce,onBeforeAppear:Ce,onAppear:Ce,onAfterAppear:Ce,onAppearCancelled:Ce},fi=e=>{const t=e.subTree;return t.component?fi(t.component):t},pl={name:"BaseTransition",props:ai,setup(e,{slots:t}){const n=Ln(),s=hl();return()=>{const r=t.default&&di(t.default(),!0);if(!r||!r.length)return;let i=r[0];if(r.length>1){for(const b of r)if(b.type!==me){i=b;break}}const o=J(e),{mode:l}=o;if(s.isLeaving)return Hn(i);const c=Gs(i);if(!c)return Hn(i);let u=rs(c,o,s,n,b=>u=b);un(c,u);const d=n.subTree,h=d&&Gs(d);if(h&&h.type!==me&&!lt(c,h)&&fi(n).type!==me){const b=rs(h,o,s,n);if(un(h,b),l==="out-in"&&c.type!==me)return s.isLeaving=!0,b.afterLeave=()=>{s.isLeaving=!1,n.update.active!==!1&&(n.effect.dirty=!0,n.update())},Hn(i);l==="in-out"&&c.type!==me&&(b.delayLeave=(T,P,M)=>{const W=ui(s,h);W[String(h.key)]=h,T[Ke]=()=>{P(),T[Ke]=void 0,delete u.delayedLeave},u.delayedLeave=M})}return i}}},gl=pl;function ui(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function rs(e,t,n,s,r){const{appear:i,mode:o,persisted:l=!1,onBeforeEnter:c,onEnter:u,onAfterEnter:d,onEnterCancelled:h,onBeforeLeave:b,onLeave:T,onAfterLeave:P,onLeaveCancelled:M,onBeforeAppear:W,onAppear:G,onAfterAppear:X,onAppearCancelled:g}=t,m=String(e.key),I=ui(n,e),R=(L,_)=>{L&&Ae(L,s,9,_)},U=(L,_)=>{const N=_[1];R(L,_),V(L)?L.every(C=>C.length<=1)&&N():L.length<=1&&N()},D={mode:o,persisted:l,beforeEnter(L){let _=c;if(!n.isMounted)if(i)_=W||c;else return;L[Ke]&&L[Ke](!0);const N=I[m];N&&lt(e,N)&&N.el[Ke]&&N.el[Ke](),R(_,[L])},enter(L){let _=u,N=d,C=h;if(!n.isMounted)if(i)_=G||u,N=X||d,C=g||h;else return;let k=!1;const ee=L[Yt]=ne=>{k||(k=!0,ne?R(C,[L]):R(N,[L]),D.delayedLeave&&D.delayedLeave(),L[Yt]=void 0)};_?U(_,[L,ee]):ee()},leave(L,_){const N=String(e.key);if(L[Yt]&&L[Yt](!0),n.isUnmounting)return _();R(b,[L]);let C=!1;const k=L[Ke]=ee=>{C||(C=!0,_(),ee?R(M,[L]):R(P,[L]),L[Ke]=void 0,I[N]===e&&delete I[N])};I[N]=e,T?U(T,[L,k]):k()},clone(L){const _=rs(L,t,n,s,r);return r&&r(_),_}};return D}function Hn(e){if(xn(e))return e=ze(e),e.children=null,e}function Gs(e){if(!xn(e))return e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&K(n.default))return n.default()}}function un(e,t){e.shapeFlag&6&&e.component?un(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function di(e,t=!1,n){let s=[],r=0;for(let i=0;i<e.length;i++){let o=e[i];const l=n==null?o.key:String(n)+String(o.key!=null?o.key:i);o.type===_e?(o.patchFlag&128&&r++,s=s.concat(di(o.children,t,l))):(t||o.type!==me)&&s.push(l!=null?ze(o,{key:l}):o)}if(r>1)for(let i=0;i<s.length;i++)s[i].patchFlag=-2;return s}/*! #__NO_SIDE_EFFECTS__ */function hi(e,t){return K(e)?le({name:e.name},t,{setup:e}):e}const wt=e=>!!e.type.__asyncLoader,xn=e=>e.type.__isKeepAlive;function ml(e,t){pi(e,"a",t)}function yl(e,t){pi(e,"da",t)}function pi(e,t,n=ce){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(Tn(t,s,n),n){let r=n.parent;for(;r&&r.parent;)xn(r.parent.vnode)&&_l(s,t,n,r),r=r.parent}}function _l(e,t,n,s){const r=Tn(t,e,s,!0);An(()=>{hs(s[t],r)},n)}function Tn(e,t,n=ce,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{Ze();const l=Ut(n),c=Ae(t,n,e,o);return l(),et(),c});return s?r.unshift(i):r.push(i),i}}const De=e=>(t,n=ce)=>{(!In||e==="sp")&&Tn(e,(...s)=>t(...s),n)},bl=De("bm"),xt=De("m"),vl=De("bu"),wl=De("u"),gi=De("bum"),An=De("um"),El=De("sp"),Cl=De("rtg"),Sl=De("rtc");function xl(e,t=ce){Tn("ec",e,t)}const mi="components";function Xa(e,t){return _i(mi,e,!0,t)||e}const yi=Symbol.for("v-ndc");function Ya(e){return ie(e)?_i(mi,e,!1)||e:e||yi}function _i(e,t,n=!0,s=!1){const r=he||ce;if(r){const i=r.type;{const l=mc(i,!1);if(l&&(l===t||l===Oe(t)||l===_n(Oe(t))))return i}const o=Xs(r[e]||i[e],t)||Xs(r.appContext[e],t);return!o&&s?i:o}}function Xs(e,t){return e&&(e[t]||e[Oe(t)]||e[_n(Oe(t))])}function za(e,t,n,s){let r;const i=n;if(V(e)||ie(e)){r=new Array(e.length);for(let o=0,l=e.length;o<l;o++)r[o]=t(e[o],o,void 0,i)}else if(typeof e=="number"){r=new Array(e);for(let o=0;o<e;o++)r[o]=t(o+1,o,void 0,i)}else if(Z(e))if(e[Symbol.iterator])r=Array.from(e,(o,l)=>t(o,l,void 0,i));else{const o=Object.keys(e);r=new Array(o.length);for(let l=0,c=o.length;l<c;l++){const u=o[l];r[l]=t(e[u],u,l,i)}}else r=[];return r}function Ja(e,t,n={},s,r){if(he.isCE||he.parent&&wt(he.parent)&&he.parent.isCE)return t!=="default"&&(n.name=t),fe("slot",n,s&&s());let i=e[t];i&&i._c&&(i._d=!1),ji();const o=i&&bi(i(n)),l=Vi(_e,{key:(n.key||o&&o.key||`_${t}`)+(!o&&s?"_fb":"")},o||(s?s():[]),o&&e._===1?64:-2);return!r&&l.scopeId&&(l.slotScopeIds=[l.scopeId+"-s"]),i&&i._c&&(i._d=!0),l}function bi(e){return e.some(t=>pn(t)?!(t.type===me||t.type===_e&&!bi(t.children)):!0)?e:null}function Qa(e,t){const n={};for(const s in e)n[/[A-Z]/.test(s)?`on:${s}`:nn(s)]=e[s];return n}const is=e=>e?Ki(e)?Ls(e):is(e.parent):null,It=le(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>is(e.parent),$root:e=>is(e.root),$emit:e=>e.emit,$options:e=>As(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,Ts(e.update)}),$nextTick:e=>e.n||(e.n=Cn.bind(e.proxy)),$watch:e=>Ql.bind(e)}),jn=(e,t)=>e!==se&&!e.__isScriptSetup&&z(e,t),Tl={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:i,accessCache:o,type:l,appContext:c}=e;let u;if(t[0]!=="$"){const T=o[t];if(T!==void 0)switch(T){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(jn(s,t))return o[t]=1,s[t];if(r!==se&&z(r,t))return o[t]=2,r[t];if((u=e.propsOptions[0])&&z(u,t))return o[t]=3,i[t];if(n!==se&&z(n,t))return o[t]=4,n[t];os&&(o[t]=0)}}const d=It[t];let h,b;if(d)return t==="$attrs"&&be(e.attrs,"get",""),d(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(n!==se&&z(n,t))return o[t]=4,n[t];if(b=c.config.globalProperties,z(b,t))return b[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return jn(r,t)?(r[t]=n,!0):s!==se&&z(s,t)?(s[t]=n,!0):z(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:i}},o){let l;return!!n[o]||e!==se&&z(e,o)||jn(t,o)||(l=i[0])&&z(l,o)||z(s,o)||z(It,o)||z(r.config.globalProperties,o)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:z(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Za(){return Al().slots}function Al(){const e=Ln();return e.setupContext||(e.setupContext=qi(e))}function Ys(e){return V(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let os=!0;function Rl(e){const t=As(e),n=e.proxy,s=e.ctx;os=!1,t.beforeCreate&&zs(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:l,provide:c,inject:u,created:d,beforeMount:h,mounted:b,beforeUpdate:T,updated:P,activated:M,deactivated:W,beforeDestroy:G,beforeUnmount:X,destroyed:g,unmounted:m,render:I,renderTracked:R,renderTriggered:U,errorCaptured:D,serverPrefetch:L,expose:_,inheritAttrs:N,components:C,directives:k,filters:ee}=t;if(u&&Ol(u,s,null),o)for(const Y in o){const $=o[Y];K($)&&(s[Y]=$.bind(n))}if(r){const Y=r.call(n,n);Z(Y)&&(e.data=vn(Y))}if(os=!0,i)for(const Y in i){const $=i[Y],Fe=K($)?$.bind(n,n):K($.get)?$.get.bind(n,n):Te,Bt=!K($)&&K($.set)?$.set.bind(n):Te,tt=re({get:Fe,set:Bt});Object.defineProperty(s,Y,{enumerable:!0,configurable:!0,get:()=>tt.value,set:Le=>tt.value=Le})}if(l)for(const Y in l)vi(l[Y],s,n,Y);if(c){const Y=K(c)?c.call(n):c;Reflect.ownKeys(Y).forEach($=>{Fl($,Y[$])})}d&&zs(d,e,"c");function j(Y,$){V($)?$.forEach(Fe=>Y(Fe.bind(n))):$&&Y($.bind(n))}if(j(bl,h),j(xt,b),j(vl,T),j(wl,P),j(ml,M),j(yl,W),j(xl,D),j(Sl,R),j(Cl,U),j(gi,X),j(An,m),j(El,L),V(_))if(_.length){const Y=e.exposed||(e.exposed={});_.forEach($=>{Object.defineProperty(Y,$,{get:()=>n[$],set:Fe=>n[$]=Fe})})}else e.exposed||(e.exposed={});I&&e.render===Te&&(e.render=I),N!=null&&(e.inheritAttrs=N),C&&(e.components=C),k&&(e.directives=k)}function Ol(e,t,n=Te){V(e)&&(e=ls(e));for(const s in e){const r=e[s];let i;Z(r)?"default"in r?i=Et(r.from||s,r.default,!0):i=Et(r.from||s):i=Et(r),pe(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[s]=i}}function zs(e,t,n){Ae(V(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function vi(e,t,n,s){const r=s.includes(".")?Fi(n,s):()=>n[s];if(ie(e)){const i=t[e];K(i)&&Ne(r,i)}else if(K(e))Ne(r,e.bind(n));else if(Z(e))if(V(e))e.forEach(i=>vi(i,t,n,s));else{const i=K(e.handler)?e.handler.bind(n):t[e.handler];K(i)&&Ne(r,i,e)}}function As(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(u=>dn(c,u,o,!0)),dn(c,t,o)),Z(t)&&i.set(t,c),c}function dn(e,t,n,s=!1){const{mixins:r,extends:i}=t;i&&dn(e,i,n,!0),r&&r.forEach(o=>dn(e,o,n,!0));for(const o in t)if(!(s&&o==="expose")){const l=Ll[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const Ll={data:Js,props:Qs,emits:Qs,methods:Ot,computed:Ot,beforeCreate:ge,created:ge,beforeMount:ge,mounted:ge,beforeUpdate:ge,updated:ge,beforeDestroy:ge,beforeUnmount:ge,destroyed:ge,unmounted:ge,activated:ge,deactivated:ge,errorCaptured:ge,serverPrefetch:ge,components:Ot,directives:Ot,watch:Ml,provide:Js,inject:Il};function Js(e,t){return t?e?function(){return le(K(e)?e.call(this,this):e,K(t)?t.call(this,this):t)}:t:e}function Il(e,t){return Ot(ls(e),ls(t))}function ls(e){if(V(e)){const t={};for(let n=0;n<e.length;n++)t[e[n]]=e[n];return t}return e}function ge(e,t){return e?[...new Set([].concat(e,t))]:t}function Ot(e,t){return e?le(Object.create(null),e,t):t}function Qs(e,t){return e?V(e)&&V(t)?[...new Set([...e,...t])]:le(Object.create(null),Ys(e),Ys(t??{})):t}function Ml(e,t){if(!e)return t;if(!t)return e;const n=le(Object.create(null),e);for(const s in t)n[s]=ge(e[s],t[s]);return n}function wi(){return{app:null,config:{isNativeTag:po,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let Pl=0;function Nl(e,t){return function(s,r=null){K(s)||(s=le({},s)),r!=null&&!Z(r)&&(r=null);const i=wi(),o=new WeakSet;let l=!1;const c=i.app={_uid:Pl++,_component:s,_props:r,_container:null,_context:i,_instance:null,version:_c,get config(){return i.config},set config(u){},use(u,...d){return o.has(u)||(u&&K(u.install)?(o.add(u),u.install(c,...d)):K(u)&&(o.add(u),u(c,...d))),c},mixin(u){return i.mixins.includes(u)||i.mixins.push(u),c},component(u,d){return d?(i.components[u]=d,c):i.components[u]},directive(u,d){return d?(i.directives[u]=d,c):i.directives[u]},mount(u,d,h){if(!l){const b=fe(s,r);return b.appContext=i,h===!0?h="svg":h===!1&&(h=void 0),d&&t?t(b,u):e(b,u,h),l=!0,c._container=u,u.__vue_app__=c,Ls(b.component)}},unmount(){l&&(e(null,c._container),delete c._container.__vue_app__)},provide(u,d){return i.provides[u]=d,c},runWithContext(u){const d=Mt;Mt=c;try{return u()}finally{Mt=d}}};return c}}let Mt=null;function Fl(e,t){if(ce){let n=ce.provides;const s=ce.parent&&ce.parent.provides;s===n&&(n=ce.provides=Object.create(s)),n[e]=t}}function Et(e,t,n=!1){const s=ce||he;if(s||Mt){const r=s?s.parent==null?s.vnode.appContext&&s.vnode.appContext.provides:s.parent.provides:Mt._context.provides;if(r&&e in r)return r[e];if(arguments.length>1)return n&&K(t)?t.call(s&&s.proxy):t}}const Ei={},Ci=()=>Object.create(Ei),Si=e=>Object.getPrototypeOf(e)===Ei;function $l(e,t,n,s=!1){const r={},i=Ci();e.propsDefaults=Object.create(null),xi(e,t,r,i);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);n?e.props=s?r:Jo(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function Hl(e,t,n,s){const{props:r,attrs:i,vnode:{patchFlag:o}}=e,l=J(r),[c]=e.propsOptions;let u=!1;if((s||o>0)&&!(o&16)){if(o&8){const d=e.vnode.dynamicProps;for(let h=0;h<d.length;h++){let b=d[h];if(On(e.emitsOptions,b))continue;const T=t[b];if(c)if(z(i,b))T!==i[b]&&(i[b]=T,u=!0);else{const P=Oe(b);r[P]=cs(c,l,P,T,e,!1)}else T!==i[b]&&(i[b]=T,u=!0)}}}else{xi(e,t,r,i)&&(u=!0);let d;for(const h in l)(!t||!z(t,h)&&((d=Qe(h))===h||!z(t,d)))&&(c?n&&(n[h]!==void 0||n[d]!==void 0)&&(r[h]=cs(c,l,h,void 0,e,!0)):delete r[h]);if(i!==l)for(const h in i)(!t||!z(t,h))&&(delete i[h],u=!0)}u&&He(e.attrs,"set","")}function xi(e,t,n,s){const[r,i]=e.propsOptions;let o=!1,l;if(t)for(let c in t){if(_t(c))continue;const u=t[c];let d;r&&z(r,d=Oe(c))?!i||!i.includes(d)?n[d]=u:(l||(l={}))[d]=u:On(e.emitsOptions,c)||(!(c in s)||u!==s[c])&&(s[c]=u,o=!0)}if(i){const c=J(n),u=l||se;for(let d=0;d<i.length;d++){const h=i[d];n[h]=cs(r,c,h,u[h],e,!z(u,h))}}return o}function cs(e,t,n,s,r,i){const o=e[n];if(o!=null){const l=z(o,"default");if(l&&s===void 0){const c=o.default;if(o.type!==Function&&!o.skipFactory&&K(c)){const{propsDefaults:u}=r;if(n in u)s=u[n];else{const d=Ut(r);s=u[n]=c.call(null,t),d()}}else s=c}o[0]&&(i&&!l?s=!1:o[1]&&(s===""||s===Qe(n))&&(s=!0))}return s}const jl=new WeakMap;function Ti(e,t,n=!1){const s=n?jl:t.propsCache,r=s.get(e);if(r)return r;const i=e.props,o={},l=[];let c=!1;if(!K(e)){const d=h=>{c=!0;const[b,T]=Ti(h,t,!0);le(o,b),T&&l.push(...T)};!n&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}if(!i&&!c)return Z(e)&&s.set(e,mt),mt;if(V(i))for(let d=0;d<i.length;d++){const h=Oe(i[d]);Zs(h)&&(o[h]=se)}else if(i)for(const d in i){const h=Oe(d);if(Zs(h)){const b=i[d],T=o[h]=V(b)||K(b)?{type:b}:le({},b);if(T){const P=nr(Boolean,T.type),M=nr(String,T.type);T[0]=P>-1,T[1]=M<0||P<M,(P>-1||z(T,"default"))&&l.push(h)}}}const u=[o,l];return Z(e)&&s.set(e,u),u}function Zs(e){return e[0]!=="$"&&!_t(e)}function er(e){return e===null?"null":typeof e=="function"?e.name||"":typeof e=="object"&&e.constructor&&e.constructor.name||""}function tr(e,t){return er(e)===er(t)}function nr(e,t){return V(t)?t.findIndex(n=>tr(n,e)):K(t)&&tr(t,e)?0:-1}const Ai=e=>e[0]==="_"||e==="$stable",Rs=e=>V(e)?e.map(xe):[xe(e)],Dl=(e,t,n)=>{if(t._n)return t;const s=dl((...r)=>Rs(t(...r)),n);return s._c=!1,s},Ri=(e,t,n)=>{const s=e._ctx;for(const r in e){if(Ai(r))continue;const i=e[r];if(K(i))t[r]=Dl(r,i,s);else if(i!=null){const o=Rs(i);t[r]=()=>o}}},Oi=(e,t)=>{const n=Rs(t);e.slots.default=()=>n},Li=(e,t,n)=>{for(const s in t)(n||s!=="_")&&(e[s]=t[s])},Vl=(e,t,n)=>{const s=e.slots=Ci();if(e.vnode.shapeFlag&32){const r=t._;r?(Li(s,t,n),n&&Hr(s,"_",r,!0)):Ri(t,s)}else t&&Oi(e,t)},Ul=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,o=se;if(s.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:Li(r,t,n):(i=!t.$stable,Ri(t,r)),o=t}else t&&(Oi(e,t),o={default:1});if(i)for(const l in r)!Ai(l)&&o[l]==null&&delete r[l]};function hn(e,t,n,s,r=!1){if(V(e)){e.forEach((b,T)=>hn(b,t&&(V(t)?t[T]:t),n,s,r));return}if(wt(s)&&!r)return;const i=s.shapeFlag&4?Ls(s.component):s.el,o=r?null:i,{i:l,r:c}=e,u=t&&t.r,d=l.refs===se?l.refs={}:l.refs,h=l.setupState;if(u!=null&&u!==c&&(ie(u)?(d[u]=null,z(h,u)&&(h[u]=null)):pe(u)&&(u.value=null)),K(c))Ge(c,l,12,[o,d]);else{const b=ie(c),T=pe(c);if(b||T){const P=()=>{if(e.f){const M=b?z(h,c)?h[c]:d[c]:c.value;r?V(M)&&hs(M,i):V(M)?M.includes(i)||M.push(i):b?(d[c]=[i],z(h,c)&&(h[c]=d[c])):(c.value=[i],e.k&&(d[e.k]=c.value))}else b?(d[c]=o,z(h,c)&&(h[c]=o)):T&&(c.value=o,e.k&&(d[e.k]=o))};o?(P.id=-1,ye(P,n)):P()}}}const Bl=Symbol("_vte"),kl=e=>e.__isTeleport;let sr=!1;const gt=()=>{sr||(console.error("Hydration completed but contains mismatches."),sr=!0)},Kl=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",Wl=e=>e.namespaceURI.includes("MathML"),zt=e=>{if(Kl(e))return"svg";if(Wl(e))return"mathml"},Jt=e=>e.nodeType===8;function ql(e){const{mt:t,p:n,o:{patchProp:s,createText:r,nextSibling:i,parentNode:o,remove:l,insert:c,createComment:u}}=e,d=(g,m)=>{if(!m.hasChildNodes()){n(null,g,m),an(),m._vnode=g;return}h(m.firstChild,g,null,null,null),an(),m._vnode=g},h=(g,m,I,R,U,D=!1)=>{D=D||!!m.dynamicChildren;const L=Jt(g)&&g.data==="[",_=()=>M(g,m,I,R,U,L),{type:N,ref:C,shapeFlag:k,patchFlag:ee}=m;let ne=g.nodeType;m.el=g,ee===-2&&(D=!1,m.dynamicChildren=null);let j=null;switch(N){case ft:ne!==3?m.children===""?(c(m.el=r(""),o(g),g),j=g):j=_():(g.data!==m.children&&(gt(),g.data=m.children),j=i(g));break;case me:X(g)?(j=i(g),G(m.el=g.content.firstChild,g,I)):ne!==8||L?j=_():j=i(g);break;case Pt:if(L&&(g=i(g),ne=g.nodeType),ne===1||ne===3){j=g;const Y=!m.children.length;for(let $=0;$<m.staticCount;$++)Y&&(m.children+=j.nodeType===1?j.outerHTML:j.data),$===m.staticCount-1&&(m.anchor=j),j=i(j);return L?i(j):j}else _();break;case _e:L?j=P(g,m,I,R,U,D):j=_();break;default:if(k&1)(ne!==1||m.type.toLowerCase()!==g.tagName.toLowerCase())&&!X(g)?j=_():j=b(g,m,I,R,U,D);else if(k&6){m.slotScopeIds=U;const Y=o(g);if(L?j=W(g):Jt(g)&&g.data==="teleport start"?j=W(g,g.data,"teleport end"):j=i(g),t(m,Y,null,I,R,zt(Y),D),wt(m)){let $;L?($=fe(_e),$.anchor=j?j.previousSibling:Y.lastChild):$=g.nodeType===3?ki(""):fe("div"),$.el=g,m.component.subTree=$}}else k&64?ne!==8?j=_():j=m.type.hydrate(g,m,I,R,U,D,e,T):k&128&&(j=m.type.hydrate(g,m,I,R,zt(o(g)),U,D,e,h))}return C!=null&&hn(C,null,R,m),j},b=(g,m,I,R,U,D)=>{D=D||!!m.dynamicChildren;const{type:L,props:_,patchFlag:N,shapeFlag:C,dirs:k,transition:ee}=m,ne=L==="input"||L==="option";if(ne||N!==-1){k&&Me(m,null,I,"created");let j=!1;if(X(g)){j=Ii(R,ee)&&I&&I.vnode.props&&I.vnode.props.appear;const $=g.content.firstChild;j&&ee.beforeEnter($),G($,g,I),m.el=g=$}if(C&16&&!(_&&(_.innerHTML||_.textContent))){let $=T(g.firstChild,m,g,I,R,U,D);for(;$;){gt();const Fe=$;$=$.nextSibling,l(Fe)}}else C&8&&g.textContent!==m.children&&(gt(),g.textContent=m.children);if(_){if(ne||!D||N&48)for(const $ in _)(ne&&($.endsWith("value")||$==="indeterminate")||Vt($)&&!_t($)||$[0]===".")&&s(g,$,null,_[$],void 0,I);else if(_.onClick)s(g,"onClick",null,_.onClick,void 0,I);else if(N&4&&bt(_.style))for(const $ in _.style)_.style[$]}let Y;(Y=_&&_.onVnodeBeforeMount)&&Se(Y,I,m),k&&Me(m,null,I,"beforeMount"),((Y=_&&_.onVnodeMounted)||k||j)&&Hi(()=>{Y&&Se(Y,I,m),j&&ee.enter(g),k&&Me(m,null,I,"mounted")},R)}return g.nextSibling},T=(g,m,I,R,U,D,L)=>{L=L||!!m.dynamicChildren;const _=m.children,N=_.length;for(let C=0;C<N;C++){const k=L?_[C]:_[C]=xe(_[C]),ee=k.type===ft;if(g){if(ee&&!L){let ne=_[C+1];ne&&(ne=xe(ne)).type===ft&&(c(r(g.data.slice(k.children.length)),I,i(g)),g.data=k.children)}g=h(g,k,R,U,D,L)}else ee&&!k.children?c(k.el=r(""),I):(gt(),n(null,k,I,null,R,U,zt(I),D))}return g},P=(g,m,I,R,U,D)=>{const{slotScopeIds:L}=m;L&&(U=U?U.concat(L):L);const _=o(g),N=T(i(g),m,_,I,R,U,D);return N&&Jt(N)&&N.data==="]"?i(m.anchor=N):(gt(),c(m.anchor=u("]"),_,N),N)},M=(g,m,I,R,U,D)=>{if(gt(),m.el=null,D){const N=W(g);for(;;){const C=i(g);if(C&&C!==N)l(C);else break}}const L=i(g),_=o(g);return l(g),n(null,m,_,L,I,R,zt(_),U),L},W=(g,m="[",I="]")=>{let R=0;for(;g;)if(g=i(g),g&&Jt(g)&&(g.data===m&&R++,g.data===I)){if(R===0)return i(g);R--}return g},G=(g,m,I)=>{const R=m.parentNode;R&&R.replaceChild(g,m);let U=I;for(;U;)U.vnode.el===m&&(U.vnode.el=U.subTree.el=g),U=U.parent},X=g=>g.nodeType===1&&g.tagName.toLowerCase()==="template";return[d,h]}const ye=Hi;function Gl(e){return Xl(e,ql)}function Xl(e,t){const n=jr();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:o,createText:l,createComment:c,setText:u,setElementText:d,parentNode:h,nextSibling:b,setScopeId:T=Te,insertStaticContent:P}=e,M=(a,f,p,w=null,y=null,E=null,A=void 0,S=null,x=!!f.dynamicChildren)=>{if(a===f)return;a&&!lt(a,f)&&(w=kt(a),Le(a,y,E,!0),a=null),f.patchFlag===-2&&(x=!1,f.dynamicChildren=null);const{type:v,ref:O,shapeFlag:H}=f;switch(v){case ft:W(a,f,p,w);break;case me:G(a,f,p,w);break;case Pt:a==null&&X(f,p,w,A);break;case _e:C(a,f,p,w,y,E,A,S,x);break;default:H&1?I(a,f,p,w,y,E,A,S,x):H&6?k(a,f,p,w,y,E,A,S,x):(H&64||H&128)&&v.process(a,f,p,w,y,E,A,S,x,ht)}O!=null&&y&&hn(O,a&&a.ref,E,f||a,!f)},W=(a,f,p,w)=>{if(a==null)s(f.el=l(f.children),p,w);else{const y=f.el=a.el;f.children!==a.children&&u(y,f.children)}},G=(a,f,p,w)=>{a==null?s(f.el=c(f.children||""),p,w):f.el=a.el},X=(a,f,p,w)=>{[a.el,a.anchor]=P(a.children,f,p,w,a.el,a.anchor)},g=({el:a,anchor:f},p,w)=>{let y;for(;a&&a!==f;)y=b(a),s(a,p,w),a=y;s(f,p,w)},m=({el:a,anchor:f})=>{let p;for(;a&&a!==f;)p=b(a),r(a),a=p;r(f)},I=(a,f,p,w,y,E,A,S,x)=>{f.type==="svg"?A="svg":f.type==="math"&&(A="mathml"),a==null?R(f,p,w,y,E,A,S,x):L(a,f,y,E,A,S,x)},R=(a,f,p,w,y,E,A,S)=>{let x,v;const{props:O,shapeFlag:H,transition:F,dirs:B}=a;if(x=a.el=o(a.type,E,O&&O.is,O),H&8?d(x,a.children):H&16&&D(a.children,x,null,w,y,Dn(a,E),A,S),B&&Me(a,null,w,"created"),U(x,a,a.scopeId,A,w),O){for(const te in O)te!=="value"&&!_t(te)&&i(x,te,null,O[te],E,w);"value"in O&&i(x,"value",null,O.value,E),(v=O.onVnodeBeforeMount)&&Se(v,w,a)}B&&Me(a,null,w,"beforeMount");const q=Ii(y,F);q&&F.beforeEnter(x),s(x,f,p),((v=O&&O.onVnodeMounted)||q||B)&&ye(()=>{v&&Se(v,w,a),q&&F.enter(x),B&&Me(a,null,w,"mounted")},y)},U=(a,f,p,w,y)=>{if(p&&T(a,p),w)for(let E=0;E<w.length;E++)T(a,w[E]);if(y){let E=y.subTree;if(f===E){const A=y.vnode;U(a,A,A.scopeId,A.slotScopeIds,y.parent)}}},D=(a,f,p,w,y,E,A,S,x=0)=>{for(let v=x;v<a.length;v++){const O=a[v]=S?We(a[v]):xe(a[v]);M(null,O,f,p,w,y,E,A,S)}},L=(a,f,p,w,y,E,A)=>{const S=f.el=a.el;let{patchFlag:x,dynamicChildren:v,dirs:O}=f;x|=a.patchFlag&16;const H=a.props||se,F=f.props||se;let B;if(p&&nt(p,!1),(B=F.onVnodeBeforeUpdate)&&Se(B,p,f,a),O&&Me(f,a,p,"beforeUpdate"),p&&nt(p,!0),(H.innerHTML&&F.innerHTML==null||H.textContent&&F.textContent==null)&&d(S,""),v?_(a.dynamicChildren,v,S,p,w,Dn(f,y),E):A||$(a,f,S,null,p,w,Dn(f,y),E,!1),x>0){if(x&16)N(S,H,F,p,y);else if(x&2&&H.class!==F.class&&i(S,"class",null,F.class,y),x&4&&i(S,"style",H.style,F.style,y),x&8){const q=f.dynamicProps;for(let te=0;te<q.length;te++){const Q=q[te],oe=H[Q],Re=F[Q];(Re!==oe||Q==="value")&&i(S,Q,oe,Re,y,p)}}x&1&&a.children!==f.children&&d(S,f.children)}else!A&&v==null&&N(S,H,F,p,y);((B=F.onVnodeUpdated)||O)&&ye(()=>{B&&Se(B,p,f,a),O&&Me(f,a,p,"updated")},w)},_=(a,f,p,w,y,E,A)=>{for(let S=0;S<f.length;S++){const x=a[S],v=f[S],O=x.el&&(x.type===_e||!lt(x,v)||x.shapeFlag&70)?h(x.el):p;M(x,v,O,null,w,y,E,A,!0)}},N=(a,f,p,w,y)=>{if(f!==p){if(f!==se)for(const E in f)!_t(E)&&!(E in p)&&i(a,E,f[E],null,y,w);for(const E in p){if(_t(E))continue;const A=p[E],S=f[E];A!==S&&E!=="value"&&i(a,E,S,A,y,w)}"value"in p&&i(a,"value",f.value,p.value,y)}},C=(a,f,p,w,y,E,A,S,x)=>{const v=f.el=a?a.el:l(""),O=f.anchor=a?a.anchor:l("");let{patchFlag:H,dynamicChildren:F,slotScopeIds:B}=f;B&&(S=S?S.concat(B):B),a==null?(s(v,p,w),s(O,p,w),D(f.children||[],p,O,y,E,A,S,x)):H>0&&H&64&&F&&a.dynamicChildren?(_(a.dynamicChildren,F,p,y,E,A,S),(f.key!=null||y&&f===y.subTree)&&Mi(a,f,!0)):$(a,f,p,O,y,E,A,S,x)},k=(a,f,p,w,y,E,A,S,x)=>{f.slotScopeIds=S,a==null?f.shapeFlag&512?y.ctx.activate(f,p,w,A,x):ee(f,p,w,y,E,A,x):ne(a,f,x)},ee=(a,f,p,w,y,E,A)=>{const S=a.component=dc(a,w,y);if(xn(a)&&(S.ctx.renderer=ht),hc(S,!1,A),S.asyncDep){if(y&&y.registerDep(S,j,A),!a.el){const x=S.subTree=fe(me);G(null,x,f,p)}}else j(S,a,f,p,y,E,A)},ne=(a,f,p)=>{const w=f.component=a.component;if(sc(a,f,p))if(w.asyncDep&&!w.asyncResolved){Y(w,f,p);return}else w.next=f,al(w.update),w.effect.dirty=!0,w.update();else f.el=a.el,w.vnode=f},j=(a,f,p,w,y,E,A)=>{const S=()=>{if(a.isMounted){let{next:O,bu:H,u:F,parent:B,vnode:q}=a;{const pt=Pi(a);if(pt){O&&(O.el=q.el,Y(a,O,A)),pt.asyncDep.then(()=>{a.isUnmounted||S()});return}}let te=O,Q;nt(a,!1),O?(O.el=q.el,Y(a,O,A)):O=q,H&&Fn(H),(Q=O.props&&O.props.onVnodeBeforeUpdate)&&Se(Q,B,O,q),nt(a,!0);const oe=Vn(a),Re=a.subTree;a.subTree=oe,M(Re,oe,h(Re.el),kt(Re),a,y,E),O.el=oe.el,te===null&&rc(a,oe.el),F&&ye(F,y),(Q=O.props&&O.props.onVnodeUpdated)&&ye(()=>Se(Q,B,O,q),y)}else{let O;const{el:H,props:F}=f,{bm:B,m:q,parent:te}=a,Q=wt(f);if(nt(a,!1),B&&Fn(B),!Q&&(O=F&&F.onVnodeBeforeMount)&&Se(O,te,f),nt(a,!0),H&&Nn){const oe=()=>{a.subTree=Vn(a),Nn(H,a.subTree,a,y,null)};Q?f.type.__asyncLoader().then(()=>!a.isUnmounted&&oe()):oe()}else{const oe=a.subTree=Vn(a);M(null,oe,p,w,a,y,E),f.el=oe.el}if(q&&ye(q,y),!Q&&(O=F&&F.onVnodeMounted)){const oe=f;ye(()=>Se(O,te,oe),y)}(f.shapeFlag&256||te&&wt(te.vnode)&&te.vnode.shapeFlag&256)&&a.a&&ye(a.a,y),a.isMounted=!0,f=p=w=null}},x=a.effect=new ys(S,Te,()=>Ts(v),a.scope),v=a.update=()=>{x.dirty&&x.run()};v.i=a,v.id=a.uid,nt(a,!0),v()},Y=(a,f,p)=>{f.component=a;const w=a.vnode.props;a.vnode=f,a.next=null,Hl(a,f.props,w,p),Ul(a,f.children,p),Ze(),qs(a),et()},$=(a,f,p,w,y,E,A,S,x=!1)=>{const v=a&&a.children,O=a?a.shapeFlag:0,H=f.children,{patchFlag:F,shapeFlag:B}=f;if(F>0){if(F&128){Bt(v,H,p,w,y,E,A,S,x);return}else if(F&256){Fe(v,H,p,w,y,E,A,S,x);return}}B&8?(O&16&&Tt(v,y,E),H!==v&&d(p,H)):O&16?B&16?Bt(v,H,p,w,y,E,A,S,x):Tt(v,y,E,!0):(O&8&&d(p,""),B&16&&D(H,p,w,y,E,A,S,x))},Fe=(a,f,p,w,y,E,A,S,x)=>{a=a||mt,f=f||mt;const v=a.length,O=f.length,H=Math.min(v,O);let F;for(F=0;F<H;F++){const B=f[F]=x?We(f[F]):xe(f[F]);M(a[F],B,p,null,y,E,A,S,x)}v>O?Tt(a,y,E,!0,!1,H):D(f,p,w,y,E,A,S,x,H)},Bt=(a,f,p,w,y,E,A,S,x)=>{let v=0;const O=f.length;let H=a.length-1,F=O-1;for(;v<=H&&v<=F;){const B=a[v],q=f[v]=x?We(f[v]):xe(f[v]);if(lt(B,q))M(B,q,p,null,y,E,A,S,x);else break;v++}for(;v<=H&&v<=F;){const B=a[H],q=f[F]=x?We(f[F]):xe(f[F]);if(lt(B,q))M(B,q,p,null,y,E,A,S,x);else break;H--,F--}if(v>H){if(v<=F){const B=F+1,q=B<O?f[B].el:w;for(;v<=F;)M(null,f[v]=x?We(f[v]):xe(f[v]),p,q,y,E,A,S,x),v++}}else if(v>F)for(;v<=H;)Le(a[v],y,E,!0),v++;else{const B=v,q=v,te=new Map;for(v=q;v<=F;v++){const ve=f[v]=x?We(f[v]):xe(f[v]);ve.key!=null&&te.set(ve.key,v)}let Q,oe=0;const Re=F-q+1;let pt=!1,Fs=0;const At=new Array(Re);for(v=0;v<Re;v++)At[v]=0;for(v=B;v<=H;v++){const ve=a[v];if(oe>=Re){Le(ve,y,E,!0);continue}let Ie;if(ve.key!=null)Ie=te.get(ve.key);else for(Q=q;Q<=F;Q++)if(At[Q-q]===0&&lt(ve,f[Q])){Ie=Q;break}Ie===void 0?Le(ve,y,E,!0):(At[Ie-q]=v+1,Ie>=Fs?Fs=Ie:pt=!0,M(ve,f[Ie],p,null,y,E,A,S,x),oe++)}const $s=pt?Yl(At):mt;for(Q=$s.length-1,v=Re-1;v>=0;v--){const ve=q+v,Ie=f[ve],Hs=ve+1<O?f[ve+1].el:w;At[v]===0?M(null,Ie,p,Hs,y,E,A,S,x):pt&&(Q<0||v!==$s[Q]?tt(Ie,p,Hs,2):Q--)}}},tt=(a,f,p,w,y=null)=>{const{el:E,type:A,transition:S,children:x,shapeFlag:v}=a;if(v&6){tt(a.component.subTree,f,p,w);return}if(v&128){a.suspense.move(f,p,w);return}if(v&64){A.move(a,f,p,ht);return}if(A===_e){s(E,f,p);for(let H=0;H<x.length;H++)tt(x[H],f,p,w);s(a.anchor,f,p);return}if(A===Pt){g(a,f,p);return}if(w!==2&&v&1&&S)if(w===0)S.beforeEnter(E),s(E,f,p),ye(()=>S.enter(E),y);else{const{leave:H,delayLeave:F,afterLeave:B}=S,q=()=>s(E,f,p),te=()=>{H(E,()=>{q(),B&&B()})};F?F(E,q,te):te()}else s(E,f,p)},Le=(a,f,p,w=!1,y=!1)=>{const{type:E,props:A,ref:S,children:x,dynamicChildren:v,shapeFlag:O,patchFlag:H,dirs:F,cacheIndex:B}=a;if(H===-2&&(y=!1),S!=null&&hn(S,null,p,a,!0),B!=null&&(f.renderCache[B]=void 0),O&256){f.ctx.deactivate(a);return}const q=O&1&&F,te=!wt(a);let Q;if(te&&(Q=A&&A.onVnodeBeforeUnmount)&&Se(Q,f,a),O&6)ho(a.component,p,w);else{if(O&128){a.suspense.unmount(p,w);return}q&&Me(a,null,f,"beforeUnmount"),O&64?a.type.remove(a,f,p,ht,w):v&&!v.hasOnce&&(E!==_e||H>0&&H&64)?Tt(v,f,p,!1,!0):(E===_e&&H&384||!y&&O&16)&&Tt(x,f,p),w&&Ps(a)}(te&&(Q=A&&A.onVnodeUnmounted)||q)&&ye(()=>{Q&&Se(Q,f,a),q&&Me(a,null,f,"unmounted")},p)},Ps=a=>{const{type:f,el:p,anchor:w,transition:y}=a;if(f===_e){uo(p,w);return}if(f===Pt){m(a);return}const E=()=>{r(p),y&&!y.persisted&&y.afterLeave&&y.afterLeave()};if(a.shapeFlag&1&&y&&!y.persisted){const{leave:A,delayLeave:S}=y,x=()=>A(p,E);S?S(a.el,E,x):x()}else E()},uo=(a,f)=>{let p;for(;a!==f;)p=b(a),r(a),a=p;r(f)},ho=(a,f,p)=>{const{bum:w,scope:y,update:E,subTree:A,um:S,m:x,a:v}=a;rr(x),rr(v),w&&Fn(w),y.stop(),E&&(E.active=!1,Le(A,a,f,p)),S&&ye(S,f),ye(()=>{a.isUnmounted=!0},f),f&&f.pendingBranch&&!f.isUnmounted&&a.asyncDep&&!a.asyncResolved&&a.suspenseId===f.pendingId&&(f.deps--,f.deps===0&&f.resolve())},Tt=(a,f,p,w=!1,y=!1,E=0)=>{for(let A=E;A<a.length;A++)Le(a[A],f,p,w,y)},kt=a=>{if(a.shapeFlag&6)return kt(a.component.subTree);if(a.shapeFlag&128)return a.suspense.next();const f=b(a.anchor||a.el),p=f&&f[Bl];return p?b(p):f};let Mn=!1;const Ns=(a,f,p)=>{a==null?f._vnode&&Le(f._vnode,null,null,!0):M(f._vnode||null,a,f,null,null,null,p),Mn||(Mn=!0,qs(),an(),Mn=!1),f._vnode=a},ht={p:M,um:Le,m:tt,r:Ps,mt:ee,mc:D,pc:$,pbc:_,n:kt,o:e};let Pn,Nn;return t&&([Pn,Nn]=t(ht)),{render:Ns,hydrate:Pn,createApp:Nl(Ns,Pn)}}function Dn({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function nt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Ii(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Mi(e,t,n=!1){const s=e.children,r=t.children;if(V(s)&&V(r))for(let i=0;i<s.length;i++){const o=s[i];let l=r[i];l.shapeFlag&1&&!l.dynamicChildren&&((l.patchFlag<=0||l.patchFlag===32)&&(l=r[i]=We(r[i]),l.el=o.el),!n&&l.patchFlag!==-2&&Mi(o,l)),l.type===ft&&(l.el=o.el)}}function Yl(e){const t=e.slice(),n=[0];let s,r,i,o,l;const c=e.length;for(s=0;s<c;s++){const u=e[s];if(u!==0){if(r=n[n.length-1],e[r]<u){t[s]=r,n.push(s);continue}for(i=0,o=n.length-1;i<o;)l=i+o>>1,e[n[l]]<u?i=l+1:o=l;u<e[n[i]]&&(i>0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}function Pi(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Pi(t)}function rr(e){if(e)for(let t=0;t<e.length;t++)e[t].active=!1}const zl=Symbol.for("v-scx"),Jl=()=>Et(zl);function Ni(e,t){return Rn(e,null,t)}function ef(e,t){return Rn(e,null,{flush:"post"})}const Qt={};function Ne(e,t,n){return Rn(e,t,n)}function Rn(e,t,{immediate:n,deep:s,flush:r,once:i,onTrack:o,onTrigger:l}=se){if(t&&i){const R=t;t=(...U)=>{R(...U),I()}}const c=ce,u=R=>s===!0?R:ot(R,s===!1?1:void 0);let d,h=!1,b=!1;if(pe(e)?(d=()=>e.value,h=Ct(e)):bt(e)?(d=()=>u(e),h=!0):V(e)?(b=!0,h=e.some(R=>bt(R)||Ct(R)),d=()=>e.map(R=>{if(pe(R))return R.value;if(bt(R))return u(R);if(K(R))return Ge(R,c,2)})):K(e)?t?d=()=>Ge(e,c,2):d=()=>(T&&T(),Ae(e,c,3,[P])):d=Te,t&&s){const R=d;d=()=>ot(R())}let T,P=R=>{T=g.onStop=()=>{Ge(R,c,4),T=g.onStop=void 0}},M;if(In)if(P=Te,t?n&&Ae(t,c,3,[d(),b?[]:void 0,P]):d(),r==="sync"){const R=Jl();M=R.__watcherHandles||(R.__watcherHandles=[])}else return Te;let W=b?new Array(e.length).fill(Qt):Qt;const G=()=>{if(!(!g.active||!g.dirty))if(t){const R=g.run();(s||h||(b?R.some((U,D)=>Ye(U,W[D])):Ye(R,W)))&&(T&&T(),Ae(t,c,3,[R,W===Qt?void 0:b&&W[0]===Qt?[]:W,P]),W=R)}else g.run()};G.allowRecurse=!!t;let X;r==="sync"?X=G:r==="post"?X=()=>ye(G,c&&c.suspense):(G.pre=!0,c&&(G.id=c.uid),X=()=>Ts(G));const g=new ys(d,Te,X),m=Br(),I=()=>{g.stop(),m&&hs(m.effects,g)};return t?n?G():W=g.run():r==="post"?ye(g.run.bind(g),c&&c.suspense):g.run(),M&&M.push(I),I}function Ql(e,t,n){const s=this.proxy,r=ie(e)?e.includes(".")?Fi(s,e):()=>s[e]:e.bind(s,s);let i;K(t)?i=t:(i=t.handler,n=t);const o=Ut(this),l=Rn(r,i.bind(s),n);return o(),l}function Fi(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;r<n.length&&s;r++)s=s[n[r]];return s}}function ot(e,t=1/0,n){if(t<=0||!Z(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,pe(e))ot(e.value,t,n);else if(V(e))for(let s=0;s<e.length;s++)ot(e[s],t,n);else if(Pr(e)||yt(e))e.forEach(s=>{ot(s,t,n)});else if($r(e)){for(const s in e)ot(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&ot(e[s],t,n)}return e}const Zl=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Oe(t)}Modifiers`]||e[`${Qe(t)}Modifiers`];function ec(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||se;let r=n;const i=t.startsWith("update:"),o=i&&Zl(s,t.slice(7));o&&(o.trim&&(r=n.map(d=>ie(d)?d.trim():d)),o.number&&(r=n.map(bo)));let l,c=s[l=nn(t)]||s[l=nn(Oe(t))];!c&&i&&(c=s[l=nn(Qe(t))]),c&&Ae(c,e,6,r);const u=s[l+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Ae(u,e,6,r)}}function $i(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!K(e)){const c=u=>{const d=$i(u,t,!0);d&&(l=!0,le(o,d))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!l?(Z(e)&&s.set(e,null),null):(V(i)?i.forEach(c=>o[c]=null):le(o,i),Z(e)&&s.set(e,o),o)}function On(e,t){return!e||!Vt(t)?!1:(t=t.slice(2).replace(/Once$/,""),z(e,t[0].toLowerCase()+t.slice(1))||z(e,Qe(t))||z(e,t))}function Vn(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[i],slots:o,attrs:l,emit:c,render:u,renderCache:d,props:h,data:b,setupState:T,ctx:P,inheritAttrs:M}=e,W=fn(e);let G,X;try{if(n.shapeFlag&4){const m=r||s,I=m;G=xe(u.call(I,m,d,h,T,b,P)),X=l}else{const m=t;G=xe(m.length>1?m(h,{attrs:l,slots:o,emit:c}):m(h,null)),X=t.props?l:tc(l)}}catch(m){Nt.length=0,En(m,e,1),G=fe(me)}let g=G;if(X&&M!==!1){const m=Object.keys(X),{shapeFlag:I}=g;m.length&&I&7&&(i&&m.some(ds)&&(X=nc(X,i)),g=ze(g,X,!1,!0))}return n.dirs&&(g=ze(g,null,!1,!0),g.dirs=g.dirs?g.dirs.concat(n.dirs):n.dirs),n.transition&&(g.transition=n.transition),G=g,fn(W),G}const tc=e=>{let t;for(const n in e)(n==="class"||n==="style"||Vt(n))&&((t||(t={}))[n]=e[n]);return t},nc=(e,t)=>{const n={};for(const s in e)(!ds(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function sc(e,t,n){const{props:s,children:r,component:i}=e,{props:o,children:l,patchFlag:c}=t,u=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?ir(s,o,u):!!o;if(c&8){const d=t.dynamicProps;for(let h=0;h<d.length;h++){const b=d[h];if(o[b]!==s[b]&&!On(u,b))return!0}}}else return(r||l)&&(!l||!l.$stable)?!0:s===o?!1:s?o?ir(s,o,u):!0:!!o;return!1}function ir(e,t,n){const s=Object.keys(t);if(s.length!==Object.keys(e).length)return!0;for(let r=0;r<s.length;r++){const i=s[r];if(t[i]!==e[i]&&!On(n,i))return!0}return!1}function rc({vnode:e,parent:t},n){for(;t;){const s=t.subTree;if(s.suspense&&s.suspense.activeBranch===e&&(s.el=e.el),s===e)(e=t.vnode).el=n,t=t.parent;else break}}const ic=e=>e.__isSuspense;function Hi(e,t){t&&t.pendingBranch?V(e)?t.effects.push(...e):t.effects.push(e):fl(e)}const _e=Symbol.for("v-fgt"),ft=Symbol.for("v-txt"),me=Symbol.for("v-cmt"),Pt=Symbol.for("v-stc"),Nt=[];let Ee=null;function ji(e=!1){Nt.push(Ee=e?null:[])}function oc(){Nt.pop(),Ee=Nt[Nt.length-1]||null}let jt=1;function or(e){jt+=e,e<0&&Ee&&(Ee.hasOnce=!0)}function Di(e){return e.dynamicChildren=jt>0?Ee||mt:null,oc(),jt>0&&Ee&&Ee.push(e),e}function tf(e,t,n,s,r,i){return Di(Bi(e,t,n,s,r,i,!0))}function Vi(e,t,n,s,r){return Di(fe(e,t,n,s,r,!0))}function pn(e){return e?e.__v_isVNode===!0:!1}function lt(e,t){return e.type===t.type&&e.key===t.key}const Ui=({key:e})=>e??null,rn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ie(e)||pe(e)||K(e)?{i:he,r:e,k:t,f:!!n}:e:null);function Bi(e,t=null,n=null,s=0,r=null,i=e===_e?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Ui(t),ref:t&&rn(t),scopeId:Sn,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:he};return l?(Os(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=ie(n)?8:16),jt>0&&!o&&Ee&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&Ee.push(c),c}const fe=lc;function lc(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===yi)&&(e=me),pn(e)){const l=ze(e,t,!0);return n&&Os(l,n),jt>0&&!i&&Ee&&(l.shapeFlag&6?Ee[Ee.indexOf(e)]=l:Ee.push(l)),l.patchFlag=-2,l}if(yc(e)&&(e=e.__vccOpts),t){t=cc(t);let{class:l,style:c}=t;l&&!ie(l)&&(t.class=ms(l)),Z(c)&&(ei(c)&&!V(c)&&(c=le({},c)),t.style=gs(c))}const o=ie(e)?1:ic(e)?128:kl(e)?64:Z(e)?4:K(e)?2:0;return Bi(e,t,n,s,r,o,i,!0)}function cc(e){return e?ei(e)||Si(e)?le({},e):e:null}function ze(e,t,n=!1,s=!1){const{props:r,ref:i,patchFlag:o,children:l,transition:c}=e,u=t?ac(r||{},t):r,d={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&Ui(u),ref:t&&t.ref?n&&i?V(i)?i.concat(rn(t)):[i,rn(t)]:rn(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==_e?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&ze(e.ssContent),ssFallback:e.ssFallback&&ze(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&s&&un(d,c.clone(d)),d}function ki(e=" ",t=0){return fe(ft,null,e,t)}function nf(e,t){const n=fe(Pt,null,e);return n.staticCount=t,n}function sf(e="",t=!1){return t?(ji(),Vi(me,null,e)):fe(me,null,e)}function xe(e){return e==null||typeof e=="boolean"?fe(me):V(e)?fe(_e,null,e.slice()):typeof e=="object"?We(e):fe(ft,null,String(e))}function We(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:ze(e)}function Os(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(V(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),Os(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!Si(t)?t._ctx=he:r===3&&he&&(he.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else K(t)?(t={default:t,_ctx:he},n=32):(t=String(t),s&64?(n=16,t=[ki(t)]):n=8);e.children=t,e.shapeFlag|=n}function ac(...e){const t={};for(let n=0;n<e.length;n++){const s=e[n];for(const r in s)if(r==="class")t.class!==s.class&&(t.class=ms([t.class,s.class]));else if(r==="style")t.style=gs([t.style,s.style]);else if(Vt(r)){const i=t[r],o=s[r];o&&i!==o&&!(V(i)&&i.includes(o))&&(t[r]=i?[].concat(i,o):o)}else r!==""&&(t[r]=s[r])}return t}function Se(e,t,n,s=null){Ae(e,t,7,[n,s])}const fc=wi();let uc=0;function dc(e,t,n){const s=e.type,r=(t?t.appContext:e.appContext)||fc,i={uid:uc++,vnode:e,type:s,parent:t,appContext:r,root:null,next:null,subTree:null,effect:null,update:null,scope:new Ro(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(r.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Ti(s,r),emitsOptions:$i(s,r),emit:null,emitted:null,propsDefaults:se,inheritAttrs:s.inheritAttrs,ctx:se,data:se,props:se,attrs:se,slots:se,refs:se,setupState:se,setupContext:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return i.ctx={_:i},i.root=t?t.root:i,i.emit=ec.bind(null,i),e.ce&&e.ce(i),i}let ce=null;const Ln=()=>ce||he;let gn,as;{const e=jr(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),i=>{r.length>1?r.forEach(o=>o(i)):r[0](i)}};gn=t("__VUE_INSTANCE_SETTERS__",n=>ce=n),as=t("__VUE_SSR_SETTERS__",n=>In=n)}const Ut=e=>{const t=ce;return gn(e),e.scope.on(),()=>{e.scope.off(),gn(t)}},lr=()=>{ce&&ce.scope.off(),gn(null)};function Ki(e){return e.vnode.shapeFlag&4}let In=!1;function hc(e,t=!1,n=!1){t&&as(t);const{props:s,children:r}=e.vnode,i=Ki(e);$l(e,s,i,t),Vl(e,r,n);const o=i?pc(e,t):void 0;return t&&as(!1),o}function pc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Tl);const{setup:s}=n;if(s){const r=e.setupContext=s.length>1?qi(e):null,i=Ut(e);Ze();const o=Ge(s,e,0,[e.props,r]);if(et(),i(),Nr(o)){if(o.then(lr,lr),t)return o.then(l=>{cr(e,l,t)}).catch(l=>{En(l,e,0)});e.asyncDep=o}else cr(e,o,t)}else Wi(e,t)}function cr(e,t,n){K(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Z(t)&&(e.setupState=ii(t)),Wi(e,n)}let ar;function Wi(e,t,n){const s=e.type;if(!e.render){if(!t&&ar&&!s.render){const r=s.template||As(e).template;if(r){const{isCustomElement:i,compilerOptions:o}=e.appContext.config,{delimiters:l,compilerOptions:c}=s,u=le(le({isCustomElement:i,delimiters:l},o),c);s.render=ar(r,u)}}e.render=s.render||Te}{const r=Ut(e);Ze();try{Rl(e)}finally{et(),r()}}}const gc={get(e,t){return be(e,"get",""),e[t]}};function qi(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,gc),slots:e.slots,emit:e.emit,expose:t}}function Ls(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(ii(sn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in It)return It[n](e)},has(t,n){return n in t||n in It}})):e.proxy}function mc(e,t=!0){return K(e)?e.displayName||e.name:e.name||t&&e.__name}function yc(e){return K(e)&&"__vccOpts"in e}const re=(e,t)=>Qo(e,t,In);function fs(e,t,n){const s=arguments.length;return s===2?Z(t)&&!V(t)?pn(t)?fe(e,null,[t]):fe(e,t):fe(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&pn(n)&&(n=[n]),fe(e,t,n))}const _c="3.4.33";/**
14
+ * @vue/runtime-dom v3.4.33
15
+ * (c) 2018-present Yuxi (Evan) You and Vue contributors
16
+ * @license MIT
17
+ **/const bc="http://www.w3.org/2000/svg",vc="http://www.w3.org/1998/Math/MathML",$e=typeof document<"u"?document:null,fr=$e&&$e.createElement("template"),wc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?$e.createElementNS(bc,e):t==="mathml"?$e.createElementNS(vc,e):n?$e.createElement(e,{is:n}):$e.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>$e.createTextNode(e),createComment:e=>$e.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>$e.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,i){const o=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{fr.innerHTML=s==="svg"?`<svg>${e}</svg>`:s==="mathml"?`<math>${e}</math>`:e;const l=fr.content;if(s==="svg"||s==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Ue="transition",Rt="animation",Dt=Symbol("_vtc"),Gi=(e,{slots:t})=>fs(gl,Ec(e),t);Gi.displayName="Transition";const Xi={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};Gi.props=le({},ai,Xi);const st=(e,t=[])=>{V(e)?e.forEach(n=>n(...t)):e&&e(...t)},ur=e=>e?V(e)?e.some(t=>t.length>1):e.length>1:!1;function Ec(e){const t={};for(const C in e)C in Xi||(t[C]=e[C]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:i=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=i,appearActiveClass:u=o,appearToClass:d=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:b=`${n}-leave-active`,leaveToClass:T=`${n}-leave-to`}=e,P=Cc(r),M=P&&P[0],W=P&&P[1],{onBeforeEnter:G,onEnter:X,onEnterCancelled:g,onLeave:m,onLeaveCancelled:I,onBeforeAppear:R=G,onAppear:U=X,onAppearCancelled:D=g}=t,L=(C,k,ee)=>{rt(C,k?d:l),rt(C,k?u:o),ee&&ee()},_=(C,k)=>{C._isLeaving=!1,rt(C,h),rt(C,T),rt(C,b),k&&k()},N=C=>(k,ee)=>{const ne=C?U:X,j=()=>L(k,C,ee);st(ne,[k,j]),dr(()=>{rt(k,C?c:i),Be(k,C?d:l),ur(ne)||hr(k,s,M,j)})};return le(t,{onBeforeEnter(C){st(G,[C]),Be(C,i),Be(C,o)},onBeforeAppear(C){st(R,[C]),Be(C,c),Be(C,u)},onEnter:N(!1),onAppear:N(!0),onLeave(C,k){C._isLeaving=!0;const ee=()=>_(C,k);Be(C,h),Be(C,b),Tc(),dr(()=>{C._isLeaving&&(rt(C,h),Be(C,T),ur(m)||hr(C,s,W,ee))}),st(m,[C,ee])},onEnterCancelled(C){L(C,!1),st(g,[C])},onAppearCancelled(C){L(C,!0),st(D,[C])},onLeaveCancelled(C){_(C),st(I,[C])}})}function Cc(e){if(e==null)return null;if(Z(e))return[Un(e.enter),Un(e.leave)];{const t=Un(e);return[t,t]}}function Un(e){return vo(e)}function Be(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Dt]||(e[Dt]=new Set)).add(t)}function rt(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[Dt];n&&(n.delete(t),n.size||(e[Dt]=void 0))}function dr(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Sc=0;function hr(e,t,n,s){const r=e._endId=++Sc,i=()=>{r===e._endId&&s()};if(n)return setTimeout(i,n);const{type:o,timeout:l,propCount:c}=xc(e,t);if(!o)return s();const u=o+"end";let d=0;const h=()=>{e.removeEventListener(u,b),i()},b=T=>{T.target===e&&++d>=c&&h()};setTimeout(()=>{d<c&&h()},l+1),e.addEventListener(u,b)}function xc(e,t){const n=window.getComputedStyle(e),s=P=>(n[P]||"").split(", "),r=s(`${Ue}Delay`),i=s(`${Ue}Duration`),o=pr(r,i),l=s(`${Rt}Delay`),c=s(`${Rt}Duration`),u=pr(l,c);let d=null,h=0,b=0;t===Ue?o>0&&(d=Ue,h=o,b=i.length):t===Rt?u>0&&(d=Rt,h=u,b=c.length):(h=Math.max(o,u),d=h>0?o>u?Ue:Rt:null,b=d?d===Ue?i.length:c.length:0);const T=d===Ue&&/\b(transform|all)(,|$)/.test(s(`${Ue}Property`).toString());return{type:d,timeout:h,propCount:b,hasTransform:T}}function pr(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max(...t.map((n,s)=>gr(n)+gr(e[s])))}function gr(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Tc(){return document.body.offsetHeight}function Ac(e,t,n){const s=e[Dt];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const mr=Symbol("_vod"),Rc=Symbol("_vsh"),Oc=Symbol(""),Lc=/(^|;)\s*display\s*:/;function Ic(e,t,n){const s=e.style,r=ie(n);let i=!1;if(n&&!r){if(t)if(ie(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();n[l]==null&&on(s,l,"")}else for(const o in t)n[o]==null&&on(s,o,"");for(const o in n)o==="display"&&(i=!0),on(s,o,n[o])}else if(r){if(t!==n){const o=s[Oc];o&&(n+=";"+o),s.cssText=n,i=Lc.test(n)}}else t&&e.removeAttribute("style");mr in e&&(e[mr]=i?s.display:"",e[Rc]&&(s.display="none"))}const yr=/\s*!important$/;function on(e,t,n){if(V(n))n.forEach(s=>on(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Mc(e,t);yr.test(n)?e.setProperty(Qe(s),n.replace(yr,""),"important"):e[s]=n}}const _r=["Webkit","Moz","ms"],Bn={};function Mc(e,t){const n=Bn[t];if(n)return n;let s=Oe(t);if(s!=="filter"&&s in e)return Bn[t]=s;s=_n(s);for(let r=0;r<_r.length;r++){const i=_r[r]+s;if(i in e)return Bn[t]=i}return t}const br="http://www.w3.org/1999/xlink";function vr(e,t,n,s,r,i=To(t)){s&&t.startsWith("xlink:")?n==null?e.removeAttributeNS(br,t.slice(6,t.length)):e.setAttributeNS(br,t,n):n==null||i&&!Dr(n)?e.removeAttribute(t):e.setAttribute(t,i?"":Je(n)?String(n):n)}function Pc(e,t,n,s){if(t==="innerHTML"||t==="textContent"){if(n==null)return;e[t]=n;return}const r=e.tagName;if(t==="value"&&r!=="PROGRESS"&&!r.includes("-")){const o=r==="OPTION"?e.getAttribute("value")||"":e.value,l=n==null?"":String(n);(o!==l||!("_value"in e))&&(e.value=l),n==null&&e.removeAttribute(t),e._value=n;return}let i=!1;if(n===""||n==null){const o=typeof e[t];o==="boolean"?n=Dr(n):n==null&&o==="string"?(n="",i=!0):o==="number"&&(n=0,i=!0)}try{e[t]=n}catch{}i&&e.removeAttribute(t)}function Nc(e,t,n,s){e.addEventListener(t,n,s)}function Fc(e,t,n,s){e.removeEventListener(t,n,s)}const wr=Symbol("_vei");function $c(e,t,n,s,r=null){const i=e[wr]||(e[wr]={}),o=i[t];if(s&&o)o.value=s;else{const[l,c]=Hc(t);if(s){const u=i[t]=Vc(s,r);Nc(e,l,u,c)}else o&&(Fc(e,l,o,c),i[t]=void 0)}}const Er=/(?:Once|Passive|Capture)$/;function Hc(e){let t;if(Er.test(e)){t={};let s;for(;s=e.match(Er);)e=e.slice(0,e.length-s[0].length),t[s[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):Qe(e.slice(2)),t]}let kn=0;const jc=Promise.resolve(),Dc=()=>kn||(jc.then(()=>kn=0),kn=Date.now());function Vc(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Ae(Uc(s,n.value),t,5,[s])};return n.value=e,n.attached=Dc(),n}function Uc(e,t){if(V(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const Cr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Bc=(e,t,n,s,r,i)=>{const o=r==="svg";t==="class"?Ac(e,s,o):t==="style"?Ic(e,n,s):Vt(t)?ds(t)||$c(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):kc(e,t,s,o))?(Pc(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&vr(e,t,s,o,i,t!=="value")):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),vr(e,t,s,o))};function kc(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Cr(t)&&K(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return Cr(t)&&ie(n)?!1:t in e}const Kc=["ctrl","shift","alt","meta"],Wc={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Kc.some(n=>e[`${n}Key`]&&!t.includes(n))},rf=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(r,...i)=>{for(let o=0;o<t.length;o++){const l=Wc[t[o]];if(l&&l(r,t))return}return e(r,...i)})},qc={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},of=(e,t)=>{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=r=>{if(!("key"in r))return;const i=Qe(r.key);if(t.some(o=>o===i||qc[o]===i))return e(r)})},Gc=le({patchProp:Bc},wc);let Kn,Sr=!1;function Xc(){return Kn=Sr?Kn:Gl(Gc),Sr=!0,Kn}const lf=(...e)=>{const t=Xc().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=zc(s);if(r)return n(r,!0,Yc(r))},t};function Yc(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function zc(e){return ie(e)?document.querySelector(e):e}const cf=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},Jc="modulepreload",Qc=function(e){return"/"+e},xr={},af=function(t,n,s){let r=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),o=(i==null?void 0:i.nonce)||(i==null?void 0:i.getAttribute("nonce"));r=Promise.all(n.map(l=>{if(l=Qc(l),l in xr)return;xr[l]=!0;const c=l.endsWith(".css"),u=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${u}`))return;const d=document.createElement("link");if(d.rel=c?"stylesheet":Jc,c||(d.as="script",d.crossOrigin=""),d.href=l,o&&d.setAttribute("nonce",o),document.head.appendChild(d),c)return new Promise((h,b)=>{d.addEventListener("load",h),d.addEventListener("error",()=>b(new Error(`Unable to preload CSS for ${l}`)))})}))}return r.then(()=>t()).catch(i=>{const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=i,window.dispatchEvent(o),!o.defaultPrevented)throw i})},Zc=window.__VP_SITE_DATA__;function Is(e){return Br()?(Lo(e),!0):!1}function Xe(e){return typeof e=="function"?e():ri(e)}const Yi=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const ea=Object.prototype.toString,ta=e=>ea.call(e)==="[object Object]",zi=()=>{},Tr=na();function na(){var e,t;return Yi&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function sa(e,t){function n(...s){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,s),{fn:t,thisArg:this,args:s})).then(r).catch(i)})}return n}const Ji=e=>e();function ra(e=Ji){const t=ae(!0);function n(){t.value=!1}function s(){t.value=!0}const r=(...i)=>{t.value&&e(...i)};return{isActive:wn(t),pause:n,resume:s,eventFilter:r}}function ia(e){return Ln()}function Qi(...e){if(e.length!==1)return il(...e);const t=e[0];return typeof t=="function"?wn(nl(()=>({get:t,set:zi}))):ae(t)}function oa(e,t,n={}){const{eventFilter:s=Ji,...r}=n;return Ne(e,sa(s,t),r)}function la(e,t,n={}){const{eventFilter:s,...r}=n,{eventFilter:i,pause:o,resume:l,isActive:c}=ra(s);return{stop:oa(e,t,{...r,eventFilter:i}),pause:o,resume:l,isActive:c}}function Ms(e,t=!0,n){ia()?xt(e,n):t?e():Cn(e)}function Zi(e){var t;const n=Xe(e);return(t=n==null?void 0:n.$el)!=null?t:n}const je=Yi?window:void 0;function St(...e){let t,n,s,r;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,s,r]=e,t=je):[t,n,s,r]=e,!t)return zi;Array.isArray(n)||(n=[n]),Array.isArray(s)||(s=[s]);const i=[],o=()=>{i.forEach(d=>d()),i.length=0},l=(d,h,b,T)=>(d.addEventListener(h,b,T),()=>d.removeEventListener(h,b,T)),c=Ne(()=>[Zi(t),Xe(r)],([d,h])=>{if(o(),!d)return;const b=ta(h)?{...h}:h;i.push(...n.flatMap(T=>s.map(P=>l(d,T,P,b))))},{immediate:!0,flush:"post"}),u=()=>{c(),o()};return Is(u),u}function ca(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function ff(...e){let t,n,s={};e.length===3?(t=e[0],n=e[1],s=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],s=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:r=je,eventName:i="keydown",passive:o=!1,dedupe:l=!1}=s,c=ca(t);return St(r,i,d=>{d.repeat&&Xe(l)||c(d)&&n(d)},o)}function aa(){const e=ae(!1),t=Ln();return t&&xt(()=>{e.value=!0},t),e}function fa(e){const t=aa();return re(()=>(t.value,!!e()))}function eo(e,t={}){const{window:n=je}=t,s=fa(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let r;const i=ae(!1),o=u=>{i.value=u.matches},l=()=>{r&&("removeEventListener"in r?r.removeEventListener("change",o):r.removeListener(o))},c=Ni(()=>{s.value&&(l(),r=n.matchMedia(Xe(e)),"addEventListener"in r?r.addEventListener("change",o):r.addListener(o),i.value=r.matches)});return Is(()=>{c(),l(),r=void 0}),i}const Zt=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},en="__vueuse_ssr_handlers__",ua=da();function da(){return en in Zt||(Zt[en]=Zt[en]||{}),Zt[en]}function to(e,t){return ua[e]||t}function ha(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const pa={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Ar="vueuse-storage";function ga(e,t,n,s={}){var r;const{flush:i="pre",deep:o=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:u=!1,shallow:d,window:h=je,eventFilter:b,onError:T=_=>{console.error(_)},initOnMounted:P}=s,M=(d?ni:ae)(typeof t=="function"?t():t);if(!n)try{n=to("getDefaultStorage",()=>{var _;return(_=je)==null?void 0:_.localStorage})()}catch(_){T(_)}if(!n)return M;const W=Xe(t),G=ha(W),X=(r=s.serializer)!=null?r:pa[G],{pause:g,resume:m}=la(M,()=>R(M.value),{flush:i,deep:o,eventFilter:b});h&&l&&Ms(()=>{St(h,"storage",D),St(h,Ar,L),P&&D()}),P||D();function I(_,N){h&&h.dispatchEvent(new CustomEvent(Ar,{detail:{key:e,oldValue:_,newValue:N,storageArea:n}}))}function R(_){try{const N=n.getItem(e);if(_==null)I(N,null),n.removeItem(e);else{const C=X.write(_);N!==C&&(n.setItem(e,C),I(N,C))}}catch(N){T(N)}}function U(_){const N=_?_.newValue:n.getItem(e);if(N==null)return c&&W!=null&&n.setItem(e,X.write(W)),W;if(!_&&u){const C=X.read(N);return typeof u=="function"?u(C,W):G==="object"&&!Array.isArray(C)?{...W,...C}:C}else return typeof N!="string"?N:X.read(N)}function D(_){if(!(_&&_.storageArea!==n)){if(_&&_.key==null){M.value=W;return}if(!(_&&_.key!==e)){g();try{(_==null?void 0:_.newValue)!==X.write(M.value)&&(M.value=U(_))}catch(N){T(N)}finally{_?Cn(m):m()}}}}function L(_){D(_.detail)}return M}function no(e){return eo("(prefers-color-scheme: dark)",e)}function ma(e={}){const{selector:t="html",attribute:n="class",initialValue:s="auto",window:r=je,storage:i,storageKey:o="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:u,disableTransition:d=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},b=no({window:r}),T=re(()=>b.value?"dark":"light"),P=c||(o==null?Qi(s):ga(o,s,i,{window:r,listenToStorageChanges:l})),M=re(()=>P.value==="auto"?T.value:P.value),W=to("updateHTMLAttrs",(m,I,R)=>{const U=typeof m=="string"?r==null?void 0:r.document.querySelector(m):Zi(m);if(!U)return;let D;if(d&&(D=r.document.createElement("style"),D.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),r.document.head.appendChild(D)),I==="class"){const L=R.split(/\s/g);Object.values(h).flatMap(_=>(_||"").split(/\s/g)).filter(Boolean).forEach(_=>{L.includes(_)?U.classList.add(_):U.classList.remove(_)})}else U.setAttribute(I,R);d&&(r.getComputedStyle(D).opacity,document.head.removeChild(D))});function G(m){var I;W(t,n,(I=h[m])!=null?I:m)}function X(m){e.onChanged?e.onChanged(m,G):G(m)}Ne(M,X,{flush:"post",immediate:!0}),Ms(()=>X(M.value));const g=re({get(){return u?P.value:M.value},set(m){P.value=m}});try{return Object.assign(g,{store:P,system:T,state:M})}catch{return g}}function ya(e={}){const{valueDark:t="dark",valueLight:n="",window:s=je}=e,r=ma({...e,onChanged:(l,c)=>{var u;e.onChanged?(u=e.onChanged)==null||u.call(e,l==="dark",c,l):c(l)},modes:{dark:t,light:n}}),i=re(()=>r.system?r.system.value:no({window:s}).value?"dark":"light");return re({get(){return r.value==="dark"},set(l){const c=l?"dark":"light";i.value===c?r.value="auto":r.value=c}})}function Wn(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function so(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth<e.scrollWidth||t.overflowY==="auto"&&e.clientHeight<e.scrollHeight)return!0;{const n=e.parentNode;return!n||n.tagName==="BODY"?!1:so(n)}}function _a(e){const t=e||window.event,n=t.target;return so(n)?!1:t.touches.length>1?!0:(t.preventDefault&&t.preventDefault(),!1)}const qn=new WeakMap;function uf(e,t=!1){const n=ae(t);let s=null,r="";Ne(Qi(e),l=>{const c=Wn(Xe(l));if(c){const u=c;if(qn.get(u)||qn.set(u,u.style.overflow),u.style.overflow!=="hidden"&&(r=u.style.overflow),u.style.overflow==="hidden")return n.value=!0;if(n.value)return u.style.overflow="hidden"}},{immediate:!0});const i=()=>{const l=Wn(Xe(e));!l||n.value||(Tr&&(s=St(l,"touchmove",c=>{_a(c)},{passive:!1})),l.style.overflow="hidden",n.value=!0)},o=()=>{const l=Wn(Xe(e));!l||!n.value||(Tr&&(s==null||s()),l.style.overflow=r,qn.delete(l),n.value=!1)};return Is(o),re({get(){return n.value},set(l){l?i():o()}})}function df(e={}){const{window:t=je,behavior:n="auto"}=e;if(!t)return{x:ae(0),y:ae(0)};const s=ae(t.scrollX),r=ae(t.scrollY),i=re({get(){return s.value},set(l){scrollTo({left:l,behavior:n})}}),o=re({get(){return r.value},set(l){scrollTo({top:l,behavior:n})}});return St(t,"scroll",()=>{s.value=t.scrollX,r.value=t.scrollY},{capture:!1,passive:!0}),{x:i,y:o}}function hf(e={}){const{window:t=je,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:s=Number.POSITIVE_INFINITY,listenOrientation:r=!0,includeScrollbar:i=!0}=e,o=ae(n),l=ae(s),c=()=>{t&&(i?(o.value=t.innerWidth,l.value=t.innerHeight):(o.value=t.document.documentElement.clientWidth,l.value=t.document.documentElement.clientHeight))};if(c(),Ms(c),St("resize",c,{passive:!0}),r){const u=eo("(orientation: portrait)");Ne(u,()=>c())}return{width:o,height:l}}var Gn={BASE_URL:"/",MODE:"production",DEV:!1,PROD:!0,SSR:!1},Xn={};const ro=/^(?:[a-z]+:|\/\/)/i,ba="vitepress-theme-appearance",va=/#.*$/,wa=/[?#].*$/,Ea=/(?:(^|\/)index)?\.(?:md|html)$/,ue=typeof document<"u",io={relativePath:"404.md",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function Ca(e,t,n=!1){if(t===void 0)return!1;if(e=Rr(`/${e}`),n)return new RegExp(t).test(e);if(Rr(t)!==e)return!1;const s=t.match(va);return s?(ue?location.hash:"")===s[0]:!0}function Rr(e){return decodeURI(e).replace(wa,"").replace(Ea,"$1")}function Sa(e){return ro.test(e)}function xa(e,t){return Object.keys((e==null?void 0:e.locales)||{}).find(n=>n!=="root"&&!Sa(n)&&Ca(t,`/${n}/`,!0))||"root"}function Ta(e,t){var s,r,i,o,l,c,u;const n=xa(e,t);return Object.assign({},e,{localeIndex:n,lang:((s=e.locales[n])==null?void 0:s.lang)??e.lang,dir:((r=e.locales[n])==null?void 0:r.dir)??e.dir,title:((i=e.locales[n])==null?void 0:i.title)??e.title,titleTemplate:((o=e.locales[n])==null?void 0:o.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:lo(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(u=e.locales[n])==null?void 0:u.themeConfig}})}function oo(e,t){const n=t.title||e.title,s=t.titleTemplate??e.titleTemplate;if(typeof s=="string"&&s.includes(":title"))return s.replace(/:title/g,n);const r=Aa(e.title,s);return n===r.slice(3)?n:`${n}${r}`}function Aa(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function Ra(e,t){const[n,s]=t;if(n!=="meta")return!1;const r=Object.entries(s)[0];return r==null?!1:e.some(([i,o])=>i===n&&o[r[0]]===r[1])}function lo(e,t){return[...e.filter(n=>!Ra(t,n)),...t]}const Oa=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,La=/^[a-z]:/i;function Or(e){const t=La.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(Oa,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const Yn=new Set;function Ia(e){if(Yn.size===0){const n=typeof process=="object"&&(Xn==null?void 0:Xn.VITE_EXTRA_EXTENSIONS)||(Gn==null?void 0:Gn.VITE_EXTRA_EXTENSIONS)||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(s=>Yn.add(s))}const t=e.split(".").pop();return t==null||!Yn.has(t.toLowerCase())}const Ma=Symbol(),ut=ni(Zc);function pf(e){const t=re(()=>Ta(ut.value,e.data.relativePath)),n=t.value.appearance,s=n==="force-dark"?ae(!0):n?ya({storageKey:ba,initialValue:()=>n==="dark"?"dark":"auto",...typeof n=="object"?n:{}}):ae(!1),r=ae(ue?location.hash:"");return ue&&window.addEventListener("hashchange",()=>{r.value=location.hash}),Ne(()=>e.data,()=>{r.value=ue?location.hash:""}),{site:t,theme:re(()=>t.value.themeConfig),page:re(()=>e.data),frontmatter:re(()=>e.data.frontmatter),params:re(()=>e.data.params),lang:re(()=>t.value.lang),dir:re(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:re(()=>t.value.localeIndex||"root"),title:re(()=>oo(t.value,e.data)),description:re(()=>e.data.description||t.value.description),isDark:s,hash:re(()=>r.value)}}function Pa(){const e=Et(Ma);if(!e)throw new Error("vitepress data not properly injected in app");return e}function Na(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function Lr(e){return ro.test(e)||!e.startsWith("/")?e:Na(ut.value.base,e)}function Fa(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),ue){const n="/";t=Or(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let s=__VP_HASH_MAP__[t.toLowerCase()];if(s||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",s=__VP_HASH_MAP__[t.toLowerCase()]),!s)return null;t=`${n}assets/${t}.${s}.js`}else t=`./${Or(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let ln=[];function gf(e){ln.push(e),An(()=>{ln=ln.filter(t=>t!==e)})}function $a(){let e=ut.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=Ir(e,n);else if(Array.isArray(e))for(const s of e){const r=Ir(s,n);if(r){t=r;break}}return t}function Ir(e,t){const n=document.querySelector(e);if(!n)return 0;const s=n.getBoundingClientRect().bottom;return s<0?0:s+t}const Ha=Symbol(),co="http://a.com",ja=()=>({path:"/",component:null,data:io});function mf(e,t){const n=vn(ja()),s={route:n,go:r};async function r(l=ue?location.href:"/"){var c,u;l=zn(l),await((c=s.onBeforeRouteChange)==null?void 0:c.call(s,l))!==!1&&(ue&&l!==zn(location.href)&&(history.replaceState({scrollPosition:window.scrollY},""),history.pushState({},"",l)),await o(l),await((u=s.onAfterRouteChanged)==null?void 0:u.call(s,l)))}let i=null;async function o(l,c=0,u=!1){var b;if(await((b=s.onBeforePageLoad)==null?void 0:b.call(s,l))===!1)return;const d=new URL(l,co),h=i=d.pathname;try{let T=await e(h);if(!T)throw new Error(`Page not found: ${h}`);if(i===h){i=null;const{default:P,__pageData:M}=T;if(!P)throw new Error(`Invalid route component: ${P}`);n.path=ue?h:Lr(h),n.component=sn(P),n.data=sn(M),ue&&Cn(()=>{let W=ut.value.base+M.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!ut.value.cleanUrls&&!W.endsWith("/")&&(W+=".html"),W!==d.pathname&&(d.pathname=W,l=W+d.search+d.hash,history.replaceState({},"",l)),d.hash&&!c){let G=null;try{G=document.getElementById(decodeURIComponent(d.hash).slice(1))}catch(X){console.warn(X)}if(G){Mr(G,d.hash);return}}window.scrollTo(0,c)})}}catch(T){if(!/fetch|Page not found/.test(T.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(T),!u)try{const P=await fetch(ut.value.base+"hashmap.json");window.__VP_HASH_MAP__=await P.json(),await o(l,c,!0);return}catch{}if(i===h){i=null,n.path=ue?h:Lr(h),n.component=t?sn(t):null;const P=ue?h.replace(/(^|\/)$/,"$1index").replace(/(\.html)?$/,".md").replace(/^\//,""):"404.md";n.data={...io,relativePath:P}}}}return ue&&(history.state===null&&history.replaceState({},""),window.addEventListener("click",l=>{if(l.defaultPrevented||!(l.target instanceof Element)||l.target.closest("button")||l.button!==0||l.ctrlKey||l.shiftKey||l.altKey||l.metaKey)return;const c=l.target.closest("a");if(!c||c.closest(".vp-raw")||c.hasAttribute("download")||c.hasAttribute("target"))return;const u=c.getAttribute("href")??(c instanceof SVGAElement?c.getAttribute("xlink:href"):null);if(u==null)return;const{href:d,origin:h,pathname:b,hash:T,search:P}=new URL(u,c.baseURI),M=new URL(location.href);h===M.origin&&Ia(b)&&(l.preventDefault(),b===M.pathname&&P===M.search?(T!==M.hash&&(history.pushState({},"",d),window.dispatchEvent(new HashChangeEvent("hashchange",{oldURL:M.href,newURL:d}))),T?Mr(c,T,c.classList.contains("header-anchor")):window.scrollTo(0,0)):r(d))},{capture:!0}),window.addEventListener("popstate",async l=>{var c;l.state!==null&&(await o(zn(location.href),l.state&&l.state.scrollPosition||0),(c=s.onAfterRouteChanged)==null||c.call(s,location.href))}),window.addEventListener("hashchange",l=>{l.preventDefault()})),s}function Da(){const e=Et(Ha);if(!e)throw new Error("useRouter() is called without provider.");return e}function ao(){return Da().route}function Mr(e,t,n=!1){let s=null;try{s=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(r){console.warn(r)}if(s){let r=function(){!n||Math.abs(o-window.scrollY)>window.innerHeight?window.scrollTo(0,o):window.scrollTo({left:0,top:o,behavior:"smooth"})};const i=parseInt(window.getComputedStyle(s).paddingTop,10),o=window.scrollY+s.getBoundingClientRect().top-$a()+i;requestAnimationFrame(r)}}function zn(e){const t=new URL(e,co);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),ut.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const Jn=()=>ln.forEach(e=>e()),yf=hi({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=ao(),{site:n}=Pa();return()=>fs(e.as,n.value.contentProps??{style:{position:"relative"}},[t.component?fs(t.component,{onVnodeMounted:Jn,onVnodeUpdated:Jn,onVnodeUnmounted:Jn}):"404 Page Not Found"])}}),_f=hi({setup(e,{slots:t}){const n=ae(!1);return xt(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function bf(){ue&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const s=(n=t.parentElement)==null?void 0:n.parentElement;if(!s)return;const r=Array.from(s.querySelectorAll("input")).indexOf(t);if(r<0)return;const i=s.querySelector(".blocks");if(!i)return;const o=Array.from(i.children).find(u=>u.classList.contains("active"));if(!o)return;const l=i.children[r];if(!l||o===l)return;o.classList.remove("active"),l.classList.add("active");const c=s==null?void 0:s.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function vf(){if(ue){const e=new WeakMap;window.addEventListener("click",t=>{var s;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const r=n.parentElement,i=(s=n.nextElementSibling)==null?void 0:s.nextElementSibling;if(!r||!i)return;const o=/language-(shellscript|shell|bash|sh|zsh)/.test(r.className),l=[".vp-copy-ignore",".diff.remove"],c=i.cloneNode(!0);c.querySelectorAll(l.join(",")).forEach(d=>d.remove());let u=c.textContent||"";o&&(u=u.replace(/^ *(\$|>) /gm,"").trim()),Va(u).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const d=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,d)})}})}}async function Va(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const s=document.getSelection(),r=s?s.rangeCount>0&&s.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),r&&(s.removeAllRanges(),s.addRange(r)),n&&n.focus()}}function wf(e,t){let n=!0,s=[];const r=i=>{if(n){n=!1,i.forEach(l=>{const c=Qn(l);for(const u of document.head.children)if(u.isEqualNode(c)){s.push(u);return}});return}const o=i.map(Qn);s.forEach((l,c)=>{const u=o.findIndex(d=>d==null?void 0:d.isEqualNode(l??null));u!==-1?delete o[u]:(l==null||l.remove(),delete s[c])}),o.forEach(l=>l&&document.head.appendChild(l)),s=[...s,...o].filter(Boolean)};Ni(()=>{const i=e.data,o=t.value,l=i&&i.description,c=i&&i.frontmatter.head||[],u=oo(o,i);u!==document.title&&(document.title=u);const d=l||o.description;let h=document.querySelector("meta[name=description]");h?h.getAttribute("content")!==d&&h.setAttribute("content",d):Qn(["meta",{name:"description",content:d}]),r(lo(o.head,Ba(c)))})}function Qn([e,t,n]){const s=document.createElement(e);for(const r in t)s.setAttribute(r,t[r]);return n&&(s.innerHTML=n),e==="script"&&!t.async&&(s.async=!1),s}function Ua(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function Ba(e){return e.filter(t=>!Ua(t))}const Zn=new Set,fo=()=>document.createElement("link"),ka=e=>{const t=fo();t.rel="prefetch",t.href=e,document.head.appendChild(t)},Ka=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let tn;const Wa=ue&&(tn=fo())&&tn.relList&&tn.relList.supports&&tn.relList.supports("prefetch")?ka:Ka;function Ef(){if(!ue||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const s=()=>{n&&n.disconnect(),n=new IntersectionObserver(i=>{i.forEach(o=>{if(o.isIntersecting){const l=o.target;n.unobserve(l);const{pathname:c}=l;if(!Zn.has(c)){Zn.add(c);const u=Fa(c);u&&Wa(u)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(i=>{const{hostname:o,pathname:l}=new URL(i.href instanceof SVGAnimatedString?i.href.animVal:i.href,i.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||i.target!=="_blank"&&o===location.hostname&&(l!==location.pathname?n.observe(i):Zn.add(l))})})};xt(s);const r=ao();Ne(()=>r.path,s),An(()=>{n&&n.disconnect()})}export{gi as $,ef as A,wl as B,$a as C,Xa as D,za as E,_e as F,ni as G,gf as H,fe as I,Ya as J,ro as K,ao as L,ac as M,Et as N,hf as O,gs as P,ff as Q,Cn as R,df as S,Gi as T,ue as U,wn as V,uf as W,Fl as X,of as Y,Qa as Z,cf as _,ki as a,rf as a0,Za as a1,nf as a2,wf as a3,Ha as a4,pf as a5,Ma as a6,yf as a7,_f as a8,ut as a9,lf as aa,mf as ab,Fa as ac,Ef as ad,vf as ae,bf as af,fs as ag,af as ah,Vi as b,tf as c,hi as d,sf as e,Ia as f,Lr as g,re as h,Sa as i,Bi as j,ri as k,Ga as l,Ca as m,ms as n,ji as o,qa as p,eo as q,Ja as r,ae as s,Ao as t,Pa as u,Ne as v,dl as w,Ni as x,xt as y,An as z};
@@ -0,0 +1 @@
1
+ const s="/assets/idp-login.B4Dj1tzS.png";export{s as _};