@apps-in-toss/web-framework 1.10.0 → 1.11.0

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.
package/dist/cli/index.js CHANGED
@@ -52268,6 +52268,116 @@ var require_cross_spawn = __commonJS({
52268
52268
  }
52269
52269
  });
52270
52270
 
52271
+ // package.json
52272
+ var require_package = __commonJS({
52273
+ "package.json"(exports, module) {
52274
+ module.exports = {
52275
+ name: "@apps-in-toss/web-framework",
52276
+ type: "module",
52277
+ version: "1.11.0",
52278
+ description: "Web Framework for Apps In Toss",
52279
+ scripts: {
52280
+ typecheck: "tsc --noEmit",
52281
+ lint: "eslint .",
52282
+ build: "tsup",
52283
+ test: "vitest --no-watch",
52284
+ "test:no-parallel": "vitest --no-watch --config=vitest.no-parallel.config.mts"
52285
+ },
52286
+ main: "./dist-web/index.js",
52287
+ types: "./dist-web/index.d.ts",
52288
+ exports: {
52289
+ ".": {
52290
+ types: "./dist-web/index.d.ts",
52291
+ default: "./dist-web/index.js"
52292
+ },
52293
+ "./config": {
52294
+ types: "./dist/config/index.d.ts",
52295
+ default: "./dist/config/index.js"
52296
+ },
52297
+ "./prebuilt/dev/ios": "./dist/prebuilt/dev.ios.js",
52298
+ "./prebuilt/dev/android": "./dist/prebuilt/dev.android.js",
52299
+ "./prebuilt/prod/ios": "./dist/prebuilt/prod.ios.js",
52300
+ "./prebuilt/prod/android": "./dist/prebuilt/prod.android.js",
52301
+ "./package.json": "./package.json"
52302
+ },
52303
+ bin: {
52304
+ ait: "./ait.js",
52305
+ granite: "./bin.js"
52306
+ },
52307
+ files: [
52308
+ "dist",
52309
+ "hermesc",
52310
+ "bin.js",
52311
+ "dist-web",
52312
+ "config.d.ts"
52313
+ ],
52314
+ devDependencies: {
52315
+ "@apps-in-toss/ait-format": "^1.0.0",
52316
+ "@babel/plugin-proposal-class-properties": "^7.16.7",
52317
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7",
52318
+ "@babel/plugin-proposal-numeric-separator": "^7.16.7",
52319
+ "@babel/plugin-proposal-optional-chaining": "^7.16.7",
52320
+ "@babel/plugin-proposal-private-methods": "^7.18.6",
52321
+ "@babel/plugin-proposal-private-property-in-object": "^7.18.6",
52322
+ "@babel/plugin-transform-flow-strip-types": "^7.19.0",
52323
+ "@babel/preset-env": "^7.15.0",
52324
+ "@babel/preset-react": "^7.16.7",
52325
+ "@babel/preset-typescript": "^7.16.7",
52326
+ "@babel/runtime": "7.18.9",
52327
+ "@babel/traverse": "^7.26.9",
52328
+ "@babel/types": "^7.26.9",
52329
+ "@clack/prompts": "^0.10.0",
52330
+ "@hono/node-server": "^1.13.8",
52331
+ "@hono/node-ws": "^1.1.3",
52332
+ "@ryoppippi/unplugin-typia": "^2.6.5",
52333
+ "@toss/tds-react-native": "1.3.6",
52334
+ "@types/babel__core": "^7.20.5",
52335
+ "@types/babel__traverse": "^7",
52336
+ "@types/debug": "^4",
52337
+ "@types/kill-port": "2.0.1",
52338
+ "@types/node": "^22.10.2",
52339
+ "@types/react": "18.3.3",
52340
+ "@types/yauzl": "^2.10.3",
52341
+ clipanion: "^4.0.0-rc.4",
52342
+ cosmiconfig: "^9.0.0",
52343
+ "cosmiconfig-typescript-loader": "^5.1.0",
52344
+ "es-toolkit": "^1.32.0",
52345
+ eslint: "^9.7.0",
52346
+ execa: "9.3.0",
52347
+ "find-up-simple": "^1.0.1",
52348
+ hono: "^4.7.4",
52349
+ "kill-port": "2.0.1",
52350
+ picocolors: "^1.1.1",
52351
+ react: "18.2.0",
52352
+ "react-native": "0.72.6",
52353
+ tsup: "^8.3.5",
52354
+ typescript: "5.8.3",
52355
+ typia: "^9.3.0",
52356
+ uuidv7: "^1.0.2",
52357
+ vitest: "^3.0.5",
52358
+ "wait-port": "^1.1.0",
52359
+ "workspace-tools": "^0.38.2",
52360
+ zod: "3.24.4"
52361
+ },
52362
+ dependencies: {
52363
+ "@apps-in-toss/bridge-core": "workspace:*",
52364
+ "@apps-in-toss/cli": "workspace:*",
52365
+ "@apps-in-toss/framework": "workspace:*",
52366
+ "@apps-in-toss/plugins": "workspace:*",
52367
+ "@apps-in-toss/web-analytics": "workspace:*",
52368
+ "@apps-in-toss/web-bridge": "workspace:*",
52369
+ "@babel/core": "7.23.9",
52370
+ "@granite-js/cli": "0.1.31",
52371
+ "@granite-js/mpack": "0.1.31",
52372
+ "@granite-js/native": "0.1.31",
52373
+ "@granite-js/plugin-core": "0.1.31",
52374
+ "@granite-js/react-native": "0.1.31",
52375
+ "@granite-js/utils": "0.1.31"
52376
+ }
52377
+ };
52378
+ }
52379
+ });
52380
+
52271
52381
  // ../../../.yarn/__virtual__/ws-virtual-a7b6462606/0/cache/ws-npm-8.18.1-166778b26f-e498965d69.zip/node_modules/ws/lib/constants.js
