1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[814],{2062:function(e,t,r){Promise.resolve().then(r.bind(r,3608))},8755:function(e,t,r){"use strict";r.d(t,{Z:function(){return u}});var n=r(2265);let o=function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return t.filter((e,t,r)=>!!e&&""!==e.trim()&&r.indexOf(e)===t).join(" ").trim()},i=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),l=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,r)=>r?r.toUpperCase():t.toLowerCase()),a=e=>{let t=l(e);return t.charAt(0).toUpperCase()+t.slice(1)};var s={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let d=e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1},c=(0,n.forwardRef)((e,t)=>{let{color:r="currentColor",size:i=24,strokeWidth:l=2,absoluteStrokeWidth:a,className:c="",children:u,iconNode:f,...p}=e;return(0,n.createElement)("svg",{ref:t,...s,width:i,height:i,stroke:r,strokeWidth:a?24*Number(l)/Number(i):l,className:o("lucide",c),...!u&&!d(p)&&{"aria-hidden":"true"},...p},[...f.map(e=>{let[t,r]=e;return(0,n.createElement)(t,r)}),...Array.isArray(u)?u:[u]])}),u=(e,t)=>{let r=(0,n.forwardRef)((r,l)=>{let{className:s,...d}=r;return(0,n.createElement)(c,{ref:l,iconNode:t,className:o("lucide-".concat(i(a(e))),"lucide-".concat(e),s),...d})});return r.displayName=a(e),r}},8997:function(e,t,r){"use strict";r.d(t,{Z:function(){return n}});let n=(0,r(8755).Z)("heart",[["path",{d:"M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5",key:"mvr1a0"}]])},7692:function(e,t,r){"use strict";r.d(t,{Z:function(){return n}});let n=(0,r(8755).Z)("log-out",[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]])},2369:function(e,t,r){"use strict";r.d(t,{Z:function(){return n}});let n=(0,r(8755).Z)("user",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]])},2489:function(e,t,r){"use strict";r.d(t,{Z:function(){return n}});let n=(0,r(8755).Z)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]])},3145:function(e,t,r){"use strict";r.d(t,{default:function(){return o.a}});var n=r(8461),o=r.n(n)},8461:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{default:function(){return s},getImageProps:function(){return a}});let n=r(7043),o=r(5346),i=r(5878),l=n._(r(5084));function a(e){let{props:t}=(0,o.getImgProps)(e,{defaultLoader:l.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1}});for(let[e,r]of Object.entries(t))void 0===r&&delete t[e];return{props:t}}let s=i.Image},5523:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"RouterContext",{enumerable:!0,get:function(){return n}});let n=r(7043)._(r(2265)).default.createContext(null)},3608:function(e,t,r){"use strict";r.d(t,{Navbar:function(){return x}});var n=r(7437),o=r(337),i=r(2265),l=r(8734),a=r(1502),s=r(8997),d=r(2369),c=r(8755);let u=(0,c.Z)("settings",[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);var f=r(7692);let p=(0,c.Z)("log-in",[["path",{d:"m10 17 5-5-5-5",key:"1bsop3"}],["path",{d:"M15 12H3",key:"6jk70r"}],["path",{d:"M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4",key:"u53s6r"}]]);var g=r(2489),h=r(3145),m=r(8933);function b(e){return new Date(e).toLocaleDateString("en-GB",{day:"numeric",month:"short",year:"numeric"})}function v(e){var t,r,o,l,a;let{user:s,onClose:d}=e,[c,u]=(0,i.useState)(null),[f,p]=(0,i.useState)(null),[v,x]=(0,i.useState)(!1),y=null===(t=s.user_metadata)||void 0===t?void 0:t.avatar_url,j=null!==(a=null!==(l=null===(r=s.user_metadata)||void 0===r?void 0:r.full_name)&&void 0!==l?l:null===(o=s.user_metadata)||void 0===o?void 0:o.name)&&void 0!==a?a:"User",k=s.created_at?b(s.created_at):null;(0,i.useEffect)(()=>{fetch("/api/me/supporter-status").then(e=>e.json()).then(e=>{(null==e?void 0:e.isSupporter)&&x(!0)}).catch(()=>{});let e=(0,m.O)(),t=new Date;t.setUTCHours(0,0,0,0),e.from("user_downloads").select("appid, game_name, source, downloaded_at").eq("user_id",s.id).order("downloaded_at",{ascending:!1}).limit(50).then(e=>{var r;let n=null!==(r=e.data)&&void 0!==r?r:[];p(n),u(n.filter(e=>new Date(e.downloaded_at)>=t).length)})},[s.id]);let w=null!=c?c:0;return(0,n.jsx)("div",{onClick:d,style:{position:"fixed",inset:0,zIndex:100,background:"rgba(0,0,0,0.6)",backdropFilter:"blur(4px)",display:"flex",alignItems:"center",justifyContent:"center",padding:"1rem"},children:(0,n.jsxs)("div",{onClick:e=>e.stopPropagation(),style:{background:"#18181f",border:"1px solid rgba(255,255,255,0.08)",borderRadius:12,width:"100%",maxWidth:420,padding:"1.25rem",display:"flex",flexDirection:"column",gap:"1.25rem",maxHeight:"90vh",overflowY:"auto"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[(0,n.jsx)("span",{style:{fontWeight:600,fontSize:"0.95rem",color:"#e5e7eb"},children:"Settings"}),(0,n.jsx)("button",{onClick:d,style:{background:"none",border:"none",color:"#6b7280",cursor:"pointer",display:"flex",padding:2},children:(0,n.jsx)(g.Z,{size:16})})]}),(0,n.jsxs)("section",{style:{display:"flex",flexDirection:"column",gap:"0.6rem"},children:[(0,n.jsx)("span",{style:{fontSize:"0.72rem",fontWeight:600,color:"#6b7280",textTransform:"uppercase",letterSpacing:"0.06em"},children:"Account"}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.75rem"},children:[y&&(0,n.jsx)(h.default,{src:y,alt:j,width:40,height:40,style:{borderRadius:"50%",flexShrink:0}}),(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"0.15rem"},children:[(0,n.jsx)("span",{style:{fontSize:"0.875rem",fontWeight:600,color:"#e5e7eb"},children:j}),k&&(0,n.jsxs)("span",{style:{fontSize:"0.75rem",color:"#6b7280"},children:["Joined ",k]})]})]})]}),(0,n.jsx)("div",{style:{borderTop:"1px solid rgba(255,255,255,0.06)"}}),(0,n.jsxs)("section",{style:{display:"flex",flexDirection:"column",gap:"0.6rem"},children:[(0,n.jsx)("span",{style:{fontSize:"0.72rem",fontWeight:600,color:"#6b7280",textTransform:"uppercase",letterSpacing:"0.06em"},children:"Downloads today"}),(0,n.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,n.jsx)("span",{style:{fontSize:"0.85rem",color:"#e5e7eb"},children:null===c?"â¦":v?"".concat(w," used"):"".concat(w," / ").concat(25," used")}),(0,n.jsx)("span",{style:{fontSize:"0.75rem",color:!v&&w>=25?"#f87171":"#6b7280"},children:null===c?"":v?"Unlimited":w>=25?"Limit reached":"".concat(25-w," remaining")})]}),(0,n.jsx)("div",{style:{height:4,background:"rgba(255,255,255,0.08)",borderRadius:4,overflow:"hidden"},children:(0,n.jsx)("div",{style:{height:"100%",width:"".concat(v?Math.min(w/200*100,100):Math.min(w/25*100,100),"%"),background:!v&&w>=25?"#f87171":"#7c3aed",borderRadius:4,transition:"width 0.3s ease"}})})]}),(0,n.jsx)("div",{style:{borderTop:"1px solid rgba(255,255,255,0.06)"}}),(0,n.jsxs)("section",{style:{display:"flex",flexDirection:"column",gap:"0.6rem"},children:[(0,n.jsx)("span",{style:{fontSize:"0.72rem",fontWeight:600,color:"#6b7280",textTransform:"uppercase",letterSpacing:"0.06em"},children:"Download history"}),(0,n.jsx)("div",{style:{maxHeight:220,overflowY:"auto",display:"flex",flexDirection:"column",gap:"0.25rem"},children:null===f?(0,n.jsx)("span",{style:{fontSize:"0.8rem",color:"#6b7280"},children:"Loadingâ¦"}):0===f.length?(0,n.jsx)("span",{style:{fontSize:"0.8rem",color:"#6b7280"},children:"No downloads yet"}):f.map((e,t)=>{var r;return(0,n.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"0.35rem 0.5rem",borderRadius:6,background:"rgba(255,255,255,0.03)"},children:[(0,n.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:1},children:[(0,n.jsx)("span",{style:{fontSize:"0.82rem",color:"#e5e7eb",fontWeight:500},children:null!==(r=e.game_name)&&void 0!==r?r:"App ".concat(e.appid)}),e.source&&(0,n.jsx)("span",{style:{fontSize:"0.72rem",color:"#6b7280"},children:e.source})]}),(0,n.jsx)("span",{style:{fontSize:"0.75rem",color:"#6b7280",flexShrink:0},children:b(e.downloaded_at)})]},t)})})]})]})})}function x(){var e,t,r,c,g,h,m,b,x,y;let{user:j,isLoading:k,signInWithDiscord:w,signOut:S}=(0,l.a)(),{isSupporter:_}=(0,a.J)(),[z,I]=(0,i.useState)(!1),[C,M]=(0,i.useState)(!1),T=null==j?void 0:null===(e=j.user_metadata)||void 0===e?void 0:e.avatar_url,W=null!==(b=null!==(m=null==j?void 0:null===(t=j.user_metadata)||void 0===t?void 0:t.provider_id)&&void 0!==m?m:null==j?void 0:null===(c=j.identities)||void 0===c?void 0:null===(r=c.find(e=>"discord"===e.provider))||void 0===r?void 0:r.id)&&void 0!==b?b:null,D=null!==(y=null!==(x=null==j?void 0:null===(g=j.user_metadata)||void 0===g?void 0:g.full_name)&&void 0!==x?x:null==j?void 0:null===(h=j.user_metadata)||void 0===h?void 0:h.name)&&void 0!==y?y:"User";return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("nav",{style:{position:"fixed",top:0,left:0,right:0,zIndex:50,display:"flex",alignItems:"center",justifyContent:"space-between",padding:"0.75rem 1.5rem",background:"rgba(10,10,15,0.7)",backdropFilter:"blur(12px)",borderBottom:"1px solid rgba(255,255,255,0.06)"},children:[(0,n.jsx)("a",{href:"/",style:{color:"#a78bfa",fontWeight:700,fontSize:"1.1rem",textDecoration:"none",letterSpacing:"-0.01em"}
1,children:"lua.tools - LuaTools but on the WWW!"}),(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.75rem"},children:[(0,n.jsx)("a",{href:"/app",style:{color:"#9ca3af",fontSize:"0.85rem",fontWeight:500,textDecoration:"none",padding:"0.35rem 0.6rem",borderRadius:8},onMouseEnter:e=>e.currentTarget.style.color="#e5e7eb",onMouseLeave:e=>e.currentTarget.style.color="#9ca3af",children:"Download App"}),(0,n.jsx)("a",{href:"/fixes",style:{color:"#9ca3af",fontSize:"0.85rem",fontWeight:500,textDecoration:"none",padding:"0.35rem 0.6rem",borderRadius:8},onMouseEnter:e=>e.currentTarget.style.color="#e5e7eb",onMouseLeave:e=>e.currentTarget.style.color="#9ca3af",children:"Fixes"}),(0,n.jsx)("a",{href:"/collections",style:{color:"#9ca3af",fontSize:"0.85rem",fontWeight:500,textDecoration:"none",padding:"0.35rem 0.6rem",borderRadius:8},onMouseEnter:e=>e.currentTarget.style.color="#e5e7eb",onMouseLeave:e=>e.currentTarget.style.color="#9ca3af",children:"Collections"}),(0,n.jsx)("a",{href:"/supporter",style:{color:"#9ca3af",fontSize:"0.85rem",fontWeight:500,textDecoration:"none",padding:"0.35rem 0.6rem",borderRadius:8},onMouseEnter:e=>e.currentTarget.style.color="#e5e7eb",onMouseLeave:e=>e.currentTarget.style.color="#9ca3af",children:"Supporter"}),k?(0,n.jsx)("div",{style:{width:32,height:32,borderRadius:"50%",background:"rgba(255,255,255,0.08)"}}):j?(0,n.jsxs)("div",{style:{position:"relative"},children:[(0,n.jsxs)("button",{onClick:()=>I(e=>!e),className:_?"supporter-pill":void 0,style:{display:"flex",alignItems:"center",gap:"0.5rem",background:_?"linear-gradient(110deg, rgba(167,139,250,0.18), rgba(236,72,153,0.18))":"rgba(255,255,255,0.06)",border:_?"1px solid rgba(167,139,250,0.55)":"1px solid rgba(255,255,255,0.08)",borderRadius:8,padding:"0.35rem 0.75rem",cursor:"pointer",color:"#e5e7eb",fontSize:"0.85rem"},children:[(0,n.jsx)("span",{style:{display:"inline-flex",borderRadius:"50%",..._?{boxShadow:"0 0 0 1.5px rgba(236,72,153,0.7)"}:{}},children:(0,n.jsx)(o.Avatar,{src:null!=T?T:null,discordId:W,alt:D,size:24})}),(0,n.jsx)("span",{children:D}),_&&(0,n.jsx)(s.Z,{size:13,strokeWidth:2.4,fill:"#f472b6",color:"#f472b6",style:{filter:"drop-shadow(0 0 4px rgba(244,114,182,0.7))"}})]}),z&&(0,n.jsxs)("div",{style:{position:"absolute",right:0,top:"calc(100% + 6px)",background:"#18181f",border:"1px solid rgba(255,255,255,0.08)",borderRadius:8,padding:"0.25rem",minWidth:140},children:[(0,n.jsxs)("a",{href:"/me/profile",onClick:()=>I(!1),style:{display:"flex",alignItems:"center",gap:"0.5rem",width:"100%",padding:"0.5rem 0.75rem",background:"none",border:"none",color:"#e5e7eb",cursor:"pointer",borderRadius:6,fontSize:"0.85rem",textDecoration:"none",boxSizing:"border-box"},onMouseEnter:e=>e.currentTarget.style.background="rgba(255,255,255,0.06)",onMouseLeave:e=>e.currentTarget.style.background="none",children:[(0,n.jsx)(d.Z,{size:14}),"Profile"]}),(0,n.jsxs)("button",{onClick:()=>{I(!1),M(!0)},style:{display:"flex",alignItems:"center",gap:"0.5rem",width:"100%",padding:"0.5rem 0.75rem",background:"none",border:"none",color:"#e5e7eb",cursor:"pointer",borderRadius:6,fontSize:"0.85rem"},onMouseEnter:e=>e.currentTarget.style.background="rgba(255,255,255,0.06)",onMouseLeave:e=>e.currentTarget.style.background="none",children:[(0,n.jsx)(u,{size:14}),"Settings"]}),(0,n.jsxs)("button",{onClick:()=>{I(!1),S()},style:{display:"flex",alignItems:"center",gap:"0.5rem",width:"100%",padding:"0.5rem 0.75rem",background:"none",border:"none",color:"#e5e7eb",cursor:"pointer",borderRadius:6,fontSize:"0.85rem"},onMouseEnter:e=>e.currentTarget.style.background="rgba(255,255,255,0.06)",onMouseLeave:e=>e.currentTarget.style.background="none",children:[(0,n.jsx)(f.Z,{size:14}),"Sign Out"]})]})]}):(0,n.jsxs)("button",{onClick:w,className:"btn-accent",style:{fontSize:"0.85rem",padding:"0.4rem 0.9rem"},children:[(0,n.jsx)(p,{size:14}),"Login with Discord"]})]})]}),C&&j&&(0,n.jsx)(v,{user:j,onClose:()=>M(!1)})]})}},337:function(e,t,r){"use strict";r.d(t,{Avatar:function(){return a}});var n=r(7437),o=r(2265),i=r(2369),l=r(6711);function a(e){let{src:t,discordId:r,alt:a="",size:s=36}=e,[d,c]=(0,o.useState)(0),u=r||(0,l.dL)(t),f=(0,l.do)(t)?t:u?(0,l.Bd)(u):t||null,p=0===d&&f?f:d<=1&&u?(0,l._n)(u):null,g={width:s,height:s,borderRadius:"50%",flexShrink:0};return p?(0,n.jsx)("img",{src:p,alt:a,width:s,height:s,loading:"lazy",onError:()=>c(e=>0===e?1:2),style:{...g,objectFit:"cover"}}):(0,n.jsx)("div",{style:{...g,background:"rgba(255,255,255,0.06)",border:"1px solid rgba(255,255,255,0.08)",display:"flex",alignItems:"center",justifyContent:"center",color:"#6b7280"},children:(0,n.jsx)(i.Z,{size:Math.round(.5*s)})})}},8734:function(e,t,r){"use strict";r.d(t,{a:function(){return i}});var n=r(2265),o=r(8933);
1function i(){let[e,t]=(0,n.useState)(null),[r,i]=(0,n.useState)(!0),l=(0,o.O)();return(0,n.useEffect)(()=>{l.auth.getSession().then(e=>{var r,n;t(null!==(n=null===(r=e.data.session)||void 0===r?void 0:r.user)&&void 0!==n?n:null),i(!1)});let{data:{subscription:e}}=l.auth.onAuthStateChange((e,r)=>{var n;t(null!==(n=null==r?void 0:r.user)&&void 0!==n?n:null)});return()=>e.unsubscribe()},[l]),{user:e,isLoading:r,signInWithDiscord:async()=>{await l.auth.signInWithOAuth({provider:"discord",options:{redirectTo:"".concat("https://lua.tools","/auth/callback"),scopes:"identify email guilds.join"}})},signOut:async()=>{try{window.localStorage.removeItem("lt_supporter")}catch(e){}await l.auth.signOut()}}}},1502:function(e,t,r){"use strict";r.d(t,{J:function(){return i}});var n=r(2265);let o="lt_supporter";function i(){let[e,t]=(0,n.useState)(()=>"1"===window.localStorage.getItem(o)),[r,i]=(0,n.useState)(!1);return(0,n.useEffect)(()=>{let e=!0;return fetch("/api/me/supporter-status").then(e=>e.json()).then(r=>{if(!e)return;let n=!!r.isSupporter;t(n);try{window.localStorage.setItem(o,n?"1":"0")}catch(e){}}).catch(()=>{}).finally(()=>{e&&i(!0)}),()=>{e=!1}},[]),{isSupporter:e,checked:r}}},6711:function(e,t,r){"use strict";r.d(t,{Bd:function(){return i},T$:function(){return n},_n:function(){return l},dL:function(){return s},do:function(){return a},eo:function(){return o}});let n=/^\d{17,20}$/;function o(e){var t,r,n,o,i,l,a,s,d,c,u;return{name:null!==(s=null!==(a=null===(t=e.user_metadata)||void 0===t?void 0:t.full_name)&&void 0!==a?a:null===(r=e.user_metadata)||void 0===r?void 0:r.name)&&void 0!==s?s:"unknown",id:null!==(c=null!==(d=null===(n=e.user_metadata)||void 0===n?void 0:n.provider_id)&&void 0!==d?d:null===(i=e.identities)||void 0===i?void 0:null===(o=i.find(e=>"discord"===e.provider))||void 0===o?void 0:o.id)&&void 0!==c?c:"",avatarUrl:null!==(u=null===(l=e.user_metadata)||void 0===l?void 0:l.avatar_url)&&void 0!==u?u:null}}function i(e){return"/api/avatar/".concat(e)}function l(e){let t=0;if(e&&n.test(e))try{t=Number((BigInt(e)>>BigInt(22))%BigInt(6))}catch(e){t=0}return"https://cdn.discordapp.com/embed/avatars/".concat(t,".png")}function a(e){return!!e&&e.startsWith("".concat("https://cdn.lua.tools","/"))}function s(e){if(!e)return null;let t=/^https:\/\/cdn\.discordapp\.com\/avatars\/(\d{17,20})\//.exec(e);return t?t[1]:null}},8933:function(e,t,r){"use strict";r.d(t,{O:function(){return i}});var n=r(4033);let o=null;function i(){if(!o){let e="https://db.lua.tools",t="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3NzYwMzkzNzYsImV4cCI6MTg5MzQ1NjAwMCwicm9sZSI6ImFub24iLCJpc3MiOiJzdXBhYmFzZSJ9.f_-K38u3odjltP-g_67FVmG32Vg-_-k-lNBvIaVUVBM";if(!e||!t)return(0,n.createBrowserClient)("https://placeholder.supabase.co","placeholder");o=(0,n.createBrowserClient)(e,t)}return o}}},function(e){e.O(0,[33,878,971,117,744],function(){return e(e.s=2062)}),_N_E=e.O()}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.