@sync-in/server 1.5.0 → 1.5.1

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 (34) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/package.json +1 -1
  3. package/static/{chunk-5TEXH3LJ.js → chunk-2456KVFZ.js} +1 -1
  4. package/static/{chunk-EILQG525.js → chunk-2LVCLKCK.js} +1 -1
  5. package/static/{chunk-45UQJGGY.js → chunk-2V5S7DWD.js} +1 -1
  6. package/static/{chunk-2UWN7IQF.js → chunk-44YDXGNZ.js} +1 -1
  7. package/static/{chunk-IML5UYQG.js → chunk-4LSJLWYV.js} +1 -1
  8. package/static/{chunk-CSBDAY77.js → chunk-4UT5VH7R.js} +1 -1
  9. package/static/{chunk-KGPCIUD2.js → chunk-5GOMMRRE.js} +1 -1
  10. package/static/{chunk-JVCWYSNP.js → chunk-5J4VRDKB.js} +1 -1
  11. package/static/{chunk-RASR4CK6.js → chunk-6PVKNZ7Q.js} +1 -1
  12. package/static/{chunk-YGD22MWQ.js → chunk-DFQKHCDR.js} +1 -1
  13. package/static/{chunk-SBOQGGZX.js → chunk-EE2TDTY4.js} +1 -1
  14. package/static/{chunk-66FMKVJX.js → chunk-ESNDJ5T6.js} +1 -1
  15. package/static/{chunk-2VSPDSJS.js → chunk-GDKKLLEU.js} +1 -1
  16. package/static/{chunk-HYMDGBZL.js → chunk-GSR2MCQG.js} +1 -1
  17. package/static/{chunk-RFMOUC22.js → chunk-HR7KS5BR.js} +1 -1
  18. package/static/{chunk-NPEMJJIU.js → chunk-IMB3C547.js} +1 -1
  19. package/static/{chunk-YCWMV2YR.js → chunk-J4ALHUDX.js} +1 -1
  20. package/static/{chunk-SJAFPXQV.js → chunk-KP6LSQTK.js} +1 -1
  21. package/static/{chunk-XTYGMF2V.js → chunk-LUZCOHFN.js} +1 -1
  22. package/static/{chunk-IPSMJHMQ.js → chunk-MHSCCXVL.js} +1 -1
  23. package/static/{chunk-ZVY37DKS.js → chunk-OMRQYBXV.js} +1 -1
  24. package/static/{chunk-CK4BY2NX.js → chunk-P7CTJ5BG.js} +1 -1
  25. package/static/{chunk-FR4AOLYL.js → chunk-P7PX67IR.js} +1 -1
  26. package/static/{chunk-P734A3XZ.js → chunk-PPO7DBVO.js} +1 -1
  27. package/static/{chunk-OEFBC4GG.js → chunk-SLGGINMR.js} +1 -1
  28. package/static/{chunk-34UZ7SYI.js → chunk-UHD5XD3G.js} +1 -1
  29. package/static/{chunk-KQZJSEM3.js → chunk-UPYYAJCJ.js} +1 -1
  30. package/static/{chunk-CXXPLBDZ.js → chunk-VHYPQ3D4.js} +1 -1
  31. package/static/{chunk-ENWABUR4.js → chunk-YQSDS6BO.js} +1 -1
  32. package/static/index.html +1 -1
  33. package/static/main-FYD34UEC.js +7 -0
  34. package/static/main-N5CZRHAO.js +0 -7