52272
52382
  var require_constants2 = __commonJS({
52273
52383
  "../../../.yarn/__virtual__/ws-virtual-a7b6462606/0/cache/ws-npm-8.18.1-166778b26f-e498965d69.zip/node_modules/ws/lib/constants.js"(exports, module) {
@@ -65225,6 +65335,13 @@ var {
65225
65335
  getCancelSignal: getCancelSignal2
65226
65336
  } = getIpcExport();
65227
65337
 
65338
+ // src/cli/utils/getSdkVersion.ts
65339
+ init_esm_shims();
65340
+ function getSdkVersion() {
65341
+ const packageJson = require_package();
65342
+ return packageJson.version;
65343
+ }
65344
+
65228
65345
  // src/constants.ts
65229
65346
  init_esm_shims();
65230
65347
  var REACT_NATIVE_VERSION = "0.72.6";
@@ -65520,7 +65637,7 @@ async function getWebDistFiles(webDistDir) {
65520
65637
  }
65521
65638
  return additionalFilesToZip;
65522
65639
  }
65523
- function appsInTossCreateArtifact(deploymentId) {
65640
+ function appsInTossCreateArtifact(deploymentId, buildOption) {
65524
65641
  const packageRoot = getPackageRoot2();
65525
65642
  return {
65526
65643
  name: "apps-in-toss:create-artifact",
@@ -65536,6 +65653,8 @@ function appsInTossCreateArtifact(deploymentId) {
65536
65653
  const artifactOutfile = await createArtifact({
65537
65654
  reactNativeVersion: REACT_NATIVE_VERSION,
65538
65655
  deploymentId,
65656
+ sdkVersion: buildOption.sdkVersion,
65657
+ isGame: buildOption.isGame,
65539
65658
  bundleFiles: buildResults.filter(isBuildSuccess).map(({ outfile, sourcemapOutfile, platform: platform2 }) => [
65540
65659
  {
65541
65660
  path: outfile,
@@ -65569,7 +65688,16 @@ function appsInTossWeb(deploymentId, options) {
65569
65688
  console.error("[Apps In Toss Plugin] \uD50C\uB7EC\uADF8\uC778 \uC635\uC158\uC774 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. granite.config.ts \uAD6C\uC131\uC744 \uD655\uC778\uD574\uC8FC\uC138\uC694.");
65570
65689
  process.exit(1);
65571
65690
  }
65572
- return [appsInTossAppJson(options), appsInTossWebBuild(options), appsInTossCreateArtifact(deploymentId)];
65691
+ const sdkVersion = getSdkVersion();
65692
+ const buildOptions = {
65693
+ sdkVersion,
65694
+ isGame: result.data.webViewProps?.type === "game"
65695
+ };
65696
+ return [
65697
+ appsInTossAppJson(options),
65698
+ appsInTossWebBuild(options),
65699
+ appsInTossCreateArtifact(deploymentId, buildOptions)
65700
+ ];
65573
65701
  }
65574
65702
 
65575
65703
  // src/plugins/resolvePlugins.ts
@@ -236011,7 +236011,7 @@ __d(function (global, _$$_REQUIRE, _$$_IMPORT_DEFAULT, _$$_IMPORT_ALL, module, e
236011
236011
  }
236012
236012
  \`;document.head.appendChild(e);})();
236013
236013
  `,
236014
- m = "\"use strict\";(()=>{var Y=class{get _window(){return typeof window<\"u\"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error(\"ReactNativeWebView is not available in browser environment\");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error(\"__GRANITE_NATIVE_EMITTER is not available\");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},g=new Y,M=()=>Math.random().toString(36).substring(2,15),D=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function d(e){return(...t)=>{let r=M(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(g.on(`${e}/resolve/${r}`,c=>{o(),s(c)})),n.push(g.on(`${e}/reject/${r}`,c=>{o(),a(D(c))})),g.postMessage({type:\"method\",functionName:e,eventId:r,args:t})})}}function I(e){return t=>{let r=M(),n=[g.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),g.on(`${e}/onError/${r}`,o=>{t.onError(D(o))})];return g.postMessage({type:\"addEventListener\",functionName:e,eventId:r,args:t.options}),()=>{g.postMessage({type:\"removeEventListener\",functionName:e,eventId:r}),n.forEach(o=>o())}}}function m(e){return()=>g.getConstant(e)}var Q=function(){return{emit:function(t,r){for(var n=this.events[t]||[],o=0,s=n.length;o<s;o++)n[o](r)},events:{},on:function(t,r){var n=this,o,s;return((o=this.events)[s=t]||(o[s]=[])).push(r),function(){var a;n.events[t]=(a=n.events[t])===null||a===void 0?void 0:a.filter(function(c){return r!==c})}}}};typeof window<\"u\"&&(window.__GRANITE_NATIVE_EMITTER=Q());var Re=d(\"closeView\"),Me=d(\"generateHapticFeedback\"),De=d(\"share\"),Ne=d(\"setSecureScreen\"),Fe=d(\"setScreenAwakeMode\"),Oe=d(\"getNetworkStatus\"),Be=d(\"setIosSwipeGestureEnabled\"),Ge=d(\"openURL\"),Ve=d(\"openPermissionDialog\"),ke=d(\"getPermission\"),He=d(\"requestPermission\"),ze=m(\"setClipboardText\"),Ue=m(\"getClipboardText\"),We=m(\"fetchContacts\"),qe=m(\"fetchAlbumPhotos\"),$e=m(\"getCurrentLocation\"),je=m(\"openCamera\"),Ke=d(\"appLogin\"),Je=d(\"eventLog\"),Xe=d(\"getTossShareLink\"),Ze=d(\"setDeviceOrientation\"),Ye=d(\"checkoutPayment\"),Qe=d(\"saveBase64Data\"),et=d(\"appsInTossSignTossCert\"),tt=d(\"getGameCenterGameProfile\"),rt=d(\"openGameCenterLeaderboard\"),nt=d(\"submitGameCenterLeaderBoardScore\"),ot=d(\"getUserKeyForGame\"),st=d(\"getIsTossLoginIntegratedService\"),at=d(\"grantPromotionRewardForGame\"),it=d(\"getServerTime\"),ct=m(\"getLocale\"),dt=m(\"getSchemeUri\"),ut=m(\"getPlatformOS\"),pt=m(\"getOperationalEnvironment\"),mt=m(\"getTossAppVersion\"),lt=m(\"getDeviceId\"),gt=I(\"contactsViral\"),vt=I(\"startUpdateLocation\"),ft=I(\"onVisibilityChangedByTransparentServiceWeb\");var E=class extends Error{constructor({methodName:e,message:t}){super(),this.name=`${e} permission error`,this.message=t}},N=class extends E{constructor(){super({methodName:\"fetchAlbumPhotos\",message:\"\\uC0AC\\uC9C4\\uCCA9 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},F=class extends E{constructor(){super({methodName:\"fetchContacts\",message:\"\\uC5F0\\uB77D\\uCC98 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},O=class extends E{constructor(){super({methodName:\"openCamera\",message:\"\\uCE74\\uBA54\\uB77C \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}};var x=class extends E{constructor(){super({methodName:\"getCurrentLocation\",message:\"\\uC704\\uCE58 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},B=x,G=class extends E{constructor(){super({methodName:\"getClipboardText\",message:\"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC77D\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},V=class extends E{constructor(){super({methodName:\"setClipboardText\",message:\"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC4F0\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}};var ee=class{get _window(){return typeof window<\"u\"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error(\"ReactNativeWebView is not available in browser environment\");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error(\"__GRANITE_NATIVE_EMITTER is not available\");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},v=new ee,K=()=>Math.random().toString(36).substring(2,15),J=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function i(e){return(...t)=>{let r=K(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(v.on(`${e}/resolve/${r}`,c=>{o(),s(c)})),n.push(v.on(`${e}/reject/${r}`,c=>{o(),a(J(c))})),v.postMessage({type:\"method\",functionName:e,eventId:r,args:t})})}}function w(e){return t=>{let r=K(),n=[v.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),v.on(`${e}/onError/${r}`,o=>{t.onError(J(o))})];return v.postMessage({type:\"addEventListener\",functionName:e,eventId:r,args:t.options}),()=>{v.postMessage({type:\"removeEventListener\",functionName:e,eventId:r}),n.forEach(o=>o())}}}function u(e){return()=>v.getConstant(e)}var Tt={getItem:i(\"getStorageItem\"),setItem:i(\"setStorageItem\"),removeItem:i(\"removeStorageItem\"),clearItems:i(\"clearItems\")},te=/^[v^~<>=]*?(\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+))?(?:-([\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*))?(?:\\+[\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*)?)?)?$/i,k=e=>[\"*\",\"x\",\"X\"].includes(e),H=e=>{let t=parseInt(e,10);return isNaN(t)?e:t},re=(e,t)=>typeof e==typeof t?[e,t]:[String(e),String(t)],ne=(e,t)=>{if(k(e)||k(t))return 0;let[r,n]=re(H(e),H(t));return r>n?1:r<n?-1:0},z=e=>{if(typeof e!=\"string\")throw new TypeError(\"Invalid argument: expected a string\");let t=e.match(te);if(!t)throw new Error(`Invalid semver: '${e}'`);let[,r,n,o,s,a]=t;return[r,n,o,s,a]},U=(e,t)=>{let r=Math.max(e.length,t.length);for(let n=0;n<r;n++){let o=e[n]??\"0\",s=t[n]??\"0\",a=ne(o,s);if(a!==0)return a}return 0},oe=(e,t)=>{let r=z(e),n=z(t),o=r.pop(),s=n.pop(),a=U(r,n);return a!==0?a:o&&s?U(o.split(\".\"),s.split(\".\")):o?-1:s?1:0};function W(e){if(u(\"getOperationalEnvironment\")()===\"sandbox\")return!0;let r=u(\"getTossAppVersion\")(),o=u(\"getPlatformOS\")()===\"ios\"?e.ios:e.android;return o===void 0?!1:o===\"always\"?!0:o===\"never\"?!1:oe(r,o)>=0}function se(e){return i(\"processProductGrant\")(e)}var yt={createOneTimePurchaseOrder:e=>{let t=W({android:\"5.219.0\",ios:\"5.219.0\"}),r=()=>{};if(!t)return r;let n=W({android:\"5.231.1\",ios:\"5.230.0\"}),{options:o,onEvent:s,onError:a}=e,c=o.sku??o.productId;return n?w(\"requestOneTimePurchase\")({options:{sku:c},onEvent:async p=>{if(p.type===\"purchased\"){let l=await o.processProductGrant({orderId:p.data.orderId});await se({orderId:p.data.orderId,isProductGranted:l}).catch(a)}else s(p)},onError:p=>{a(p)}}):(i(\"iapCreateOneTimePurchaseOrder\")({productId:c}).then(l=>{Promise.resolve(o.processProductGrant({orderId:l.orderId})).then(()=>{s({type:\"success\",data:l})}).catch(h=>{a(h)})}).catch(l=>{a(l)}),r)},getProductItemList:i(\"iapGetProductItemList\"),getPendingOrders:i(\"getPendingOrders\"),getCompletedOrRefundedOrders:i(\"getCompletedOrRefundedOrders\"),completeProductGrant:i(\"completeProductGrant\")},Lt=u(\"getSafeAreaInsets\");var Pt=u(\"getSafeAreaInsets\");var xt={loadAppsInTossAdMob:Object.assign(w(\"loadAppsInTossAdMob\"),{isSupported:u(\"loadAppsInTossAdMob_isSupported\")}),showAppsInTossAdMob:Object.assign(w(\"showAppsInTossAdMob\"),{isSupported:u(\"showAppsInTossAdMob_isSupported\")}),isAppsInTossAdMobLoaded:Object.assign(i(\"isAppsInTossAdMobLoaded\"),{isSupported:u(\"isAppsInTossAdMobLoaded_isSupported\")})};var Rt={getDeploymentId:u(\"getDeploymentId\")},Mt=u(\"deploymentId\"),Dt=u(\"brandDisplayName\"),Nt=u(\"brandIcon\"),Ft=u(\"brandPrimaryColor\");var Ot={addAccessoryButton:i(\"addAccessoryButton\"),removeAccessoryButton:i(\"removeAccessoryButton\")},ae=i(\"requestPermission\"),ie=i(\"getPermission\"),ce=i(\"openPermissionDialog\");function S({permission:e,handler:t,error:r}){let n=async(...o)=>{if(await ae(e)===\"denied\")throw new r;return t(...o)};return n.getPermission=()=>ie(e),n.openPermissionDialog=()=>ce(e),n}var Gt=S({handler:e=>i(\"fetchAlbumPhotos\")(e),permission:{name:\"photos\",access:\"read\"},error:N}),kt=S({handler:e=>i(\"fetchContacts\")(e),permission:{name:\"contacts\",access:\"read\"},error:F}),zt=S({handler:e=>i(\"getCurrentLocation\")(e),permission:{name:\"geolocation\",access:\"access\"},error:x}),Wt=S({handler:e=>i(\"openCamera\")(e),permission:{name:\"camera\",access:\"access\"},error:O}),$t=S({handler:e=>i(\"setClipboardText\")(e),permission:{name:\"clipboard\",access:\"write\"},error:V}),Kt=S({handler:()=>i(\"getClipboardText\")(),permission:{name:\"clipboard\",access:\"read\"},error:G}),de=i(\"getPermission\"),ue=i(\"openPermissionDialog\"),X=e=>w(\"updateLocationEvent\")({...e,onError:t=>{let r=new B;return t instanceof Error&&t.name===r.name?e.onError(r):e.onError(t)}});X.getPermission=()=>de({name:\"geolocation\",access:\"access\"});X.openPermissionDialog=()=>ue({name:\"geolocation\",access:\"access\"});var Xt=Object.assign(w(\"loadFullScreenAd\"),{isSupported:u(\"loadFullScreenAd_isSupported\")}),Zt=Object.assign(w(\"showFullScreenAd\"),{isSupported:u(\"showFullScreenAd_isSupported\")}),pe=i(\"openURL\");function me(e){let t=le(e);return pe(t)}function le(e){return[\"http://\",\"https://\"].some(r=>e.startsWith(r))?ge(e):e}function ge(e){return`supertoss://web?url=${encodeURIComponent(e)}&external=true`}var q=\"https://static.toss.im/ads/sdk/toss-ads-space-kit-1.3.0.js\",$=15e3,T=null;function A(){if(!(typeof window>\"u\"))return window.TossAdsSpaceKit}function ve(){if(typeof window>\"u\"||typeof document>\"u\")return Promise.reject(new Error(\"Ads SDK can only be loaded in a browser environment.\"));let e=A();if(e)return Promise.resolve(e);if(T)return T;let t=new Promise((r,n)=>{let o=document.createElement(\"script\"),s=()=>{o.removeEventListener(\"load\",a),o.removeEventListener(\"error\",c),window.clearTimeout(f),T=null},a=()=>{let p=A();if(p){s(),r(p);return}s(),n(new Error(\"Ads SDK script loaded but window.TossAdsSpaceKit was not exposed.\"))},c=()=>{s(),n(new Error(`Failed to load Ads SDK script from ${q}.`))},f=window.setTimeout(()=>{s(),n(new Error(`Loading Ads SDK timed out after ${$}ms.`))},$);o.addEventListener(\"load\",a),o.addEventListener(\"error\",c),o.async=!0,o.src=q,document.head.appendChild(o)});return T=t,t}var b=Object.assign(w(\"fetchTossAd\"),{isSupported:u(\"fetchTossAd_isSupported\")}),fe=i(\"tossAdEventLog\"),we=new Set([\"1\",\"2\"]);function he(e){return new Promise((t,r)=>{if(!b.isSupported()){r(new Error(\"fetchTossAd is not supported in this environment.\"));return}return b({options:e,onEvent:t,onError:r})})}function j(e){let t=Array.isArray(e.ads)?e.ads.filter(r=>we.has(String(r.styleId))):[];return{requestId:e.requestId??\"\",status:e.status??\"OK\",ads:t,ext:e.ext}}function Ee(e){return be(e)?e.resultType!==\"SUCCESS\"?e:e.success?{...e,success:j(e.success)}:{resultType:\"FAIL\",error:{reason:\"fetchTossAd returned SUCCESS without payload\"}}:Se(e)?{resultType:\"SUCCESS\",success:j(e)}:{resultType:\"FAIL\",error:{reason:\"Invalid response from fetchTossAd\"}}}function be(e){return!!(e&&typeof e==\"object\"&&\"resultType\"in e)}function Se(e){return!!(e&&typeof e==\"object\"&&\"ads\"in e)}function _e(){return async(e,t)=>{try{let r=await he({adGroupId:t.spaceUnitId,sdkId:\"108\",availableStyleIds:[\"1\",\"2\"]});return Ee(r)}catch(r){return{resultType:\"FAIL\",error:{reason:r instanceof Error?r.message:\"Unknown fetchTossAd error\"}}}}}var R=null;function Ae(e){let{callbacks:t}=e;if(window.TossAdsSpaceKit!=null&&window.TossAdsSpaceKit.isInitialized()){t?.onInitializationFailed?.(new Error(\"[toss-ad] Already initialized.\"));return}R!=null&&t?.onInitializationFailed?.(new Error(\"[toss-ad] initialization already in progress.\"));let r=()=>t?.onInitialized?.(),n=o=>{let s=o instanceof Error?o:new Error(String(o));t?.onInitializationFailed?.(s)};R=ve().then(o=>{let a={environment:\"live\",customAdFetcher:_e(),opener:me};o.init(a),r()}).catch(o=>{R=null,n(o)})}function Ce(e,t,r={}){let{callbacks:n}=r,o=s=>{let a=s instanceof Error?s:new Error(String(s));n?.onAdFailedToRender?.({slotId:\"\",adGroupId:e,adMetadata:{},error:{code:0,message:a.message}})};try{let s=e,a=A();if(!a)throw new Error(\"[toss-ad] Call initialize() before attaching an ad.\");if(!a.banner)throw new Error(\"[toss-ad] Loaded TossAdsSpaceKit does not support banner ads.\");let c=typeof t==\"string\"?document.querySelector(t):t;if(!c)throw new Error(`[toss-ad] Failed to find target element: ${t}`);let f={spaceId:s,autoLoad:!0,theme:r.theme,padding:r.padding,callbacks:ye(e,r.callbacks)};a.banner.createSlot(c,f)}catch(s){o(s)}}function Ie(e){let t=A();t?.banner&&t.banner.destroy(e)}function Te(){let e=A();e?.banner&&e.banner.destroyAll()}function ye(e,t){if(!t)return;let r=n=>{let o={...n??{}};return o.adGroupId=o.adGroupId??o.spaceId??e,delete o.spaceId,o};return{onAdRendered:n=>t.onAdRendered?.(r(n)),onAdViewable:n=>t.onAdViewable?.(r(n)),onAdClicked:n=>t.onAdClicked?.(r(n)),onAdImpression:n=>{fe({log_name:\"display_ads_all::impression__1px_banner\",log_type:\"event\",params:{event_type:\"impression\",schema_id:1812034,request_id:n?.adMetadata?.requestId??\"\"}}),t.onAdImpression?.(r(n))},onAdFailedToRender:n=>t.onAdFailedToRender?.({...r(n),error:n?.error??{code:0,message:\"UNKNOWN\"}}),onNoFill:n=>t.onNoFill?.(r(n))}}var Yt={initialize:Object.assign(Ae,{isSupported:b.isSupported}),attach:Object.assign(Ce,{isSupported:b.isSupported}),destroy:Object.assign(Ie,{isSupported:b.isSupported}),destroyAll:Object.assign(Te,{isSupported:b.isSupported})},Qt=Object.assign(i(\"getServerTime\"),{isSupported:u(\"getServerTime_isSupported\")});var y=class{_log=i(\"debugLog\");log(t,r){try{this._log({log_name:`apps_in_toss_webview_${t}`,log_type:\"debug\",params:{...r,...this.getCommonParams()}})}catch{}}getCommonParams(){return{...this.getLocationInfo(),...this.getNavigatorInfo(),...this.getScreenInfo(),appName:window.__appsInToss.appName,deploymentId:window.__appsInToss.deploymentId,sessionId:window.__appsInToss.sessionId,isGame:window.__appsInToss.webViewType===\"game\",timestampMs:Date.now()}}getLocationInfo(){return{url:window.location.href,urlOrigin:window.location.origin,urlHost:window.location.hostname,urlPath:window.location.pathname,urlSearch:window.location.search}}getNavigatorInfo(){return{userAgent:navigator.userAgent,platform:navigator.platform,language:navigator.language,cookieEnabled:navigator.cookieEnabled,hardwareConcurrency:navigator.hardwareConcurrency,deviceMemory:navigator.deviceMemory?navigator.deviceMemory*1024*1024:void 0,maxTouchPoints:navigator.maxTouchPoints}}getScreenInfo(){return{screenWidth:screen.width,screenHeight:screen.height,availableScreenWidth:screen.availWidth,availableScreenHeight:screen.availHeight,devicePixelRatio:window.devicePixelRatio,colorDepth:screen.colorDepth,pixelDepth:screen.pixelDepth,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight}}};var L=class{callbacks={};on(t,r){typeof this.callbacks[t]>\"u\"&&(this.callbacks[t]=[]),this.callbacks[t].push(r)}emit(t,r){this.callbacks[t]?.forEach(n=>n(r))}};window.__appsInToss={appName:u(\"getAppName\")(),deploymentId:u(\"getDeploymentId\")(),webViewType:u(\"getWebViewType\")(),sessionId:Math.random().toString(36).substring(2),eventEmitter:new L,debugLogger:new y};var C=/\\.(data|wasm|framework\\.js)(?:\\.gz|\\.br|\\.unityweb)?$/;function P(e){window.fetch=new Proxy(window.fetch,{apply:e})}(()=>{if(window.__appsInToss.webViewType!==\"game\"||typeof caches>\"u\")return;let e=\"@apps-in-toss/caches/\",t=`${e}${window.__appsInToss.deploymentId}`;window.addEventListener(\"load\",async()=>{let r=await caches.keys();for(let n of r)n.startsWith(e)&&n!==t&&await caches.delete(n)}),P(async(r,n,o)=>{let s=new Request(o[0],o[1]);if(!C.test(s.url))return await r.call(n,s);let a=await caches.open(t),c=await a.match(s);if(c){let p=c.headers.get(\"ETag\"),l=c.headers.get(\"Last-Modified\");p&&s.headers.set(\"If-None-Match\",p),l&&s.headers.set(\"If-Modified-Since\",l);let h=await r.call(n,s);return h.status===304?(c.__revalidateResponse=h,c):(a.put(s,h.clone()),h)}let f=await r.call(n,s);return a.put(s,f.clone()),f})})();P(async(e,t,r)=>{let n=new Request(r[0],r[1]),o=Date.now();window.__appsInToss.eventEmitter.emit(\"fetchRequest\",{request:n});let s=await e.call(t,n);return window.__appsInToss.eventEmitter.emit(\"fetchResponse\",{request:n,response:s,requestAt:o}),s});var Z=window.__appsInToss.debugLogger;Z.log(\"load_start\",{});window.addEventListener(\"load\",()=>{let e=performance.timeOrigin,t=performance.getEntriesByType?.(\"navigation\")[0]??null,r=typeof e<\"u\"&&t!==null,n=r?{navigationStartAtMs:e+t.startTime,navigationRedirectStartAtMs:e+t.redirectStart,navigationRedirectEndAtMs:e+t.redirectEnd,navigationRedirectCount:t.redirectCount,navigationServiceWorkerStartAtMs:e+t.workerStart,navigationFetchStartAtMs:e+t.fetchStart,navigationDomainLookupStartAtMs:e+t.domainLookupStart,navigationDomainLookupEndAtMs:e+t.domainLookupEnd,navigationConnectStartAtMs:e+t.connectStart,navigationSecureConnectStartAtMs:e+t.secureConnectionStart,navigationConnectEndAtMs:e+t.connectEnd,navigationRequestStartAtMs:e+t.requestStart,navigationResponseStartAtMs:e+t.responseStart,navigationResponseEndAtMs:e+t.responseEnd,navigationDomInteractiveAtMs:e+t.domInteractive,navigationDomContentLoadedEventStartAtMs:e+t.domContentLoadedEventStart,navigationDomContentLoadedEventEndAtMs:e+t.domContentLoadedEventEnd,navigationDomCompleteAtMs:e+t.domComplete}:{};Z.log(\"load_complete\",{isNavigationDebugSupported:r,...n})});function _(e,t){return parseFloat(e.toFixed(t))}(()=>{if(typeof performance.memory>\"u\"||typeof performance.memory.usedJSHeapSize>\"u\"||typeof performance.memory.totalJSHeapSize>\"u\"||typeof performance.memory.jsHeapSizeLimit>\"u\")return;function e(t){window.__appsInToss.debugLogger.log(t,{usedJSHeapSize:_(performance.memory.usedJSHeapSize/1024,2),totalJSHeapSize:_(performance.memory.totalJSHeapSize/1024,2),jsHeapSizeLimit:_(performance.memory.jsHeapSizeLimit/1024,2)})}e(\"memory_usage_first_0s\"),setTimeout(()=>e(\"memory_usage_first_1s\"),1e3),setTimeout(()=>e(\"memory_usage_first_10s\"),1e4),setTimeout(()=>e(\"memory_usage_first_30s\"),3e4),setTimeout(()=>e(\"memory_usage_first_60s\"),6e4),setInterval(()=>e(\"memory_usage_every_180s\"),18e4)})();(()=>{let e=window.__appsInToss.debugLogger,t=performance.timeOrigin;if(typeof t>\"u\"||typeof PerformanceObserver>\"u\")return;new PerformanceObserver(o=>{o.getEntries().forEach(a=>{a.name===\"first-paint\"?e.log(\"first_paint\",{fpStartAtMs:t+a.startTime}):a.name===\"first-contentful-paint\"&&e.log(\"first_contentful_paint\",{fcpStartAtMs:t+a.startTime})})}).observe({type:\"paint\"}),new PerformanceObserver(o=>{o.getEntries().forEach(a=>{e.log(\"largest_contentful_paint\",{lcpStartAtMs:t+a.startTime,lcpRenderSize:a.size})})}).observe({type:\"largest-contentful-paint\"})})();(()=>{if(window.__appsInToss.webViewType!==\"game\")return;function e(t){let r=t.getContext(\"webgl2\")??t.getContext(\"webgl\");if(r==null)return;let n=r.getExtension(\"WEBGL_debug_renderer_info\"),o=r.getParameter(r.MAX_VIEWPORT_DIMS),s={webGLRenderer:r.getParameter(r.RENDERER),webGLVendor:r.getParameter(r.VENDOR),webGLVersion:r.getParameter(r.VERSION),webGLShadingLanguageVersion:r.getParameter(r.SHADING_LANGUAGE_VERSION),webGLMaxTextureSize:r.getParameter(r.MAX_TEXTURE_SIZE),webGLMaxViewportWidth:o[0],webGLMaxViewportHeight:o[1],webGLMaxRenderbufferSize:r.getParameter(r.MAX_RENDERBUFFER_SIZE)},a=n?{webGLUnmaskedVendor:r.getParameter(n.UNMASKED_VENDOR_WEBGL),webGLUnmaskedRenderer:r.getParameter(n.UNMASKED_RENDERER_WEBGL)}:{};window.__appsInToss.debugLogger.log(\"unity_webgl_info\",{...s,...a})}window.addEventListener(\"load\",()=>{let t=document.querySelector(\"#unity-canvas\");if(t!=null){e(t);return}new MutationObserver((n,o)=>{for(let s of n)s.type===\"childList\"&&s.addedNodes.forEach(a=>{if(a instanceof HTMLCanvasElement&&a.getAttribute(\"id\")===\"unity-canvas\"&&(e(a),o.disconnect()),a instanceof HTMLElement){let c=a.querySelector(\"#unity-canvas\");c!=null&&(e(c),o.disconnect())}})}).observe(document.body,{childList:!0,subtree:!0})})})();(()=>{if(window.__appsInToss.webViewType!==\"game\")return;let e=window.__appsInToss.debugLogger,t=window.__appsInToss.eventEmitter;t.on(\"fetchRequest\",({request:r})=>{C.test(r.url)&&e.log(\"game_resource_download_start\",{gameResourceRequestURL:r.url})}),t.on(\"fetchResponse\",async({request:r,requestAt:n,response:o})=>{if(!C.test(r.url))return;let s=_((await o.clone().blob()).size/1024,2),a=Date.now();e.log(\"game_resource_download_end\",{gameResourceRequestURL:r.url,gameResourceRequestAtMs:n,gameResourceResponseAtMs:a,gameResourceResponseSize:s,gameResourceResponseStatus:o.__revalidateResponse?.status??o.status,gameResourceDownloadDurationMs:a-n})})})();})();\n";
236014
+ m = "\"use strict\";(()=>{var ie=class{get _window(){return typeof window<\"u\"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error(\"ReactNativeWebView is not available in browser environment\");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error(\"__GRANITE_NATIVE_EMITTER is not available\");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},h=new ie,O=()=>Math.random().toString(36).substring(2,15),k=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function d(e){return(...t)=>{let r=O(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(h.on(`${e}/resolve/${r}`,i=>{o(),s(i)})),n.push(h.on(`${e}/reject/${r}`,i=>{o(),a(k(i))})),h.postMessage({type:\"method\",functionName:e,eventId:r,args:t})})}}function x(e){return t=>{let r=O(),n=[h.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),h.on(`${e}/onError/${r}`,o=>{t.onError(k(o))})];return h.postMessage({type:\"addEventListener\",functionName:e,eventId:r,args:t.options}),()=>{h.postMessage({type:\"removeEventListener\",functionName:e,eventId:r}),n.forEach(o=>o())}}}function l(e){return()=>h.getConstant(e)}var ce=function(){return{emit:function(t,r){for(var n=this.events[t]||[],o=0,s=n.length;o<s;o++)n[o](r)},events:{},on:function(t,r){var n=this,o,s;return((o=this.events)[s=t]||(o[s]=[])).push(r),function(){var a;n.events[t]=(a=n.events[t])===null||a===void 0?void 0:a.filter(function(i){return r!==i})}}}};typeof window<\"u\"&&(window.__GRANITE_NATIVE_EMITTER=ce());var qe=d(\"closeView\"),je=d(\"generateHapticFeedback\"),Ke=d(\"share\"),Je=d(\"setSecureScreen\"),Xe=d(\"setScreenAwakeMode\"),Ye=d(\"getNetworkStatus\"),Ze=d(\"setIosSwipeGestureEnabled\"),Qe=d(\"openURL\"),et=d(\"openPermissionDialog\"),tt=d(\"getPermission\"),rt=d(\"requestPermission\"),nt=l(\"setClipboardText\"),ot=l(\"getClipboardText\"),st=l(\"fetchContacts\"),at=l(\"fetchAlbumPhotos\"),it=l(\"getCurrentLocation\"),ct=l(\"openCamera\"),dt=d(\"appLogin\"),ut=d(\"eventLog\"),pt=d(\"getTossShareLink\"),mt=d(\"setDeviceOrientation\"),lt=d(\"checkoutPayment\"),gt=d(\"saveBase64Data\"),ft=d(\"appsInTossSignTossCert\"),vt=d(\"getGameCenterGameProfile\"),ht=d(\"openGameCenterLeaderboard\"),wt=d(\"submitGameCenterLeaderBoardScore\"),Et=d(\"getUserKeyForGame\"),bt=d(\"getIsTossLoginIntegratedService\"),At=d(\"grantPromotionRewardForGame\"),St=d(\"getServerTime\"),_t=l(\"getLocale\"),Ct=l(\"getSchemeUri\"),Tt=l(\"getPlatformOS\"),yt=l(\"getOperationalEnvironment\"),It=l(\"getTossAppVersion\"),Lt=l(\"getDeviceId\"),xt=x(\"contactsViral\"),Pt=x(\"startUpdateLocation\"),Rt=x(\"onVisibilityChangedByTransparentServiceWeb\");var _=class extends Error{constructor({methodName:e,message:t}){super(),this.name=`${e} permission error`,this.message=t}},B=class extends _{constructor(){super({methodName:\"fetchAlbumPhotos\",message:\"\\uC0AC\\uC9C4\\uCCA9 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},G=class extends _{constructor(){super({methodName:\"fetchContacts\",message:\"\\uC5F0\\uB77D\\uCC98 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},V=class extends _{constructor(){super({methodName:\"openCamera\",message:\"\\uCE74\\uBA54\\uB77C \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}};var F=class extends _{constructor(){super({methodName:\"getCurrentLocation\",message:\"\\uC704\\uCE58 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},H=F,U=class extends _{constructor(){super({methodName:\"getClipboardText\",message:\"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC77D\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},z=class extends _{constructor(){super({methodName:\"setClipboardText\",message:\"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC4F0\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}};var de=class{get _window(){return typeof window<\"u\"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error(\"ReactNativeWebView is not available in browser environment\");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error(\"__GRANITE_NATIVE_EMITTER is not available\");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},w=new de,Q=()=>Math.random().toString(36).substring(2,15),ee=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function c(e){return(...t)=>{let r=Q(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(w.on(`${e}/resolve/${r}`,i=>{o(),s(i)})),n.push(w.on(`${e}/reject/${r}`,i=>{o(),a(ee(i))})),w.postMessage({type:\"method\",functionName:e,eventId:r,args:t})})}}function A(e){return t=>{let r=Q(),n=[w.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),w.on(`${e}/onError/${r}`,o=>{t.onError(ee(o))})];return w.postMessage({type:\"addEventListener\",functionName:e,eventId:r,args:t.options}),()=>{w.postMessage({type:\"removeEventListener\",functionName:e,eventId:r}),n.forEach(o=>o())}}}function u(e){return()=>w.getConstant(e)}var Ht={getItem:c(\"getStorageItem\"),setItem:c(\"setStorageItem\"),removeItem:c(\"removeStorageItem\"),clearItems:c(\"clearItems\")},ue=/^[v^~<>=]*?(\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+))?(?:-([\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*))?(?:\\+[\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*)?)?)?$/i,$=e=>[\"*\",\"x\",\"X\"].includes(e),W=e=>{let t=parseInt(e,10);return isNaN(t)?e:t},pe=(e,t)=>typeof e==typeof t?[e,t]:[String(e),String(t)],me=(e,t)=>{if($(e)||$(t))return 0;let[r,n]=pe(W(e),W(t));return r>n?1:r<n?-1:0},q=e=>{if(typeof e!=\"string\")throw new TypeError(\"Invalid argument: expected a string\");let t=e.match(ue);if(!t)throw new Error(`Invalid semver: '${e}'`);let[,r,n,o,s,a]=t;return[r,n,o,s,a]},j=(e,t)=>{let r=Math.max(e.length,t.length);for(let n=0;n<r;n++){let o=e[n]??\"0\",s=t[n]??\"0\",a=me(o,s);if(a!==0)return a}return 0},le=(e,t)=>{let r=q(e),n=q(t),o=r.pop(),s=n.pop(),a=j(r,n);return a!==0?a:o&&s?j(o.split(\".\"),s.split(\".\")):o?-1:s?1:0};function K(e){if(u(\"getOperationalEnvironment\")()===\"sandbox\")return!0;let r=u(\"getTossAppVersion\")(),o=u(\"getPlatformOS\")()===\"ios\"?e.ios:e.android;return o===void 0?!1:o===\"always\"?!0:o===\"never\"?!1:le(r,o)>=0}function ge(e){return c(\"processProductGrant\")(e)}var Ut={createOneTimePurchaseOrder:e=>{let t=K({android:\"5.219.0\",ios:\"5.219.0\"}),r=()=>{};if(!t)return r;let n=K({android:\"5.231.1\",ios:\"5.230.0\"}),{options:o,onEvent:s,onError:a}=e,i=o.sku??o.productId;return n?A(\"requestOneTimePurchase\")({options:{sku:i},onEvent:async m=>{if(m.type===\"purchased\"){let g=await o.processProductGrant({orderId:m.data.orderId});await ge({orderId:m.data.orderId,isProductGranted:g}).catch(a)}else s(m)},onError:m=>{a(m)}}):(c(\"iapCreateOneTimePurchaseOrder\")({productId:i}).then(g=>{Promise.resolve(o.processProductGrant({orderId:g.orderId})).then(()=>{s({type:\"success\",data:g})}).catch(v=>{a(v)})}).catch(g=>{a(g)}),r)},getProductItemList:c(\"iapGetProductItemList\"),getPendingOrders:c(\"getPendingOrders\"),getCompletedOrRefundedOrders:c(\"getCompletedOrRefundedOrders\"),completeProductGrant:c(\"completeProductGrant\")},zt=u(\"getSafeAreaInsets\");var $t=u(\"getSafeAreaInsets\");var Wt={loadAppsInTossAdMob:Object.assign(A(\"loadAppsInTossAdMob\"),{isSupported:u(\"loadAppsInTossAdMob_isSupported\")}),showAppsInTossAdMob:Object.assign(A(\"showAppsInTossAdMob\"),{isSupported:u(\"showAppsInTossAdMob_isSupported\")}),isAppsInTossAdMobLoaded:Object.assign(c(\"isAppsInTossAdMobLoaded\"),{isSupported:u(\"isAppsInTossAdMobLoaded_isSupported\")})};var qt={getDeploymentId:u(\"getDeploymentId\")},jt=u(\"deploymentId\"),Kt=u(\"brandDisplayName\"),Jt=u(\"brandIcon\"),Xt=u(\"brandPrimaryColor\");var Yt={addAccessoryButton:c(\"addAccessoryButton\"),removeAccessoryButton:c(\"removeAccessoryButton\")},fe=c(\"requestPermission\"),ve=c(\"getPermission\"),he=c(\"openPermissionDialog\");function C({permission:e,handler:t,error:r}){let n=async(...o)=>{if(await fe(e)===\"denied\")throw new r;return t(...o)};return n.getPermission=()=>ve(e),n.openPermissionDialog=()=>he(e),n}var Qt=C({handler:e=>c(\"fetchAlbumPhotos\")(e),permission:{name:\"photos\",access:\"read\"},error:B}),tr=C({handler:e=>c(\"fetchContacts\")(e),permission:{name:\"contacts\",access:\"read\"},error:G}),nr=C({handler:e=>c(\"getCurrentLocation\")(e),permission:{name:\"geolocation\",access:\"access\"},error:F}),sr=C({handler:e=>c(\"openCamera\")(e),permission:{name:\"camera\",access:\"access\"},error:V}),ir=C({handler:e=>c(\"setClipboardText\")(e),permission:{name:\"clipboard\",access:\"write\"},error:z}),dr=C({handler:()=>c(\"getClipboardText\")(),permission:{name:\"clipboard\",access:\"read\"},error:U}),we=c(\"getPermission\"),Ee=c(\"openPermissionDialog\"),te=e=>A(\"updateLocationEvent\")({...e,onError:t=>{let r=new H;return t instanceof Error&&t.name===r.name?e.onError(r):e.onError(t)}});te.getPermission=()=>we({name:\"geolocation\",access:\"access\"});te.openPermissionDialog=()=>Ee({name:\"geolocation\",access:\"access\"});var pr=Object.assign(A(\"loadFullScreenAd\"),{isSupported:u(\"loadFullScreenAd_isSupported\")}),mr=Object.assign(A(\"showFullScreenAd\"),{isSupported:u(\"showFullScreenAd_isSupported\")}),be=c(\"openURL\");function Ae(e){let t=Se(e);return be(t)}function Se(e){return[\"http://\",\"https://\"].some(r=>e.startsWith(r))?_e(e):e}function _e(e){return`supertoss://web?url=${encodeURIComponent(e)}&external=true`}var J=\"https://static.toss.im/ads/sdk/toss-ads-space-kit-1.3.0.js\",X=15e3,P=null;function S(){if(!(typeof window>\"u\"))return window.TossAdsSpaceKit}function Ce(){if(typeof window>\"u\"||typeof document>\"u\")return Promise.reject(new Error(\"Ads SDK can only be loaded in a browser environment.\"));let e=S();if(e)return Promise.resolve(e);if(P)return P;let t=new Promise((r,n)=>{let o=document.createElement(\"script\"),s=()=>{o.removeEventListener(\"load\",a),o.removeEventListener(\"error\",i),window.clearTimeout(p),P=null},a=()=>{let m=S();if(m){s(),r(m);return}s(),n(new Error(\"Ads SDK script loaded but window.TossAdsSpaceKit was not exposed.\"))},i=()=>{s(),n(new Error(`Failed to load Ads SDK script from ${J}.`))},p=window.setTimeout(()=>{s(),n(new Error(`Loading Ads SDK timed out after ${X}ms.`))},X);o.addEventListener(\"load\",a),o.addEventListener(\"error\",i),o.async=!0,o.src=J,document.head.appendChild(o)});return P=t,t}var b=Object.assign(A(\"fetchTossAd\"),{isSupported:u(\"fetchTossAd_isSupported\")}),Te=c(\"tossAdEventLog\"),ye=new Set([\"1\",\"2\"]);function Ie(e){return new Promise((t,r)=>{if(!b.isSupported()){r(new Error(\"fetchTossAd is not supported in this environment.\"));return}return b({options:e,onEvent:t,onError:r})})}function Y(e){let t=Array.isArray(e.ads)?e.ads.filter(r=>ye.has(String(r.styleId))):[];return{requestId:e.requestId??\"\",status:e.status??\"OK\",ads:t,ext:e.ext}}function Le(e){return xe(e)?e.resultType!==\"SUCCESS\"?e:e.success?{...e,success:Y(e.success)}:{resultType:\"FAIL\",error:{reason:\"fetchTossAd returned SUCCESS without payload\"}}:Pe(e)?{resultType:\"SUCCESS\",success:Y(e)}:{resultType:\"FAIL\",error:{reason:\"Invalid response from fetchTossAd\"}}}function xe(e){return!!(e&&typeof e==\"object\"&&\"resultType\"in e)}function Pe(e){return!!(e&&typeof e==\"object\"&&\"ads\"in e)}function Re(){return async(e,t)=>{try{let r=await Ie({adGroupId:t.spaceUnitId,sdkId:\"108\",availableStyleIds:[\"1\",\"2\"]});return Le(r)}catch(r){return{resultType:\"FAIL\",error:{reason:r instanceof Error?r.message:\"Unknown fetchTossAd error\"}}}}}var I=null;function De(e){let{callbacks:t}=e,r=()=>t?.onInitialized?.(),n=a=>{let i=a instanceof Error?a:new Error(String(a));t?.onInitializationFailed?.(i)};if(S()?.isInitialized()){r();return}if(I!=null){I.then(r).catch(n);return}let s=Ce().then(a=>{if(a.isInitialized())return;let p={environment:\"live\",customAdFetcher:Re(),opener:Ae};a.init(p)});I=s,s.then(r).catch(n).finally(()=>{I===s&&(I=null)})}function Ne(e,t,r={}){let{callbacks:n}=r,o=s=>{let a=s instanceof Error?s:new Error(String(s));n?.onAdFailedToRender?.({slotId:\"\",adGroupId:e,adMetadata:{},error:{code:0,message:a.message}})};try{let s=e,a=S();if(!a)throw new Error(\"[toss-ad] Call initialize() before attaching an ad.\");if(!a.banner)throw new Error(\"[toss-ad] Loaded TossAdsSpaceKit does not support banner ads.\");let i=typeof t==\"string\"?document.querySelector(t):t;if(!i)throw new Error(`[toss-ad] Failed to find target element: ${t}`);let p={spaceId:s,autoLoad:!0,theme:r.theme,padding:r.padding,callbacks:re(e,r.callbacks)};a.banner.createSlot(i,p)}catch(s){o(s)}}var Me=\"16px 20px\",Fe=\"20px\",Oe=\"auto\",ke=\"blackAndWhite\",Be=\"expanded\",f=\"toss-ads-attach\",Z=\"toss-ads-attach-style\";function Ge(e){let t=e.ownerDocument;if(!t||t.getElementById(Z))return;let r=t.createElement(\"style\");r.id=Z,r.textContent=`\n .${f} { background: #ffffff; }\n .${f}.toss-ads-tone-grey { background: #f2f4f7; }\n @media (prefers-color-scheme: dark) {\n .${f} { background: #17171c; }\n .${f}.toss-ads-tone-grey { background: #101013; }\n }\n .${f}.toss-ads-theme-light { background: #ffffff; }\n .${f}.toss-ads-theme-light.toss-ads-tone-grey { background: #f2f4f7; }\n .${f}.toss-ads-theme-dark { background: #17171c; }\n .${f}.toss-ads-theme-dark.toss-ads-tone-grey { background: #101013; }\n `;let n=t.head??t.body??t.documentElement;n&&n.appendChild(r)}function Ve(e,t,r={}){let{callbacks:n,theme:o=Oe,tone:s=ke,variant:a=Be}=r,i=document.createElement(\"div\");i.style.width=\"100%\",i.style.height=\"100%\",i.style.boxSizing=\"border-box\",i.style.display=\"flex\",i.style.flexDirection=\"column\",i.style.justifyContent=\"center\",i.style.overflow=\"hidden\",a===\"card\"&&(i.style.padding=\"0 10px\");let p=document.createElement(\"div\");p.classList.add(f),s===\"grey\"&&p.classList.add(\"toss-ads-tone-grey\"),o===\"light\"?p.classList.add(\"toss-ads-theme-light\"):o===\"dark\"&&p.classList.add(\"toss-ads-theme-dark\"),a===\"card\"&&(p.style.borderRadius=\"16px\",p.style.overflow=\"hidden\"),i.appendChild(p);let m=!1,g=null,v=E=>{let y=E instanceof Error?E:new Error(String(E));n?.onAdFailedToRender?.({slotId:\"\",adGroupId:e,adMetadata:{},error:{code:0,message:y.message}})},oe=re(e,n);try{let E=e,y=S();if(!y)throw new Error(\"[toss-ad] Call initialize() before attaching an ad.\");if(!y.banner)throw new Error(\"[toss-ad] Loaded TossAdsSpaceKit does not support banner ads.\");let M=typeof t==\"string\"?document.querySelector(t):t;if(!M)throw new Error(`[toss-ad] Failed to find target element: ${t}`);Ge(M),M.appendChild(i),m=!0;let se={spaceId:E,autoLoad:!0,theme:o===\"auto\"?void 0:o,renderPadding:ae=>ae===\"1\"?Me:Fe,callbacks:oe};g=y.banner.createSlot(p,se)}catch(E){m&&i.parentNode&&i.parentNode.removeChild(i),v(E)}return{destroy(){g?.destroy(),m&&i.parentNode&&i.parentNode.removeChild(i)}}}function He(e){let t=S();t?.banner&&t.banner.destroy(e)}function Ue(){let e=S();e?.banner&&e.banner.destroyAll()}function re(e,t){if(!t)return;let r=n=>{let o={...n??{}};return o.adGroupId=o.adGroupId??o.spaceId??e,delete o.spaceId,o};return{onAdRendered:n=>t.onAdRendered?.(r(n)),onAdViewable:n=>t.onAdViewable?.(r(n)),onAdClicked:n=>t.onAdClicked?.(r(n)),onAdImpression:n=>{Te({log_name:\"display_ads_all::impression__1px_banner\",log_type:\"event\",params:{event_type:\"impression\",schema_id:1812034,request_id:n?.adMetadata?.requestId??\"\"}}),t.onAdImpression?.(r(n))},onAdFailedToRender:n=>t.onAdFailedToRender?.({...r(n),error:n?.error??{code:0,message:\"UNKNOWN\"}}),onNoFill:n=>t.onNoFill?.(r(n))}}var lr={initialize:Object.assign(De,{isSupported:b.isSupported}),attach:Object.assign(Ne,{isSupported:b.isSupported}),attachBanner:Object.assign(Ve,{isSupported:b.isSupported}),destroy:Object.assign(He,{isSupported:b.isSupported}),destroyAll:Object.assign(Ue,{isSupported:b.isSupported})},gr=Object.assign(c(\"getServerTime\"),{isSupported:u(\"getServerTime_isSupported\")});var R=class{_log=c(\"debugLog\");log(t,r){try{this._log({log_name:`apps_in_toss_webview_${t}`,log_type:\"debug\",params:{...r,...this.getCommonParams()}})}catch{}}getCommonParams(){return{...this.getLocationInfo(),...this.getNavigatorInfo(),...this.getScreenInfo(),appName:window.__appsInToss.appName,deploymentId:window.__appsInToss.deploymentId,sessionId:window.__appsInToss.sessionId,isGame:window.__appsInToss.webViewType===\"game\",timestampMs:Date.now()}}getLocationInfo(){return{url:window.location.href,urlOrigin:window.location.origin,urlHost:window.location.hostname,urlPath:window.location.pathname,urlSearch:window.location.search}}getNavigatorInfo(){return{userAgent:navigator.userAgent,platform:navigator.platform,language:navigator.language,cookieEnabled:navigator.cookieEnabled,hardwareConcurrency:navigator.hardwareConcurrency,deviceMemory:navigator.deviceMemory?navigator.deviceMemory*1024*1024:void 0,maxTouchPoints:navigator.maxTouchPoints}}getScreenInfo(){return{screenWidth:screen.width,screenHeight:screen.height,availableScreenWidth:screen.availWidth,availableScreenHeight:screen.availHeight,devicePixelRatio:window.devicePixelRatio,colorDepth:screen.colorDepth,pixelDepth:screen.pixelDepth,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight}}};var D=class{callbacks={};on(t,r){typeof this.callbacks[t]>\"u\"&&(this.callbacks[t]=[]),this.callbacks[t].push(r)}emit(t,r){this.callbacks[t]?.forEach(n=>n(r))}};window.__appsInToss={appName:u(\"getAppName\")(),deploymentId:u(\"getDeploymentId\")(),webViewType:u(\"getWebViewType\")(),sessionId:Math.random().toString(36).substring(2),eventEmitter:new D,debugLogger:new R};var L=/\\.(data|wasm|framework\\.js)(?:\\.gz|\\.br|\\.unityweb)?$/;function N(e){window.fetch=new Proxy(window.fetch,{apply:e})}(()=>{if(window.__appsInToss.webViewType!==\"game\"||typeof caches>\"u\")return;let e=\"@apps-in-toss/caches/\",t=`${e}${window.__appsInToss.deploymentId}`;window.addEventListener(\"load\",async()=>{let r=await caches.keys();for(let n of r)n.startsWith(e)&&n!==t&&await caches.delete(n)}),N(async(r,n,o)=>{let s=new Request(o[0],o[1]);if(!L.test(s.url))return await r.call(n,s);let a=await caches.open(t),i=await a.match(s);if(i){let m=i.headers.get(\"ETag\"),g=i.headers.get(\"Last-Modified\");m&&s.headers.set(\"If-None-Match\",m),g&&s.headers.set(\"If-Modified-Since\",g);let v=await r.call(n,s);return v.status===304?(i.__revalidateResponse=v,i):(a.put(s,v.clone()),v)}let p=await r.call(n,s);return a.put(s,p.clone()),p})})();N(async(e,t,r)=>{let n=new Request(r[0],r[1]),o=Date.now();window.__appsInToss.eventEmitter.emit(\"fetchRequest\",{request:n});let s=await e.call(t,n);return window.__appsInToss.eventEmitter.emit(\"fetchResponse\",{request:n,response:s,requestAt:o}),s});var ne=window.__appsInToss.debugLogger;ne.log(\"load_start\",{});window.addEventListener(\"load\",()=>{let e=performance.timeOrigin,t=performance.getEntriesByType?.(\"navigation\")[0]??null,r=typeof e<\"u\"&&t!==null,n=r?{navigationStartAtMs:e+t.startTime,navigationRedirectStartAtMs:e+t.redirectStart,navigationRedirectEndAtMs:e+t.redirectEnd,navigationRedirectCount:t.redirectCount,navigationServiceWorkerStartAtMs:e+t.workerStart,navigationFetchStartAtMs:e+t.fetchStart,navigationDomainLookupStartAtMs:e+t.domainLookupStart,navigationDomainLookupEndAtMs:e+t.domainLookupEnd,navigationConnectStartAtMs:e+t.connectStart,navigationSecureConnectStartAtMs:e+t.secureConnectionStart,navigationConnectEndAtMs:e+t.connectEnd,navigationRequestStartAtMs:e+t.requestStart,navigationResponseStartAtMs:e+t.responseStart,navigationResponseEndAtMs:e+t.responseEnd,navigationDomInteractiveAtMs:e+t.domInteractive,navigationDomContentLoadedEventStartAtMs:e+t.domContentLoadedEventStart,navigationDomContentLoadedEventEndAtMs:e+t.domContentLoadedEventEnd,navigationDomCompleteAtMs:e+t.domComplete}:{};ne.log(\"load_complete\",{isNavigationDebugSupported:r,...n})});function T(e,t){return parseFloat(e.toFixed(t))}(()=>{if(typeof performance.memory>\"u\"||typeof performance.memory.usedJSHeapSize>\"u\"||typeof performance.memory.totalJSHeapSize>\"u\"||typeof performance.memory.jsHeapSizeLimit>\"u\")return;function e(t){window.__appsInToss.debugLogger.log(t,{usedJSHeapSize:T(performance.memory.usedJSHeapSize/1024,2),totalJSHeapSize:T(performance.memory.totalJSHeapSize/1024,2),jsHeapSizeLimit:T(performance.memory.jsHeapSizeLimit/1024,2)})}e(\"memory_usage_first_0s\"),setTimeout(()=>e(\"memory_usage_first_1s\"),1e3),setTimeout(()=>e(\"memory_usage_first_10s\"),1e4),setTimeout(()=>e(\"memory_usage_first_30s\"),3e4),setTimeout(()=>e(\"memory_usage_first_60s\"),6e4),setInterval(()=>e(\"memory_usage_every_180s\"),18e4)})();(()=>{let e=window.__appsInToss.debugLogger,t=performance.timeOrigin;if(typeof t>\"u\"||typeof PerformanceObserver>\"u\")return;new PerformanceObserver(o=>{o.getEntries().forEach(a=>{a.name===\"first-paint\"?e.log(\"first_paint\",{fpStartAtMs:t+a.startTime}):a.name===\"first-contentful-paint\"&&e.log(\"first_contentful_paint\",{fcpStartAtMs:t+a.startTime})})}).observe({type:\"paint\"}),new PerformanceObserver(o=>{o.getEntries().forEach(a=>{e.log(\"largest_contentful_paint\",{lcpStartAtMs:t+a.startTime,lcpRenderSize:a.size})})}).observe({type:\"largest-contentful-paint\"})})();(()=>{if(window.__appsInToss.webViewType!==\"game\")return;function e(t){let r=t.getContext(\"webgl2\")??t.getContext(\"webgl\");if(r==null)return;let n=r.getExtension(\"WEBGL_debug_renderer_info\"),o=r.getParameter(r.MAX_VIEWPORT_DIMS),s={webGLRenderer:r.getParameter(r.RENDERER),webGLVendor:r.getParameter(r.VENDOR),webGLVersion:r.getParameter(r.VERSION),webGLShadingLanguageVersion:r.getParameter(r.SHADING_LANGUAGE_VERSION),webGLMaxTextureSize:r.getParameter(r.MAX_TEXTURE_SIZE),webGLMaxViewportWidth:o[0],webGLMaxViewportHeight:o[1],webGLMaxRenderbufferSize:r.getParameter(r.MAX_RENDERBUFFER_SIZE)},a=n?{webGLUnmaskedVendor:r.getParameter(n.UNMASKED_VENDOR_WEBGL),webGLUnmaskedRenderer:r.getParameter(n.UNMASKED_RENDERER_WEBGL)}:{};window.__appsInToss.debugLogger.log(\"unity_webgl_info\",{...s,...a})}window.addEventListener(\"load\",()=>{let t=document.querySelector(\"#unity-canvas\");if(t!=null){e(t);return}new MutationObserver((n,o)=>{for(let s of n)s.type===\"childList\"&&s.addedNodes.forEach(a=>{if(a instanceof HTMLCanvasElement&&a.getAttribute(\"id\")===\"unity-canvas\"&&(e(a),o.disconnect()),a instanceof HTMLElement){let i=a.querySelector(\"#unity-canvas\");i!=null&&(e(i),o.disconnect())}})}).observe(document.body,{childList:!0,subtree:!0})})})();(()=>{if(window.__appsInToss.webViewType!==\"game\")return;let e=window.__appsInToss.debugLogger,t=window.__appsInToss.eventEmitter;t.on(\"fetchRequest\",({request:r})=>{L.test(r.url)&&e.log(\"game_resource_download_start\",{gameResourceRequestURL:r.url})}),t.on(\"fetchResponse\",async({request:r,requestAt:n,response:o})=>{if(!L.test(r.url))return;let s=T((await o.clone().blob()).size/1024,2),a=Date.now();e.log(\"game_resource_download_end\",{gameResourceRequestURL:r.url,gameResourceRequestAtMs:n,gameResourceResponseAtMs:a,gameResourceResponseSize:s,gameResourceResponseStatus:o.__revalidateResponse?.status??o.status,gameResourceDownloadDurationMs:a-n})})})();})();\n";
236015
236015
  0 && (module.exports = {
236016
236016
  afterDocumentLoad: afterDocumentLoad,
236017
236017
  beforeDocumentLoad: beforeDocumentLoad
@@ -235851,7 +235851,7 @@ __d(function (global, _$$_REQUIRE, _$$_IMPORT_DEFAULT, _$$_IMPORT_ALL, module, e
235851
235851
  }
235852
235852
  \`;document.head.appendChild(e);})();
235853
235853
  `,
235854
- m = "\"use strict\";(()=>{var Y=class{get _window(){return typeof window<\"u\"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error(\"ReactNativeWebView is not available in browser environment\");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error(\"__GRANITE_NATIVE_EMITTER is not available\");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},g=new Y,M=()=>Math.random().toString(36).substring(2,15),D=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function d(e){return(...t)=>{let r=M(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(g.on(`${e}/resolve/${r}`,c=>{o(),s(c)})),n.push(g.on(`${e}/reject/${r}`,c=>{o(),a(D(c))})),g.postMessage({type:\"method\",functionName:e,eventId:r,args:t})})}}function I(e){return t=>{let r=M(),n=[g.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),g.on(`${e}/onError/${r}`,o=>{t.onError(D(o))})];return g.postMessage({type:\"addEventListener\",functionName:e,eventId:r,args:t.options}),()=>{g.postMessage({type:\"removeEventListener\",functionName:e,eventId:r}),n.forEach(o=>o())}}}function m(e){return()=>g.getConstant(e)}var Q=function(){return{emit:function(t,r){for(var n=this.events[t]||[],o=0,s=n.length;o<s;o++)n[o](r)},events:{},on:function(t,r){var n=this,o,s;return((o=this.events)[s=t]||(o[s]=[])).push(r),function(){var a;n.events[t]=(a=n.events[t])===null||a===void 0?void 0:a.filter(function(c){return r!==c})}}}};typeof window<\"u\"&&(window.__GRANITE_NATIVE_EMITTER=Q());var Re=d(\"closeView\"),Me=d(\"generateHapticFeedback\"),De=d(\"share\"),Ne=d(\"setSecureScreen\"),Fe=d(\"setScreenAwakeMode\"),Oe=d(\"getNetworkStatus\"),Be=d(\"setIosSwipeGestureEnabled\"),Ge=d(\"openURL\"),Ve=d(\"openPermissionDialog\"),ke=d(\"getPermission\"),He=d(\"requestPermission\"),ze=m(\"setClipboardText\"),Ue=m(\"getClipboardText\"),We=m(\"fetchContacts\"),qe=m(\"fetchAlbumPhotos\"),$e=m(\"getCurrentLocation\"),je=m(\"openCamera\"),Ke=d(\"appLogin\"),Je=d(\"eventLog\"),Xe=d(\"getTossShareLink\"),Ze=d(\"setDeviceOrientation\"),Ye=d(\"checkoutPayment\"),Qe=d(\"saveBase64Data\"),et=d(\"appsInTossSignTossCert\"),tt=d(\"getGameCenterGameProfile\"),rt=d(\"openGameCenterLeaderboard\"),nt=d(\"submitGameCenterLeaderBoardScore\"),ot=d(\"getUserKeyForGame\"),st=d(\"getIsTossLoginIntegratedService\"),at=d(\"grantPromotionRewardForGame\"),it=d(\"getServerTime\"),ct=m(\"getLocale\"),dt=m(\"getSchemeUri\"),ut=m(\"getPlatformOS\"),pt=m(\"getOperationalEnvironment\"),mt=m(\"getTossAppVersion\"),lt=m(\"getDeviceId\"),gt=I(\"contactsViral\"),vt=I(\"startUpdateLocation\"),ft=I(\"onVisibilityChangedByTransparentServiceWeb\");var E=class extends Error{constructor({methodName:e,message:t}){super(),this.name=`${e} permission error`,this.message=t}},N=class extends E{constructor(){super({methodName:\"fetchAlbumPhotos\",message:\"\\uC0AC\\uC9C4\\uCCA9 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},F=class extends E{constructor(){super({methodName:\"fetchContacts\",message:\"\\uC5F0\\uB77D\\uCC98 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},O=class extends E{constructor(){super({methodName:\"openCamera\",message:\"\\uCE74\\uBA54\\uB77C \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}};var x=class extends E{constructor(){super({methodName:\"getCurrentLocation\",message:\"\\uC704\\uCE58 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},B=x,G=class extends E{constructor(){super({methodName:\"getClipboardText\",message:\"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC77D\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},V=class extends E{constructor(){super({methodName:\"setClipboardText\",message:\"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC4F0\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}};var ee=class{get _window(){return typeof window<\"u\"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error(\"ReactNativeWebView is not available in browser environment\");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error(\"__GRANITE_NATIVE_EMITTER is not available\");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},v=new ee,K=()=>Math.random().toString(36).substring(2,15),J=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function i(e){return(...t)=>{let r=K(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(v.on(`${e}/resolve/${r}`,c=>{o(),s(c)})),n.push(v.on(`${e}/reject/${r}`,c=>{o(),a(J(c))})),v.postMessage({type:\"method\",functionName:e,eventId:r,args:t})})}}function w(e){return t=>{let r=K(),n=[v.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),v.on(`${e}/onError/${r}`,o=>{t.onError(J(o))})];return v.postMessage({type:\"addEventListener\",functionName:e,eventId:r,args:t.options}),()=>{v.postMessage({type:\"removeEventListener\",functionName:e,eventId:r}),n.forEach(o=>o())}}}function u(e){return()=>v.getConstant(e)}var Tt={getItem:i(\"getStorageItem\"),setItem:i(\"setStorageItem\"),removeItem:i(\"removeStorageItem\"),clearItems:i(\"clearItems\")},te=/^[v^~<>=]*?(\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+))?(?:-([\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*))?(?:\\+[\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*)?)?)?$/i,k=e=>[\"*\",\"x\",\"X\"].includes(e),H=e=>{let t=parseInt(e,10);return isNaN(t)?e:t},re=(e,t)=>typeof e==typeof t?[e,t]:[String(e),String(t)],ne=(e,t)=>{if(k(e)||k(t))return 0;let[r,n]=re(H(e),H(t));return r>n?1:r<n?-1:0},z=e=>{if(typeof e!=\"string\")throw new TypeError(\"Invalid argument: expected a string\");let t=e.match(te);if(!t)throw new Error(`Invalid semver: '${e}'`);let[,r,n,o,s,a]=t;return[r,n,o,s,a]},U=(e,t)=>{let r=Math.max(e.length,t.length);for(let n=0;n<r;n++){let o=e[n]??\"0\",s=t[n]??\"0\",a=ne(o,s);if(a!==0)return a}return 0},oe=(e,t)=>{let r=z(e),n=z(t),o=r.pop(),s=n.pop(),a=U(r,n);return a!==0?a:o&&s?U(o.split(\".\"),s.split(\".\")):o?-1:s?1:0};function W(e){if(u(\"getOperationalEnvironment\")()===\"sandbox\")return!0;let r=u(\"getTossAppVersion\")(),o=u(\"getPlatformOS\")()===\"ios\"?e.ios:e.android;return o===void 0?!1:o===\"always\"?!0:o===\"never\"?!1:oe(r,o)>=0}function se(e){return i(\"processProductGrant\")(e)}var yt={createOneTimePurchaseOrder:e=>{let t=W({android:\"5.219.0\",ios:\"5.219.0\"}),r=()=>{};if(!t)return r;let n=W({android:\"5.231.1\",ios:\"5.230.0\"}),{options:o,onEvent:s,onError:a}=e,c=o.sku??o.productId;return n?w(\"requestOneTimePurchase\")({options:{sku:c},onEvent:async p=>{if(p.type===\"purchased\"){let l=await o.processProductGrant({orderId:p.data.orderId});await se({orderId:p.data.orderId,isProductGranted:l}).catch(a)}else s(p)},onError:p=>{a(p)}}):(i(\"iapCreateOneTimePurchaseOrder\")({productId:c}).then(l=>{Promise.resolve(o.processProductGrant({orderId:l.orderId})).then(()=>{s({type:\"success\",data:l})}).catch(h=>{a(h)})}).catch(l=>{a(l)}),r)},getProductItemList:i(\"iapGetProductItemList\"),getPendingOrders:i(\"getPendingOrders\"),getCompletedOrRefundedOrders:i(\"getCompletedOrRefundedOrders\"),completeProductGrant:i(\"completeProductGrant\")},Lt=u(\"getSafeAreaInsets\");var Pt=u(\"getSafeAreaInsets\");var xt={loadAppsInTossAdMob:Object.assign(w(\"loadAppsInTossAdMob\"),{isSupported:u(\"loadAppsInTossAdMob_isSupported\")}),showAppsInTossAdMob:Object.assign(w(\"showAppsInTossAdMob\"),{isSupported:u(\"showAppsInTossAdMob_isSupported\")}),isAppsInTossAdMobLoaded:Object.assign(i(\"isAppsInTossAdMobLoaded\"),{isSupported:u(\"isAppsInTossAdMobLoaded_isSupported\")})};var Rt={getDeploymentId:u(\"getDeploymentId\")},Mt=u(\"deploymentId\"),Dt=u(\"brandDisplayName\"),Nt=u(\"brandIcon\"),Ft=u(\"brandPrimaryColor\");var Ot={addAccessoryButton:i(\"addAccessoryButton\"),removeAccessoryButton:i(\"removeAccessoryButton\")},ae=i(\"requestPermission\"),ie=i(\"getPermission\"),ce=i(\"openPermissionDialog\");function S({permission:e,handler:t,error:r}){let n=async(...o)=>{if(await ae(e)===\"denied\")throw new r;return t(...o)};return n.getPermission=()=>ie(e),n.openPermissionDialog=()=>ce(e),n}var Gt=S({handler:e=>i(\"fetchAlbumPhotos\")(e),permission:{name:\"photos\",access:\"read\"},error:N}),kt=S({handler:e=>i(\"fetchContacts\")(e),permission:{name:\"contacts\",access:\"read\"},error:F}),zt=S({handler:e=>i(\"getCurrentLocation\")(e),permission:{name:\"geolocation\",access:\"access\"},error:x}),Wt=S({handler:e=>i(\"openCamera\")(e),permission:{name:\"camera\",access:\"access\"},error:O}),$t=S({handler:e=>i(\"setClipboardText\")(e),permission:{name:\"clipboard\",access:\"write\"},error:V}),Kt=S({handler:()=>i(\"getClipboardText\")(),permission:{name:\"clipboard\",access:\"read\"},error:G}),de=i(\"getPermission\"),ue=i(\"openPermissionDialog\"),X=e=>w(\"updateLocationEvent\")({...e,onError:t=>{let r=new B;return t instanceof Error&&t.name===r.name?e.onError(r):e.onError(t)}});X.getPermission=()=>de({name:\"geolocation\",access:\"access\"});X.openPermissionDialog=()=>ue({name:\"geolocation\",access:\"access\"});var Xt=Object.assign(w(\"loadFullScreenAd\"),{isSupported:u(\"loadFullScreenAd_isSupported\")}),Zt=Object.assign(w(\"showFullScreenAd\"),{isSupported:u(\"showFullScreenAd_isSupported\")}),pe=i(\"openURL\");function me(e){let t=le(e);return pe(t)}function le(e){return[\"http://\",\"https://\"].some(r=>e.startsWith(r))?ge(e):e}function ge(e){return`supertoss://web?url=${encodeURIComponent(e)}&external=true`}var q=\"https://static.toss.im/ads/sdk/toss-ads-space-kit-1.3.0.js\",$=15e3,T=null;function A(){if(!(typeof window>\"u\"))return window.TossAdsSpaceKit}function ve(){if(typeof window>\"u\"||typeof document>\"u\")return Promise.reject(new Error(\"Ads SDK can only be loaded in a browser environment.\"));let e=A();if(e)return Promise.resolve(e);if(T)return T;let t=new Promise((r,n)=>{let o=document.createElement(\"script\"),s=()=>{o.removeEventListener(\"load\",a),o.removeEventListener(\"error\",c),window.clearTimeout(f),T=null},a=()=>{let p=A();if(p){s(),r(p);return}s(),n(new Error(\"Ads SDK script loaded but window.TossAdsSpaceKit was not exposed.\"))},c=()=>{s(),n(new Error(`Failed to load Ads SDK script from ${q}.`))},f=window.setTimeout(()=>{s(),n(new Error(`Loading Ads SDK timed out after ${$}ms.`))},$);o.addEventListener(\"load\",a),o.addEventListener(\"error\",c),o.async=!0,o.src=q,document.head.appendChild(o)});return T=t,t}var b=Object.assign(w(\"fetchTossAd\"),{isSupported:u(\"fetchTossAd_isSupported\")}),fe=i(\"tossAdEventLog\"),we=new Set([\"1\",\"2\"]);function he(e){return new Promise((t,r)=>{if(!b.isSupported()){r(new Error(\"fetchTossAd is not supported in this environment.\"));return}return b({options:e,onEvent:t,onError:r})})}function j(e){let t=Array.isArray(e.ads)?e.ads.filter(r=>we.has(String(r.styleId))):[];return{requestId:e.requestId??\"\",status:e.status??\"OK\",ads:t,ext:e.ext}}function Ee(e){return be(e)?e.resultType!==\"SUCCESS\"?e:e.success?{...e,success:j(e.success)}:{resultType:\"FAIL\",error:{reason:\"fetchTossAd returned SUCCESS without payload\"}}:Se(e)?{resultType:\"SUCCESS\",success:j(e)}:{resultType:\"FAIL\",error:{reason:\"Invalid response from fetchTossAd\"}}}function be(e){return!!(e&&typeof e==\"object\"&&\"resultType\"in e)}function Se(e){return!!(e&&typeof e==\"object\"&&\"ads\"in e)}function _e(){return async(e,t)=>{try{let r=await he({adGroupId:t.spaceUnitId,sdkId:\"108\",availableStyleIds:[\"1\",\"2\"]});return Ee(r)}catch(r){return{resultType:\"FAIL\",error:{reason:r instanceof Error?r.message:\"Unknown fetchTossAd error\"}}}}}var R=null;function Ae(e){let{callbacks:t}=e;if(window.TossAdsSpaceKit!=null&&window.TossAdsSpaceKit.isInitialized()){t?.onInitializationFailed?.(new Error(\"[toss-ad] Already initialized.\"));return}R!=null&&t?.onInitializationFailed?.(new Error(\"[toss-ad] initialization already in progress.\"));let r=()=>t?.onInitialized?.(),n=o=>{let s=o instanceof Error?o:new Error(String(o));t?.onInitializationFailed?.(s)};R=ve().then(o=>{let a={environment:\"live\",customAdFetcher:_e(),opener:me};o.init(a),r()}).catch(o=>{R=null,n(o)})}function Ce(e,t,r={}){let{callbacks:n}=r,o=s=>{let a=s instanceof Error?s:new Error(String(s));n?.onAdFailedToRender?.({slotId:\"\",adGroupId:e,adMetadata:{},error:{code:0,message:a.message}})};try{let s=e,a=A();if(!a)throw new Error(\"[toss-ad] Call initialize() before attaching an ad.\");if(!a.banner)throw new Error(\"[toss-ad] Loaded TossAdsSpaceKit does not support banner ads.\");let c=typeof t==\"string\"?document.querySelector(t):t;if(!c)throw new Error(`[toss-ad] Failed to find target element: ${t}`);let f={spaceId:s,autoLoad:!0,theme:r.theme,padding:r.padding,callbacks:ye(e,r.callbacks)};a.banner.createSlot(c,f)}catch(s){o(s)}}function Ie(e){let t=A();t?.banner&&t.banner.destroy(e)}function Te(){let e=A();e?.banner&&e.banner.destroyAll()}function ye(e,t){if(!t)return;let r=n=>{let o={...n??{}};return o.adGroupId=o.adGroupId??o.spaceId??e,delete o.spaceId,o};return{onAdRendered:n=>t.onAdRendered?.(r(n)),onAdViewable:n=>t.onAdViewable?.(r(n)),onAdClicked:n=>t.onAdClicked?.(r(n)),onAdImpression:n=>{fe({log_name:\"display_ads_all::impression__1px_banner\",log_type:\"event\",params:{event_type:\"impression\",schema_id:1812034,request_id:n?.adMetadata?.requestId??\"\"}}),t.onAdImpression?.(r(n))},onAdFailedToRender:n=>t.onAdFailedToRender?.({...r(n),error:n?.error??{code:0,message:\"UNKNOWN\"}}),onNoFill:n=>t.onNoFill?.(r(n))}}var Yt={initialize:Object.assign(Ae,{isSupported:b.isSupported}),attach:Object.assign(Ce,{isSupported:b.isSupported}),destroy:Object.assign(Ie,{isSupported:b.isSupported}),destroyAll:Object.assign(Te,{isSupported:b.isSupported})},Qt=Object.assign(i(\"getServerTime\"),{isSupported:u(\"getServerTime_isSupported\")});var y=class{_log=i(\"debugLog\");log(t,r){try{this._log({log_name:`apps_in_toss_webview_${t}`,log_type:\"debug\",params:{...r,...this.getCommonParams()}})}catch{}}getCommonParams(){return{...this.getLocationInfo(),...this.getNavigatorInfo(),...this.getScreenInfo(),appName:window.__appsInToss.appName,deploymentId:window.__appsInToss.deploymentId,sessionId:window.__appsInToss.sessionId,isGame:window.__appsInToss.webViewType===\"game\",timestampMs:Date.now()}}getLocationInfo(){return{url:window.location.href,urlOrigin:window.location.origin,urlHost:window.location.hostname,urlPath:window.location.pathname,urlSearch:window.location.search}}getNavigatorInfo(){return{userAgent:navigator.userAgent,platform:navigator.platform,language:navigator.language,cookieEnabled:navigator.cookieEnabled,hardwareConcurrency:navigator.hardwareConcurrency,deviceMemory:navigator.deviceMemory?navigator.deviceMemory*1024*1024:void 0,maxTouchPoints:navigator.maxTouchPoints}}getScreenInfo(){return{screenWidth:screen.width,screenHeight:screen.height,availableScreenWidth:screen.availWidth,availableScreenHeight:screen.availHeight,devicePixelRatio:window.devicePixelRatio,colorDepth:screen.colorDepth,pixelDepth:screen.pixelDepth,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight}}};var L=class{callbacks={};on(t,r){typeof this.callbacks[t]>\"u\"&&(this.callbacks[t]=[]),this.callbacks[t].push(r)}emit(t,r){this.callbacks[t]?.forEach(n=>n(r))}};window.__appsInToss={appName:u(\"getAppName\")(),deploymentId:u(\"getDeploymentId\")(),webViewType:u(\"getWebViewType\")(),sessionId:Math.random().toString(36).substring(2),eventEmitter:new L,debugLogger:new y};var C=/\\.(data|wasm|framework\\.js)(?:\\.gz|\\.br|\\.unityweb)?$/;function P(e){window.fetch=new Proxy(window.fetch,{apply:e})}(()=>{if(window.__appsInToss.webViewType!==\"game\"||typeof caches>\"u\")return;let e=\"@apps-in-toss/caches/\",t=`${e}${window.__appsInToss.deploymentId}`;window.addEventListener(\"load\",async()=>{let r=await caches.keys();for(let n of r)n.startsWith(e)&&n!==t&&await caches.delete(n)}),P(async(r,n,o)=>{let s=new Request(o[0],o[1]);if(!C.test(s.url))return await r.call(n,s);let a=await caches.open(t),c=await a.match(s);if(c){let p=c.headers.get(\"ETag\"),l=c.headers.get(\"Last-Modified\");p&&s.headers.set(\"If-None-Match\",p),l&&s.headers.set(\"If-Modified-Since\",l);let h=await r.call(n,s);return h.status===304?(c.__revalidateResponse=h,c):(a.put(s,h.clone()),h)}let f=await r.call(n,s);return a.put(s,f.clone()),f})})();P(async(e,t,r)=>{let n=new Request(r[0],r[1]),o=Date.now();window.__appsInToss.eventEmitter.emit(\"fetchRequest\",{request:n});let s=await e.call(t,n);return window.__appsInToss.eventEmitter.emit(\"fetchResponse\",{request:n,response:s,requestAt:o}),s});var Z=window.__appsInToss.debugLogger;Z.log(\"load_start\",{});window.addEventListener(\"load\",()=>{let e=performance.timeOrigin,t=performance.getEntriesByType?.(\"navigation\")[0]??null,r=typeof e<\"u\"&&t!==null,n=r?{navigationStartAtMs:e+t.startTime,navigationRedirectStartAtMs:e+t.redirectStart,navigationRedirectEndAtMs:e+t.redirectEnd,navigationRedirectCount:t.redirectCount,navigationServiceWorkerStartAtMs:e+t.workerStart,navigationFetchStartAtMs:e+t.fetchStart,navigationDomainLookupStartAtMs:e+t.domainLookupStart,navigationDomainLookupEndAtMs:e+t.domainLookupEnd,navigationConnectStartAtMs:e+t.connectStart,navigationSecureConnectStartAtMs:e+t.secureConnectionStart,navigationConnectEndAtMs:e+t.connectEnd,navigationRequestStartAtMs:e+t.requestStart,navigationResponseStartAtMs:e+t.responseStart,navigationResponseEndAtMs:e+t.responseEnd,navigationDomInteractiveAtMs:e+t.domInteractive,navigationDomContentLoadedEventStartAtMs:e+t.domContentLoadedEventStart,navigationDomContentLoadedEventEndAtMs:e+t.domContentLoadedEventEnd,navigationDomCompleteAtMs:e+t.domComplete}:{};Z.log(\"load_complete\",{isNavigationDebugSupported:r,...n})});function _(e,t){return parseFloat(e.toFixed(t))}(()=>{if(typeof performance.memory>\"u\"||typeof performance.memory.usedJSHeapSize>\"u\"||typeof performance.memory.totalJSHeapSize>\"u\"||typeof performance.memory.jsHeapSizeLimit>\"u\")return;function e(t){window.__appsInToss.debugLogger.log(t,{usedJSHeapSize:_(performance.memory.usedJSHeapSize/1024,2),totalJSHeapSize:_(performance.memory.totalJSHeapSize/1024,2),jsHeapSizeLimit:_(performance.memory.jsHeapSizeLimit/1024,2)})}e(\"memory_usage_first_0s\"),setTimeout(()=>e(\"memory_usage_first_1s\"),1e3),setTimeout(()=>e(\"memory_usage_first_10s\"),1e4),setTimeout(()=>e(\"memory_usage_first_30s\"),3e4),setTimeout(()=>e(\"memory_usage_first_60s\"),6e4),setInterval(()=>e(\"memory_usage_every_180s\"),18e4)})();(()=>{let e=window.__appsInToss.debugLogger,t=performance.timeOrigin;if(typeof t>\"u\"||typeof PerformanceObserver>\"u\")return;new PerformanceObserver(o=>{o.getEntries().forEach(a=>{a.name===\"first-paint\"?e.log(\"first_paint\",{fpStartAtMs:t+a.startTime}):a.name===\"first-contentful-paint\"&&e.log(\"first_contentful_paint\",{fcpStartAtMs:t+a.startTime})})}).observe({type:\"paint\"}),new PerformanceObserver(o=>{o.getEntries().forEach(a=>{e.log(\"largest_contentful_paint\",{lcpStartAtMs:t+a.startTime,lcpRenderSize:a.size})})}).observe({type:\"largest-contentful-paint\"})})();(()=>{if(window.__appsInToss.webViewType!==\"game\")return;function e(t){let r=t.getContext(\"webgl2\")??t.getContext(\"webgl\");if(r==null)return;let n=r.getExtension(\"WEBGL_debug_renderer_info\"),o=r.getParameter(r.MAX_VIEWPORT_DIMS),s={webGLRenderer:r.getParameter(r.RENDERER),webGLVendor:r.getParameter(r.VENDOR),webGLVersion:r.getParameter(r.VERSION),webGLShadingLanguageVersion:r.getParameter(r.SHADING_LANGUAGE_VERSION),webGLMaxTextureSize:r.getParameter(r.MAX_TEXTURE_SIZE),webGLMaxViewportWidth:o[0],webGLMaxViewportHeight:o[1],webGLMaxRenderbufferSize:r.getParameter(r.MAX_RENDERBUFFER_SIZE)},a=n?{webGLUnmaskedVendor:r.getParameter(n.UNMASKED_VENDOR_WEBGL),webGLUnmaskedRenderer:r.getParameter(n.UNMASKED_RENDERER_WEBGL)}:{};window.__appsInToss.debugLogger.log(\"unity_webgl_info\",{...s,...a})}window.addEventListener(\"load\",()=>{let t=document.querySelector(\"#unity-canvas\");if(t!=null){e(t);return}new MutationObserver((n,o)=>{for(let s of n)s.type===\"childList\"&&s.addedNodes.forEach(a=>{if(a instanceof HTMLCanvasElement&&a.getAttribute(\"id\")===\"unity-canvas\"&&(e(a),o.disconnect()),a instanceof HTMLElement){let c=a.querySelector(\"#unity-canvas\");c!=null&&(e(c),o.disconnect())}})}).observe(document.body,{childList:!0,subtree:!0})})})();(()=>{if(window.__appsInToss.webViewType!==\"game\")return;let e=window.__appsInToss.debugLogger,t=window.__appsInToss.eventEmitter;t.on(\"fetchRequest\",({request:r})=>{C.test(r.url)&&e.log(\"game_resource_download_start\",{gameResourceRequestURL:r.url})}),t.on(\"fetchResponse\",async({request:r,requestAt:n,response:o})=>{if(!C.test(r.url))return;let s=_((await o.clone().blob()).size/1024,2),a=Date.now();e.log(\"game_resource_download_end\",{gameResourceRequestURL:r.url,gameResourceRequestAtMs:n,gameResourceResponseAtMs:a,gameResourceResponseSize:s,gameResourceResponseStatus:o.__revalidateResponse?.status??o.status,gameResourceDownloadDurationMs:a-n})})})();})();\n";
235854
+ m = "\"use strict\";(()=>{var ie=class{get _window(){return typeof window<\"u\"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error(\"ReactNativeWebView is not available in browser environment\");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error(\"__GRANITE_NATIVE_EMITTER is not available\");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},h=new ie,O=()=>Math.random().toString(36).substring(2,15),k=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function d(e){return(...t)=>{let r=O(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(h.on(`${e}/resolve/${r}`,i=>{o(),s(i)})),n.push(h.on(`${e}/reject/${r}`,i=>{o(),a(k(i))})),h.postMessage({type:\"method\",functionName:e,eventId:r,args:t})})}}function x(e){return t=>{let r=O(),n=[h.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),h.on(`${e}/onError/${r}`,o=>{t.onError(k(o))})];return h.postMessage({type:\"addEventListener\",functionName:e,eventId:r,args:t.options}),()=>{h.postMessage({type:\"removeEventListener\",functionName:e,eventId:r}),n.forEach(o=>o())}}}function l(e){return()=>h.getConstant(e)}var ce=function(){return{emit:function(t,r){for(var n=this.events[t]||[],o=0,s=n.length;o<s;o++)n[o](r)},events:{},on:function(t,r){var n=this,o,s;return((o=this.events)[s=t]||(o[s]=[])).push(r),function(){var a;n.events[t]=(a=n.events[t])===null||a===void 0?void 0:a.filter(function(i){return r!==i})}}}};typeof window<\"u\"&&(window.__GRANITE_NATIVE_EMITTER=ce());var qe=d(\"closeView\"),je=d(\"generateHapticFeedback\"),Ke=d(\"share\"),Je=d(\"setSecureScreen\"),Xe=d(\"setScreenAwakeMode\"),Ye=d(\"getNetworkStatus\"),Ze=d(\"setIosSwipeGestureEnabled\"),Qe=d(\"openURL\"),et=d(\"openPermissionDialog\"),tt=d(\"getPermission\"),rt=d(\"requestPermission\"),nt=l(\"setClipboardText\"),ot=l(\"getClipboardText\"),st=l(\"fetchContacts\"),at=l(\"fetchAlbumPhotos\"),it=l(\"getCurrentLocation\"),ct=l(\"openCamera\"),dt=d(\"appLogin\"),ut=d(\"eventLog\"),pt=d(\"getTossShareLink\"),mt=d(\"setDeviceOrientation\"),lt=d(\"checkoutPayment\"),gt=d(\"saveBase64Data\"),ft=d(\"appsInTossSignTossCert\"),vt=d(\"getGameCenterGameProfile\"),ht=d(\"openGameCenterLeaderboard\"),wt=d(\"submitGameCenterLeaderBoardScore\"),Et=d(\"getUserKeyForGame\"),bt=d(\"getIsTossLoginIntegratedService\"),At=d(\"grantPromotionRewardForGame\"),St=d(\"getServerTime\"),_t=l(\"getLocale\"),Ct=l(\"getSchemeUri\"),Tt=l(\"getPlatformOS\"),yt=l(\"getOperationalEnvironment\"),It=l(\"getTossAppVersion\"),Lt=l(\"getDeviceId\"),xt=x(\"contactsViral\"),Pt=x(\"startUpdateLocation\"),Rt=x(\"onVisibilityChangedByTransparentServiceWeb\");var _=class extends Error{constructor({methodName:e,message:t}){super(),this.name=`${e} permission error`,this.message=t}},B=class extends _{constructor(){super({methodName:\"fetchAlbumPhotos\",message:\"\\uC0AC\\uC9C4\\uCCA9 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},G=class extends _{constructor(){super({methodName:\"fetchContacts\",message:\"\\uC5F0\\uB77D\\uCC98 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},V=class extends _{constructor(){super({methodName:\"openCamera\",message:\"\\uCE74\\uBA54\\uB77C \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}};var F=class extends _{constructor(){super({methodName:\"getCurrentLocation\",message:\"\\uC704\\uCE58 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},H=F,U=class extends _{constructor(){super({methodName:\"getClipboardText\",message:\"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC77D\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},z=class extends _{constructor(){super({methodName:\"setClipboardText\",message:\"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC4F0\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}};var de=class{get _window(){return typeof window<\"u\"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error(\"ReactNativeWebView is not available in browser environment\");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error(\"__GRANITE_NATIVE_EMITTER is not available\");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},w=new de,Q=()=>Math.random().toString(36).substring(2,15),ee=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function c(e){return(...t)=>{let r=Q(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(w.on(`${e}/resolve/${r}`,i=>{o(),s(i)})),n.push(w.on(`${e}/reject/${r}`,i=>{o(),a(ee(i))})),w.postMessage({type:\"method\",functionName:e,eventId:r,args:t})})}}function A(e){return t=>{let r=Q(),n=[w.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),w.on(`${e}/onError/${r}`,o=>{t.onError(ee(o))})];return w.postMessage({type:\"addEventListener\",functionName:e,eventId:r,args:t.options}),()=>{w.postMessage({type:\"removeEventListener\",functionName:e,eventId:r}),n.forEach(o=>o())}}}function u(e){return()=>w.getConstant(e)}var Ht={getItem:c(\"getStorageItem\"),setItem:c(\"setStorageItem\"),removeItem:c(\"removeStorageItem\"),clearItems:c(\"clearItems\")},ue=/^[v^~<>=]*?(\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+))?(?:-([\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*))?(?:\\+[\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*)?)?)?$/i,$=e=>[\"*\",\"x\",\"X\"].includes(e),W=e=>{let t=parseInt(e,10);return isNaN(t)?e:t},pe=(e,t)=>typeof e==typeof t?[e,t]:[String(e),String(t)],me=(e,t)=>{if($(e)||$(t))return 0;let[r,n]=pe(W(e),W(t));return r>n?1:r<n?-1:0},q=e=>{if(typeof e!=\"string\")throw new TypeError(\"Invalid argument: expected a string\");let t=e.match(ue);if(!t)throw new Error(`Invalid semver: '${e}'`);let[,r,n,o,s,a]=t;return[r,n,o,s,a]},j=(e,t)=>{let r=Math.max(e.length,t.length);for(let n=0;n<r;n++){let o=e[n]??\"0\",s=t[n]??\"0\",a=me(o,s);if(a!==0)return a}return 0},le=(e,t)=>{let r=q(e),n=q(t),o=r.pop(),s=n.pop(),a=j(r,n);return a!==0?a:o&&s?j(o.split(\".\"),s.split(\".\")):o?-1:s?1:0};function K(e){if(u(\"getOperationalEnvironment\")()===\"sandbox\")return!0;let r=u(\"getTossAppVersion\")(),o=u(\"getPlatformOS\")()===\"ios\"?e.ios:e.android;return o===void 0?!1:o===\"always\"?!0:o===\"never\"?!1:le(r,o)>=0}function ge(e){return c(\"processProductGrant\")(e)}var Ut={createOneTimePurchaseOrder:e=>{let t=K({android:\"5.219.0\",ios:\"5.219.0\"}),r=()=>{};if(!t)return r;let n=K({android:\"5.231.1\",ios:\"5.230.0\"}),{options:o,onEvent:s,onError:a}=e,i=o.sku??o.productId;return n?A(\"requestOneTimePurchase\")({options:{sku:i},onEvent:async m=>{if(m.type===\"purchased\"){let g=await o.processProductGrant({orderId:m.data.orderId});await ge({orderId:m.data.orderId,isProductGranted:g}).catch(a)}else s(m)},onError:m=>{a(m)}}):(c(\"iapCreateOneTimePurchaseOrder\")({productId:i}).then(g=>{Promise.resolve(o.processProductGrant({orderId:g.orderId})).then(()=>{s({type:\"success\",data:g})}).catch(v=>{a(v)})}).catch(g=>{a(g)}),r)},getProductItemList:c(\"iapGetProductItemList\"),getPendingOrders:c(\"getPendingOrders\"),getCompletedOrRefundedOrders:c(\"getCompletedOrRefundedOrders\"),completeProductGrant:c(\"completeProductGrant\")},zt=u(\"getSafeAreaInsets\");var $t=u(\"getSafeAreaInsets\");var Wt={loadAppsInTossAdMob:Object.assign(A(\"loadAppsInTossAdMob\"),{isSupported:u(\"loadAppsInTossAdMob_isSupported\")}),showAppsInTossAdMob:Object.assign(A(\"showAppsInTossAdMob\"),{isSupported:u(\"showAppsInTossAdMob_isSupported\")}),isAppsInTossAdMobLoaded:Object.assign(c(\"isAppsInTossAdMobLoaded\"),{isSupported:u(\"isAppsInTossAdMobLoaded_isSupported\")})};var qt={getDeploymentId:u(\"getDeploymentId\")},jt=u(\"deploymentId\"),Kt=u(\"brandDisplayName\"),Jt=u(\"brandIcon\"),Xt=u(\"brandPrimaryColor\");var Yt={addAccessoryButton:c(\"addAccessoryButton\"),removeAccessoryButton:c(\"removeAccessoryButton\")},fe=c(\"requestPermission\"),ve=c(\"getPermission\"),he=c(\"openPermissionDialog\");function C({permission:e,handler:t,error:r}){let n=async(...o)=>{if(await fe(e)===\"denied\")throw new r;return t(...o)};return n.getPermission=()=>ve(e),n.openPermissionDialog=()=>he(e),n}var Qt=C({handler:e=>c(\"fetchAlbumPhotos\")(e),permission:{name:\"photos\",access:\"read\"},error:B}),tr=C({handler:e=>c(\"fetchContacts\")(e),permission:{name:\"contacts\",access:\"read\"},error:G}),nr=C({handler:e=>c(\"getCurrentLocation\")(e),permission:{name:\"geolocation\",access:\"access\"},error:F}),sr=C({handler:e=>c(\"openCamera\")(e),permission:{name:\"camera\",access:\"access\"},error:V}),ir=C({handler:e=>c(\"setClipboardText\")(e),permission:{name:\"clipboard\",access:\"write\"},error:z}),dr=C({handler:()=>c(\"getClipboardText\")(),permission:{name:\"clipboard\",access:\"read\"},error:U}),we=c(\"getPermission\"),Ee=c(\"openPermissionDialog\"),te=e=>A(\"updateLocationEvent\")({...e,onError:t=>{let r=new H;return t instanceof Error&&t.name===r.name?e.onError(r):e.onError(t)}});te.getPermission=()=>we({name:\"geolocation\",access:\"access\"});te.openPermissionDialog=()=>Ee({name:\"geolocation\",access:\"access\"});var pr=Object.assign(A(\"loadFullScreenAd\"),{isSupported:u(\"loadFullScreenAd_isSupported\")}),mr=Object.assign(A(\"showFullScreenAd\"),{isSupported:u(\"showFullScreenAd_isSupported\")}),be=c(\"openURL\");function Ae(e){let t=Se(e);return be(t)}function Se(e){return[\"http://\",\"https://\"].some(r=>e.startsWith(r))?_e(e):e}function _e(e){return`supertoss://web?url=${encodeURIComponent(e)}&external=true`}var J=\"https://static.toss.im/ads/sdk/toss-ads-space-kit-1.3.0.js\",X=15e3,P=null;function S(){if(!(typeof window>\"u\"))return window.TossAdsSpaceKit}function Ce(){if(typeof window>\"u\"||typeof document>\"u\")return Promise.reject(new Error(\"Ads SDK can only be loaded in a browser environment.\"));let e=S();if(e)return Promise.resolve(e);if(P)return P;let t=new Promise((r,n)=>{let o=document.createElement(\"script\"),s=()=>{o.removeEventListener(\"load\",a),o.removeEventListener(\"error\",i),window.clearTimeout(p),P=null},a=()=>{let m=S();if(m){s(),r(m);return}s(),n(new Error(\"Ads SDK script loaded but window.TossAdsSpaceKit was not exposed.\"))},i=()=>{s(),n(new Error(`Failed to load Ads SDK script from ${J}.`))},p=window.setTimeout(()=>{s(),n(new Error(`Loading Ads SDK timed out after ${X}ms.`))},X);o.addEventListener(\"load\",a),o.addEventListener(\"error\",i),o.async=!0,o.src=J,document.head.appendChild(o)});return P=t,t}var b=Object.assign(A(\"fetchTossAd\"),{isSupported:u(\"fetchTossAd_isSupported\")}),Te=c(\"tossAdEventLog\"),ye=new Set([\"1\",\"2\"]);function Ie(e){return new Promise((t,r)=>{if(!b.isSupported()){r(new Error(\"fetchTossAd is not supported in this environment.\"));return}return b({options:e,onEvent:t,onError:r})})}function Y(e){let t=Array.isArray(e.ads)?e.ads.filter(r=>ye.has(String(r.styleId))):[];return{requestId:e.requestId??\"\",status:e.status??\"OK\",ads:t,ext:e.ext}}function Le(e){return xe(e)?e.resultType!==\"SUCCESS\"?e:e.success?{...e,success:Y(e.success)}:{resultType:\"FAIL\",error:{reason:\"fetchTossAd returned SUCCESS without payload\"}}:Pe(e)?{resultType:\"SUCCESS\",success:Y(e)}:{resultType:\"FAIL\",error:{reason:\"Invalid response from fetchTossAd\"}}}function xe(e){return!!(e&&typeof e==\"object\"&&\"resultType\"in e)}function Pe(e){return!!(e&&typeof e==\"object\"&&\"ads\"in e)}function Re(){return async(e,t)=>{try{let r=await Ie({adGroupId:t.spaceUnitId,sdkId:\"108\",availableStyleIds:[\"1\",\"2\"]});return Le(r)}catch(r){return{resultType:\"FAIL\",error:{reason:r instanceof Error?r.message:\"Unknown fetchTossAd error\"}}}}}var I=null;function De(e){let{callbacks:t}=e,r=()=>t?.onInitialized?.(),n=a=>{let i=a instanceof Error?a:new Error(String(a));t?.onInitializationFailed?.(i)};if(S()?.isInitialized()){r();return}if(I!=null){I.then(r).catch(n);return}let s=Ce().then(a=>{if(a.isInitialized())return;let p={environment:\"live\",customAdFetcher:Re(),opener:Ae};a.init(p)});I=s,s.then(r).catch(n).finally(()=>{I===s&&(I=null)})}function Ne(e,t,r={}){let{callbacks:n}=r,o=s=>{let a=s instanceof Error?s:new Error(String(s));n?.onAdFailedToRender?.({slotId:\"\",adGroupId:e,adMetadata:{},error:{code:0,message:a.message}})};try{let s=e,a=S();if(!a)throw new Error(\"[toss-ad] Call initialize() before attaching an ad.\");if(!a.banner)throw new Error(\"[toss-ad] Loaded TossAdsSpaceKit does not support banner ads.\");let i=typeof t==\"string\"?document.querySelector(t):t;if(!i)throw new Error(`[toss-ad] Failed to find target element: ${t}`);let p={spaceId:s,autoLoad:!0,theme:r.theme,padding:r.padding,callbacks:re(e,r.callbacks)};a.banner.createSlot(i,p)}catch(s){o(s)}}var Me=\"16px 20px\",Fe=\"20px\",Oe=\"auto\",ke=\"blackAndWhite\",Be=\"expanded\",f=\"toss-ads-attach\",Z=\"toss-ads-attach-style\";function Ge(e){let t=e.ownerDocument;if(!t||t.getElementById(Z))return;let r=t.createElement(\"style\");r.id=Z,r.textContent=`\n .${f} { background: #ffffff; }\n .${f}.toss-ads-tone-grey { background: #f2f4f7; }\n @media (prefers-color-scheme: dark) {\n .${f} { background: #17171c; }\n .${f}.toss-ads-tone-grey { background: #101013; }\n }\n .${f}.toss-ads-theme-light { background: #ffffff; }\n .${f}.toss-ads-theme-light.toss-ads-tone-grey { background: #f2f4f7; }\n .${f}.toss-ads-theme-dark { background: #17171c; }\n .${f}.toss-ads-theme-dark.toss-ads-tone-grey { background: #101013; }\n `;let n=t.head??t.body??t.documentElement;n&&n.appendChild(r)}function Ve(e,t,r={}){let{callbacks:n,theme:o=Oe,tone:s=ke,variant:a=Be}=r,i=document.createElement(\"div\");i.style.width=\"100%\",i.style.height=\"100%\",i.style.boxSizing=\"border-box\",i.style.display=\"flex\",i.style.flexDirection=\"column\",i.style.justifyContent=\"center\",i.style.overflow=\"hidden\",a===\"card\"&&(i.style.padding=\"0 10px\");let p=document.createElement(\"div\");p.classList.add(f),s===\"grey\"&&p.classList.add(\"toss-ads-tone-grey\"),o===\"light\"?p.classList.add(\"toss-ads-theme-light\"):o===\"dark\"&&p.classList.add(\"toss-ads-theme-dark\"),a===\"card\"&&(p.style.borderRadius=\"16px\",p.style.overflow=\"hidden\"),i.appendChild(p);let m=!1,g=null,v=E=>{let y=E instanceof Error?E:new Error(String(E));n?.onAdFailedToRender?.({slotId:\"\",adGroupId:e,adMetadata:{},error:{code:0,message:y.message}})},oe=re(e,n);try{let E=e,y=S();if(!y)throw new Error(\"[toss-ad] Call initialize() before attaching an ad.\");if(!y.banner)throw new Error(\"[toss-ad] Loaded TossAdsSpaceKit does not support banner ads.\");let M=typeof t==\"string\"?document.querySelector(t):t;if(!M)throw new Error(`[toss-ad] Failed to find target element: ${t}`);Ge(M),M.appendChild(i),m=!0;let se={spaceId:E,autoLoad:!0,theme:o===\"auto\"?void 0:o,renderPadding:ae=>ae===\"1\"?Me:Fe,callbacks:oe};g=y.banner.createSlot(p,se)}catch(E){m&&i.parentNode&&i.parentNode.removeChild(i),v(E)}return{destroy(){g?.destroy(),m&&i.parentNode&&i.parentNode.removeChild(i)}}}function He(e){let t=S();t?.banner&&t.banner.destroy(e)}function Ue(){let e=S();e?.banner&&e.banner.destroyAll()}function re(e,t){if(!t)return;let r=n=>{let o={...n??{}};return o.adGroupId=o.adGroupId??o.spaceId??e,delete o.spaceId,o};return{onAdRendered:n=>t.onAdRendered?.(r(n)),onAdViewable:n=>t.onAdViewable?.(r(n)),onAdClicked:n=>t.onAdClicked?.(r(n)),onAdImpression:n=>{Te({log_name:\"display_ads_all::impression__1px_banner\",log_type:\"event\",params:{event_type:\"impression\",schema_id:1812034,request_id:n?.adMetadata?.requestId??\"\"}}),t.onAdImpression?.(r(n))},onAdFailedToRender:n=>t.onAdFailedToRender?.({...r(n),error:n?.error??{code:0,message:\"UNKNOWN\"}}),onNoFill:n=>t.onNoFill?.(r(n))}}var lr={initialize:Object.assign(De,{isSupported:b.isSupported}),attach:Object.assign(Ne,{isSupported:b.isSupported}),attachBanner:Object.assign(Ve,{isSupported:b.isSupported}),destroy:Object.assign(He,{isSupported:b.isSupported}),destroyAll:Object.assign(Ue,{isSupported:b.isSupported})},gr=Object.assign(c(\"getServerTime\"),{isSupported:u(\"getServerTime_isSupported\")});var R=class{_log=c(\"debugLog\");log(t,r){try{this._log({log_name:`apps_in_toss_webview_${t}`,log_type:\"debug\",params:{...r,...this.getCommonParams()}})}catch{}}getCommonParams(){return{...this.getLocationInfo(),...this.getNavigatorInfo(),...this.getScreenInfo(),appName:window.__appsInToss.appName,deploymentId:window.__appsInToss.deploymentId,sessionId:window.__appsInToss.sessionId,isGame:window.__appsInToss.webViewType===\"game\",timestampMs:Date.now()}}getLocationInfo(){return{url:window.location.href,urlOrigin:window.location.origin,urlHost:window.location.hostname,urlPath:window.location.pathname,urlSearch:window.location.search}}getNavigatorInfo(){return{userAgent:navigator.userAgent,platform:navigator.platform,language:navigator.language,cookieEnabled:navigator.cookieEnabled,hardwareConcurrency:navigator.hardwareConcurrency,deviceMemory:navigator.deviceMemory?navigator.deviceMemory*1024*1024:void 0,maxTouchPoints:navigator.maxTouchPoints}}getScreenInfo(){return{screenWidth:screen.width,screenHeight:screen.height,availableScreenWidth:screen.availWidth,availableScreenHeight:screen.availHeight,devicePixelRatio:window.devicePixelRatio,colorDepth:screen.colorDepth,pixelDepth:screen.pixelDepth,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight}}};var D=class{callbacks={};on(t,r){typeof this.callbacks[t]>\"u\"&&(this.callbacks[t]=[]),this.callbacks[t].push(r)}emit(t,r){this.callbacks[t]?.forEach(n=>n(r))}};window.__appsInToss={appName:u(\"getAppName\")(),deploymentId:u(\"getDeploymentId\")(),webViewType:u(\"getWebViewType\")(),sessionId:Math.random().toString(36).substring(2),eventEmitter:new D,debugLogger:new R};var L=/\\.(data|wasm|framework\\.js)(?:\\.gz|\\.br|\\.unityweb)?$/;function N(e){window.fetch=new Proxy(window.fetch,{apply:e})}(()=>{if(window.__appsInToss.webViewType!==\"game\"||typeof caches>\"u\")return;let e=\"@apps-in-toss/caches/\",t=`${e}${window.__appsInToss.deploymentId}`;window.addEventListener(\"load\",async()=>{let r=await caches.keys();for(let n of r)n.startsWith(e)&&n!==t&&await caches.delete(n)}),N(async(r,n,o)=>{let s=new Request(o[0],o[1]);if(!L.test(s.url))return await r.call(n,s);let a=await caches.open(t),i=await a.match(s);if(i){let m=i.headers.get(\"ETag\"),g=i.headers.get(\"Last-Modified\");m&&s.headers.set(\"If-None-Match\",m),g&&s.headers.set(\"If-Modified-Since\",g);let v=await r.call(n,s);return v.status===304?(i.__revalidateResponse=v,i):(a.put(s,v.clone()),v)}let p=await r.call(n,s);return a.put(s,p.clone()),p})})();N(async(e,t,r)=>{let n=new Request(r[0],r[1]),o=Date.now();window.__appsInToss.eventEmitter.emit(\"fetchRequest\",{request:n});let s=await e.call(t,n);return window.__appsInToss.eventEmitter.emit(\"fetchResponse\",{request:n,response:s,requestAt:o}),s});var ne=window.__appsInToss.debugLogger;ne.log(\"load_start\",{});window.addEventListener(\"load\",()=>{let e=performance.timeOrigin,t=performance.getEntriesByType?.(\"navigation\")[0]??null,r=typeof e<\"u\"&&t!==null,n=r?{navigationStartAtMs:e+t.startTime,navigationRedirectStartAtMs:e+t.redirectStart,navigationRedirectEndAtMs:e+t.redirectEnd,navigationRedirectCount:t.redirectCount,navigationServiceWorkerStartAtMs:e+t.workerStart,navigationFetchStartAtMs:e+t.fetchStart,navigationDomainLookupStartAtMs:e+t.domainLookupStart,navigationDomainLookupEndAtMs:e+t.domainLookupEnd,navigationConnectStartAtMs:e+t.connectStart,navigationSecureConnectStartAtMs:e+t.secureConnectionStart,navigationConnectEndAtMs:e+t.connectEnd,navigationRequestStartAtMs:e+t.requestStart,navigationResponseStartAtMs:e+t.responseStart,navigationResponseEndAtMs:e+t.responseEnd,navigationDomInteractiveAtMs:e+t.domInteractive,navigationDomContentLoadedEventStartAtMs:e+t.domContentLoadedEventStart,navigationDomContentLoadedEventEndAtMs:e+t.domContentLoadedEventEnd,navigationDomCompleteAtMs:e+t.domComplete}:{};ne.log(\"load_complete\",{isNavigationDebugSupported:r,...n})});function T(e,t){return parseFloat(e.toFixed(t))}(()=>{if(typeof performance.memory>\"u\"||typeof performance.memory.usedJSHeapSize>\"u\"||typeof performance.memory.totalJSHeapSize>\"u\"||typeof performance.memory.jsHeapSizeLimit>\"u\")return;function e(t){window.__appsInToss.debugLogger.log(t,{usedJSHeapSize:T(performance.memory.usedJSHeapSize/1024,2),totalJSHeapSize:T(performance.memory.totalJSHeapSize/1024,2),jsHeapSizeLimit:T(performance.memory.jsHeapSizeLimit/1024,2)})}e(\"memory_usage_first_0s\"),setTimeout(()=>e(\"memory_usage_first_1s\"),1e3),setTimeout(()=>e(\"memory_usage_first_10s\"),1e4),setTimeout(()=>e(\"memory_usage_first_30s\"),3e4),setTimeout(()=>e(\"memory_usage_first_60s\"),6e4),setInterval(()=>e(\"memory_usage_every_180s\"),18e4)})();(()=>{let e=window.__appsInToss.debugLogger,t=performance.timeOrigin;if(typeof t>\"u\"||typeof PerformanceObserver>\"u\")return;new PerformanceObserver(o=>{o.getEntries().forEach(a=>{a.name===\"first-paint\"?e.log(\"first_paint\",{fpStartAtMs:t+a.startTime}):a.name===\"first-contentful-paint\"&&e.log(\"first_contentful_paint\",{fcpStartAtMs:t+a.startTime})})}).observe({type:\"paint\"}),new PerformanceObserver(o=>{o.getEntries().forEach(a=>{e.log(\"largest_contentful_paint\",{lcpStartAtMs:t+a.startTime,lcpRenderSize:a.size})})}).observe({type:\"largest-contentful-paint\"})})();(()=>{if(window.__appsInToss.webViewType!==\"game\")return;function e(t){let r=t.getContext(\"webgl2\")??t.getContext(\"webgl\");if(r==null)return;let n=r.getExtension(\"WEBGL_debug_renderer_info\"),o=r.getParameter(r.MAX_VIEWPORT_DIMS),s={webGLRenderer:r.getParameter(r.RENDERER),webGLVendor:r.getParameter(r.VENDOR),webGLVersion:r.getParameter(r.VERSION),webGLShadingLanguageVersion:r.getParameter(r.SHADING_LANGUAGE_VERSION),webGLMaxTextureSize:r.getParameter(r.MAX_TEXTURE_SIZE),webGLMaxViewportWidth:o[0],webGLMaxViewportHeight:o[1],webGLMaxRenderbufferSize:r.getParameter(r.MAX_RENDERBUFFER_SIZE)},a=n?{webGLUnmaskedVendor:r.getParameter(n.UNMASKED_VENDOR_WEBGL),webGLUnmaskedRenderer:r.getParameter(n.UNMASKED_RENDERER_WEBGL)}:{};window.__appsInToss.debugLogger.log(\"unity_webgl_info\",{...s,...a})}window.addEventListener(\"load\",()=>{let t=document.querySelector(\"#unity-canvas\");if(t!=null){e(t);return}new MutationObserver((n,o)=>{for(let s of n)s.type===\"childList\"&&s.addedNodes.forEach(a=>{if(a instanceof HTMLCanvasElement&&a.getAttribute(\"id\")===\"unity-canvas\"&&(e(a),o.disconnect()),a instanceof HTMLElement){let i=a.querySelector(\"#unity-canvas\");i!=null&&(e(i),o.disconnect())}})}).observe(document.body,{childList:!0,subtree:!0})})})();(()=>{if(window.__appsInToss.webViewType!==\"game\")return;let e=window.__appsInToss.debugLogger,t=window.__appsInToss.eventEmitter;t.on(\"fetchRequest\",({request:r})=>{L.test(r.url)&&e.log(\"game_resource_download_start\",{gameResourceRequestURL:r.url})}),t.on(\"fetchResponse\",async({request:r,requestAt:n,response:o})=>{if(!L.test(r.url))return;let s=T((await o.clone().blob()).size/1024,2),a=Date.now();e.log(\"game_resource_download_end\",{gameResourceRequestURL:r.url,gameResourceRequestAtMs:n,gameResourceResponseAtMs:a,gameResourceResponseSize:s,gameResourceResponseStatus:o.__revalidateResponse?.status??o.status,gameResourceDownloadDurationMs:a-n})})})();})();\n";
235855
235855
  0 && (module.exports = {
235856
235856
  afterDocumentLoad: afterDocumentLoad,
235857
235857
  beforeDocumentLoad: beforeDocumentLoad
@@ -44941,7 +44941,7 @@ var global=typeof globalThis!=='undefined'?globalThis:typeof global!=='undefined
44941
44941
  "../user-scripts/dist/index.mjs"() {
44942
44942
  "use strict";
44943
44943
  e60 = '"use strict";(()=>{var e=document.createElement("style");e.textContent=`\n*:not(input):not(textarea) {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n -webkit-touch-callout: none;\n}\n`;document.head.appendChild(e);})();\n';
44944
- t55 = '"use strict";(()=>{var Y=class{get _window(){return typeof window<"u"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error("ReactNativeWebView is not available in browser environment");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error("__GRANITE_NATIVE_EMITTER is not available");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},g=new Y,M=()=>Math.random().toString(36).substring(2,15),D=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function d(e){return(...t)=>{let r=M(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(g.on(`${e}/resolve/${r}`,c=>{o(),s(c)})),n.push(g.on(`${e}/reject/${r}`,c=>{o(),a(D(c))})),g.postMessage({type:"method",functionName:e,eventId:r,args:t})})}}function I(e){return t=>{let r=M(),n=[g.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),g.on(`${e}/onError/${r}`,o=>{t.onError(D(o))})];return g.postMessage({type:"addEventListener",functionName:e,eventId:r,args:t.options}),()=>{g.postMessage({type:"removeEventListener",functionName:e,eventId:r}),n.forEach(o=>o())}}}function m(e){return()=>g.getConstant(e)}var Q=function(){return{emit:function(t,r){for(var n=this.events[t]||[],o=0,s=n.length;o<s;o++)n[o](r)},events:{},on:function(t,r){var n=this,o,s;return((o=this.events)[s=t]||(o[s]=[])).push(r),function(){var a;n.events[t]=(a=n.events[t])===null||a===void 0?void 0:a.filter(function(c){return r!==c})}}}};typeof window<"u"&&(window.__GRANITE_NATIVE_EMITTER=Q());var Re=d("closeView"),Me=d("generateHapticFeedback"),De=d("share"),Ne=d("setSecureScreen"),Fe=d("setScreenAwakeMode"),Oe=d("getNetworkStatus"),Be=d("setIosSwipeGestureEnabled"),Ge=d("openURL"),Ve=d("openPermissionDialog"),ke=d("getPermission"),He=d("requestPermission"),ze=m("setClipboardText"),Ue=m("getClipboardText"),We=m("fetchContacts"),qe=m("fetchAlbumPhotos"),$e=m("getCurrentLocation"),je=m("openCamera"),Ke=d("appLogin"),Je=d("eventLog"),Xe=d("getTossShareLink"),Ze=d("setDeviceOrientation"),Ye=d("checkoutPayment"),Qe=d("saveBase64Data"),et=d("appsInTossSignTossCert"),tt=d("getGameCenterGameProfile"),rt=d("openGameCenterLeaderboard"),nt=d("submitGameCenterLeaderBoardScore"),ot=d("getUserKeyForGame"),st=d("getIsTossLoginIntegratedService"),at=d("grantPromotionRewardForGame"),it=d("getServerTime"),ct=m("getLocale"),dt=m("getSchemeUri"),ut=m("getPlatformOS"),pt=m("getOperationalEnvironment"),mt=m("getTossAppVersion"),lt=m("getDeviceId"),gt=I("contactsViral"),vt=I("startUpdateLocation"),ft=I("onVisibilityChangedByTransparentServiceWeb");var E=class extends Error{constructor({methodName:e,message:t}){super(),this.name=`${e} permission error`,this.message=t}},N=class extends E{constructor(){super({methodName:"fetchAlbumPhotos",message:"\\uC0AC\\uC9C4\\uCCA9 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},F=class extends E{constructor(){super({methodName:"fetchContacts",message:"\\uC5F0\\uB77D\\uCC98 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},O=class extends E{constructor(){super({methodName:"openCamera",message:"\\uCE74\\uBA54\\uB77C \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}};var x=class extends E{constructor(){super({methodName:"getCurrentLocation",message:"\\uC704\\uCE58 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},B=x,G=class extends E{constructor(){super({methodName:"getClipboardText",message:"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC77D\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},V=class extends E{constructor(){super({methodName:"setClipboardText",message:"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC4F0\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}};var ee=class{get _window(){return typeof window<"u"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error("ReactNativeWebView is not available in browser environment");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error("__GRANITE_NATIVE_EMITTER is not available");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},v=new ee,K=()=>Math.random().toString(36).substring(2,15),J=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function i(e){return(...t)=>{let r=K(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(v.on(`${e}/resolve/${r}`,c=>{o(),s(c)})),n.push(v.on(`${e}/reject/${r}`,c=>{o(),a(J(c))})),v.postMessage({type:"method",functionName:e,eventId:r,args:t})})}}function w(e){return t=>{let r=K(),n=[v.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),v.on(`${e}/onError/${r}`,o=>{t.onError(J(o))})];return v.postMessage({type:"addEventListener",functionName:e,eventId:r,args:t.options}),()=>{v.postMessage({type:"removeEventListener",functionName:e,eventId:r}),n.forEach(o=>o())}}}function u(e){return()=>v.getConstant(e)}var Tt={getItem:i("getStorageItem"),setItem:i("setStorageItem"),removeItem:i("removeStorageItem"),clearItems:i("clearItems")},te=/^[v^~<>=]*?(\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+))?(?:-([\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*))?(?:\\+[\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*)?)?)?$/i,k=e=>["*","x","X"].includes(e),H=e=>{let t=parseInt(e,10);return isNaN(t)?e:t},re=(e,t)=>typeof e==typeof t?[e,t]:[String(e),String(t)],ne=(e,t)=>{if(k(e)||k(t))return 0;let[r,n]=re(H(e),H(t));return r>n?1:r<n?-1:0},z=e=>{if(typeof e!="string")throw new TypeError("Invalid argument: expected a string");let t=e.match(te);if(!t)throw new Error(`Invalid semver: \'${e}\'`);let[,r,n,o,s,a]=t;return[r,n,o,s,a]},U=(e,t)=>{let r=Math.max(e.length,t.length);for(let n=0;n<r;n++){let o=e[n]??"0",s=t[n]??"0",a=ne(o,s);if(a!==0)return a}return 0},oe=(e,t)=>{let r=z(e),n=z(t),o=r.pop(),s=n.pop(),a=U(r,n);return a!==0?a:o&&s?U(o.split("."),s.split(".")):o?-1:s?1:0};function W(e){if(u("getOperationalEnvironment")()==="sandbox")return!0;let r=u("getTossAppVersion")(),o=u("getPlatformOS")()==="ios"?e.ios:e.android;return o===void 0?!1:o==="always"?!0:o==="never"?!1:oe(r,o)>=0}function se(e){return i("processProductGrant")(e)}var yt={createOneTimePurchaseOrder:e=>{let t=W({android:"5.219.0",ios:"5.219.0"}),r=()=>{};if(!t)return r;let n=W({android:"5.231.1",ios:"5.230.0"}),{options:o,onEvent:s,onError:a}=e,c=o.sku??o.productId;return n?w("requestOneTimePurchase")({options:{sku:c},onEvent:async p=>{if(p.type==="purchased"){let l=await o.processProductGrant({orderId:p.data.orderId});await se({orderId:p.data.orderId,isProductGranted:l}).catch(a)}else s(p)},onError:p=>{a(p)}}):(i("iapCreateOneTimePurchaseOrder")({productId:c}).then(l=>{Promise.resolve(o.processProductGrant({orderId:l.orderId})).then(()=>{s({type:"success",data:l})}).catch(h=>{a(h)})}).catch(l=>{a(l)}),r)},getProductItemList:i("iapGetProductItemList"),getPendingOrders:i("getPendingOrders"),getCompletedOrRefundedOrders:i("getCompletedOrRefundedOrders"),completeProductGrant:i("completeProductGrant")},Lt=u("getSafeAreaInsets");var Pt=u("getSafeAreaInsets");var xt={loadAppsInTossAdMob:Object.assign(w("loadAppsInTossAdMob"),{isSupported:u("loadAppsInTossAdMob_isSupported")}),showAppsInTossAdMob:Object.assign(w("showAppsInTossAdMob"),{isSupported:u("showAppsInTossAdMob_isSupported")}),isAppsInTossAdMobLoaded:Object.assign(i("isAppsInTossAdMobLoaded"),{isSupported:u("isAppsInTossAdMobLoaded_isSupported")})};var Rt={getDeploymentId:u("getDeploymentId")},Mt=u("deploymentId"),Dt=u("brandDisplayName"),Nt=u("brandIcon"),Ft=u("brandPrimaryColor");var Ot={addAccessoryButton:i("addAccessoryButton"),removeAccessoryButton:i("removeAccessoryButton")},ae=i("requestPermission"),ie=i("getPermission"),ce=i("openPermissionDialog");function S({permission:e,handler:t,error:r}){let n=async(...o)=>{if(await ae(e)==="denied")throw new r;return t(...o)};return n.getPermission=()=>ie(e),n.openPermissionDialog=()=>ce(e),n}var Gt=S({handler:e=>i("fetchAlbumPhotos")(e),permission:{name:"photos",access:"read"},error:N}),kt=S({handler:e=>i("fetchContacts")(e),permission:{name:"contacts",access:"read"},error:F}),zt=S({handler:e=>i("getCurrentLocation")(e),permission:{name:"geolocation",access:"access"},error:x}),Wt=S({handler:e=>i("openCamera")(e),permission:{name:"camera",access:"access"},error:O}),$t=S({handler:e=>i("setClipboardText")(e),permission:{name:"clipboard",access:"write"},error:V}),Kt=S({handler:()=>i("getClipboardText")(),permission:{name:"clipboard",access:"read"},error:G}),de=i("getPermission"),ue=i("openPermissionDialog"),X=e=>w("updateLocationEvent")({...e,onError:t=>{let r=new B;return t instanceof Error&&t.name===r.name?e.onError(r):e.onError(t)}});X.getPermission=()=>de({name:"geolocation",access:"access"});X.openPermissionDialog=()=>ue({name:"geolocation",access:"access"});var Xt=Object.assign(w("loadFullScreenAd"),{isSupported:u("loadFullScreenAd_isSupported")}),Zt=Object.assign(w("showFullScreenAd"),{isSupported:u("showFullScreenAd_isSupported")}),pe=i("openURL");function me(e){let t=le(e);return pe(t)}function le(e){return["http://","https://"].some(r=>e.startsWith(r))?ge(e):e}function ge(e){return`supertoss://web?url=${encodeURIComponent(e)}&external=true`}var q="https://static.toss.im/ads/sdk/toss-ads-space-kit-1.3.0.js",$=15e3,T=null;function A(){if(!(typeof window>"u"))return window.TossAdsSpaceKit}function ve(){if(typeof window>"u"||typeof document>"u")return Promise.reject(new Error("Ads SDK can only be loaded in a browser environment."));let e=A();if(e)return Promise.resolve(e);if(T)return T;let t=new Promise((r,n)=>{let o=document.createElement("script"),s=()=>{o.removeEventListener("load",a),o.removeEventListener("error",c),window.clearTimeout(f),T=null},a=()=>{let p=A();if(p){s(),r(p);return}s(),n(new Error("Ads SDK script loaded but window.TossAdsSpaceKit was not exposed."))},c=()=>{s(),n(new Error(`Failed to load Ads SDK script from ${q}.`))},f=window.setTimeout(()=>{s(),n(new Error(`Loading Ads SDK timed out after ${$}ms.`))},$);o.addEventListener("load",a),o.addEventListener("error",c),o.async=!0,o.src=q,document.head.appendChild(o)});return T=t,t}var b=Object.assign(w("fetchTossAd"),{isSupported:u("fetchTossAd_isSupported")}),fe=i("tossAdEventLog"),we=new Set(["1","2"]);function he(e){return new Promise((t,r)=>{if(!b.isSupported()){r(new Error("fetchTossAd is not supported in this environment."));return}return b({options:e,onEvent:t,onError:r})})}function j(e){let t=Array.isArray(e.ads)?e.ads.filter(r=>we.has(String(r.styleId))):[];return{requestId:e.requestId??"",status:e.status??"OK",ads:t,ext:e.ext}}function Ee(e){return be(e)?e.resultType!=="SUCCESS"?e:e.success?{...e,success:j(e.success)}:{resultType:"FAIL",error:{reason:"fetchTossAd returned SUCCESS without payload"}}:Se(e)?{resultType:"SUCCESS",success:j(e)}:{resultType:"FAIL",error:{reason:"Invalid response from fetchTossAd"}}}function be(e){return!!(e&&typeof e=="object"&&"resultType"in e)}function Se(e){return!!(e&&typeof e=="object"&&"ads"in e)}function _e(){return async(e,t)=>{try{let r=await he({adGroupId:t.spaceUnitId,sdkId:"108",availableStyleIds:["1","2"]});return Ee(r)}catch(r){return{resultType:"FAIL",error:{reason:r instanceof Error?r.message:"Unknown fetchTossAd error"}}}}}var R=null;function Ae(e){let{callbacks:t}=e;if(window.TossAdsSpaceKit!=null&&window.TossAdsSpaceKit.isInitialized()){t?.onInitializationFailed?.(new Error("[toss-ad] Already initialized."));return}R!=null&&t?.onInitializationFailed?.(new Error("[toss-ad] initialization already in progress."));let r=()=>t?.onInitialized?.(),n=o=>{let s=o instanceof Error?o:new Error(String(o));t?.onInitializationFailed?.(s)};R=ve().then(o=>{let a={environment:"live",customAdFetcher:_e(),opener:me};o.init(a),r()}).catch(o=>{R=null,n(o)})}function Ce(e,t,r={}){let{callbacks:n}=r,o=s=>{let a=s instanceof Error?s:new Error(String(s));n?.onAdFailedToRender?.({slotId:"",adGroupId:e,adMetadata:{},error:{code:0,message:a.message}})};try{let s=e,a=A();if(!a)throw new Error("[toss-ad] Call initialize() before attaching an ad.");if(!a.banner)throw new Error("[toss-ad] Loaded TossAdsSpaceKit does not support banner ads.");let c=typeof t=="string"?document.querySelector(t):t;if(!c)throw new Error(`[toss-ad] Failed to find target element: ${t}`);let f={spaceId:s,autoLoad:!0,theme:r.theme,padding:r.padding,callbacks:ye(e,r.callbacks)};a.banner.createSlot(c,f)}catch(s){o(s)}}function Ie(e){let t=A();t?.banner&&t.banner.destroy(e)}function Te(){let e=A();e?.banner&&e.banner.destroyAll()}function ye(e,t){if(!t)return;let r=n=>{let o={...n??{}};return o.adGroupId=o.adGroupId??o.spaceId??e,delete o.spaceId,o};return{onAdRendered:n=>t.onAdRendered?.(r(n)),onAdViewable:n=>t.onAdViewable?.(r(n)),onAdClicked:n=>t.onAdClicked?.(r(n)),onAdImpression:n=>{fe({log_name:"display_ads_all::impression__1px_banner",log_type:"event",params:{event_type:"impression",schema_id:1812034,request_id:n?.adMetadata?.requestId??""}}),t.onAdImpression?.(r(n))},onAdFailedToRender:n=>t.onAdFailedToRender?.({...r(n),error:n?.error??{code:0,message:"UNKNOWN"}}),onNoFill:n=>t.onNoFill?.(r(n))}}var Yt={initialize:Object.assign(Ae,{isSupported:b.isSupported}),attach:Object.assign(Ce,{isSupported:b.isSupported}),destroy:Object.assign(Ie,{isSupported:b.isSupported}),destroyAll:Object.assign(Te,{isSupported:b.isSupported})},Qt=Object.assign(i("getServerTime"),{isSupported:u("getServerTime_isSupported")});var y=class{_log=i("debugLog");log(t,r){try{this._log({log_name:`apps_in_toss_webview_${t}`,log_type:"debug",params:{...r,...this.getCommonParams()}})}catch{}}getCommonParams(){return{...this.getLocationInfo(),...this.getNavigatorInfo(),...this.getScreenInfo(),appName:window.__appsInToss.appName,deploymentId:window.__appsInToss.deploymentId,sessionId:window.__appsInToss.sessionId,isGame:window.__appsInToss.webViewType==="game",timestampMs:Date.now()}}getLocationInfo(){return{url:window.location.href,urlOrigin:window.location.origin,urlHost:window.location.hostname,urlPath:window.location.pathname,urlSearch:window.location.search}}getNavigatorInfo(){return{userAgent:navigator.userAgent,platform:navigator.platform,language:navigator.language,cookieEnabled:navigator.cookieEnabled,hardwareConcurrency:navigator.hardwareConcurrency,deviceMemory:navigator.deviceMemory?navigator.deviceMemory*1024*1024:void 0,maxTouchPoints:navigator.maxTouchPoints}}getScreenInfo(){return{screenWidth:screen.width,screenHeight:screen.height,availableScreenWidth:screen.availWidth,availableScreenHeight:screen.availHeight,devicePixelRatio:window.devicePixelRatio,colorDepth:screen.colorDepth,pixelDepth:screen.pixelDepth,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight}}};var L=class{callbacks={};on(t,r){typeof this.callbacks[t]>"u"&&(this.callbacks[t]=[]),this.callbacks[t].push(r)}emit(t,r){this.callbacks[t]?.forEach(n=>n(r))}};window.__appsInToss={appName:u("getAppName")(),deploymentId:u("getDeploymentId")(),webViewType:u("getWebViewType")(),sessionId:Math.random().toString(36).substring(2),eventEmitter:new L,debugLogger:new y};var C=/\\.(data|wasm|framework\\.js)(?:\\.gz|\\.br|\\.unityweb)?$/;function P(e){window.fetch=new Proxy(window.fetch,{apply:e})}(()=>{if(window.__appsInToss.webViewType!=="game"||typeof caches>"u")return;let e="@apps-in-toss/caches/",t=`${e}${window.__appsInToss.deploymentId}`;window.addEventListener("load",async()=>{let r=await caches.keys();for(let n of r)n.startsWith(e)&&n!==t&&await caches.delete(n)}),P(async(r,n,o)=>{let s=new Request(o[0],o[1]);if(!C.test(s.url))return await r.call(n,s);let a=await caches.open(t),c=await a.match(s);if(c){let p=c.headers.get("ETag"),l=c.headers.get("Last-Modified");p&&s.headers.set("If-None-Match",p),l&&s.headers.set("If-Modified-Since",l);let h=await r.call(n,s);return h.status===304?(c.__revalidateResponse=h,c):(a.put(s,h.clone()),h)}let f=await r.call(n,s);return a.put(s,f.clone()),f})})();P(async(e,t,r)=>{let n=new Request(r[0],r[1]),o=Date.now();window.__appsInToss.eventEmitter.emit("fetchRequest",{request:n});let s=await e.call(t,n);return window.__appsInToss.eventEmitter.emit("fetchResponse",{request:n,response:s,requestAt:o}),s});var Z=window.__appsInToss.debugLogger;Z.log("load_start",{});window.addEventListener("load",()=>{let e=performance.timeOrigin,t=performance.getEntriesByType?.("navigation")[0]??null,r=typeof e<"u"&&t!==null,n=r?{navigationStartAtMs:e+t.startTime,navigationRedirectStartAtMs:e+t.redirectStart,navigationRedirectEndAtMs:e+t.redirectEnd,navigationRedirectCount:t.redirectCount,navigationServiceWorkerStartAtMs:e+t.workerStart,navigationFetchStartAtMs:e+t.fetchStart,navigationDomainLookupStartAtMs:e+t.domainLookupStart,navigationDomainLookupEndAtMs:e+t.domainLookupEnd,navigationConnectStartAtMs:e+t.connectStart,navigationSecureConnectStartAtMs:e+t.secureConnectionStart,navigationConnectEndAtMs:e+t.connectEnd,navigationRequestStartAtMs:e+t.requestStart,navigationResponseStartAtMs:e+t.responseStart,navigationResponseEndAtMs:e+t.responseEnd,navigationDomInteractiveAtMs:e+t.domInteractive,navigationDomContentLoadedEventStartAtMs:e+t.domContentLoadedEventStart,navigationDomContentLoadedEventEndAtMs:e+t.domContentLoadedEventEnd,navigationDomCompleteAtMs:e+t.domComplete}:{};Z.log("load_complete",{isNavigationDebugSupported:r,...n})});function _(e,t){return parseFloat(e.toFixed(t))}(()=>{if(typeof performance.memory>"u"||typeof performance.memory.usedJSHeapSize>"u"||typeof performance.memory.totalJSHeapSize>"u"||typeof performance.memory.jsHeapSizeLimit>"u")return;function e(t){window.__appsInToss.debugLogger.log(t,{usedJSHeapSize:_(performance.memory.usedJSHeapSize/1024,2),totalJSHeapSize:_(performance.memory.totalJSHeapSize/1024,2),jsHeapSizeLimit:_(performance.memory.jsHeapSizeLimit/1024,2)})}e("memory_usage_first_0s"),setTimeout(()=>e("memory_usage_first_1s"),1e3),setTimeout(()=>e("memory_usage_first_10s"),1e4),setTimeout(()=>e("memory_usage_first_30s"),3e4),setTimeout(()=>e("memory_usage_first_60s"),6e4),setInterval(()=>e("memory_usage_every_180s"),18e4)})();(()=>{let e=window.__appsInToss.debugLogger,t=performance.timeOrigin;if(typeof t>"u"||typeof PerformanceObserver>"u")return;new PerformanceObserver(o=>{o.getEntries().forEach(a=>{a.name==="first-paint"?e.log("first_paint",{fpStartAtMs:t+a.startTime}):a.name==="first-contentful-paint"&&e.log("first_contentful_paint",{fcpStartAtMs:t+a.startTime})})}).observe({type:"paint"}),new PerformanceObserver(o=>{o.getEntries().forEach(a=>{e.log("largest_contentful_paint",{lcpStartAtMs:t+a.startTime,lcpRenderSize:a.size})})}).observe({type:"largest-contentful-paint"})})();(()=>{if(window.__appsInToss.webViewType!=="game")return;function e(t){let r=t.getContext("webgl2")??t.getContext("webgl");if(r==null)return;let n=r.getExtension("WEBGL_debug_renderer_info"),o=r.getParameter(r.MAX_VIEWPORT_DIMS),s={webGLRenderer:r.getParameter(r.RENDERER),webGLVendor:r.getParameter(r.VENDOR),webGLVersion:r.getParameter(r.VERSION),webGLShadingLanguageVersion:r.getParameter(r.SHADING_LANGUAGE_VERSION),webGLMaxTextureSize:r.getParameter(r.MAX_TEXTURE_SIZE),webGLMaxViewportWidth:o[0],webGLMaxViewportHeight:o[1],webGLMaxRenderbufferSize:r.getParameter(r.MAX_RENDERBUFFER_SIZE)},a=n?{webGLUnmaskedVendor:r.getParameter(n.UNMASKED_VENDOR_WEBGL),webGLUnmaskedRenderer:r.getParameter(n.UNMASKED_RENDERER_WEBGL)}:{};window.__appsInToss.debugLogger.log("unity_webgl_info",{...s,...a})}window.addEventListener("load",()=>{let t=document.querySelector("#unity-canvas");if(t!=null){e(t);return}new MutationObserver((n,o)=>{for(let s of n)s.type==="childList"&&s.addedNodes.forEach(a=>{if(a instanceof HTMLCanvasElement&&a.getAttribute("id")==="unity-canvas"&&(e(a),o.disconnect()),a instanceof HTMLElement){let c=a.querySelector("#unity-canvas");c!=null&&(e(c),o.disconnect())}})}).observe(document.body,{childList:!0,subtree:!0})})})();(()=>{if(window.__appsInToss.webViewType!=="game")return;let e=window.__appsInToss.debugLogger,t=window.__appsInToss.eventEmitter;t.on("fetchRequest",({request:r})=>{C.test(r.url)&&e.log("game_resource_download_start",{gameResourceRequestURL:r.url})}),t.on("fetchResponse",async({request:r,requestAt:n,response:o})=>{if(!C.test(r.url))return;let s=_((await o.clone().blob()).size/1024,2),a=Date.now();e.log("game_resource_download_end",{gameResourceRequestURL:r.url,gameResourceRequestAtMs:n,gameResourceResponseAtMs:a,gameResourceResponseSize:s,gameResourceResponseStatus:o.__revalidateResponse?.status??o.status,gameResourceDownloadDurationMs:a-n})})})();})();\n';
44944
+ t55 = '"use strict";(()=>{var ie=class{get _window(){return typeof window<"u"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error("ReactNativeWebView is not available in browser environment");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error("__GRANITE_NATIVE_EMITTER is not available");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},h=new ie,O=()=>Math.random().toString(36).substring(2,15),k=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function d(e){return(...t)=>{let r=O(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(h.on(`${e}/resolve/${r}`,i=>{o(),s(i)})),n.push(h.on(`${e}/reject/${r}`,i=>{o(),a(k(i))})),h.postMessage({type:"method",functionName:e,eventId:r,args:t})})}}function x(e){return t=>{let r=O(),n=[h.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),h.on(`${e}/onError/${r}`,o=>{t.onError(k(o))})];return h.postMessage({type:"addEventListener",functionName:e,eventId:r,args:t.options}),()=>{h.postMessage({type:"removeEventListener",functionName:e,eventId:r}),n.forEach(o=>o())}}}function l(e){return()=>h.getConstant(e)}var ce=function(){return{emit:function(t,r){for(var n=this.events[t]||[],o=0,s=n.length;o<s;o++)n[o](r)},events:{},on:function(t,r){var n=this,o,s;return((o=this.events)[s=t]||(o[s]=[])).push(r),function(){var a;n.events[t]=(a=n.events[t])===null||a===void 0?void 0:a.filter(function(i){return r!==i})}}}};typeof window<"u"&&(window.__GRANITE_NATIVE_EMITTER=ce());var qe=d("closeView"),je=d("generateHapticFeedback"),Ke=d("share"),Je=d("setSecureScreen"),Xe=d("setScreenAwakeMode"),Ye=d("getNetworkStatus"),Ze=d("setIosSwipeGestureEnabled"),Qe=d("openURL"),et=d("openPermissionDialog"),tt=d("getPermission"),rt=d("requestPermission"),nt=l("setClipboardText"),ot=l("getClipboardText"),st=l("fetchContacts"),at=l("fetchAlbumPhotos"),it=l("getCurrentLocation"),ct=l("openCamera"),dt=d("appLogin"),ut=d("eventLog"),pt=d("getTossShareLink"),mt=d("setDeviceOrientation"),lt=d("checkoutPayment"),gt=d("saveBase64Data"),ft=d("appsInTossSignTossCert"),vt=d("getGameCenterGameProfile"),ht=d("openGameCenterLeaderboard"),wt=d("submitGameCenterLeaderBoardScore"),Et=d("getUserKeyForGame"),bt=d("getIsTossLoginIntegratedService"),At=d("grantPromotionRewardForGame"),St=d("getServerTime"),_t=l("getLocale"),Ct=l("getSchemeUri"),Tt=l("getPlatformOS"),yt=l("getOperationalEnvironment"),It=l("getTossAppVersion"),Lt=l("getDeviceId"),xt=x("contactsViral"),Pt=x("startUpdateLocation"),Rt=x("onVisibilityChangedByTransparentServiceWeb");var _=class extends Error{constructor({methodName:e,message:t}){super(),this.name=`${e} permission error`,this.message=t}},B=class extends _{constructor(){super({methodName:"fetchAlbumPhotos",message:"\\uC0AC\\uC9C4\\uCCA9 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},G=class extends _{constructor(){super({methodName:"fetchContacts",message:"\\uC5F0\\uB77D\\uCC98 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},V=class extends _{constructor(){super({methodName:"openCamera",message:"\\uCE74\\uBA54\\uB77C \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}};var F=class extends _{constructor(){super({methodName:"getCurrentLocation",message:"\\uC704\\uCE58 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},H=F,U=class extends _{constructor(){super({methodName:"getClipboardText",message:"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC77D\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},z=class extends _{constructor(){super({methodName:"setClipboardText",message:"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC4F0\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}};var de=class{get _window(){return typeof window<"u"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error("ReactNativeWebView is not available in browser environment");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error("__GRANITE_NATIVE_EMITTER is not available");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},w=new de,Q=()=>Math.random().toString(36).substring(2,15),ee=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function c(e){return(...t)=>{let r=Q(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(w.on(`${e}/resolve/${r}`,i=>{o(),s(i)})),n.push(w.on(`${e}/reject/${r}`,i=>{o(),a(ee(i))})),w.postMessage({type:"method",functionName:e,eventId:r,args:t})})}}function A(e){return t=>{let r=Q(),n=[w.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),w.on(`${e}/onError/${r}`,o=>{t.onError(ee(o))})];return w.postMessage({type:"addEventListener",functionName:e,eventId:r,args:t.options}),()=>{w.postMessage({type:"removeEventListener",functionName:e,eventId:r}),n.forEach(o=>o())}}}function u(e){return()=>w.getConstant(e)}var Ht={getItem:c("getStorageItem"),setItem:c("setStorageItem"),removeItem:c("removeStorageItem"),clearItems:c("clearItems")},ue=/^[v^~<>=]*?(\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+))?(?:-([\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*))?(?:\\+[\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*)?)?)?$/i,$=e=>["*","x","X"].includes(e),W=e=>{let t=parseInt(e,10);return isNaN(t)?e:t},pe=(e,t)=>typeof e==typeof t?[e,t]:[String(e),String(t)],me=(e,t)=>{if($(e)||$(t))return 0;let[r,n]=pe(W(e),W(t));return r>n?1:r<n?-1:0},q=e=>{if(typeof e!="string")throw new TypeError("Invalid argument: expected a string");let t=e.match(ue);if(!t)throw new Error(`Invalid semver: \'${e}\'`);let[,r,n,o,s,a]=t;return[r,n,o,s,a]},j=(e,t)=>{let r=Math.max(e.length,t.length);for(let n=0;n<r;n++){let o=e[n]??"0",s=t[n]??"0",a=me(o,s);if(a!==0)return a}return 0},le=(e,t)=>{let r=q(e),n=q(t),o=r.pop(),s=n.pop(),a=j(r,n);return a!==0?a:o&&s?j(o.split("."),s.split(".")):o?-1:s?1:0};function K(e){if(u("getOperationalEnvironment")()==="sandbox")return!0;let r=u("getTossAppVersion")(),o=u("getPlatformOS")()==="ios"?e.ios:e.android;return o===void 0?!1:o==="always"?!0:o==="never"?!1:le(r,o)>=0}function ge(e){return c("processProductGrant")(e)}var Ut={createOneTimePurchaseOrder:e=>{let t=K({android:"5.219.0",ios:"5.219.0"}),r=()=>{};if(!t)return r;let n=K({android:"5.231.1",ios:"5.230.0"}),{options:o,onEvent:s,onError:a}=e,i=o.sku??o.productId;return n?A("requestOneTimePurchase")({options:{sku:i},onEvent:async m=>{if(m.type==="purchased"){let g=await o.processProductGrant({orderId:m.data.orderId});await ge({orderId:m.data.orderId,isProductGranted:g}).catch(a)}else s(m)},onError:m=>{a(m)}}):(c("iapCreateOneTimePurchaseOrder")({productId:i}).then(g=>{Promise.resolve(o.processProductGrant({orderId:g.orderId})).then(()=>{s({type:"success",data:g})}).catch(v=>{a(v)})}).catch(g=>{a(g)}),r)},getProductItemList:c("iapGetProductItemList"),getPendingOrders:c("getPendingOrders"),getCompletedOrRefundedOrders:c("getCompletedOrRefundedOrders"),completeProductGrant:c("completeProductGrant")},zt=u("getSafeAreaInsets");var $t=u("getSafeAreaInsets");var Wt={loadAppsInTossAdMob:Object.assign(A("loadAppsInTossAdMob"),{isSupported:u("loadAppsInTossAdMob_isSupported")}),showAppsInTossAdMob:Object.assign(A("showAppsInTossAdMob"),{isSupported:u("showAppsInTossAdMob_isSupported")}),isAppsInTossAdMobLoaded:Object.assign(c("isAppsInTossAdMobLoaded"),{isSupported:u("isAppsInTossAdMobLoaded_isSupported")})};var qt={getDeploymentId:u("getDeploymentId")},jt=u("deploymentId"),Kt=u("brandDisplayName"),Jt=u("brandIcon"),Xt=u("brandPrimaryColor");var Yt={addAccessoryButton:c("addAccessoryButton"),removeAccessoryButton:c("removeAccessoryButton")},fe=c("requestPermission"),ve=c("getPermission"),he=c("openPermissionDialog");function C({permission:e,handler:t,error:r}){let n=async(...o)=>{if(await fe(e)==="denied")throw new r;return t(...o)};return n.getPermission=()=>ve(e),n.openPermissionDialog=()=>he(e),n}var Qt=C({handler:e=>c("fetchAlbumPhotos")(e),permission:{name:"photos",access:"read"},error:B}),tr=C({handler:e=>c("fetchContacts")(e),permission:{name:"contacts",access:"read"},error:G}),nr=C({handler:e=>c("getCurrentLocation")(e),permission:{name:"geolocation",access:"access"},error:F}),sr=C({handler:e=>c("openCamera")(e),permission:{name:"camera",access:"access"},error:V}),ir=C({handler:e=>c("setClipboardText")(e),permission:{name:"clipboard",access:"write"},error:z}),dr=C({handler:()=>c("getClipboardText")(),permission:{name:"clipboard",access:"read"},error:U}),we=c("getPermission"),Ee=c("openPermissionDialog"),te=e=>A("updateLocationEvent")({...e,onError:t=>{let r=new H;return t instanceof Error&&t.name===r.name?e.onError(r):e.onError(t)}});te.getPermission=()=>we({name:"geolocation",access:"access"});te.openPermissionDialog=()=>Ee({name:"geolocation",access:"access"});var pr=Object.assign(A("loadFullScreenAd"),{isSupported:u("loadFullScreenAd_isSupported")}),mr=Object.assign(A("showFullScreenAd"),{isSupported:u("showFullScreenAd_isSupported")}),be=c("openURL");function Ae(e){let t=Se(e);return be(t)}function Se(e){return["http://","https://"].some(r=>e.startsWith(r))?_e(e):e}function _e(e){return`supertoss://web?url=${encodeURIComponent(e)}&external=true`}var J="https://static.toss.im/ads/sdk/toss-ads-space-kit-1.3.0.js",X=15e3,P=null;function S(){if(!(typeof window>"u"))return window.TossAdsSpaceKit}function Ce(){if(typeof window>"u"||typeof document>"u")return Promise.reject(new Error("Ads SDK can only be loaded in a browser environment."));let e=S();if(e)return Promise.resolve(e);if(P)return P;let t=new Promise((r,n)=>{let o=document.createElement("script"),s=()=>{o.removeEventListener("load",a),o.removeEventListener("error",i),window.clearTimeout(p),P=null},a=()=>{let m=S();if(m){s(),r(m);return}s(),n(new Error("Ads SDK script loaded but window.TossAdsSpaceKit was not exposed."))},i=()=>{s(),n(new Error(`Failed to load Ads SDK script from ${J}.`))},p=window.setTimeout(()=>{s(),n(new Error(`Loading Ads SDK timed out after ${X}ms.`))},X);o.addEventListener("load",a),o.addEventListener("error",i),o.async=!0,o.src=J,document.head.appendChild(o)});return P=t,t}var b=Object.assign(A("fetchTossAd"),{isSupported:u("fetchTossAd_isSupported")}),Te=c("tossAdEventLog"),ye=new Set(["1","2"]);function Ie(e){return new Promise((t,r)=>{if(!b.isSupported()){r(new Error("fetchTossAd is not supported in this environment."));return}return b({options:e,onEvent:t,onError:r})})}function Y(e){let t=Array.isArray(e.ads)?e.ads.filter(r=>ye.has(String(r.styleId))):[];return{requestId:e.requestId??"",status:e.status??"OK",ads:t,ext:e.ext}}function Le(e){return xe(e)?e.resultType!=="SUCCESS"?e:e.success?{...e,success:Y(e.success)}:{resultType:"FAIL",error:{reason:"fetchTossAd returned SUCCESS without payload"}}:Pe(e)?{resultType:"SUCCESS",success:Y(e)}:{resultType:"FAIL",error:{reason:"Invalid response from fetchTossAd"}}}function xe(e){return!!(e&&typeof e=="object"&&"resultType"in e)}function Pe(e){return!!(e&&typeof e=="object"&&"ads"in e)}function Re(){return async(e,t)=>{try{let r=await Ie({adGroupId:t.spaceUnitId,sdkId:"108",availableStyleIds:["1","2"]});return Le(r)}catch(r){return{resultType:"FAIL",error:{reason:r instanceof Error?r.message:"Unknown fetchTossAd error"}}}}}var I=null;function De(e){let{callbacks:t}=e,r=()=>t?.onInitialized?.(),n=a=>{let i=a instanceof Error?a:new Error(String(a));t?.onInitializationFailed?.(i)};if(S()?.isInitialized()){r();return}if(I!=null){I.then(r).catch(n);return}let s=Ce().then(a=>{if(a.isInitialized())return;let p={environment:"live",customAdFetcher:Re(),opener:Ae};a.init(p)});I=s,s.then(r).catch(n).finally(()=>{I===s&&(I=null)})}function Ne(e,t,r={}){let{callbacks:n}=r,o=s=>{let a=s instanceof Error?s:new Error(String(s));n?.onAdFailedToRender?.({slotId:"",adGroupId:e,adMetadata:{},error:{code:0,message:a.message}})};try{let s=e,a=S();if(!a)throw new Error("[toss-ad] Call initialize() before attaching an ad.");if(!a.banner)throw new Error("[toss-ad] Loaded TossAdsSpaceKit does not support banner ads.");let i=typeof t=="string"?document.querySelector(t):t;if(!i)throw new Error(`[toss-ad] Failed to find target element: ${t}`);let p={spaceId:s,autoLoad:!0,theme:r.theme,padding:r.padding,callbacks:re(e,r.callbacks)};a.banner.createSlot(i,p)}catch(s){o(s)}}var Me="16px 20px",Fe="20px",Oe="auto",ke="blackAndWhite",Be="expanded",f="toss-ads-attach",Z="toss-ads-attach-style";function Ge(e){let t=e.ownerDocument;if(!t||t.getElementById(Z))return;let r=t.createElement("style");r.id=Z,r.textContent=`\n .${f} { background: #ffffff; }\n .${f}.toss-ads-tone-grey { background: #f2f4f7; }\n @media (prefers-color-scheme: dark) {\n .${f} { background: #17171c; }\n .${f}.toss-ads-tone-grey { background: #101013; }\n }\n .${f}.toss-ads-theme-light { background: #ffffff; }\n .${f}.toss-ads-theme-light.toss-ads-tone-grey { background: #f2f4f7; }\n .${f}.toss-ads-theme-dark { background: #17171c; }\n .${f}.toss-ads-theme-dark.toss-ads-tone-grey { background: #101013; }\n `;let n=t.head??t.body??t.documentElement;n&&n.appendChild(r)}function Ve(e,t,r={}){let{callbacks:n,theme:o=Oe,tone:s=ke,variant:a=Be}=r,i=document.createElement("div");i.style.width="100%",i.style.height="100%",i.style.boxSizing="border-box",i.style.display="flex",i.style.flexDirection="column",i.style.justifyContent="center",i.style.overflow="hidden",a==="card"&&(i.style.padding="0 10px");let p=document.createElement("div");p.classList.add(f),s==="grey"&&p.classList.add("toss-ads-tone-grey"),o==="light"?p.classList.add("toss-ads-theme-light"):o==="dark"&&p.classList.add("toss-ads-theme-dark"),a==="card"&&(p.style.borderRadius="16px",p.style.overflow="hidden"),i.appendChild(p);let m=!1,g=null,v=E=>{let y=E instanceof Error?E:new Error(String(E));n?.onAdFailedToRender?.({slotId:"",adGroupId:e,adMetadata:{},error:{code:0,message:y.message}})},oe=re(e,n);try{let E=e,y=S();if(!y)throw new Error("[toss-ad] Call initialize() before attaching an ad.");if(!y.banner)throw new Error("[toss-ad] Loaded TossAdsSpaceKit does not support banner ads.");let M=typeof t=="string"?document.querySelector(t):t;if(!M)throw new Error(`[toss-ad] Failed to find target element: ${t}`);Ge(M),M.appendChild(i),m=!0;let se={spaceId:E,autoLoad:!0,theme:o==="auto"?void 0:o,renderPadding:ae=>ae==="1"?Me:Fe,callbacks:oe};g=y.banner.createSlot(p,se)}catch(E){m&&i.parentNode&&i.parentNode.removeChild(i),v(E)}return{destroy(){g?.destroy(),m&&i.parentNode&&i.parentNode.removeChild(i)}}}function He(e){let t=S();t?.banner&&t.banner.destroy(e)}function Ue(){let e=S();e?.banner&&e.banner.destroyAll()}function re(e,t){if(!t)return;let r=n=>{let o={...n??{}};return o.adGroupId=o.adGroupId??o.spaceId??e,delete o.spaceId,o};return{onAdRendered:n=>t.onAdRendered?.(r(n)),onAdViewable:n=>t.onAdViewable?.(r(n)),onAdClicked:n=>t.onAdClicked?.(r(n)),onAdImpression:n=>{Te({log_name:"display_ads_all::impression__1px_banner",log_type:"event",params:{event_type:"impression",schema_id:1812034,request_id:n?.adMetadata?.requestId??""}}),t.onAdImpression?.(r(n))},onAdFailedToRender:n=>t.onAdFailedToRender?.({...r(n),error:n?.error??{code:0,message:"UNKNOWN"}}),onNoFill:n=>t.onNoFill?.(r(n))}}var lr={initialize:Object.assign(De,{isSupported:b.isSupported}),attach:Object.assign(Ne,{isSupported:b.isSupported}),attachBanner:Object.assign(Ve,{isSupported:b.isSupported}),destroy:Object.assign(He,{isSupported:b.isSupported}),destroyAll:Object.assign(Ue,{isSupported:b.isSupported})},gr=Object.assign(c("getServerTime"),{isSupported:u("getServerTime_isSupported")});var R=class{_log=c("debugLog");log(t,r){try{this._log({log_name:`apps_in_toss_webview_${t}`,log_type:"debug",params:{...r,...this.getCommonParams()}})}catch{}}getCommonParams(){return{...this.getLocationInfo(),...this.getNavigatorInfo(),...this.getScreenInfo(),appName:window.__appsInToss.appName,deploymentId:window.__appsInToss.deploymentId,sessionId:window.__appsInToss.sessionId,isGame:window.__appsInToss.webViewType==="game",timestampMs:Date.now()}}getLocationInfo(){return{url:window.location.href,urlOrigin:window.location.origin,urlHost:window.location.hostname,urlPath:window.location.pathname,urlSearch:window.location.search}}getNavigatorInfo(){return{userAgent:navigator.userAgent,platform:navigator.platform,language:navigator.language,cookieEnabled:navigator.cookieEnabled,hardwareConcurrency:navigator.hardwareConcurrency,deviceMemory:navigator.deviceMemory?navigator.deviceMemory*1024*1024:void 0,maxTouchPoints:navigator.maxTouchPoints}}getScreenInfo(){return{screenWidth:screen.width,screenHeight:screen.height,availableScreenWidth:screen.availWidth,availableScreenHeight:screen.availHeight,devicePixelRatio:window.devicePixelRatio,colorDepth:screen.colorDepth,pixelDepth:screen.pixelDepth,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight}}};var D=class{callbacks={};on(t,r){typeof this.callbacks[t]>"u"&&(this.callbacks[t]=[]),this.callbacks[t].push(r)}emit(t,r){this.callbacks[t]?.forEach(n=>n(r))}};window.__appsInToss={appName:u("getAppName")(),deploymentId:u("getDeploymentId")(),webViewType:u("getWebViewType")(),sessionId:Math.random().toString(36).substring(2),eventEmitter:new D,debugLogger:new R};var L=/\\.(data|wasm|framework\\.js)(?:\\.gz|\\.br|\\.unityweb)?$/;function N(e){window.fetch=new Proxy(window.fetch,{apply:e})}(()=>{if(window.__appsInToss.webViewType!=="game"||typeof caches>"u")return;let e="@apps-in-toss/caches/",t=`${e}${window.__appsInToss.deploymentId}`;window.addEventListener("load",async()=>{let r=await caches.keys();for(let n of r)n.startsWith(e)&&n!==t&&await caches.delete(n)}),N(async(r,n,o)=>{let s=new Request(o[0],o[1]);if(!L.test(s.url))return await r.call(n,s);let a=await caches.open(t),i=await a.match(s);if(i){let m=i.headers.get("ETag"),g=i.headers.get("Last-Modified");m&&s.headers.set("If-None-Match",m),g&&s.headers.set("If-Modified-Since",g);let v=await r.call(n,s);return v.status===304?(i.__revalidateResponse=v,i):(a.put(s,v.clone()),v)}let p=await r.call(n,s);return a.put(s,p.clone()),p})})();N(async(e,t,r)=>{let n=new Request(r[0],r[1]),o=Date.now();window.__appsInToss.eventEmitter.emit("fetchRequest",{request:n});let s=await e.call(t,n);return window.__appsInToss.eventEmitter.emit("fetchResponse",{request:n,response:s,requestAt:o}),s});var ne=window.__appsInToss.debugLogger;ne.log("load_start",{});window.addEventListener("load",()=>{let e=performance.timeOrigin,t=performance.getEntriesByType?.("navigation")[0]??null,r=typeof e<"u"&&t!==null,n=r?{navigationStartAtMs:e+t.startTime,navigationRedirectStartAtMs:e+t.redirectStart,navigationRedirectEndAtMs:e+t.redirectEnd,navigationRedirectCount:t.redirectCount,navigationServiceWorkerStartAtMs:e+t.workerStart,navigationFetchStartAtMs:e+t.fetchStart,navigationDomainLookupStartAtMs:e+t.domainLookupStart,navigationDomainLookupEndAtMs:e+t.domainLookupEnd,navigationConnectStartAtMs:e+t.connectStart,navigationSecureConnectStartAtMs:e+t.secureConnectionStart,navigationConnectEndAtMs:e+t.connectEnd,navigationRequestStartAtMs:e+t.requestStart,navigationResponseStartAtMs:e+t.responseStart,navigationResponseEndAtMs:e+t.responseEnd,navigationDomInteractiveAtMs:e+t.domInteractive,navigationDomContentLoadedEventStartAtMs:e+t.domContentLoadedEventStart,navigationDomContentLoadedEventEndAtMs:e+t.domContentLoadedEventEnd,navigationDomCompleteAtMs:e+t.domComplete}:{};ne.log("load_complete",{isNavigationDebugSupported:r,...n})});function T(e,t){return parseFloat(e.toFixed(t))}(()=>{if(typeof performance.memory>"u"||typeof performance.memory.usedJSHeapSize>"u"||typeof performance.memory.totalJSHeapSize>"u"||typeof performance.memory.jsHeapSizeLimit>"u")return;function e(t){window.__appsInToss.debugLogger.log(t,{usedJSHeapSize:T(performance.memory.usedJSHeapSize/1024,2),totalJSHeapSize:T(performance.memory.totalJSHeapSize/1024,2),jsHeapSizeLimit:T(performance.memory.jsHeapSizeLimit/1024,2)})}e("memory_usage_first_0s"),setTimeout(()=>e("memory_usage_first_1s"),1e3),setTimeout(()=>e("memory_usage_first_10s"),1e4),setTimeout(()=>e("memory_usage_first_30s"),3e4),setTimeout(()=>e("memory_usage_first_60s"),6e4),setInterval(()=>e("memory_usage_every_180s"),18e4)})();(()=>{let e=window.__appsInToss.debugLogger,t=performance.timeOrigin;if(typeof t>"u"||typeof PerformanceObserver>"u")return;new PerformanceObserver(o=>{o.getEntries().forEach(a=>{a.name==="first-paint"?e.log("first_paint",{fpStartAtMs:t+a.startTime}):a.name==="first-contentful-paint"&&e.log("first_contentful_paint",{fcpStartAtMs:t+a.startTime})})}).observe({type:"paint"}),new PerformanceObserver(o=>{o.getEntries().forEach(a=>{e.log("largest_contentful_paint",{lcpStartAtMs:t+a.startTime,lcpRenderSize:a.size})})}).observe({type:"largest-contentful-paint"})})();(()=>{if(window.__appsInToss.webViewType!=="game")return;function e(t){let r=t.getContext("webgl2")??t.getContext("webgl");if(r==null)return;let n=r.getExtension("WEBGL_debug_renderer_info"),o=r.getParameter(r.MAX_VIEWPORT_DIMS),s={webGLRenderer:r.getParameter(r.RENDERER),webGLVendor:r.getParameter(r.VENDOR),webGLVersion:r.getParameter(r.VERSION),webGLShadingLanguageVersion:r.getParameter(r.SHADING_LANGUAGE_VERSION),webGLMaxTextureSize:r.getParameter(r.MAX_TEXTURE_SIZE),webGLMaxViewportWidth:o[0],webGLMaxViewportHeight:o[1],webGLMaxRenderbufferSize:r.getParameter(r.MAX_RENDERBUFFER_SIZE)},a=n?{webGLUnmaskedVendor:r.getParameter(n.UNMASKED_VENDOR_WEBGL),webGLUnmaskedRenderer:r.getParameter(n.UNMASKED_RENDERER_WEBGL)}:{};window.__appsInToss.debugLogger.log("unity_webgl_info",{...s,...a})}window.addEventListener("load",()=>{let t=document.querySelector("#unity-canvas");if(t!=null){e(t);return}new MutationObserver((n,o)=>{for(let s of n)s.type==="childList"&&s.addedNodes.forEach(a=>{if(a instanceof HTMLCanvasElement&&a.getAttribute("id")==="unity-canvas"&&(e(a),o.disconnect()),a instanceof HTMLElement){let i=a.querySelector("#unity-canvas");i!=null&&(e(i),o.disconnect())}})}).observe(document.body,{childList:!0,subtree:!0})})})();(()=>{if(window.__appsInToss.webViewType!=="game")return;let e=window.__appsInToss.debugLogger,t=window.__appsInToss.eventEmitter;t.on("fetchRequest",({request:r})=>{L.test(r.url)&&e.log("game_resource_download_start",{gameResourceRequestURL:r.url})}),t.on("fetchResponse",async({request:r,requestAt:n,response:o})=>{if(!L.test(r.url))return;let s=T((await o.clone().blob()).size/1024,2),a=Date.now();e.log("game_resource_download_end",{gameResourceRequestURL:r.url,gameResourceRequestAtMs:n,gameResourceResponseAtMs:a,gameResourceResponseSize:s,gameResourceResponseStatus:o.__revalidateResponse?.status??o.status,gameResourceDownloadDurationMs:a-n})})})();})();\n';
44945
44945
  }
44946
44946
  });
44947
44947
 
@@ -44950,7 +44950,7 @@ var global=typeof globalThis!=='undefined'?globalThis:typeof global!=='undefined
44950
44950
  "../user-scripts/dist/index.mjs"() {
44951
44951
  "use strict";
44952
44952
  e60 = '"use strict";(()=>{var e=document.createElement("style");e.textContent=`\n*:not(input):not(textarea) {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n -webkit-touch-callout: none;\n}\n`;document.head.appendChild(e);})();\n';
44953
- t55 = '"use strict";(()=>{var Y=class{get _window(){return typeof window<"u"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error("ReactNativeWebView is not available in browser environment");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error("__GRANITE_NATIVE_EMITTER is not available");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},g=new Y,M=()=>Math.random().toString(36).substring(2,15),D=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function d(e){return(...t)=>{let r=M(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(g.on(`${e}/resolve/${r}`,c=>{o(),s(c)})),n.push(g.on(`${e}/reject/${r}`,c=>{o(),a(D(c))})),g.postMessage({type:"method",functionName:e,eventId:r,args:t})})}}function I(e){return t=>{let r=M(),n=[g.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),g.on(`${e}/onError/${r}`,o=>{t.onError(D(o))})];return g.postMessage({type:"addEventListener",functionName:e,eventId:r,args:t.options}),()=>{g.postMessage({type:"removeEventListener",functionName:e,eventId:r}),n.forEach(o=>o())}}}function m(e){return()=>g.getConstant(e)}var Q=function(){return{emit:function(t,r){for(var n=this.events[t]||[],o=0,s=n.length;o<s;o++)n[o](r)},events:{},on:function(t,r){var n=this,o,s;return((o=this.events)[s=t]||(o[s]=[])).push(r),function(){var a;n.events[t]=(a=n.events[t])===null||a===void 0?void 0:a.filter(function(c){return r!==c})}}}};typeof window<"u"&&(window.__GRANITE_NATIVE_EMITTER=Q());var Re=d("closeView"),Me=d("generateHapticFeedback"),De=d("share"),Ne=d("setSecureScreen"),Fe=d("setScreenAwakeMode"),Oe=d("getNetworkStatus"),Be=d("setIosSwipeGestureEnabled"),Ge=d("openURL"),Ve=d("openPermissionDialog"),ke=d("getPermission"),He=d("requestPermission"),ze=m("setClipboardText"),Ue=m("getClipboardText"),We=m("fetchContacts"),qe=m("fetchAlbumPhotos"),$e=m("getCurrentLocation"),je=m("openCamera"),Ke=d("appLogin"),Je=d("eventLog"),Xe=d("getTossShareLink"),Ze=d("setDeviceOrientation"),Ye=d("checkoutPayment"),Qe=d("saveBase64Data"),et=d("appsInTossSignTossCert"),tt=d("getGameCenterGameProfile"),rt=d("openGameCenterLeaderboard"),nt=d("submitGameCenterLeaderBoardScore"),ot=d("getUserKeyForGame"),st=d("getIsTossLoginIntegratedService"),at=d("grantPromotionRewardForGame"),it=d("getServerTime"),ct=m("getLocale"),dt=m("getSchemeUri"),ut=m("getPlatformOS"),pt=m("getOperationalEnvironment"),mt=m("getTossAppVersion"),lt=m("getDeviceId"),gt=I("contactsViral"),vt=I("startUpdateLocation"),ft=I("onVisibilityChangedByTransparentServiceWeb");var E=class extends Error{constructor({methodName:e,message:t}){super(),this.name=`${e} permission error`,this.message=t}},N=class extends E{constructor(){super({methodName:"fetchAlbumPhotos",message:"\\uC0AC\\uC9C4\\uCCA9 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},F=class extends E{constructor(){super({methodName:"fetchContacts",message:"\\uC5F0\\uB77D\\uCC98 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},O=class extends E{constructor(){super({methodName:"openCamera",message:"\\uCE74\\uBA54\\uB77C \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}};var x=class extends E{constructor(){super({methodName:"getCurrentLocation",message:"\\uC704\\uCE58 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},B=x,G=class extends E{constructor(){super({methodName:"getClipboardText",message:"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC77D\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},V=class extends E{constructor(){super({methodName:"setClipboardText",message:"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC4F0\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}};var ee=class{get _window(){return typeof window<"u"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error("ReactNativeWebView is not available in browser environment");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error("__GRANITE_NATIVE_EMITTER is not available");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},v=new ee,K=()=>Math.random().toString(36).substring(2,15),J=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function i(e){return(...t)=>{let r=K(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(v.on(`${e}/resolve/${r}`,c=>{o(),s(c)})),n.push(v.on(`${e}/reject/${r}`,c=>{o(),a(J(c))})),v.postMessage({type:"method",functionName:e,eventId:r,args:t})})}}function w(e){return t=>{let r=K(),n=[v.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),v.on(`${e}/onError/${r}`,o=>{t.onError(J(o))})];return v.postMessage({type:"addEventListener",functionName:e,eventId:r,args:t.options}),()=>{v.postMessage({type:"removeEventListener",functionName:e,eventId:r}),n.forEach(o=>o())}}}function u(e){return()=>v.getConstant(e)}var Tt={getItem:i("getStorageItem"),setItem:i("setStorageItem"),removeItem:i("removeStorageItem"),clearItems:i("clearItems")},te=/^[v^~<>=]*?(\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+))?(?:-([\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*))?(?:\\+[\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*)?)?)?$/i,k=e=>["*","x","X"].includes(e),H=e=>{let t=parseInt(e,10);return isNaN(t)?e:t},re=(e,t)=>typeof e==typeof t?[e,t]:[String(e),String(t)],ne=(e,t)=>{if(k(e)||k(t))return 0;let[r,n]=re(H(e),H(t));return r>n?1:r<n?-1:0},z=e=>{if(typeof e!="string")throw new TypeError("Invalid argument: expected a string");let t=e.match(te);if(!t)throw new Error(`Invalid semver: \'${e}\'`);let[,r,n,o,s,a]=t;return[r,n,o,s,a]},U=(e,t)=>{let r=Math.max(e.length,t.length);for(let n=0;n<r;n++){let o=e[n]??"0",s=t[n]??"0",a=ne(o,s);if(a!==0)return a}return 0},oe=(e,t)=>{let r=z(e),n=z(t),o=r.pop(),s=n.pop(),a=U(r,n);return a!==0?a:o&&s?U(o.split("."),s.split(".")):o?-1:s?1:0};function W(e){if(u("getOperationalEnvironment")()==="sandbox")return!0;let r=u("getTossAppVersion")(),o=u("getPlatformOS")()==="ios"?e.ios:e.android;return o===void 0?!1:o==="always"?!0:o==="never"?!1:oe(r,o)>=0}function se(e){return i("processProductGrant")(e)}var yt={createOneTimePurchaseOrder:e=>{let t=W({android:"5.219.0",ios:"5.219.0"}),r=()=>{};if(!t)return r;let n=W({android:"5.231.1",ios:"5.230.0"}),{options:o,onEvent:s,onError:a}=e,c=o.sku??o.productId;return n?w("requestOneTimePurchase")({options:{sku:c},onEvent:async p=>{if(p.type==="purchased"){let l=await o.processProductGrant({orderId:p.data.orderId});await se({orderId:p.data.orderId,isProductGranted:l}).catch(a)}else s(p)},onError:p=>{a(p)}}):(i("iapCreateOneTimePurchaseOrder")({productId:c}).then(l=>{Promise.resolve(o.processProductGrant({orderId:l.orderId})).then(()=>{s({type:"success",data:l})}).catch(h=>{a(h)})}).catch(l=>{a(l)}),r)},getProductItemList:i("iapGetProductItemList"),getPendingOrders:i("getPendingOrders"),getCompletedOrRefundedOrders:i("getCompletedOrRefundedOrders"),completeProductGrant:i("completeProductGrant")},Lt=u("getSafeAreaInsets");var Pt=u("getSafeAreaInsets");var xt={loadAppsInTossAdMob:Object.assign(w("loadAppsInTossAdMob"),{isSupported:u("loadAppsInTossAdMob_isSupported")}),showAppsInTossAdMob:Object.assign(w("showAppsInTossAdMob"),{isSupported:u("showAppsInTossAdMob_isSupported")}),isAppsInTossAdMobLoaded:Object.assign(i("isAppsInTossAdMobLoaded"),{isSupported:u("isAppsInTossAdMobLoaded_isSupported")})};var Rt={getDeploymentId:u("getDeploymentId")},Mt=u("deploymentId"),Dt=u("brandDisplayName"),Nt=u("brandIcon"),Ft=u("brandPrimaryColor");var Ot={addAccessoryButton:i("addAccessoryButton"),removeAccessoryButton:i("removeAccessoryButton")},ae=i("requestPermission"),ie=i("getPermission"),ce=i("openPermissionDialog");function S({permission:e,handler:t,error:r}){let n=async(...o)=>{if(await ae(e)==="denied")throw new r;return t(...o)};return n.getPermission=()=>ie(e),n.openPermissionDialog=()=>ce(e),n}var Gt=S({handler:e=>i("fetchAlbumPhotos")(e),permission:{name:"photos",access:"read"},error:N}),kt=S({handler:e=>i("fetchContacts")(e),permission:{name:"contacts",access:"read"},error:F}),zt=S({handler:e=>i("getCurrentLocation")(e),permission:{name:"geolocation",access:"access"},error:x}),Wt=S({handler:e=>i("openCamera")(e),permission:{name:"camera",access:"access"},error:O}),$t=S({handler:e=>i("setClipboardText")(e),permission:{name:"clipboard",access:"write"},error:V}),Kt=S({handler:()=>i("getClipboardText")(),permission:{name:"clipboard",access:"read"},error:G}),de=i("getPermission"),ue=i("openPermissionDialog"),X=e=>w("updateLocationEvent")({...e,onError:t=>{let r=new B;return t instanceof Error&&t.name===r.name?e.onError(r):e.onError(t)}});X.getPermission=()=>de({name:"geolocation",access:"access"});X.openPermissionDialog=()=>ue({name:"geolocation",access:"access"});var Xt=Object.assign(w("loadFullScreenAd"),{isSupported:u("loadFullScreenAd_isSupported")}),Zt=Object.assign(w("showFullScreenAd"),{isSupported:u("showFullScreenAd_isSupported")}),pe=i("openURL");function me(e){let t=le(e);return pe(t)}function le(e){return["http://","https://"].some(r=>e.startsWith(r))?ge(e):e}function ge(e){return`supertoss://web?url=${encodeURIComponent(e)}&external=true`}var q="https://static.toss.im/ads/sdk/toss-ads-space-kit-1.3.0.js",$=15e3,T=null;function A(){if(!(typeof window>"u"))return window.TossAdsSpaceKit}function ve(){if(typeof window>"u"||typeof document>"u")return Promise.reject(new Error("Ads SDK can only be loaded in a browser environment."));let e=A();if(e)return Promise.resolve(e);if(T)return T;let t=new Promise((r,n)=>{let o=document.createElement("script"),s=()=>{o.removeEventListener("load",a),o.removeEventListener("error",c),window.clearTimeout(f),T=null},a=()=>{let p=A();if(p){s(),r(p);return}s(),n(new Error("Ads SDK script loaded but window.TossAdsSpaceKit was not exposed."))},c=()=>{s(),n(new Error(`Failed to load Ads SDK script from ${q}.`))},f=window.setTimeout(()=>{s(),n(new Error(`Loading Ads SDK timed out after ${$}ms.`))},$);o.addEventListener("load",a),o.addEventListener("error",c),o.async=!0,o.src=q,document.head.appendChild(o)});return T=t,t}var b=Object.assign(w("fetchTossAd"),{isSupported:u("fetchTossAd_isSupported")}),fe=i("tossAdEventLog"),we=new Set(["1","2"]);function he(e){return new Promise((t,r)=>{if(!b.isSupported()){r(new Error("fetchTossAd is not supported in this environment."));return}return b({options:e,onEvent:t,onError:r})})}function j(e){let t=Array.isArray(e.ads)?e.ads.filter(r=>we.has(String(r.styleId))):[];return{requestId:e.requestId??"",status:e.status??"OK",ads:t,ext:e.ext}}function Ee(e){return be(e)?e.resultType!=="SUCCESS"?e:e.success?{...e,success:j(e.success)}:{resultType:"FAIL",error:{reason:"fetchTossAd returned SUCCESS without payload"}}:Se(e)?{resultType:"SUCCESS",success:j(e)}:{resultType:"FAIL",error:{reason:"Invalid response from fetchTossAd"}}}function be(e){return!!(e&&typeof e=="object"&&"resultType"in e)}function Se(e){return!!(e&&typeof e=="object"&&"ads"in e)}function _e(){return async(e,t)=>{try{let r=await he({adGroupId:t.spaceUnitId,sdkId:"108",availableStyleIds:["1","2"]});return Ee(r)}catch(r){return{resultType:"FAIL",error:{reason:r instanceof Error?r.message:"Unknown fetchTossAd error"}}}}}var R=null;function Ae(e){let{callbacks:t}=e;if(window.TossAdsSpaceKit!=null&&window.TossAdsSpaceKit.isInitialized()){t?.onInitializationFailed?.(new Error("[toss-ad] Already initialized."));return}R!=null&&t?.onInitializationFailed?.(new Error("[toss-ad] initialization already in progress."));let r=()=>t?.onInitialized?.(),n=o=>{let s=o instanceof Error?o:new Error(String(o));t?.onInitializationFailed?.(s)};R=ve().then(o=>{let a={environment:"live",customAdFetcher:_e(),opener:me};o.init(a),r()}).catch(o=>{R=null,n(o)})}function Ce(e,t,r={}){let{callbacks:n}=r,o=s=>{let a=s instanceof Error?s:new Error(String(s));n?.onAdFailedToRender?.({slotId:"",adGroupId:e,adMetadata:{},error:{code:0,message:a.message}})};try{let s=e,a=A();if(!a)throw new Error("[toss-ad] Call initialize() before attaching an ad.");if(!a.banner)throw new Error("[toss-ad] Loaded TossAdsSpaceKit does not support banner ads.");let c=typeof t=="string"?document.querySelector(t):t;if(!c)throw new Error(`[toss-ad] Failed to find target element: ${t}`);let f={spaceId:s,autoLoad:!0,theme:r.theme,padding:r.padding,callbacks:ye(e,r.callbacks)};a.banner.createSlot(c,f)}catch(s){o(s)}}function Ie(e){let t=A();t?.banner&&t.banner.destroy(e)}function Te(){let e=A();e?.banner&&e.banner.destroyAll()}function ye(e,t){if(!t)return;let r=n=>{let o={...n??{}};return o.adGroupId=o.adGroupId??o.spaceId??e,delete o.spaceId,o};return{onAdRendered:n=>t.onAdRendered?.(r(n)),onAdViewable:n=>t.onAdViewable?.(r(n)),onAdClicked:n=>t.onAdClicked?.(r(n)),onAdImpression:n=>{fe({log_name:"display_ads_all::impression__1px_banner",log_type:"event",params:{event_type:"impression",schema_id:1812034,request_id:n?.adMetadata?.requestId??""}}),t.onAdImpression?.(r(n))},onAdFailedToRender:n=>t.onAdFailedToRender?.({...r(n),error:n?.error??{code:0,message:"UNKNOWN"}}),onNoFill:n=>t.onNoFill?.(r(n))}}var Yt={initialize:Object.assign(Ae,{isSupported:b.isSupported}),attach:Object.assign(Ce,{isSupported:b.isSupported}),destroy:Object.assign(Ie,{isSupported:b.isSupported}),destroyAll:Object.assign(Te,{isSupported:b.isSupported})},Qt=Object.assign(i("getServerTime"),{isSupported:u("getServerTime_isSupported")});var y=class{_log=i("debugLog");log(t,r){try{this._log({log_name:`apps_in_toss_webview_${t}`,log_type:"debug",params:{...r,...this.getCommonParams()}})}catch{}}getCommonParams(){return{...this.getLocationInfo(),...this.getNavigatorInfo(),...this.getScreenInfo(),appName:window.__appsInToss.appName,deploymentId:window.__appsInToss.deploymentId,sessionId:window.__appsInToss.sessionId,isGame:window.__appsInToss.webViewType==="game",timestampMs:Date.now()}}getLocationInfo(){return{url:window.location.href,urlOrigin:window.location.origin,urlHost:window.location.hostname,urlPath:window.location.pathname,urlSearch:window.location.search}}getNavigatorInfo(){return{userAgent:navigator.userAgent,platform:navigator.platform,language:navigator.language,cookieEnabled:navigator.cookieEnabled,hardwareConcurrency:navigator.hardwareConcurrency,deviceMemory:navigator.deviceMemory?navigator.deviceMemory*1024*1024:void 0,maxTouchPoints:navigator.maxTouchPoints}}getScreenInfo(){return{screenWidth:screen.width,screenHeight:screen.height,availableScreenWidth:screen.availWidth,availableScreenHeight:screen.availHeight,devicePixelRatio:window.devicePixelRatio,colorDepth:screen.colorDepth,pixelDepth:screen.pixelDepth,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight}}};var L=class{callbacks={};on(t,r){typeof this.callbacks[t]>"u"&&(this.callbacks[t]=[]),this.callbacks[t].push(r)}emit(t,r){this.callbacks[t]?.forEach(n=>n(r))}};window.__appsInToss={appName:u("getAppName")(),deploymentId:u("getDeploymentId")(),webViewType:u("getWebViewType")(),sessionId:Math.random().toString(36).substring(2),eventEmitter:new L,debugLogger:new y};var C=/\\.(data|wasm|framework\\.js)(?:\\.gz|\\.br|\\.unityweb)?$/;function P(e){window.fetch=new Proxy(window.fetch,{apply:e})}(()=>{if(window.__appsInToss.webViewType!=="game"||typeof caches>"u")return;let e="@apps-in-toss/caches/",t=`${e}${window.__appsInToss.deploymentId}`;window.addEventListener("load",async()=>{let r=await caches.keys();for(let n of r)n.startsWith(e)&&n!==t&&await caches.delete(n)}),P(async(r,n,o)=>{let s=new Request(o[0],o[1]);if(!C.test(s.url))return await r.call(n,s);let a=await caches.open(t),c=await a.match(s);if(c){let p=c.headers.get("ETag"),l=c.headers.get("Last-Modified");p&&s.headers.set("If-None-Match",p),l&&s.headers.set("If-Modified-Since",l);let h=await r.call(n,s);return h.status===304?(c.__revalidateResponse=h,c):(a.put(s,h.clone()),h)}let f=await r.call(n,s);return a.put(s,f.clone()),f})})();P(async(e,t,r)=>{let n=new Request(r[0],r[1]),o=Date.now();window.__appsInToss.eventEmitter.emit("fetchRequest",{request:n});let s=await e.call(t,n);return window.__appsInToss.eventEmitter.emit("fetchResponse",{request:n,response:s,requestAt:o}),s});var Z=window.__appsInToss.debugLogger;Z.log("load_start",{});window.addEventListener("load",()=>{let e=performance.timeOrigin,t=performance.getEntriesByType?.("navigation")[0]??null,r=typeof e<"u"&&t!==null,n=r?{navigationStartAtMs:e+t.startTime,navigationRedirectStartAtMs:e+t.redirectStart,navigationRedirectEndAtMs:e+t.redirectEnd,navigationRedirectCount:t.redirectCount,navigationServiceWorkerStartAtMs:e+t.workerStart,navigationFetchStartAtMs:e+t.fetchStart,navigationDomainLookupStartAtMs:e+t.domainLookupStart,navigationDomainLookupEndAtMs:e+t.domainLookupEnd,navigationConnectStartAtMs:e+t.connectStart,navigationSecureConnectStartAtMs:e+t.secureConnectionStart,navigationConnectEndAtMs:e+t.connectEnd,navigationRequestStartAtMs:e+t.requestStart,navigationResponseStartAtMs:e+t.responseStart,navigationResponseEndAtMs:e+t.responseEnd,navigationDomInteractiveAtMs:e+t.domInteractive,navigationDomContentLoadedEventStartAtMs:e+t.domContentLoadedEventStart,navigationDomContentLoadedEventEndAtMs:e+t.domContentLoadedEventEnd,navigationDomCompleteAtMs:e+t.domComplete}:{};Z.log("load_complete",{isNavigationDebugSupported:r,...n})});function _(e,t){return parseFloat(e.toFixed(t))}(()=>{if(typeof performance.memory>"u"||typeof performance.memory.usedJSHeapSize>"u"||typeof performance.memory.totalJSHeapSize>"u"||typeof performance.memory.jsHeapSizeLimit>"u")return;function e(t){window.__appsInToss.debugLogger.log(t,{usedJSHeapSize:_(performance.memory.usedJSHeapSize/1024,2),totalJSHeapSize:_(performance.memory.totalJSHeapSize/1024,2),jsHeapSizeLimit:_(performance.memory.jsHeapSizeLimit/1024,2)})}e("memory_usage_first_0s"),setTimeout(()=>e("memory_usage_first_1s"),1e3),setTimeout(()=>e("memory_usage_first_10s"),1e4),setTimeout(()=>e("memory_usage_first_30s"),3e4),setTimeout(()=>e("memory_usage_first_60s"),6e4),setInterval(()=>e("memory_usage_every_180s"),18e4)})();(()=>{let e=window.__appsInToss.debugLogger,t=performance.timeOrigin;if(typeof t>"u"||typeof PerformanceObserver>"u")return;new PerformanceObserver(o=>{o.getEntries().forEach(a=>{a.name==="first-paint"?e.log("first_paint",{fpStartAtMs:t+a.startTime}):a.name==="first-contentful-paint"&&e.log("first_contentful_paint",{fcpStartAtMs:t+a.startTime})})}).observe({type:"paint"}),new PerformanceObserver(o=>{o.getEntries().forEach(a=>{e.log("largest_contentful_paint",{lcpStartAtMs:t+a.startTime,lcpRenderSize:a.size})})}).observe({type:"largest-contentful-paint"})})();(()=>{if(window.__appsInToss.webViewType!=="game")return;function e(t){let r=t.getContext("webgl2")??t.getContext("webgl");if(r==null)return;let n=r.getExtension("WEBGL_debug_renderer_info"),o=r.getParameter(r.MAX_VIEWPORT_DIMS),s={webGLRenderer:r.getParameter(r.RENDERER),webGLVendor:r.getParameter(r.VENDOR),webGLVersion:r.getParameter(r.VERSION),webGLShadingLanguageVersion:r.getParameter(r.SHADING_LANGUAGE_VERSION),webGLMaxTextureSize:r.getParameter(r.MAX_TEXTURE_SIZE),webGLMaxViewportWidth:o[0],webGLMaxViewportHeight:o[1],webGLMaxRenderbufferSize:r.getParameter(r.MAX_RENDERBUFFER_SIZE)},a=n?{webGLUnmaskedVendor:r.getParameter(n.UNMASKED_VENDOR_WEBGL),webGLUnmaskedRenderer:r.getParameter(n.UNMASKED_RENDERER_WEBGL)}:{};window.__appsInToss.debugLogger.log("unity_webgl_info",{...s,...a})}window.addEventListener("load",()=>{let t=document.querySelector("#unity-canvas");if(t!=null){e(t);return}new MutationObserver((n,o)=>{for(let s of n)s.type==="childList"&&s.addedNodes.forEach(a=>{if(a instanceof HTMLCanvasElement&&a.getAttribute("id")==="unity-canvas"&&(e(a),o.disconnect()),a instanceof HTMLElement){let c=a.querySelector("#unity-canvas");c!=null&&(e(c),o.disconnect())}})}).observe(document.body,{childList:!0,subtree:!0})})})();(()=>{if(window.__appsInToss.webViewType!=="game")return;let e=window.__appsInToss.debugLogger,t=window.__appsInToss.eventEmitter;t.on("fetchRequest",({request:r})=>{C.test(r.url)&&e.log("game_resource_download_start",{gameResourceRequestURL:r.url})}),t.on("fetchResponse",async({request:r,requestAt:n,response:o})=>{if(!C.test(r.url))return;let s=_((await o.clone().blob()).size/1024,2),a=Date.now();e.log("game_resource_download_end",{gameResourceRequestURL:r.url,gameResourceRequestAtMs:n,gameResourceResponseAtMs:a,gameResourceResponseSize:s,gameResourceResponseStatus:o.__revalidateResponse?.status??o.status,gameResourceDownloadDurationMs:a-n})})})();})();\n';
44953
+ t55 = '"use strict";(()=>{var ie=class{get _window(){return typeof window<"u"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error("ReactNativeWebView is not available in browser environment");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error("__GRANITE_NATIVE_EMITTER is not available");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},h=new ie,O=()=>Math.random().toString(36).substring(2,15),k=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function d(e){return(...t)=>{let r=O(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(h.on(`${e}/resolve/${r}`,i=>{o(),s(i)})),n.push(h.on(`${e}/reject/${r}`,i=>{o(),a(k(i))})),h.postMessage({type:"method",functionName:e,eventId:r,args:t})})}}function x(e){return t=>{let r=O(),n=[h.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),h.on(`${e}/onError/${r}`,o=>{t.onError(k(o))})];return h.postMessage({type:"addEventListener",functionName:e,eventId:r,args:t.options}),()=>{h.postMessage({type:"removeEventListener",functionName:e,eventId:r}),n.forEach(o=>o())}}}function l(e){return()=>h.getConstant(e)}var ce=function(){return{emit:function(t,r){for(var n=this.events[t]||[],o=0,s=n.length;o<s;o++)n[o](r)},events:{},on:function(t,r){var n=this,o,s;return((o=this.events)[s=t]||(o[s]=[])).push(r),function(){var a;n.events[t]=(a=n.events[t])===null||a===void 0?void 0:a.filter(function(i){return r!==i})}}}};typeof window<"u"&&(window.__GRANITE_NATIVE_EMITTER=ce());var qe=d("closeView"),je=d("generateHapticFeedback"),Ke=d("share"),Je=d("setSecureScreen"),Xe=d("setScreenAwakeMode"),Ye=d("getNetworkStatus"),Ze=d("setIosSwipeGestureEnabled"),Qe=d("openURL"),et=d("openPermissionDialog"),tt=d("getPermission"),rt=d("requestPermission"),nt=l("setClipboardText"),ot=l("getClipboardText"),st=l("fetchContacts"),at=l("fetchAlbumPhotos"),it=l("getCurrentLocation"),ct=l("openCamera"),dt=d("appLogin"),ut=d("eventLog"),pt=d("getTossShareLink"),mt=d("setDeviceOrientation"),lt=d("checkoutPayment"),gt=d("saveBase64Data"),ft=d("appsInTossSignTossCert"),vt=d("getGameCenterGameProfile"),ht=d("openGameCenterLeaderboard"),wt=d("submitGameCenterLeaderBoardScore"),Et=d("getUserKeyForGame"),bt=d("getIsTossLoginIntegratedService"),At=d("grantPromotionRewardForGame"),St=d("getServerTime"),_t=l("getLocale"),Ct=l("getSchemeUri"),Tt=l("getPlatformOS"),yt=l("getOperationalEnvironment"),It=l("getTossAppVersion"),Lt=l("getDeviceId"),xt=x("contactsViral"),Pt=x("startUpdateLocation"),Rt=x("onVisibilityChangedByTransparentServiceWeb");var _=class extends Error{constructor({methodName:e,message:t}){super(),this.name=`${e} permission error`,this.message=t}},B=class extends _{constructor(){super({methodName:"fetchAlbumPhotos",message:"\\uC0AC\\uC9C4\\uCCA9 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},G=class extends _{constructor(){super({methodName:"fetchContacts",message:"\\uC5F0\\uB77D\\uCC98 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},V=class extends _{constructor(){super({methodName:"openCamera",message:"\\uCE74\\uBA54\\uB77C \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}};var F=class extends _{constructor(){super({methodName:"getCurrentLocation",message:"\\uC704\\uCE58 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},H=F,U=class extends _{constructor(){super({methodName:"getClipboardText",message:"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC77D\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},z=class extends _{constructor(){super({methodName:"setClipboardText",message:"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC4F0\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}};var de=class{get _window(){return typeof window<"u"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error("ReactNativeWebView is not available in browser environment");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error("__GRANITE_NATIVE_EMITTER is not available");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},w=new de,Q=()=>Math.random().toString(36).substring(2,15),ee=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function c(e){return(...t)=>{let r=Q(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(w.on(`${e}/resolve/${r}`,i=>{o(),s(i)})),n.push(w.on(`${e}/reject/${r}`,i=>{o(),a(ee(i))})),w.postMessage({type:"method",functionName:e,eventId:r,args:t})})}}function A(e){return t=>{let r=Q(),n=[w.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),w.on(`${e}/onError/${r}`,o=>{t.onError(ee(o))})];return w.postMessage({type:"addEventListener",functionName:e,eventId:r,args:t.options}),()=>{w.postMessage({type:"removeEventListener",functionName:e,eventId:r}),n.forEach(o=>o())}}}function u(e){return()=>w.getConstant(e)}var Ht={getItem:c("getStorageItem"),setItem:c("setStorageItem"),removeItem:c("removeStorageItem"),clearItems:c("clearItems")},ue=/^[v^~<>=]*?(\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+))?(?:-([\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*))?(?:\\+[\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*)?)?)?$/i,$=e=>["*","x","X"].includes(e),W=e=>{let t=parseInt(e,10);return isNaN(t)?e:t},pe=(e,t)=>typeof e==typeof t?[e,t]:[String(e),String(t)],me=(e,t)=>{if($(e)||$(t))return 0;let[r,n]=pe(W(e),W(t));return r>n?1:r<n?-1:0},q=e=>{if(typeof e!="string")throw new TypeError("Invalid argument: expected a string");let t=e.match(ue);if(!t)throw new Error(`Invalid semver: \'${e}\'`);let[,r,n,o,s,a]=t;return[r,n,o,s,a]},j=(e,t)=>{let r=Math.max(e.length,t.length);for(let n=0;n<r;n++){let o=e[n]??"0",s=t[n]??"0",a=me(o,s);if(a!==0)return a}return 0},le=(e,t)=>{let r=q(e),n=q(t),o=r.pop(),s=n.pop(),a=j(r,n);return a!==0?a:o&&s?j(o.split("."),s.split(".")):o?-1:s?1:0};function K(e){if(u("getOperationalEnvironment")()==="sandbox")return!0;let r=u("getTossAppVersion")(),o=u("getPlatformOS")()==="ios"?e.ios:e.android;return o===void 0?!1:o==="always"?!0:o==="never"?!1:le(r,o)>=0}function ge(e){return c("processProductGrant")(e)}var Ut={createOneTimePurchaseOrder:e=>{let t=K({android:"5.219.0",ios:"5.219.0"}),r=()=>{};if(!t)return r;let n=K({android:"5.231.1",ios:"5.230.0"}),{options:o,onEvent:s,onError:a}=e,i=o.sku??o.productId;return n?A("requestOneTimePurchase")({options:{sku:i},onEvent:async m=>{if(m.type==="purchased"){let g=await o.processProductGrant({orderId:m.data.orderId});await ge({orderId:m.data.orderId,isProductGranted:g}).catch(a)}else s(m)},onError:m=>{a(m)}}):(c("iapCreateOneTimePurchaseOrder")({productId:i}).then(g=>{Promise.resolve(o.processProductGrant({orderId:g.orderId})).then(()=>{s({type:"success",data:g})}).catch(v=>{a(v)})}).catch(g=>{a(g)}),r)},getProductItemList:c("iapGetProductItemList"),getPendingOrders:c("getPendingOrders"),getCompletedOrRefundedOrders:c("getCompletedOrRefundedOrders"),completeProductGrant:c("completeProductGrant")},zt=u("getSafeAreaInsets");var $t=u("getSafeAreaInsets");var Wt={loadAppsInTossAdMob:Object.assign(A("loadAppsInTossAdMob"),{isSupported:u("loadAppsInTossAdMob_isSupported")}),showAppsInTossAdMob:Object.assign(A("showAppsInTossAdMob"),{isSupported:u("showAppsInTossAdMob_isSupported")}),isAppsInTossAdMobLoaded:Object.assign(c("isAppsInTossAdMobLoaded"),{isSupported:u("isAppsInTossAdMobLoaded_isSupported")})};var qt={getDeploymentId:u("getDeploymentId")},jt=u("deploymentId"),Kt=u("brandDisplayName"),Jt=u("brandIcon"),Xt=u("brandPrimaryColor");var Yt={addAccessoryButton:c("addAccessoryButton"),removeAccessoryButton:c("removeAccessoryButton")},fe=c("requestPermission"),ve=c("getPermission"),he=c("openPermissionDialog");function C({permission:e,handler:t,error:r}){let n=async(...o)=>{if(await fe(e)==="denied")throw new r;return t(...o)};return n.getPermission=()=>ve(e),n.openPermissionDialog=()=>he(e),n}var Qt=C({handler:e=>c("fetchAlbumPhotos")(e),permission:{name:"photos",access:"read"},error:B}),tr=C({handler:e=>c("fetchContacts")(e),permission:{name:"contacts",access:"read"},error:G}),nr=C({handler:e=>c("getCurrentLocation")(e),permission:{name:"geolocation",access:"access"},error:F}),sr=C({handler:e=>c("openCamera")(e),permission:{name:"camera",access:"access"},error:V}),ir=C({handler:e=>c("setClipboardText")(e),permission:{name:"clipboard",access:"write"},error:z}),dr=C({handler:()=>c("getClipboardText")(),permission:{name:"clipboard",access:"read"},error:U}),we=c("getPermission"),Ee=c("openPermissionDialog"),te=e=>A("updateLocationEvent")({...e,onError:t=>{let r=new H;return t instanceof Error&&t.name===r.name?e.onError(r):e.onError(t)}});te.getPermission=()=>we({name:"geolocation",access:"access"});te.openPermissionDialog=()=>Ee({name:"geolocation",access:"access"});var pr=Object.assign(A("loadFullScreenAd"),{isSupported:u("loadFullScreenAd_isSupported")}),mr=Object.assign(A("showFullScreenAd"),{isSupported:u("showFullScreenAd_isSupported")}),be=c("openURL");function Ae(e){let t=Se(e);return be(t)}function Se(e){return["http://","https://"].some(r=>e.startsWith(r))?_e(e):e}function _e(e){return`supertoss://web?url=${encodeURIComponent(e)}&external=true`}var J="https://static.toss.im/ads/sdk/toss-ads-space-kit-1.3.0.js",X=15e3,P=null;function S(){if(!(typeof window>"u"))return window.TossAdsSpaceKit}function Ce(){if(typeof window>"u"||typeof document>"u")return Promise.reject(new Error("Ads SDK can only be loaded in a browser environment."));let e=S();if(e)return Promise.resolve(e);if(P)return P;let t=new Promise((r,n)=>{let o=document.createElement("script"),s=()=>{o.removeEventListener("load",a),o.removeEventListener("error",i),window.clearTimeout(p),P=null},a=()=>{let m=S();if(m){s(),r(m);return}s(),n(new Error("Ads SDK script loaded but window.TossAdsSpaceKit was not exposed."))},i=()=>{s(),n(new Error(`Failed to load Ads SDK script from ${J}.`))},p=window.setTimeout(()=>{s(),n(new Error(`Loading Ads SDK timed out after ${X}ms.`))},X);o.addEventListener("load",a),o.addEventListener("error",i),o.async=!0,o.src=J,document.head.appendChild(o)});return P=t,t}var b=Object.assign(A("fetchTossAd"),{isSupported:u("fetchTossAd_isSupported")}),Te=c("tossAdEventLog"),ye=new Set(["1","2"]);function Ie(e){return new Promise((t,r)=>{if(!b.isSupported()){r(new Error("fetchTossAd is not supported in this environment."));return}return b({options:e,onEvent:t,onError:r})})}function Y(e){let t=Array.isArray(e.ads)?e.ads.filter(r=>ye.has(String(r.styleId))):[];return{requestId:e.requestId??"",status:e.status??"OK",ads:t,ext:e.ext}}function Le(e){return xe(e)?e.resultType!=="SUCCESS"?e:e.success?{...e,success:Y(e.success)}:{resultType:"FAIL",error:{reason:"fetchTossAd returned SUCCESS without payload"}}:Pe(e)?{resultType:"SUCCESS",success:Y(e)}:{resultType:"FAIL",error:{reason:"Invalid response from fetchTossAd"}}}function xe(e){return!!(e&&typeof e=="object"&&"resultType"in e)}function Pe(e){return!!(e&&typeof e=="object"&&"ads"in e)}function Re(){return async(e,t)=>{try{let r=await Ie({adGroupId:t.spaceUnitId,sdkId:"108",availableStyleIds:["1","2"]});return Le(r)}catch(r){return{resultType:"FAIL",error:{reason:r instanceof Error?r.message:"Unknown fetchTossAd error"}}}}}var I=null;function De(e){let{callbacks:t}=e,r=()=>t?.onInitialized?.(),n=a=>{let i=a instanceof Error?a:new Error(String(a));t?.onInitializationFailed?.(i)};if(S()?.isInitialized()){r();return}if(I!=null){I.then(r).catch(n);return}let s=Ce().then(a=>{if(a.isInitialized())return;let p={environment:"live",customAdFetcher:Re(),opener:Ae};a.init(p)});I=s,s.then(r).catch(n).finally(()=>{I===s&&(I=null)})}function Ne(e,t,r={}){let{callbacks:n}=r,o=s=>{let a=s instanceof Error?s:new Error(String(s));n?.onAdFailedToRender?.({slotId:"",adGroupId:e,adMetadata:{},error:{code:0,message:a.message}})};try{let s=e,a=S();if(!a)throw new Error("[toss-ad] Call initialize() before attaching an ad.");if(!a.banner)throw new Error("[toss-ad] Loaded TossAdsSpaceKit does not support banner ads.");let i=typeof t=="string"?document.querySelector(t):t;if(!i)throw new Error(`[toss-ad] Failed to find target element: ${t}`);let p={spaceId:s,autoLoad:!0,theme:r.theme,padding:r.padding,callbacks:re(e,r.callbacks)};a.banner.createSlot(i,p)}catch(s){o(s)}}var Me="16px 20px",Fe="20px",Oe="auto",ke="blackAndWhite",Be="expanded",f="toss-ads-attach",Z="toss-ads-attach-style";function Ge(e){let t=e.ownerDocument;if(!t||t.getElementById(Z))return;let r=t.createElement("style");r.id=Z,r.textContent=`\n .${f} { background: #ffffff; }\n .${f}.toss-ads-tone-grey { background: #f2f4f7; }\n @media (prefers-color-scheme: dark) {\n .${f} { background: #17171c; }\n .${f}.toss-ads-tone-grey { background: #101013; }\n }\n .${f}.toss-ads-theme-light { background: #ffffff; }\n .${f}.toss-ads-theme-light.toss-ads-tone-grey { background: #f2f4f7; }\n .${f}.toss-ads-theme-dark { background: #17171c; }\n .${f}.toss-ads-theme-dark.toss-ads-tone-grey { background: #101013; }\n `;let n=t.head??t.body??t.documentElement;n&&n.appendChild(r)}function Ve(e,t,r={}){let{callbacks:n,theme:o=Oe,tone:s=ke,variant:a=Be}=r,i=document.createElement("div");i.style.width="100%",i.style.height="100%",i.style.boxSizing="border-box",i.style.display="flex",i.style.flexDirection="column",i.style.justifyContent="center",i.style.overflow="hidden",a==="card"&&(i.style.padding="0 10px");let p=document.createElement("div");p.classList.add(f),s==="grey"&&p.classList.add("toss-ads-tone-grey"),o==="light"?p.classList.add("toss-ads-theme-light"):o==="dark"&&p.classList.add("toss-ads-theme-dark"),a==="card"&&(p.style.borderRadius="16px",p.style.overflow="hidden"),i.appendChild(p);let m=!1,g=null,v=E=>{let y=E instanceof Error?E:new Error(String(E));n?.onAdFailedToRender?.({slotId:"",adGroupId:e,adMetadata:{},error:{code:0,message:y.message}})},oe=re(e,n);try{let E=e,y=S();if(!y)throw new Error("[toss-ad] Call initialize() before attaching an ad.");if(!y.banner)throw new Error("[toss-ad] Loaded TossAdsSpaceKit does not support banner ads.");let M=typeof t=="string"?document.querySelector(t):t;if(!M)throw new Error(`[toss-ad] Failed to find target element: ${t}`);Ge(M),M.appendChild(i),m=!0;let se={spaceId:E,autoLoad:!0,theme:o==="auto"?void 0:o,renderPadding:ae=>ae==="1"?Me:Fe,callbacks:oe};g=y.banner.createSlot(p,se)}catch(E){m&&i.parentNode&&i.parentNode.removeChild(i),v(E)}return{destroy(){g?.destroy(),m&&i.parentNode&&i.parentNode.removeChild(i)}}}function He(e){let t=S();t?.banner&&t.banner.destroy(e)}function Ue(){let e=S();e?.banner&&e.banner.destroyAll()}function re(e,t){if(!t)return;let r=n=>{let o={...n??{}};return o.adGroupId=o.adGroupId??o.spaceId??e,delete o.spaceId,o};return{onAdRendered:n=>t.onAdRendered?.(r(n)),onAdViewable:n=>t.onAdViewable?.(r(n)),onAdClicked:n=>t.onAdClicked?.(r(n)),onAdImpression:n=>{Te({log_name:"display_ads_all::impression__1px_banner",log_type:"event",params:{event_type:"impression",schema_id:1812034,request_id:n?.adMetadata?.requestId??""}}),t.onAdImpression?.(r(n))},onAdFailedToRender:n=>t.onAdFailedToRender?.({...r(n),error:n?.error??{code:0,message:"UNKNOWN"}}),onNoFill:n=>t.onNoFill?.(r(n))}}var lr={initialize:Object.assign(De,{isSupported:b.isSupported}),attach:Object.assign(Ne,{isSupported:b.isSupported}),attachBanner:Object.assign(Ve,{isSupported:b.isSupported}),destroy:Object.assign(He,{isSupported:b.isSupported}),destroyAll:Object.assign(Ue,{isSupported:b.isSupported})},gr=Object.assign(c("getServerTime"),{isSupported:u("getServerTime_isSupported")});var R=class{_log=c("debugLog");log(t,r){try{this._log({log_name:`apps_in_toss_webview_${t}`,log_type:"debug",params:{...r,...this.getCommonParams()}})}catch{}}getCommonParams(){return{...this.getLocationInfo(),...this.getNavigatorInfo(),...this.getScreenInfo(),appName:window.__appsInToss.appName,deploymentId:window.__appsInToss.deploymentId,sessionId:window.__appsInToss.sessionId,isGame:window.__appsInToss.webViewType==="game",timestampMs:Date.now()}}getLocationInfo(){return{url:window.location.href,urlOrigin:window.location.origin,urlHost:window.location.hostname,urlPath:window.location.pathname,urlSearch:window.location.search}}getNavigatorInfo(){return{userAgent:navigator.userAgent,platform:navigator.platform,language:navigator.language,cookieEnabled:navigator.cookieEnabled,hardwareConcurrency:navigator.hardwareConcurrency,deviceMemory:navigator.deviceMemory?navigator.deviceMemory*1024*1024:void 0,maxTouchPoints:navigator.maxTouchPoints}}getScreenInfo(){return{screenWidth:screen.width,screenHeight:screen.height,availableScreenWidth:screen.availWidth,availableScreenHeight:screen.availHeight,devicePixelRatio:window.devicePixelRatio,colorDepth:screen.colorDepth,pixelDepth:screen.pixelDepth,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight}}};var D=class{callbacks={};on(t,r){typeof this.callbacks[t]>"u"&&(this.callbacks[t]=[]),this.callbacks[t].push(r)}emit(t,r){this.callbacks[t]?.forEach(n=>n(r))}};window.__appsInToss={appName:u("getAppName")(),deploymentId:u("getDeploymentId")(),webViewType:u("getWebViewType")(),sessionId:Math.random().toString(36).substring(2),eventEmitter:new D,debugLogger:new R};var L=/\\.(data|wasm|framework\\.js)(?:\\.gz|\\.br|\\.unityweb)?$/;function N(e){window.fetch=new Proxy(window.fetch,{apply:e})}(()=>{if(window.__appsInToss.webViewType!=="game"||typeof caches>"u")return;let e="@apps-in-toss/caches/",t=`${e}${window.__appsInToss.deploymentId}`;window.addEventListener("load",async()=>{let r=await caches.keys();for(let n of r)n.startsWith(e)&&n!==t&&await caches.delete(n)}),N(async(r,n,o)=>{let s=new Request(o[0],o[1]);if(!L.test(s.url))return await r.call(n,s);let a=await caches.open(t),i=await a.match(s);if(i){let m=i.headers.get("ETag"),g=i.headers.get("Last-Modified");m&&s.headers.set("If-None-Match",m),g&&s.headers.set("If-Modified-Since",g);let v=await r.call(n,s);return v.status===304?(i.__revalidateResponse=v,i):(a.put(s,v.clone()),v)}let p=await r.call(n,s);return a.put(s,p.clone()),p})})();N(async(e,t,r)=>{let n=new Request(r[0],r[1]),o=Date.now();window.__appsInToss.eventEmitter.emit("fetchRequest",{request:n});let s=await e.call(t,n);return window.__appsInToss.eventEmitter.emit("fetchResponse",{request:n,response:s,requestAt:o}),s});var ne=window.__appsInToss.debugLogger;ne.log("load_start",{});window.addEventListener("load",()=>{let e=performance.timeOrigin,t=performance.getEntriesByType?.("navigation")[0]??null,r=typeof e<"u"&&t!==null,n=r?{navigationStartAtMs:e+t.startTime,navigationRedirectStartAtMs:e+t.redirectStart,navigationRedirectEndAtMs:e+t.redirectEnd,navigationRedirectCount:t.redirectCount,navigationServiceWorkerStartAtMs:e+t.workerStart,navigationFetchStartAtMs:e+t.fetchStart,navigationDomainLookupStartAtMs:e+t.domainLookupStart,navigationDomainLookupEndAtMs:e+t.domainLookupEnd,navigationConnectStartAtMs:e+t.connectStart,navigationSecureConnectStartAtMs:e+t.secureConnectionStart,navigationConnectEndAtMs:e+t.connectEnd,navigationRequestStartAtMs:e+t.requestStart,navigationResponseStartAtMs:e+t.responseStart,navigationResponseEndAtMs:e+t.responseEnd,navigationDomInteractiveAtMs:e+t.domInteractive,navigationDomContentLoadedEventStartAtMs:e+t.domContentLoadedEventStart,navigationDomContentLoadedEventEndAtMs:e+t.domContentLoadedEventEnd,navigationDomCompleteAtMs:e+t.domComplete}:{};ne.log("load_complete",{isNavigationDebugSupported:r,...n})});function T(e,t){return parseFloat(e.toFixed(t))}(()=>{if(typeof performance.memory>"u"||typeof performance.memory.usedJSHeapSize>"u"||typeof performance.memory.totalJSHeapSize>"u"||typeof performance.memory.jsHeapSizeLimit>"u")return;function e(t){window.__appsInToss.debugLogger.log(t,{usedJSHeapSize:T(performance.memory.usedJSHeapSize/1024,2),totalJSHeapSize:T(performance.memory.totalJSHeapSize/1024,2),jsHeapSizeLimit:T(performance.memory.jsHeapSizeLimit/1024,2)})}e("memory_usage_first_0s"),setTimeout(()=>e("memory_usage_first_1s"),1e3),setTimeout(()=>e("memory_usage_first_10s"),1e4),setTimeout(()=>e("memory_usage_first_30s"),3e4),setTimeout(()=>e("memory_usage_first_60s"),6e4),setInterval(()=>e("memory_usage_every_180s"),18e4)})();(()=>{let e=window.__appsInToss.debugLogger,t=performance.timeOrigin;if(typeof t>"u"||typeof PerformanceObserver>"u")return;new PerformanceObserver(o=>{o.getEntries().forEach(a=>{a.name==="first-paint"?e.log("first_paint",{fpStartAtMs:t+a.startTime}):a.name==="first-contentful-paint"&&e.log("first_contentful_paint",{fcpStartAtMs:t+a.startTime})})}).observe({type:"paint"}),new PerformanceObserver(o=>{o.getEntries().forEach(a=>{e.log("largest_contentful_paint",{lcpStartAtMs:t+a.startTime,lcpRenderSize:a.size})})}).observe({type:"largest-contentful-paint"})})();(()=>{if(window.__appsInToss.webViewType!=="game")return;function e(t){let r=t.getContext("webgl2")??t.getContext("webgl");if(r==null)return;let n=r.getExtension("WEBGL_debug_renderer_info"),o=r.getParameter(r.MAX_VIEWPORT_DIMS),s={webGLRenderer:r.getParameter(r.RENDERER),webGLVendor:r.getParameter(r.VENDOR),webGLVersion:r.getParameter(r.VERSION),webGLShadingLanguageVersion:r.getParameter(r.SHADING_LANGUAGE_VERSION),webGLMaxTextureSize:r.getParameter(r.MAX_TEXTURE_SIZE),webGLMaxViewportWidth:o[0],webGLMaxViewportHeight:o[1],webGLMaxRenderbufferSize:r.getParameter(r.MAX_RENDERBUFFER_SIZE)},a=n?{webGLUnmaskedVendor:r.getParameter(n.UNMASKED_VENDOR_WEBGL),webGLUnmaskedRenderer:r.getParameter(n.UNMASKED_RENDERER_WEBGL)}:{};window.__appsInToss.debugLogger.log("unity_webgl_info",{...s,...a})}window.addEventListener("load",()=>{let t=document.querySelector("#unity-canvas");if(t!=null){e(t);return}new MutationObserver((n,o)=>{for(let s of n)s.type==="childList"&&s.addedNodes.forEach(a=>{if(a instanceof HTMLCanvasElement&&a.getAttribute("id")==="unity-canvas"&&(e(a),o.disconnect()),a instanceof HTMLElement){let i=a.querySelector("#unity-canvas");i!=null&&(e(i),o.disconnect())}})}).observe(document.body,{childList:!0,subtree:!0})})})();(()=>{if(window.__appsInToss.webViewType!=="game")return;let e=window.__appsInToss.debugLogger,t=window.__appsInToss.eventEmitter;t.on("fetchRequest",({request:r})=>{L.test(r.url)&&e.log("game_resource_download_start",{gameResourceRequestURL:r.url})}),t.on("fetchResponse",async({request:r,requestAt:n,response:o})=>{if(!L.test(r.url))return;let s=T((await o.clone().blob()).size/1024,2),a=Date.now();e.log("game_resource_download_end",{gameResourceRequestURL:r.url,gameResourceRequestAtMs:n,gameResourceResponseAtMs:a,gameResourceResponseSize:s,gameResourceResponseStatus:o.__revalidateResponse?.status??o.status,gameResourceDownloadDurationMs:a-n})})})();})();\n';
44954
44954
  }
44955
44955
  });
44956
44956
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@apps-in-toss/web-framework",
3
3
  "type": "module",
4
- "version": "1.10.0",
4
+ "version": "1.11.0",
5
5
  "description": "Web Framework for Apps In Toss",
6
6
  "scripts": {
7
7
  "typecheck": "tsc --noEmit",
@@ -39,6 +39,7 @@
39
39
  "config.d.ts"
40
40
  ],
41
41
  "devDependencies": {
42
+ "@apps-in-toss/ait-format": "^1.0.0",
42
43
  "@babel/plugin-proposal-class-properties": "^7.16.7",
43
44
  "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7",
44
45
  "@babel/plugin-proposal-numeric-separator": "^7.16.7",
@@ -86,12 +87,12 @@
86
87
  "zod": "3.24.4"
87
88
  },
88
89
  "dependencies": {
89
- "@apps-in-toss/bridge-core": "1.10.0",
90
- "@apps-in-toss/cli": "1.10.0",
91
- "@apps-in-toss/framework": "1.10.0",
92
- "@apps-in-toss/plugins": "1.10.0",
93
- "@apps-in-toss/web-analytics": "1.10.0",
94
- "@apps-in-toss/web-bridge": "1.10.0",
90
+ "@apps-in-toss/bridge-core": "1.11.0",
91
+ "@apps-in-toss/cli": "1.11.0",
92
+ "@apps-in-toss/framework": "1.11.0",
93
+ "@apps-in-toss/plugins": "1.11.0",
94
+ "@apps-in-toss/web-analytics": "1.11.0",
95
+ "@apps-in-toss/web-bridge": "1.11.0",
95
96
  "@babel/core": "7.23.9",
96
97
  "@granite-js/cli": "0.1.31",
97
98
  "@granite-js/mpack": "0.1.31",