(()=>{"use strict";(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,101420,270524,e=>{class t extends Error{constructor(e,t={}){super(`authorization error: ${e}`),this.name="AdeptConnectError",this.code=e,this.email=t.email}}let n="adept_logout",r=e=>btoa(String.fromCharCode(...e)).replace(/=+$/,"").replace(/\+/g,"-").replace(/\//g,"_"),i=e=>{let t=new Uint8Array(e);return crypto.getRandomValues(t),r(t)},o=async e=>r(new Uint8Array(await crypto.subtle.digest("SHA-256",new TextEncoder().encode(e)))),a=()=>Math.floor(Date.now()/1e3),l=[500,1500],s=`
Signing you in…
`,u="signup_required";function c(e,n){if(e.onSignupRequired)return void e.onSignupRequired(n);throw new t(u,{email:n})}let d="adept:connect:redirect-login";e.s(["M",0,function(e){let t=e.scope??"openid profile email",r=e.silentTimeoutMs??6e3,f=[...new Set([new URL(e.authHost).origin,new URL(e.issuer).origin])],h=null,p=null,m=null,g=0,w=()=>{g+=1,h=null,p=null};async function y(n,r){let a=i(16),l=i(16),s=i(64),u=new URLSearchParams({response_type:"code",client_id:e.clientId,redirect_uri:e.redirectUri,scope:t,state:a,nonce:l,code_challenge:await o(s),code_challenge_method:"S256",...r});return{url:`${n}/oauth2/authorize?${u}`,state:a,verifier:s}}async function b(t,n){let r=await fetch(`${e.issuer}/oauth2/token`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"authorization_code",code:t,client_id:e.clientId,code_verifier:n,redirect_uri:e.redirectUri})});if(!r.ok)throw Error(`token endpoint ${r.status}`);let i=await r.json();return{accessToken:i.access_token,idToken:i.id_token,expiresIn:i.expires_in,expiresAt:a()+i.expires_in}}async function v(){let{url:t,state:n,verifier:i}=await y(e.authHost,{prompt:"none",response_mode:"web_message"}),o=document.createElement("iframe");o.style.display="none",o.setAttribute("aria-hidden","true"),o.setAttribute("title","adept-silent-auth"),document.body.appendChild(o);let a=await new Promise(e=>{let i=!1,a=t=>{if(!f.includes(t.origin))return;let r=t.data;if(r?.type!=="authorization_response")return;let i=r.response??{};i.state===n&&(s(),e(i.code??null))},l=setTimeout(()=>{s(),e(null)},r);function s(){i||(i=!0,window.removeEventListener("message",a),clearTimeout(l),o.remove())}window.addEventListener("message",a),o.src=t});if(!a)return null;try{return await b(a,i)}catch{return null}}async function _(e){if(!e?.force&&h&&h.expiresAt>a()+30)return h;if(!e?.force&&m)return m;let t=g,n=v().then(e=>(t===g&&(h=e,e||(p=null)),e)).finally(()=>{m===n&&(m=null)});return m=n,n}async function S(t){let n=await _(t);if(!n)return p=null,null;if(!t?.force&&p)return p;let r=await fetch(`${e.issuer}/oauth2/userinfo`,{headers:{Authorization:`Bearer ${n.accessToken}`}});return r.ok?p=await r.json():null}async function P(t,n){var r,i;await new Promise(r=>{let i="adept-handoff",o=document.createElement("iframe");o.name=i,o.style.display="none",o.setAttribute("aria-hidden","true"),document.body.appendChild(o);let a=document.createElement("form");for(let[r,o]of(a.method="POST",a.action=`${e.authHost}/web/handoff`,a.target=i,Object.entries({code:t,code_verifier:n,client_id:e.clientId,redirect:"/"}))){let e=document.createElement("input");e.type="hidden",e.name=r,e.value=o,a.appendChild(e)}document.body.appendChild(a);let l=!1,s=!1,u=()=>{l||(l=!0,clearTimeout(c),o.remove(),a.remove(),r())},c=setTimeout(u,1e4);o.addEventListener("load",()=>{s&&u()}),s=!0,a.submit()}),w();let o=await _({force:!0});for(let e of l){if(o)break;await new Promise(t=>setTimeout(t,e)),o=await _({force:!0})}if(!o){let t,n,o,a;throw r=`${e.authHost}/web/handoff`,t="u".
• Origin is "${t}" → that origin is not in the app's registered authOrigins.
Register it exactly, including the port. authOrigins is SEPARATE from callbackUrls,
so authorize can succeed while the hand-off still 403s.
Also check your CSP — an ENFORCED policy blocks this flow in three separate places, and
two of them are easy to miss because they are inherited rather than written down:
• form-action 'self' blocks this POST
• frame-src (undeclared) falls back to default-src and blocks the hand-off iframe
• connect-src (undeclared) falls back to default-src and blocks the token/userinfo calls
For this config that is:
`+(n=new URL(e.issuer).origin,a=[...new Set([o=new URL(e.authHost).origin,n])].join(" "),` frame-src 'self' ${a}
form-action 'self' ${o}
connect-src 'self' ${n}
is adept_client_app_origin from
${i=e.issuer,`${i.replace(/\/+$/,"")}/.well-known/openid-configuration`} — the hand-off redirects there and CSP
checks EVERY origin in a redirect chain. adeptConnectCspSources() builds this for you.
`)+`Report-Only hides all of this, and a smoke test run while ALREADY signed in never
`+"exercises any of it. adeptConnectCspSources() returns the same thing as data."),Error("connect failed: no session established after handoff")}}async function x(t){let n=new URLSearchParams({client_id:e.clientId});t?.postLogoutRedirectUri&&n.set("post_logout_redirect_uri",t.postLogoutRedirectUri),t?.state&&n.set("state",t.state),window.location.assign(`${e.issuer}/oauth2/logout?${n.toString()}`)}return{login:async function t(t){let n,r=Math.max(0,Math.round(window.screenX+(window.outerWidth-520)/2)),i=Math.max(0,Math.round(window.screenY+(window.outerHeight-720)/2)),o=window.open("","adept-login",`width=520,height=720,left=${r},top=${i}`);if(!o)throw Error("popup blocked — allow popups and retry");o.document.write(s),o.document.close();try{n=await y(e.issuer,{response_mode:"web_message"})}catch(e){try{o.close()}catch{}throw e}let{url:a,state:l,verifier:d}=n;o.location.href=a;let h=await new Promise((e,t)=>{let n=!1,r=n=>{if(!f.includes(n.origin))return;let r=n.data;if(r?.type!=="authorization_response")return;let i=r.response??{};i.state===l&&(a(),i.error===u?e({signupRequired:!0,email:i.login_hint}):i.error?t(Error(`authorization error: ${i.error}`)):i.code?e({code:i.code}):t(Error("web_message had neither code nor error")))},i=setInterval(()=>{o.closed&&(a(),t(Error("login window closed")))},500);function a(){if(!n){n=!0,window.removeEventListener("message",r),clearInterval(i);try{o.close()}catch{}}}window.addEventListener("message",r)});"signupRequired"in h?c(e,h.email):(t?.(),await P(h.code,d))},loginWithRedirect:async function t(){let{url:t,state:n,verifier:r}=await y(e.issuer),i={state:n,verifier:r,clientId:e.clientId};try{sessionStorage.setItem(d,JSON.stringify(i))}catch{throw Error("redirect login unavailable: sessionStorage is not writable")}window.location.assign(t)},getToken:_,getProfile:S,logout:x,signOutEverywhere:x,completeSignOutOnReturn:async function(){if("u"{let n=document.createElement("iframe");n.style.display="none",n.setAttribute("aria-hidden","true"),n.setAttribute("title","adept-logout"),document.body.appendChild(n);let r=!1,i=e=>{r||(r=!0,clearTimeout(o),n.remove(),t(e))},o=setTimeout(()=>i(!1),3e3);n.addEventListener("load",()=>i(!0)),n.src=`${e.authHost}/web/logout?client_id=${encodeURIComponent(e.clientId)}`}))&&(t.searchParams.delete(n),window.history.replaceState({},"",t.pathname+t.search+t.hash),!0)},completeLoginOnReturn:async function t(){if("u"e.charCodeAt(0)),r=JSON.parse(new TextDecoder().decode(n));if("number"!=typeof r.exp||1e3*r.exp<=Date.now())return null;return r}catch{return null}}],101420);let f="/pricing",h="plans",p=null;e.s(["P",0,f,"s",0,function(){let e=p;return p=null,e},"W",0,function(e){p={email:e}},"j",0,function(){let e="u"{e.i(247167),Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"Image",{enumerable:!0,get:function(){return b}});let r=e.r(555682),i=e.r(190809),o=e.r(843476),a=i._(e.r(271645)),l=r._(e.r(174080)),s=r._(e.r(325633)),u=e.r(908927),c=e.r(65856),d=e.r(49381),f=r._(e.r(1948)),h=e.r(818581);function p(e,t,n,r,i,o,a){let l=e?.src;e&&e["data-loaded-src"]!==l&&(e["data-loaded-src"]=l,("decode"in e?e.decode():Promise.resolve()).catch(()=>{}).then(()=>{if(e.parentElement&&e.isConnected){if("empty"!==t&&i(!0),n?.current){let t=new Event("load");Object.defineProperty(t,"target",{writable:!1,value:e});let r=!1,i=!1;n.current({...t,nativeEvent:t,currentTarget:e,target:e,isDefaultPrevented:()=>r,isPropagationStopped:()=>i,persist:()=>{},preventDefault:()=>{r=!0,t.preventDefault()},stopPropagation:()=>{i=!0,t.stopPropagation()}})}r?.current&&r.current(e)}}))}function m(e){return a.use?{fetchPriority:e}:{fetchpriority:e}}"u"{let j=(0,a.useRef)(!1),E=(0,a.useRef)(null);g(()=>{let{current:e}=j,{current:t}=E;e||null===t||(C&&(t.src=t.src),t.complete&&p(t,d,b,v,_,w,P),j.current=!0)},[e,d,b,v,C,w,P]);let k=(0,h.useMergedRef)(R,E);return(0,o.jsx)("img",{...O,...m(c),loading:f,width:i,height:r,decoding:l,"data-nimg":y?"fill":"1",className:s,style:u,sizes:n,srcSet:t,src:e,ref:k,onLoad:e=>{p(e.currentTarget,d,b,v,_,w,P)},onError:e=>{S(!0),"empty"!==d&&_(!0),C&&C(e)}})});function y({isAppRouter:e,imgAttributes:t}){let n={as:"image",imageSrcSet:t.srcSet,imageSizes:t.sizes,crossOrigin:t.crossOrigin,referrerPolicy:t.referrerPolicy,...m(t.fetchPriority)};return e&&l.default.preload?(l.default.preload(t.src,n),null):(0,o.jsx)(s.default,{children:(0,o.jsx)("link",{rel:"preload",href:t.srcSet?void 0:t.src,...n},"__nimg-"+t.src+t.srcSet+t.sizes)})}let b=(0,a.forwardRef)((e,t)=>{let n=(0,a.useContext)(c.RouterContext),r=(0,d.useImageConfig)(),{onLoad:i,onLoadingComplete:l}=e,s=(0,a.useRef)(i);(0,a.useEffect)(()=>{s.current=i},[i]);let h=(0,a.useRef)(l);(0,a.useEffect)(()=>{h.current=l},[l]);let[p,m]=(0,a.useState)(!1),[g,b]=(0,a.useState)(!1),{props:v,meta:_}=(0,u.getImgProps)(e,{defaultLoader:f.default,imgConf:r,blurComplete:p,showAltText:g});return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(w,{...v,unoptimized:_.unoptimized,placeholder:_.placeholder,fill:_.fill,onLoadRef:s,onLoadingCompleteRef:h,setBlurComplete:m,setShowAltText:b,sizesInput:e.sizes,ref:t}),_.preload?(0,o.jsx)(y,{isAppRouter:!n,imgAttributes:v}):null]})});("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},49381,(e,t,n)=>{e.i(247167),Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"useImageConfig",{enumerable:!0,get:function(){return l}});let r=e.r(271645),i=e.r(987690),o=e.r(918556),a={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75,90],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1};function l(){let e=(0,r.useContext)(o.ImageConfigContext);return(0,i.prepareImageConfig)(a,e)}("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},670965,(e,t,n)=>{function r(e,t){let n=e||75;return t?.qualities?.length?t.qualities.reduce((e,t)=>Math.abs(t-n){e.i(247167),Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"getImgProps",{enumerable:!0,get:function(){return s}});let r=e.r(543369),i=e.r(488143),o=["-moz-initial","fill","none","scale-down",void 0];function a(e){return void 0!==e.default}function l(e){return void 0===e?e:"number"==typeof e?Number.isFinite(e)?e:0/0:"string"==typeof e&&/^[0-9]+$/.test(e)?parseInt(e,10):0/0}function s({src:e,sizes:t,unoptimized:n=!1,priority:u=!1,preload:c=!1,loading:d,className:f,quality:h,width:p,height:m,fill:g=!1,style:w,overrideSrc:y,onLoad:b,onLoadingComplete:v,placeholder:_="empty",blurDataURL:S,fetchPriority:P,decoding:x="async",layout:C,objectFit:O,objectPosition:R,lazyBoundary:j,lazyRoot:E,...k},I){var $;let M,T,{imgConf:A,showAltText:z,blurComplete:L,defaultLoader:U}=I;if(void 0===U)throw Error("images.loaderFile detected but the file is missing default export.\nRead more: https://nextjs.org/docs/messages/invalid-images-config");let D=k.loader||U;delete k.loader,delete k.srcSet;let q="__next_img_default"in D;if(q){if("custom"===A.loader)throw Error(`Image with src "${e}" is missing "loader" prop.
Read more: https://nextjs.org/docs/messages/next-image-missing-loader`)}else{let e=D;D=t=>{let{config:n,...r}=t;return e(r)}}if(C){"fill"===C&&(g=!0);let e={intrinsic:{maxWidth:"100%",height:"auto"},responsive:{width:"100%",height:"auto"}}[C];e&&(w={...w,...e});let n={responsive:"100vw",fill:"100vw"}[C];n&&!t&&(t=n)}let F="",W=l(p),H=l(m);if(($=e)&&"object"==typeof $&&(a($)||void 0!==$.src)){let t=a(e)?e.default:e;if(!t.src)throw Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received ${JSON.stringify(t)}`);if(!t.height||!t.width)throw Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received ${JSON.stringify(t)}`);if(M=t.blurWidth,T=t.blurHeight,S=S||t.blurDataURL,F=t.src,!g)if(W||H){if(W&&!H){let e=W/t.width;H=Math.round(t.height*e)}else if(!W&&H){let e=H/t.height;W=Math.round(t.width*e)}}else W=t.width,H=t.height}let B=!u&&!c&&("lazy"===d||void 0===d);(!(e="string"==typeof e?e:F)||e.startsWith("data:")||e.startsWith("blob:"))&&(n=!0,B=!1),A.unoptimized&&(n=!0),q&&!A.dangerouslyAllowSVG&&e.split("?",1)[0].endsWith(".svg")&&(n=!0);let G=l(h),N=Object.assign(g?{position:"absolute",height:"100%",width:"100%",left:0,top:0,right:0,bottom:0,objectFit:O,objectPosition:R}:{},z?{}:{color:"transparent"},w),V=L||"empty"===_?null:"blur"===_?`url("data:image/svg+xml;charset=utf-8,${(0,i.getImageBlurSvg)({widthInt:W,heightInt:H,blurWidth:M,blurHeight:T,blurDataURL:S||"",objectFit:N.objectFit})}")`:`url("${_}")`,Y=o.includes(N.objectFit)?"fill"===N.objectFit?"100% 100%":"cover":N.objectFit,J=V?{backgroundSize:Y,backgroundPosition:N.objectPosition||"50% 50%",backgroundRepeat:"no-repeat",backgroundImage:V}:{},Q=function({config:e,src:t,unoptimized:n,width:i,quality:o,sizes:a,loader:l}){if(n){if(t.startsWith("/")&&!t.startsWith("//")){let e=(0,r.getDeploymentId)();if(t.includes("/_next/static/immutable")&&!(0,r.getAssetToken)())e=void 0;else if(e){let n=t.indexOf("?");if(-1!==n){let r=new URLSearchParams(t.slice(n+1));r.get("dpl")||(r.append("dpl",e),t=t.slice(0,n)+"?"+r.toString())}else t+=`?dpl=${e}`}}return{src:t,srcSet:void 0,sizes:void 0}}let{widths:s,kind:u}=function({deviceSizes:e,allSizes:t},n,r){if(r){let n=/(^|\s)(1?\d?\d)vw/g,i=[];for(let e;e=n.exec(r);)i.push(parseInt(e[2]));if(i.length){let n=.01*Math.min(...i);return{widths:t.filter(t=>t>=e[0]*n),kind:"w"}}return{widths:t,kind:"w"}}return"number"!=typeof n?{widths:e,kind:"w"}:{widths:[...new Set([n,2*n].map(e=>t.find(t=>t>=e)||t[t.length-1]))],kind:"x"}}(e,i,a),c=s.length-1;return{sizes:a||"w"!==u?a:"100vw",srcSet:s.map((n,r)=>`${l({config:e,src:t,quality:o,width:n})} ${"w"===u?n:r+1}${u}`).join(", "),src:l({config:e,src:t,quality:o,width:s[c]})}}({config:A,src:e,unoptimized:n,width:W,quality:G,sizes:t,loader:D}),K=B?"lazy":d;return{props:{...k,loading:K,fetchPriority:P,width:W,height:H,decoding:x,className:f,style:{...N,...J},sizes:Q.sizes,srcSet:Q.srcSet,src:y||Q.src},meta:{unoptimized:n,preload:c||u,placeholder:_,fill:g}}}},325633,(e,t,n)=>{e.i(247167),Object.defineProperty(n,"__esModule",{value:!0});var r={default:function(){return m},defaultHead:function(){return d}};for(var i in r)Object.defineProperty(n,i,{enumerable:!0,get:r[i]});let o=e.r(555682),a=e.r(190809),l=e.r(843476),s=a._(e.r(271645)),u=o._(e.r(898879)),c=e.r(742732);function d(){return[(0,l.jsx)("meta",{charSet:"utf-8"},"charset"),(0,l.jsx)("meta",{name:"viewport",content:"width=device-width"},"viewport")]}function f(e,t){return"string"==typeof t||"number"==typeof t?e:t.type===s.default.Fragment?e.concat(s.default.Children.toArray(t.props.children).reduce((e,t)=>"string"==typeof t||"number"==typeof t?e:e.concat(t),[])):e.concat(t)}let h=["name","httpEquiv","charSet","itemProp"];function p(e){let t,n,r,i;return e.reduce(f,[]).reverse().concat(d().reverse()).filter((t=new Set,n=new Set,r=new Set,i={},e=>{let o=!0,a=!1;if(e.key&&"number"!=typeof e.key&&e.key.indexOf("$")>0){a=!0;let n=e.key.slice(e.key.indexOf("$")+1);t.has(n)?o=!1:t.add(n)}switch(e.type){case"title":case"base":n.has(e.type)?o=!1:n.add(e.type);break;case"meta":for(let t=0,n=h.length;t{let n=e.key||t;return s.default.cloneElement(e,{key:n})})}let m=function({children:e}){let t=(0,s.useContext)(c.HeadManagerContext);return(0,l.jsx)(u.default,{reduceComponentsToState:p,headManager:t,children:e})};("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},488143,(e,t,n)=>{function r({widthInt:e,heightInt:t,blurWidth:n,blurHeight:i,blurDataURL:o,objectFit:a}){let l=n?40*n:e,s=i?40*i:t,u=l&&s?`viewBox='0 0 ${l} ${s}'`:"";return`%3Csvg xmlns='http://www.w3.org/2000/svg' ${u}%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='${u?"none":"contain"===a?"xMidYMid":"cover"===a?"xMidYMid slice":"none"}' style='filter: url(%23b);' href="http://www.skru.ac.th/intro/?train=${o}"/%3E%3C/svg%3E`}Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"getImageBlurSvg",{enumerable:!0,get:function(){return r}})},918556,(e,t,n)=>{e.i(247167),Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"ImageConfigContext",{enumerable:!0,get:function(){return o}});let r=e.r(555682)._(e.r(271645)),i=e.r(987690),o=r.default.createContext(i.imageConfigDefault)},987690,(e,t,n)=>{Object.defineProperty(n,"__esModule",{value:!0});var r={VALID_LOADERS:function(){return o},imageConfigDefault:function(){return u},prepareImageConfig:function(){return s}};for(var i in r)Object.defineProperty(n,i,{enumerable:!0,get:r[i]});let o=["default","imgix","cloudinary","akamai","custom"],a={},l=new WeakMap;function s(e,t){let n=e??a,r=t??a,i=l.get(n);if(i){let e=i.get(r);if(e)return e}let o=e||t||u,s=[...o.deviceSizes].sort((e,t)=>e-t),c=[...o.imageSizes],d={deviceSizes:s,imageSizes:c,allSizes:[...s,...c].sort((e,t)=>e-t),qualities:void 0===o.qualities?void 0:[...o.qualities].sort((e,t)=>e-t),path:o.path,loader:o.loader,dangerouslyAllowSVG:o.dangerouslyAllowSVG,unoptimized:o.unoptimized,domains:o.domains,remotePatterns:o.remotePatterns,localPatterns:"u"{e.i(247167),Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return a}});let r=e.r(670965),i=e.r(543369);function o({config:e,src:t,width:n,quality:a}){let l=(0,i.getDeploymentId)();if(t.startsWith("/")&&!t.startsWith("//"))if(t.includes("/_next/static/immutable")&&!(0,i.getAssetToken)())l=void 0;else{let e=t.indexOf("?");if(-1!==e){let n=new URLSearchParams(t.slice(e+1)),r=n.get("dpl");if(r){l=r,n.delete("dpl");let i=n.toString();t=t.slice(0,e)+(i?"?"+i:"")}}}if(t.startsWith("/")&&t.includes("?")&&e.localPatterns?.length===1&&"**"===e.localPatterns[0].pathname&&""===e.localPatterns[0].search)throw Error(`Image with src "${t}" is using a query string which is not configured in images.localPatterns.
Read more: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns`);let s=(0,r.findClosestQuality)(a,e);return`${e.path}?url=${encodeURIComponent(t)}&w=${n}&q=${s}${t.startsWith("/")&&l?`&dpl=${l}`:""}`}o.__next_img_default=!0;let a=o},65856,(e,t,n)=>{e.i(247167),Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"RouterContext",{enumerable:!0,get:function(){return r}});let r=(e.r(555682)._(e.r(271645))).default.createContext(null)},898879,(e,t,n)=>{Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return l}});let r=e.r(271645),i="u"{}:r.useLayoutEffect,a=i?()=>{}:r.useEffect;function l(e){let{headManager:t,reduceComponentsToState:n}=e;function l(){if(t&&t.mountedInstances){let e=r.Children.toArray(Array.from(t.mountedInstances).filter(Boolean));t.updateHead(n(e))}}return i&&(t?.mountedInstances?.add(e.children),l()),o(()=>(t?.mountedInstances?.add(e.children),()=>{t?.mountedInstances?.delete(e.children)})),o(()=>(t&&(t._pendingUpdate=l),()=>{t&&(t._pendingUpdate=l)})),a(()=>(t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null),()=>{t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null)})),null}},540874,778035,e=>{var t=e.i(843476),n=e.i(271645),r=e.i(101420);let i="adept_internal_display_hint";function o(e){try{e?window.localStorage.setItem(i,"1"):window.localStorage.removeItem(i)}catch{}}function a(){o(!1)}e.s(["Y",0,a,"g",0,o],778035);var l=e.i(618566),s=e.i(270524),u=e.i(311063);function c(){if("u"new Promise(t=>setTimeout(t,e)),h=(0,n.createContext)(null),p=e=>e instanceof Error?e.message:String(e);function m(e){return fetch(e,{method:"POST",keepalive:!0}).then(()=>void 0).catch(()=>void 0)}function g(){fetch("/api/events/login",{method:"POST",headers:{"content-type":"applicationhttps://www.cbtnuggets.com/json"},body:JSON.stringify({landingPath:window.location.pathname}),keepalive:!0}).catch(()=>void 0)}e.s(["m",0,function({loadClient:e,peekClient:i,children:o}){let[w,y]=(0,n.useState)("checking"),[b,v]=(0,n.useState)(null),[_,S]=(0,n.useState)(!1),[P,x]=(0,n.useState)(null),C=(0,n.useRef)(!1),O=(0,l.useRouter)(),R=(0,l.usePathname)(),j=(0,n.useCallback)(async()=>{y("checking"),x(null);try{let t=await e(),n=await t.getProfile({force:!0});v(n),y(n?"authenticated":"unauthenticated")}catch(e){v(null),y("unauthenticated"),x(p(e))}},[e]),E=(0,n.useCallback)(async()=>{x(null),S(!0),y("checking");try{let t=i(),n=null;if(!t){n=function(){let e=Math.max(0,Math.round(window.screenX+(window.outerWidth-520)/2)),t=Math.max(0,Math.round(window.screenY+(window.outerHeight-720)/2));try{return window.open("","adept-login",`width=520,height=720,left=${e},top=${t}`)}catch{return null}}();try{t=await e()}catch(e){throw n?.close(),e}}if(await t.login(),(0,s.s)()){y("unauthenticated"),(0,u.p)("adept-popup:create-account",R??"/"),R===s.P?(0,s.j)():O.push((0,s.Q)());return}let r=await t.getProfile();v(r),y(r?"authenticated":"unauthenticated"),r||console.error("[adept-auth] login() established a session but getProfile() returned null — /oauth2/userinfo rejected the freshly verified token"),r&&m("/api/auth/session").then(g)}catch(e){x(p(e)),y("unauthenticated")}finally{S(!1)}},[e,i,R,O]),k=(0,n.useCallback)(async()=>{let t=await e();await t.logout({postLogoutRedirectUri:window.location.href})},[e]);(0,n.useEffect)(()=>{if(C.current)return;C.current=!0;let t=async()=>{let t,n=async e=>{try{return{profile:await e.getProfile({force:!0}),failure:null}}catch(e){return{profile:null,failure:p(e)}}};try{t=await e()}catch(e){v(null),y("unauthenticated"),x(p(e));return}let r=await n(t);for(let e of d){if(r.profile||!c()||(await f(e),!c()))break;r=await n(t)}v(r.profile),y(r.profile?"authenticated":"unauthenticated"),x(r.failure),r.profile&&m("/api/auth/session/refresh")};(async()=>{if((0,r.j)(window.location.search))try{let t=await e();if(await t.completeSignOutOnReturn()){v(null),y("unauthenticated"),a();return}}catch(e){console.error("[adept-auth] sign-out return could not load the SDK:",p(e))}let n=c();n&&(v(e=>e??{name:n.name,picture:n.picture}),y("authenticated")),function(e,t){let n=!1,r=!1,i=()=>{},o=window.setTimeout(()=>a(),t.timeout+(t.ceilingGraceMs??1e3)),a=()=>{n||r||(r=!0,window.clearTimeout(o),i(),e())},l=()=>{if(!n&&!r)if("function"==typeof window.requestIdleCallback){let e=window.requestIdleCallback(a,{timeout:t.timeout});i=()=>window.cancelIdleCallback(e)}else{let e=window.setTimeout(a,t.timeout);i=()=>window.clearTimeout(e)}},s="function"==typeof window.requestAnimationFrame?window.requestAnimationFrame.bind(window):e=>window.setTimeout(()=>e(performance.now()),16),u="function"==typeof window.cancelAnimationFrame?window.cancelAnimationFrame.bind(window):e=>window.clearTimeout(e);if("u">typeof document&&"hidden"===document.visibilityState)return l();let c=s(()=>{if(n||r)return;let e=s(()=>{n||r||l()});i=()=>u(e)});i=()=>u(c)}(()=>void t(),{timeout:2e3})})()},[e]);let I=(0,n.useMemo)(()=>({status:w,profile:b,authenticating:_,error:P,login:E,recheck:j,logout:k}),[w,b,_,P,E,j,k]);return(0,t.jsx)(h.Provider,{value:I,children:o})},"B",0,c,"r",0,function(){return(0,n.useContext)(h)}],540874)}])})();