@@ -1 +1 @@
1
- import{f as P}from"./chunk-66FMKVJX.js";import{Ba as d,U as g,Va as C,X as N,cb as E,kb as H,oa as O,sa as f,vb as k,wb as F}from"./chunk-FR4AOLYL.js";import{d as T}from"./chunk-BIUNUYZ5.js";import{$ as I,G as h,O as m,Oc as R,Z as x,ca as A,ha as n,p as c,q as _,v as p}from"./chunk-HW2H3ISM.js";var a=(function(r){return r.ACCESS="access",r.REFRESH="refresh",r.WS="ws",r.CSRF="csrf",r})(a||{});var s=(function(r){return r.BASE="/api/auth",r.LOGIN="login",r.LOGOUT="logout",r.REFRESH="refresh",r.TOKEN="token",r.TOKEN_REFRESH="token/refresh",r.WS="socket.io",r})(s||{}),U=`${s.BASE}/${s.LOGIN}`,K=`${s.BASE}/${s.LOGOUT}`,l=`${s.BASE}/${s.REFRESH}`,M=`${s.BASE}/${s.TOKEN}`,W=`${s.BASE}/${s.TOKEN_REFRESH}`,b=`/${s.WS}`;var u="sync-in-csrf";var y=[a.REFRESH,a.ACCESS,a.WS,a.CSRF];var L="Client token is expired";var S={BASE:"auth",LOGIN:"login"};var fe=(()=>{let o=class o{constructor(){this.http=n(R),this.router=n(T),this.store=n(H),this.userService=n(P),this.layout=n(F),this.electron=n(k),this._refreshExpiration=parseInt(localStorage.getItem("refresh_expiration")||"0",10)||0,this._accessExpiration=parseInt(localStorage.getItem("access_expiration")||"0",10)||0}get refreshExpiration(){return this._refreshExpiration}set refreshExpiration(e){this._refreshExpiration=e!==0?e+60:e,localStorage.setItem("refresh_expiration",e.toString())}get accessExpiration(){return this._accessExpiration}set accessExpiration(e){this._accessExpiration=e!==0?e+60:e,localStorage.setItem("access_expiration",e.toString())}login(e,t){return this.http.post(U,{login:e,password:t}).pipe(p(i=>(this.accessExpiration=i.token.access_expiration,this.refreshExpiration=i.token.refresh_expiration,this.userService.initUser(i.user),{success:!0,message:null})),h(i=>(console.warn(i),c({success:!1,message:i.error.message||i.message}))))}loginElectron(){return this.electron.authenticate().pipe(x(e=>this.http.post(g,e).pipe(p(t=>(this.accessExpiration=t.token.access_expiration,this.refreshExpiration=t.token.refresh_expiration,this.userService.initUser(t.user),t?.client_token_update&&this.electron.send(E.SERVER.AUTHENTICATION_TOKEN_UPDATE,t.client_token_update),!0)),h(t=>(console.warn(t),t.error.message===L?this.electron.send(E.SERVER.AUTHENTICATION_TOKEN_EXPIRED):this.electron.send(E.SERVER.AUTHENTICATION_FAILED),c(!1))))))}logout(e=!0,t=!1){if((e||t)&&this.store.userImpersonate()){this.logoutImpersonateUser();return}this.userService.disconnectWebSocket(),this.clearCookies().pipe(m(()=>{this.accessExpiration=0,this.refreshExpiration=0,this.layout.clean(),this.store.clean(),e&&this.router.navigate([S.BASE,S.LOGIN]).catch(console.error),t&&this.layout.sendNotification("warning","Session has expired","Please sign in")})).subscribe()}logoutImpersonateUser(){this.http.post(O,null).subscribe({next:e=>{this.userService.disconnectWebSocket(),this.initUserFromResponse(e),this.router.navigate([f.BASE,f.ACCOUNT]).catch(console.error)},error:e=>{console.error(e),this.layout.sendNotification("error","Impersonate identity","logout",e)}})}initUserFromResponse(e,t=!1){e!==null&&(this.accessExpiration=e.token.access_expiration,this.refreshExpiration=e.token.refresh_expiration,this.userService.initUser(e.user,t))}isLogged(){return!this.refreshTokenHasExpired()}refreshToken(){return this.http.post(l,null).pipe(p(e=>(this.accessExpiration=e.access_expiration,this.refreshExpiration=e.refresh_expiration,console.debug("refresh token done"),!0)),h(e=>(console.debug("token has expired"),this.electron.enabled?(console.debug("login with app"),this.loginElectron()):(this.logout(!0,!0),_(()=>e)))))}checkUserAuthAndLoad(e){return this.refreshTokenHasExpired()?this.electron.enabled?this.loginElectron():(this.returnUrl=e.length>1?e:null,this.logout(),c(!1)):this.store.user.getValue()?c(!0):this.http.get(N).pipe(I(t=>this.userService.initUser(t.user)),p(()=>!0),h(t=>(t.status===401?this.logout():console.warn(t),c(!1))))}checkCSRF(e){return e.headers.has(u)?e.clone({headers:e.headers.set(u,C(u))}):e}refreshTokenHasExpired(){return this.refreshExpiration===0||d()>=this.refreshExpiration}clearCookies(){return this.http.post(K,null)}};o.\u0275fac=function(t){return new(t||o)},o.\u0275prov=A({token:o,factory:o.\u0275fac,providedIn:"root"});let r=o;return r})();export{U as a,K as b,l as c,u as d,S as e,fe as f};
1
+ import{f as P}from"./chunk-ESNDJ5T6.js";import{Ba as d,U as g,Va as C,X as N,cb as E,kb as H,oa as O,sa as f,vb as k,wb as F}from"./chunk-P7PX67IR.js";import{d as T}from"./chunk-BIUNUYZ5.js";import{$ as I,G as h,O as m,Oc as R,Z as x,ca as A,ha as n,p as c,q as _,v as p}from"./chunk-HW2H3ISM.js";var a=(function(r){return r.ACCESS="access",r.REFRESH="refresh",r.WS="ws",r.CSRF="csrf",r})(a||{});var s=(function(r){return r.BASE="/api/auth",r.LOGIN="login",r.LOGOUT="logout",r.REFRESH="refresh",r.TOKEN="token",r.TOKEN_REFRESH="token/refresh",r.WS="socket.io",r})(s||{}),U=`${s.BASE}/${s.LOGIN}`,K=`${s.BASE}/${s.LOGOUT}`,l=`${s.BASE}/${s.REFRESH}`,M=`${s.BASE}/${s.TOKEN}`,W=`${s.BASE}/${s.TOKEN_REFRESH}`,b=`/${s.WS}`;var u="sync-in-csrf";var y=[a.REFRESH,a.ACCESS,a.WS,a.CSRF];var L="Client token is expired";var S={BASE:"auth",LOGIN:"login"};var fe=(()=>{let o=class o{constructor(){this.http=n(R),this.router=n(T),this.store=n(H),this.userService=n(P),this.layout=n(F),this.electron=n(k),this._refreshExpiration=parseInt(localStorage.getItem("refresh_expiration")||"0",10)||0,this._accessExpiration=parseInt(localStorage.getItem("access_expiration")||"0",10)||0}get refreshExpiration(){return this._refreshExpiration}set refreshExpiration(e){this._refreshExpiration=e!==0?e+60:e,localStorage.setItem("refresh_expiration",e.toString())}get accessExpiration(){return this._accessExpiration}set accessExpiration(e){this._accessExpiration=e!==0?e+60:e,localStorage.setItem("access_expiration",e.toString())}login(e,t){return this.http.post(U,{login:e,password:t}).pipe(p(i=>(this.accessExpiration=i.token.access_expiration,this.refreshExpiration=i.token.refresh_expiration,this.userService.initUser(i.user),{success:!0,message:null})),h(i=>(console.warn(i),c({success:!1,message:i.error.message||i.message}))))}loginElectron(){return this.electron.authenticate().pipe(x(e=>this.http.post(g,e).pipe(p(t=>(this.accessExpiration=t.token.access_expiration,this.refreshExpiration=t.token.refresh_expiration,this.userService.initUser(t.user),t?.client_token_update&&this.electron.send(E.SERVER.AUTHENTICATION_TOKEN_UPDATE,t.client_token_update),!0)),h(t=>(console.warn(t),t.error.message===L?this.electron.send(E.SERVER.AUTHENTICATION_TOKEN_EXPIRED):this.electron.send(E.SERVER.AUTHENTICATION_FAILED),c(!1))))))}logout(e=!0,t=!1){if((e||t)&&this.store.userImpersonate()){this.logoutImpersonateUser();return}this.userService.disconnectWebSocket(),this.clearCookies().pipe(m(()=>{this.accessExpiration=0,this.refreshExpiration=0,this.layout.clean(),this.store.clean(),e&&this.router.navigate([S.BASE,S.LOGIN]).catch(console.error),t&&this.layout.sendNotification("warning","Session has expired","Please sign in")})).subscribe()}logoutImpersonateUser(){this.http.post(O,null).subscribe({next:e=>{this.userService.disconnectWebSocket(),this.initUserFromResponse(e),this.router.navigate([f.BASE,f.ACCOUNT]).catch(console.error)},error:e=>{console.error(e),this.layout.sendNotification("error","Impersonate identity","logout",e)}})}initUserFromResponse(e,t=!1){e!==null&&(this.accessExpiration=e.token.access_expiration,this.refreshExpiration=e.token.refresh_expiration,this.userService.initUser(e.user,t))}isLogged(){return!this.refreshTokenHasExpired()}refreshToken(){return this.http.post(l,null).pipe(p(e=>(this.accessExpiration=e.access_expiration,this.refreshExpiration=e.refresh_expiration,console.debug("refresh token done"),!0)),h(e=>(console.debug("token has expired"),this.electron.enabled?(console.debug("login with app"),this.loginElectron()):(this.logout(!0,!0),_(()=>e)))))}checkUserAuthAndLoad(e){return this.refreshTokenHasExpired()?this.electron.enabled?this.loginElectron():(this.returnUrl=e.length>1?e:null,this.logout(),c(!1)):this.store.user.getValue()?c(!0):this.http.get(N).pipe(I(t=>this.userService.initUser(t.user)),p(()=>!0),h(t=>(t.status===401?this.logout():console.warn(t),c(!1))))}checkCSRF(e){return e.headers.has(u)?e.clone({headers:e.headers.set(u,C(u))}):e}refreshTokenHasExpired(){return this.refreshExpiration===0||d()>=this.refreshExpiration}clearCookies(){return this.http.post(K,null)}};o.\u0275fac=function(t){return new(t||o)},o.\u0275prov=A({token:o,factory:o.\u0275fac,providedIn:"root"});let r=o;return r})();export{U as a,K as b,l as c,u as d,S as e,fe as f};
package/static/index.html CHANGED
@@ -15,5 +15,5 @@
15
15
  <style>@-webkit-keyframes blink{50%{background-color:transparent}}:root{--bs-blue:#0576b9;--bs-indigo:#6610f2;--bs-purple:#9b59b6;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#ff6f00;--bs-yellow:#ffc107;--bs-green:#06854b;--bs-teal:#39CCCC;--bs-cyan:#17a2b8;--bs-black:#111;--bs-white:#ffffff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#1c68b0;--bs-secondary:#c3cee0;--bs-success:#06854b;--bs-info:#0dcaf0;--bs-warning:#ff6f00;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:28, 104, 176;--bs-secondary-rgb:195, 206, 224;--bs-success-rgb:6, 133, 75;--bs-info-rgb:13, 202, 240;--bs-warning-rgb:255, 111, 0;--bs-danger-rgb:220, 53, 69;--bs-light-rgb:248, 249, 250;--bs-dark-rgb:33, 37, 41;--bs-primary-text-emphasis:rgb(11.2, 41.6, 70.4);--bs-secondary-text-emphasis:rgb(78, 82.4, 89.6);--bs-success-text-emphasis:rgb(2.4, 53.2, 30);--bs-info-text-emphasis:rgb(5.2, 80.8, 96);--bs-warning-text-emphasis:rgb(102, 44.4, 0);--bs-danger-text-emphasis:rgb(88, 21.2, 27.6);--bs-light-text-emphasis:#495057;--bs-dark-text-emphasis:#495057;--bs-primary-bg-subtle:rgb(209.6, 224.8, 239.2);--bs-secondary-bg-subtle:rgb(243, 245.2, 248.8);--bs-success-bg-subtle:rgb(205.2, 230.6, 219);--bs-info-bg-subtle:rgb(206.6, 244.4, 252);--bs-warning-bg-subtle:rgb(255, 226.2, 204);--bs-danger-bg-subtle:rgb(248, 214.6, 217.8);--bs-light-bg-subtle:rgb(251.5, 252, 252.5);--bs-dark-bg-subtle:#ced4da;--bs-primary-border-subtle:rgb(164.2, 194.6, 223.4);--bs-secondary-border-subtle:rgb(231, 235.4, 242.6);--bs-success-border-subtle:rgb(155.4, 206.2, 183);--bs-info-border-subtle:rgb(158.2, 233.8, 249);--bs-warning-border-subtle:rgb(255, 197.4, 153);--bs-danger-border-subtle:rgb(241, 174.2, 180.6);--bs-light-border-subtle:#e9ecef;--bs-dark-border-subtle:#adb5bd;--bs-white-rgb:255, 255, 255;--bs-black-rgb:17, 17, 17;--bs-font-sans-serif:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--bs-font-monospace:SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, .15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:.9rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#333;--bs-body-color-rgb:51, 51, 51;--bs-body-bg:#e1e6ef;--bs-body-bg-rgb:225, 230, 239;--bs-emphasis-color:#111;--bs-emphasis-color-rgb:17, 17, 17;--bs-secondary-color:rgba(51, 51, 51, .75);--bs-secondary-color-rgb:51, 51, 51;--bs-secondary-bg:#e9ecef;--bs-secondary-bg-rgb:233, 236, 239;--bs-tertiary-color:rgba(51, 51, 51, .5);--bs-tertiary-color-rgb:51, 51, 51;--bs-tertiary-bg:#f8f9fa;--bs-tertiary-bg-rgb:248, 249, 250;--bs-heading-color:inherit;--bs-link-color:#0576b9;--bs-link-color-rgb:5, 118, 185;--bs-link-decoration:none;--bs-link-hover-color:rgb(4.3289473684, 102.1631578947, 160.1710526316);--bs-link-hover-color-rgb:4, 102, 160;--bs-link-hover-decoration:none;--bs-code-color:#d63384;--bs-highlight-color:#333;--bs-highlight-bg:#37cb46;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#e1e6ef;--bs-border-color-translucent:rgba(17, 17, 17, .175);--bs-border-radius:.375rem;--bs-border-radius-sm:.25rem;--bs-border-radius-lg:.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-xxl:2rem;--bs-border-radius-2xl:var(--bs-border-radius-xxl);--bs-border-radius-pill:50rem;--bs-box-shadow:0 .5rem 1rem rgba(17, 17, 17, .15);--bs-box-shadow-sm:0 .125rem .25rem rgba(17, 17, 17, .075);--bs-box-shadow-lg:0 1rem 3rem rgba(17, 17, 17, .175);--bs-box-shadow-inset:inset 0 1px 2px rgba(17, 17, 17, .075);--bs-focus-ring-width:.25rem;--bs-focus-ring-opacity:.25;--bs-focus-ring-color:rgba(28, 104, 176, .25);--bs-form-valid-color:#06854b;--bs-form-valid-border-color:#06854b;--bs-form-invalid-color:#dc3545;--bs-form-invalid-border-color:#dc3545}*,*:before,*:after{box-sizing:border-box}@media (prefers-reduced-motion: no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(17,17,17,0)}:root{--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:992px;--bs-breakpoint-xl:1200px;--bs-breakpoint-xxl:1400px}:root{--bs-btn-close-filter: }:root{--bs-carousel-indicator-active-bg:#ffffff;--bs-carousel-caption-color:#ffffff;--bs-carousel-control-icon-filter: }html,body{background-color:#28353b;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;scrollbar-width:thin;scrollbar-color:rgba(155,155,155,.5) transparent;font-size:1rem;height:100%}body ::-webkit-scrollbar{width:8px}body ::-webkit-scrollbar-track{background:transparent}body ::-webkit-scrollbar-thumb{background-color:#9b9b9b80;border-radius:20px;border:transparent}.app-title{content:"Sync-in"}.app-title:before{content:"Sync-in"}.app-loading{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;background:linear-gradient(to bottom right,#020024,#1c68b0 35%,#985ca0);color:#fff}.app-loading:after{content:"Sync-in"}:root{--ngx-contextmenu-font-family:var(--bs-body-font-family) !important;--ngx-contextmenu-border:.5px solid rgba(0, 0, 0, .18) !important;--ngx-contextmenu-item-separator-width:100% !important;--ngx-contextmenu-outline:none !important}:root{--ngx-contextmenu-focusable-border-bottom:1px dotted #70757e;--ngx-contextmenu-font-family:sans-serif;--ngx-contextmenu-background-color:white;--ngx-contextmenu-border-radius:4px;--ngx-contextmenu-border:1px solid rgba(0, 0, 0, .18);--ngx-contextmenu-box-shadow:0 6px 12px rgba(0, 0, 0, .18);--ngx-contextmenu-font-size:14px;--ngx-contextmenu-margin:2px 0 0;--ngx-contextmenu-min-width:160px;--ngx-contextmenu-outline:1px solid #70757e;--ngx-contextmenu-padding:5px 0;--ngx-contextmenu-text-color:#70757e;--ngx-contextmenu-text-disabled-color:#b5bec8;--ngx-contextmenu-max-height:100vh;--ngx-contextmenu-item-arrow-left:"\25c0";--ngx-contextmenu-item-arrow-right:"\25b6";--ngx-contextmenu-item-background-hover-color:#f8f8f8;--ngx-contextmenu-item-separator-color:#b5bec8;--ngx-contextmenu-item-separator-padding:10px;--ngx-contextmenu-item-separator-width:96%;--ngx-contextmenu-item-padding:6px 20px;--ngx-contextmenu-item-text-hover-color:#5a6473}</style><link rel="stylesheet" href="styles-FYUSO6OJ.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles-FYUSO6OJ.css"></noscript></head>
16
16
  <body class="theme-light">
17
17
  <app-root><span class="app-loading"></span></app-root>
18
- <link rel="modulepreload" href="chunk-JVCWYSNP.js"><link rel="modulepreload" href="chunk-CSBDAY77.js"><link rel="modulepreload" href="chunk-P734A3XZ.js"><link rel="modulepreload" href="chunk-CK4BY2NX.js"><link rel="modulepreload" href="chunk-YCWMV2YR.js"><link rel="modulepreload" href="chunk-KQZJSEM3.js"><link rel="modulepreload" href="chunk-KGPCIUD2.js"><link rel="modulepreload" href="chunk-JXZCNFW7.js"><link rel="modulepreload" href="chunk-YGD22MWQ.js"><link rel="modulepreload" href="chunk-ZC5NIT55.js"><script src="polyfills-IA5XWQYN.js" type="module"></script><script src="scripts-VZVAP2P4.js" defer></script><script src="main-N5CZRHAO.js" type="module"></script></body>
18
+ <link rel="modulepreload" href="chunk-5J4VRDKB.js"><link rel="modulepreload" href="chunk-4UT5VH7R.js"><link rel="modulepreload" href="chunk-PPO7DBVO.js"><link rel="modulepreload" href="chunk-P7CTJ5BG.js"><link rel="modulepreload" href="chunk-J4ALHUDX.js"><link rel="modulepreload" href="chunk-UPYYAJCJ.js"><link rel="modulepreload" href="chunk-5GOMMRRE.js"><link rel="modulepreload" href="chunk-JXZCNFW7.js"><link rel="modulepreload" href="chunk-DFQKHCDR.js"><link rel="modulepreload" href="chunk-ZC5NIT55.js"><script src="polyfills-IA5XWQYN.js" type="module"></script><script src="scripts-VZVAP2P4.js" defer></script><script src="main-FYD34UEC.js" type="module"></script></body>
19
19
  </html>