PageSourceSearch

https://tubelab.kr/_next/static/chunks/3l7xitsbqaahh.js

js tubelab.kr collected 2026-10-02 01:59:46 UTC 27,678 bytes, 3 lines download raw bytes

1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,618566,(e,t,r)=>{t.exports=e.r(976562)},795327,e=>{"use strict";let t;var r,n,o=e.i(271645);let a={303:"Multiple adapter contexts detected. This might happen in monorepos.",404:"nuqs requires an adapter to work with your framework.",409:"Multiple versions of the library are loaded. This may lead to unexpected behavior. Currently using `%s`, but `%s` (via the %s adapter) was about to load on top.",414:"Max safe URL length exceeded. Some browsers may not be able to accept this URL. Consider limiting the amount of state stored in the URL.",429:"URL update rate-limited by the browser. Consider increasing `throttleMs` for key(s) `%s`. %O",500:"Empty search params cache. Search params can't be accessed in Layouts.",501:"Search params cache already populated. Have you called `parse` twice?",502:"`processUrlSearchParams` threw while processing key(s) `%s`. %O"};function i(e){return`[nuqs] ${a[e]}
2  See https://nuqs.dev/NUQS-${e}`}let s="2.10.1",l={};function u(e,t){let r=Symbol.for(`nuqs.${s}.${e}`),n=globalThis;if(null!=n[r])return n[r];let o=Object.isExtensible(n)?n:l;return o[r]??=t()}let c=(r=o.createContext,n=()=>{let e=(0,o.createContext)({useAdapter(){throw Error(i(404))}});return e.displayName="NuqsAdapterContext",e},(t=u("adapter-context",()=>new WeakMap)).has(r)||t.set(r,n()),t.get(r));"u">typeof window&&(window.__NuqsAdapterContext&&window.__NuqsAdapterContext!==c&&console.error(i(303)),window.__NuqsAdapterContext=c),e.s(["a",0,()=>(0,o.useContext)(c).processUrlSearchParams,"c",0,function(e){if(0===e.size)return"";let t=[];for(let[r,n]of e.entries()){let e=r.replace(/#/g,"%23").replace(/&/g,"%26").replace(/\+/g,"%2B").replace(/=/g,"%3D").replace(/\?/g,"%3F");t.push(`${e}=${n.replace(/%/g,"%25").replace(/\+/g,"%2B").replace(/ /g,"+").replace(/#/g,"%23").replace(/&/g,"%26").replace(/"/g,"%22").replace(/'/g,"%27").replace(/`/g,"%60").replace(/</g,"%3C").replace(/>/g,"%3E").replace(/[\x00-\x1F]/g,e=>encodeURIComponent(e))}`)}return"?"+t.join("&")},"i",0,()=>(0,o.useContext)(c).defaultOptions,"l",0,i,"n",0,function(e){return({children:t,defaultOptions:r,processUrlSearchParams:n,...a})=>(0,o.createElement)(c.Provider,{...a,value:{useAdapter:e,defaultOptions:r,processUrlSearchParams:n}},t)},"o",0,u,"r",0,function(e){let t=(0,o.useContext)(c);if(!("useAdapter"in t))throw Error(i(404));return t.useAdapter(e)},"s",0,s])},594693,e=>{"use strict";e.s(["i",0,function(e){},"t",0,function(e){}])},907293,e=>{"use strict";var t=e.i(594693),r=e.i(795327),n=e.i(271645);function o(e){return{method:"throttle",timeMs:e}}let a=o(function(){if("u"<typeof window||!window.GestureEvent)return 50;try{let e=navigator.userAgent?.match(/version\/([\d\.]+) safari/i);return parseFloat(e[1])>=17?120:320}catch{return 320}}());function i(e,t,r){if("string"==typeof r)e.set(t,r);else{for(let n of(e.delete(t),r))e.append(t,n);e.has(t)||e.set(t,"")}return e}function s(){let e=new Map;return{on(t,r){let n=e.get(t)||[];return n.push(r),e.set(t,n),()=>this.off(t,r)},off(t,r){let n=e.get(t);n&&e.set(t,n.filter(e=>e!==r))},emit(t,r){e.get(t)?.forEach(e=>e(r))}}}function l(e,t,r){let n=setTimeout(function(){e(),r.removeEventListener("abort",o)},t);function o(){clearTimeout(n),r.removeEventListener("abort",o)}r.addEventListener("abort",o)}function u(){let e=Promise;if(Promise.hasOwnProperty("withResolvers"))return Promise.withResolvers();let t=()=>{},r=()=>{};return{promise:new e((e,n)=>{t=e,r=n}),resolve:t,reject:r}}function c(){return new URLSearchParams(location.search)}var d=class{updateMap=new Map;options={history:"replace",scroll:!1,shallow:!0};timeMs=a.timeMs;transitions=new Set;resolvers=null;controller=null;lastFlushedAt=0;resetQueueOnNextPush=!1;push({key:e,query:r,options:n},o=a.timeMs){this.resetQueueOnNextPush&&(this.reset(),this.resetQueueOnNextPush=!1),(0,t.t)(7,e,r,n),this.updateMap.set(e,r),"push"===n.history&&(this.options.history="push"),n.scroll&&(this.options.scroll=!0),!1===n.shallow&&(this.options.shallow=!1),n.startTransition&&this.transitions.add(n.startTransition),(!Number.isFinite(this.timeMs)||o>this.timeMs)&&(this.timeMs=o)}getQueuedQuery(e){return this.updateMap.get(e)}
2getPendingPromise({getSearchParamsSnapshot:e=c}){return this.resolvers?.promise??Promise.resolve(e())}flush({getSearchParamsSnapshot:e=c,rateLimitFactor:r=1,...n},o){if(this.controller??=new AbortController,!Number.isFinite(this.timeMs))return(0,t.t)(8),Promise.resolve(e());if(this.resolvers)return this.resolvers.promise;this.resolvers=u();let a=()=>{this.lastFlushedAt=performance.now();let[t,r]=this.applyPendingUpdates({...n,autoResetQueueOnUpdate:n.autoResetQueueOnUpdate??!0,getSearchParamsSnapshot:e},o);null===r?(this.resolvers.resolve(t),this.resetQueueOnNextPush=!0):this.resolvers.reject(t),this.resolvers=null},i=()=>{let e=performance.now()-this.lastFlushedAt,n=this.timeMs,o=r*Math.max(0,n-e);(0,t.t)(9,o,n,r),0===o?a():l(a,o,this.controller.signal)};return l(i,0,this.controller.signal),this.resolvers.promise}abort(){return this.controller?.abort(),this.controller=new AbortController,this.resolvers?.resolve(new URLSearchParams),this.resolvers=null,this.reset()}reset(){let e=Array.from(this.updateMap.keys());return(0,t.t)(10,JSON.stringify(Object.fromEntries(this.updateMap))),this.updateMap.clear(),this.transitions.clear(),this.options={history:"replace",scroll:!1,shallow:!0},this.timeMs=a.timeMs,e}applyPendingUpdates(e,n){let{updateUrl:o,getSearchParamsSnapshot:a}=e,s=a();if((0,t.t)(11,this.updateMap.size,s.toString()),0===this.updateMap.size)return[s,null];let l=Array.from(this.updateMap.entries()),u={...this.options},c=Array.from(this.transitions);for(let[r,n]of(e.autoResetQueueOnUpdate&&this.reset(),(0,t.t)(12,l,u),l))null===n?s.delete(r):s=i(s,r,n);if(n)try{s=n(s)}catch(e){return console.error((0,r.l)(502),l.map(([e])=>e).join(),e),this.resetQueueOnNextPush=!0,[s,e]}try{return!function(e,t){let r=t;for(let t=e.length-1;t>=0;t--){let n=e[t];if(!n)continue;let o=r;r=()=>n(o)}r()}(c,()=>o(s,u)),[s,null]}catch(e){return console.error((0,r.l)(429),l.map(([e])=>e).join(),e),[s,e]}}};let p=(0,r.o)("throttle-queue",()=>new d);var h=class{resolvers=u();controller=new AbortController;queuedValue=void 0;abort(){this.controller.abort(),this.queuedValue=void 0}push(e,r,n){return this.queuedValue=e,this.controller.abort(),this.controller=new AbortController,l(()=>{let r=this.resolvers;try{(0,t.t)(13,e);let o=n(e);(0,t.t)(14,this.queuedValue),this.queuedValue=void 0,this.resolvers=u(),o.then(e=>r.resolve(e)).catch(e=>r.reject(e))}catch(e){this.queuedValue=void 0,r.reject(e)}},r,this.controller.signal),this.resolvers.promise}},f=class{throttleQueue;queues=new Map;queuedQuerySync=s();constructor(e=new d){this.throttleQueue=e}push(e,r,n,o){if(!Number.isFinite(r))return Promise.resolve((n.getSearchParamsSnapshot??c)());let a=e.key,i=this.queues.get(a);i||((0,t.t)(15,a),i=new h,this.queues.set(a,i)),(0,t.t)(17,e);let s=()=>(this.throttleQueue.push(e),this.throttleQueue.flush(n,o).finally(()=>{this.queues.get(a)?.queuedValue===void 0&&((0,t.t)(16,a),this.queues.delete(a)),this.queuedQuerySync.emit(a)})),l=i.push(e,r,s);return this.queuedQuerySync.emit(a),l}abort(e){let r=this.queues.get(e);return r?((0,t.t)(18,e,r.queuedValue?.query),this.queues.delete(e),r.abort(),this.queuedQuerySync.emit(e),e=>(e.then(r.resolvers.resolve,r.resolvers.reject),e)):e=>e}abortAll(){for(let[e,r]of this.queues.entries())(0,t.t)(18,e,r.queuedValue?.query),r.abort(),r.resolvers.resolve(new URLSearchParams),this.queuedQuerySync.emit(e);this.queues.clear()}getQueuedQuery(e){let t=this.queues.get(e)?.queuedValue?.query;return void 0!==t?t:this.throttleQueue.getQueuedQuery(e)}};let m=(0,r.o)("debounce-controller",()=>new f(p));e.s(["a",0,function(e){if(e instanceof URL)return e.searchParams;if(e.startsWith("?")){let t=e.indexOf("#");return new URLSearchParams(-1===t?e:e.slice(0,t))}try{return new URL(e,location.href).searchParams}catch{return new URLSearchParams(e)}},"c",0,function(e){return{method:"debounce",timeMs:e}},"i",0,s,"l",0,a,"n",0,function(e){var t,r;let o,a;return t=(e,t)=>m.queuedQuerySync.on(e,t),r=e=>m.getQueuedQuery(e),o=(0,n.useCallback)(()=>{let t=Object.fromEntries(e.map(e=>[e,r(e)]));return[JSON.stringify(t),t]},[e.join(","),r]),null===(a=(0,n.useRef)(null)).current&&(a.current=o()),(0,n.useSyncExternalStore)((0,n.useCallback)(r=>{let n=e.map(e=>t(e,r));return()=>
2n.forEach(e=>e())},[e.join(","),t]),()=>{let[e,t]=o();return a.current[0]===e?a.current[1]:(a.current=[e,t],t)},()=>a.current[1])},"o",0,function(e){return null===e||Array.isArray(e)&&0===e.length},"r",0,p,"s",0,i,"t",0,m,"u",0,o])},526732,e=>{"use strict";var t=e.i(247167);e.i(843476);var r=e.i(271645);class n extends Error{constructor(e,t){e instanceof Error?super(void 0,{cause:{err:e,...e.cause,...t}}):"string"==typeof e?(t instanceof Error&&(t={err:t,...t.cause}),super(e,t)):super(void 0,e),this.name=this.constructor.name,this.type=this.constructor.type??"AuthError",this.kind=this.constructor.kind??"error",Error.captureStackTrace?.(this,this.constructor);const r=`https://errors.authjs.dev#${this.type.toLowerCase()}`;this.message+=`${this.message?". ":""}Read more at ${r}`}}class o extends n{}async function a(e,t,r,n={}){let s=`${i(t)}/${e}`;try{let e={headers:{"Content-Type":"application/json",...n?.headers?.cookie?{cookie:n.headers.cookie}:{}}};n?.body&&(e.body=JSON.stringify(n.body),e.method="POST");let t=await fetch(s,e),r=await t.json();if(!t.ok)throw r;return r}catch(e){return r.error(new o(e.message,e)),null}}function i(e){return"u"<typeof window?`${e.baseUrlServer}${e.basePathServer}`:e.basePath}function s(e){let t=new URL("http://localhost:3000/api/auth");e&&!e.startsWith("http")&&(e=`https://${e}`);let r=new URL(e||t),n=("/"===r.pathname?t.pathname:r.pathname).replace(/\/$/,""),o=`${r.origin}${n}`;return{origin:r.origin,host:r.host,path:n,base:o,toString:()=>o}}let l={baseUrl:s(t.default.env.NEXTAUTH_URL??t.default.env.VERCEL_URL).origin,basePath:s(t.default.env.NEXTAUTH_URL).path,baseUrlServer:s(t.default.env.NEXTAUTH_URL_INTERNAL??t.default.env.NEXTAUTH_URL??t.default.env.VERCEL_URL).origin,basePathServer:s(t.default.env.NEXTAUTH_URL_INTERNAL??t.default.env.NEXTAUTH_URL).path,_lastSync:0,_session:void 0,_getSession:()=>{}},u=null,c={debug:console.debug,error:console.error,warn:console.warn},d=r.createContext?.(void 0);async function p(){let e=await a("csrf",l,c);return e?.csrfToken??""}async function h(){return a("providers",l,c)}async function f(e,t,r){let{callbackUrl:n,...o}=t??{},{redirect:a=!0,redirectTo:s=n??window.location.href,...u}=o,c=i(l),d=await h();if(!d){let e=`${c}/error`;window.location.href=e;return}if(!e||!d[e]){let e=`${c}/signin?${new URLSearchParams({callbackUrl:s})}`;window.location.href=e;return}let f=d[e].type;if("webauthn"===f)throw TypeError(`Provider id "${e}" refers to a WebAuthn provider.
3Please use \`import { signIn } from "next-auth/webauthn"\` instead.`);let m=`${c}/${"credentials"===f?"callback":"signin"}/${e}`,g=await p(),_=await fetch(`${m}?${new URLSearchParams(r)}`,{method:"post",headers:{"Content-Type":"application/x-www-form-urlencoded","X-Auth-Return-Redirect":"1"},body:new URLSearchParams({...u,csrfToken:g,callbackUrl:s})}),w=await _.json();if(a){let e=w.url??s;window.location.href=e,e.includes("#")&&window.location.reload();return}let y=new URL(w.url).searchParams.get("error")??void 0,v=new URL(w.url).searchParams.get("code")??void 0;return _.ok&&await l._getSession({event:"storage"}),{error:y,code:v,status:_.status,ok:_.ok,url:y?null:w.url}}async function m(e){let{redirect:t=!0,redirectTo:r=e?.callbackUrl??window.location.href}=e??{},n=i(l),o=await p(),a=await fetch(`${n}/signout`,{method:"post",headers:{"Content-Type":"application/x-www-form-urlencoded","X-Auth-Return-Redirect":"1"},body:new URLSearchParams({csrfToken:o,callbackUrl:r})}),s=await a.json();if((null===u&&(u="u"<typeof BroadcastChannel?{postMessage:()=>{},addEventListener:()=>{},removeEventListener:()=>{},name:"next-auth",onmessage:null,onmessageerror:null,close:()=>{},dispatchEvent:()=>!1}:new BroadcastChannel("next-auth")),u).postMessage({event:"session",data:{trigger:"signout"}}),t){let e=s.url??r;window.location.href=e,e.includes("#")&&window.location.reload();return}return await l._getSession({event:"storage"}),s}e.s(["SessionContext",0,d,"__NEXTAUTH",0,l,"signIn",0,f,"signOut",0,m,"useSession",0,function(e){if(!d)throw Error("React Context is unavailable in Server Components");let t=r.useContext(d),{required:n,onUnauthenticated:o}=e??{},a=n&&"unauthenticated"===t.status;return(r.useEffect(()=>{if(a){let e=`${l.basePath}/signin?${new URLSearchParams({error:"SessionRequired",callbackUrl:window.location.href})}`;o?o():window.location.href=e}},[a,o]),a)?{data:t.data,update:t.update,status:"loading"}:t}],526732)},758379,e=>{"use strict";let t=(0,e.i(456420).default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);e.s(["default",0,t])},109088,e=>{"use strict";let t=["open","consent","pay","toss"],r=["utm_source","utm_medium","utm_campaign","utm_content"];[...r],e.s(["AUTH_EVENT_COOKIE",0,"tl_auth_evt","AUTH_EVENT_LOGIN",0,"login","AUTH_EVENT_LOGIN_ONBOARDED",0,"login_onboarded","AUTH_EVENT_SIGNUP",0,"signup","AUTH_EVENT_SIGNUP_ONBOARDED",0,"signup_onboarded","CHECKOUT_STAGES",0,t,"FIRST_TOUCH_REFERRER_KEY",0,"ref_host","FIRST_TOUCH_UTM_KEYS",0,r,"HEARTBEAT_EVENT",0,"heartbeat","MAX_EVENTS_PER_REQUEST",0,20,"MAX_QS_LEN",0,500,"MAX_TRACK_DETAIL_LEN",0,40,"PAGE_STATE_DEBOUNCE_MS",0,3e3,"TRACK_KEYS",0,["benefit_login","benefit_claim","cta_price_card","cta_mobile_bar","cta_final","cta_promo","cta_enter_classroom","lecture_tab","curriculum_toggle","preview_play","faq_toggle","intro_expand","intro_collapse","images_expand","images_collapse","review_open"],"isInternalTraffic",0,function(e){return"internal"===e},"maxCheckoutStage",0,function(e,r){return t.indexOf(r)>t.indexOf(e)?r:e}])},82305,357785,e=>{"use strict";let t=null,r=0;function n(e){try{let t=window,r=navigator;return!0===t[`ga-disable-${e}`]||!0===r.globalPrivacyControl||"1"===navigator.doNotTrack}catch{return!0}}function o(e){fetch("/api/analytics/context",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e),keepalive:!0}
3).catch(()=>{})}e.s(["browserAnalyticsBlocked",0,n,"captureGaContext",0,function(e){try{let a;if(!t?.user)return;let{id:i,user:s,enabled:l}=t,u=new Date().toISOString();if(n(i))return void o({blocked:!0,observed_at:u});if(!l||!e&&Date.now()-r<6e4||"function"!=typeof window.gtag)return;r=Date.now();let c=null,d=!1,p=()=>{d||!c||t?.user!==s||n(i)||(d=!0,o({blocked:!1,observed_at:u,ga_client_id:c,...a?{ga_session_id:a}:{},...e?{order_no:e}:{}}))},h=setTimeout(p,1e3);window.gtag("get",i,"client_id",e=>{"string"==typeof e&&/^\d{1,20}\.\d{1,20}$/.test(e)&&(c=e),a&&(clearTimeout(h),p())}),window.gtag("get",i,"session_id",e=>{/^\d{1,20}$/.test(String(e))&&(a=String(e)),c&&(clearTimeout(h),p())})}catch{}},"configureContextCapture",0,function(e,n,o){t?.user!==n&&(r=0),t={id:e,user:n,enabled:o}}],82305);let a=/(\/(?:cf|vf)\/)[^/?#&]+/g,i=new Set(["schema_version","feature","surface","action","result","reason_code","result_count","duration_ms","content_type","content_id","position","interaction_id","course_id","lesson_id","method","percent","position_sec","format","value","currency","item_id","query_length"]),s=new Set(["schema_version","result_count","duration_ms","position","percent","position_sec","value","query_length"]),l=new Set(["q","search","ytq","search_term","email","phone","name","title","message","token","filename"]),u=new Set(["banner_id","feature_key","href","link_url","id","plan_code","product_type","provider","reason","status","from_grant","courses","ebooks","other","key","stage","detail","dwell_ms","order_no","product_ref"]),c=new Set(["banner_id","id","order_no","product_ref"]),d=/^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,99}$/,p=/@|(?:\d[\s-]*){10,}/;function h(e){return"string"==typeof e&&d.test(e)&&!p.test(e)?e:null}function f(e){try{let t=new URL(e,"https://tubelab.kr");if(!["https:","http:"].includes(t.protocol))return"";let r=t.pathname.replace(a,"$1_").split("/").map(e=>{try{return p.test(decodeURIComponent(e))?"_":e}catch{return"_"}}).join("/");return`${t.origin}${r}`}catch{return""}}let m=new Set(["country","matched","ptype","sort","minViews","folder","tab","category","channel","platform","ch","vsort","vtype","vcat","vptype","vkr","vview","ytsort","period","page","order","grades","types","subsRanges","subsMin","subsMax","categories","ptypes","date","viewsIncrementMin","viewsIncrementMax","estimatedRevenueMin","estimatedRevenueMax","avgDailyUploadsMin","avgDailyUploadsMax","avgShortsDurationMin","avgShortsDurationMax","avgLongDurationMin","avgLongDurationMax"]);e.s(["publicProps",0,function(e){if(!e)return null;let t={};for(let[o,a]of Object.entries(e))if(!l.has(o))if(i.has(o)){var r,n;let e=(r=o,n=a,i.has(r)?s.has(r)?"number"!=typeof n||!Number.isFinite(n)||n<0||n>1e12||"percent"===r&&![25,50,75].includes(n)?null:Math.round(100*n)/100:"currency"===r?"KRW"===n?"KRW":null:"result"===r?["attempt","success","empty","error","cancel"].includes(String(n))?String(n):null:["content_id","course_id","lesson_id","item_id","interaction_id"].includes(r)?"string"==typeof n&&/^[A-Za-z0-9_-]{1,100}$/.test(n)?n:null:h(n):null);null!==e&&(t[o]=e)}else if("href"===o||"link_url"===o){if("string"==typeof a){let e=f(a);t[o]=a.startsWith("/")&&!a.startsWith("//")?e.replace(/^https:\/\/tubelab\.kr/,""):e}}else if(o.startsWith("utm_")||"ref_host"===o){let e="string"==typeof a?a.slice(0,500).replace(/[\u0000-\u001f\u007f-\u009f]/g," ").replace(/[\w.+-]+@[\w-]+\.[\w.-]+/g,"[masked]").replace(/\b(?:\d[ -]?){13,19}\b/g,"[masked]").replace(/(\+?\d{1,3}[-.\s]?)?0?1[016789][-.\s]?\d{3,4}[-.\s]?\d{4}/g,"[masked]").trim().replace(/\s+/g," ").slice(0,100):null;e&&(t[o]=e)}else if(!u.has(o))continue;else if(c.has(o))"string"==typeof a&&/^[A-Za-z0-9_-]{1,100}$/.test(a)&&(t[o]=a);else if("string"==typeof a){let e=h(a);null!==e&&(t[o]=e)}else("boolean"==typeof a||"number"==typeof a&&Number.isFinite(a))&&(t[o]=a);return Object.keys(t).length?t:null},"publicQuery",0,function(e){let t=new URLSearchParams;for(let[r,n]of new URLSearchParams(e))m.has(r)&&/^[A-Za-z0-9_,.:-]{1,100}$/.test(n)&&!t.has(r)&&t.set(r,n);return t.toString()},"safePageUrl",0,f,"safeReferrer",0,function(e){try{let t=new URL(e);return/^https?:$/.test(t.protocol)?t.origin:""}catch{return""}}],357785)},315480,e=>{"use strict";e.s(["gaCompletionEvent",0,function(e){return"number"!=typeof e||!Number.isSafeInteger(e)||e<0?null:0===e?"free_enrollment":"purchase"}])},720188,e=>{"use strict";var t=e.i(82305),r=e.i(357785),n=e.i(315480);let o=new Set(["ui_click","heartbeat","page_state","lesson_pause","lesson_seek"]),a=new Set(["feature","surface","feature_key","action","result","reason_code","result_count","duration_ms","content_type","position","method","percent","position_sec","format","query_length","plan_code","product_type","provider","reason","status","key","stage","dwell_ms"]),i={login_success:"login",signup_complete:"account_created",onboarding_complete:"sign_up",commerce_view:"view_item"},s=[],l=null,u=null,c=!1,d=!1,p=!1,h=!1;function f(e){return{page_location:(0,r.safePageUrl)(window.location.href),page_referrer:(0,r.safeReferrer)(document.referrer),page_title:"class"===e?"TubeLab 클래스":"TubeLab"}}function m(){c=!0,p=!1;let e=s;for(let t of(s=[],e))Date.now()-t.at<=3e4&&g(t);(0,t.captureGaContext)()}function g(e){try{"page_view"===e.name&&window.gtag?.("set",{page_location:e.params.page_location,page_referrer:e.params.page_referrer,page_title:e.params.page_title}),window.gtag?.("event",e.name,e.params)}catch{}}e.s(["clearGaIdentity",0,function(){s=[],u=null,l&&(0,t.configureContextCapture)(l,null,!1);try{window.gtag?.("set",{user_id:null})}catch{}},"configureGa",0,function(e,r,n){try{if(!/^G-[A-Z0-9]+$/.test(e))return;null!==l&&u!==r&&(s=[]),u=r;let o=l!==e;if(l=e,(0,t.browserAnalyticsBlocked)(e)){window[`ga-disable-${e}`]=!0,s=[],(0,t.captureGaContext)();return}if(window.gtag||(window.dataLayer??=[],window.gtag=function(){window.dataLayer?.push(arguments)}),"function"!=typeof window.gtag)return;o&&window.gtag("js",new Date),window.gtag("config",e,{send_page_view:!1,user_id:r,...f(n),allow_google_signals:!1,allow_ad_personalization_signals:!1}),d&&m()}catch{}},"gaFailed",0,function(){p=!0,s=[]},"gaReady",0,function(){d=!0,null!==l&&m()},"sendToGa",0,function(e,u,d,m){try{if(o.has(e)||p)return;if(l&&(0,t.browserAnalyticsBlocked)(l)){window[`ga-disable-${l}`]=!0,s=[],(0,t.captureGaContext)();return}let _="purchase_complete"===e||"free_enrollment"===e;if(h&&_)return;let w=_?(0,n.gaCompletionEvent)(u?.value):null;if(_&&(!w||"free_enrollment"===e&&"free_enrollment"!==w))return;let y=(0,r.publicProps)(u);if(_&&"number"!=typeof y?.value)return;let v={site:d,schema_version:2,...f(d)};for(let[e,t]of(m?.startsWith("/")&&!m.startsWith("//")&&(v.page_location=(0,r.safePageUrl)(`${window.location.origin}${m}`)),Object.entries(y??{})))a.has(e)&&Object.keys(v).length<15&&(v[e]=t);for(let t of(("login_success"===e||"onboarding_complete"===e)&&(v.method="kakao"),["source","medium","name","content"])){let e="name"===t?"utm_campaign":`utm_${t}`,r=y?.[e];r&&(v[`campaign_${t}`]=r)}if(["commerce_view","begin_checkout"].includes(e)||_){"free_enrollment"!==w&&"number"==typeof y?.value&&(v.value=y.value,v.currency="KRW");let e=y?.item_id??y?.product_ref??y?.plan_code;if(e&&(v.items=[{item_id:String(e),item_category:y?.product_type??d,quantity:1,..."free_enrollment"!==w&&"number"==typeof y?.value?{price:y.value}:{}}]),_){if("string"!=typeof y?.order_no)return;"purchase"===w?v.transaction_id=y.order_no:Object.assign(v,{feature:"enrollment",action:"complete",result:"success",product_type:"class"===d?"course":"saas_plan"})}}let b={name:w??i[e]??e,params:v,at:Date.now()};c||null===l&&"function"==typeof window.gtag?g(b):((s=s.filter(e=>b.at-e.at<=3e4)).length>=100&&s.shift(),s.push(b))}catch{}},"setServerPurchaseMode",0,function(e){h=e}])},873925,e=>{"use strict";var t=e.i(720188),r=e.i(82305),n=e.i(357785),o=e.i(109088);let a="/api/events",i=["pointerdown","keydown","scroll","wheel","touchstart"],s="saas",l=[],u=null,c=null,d=null,p=null,h=!1,f=null;function m(){return d??=new Promise(e=>{p=e})}function g(){h||(h=!0,null!==f&&(clearTimeout(f),f=null),m(),p?.())}function _(e,a={}){try{l.push({name:e,path:a.path??window.location.pathname,from_path:a.from_path??null,menu_key:a.menu_key??null,props:(0,n.publicProps)(a.props??null),...a.qs&&(0,n.publicQuery)(a.qs)?{qs:(0,n.publicQuery)(a.qs)}:{}}),(0,t.sendToGa)(e,a.props??null,s,a.path),["checkout_open","checkout_consent","pay_click","purchase_complete","free_enrollment","begin_checkout"].includes(e)&&"string"==typeof a.props?.order_no&&(0,r.captureGaContext)(a.props.order_no),l.length>=o.MAX_EVENTS_PER_REQUEST?T():u||(u=setTimeout(T,2e3))}
3catch(e){console.warn("[analytics] track 실패 — 계측은 best-effort 라 삼킨다",e)}}function w(){let e=(0,n.publicQuery)(window.location.search.replace(/^\?/,""));return e?e.slice(0,o.MAX_QS_LEN):void 0}let y=!1,v=new Set(o.TRACK_KEYS),b=Date.now(),E=null;function S(){let e=Date.now();if(!(e-b<1e3)){b=e;try{E?.()}catch(e){console.warn("[analytics] 하트비트 재개 실패 — 계측은 best-effort 라 삼킨다",e)}}}function T(){let e;if(u&&(clearTimeout(u),u=null),0===l.length)return;let t=l;l=[];try{e=JSON.stringify({events:t})}catch(e){console.warn("[analytics] 배치 직렬화 실패 — 이 배치는 버린다",e),g();return}try{var r;r=e,h&&"u">typeof navigator&&"function"==typeof navigator.sendBeacon&&navigator.sendBeacon(a,new Blob([r],{type:"application/json"}))||fetch(a,{method:"POST",headers:{"Content-Type":"application/json"},body:r,keepalive:!0}).catch(()=>{}).finally(g)}catch(e){console.warn("[analytics] 배치 전송 실패 — 계측은 best-effort 라 삼킨다",e),g()}}e.s(["configureAnalytics",0,function(e){s=e},"flushAnalytics",0,function(){try{T()}catch(e){console.warn("[analytics] flushAnalytics 실패 — 계측은 best-effort 라 삼킨다",e)}},"markUserActive",0,S,"registerAnalyticsFlush",0,function(){let e=()=>{"hidden"===document.visibilityState&&T()},t=()=>T();return document.addEventListener("visibilitychange",e),window.addEventListener("pagehide",t),()=>{document.removeEventListener("visibilitychange",e),window.removeEventListener("pagehide",t)}},"registerClickTracking",0,function(){let e=e=>{let t=e.target;if(!(t instanceof Element))return;let r=t.closest("[data-track]"),n=r?.getAttribute("data-track");if(!n||!v.has(n))return;let a=r?.getAttribute("data-track-detail");_("ui_click",{props:a?{key:n,detail:a.slice(0,o.MAX_TRACK_DETAIL_LEN)}:{key:n}})};return document.addEventListener("click",e,!0),()=>document.removeEventListener("click",e,!0)},"registerHeartbeat",0,function(e){let t=null,r=!1,n=!1,s=()=>{let t=Date.now()-b<6e4;fetch(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({events:[{name:o.HEARTBEAT_EVENT,path:e,props:{active:t}}]}),keepalive:!0}).catch(()=>{})},l=()=>Date.now()-b>=9e5,u=()=>{t&&(clearInterval(t),t=null)},c=()=>{if(l()){n=!0,u();return}s()},d=()=>{t||(t=setInterval(c,6e4))},p=()=>{(function(){if(h)return Promise.resolve();let e=m();return f??=setTimeout(g,1e4),e})().then(()=>{if(!r&&"hidden"!==document.visibilityState){if(l()){n=!0;return}n=!1,s(),d()}})},_=()=>{r||!n||"hidden"!==document.visibilityState&&(n=!1,s(),d())},w=()=>{"hidden"===document.visibilityState?u():(b=Date.now(),p())},y=()=>S();for(let e of(document.addEventListener("visibilitychange",w),i))document.addEventListener(e,y,{capture:!0,passive:!0});return E=_,"hidden"!==document.visibilityState&&p(),()=>{for(let e of(r=!0,u(),document.removeEventListener("visibilitychange",w),i))document.removeEventListener(e,y,{capture:!0});E===_&&(E=null)}},"registerMenuClickTracking",0,function(){let e=e=>{let t=e.target;if(!(t instanceof Element))return;let r=t.closest("[data-menu-key]"),n=r?.getAttribute("data-menu-key");n&&_("menu_click",{menu_key:n.slice(0,40)})};return document.addEventListener("click",e,!0),()=>document.removeEventListener("click",e,!0)},"track",0,_,"trackAuthEvent",0,function(){if("u"<typeof document||y)return;let e=function(e){let t=document.cookie.match(RegExp(`(?:^|; )${e}=([^;]*)`));if(!t)return null;try{return decodeURIComponent(t[1])}catch{return t[1]}}(o.AUTH_EVENT_COOKIE);if(!e)return;y=!0,function(){let e=`${o.AUTH_EVENT_COOKIE}=; Max-Age=0; path=/`;document.cookie=e;let t=window.location.hostname.split(".");for(let r=0;r<t.length;r++){let n=t.slice(r).join(".");document.cookie=`${e}; domain=${n}`,document.cookie=`${e}; domain=.${n}`}}();let t=e===o.AUTH_EVENT_SIGNUP||e===o.AUTH_EVENT_SIGNUP_ONBOARDED,r=e===o.AUTH_EVENT_SIGNUP_ONBOARDED||e===o.AUTH_EVENT_LOGIN_ONBOARDED;t&&_("signup_complete",{props:{provider:"kakao"}}),(t||r||e===o.AUTH_EVENT_LOGIN)&&_("login_success",{props:{provider:"kakao"}}),r&&_("onboarding_complete",{props:{feature:"onboarding"}})},"trackPageState",0,function(e){_("page_state",{path:e,qs:w()})},"trackPageView",0,function(e){let t=c;c=e,_("page_view",{path:e,from_path:t,props:function(){let e={},t=function(){let e=document.referrer;if(!e)return null;try{return new URL(e).hostname||null}catch{return null}}();t&&(e[o.FIRST_TOUCH_REFERRER_KEY]=t);let r=new URLSearchParams(window.location.search);for(let t of o.FIRST_TOUCH_UTM_KEYS){let n=r.get(t);n&&(e[t]=n)}return Object.keys(e).length>0?e:null}(),qs:w()})},"trackPromoBarClick",0,function(e,t){_("promo_bar_click",{props:{banner_id:e,link_url:t}})}])}]);

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.