@overlayed/app 1.8.1 → 2.1.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/index.d.mts +61 -9
- package/dist/index.mjs +2 -2
- package/dist/sand.d.ts +72 -72
- package/dist/siege.d.ts +29 -24
- package/dist/siege.js +1 -1
- package/package.json +3 -3
package/dist/index.d.mts
CHANGED
|
@@ -402,14 +402,6 @@ declare function module(): {
|
|
|
402
402
|
readonly key: "universal";
|
|
403
403
|
readonly events: import("arktype").Module<{
|
|
404
404
|
event: {
|
|
405
|
-
game: "sand" | "siege" | "tft";
|
|
406
|
-
type: "module_loaded";
|
|
407
|
-
creationTime: number;
|
|
408
|
-
content: {
|
|
409
|
-
gameVersion: string;
|
|
410
|
-
processHash: string;
|
|
411
|
-
};
|
|
412
|
-
} | {
|
|
413
405
|
game: "sand";
|
|
414
406
|
type: "logged_in";
|
|
415
407
|
creationTime: number;
|
|
@@ -426,6 +418,14 @@ declare function module(): {
|
|
|
426
418
|
content: {
|
|
427
419
|
accountId: string;
|
|
428
420
|
};
|
|
421
|
+
} | {
|
|
422
|
+
game: "sand" | "siege" | "tft";
|
|
423
|
+
type: "module_loaded";
|
|
424
|
+
creationTime: number;
|
|
425
|
+
content: {
|
|
426
|
+
gameVersion: string;
|
|
427
|
+
processHash: string;
|
|
428
|
+
};
|
|
429
429
|
} | {
|
|
430
430
|
game: "sand" | "siege" | "tft";
|
|
431
431
|
type: "module_unloaded";
|
|
@@ -1108,6 +1108,53 @@ type OverlayedApp<TModule extends GameModule, TKeybind extends string, TFeatureF
|
|
|
1108
1108
|
*/
|
|
1109
1109
|
initialized: boolean;
|
|
1110
1110
|
};
|
|
1111
|
+
/**
|
|
1112
|
+
* What the navigation guard should do with a `window.open` / `target="_blank"`
|
|
1113
|
+
* request:
|
|
1114
|
+
*
|
|
1115
|
+
* - `"allow"` — open the window in-app, like a regular Electron child window.
|
|
1116
|
+
* - `"external"` — deny the in-app window and open the URL in the system
|
|
1117
|
+
* browser instead, without requiring user activation. Only honored for
|
|
1118
|
+
* `http`/`https` URLs.
|
|
1119
|
+
* - `"deny"` — deny the window without opening anything.
|
|
1120
|
+
*/
|
|
1121
|
+
type WindowOpenAction = "allow" | "external" | "deny";
|
|
1122
|
+
interface OverlayedNavigationGuardOptions {
|
|
1123
|
+
/**
|
|
1124
|
+
* Hosts the main frame is allowed to navigate to, in addition to the
|
|
1125
|
+
* application's own origin and the origin currently loaded in the window.
|
|
1126
|
+
* Useful for legitimate top-frame cross-origin flows such as OAuth
|
|
1127
|
+
* redirects.
|
|
1128
|
+
*
|
|
1129
|
+
* Matched against `URL.host` (hostname + port), e.g. `"auth.ubisoft.com"`.
|
|
1130
|
+
*
|
|
1131
|
+
* @default []
|
|
1132
|
+
*/
|
|
1133
|
+
allowedHosts?: string[];
|
|
1134
|
+
/**
|
|
1135
|
+
* Overrides the default `window.open` policy for a specific URL. Return a
|
|
1136
|
+
* {@link WindowOpenAction} to decide what happens, or `undefined` to fall
|
|
1137
|
+
* back to the default policy (allowed origins open in-app, other web URLs
|
|
1138
|
+
* open in the system browser if the user just clicked or pressed a key,
|
|
1139
|
+
* everything else is denied).
|
|
1140
|
+
*
|
|
1141
|
+
* ```ts
|
|
1142
|
+
* overlayed({
|
|
1143
|
+
* navigationGuard: {
|
|
1144
|
+
* windowOpenHandler: ({ url }) => {
|
|
1145
|
+
* if (new URL(url).host === "checkout.stripe.com") {
|
|
1146
|
+
* return "allow";
|
|
1147
|
+
* }
|
|
1148
|
+
* return undefined;
|
|
1149
|
+
* },
|
|
1150
|
+
* },
|
|
1151
|
+
* });
|
|
1152
|
+
* ```
|
|
1153
|
+
*/
|
|
1154
|
+
windowOpenHandler?: (details: {
|
|
1155
|
+
url: string;
|
|
1156
|
+
}) => WindowOpenAction | undefined;
|
|
1157
|
+
}
|
|
1111
1158
|
interface OverlayedOptions<TModule extends GameModule, TKeybind extends string, TFeatureFlag extends string = string> {
|
|
1112
1159
|
/**
|
|
1113
1160
|
* The electron instance.
|
|
@@ -1172,6 +1219,11 @@ interface OverlayedOptions<TModule extends GameModule, TKeybind extends string,
|
|
|
1172
1219
|
* ```
|
|
1173
1220
|
*/
|
|
1174
1221
|
featureFlags?: Record<TFeatureFlag, boolean>;
|
|
1222
|
+
/**
|
|
1223
|
+
* Configuration for the navigation guard applied to every window created via
|
|
1224
|
+
* `overlay.windows`. See {@link OverlayedNavigationGuardOptions}.
|
|
1225
|
+
*/
|
|
1226
|
+
navigationGuard?: OverlayedNavigationGuardOptions;
|
|
1175
1227
|
/**
|
|
1176
1228
|
* Site module configuration.
|
|
1177
1229
|
*/
|
|
@@ -1191,4 +1243,4 @@ interface OverlayedOptions<TModule extends GameModule, TKeybind extends string,
|
|
|
1191
1243
|
//#region src/utilities/overlayed.d.ts
|
|
1192
1244
|
declare function overlayed<TModule extends GameModule, TShortcut extends string, TFeatureFlag extends string = string>(optionsRaw: OverlayedOptions<TModule, TShortcut, TFeatureFlag>): OverlayedApp<TModule, TShortcut, TFeatureFlag>;
|
|
1193
1245
|
//#endregion
|
|
1194
|
-
export { type ActiveGameInfo, type BundleAppConfig, type BundleSiteConfig, type ErrorEvents, type FatalEvents, type FeatureFlagLayers, type FeatureFlagModel, type FeedbackId, type FeedbackType, type GameCloseEvent, type GameLaunchEvent, type GameReadyEvent, type KeybindSchemaEntry as KeybindConfig, type KeyboardKeyEvent, type LoggerScope, type MouseButtonEvent, type NoticeId, type NoticeModel, type NoticeType, type OverlayedApp, type OverlayedConfig, type OverridesManagerScope, type ProgressInfo, RenderInterface, type RenderWindow, type RenderWindowConstructorOptions, type UpdateCheckResult, VirtualKey, type WarningEvents, type WindowEvent, defineConfig, overlayed };
|
|
1246
|
+
export { type ActiveGameInfo, type BundleAppConfig, type BundleSiteConfig, type ErrorEvents, type FatalEvents, type FeatureFlagLayers, type FeatureFlagModel, type FeedbackId, type FeedbackType, type GameCloseEvent, type GameLaunchEvent, type GameReadyEvent, type KeybindSchemaEntry as KeybindConfig, type KeyboardKeyEvent, type LoggerScope, type MouseButtonEvent, type NoticeId, type NoticeModel, type NoticeType, type OverlayedApp, type OverlayedConfig, type OverlayedNavigationGuardOptions, type OverridesManagerScope, type ProgressInfo, RenderInterface, type RenderWindow, type RenderWindowConstructorOptions, type UpdateCheckResult, VirtualKey, type WarningEvents, type WindowEvent, type WindowOpenAction, defineConfig, overlayed };
|
package/dist/index.mjs
CHANGED
|
@@ -12,6 +12,6 @@ Defaulting to 2020, but this will stop working in the future.`)),t.ecmaVersion=1
|
|
|
12
12
|
`;break;default:e+=String.fromCharCode(n)}this.options.locations&&(++this.curLine,this.lineStart=this.pos),t=this.pos}else++this.pos}},H.readInvalidTemplateToken=function(){for(;this.pos<this.input.length;this.pos++)switch(this.input[this.pos]){case`\\`:++this.pos;break;case`$`:if(this.input[this.pos+1]!==`{`)break;case"`":return this.finishToken(b.invalidTemplate,this.input.slice(this.start,this.pos));case`\r`:this.input[this.pos+1]===`
|
|
13
13
|
`&&++this.pos;case`
|
|
14
14
|
`:case`\u2028`:case`\u2029`:++this.curLine,this.lineStart=this.pos+1}this.raise(this.start,`Unterminated template`)},H.readEscapedChar=function(e){var t=this.input.charCodeAt(++this.pos);switch(++this.pos,t){case 110:return`
|
|
15
|
-
`;case 114:return`\r`;case 120:return String.fromCharCode(this.readHexChar(2));case 117:return k(this.readCodePoint());case 116:return` `;case 98:return`\b`;case 118:return`\v`;case 102:return`\f`;case 13:this.input.charCodeAt(this.pos)===10&&++this.pos;case 10:return this.options.locations&&(this.lineStart=this.pos,++this.curLine),``;case 56:case 57:if(this.strict&&this.invalidStringToken(this.pos-1,`Invalid escape sequence`),e){var n=this.pos-1;this.invalidStringToken(n,`Invalid escape sequence in template string`)}default:if(t>=48&&t<=55){var r=this.input.substr(this.pos-1,3).match(/^[0-7]+/)[0],i=parseInt(r,8);return i>255&&(r=r.slice(0,-1),i=parseInt(r,8)),this.pos+=r.length-1,t=this.input.charCodeAt(this.pos),r===`0`&&t!==56&&t!==57||!this.strict&&!e||this.invalidStringToken(this.pos-1-r.length,e?`Octal literal in template string`:`Octal literal in strict mode`),String.fromCharCode(i)}return C(t)?(this.options.locations&&(this.lineStart=this.pos,++this.curLine),``):String.fromCharCode(t)}},H.readHexChar=function(e){var t=this.pos,n=this.readInt(16,e);return n===null&&this.invalidStringToken(t,`Bad character escape sequence`),n},H.readWord1=function(){this.containsEsc=!1;for(var e=``,t=!0,n=this.pos,r=this.options.ecmaVersion>=6;this.pos<this.input.length;){var i=this.fullCharCodeAtPos();if(m(i,r))this.pos+=i<=65535?1:2;else{if(i!==92)break;this.containsEsc=!0,e+=this.input.slice(n,this.pos);var a=this.pos;this.input.charCodeAt(++this.pos)!==117&&this.invalidStringToken(this.pos,`Expecting Unicode escape sequence \\uXXXX`),++this.pos;var o=this.readCodePoint();(t?p:m)(o,r)||this.invalidStringToken(a,`Invalid Unicode escape`),e+=k(o),n=this.pos}t=!1}return e+this.input.slice(n,this.pos)},H.readWord=function(){var e=this.readWord1(),t=b.name;return this.keywords.test(e)&&(t=ee[e]),this.finishToken(t,e)},M.acorn={Parser:M,version:`8.16.0`,defaultOptions:ue,Position:se,SourceLocation:ce,getLineInfo:le,Node:je,TokenType:h,tokTypes:b,keywordTypes:ee,TokContext:Ce,tokContexts:R,isIdentifierChar:m,isIdentifierStart:p,Token:ot,isNewLine:C,lineBreak:x,lineBreakG:S,nonASCIIwhitespace:te};var lt=r(`node:module`),U=r(`node:fs`);String.fromCharCode;let ut=/\/$|\/\?|\/#/,dt=/^\.?\//;function ft(e=``,t){return t?ut.test(e):e.endsWith(`/`)}function pt(e=``,t){if(!t)return e.endsWith(`/`)?e:e+`/`;if(ft(e,!0))return e||`/`;let n=e,r=``,i=e.indexOf(`#`);if(i!==-1&&(n=e.slice(0,i),r=e.slice(i),!n))return r;let[a,...o]=n.split(`?`);return a+`/`+(o.length>0?`?${o.join(`?`)}`:``)+r}function mt(e){return e&&e!==`/`}function ht(e,...t){let n=e||``;for(let e of t.filter(e=>mt(e)))if(n){let t=e.replace(dt,``);n=pt(n)+t}else n=e;return n}let gt=/^[A-Za-z]:\//;function _t(e=``){return e&&e.replace(/\\/g,`/`).replace(gt,e=>e.toUpperCase())}let vt=/^[/\\]{2}/,yt=/^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Za-z]:[/\\]/,bt=/^[A-Za-z]:$/,xt=/.(\.[^./]+|\.)$/,St=function(e){if(e.length===0)return`.`;let t=(e=_t(e)).match(vt),n=Dt(e),r=e[e.length-1]===`/`;return(e=Et(e,!n)).length===0?n?`/`:r?`./`:`.`:(r&&(e+=`/`),bt.test(e)&&(e+=`/`),t?n?`//${e}`:`//./${e}`:n&&!Dt(e)?`/${e}`:e)},Ct=function(...e){let t=``;for(let n of e)if(n)if(t.length>0){let e=t[t.length-1]===`/`,r=n[0]===`/`;t+=e&&r?n.slice(1):e||r?n:`/${n}`}else t+=n;return St(t)};function wt(){return typeof process<`u`&&typeof process.cwd==`function`?process.cwd().replace(/\\/g,`/`):`/`}let Tt=function(...e){let t=``,n=!1;for(let r=(e=e.map(e=>_t(e))).length-1;r>=-1&&!n;r--){let i=r>=0?e[r]:wt();i&&i.length!==0&&(t=`${i}/${t}`,n=Dt(i))}return t=Et(t,!n),n&&!Dt(t)?`/${t}`:t.length>0?t:`.`};function Et(e,t){let n=``,r=0,i=-1,a=0,o=null;for(let s=0;s<=e.length;++s){if(s<e.length)o=e[s];else{if(o===`/`)break;o=`/`}if(o===`/`){if(!(i===s-1||a===1))if(a===2){if(n.length<2||r!==2||n[n.length-1]!==`.`||n[n.length-2]!==`.`){if(n.length>2){let e=n.lastIndexOf(`/`);e===-1?(n=``,r=0):(n=n.slice(0,e),r=n.length-1-n.lastIndexOf(`/`)),i=s,a=0;continue}if(n.length>0){n=``,r=0,i=s,a=0;continue}}t&&(n+=n.length>0?`/..`:`..`,r=2)}else n.length>0?n+=`/${e.slice(i+1,s)}`:n=e.slice(i+1,s),r=s-i-1;i=s,a=0}else o===`.`&&a!==-1?++a:a=-1}return n}let Dt=function(e){return yt.test(e)},Ot=function(e){if(e===`..`)return``;let t=xt.exec(_t(e));return t&&t[1]||``},kt=function(e){let t=_t(e).replace(/\/$/,``).split(`/`).slice(0,-1);return t.length===1&&bt.test(t[0])&&(t[0]+=`/`),t.join(`/`)||(Dt(e)?`/`:`.`)},At=function(e,t){let n=_t(e).split(`/`),r=``;for(let e=n.length-1;e>=0;e--){let t=n[e];if(t){r=t;break}}return t&&r.endsWith(t)?r.slice(0,-t.length):r},W=A(`node:url`),G=A(`node:assert`),jt=A(`node:process`);var Mt=r(`node:path`);let Nt=A(`node:v8`),Pt=A(`node:util`),Ft=new Set(lt.builtinModules);function It(e){return e.replace(/\\/g,`/`)}let Lt={}.hasOwnProperty,Rt=/^([A-Z][a-z\d]*)+$/,zt=new Set([`string`,`function`,`number`,`object`,`Function`,`Object`,`boolean`,`bigint`,`symbol`]),K={};function q(e,t=`and`){return e.length<3?e.join(` ${t} `):`${e.slice(0,-1).join(`, `)}, ${t} ${e[e.length-1]}`}let Bt=new Map,Vt;function Ht(e,t,n){return Bt.set(e,t),function(e,t){return n;function n(...n){let r=Error.stackTraceLimit;Ut()&&(Error.stackTraceLimit=0);let i=new e;Ut()&&(Error.stackTraceLimit=r);let a=function(e,t,n){let r=Bt.get(e);if(G.ok(r!==void 0,"expected `message` to be found"),typeof r==`function`)return G.ok(r.length<=t.length,`Code: ${e}; The provided arguments length (${t.length}) does not match the required ones (${r.length}).`),Reflect.apply(r,n,t);let i=/%[dfijoOs]/g,a=0;for(;i.exec(r)!==null;)a++;return G.ok(a===t.length,`Code: ${e}; The provided arguments length (${t.length}) does not match the required ones (${a}).`),t.length===0?r:(t.unshift(r),Reflect.apply(Pt.format,null,t))}(t,n,i);return Object.defineProperties(i,{message:{value:a,enumerable:!1,writable:!0,configurable:!0},toString:{value(){return`${this.name} [${t}]: ${this.message}`},enumerable:!1,writable:!0,configurable:!0}}),Wt(i),i.code=t,i}}(n,e)}function Ut(){try{if(Nt.startupSnapshot.isBuildingSnapshot())return!1}catch{}let e=Object.getOwnPropertyDescriptor(Error,`stackTraceLimit`);return e===void 0?Object.isExtensible(Error):Lt.call(e,`writable`)&&e.writable!==void 0?e.writable:e.set!==void 0}K.ERR_INVALID_ARG_TYPE=Ht(`ERR_INVALID_ARG_TYPE`,(e,t,n)=>{G.ok(typeof e==`string`,`'name' must be a string`),Array.isArray(t)||(t=[t]);let r=`The `;if(e.endsWith(` argument`))r+=`${e} `;else{let t=e.includes(`.`)?`property`:`argument`;r+=`"${e}" ${t} `}r+=`must be `;let i=[],a=[],o=[];for(let e of t)G.ok(typeof e==`string`,`All expected entries have to be of type string`),zt.has(e)?i.push(e.toLowerCase()):Rt.exec(e)===null?(G.ok(e!==`object`,`The value "object" should be written as "Object"`),o.push(e)):a.push(e);if(a.length>0){let e=i.indexOf(`object`);e!==-1&&(i.slice(e,1),a.push(`Object`))}return i.length>0&&(r+=`${i.length>1?`one of type`:`of type`} ${q(i,`or`)}`,(a.length>0||o.length>0)&&(r+=` or `)),a.length>0&&(r+=`an instance of ${q(a,`or`)}`,o.length>0&&(r+=` or `)),o.length>0&&(o.length>1?r+=`one of ${q(o,`or`)}`:(o[0].toLowerCase()!==o[0]&&(r+=`an `),r+=`${o[0]}`)),r+=`. Received ${function(e){if(e==null)return String(e);if(typeof e==`function`&&e.name)return`function ${e.name}`;if(typeof e==`object`)return e.constructor&&e.constructor.name?`an instance of ${e.constructor.name}`:`${(0,Pt.inspect)(e,{depth:-1})}`;let t=(0,Pt.inspect)(e,{colors:!1});return t.length>28&&(t=`${t.slice(0,25)}...`),`type ${typeof e} (${t})`}(n)}`,r},TypeError),K.ERR_INVALID_MODULE_SPECIFIER=Ht(`ERR_INVALID_MODULE_SPECIFIER`,(e,t,n=void 0)=>`Invalid module "${e}" ${t}${n?` imported from ${n}`:``}`,TypeError),K.ERR_INVALID_PACKAGE_CONFIG=Ht(`ERR_INVALID_PACKAGE_CONFIG`,(e,t,n)=>`Invalid package config ${e}${t?` while importing ${t}`:``}${n?`. ${n}`:``}`,Error),K.ERR_INVALID_PACKAGE_TARGET=Ht(`ERR_INVALID_PACKAGE_TARGET`,(e,t,n,r=!1,i=void 0)=>{let a=typeof n==`string`&&!r&&n.length>0&&!n.startsWith(`./`);return t===`.`?(G.ok(!1===r),`Invalid "exports" main target ${JSON.stringify(n)} defined in the package config ${e}package.json${i?` imported from ${i}`:``}${a?`; targets must start with "./"`:``}`):`Invalid "${r?`imports`:`exports`}" target ${JSON.stringify(n)} defined for '${t}' in the package config ${e}package.json${i?` imported from ${i}`:``}${a?`; targets must start with "./"`:``}`},Error),K.ERR_MODULE_NOT_FOUND=Ht(`ERR_MODULE_NOT_FOUND`,(e,t,n=!1)=>`Cannot find ${n?`module`:`package`} '${e}' imported from ${t}`,Error),K.ERR_NETWORK_IMPORT_DISALLOWED=Ht(`ERR_NETWORK_IMPORT_DISALLOWED`,`import of '%s' by %s is not supported: %s`,Error),K.ERR_PACKAGE_IMPORT_NOT_DEFINED=Ht(`ERR_PACKAGE_IMPORT_NOT_DEFINED`,(e,t,n)=>`Package import specifier "${e}" is not defined${t?` in package ${t}package.json`:``} imported from ${n}`,TypeError),K.ERR_PACKAGE_PATH_NOT_EXPORTED=Ht(`ERR_PACKAGE_PATH_NOT_EXPORTED`,(e,t,n=void 0)=>t===`.`?`No "exports" main defined in ${e}package.json${n?` imported from ${n}`:``}`:`Package subpath '${t}' is not defined by "exports" in ${e}package.json${n?` imported from ${n}`:``}`,Error),K.ERR_UNSUPPORTED_DIR_IMPORT=Ht(`ERR_UNSUPPORTED_DIR_IMPORT`,`Directory import '%s' is not supported resolving ES modules imported from %s`,Error),K.ERR_UNSUPPORTED_RESOLVE_REQUEST=Ht(`ERR_UNSUPPORTED_RESOLVE_REQUEST`,`Failed to resolve module specifier "%s" from "%s": Invalid relative URL or base scheme is not hierarchical.`,TypeError),K.ERR_UNKNOWN_FILE_EXTENSION=Ht(`ERR_UNKNOWN_FILE_EXTENSION`,(e,t)=>`Unknown file extension "${e}" for ${t}`,TypeError),K.ERR_INVALID_ARG_VALUE=Ht(`ERR_INVALID_ARG_VALUE`,(e,t,n=`is invalid`)=>{let r=(0,Pt.inspect)(t);return r.length>128&&(r=`${r.slice(0,128)}...`),`The ${e.includes(`.`)?`property`:`argument`} '${e}' ${n}. Received ${r}`},TypeError);let Wt=function(e){let t=`__node_internal_`+e.name;return Object.defineProperty(e,"name",{value:t}),e}(function(e){let t=Ut();return t&&(Vt=Error.stackTraceLimit,Error.stackTraceLimit=1/0),Error.captureStackTrace(e),t&&(Error.stackTraceLimit=Vt),e}),J={}.hasOwnProperty,{ERR_INVALID_PACKAGE_CONFIG:Gt}=K,Kt=new Map;function qt(e,{base:t,specifier:n}){let r=Kt.get(e);if(r)return r;let i;try{i=U.readFileSync(Mt.toNamespacedPath(e),`utf8`)}catch(e){let t=e;if(t.code!==`ENOENT`)throw t}let a={exists:!1,pjsonPath:e,main:void 0,name:void 0,type:`none`,exports:void 0,imports:void 0};if(i!==void 0){let r;try{r=JSON.parse(i)}catch(r){let i=r,a=new Gt(e,(t?`"${n}" from `:``)+(0,W.fileURLToPath)(t||n),i.message);throw a.cause=i,a}a.exists=!0,J.call(r,`name`)&&typeof r.name==`string`&&(a.name=r.name),J.call(r,`main`)&&typeof r.main==`string`&&(a.main=r.main),J.call(r,`exports`)&&(a.exports=r.exports),J.call(r,`imports`)&&(a.imports=r.imports),!J.call(r,`type`)||r.type!==`commonjs`&&r.type!==`module`||(a.type=r.type)}return Kt.set(e,a),a}function Jt(e){let t=new URL(`package.json`,e);for(;!t.pathname.endsWith(`node_modules/package.json`);){let n=qt((0,W.fileURLToPath)(t),{specifier:e});if(n.exists)return n;let r=t;if(t=new URL(`../package.json`,t),t.pathname===r.pathname)break}return{pjsonPath:(0,W.fileURLToPath)(t),exists:!1,type:`none`}}function Yt(e){return Jt(e).type}let{ERR_UNKNOWN_FILE_EXTENSION:Xt}=K,Zt={}.hasOwnProperty,Qt={__proto__:null,".cjs":`commonjs`,".js":`module`,".json":`json`,".mjs":`module`},$t={__proto__:null,"data:":function(e){let{1:t}=/^([^/]+\/[^;,]+)[^,]*?(;base64)?,/.exec(e.pathname)||[null,null,null];return function(e){return e&&/\s*(text|application)\/javascript\s*(;\s*charset=utf-?8\s*)?/i.test(e)?`module`:e===`application/json`?`json`:null}(t)},"file:":function(e,t,n){let r=function(e){let t=e.pathname,n=t.length;for(;n--;){let e=t.codePointAt(n);if(e===47)return``;if(e===46)return t.codePointAt(n-1)===47?``:t.slice(n)}return``}(e);if(r===`.js`){let t=Yt(e);return t===`none`?`commonjs`:t}if(r===``){let t=Yt(e);return t===`none`||t===`commonjs`?`commonjs`:`module`}let i=Qt[r];if(i)return i;if(n)return;let a=(0,W.fileURLToPath)(e);throw new Xt(r,a)},"http:":en,"https:":en,"node:":()=>`builtin`};function en(){}let tn=Object.freeze([`node`,`import`]),nn=new Set(tn);function rn(e){return nn}let Y=RegExp.prototype[Symbol.replace],{ERR_INVALID_MODULE_SPECIFIER:an,ERR_INVALID_PACKAGE_CONFIG:on,ERR_INVALID_PACKAGE_TARGET:sn,ERR_MODULE_NOT_FOUND:cn,ERR_PACKAGE_IMPORT_NOT_DEFINED:ln,ERR_PACKAGE_PATH_NOT_EXPORTED:un,ERR_UNSUPPORTED_DIR_IMPORT:dn,ERR_UNSUPPORTED_RESOLVE_REQUEST:fn}=K,pn={}.hasOwnProperty,mn=/(^|\\|\/)((\.|%2e)(\.|%2e)?|(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|%6d|%4d)(o|%6f|%4f)(d|%64|%44)(u|%75|%55)(l|%6c|%4c)(e|%65|%45)(s|%73|%53))?(\\|\/|$)/i,hn=/(^|\\|\/)((\.|%2e)(\.|%2e)?|(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|%6d|%4d)(o|%6f|%4f)(d|%64|%44)(u|%75|%55)(l|%6c|%4c)(e|%65|%45)(s|%73|%53))(\\|\/|$)/i,gn=/^\.|%|\\/,_n=/\*/g,vn=/%2f|%5c/i,yn=new Set,bn=/[/\\]{2}/;function xn(e,t,n,r,i,a,o){if(jt.noDeprecation)return;let s=(0,W.fileURLToPath)(r),c=bn.exec(o?e:t)!==null;jt.emitWarning(`Use of deprecated ${c?`double slash`:`leading or trailing slash matching`} resolving "${e}" for module request "${t}" ${t===n?``:`matched to "${n}" `}in the "${i?`imports`:`exports`}" field module resolution of the package at ${s}${a?` imported from ${(0,W.fileURLToPath)(a)}`:``}.`,`DeprecationWarning`,`DEP0166`)}function Sn(e,t,n,r){if(jt.noDeprecation||function(e,t){let n=e.protocol;return Zt.call($t,n)&&$t[n](e,t,!0)||null}(e,{parentURL:n.href})!==`module`)return;let i=(0,W.fileURLToPath)(e.href),a=(0,W.fileURLToPath)(new URL(`.`,t)),o=(0,W.fileURLToPath)(n);r?Mt.resolve(a,r)!==i&&jt.emitWarning(`Package ${a} has a "main" field set to "${r}", excluding the full filename and extension to the resolved file at "${i.slice(a.length)}", imported from ${o}.\n Automatic extension resolution of the "main" field is deprecated for ES modules.`,`DeprecationWarning`,`DEP0151`):jt.emitWarning(`No "main" or "exports" field defined in the package.json for ${a} resolving the main entry point "${i.slice(a.length)}", imported from ${o}.\nDefault "index" lookups for the main are deprecated for ES modules.`,`DeprecationWarning`,`DEP0151`)}function Cn(e){try{return(0,U.statSync)(e)}catch{}}function wn(e){let t=(0,U.statSync)(e,{throwIfNoEntry:!1}),n=t?t.isFile():void 0;return n!=null&&n}function Tn(e,t,n){let r;if(t.main!==void 0){if(r=new URL(t.main,e),wn(r))return r;let i=[`./${t.main}.js`,`./${t.main}.json`,`./${t.main}.node`,`./${t.main}/index.js`,`./${t.main}/index.json`,`./${t.main}/index.node`],a=-1;for(;++a<i.length&&(r=new URL(i[a],e),!wn(r));)r=void 0;if(r)return Sn(r,e,n,t.main),r}let i=[`./index.js`,`./index.json`,`./index.node`],a=-1;for(;++a<i.length&&(r=new URL(i[a],e),!wn(r));)r=void 0;if(r)return Sn(r,e,n,t.main),r;throw new cn((0,W.fileURLToPath)(new URL(`.`,e)),(0,W.fileURLToPath)(n))}function En(e,t,n){return new un((0,W.fileURLToPath)(new URL(`.`,t)),e,n&&(0,W.fileURLToPath)(n))}function Dn(e,t,n,r,i){return t=typeof t==`object`&&t?JSON.stringify(t,null,``):`${t}`,new sn((0,W.fileURLToPath)(new URL(`.`,n)),e,t,r,i&&(0,W.fileURLToPath)(i))}function On(e,t,n,r,i,a,o,s,c){if(t!==``&&!a&&e[e.length-1]!==`/`)throw Dn(n,e,r,o,i);if(!e.startsWith(`./`)){if(o&&!e.startsWith(`../`)&&!e.startsWith(`/`)){let n=!1;try{new URL(e),n=!0}catch{}if(!n)return Pn(a?Y.call(_n,e,()=>t):e+t,r,c)}throw Dn(n,e,r,o,i)}if(mn.exec(e.slice(2))!==null){if(hn.exec(e.slice(2))!==null)throw Dn(n,e,r,o,i);if(!s){let s=a?n.replace(`*`,()=>t):n+t;xn(a?Y.call(_n,e,()=>t):e,s,n,r,o,i,!0)}}let l=new URL(e,r),u=l.pathname,d=new URL(`.`,r).pathname;if(!u.startsWith(d))throw Dn(n,e,r,o,i);if(t===``)return l;if(mn.exec(t)!==null){let c=a?n.replace(`*`,()=>t):n+t;hn.exec(t)===null?s||xn(a?Y.call(_n,e,()=>t):e,c,n,r,o,i,!1):(function(e,t,n,r,i){let a=`request is not a valid match in pattern "${t}" for the "${r?`imports`:`exports`}" resolution of ${(0,W.fileURLToPath)(n)}`;throw new an(e,a,i&&(0,W.fileURLToPath)(i))})(c,n,r,o,i)}return a?new URL(Y.call(_n,l.href,()=>t)):new URL(t,l)}function kn(e){let t=Number(e);return`${t}`===e&&t>=0&&t<4294967295}function An(e,t,n,r,i,a,o,s,c){if(typeof t==`string`)return On(t,n,r,e,i,a,o,s,c);if(Array.isArray(t)){let l=t;if(l.length===0)return null;let u,d=-1;for(;++d<l.length;){let t=l[d],f;try{f=An(e,t,n,r,i,a,o,s,c)}catch(e){if(u=e,e.code===`ERR_INVALID_PACKAGE_TARGET`)continue;throw e}if(f!==void 0){if(f!==null)return f;u=null}}if(u==null)return null;throw u}if(typeof t==`object`&&t){let l=Object.getOwnPropertyNames(t),u=-1;for(;++u<l.length;)if(kn(l[u]))throw new on((0,W.fileURLToPath)(e),i,`"exports" cannot contain numeric property keys.`);for(u=-1;++u<l.length;){let d=l[u];if(d==="default"||c&&c.has(d)){let l=An(e,t[d],n,r,i,a,o,s,c);if(l===void 0)continue;return l}}return null}if(t===null)return null;throw Dn(r,t,e,o,i)}function jn(e,t,n){if(jt.noDeprecation)return;let r=(0,W.fileURLToPath)(t);yn.has(r+`|`+e)||(yn.add(r+`|`+e),jt.emitWarning(`Use of deprecated trailing slash pattern mapping "${e}" in the "exports" field module resolution of the package at ${r}${n?` imported from ${(0,W.fileURLToPath)(n)}`:``}. Mapping specifiers ending in "/" is no longer supported.`,`DeprecationWarning`,`DEP0155`))}function X(e,t,n,r,i){let a=n.exports;if(function(e,t,n){if(typeof e==`string`||Array.isArray(e))return!0;if(typeof e!=`object`||!e)return!1;let r=Object.getOwnPropertyNames(e),i=!1,a=0,o=-1;for(;++o<r.length;){let e=r[o],s=e===``||e[0]!==`.`;if(a++===0)i=s;else if(i!==s)throw new on((0,W.fileURLToPath)(t),n,`"exports" cannot contain some keys starting with '.' and some not. The exports object must either be an object of package subpath keys or an object of main entry condition name keys only.`)}return i}(a,e,r)&&(a={".":a}),pn.call(a,t)&&!t.includes(`*`)&&!t.endsWith(`/`)){let n=An(e,a[t],``,t,r,!1,!1,!1,i);if(n==null)throw En(t,e,r);return n}let o=``,s=``,c=Object.getOwnPropertyNames(a),l=-1;for(;++l<c.length;){let n=c[l],i=n.indexOf(`*`);if(i!==-1&&t.startsWith(n.slice(0,i))){t.endsWith(`/`)&&jn(t,e,r);let a=n.slice(i+1);t.length>=n.length&&t.endsWith(a)&&Mn(o,n)===1&&n.lastIndexOf(`*`)===i&&(o=n,s=t.slice(i,t.length-a.length))}}if(o){let n=An(e,a[o],s,o,r,!0,!1,t.endsWith(`/`),i);if(n==null)throw En(t,e,r);return n}throw En(t,e,r)}function Mn(e,t){let n=e.indexOf(`*`),r=t.indexOf(`*`),i=n===-1?e.length:n+1,a=r===-1?t.length:r+1;return i>a?-1:a>i||n===-1?1:r===-1||e.length>t.length?-1:+(t.length>e.length)}function Nn(e,t,n){if(e===`#`||e.startsWith(`#/`)||e.endsWith(`/`))throw new an(e,`is not a valid internal imports specifier name`,(0,W.fileURLToPath)(t));let r,i=Jt(t);if(i.exists){r=(0,W.pathToFileURL)(i.pjsonPath);let a=i.imports;if(a)if(pn.call(a,e)&&!e.includes(`*`)){let i=An(r,a[e],``,e,t,!1,!0,!1,n);if(i!=null)return i}else{let i=``,o=``,s=Object.getOwnPropertyNames(a),c=-1;for(;++c<s.length;){let t=s[c],n=t.indexOf(`*`);if(n!==-1&&e.startsWith(t.slice(0,-1))){let r=t.slice(n+1);e.length>=t.length&&e.endsWith(r)&&Mn(i,t)===1&&t.lastIndexOf(`*`)===n&&(i=t,o=e.slice(n,e.length-r.length))}}if(i){let e=An(r,a[i],o,i,t,!0,!0,!1,n);if(e!=null)return e}}}throw function(e,t,n){return new ln(e,t&&(0,W.fileURLToPath)(new URL(`.`,t)),(0,W.fileURLToPath)(n))}(e,r,t)}function Pn(e,t,n){if(lt.builtinModules.includes(e))return new URL(`node:`+e);let{packageName:r,packageSubpath:i,isScoped:a}=function(e,t){let n=e.indexOf(`/`),r=!0,i=!1;e[0]===`@`&&(i=!0,n===-1||e.length===0?r=!1:n=e.indexOf(`/`,n+1));let a=n===-1?e:e.slice(0,n);if(gn.exec(a)!==null&&(r=!1),!r)throw new an(e,`is not a valid package name`,(0,W.fileURLToPath)(t));return{packageName:a,packageSubpath:`.`+(n===-1?``:e.slice(n)),isScoped:i}}(e,t),o=Jt(t);if(o.exists){let e=(0,W.pathToFileURL)(o.pjsonPath);if(o.name===r&&o.exports!==void 0&&o.exports!==null)return X(e,i,o,t,n)}let s,c=new URL(`./node_modules/`+r+`/package.json`,t),l=(0,W.fileURLToPath)(c);do{let o=Cn(l.slice(0,-13));if(!o||!o.isDirectory()){s=l,c=new URL((a?`../../../../node_modules/`:`../../../node_modules/`)+r+`/package.json`,c),l=(0,W.fileURLToPath)(c);continue}let u=qt(l,{base:t,specifier:e});return u.exports!==void 0&&u.exports!==null?X(c,i,u,t,n):i===`.`?Tn(c,u,t):new URL(i,c)}while(l.length!==s.length)}function Fn(e,t,n,r){n===void 0&&(n=rn());let i=t.protocol,a=i===`data:`||i===`http:`||i===`https:`,o;if(function(e){return e!==``&&(e[0]===`/`||function(e){return e[0]===`.`&&(e.length===1||e[1]===`/`||e[1]===`.`&&(e.length===2||e[2]===`/`))}(e))}(e))try{o=new URL(e,t)}catch(n){let r=new fn(e,t);throw r.cause=n,r}else if(i===`file:`&&e[0]===`#`)o=Nn(e,t,n);else try{o=new URL(e)}catch(r){if(a&&!lt.builtinModules.includes(e)){let n=new fn(e,t);throw n.cause=r,n}o=Pn(e,t,n)}return G.ok(o!==void 0,`expected to be defined`),o.protocol===`file:`?function(e,t){if(vn.exec(e.pathname)!==null)throw new an(e.pathname,`must not include encoded "/" or "\\" characters`,(0,W.fileURLToPath)(t));let n;try{n=(0,W.fileURLToPath)(e)}catch(n){let r=n;throw Object.defineProperty(r,"input",{value:String(e)}),Object.defineProperty(r,"module",{value:String(t)}),r}let r=Cn(n.endsWith(`/`)?n.slice(-1):n);if(r&&r.isDirectory()){let r=new dn(n,(0,W.fileURLToPath)(t));throw r.url=String(e),r}if(!r||!r.isFile()){let r=new cn(n||e.pathname,t&&(0,W.fileURLToPath)(t),!0);throw r.url=String(e),r}{let t=(0,U.realpathSync)(n),{search:r,hash:i}=e;(e=(0,W.pathToFileURL)(t+(n.endsWith(Mt.sep)?`/`:``))).search=r,e.hash=i}return e}(o,t):o}function In(e){return typeof e!=`string`||e.startsWith(`file://`)?It((0,W.fileURLToPath)(e)):It(e)}function Ln(e){return(0,W.pathToFileURL)(In(e)).toString()}let Rn=new Set([`node`,`import`]),zn=[`.mjs`,`.cjs`,`.js`,`.json`],Bn=new Set([`ERR_MODULE_NOT_FOUND`,`ERR_UNSUPPORTED_DIR_IMPORT`,`MODULE_NOT_FOUND`,`ERR_PACKAGE_PATH_NOT_EXPORTED`]);function Vn(e,t,n){try{return Fn(e,t,n)}catch(e){if(!Bn.has(e?.code))throw e}}function Hn(e,t={}){if(typeof e!=`string`){if(!(e instanceof URL))throw TypeError("input must be a `string` or `URL`");e=In(e)}if(/(?:node|data|http|https):/.test(e))return e;if(Ft.has(e))return`node:`+e;if(e.startsWith(`file://`)&&(e=In(e)),Dt(e))try{if((0,U.statSync)(e).isFile())return Ln(e)}catch(e){if(e?.code!==`ENOENT`)throw e}let n=t.conditions?new Set(t.conditions):Rn,r=(Array.isArray(t.url)?t.url:[t.url]).filter(Boolean).map(e=>new URL(function(e){return typeof e!=`string`&&(e=e.toString()),/(?:node|data|http|https|file):/.test(e)?e:Ft.has(e)?`node:`+e:`file://`+encodeURI(It(e))}(e.toString())));r.length===0&&r.push(new URL(Ln(process.cwd())));let i=[...r];for(let e of r)e.protocol===`file:`&&i.push(new URL(`./`,e),new URL(ht(e.pathname,`_index.js`),e),new URL(`node_modules`,e));let a;for(let r of i){if(a=Vn(e,r,n),a)break;for(let i of[``,`/index`]){for(let o of t.extensions||zn)if(a=Vn(ht(e,i)+o,r,n),a)break;if(a)break}if(a)break}if(!a){let t=Error(`Cannot find module ${e} imported from ${i.join(`, `)}`);throw t.code=`ERR_MODULE_NOT_FOUND`,t}return Ln(a)}function Un(e,t){return Hn(e,t)}function Wn(e,t){return In(Un(e,t))}let Gn=/(?:[\s;]|^)(?:import[\s\w*,{}]*from|import\s*["'*{]|export\b\s*(?:[*{]|default|class|type|function|const|var|let|async function)|import\.meta\b)/m,Kn=/\/\*.+?\*\/|\/\/.*(?=[nr])/g;function qn(e,t={}){return t.stripComments&&(e=e.replace(Kn,``)),Gn.test(e)}function Jn(e){if(typeof e!=`string`)throw TypeError(`Expected a string`);return e.replace(/[|\\{}()[\]^$+*?.]/g,`\\$&`).replace(/-/g,`\\x2d`)}let Yn=new Set([`/`,`\\`,void 0]),Xn=Symbol.for(`pathe:normalizedAlias`),Zn=/[/\\]/;function Qn(e){if(e[Xn])return e;let t=Object.fromEntries(Object.entries(e).sort(([e],[t])=>function(e,t){return t.split(`/`).length-e.split(`/`).length}(e,t)));for(let e in t)for(let n in t)n===e||e.startsWith(n)||t[e]?.startsWith(n)&&Yn.has(t[e][n.length])&&(t[e]=t[n]+t[e].slice(n.length));return Object.defineProperty(t,Xn,{value:!0,enumerable:!1}),t}function $n(e=`/`){let t=e[e.length-1];return t===`/`||t===`\\`}var er={rE:`2.6.1`};let tr=A(`node:crypto`);var nr=r.n(tr);let Z=globalThis.process?.env||Object.create(null),rr=globalThis.process||{env:Z},ir=rr!==void 0&&rr.env&&rr.env.NODE_ENV||void 0,ar=[[`claude`,[`CLAUDECODE`,`CLAUDE_CODE`]],[`replit`,[`REPL_ID`]],[`gemini`,[`GEMINI_CLI`]],[`codex`,[`CODEX_SANDBOX`,`CODEX_THREAD_ID`]],[`opencode`,[`OPENCODE`]],[`pi`,[or(`PATH`,/\.pi[\\/]agent/)]],[`auggie`,[`AUGMENT_AGENT`]],[`goose`,[`GOOSE_PROVIDER`]],[`devin`,[or(`EDITOR`,/devin/)]],[`cursor`,[`CURSOR_AGENT`]],[`kiro`,[or(`TERM_PROGRAM`,/kiro/)]]];function or(e,t){return()=>{let n=Z[e];return!!n&&t.test(n)}}let sr=function(){let e=Z.AI_AGENT;if(e)return{name:e.toLowerCase()};for(let[e,t]of ar)for(let n of t)if(typeof n==`string`?Z[n]:n())return{name:e};return{}}(),cr=(sr.name,sr.name,[[`APPVEYOR`],[`AWS_AMPLIFY`,`AWS_APP_ID`,{ci:!0}],[`AZURE_PIPELINES`,`SYSTEM_TEAMFOUNDATIONCOLLECTIONURI`],[`AZURE_STATIC`,`INPUT_AZURE_STATIC_WEB_APPS_API_TOKEN`],[`APPCIRCLE`,`AC_APPCIRCLE`],[`BAMBOO`,`bamboo_planKey`],[`BITBUCKET`,`BITBUCKET_COMMIT`],[`BITRISE`,`BITRISE_IO`],[`BUDDY`,`BUDDY_WORKSPACE_ID`],[`BUILDKITE`],[`CIRCLE`,`CIRCLECI`],[`CIRRUS`,`CIRRUS_CI`],[`CLOUDFLARE_PAGES`,`CF_PAGES`,{ci:!0}],[`CLOUDFLARE_WORKERS`,`WORKERS_CI`,{ci:!0}],[`GOOGLE_CLOUDRUN`,`K_SERVICE`],[`GOOGLE_CLOUDRUN_JOB`,`CLOUD_RUN_JOB`],[`CODEBUILD`,`CODEBUILD_BUILD_ARN`],[`CODEFRESH`,`CF_BUILD_ID`],[`DRONE`],[`DRONE`,`DRONE_BUILD_EVENT`],[`DSARI`],[`GITHUB_ACTIONS`],[`GITLAB`,`GITLAB_CI`],[`GITLAB`,`CI_MERGE_REQUEST_ID`],[`GOCD`,`GO_PIPELINE_LABEL`],[`LAYERCI`],[`JENKINS`,`JENKINS_URL`],[`HUDSON`,`HUDSON_URL`],[`MAGNUM`],[`NETLIFY`],[`NETLIFY`,`NETLIFY_LOCAL`,{ci:!1}],[`NEVERCODE`],[`RENDER`],[`SAIL`,`SAILCI`],[`SEMAPHORE`],[`SCREWDRIVER`],[`SHIPPABLE`],[`SOLANO`,`TDDIUM`],[`STRIDER`],[`TEAMCITY`,`TEAMCITY_VERSION`],[`TRAVIS`],[`VERCEL`,`NOW_BUILDER`],[`VERCEL`,`VERCEL`,{ci:!1}],[`VERCEL`,`VERCEL_ENV`,{ci:!1}],[`APPCENTER`,`APPCENTER_BUILD_ID`],[`CODESANDBOX`,`CODESANDBOX_SSE`,{ci:!1}],[`CODESANDBOX`,`CODESANDBOX_HOST`,{ci:!1}],[`STACKBLITZ`],[`STORMKIT`],[`CLEAVR`],[`ZEABUR`],[`CODESPHERE`,`CODESPHERE_APP_ID`,{ci:!0}],[`RAILWAY`,`RAILWAY_PROJECT_ID`],[`RAILWAY`,`RAILWAY_SERVICE_ID`],[`DENO-DEPLOY`,`DENO_DEPLOY`],[`DENO-DEPLOY`,`DENO_DEPLOYMENT_ID`],[`FIREBASE_APP_HOSTING`,`FIREBASE_APP_HOSTING`,{ci:!0}],[`EDGEONE_PAGES`,`EO_PAGES_CI`,{ci:!0}]]),lr=function(){for(let e of cr)if(Z[e[1]||e[0]])return{name:e[0].toLowerCase(),...e[2]};return Z.SHELL===`/bin/jsh`&&rr.versions?.webcontainer?{name:`stackblitz`,ci:!1}:{name:``,ci:!1}}(),ur=(lr.name,rr.platform||``);Z.CI||lr.ci;let dr=!!rr.stdout?.isTTY;Z.DEBUG,ir===`test`||Z.TEST;let fr=(ir===`production`||Z.MODE,ir===`dev`||ir===`development`||Z.MODE,Z.MINIMAL,/^win/i.test(ur)),pr=(/^linux/i.test(ur),/^darwin/i.test(ur),!Z.NO_COLOR&&(Z.FORCE_COLOR||(dr||fr)&&Z.TERM),(rr.versions?.node||``).replace(/^v/,``)||null),mr=(Number(pr?.split(`.`)[0]),!!rr?.versions?.node),hr=`Bun`in globalThis,gr=`Deno`in globalThis,_r=`fastly`in globalThis,vr=[[`Netlify`in globalThis,`netlify`],[`EdgeRuntime`in globalThis,`edge-light`],[globalThis.navigator?.userAgent===`Cloudflare-Workers`,`workerd`],[_r,`fastly`],[gr,`deno`],[hr,`bun`],[mr,`node`]];(function(){let e=vr.find(e=>e[0]);e&&e[1]})();let yr=A(`node:tty`)?.WriteStream?.prototype?.hasColors?.()??!1,Q=(e,t)=>{if(!yr)return e=>e;let n=`[${e}m`,r=`[${t}m`;return e=>{let i=e+``,a=i.indexOf(r);if(a===-1)return n+i+r;let o=n,s=0,c=(t===22?r:``)+n;for(;a!==-1;)o+=i.slice(s,a)+c,s=a+r.length,a=i.indexOf(r,s);return o+=i.slice(s)+r,o}},br=(Q(0,0),Q(1,22),Q(2,22),Q(3,23),Q(4,24),Q(53,55),Q(7,27),Q(8,28),Q(9,29),Q(30,39),Q(31,39)),xr=Q(32,39),Sr=Q(33,39),Cr=Q(34,39),wr=(Q(35,39),Q(36,39)),Tr=(Q(37,39),Q(90,39));Q(40,49),Q(41,49),Q(42,49),Q(43,49),Q(44,49),Q(45,49),Q(46,49),Q(47,49),Q(100,49),Q(91,39),Q(92,39),Q(93,39),Q(94,39),Q(95,39),Q(96,39),Q(97,39),Q(101,49),Q(102,49),Q(103,49),Q(104,49),Q(105,49),Q(106,49),Q(107,49);function Er(e){if(typeof e!=`string`||e.startsWith(`file://`))return!1;try{return(0,U.lstatSync)(e).isDirectory()}catch{return!1}}function Dr(e,t=8){return(function(){if(Ar!==void 0)return Ar;try{return Ar=!!nr().getFips?.(),Ar}catch{return Ar=!1,Ar}}()?nr().createHash(`sha256`):nr().createHash(`md5`)).update(e).digest(`hex`).slice(0,t)}let Or={true:xr(`true`),false:Sr(`false`),"[rebuild]":Sr(`[rebuild]`),"[esm]":Cr(`[esm]`),"[cjs]":xr(`[cjs]`),"[import]":Cr(`[import]`),"[require]":xr(`[require]`),"[native]":wr(`[native]`),"[transpile]":Sr(`[transpile]`),"[fallback]":br(`[fallback]`),"[unknown]":br(`[unknown]`),"[hit]":xr(`[hit]`),"[miss]":Sr(`[miss]`),"[json]":xr(`[json]`),"[data]":xr(`[data]`)};function $(e,...t){if(!e.opts.debug)return;let n=process.cwd();console.log(Tr([`[jiti]`,...t.map(e=>e in Or?Or[e]:typeof e==`string`?e.replace(n,`.`):JSON.stringify(e))].join(` `)))}function kr(e,t){return e.opts.interopDefault?function(e){let t=typeof e;if(e===null||t!==`object`&&t!==`function`)return e;let n=e.default,r=typeof n,i=n==null,a=r===`object`||r===`function`;if(i&&e instanceof Promise)return e;let o=r===`function`&&t!==`function`,s=a&&!(n instanceof Promise),c=new Map;return new Proxy(e,{get(t,r){if(c.has(r))return c.get(r);let a;return r==="__esModule"?a=!0:r==="default"?a=i?e:typeof n?.default==`function`&&e.__esModule?n.default:n:r in t?a=t[r]:s&&(a=n[r],typeof a==`function`&&(a=a.bind(n))),c.set(r,a),a},apply:o?(e,t,r)=>Reflect.apply(n,t,r):void 0})}(t):t}let Ar;function jr(e,t){return!!Mr(e,t)}function Mr(e,t,n){let r=process.env[e];if(!(e in process.env))return t;try{return JSON.parse(r)}catch{return n?r:t}}let Nr=/\.(c|m)?j(sx?)$/,Pr=/\.(c|m)?t(sx?)$/;function Fr(e,t,n){let r,i;if(e.isNativeRe.test(t))return t;if(e.resolveTsConfigPaths&&!n.skipTsConfigPaths){let r=e.resolveTsConfigPaths(t);for(let t of r){let r=Fr(e,t,{...n,try:!0,skipTsConfigPaths:!0});if(r)return r}}e.alias&&(t=function(e,t){let n=_t(e);t=Qn(t);for(let[e,r]of Object.entries(t))if(n.startsWith(e)&&$n(n[($n(e)?e.slice(0,-1):e).length]))return Ct(r,n.slice(e.length));return n}(t,e.alias));let a=n?.parentURL||e.url;Er(a)&&(a=Ct(a,`_index.js`));let o=(n?.async?[n?.conditions,[`node`,`import`],[`node`,`require`]]:[n?.conditions,[`node`,`require`],[`node`,`import`]]).filter(Boolean);for(let n of o){try{r=Wn(t,{url:a,conditions:n,extensions:e.opts.extensions})}catch(e){i=e}if(r)return r}try{return e.nativeRequire.resolve(t,{paths:n.paths})}catch(e){i=e}for(let i of e.additionalExts)if(r=Ir(e,t+i,a,n)||Ir(e,t+`/index`+i,a,n),r||(Pr.test(e.filename)||Pr.test(e.parentModule?.filename||``)||Nr.test(t))&&(r=Ir(e,t.replace(Nr,`.$1t$2`),a,n),r))return r;if(!n?.try)throw i}function Ir(e,t,n,r){try{return e.nativeRequire.resolve(t,{...r,paths:[kt(In(n)),...r?.paths||[]]})}catch{}}let Lr=A(`node:fs/promises`),Rr=A(`node:perf_hooks`),zr=A(`node:vm`);var Br=r.n(zr);function Vr(e,t,n){let r=e.parentCache||{};if(t.startsWith(`node:`))return Hr(e,t,n.async);if(t.startsWith(`file:`))t=(0,W.fileURLToPath)(t);else if(t.startsWith(`data:`)){if(!n.async)throw Error("`data:` URLs are only supported in ESM context. Use `import` or `jiti.import` instead.");return $(e,`[native]`,`[data]`,`[import]`,t),Hr(e,t,!0)}if(lt.builtinModules.includes(t)||t===`.pnp.js`)return Hr(e,t,n.async);if(e.opts.virtualModules&&t in e.opts.virtualModules){$(e,`[virtual]`,t);let r=e.opts.virtualModules[t];return n.async?Promise.resolve(kr(e,r)):kr(e,r)}if(e.opts.tryNative&&!e.opts.transformOptions)try{if(!(t=Fr(e,t,n))&&n.try)return;if($(e,`[try-native]`,n.async&&e.nativeImport?`[import]`:`[require]`,t),n.async&&e.nativeImport)return e.nativeImport(t).then(n=>(!1===e.opts.moduleCache&&delete e.nativeRequire.cache[t],kr(e,n))).catch(r=>($(e,`[try-native] Using fallback for ${t} because of an error:`,r),Vr({...e,opts:{...e.opts,tryNative:!1}},t,n)));{let n=e.nativeRequire(t);return!1===e.opts.moduleCache&&delete e.nativeRequire.cache[t],kr(e,n)}}catch(n){$(e,`[try-native] Using fallback for ${t} because of an error:`,n)}let i=Fr(e,t,n);if(!i&&n.try)return;let a=Ot(i);if(a===`.json`){$(e,`[json]`,i);let t=e.nativeRequire(i);return t&&!(`default`in t)&&Object.defineProperty(t,"default",{value:t,enumerable:!1}),t}if(a&&!e.opts.extensions.includes(a))return $(e,`[native]`,`[unknown]`,n.async?`[import]`:`[require]`,i),Hr(e,i,n.async);if(e.isNativeRe.test(i))return $(e,`[native]`,n.async?`[import]`:`[require]`,i),Hr(e,i,n.async);if(r[i])return kr(e,r[i]?.exports);if(e.opts.moduleCache){let t=e.nativeRequire.cache[i];if(t?.loaded)return kr(e,t.exports)}return Kr(e,(0,U.readFileSync)(i,`utf8`),{id:t,filename:i,ext:a,cache:r,async:n.async})}function Hr(e,t,n){return n&&e.nativeImport?e.nativeImport(function(e){return fr&&Dt(e)?Ln(e):e}(t)).then(t=>kr(e,t)):kr(e,e.nativeRequire(t))}function Ur(e,t,n){if(!e.opts.fsCache||!t.filename)return n();let r=` /* v9-${Dr(t.source,16)} */\n`,i=`${At(kt(t.filename))}-${function(e){let t=e.split(Zn).pop();if(!t)return;let n=t.lastIndexOf(`.`);return n<=0?t:t.slice(0,n)}(t.filename)}`+(e.opts.sourceMaps?`+map`:``)+(t.interopDefault?`.i`:``)+`.${Dr(t.filename)}`+(t.async?`.mjs`:`.cjs`);t.jsx&&t.filename.endsWith(`x`)&&(i+=`x`);let a=e.opts.fsCache,o=Ct(a,i);if(!e.opts.rebuildFsCache&&(0,U.existsSync)(o)){let n=(0,U.readFileSync)(o,`utf8`);if(n.endsWith(r))return $(e,`[cache]`,`[hit]`,t.filename,`~>`,o),n}$(e,`[cache]`,`[miss]`,t.filename);let s=n();return s.includes(`__JITI_ERROR__`)||((0,U.writeFileSync)(o,s+r,`utf8`),$(e,`[cache]`,`[store]`,t.filename,`~>`,o)),s}function Wr(t){if(!0===t.opts.fsCache&&(t.opts.fsCache=function(t){let n=t.filename&&Tt(t.filename,`../node_modules`);if(n&&(0,U.existsSync)(n))return Ct(n,`.cache/jiti`);let r=(0,e.tmpdir)();if(process.env.TMPDIR&&r===process.cwd()&&!process.env.JITI_RESPECT_TMPDIR_ENV){let t=process.env.TMPDIR;delete process.env.TMPDIR,r=(0,e.tmpdir)(),process.env.TMPDIR=t}return Ct(r,`jiti`)}(t)),t.opts.fsCache)try{if((0,U.mkdirSync)(t.opts.fsCache,{recursive:!0}),!function(e){try{return(0,U.accessSync)(e,U.constants.W_OK),!0}catch{return!1}}(t.opts.fsCache))throw Error(`directory is not writable!`)}catch(e){$(t,`Error creating cache directory at `,t.opts.fsCache,e),t.opts.fsCache=!1}}function Gr(e,t){let n=Ur(e,t,()=>{let n=e.opts.transform({...e.opts.transformOptions,babel:{...e.opts.sourceMaps?{sourceFileName:t.filename,sourceMaps:`inline`}:{},...e.opts.transformOptions?.babel},interopDefault:e.opts.interopDefault,...t});return n.error&&e.opts.debug&&$(e,n.error),n.code});return n.startsWith(`#!`)&&(n=`// `+n),n}function Kr(t,n,r={}){let i=r.id||(r.filename?At(r.filename):`_jitiEval.${r.ext||(r.async?`mjs`:`js`)}`),a=r.filename||Fr(t,i,{async:r.async}),o=r.ext||Ot(a),s=r.cache||t.parentCache||{},c=/\.[cm]?tsx?$/.test(o),l=o===`.mjs`||o===`.js`&&function(e){for(;e&&e!==`.`&&e!==`/`;){e=Ct(e,`..`);try{let t=(0,U.readFileSync)(Ct(e,`package.json`),`utf8`);try{return JSON.parse(t)}catch{}break}catch{}}}(a)?.type===`module`,u=o===`.cjs`,d=r.forceTranspile??(!u&&!(l&&r.async)&&(c||l||t.isTransformRe.test(a)||qn(n))),f=Rr.performance.now();if(d){n=Gr(t,{filename:a,source:n,ts:c,async:r.async??!1,jsx:t.opts.jsx});let e=Math.round(1e3*(Rr.performance.now()-f))/1e3;$(t,`[transpile]`,r.async?`[esm]`:`[cjs]`,a,`(${e}ms)`)}else{if($(t,`[native]`,r.async?`[import]`:`[require]`,a),r.async)return Promise.resolve(Hr(t,a,r.async)).catch(e=>($(t,`Native import error:`,e),$(t,`[fallback]`,a),Kr(t,n,{...r,forceTranspile:!0})));try{return Hr(t,a,r.async)}catch(e){$(t,`Native require error:`,e),$(t,`[fallback]`,a),n=Gr(t,{filename:a,source:n,ts:c,async:r.async??!1,jsx:t.opts.jsx})}}let p=new lt.Module(a);p.filename=a,t.parentModule&&(p.parent=t.parentModule,Array.isArray(t.parentModule.children)&&!t.parentModule.children.includes(p)&&t.parentModule.children.push(p));let m=Jr(a,t.opts,{parentModule:p,parentCache:s,nativeImport:t.nativeImport,onError:t.onError,createRequire:t.createRequire},!0),h;p.require=m,p.path=kt(a),p.paths=lt.Module._nodeModulePaths(p.path),s[a]=p,t.opts.moduleCache&&(t.nativeRequire.cache[a]=p);let g=function(e,t){return`(${t?.async?`async `:``}function (exports, require, module, __filename, __dirname, jitiImport, jitiESMResolve) { ${e}\n});`}(n,{async:r.async});try{h=Br().runInThisContext(g,{filename:a,lineOffset:0,displayErrors:!1})}catch(n){n.name===`SyntaxError`&&r.async&&t.nativeImport?($(t,`[esm]`,`[import]`,`[fallback]`,a),h=function(t,n,r,i,a){let o=`export default ${n}`,s=a?void 0:`data:text/javascript;base64,${Buffer.from(o).toString(`base64`)}`;return(...n)=>{let a,c=()=>(a=function(t,n){let r=Ct((0,e.tmpdir)(),`jiti-esm`);try{(0,U.mkdirSync)(r,{recursive:!0})}catch{}let i=Ct(r,`${At(n,Ot(n))}-${Date.now()}-${Math.random().toString(36).slice(2)}.mjs`);return(0,U.writeFileSync)(i,t),i}(o,r),$(t,`[esm]`,`[tempfile]`,a),i(Ln(a)));return(s?i(s).catch(e=>{if(e?.code!==`ENAMETOOLONG`)throw e;return c()}):c()).then(e=>e.default(...n)).finally(()=>{a&&(0,Lr.unlink)(a).catch(()=>{})})}}(t,g,a,t.nativeImport,t.opts.esmEvalTempFile)):(t.opts.moduleCache&&delete t.nativeRequire.cache[a],t.onError(n))}let _;try{_=h(p.exports,p.require,p,p.filename,kt(p.filename),m.import,m.esmResolve)}catch(e){t.opts.moduleCache&&delete t.nativeRequire.cache[a],t.onError(e)}function v(){if(p.exports&&p.exports.__JITI_ERROR__){let{filename:e,line:n,column:r,code:i,message:a}=p.exports.__JITI_ERROR__,o=Error(`${i}: ${a} \n ${`${e}:${n}:${r}`}`);Error.captureStackTrace(o,Vr),t.onError(o)}return p.loaded=!0,kr(t,p.exports)}return r.async?Promise.resolve(_).then(v):v()}let qr=(0,e.platform)()===`win32`;function Jr(e,t={},n,i=!1){let a=i?t:function(e){let t={fsCache:jr(`JITI_FS_CACHE`,jr(`JITI_CACHE`,!0)),rebuildFsCache:jr(`JITI_REBUILD_FS_CACHE`,!1),moduleCache:jr(`JITI_MODULE_CACHE`,jr(`JITI_REQUIRE_CACHE`,!0)),debug:jr(`JITI_DEBUG`,!1),sourceMaps:jr(`JITI_SOURCE_MAPS`,!1),interopDefault:jr(`JITI_INTEROP_DEFAULT`,!0),extensions:Mr(`JITI_EXTENSIONS`,[`.js`,`.mjs`,`.cjs`,`.ts`,`.tsx`,`.mts`,`.cts`,`.mtsx`,`.ctsx`]),alias:Mr(`JITI_ALIAS`,{}),nativeModules:Mr(`JITI_NATIVE_MODULES`,[]),transformModules:Mr(`JITI_TRANSFORM_MODULES`,[]),tryNative:Mr(`JITI_TRY_NATIVE`,`Bun`in globalThis),esmEvalTempFile:jr(`JITI_ESM_EVAL_TEMP_FILE`,!1),jsx:jr(`JITI_JSX`,!1),tsconfigPaths:Mr(`JITI_TSCONFIG_PATHS`,!1,!0)};t.jsx&&t.extensions.push(`.jsx`,`.tsx`);let n={};return e.cache!==void 0&&(n.fsCache=e.cache),e.requireCache!==void 0&&(n.moduleCache=e.requireCache),{...t,...n,...e}}(t);typeof e==`string`&&e.startsWith(`file://`)&&(e=In(e));let o=a.alias&&Object.keys(a.alias).length>0?Qn(a.alias||{}):void 0,s;if(a.tsconfigPaths){let{getTsconfig:t,createPathsMatcher:n}=r(`./node_modules/.pnpm/get-tsconfig@4.14.0/node_modules/get-tsconfig/dist/index.cjs`),i=t(typeof a.tsconfigPaths==`string`?a.tsconfigPaths:kt(e));i&&(s=n(i))}let c=[`typescript`,`jiti`,...a.nativeModules||[]],l=RegExp(`node_modules/(${c.map(e=>Jn(e)).join(`|`)})/`),u=[...a.transformModules||[]],d=RegExp(`node_modules/(${u.map(e=>Jn(e)).join(`|`)})/`);e||=process.cwd(),!i&&Er(e)&&(e=Ct(e,`_index.js`));let f=Ln(e),p=[...a.extensions].filter(e=>e!==`.js`),m=n.createRequire(qr?e.replace(/\//g,`\\`):e),h={filename:e,url:f,opts:a,alias:o,resolveTsConfigPaths:s,nativeModules:c,transformModules:u,isNativeRe:l,isTransformRe:d,additionalExts:p,nativeRequire:m,onError:n.onError,parentModule:n.parentModule,parentCache:n.parentCache,nativeImport:n.nativeImport,createRequire:n.createRequire};return i||$(h,`[init]`,...[[`version:`,er.rE],[`module-cache:`,a.moduleCache],[`fs-cache:`,a.fsCache],[`rebuild-fs-cache:`,a.rebuildFsCache],[`interop-defaults:`,a.interopDefault]].flat()),i||Wr(h),Object.assign(function(e){return Vr(h,e,{async:!1})},{cache:a.moduleCache?m.cache:Object.create(null),extensions:m.extensions,main:m.main,options:a,resolve:Object.assign(function(e,t){return Fr(h,e,{...t,async:!1})},{paths:m.resolve.paths}),transform:e=>Gr(h,e),evalModule:(e,t)=>Kr(h,e,t),async import(e,t){let n=await Vr(h,e,{...t,async:!0});return t?.default?n?.default??n:n},esmResolve(e,t){typeof t==`string`&&(t={parentURL:t});let n=Fr(h,e,{parentURL:f,...t,async:!0});return!n||typeof n!=`string`||n.startsWith(`file://`)?n:Ln(n)}})}})(),t.exports=i.default})()}))();var fe=class{emitter;constructor(){this.emitter=r()}on(e,t){le(e).forEach(e=>{this.emitter.on(e,t)})}off(e,t){le(e).forEach(e=>{this.emitter.off(e,t)})}emit(e,t){le(e).forEach(e=>{this.emitter.emit(e,t)})}removeAllListeners(){this.emitter.all.clear()}},pe=class{listeners;constructor(){this.listeners=new Map}on(e,t){le(e).forEach(e=>{let n=this.listeners.get(e)||new Set;n.add(t),this.listeners.set(e,n)})}off(e,t){le(e).forEach(e=>{let n=this.listeners.get(e);n&&n.delete(t)})}async emit(e,...t){let n=le(e).flatMap(e=>{let t=this.listeners.get(e)||new Set,n=this.listeners.get(`*`)||new Set;return[...Array.from(t),...Array.from(n)]});return n.length===0?[]:await Promise.all(n.map(async n=>{try{let e=n(...t);return e instanceof Promise?await e:e}catch(t){console.error(`Error in event listener for ${String(e)}:`,t);return}}))}removeAllListeners(){this.listeners.clear()}};function j(e,...t){return class extends e{static _instance;static getInstance(){return this._instance||=new e(...t),this._instance}static clearInstance(){this._instance=void 0}}}const me=j(class extends fe{destroy(){this.removeAllListeners()}fatal(e,t,n){this.emit(`fatal`,{code:t,message:e,data:n,timestamp:Date.now()})}error(e,t,n){this.emit(`error`,{code:t,message:e,data:n,timestamp:Date.now()})}warn(e,t,n){this.emit(`warning`,{code:t,message:e,data:n,timestamp:Date.now()})}});var M=class{data;_schema;_defaultValue;_path;constructor(e){let{schema:t,default:n,path:r}=e;this._schema=t,this._defaultValue=n,this._path=r}set(e){let t=this._schema[`~standard`].validate(e);if(t instanceof Promise)throw Error(`StructuredConfigFile does not support async validation`);if(t.issues)throw this.reportInvalidConfigFile(t.issues),Error(`Invalid config data for ${this._path}: ${t.issues.map(e=>e.message).join(`; `)}`);this.data=this.onBeforeSave(e),this.save(e)}get(e={}){return this.data?this.data:this.load(e)}getKey(e,t={}){return this.get(t)[e]}save(e){let t=this.onBeforeSave(e);try{d(this.getFilePath()),i.writeFileSync(this.getFilePath(),JSON.stringify(t,void 0,2))}catch{return}return this.data=t}load(e={}){let{createIfMissing:t=!0}=e;if(!this.fileExists(this.getFilePath())||!this.canReadWriteFile(this.getFilePath())){t&&this.save(this._defaultValue);let e=this.onAfterLoad(this._defaultValue);return t&&(this.data=e),e}try{let e=i.readFileSync(this.getFilePath(),`utf8`),t=this.onAfterLoad(this.parseStoredData(e));return this.data=t,t}catch{return this.data=this._defaultValue}}onBeforeSave(e){return e}onAfterLoad(e){return e}getFilePath(){return this._path}parseStoredData(e){try{let t=n(`string.json.parse`).to(`object`)(e);if(t instanceof n.errors)return this._defaultValue;let r=this._schema[`~standard`].validate(t);if(r instanceof Promise)throw Error(`StructuredConfigFile does not support async validation`);return r.issues?this.migrate(t,this._defaultValue):this.migrate(r.value,this._defaultValue)}catch{return this._defaultValue}}canReadWriteFile(e){try{return i.accessSync(e,i.constants.R_OK|i.constants.W_OK),!0}catch{return!1}}fileExists(e){try{return i.accessSync(e,i.constants.F_OK),!0}catch{return!1}}migrate(e,t){let n={...e};for(let r in t)Object.prototype.hasOwnProperty.call(t,r)&&(r in e?e[r]!==null&&t[r]!==null&&typeof e[r]==`object`&&typeof t[r]==`object`&&!Array.isArray(e[r])&&!Array.isArray(t[r])?n[r]=this.migrate(e[r],t[r]):Array.isArray(t[r])&&(n[r]=e[r]):n[r]=t[r]);return n}reportInvalidConfigFile(e){me.getInstance().error(`Invalid config file`,`INVALID_CONFIG_FILE`,{issues:e.map(e=>e.message),filePath:this._path,data:this.data})}};function N(e,t,n){return typeof e!=`object`||!e?String(e):e instanceof Error?JSON.stringify(e,(e,t)=>{if(t instanceof Error){let e={};for(let n of Object.getOwnPropertyNames(t))e[n]=t[n];return e}return t},n):e instanceof Map?JSON.stringify(Object.fromEntries(e.entries()),t,n):e instanceof Set?JSON.stringify(Array.from(e),t,n):JSON.stringify(e,t,n)}const P=/\x1b\[[0-9;]*m/g;function he(e){return e.replace(P,``)}var ge=class e extends fe{stream;logPath;baseFileName;currentDate;rotationCheckInterval;isRotating=!1;constructor(e,t){super(),this.logPath=e,this.baseFileName=t.replace(`.log`,``),this.currentDate=this.getDateString(new Date),this.ensureLogDirectory(),this.ensureLogFile(),this.stream=this.createStream(),this.rotationCheckInterval=this.startRotationCheck(),this.cleanupOldLogs()}static scope(t,n){return new e(t,n)}log(...e){this.write(`info`,...e)}error(...e){this.write(`error`,...e)}warn(...e){this.write(`warn`,...e)}info(...e){this.write(`info`,...e)}debug(...e){this.write(`debug`,...e)}async close(){clearInterval(this.rotationCheckInterval),await new Promise(e=>{this.stream.end(()=>e())})}getCurrentFileName(){return this.getFileName(this.currentDate)}static getMessageElements(e,...t){let n=new Date;return{timestamp:n.toISOString().replace(`T`,` `).replace(/\.\d+Z$/,``)+`.${n.getUTCMilliseconds().toString().padStart(3,`0`)}`,level:e,message:t.map(e=>N(e)).join(` `)}}getFileName(e){return`${this.baseFileName}-${e}.log`}ensureLogDirectory(){try{s(this.logPath,{recursive:!0})}catch(e){throw console.error(`Failed to create log directory ${this.logPath}:`,e),e}}ensureLogFile(){let e=p(this.logPath,this.getFileName(this.currentDate));if(!o(e))try{u(e,``,`utf8`)}catch(t){throw console.error(`Failed to create log file ${e}:`,t),t}}getDateString(e){return`${e.getUTCFullYear()}-${(e.getUTCMonth()+1).toString().padStart(2,`0`)}-${e.getUTCDate().toString().padStart(2,`0`)}`}createStream(){return a(p(this.logPath,this.getFileName(this.currentDate)),{flags:`a`,encoding:`utf8`})}async rotateLogs(){if(this.isRotating)return;this.isRotating=!0;let e=this.getDateString(new Date);e!==this.currentDate&&await new Promise(t=>{this.stream.end(()=>{this.currentDate=e,this.stream=this.createStream(),this.cleanupOldLogs(),t()})}),this.isRotating=!1}startRotationCheck(){return setInterval(()=>this.rotateLogs(),6e4)}cleanupOldLogs(){let e=c(this.logPath),t=new Date,n=new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()-7));e.filter(e=>e.startsWith(this.baseFileName)&&e.endsWith(`.log`)).filter(e=>{let[t,r,i]=e.replace(`${this.baseFileName}-`,``).replace(`.log`,``).split(`-`).map(Number);return new Date(Date.UTC(t,r-1,i))<=n}).forEach(e=>{try{l(p(this.logPath,e))}catch(t){console.error(`Failed to delete old log file ${e}:`,t)}})}ensureStreamValid(){if(!this.stream.writable||this.stream.destroyed)try{this.stream=this.createStream()}catch(e){this.emit(`error`,e instanceof Error?e:Error(String(e)))}}write(t,...n){let{timestamp:r,message:i}=e.getMessageElements(t,...n),a=`[${r}] [${t}] ${he(i)}\n`;this.ensureStreamValid(),this.stream.write(a,e=>{if(e)if(e.code===`ERR_STREAM_WRITE_AFTER_END`||!this.stream.writable)try{this.stream=this.createStream(),this.stream.write(a,e=>{e?this.emit(`error`,e):this.emit(`write`,a)})}catch(e){this.emit(`error`,e instanceof Error?e:Error(String(e)))}else this.emit(`error`,e);else this.emit(`write`,a)})}};const F=()=>h.join(process.env.APPDATA??``,`overlayed`),_e=()=>h.join(F(),`logs`),ve=e=>h.join(F(),`apps`,e),ye=e=>h.join(ve(e),`logs`),be=()=>h.join(F(),`meta.json`),xe=()=>h.join(F(),`crash-dumps`);var Se=class{fileLogger;path;appId;messageQueue=new de;fileName;_debug=!1;silent=!1;forceSilent=!1;constructor(e){this.fileName=e}init(e,t=!1,n=!1,r=!1){this.appId=e,this._debug=t,this.silent=n,this.forceSilent=r,this.path=ye(e),this.fileLogger=new ge(this.path,this.fileName),this.messageQueue.flush().forEach(e=>{this.fileLogger?.[e.type](...e.args)})}scope(e){if(!this.appId||!this.path)throw Error(`Logger not initialized`);let t=v.cyan(`[${e}]`);return{scope:e=>this.scope(e),error:(...e)=>this.error(t,...e),warn:(...e)=>this.warn(t,...e),info:(...e)=>this.info(t,...e),log:(...e)=>this.log(t,...e),debug:(...e)=>this.debug(t,...e)}}error(...e){this.handle(`error`,...e)}warn(...e){this.handle(`warn`,...e)}info(...e){this.handle(`log`,...e)}debug(...e){this._debug&&this.handle(`debug`,...e)}log(...e){this.handle(`log`,...e)}handle(e,...t){this.logToConsole(e,...t),this.fileLogger?this.fileLogger[e](...t):this.messageQueue.add({type:e,args:t})}logToConsole(e,...t){let n={error:v.red,warn:v.yellow,debug:v.blue,log:v.white};if(this.forceSilent||this.silent&&!this._debug)return;let{timestamp:r,message:i}=ge.getMessageElements(e,...t),a=console[e],o=n[e];a(`${v.gray(r)} ${o(i)}`)}};const I=j(Se,`overlayed.log`);var L=class extends ee{blob;chunkSizeMb;maxConcurrent;shouldStop=!1;constructor(e,t){super(),this.blob=e,this.chunkSizeMb=t.chunkSizeMb,this.maxConcurrent=t.maxConcurrent??3}get totalChunks(){return Math.ceil(this.blob.size/(this.chunkSizeMb*1024*1024))}async chunk(e){let t=this.chunkSizeMb*1024*1024,n=this.totalChunks;if(n===0)return;let r=new Map,i=new Set,a=new Set,o=[];for(let e=0;e<n;e++)o.push(e);let s=async n=>{let s=n*t,c=Math.min(s+t,this.blob.size),l=this.blob.slice(s,c);try{await e(l,n),a.add(n),this.emit(`chunkComplete`,n),i.delete(n)}catch(e){let t=r.get(n)||0;t<5?(r.set(n,t+1),await new Promise(e=>setTimeout(e,(t+1)*1e3)),o.push(n)):(a.add(n),this.emit(`error`,e),this.shouldStop=!0,i.delete(n))}},c=[],l=async()=>{for(;(o.length>0||i.size>0)&&!this.shouldStop;){if(o.length===0){await new Promise(e=>setTimeout(e,10));continue}let e=o.shift();a.has(e)||i.has(e)||(i.add(e),await s(e))}};for(let e=0;e<this.maxConcurrent;e++)c.push(l());await Promise.all(c)}};function Ce(e,t){let{recursive:n}=R(t);return S(e)?n?we(e).map(t=>[e,t]):w(e).map(t=>[e,t]):[]}function R(e){return{recursive:e?.recursive??!0}}function we(e){return w(e,{withFileTypes:!0}).flatMap(t=>{let n=h.join(e,t.name);return t.isDirectory()?we(n):[n]})}function z(e){return Te(e),e}function Te(e){if(!ue(e.applicationId))throw Error(`Invalid applicationId, must be a valid ULID.`)}function Ee(e,t){let n=t?.cwd??process.cwd(),r=m.join(n,`.overlayed`);y.existsSync(r)||y.mkdirSync(r,{recursive:!0});let i={application:{id:e.id,name:e.name,slug:e.slug,siteUrl:e.siteUrl},release:{id:null,channel:`local`,version:`0.0.0`}},a=m.join(r,`meta.json`);return y.writeFileSync(a,JSON.stringify(i,null,2)),i}const{PipeEventServer:De,PipeEventClient:Oe,PipeEventBase:ke,GameMonitor:Ae,GameInstance:je,HardwareInterface:Me}=e(import.meta.url)(`@overlayed/app/dist/native-interface/build/overlayed_native_interface_x64.node`),Ne=j(class extends fe{server=null;_hasConnection=!1;pipeId;get hasConnection(){return this._hasConnection}constructor(e){super(),this.pipeId=e,this.init()}destroy(){this.server&&=(this._hasConnection=!1,this.server?.removeAllListeners(),null)}init(){this.server=new De(this.pipeId,{clientCount:1,access:1}),this.server.on(`event`,e=>{try{let t=JSON.parse(e);this.emit(`data`,[t])}catch(e){this.emit(`error`,e)}}),this.server.on(`connected`,()=>{this._hasConnection=!0,this.emit(`connected`,void 0)}),this.server.on(`disconnected`,()=>{this._hasConnection=!1,this.emit(`disconnected`,void 0)})}},`overlayed-event-server`),{RenderInterface:Pe,renderHookPath:Fe}=e(import.meta.url)(`@overlayed/app/dist/render-interface/build/overlayed_render_interface_x64.node`);let Ie=function(e){return e[e.LeftButton=1]=`LeftButton`,e[e.RightButton=2]=`RightButton`,e[e.Cancel=3]=`Cancel`,e[e.MiddleButton=4]=`MiddleButton`,e[e.ExtraButton1=5]=`ExtraButton1`,e[e.ExtraButton2=6]=`ExtraButton2`,e[e.Back=8]=`Back`,e[e.Tab=9]=`Tab`,e[e.Clear=12]=`Clear`,e[e.Return=13]=`Return`,e[e.Shift=16]=`Shift`,e[e.Control=17]=`Control`,e[e.Menu=18]=`Menu`,e[e.Pause=19]=`Pause`,e[e.CapsLock=20]=`CapsLock`,e[e.Kana=21]=`Kana`,e[e.Hangeul=21]=`Hangeul`,e[e.Hangul=21]=`Hangul`,e[e.Junja=23]=`Junja`,e[e.Final=24]=`Final`,e[e.Hanja=25]=`Hanja`,e[e.Kanji=25]=`Kanji`,e[e.Escape=27]=`Escape`,e[e.Convert=28]=`Convert`,e[e.NonConvert=29]=`NonConvert`,e[e.Accept=30]=`Accept`,e[e.ModeChange=31]=`ModeChange`,e[e.Space=32]=`Space`,e[e.Prior=33]=`Prior`,e[e.Next=34]=`Next`,e[e.End=35]=`End`,e[e.Home=36]=`Home`,e[e.Left=37]=`Left`,e[e.Up=38]=`Up`,e[e.Right=39]=`Right`,e[e.Down=40]=`Down`,e[e.Select=41]=`Select`,e[e.Print=42]=`Print`,e[e.Execute=43]=`Execute`,e[e.Snapshot=44]=`Snapshot`,e[e.Insert=45]=`Insert`,e[e.Delete=46]=`Delete`,e[e.Help=47]=`Help`,e[e.N0=48]=`N0`,e[e.N1=49]=`N1`,e[e.N2=50]=`N2`,e[e.N3=51]=`N3`,e[e.N4=52]=`N4`,e[e.N5=53]=`N5`,e[e.N6=54]=`N6`,e[e.N7=55]=`N7`,e[e.N8=56]=`N8`,e[e.N9=57]=`N9`,e[e.A=65]=`A`,e[e.B=66]=`B`,e[e.C=67]=`C`,e[e.D=68]=`D`,e[e.E=69]=`E`,e[e.F=70]=`F`,e[e.G=71]=`G`,e[e.H=72]=`H`,e[e.I=73]=`I`,e[e.J=74]=`J`,e[e.K=75]=`K`,e[e.L=76]=`L`,e[e.M=77]=`M`,e[e.N=78]=`N`,e[e.O=79]=`O`,e[e.P=80]=`P`,e[e.Q=81]=`Q`,e[e.R=82]=`R`,e[e.S=83]=`S`,e[e.T=84]=`T`,e[e.U=85]=`U`,e[e.V=86]=`V`,e[e.W=87]=`W`,e[e.X=88]=`X`,e[e.Y=89]=`Y`,e[e.Z=90]=`Z`,e[e.LeftWindows=91]=`LeftWindows`,e[e.RightWindows=92]=`RightWindows`,e[e.Application=93]=`Application`,e[e.Sleep=95]=`Sleep`,e[e.Numpad0=96]=`Numpad0`,e[e.Numpad1=97]=`Numpad1`,e[e.Numpad2=98]=`Numpad2`,e[e.Numpad3=99]=`Numpad3`,e[e.Numpad4=100]=`Numpad4`,e[e.Numpad5=101]=`Numpad5`,e[e.Numpad6=102]=`Numpad6`,e[e.Numpad7=103]=`Numpad7`,e[e.Numpad8=104]=`Numpad8`,e[e.Numpad9=105]=`Numpad9`,e[e.Multiply=106]=`Multiply`,e[e.Add=107]=`Add`,e[e.Separator=108]=`Separator`,e[e.Subtract=109]=`Subtract`,e[e.Decimal=110]=`Decimal`,e[e.Divide=111]=`Divide`,e[e.F1=112]=`F1`,e[e.F2=113]=`F2`,e[e.F3=114]=`F3`,e[e.F4=115]=`F4`,e[e.F5=116]=`F5`,e[e.F6=117]=`F6`,e[e.F7=118]=`F7`,e[e.F8=119]=`F8`,e[e.F9=120]=`F9`,e[e.F10=121]=`F10`,e[e.F11=122]=`F11`,e[e.F12=123]=`F12`,e[e.F13=124]=`F13`,e[e.F14=125]=`F14`,e[e.F15=126]=`F15`,e[e.F16=127]=`F16`,e[e.F17=128]=`F17`,e[e.F18=129]=`F18`,e[e.F19=130]=`F19`,e[e.F20=131]=`F20`,e[e.F21=132]=`F21`,e[e.F22=133]=`F22`,e[e.F23=134]=`F23`,e[e.F24=135]=`F24`,e[e.NumLock=144]=`NumLock`,e[e.ScrollLock=145]=`ScrollLock`,e[e.NEC_Equal=146]=`NEC_Equal`,e[e.Fujitsu_Jisho=146]=`Fujitsu_Jisho`,e[e.Fujitsu_Masshou=147]=`Fujitsu_Masshou`,e[e.Fujitsu_Touroku=148]=`Fujitsu_Touroku`,e[e.Fujitsu_Loya=149]=`Fujitsu_Loya`,e[e.Fujitsu_Roya=150]=`Fujitsu_Roya`,e[e.LeftShift=160]=`LeftShift`,e[e.RightShift=161]=`RightShift`,e[e.LeftControl=162]=`LeftControl`,e[e.RightControl=163]=`RightControl`,e[e.LeftMenu=164]=`LeftMenu`,e[e.RightMenu=165]=`RightMenu`,e[e.BrowserBack=166]=`BrowserBack`,e[e.BrowserForward=167]=`BrowserForward`,e[e.BrowserRefresh=168]=`BrowserRefresh`,e[e.BrowserStop=169]=`BrowserStop`,e[e.BrowserSearch=170]=`BrowserSearch`,e[e.BrowserFavorites=171]=`BrowserFavorites`,e[e.BrowserHome=172]=`BrowserHome`,e[e.VolumeMute=173]=`VolumeMute`,e[e.VolumeDown=174]=`VolumeDown`,e[e.VolumeUp=175]=`VolumeUp`,e[e.MediaNextTrack=176]=`MediaNextTrack`,e[e.MediaPrevTrack=177]=`MediaPrevTrack`,e[e.MediaStop=178]=`MediaStop`,e[e.MediaPlayPause=179]=`MediaPlayPause`,e[e.LaunchMail=180]=`LaunchMail`,e[e.LaunchMediaSelect=181]=`LaunchMediaSelect`,e[e.LaunchApplication1=182]=`LaunchApplication1`,e[e.LaunchApplication2=183]=`LaunchApplication2`,e[e.OEM1=186]=`OEM1`,e[e.OEMPlus=187]=`OEMPlus`,e[e.OEMComma=188]=`OEMComma`,e[e.OEMMinus=189]=`OEMMinus`,e[e.OEMPeriod=190]=`OEMPeriod`,e[e.OEM2=191]=`OEM2`,e[e.OEM3=192]=`OEM3`,e[e.OEM4=219]=`OEM4`,e[e.OEM5=220]=`OEM5`,e[e.OEM6=221]=`OEM6`,e[e.OEM7=222]=`OEM7`,e[e.OEM8=223]=`OEM8`,e[e.OEMAX=225]=`OEMAX`,e[e.OEM102=226]=`OEM102`,e[e.ICOHelp=227]=`ICOHelp`,e[e.ICO00=228]=`ICO00`,e[e.ProcessKey=229]=`ProcessKey`,e[e.ICOClear=230]=`ICOClear`,e[e.Packet=231]=`Packet`,e[e.OEMReset=233]=`OEMReset`,e[e.OEMJump=234]=`OEMJump`,e[e.OEMPA1=235]=`OEMPA1`,e[e.OEMPA2=236]=`OEMPA2`,e[e.OEMPA3=237]=`OEMPA3`,e[e.OEMWSCtrl=238]=`OEMWSCtrl`,e[e.OEMCUSel=239]=`OEMCUSel`,e[e.OEMATTN=240]=`OEMATTN`,e[e.OEMFinish=241]=`OEMFinish`,e[e.OEMCopy=242]=`OEMCopy`,e[e.OEMAuto=243]=`OEMAuto`,e[e.OEMENLW=244]=`OEMENLW`,e[e.OEMBackTab=245]=`OEMBackTab`,e[e.ATTN=246]=`ATTN`,e[e.CRSel=247]=`CRSel`,e[e.EXSel=248]=`EXSel`,e[e.EREOF=249]=`EREOF`,e[e.Play=250]=`Play`,e[e.Zoom=251]=`Zoom`,e[e.Noname=252]=`Noname`,e[e.PA1=253]=`PA1`,e[e.OEMClear=254]=`OEMClear`,e}({});const Le=n({game:`string`,type:`string`,creationTime:`number`}),Re=Le.and({game:`'siege' | 'tft'`,type:`'logged_in'`,content:{accountId:`string`}}),ze=Le.and({game:`'sand'`,type:`'logged_in'`,content:{accountId:`string`,displayName:`string`,platformId:`string`,playfabId:`string`}}).or(Re),Be=Le.and({game:`'siege' | 'tft' | 'sand'`}),Ve=t({"#event1":`logged_in | module_loaded | module_unloaded | unsupported_game_version`,event:`event1`,logged_in:ze,module_loaded:Be.and({type:`'module_loaded'`,content:{gameVersion:`string`,processHash:`string`}}),module_unloaded:Be.and({type:`'module_unloaded'`}),unsupported_game_version:Be.and({type:`'unsupported_game_version'`,content:{gameVersion:`string`,processHash:`string`}})}).export(),He=Object.keys(Ve).filter(e=>e!==`event`);function Ue(){return{key:`universal`,events:Ve}}var We=class{options=null;logger;initialized=!1;constructor(e){this.logger=I.getInstance().scope(e)}init(e){this.logger.log(`Initializing`),this.options=e||null,this.initialized=!0}destroy(){this.logger.log(`Destroying`),this.initialized=!1}},Ge=class extends fe{options=null;logger;initialized=!1;constructor(e){super(),this.logger=I.getInstance().scope(e)}init(e){this.logger.log(`Initializing`),this.options=e||null,this.initialized=!0}destroy(){this.logger.log(`Destroying`),this.initialized=!1,this.removeAllListeners()}},Ke=class extends pe{options=null;logger;initialized=!1;constructor(e){super(),this.logger=I.getInstance().scope(e)}init(e){this.logger.log(`Initializing`),this.options=e||null,this.initialized=!0}destroy(){this.logger.log(`Destroying`),this.initialized=!1,this.removeAllListeners()}};const qe=`https://api.overlayed.gg`,B=re.create({baseURL:qe,paramsSerializer:e=>ie(e,!0,null,{arrayFormat:`repeat`}),headers:{Accept:`application/json`,"Accept-Encoding":`gzip, deflate, br`}});let Je;function V(e){Je=e}let Ye;function Xe(e){Ye=e}function Ze(e){return`overlayed/app (${Object.entries(e).map(([e,t])=>`${e}=${t}`).join(`, `)})`}B.interceptors.request.use(e=>{let t=Je?.();e.headers??={},t&&(e.headers[`X-Api-Key`]=t);let n=Ye?.();return n&&(e.headers[`User-Agent`]=Ze(n)),e});function Qe(e,t){if(t<=0)throw Error(`Chunk size must be greater than 0`);if(e.length===0)return[];let n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}function $e(e){return e}function et(e){return e?t=>(e(t),t):$e}const tt=et();function nt(e){return B.get(`/v1/public/applications/${e}`)}function rt(e,t){return B.get(`/v1/public/applications/${e}/releases/check`,{params:t})}function it(e,t){return B.post(`/v1/public/applications/${e}/game-crash-reports`,t)}function at(e,t,n){return B.post(`/v1/public/applications/${e}/game-crash-reports/${t}/confirm`,n)}function ot(e,t){let n=new FormData;return n.append(`file`,new Blob([t.file],{type:`application/zip`}),`logs.zip`),n.append(`data`,JSON.stringify(t.data)),B.post(`/v1/public/applications/${e}/feedbacks`,n)}function H(e,t){return B.get(`/v1/public/applications/${e}/feature-flags`,{params:t})}function st(e,t){return B.get(`/v1/public/applications/${e}/notices`,{params:t})}const ct=et();function lt(e,t){return B.get(`/v1/public/modules/${e}/release`,{params:{cortex_user_id:t}})}function U(e,t,n){return B.post(`/v1/public/modules/${e}/releases/${t}/download`,n)}async function ut(e,t){if(e.method!==`GET`)throw Error(`Unsupported presigned request method: ${e.method}`);let n=await fetch(e.url,{method:e.method,headers:e.headers,signal:t?.signal});if(!n.ok){let e=await ft(n);throw Error(`Presigned download failed (${n.status} ${n.statusText})${e?`: ${e}`:``}`)}let r=await n.arrayBuffer();return new Uint8Array(r)}async function dt(e,t){if(e.method!==`PUT`)throw Error(`Unsupported presigned request method: ${e.method}`);let n=await fetch(e.url,{method:e.method,headers:{...e.headers,"Content-Length":t.byteLength.toString()},body:t});if(!n.ok){let e=await ft(n);throw Error(`Presigned upload failed (${n.status} ${n.statusText})${e?`: ${e}`:``}`)}}async function ft(e){try{let t=(await e.text()).trim();if(t.length===0)return;let n=2048;return t.length>n?`${t.slice(0,n)}…`:t}catch{return}}function pt(){return B.get(`/v1/public/raven/config`)}const mt=et();function ht(e,t){return B.get(`/v1/public/raven/games/${e}/builds/${t}`)}function gt(e,t){return B.post(`/v1/public/raven/games/${e}/builds/upload`,null,{params:t})}function _t(e,t){let{chunk:n,...r}=t,i=new FormData;return i.append(`file`,n),B.patch(`/v1/public/raven/games/${e}/builds/upload`,i,{params:r})}function vt(e){let t=Date.now(),n=e.messages.filter(e=>t-e.created_at.getTime()<6e5),r=e.messages.length-n.length;r>0&&console.warn(`Dropped ${r} cortex event(s) older than 600s`);let i=Qe(n.map(e=>yt(t,e)),50),a=Promise.all(i.map(async t=>B.post(`/v1/public/cortex/events`,{...e,messages:t})));return a.catch(e=>{let t=e?.response?.data||e?.message||e;console.error(`Failed to submit cortex events`,t)}),a}function yt(e,t){let n=e-t.created_at.getTime(),r=Math.max(0,Math.floor(n/1e3));return{properties:t.properties,type:t.type,seconds_offset:r}}function bt(e){return e instanceof Error&&(e.name===`XiorError`||e.name===`XiorTimeoutError`)}function xt(e){return!!(e&&`kind`in e.data&&`message`in e.data)}const{PipeEventServer:St,PipeEventClient:Ct,PipeEventBase:wt,GameMonitor:Tt,GameInstance:Et,HardwareInterface:Dt}=e(import.meta.url)(`@overlayed/app/dist/native-interface/build/overlayed_native_interface_x64.node`);function Ot(e=[]){return h.normalize(h.join(ve(global.OVERLAYED.APPLICATION_ID),...e))}const kt=n({game:`string`,type:`string`,creationTime:`number`}),At=new M({path:be(),schema:n({userId:`string | undefined`,sessionId:`string | undefined`,sessionLastUsed:`number | undefined`,accessToken:`string | undefined`,"debug?":{"ri_disabled?":`boolean`,"gm_disabled?":`boolean`}}),default:{userId:void 0,sessionId:void 0,sessionLastUsed:void 0,accessToken:void 0}});function W(){let{debug:e}=At.get();return e?{ri_disabled:e.ri_disabled??!1,gm_disabled:e.gm_disabled??!1}:{ri_disabled:!1,gm_disabled:!1}}function G(){let e=At.get().userId;if(e)return e;let t=Ft();return At.set({...At.get(),userId:t}),t}function jt(){let e=At.get();if(e.sessionId&&typeof e.sessionLastUsed==`number`&&Date.now()-e.sessionLastUsed<=300*1e3)return e.sessionId;let t=crypto.randomUUID();return At.set({...e,sessionId:t,sessionLastUsed:Date.now()}),t}function Mt(){try{let e=At.get();At.set({...e,sessionLastUsed:Date.now()})}catch(e){I.getInstance().log(`Failed to update sessionLastUsed`,e)}}function Nt(){return At.get().accessToken}function Pt(e){try{let t=At.get();At.set({...t,accessToken:e??void 0})}catch(e){I.getInstance().log(`Failed to set accessToken`,e)}}function Ft(){try{return Dt.generateUniqueIdentifier()}catch{return crypto.randomUUID()}}const It=j(class extends Ge{UPDATE_CHECK_INTERVAL_MS=1e3*60*5;targetDir;updateInterval;constructor(){super(`NativeModuleManager`),this.targetDir=h.join(F(),`resources`),this.logger.log(`Target directory`,this.targetDir)}async initWithDlls(e){super.init(),await D.mkdir(this.targetDir,{recursive:!0}),await this.checkForUpdates(e),clearInterval(this.updateInterval),this.updateInterval=setInterval(()=>this.checkForUpdates(e),this.UPDATE_CHECK_INTERVAL_MS)}destroy(){this.updateInterval&&=(clearInterval(this.updateInterval),void 0),super.destroy()}async getDllFile(e){let t=await this.getCurrentBuildInfo(e);if(!t){this.logger.error(`No build found for module`,{moduleId:e});return}let n=this.getBuildPath(e,t.buildId);if(!S(n)){this.logger.error(`No build file found for module`,{moduleId:e});return}let r=h.join(n,t.buildFileName);if(!S(r)){this.logger.error(`No DLL file found for module`,{moduleId:e});return}return r}async getCurrentBuildInfo(e){try{let t=h.join(this.targetDir,e,`build.json`),n=await D.readFile(t,`utf-8`);return JSON.parse(n)}catch{return null}}getModulePath(e){return h.join(this.targetDir,e)}getBuildPath(e,t){return h.join(this.getModulePath(e),t)}async checkForUpdates(e){this.logger.log(`Checking for updates`);let t=G();if(!t){this.logger.error(`Failed to resolve cortex user id`);return}this.logger.log(`Cortex User ID`,t);for(let n of e)try{let{data:e}=await lt(n,t);this.logger.log(`Release`,e);let r=(await this.getCurrentBuildInfo(n))?.buildId||null;this.logger.log(`${n} > Performing update check. current: ${r}, requested: ${e.build_id}`),e.build_id!==r||await this.isDownloadCorrupted(this.getBuildPath(n,e.build_id),e)?(this.logger.log(`${n} > Update found. current: ${r}, requested: ${e.build_id}`),this.logger.log(`${n} > Downloading and extracting DLLs`),await this.downloadAndExtractDll(n,e),this.logger.log(`${n} > Cleaning up other builds`),await this.cleanupExistingBuilds(n,e.build_id),this.emit(`dllUpdated`,{moduleId:n,buildId:e.build_id,releaseId:e.release_id})):this.logger.log(`${n} > No update found`)}catch(e){this.logger.error(`${n} > Error checking/updating`,e)}}async downloadAndExtractDll(e,t){this.logger.log(`${e} > Requesting download for build ${t.build_id}`);let n=G();if(!n){this.logger.error(`Failed to resolve cortex user id`);return}let{data:r}=await U(e,t.release_id,{download_token:t.download_token,cortex_user_id:n});this.logger.log(`${e} > Downloading DLLs for build ${t.build_id}`);let i=await ut(r,{signal:AbortSignal.timeout(1e3*60*5)});this.logger.log(`${e} > Downloaded zip file for build ${t.build_id}`);let a=this.getBuildPath(e,t.build_id);await D.mkdir(a,{recursive:!0});let o=new ae;await o.loadAsync(i);let s=Object.keys(o.files).map(e=>({name:e,file:o.files[e]})).filter(({file:e})=>!e.dir);if(s.length!==1){this.logger.error(`${e} > Zip must contain exactly 1 file, got ${s.length}`);return}let c=s[0],l=h.basename(c.name),u=h.normalize(l),d=h.isAbsolute(u),f=u.startsWith(`..`)||u.includes(`..${h.sep}`);if(l===``||l===`.`||l===`..`){this.logger.error(`${e} > Zip contained an invalid file name: ${c.name}`);return}if(!l.toLowerCase().endsWith(`.dll`)){this.logger.error(`${e} > Zip contained a non-dll file: ${c.name}`);return}if(d||f){this.logger.error(`${e} > Zip entry path is unsafe: ${c.name}`);return}let p=h.join(a,u),m=await c.file.async(`nodebuffer`);await D.writeFile(p,m),this.logger.log(`${e} > Extracted 1 file to ${p}`);let g={buildId:t.build_id,buildFileName:t.build_file_name},_=h.join(this.getModulePath(e),`build.json`);await D.writeFile(_,JSON.stringify(g),`utf-8`),this.logger.log(`${e} > Saved buildId to file: ${t.build_id}`)}async cleanupExistingBuilds(e,t){let n=this.getModulePath(e),r=this.getBuildPath(e,t),i=await D.readdir(n,{withFileTypes:!0});for(let t of i)t.isDirectory()&&h.join(n,t.name)!==r&&(await D.rm(h.join(n,t.name),{recursive:!0,force:!0}),this.logger.log(`${e} > Cleaned up build: ${t.name}`))}async hasPathAccess(e){try{return await D.access(e,D.constants.F_OK),!0}catch{return!1}}async isDownloadCorrupted(e,t){if(!await this.hasPathAccess(e))return this.logger.error(`Download is corrupted. Path does not exist: ${e}`),!0;let n=t.build_file_name,r=h.join(e,n);if(!S(r))return this.logger.error(`Download is corrupted. Build file not found: ${r}`),!0;if(t.build_hash){let e=await D.readFile(r),i=T(`sha256`).update(e).digest(`hex`);if(i.toLowerCase()!==t.build_hash.toLowerCase())return this.logger.error(`Download is corrupted. Build file hash mismatch: ${n} ${i.toLowerCase()} !== ${t.build_hash.toLowerCase()}`),!0}return!1}}),Lt=j(class extends Ge{_gameMonitor;_games=new Map;constructor(){super(`GameManager`),this._gameMonitor=new Tt}get hasAnyActiveGames(){return this._games.size>0}init(){super.init(),this._gameMonitor.on(`launch`,e=>{this.logger.log(`Game launched`,e.identifier,e.processId),this._games.set(e.processId,e),this.logger.log(`Active Game Count: ${this._games.size}`),this.emit(`launch`,{game:e})}),this._gameMonitor.on(`close`,e=>{this.logger.log(`Game closed`,e.identifier,e.processId),this._games.delete(e.processId),this.logger.log(`Active Game Count: ${this._games.size}`),this.emit(`close`,{game:e})})}destroy(){this._games.clear(),this._gameMonitor.removeAllListeners(),super.destroy()}}),Rt=j(class extends Ge{REFETCH_INTERVAL=1e3*60*5;FAILED_REFETCH_INTERVAL=1e3*30;_refetchIntervalHandler=null;_failedRefetchTimeoutHandler=null;_ready;_resolveReady;constructor(){super(`RavenManager`),this._ready=new Promise(e=>{this._resolveReady=e})}get ready(){return this._ready}init(e){super.init(e),this.fetchRavenConfig(),this._refetchIntervalHandler=setInterval(()=>{this._failedRefetchTimeoutHandler&&=(clearTimeout(this._failedRefetchTimeoutHandler),null),this.fetchRavenConfig()},this.REFETCH_INTERVAL)}destroy(){this._refetchIntervalHandler&&clearInterval(this._refetchIntervalHandler),this._failedRefetchTimeoutHandler&&clearTimeout(this._failedRefetchTimeoutHandler),It.getInstance().destroy(),super.destroy()}async fetchRavenConfig(){try{let e=await pt();if(!this.initialized)return;let t=new Set(this.options?.subscribedGames??[]),n=new Set;for(let r of e.data.games)!t.has(`*`)&&!t.has(r.identifier)||r.game_module&&n.add(r.game_module);n.size===0&&e.data.games.length>0&&this.logger.warn(`No raven game matched the subscribed games`,{subscribed:Array.from(t),available:e.data.games.map(e=>e.identifier)}),await It.getInstance().initWithDlls(Array.from(n)),this.logger.log(`Raven updated, tracking ${n.size} game modules`),this._resolveReady()}catch(e){this.logger.error(`Failed to fetch Raven config`,e),this._failedRefetchTimeoutHandler=setTimeout(()=>this.fetchRavenConfig(),this.FAILED_REFETCH_INTERVAL)}}});var zt=class{_instance;_resolution;boundOnResolutionChanged=this.onResolutionChanged.bind(this);constructor(e){this._instance=e,this._resolution={width:0,height:0},this._instance.on(`resolution`,this.boundOnResolutionChanged)}destroy(){this._instance.off(`resolution`,this.boundOnResolutionChanged)}get instance(){return this._instance}get resolution(){return this._resolution}onResolutionChanged(e,t){this._resolution={width:e,height:t}}};const K=j(class{interfaces={};constructor(){}createInterface(e){return this.interfaces[e]||(this.interfaces[e]=new zt(new Pe(e,{access:1}))),this.interfaces[e]}getInterface(e){return this.interfaces[e]?this.interfaces[e]:this.createInterface(e)}}),q=j(class{options;eventQueue;meta=null;enabled=!0;constructor(e){this.options=this.resolveOptions(e),this.eventQueue=new de,this.setupFlushInterval()}track(e,t){this.enabled&&this.eventQueue.add({type:e,properties:t,created_at:new Date})}flush(){if(!this.enabled)return[];let e=Array.from(this.eventQueue.flush()).concat({type:`ping`,properties:{},created_at:new Date});if(!this.meta)throw Error(`Tried to flush Cortex events before meta was set`);try{vt({...this.meta,messages:e})}catch{}return e}setupFlushInterval(){this.enabled&&setInterval(()=>{this.flush()},this.options.batchIntervalSeconds*1e3)}resolveOptions(e){return{batchIntervalSeconds:e?.batchIntervalSeconds??15}}}),Bt=e(import.meta.url),Vt=Bt.resolve(`@overlayed/app/dist/render-interface/build/overlayed_render_hook_x64.dll`),Ht=Bt.resolve(`@overlayed/app/dist/render-interface/build/overlayed_render_hook_x86.dll`),Ut=Bt.resolve(`@overlayed/app/dist/native-interface/build/overlayed_injector_x64.exe`),Wt=Bt.resolve(`@overlayed/app/dist/native-interface/build/overlayed_injector_x86.exe`),J=j(class extends Ke{boundOnGameLaunch=this.onGameLaunch.bind(this);boundOnGameClose=this.onGameClose.bind(this);subscribedGames=new Set;activeGames=new Map;pendingLaunches=new Map;get isInGame(){return this.activeGames.size>0}constructor(){super(`GameLaunchManager`)}setSubscribedGames(e){this.subscribedGames=new Set(e)}getActiveGames(){return Array.from(new Set(Array.from(this.activeGames.values()).map(e=>e.game)))}init(){super.init(),K.getInstance().createInterface(`OGG_SIEGE`),Lt.getInstance().on(`launch`,this.boundOnGameLaunch),Lt.getInstance().on(`close`,this.boundOnGameClose)}destroy(){Lt.getInstance().off(`launch`,this.boundOnGameLaunch),Lt.getInstance().off(`close`,this.boundOnGameClose),super.destroy()}on(e,t){super.on(e,t);let n=le(e);if(!(n.includes(`gameReady`)||n.includes(`*`))||this.activeGames.size===0)return;let r=t;for(let e of this.activeGames.values())this.logger.log(`Late calling gameReady callback for game`,e.game),r(e)}async onGameLaunch({game:e}){this.logger.log(`On game launch`,e.identifier,e.executableName,e.processId);let t=mt(e.identifier);if(q.getInstance().track(`game_launch`,{game:t}),this.subscribedGames.size===0){this.logger.warn(`No subscribed games, skipping`);return}if(!this.subscribedGames.has(t)&&!this.subscribedGames.has(`*`))return;let n=new AbortController;if(this.pendingLaunches.set(e.processId,n),await this.emit(`gameLaunch`,{game:t,processId:e.processId,reject:()=>n.abort()}),n.signal.aborted)return;if(this.logger.log(`Game Launched`,e.identifier),this.logger.log(`Game is elevated: `,e.isElevated),e.hasElevationMismatch){me.getInstance().fatal(`Game is elevated but the App is not`,`ELEVATION_MISMATCH`,{appElevated:!1,gameElevated:!0}),this.logger.log(`Game elevated but App is not`);return}if(e.injectionDelayMs>0){if(this.logger.log(`Delaying injection for ${e.injectionDelayMs}ms to allow game to be ready`),await new Promise(t=>{let r=setTimeout(t,e.injectionDelayMs);n.signal.addEventListener(`abort`,()=>{clearTimeout(r),t()},{once:!0})}),n.signal.aborted){this.logger.log(`Game closed during the injection delay, skipping injection`);return}this.logger.log(`Finished delay`)}let{ri_disabled:r,gm_disabled:i}=W(),a=!1;if(!r&&e.hasRenderSupport&&e.allowDllInjections?a=await this.injectRenderInterface(e):this.logger.log(`Skipping render interface injection`,{has_render_support:e.hasRenderSupport,allow_dll_injections:e.allowDllInjections,ri_disabled:r}),!i&&e.allowDllInjections?await this.injectGameModules(e):this.logger.log(`Skipping game module(s) injection`,{allow_dll_injections:e.allowDllInjections,gm_disabled:i}),n.signal.aborted){this.logger.log(`Game closed during injection, skipping ready`);return}this.pendingLaunches.delete(e.processId);let o={game:t,processId:e.processId,inGameRenderingSupported:a};this.activeGames.set(e.processId,o),this.logger.debug(`Active games`,this.getActiveGames().join(`, `)),this.logger.log(`Game Ready`),this.emit(`gameReadyInternal`,{game:e}),this.emit(`gameReady`,o),q.getInstance().track(`game_ready`,{game:t})}copyInjectors(){let e=this.copyDll(Ut),t=this.copyDll(Wt);return!e||!t?(this.logger.error(`Failed to copy injector executables`),!1):h.dirname(e)}copyDll(e){let t=h.basename(e),n=_(e),r=h.join(F(),`resources`),i=h.join(r,t);this.logger.info(`Copying`,n,`to`,i);try{S(r)||C(r,{recursive:!0}),b(n,i)}catch(e){return e.code===`EBUSY`?i:(this.logger.error(`Failed to copy`,e),this.logger.error(`Failed to copy`,{originalPath:n,targetPath:i}),!1)}return i}async injectRenderInterface(e){this.logger.log(`Injecting render interface`,{is32Bit:e.is32Bit,game:e.identifier});let t=e.is32Bit?Ht:Vt;this.logger.log(`Render hook path`,t);let n=this.copyDll(t);if(!n)return this.logger.error(`Failed to copy render hook DLL`,{renderHookPath:t}),!1;let r=this.copyInjectors();if(!r)return!1;this.logger.log(`Resolved injector path`,r);try{return this.logger.log(`Injecting render interface`,n),await e.injectDll(n,r),this.logger.log(`Render Interface Injection Successful`,n),!0}catch(e){return this.logger.error(`Render Interface Injection Failed`,e),this.logger.error(`Render Interface Injection Failed`,{renderHookPathCopied:n}),!1}}async injectGameModules(e){let t=this.copyInjectors();if(t){this.logger.log(`Resolved injector path`,t),await Rt.getInstance().ready;for(let n of e.modules){let r=await It.getInstance().getDllFile(n);if(!r){this.logger.error(`No DLL file found for module`,{moduleId:n});continue}try{this.logger.log(`Injecting game module`,r),await e.injectDll(r,t),this.logger.log(`Injection Successful`,r)}catch(e){this.logger.error(`Injection Failed`,{dllFile:r},e)}}}}async onGameClose({game:e}){let t=mt(e.identifier);this.pendingLaunches.get(e.processId)?.abort(),this.pendingLaunches.delete(e.processId),this.activeGames.delete(e.processId),this.logger.debug(`Active games`,this.getActiveGames().join(`, `)),this.emit(`gameCloseInternal`,{game:e}),this.emit(`gameClose`,{game:t,processId:e.processId}),q.getInstance().track(`game_close`,{game:t})}}),Gt=j(class extends We{boundOnGameLaunch=this.onGameLaunch.bind(this);boundOnGameClose=this.onGameClose.bind(this);pendingBuilds=new Map;constructor(){super(`GameBuildManager`)}init(){super.init(),J.getInstance().on(`gameReadyInternal`,this.boundOnGameLaunch),J.getInstance().on(`gameCloseInternal`,this.boundOnGameClose)}destroy(){J.getInstance().off(`gameReadyInternal`,this.boundOnGameLaunch),J.getInstance().off(`gameCloseInternal`,this.boundOnGameClose),super.destroy()}onGameClose(...e){let[{game:t}]=e;this.pendingBuilds.get(t.processId)?.abort(),this.pendingBuilds.delete(t.processId)}async onGameLaunch(...e){let[{game:t}]=e;if(!t.executablePath||!t.executableName){this.logger.error(`Executable path or name not found, could not check for build hash`,void 0,t.identifier);return}let n=mt(t.identifier),r=new AbortController;this.pendingBuilds.set(t.processId,r);try{await this.checkBuild(t.executablePath,t.executableName,t,n,r.signal)}finally{this.pendingBuilds.delete(t.processId)}}async checkBuild(e,t,n,r,i){let a;try{a=await n.computeBuildHash()}catch(e){this.logger.error(`Error hashing the game build`,e);return}if(i.aborted){this.logger.log(`Game closed while hashing the build, skipping the upload`);return}this.logger.log(`Executable Path`,e),this.logger.log(`Executable Name`,t),this.logger.log(`Build Hash`,a);let o=!1;try{o=(await ht(r,a)).data.upload}catch(e){this.logger.error(`Error checking game build hash`,e);return}if(!o){this.logger.log(`Build hash already exists, skipping upload`);return}if(i.aborted){this.logger.log(`Game closed before the build was read, skipping the upload`);return}let s=new ae;s.file(t,await ne(e));let c=await s.generateAsync({type:`blob`});try{this.logger.log(`Uploading build (size: `,c.size,` bytes)`);let e=new L(c,{chunkSizeMb:25,maxConcurrent:1}),t=await gt(r,{build_hash:a,chunk_count:e.totalChunks,file_size_bytes:c.size});await e.chunk(async(e,n)=>{this.logger.log(`Uploading chunk`,n),await _t(r,{chunk:e,build_hash:a,chunk_index:n,upload_token:t.data.upload_token})}),this.logger.log(`Build uploaded successfully`)}catch(e){bt(e)?xt(e.response)?this.logger.error(`Error uploading build hash, api error`,e):this.logger.error(`Error uploading build hash, request error`,e):this.logger.error(`Error uploading build hash, unknown error`,e)}}}),Kt=j(class extends We{constructor(){super(`CampaignManager`)}async check(e){let t=h.join(ve(e),`campaign_code.txt`);try{let e=(await E.readFile(t,`utf-8`)).trim().replace(/ \(\d+\)/g,``);e&&(this.logger.log(`UTM campaign code found`,e),q.getInstance().track(`utm_attribution`,{campaign_code:e}),q.getInstance().flush())}catch{}}}),qt=new M({path:f.normalize(`${process.env.APPDATA||process.env.HOME||`.`}/.overlayed/config.json`),default:void 0,schema:t({Account:n({email:`string`,apiKey:`string`,"applicationId?":`string`,"baseUrl?":`string`})}).type({currentAccount:`Account | undefined`,accounts:`Account[]`}).or(`undefined`)});function Jt(e,t){let n=t.applicationId===void 0||e.applicationId===void 0||e.applicationId===t.applicationId,r=(e.baseUrl??`https://api.overlayed.gg`)===t.baseUrl;return n&&r}function Yt(e){let{currentAccount:t,accounts:n,expected:r}=e;if(t&&Jt(t,r))return{account:t,source:`current`};let i=n.find(e=>Jt(e,r));if(i)return{account:i,source:`other`}}function Xt(e,t){return`${e}:${t}`}function Zt(e,t,n){return e.reduce((e,r)=>{let i=r.key;return e[i]={on(e,n){let r=Xt(i,e),a=t.get(r)??new Set;a.add(n),t.set(r,a)},onAny(e){let n=Xt(i,`*`),r=t.get(n)??new Set;r.add(e),t.set(n,r)},off(e,n){let r=Xt(i,e),a=t.get(r);a&&(a.delete(n),a.size===0&&t.delete(r))},offAny(e){let n=Xt(i,`*`),r=t.get(n);r&&(r.delete(e),r.size===0&&t.delete(n))},readyForGameEvents:()=>{n.emit(`flushEvents`,i)}},e},{})}function Qt(){let e=me.getInstance(),t=J.getInstance();return{on:(n,r)=>{switch(n){case`fatal`:e.on(`fatal`,r);break;case`error`:e.on(`error`,r);break;case`warning`:e.on(`warning`,r);break;case`gameLaunch`:t.on(`gameLaunch`,r);break;case`gameClose`:t.on(`gameClose`,r);break;case`gameReady`:t.on(`gameReady`,r);break;default:throw Error(`Event type not implemented ${n}`,{cause:[n,r]})}},off:(n,r)=>{switch(n){case`fatal`:e.off(`fatal`,r);break;case`error`:e.off(`error`,r);break;case`warning`:e.off(`warning`,r);break;case`gameLaunch`:t.off(`gameLaunch`,r);break;case`gameClose`:t.off(`gameClose`,r);break;case`gameReady`:t.off(`gameReady`,r);break;default:throw Error(`Event type not implemented ${n}`,{cause:[n,r]})}}}}const $t=new Map([[1,`LeftButton`],[2,`RightButton`],[3,`Cancel`],[4,`MiddleButton`],[5,`ExtraButton1`],[6,`ExtraButton2`],[8,`Backspace`],[9,`Tab`],[12,`Clear`],[13,`Enter`],[16,`ShiftLeft`],[17,`ControlLeft`],[18,`AltLeft`],[19,`Pause`],[20,`CapsLock`],[21,`KanaMode`],[23,`JunjaMode`],[24,`Finalize`],[25,`HanjaMode`],[27,`Escape`],[28,`Convert`],[29,`NonConvert`],[30,`Accept`],[31,`ModeChange`],[32,`Space`],[33,`PageUp`],[34,`PageDown`],[35,`End`],[36,`Home`],[37,`ArrowLeft`],[38,`ArrowUp`],[39,`ArrowRight`],[40,`ArrowDown`],[41,`Select`],[42,`PrintScreen`],[43,`Execute`],[44,`Snapshot`],[45,`Insert`],[46,`Delete`],[47,`Help`],[48,`Digit0`],[49,`Digit1`],[50,`Digit2`],[51,`Digit3`],[52,`Digit4`],[53,`Digit5`],[54,`Digit6`],[55,`Digit7`],[56,`Digit8`],[57,`Digit9`],[65,`KeyA`],[66,`KeyB`],[67,`KeyC`],[68,`KeyD`],[69,`KeyE`],[70,`KeyF`],[71,`KeyG`],[72,`KeyH`],[73,`KeyI`],[74,`KeyJ`],[75,`KeyK`],[76,`KeyL`],[77,`KeyM`],[78,`KeyN`],[79,`KeyO`],[80,`KeyP`],[81,`KeyQ`],[82,`KeyR`],[83,`KeyS`],[84,`KeyT`],[85,`KeyU`],[86,`KeyV`],[87,`KeyW`],[88,`KeyX`],[89,`KeyY`],[90,`KeyZ`],[91,`MetaLeft`],[92,`MetaRight`],[93,`ContextMenu`],[95,`Sleep`],[96,`Numpad0`],[97,`Numpad1`],[98,`Numpad2`],[99,`Numpad3`],[100,`Numpad4`],[101,`Numpad5`],[102,`Numpad6`],[103,`Numpad7`],[104,`Numpad8`],[105,`Numpad9`],[106,`NumpadMultiply`],[107,`NumpadAdd`],[108,`NumpadSeparator`],[109,`NumpadSubtract`],[110,`NumpadDecimal`],[111,`NumpadDivide`],[112,`F1`],[113,`F2`],[114,`F3`],[115,`F4`],[116,`F5`],[117,`F6`],[118,`F7`],[119,`F8`],[120,`F9`],[121,`F10`],[122,`F11`],[123,`F12`],[124,`F13`],[125,`F14`],[126,`F15`],[127,`F16`],[128,`F17`],[129,`F18`],[130,`F19`],[131,`F20`],[132,`F21`],[133,`F22`],[134,`F23`],[135,`F24`],[144,`NumLock`],[145,`ScrollLock`],[146,`NEC_Equal`],[147,`Fujitsu_Masshou`],[148,`Fujitsu_Touroku`],[149,`Fujitsu_Loya`],[150,`Fujitsu_Roya`],[160,`ShiftLeft`],[161,`ShiftRight`],[162,`ControlLeft`],[163,`ControlRight`],[164,`AltLeft`],[165,`AltRight`],[166,`BrowserBack`],[167,`BrowserForward`],[168,`BrowserRefresh`],[169,`BrowserStop`],[170,`BrowserSearch`],[171,`BrowserFavorites`],[172,`BrowserHome`],[173,`VolumeMute`],[174,`VolumeDown`],[175,`VolumeUp`],[176,`MediaTrackNext`],[177,`MediaTrackPrevious`],[178,`MediaStop`],[179,`MediaPlayPause`],[180,`LaunchMail`],[181,`LaunchMediaSelect`],[182,`LaunchApplication1`],[183,`LaunchApplication2`],[186,`OEM_1`],[187,`Equal`],[188,`Comma`],[189,`Minus`],[190,`Period`],[191,`Slash`],[192,`Backquote`],[219,`BracketLeft`],[220,`Backslash`],[221,`BracketRight`],[222,`Quote`],[223,`IntlRo`],[225,`OEM_AX`],[226,`IntlBackslash`],[227,`ICO_HELP`],[228,`ICO_00`],[229,`Process`],[230,`ICO_CLEAR`],[231,`Packet`],[233,`OEM_Reset`],[234,`OEM_Jump`],[235,`OEM_PA1`],[236,`OEM_PA2`],[237,`OEM_PA3`],[238,`OEM_WS_Ctrl`],[239,`OEM_CU_Sel`],[240,`OEM_ATTN`],[241,`OEM_Finish`],[242,`OEM_Copy`],[243,`OEM_Auto`],[244,`OEM_ENLW`],[245,`BackTab`],[246,`ATTN`],[247,`CRSel`],[248,`EXSel`],[249,`EREOF`],[250,`MediaPlay`],[251,`Zoom`],[252,`Noname`],[253,`PA1`],[254,`OEM_Clear`]]),en=new Map($t.entries().map(([e,t])=>[t,e])),tn=n({"[string]":{keys:`string[]`,mode:n(`'toggle' | 'hold'`).pipe(e=>e??`toggle`)}});var nn=class extends Ge{preferencesKeybindToCallbacks=new Map;pressedKeys=new Set;activeKeybinds=new Set;triggeredToggleKeybinds=new Set;boundHandleKeyboardFocus=this.handleKeyboardFocus.bind(this);boundHandleKeyDown=this.handleKeyDown.bind(this);boundHandleKeyUp=this.handleKeyUp.bind(this);keybindsFile;keybindListeningPaused=!1;constructor(e){super(`KeybindManager`),this.keybindsFile=new M({path:Ot([`keybinds.json`]),schema:tn,default:e})}init(){super.init();let e=K.getInstance().getInterface(`OGG_SIEGE`);e.instance.on(`keyboardFocus`,this.boundHandleKeyboardFocus),e.instance.on(`keyDown`,this.boundHandleKeyDown),e.instance.on(`keyUp`,this.boundHandleKeyUp)}async onKeybindToggled(e,t){let n=this.preferencesKeybindToCallbacks.get(e)??{toggle:[],down:[],up:[]};n.toggle.push(t),this.preferencesKeybindToCallbacks.set(e,n)}async onKeybindDown(e,t){let n=this.preferencesKeybindToCallbacks.get(e)??{toggle:[],down:[],up:[]};n.down.push(t),this.preferencesKeybindToCallbacks.set(e,n)}async onKeybindUp(e,t){let n=this.preferencesKeybindToCallbacks.get(e)??{toggle:[],down:[],up:[]};n.up.push(t),this.preferencesKeybindToCallbacks.set(e,n)}async updateKeybind(e,t){this.keybindsFile.set({[e]:t})}async updateKeybinds(e){let t=Object.fromEntries(Object.entries(e).filter(([e,t])=>t!==void 0));this.keybindsFile.set({...this.keybindsFile.get(),...t})}getConfig(){return this.keybindsFile.get()}destroy(){let e=K.getInstance().getInterface(`OGG_SIEGE`);e.instance.off(`keyboardFocus`,this.boundHandleKeyboardFocus),e.instance.off(`keyDown`,this.boundHandleKeyDown),e.instance.off(`keyUp`,this.boundHandleKeyUp),super.destroy()}handleKeyDown(e){if(this.keybindListeningPaused)return;let t=$t.get(e.key);if(!t){this.logger.error(`Unknown key down`,e);return}this.pressedKeys.add(t),this.checkKeybindings()}handleKeyboardFocus(){this.pressedKeys.clear(),this.activeKeybinds.clear(),this.triggeredToggleKeybinds.clear()}async handleKeyUp(e){if(this.keybindListeningPaused)return;let t=$t.get(e.key);if(!t)return;this.pressedKeys.delete(t);let n=this.keybindsFile.get();for(let[e]of this.preferencesKeybindToCallbacks.entries())n[e].keys.includes(t)&&this.triggeredToggleKeybinds.delete(e);this.checkKeybindUps()}async checkKeybindUps(){let e=this.keybindsFile.get();for(let[t,n]of this.preferencesKeybindToCallbacks.entries()){if(!n.up||n.up.length===0)continue;let r=e[t];if(this.activeKeybinds.has(t)&&r.keys.some(e=>!this.pressedKeys.has(e))){this.activeKeybinds.delete(t);for(let e of n.up)e();this.logger.log(`Keybind up triggered`,this.getKeybindToString(r))}}}async checkKeybindings(){let e=this.keybindsFile.get();for(let[t,n]of this.preferencesKeybindToCallbacks.entries()){let r=e[t];if(r.keys.length===this.pressedKeys.size&&r.keys.every(e=>en.has(e)?this.pressedKeys.has(e):!1)){this.triggerKeybind(r,n,t);return}}for(let[t,n]of this.preferencesKeybindToCallbacks.entries()){let r=e[t];r.keys.every(e=>en.has(e)?this.pressedKeys.has(e):(this.logger.error(`Unknown key`,e,r),!1))&&this.triggerKeybind(r,n,t)}}triggerKeybind(e,t,n){let r=e.mode;if(r===`toggle`&&t.toggle&&t.toggle.length>0&&!this.triggeredToggleKeybinds.has(n)){let r;for(let e of t.toggle){let t=e();typeof t==`string`&&r===void 0&&(r=t)}this.triggeredToggleKeybinds.add(n),this.logger.log(r?`Keybind pressed rejected: ${r}`:`Keybind pressed accepted`,this.getKeybindToString(e))}if(r===`hold`&&t.down&&t.down.length>0&&!this.activeKeybinds.has(n)){let r;for(let e of t.down){let t=e();if(typeof t==`string`){r=t;break}}r?this.logger.log(`Keybind down rejected: ${r}`,this.getKeybindToString(e)):(this.activeKeybinds.add(n),this.logger.log(`Keybind down accepted`,this.getKeybindToString(e)))}}getKeybindToString(e){return`(${e.keys.join(`+`)}${e.mode?` ${e.mode}`:``})`}};function rn(e){let t=new nn(e),n={};for(let r in e)n[r]={on:(e,n)=>{switch(e){case`down`:t.onKeybindDown(r,n);break;case`up`:t.onKeybindUp(r,n);break;case`toggle`:t.onKeybindToggled(r,n);break;default:throw Error(`Event type not implemented ${e}`,{cause:[e,n]})}}};let r={...n,getConfig:()=>t.getConfig(),pauseKeybindListening:()=>{t.keybindListeningPaused=!0},resumeKeybindListening:()=>{t.keybindListeningPaused=!1},updateKeybind:(e,n)=>{t.updateKeybind(e,n)},updateKeybinds:e=>{t.updateKeybinds(e)}};return t.init(),O.on(`quit`,()=>{t.destroy()}),r}function Y(){return K.getInstance().getInterface(`OGG_SIEGE`)}function an(){let e=J.getInstance(),t=me.getInstance(),n=q.getInstance();if(!O.isPackaged){I.getInstance().info(`Cortex is disabled in development`),n.enabled=!1;return}try{n.meta=on()}catch(e){I.getInstance().error(`Failed to setup cortex`,e);return}e.on([`gameReady`,`gameClose`],()=>{n.meta||=on(),n.meta.in_game=e.isInGame}),t.on(`fatal`,e=>{n.track(`fatal`,{message:e.message,code:e.code,data:JSON.stringify(e.data)})}),t.on(`error`,e=>{n.track(`error`,{code:e.code,message:e.message,data:JSON.stringify(e.data)})}),t.on(`warning`,e=>{n.track(`warning`,{message:e.message,code:e.code,data:JSON.stringify(e.data)})})}function on(){if(!global.OVERLAYED_META.release.id)throw Error(`Release ID is required`);return{app_id:global.OVERLAYED.APPLICATION_ID,user_id:G(),release_id:global.OVERLAYED_META.release.id,app_channel:global.OVERLAYED.APP_BUILD_CHANNEL,app_version:global.OVERLAYED.APP_VERSION,package_version:global.OVERLAYED.PACKAGE_VERSION,frontend_version:global.OVERLAYED.FRONTEND_VERSION,frontend_release_id:global.OVERLAYED.FRONTEND_RELEASE_ID,session_id:global.OVERLAYED.sessionId,in_game:!1}}const sn=j(class extends Ge{CHECK_INTERVAL=1e3*60*15;RETRY_INTERVAL=1e3*15;_updateCheckInterval=null;_latestCheckResponse=null;_activeCheckResponse=null;initialReleaseId=null;get manualUpdatesEnabled(){return this.options?.manualUpdates??!1}get activeReleaseId(){return this._activeCheckResponse?.release_id??this.initialReleaseId}constructor(){super(`SiteManager`)}init(e){super.init(e),e?.manualUpdates&&this.enableManualUpdates()}destroy(){super.destroy(),this._updateCheckInterval&&=(clearInterval(this._updateCheckInterval),null)}allowSiteUpdateOnNextLoad(){if(!this.options?.manualUpdates){this.logger.warn(`allowSiteUpdateOnNextLoad called but manual updates are disabled`);return}if(!this._latestCheckResponse){this.logger.warn(`allowSiteUpdateOnNextLoad called but no update has been checked yet`);return}if(this._activeCheckResponse?.release_id===this._latestCheckResponse.release_id){this.logger.warn(`allowSiteUpdateOnNextLoad called but theres no update available`);return}this._activeCheckResponse=this._latestCheckResponse,q.getInstance().track(`site_update_applied`,{version:this._latestCheckResponse.version,release_id:this._latestCheckResponse.release_id}),this.setFrontendCortexMeta(this._latestCheckResponse.release_id,this._latestCheckResponse.version)}setFrontendCortexMeta(e,t){let n=q.getInstance();n.meta||=on(),e&&(global.OVERLAYED.FRONTEND_RELEASE_ID=e,n.meta.frontend_release_id=e),t&&(global.OVERLAYED.FRONTEND_VERSION=t,n.meta.frontend_version=t),e&&t&&n.track(`frontend_version_changed`,{version:t,release_id:e})}enableManualUpdates(){this.logger.log(`Enabling manual site updates`),this.checkForUpdates(),this._updateCheckInterval=setInterval(()=>{this.checkForUpdates(!0)},this.CHECK_INTERVAL)}async checkForUpdates(e=!1){let t=global.OVERLAYED_META?.application?.siteUrl;if(!t){this.logger.log(`No siteUrl configured, skipping check`);return}q.getInstance().track(`site_check_for_update`,{});try{let n=new URL(`/check`,t).toString();this.logger.log(`Checking site URL`,n);let r={"Overlayed-User-Agent":Ze({package_version:global.OVERLAYED.PACKAGE_VERSION,application_id:global.OVERLAYED.APPLICATION_ID,application_version:global.OVERLAYED.APP_VERSION}),"Overlayed-Cortex-User-Id":global.OVERLAYED_RUNTIME.userId},i=Nt();i&&(r[`Overlayed-Access-Token`]=i);let a=global.OVERLAYED_META.release.channelId;a&&(r[`Overlayed-Channel-Id`]=a);let o=await fetch(n,{headers:r});if(!o.ok){this.logger.warn(`Site check failed with status`,o.status),q.getInstance().track(`site_check_error`,{status:o.status}),e&&this.scheduleRetry();return}let s=await o.json();if(this.logger.log(`Site check response`,s),!s.release_id){this.logger.error(`Site check response missing release_id`);return}if(!this._latestCheckResponse){this._latestCheckResponse=s;return}return this._latestCheckResponse.release_id===s.release_id?void 0:(this.logger.log(`New site version detected`,s),this._latestCheckResponse=s,q.getInstance().track(`site_update_ready`,{version:s.version,release_id:s.release_id}),this.emit(`siteUpdateReady`,{releaseId:s.release_id,version:s.version}),s)}catch(e){let t=e instanceof Error?e.message:String(e);q.getInstance().track(`site_check_error`,{message:t}),this.logger.error(`Site check failed`,{error:e,message:t}),this.scheduleRetry()}}scheduleRetry(){setTimeout(()=>{this.checkForUpdates()},this.RETRY_INTERVAL)}}),cn=j(Se,`browser-windows.log`);let ln;function un(){return ln||(ln=class e extends global.OVERLAYED.electron.BrowserWindow{static session=void 0;constructor(t){let n=e.resolveCustomOptions(t);super(n)}static resolveCustomOptions(t){let n=global.OVERLAYED_META,r=global.OVERLAYED_RUNTIME;return{...t,webPreferences:{...t.webPreferences,session:e.getSession(),additionalArguments:[...t.webPreferences?.additionalArguments||[],...global.OVERLAYED.electron.app.isPackaged?[]:[`--overlayed-meta=${JSON.stringify(n)}`],`--overlayed-runtime=${JSON.stringify(r)}`]}}}static getSession(){if(!global.OVERLAYED_META?.application?.siteUrl)return;if(e.session)return e.session;e.session=global.OVERLAYED.electron.session.fromPartition(`persist:overlayed-${global.OVERLAYED.APPLICATION_ID}`);let t=sn.getInstance(),n=Ze({package_version:global.OVERLAYED.PACKAGE_VERSION,application_id:global.OVERLAYED.APPLICATION_ID,application_version:global.OVERLAYED.APP_VERSION}),r={urls:[global.OVERLAYED_META.application.siteUrl+`/*`]},i=global.OVERLAYED_RUNTIME.userId;return e.session.webRequest.onBeforeSendHeaders(r,(e,r)=>{let a=Nt();a&&(e.requestHeaders[`Overlayed-Access-Token`]=a);let o=global.OVERLAYED_META.release.channelId;o&&(e.requestHeaders[`Overlayed-Channel-Id`]=o),t.manualUpdatesEnabled&&t.activeReleaseId&&(e.requestHeaders[`Overlayed-Release-Id`]=t.activeReleaseId),e.requestHeaders[`Overlayed-Cortex-User-Id`]=i,e.requestHeaders[`Overlayed-User-Agent`]=n,r({requestHeaders:e.requestHeaders})}),t.manualUpdatesEnabled&&e.session.webRequest.onHeadersReceived(r,(e,n)=>{if(t.initialReleaseId){n(e);return}let r=e.responseHeaders?.[`Overlayed-Release-Id`]?.[0];r&&(t.initialReleaseId=ct(r));let i=e.responseHeaders?.[`Overlayed-Release-Version`]?.[0];t.setFrontendCortexMeta(r,i),n(e)}),e.session}},ln)}function dn(){function e(e,t){let n=cn.getInstance();return e.once(`closed`,()=>{e.isDestroyed()||q.getInstance().track(`window_closed`,{url:e.webContents.getURL(),in_game:t})}),e.on(`unresponsive`,()=>{e.isDestroyed()||q.getInstance().track(`window_unresponsive`,{url:e.webContents.getURL(),in_game:t})}),e.webContents.on(`console-message`,(t,r,i,a,o)=>{let s=e.isDestroyed()?`destroyed`:e.webContents.getURL();n[r===3?`error`:r===2?`warn`:`log`](`[${s}] [${o}:${a}] ${i}`)}),q.getInstance().track(`window_created`,{url:e.webContents.getURL(),in_game:t}),e}return{getProductionSiteUrl:()=>{let e=global.OVERLAYED_META.application.siteUrl;return URL.canParse(e)?new URL(e):new URL(`https://default.overlayedapps.com`)},createWindow:t=>e(new(un())(t),!1),createInGameWindow:t=>{let n=un();return e(Y().instance.newWindowInternal(n,t),!0)},on:(e,t)=>Y().instance.on(e,t),off:(e,t)=>Y().instance.off(e,t),once:(e,t)=>Y().instance.once(e,t),addListener:(e,t)=>Y().instance.addListener(e,t),removeListener:(e,t)=>Y().instance.removeListener(e,t),removeAllListeners:()=>Y().instance.removeAllListeners(),prependListener:(e,t)=>Y().instance.prependListener(e,t),prependOnceListener:(e,t)=>Y().instance.prependOnceListener(e,t),getActiveGameInfo:()=>{let e=Y(),t=Ne.getInstance();return{resolution:e.resolution,isConnected:t.hasConnection}}}}const fn=j(class extends We{renderInterface;globalCursorOverrideCount=new Set;globalMouseBlockCount=new Set;globalKeyboardBlockCount=new Set;keyInputBlocks={};constructor(e){super(`OverridesManager`),this.renderInterface=K.getInstance().getInterface(e)}scope(e){return{setGlobalCursorOverride:t=>this.setGlobalCursorOverride(e,t),setGlobalMouseBlock:t=>this.setGlobalMouseBlock(e,t),setGlobalKeyboardBlock:t=>this.setGlobalKeyboardBlock(e,t),setKeyInputBlock:(t,n)=>this.setKeyInputBlock(e,t,n)}}setGlobalCursorOverride(e,t){t?this.globalCursorOverrideCount.add(e):this.globalCursorOverrideCount.delete(e),t&&this.globalCursorOverrideCount.size===1?this.renderInterface.instance.setGlobalCursorOverride(!0):!t&&this.globalCursorOverrideCount.size===0&&this.renderInterface.instance.setGlobalCursorOverride(!1)}setGlobalMouseBlock(e,t){t?this.globalMouseBlockCount.add(e):this.globalMouseBlockCount.delete(e),t&&this.globalMouseBlockCount.size===1?this.renderInterface.instance.setGlobalMouseBlock(!0):!t&&this.globalMouseBlockCount.size===0&&this.renderInterface.instance.setGlobalMouseBlock(!1)}setGlobalKeyboardBlock(e,t){t?this.globalKeyboardBlockCount.add(e):this.globalKeyboardBlockCount.delete(e),t&&this.globalKeyboardBlockCount.size===1?this.renderInterface.instance.setGlobalKeyboardBlock(!0):!t&&this.globalKeyboardBlockCount.size===0&&this.renderInterface.instance.setGlobalKeyboardBlock(!1)}setKeyInputBlock(e,t,n){this.keyInputBlocks[t]||(this.keyInputBlocks[t]=new Set),n?this.keyInputBlocks[t].add(e):this.keyInputBlocks[t].delete(e),n&&this.keyInputBlocks[t].size===1?this.renderInterface.instance.setKeyInputBlock(t,!0):!n&&this.keyInputBlocks[t].size===0&&this.renderInterface.instance.setKeyInputBlock(t,!1)}},`OGG_SIEGE`);function pn(){return{scope:e=>fn.getInstance().scope(e),raw:{setGlobalMouseBlock:e=>Y().instance.setGlobalMouseBlock(e),setGlobalKeyboardBlock:e=>Y().instance.setGlobalKeyboardBlock(e),setGlobalCursorOverride:e=>Y().instance.setGlobalCursorOverride(e),setKeyInputBlock:(e,t)=>Y().instance.setKeyInputBlock(e,t),getGlobalMouseBlock:()=>Y().instance.getGlobalMouseBlock(),getGlobalKeyboardBlock:()=>Y().instance.getGlobalKeyboardBlock(),getGlobalCursorOverride:()=>Y().instance.getGlobalCursorOverride(),getKeyInputBlock:e=>Y().instance.getKeyInputBlock(e)}}}function mn(){return{track:(e,t)=>{q.getInstance().track(`custom__${String(e)}`,t)}}}function hn(){return{registerWindow:()=>{}}}const gn=/(\d{4})-(\d{2})-(\d{2})\.log$/;function _n(e){let t=e.match(gn);if(!t)return!1;let[,n,r,i]=t,a=Number(n),o=Number(r),s=Number(i);if(o<1||o>12||s<1||s>31)return!1;let c=new Date(a,o-1,s);if(isNaN(c.getTime())||c.getFullYear()!==a||c.getMonth()!==o-1||c.getDate()!==s)return!1;let l=new Date;return l.setDate(l.getDate()-7),l.setHours(0,0,0,0),c>=l}function vn(e){let{silent:t=!1,additionalFiles:n}=e??{},r=ye(global.OVERLAYED.APPLICATION_ID),i=Ce(r,{recursive:!0}),a=_e(),o=Ce(a,{recursive:!0});t||(I.getInstance().info(`Logs path: `,r),I.getInstance().info(`Overlayed logs path: `,a));let s=new ae;return i.forEach(([e,n])=>{t||I.getInstance().info(`Zipping: `,n);let r=x(n);s.file(g(n),r,{compression:`DEFLATE`})}),o.forEach(([e,n])=>{if(!_n(g(n))){t||I.getInstance().info(`Skipping old/unrecognized log: `,n);return}t||I.getInstance().info(`Zipping: `,n);let r=x(n);s.file(g(n),r,{compression:`DEFLATE`})}),n&&Object.entries(n).forEach(([e,n])=>{t||I.getInstance().info(`Zipping extra file: `,e),s.file(e,n,{compression:`DEFLATE`})}),s}async function yn(e,t,n){let r=global.OVERLAYED_META.release.id?ct(global.OVERLAYED_META.release.id):void 0,i=G();return ot(global.OVERLAYED.APPLICATION_ID,{file:Buffer.from(n,`base64`),data:{release_id:r,type:e,cortex_user_id:i,...t}}).then(e=>(I.getInstance().info(`Feedback submitted`,e),e.data.id)).catch(e=>{console.error(JSON.stringify(e,null,2)),I.getInstance().error(`Failed to submit feedback`,e)})}function bn(e){let t=new Se(`app.log`);return t.init(global.OVERLAYED.APPLICATION_ID,e.debug),{scope:e=>t.scope(e),info:e=>t.info(e),warn:e=>t.warn(e),error:e=>t.error(e),debug:e=>t.debug(e),submitFeedback:async(e,t,n)=>{let r=global.OVERLAYED_META.release.id?ct(global.OVERLAYED_META.release.id):void 0;return r&&O.isPackaged&&q.getInstance().track(e===`bug_report`?`bug_report_submitted`:`suggestion_submitted`,{release_id:r}),await yn(e,t,await vn(n).generateAsync({type:`base64`}))},getLogsZip:e=>vn(e)}}const xn=1e3;function Sn(e,t,r,i,a){let o=Ne.getInstance(),s=I.getInstance().scope(`SetupPipeServer`);s.log(`Initializing`);function c(e,t){let n=r.get(t);if(!n)r.set(t,[e]);else{if(n.length>=xn){me.getInstance().warn(`Event buffer full, removing oldest event`,`EVENT_BUFFER_FULL`,{summary:`Event buffer overflow for module ${t}. Buffer size: ${n.length}, max: ${xn}`});return}n.push(e)}}function l(e,r,i){let o=i.events.event,l=o(e);if(l instanceof n.errors){if(`type`in l.byPath)return;s.warn(`Invalid event`,{summary:l.summary}),q.getInstance().track(`invalid_game_event`,{game:r.game,type:r.type,summary:l.summary}),me.getInstance().warn(`Invalid event`,`INVALID_EVENT`,{summary:l.summary});return}if(!a[i.key]){c(e,i.key);return}if(l.type===`unsupported_game_version`){let{content:e}=l;q.getInstance().track(`unsupported_game_version`,{game:l.game,hash:e.processHash,version:e.gameVersion})}let u=Xt(i.key,l.type),d=Xt(i.key,`*`),f=t.get(u),p=t.get(d),m=[...Array.from(f??[]),...Array.from(p??[])];if(m.length===0){s.info(`No handlers found for event`,{event:l});return}m.forEach(e=>{e(l)})}function u(t){s.info(t);let r=kt(t);if(r instanceof n.errors){q.getInstance().track(`invalid_game_event`,{}),me.getInstance().warn(`Invalid event`,`INVALID_EVENT`,{summary:r.summary});return}let i=He.includes(r.type),a=e.modules.find(e=>e.key===`universal`),o=e.modules.find(e=>e.key===r.game),c=[];if(i&&a&&c.push(a),o&&o!==a&&(!i||r.type in o.events)&&c.push(o),c.length===0){s.warn(`Invalid module`,{module:i?`universal`:r.game});return}c.forEach(e=>l(t,r,e))}return i.on(`flushEvents`,t=>{if(a[t])return;a[t]=!0;let i=r.get(t);if(!i)return;I.getInstance().info(`Flushing ${i.length} events for module ${t}`);let o=e.modules.find(e=>e.key===t);o&&i.forEach(e=>{let t=kt(e);t instanceof n.errors||l(e,t,o)}),r.delete(t)}),o.on(`data`,e=>e.forEach(u)),o.on(`error`,e=>{s.error(`Pipe server error`,e),me.getInstance().error(`Pipe server error`,`PIPE_SERVER_ERROR`,{error:e})}),o.on(`connected`,()=>{s.log(`Pipe server connected`)}),o.on(`disconnected`,()=>{s.log(`Pipe server disconnected`)}),o}const Cn=j(class extends Ge{FETCH_INTERVAL=1e3*60*10;_fetchInterval=null;_flags=new Map;_overrides=new Map;_defaults=new Map;_boundOnGameReady=this.onGameEvent.bind(this);_boundOnGameClose=this.onGameEvent.bind(this);_readyResolve;ready;constructor(){super(`FeatureFlagManager`),this.ready=new Promise(e=>{this._readyResolve=e}),this.fetchFlags(),this.setupInterval(),J.getInstance().on(`gameReady`,this._boundOnGameReady),J.getInstance().on(`gameClose`,this._boundOnGameClose)}destroy(){this._fetchInterval&&=(clearInterval(this._fetchInterval),null),J.getInstance().off(`gameReady`,this._boundOnGameReady),J.getInstance().off(`gameClose`,this._boundOnGameClose),super.destroy()}setDefaults(e){this._defaults=new Map(Object.entries(e))}async refresh(){await this.fetchFlags()}override(e,t){let n=this.get(e);this._overrides.set(e,t),n!==t&&(this.emit(e,t),this.emit(`updated`,!0))}clearOverride(e){if(!this._overrides.has(e))return;let t=this.get(e);this._overrides.delete(e);let n=this.get(e);t!==n&&(this.emit(e,n),this.emit(`updated`,!0))}clearOverrides(){if(this._overrides.size===0)return;let e=new Map;for(let t of this._overrides.keys())e.set(t,this.get(t));this._overrides.clear();let t=!1;for(let[n,r]of e){let e=this.get(n);r!==e&&(this.emit(n,e),t=!0)}t&&this.emit(`updated`,!0)}isOverridden(e){return this._overrides.has(e)}getAllOverrides(){return Object.fromEntries(this._overrides)}inspect(e){let t=this._overrides.get(e),n=this._flags.get(e),r=this._defaults.get(e);return{effective:t??n??r??!1,override:t,actual:n,default:r}}get(e){let t=this._overrides.get(e),n=this._flags.get(e),r=this._defaults.get(e);return t??n??r??!1}getAll(){let e=Object.fromEntries(this._defaults);for(let[t,n]of this._flags)e[t]=n;for(let[t,n]of this._overrides)e[t]=n;return e}onGameEvent(){this.fetchFlags()}setupInterval(){this._fetchInterval=setInterval(()=>{this.fetchFlags()},this.FETCH_INTERVAL)}async fetchFlags(){try{let e=J.getInstance().getActiveGames(),{data:t}=await H(global.OVERLAYED.APPLICATION_ID,{cortex_user_id:global.OVERLAYED_RUNTIME.userId,release_id:global.OVERLAYED_META.release.id??void 0,channel_id:global.OVERLAYED_META.release.channelId??void 0,active_games:e.map(e=>e.toString())??void 0}),n=new Map;for(let e of t)n.set(e.name,e.enabled);for(let[e,t]of n){if(this._overrides.has(e))continue;let n=this._flags.get(e);n!==void 0&&n!==t&&this.emit(e,t)}for(let[e]of this._flags)this._overrides.has(e)||n.has(e)||this.emit(e,this._defaults.get(e)??!1);this._flags=n;for(let e of this._defaults.keys())this._flags.has(e)||this.logger.warn(`Registered feature flag "${e}" was not found in the API response`);this.emit(`updated`,!0)}catch(e){this.logger.error(`Failed to fetch feature flags`,e)}finally{this._readyResolve()}}});function wn(e){let t=Cn.getInstance();return e&&t.setDefaults(e),{on:(e,n)=>t.on(e,n),off:(e,n)=>t.off(e,n),ready:t.ready,get:e=>t.get(e),getAll:()=>t.getAll(),refresh:()=>t.refresh(),override:(e,n)=>t.override(e,n),clearOverride:e=>t.clearOverride(e),clearOverrides:()=>t.clearOverrides(),isOverridden:e=>t.isOverridden(e),getAllOverrides:()=>t.getAllOverrides(),inspect:e=>t.inspect(e)}}function Tn(){let e=sn.getInstance();return{on:(t,n)=>{e.on(t,n)},off:(t,n)=>{e.off(t,n)},allowSiteUpdateOnNextLoad:()=>{e.allowSiteUpdateOnNextLoad()}}}const En=n({dismissedNotices:ce(n.string).array()}),Dn=j(class extends Ge{NOTICE_FETCH_INTERVAL=1e3*60*10;MAX_DISMISSED_NOTICES=100;_noticeFetchInterval=null;_notices=[];_noticesFile;_boundOnGameReady=this.onGameReady.bind(this);get notices(){let e=this._noticesFile.get().dismissedNotices;return this._notices.filter(t=>!e.includes(t.id))}constructor(){super(`NoticeManager`),this._noticesFile=this.getNoticesFile(),this._noticesFile.load(),this.fetchNotices(),this.setupNoticeInterval(),J.getInstance().on(`gameReady`,this._boundOnGameReady)}destroy(){this._noticeFetchInterval&&=(clearInterval(this._noticeFetchInterval),null),J.getInstance().off(`gameReady`,this._boundOnGameReady),super.destroy()}dismissNotice(e){let t=this._notices.find(t=>t.id===e);if(!t||!t.dismissible)return;let n=this._noticesFile.get().dismissedNotices;n.unshift(e),this._noticesFile.set({dismissedNotices:n.slice(0,this.MAX_DISMISSED_NOTICES)}),this.emitNoticesUpdated()}onGameReady(){this.fetchNotices()}setupNoticeInterval(){this._noticeFetchInterval=setInterval(()=>{this.fetchNotices()},this.NOTICE_FETCH_INTERVAL)}getNoticesFile(){return new M({path:Ot([`notices.json`]),schema:En,default:{dismissedNotices:[]}})}async fetchNotices(){let e=J.getInstance().getActiveGames();try{let{data:t}=await st(global.OVERLAYED.APPLICATION_ID,{release_id:global.OVERLAYED_META.release.id?ct(global.OVERLAYED_META.release.id):void 0,games:e});this._notices=t,this.emitNoticesUpdated()}catch(e){this.logger.error(`Failed to fetch notices`,e)}}emitNoticesUpdated(){this.emit(`noticesUpdated`,{notices:this.notices})}});function On(){let e=Dn.getInstance();return{on:(t,n)=>{e.on(t,n)},off:(t,n)=>{e.off(t,n)},dismissNotice:t=>{e.dismissNotice(t)},getNotices:()=>e.notices}}const{Provider:kn}=oe;var An=class extends kn{options;updater;logger=I.getInstance().scope(`OverlayedProvider`);constructor(e,t,n){super(n),this.options=e,this.updater=t}async getLatestVersion(){try{let e=await rt(this.options.application_id,{release_id:this.options.release_id,cortex_user_id:this.options.cortex_user_id,access_token:this.options.access_token,requested_channel:this.options.requested_channel});return this.logger.log(`checkApplicationRelease response`,e.data),q.getInstance().track(`update_release_check_success`,{version:e.data.release.version,channel:e.data.release.channel,fallback:!!e.data.fallback}),e.data.fallback&&this.logger.warn(`Update fallback detected, switching to default channel`),{path:``,sha512:e.data.download_hash??``,version:`${e.data.release.version}-${e.data.release.channel}`,releaseName:e.data.release.id,releaseDate:e.data.release.created_at,files:[{url:e.data.download_url,sha512:e.data.download_hash??``}]}}catch(e){let t=e instanceof Error?e.stack||e.message:String(e);throw q.getInstance().track(`update_release_check_error`,{message:t}),Error(`Unable to find the latest version (${this.options.release_id}), please ensure release exists. ${t}`)}}resolveFiles(e){return[{info:e.files[0],url:new URL(e.files[0].url)}]}};function jn(e){return{provider:`custom`,updateProvider:An,...e}}function X(){return oe.autoUpdater}const Mn=j(class extends Ge{DEFAULT_CHANNEL=`public`;TOKEN_REFRESH_INTERVAL=1e3*60*15;accessTokenFetcher=void 0;_tokenRefreshInterval=null;_downloadStarted=!1;constructor(){super(`UpdateManager`)}init(){super.init(),this.registerListenerForwarders(),this.setupTokenRefreshInterval(),X().disableDifferentialDownload=!0}destroy(){X().removeAllListeners(),this._tokenRefreshInterval&&=(clearInterval(this._tokenRefreshInterval),null),super.destroy()}setupTokenRefreshInterval(){this._tokenRefreshInterval=setInterval(()=>{this.checkAndRefreshToken()},this.TOKEN_REFRESH_INTERVAL)}async checkAndRefreshToken(){let e=global.OVERLAYED_META.release.channel;e!==this.DEFAULT_CHANNEL&&(this.logger.log(`Refreshing access token for channel`,e),await this.setAndGetLatestAccessToken(e))}async checkForUpdates(e){this.logger.log(`Starting checkForUpdates`);let t=e??global.OVERLAYED_META.release.channel;return q.getInstance().track(`check_for_update`,{channel:t}),this._downloadStarted=!1,await this.setAndGetLatestAccessToken(t),e?(X().allowDowngrade=!0,X().channel=e,this.setFeedUrl({requestedChannel:e})):(X().allowDowngrade=!1,X().channel=global.OVERLAYED_META.release.channel,this.setFeedUrl({})),this.logger.log(`Checking for updates`),X().checkForUpdates()}async switchChannel(e){return this.logger.log(`Switching channel`,e),q.getInstance().track(`update_channel_switch`,{from_channel:global.OVERLAYED_META.release.channel,to_channel:e}),this._downloadStarted=!1,await this.setAndGetLatestAccessToken(e),X().allowDowngrade=!0,X().channel=e,this.setFeedUrl({requestedChannel:e}),X().checkForUpdates()}quitAndInstall(e,t){this.logger.log(`quitAndInstall`,{isSilent:e,isForceRunAfter:t});let[n,r]=this.canUpdate();if(!n)throw this.logger.warn(`Cannot update`,{denialReason:r}),q.getInstance().track(`update_install_blocked`,{reason:r}),Error(r);return this.logger.log(`Quitting and installing`),q.getInstance().track(`update_install`,{}),X().quitAndInstall(e,t)}canUpdate(){return J.getInstance().isInGame?[!1,`User is in game`]:[!0,null]}downloadUpdate(e){return X().downloadUpdate(e)}setAccessTokenFetcher(e){this.accessTokenFetcher=e}async setAndGetLatestAccessToken(e){if(this.logger.log(`Fetching new token`),!this.accessTokenFetcher)return this.logger.warn(`accessTokenFetcher is not set, private channels will not work.`),Pt(null),null;if(this.logger.log(`Setting and getting latest access token for channel`,e),e===this.DEFAULT_CHANNEL)return this.logger.log(`Default channel, skipping`),Pt(null),null;if(e!==global.OVERLAYED_META.release.channel)return this.forceFetchNewAccessToken(e);this.logger.log(`Access token exists, checking expiration`);let t=Nt();if(t){let e=this.getAccessTokenExpirationDate(t);if(!e)this.logger.log(`Invalid token, setting to null`),Pt(null);else if(e.getTime()>=Date.now()+300*1e3)return this.logger.log(`Token is not expired, using it.`),t}return this.forceFetchNewAccessToken(e)}async forceFetchNewAccessToken(e){this.accessTokenFetcher||this.logger.warn(`accessTokenFetcher is not set [2], private channels will not work.`);try{let t=await this.accessTokenFetcher?.(e)??null;this.logger.log(`New token fetched`,t?.slice(0,5)+`...`);let n=Nt();if(t==null||n===t){q.getInstance().track(`update_token_invalid`,{channel:e}),this.emit(`authTokenInvalid`,{}),Pt(null);return}return Pt(t),t}catch(e){let t=e instanceof Error?e.message:String(e);return q.getInstance().track(`update_token_fetch_error`,{message:t}),this.logger.error(`Error fetching new token`,{error:e,message:t}),Pt(null),null}}setFeedUrl(e){if(!global.OVERLAYED_META.release.id){this.logger.warn(`Tried to set feed URL in development mode`);return}X().setFeedURL(jn({application_id:global.OVERLAYED.APPLICATION_ID,release_id:global.OVERLAYED_META.release.id,cortex_user_id:global.OVERLAYED_RUNTIME.userId,access_token:Nt(),requested_channel:e.requestedChannel}))}registerListenerForwarders(){X().on(`checking-for-update`,()=>{this.logger.info(`Checking for updates`),this.emit(`checkingForUpdates`,{})}),X().on(`download-progress`,e=>{this._downloadStarted||(this._downloadStarted=!0,q.getInstance().track(`update_download_started`,{version:X().currentVersion?.version??``})),this.emit(`downloadProgress`,{info:e});let t=`Download speed: ${e.bytesPerSecond} - Downloaded ${e.percent}%`;t+=` (${e.transferred}/${e.total})`,this.logger.log(t)}),X().on(`error`,(e,t)=>{this.logger.error(`Error`,e,t),q.getInstance().track(`update_download_error`,{message:t??e.message}),this.emit(`error`,{error:e,message:t})}),X().on(`update-not-available`,e=>{this.logger.info(`Update not available`,e),q.getInstance().track(`update_not_available`,{version:e.version}),this.emit(`updateNotAvailable`,{info:e})}),X().on(`update-available`,e=>{this.logger.info(`Update available`,e),q.getInstance().track(`update_available`,{version:e.version,channel:X().channel??``}),this.emit(`updateAvailable`,{info:e})}),X().on(`update-downloaded`,e=>{this.logger.info(`Update downloaded`,e),q.getInstance().track(`update_download_complete`,{version:e.version}),this.emit(`updateDownloaded`,{event:e})}),X().on(`update-cancelled`,e=>{this.logger.info(`Update cancelled`,e),q.getInstance().track(`update_cancelled`,{version:e.version}),this.emit(`updateCancelled`,{info:e})})}getAccessTokenExpirationDate(e){try{let t=e.split(`.`)[1];if(!t)return null;let n=atob(t.replace(/-/g,`+`).replace(/_/g,`/`)),r=JSON.parse(n);return r.exp?new Date(r.exp*1e3):null}catch{return null}}});function Nn(){let e=Mn.getInstance();return{site:Tn(),on:(t,n)=>{e.on(t,n)},off:(t,n)=>{e.off(t,n)},setAccessTokenFetcher:t=>e.setAccessTokenFetcher(t),checkForUpdates:()=>e.checkForUpdates(),switchChannel:t=>e.checkForUpdates(t),quitAndInstall:(t,n)=>e.quitAndInstall(t,n),canUpdate:()=>e.canUpdate(),downloadUpdate:t=>e.downloadUpdate(t)}}function Pn(){return{getChannel:()=>global.OVERLAYED_META.release.channel,getVersion:()=>global.OVERLAYED_META.release.version,getReleaseId:()=>global.OVERLAYED_META.release.id}}const Fn=j(class extends Ge{_knownModificationTimes=new Map;_confirmedDumps=new Set;_pendingReports=new Map;_snapshotTimestamp=0;boundOnGameReady=this.onGameReady.bind(this);boundOnGameClose=this.onGameClose.bind(this);constructor(){super(`CrashDumpManager`)}init(){super.init(),this.logger.debug(`init() registering game event listeners`),J.getInstance().on(`gameReadyInternal`,this.boundOnGameReady),J.getInstance().on(`gameCloseInternal`,this.boundOnGameClose),this.logger.debug(`init() complete`)}destroy(){this.logger.debug(`destroy() called`,{pendingReports:this._pendingReports.size,confirmedDumps:this._confirmedDumps.size,knownModificationTimes:this._knownModificationTimes.size}),J.getInstance().off(`gameReadyInternal`,this.boundOnGameReady),J.getInstance().off(`gameCloseInternal`,this.boundOnGameClose),this._knownModificationTimes.clear(),this._confirmedDumps.clear(),this._pendingReports.clear(),this._snapshotTimestamp=0,this.logger.debug(`destroy() cleanup complete`),super.destroy()}async submit(e){this.logger.debug(`submit() called`,{id:e,pendingCount:this._pendingReports.size});let t=this._pendingReports.get(e);if(!t){this.logger.warn(`submit called with unknown id`,e);return}let{response:n,dumpPath:r}=t;this.logger.debug(`Resolved pending report for submission`,{id:e,dumpPath:r});let i=global.OVERLAYED.APPLICATION_ID,a=G();if(this.logger.debug(`Resolved identifiers for submission`,{applicationId:i,cortexUserId:a}),n.crash_dump_upload_request)try{this.logger.debug(`Reading crash dump file`,{dumpPath:r});let t=await E.readFile(r);this.logger.debug(`Uploading crash dump`,{dumpPath:r,size:t.byteLength}),await dt(n.crash_dump_upload_request,new Uint8Array(t)),this.logger.debug(`Crash dump uploaded, confirming`,{id:e}),await at(i,e,{cortex_user_id:a,file_type:`crash_dump`}),this.logger.debug(`Crash dump confirmed`,{id:e})}catch(e){this.logger.error(`Failed to upload crash dump`,{dumpPath:r,error:e})}else this.logger.warn(`No crash dump upload request in response`,{id:e});this._pendingReports.delete(e),this._confirmedDumps.add(r),this.logger.debug(`Report state updated, attempting dump file cleanup`,{id:e,dumpPath:r});try{await E.unlink(r),this.logger.debug(`Dump file cleaned up successfully`,{dumpPath:r})}catch(e){this.logger.warn(`Failed to clean up dump file after submission`,{dumpPath:r,error:e})}this.logger.log(`Crash report submitted successfully`,r)}async onGameReady({game:e}){this.logger.debug(`onGameReady() fired`,{game:e.identifier}),await this.snapshotModificationTimes(),this.logger.debug(`onGameReady() snapshot complete`,{game:e.identifier})}async onGameClose({game:e}){this.logger.debug(`onGameClose() fired`,{game:e.identifier}),await this.scanForNewDumps(mt(e.identifier)),this.logger.debug(`onGameClose() scan complete`,{game:e.identifier})}async snapshotModificationTimes(){let e=xe();this._snapshotTimestamp=Date.now(),this.logger.debug(`snapshotModificationTimes() called`,{crashDumpsPath:e,snapshotTimestamp:this._snapshotTimestamp});try{await E.access(e)}catch{this.logger.debug(`Crash dumps directory does not exist, skipping snapshot`,{crashDumpsPath:e});return}let t=await this.findAllDumps(e);this.logger.debug(`Found dumps for snapshot`,{count:t.length});for(let e of t)try{let t=await E.stat(e);if(t.mtimeMs>=this._snapshotTimestamp-3e4){this.logger.debug(`Skipping recent dump from snapshot`,{dumpPath:e,mtimeMs:t.mtimeMs,snapshotTimestamp:this._snapshotTimestamp});continue}this._knownModificationTimes.set(e,t.mtimeMs),this.logger.debug(`Recorded modification time`,{dumpPath:e,mtimeMs:t.mtimeMs})}catch(t){this.logger.warn(`Failed to stat dump file during snapshot`,{dumpPath:e,error:t})}this.logger.debug(`Snapshot complete`,{totalTracked:this._knownModificationTimes.size})}async scanForNewDumps(e){let t=xe();this.logger.debug(`scanForNewDumps() called`,{game:e,crashDumpsPath:t});try{await E.access(t)}catch{this.logger.debug(`Crash dumps directory does not exist, skipping scan`,{crashDumpsPath:t});return}let n=new Set([...this._pendingReports.values()].map(e=>e.dumpPath)),r=await this.findAllDumps(t);this.logger.debug(`Scan found dumps`,{total:r.length,pendingCount:n.size,confirmedCount:this._confirmedDumps.size});for(let t of r){if(this._confirmedDumps.has(t)){this.logger.debug(`Skipping already confirmed dump`,{dumpPath:t});continue}if(n.has(t)){this.logger.debug(`Skipping already pending dump`,{dumpPath:t});continue}let r;try{r=await E.stat(t)}catch(e){this.logger.warn(`Failed to stat dump file during scan`,{dumpPath:t,error:e});continue}let i=r.mtimeMs,a=this._knownModificationTimes.get(t);if(this.logger.debug(`Comparing modification times`,{dumpPath:t,modificationTime:i,knownModificationTime:a}),a===void 0||i>a){this.logger.debug(`Dump is new or modified`,{dumpPath:t,isNew:a===void 0});try{let n=r.size,i=m.basename(m.dirname(t)),a=m.basename(t,m.extname(t));this.logger.debug(`Preparing crash report`,{dumpPath:t,crashDumpSize:n,crashSource:i});let o=(await vn().generateAsync({type:`uint8array`})).byteLength,s=global.OVERLAYED.APPLICATION_ID,c=G(),l=global.OVERLAYED_META.release.id;if(!l)throw Error(`Missing release id, the API rejects crash reports without one`);this.logger.debug(`Creating game crash report via API`,{applicationId:s,cortexUserId:c,game:e,crashSource:i,crashDumpSize:n,logsSize:o});let{data:u}=await it(s,{cortex_user_id:c,game:e,crash_source:i,crash_identifier:a,release_id:l,logs_size:o,crash_dump_size:n});this._pendingReports.set(u.id,{response:u,dumpPath:t}),this.logger.debug(`Crash report created, emitting 'new' event`,{id:u.id,game:e}),this.logger.log(`New crash dump detected`,{dumpPath:t,game:e,id:u.id}),this.emit(`new`,{id:u.id,game:e})}catch(e){this.logger.error(`Failed to create game crash report`,{dumpPath:t,error:e})}}else this.logger.debug(`Dump unchanged, skipping`,{dumpPath:t});this._knownModificationTimes.set(t,i)}this.logger.debug(`scanForNewDumps() complete`,{game:e,pendingReports:this._pendingReports.size})}async findAllDumps(e){this.logger.debug(`findAllDumps() called`,{basePath:e});let t=[],n;try{n=await E.readdir(e,{withFileTypes:!0})}catch(n){return this.logger.warn(`Failed to read crash dumps directory`,{basePath:e,error:n}),t}this.logger.debug(`Top-level entries in crash dumps directory`,{count:n.length,directories:n.filter(e=>e.isDirectory()).map(e=>e.name)});for(let r of n)if(r.isDirectory()){let n=m.join(e,r.name),i;try{i=await E.readdir(n,{withFileTypes:!0})}catch(e){this.logger.warn(`Failed to read crash dump subdirectory`,{subPath:n,error:e});continue}let a=i.filter(e=>e.isFile()&&e.name.endsWith(`.dmp`));this.logger.debug(`Scanned subdirectory`,{subPath:n,totalEntries:i.length,dmpCount:a.length});for(let e of a)t.push(m.join(n,e.name))}return this.logger.debug(`findAllDumps() complete`,{totalFound:t.length}),t}});let In=!1,Ln={},Rn,zn=new fe,Bn;function Vn(e){Un(e);let t=Hn(e),{init:n=!0,debug:r=!1,silent:i=!0}=t,a=Gn(e);if(I.getInstance().init(e.applicationId,r,i),cn.getInstance().init(e.applicationId,r,!0,!0),a&&Jn(tt(e.applicationId),!1).catch(()=>{}),In)return Rn;function o(){if(In){I.getInstance().warn(`Overlayed already initialized`);return}an();let n=qt.get({createIfMissing:!1});if(n){let t=Yt({currentAccount:n.currentAccount,accounts:n.accounts,expected:{applicationId:e.applicationId,baseUrl:qe}});t&&V(()=>t.account.apiKey)}let r=new Map,i=new Map,a=Nn(),s=Zt(t.modules,r,zn),c=Qt(),l=rn(t.keybinds),u=dn(),d=pn(),f=hn(),p=mn(),m=bn(t),h=On(),g=wn(t.featureFlags),_=Pn();I.getInstance().log(`Overlayed initialized`),Kn(t),Sn(t,r,i,zn,Ln),In=!0,Rn={...s,...c,ads:f,keybinds:l,windows:u,input:d,cortex:p,hasAnyActiveProcesses:()=>Lt.getInstance().hasAnyActiveGames,hasAnyActiveGames:()=>J.getInstance().isInGame,init:o,log:m,initialized:In,notices:h,featureFlags:g,updater:a,application:_,crashDumps:{on:(e,t)=>Fn.getInstance().on(e,t),off:(e,t)=>Fn.getInstance().off(e,t),submit:e=>Fn.getInstance().submit(e)}},Rn.universal.on(`logged_in`,e=>{q.getInstance().track(`account_id`,{account_id:e.content.accountId,game:e.game})})}return n&&a?(o(),Rn):new Proxy({init:o},{get:(e,t)=>{if(t===`init`)return e[t];if(!In)throw Error(a?`overlayed was called before initialized: ${t}`:Wn);return Rn[t]}})}function Hn(e){return{...e,modules:[...e.modules,Ue()]}}global.OVERLAYED=new Proxy({},{get:()=>{throw Error(`function overlayed was not called`)}});function Un(e){if(!ue(e.applicationId))throw Error(`Invalid applicationId, must be a valid ULID.`)}const Wn="Overlayed metadata has not been initialized yet. Run `overlayed init` to set up your local development environment.";function Gn(e){let t=qn(),n=`1.8.1`,r=tt(e.applicationId);function i(){return{package_version:n,application_id:r,application_version:t?.release.version??`0.0.0`}}return I.getInstance().log(`ua object`,i()),Xe(()=>i()),t===null?(global.OVERLAYED=new Proxy({},{get:()=>{throw Error(Wn)}}),Jn(r,!0),!1):(global.OVERLAYED={APPLICATION_ID:r,APP_BUILD_CHANNEL:t.release.channel,APP_VERSION:t.release.version,PACKAGE_VERSION:n,FRONTEND_VERSION:`0.0.0`,sessionId:jt(),electron:e.electron},global.OVERLAYED_META=t,global.OVERLAYED_RUNTIME={userId:G()},I.getInstance().log(`meta`,t),!0)}function Kn(e){I.getInstance().warn(`Bootstrapping`);let t=e.universal?[`*`]:e.modules.map(e=>e.key);J.getInstance().setSubscribedGames(t),I.getInstance().warn(`Initializing update manager`),Mn.getInstance().init(),I.getInstance().warn(`Initialized update manager`),sn.getInstance().init({manualUpdates:e.site?.manualUpdates??!1}),Gt.getInstance().init(),J.getInstance().init(),Fn.getInstance().init(),Lt.getInstance().init(),Rt.getInstance().init({subscribedGames:t}),q.getInstance().track(`start`,{}),Kt.getInstance().check(e.applicationId);try{Bn&&clearInterval(Bn),Bn=setInterval(()=>{try{Mt()}catch{}},3e4),Bn.unref()}catch(e){I.getInstance().log(`failed to start sessionLastUsed interval`,e)}async function n(){let e={};e.os=te.platform().trim(),e.os_version=process.getSystemVersion().trim(),e.architecture=te.arch().trim();let t=te.cpus();t.length>0?(e.cpu=t[0].model.trim(),e.cpu_cores=t.length,e.cpu_speed=t[0].speed):I.getInstance().warn(`Failed to collect CPU info`);let n=await k.graphics();I.getInstance().info(`GPU info`,n);let r=n.controllers.sort((e,t)=>(t.vram??0)-(e.vram??0))[0];r?(e.gpu=r.model.trim(),e.gpu_memory=r.vram??0):I.getInstance().warn(`Failed to find primary GPU`),e.display_count=n.displays.length;let i=n.displays.find(e=>e.main)??n.displays[0];i?(e.primary_display_resolution_x=i.resolutionX??void 0,e.primary_display_resolution_y=i.resolutionY??void 0,e.primary_display_refresh_rate=i.currentRefreshRate??void 0):I.getInstance().warn(`Failed to find main display`),e.ram=process.getSystemMemoryInfo().total;let a=te.homedir(),o=await E.statfs(a);return o&&`blocks`in o&&`bsize`in o&&`bavail`in o?(e.disk=o.blocks*o.bsize,e.disk_free=o.bavail*o.bsize):I.getInstance().warn(`Failed to collect disk info`),I.getInstance().log(`Retrieved system information`,e),e}O.on(`ready`,()=>{n().then(e=>{q.getInstance().track(`system_info`,e)}).catch(e=>{I.getInstance().log(`Failed to retrieve system information`,e)})}),O.on(`quit`,()=>{q.getInstance().track(`electron_quit`,{}),Yn()}),process.on(`exit`,()=>{q.getInstance().track(`exit`,{}),Yn()})}function qn(){if(O.isPackaged)try{let e=m.join(process.resourcesPath,`meta.json`);return JSON.parse(y.readFileSync(e,`utf-8`))}catch(e){throw Error(`Failed to read application metadata from resources/meta.json`,{cause:e})}else{let e=m.join(process.cwd(),`.overlayed`,`meta.json`);return y.existsSync(e)?JSON.parse(y.readFileSync(e,`utf-8`)):null}}async function Jn(e,t=!1){if(!O.isPackaged)try{I.getInstance().log(`Fetching application metadata from API...`);let n=Ee({...(await nt(e)).data,siteUrl:``});t&&(I.getInstance().log(v.yellowBright(`Uninitialized development environment detected. Created .overlayed folder. In the future, run ${v.bold(`overlayed init`)} to do so. \n\nThe process will now exit to load the cached metadata.\n\n${v.italic(`Note: This will never happen in a packaged application, and will only happen once in local development so long as the .overlayed folder exists.`)}`)),process.exit(0)),global.OVERLAYED_META=n}catch(e){I.getInstance().error(`Failed to fetch application meta`,e),t&&(console.error(`
|
|
15
|
+
`;case 114:return`\r`;case 120:return String.fromCharCode(this.readHexChar(2));case 117:return k(this.readCodePoint());case 116:return` `;case 98:return`\b`;case 118:return`\v`;case 102:return`\f`;case 13:this.input.charCodeAt(this.pos)===10&&++this.pos;case 10:return this.options.locations&&(this.lineStart=this.pos,++this.curLine),``;case 56:case 57:if(this.strict&&this.invalidStringToken(this.pos-1,`Invalid escape sequence`),e){var n=this.pos-1;this.invalidStringToken(n,`Invalid escape sequence in template string`)}default:if(t>=48&&t<=55){var r=this.input.substr(this.pos-1,3).match(/^[0-7]+/)[0],i=parseInt(r,8);return i>255&&(r=r.slice(0,-1),i=parseInt(r,8)),this.pos+=r.length-1,t=this.input.charCodeAt(this.pos),r===`0`&&t!==56&&t!==57||!this.strict&&!e||this.invalidStringToken(this.pos-1-r.length,e?`Octal literal in template string`:`Octal literal in strict mode`),String.fromCharCode(i)}return C(t)?(this.options.locations&&(this.lineStart=this.pos,++this.curLine),``):String.fromCharCode(t)}},H.readHexChar=function(e){var t=this.pos,n=this.readInt(16,e);return n===null&&this.invalidStringToken(t,`Bad character escape sequence`),n},H.readWord1=function(){this.containsEsc=!1;for(var e=``,t=!0,n=this.pos,r=this.options.ecmaVersion>=6;this.pos<this.input.length;){var i=this.fullCharCodeAtPos();if(m(i,r))this.pos+=i<=65535?1:2;else{if(i!==92)break;this.containsEsc=!0,e+=this.input.slice(n,this.pos);var a=this.pos;this.input.charCodeAt(++this.pos)!==117&&this.invalidStringToken(this.pos,`Expecting Unicode escape sequence \\uXXXX`),++this.pos;var o=this.readCodePoint();(t?p:m)(o,r)||this.invalidStringToken(a,`Invalid Unicode escape`),e+=k(o),n=this.pos}t=!1}return e+this.input.slice(n,this.pos)},H.readWord=function(){var e=this.readWord1(),t=b.name;return this.keywords.test(e)&&(t=ee[e]),this.finishToken(t,e)},M.acorn={Parser:M,version:`8.16.0`,defaultOptions:ue,Position:se,SourceLocation:ce,getLineInfo:le,Node:je,TokenType:h,tokTypes:b,keywordTypes:ee,TokContext:Ce,tokContexts:R,isIdentifierChar:m,isIdentifierStart:p,Token:ot,isNewLine:C,lineBreak:x,lineBreakG:S,nonASCIIwhitespace:te};var lt=r(`node:module`),U=r(`node:fs`);String.fromCharCode;let ut=/\/$|\/\?|\/#/,dt=/^\.?\//;function ft(e=``,t){return t?ut.test(e):e.endsWith(`/`)}function pt(e=``,t){if(!t)return e.endsWith(`/`)?e:e+`/`;if(ft(e,!0))return e||`/`;let n=e,r=``,i=e.indexOf(`#`);if(i!==-1&&(n=e.slice(0,i),r=e.slice(i),!n))return r;let[a,...o]=n.split(`?`);return a+`/`+(o.length>0?`?${o.join(`?`)}`:``)+r}function mt(e){return e&&e!==`/`}function ht(e,...t){let n=e||``;for(let e of t.filter(e=>mt(e)))if(n){let t=e.replace(dt,``);n=pt(n)+t}else n=e;return n}let gt=/^[A-Za-z]:\//;function _t(e=``){return e&&e.replace(/\\/g,`/`).replace(gt,e=>e.toUpperCase())}let vt=/^[/\\]{2}/,yt=/^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Za-z]:[/\\]/,bt=/^[A-Za-z]:$/,xt=/.(\.[^./]+|\.)$/,St=function(e){if(e.length===0)return`.`;let t=(e=_t(e)).match(vt),n=Dt(e),r=e[e.length-1]===`/`;return(e=Et(e,!n)).length===0?n?`/`:r?`./`:`.`:(r&&(e+=`/`),bt.test(e)&&(e+=`/`),t?n?`//${e}`:`//./${e}`:n&&!Dt(e)?`/${e}`:e)},Ct=function(...e){let t=``;for(let n of e)if(n)if(t.length>0){let e=t[t.length-1]===`/`,r=n[0]===`/`;t+=e&&r?n.slice(1):e||r?n:`/${n}`}else t+=n;return St(t)};function wt(){return typeof process<`u`&&typeof process.cwd==`function`?process.cwd().replace(/\\/g,`/`):`/`}let Tt=function(...e){let t=``,n=!1;for(let r=(e=e.map(e=>_t(e))).length-1;r>=-1&&!n;r--){let i=r>=0?e[r]:wt();i&&i.length!==0&&(t=`${i}/${t}`,n=Dt(i))}return t=Et(t,!n),n&&!Dt(t)?`/${t}`:t.length>0?t:`.`};function Et(e,t){let n=``,r=0,i=-1,a=0,o=null;for(let s=0;s<=e.length;++s){if(s<e.length)o=e[s];else{if(o===`/`)break;o=`/`}if(o===`/`){if(!(i===s-1||a===1))if(a===2){if(n.length<2||r!==2||n[n.length-1]!==`.`||n[n.length-2]!==`.`){if(n.length>2){let e=n.lastIndexOf(`/`);e===-1?(n=``,r=0):(n=n.slice(0,e),r=n.length-1-n.lastIndexOf(`/`)),i=s,a=0;continue}if(n.length>0){n=``,r=0,i=s,a=0;continue}}t&&(n+=n.length>0?`/..`:`..`,r=2)}else n.length>0?n+=`/${e.slice(i+1,s)}`:n=e.slice(i+1,s),r=s-i-1;i=s,a=0}else o===`.`&&a!==-1?++a:a=-1}return n}let Dt=function(e){return yt.test(e)},Ot=function(e){if(e===`..`)return``;let t=xt.exec(_t(e));return t&&t[1]||``},kt=function(e){let t=_t(e).replace(/\/$/,``).split(`/`).slice(0,-1);return t.length===1&&bt.test(t[0])&&(t[0]+=`/`),t.join(`/`)||(Dt(e)?`/`:`.`)},At=function(e,t){let n=_t(e).split(`/`),r=``;for(let e=n.length-1;e>=0;e--){let t=n[e];if(t){r=t;break}}return t&&r.endsWith(t)?r.slice(0,-t.length):r},W=A(`node:url`),G=A(`node:assert`),jt=A(`node:process`);var Mt=r(`node:path`);let Nt=A(`node:v8`),Pt=A(`node:util`),Ft=new Set(lt.builtinModules);function It(e){return e.replace(/\\/g,`/`)}let Lt={}.hasOwnProperty,Rt=/^([A-Z][a-z\d]*)+$/,zt=new Set([`string`,`function`,`number`,`object`,`Function`,`Object`,`boolean`,`bigint`,`symbol`]),K={};function q(e,t=`and`){return e.length<3?e.join(` ${t} `):`${e.slice(0,-1).join(`, `)}, ${t} ${e[e.length-1]}`}let Bt=new Map,Vt;function Ht(e,t,n){return Bt.set(e,t),function(e,t){return n;function n(...n){let r=Error.stackTraceLimit;Ut()&&(Error.stackTraceLimit=0);let i=new e;Ut()&&(Error.stackTraceLimit=r);let a=function(e,t,n){let r=Bt.get(e);if(G.ok(r!==void 0,"expected `message` to be found"),typeof r==`function`)return G.ok(r.length<=t.length,`Code: ${e}; The provided arguments length (${t.length}) does not match the required ones (${r.length}).`),Reflect.apply(r,n,t);let i=/%[dfijoOs]/g,a=0;for(;i.exec(r)!==null;)a++;return G.ok(a===t.length,`Code: ${e}; The provided arguments length (${t.length}) does not match the required ones (${a}).`),t.length===0?r:(t.unshift(r),Reflect.apply(Pt.format,null,t))}(t,n,i);return Object.defineProperties(i,{message:{value:a,enumerable:!1,writable:!0,configurable:!0},toString:{value(){return`${this.name} [${t}]: ${this.message}`},enumerable:!1,writable:!0,configurable:!0}}),Wt(i),i.code=t,i}}(n,e)}function Ut(){try{if(Nt.startupSnapshot.isBuildingSnapshot())return!1}catch{}let e=Object.getOwnPropertyDescriptor(Error,`stackTraceLimit`);return e===void 0?Object.isExtensible(Error):Lt.call(e,`writable`)&&e.writable!==void 0?e.writable:e.set!==void 0}K.ERR_INVALID_ARG_TYPE=Ht(`ERR_INVALID_ARG_TYPE`,(e,t,n)=>{G.ok(typeof e==`string`,`'name' must be a string`),Array.isArray(t)||(t=[t]);let r=`The `;if(e.endsWith(` argument`))r+=`${e} `;else{let t=e.includes(`.`)?`property`:`argument`;r+=`"${e}" ${t} `}r+=`must be `;let i=[],a=[],o=[];for(let e of t)G.ok(typeof e==`string`,`All expected entries have to be of type string`),zt.has(e)?i.push(e.toLowerCase()):Rt.exec(e)===null?(G.ok(e!==`object`,`The value "object" should be written as "Object"`),o.push(e)):a.push(e);if(a.length>0){let e=i.indexOf(`object`);e!==-1&&(i.slice(e,1),a.push(`Object`))}return i.length>0&&(r+=`${i.length>1?`one of type`:`of type`} ${q(i,`or`)}`,(a.length>0||o.length>0)&&(r+=` or `)),a.length>0&&(r+=`an instance of ${q(a,`or`)}`,o.length>0&&(r+=` or `)),o.length>0&&(o.length>1?r+=`one of ${q(o,`or`)}`:(o[0].toLowerCase()!==o[0]&&(r+=`an `),r+=`${o[0]}`)),r+=`. Received ${function(e){if(e==null)return String(e);if(typeof e==`function`&&e.name)return`function ${e.name}`;if(typeof e==`object`)return e.constructor&&e.constructor.name?`an instance of ${e.constructor.name}`:`${(0,Pt.inspect)(e,{depth:-1})}`;let t=(0,Pt.inspect)(e,{colors:!1});return t.length>28&&(t=`${t.slice(0,25)}...`),`type ${typeof e} (${t})`}(n)}`,r},TypeError),K.ERR_INVALID_MODULE_SPECIFIER=Ht(`ERR_INVALID_MODULE_SPECIFIER`,(e,t,n=void 0)=>`Invalid module "${e}" ${t}${n?` imported from ${n}`:``}`,TypeError),K.ERR_INVALID_PACKAGE_CONFIG=Ht(`ERR_INVALID_PACKAGE_CONFIG`,(e,t,n)=>`Invalid package config ${e}${t?` while importing ${t}`:``}${n?`. ${n}`:``}`,Error),K.ERR_INVALID_PACKAGE_TARGET=Ht(`ERR_INVALID_PACKAGE_TARGET`,(e,t,n,r=!1,i=void 0)=>{let a=typeof n==`string`&&!r&&n.length>0&&!n.startsWith(`./`);return t===`.`?(G.ok(!1===r),`Invalid "exports" main target ${JSON.stringify(n)} defined in the package config ${e}package.json${i?` imported from ${i}`:``}${a?`; targets must start with "./"`:``}`):`Invalid "${r?`imports`:`exports`}" target ${JSON.stringify(n)} defined for '${t}' in the package config ${e}package.json${i?` imported from ${i}`:``}${a?`; targets must start with "./"`:``}`},Error),K.ERR_MODULE_NOT_FOUND=Ht(`ERR_MODULE_NOT_FOUND`,(e,t,n=!1)=>`Cannot find ${n?`module`:`package`} '${e}' imported from ${t}`,Error),K.ERR_NETWORK_IMPORT_DISALLOWED=Ht(`ERR_NETWORK_IMPORT_DISALLOWED`,`import of '%s' by %s is not supported: %s`,Error),K.ERR_PACKAGE_IMPORT_NOT_DEFINED=Ht(`ERR_PACKAGE_IMPORT_NOT_DEFINED`,(e,t,n)=>`Package import specifier "${e}" is not defined${t?` in package ${t}package.json`:``} imported from ${n}`,TypeError),K.ERR_PACKAGE_PATH_NOT_EXPORTED=Ht(`ERR_PACKAGE_PATH_NOT_EXPORTED`,(e,t,n=void 0)=>t===`.`?`No "exports" main defined in ${e}package.json${n?` imported from ${n}`:``}`:`Package subpath '${t}' is not defined by "exports" in ${e}package.json${n?` imported from ${n}`:``}`,Error),K.ERR_UNSUPPORTED_DIR_IMPORT=Ht(`ERR_UNSUPPORTED_DIR_IMPORT`,`Directory import '%s' is not supported resolving ES modules imported from %s`,Error),K.ERR_UNSUPPORTED_RESOLVE_REQUEST=Ht(`ERR_UNSUPPORTED_RESOLVE_REQUEST`,`Failed to resolve module specifier "%s" from "%s": Invalid relative URL or base scheme is not hierarchical.`,TypeError),K.ERR_UNKNOWN_FILE_EXTENSION=Ht(`ERR_UNKNOWN_FILE_EXTENSION`,(e,t)=>`Unknown file extension "${e}" for ${t}`,TypeError),K.ERR_INVALID_ARG_VALUE=Ht(`ERR_INVALID_ARG_VALUE`,(e,t,n=`is invalid`)=>{let r=(0,Pt.inspect)(t);return r.length>128&&(r=`${r.slice(0,128)}...`),`The ${e.includes(`.`)?`property`:`argument`} '${e}' ${n}. Received ${r}`},TypeError);let Wt=function(e){let t=`__node_internal_`+e.name;return Object.defineProperty(e,"name",{value:t}),e}(function(e){let t=Ut();return t&&(Vt=Error.stackTraceLimit,Error.stackTraceLimit=1/0),Error.captureStackTrace(e),t&&(Error.stackTraceLimit=Vt),e}),J={}.hasOwnProperty,{ERR_INVALID_PACKAGE_CONFIG:Gt}=K,Kt=new Map;function qt(e,{base:t,specifier:n}){let r=Kt.get(e);if(r)return r;let i;try{i=U.readFileSync(Mt.toNamespacedPath(e),`utf8`)}catch(e){let t=e;if(t.code!==`ENOENT`)throw t}let a={exists:!1,pjsonPath:e,main:void 0,name:void 0,type:`none`,exports:void 0,imports:void 0};if(i!==void 0){let r;try{r=JSON.parse(i)}catch(r){let i=r,a=new Gt(e,(t?`"${n}" from `:``)+(0,W.fileURLToPath)(t||n),i.message);throw a.cause=i,a}a.exists=!0,J.call(r,`name`)&&typeof r.name==`string`&&(a.name=r.name),J.call(r,`main`)&&typeof r.main==`string`&&(a.main=r.main),J.call(r,`exports`)&&(a.exports=r.exports),J.call(r,`imports`)&&(a.imports=r.imports),!J.call(r,`type`)||r.type!==`commonjs`&&r.type!==`module`||(a.type=r.type)}return Kt.set(e,a),a}function Jt(e){let t=new URL(`package.json`,e);for(;!t.pathname.endsWith(`node_modules/package.json`);){let n=qt((0,W.fileURLToPath)(t),{specifier:e});if(n.exists)return n;let r=t;if(t=new URL(`../package.json`,t),t.pathname===r.pathname)break}return{pjsonPath:(0,W.fileURLToPath)(t),exists:!1,type:`none`}}function Yt(e){return Jt(e).type}let{ERR_UNKNOWN_FILE_EXTENSION:Xt}=K,Zt={}.hasOwnProperty,Qt={__proto__:null,".cjs":`commonjs`,".js":`module`,".json":`json`,".mjs":`module`},$t={__proto__:null,"data:":function(e){let{1:t}=/^([^/]+\/[^;,]+)[^,]*?(;base64)?,/.exec(e.pathname)||[null,null,null];return function(e){return e&&/\s*(text|application)\/javascript\s*(;\s*charset=utf-?8\s*)?/i.test(e)?`module`:e===`application/json`?`json`:null}(t)},"file:":function(e,t,n){let r=function(e){let t=e.pathname,n=t.length;for(;n--;){let e=t.codePointAt(n);if(e===47)return``;if(e===46)return t.codePointAt(n-1)===47?``:t.slice(n)}return``}(e);if(r===`.js`){let t=Yt(e);return t===`none`?`commonjs`:t}if(r===``){let t=Yt(e);return t===`none`||t===`commonjs`?`commonjs`:`module`}let i=Qt[r];if(i)return i;if(n)return;let a=(0,W.fileURLToPath)(e);throw new Xt(r,a)},"http:":en,"https:":en,"node:":()=>`builtin`};function en(){}let tn=Object.freeze([`node`,`import`]),nn=new Set(tn);function rn(e){return nn}let Y=RegExp.prototype[Symbol.replace],{ERR_INVALID_MODULE_SPECIFIER:an,ERR_INVALID_PACKAGE_CONFIG:on,ERR_INVALID_PACKAGE_TARGET:sn,ERR_MODULE_NOT_FOUND:cn,ERR_PACKAGE_IMPORT_NOT_DEFINED:ln,ERR_PACKAGE_PATH_NOT_EXPORTED:un,ERR_UNSUPPORTED_DIR_IMPORT:dn,ERR_UNSUPPORTED_RESOLVE_REQUEST:fn}=K,pn={}.hasOwnProperty,mn=/(^|\\|\/)((\.|%2e)(\.|%2e)?|(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|%6d|%4d)(o|%6f|%4f)(d|%64|%44)(u|%75|%55)(l|%6c|%4c)(e|%65|%45)(s|%73|%53))?(\\|\/|$)/i,hn=/(^|\\|\/)((\.|%2e)(\.|%2e)?|(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|%6d|%4d)(o|%6f|%4f)(d|%64|%44)(u|%75|%55)(l|%6c|%4c)(e|%65|%45)(s|%73|%53))(\\|\/|$)/i,gn=/^\.|%|\\/,_n=/\*/g,vn=/%2f|%5c/i,yn=new Set,bn=/[/\\]{2}/;function xn(e,t,n,r,i,a,o){if(jt.noDeprecation)return;let s=(0,W.fileURLToPath)(r),c=bn.exec(o?e:t)!==null;jt.emitWarning(`Use of deprecated ${c?`double slash`:`leading or trailing slash matching`} resolving "${e}" for module request "${t}" ${t===n?``:`matched to "${n}" `}in the "${i?`imports`:`exports`}" field module resolution of the package at ${s}${a?` imported from ${(0,W.fileURLToPath)(a)}`:``}.`,`DeprecationWarning`,`DEP0166`)}function Sn(e,t,n,r){if(jt.noDeprecation||function(e,t){let n=e.protocol;return Zt.call($t,n)&&$t[n](e,t,!0)||null}(e,{parentURL:n.href})!==`module`)return;let i=(0,W.fileURLToPath)(e.href),a=(0,W.fileURLToPath)(new URL(`.`,t)),o=(0,W.fileURLToPath)(n);r?Mt.resolve(a,r)!==i&&jt.emitWarning(`Package ${a} has a "main" field set to "${r}", excluding the full filename and extension to the resolved file at "${i.slice(a.length)}", imported from ${o}.\n Automatic extension resolution of the "main" field is deprecated for ES modules.`,`DeprecationWarning`,`DEP0151`):jt.emitWarning(`No "main" or "exports" field defined in the package.json for ${a} resolving the main entry point "${i.slice(a.length)}", imported from ${o}.\nDefault "index" lookups for the main are deprecated for ES modules.`,`DeprecationWarning`,`DEP0151`)}function Cn(e){try{return(0,U.statSync)(e)}catch{}}function wn(e){let t=(0,U.statSync)(e,{throwIfNoEntry:!1}),n=t?t.isFile():void 0;return n!=null&&n}function Tn(e,t,n){let r;if(t.main!==void 0){if(r=new URL(t.main,e),wn(r))return r;let i=[`./${t.main}.js`,`./${t.main}.json`,`./${t.main}.node`,`./${t.main}/index.js`,`./${t.main}/index.json`,`./${t.main}/index.node`],a=-1;for(;++a<i.length&&(r=new URL(i[a],e),!wn(r));)r=void 0;if(r)return Sn(r,e,n,t.main),r}let i=[`./index.js`,`./index.json`,`./index.node`],a=-1;for(;++a<i.length&&(r=new URL(i[a],e),!wn(r));)r=void 0;if(r)return Sn(r,e,n,t.main),r;throw new cn((0,W.fileURLToPath)(new URL(`.`,e)),(0,W.fileURLToPath)(n))}function En(e,t,n){return new un((0,W.fileURLToPath)(new URL(`.`,t)),e,n&&(0,W.fileURLToPath)(n))}function Dn(e,t,n,r,i){return t=typeof t==`object`&&t?JSON.stringify(t,null,``):`${t}`,new sn((0,W.fileURLToPath)(new URL(`.`,n)),e,t,r,i&&(0,W.fileURLToPath)(i))}function On(e,t,n,r,i,a,o,s,c){if(t!==``&&!a&&e[e.length-1]!==`/`)throw Dn(n,e,r,o,i);if(!e.startsWith(`./`)){if(o&&!e.startsWith(`../`)&&!e.startsWith(`/`)){let n=!1;try{new URL(e),n=!0}catch{}if(!n)return Fn(a?Y.call(_n,e,()=>t):e+t,r,c)}throw Dn(n,e,r,o,i)}if(mn.exec(e.slice(2))!==null){if(hn.exec(e.slice(2))!==null)throw Dn(n,e,r,o,i);if(!s){let s=a?n.replace(`*`,()=>t):n+t;xn(a?Y.call(_n,e,()=>t):e,s,n,r,o,i,!0)}}let l=new URL(e,r),u=l.pathname,d=new URL(`.`,r).pathname;if(!u.startsWith(d))throw Dn(n,e,r,o,i);if(t===``)return l;if(mn.exec(t)!==null){let c=a?n.replace(`*`,()=>t):n+t;hn.exec(t)===null?s||xn(a?Y.call(_n,e,()=>t):e,c,n,r,o,i,!1):(function(e,t,n,r,i){let a=`request is not a valid match in pattern "${t}" for the "${r?`imports`:`exports`}" resolution of ${(0,W.fileURLToPath)(n)}`;throw new an(e,a,i&&(0,W.fileURLToPath)(i))})(c,n,r,o,i)}return a?new URL(Y.call(_n,l.href,()=>t)):new URL(t,l)}function kn(e){let t=Number(e);return`${t}`===e&&t>=0&&t<4294967295}function An(e,t,n,r,i,a,o,s,c){if(typeof t==`string`)return On(t,n,r,e,i,a,o,s,c);if(Array.isArray(t)){let l=t;if(l.length===0)return null;let u,d=-1;for(;++d<l.length;){let t=l[d],f;try{f=An(e,t,n,r,i,a,o,s,c)}catch(e){if(u=e,e.code===`ERR_INVALID_PACKAGE_TARGET`)continue;throw e}if(f!==void 0){if(f!==null)return f;u=null}}if(u==null)return null;throw u}if(typeof t==`object`&&t){let l=Object.getOwnPropertyNames(t),u=-1;for(;++u<l.length;)if(kn(l[u]))throw new on((0,W.fileURLToPath)(e),i,`"exports" cannot contain numeric property keys.`);for(u=-1;++u<l.length;){let d=l[u];if(d==="default"||c&&c.has(d)){let l=An(e,t[d],n,r,i,a,o,s,c);if(l===void 0)continue;return l}}return null}if(t===null)return null;throw Dn(r,t,e,o,i)}function jn(e,t,n){if(jt.noDeprecation)return;let r=(0,W.fileURLToPath)(t);yn.has(r+`|`+e)||(yn.add(r+`|`+e),jt.emitWarning(`Use of deprecated trailing slash pattern mapping "${e}" in the "exports" field module resolution of the package at ${r}${n?` imported from ${(0,W.fileURLToPath)(n)}`:``}. Mapping specifiers ending in "/" is no longer supported.`,`DeprecationWarning`,`DEP0155`))}function Mn(e,t,n,r,i){let a=n.exports;if(function(e,t,n){if(typeof e==`string`||Array.isArray(e))return!0;if(typeof e!=`object`||!e)return!1;let r=Object.getOwnPropertyNames(e),i=!1,a=0,o=-1;for(;++o<r.length;){let e=r[o],s=e===``||e[0]!==`.`;if(a++===0)i=s;else if(i!==s)throw new on((0,W.fileURLToPath)(t),n,`"exports" cannot contain some keys starting with '.' and some not. The exports object must either be an object of package subpath keys or an object of main entry condition name keys only.`)}return i}(a,e,r)&&(a={".":a}),pn.call(a,t)&&!t.includes(`*`)&&!t.endsWith(`/`)){let n=An(e,a[t],``,t,r,!1,!1,!1,i);if(n==null)throw En(t,e,r);return n}let o=``,s=``,c=Object.getOwnPropertyNames(a),l=-1;for(;++l<c.length;){let n=c[l],i=n.indexOf(`*`);if(i!==-1&&t.startsWith(n.slice(0,i))){t.endsWith(`/`)&&jn(t,e,r);let a=n.slice(i+1);t.length>=n.length&&t.endsWith(a)&&Nn(o,n)===1&&n.lastIndexOf(`*`)===i&&(o=n,s=t.slice(i,t.length-a.length))}}if(o){let n=An(e,a[o],s,o,r,!0,!1,t.endsWith(`/`),i);if(n==null)throw En(t,e,r);return n}throw En(t,e,r)}function Nn(e,t){let n=e.indexOf(`*`),r=t.indexOf(`*`),i=n===-1?e.length:n+1,a=r===-1?t.length:r+1;return i>a?-1:a>i||n===-1?1:r===-1||e.length>t.length?-1:+(t.length>e.length)}function Pn(e,t,n){if(e===`#`||e.startsWith(`#/`)||e.endsWith(`/`))throw new an(e,`is not a valid internal imports specifier name`,(0,W.fileURLToPath)(t));let r,i=Jt(t);if(i.exists){r=(0,W.pathToFileURL)(i.pjsonPath);let a=i.imports;if(a)if(pn.call(a,e)&&!e.includes(`*`)){let i=An(r,a[e],``,e,t,!1,!0,!1,n);if(i!=null)return i}else{let i=``,o=``,s=Object.getOwnPropertyNames(a),c=-1;for(;++c<s.length;){let t=s[c],n=t.indexOf(`*`);if(n!==-1&&e.startsWith(t.slice(0,-1))){let r=t.slice(n+1);e.length>=t.length&&e.endsWith(r)&&Nn(i,t)===1&&t.lastIndexOf(`*`)===n&&(i=t,o=e.slice(n,e.length-r.length))}}if(i){let e=An(r,a[i],o,i,t,!0,!0,!1,n);if(e!=null)return e}}}throw function(e,t,n){return new ln(e,t&&(0,W.fileURLToPath)(new URL(`.`,t)),(0,W.fileURLToPath)(n))}(e,r,t)}function Fn(e,t,n){if(lt.builtinModules.includes(e))return new URL(`node:`+e);let{packageName:r,packageSubpath:i,isScoped:a}=function(e,t){let n=e.indexOf(`/`),r=!0,i=!1;e[0]===`@`&&(i=!0,n===-1||e.length===0?r=!1:n=e.indexOf(`/`,n+1));let a=n===-1?e:e.slice(0,n);if(gn.exec(a)!==null&&(r=!1),!r)throw new an(e,`is not a valid package name`,(0,W.fileURLToPath)(t));return{packageName:a,packageSubpath:`.`+(n===-1?``:e.slice(n)),isScoped:i}}(e,t),o=Jt(t);if(o.exists){let e=(0,W.pathToFileURL)(o.pjsonPath);if(o.name===r&&o.exports!==void 0&&o.exports!==null)return Mn(e,i,o,t,n)}let s,c=new URL(`./node_modules/`+r+`/package.json`,t),l=(0,W.fileURLToPath)(c);do{let o=Cn(l.slice(0,-13));if(!o||!o.isDirectory()){s=l,c=new URL((a?`../../../../node_modules/`:`../../../node_modules/`)+r+`/package.json`,c),l=(0,W.fileURLToPath)(c);continue}let u=qt(l,{base:t,specifier:e});return u.exports!==void 0&&u.exports!==null?Mn(c,i,u,t,n):i===`.`?Tn(c,u,t):new URL(i,c)}while(l.length!==s.length)}function In(e,t,n,r){n===void 0&&(n=rn());let i=t.protocol,a=i===`data:`||i===`http:`||i===`https:`,o;if(function(e){return e!==``&&(e[0]===`/`||function(e){return e[0]===`.`&&(e.length===1||e[1]===`/`||e[1]===`.`&&(e.length===2||e[2]===`/`))}(e))}(e))try{o=new URL(e,t)}catch(n){let r=new fn(e,t);throw r.cause=n,r}else if(i===`file:`&&e[0]===`#`)o=Pn(e,t,n);else try{o=new URL(e)}catch(r){if(a&&!lt.builtinModules.includes(e)){let n=new fn(e,t);throw n.cause=r,n}o=Fn(e,t,n)}return G.ok(o!==void 0,`expected to be defined`),o.protocol===`file:`?function(e,t){if(vn.exec(e.pathname)!==null)throw new an(e.pathname,`must not include encoded "/" or "\\" characters`,(0,W.fileURLToPath)(t));let n;try{n=(0,W.fileURLToPath)(e)}catch(n){let r=n;throw Object.defineProperty(r,"input",{value:String(e)}),Object.defineProperty(r,"module",{value:String(t)}),r}let r=Cn(n.endsWith(`/`)?n.slice(-1):n);if(r&&r.isDirectory()){let r=new dn(n,(0,W.fileURLToPath)(t));throw r.url=String(e),r}if(!r||!r.isFile()){let r=new cn(n||e.pathname,t&&(0,W.fileURLToPath)(t),!0);throw r.url=String(e),r}{let t=(0,U.realpathSync)(n),{search:r,hash:i}=e;(e=(0,W.pathToFileURL)(t+(n.endsWith(Mt.sep)?`/`:``))).search=r,e.hash=i}return e}(o,t):o}function Ln(e){return typeof e!=`string`||e.startsWith(`file://`)?It((0,W.fileURLToPath)(e)):It(e)}function Rn(e){return(0,W.pathToFileURL)(Ln(e)).toString()}let X=new Set([`node`,`import`]),zn=[`.mjs`,`.cjs`,`.js`,`.json`],Bn=new Set([`ERR_MODULE_NOT_FOUND`,`ERR_UNSUPPORTED_DIR_IMPORT`,`MODULE_NOT_FOUND`,`ERR_PACKAGE_PATH_NOT_EXPORTED`]);function Vn(e,t,n){try{return In(e,t,n)}catch(e){if(!Bn.has(e?.code))throw e}}function Hn(e,t={}){if(typeof e!=`string`){if(!(e instanceof URL))throw TypeError("input must be a `string` or `URL`");e=Ln(e)}if(/(?:node|data|http|https):/.test(e))return e;if(Ft.has(e))return`node:`+e;if(e.startsWith(`file://`)&&(e=Ln(e)),Dt(e))try{if((0,U.statSync)(e).isFile())return Rn(e)}catch(e){if(e?.code!==`ENOENT`)throw e}let n=t.conditions?new Set(t.conditions):X,r=(Array.isArray(t.url)?t.url:[t.url]).filter(Boolean).map(e=>new URL(function(e){return typeof e!=`string`&&(e=e.toString()),/(?:node|data|http|https|file):/.test(e)?e:Ft.has(e)?`node:`+e:`file://`+encodeURI(It(e))}(e.toString())));r.length===0&&r.push(new URL(Rn(process.cwd())));let i=[...r];for(let e of r)e.protocol===`file:`&&i.push(new URL(`./`,e),new URL(ht(e.pathname,`_index.js`),e),new URL(`node_modules`,e));let a;for(let r of i){if(a=Vn(e,r,n),a)break;for(let i of[``,`/index`]){for(let o of t.extensions||zn)if(a=Vn(ht(e,i)+o,r,n),a)break;if(a)break}if(a)break}if(!a){let t=Error(`Cannot find module ${e} imported from ${i.join(`, `)}`);throw t.code=`ERR_MODULE_NOT_FOUND`,t}return Rn(a)}function Un(e,t){return Hn(e,t)}function Wn(e,t){return Ln(Un(e,t))}let Gn=/(?:[\s;]|^)(?:import[\s\w*,{}]*from|import\s*["'*{]|export\b\s*(?:[*{]|default|class|type|function|const|var|let|async function)|import\.meta\b)/m,Kn=/\/\*.+?\*\/|\/\/.*(?=[nr])/g;function qn(e,t={}){return t.stripComments&&(e=e.replace(Kn,``)),Gn.test(e)}function Jn(e){if(typeof e!=`string`)throw TypeError(`Expected a string`);return e.replace(/[|\\{}()[\]^$+*?.]/g,`\\$&`).replace(/-/g,`\\x2d`)}let Yn=new Set([`/`,`\\`,void 0]),Xn=Symbol.for(`pathe:normalizedAlias`),Zn=/[/\\]/;function Qn(e){if(e[Xn])return e;let t=Object.fromEntries(Object.entries(e).sort(([e],[t])=>function(e,t){return t.split(`/`).length-e.split(`/`).length}(e,t)));for(let e in t)for(let n in t)n===e||e.startsWith(n)||t[e]?.startsWith(n)&&Yn.has(t[e][n.length])&&(t[e]=t[n]+t[e].slice(n.length));return Object.defineProperty(t,Xn,{value:!0,enumerable:!1}),t}function $n(e=`/`){let t=e[e.length-1];return t===`/`||t===`\\`}var er={rE:`2.6.1`};let tr=A(`node:crypto`);var nr=r.n(tr);let Z=globalThis.process?.env||Object.create(null),rr=globalThis.process||{env:Z},ir=rr!==void 0&&rr.env&&rr.env.NODE_ENV||void 0,ar=[[`claude`,[`CLAUDECODE`,`CLAUDE_CODE`]],[`replit`,[`REPL_ID`]],[`gemini`,[`GEMINI_CLI`]],[`codex`,[`CODEX_SANDBOX`,`CODEX_THREAD_ID`]],[`opencode`,[`OPENCODE`]],[`pi`,[or(`PATH`,/\.pi[\\/]agent/)]],[`auggie`,[`AUGMENT_AGENT`]],[`goose`,[`GOOSE_PROVIDER`]],[`devin`,[or(`EDITOR`,/devin/)]],[`cursor`,[`CURSOR_AGENT`]],[`kiro`,[or(`TERM_PROGRAM`,/kiro/)]]];function or(e,t){return()=>{let n=Z[e];return!!n&&t.test(n)}}let sr=function(){let e=Z.AI_AGENT;if(e)return{name:e.toLowerCase()};for(let[e,t]of ar)for(let n of t)if(typeof n==`string`?Z[n]:n())return{name:e};return{}}(),cr=(sr.name,sr.name,[[`APPVEYOR`],[`AWS_AMPLIFY`,`AWS_APP_ID`,{ci:!0}],[`AZURE_PIPELINES`,`SYSTEM_TEAMFOUNDATIONCOLLECTIONURI`],[`AZURE_STATIC`,`INPUT_AZURE_STATIC_WEB_APPS_API_TOKEN`],[`APPCIRCLE`,`AC_APPCIRCLE`],[`BAMBOO`,`bamboo_planKey`],[`BITBUCKET`,`BITBUCKET_COMMIT`],[`BITRISE`,`BITRISE_IO`],[`BUDDY`,`BUDDY_WORKSPACE_ID`],[`BUILDKITE`],[`CIRCLE`,`CIRCLECI`],[`CIRRUS`,`CIRRUS_CI`],[`CLOUDFLARE_PAGES`,`CF_PAGES`,{ci:!0}],[`CLOUDFLARE_WORKERS`,`WORKERS_CI`,{ci:!0}],[`GOOGLE_CLOUDRUN`,`K_SERVICE`],[`GOOGLE_CLOUDRUN_JOB`,`CLOUD_RUN_JOB`],[`CODEBUILD`,`CODEBUILD_BUILD_ARN`],[`CODEFRESH`,`CF_BUILD_ID`],[`DRONE`],[`DRONE`,`DRONE_BUILD_EVENT`],[`DSARI`],[`GITHUB_ACTIONS`],[`GITLAB`,`GITLAB_CI`],[`GITLAB`,`CI_MERGE_REQUEST_ID`],[`GOCD`,`GO_PIPELINE_LABEL`],[`LAYERCI`],[`JENKINS`,`JENKINS_URL`],[`HUDSON`,`HUDSON_URL`],[`MAGNUM`],[`NETLIFY`],[`NETLIFY`,`NETLIFY_LOCAL`,{ci:!1}],[`NEVERCODE`],[`RENDER`],[`SAIL`,`SAILCI`],[`SEMAPHORE`],[`SCREWDRIVER`],[`SHIPPABLE`],[`SOLANO`,`TDDIUM`],[`STRIDER`],[`TEAMCITY`,`TEAMCITY_VERSION`],[`TRAVIS`],[`VERCEL`,`NOW_BUILDER`],[`VERCEL`,`VERCEL`,{ci:!1}],[`VERCEL`,`VERCEL_ENV`,{ci:!1}],[`APPCENTER`,`APPCENTER_BUILD_ID`],[`CODESANDBOX`,`CODESANDBOX_SSE`,{ci:!1}],[`CODESANDBOX`,`CODESANDBOX_HOST`,{ci:!1}],[`STACKBLITZ`],[`STORMKIT`],[`CLEAVR`],[`ZEABUR`],[`CODESPHERE`,`CODESPHERE_APP_ID`,{ci:!0}],[`RAILWAY`,`RAILWAY_PROJECT_ID`],[`RAILWAY`,`RAILWAY_SERVICE_ID`],[`DENO-DEPLOY`,`DENO_DEPLOY`],[`DENO-DEPLOY`,`DENO_DEPLOYMENT_ID`],[`FIREBASE_APP_HOSTING`,`FIREBASE_APP_HOSTING`,{ci:!0}],[`EDGEONE_PAGES`,`EO_PAGES_CI`,{ci:!0}]]),lr=function(){for(let e of cr)if(Z[e[1]||e[0]])return{name:e[0].toLowerCase(),...e[2]};return Z.SHELL===`/bin/jsh`&&rr.versions?.webcontainer?{name:`stackblitz`,ci:!1}:{name:``,ci:!1}}(),ur=(lr.name,rr.platform||``);Z.CI||lr.ci;let dr=!!rr.stdout?.isTTY;Z.DEBUG,ir===`test`||Z.TEST;let fr=(ir===`production`||Z.MODE,ir===`dev`||ir===`development`||Z.MODE,Z.MINIMAL,/^win/i.test(ur)),pr=(/^linux/i.test(ur),/^darwin/i.test(ur),!Z.NO_COLOR&&(Z.FORCE_COLOR||(dr||fr)&&Z.TERM),(rr.versions?.node||``).replace(/^v/,``)||null),mr=(Number(pr?.split(`.`)[0]),!!rr?.versions?.node),hr=`Bun`in globalThis,gr=`Deno`in globalThis,_r=`fastly`in globalThis,vr=[[`Netlify`in globalThis,`netlify`],[`EdgeRuntime`in globalThis,`edge-light`],[globalThis.navigator?.userAgent===`Cloudflare-Workers`,`workerd`],[_r,`fastly`],[gr,`deno`],[hr,`bun`],[mr,`node`]];(function(){let e=vr.find(e=>e[0]);e&&e[1]})();let yr=A(`node:tty`)?.WriteStream?.prototype?.hasColors?.()??!1,Q=(e,t)=>{if(!yr)return e=>e;let n=`[${e}m`,r=`[${t}m`;return e=>{let i=e+``,a=i.indexOf(r);if(a===-1)return n+i+r;let o=n,s=0,c=(t===22?r:``)+n;for(;a!==-1;)o+=i.slice(s,a)+c,s=a+r.length,a=i.indexOf(r,s);return o+=i.slice(s)+r,o}},br=(Q(0,0),Q(1,22),Q(2,22),Q(3,23),Q(4,24),Q(53,55),Q(7,27),Q(8,28),Q(9,29),Q(30,39),Q(31,39)),xr=Q(32,39),Sr=Q(33,39),Cr=Q(34,39),wr=(Q(35,39),Q(36,39)),Tr=(Q(37,39),Q(90,39));Q(40,49),Q(41,49),Q(42,49),Q(43,49),Q(44,49),Q(45,49),Q(46,49),Q(47,49),Q(100,49),Q(91,39),Q(92,39),Q(93,39),Q(94,39),Q(95,39),Q(96,39),Q(97,39),Q(101,49),Q(102,49),Q(103,49),Q(104,49),Q(105,49),Q(106,49),Q(107,49);function Er(e){if(typeof e!=`string`||e.startsWith(`file://`))return!1;try{return(0,U.lstatSync)(e).isDirectory()}catch{return!1}}function Dr(e,t=8){return(function(){if(Ar!==void 0)return Ar;try{return Ar=!!nr().getFips?.(),Ar}catch{return Ar=!1,Ar}}()?nr().createHash(`sha256`):nr().createHash(`md5`)).update(e).digest(`hex`).slice(0,t)}let Or={true:xr(`true`),false:Sr(`false`),"[rebuild]":Sr(`[rebuild]`),"[esm]":Cr(`[esm]`),"[cjs]":xr(`[cjs]`),"[import]":Cr(`[import]`),"[require]":xr(`[require]`),"[native]":wr(`[native]`),"[transpile]":Sr(`[transpile]`),"[fallback]":br(`[fallback]`),"[unknown]":br(`[unknown]`),"[hit]":xr(`[hit]`),"[miss]":Sr(`[miss]`),"[json]":xr(`[json]`),"[data]":xr(`[data]`)};function $(e,...t){if(!e.opts.debug)return;let n=process.cwd();console.log(Tr([`[jiti]`,...t.map(e=>e in Or?Or[e]:typeof e==`string`?e.replace(n,`.`):JSON.stringify(e))].join(` `)))}function kr(e,t){return e.opts.interopDefault?function(e){let t=typeof e;if(e===null||t!==`object`&&t!==`function`)return e;let n=e.default,r=typeof n,i=n==null,a=r===`object`||r===`function`;if(i&&e instanceof Promise)return e;let o=r===`function`&&t!==`function`,s=a&&!(n instanceof Promise),c=new Map;return new Proxy(e,{get(t,r){if(c.has(r))return c.get(r);let a;return r==="__esModule"?a=!0:r==="default"?a=i?e:typeof n?.default==`function`&&e.__esModule?n.default:n:r in t?a=t[r]:s&&(a=n[r],typeof a==`function`&&(a=a.bind(n))),c.set(r,a),a},apply:o?(e,t,r)=>Reflect.apply(n,t,r):void 0})}(t):t}let Ar;function jr(e,t){return!!Mr(e,t)}function Mr(e,t,n){let r=process.env[e];if(!(e in process.env))return t;try{return JSON.parse(r)}catch{return n?r:t}}let Nr=/\.(c|m)?j(sx?)$/,Pr=/\.(c|m)?t(sx?)$/;function Fr(e,t,n){let r,i;if(e.isNativeRe.test(t))return t;if(e.resolveTsConfigPaths&&!n.skipTsConfigPaths){let r=e.resolveTsConfigPaths(t);for(let t of r){let r=Fr(e,t,{...n,try:!0,skipTsConfigPaths:!0});if(r)return r}}e.alias&&(t=function(e,t){let n=_t(e);t=Qn(t);for(let[e,r]of Object.entries(t))if(n.startsWith(e)&&$n(n[($n(e)?e.slice(0,-1):e).length]))return Ct(r,n.slice(e.length));return n}(t,e.alias));let a=n?.parentURL||e.url;Er(a)&&(a=Ct(a,`_index.js`));let o=(n?.async?[n?.conditions,[`node`,`import`],[`node`,`require`]]:[n?.conditions,[`node`,`require`],[`node`,`import`]]).filter(Boolean);for(let n of o){try{r=Wn(t,{url:a,conditions:n,extensions:e.opts.extensions})}catch(e){i=e}if(r)return r}try{return e.nativeRequire.resolve(t,{paths:n.paths})}catch(e){i=e}for(let i of e.additionalExts)if(r=Ir(e,t+i,a,n)||Ir(e,t+`/index`+i,a,n),r||(Pr.test(e.filename)||Pr.test(e.parentModule?.filename||``)||Nr.test(t))&&(r=Ir(e,t.replace(Nr,`.$1t$2`),a,n),r))return r;if(!n?.try)throw i}function Ir(e,t,n,r){try{return e.nativeRequire.resolve(t,{...r,paths:[kt(Ln(n)),...r?.paths||[]]})}catch{}}let Lr=A(`node:fs/promises`),Rr=A(`node:perf_hooks`),zr=A(`node:vm`);var Br=r.n(zr);function Vr(e,t,n){let r=e.parentCache||{};if(t.startsWith(`node:`))return Hr(e,t,n.async);if(t.startsWith(`file:`))t=(0,W.fileURLToPath)(t);else if(t.startsWith(`data:`)){if(!n.async)throw Error("`data:` URLs are only supported in ESM context. Use `import` or `jiti.import` instead.");return $(e,`[native]`,`[data]`,`[import]`,t),Hr(e,t,!0)}if(lt.builtinModules.includes(t)||t===`.pnp.js`)return Hr(e,t,n.async);if(e.opts.virtualModules&&t in e.opts.virtualModules){$(e,`[virtual]`,t);let r=e.opts.virtualModules[t];return n.async?Promise.resolve(kr(e,r)):kr(e,r)}if(e.opts.tryNative&&!e.opts.transformOptions)try{if(!(t=Fr(e,t,n))&&n.try)return;if($(e,`[try-native]`,n.async&&e.nativeImport?`[import]`:`[require]`,t),n.async&&e.nativeImport)return e.nativeImport(t).then(n=>(!1===e.opts.moduleCache&&delete e.nativeRequire.cache[t],kr(e,n))).catch(r=>($(e,`[try-native] Using fallback for ${t} because of an error:`,r),Vr({...e,opts:{...e.opts,tryNative:!1}},t,n)));{let n=e.nativeRequire(t);return!1===e.opts.moduleCache&&delete e.nativeRequire.cache[t],kr(e,n)}}catch(n){$(e,`[try-native] Using fallback for ${t} because of an error:`,n)}let i=Fr(e,t,n);if(!i&&n.try)return;let a=Ot(i);if(a===`.json`){$(e,`[json]`,i);let t=e.nativeRequire(i);return t&&!(`default`in t)&&Object.defineProperty(t,"default",{value:t,enumerable:!1}),t}if(a&&!e.opts.extensions.includes(a))return $(e,`[native]`,`[unknown]`,n.async?`[import]`:`[require]`,i),Hr(e,i,n.async);if(e.isNativeRe.test(i))return $(e,`[native]`,n.async?`[import]`:`[require]`,i),Hr(e,i,n.async);if(r[i])return kr(e,r[i]?.exports);if(e.opts.moduleCache){let t=e.nativeRequire.cache[i];if(t?.loaded)return kr(e,t.exports)}return Kr(e,(0,U.readFileSync)(i,`utf8`),{id:t,filename:i,ext:a,cache:r,async:n.async})}function Hr(e,t,n){return n&&e.nativeImport?e.nativeImport(function(e){return fr&&Dt(e)?Rn(e):e}(t)).then(t=>kr(e,t)):kr(e,e.nativeRequire(t))}function Ur(e,t,n){if(!e.opts.fsCache||!t.filename)return n();let r=` /* v9-${Dr(t.source,16)} */\n`,i=`${At(kt(t.filename))}-${function(e){let t=e.split(Zn).pop();if(!t)return;let n=t.lastIndexOf(`.`);return n<=0?t:t.slice(0,n)}(t.filename)}`+(e.opts.sourceMaps?`+map`:``)+(t.interopDefault?`.i`:``)+`.${Dr(t.filename)}`+(t.async?`.mjs`:`.cjs`);t.jsx&&t.filename.endsWith(`x`)&&(i+=`x`);let a=e.opts.fsCache,o=Ct(a,i);if(!e.opts.rebuildFsCache&&(0,U.existsSync)(o)){let n=(0,U.readFileSync)(o,`utf8`);if(n.endsWith(r))return $(e,`[cache]`,`[hit]`,t.filename,`~>`,o),n}$(e,`[cache]`,`[miss]`,t.filename);let s=n();return s.includes(`__JITI_ERROR__`)||((0,U.writeFileSync)(o,s+r,`utf8`),$(e,`[cache]`,`[store]`,t.filename,`~>`,o)),s}function Wr(t){if(!0===t.opts.fsCache&&(t.opts.fsCache=function(t){let n=t.filename&&Tt(t.filename,`../node_modules`);if(n&&(0,U.existsSync)(n))return Ct(n,`.cache/jiti`);let r=(0,e.tmpdir)();if(process.env.TMPDIR&&r===process.cwd()&&!process.env.JITI_RESPECT_TMPDIR_ENV){let t=process.env.TMPDIR;delete process.env.TMPDIR,r=(0,e.tmpdir)(),process.env.TMPDIR=t}return Ct(r,`jiti`)}(t)),t.opts.fsCache)try{if((0,U.mkdirSync)(t.opts.fsCache,{recursive:!0}),!function(e){try{return(0,U.accessSync)(e,U.constants.W_OK),!0}catch{return!1}}(t.opts.fsCache))throw Error(`directory is not writable!`)}catch(e){$(t,`Error creating cache directory at `,t.opts.fsCache,e),t.opts.fsCache=!1}}function Gr(e,t){let n=Ur(e,t,()=>{let n=e.opts.transform({...e.opts.transformOptions,babel:{...e.opts.sourceMaps?{sourceFileName:t.filename,sourceMaps:`inline`}:{},...e.opts.transformOptions?.babel},interopDefault:e.opts.interopDefault,...t});return n.error&&e.opts.debug&&$(e,n.error),n.code});return n.startsWith(`#!`)&&(n=`// `+n),n}function Kr(t,n,r={}){let i=r.id||(r.filename?At(r.filename):`_jitiEval.${r.ext||(r.async?`mjs`:`js`)}`),a=r.filename||Fr(t,i,{async:r.async}),o=r.ext||Ot(a),s=r.cache||t.parentCache||{},c=/\.[cm]?tsx?$/.test(o),l=o===`.mjs`||o===`.js`&&function(e){for(;e&&e!==`.`&&e!==`/`;){e=Ct(e,`..`);try{let t=(0,U.readFileSync)(Ct(e,`package.json`),`utf8`);try{return JSON.parse(t)}catch{}break}catch{}}}(a)?.type===`module`,u=o===`.cjs`,d=r.forceTranspile??(!u&&!(l&&r.async)&&(c||l||t.isTransformRe.test(a)||qn(n))),f=Rr.performance.now();if(d){n=Gr(t,{filename:a,source:n,ts:c,async:r.async??!1,jsx:t.opts.jsx});let e=Math.round(1e3*(Rr.performance.now()-f))/1e3;$(t,`[transpile]`,r.async?`[esm]`:`[cjs]`,a,`(${e}ms)`)}else{if($(t,`[native]`,r.async?`[import]`:`[require]`,a),r.async)return Promise.resolve(Hr(t,a,r.async)).catch(e=>($(t,`Native import error:`,e),$(t,`[fallback]`,a),Kr(t,n,{...r,forceTranspile:!0})));try{return Hr(t,a,r.async)}catch(e){$(t,`Native require error:`,e),$(t,`[fallback]`,a),n=Gr(t,{filename:a,source:n,ts:c,async:r.async??!1,jsx:t.opts.jsx})}}let p=new lt.Module(a);p.filename=a,t.parentModule&&(p.parent=t.parentModule,Array.isArray(t.parentModule.children)&&!t.parentModule.children.includes(p)&&t.parentModule.children.push(p));let m=Jr(a,t.opts,{parentModule:p,parentCache:s,nativeImport:t.nativeImport,onError:t.onError,createRequire:t.createRequire},!0),h;p.require=m,p.path=kt(a),p.paths=lt.Module._nodeModulePaths(p.path),s[a]=p,t.opts.moduleCache&&(t.nativeRequire.cache[a]=p);let g=function(e,t){return`(${t?.async?`async `:``}function (exports, require, module, __filename, __dirname, jitiImport, jitiESMResolve) { ${e}\n});`}(n,{async:r.async});try{h=Br().runInThisContext(g,{filename:a,lineOffset:0,displayErrors:!1})}catch(n){n.name===`SyntaxError`&&r.async&&t.nativeImport?($(t,`[esm]`,`[import]`,`[fallback]`,a),h=function(t,n,r,i,a){let o=`export default ${n}`,s=a?void 0:`data:text/javascript;base64,${Buffer.from(o).toString(`base64`)}`;return(...n)=>{let a,c=()=>(a=function(t,n){let r=Ct((0,e.tmpdir)(),`jiti-esm`);try{(0,U.mkdirSync)(r,{recursive:!0})}catch{}let i=Ct(r,`${At(n,Ot(n))}-${Date.now()}-${Math.random().toString(36).slice(2)}.mjs`);return(0,U.writeFileSync)(i,t),i}(o,r),$(t,`[esm]`,`[tempfile]`,a),i(Rn(a)));return(s?i(s).catch(e=>{if(e?.code!==`ENAMETOOLONG`)throw e;return c()}):c()).then(e=>e.default(...n)).finally(()=>{a&&(0,Lr.unlink)(a).catch(()=>{})})}}(t,g,a,t.nativeImport,t.opts.esmEvalTempFile)):(t.opts.moduleCache&&delete t.nativeRequire.cache[a],t.onError(n))}let _;try{_=h(p.exports,p.require,p,p.filename,kt(p.filename),m.import,m.esmResolve)}catch(e){t.opts.moduleCache&&delete t.nativeRequire.cache[a],t.onError(e)}function v(){if(p.exports&&p.exports.__JITI_ERROR__){let{filename:e,line:n,column:r,code:i,message:a}=p.exports.__JITI_ERROR__,o=Error(`${i}: ${a} \n ${`${e}:${n}:${r}`}`);Error.captureStackTrace(o,Vr),t.onError(o)}return p.loaded=!0,kr(t,p.exports)}return r.async?Promise.resolve(_).then(v):v()}let qr=(0,e.platform)()===`win32`;function Jr(e,t={},n,i=!1){let a=i?t:function(e){let t={fsCache:jr(`JITI_FS_CACHE`,jr(`JITI_CACHE`,!0)),rebuildFsCache:jr(`JITI_REBUILD_FS_CACHE`,!1),moduleCache:jr(`JITI_MODULE_CACHE`,jr(`JITI_REQUIRE_CACHE`,!0)),debug:jr(`JITI_DEBUG`,!1),sourceMaps:jr(`JITI_SOURCE_MAPS`,!1),interopDefault:jr(`JITI_INTEROP_DEFAULT`,!0),extensions:Mr(`JITI_EXTENSIONS`,[`.js`,`.mjs`,`.cjs`,`.ts`,`.tsx`,`.mts`,`.cts`,`.mtsx`,`.ctsx`]),alias:Mr(`JITI_ALIAS`,{}),nativeModules:Mr(`JITI_NATIVE_MODULES`,[]),transformModules:Mr(`JITI_TRANSFORM_MODULES`,[]),tryNative:Mr(`JITI_TRY_NATIVE`,`Bun`in globalThis),esmEvalTempFile:jr(`JITI_ESM_EVAL_TEMP_FILE`,!1),jsx:jr(`JITI_JSX`,!1),tsconfigPaths:Mr(`JITI_TSCONFIG_PATHS`,!1,!0)};t.jsx&&t.extensions.push(`.jsx`,`.tsx`);let n={};return e.cache!==void 0&&(n.fsCache=e.cache),e.requireCache!==void 0&&(n.moduleCache=e.requireCache),{...t,...n,...e}}(t);typeof e==`string`&&e.startsWith(`file://`)&&(e=Ln(e));let o=a.alias&&Object.keys(a.alias).length>0?Qn(a.alias||{}):void 0,s;if(a.tsconfigPaths){let{getTsconfig:t,createPathsMatcher:n}=r(`./node_modules/.pnpm/get-tsconfig@4.14.0/node_modules/get-tsconfig/dist/index.cjs`),i=t(typeof a.tsconfigPaths==`string`?a.tsconfigPaths:kt(e));i&&(s=n(i))}let c=[`typescript`,`jiti`,...a.nativeModules||[]],l=RegExp(`node_modules/(${c.map(e=>Jn(e)).join(`|`)})/`),u=[...a.transformModules||[]],d=RegExp(`node_modules/(${u.map(e=>Jn(e)).join(`|`)})/`);e||=process.cwd(),!i&&Er(e)&&(e=Ct(e,`_index.js`));let f=Rn(e),p=[...a.extensions].filter(e=>e!==`.js`),m=n.createRequire(qr?e.replace(/\//g,`\\`):e),h={filename:e,url:f,opts:a,alias:o,resolveTsConfigPaths:s,nativeModules:c,transformModules:u,isNativeRe:l,isTransformRe:d,additionalExts:p,nativeRequire:m,onError:n.onError,parentModule:n.parentModule,parentCache:n.parentCache,nativeImport:n.nativeImport,createRequire:n.createRequire};return i||$(h,`[init]`,...[[`version:`,er.rE],[`module-cache:`,a.moduleCache],[`fs-cache:`,a.fsCache],[`rebuild-fs-cache:`,a.rebuildFsCache],[`interop-defaults:`,a.interopDefault]].flat()),i||Wr(h),Object.assign(function(e){return Vr(h,e,{async:!1})},{cache:a.moduleCache?m.cache:Object.create(null),extensions:m.extensions,main:m.main,options:a,resolve:Object.assign(function(e,t){return Fr(h,e,{...t,async:!1})},{paths:m.resolve.paths}),transform:e=>Gr(h,e),evalModule:(e,t)=>Kr(h,e,t),async import(e,t){let n=await Vr(h,e,{...t,async:!0});return t?.default?n?.default??n:n},esmResolve(e,t){typeof t==`string`&&(t={parentURL:t});let n=Fr(h,e,{parentURL:f,...t,async:!0});return!n||typeof n!=`string`||n.startsWith(`file://`)?n:Rn(n)}})}})(),t.exports=i.default})()}))();var fe=class{emitter;constructor(){this.emitter=r()}on(e,t){le(e).forEach(e=>{this.emitter.on(e,t)})}off(e,t){le(e).forEach(e=>{this.emitter.off(e,t)})}emit(e,t){le(e).forEach(e=>{this.emitter.emit(e,t)})}removeAllListeners(){this.emitter.all.clear()}},pe=class{listeners;constructor(){this.listeners=new Map}on(e,t){le(e).forEach(e=>{let n=this.listeners.get(e)||new Set;n.add(t),this.listeners.set(e,n)})}off(e,t){le(e).forEach(e=>{let n=this.listeners.get(e);n&&n.delete(t)})}async emit(e,...t){let n=le(e).flatMap(e=>{let t=this.listeners.get(e)||new Set,n=this.listeners.get(`*`)||new Set;return[...Array.from(t),...Array.from(n)]});return n.length===0?[]:await Promise.all(n.map(async n=>{try{let e=n(...t);return e instanceof Promise?await e:e}catch(t){console.error(`Error in event listener for ${String(e)}:`,t);return}}))}removeAllListeners(){this.listeners.clear()}};function j(e,...t){return class extends e{static _instance;static getInstance(){return this._instance||=new e(...t),this._instance}static clearInstance(){this._instance=void 0}}}const me=j(class extends fe{destroy(){this.removeAllListeners()}fatal(e,t,n){this.emit(`fatal`,{code:t,message:e,data:n,timestamp:Date.now()})}error(e,t,n){this.emit(`error`,{code:t,message:e,data:n,timestamp:Date.now()})}warn(e,t,n){this.emit(`warning`,{code:t,message:e,data:n,timestamp:Date.now()})}});var M=class{data;_schema;_defaultValue;_path;constructor(e){let{schema:t,default:n,path:r}=e;this._schema=t,this._defaultValue=n,this._path=r}set(e){let t=this._schema[`~standard`].validate(e);if(t instanceof Promise)throw Error(`StructuredConfigFile does not support async validation`);if(t.issues)throw this.reportInvalidConfigFile(t.issues),Error(`Invalid config data for ${this._path}: ${t.issues.map(e=>e.message).join(`; `)}`);this.data=this.onBeforeSave(e),this.save(e)}get(e={}){return this.data?this.data:this.load(e)}getKey(e,t={}){return this.get(t)[e]}save(e){let t=this.onBeforeSave(e);try{d(this.getFilePath()),i.writeFileSync(this.getFilePath(),JSON.stringify(t,void 0,2))}catch{return}return this.data=t}load(e={}){let{createIfMissing:t=!0}=e;if(!this.fileExists(this.getFilePath())||!this.canReadWriteFile(this.getFilePath())){t&&this.save(this._defaultValue);let e=this.onAfterLoad(this._defaultValue);return t&&(this.data=e),e}try{let e=i.readFileSync(this.getFilePath(),`utf8`),t=this.onAfterLoad(this.parseStoredData(e));return this.data=t,t}catch{return this.data=this._defaultValue}}onBeforeSave(e){return e}onAfterLoad(e){return e}getFilePath(){return this._path}parseStoredData(e){try{let t=n(`string.json.parse`).to(`object`)(e);if(t instanceof n.errors)return this._defaultValue;let r=this._schema[`~standard`].validate(t);if(r instanceof Promise)throw Error(`StructuredConfigFile does not support async validation`);return r.issues?this.migrate(t,this._defaultValue):this.migrate(r.value,this._defaultValue)}catch{return this._defaultValue}}canReadWriteFile(e){try{return i.accessSync(e,i.constants.R_OK|i.constants.W_OK),!0}catch{return!1}}fileExists(e){try{return i.accessSync(e,i.constants.F_OK),!0}catch{return!1}}migrate(e,t){let n={...e};for(let r in t)Object.prototype.hasOwnProperty.call(t,r)&&(r in e?e[r]!==null&&t[r]!==null&&typeof e[r]==`object`&&typeof t[r]==`object`&&!Array.isArray(e[r])&&!Array.isArray(t[r])?n[r]=this.migrate(e[r],t[r]):Array.isArray(t[r])&&(n[r]=e[r]):n[r]=t[r]);return n}reportInvalidConfigFile(e){me.getInstance().error(`Invalid config file`,`INVALID_CONFIG_FILE`,{issues:e.map(e=>e.message),filePath:this._path,data:this.data})}};function N(e,t,n){return typeof e!=`object`||!e?String(e):e instanceof Error?JSON.stringify(e,(e,t)=>{if(t instanceof Error){let e={};for(let n of Object.getOwnPropertyNames(t))e[n]=t[n];return e}return t},n):e instanceof Map?JSON.stringify(Object.fromEntries(e.entries()),t,n):e instanceof Set?JSON.stringify(Array.from(e),t,n):JSON.stringify(e,t,n)}const P=/\x1b\[[0-9;]*m/g;function he(e){return e.replace(P,``)}var ge=class e extends fe{stream;logPath;baseFileName;currentDate;rotationCheckInterval;isRotating=!1;constructor(e,t){super(),this.logPath=e,this.baseFileName=t.replace(`.log`,``),this.currentDate=this.getDateString(new Date),this.ensureLogDirectory(),this.ensureLogFile(),this.stream=this.createStream(),this.rotationCheckInterval=this.startRotationCheck(),this.cleanupOldLogs()}static scope(t,n){return new e(t,n)}log(...e){this.write(`info`,...e)}error(...e){this.write(`error`,...e)}warn(...e){this.write(`warn`,...e)}info(...e){this.write(`info`,...e)}debug(...e){this.write(`debug`,...e)}async close(){clearInterval(this.rotationCheckInterval),await new Promise(e=>{this.stream.end(()=>e())})}getCurrentFileName(){return this.getFileName(this.currentDate)}static getMessageElements(e,...t){let n=new Date;return{timestamp:n.toISOString().replace(`T`,` `).replace(/\.\d+Z$/,``)+`.${n.getUTCMilliseconds().toString().padStart(3,`0`)}`,level:e,message:t.map(e=>N(e)).join(` `)}}getFileName(e){return`${this.baseFileName}-${e}.log`}ensureLogDirectory(){try{s(this.logPath,{recursive:!0})}catch(e){throw console.error(`Failed to create log directory ${this.logPath}:`,e),e}}ensureLogFile(){let e=p(this.logPath,this.getFileName(this.currentDate));if(!o(e))try{u(e,``,`utf8`)}catch(t){throw console.error(`Failed to create log file ${e}:`,t),t}}getDateString(e){return`${e.getUTCFullYear()}-${(e.getUTCMonth()+1).toString().padStart(2,`0`)}-${e.getUTCDate().toString().padStart(2,`0`)}`}createStream(){return a(p(this.logPath,this.getFileName(this.currentDate)),{flags:`a`,encoding:`utf8`})}async rotateLogs(){if(this.isRotating)return;this.isRotating=!0;let e=this.getDateString(new Date);e!==this.currentDate&&await new Promise(t=>{this.stream.end(()=>{this.currentDate=e,this.stream=this.createStream(),this.cleanupOldLogs(),t()})}),this.isRotating=!1}startRotationCheck(){return setInterval(()=>this.rotateLogs(),6e4)}cleanupOldLogs(){let e=c(this.logPath),t=new Date,n=new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()-7));e.filter(e=>e.startsWith(this.baseFileName)&&e.endsWith(`.log`)).filter(e=>{let[t,r,i]=e.replace(`${this.baseFileName}-`,``).replace(`.log`,``).split(`-`).map(Number);return new Date(Date.UTC(t,r-1,i))<=n}).forEach(e=>{try{l(p(this.logPath,e))}catch(t){console.error(`Failed to delete old log file ${e}:`,t)}})}ensureStreamValid(){if(!this.stream.writable||this.stream.destroyed)try{this.stream=this.createStream()}catch(e){this.emit(`error`,e instanceof Error?e:Error(String(e)))}}write(t,...n){let{timestamp:r,message:i}=e.getMessageElements(t,...n),a=`[${r}] [${t}] ${he(i)}\n`;this.ensureStreamValid(),this.stream.write(a,e=>{if(e)if(e.code===`ERR_STREAM_WRITE_AFTER_END`||!this.stream.writable)try{this.stream=this.createStream(),this.stream.write(a,e=>{e?this.emit(`error`,e):this.emit(`write`,a)})}catch(e){this.emit(`error`,e instanceof Error?e:Error(String(e)))}else this.emit(`error`,e);else this.emit(`write`,a)})}};const F=()=>h.join(process.env.APPDATA??``,`overlayed`),_e=()=>h.join(F(),`logs`),ve=e=>h.join(F(),`apps`,e),ye=e=>h.join(ve(e),`logs`),be=()=>h.join(F(),`meta.json`),xe=()=>h.join(F(),`crash-dumps`);var Se=class{fileLogger;path;appId;messageQueue=new de;fileName;_debug=!1;silent=!1;forceSilent=!1;constructor(e){this.fileName=e}init(e,t=!1,n=!1,r=!1){this.appId=e,this._debug=t,this.silent=n,this.forceSilent=r,this.path=ye(e),this.fileLogger=new ge(this.path,this.fileName),this.messageQueue.flush().forEach(e=>{this.fileLogger?.[e.type](...e.args)})}scope(e){if(!this.appId||!this.path)throw Error(`Logger not initialized`);let t=v.cyan(`[${e}]`);return{scope:e=>this.scope(e),error:(...e)=>this.error(t,...e),warn:(...e)=>this.warn(t,...e),info:(...e)=>this.info(t,...e),log:(...e)=>this.log(t,...e),debug:(...e)=>this.debug(t,...e)}}error(...e){this.handle(`error`,...e)}warn(...e){this.handle(`warn`,...e)}info(...e){this.handle(`log`,...e)}debug(...e){this._debug&&this.handle(`debug`,...e)}log(...e){this.handle(`log`,...e)}handle(e,...t){this.logToConsole(e,...t),this.fileLogger?this.fileLogger[e](...t):this.messageQueue.add({type:e,args:t})}logToConsole(e,...t){let n={error:v.red,warn:v.yellow,debug:v.blue,log:v.white};if(this.forceSilent||this.silent&&!this._debug)return;let{timestamp:r,message:i}=ge.getMessageElements(e,...t),a=console[e],o=n[e];a(`${v.gray(r)} ${o(i)}`)}};const I=j(Se,`overlayed.log`);var L=class extends ee{blob;chunkSizeMb;maxConcurrent;shouldStop=!1;constructor(e,t){super(),this.blob=e,this.chunkSizeMb=t.chunkSizeMb,this.maxConcurrent=t.maxConcurrent??3}get totalChunks(){return Math.ceil(this.blob.size/(this.chunkSizeMb*1024*1024))}async chunk(e){let t=this.chunkSizeMb*1024*1024,n=this.totalChunks;if(n===0)return;let r=new Map,i=new Set,a=new Set,o=[];for(let e=0;e<n;e++)o.push(e);let s=async n=>{let s=n*t,c=Math.min(s+t,this.blob.size),l=this.blob.slice(s,c);try{await e(l,n),a.add(n),this.emit(`chunkComplete`,n),i.delete(n)}catch(e){let t=r.get(n)||0;t<5?(r.set(n,t+1),await new Promise(e=>setTimeout(e,(t+1)*1e3)),o.push(n)):(a.add(n),this.emit(`error`,e),this.shouldStop=!0,i.delete(n))}},c=[],l=async()=>{for(;(o.length>0||i.size>0)&&!this.shouldStop;){if(o.length===0){await new Promise(e=>setTimeout(e,10));continue}let e=o.shift();a.has(e)||i.has(e)||(i.add(e),await s(e))}};for(let e=0;e<this.maxConcurrent;e++)c.push(l());await Promise.all(c)}};function Ce(e,t){let{recursive:n}=R(t);return S(e)?n?we(e).map(t=>[e,t]):w(e).map(t=>[e,t]):[]}function R(e){return{recursive:e?.recursive??!0}}function we(e){return w(e,{withFileTypes:!0}).flatMap(t=>{let n=h.join(e,t.name);return t.isDirectory()?we(n):[n]})}function z(e){return Te(e),e}function Te(e){if(!ue(e.applicationId))throw Error(`Invalid applicationId, must be a valid ULID.`)}function Ee(e,t){let n=t?.cwd??process.cwd(),r=m.join(n,`.overlayed`);y.existsSync(r)||y.mkdirSync(r,{recursive:!0});let i={application:{id:e.id,name:e.name,slug:e.slug,siteUrl:e.siteUrl},release:{id:null,channel:`local`,version:`0.0.0`}},a=m.join(r,`meta.json`);return y.writeFileSync(a,JSON.stringify(i,null,2)),i}const{PipeEventServer:De,PipeEventClient:Oe,PipeEventBase:ke,GameMonitor:Ae,GameInstance:je,HardwareInterface:Me}=e(import.meta.url)(`@overlayed/app/dist/native-interface/build/overlayed_native_interface_x64.node`),Ne=j(class extends fe{server=null;_hasConnection=!1;pipeId;get hasConnection(){return this._hasConnection}constructor(e){super(),this.pipeId=e,this.init()}destroy(){this.server&&=(this._hasConnection=!1,this.server?.removeAllListeners(),null)}init(){this.server=new De(this.pipeId,{clientCount:1,access:1}),this.server.on(`event`,e=>{try{let t=JSON.parse(e);this.emit(`data`,[t])}catch(e){this.emit(`error`,e)}}),this.server.on(`connected`,()=>{this._hasConnection=!0,this.emit(`connected`,void 0)}),this.server.on(`disconnected`,()=>{this._hasConnection=!1,this.emit(`disconnected`,void 0)})}},`overlayed-event-server`),{RenderInterface:Pe,renderHookPath:Fe}=e(import.meta.url)(`@overlayed/app/dist/render-interface/build/overlayed_render_interface_x64.node`);let Ie=function(e){return e[e.LeftButton=1]=`LeftButton`,e[e.RightButton=2]=`RightButton`,e[e.Cancel=3]=`Cancel`,e[e.MiddleButton=4]=`MiddleButton`,e[e.ExtraButton1=5]=`ExtraButton1`,e[e.ExtraButton2=6]=`ExtraButton2`,e[e.Back=8]=`Back`,e[e.Tab=9]=`Tab`,e[e.Clear=12]=`Clear`,e[e.Return=13]=`Return`,e[e.Shift=16]=`Shift`,e[e.Control=17]=`Control`,e[e.Menu=18]=`Menu`,e[e.Pause=19]=`Pause`,e[e.CapsLock=20]=`CapsLock`,e[e.Kana=21]=`Kana`,e[e.Hangeul=21]=`Hangeul`,e[e.Hangul=21]=`Hangul`,e[e.Junja=23]=`Junja`,e[e.Final=24]=`Final`,e[e.Hanja=25]=`Hanja`,e[e.Kanji=25]=`Kanji`,e[e.Escape=27]=`Escape`,e[e.Convert=28]=`Convert`,e[e.NonConvert=29]=`NonConvert`,e[e.Accept=30]=`Accept`,e[e.ModeChange=31]=`ModeChange`,e[e.Space=32]=`Space`,e[e.Prior=33]=`Prior`,e[e.Next=34]=`Next`,e[e.End=35]=`End`,e[e.Home=36]=`Home`,e[e.Left=37]=`Left`,e[e.Up=38]=`Up`,e[e.Right=39]=`Right`,e[e.Down=40]=`Down`,e[e.Select=41]=`Select`,e[e.Print=42]=`Print`,e[e.Execute=43]=`Execute`,e[e.Snapshot=44]=`Snapshot`,e[e.Insert=45]=`Insert`,e[e.Delete=46]=`Delete`,e[e.Help=47]=`Help`,e[e.N0=48]=`N0`,e[e.N1=49]=`N1`,e[e.N2=50]=`N2`,e[e.N3=51]=`N3`,e[e.N4=52]=`N4`,e[e.N5=53]=`N5`,e[e.N6=54]=`N6`,e[e.N7=55]=`N7`,e[e.N8=56]=`N8`,e[e.N9=57]=`N9`,e[e.A=65]=`A`,e[e.B=66]=`B`,e[e.C=67]=`C`,e[e.D=68]=`D`,e[e.E=69]=`E`,e[e.F=70]=`F`,e[e.G=71]=`G`,e[e.H=72]=`H`,e[e.I=73]=`I`,e[e.J=74]=`J`,e[e.K=75]=`K`,e[e.L=76]=`L`,e[e.M=77]=`M`,e[e.N=78]=`N`,e[e.O=79]=`O`,e[e.P=80]=`P`,e[e.Q=81]=`Q`,e[e.R=82]=`R`,e[e.S=83]=`S`,e[e.T=84]=`T`,e[e.U=85]=`U`,e[e.V=86]=`V`,e[e.W=87]=`W`,e[e.X=88]=`X`,e[e.Y=89]=`Y`,e[e.Z=90]=`Z`,e[e.LeftWindows=91]=`LeftWindows`,e[e.RightWindows=92]=`RightWindows`,e[e.Application=93]=`Application`,e[e.Sleep=95]=`Sleep`,e[e.Numpad0=96]=`Numpad0`,e[e.Numpad1=97]=`Numpad1`,e[e.Numpad2=98]=`Numpad2`,e[e.Numpad3=99]=`Numpad3`,e[e.Numpad4=100]=`Numpad4`,e[e.Numpad5=101]=`Numpad5`,e[e.Numpad6=102]=`Numpad6`,e[e.Numpad7=103]=`Numpad7`,e[e.Numpad8=104]=`Numpad8`,e[e.Numpad9=105]=`Numpad9`,e[e.Multiply=106]=`Multiply`,e[e.Add=107]=`Add`,e[e.Separator=108]=`Separator`,e[e.Subtract=109]=`Subtract`,e[e.Decimal=110]=`Decimal`,e[e.Divide=111]=`Divide`,e[e.F1=112]=`F1`,e[e.F2=113]=`F2`,e[e.F3=114]=`F3`,e[e.F4=115]=`F4`,e[e.F5=116]=`F5`,e[e.F6=117]=`F6`,e[e.F7=118]=`F7`,e[e.F8=119]=`F8`,e[e.F9=120]=`F9`,e[e.F10=121]=`F10`,e[e.F11=122]=`F11`,e[e.F12=123]=`F12`,e[e.F13=124]=`F13`,e[e.F14=125]=`F14`,e[e.F15=126]=`F15`,e[e.F16=127]=`F16`,e[e.F17=128]=`F17`,e[e.F18=129]=`F18`,e[e.F19=130]=`F19`,e[e.F20=131]=`F20`,e[e.F21=132]=`F21`,e[e.F22=133]=`F22`,e[e.F23=134]=`F23`,e[e.F24=135]=`F24`,e[e.NumLock=144]=`NumLock`,e[e.ScrollLock=145]=`ScrollLock`,e[e.NEC_Equal=146]=`NEC_Equal`,e[e.Fujitsu_Jisho=146]=`Fujitsu_Jisho`,e[e.Fujitsu_Masshou=147]=`Fujitsu_Masshou`,e[e.Fujitsu_Touroku=148]=`Fujitsu_Touroku`,e[e.Fujitsu_Loya=149]=`Fujitsu_Loya`,e[e.Fujitsu_Roya=150]=`Fujitsu_Roya`,e[e.LeftShift=160]=`LeftShift`,e[e.RightShift=161]=`RightShift`,e[e.LeftControl=162]=`LeftControl`,e[e.RightControl=163]=`RightControl`,e[e.LeftMenu=164]=`LeftMenu`,e[e.RightMenu=165]=`RightMenu`,e[e.BrowserBack=166]=`BrowserBack`,e[e.BrowserForward=167]=`BrowserForward`,e[e.BrowserRefresh=168]=`BrowserRefresh`,e[e.BrowserStop=169]=`BrowserStop`,e[e.BrowserSearch=170]=`BrowserSearch`,e[e.BrowserFavorites=171]=`BrowserFavorites`,e[e.BrowserHome=172]=`BrowserHome`,e[e.VolumeMute=173]=`VolumeMute`,e[e.VolumeDown=174]=`VolumeDown`,e[e.VolumeUp=175]=`VolumeUp`,e[e.MediaNextTrack=176]=`MediaNextTrack`,e[e.MediaPrevTrack=177]=`MediaPrevTrack`,e[e.MediaStop=178]=`MediaStop`,e[e.MediaPlayPause=179]=`MediaPlayPause`,e[e.LaunchMail=180]=`LaunchMail`,e[e.LaunchMediaSelect=181]=`LaunchMediaSelect`,e[e.LaunchApplication1=182]=`LaunchApplication1`,e[e.LaunchApplication2=183]=`LaunchApplication2`,e[e.OEM1=186]=`OEM1`,e[e.OEMPlus=187]=`OEMPlus`,e[e.OEMComma=188]=`OEMComma`,e[e.OEMMinus=189]=`OEMMinus`,e[e.OEMPeriod=190]=`OEMPeriod`,e[e.OEM2=191]=`OEM2`,e[e.OEM3=192]=`OEM3`,e[e.OEM4=219]=`OEM4`,e[e.OEM5=220]=`OEM5`,e[e.OEM6=221]=`OEM6`,e[e.OEM7=222]=`OEM7`,e[e.OEM8=223]=`OEM8`,e[e.OEMAX=225]=`OEMAX`,e[e.OEM102=226]=`OEM102`,e[e.ICOHelp=227]=`ICOHelp`,e[e.ICO00=228]=`ICO00`,e[e.ProcessKey=229]=`ProcessKey`,e[e.ICOClear=230]=`ICOClear`,e[e.Packet=231]=`Packet`,e[e.OEMReset=233]=`OEMReset`,e[e.OEMJump=234]=`OEMJump`,e[e.OEMPA1=235]=`OEMPA1`,e[e.OEMPA2=236]=`OEMPA2`,e[e.OEMPA3=237]=`OEMPA3`,e[e.OEMWSCtrl=238]=`OEMWSCtrl`,e[e.OEMCUSel=239]=`OEMCUSel`,e[e.OEMATTN=240]=`OEMATTN`,e[e.OEMFinish=241]=`OEMFinish`,e[e.OEMCopy=242]=`OEMCopy`,e[e.OEMAuto=243]=`OEMAuto`,e[e.OEMENLW=244]=`OEMENLW`,e[e.OEMBackTab=245]=`OEMBackTab`,e[e.ATTN=246]=`ATTN`,e[e.CRSel=247]=`CRSel`,e[e.EXSel=248]=`EXSel`,e[e.EREOF=249]=`EREOF`,e[e.Play=250]=`Play`,e[e.Zoom=251]=`Zoom`,e[e.Noname=252]=`Noname`,e[e.PA1=253]=`PA1`,e[e.OEMClear=254]=`OEMClear`,e}({});const Le=n({game:`string`,type:`string`,creationTime:`number`}),Re=Le.and({game:`'siege' | 'tft'`,type:`'logged_in'`,content:{accountId:`string`}}),ze=Le.and({game:`'sand'`,type:`'logged_in'`,content:{accountId:`string`,displayName:`string`,platformId:`string`,playfabId:`string`}}).or(Re),Be=Le.and({game:`'siege' | 'tft' | 'sand'`}),Ve=t({"#event1":`logged_in | module_loaded | module_unloaded | unsupported_game_version`,event:`event1`,logged_in:ze,module_loaded:Be.and({type:`'module_loaded'`,content:{gameVersion:`string`,processHash:`string`}}),module_unloaded:Be.and({type:`'module_unloaded'`}),unsupported_game_version:Be.and({type:`'unsupported_game_version'`,content:{gameVersion:`string`,processHash:`string`}})}).export(),He=Object.keys(Ve).filter(e=>e!==`event`);function Ue(){return{key:`universal`,events:Ve}}var We=class{options=null;logger;initialized=!1;constructor(e){this.logger=I.getInstance().scope(e)}init(e){this.logger.log(`Initializing`),this.options=e||null,this.initialized=!0}destroy(){this.logger.log(`Destroying`),this.initialized=!1}},Ge=class extends fe{options=null;logger;initialized=!1;constructor(e){super(),this.logger=I.getInstance().scope(e)}init(e){this.logger.log(`Initializing`),this.options=e||null,this.initialized=!0}destroy(){this.logger.log(`Destroying`),this.initialized=!1,this.removeAllListeners()}},Ke=class extends pe{options=null;logger;initialized=!1;constructor(e){super(),this.logger=I.getInstance().scope(e)}init(e){this.logger.log(`Initializing`),this.options=e||null,this.initialized=!0}destroy(){this.logger.log(`Destroying`),this.initialized=!1,this.removeAllListeners()}};const qe=`https://api.overlayed.gg`,B=re.create({baseURL:qe,paramsSerializer:e=>ie(e,!0,null,{arrayFormat:`repeat`}),headers:{Accept:`application/json`,"Accept-Encoding":`gzip, deflate, br`}});let Je;function V(e){Je=e}let Ye;function Xe(e){Ye=e}function Ze(e){return`overlayed/app (${Object.entries(e).map(([e,t])=>`${e}=${t}`).join(`, `)})`}B.interceptors.request.use(e=>{let t=Je?.();e.headers??={},t&&(e.headers[`X-Api-Key`]=t);let n=Ye?.();return n&&(e.headers[`User-Agent`]=Ze(n)),e});function Qe(e,t){if(t<=0)throw Error(`Chunk size must be greater than 0`);if(e.length===0)return[];let n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}function $e(e){return e}function et(e){return e?t=>(e(t),t):$e}const tt=et();function nt(e){return B.get(`/v1/public/applications/${e}`)}function rt(e,t){return B.get(`/v1/public/applications/${e}/releases/check`,{params:t})}function it(e,t){return B.post(`/v1/public/applications/${e}/game-crash-reports`,t)}function at(e,t,n){return B.post(`/v1/public/applications/${e}/game-crash-reports/${t}/confirm`,n)}function ot(e,t){let n=new FormData;return n.append(`file`,new Blob([t.file],{type:`application/zip`}),`logs.zip`),n.append(`data`,JSON.stringify(t.data)),B.post(`/v1/public/applications/${e}/feedbacks`,n)}function H(e,t){return B.get(`/v1/public/applications/${e}/feature-flags`,{params:t})}function st(e,t){return B.get(`/v1/public/applications/${e}/notices`,{params:t})}const ct=et();function lt(e,t){return B.get(`/v1/public/modules/${e}/release`,{params:{cortex_user_id:t}})}function U(e,t,n){return B.post(`/v1/public/modules/${e}/releases/${t}/download`,n)}async function ut(e,t){if(e.method!==`GET`)throw Error(`Unsupported presigned request method: ${e.method}`);let n=await fetch(e.url,{method:e.method,headers:e.headers,signal:t?.signal});if(!n.ok){let e=await ft(n);throw Error(`Presigned download failed (${n.status} ${n.statusText})${e?`: ${e}`:``}`)}let r=await n.arrayBuffer();return new Uint8Array(r)}async function dt(e,t){if(e.method!==`PUT`)throw Error(`Unsupported presigned request method: ${e.method}`);let n=await fetch(e.url,{method:e.method,headers:{...e.headers,"Content-Length":t.byteLength.toString()},body:t});if(!n.ok){let e=await ft(n);throw Error(`Presigned upload failed (${n.status} ${n.statusText})${e?`: ${e}`:``}`)}}async function ft(e){try{let t=(await e.text()).trim();if(t.length===0)return;let n=2048;return t.length>n?`${t.slice(0,n)}…`:t}catch{return}}function pt(){return B.get(`/v1/public/raven/config`)}const mt=et();function ht(e,t){return B.get(`/v1/public/raven/games/${e}/builds/${t}`)}function gt(e,t){return B.post(`/v1/public/raven/games/${e}/builds/upload`,null,{params:t})}function _t(e,t){let{chunk:n,...r}=t,i=new FormData;return i.append(`file`,n),B.patch(`/v1/public/raven/games/${e}/builds/upload`,i,{params:r})}function vt(e){let t=Date.now(),n=e.messages.filter(e=>t-e.created_at.getTime()<6e5),r=e.messages.length-n.length;r>0&&console.warn(`Dropped ${r} cortex event(s) older than 600s`);let i=Qe(n.map(e=>yt(t,e)),50),a=Promise.all(i.map(async t=>B.post(`/v1/public/cortex/events`,{...e,messages:t})));return a.catch(e=>{let t=e?.response?.data||e?.message||e;console.error(`Failed to submit cortex events`,t)}),a}function yt(e,t){let n=e-t.created_at.getTime(),r=Math.max(0,Math.floor(n/1e3));return{properties:t.properties,type:t.type,seconds_offset:r}}function bt(e){return e instanceof Error&&(e.name===`XiorError`||e.name===`XiorTimeoutError`)}function xt(e){return!!(e&&`kind`in e.data&&`message`in e.data)}const{PipeEventServer:St,PipeEventClient:Ct,PipeEventBase:wt,GameMonitor:Tt,GameInstance:Et,HardwareInterface:Dt}=e(import.meta.url)(`@overlayed/app/dist/native-interface/build/overlayed_native_interface_x64.node`);function Ot(e=[]){return h.normalize(h.join(ve(global.OVERLAYED.APPLICATION_ID),...e))}const kt=n({game:`string`,type:`string`,creationTime:`number`}),At=new M({path:be(),schema:n({userId:`string | undefined`,sessionId:`string | undefined`,sessionLastUsed:`number | undefined`,accessToken:`string | undefined`,"debug?":{"ri_disabled?":`boolean`,"gm_disabled?":`boolean`}}),default:{userId:void 0,sessionId:void 0,sessionLastUsed:void 0,accessToken:void 0}});function W(){let{debug:e}=At.get();return e?{ri_disabled:e.ri_disabled??!1,gm_disabled:e.gm_disabled??!1}:{ri_disabled:!1,gm_disabled:!1}}function G(){let e=At.get().userId;if(e)return e;let t=Ft();return At.set({...At.get(),userId:t}),t}function jt(){let e=At.get();if(e.sessionId&&typeof e.sessionLastUsed==`number`&&Date.now()-e.sessionLastUsed<=300*1e3)return e.sessionId;let t=crypto.randomUUID();return At.set({...e,sessionId:t,sessionLastUsed:Date.now()}),t}function Mt(){try{let e=At.get();At.set({...e,sessionLastUsed:Date.now()})}catch(e){I.getInstance().log(`Failed to update sessionLastUsed`,e)}}function Nt(){return At.get().accessToken}function Pt(e){try{let t=At.get();At.set({...t,accessToken:e??void 0})}catch(e){I.getInstance().log(`Failed to set accessToken`,e)}}function Ft(){try{return Dt.generateUniqueIdentifier()}catch{return crypto.randomUUID()}}const It=j(class extends Ge{UPDATE_CHECK_INTERVAL_MS=1e3*60*5;targetDir;updateInterval;constructor(){super(`NativeModuleManager`),this.targetDir=h.join(F(),`resources`),this.logger.log(`Target directory`,this.targetDir)}async initWithDlls(e){super.init(),await D.mkdir(this.targetDir,{recursive:!0}),await this.checkForUpdates(e),clearInterval(this.updateInterval),this.updateInterval=setInterval(()=>this.checkForUpdates(e),this.UPDATE_CHECK_INTERVAL_MS)}destroy(){this.updateInterval&&=(clearInterval(this.updateInterval),void 0),super.destroy()}async getDllFile(e){let t=await this.getCurrentBuildInfo(e);if(!t){this.logger.error(`No build found for module`,{moduleId:e});return}let n=this.getBuildPath(e,t.buildId);if(!S(n)){this.logger.error(`No build file found for module`,{moduleId:e});return}let r=h.join(n,t.buildFileName);if(!S(r)){this.logger.error(`No DLL file found for module`,{moduleId:e});return}return r}async getCurrentBuildInfo(e){try{let t=h.join(this.targetDir,e,`build.json`),n=await D.readFile(t,`utf-8`);return JSON.parse(n)}catch{return null}}getModulePath(e){return h.join(this.targetDir,e)}getBuildPath(e,t){return h.join(this.getModulePath(e),t)}async checkForUpdates(e){this.logger.log(`Checking for updates`);let t=G();if(!t){this.logger.error(`Failed to resolve cortex user id`);return}this.logger.log(`Cortex User ID`,t);for(let n of e)try{let{data:e}=await lt(n,t);this.logger.log(`Release`,e);let r=(await this.getCurrentBuildInfo(n))?.buildId||null;this.logger.log(`${n} > Performing update check. current: ${r}, requested: ${e.build_id}`),e.build_id!==r||await this.isDownloadCorrupted(this.getBuildPath(n,e.build_id),e)?(this.logger.log(`${n} > Update found. current: ${r}, requested: ${e.build_id}`),this.logger.log(`${n} > Downloading and extracting DLLs`),await this.downloadAndExtractDll(n,e),this.logger.log(`${n} > Cleaning up other builds`),await this.cleanupExistingBuilds(n,e.build_id),this.emit(`dllUpdated`,{moduleId:n,buildId:e.build_id,releaseId:e.release_id})):this.logger.log(`${n} > No update found`)}catch(e){this.logger.error(`${n} > Error checking/updating`,e)}}async downloadAndExtractDll(e,t){this.logger.log(`${e} > Requesting download for build ${t.build_id}`);let n=G();if(!n){this.logger.error(`Failed to resolve cortex user id`);return}let{data:r}=await U(e,t.release_id,{download_token:t.download_token,cortex_user_id:n});this.logger.log(`${e} > Downloading DLLs for build ${t.build_id}`);let i=await ut(r,{signal:AbortSignal.timeout(1e3*60*5)});this.logger.log(`${e} > Downloaded zip file for build ${t.build_id}`);let a=this.getBuildPath(e,t.build_id);await D.mkdir(a,{recursive:!0});let o=new ae;await o.loadAsync(i);let s=Object.keys(o.files).map(e=>({name:e,file:o.files[e]})).filter(({file:e})=>!e.dir);if(s.length!==1){this.logger.error(`${e} > Zip must contain exactly 1 file, got ${s.length}`);return}let c=s[0],l=h.basename(c.name),u=h.normalize(l),d=h.isAbsolute(u),f=u.startsWith(`..`)||u.includes(`..${h.sep}`);if(l===``||l===`.`||l===`..`){this.logger.error(`${e} > Zip contained an invalid file name: ${c.name}`);return}if(!l.toLowerCase().endsWith(`.dll`)){this.logger.error(`${e} > Zip contained a non-dll file: ${c.name}`);return}if(d||f){this.logger.error(`${e} > Zip entry path is unsafe: ${c.name}`);return}let p=h.join(a,u),m=await c.file.async(`nodebuffer`);await D.writeFile(p,m),this.logger.log(`${e} > Extracted 1 file to ${p}`);let g={buildId:t.build_id,buildFileName:t.build_file_name},_=h.join(this.getModulePath(e),`build.json`);await D.writeFile(_,JSON.stringify(g),`utf-8`),this.logger.log(`${e} > Saved buildId to file: ${t.build_id}`)}async cleanupExistingBuilds(e,t){let n=this.getModulePath(e),r=this.getBuildPath(e,t),i=await D.readdir(n,{withFileTypes:!0});for(let t of i)t.isDirectory()&&h.join(n,t.name)!==r&&(await D.rm(h.join(n,t.name),{recursive:!0,force:!0}),this.logger.log(`${e} > Cleaned up build: ${t.name}`))}async hasPathAccess(e){try{return await D.access(e,D.constants.F_OK),!0}catch{return!1}}async isDownloadCorrupted(e,t){if(!await this.hasPathAccess(e))return this.logger.error(`Download is corrupted. Path does not exist: ${e}`),!0;let n=t.build_file_name,r=h.join(e,n);if(!S(r))return this.logger.error(`Download is corrupted. Build file not found: ${r}`),!0;if(t.build_hash){let e=await D.readFile(r),i=T(`sha256`).update(e).digest(`hex`);if(i.toLowerCase()!==t.build_hash.toLowerCase())return this.logger.error(`Download is corrupted. Build file hash mismatch: ${n} ${i.toLowerCase()} !== ${t.build_hash.toLowerCase()}`),!0}return!1}}),Lt=j(class extends Ge{_gameMonitor;_games=new Map;constructor(){super(`GameManager`),this._gameMonitor=new Tt}get hasAnyActiveGames(){return this._games.size>0}init(){super.init(),this._gameMonitor.on(`launch`,e=>{this.logger.log(`Game launched`,e.identifier,e.processId),this._games.set(e.processId,e),this.logger.log(`Active Game Count: ${this._games.size}`),this.emit(`launch`,{game:e})}),this._gameMonitor.on(`close`,e=>{this.logger.log(`Game closed`,e.identifier,e.processId),this._games.delete(e.processId),this.logger.log(`Active Game Count: ${this._games.size}`),this.emit(`close`,{game:e})})}destroy(){this._games.clear(),this._gameMonitor.removeAllListeners(),super.destroy()}}),Rt=j(class extends Ge{REFETCH_INTERVAL=1e3*60*5;FAILED_REFETCH_INTERVAL=1e3*30;_refetchIntervalHandler=null;_failedRefetchTimeoutHandler=null;_ready;_resolveReady;constructor(){super(`RavenManager`),this._ready=new Promise(e=>{this._resolveReady=e})}get ready(){return this._ready}init(e){super.init(e),this.fetchRavenConfig(),this._refetchIntervalHandler=setInterval(()=>{this._failedRefetchTimeoutHandler&&=(clearTimeout(this._failedRefetchTimeoutHandler),null),this.fetchRavenConfig()},this.REFETCH_INTERVAL)}destroy(){this._refetchIntervalHandler&&clearInterval(this._refetchIntervalHandler),this._failedRefetchTimeoutHandler&&clearTimeout(this._failedRefetchTimeoutHandler),It.getInstance().destroy(),super.destroy()}async fetchRavenConfig(){try{let e=await pt();if(!this.initialized)return;let t=new Set(this.options?.subscribedGames??[]),n=new Set;for(let r of e.data.games)!t.has(`*`)&&!t.has(r.identifier)||r.game_module&&n.add(r.game_module);n.size===0&&e.data.games.length>0&&this.logger.warn(`No raven game matched the subscribed games`,{subscribed:Array.from(t),available:e.data.games.map(e=>e.identifier)}),await It.getInstance().initWithDlls(Array.from(n)),this.logger.log(`Raven updated, tracking ${n.size} game modules`),this._resolveReady()}catch(e){this.logger.error(`Failed to fetch Raven config`,e),this._failedRefetchTimeoutHandler=setTimeout(()=>this.fetchRavenConfig(),this.FAILED_REFETCH_INTERVAL)}}});var zt=class{_instance;_resolution;boundOnResolutionChanged=this.onResolutionChanged.bind(this);constructor(e){this._instance=e,this._resolution={width:0,height:0},this._instance.on(`resolution`,this.boundOnResolutionChanged)}destroy(){this._instance.off(`resolution`,this.boundOnResolutionChanged)}get instance(){return this._instance}get resolution(){return this._resolution}onResolutionChanged(e,t){this._resolution={width:e,height:t}}};const K=j(class{interfaces={};constructor(){}createInterface(e){return this.interfaces[e]||(this.interfaces[e]=new zt(new Pe(e,{access:1}))),this.interfaces[e]}getInterface(e){return this.interfaces[e]?this.interfaces[e]:this.createInterface(e)}}),q=j(class{options;eventQueue;meta=null;enabled=!0;constructor(e){this.options=this.resolveOptions(e),this.eventQueue=new de,this.setupFlushInterval()}track(e,t){this.enabled&&this.eventQueue.add({type:e,properties:t,created_at:new Date})}flush(){if(!this.enabled)return[];let e=Array.from(this.eventQueue.flush()).concat({type:`ping`,properties:{},created_at:new Date});if(!this.meta)throw Error(`Tried to flush Cortex events before meta was set`);try{vt({...this.meta,messages:e})}catch{}return e}setupFlushInterval(){this.enabled&&setInterval(()=>{this.flush()},this.options.batchIntervalSeconds*1e3)}resolveOptions(e){return{batchIntervalSeconds:e?.batchIntervalSeconds??15}}}),Bt=e(import.meta.url),Vt=Bt.resolve(`@overlayed/app/dist/render-interface/build/overlayed_render_hook_x64.dll`),Ht=Bt.resolve(`@overlayed/app/dist/render-interface/build/overlayed_render_hook_x86.dll`),Ut=Bt.resolve(`@overlayed/app/dist/native-interface/build/overlayed_injector_x64.exe`),Wt=Bt.resolve(`@overlayed/app/dist/native-interface/build/overlayed_injector_x86.exe`),J=j(class extends Ke{boundOnGameLaunch=this.onGameLaunch.bind(this);boundOnGameClose=this.onGameClose.bind(this);subscribedGames=new Set;activeGames=new Map;pendingLaunches=new Map;get isInGame(){return this.activeGames.size>0}constructor(){super(`GameLaunchManager`)}setSubscribedGames(e){this.subscribedGames=new Set(e)}getActiveGames(){return Array.from(new Set(Array.from(this.activeGames.values()).map(e=>e.game)))}init(){super.init(),K.getInstance().createInterface(`OGG_SIEGE`),Lt.getInstance().on(`launch`,this.boundOnGameLaunch),Lt.getInstance().on(`close`,this.boundOnGameClose)}destroy(){Lt.getInstance().off(`launch`,this.boundOnGameLaunch),Lt.getInstance().off(`close`,this.boundOnGameClose),super.destroy()}on(e,t){super.on(e,t);let n=le(e);if(!(n.includes(`gameReady`)||n.includes(`*`))||this.activeGames.size===0)return;let r=t;for(let e of this.activeGames.values())this.logger.log(`Late calling gameReady callback for game`,e.game),r(e)}async onGameLaunch({game:e}){this.logger.log(`On game launch`,e.identifier,e.executableName,e.processId);let t=mt(e.identifier);if(q.getInstance().track(`game_launch`,{game:t}),this.subscribedGames.size===0){this.logger.warn(`No subscribed games, skipping`);return}if(!this.subscribedGames.has(t)&&!this.subscribedGames.has(`*`))return;let n=new AbortController;if(this.pendingLaunches.set(e.processId,n),await this.emit(`gameLaunch`,{game:t,processId:e.processId,reject:()=>n.abort()}),n.signal.aborted)return;if(this.logger.log(`Game Launched`,e.identifier),this.logger.log(`Game is elevated: `,e.isElevated),e.hasElevationMismatch){me.getInstance().fatal(`Game is elevated but the App is not`,`ELEVATION_MISMATCH`,{appElevated:!1,gameElevated:!0}),this.logger.log(`Game elevated but App is not`);return}if(e.injectionDelayMs>0){if(this.logger.log(`Delaying injection for ${e.injectionDelayMs}ms to allow game to be ready`),await new Promise(t=>{let r=setTimeout(t,e.injectionDelayMs);n.signal.addEventListener(`abort`,()=>{clearTimeout(r),t()},{once:!0})}),n.signal.aborted){this.logger.log(`Game closed during the injection delay, skipping injection`);return}this.logger.log(`Finished delay`)}let{ri_disabled:r,gm_disabled:i}=W(),a=!1;if(!r&&e.hasRenderSupport&&e.allowDllInjections?a=await this.injectRenderInterface(e):this.logger.log(`Skipping render interface injection`,{has_render_support:e.hasRenderSupport,allow_dll_injections:e.allowDllInjections,ri_disabled:r}),!i&&e.allowDllInjections?await this.injectGameModules(e):this.logger.log(`Skipping game module(s) injection`,{allow_dll_injections:e.allowDllInjections,gm_disabled:i}),n.signal.aborted){this.logger.log(`Game closed during injection, skipping ready`);return}this.pendingLaunches.delete(e.processId);let o={game:t,processId:e.processId,inGameRenderingSupported:a};this.activeGames.set(e.processId,o),this.logger.debug(`Active games`,this.getActiveGames().join(`, `)),this.logger.log(`Game Ready`),this.emit(`gameReadyInternal`,{game:e}),this.emit(`gameReady`,o),q.getInstance().track(`game_ready`,{game:t})}copyInjectors(){let e=this.copyDll(Ut),t=this.copyDll(Wt);return!e||!t?(this.logger.error(`Failed to copy injector executables`),!1):h.dirname(e)}copyDll(e){let t=h.basename(e),n=_(e),r=h.join(F(),`resources`),i=h.join(r,t);this.logger.info(`Copying`,n,`to`,i);try{S(r)||C(r,{recursive:!0}),b(n,i)}catch(e){return e.code===`EBUSY`?i:(this.logger.error(`Failed to copy`,e),this.logger.error(`Failed to copy`,{originalPath:n,targetPath:i}),!1)}return i}async injectRenderInterface(e){this.logger.log(`Injecting render interface`,{is32Bit:e.is32Bit,game:e.identifier});let t=e.is32Bit?Ht:Vt;this.logger.log(`Render hook path`,t);let n=this.copyDll(t);if(!n)return this.logger.error(`Failed to copy render hook DLL`,{renderHookPath:t}),!1;let r=this.copyInjectors();if(!r)return!1;this.logger.log(`Resolved injector path`,r);try{return this.logger.log(`Injecting render interface`,n),await e.injectDll(n,r),this.logger.log(`Render Interface Injection Successful`,n),!0}catch(e){return this.logger.error(`Render Interface Injection Failed`,e),this.logger.error(`Render Interface Injection Failed`,{renderHookPathCopied:n}),!1}}async injectGameModules(e){let t=this.copyInjectors();if(t){this.logger.log(`Resolved injector path`,t),await Rt.getInstance().ready;for(let n of e.modules){let r=await It.getInstance().getDllFile(n);if(!r){this.logger.error(`No DLL file found for module`,{moduleId:n});continue}try{this.logger.log(`Injecting game module`,r),await e.injectDll(r,t),this.logger.log(`Injection Successful`,r)}catch(e){this.logger.error(`Injection Failed`,{dllFile:r},e)}}}}async onGameClose({game:e}){let t=mt(e.identifier);this.pendingLaunches.get(e.processId)?.abort(),this.pendingLaunches.delete(e.processId),this.activeGames.delete(e.processId),this.logger.debug(`Active games`,this.getActiveGames().join(`, `)),this.emit(`gameCloseInternal`,{game:e}),this.emit(`gameClose`,{game:t,processId:e.processId}),q.getInstance().track(`game_close`,{game:t})}}),Gt=j(class extends We{boundOnGameLaunch=this.onGameLaunch.bind(this);boundOnGameClose=this.onGameClose.bind(this);pendingBuilds=new Map;constructor(){super(`GameBuildManager`)}init(){super.init(),J.getInstance().on(`gameReadyInternal`,this.boundOnGameLaunch),J.getInstance().on(`gameCloseInternal`,this.boundOnGameClose)}destroy(){J.getInstance().off(`gameReadyInternal`,this.boundOnGameLaunch),J.getInstance().off(`gameCloseInternal`,this.boundOnGameClose),super.destroy()}onGameClose(...e){let[{game:t}]=e;this.pendingBuilds.get(t.processId)?.abort(),this.pendingBuilds.delete(t.processId)}async onGameLaunch(...e){let[{game:t}]=e;if(!t.executablePath||!t.executableName){this.logger.error(`Executable path or name not found, could not check for build hash`,void 0,t.identifier);return}let n=mt(t.identifier),r=new AbortController;this.pendingBuilds.set(t.processId,r);try{await this.checkBuild(t.executablePath,t.executableName,t,n,r.signal)}finally{this.pendingBuilds.delete(t.processId)}}async checkBuild(e,t,n,r,i){let a;try{a=await n.computeBuildHash()}catch(e){this.logger.error(`Error hashing the game build`,e);return}if(i.aborted){this.logger.log(`Game closed while hashing the build, skipping the upload`);return}this.logger.log(`Executable Path`,e),this.logger.log(`Executable Name`,t),this.logger.log(`Build Hash`,a);let o=!1;try{o=(await ht(r,a)).data.upload}catch(e){this.logger.error(`Error checking game build hash`,e);return}if(!o){this.logger.log(`Build hash already exists, skipping upload`);return}if(i.aborted){this.logger.log(`Game closed before the build was read, skipping the upload`);return}let s=new ae;s.file(t,await ne(e));let c=await s.generateAsync({type:`blob`});try{this.logger.log(`Uploading build (size: `,c.size,` bytes)`);let e=new L(c,{chunkSizeMb:25,maxConcurrent:1}),t=await gt(r,{build_hash:a,chunk_count:e.totalChunks,file_size_bytes:c.size});await e.chunk(async(e,n)=>{this.logger.log(`Uploading chunk`,n),await _t(r,{chunk:e,build_hash:a,chunk_index:n,upload_token:t.data.upload_token})}),this.logger.log(`Build uploaded successfully`)}catch(e){bt(e)?xt(e.response)?this.logger.error(`Error uploading build hash, api error`,e):this.logger.error(`Error uploading build hash, request error`,e):this.logger.error(`Error uploading build hash, unknown error`,e)}}}),Kt=j(class extends We{constructor(){super(`CampaignManager`)}async check(e){let t=h.join(ve(e),`campaign_code.txt`);try{let e=(await E.readFile(t,`utf-8`)).trim().replace(/ \(\d+\)/g,``);e&&(this.logger.log(`UTM campaign code found`,e),q.getInstance().track(`utm_attribution`,{campaign_code:e}),q.getInstance().flush())}catch{}}}),qt=new M({path:f.normalize(`${process.env.APPDATA||process.env.HOME||`.`}/.overlayed/config.json`),default:void 0,schema:t({Account:n({email:`string`,apiKey:`string`,"applicationId?":`string`,"baseUrl?":`string`})}).type({currentAccount:`Account | undefined`,accounts:`Account[]`}).or(`undefined`)});function Jt(e,t){let n=t.applicationId===void 0||e.applicationId===void 0||e.applicationId===t.applicationId,r=(e.baseUrl??`https://api.overlayed.gg`)===t.baseUrl;return n&&r}function Yt(e){let{currentAccount:t,accounts:n,expected:r}=e;if(t&&Jt(t,r))return{account:t,source:`current`};let i=n.find(e=>Jt(e,r));if(i)return{account:i,source:`other`}}function Xt(e,t){return`${e}:${t}`}function Zt(e,t,n){return e.reduce((e,r)=>{let i=r.key;return e[i]={on(e,n){let r=Xt(i,e),a=t.get(r)??new Set;a.add(n),t.set(r,a)},onAny(e){let n=Xt(i,`*`),r=t.get(n)??new Set;r.add(e),t.set(n,r)},off(e,n){let r=Xt(i,e),a=t.get(r);a&&(a.delete(n),a.size===0&&t.delete(r))},offAny(e){let n=Xt(i,`*`),r=t.get(n);r&&(r.delete(e),r.size===0&&t.delete(n))},readyForGameEvents:()=>{n.emit(`flushEvents`,i)}},e},{})}function Qt(){let e=me.getInstance(),t=J.getInstance();return{on:(n,r)=>{switch(n){case`fatal`:e.on(`fatal`,r);break;case`error`:e.on(`error`,r);break;case`warning`:e.on(`warning`,r);break;case`gameLaunch`:t.on(`gameLaunch`,r);break;case`gameClose`:t.on(`gameClose`,r);break;case`gameReady`:t.on(`gameReady`,r);break;default:throw Error(`Event type not implemented ${n}`,{cause:[n,r]})}},off:(n,r)=>{switch(n){case`fatal`:e.off(`fatal`,r);break;case`error`:e.off(`error`,r);break;case`warning`:e.off(`warning`,r);break;case`gameLaunch`:t.off(`gameLaunch`,r);break;case`gameClose`:t.off(`gameClose`,r);break;case`gameReady`:t.off(`gameReady`,r);break;default:throw Error(`Event type not implemented ${n}`,{cause:[n,r]})}}}}const $t=new Map([[1,`LeftButton`],[2,`RightButton`],[3,`Cancel`],[4,`MiddleButton`],[5,`ExtraButton1`],[6,`ExtraButton2`],[8,`Backspace`],[9,`Tab`],[12,`Clear`],[13,`Enter`],[16,`ShiftLeft`],[17,`ControlLeft`],[18,`AltLeft`],[19,`Pause`],[20,`CapsLock`],[21,`KanaMode`],[23,`JunjaMode`],[24,`Finalize`],[25,`HanjaMode`],[27,`Escape`],[28,`Convert`],[29,`NonConvert`],[30,`Accept`],[31,`ModeChange`],[32,`Space`],[33,`PageUp`],[34,`PageDown`],[35,`End`],[36,`Home`],[37,`ArrowLeft`],[38,`ArrowUp`],[39,`ArrowRight`],[40,`ArrowDown`],[41,`Select`],[42,`PrintScreen`],[43,`Execute`],[44,`Snapshot`],[45,`Insert`],[46,`Delete`],[47,`Help`],[48,`Digit0`],[49,`Digit1`],[50,`Digit2`],[51,`Digit3`],[52,`Digit4`],[53,`Digit5`],[54,`Digit6`],[55,`Digit7`],[56,`Digit8`],[57,`Digit9`],[65,`KeyA`],[66,`KeyB`],[67,`KeyC`],[68,`KeyD`],[69,`KeyE`],[70,`KeyF`],[71,`KeyG`],[72,`KeyH`],[73,`KeyI`],[74,`KeyJ`],[75,`KeyK`],[76,`KeyL`],[77,`KeyM`],[78,`KeyN`],[79,`KeyO`],[80,`KeyP`],[81,`KeyQ`],[82,`KeyR`],[83,`KeyS`],[84,`KeyT`],[85,`KeyU`],[86,`KeyV`],[87,`KeyW`],[88,`KeyX`],[89,`KeyY`],[90,`KeyZ`],[91,`MetaLeft`],[92,`MetaRight`],[93,`ContextMenu`],[95,`Sleep`],[96,`Numpad0`],[97,`Numpad1`],[98,`Numpad2`],[99,`Numpad3`],[100,`Numpad4`],[101,`Numpad5`],[102,`Numpad6`],[103,`Numpad7`],[104,`Numpad8`],[105,`Numpad9`],[106,`NumpadMultiply`],[107,`NumpadAdd`],[108,`NumpadSeparator`],[109,`NumpadSubtract`],[110,`NumpadDecimal`],[111,`NumpadDivide`],[112,`F1`],[113,`F2`],[114,`F3`],[115,`F4`],[116,`F5`],[117,`F6`],[118,`F7`],[119,`F8`],[120,`F9`],[121,`F10`],[122,`F11`],[123,`F12`],[124,`F13`],[125,`F14`],[126,`F15`],[127,`F16`],[128,`F17`],[129,`F18`],[130,`F19`],[131,`F20`],[132,`F21`],[133,`F22`],[134,`F23`],[135,`F24`],[144,`NumLock`],[145,`ScrollLock`],[146,`NEC_Equal`],[147,`Fujitsu_Masshou`],[148,`Fujitsu_Touroku`],[149,`Fujitsu_Loya`],[150,`Fujitsu_Roya`],[160,`ShiftLeft`],[161,`ShiftRight`],[162,`ControlLeft`],[163,`ControlRight`],[164,`AltLeft`],[165,`AltRight`],[166,`BrowserBack`],[167,`BrowserForward`],[168,`BrowserRefresh`],[169,`BrowserStop`],[170,`BrowserSearch`],[171,`BrowserFavorites`],[172,`BrowserHome`],[173,`VolumeMute`],[174,`VolumeDown`],[175,`VolumeUp`],[176,`MediaTrackNext`],[177,`MediaTrackPrevious`],[178,`MediaStop`],[179,`MediaPlayPause`],[180,`LaunchMail`],[181,`LaunchMediaSelect`],[182,`LaunchApplication1`],[183,`LaunchApplication2`],[186,`OEM_1`],[187,`Equal`],[188,`Comma`],[189,`Minus`],[190,`Period`],[191,`Slash`],[192,`Backquote`],[219,`BracketLeft`],[220,`Backslash`],[221,`BracketRight`],[222,`Quote`],[223,`IntlRo`],[225,`OEM_AX`],[226,`IntlBackslash`],[227,`ICO_HELP`],[228,`ICO_00`],[229,`Process`],[230,`ICO_CLEAR`],[231,`Packet`],[233,`OEM_Reset`],[234,`OEM_Jump`],[235,`OEM_PA1`],[236,`OEM_PA2`],[237,`OEM_PA3`],[238,`OEM_WS_Ctrl`],[239,`OEM_CU_Sel`],[240,`OEM_ATTN`],[241,`OEM_Finish`],[242,`OEM_Copy`],[243,`OEM_Auto`],[244,`OEM_ENLW`],[245,`BackTab`],[246,`ATTN`],[247,`CRSel`],[248,`EXSel`],[249,`EREOF`],[250,`MediaPlay`],[251,`Zoom`],[252,`Noname`],[253,`PA1`],[254,`OEM_Clear`]]),en=new Map($t.entries().map(([e,t])=>[t,e])),tn=n({"[string]":{keys:`string[]`,mode:n(`'toggle' | 'hold'`).pipe(e=>e??`toggle`)}});var nn=class extends Ge{preferencesKeybindToCallbacks=new Map;pressedKeys=new Set;activeKeybinds=new Set;triggeredToggleKeybinds=new Set;boundHandleKeyboardFocus=this.handleKeyboardFocus.bind(this);boundHandleKeyDown=this.handleKeyDown.bind(this);boundHandleKeyUp=this.handleKeyUp.bind(this);keybindsFile;keybindListeningPaused=!1;constructor(e){super(`KeybindManager`),this.keybindsFile=new M({path:Ot([`keybinds.json`]),schema:tn,default:e})}init(){super.init();let e=K.getInstance().getInterface(`OGG_SIEGE`);e.instance.on(`keyboardFocus`,this.boundHandleKeyboardFocus),e.instance.on(`keyDown`,this.boundHandleKeyDown),e.instance.on(`keyUp`,this.boundHandleKeyUp)}async onKeybindToggled(e,t){let n=this.preferencesKeybindToCallbacks.get(e)??{toggle:[],down:[],up:[]};n.toggle.push(t),this.preferencesKeybindToCallbacks.set(e,n)}async onKeybindDown(e,t){let n=this.preferencesKeybindToCallbacks.get(e)??{toggle:[],down:[],up:[]};n.down.push(t),this.preferencesKeybindToCallbacks.set(e,n)}async onKeybindUp(e,t){let n=this.preferencesKeybindToCallbacks.get(e)??{toggle:[],down:[],up:[]};n.up.push(t),this.preferencesKeybindToCallbacks.set(e,n)}async updateKeybind(e,t){this.keybindsFile.set({[e]:t})}async updateKeybinds(e){let t=Object.fromEntries(Object.entries(e).filter(([e,t])=>t!==void 0));this.keybindsFile.set({...this.keybindsFile.get(),...t})}getConfig(){return this.keybindsFile.get()}destroy(){let e=K.getInstance().getInterface(`OGG_SIEGE`);e.instance.off(`keyboardFocus`,this.boundHandleKeyboardFocus),e.instance.off(`keyDown`,this.boundHandleKeyDown),e.instance.off(`keyUp`,this.boundHandleKeyUp),super.destroy()}handleKeyDown(e){if(this.keybindListeningPaused)return;let t=$t.get(e.key);if(!t){this.logger.error(`Unknown key down`,e);return}this.pressedKeys.add(t),this.checkKeybindings()}handleKeyboardFocus(){this.pressedKeys.clear(),this.activeKeybinds.clear(),this.triggeredToggleKeybinds.clear()}async handleKeyUp(e){if(this.keybindListeningPaused)return;let t=$t.get(e.key);if(!t)return;this.pressedKeys.delete(t);let n=this.keybindsFile.get();for(let[e]of this.preferencesKeybindToCallbacks.entries())n[e].keys.includes(t)&&this.triggeredToggleKeybinds.delete(e);this.checkKeybindUps()}async checkKeybindUps(){let e=this.keybindsFile.get();for(let[t,n]of this.preferencesKeybindToCallbacks.entries()){if(!n.up||n.up.length===0)continue;let r=e[t];if(this.activeKeybinds.has(t)&&r.keys.some(e=>!this.pressedKeys.has(e))){this.activeKeybinds.delete(t);for(let e of n.up)e();this.logger.log(`Keybind up triggered`,this.getKeybindToString(r))}}}async checkKeybindings(){let e=this.keybindsFile.get();for(let[t,n]of this.preferencesKeybindToCallbacks.entries()){let r=e[t];if(r.keys.length===this.pressedKeys.size&&r.keys.every(e=>en.has(e)?this.pressedKeys.has(e):!1)){this.triggerKeybind(r,n,t);return}}for(let[t,n]of this.preferencesKeybindToCallbacks.entries()){let r=e[t];r.keys.every(e=>en.has(e)?this.pressedKeys.has(e):(this.logger.error(`Unknown key`,e,r),!1))&&this.triggerKeybind(r,n,t)}}triggerKeybind(e,t,n){let r=e.mode;if(r===`toggle`&&t.toggle&&t.toggle.length>0&&!this.triggeredToggleKeybinds.has(n)){let r;for(let e of t.toggle){let t=e();typeof t==`string`&&r===void 0&&(r=t)}this.triggeredToggleKeybinds.add(n),this.logger.log(r?`Keybind pressed rejected: ${r}`:`Keybind pressed accepted`,this.getKeybindToString(e))}if(r===`hold`&&t.down&&t.down.length>0&&!this.activeKeybinds.has(n)){let r;for(let e of t.down){let t=e();if(typeof t==`string`){r=t;break}}r?this.logger.log(`Keybind down rejected: ${r}`,this.getKeybindToString(e)):(this.activeKeybinds.add(n),this.logger.log(`Keybind down accepted`,this.getKeybindToString(e)))}}getKeybindToString(e){return`(${e.keys.join(`+`)}${e.mode?` ${e.mode}`:``})`}};function rn(e){let t=new nn(e),n={};for(let r in e)n[r]={on:(e,n)=>{switch(e){case`down`:t.onKeybindDown(r,n);break;case`up`:t.onKeybindUp(r,n);break;case`toggle`:t.onKeybindToggled(r,n);break;default:throw Error(`Event type not implemented ${e}`,{cause:[e,n]})}}};let r={...n,getConfig:()=>t.getConfig(),pauseKeybindListening:()=>{t.keybindListeningPaused=!0},resumeKeybindListening:()=>{t.keybindListeningPaused=!1},updateKeybind:(e,n)=>{t.updateKeybind(e,n)},updateKeybinds:e=>{t.updateKeybinds(e)}};return t.init(),O.on(`quit`,()=>{t.destroy()}),r}function Y(){return K.getInstance().getInterface(`OGG_SIEGE`)}function an(){let e=J.getInstance(),t=me.getInstance(),n=q.getInstance();if(!O.isPackaged){I.getInstance().info(`Cortex is disabled in development`),n.enabled=!1;return}try{n.meta=on()}catch(e){I.getInstance().error(`Failed to setup cortex`,e);return}e.on([`gameReady`,`gameClose`],()=>{n.meta||=on(),n.meta.in_game=e.isInGame}),t.on(`fatal`,e=>{n.track(`fatal`,{message:e.message,code:e.code,data:JSON.stringify(e.data)})}),t.on(`error`,e=>{n.track(`error`,{code:e.code,message:e.message,data:JSON.stringify(e.data)})}),t.on(`warning`,e=>{n.track(`warning`,{message:e.message,code:e.code,data:JSON.stringify(e.data)})})}function on(){if(!global.OVERLAYED_META.release.id)throw Error(`Release ID is required`);return{app_id:global.OVERLAYED.APPLICATION_ID,user_id:G(),release_id:global.OVERLAYED_META.release.id,app_channel:global.OVERLAYED.APP_BUILD_CHANNEL,app_version:global.OVERLAYED.APP_VERSION,package_version:global.OVERLAYED.PACKAGE_VERSION,frontend_version:global.OVERLAYED.FRONTEND_VERSION,frontend_release_id:global.OVERLAYED.FRONTEND_RELEASE_ID,session_id:global.OVERLAYED.sessionId,in_game:!1}}const sn=new Set([`http:`,`https:`]);function cn(){let e=global.OVERLAYED_META?.application?.siteUrl;if(e&&URL.canParse(e))return new URL(e).origin}function ln(e){return URL.canParse(e)?new URL(e):void 0}function un(e){return e===`mouseDown`}function dn(e){let t,n=()=>{t=Date.now()};return e.on(`before-input-event`,(e,t)=>{t.type===`keyDown`&&!t.isAutoRepeat&&n()}),e.on(`input-event`,(e,t)=>{un(t.type)&&n()}),e.on(`before-mouse-event`,(e,t)=>{un(t.type)&&n()}),{isActive:(e=-1/0)=>t!==void 0&&t>=e&&Date.now()-t<=5e3,consume:()=>{t=void 0}}}function fn(e,t){return pn(e.webContents,t),e}function pn(e,t,n){let{allowedHosts:r=[],windowOpenHandler:i,logger:a}=t,{shell:o}=global.OVERLAYED.electron,s=cn(),c=n===void 0?void 0:ln(n),l=c&&sn.has(c.protocol)?c.origin:void 0,u=dn(e),d=t=>{let n=ln(e.getURL());return n?.protocol===`file:`&&t.protocol===`file:`?!0:sn.has(t.protocol)?s&&t.origin===s||l&&t.origin===l||r.includes(t.host)?!0:n!==void 0&&sn.has(n.protocol)&&t.origin===n.origin:!1},f=(e,t,n)=>{e.preventDefault(),a.warn(`[navigation-guard] Blocked main-frame navigation to ${t} (${n})`),q.getInstance().track(`navigation_blocked`,{url:t,reason:n})},p=n!==void 0,m=n!==void 0;e.on(`will-navigate`,e=>{let t=ln(e.url);if(t&&d(t)){p=!0;return}f(e,e.url,t?`cross_origin`:`unparseable`)}),e.on(`will-redirect`,e=>{if(!e.isMainFrame||!p)return;let t=ln(e.url);t&&d(t)||f(e,e.url,t?`cross_origin_redirect`:`unparseable`)}),e.on(`did-start-navigation`,e=>{e.isMainFrame&&!e.isSameDocument&&(p=m,m=!1)});let h,g=()=>{let e=Date.now();if(!u.isActive())return h=e,{action:`deny`,reason:`no_user_activation`};let t=(h??-1/0)+1e4;return u.isActive(t)?{action:`external`}:{action:`deny`,reason:`popup_cooldown`}},_=e=>{let t=i?.({url:e});if(t===`allow`)return{action:`allow`};if(t===`deny`)return{action:`deny`,reason:`application`};let n=ln(e);return n?t===`external`?sn.has(n.protocol)?{action:`external`}:{action:`deny`,reason:`unsupported_scheme`}:d(n)?{action:`allow`}:sn.has(n.protocol)?g():{action:`deny`,reason:`unsupported_scheme`}:{action:`deny`,reason:`unparseable`}},v=(e,n)=>{let{url:r}=e,i=_(r);if(i.action===`deny`)return a.warn(`[navigation-guard] Denied window.open to ${r} (${i.reason})`),q.getInstance().track(`window_open_denied`,{url:r,reason:i.reason}),{action:`deny`};let s=n?.(e);if(s?.action===`deny`)return s;if(i.action===`allow`){a.info(`[navigation-guard] Allowing in-app window for ${r}`);let e=s?.createWindow;return!s||!e?s??{action:`allow`}:{...s,createWindow:n=>{let i=e(n);return pn(i,t,r),i}}}return u.consume(),a.info(`[navigation-guard] Opening external url in system browser: ${r}`),q.getInstance().track(`window_open_external`,{url:r}),o.openExternal(r).catch(e=>{a.warn(`[navigation-guard] Failed to open external url ${r}: ${String(e)}`)}),{action:`deny`}},ee=e.setWindowOpenHandler.bind(e);e.setWindowOpenHandler=e=>{ee(t=>v(t,e))},ee(e=>v(e)),e.on(`did-create-window`,(e,n)=>{pn(e.webContents,t,n.url)})}const mn=j(class extends Ge{CHECK_INTERVAL=1e3*60*15;RETRY_INTERVAL=1e3*15;_updateCheckInterval=null;_latestCheckResponse=null;_activeCheckResponse=null;initialReleaseId=null;get manualUpdatesEnabled(){return this.options?.manualUpdates??!1}get activeReleaseId(){return this._activeCheckResponse?.release_id??this.initialReleaseId}constructor(){super(`SiteManager`)}init(e){super.init(e),e?.manualUpdates&&this.enableManualUpdates()}destroy(){super.destroy(),this._updateCheckInterval&&=(clearInterval(this._updateCheckInterval),null)}allowSiteUpdateOnNextLoad(){if(!this.options?.manualUpdates){this.logger.warn(`allowSiteUpdateOnNextLoad called but manual updates are disabled`);return}if(!this._latestCheckResponse){this.logger.warn(`allowSiteUpdateOnNextLoad called but no update has been checked yet`);return}if(this._activeCheckResponse?.release_id===this._latestCheckResponse.release_id){this.logger.warn(`allowSiteUpdateOnNextLoad called but theres no update available`);return}this._activeCheckResponse=this._latestCheckResponse,q.getInstance().track(`site_update_applied`,{version:this._latestCheckResponse.version,release_id:this._latestCheckResponse.release_id}),this.setFrontendCortexMeta(this._latestCheckResponse.release_id,this._latestCheckResponse.version)}setFrontendCortexMeta(e,t){let n=q.getInstance();n.meta||=on(),e&&(global.OVERLAYED.FRONTEND_RELEASE_ID=e,n.meta.frontend_release_id=e),t&&(global.OVERLAYED.FRONTEND_VERSION=t,n.meta.frontend_version=t),e&&t&&n.track(`frontend_version_changed`,{version:t,release_id:e})}enableManualUpdates(){this.logger.log(`Enabling manual site updates`),this.checkForUpdates(),this._updateCheckInterval=setInterval(()=>{this.checkForUpdates(!0)},this.CHECK_INTERVAL)}async checkForUpdates(e=!1){let t=global.OVERLAYED_META?.application?.siteUrl;if(!t){this.logger.log(`No siteUrl configured, skipping check`);return}q.getInstance().track(`site_check_for_update`,{});try{let n=new URL(`/check`,t).toString();this.logger.log(`Checking site URL`,n);let r={"Overlayed-User-Agent":Ze({package_version:global.OVERLAYED.PACKAGE_VERSION,application_id:global.OVERLAYED.APPLICATION_ID,application_version:global.OVERLAYED.APP_VERSION}),"Overlayed-Cortex-User-Id":global.OVERLAYED_RUNTIME.userId},i=Nt();i&&(r[`Overlayed-Access-Token`]=i);let a=global.OVERLAYED_META.release.channelId;a&&(r[`Overlayed-Channel-Id`]=a);let o=await fetch(n,{headers:r});if(!o.ok){this.logger.warn(`Site check failed with status`,o.status),q.getInstance().track(`site_check_error`,{status:o.status}),e&&this.scheduleRetry();return}let s=await o.json();if(this.logger.log(`Site check response`,s),!s.release_id){this.logger.error(`Site check response missing release_id`);return}if(!this._latestCheckResponse){this._latestCheckResponse=s;return}return this._latestCheckResponse.release_id===s.release_id?void 0:(this.logger.log(`New site version detected`,s),this._latestCheckResponse=s,q.getInstance().track(`site_update_ready`,{version:s.version,release_id:s.release_id}),this.emit(`siteUpdateReady`,{releaseId:s.release_id,version:s.version}),s)}catch(e){let t=e instanceof Error?e.message:String(e);q.getInstance().track(`site_check_error`,{message:t}),this.logger.error(`Site check failed`,{error:e,message:t}),this.scheduleRetry()}}scheduleRetry(){setTimeout(()=>{this.checkForUpdates()},this.RETRY_INTERVAL)}}),hn=j(Se,`browser-windows.log`);let gn;function _n(){return gn||(gn=class e extends global.OVERLAYED.electron.BrowserWindow{static session=void 0;constructor(t){let n=e.resolveCustomOptions(t);super(n)}static resolveCustomOptions(t){let n=global.OVERLAYED_META,r=global.OVERLAYED_RUNTIME;return{...t,webPreferences:{...t.webPreferences,session:e.getSession(),additionalArguments:[...t.webPreferences?.additionalArguments||[],...global.OVERLAYED.electron.app.isPackaged?[]:[`--overlayed-meta=${JSON.stringify(n)}`],`--overlayed-runtime=${JSON.stringify(r)}`]}}}static getSession(){if(!global.OVERLAYED_META?.application?.siteUrl)return;if(e.session)return e.session;e.session=global.OVERLAYED.electron.session.fromPartition(`persist:overlayed-${global.OVERLAYED.APPLICATION_ID}`);let t=mn.getInstance(),n=Ze({package_version:global.OVERLAYED.PACKAGE_VERSION,application_id:global.OVERLAYED.APPLICATION_ID,application_version:global.OVERLAYED.APP_VERSION}),r={urls:[global.OVERLAYED_META.application.siteUrl+`/*`]},i=global.OVERLAYED_RUNTIME.userId;return e.session.webRequest.onBeforeSendHeaders(r,(e,r)=>{let a=Nt();a&&(e.requestHeaders[`Overlayed-Access-Token`]=a);let o=global.OVERLAYED_META.release.channelId;o&&(e.requestHeaders[`Overlayed-Channel-Id`]=o),t.manualUpdatesEnabled&&t.activeReleaseId&&(e.requestHeaders[`Overlayed-Release-Id`]=t.activeReleaseId),e.requestHeaders[`Overlayed-Cortex-User-Id`]=i,e.requestHeaders[`Overlayed-User-Agent`]=n,r({requestHeaders:e.requestHeaders})}),t.manualUpdatesEnabled&&e.session.webRequest.onHeadersReceived(r,(e,n)=>{if(t.initialReleaseId){n(e);return}let r=e.responseHeaders?.[`Overlayed-Release-Id`]?.[0];r&&(t.initialReleaseId=ct(r));let i=e.responseHeaders?.[`Overlayed-Release-Version`]?.[0];t.setFrontendCortexMeta(r,i),n(e)}),e.session}},gn)}function vn(e){function t(t,n){let r=hn.getInstance();return fn(t,{...e,logger:r}),t.once(`closed`,()=>{t.isDestroyed()||q.getInstance().track(`window_closed`,{url:t.webContents.getURL(),in_game:n})}),t.on(`unresponsive`,()=>{t.isDestroyed()||q.getInstance().track(`window_unresponsive`,{url:t.webContents.getURL(),in_game:n})}),t.webContents.on(`console-message`,(e,n,i,a,o)=>{let s=t.isDestroyed()?`destroyed`:t.webContents.getURL();r[n===3?`error`:n===2?`warn`:`log`](`[${s}] [${o}:${a}] ${i}`)}),q.getInstance().track(`window_created`,{url:t.webContents.getURL(),in_game:n}),t}return{getProductionSiteUrl:()=>{let e=global.OVERLAYED_META.application.siteUrl;return URL.canParse(e)?new URL(e):new URL(`https://default.overlayedapps.com`)},createWindow:e=>t(new(_n())(e),!1),createInGameWindow:e=>{let n=_n();return t(Y().instance.newWindowInternal(n,e),!0)},on:(e,t)=>Y().instance.on(e,t),off:(e,t)=>Y().instance.off(e,t),once:(e,t)=>Y().instance.once(e,t),addListener:(e,t)=>Y().instance.addListener(e,t),removeListener:(e,t)=>Y().instance.removeListener(e,t),removeAllListeners:()=>Y().instance.removeAllListeners(),prependListener:(e,t)=>Y().instance.prependListener(e,t),prependOnceListener:(e,t)=>Y().instance.prependOnceListener(e,t),getActiveGameInfo:()=>{let e=Y(),t=Ne.getInstance();return{resolution:e.resolution,isConnected:t.hasConnection}}}}const yn=j(class extends We{renderInterface;globalCursorOverrideCount=new Set;globalMouseBlockCount=new Set;globalKeyboardBlockCount=new Set;keyInputBlocks={};constructor(e){super(`OverridesManager`),this.renderInterface=K.getInstance().getInterface(e)}scope(e){return{setGlobalCursorOverride:t=>this.setGlobalCursorOverride(e,t),setGlobalMouseBlock:t=>this.setGlobalMouseBlock(e,t),setGlobalKeyboardBlock:t=>this.setGlobalKeyboardBlock(e,t),setKeyInputBlock:(t,n)=>this.setKeyInputBlock(e,t,n)}}setGlobalCursorOverride(e,t){t?this.globalCursorOverrideCount.add(e):this.globalCursorOverrideCount.delete(e),t&&this.globalCursorOverrideCount.size===1?this.renderInterface.instance.setGlobalCursorOverride(!0):!t&&this.globalCursorOverrideCount.size===0&&this.renderInterface.instance.setGlobalCursorOverride(!1)}setGlobalMouseBlock(e,t){t?this.globalMouseBlockCount.add(e):this.globalMouseBlockCount.delete(e),t&&this.globalMouseBlockCount.size===1?this.renderInterface.instance.setGlobalMouseBlock(!0):!t&&this.globalMouseBlockCount.size===0&&this.renderInterface.instance.setGlobalMouseBlock(!1)}setGlobalKeyboardBlock(e,t){t?this.globalKeyboardBlockCount.add(e):this.globalKeyboardBlockCount.delete(e),t&&this.globalKeyboardBlockCount.size===1?this.renderInterface.instance.setGlobalKeyboardBlock(!0):!t&&this.globalKeyboardBlockCount.size===0&&this.renderInterface.instance.setGlobalKeyboardBlock(!1)}setKeyInputBlock(e,t,n){this.keyInputBlocks[t]||(this.keyInputBlocks[t]=new Set),n?this.keyInputBlocks[t].add(e):this.keyInputBlocks[t].delete(e),n&&this.keyInputBlocks[t].size===1?this.renderInterface.instance.setKeyInputBlock(t,!0):!n&&this.keyInputBlocks[t].size===0&&this.renderInterface.instance.setKeyInputBlock(t,!1)}},`OGG_SIEGE`);function bn(){return{scope:e=>yn.getInstance().scope(e),raw:{setGlobalMouseBlock:e=>Y().instance.setGlobalMouseBlock(e),setGlobalKeyboardBlock:e=>Y().instance.setGlobalKeyboardBlock(e),setGlobalCursorOverride:e=>Y().instance.setGlobalCursorOverride(e),setKeyInputBlock:(e,t)=>Y().instance.setKeyInputBlock(e,t),getGlobalMouseBlock:()=>Y().instance.getGlobalMouseBlock(),getGlobalKeyboardBlock:()=>Y().instance.getGlobalKeyboardBlock(),getGlobalCursorOverride:()=>Y().instance.getGlobalCursorOverride(),getKeyInputBlock:e=>Y().instance.getKeyInputBlock(e)}}}function xn(){return{track:(e,t)=>{q.getInstance().track(`custom__${String(e)}`,t)}}}function Sn(){return{registerWindow:()=>{}}}const Cn=/(\d{4})-(\d{2})-(\d{2})\.log$/;function wn(e){let t=e.match(Cn);if(!t)return!1;let[,n,r,i]=t,a=Number(n),o=Number(r),s=Number(i);if(o<1||o>12||s<1||s>31)return!1;let c=new Date(a,o-1,s);if(isNaN(c.getTime())||c.getFullYear()!==a||c.getMonth()!==o-1||c.getDate()!==s)return!1;let l=new Date;return l.setDate(l.getDate()-7),l.setHours(0,0,0,0),c>=l}function Tn(e){let{silent:t=!1,additionalFiles:n}=e??{},r=ye(global.OVERLAYED.APPLICATION_ID),i=Ce(r,{recursive:!0}),a=_e(),o=Ce(a,{recursive:!0});t||(I.getInstance().info(`Logs path: `,r),I.getInstance().info(`Overlayed logs path: `,a));let s=new ae;return i.forEach(([e,n])=>{t||I.getInstance().info(`Zipping: `,n);let r=x(n);s.file(g(n),r,{compression:`DEFLATE`})}),o.forEach(([e,n])=>{if(!wn(g(n))){t||I.getInstance().info(`Skipping old/unrecognized log: `,n);return}t||I.getInstance().info(`Zipping: `,n);let r=x(n);s.file(g(n),r,{compression:`DEFLATE`})}),n&&Object.entries(n).forEach(([e,n])=>{t||I.getInstance().info(`Zipping extra file: `,e),s.file(e,n,{compression:`DEFLATE`})}),s}async function En(e,t,n){let r=global.OVERLAYED_META.release.id?ct(global.OVERLAYED_META.release.id):void 0,i=G();return ot(global.OVERLAYED.APPLICATION_ID,{file:Buffer.from(n,`base64`),data:{release_id:r,type:e,cortex_user_id:i,...t}}).then(e=>(I.getInstance().info(`Feedback submitted`,e),e.data.id)).catch(e=>{console.error(JSON.stringify(e,null,2)),I.getInstance().error(`Failed to submit feedback`,e)})}function Dn(e){let t=new Se(`app.log`);return t.init(global.OVERLAYED.APPLICATION_ID,e.debug),{scope:e=>t.scope(e),info:e=>t.info(e),warn:e=>t.warn(e),error:e=>t.error(e),debug:e=>t.debug(e),submitFeedback:async(e,t,n)=>{let r=global.OVERLAYED_META.release.id?ct(global.OVERLAYED_META.release.id):void 0;return r&&O.isPackaged&&q.getInstance().track(e===`bug_report`?`bug_report_submitted`:`suggestion_submitted`,{release_id:r}),await En(e,t,await Tn(n).generateAsync({type:`base64`}))},getLogsZip:e=>Tn(e)}}const On=1e3;function kn(e,t,r,i,a){let o=Ne.getInstance(),s=I.getInstance().scope(`SetupPipeServer`);s.log(`Initializing`);function c(e,t){let n=r.get(t);if(!n)r.set(t,[e]);else{if(n.length>=On){me.getInstance().warn(`Event buffer full, removing oldest event`,`EVENT_BUFFER_FULL`,{summary:`Event buffer overflow for module ${t}. Buffer size: ${n.length}, max: ${On}`});return}n.push(e)}}function l(e,r,i){let o=i.events.event,l=o(e);if(l instanceof n.errors){if(`type`in l.byPath)return;s.warn(`Invalid event`,{summary:l.summary}),q.getInstance().track(`invalid_game_event`,{game:r.game,type:r.type,summary:l.summary}),me.getInstance().warn(`Invalid event`,`INVALID_EVENT`,{summary:l.summary});return}if(!a[i.key]){c(e,i.key);return}if(l.type===`unsupported_game_version`){let{content:e}=l;q.getInstance().track(`unsupported_game_version`,{game:l.game,hash:e.processHash,version:e.gameVersion})}let u=Xt(i.key,l.type),d=Xt(i.key,`*`),f=t.get(u),p=t.get(d),m=[...Array.from(f??[]),...Array.from(p??[])];if(m.length===0){s.info(`No handlers found for event`,{event:l});return}m.forEach(e=>{e(l)})}function u(t){s.info(t);let r=kt(t);if(r instanceof n.errors){q.getInstance().track(`invalid_game_event`,{}),me.getInstance().warn(`Invalid event`,`INVALID_EVENT`,{summary:r.summary});return}let i=He.includes(r.type),a=e.modules.find(e=>e.key===`universal`),o=e.modules.find(e=>e.key===r.game),c=[];if(i&&a&&c.push(a),o&&o!==a&&(!i||r.type in o.events)&&c.push(o),c.length===0){s.warn(`Invalid module`,{module:i?`universal`:r.game});return}c.forEach(e=>l(t,r,e))}return i.on(`flushEvents`,t=>{if(a[t])return;a[t]=!0;let i=r.get(t);if(!i)return;I.getInstance().info(`Flushing ${i.length} events for module ${t}`);let o=e.modules.find(e=>e.key===t);o&&i.forEach(e=>{let t=kt(e);t instanceof n.errors||l(e,t,o)}),r.delete(t)}),o.on(`data`,e=>e.forEach(u)),o.on(`error`,e=>{s.error(`Pipe server error`,e),me.getInstance().error(`Pipe server error`,`PIPE_SERVER_ERROR`,{error:e})}),o.on(`connected`,()=>{s.log(`Pipe server connected`)}),o.on(`disconnected`,()=>{s.log(`Pipe server disconnected`)}),o}const An=j(class extends Ge{FETCH_INTERVAL=1e3*60*10;_fetchInterval=null;_flags=new Map;_overrides=new Map;_defaults=new Map;_boundOnGameReady=this.onGameEvent.bind(this);_boundOnGameClose=this.onGameEvent.bind(this);_readyResolve;ready;constructor(){super(`FeatureFlagManager`),this.ready=new Promise(e=>{this._readyResolve=e}),this.fetchFlags(),this.setupInterval(),J.getInstance().on(`gameReady`,this._boundOnGameReady),J.getInstance().on(`gameClose`,this._boundOnGameClose)}destroy(){this._fetchInterval&&=(clearInterval(this._fetchInterval),null),J.getInstance().off(`gameReady`,this._boundOnGameReady),J.getInstance().off(`gameClose`,this._boundOnGameClose),super.destroy()}setDefaults(e){this._defaults=new Map(Object.entries(e))}async refresh(){await this.fetchFlags()}override(e,t){let n=this.get(e);this._overrides.set(e,t),n!==t&&(this.emit(e,t),this.emit(`updated`,!0))}clearOverride(e){if(!this._overrides.has(e))return;let t=this.get(e);this._overrides.delete(e);let n=this.get(e);t!==n&&(this.emit(e,n),this.emit(`updated`,!0))}clearOverrides(){if(this._overrides.size===0)return;let e=new Map;for(let t of this._overrides.keys())e.set(t,this.get(t));this._overrides.clear();let t=!1;for(let[n,r]of e){let e=this.get(n);r!==e&&(this.emit(n,e),t=!0)}t&&this.emit(`updated`,!0)}isOverridden(e){return this._overrides.has(e)}getAllOverrides(){return Object.fromEntries(this._overrides)}inspect(e){let t=this._overrides.get(e),n=this._flags.get(e),r=this._defaults.get(e);return{effective:t??n??r??!1,override:t,actual:n,default:r}}get(e){let t=this._overrides.get(e),n=this._flags.get(e),r=this._defaults.get(e);return t??n??r??!1}getAll(){let e=Object.fromEntries(this._defaults);for(let[t,n]of this._flags)e[t]=n;for(let[t,n]of this._overrides)e[t]=n;return e}onGameEvent(){this.fetchFlags()}setupInterval(){this._fetchInterval=setInterval(()=>{this.fetchFlags()},this.FETCH_INTERVAL)}async fetchFlags(){try{let e=J.getInstance().getActiveGames(),{data:t}=await H(global.OVERLAYED.APPLICATION_ID,{cortex_user_id:global.OVERLAYED_RUNTIME.userId,release_id:global.OVERLAYED_META.release.id??void 0,channel_id:global.OVERLAYED_META.release.channelId??void 0,active_games:e.map(e=>e.toString())??void 0}),n=new Map;for(let e of t)n.set(e.name,e.enabled);for(let[e,t]of n){if(this._overrides.has(e))continue;let n=this._flags.get(e);n!==void 0&&n!==t&&this.emit(e,t)}for(let[e]of this._flags)this._overrides.has(e)||n.has(e)||this.emit(e,this._defaults.get(e)??!1);this._flags=n;for(let e of this._defaults.keys())this._flags.has(e)||this.logger.warn(`Registered feature flag "${e}" was not found in the API response`);this.emit(`updated`,!0)}catch(e){this.logger.error(`Failed to fetch feature flags`,e)}finally{this._readyResolve()}}});function jn(e){let t=An.getInstance();return e&&t.setDefaults(e),{on:(e,n)=>t.on(e,n),off:(e,n)=>t.off(e,n),ready:t.ready,get:e=>t.get(e),getAll:()=>t.getAll(),refresh:()=>t.refresh(),override:(e,n)=>t.override(e,n),clearOverride:e=>t.clearOverride(e),clearOverrides:()=>t.clearOverrides(),isOverridden:e=>t.isOverridden(e),getAllOverrides:()=>t.getAllOverrides(),inspect:e=>t.inspect(e)}}function Mn(){let e=mn.getInstance();return{on:(t,n)=>{e.on(t,n)},off:(t,n)=>{e.off(t,n)},allowSiteUpdateOnNextLoad:()=>{e.allowSiteUpdateOnNextLoad()}}}const Nn=n({dismissedNotices:ce(n.string).array()}),Pn=j(class extends Ge{NOTICE_FETCH_INTERVAL=1e3*60*10;MAX_DISMISSED_NOTICES=100;_noticeFetchInterval=null;_notices=[];_noticesFile;_boundOnGameReady=this.onGameReady.bind(this);get notices(){let e=this._noticesFile.get().dismissedNotices;return this._notices.filter(t=>!e.includes(t.id))}constructor(){super(`NoticeManager`),this._noticesFile=this.getNoticesFile(),this._noticesFile.load(),this.fetchNotices(),this.setupNoticeInterval(),J.getInstance().on(`gameReady`,this._boundOnGameReady)}destroy(){this._noticeFetchInterval&&=(clearInterval(this._noticeFetchInterval),null),J.getInstance().off(`gameReady`,this._boundOnGameReady),super.destroy()}dismissNotice(e){let t=this._notices.find(t=>t.id===e);if(!t||!t.dismissible)return;let n=this._noticesFile.get().dismissedNotices;n.unshift(e),this._noticesFile.set({dismissedNotices:n.slice(0,this.MAX_DISMISSED_NOTICES)}),this.emitNoticesUpdated()}onGameReady(){this.fetchNotices()}setupNoticeInterval(){this._noticeFetchInterval=setInterval(()=>{this.fetchNotices()},this.NOTICE_FETCH_INTERVAL)}getNoticesFile(){return new M({path:Ot([`notices.json`]),schema:Nn,default:{dismissedNotices:[]}})}async fetchNotices(){let e=J.getInstance().getActiveGames();try{let{data:t}=await st(global.OVERLAYED.APPLICATION_ID,{release_id:global.OVERLAYED_META.release.id?ct(global.OVERLAYED_META.release.id):void 0,games:e});this._notices=t,this.emitNoticesUpdated()}catch(e){this.logger.error(`Failed to fetch notices`,e)}}emitNoticesUpdated(){this.emit(`noticesUpdated`,{notices:this.notices})}});function Fn(){let e=Pn.getInstance();return{on:(t,n)=>{e.on(t,n)},off:(t,n)=>{e.off(t,n)},dismissNotice:t=>{e.dismissNotice(t)},getNotices:()=>e.notices}}const{Provider:In}=oe;var Ln=class extends In{options;updater;logger=I.getInstance().scope(`OverlayedProvider`);constructor(e,t,n){super(n),this.options=e,this.updater=t}async getLatestVersion(){try{let e=await rt(this.options.application_id,{release_id:this.options.release_id,cortex_user_id:this.options.cortex_user_id,access_token:this.options.access_token,requested_channel:this.options.requested_channel});return this.logger.log(`checkApplicationRelease response`,e.data),q.getInstance().track(`update_release_check_success`,{version:e.data.release.version,channel:e.data.release.channel,fallback:!!e.data.fallback}),e.data.fallback&&this.logger.warn(`Update fallback detected, switching to default channel`),{path:``,sha512:e.data.download_hash??``,version:`${e.data.release.version}-${e.data.release.channel}`,releaseName:e.data.release.id,releaseDate:e.data.release.created_at,files:[{url:e.data.download_url,sha512:e.data.download_hash??``}]}}catch(e){let t=e instanceof Error?e.stack||e.message:String(e);throw q.getInstance().track(`update_release_check_error`,{message:t}),Error(`Unable to find the latest version (${this.options.release_id}), please ensure release exists. ${t}`)}}resolveFiles(e){return[{info:e.files[0],url:new URL(e.files[0].url)}]}};function Rn(e){return{provider:`custom`,updateProvider:Ln,...e}}function X(){return oe.autoUpdater}const zn=j(class extends Ge{DEFAULT_CHANNEL=`public`;TOKEN_REFRESH_INTERVAL=1e3*60*15;accessTokenFetcher=void 0;_tokenRefreshInterval=null;_downloadStarted=!1;constructor(){super(`UpdateManager`)}init(){super.init(),this.registerListenerForwarders(),this.setupTokenRefreshInterval(),X().disableDifferentialDownload=!0}destroy(){X().removeAllListeners(),this._tokenRefreshInterval&&=(clearInterval(this._tokenRefreshInterval),null),super.destroy()}setupTokenRefreshInterval(){this._tokenRefreshInterval=setInterval(()=>{this.checkAndRefreshToken()},this.TOKEN_REFRESH_INTERVAL)}async checkAndRefreshToken(){let e=global.OVERLAYED_META.release.channel;e!==this.DEFAULT_CHANNEL&&(this.logger.log(`Refreshing access token for channel`,e),await this.setAndGetLatestAccessToken(e))}async checkForUpdates(e){this.logger.log(`Starting checkForUpdates`);let t=e??global.OVERLAYED_META.release.channel;return q.getInstance().track(`check_for_update`,{channel:t}),this._downloadStarted=!1,await this.setAndGetLatestAccessToken(t),e?(X().allowDowngrade=!0,X().channel=e,this.setFeedUrl({requestedChannel:e})):(X().allowDowngrade=!1,X().channel=global.OVERLAYED_META.release.channel,this.setFeedUrl({})),this.logger.log(`Checking for updates`),X().checkForUpdates()}async switchChannel(e){return this.logger.log(`Switching channel`,e),q.getInstance().track(`update_channel_switch`,{from_channel:global.OVERLAYED_META.release.channel,to_channel:e}),this._downloadStarted=!1,await this.setAndGetLatestAccessToken(e),X().allowDowngrade=!0,X().channel=e,this.setFeedUrl({requestedChannel:e}),X().checkForUpdates()}quitAndInstall(e,t){this.logger.log(`quitAndInstall`,{isSilent:e,isForceRunAfter:t});let[n,r]=this.canUpdate();if(!n)throw this.logger.warn(`Cannot update`,{denialReason:r}),q.getInstance().track(`update_install_blocked`,{reason:r}),Error(r);return this.logger.log(`Quitting and installing`),q.getInstance().track(`update_install`,{}),X().quitAndInstall(e,t)}canUpdate(){return J.getInstance().isInGame?[!1,`User is in game`]:[!0,null]}downloadUpdate(e){return X().downloadUpdate(e)}setAccessTokenFetcher(e){this.accessTokenFetcher=e}async setAndGetLatestAccessToken(e){if(this.logger.log(`Fetching new token`),!this.accessTokenFetcher)return this.logger.warn(`accessTokenFetcher is not set, private channels will not work.`),Pt(null),null;if(this.logger.log(`Setting and getting latest access token for channel`,e),e===this.DEFAULT_CHANNEL)return this.logger.log(`Default channel, skipping`),Pt(null),null;if(e!==global.OVERLAYED_META.release.channel)return this.forceFetchNewAccessToken(e);this.logger.log(`Access token exists, checking expiration`);let t=Nt();if(t){let e=this.getAccessTokenExpirationDate(t);if(!e)this.logger.log(`Invalid token, setting to null`),Pt(null);else if(e.getTime()>=Date.now()+300*1e3)return this.logger.log(`Token is not expired, using it.`),t}return this.forceFetchNewAccessToken(e)}async forceFetchNewAccessToken(e){this.accessTokenFetcher||this.logger.warn(`accessTokenFetcher is not set [2], private channels will not work.`);try{let t=await this.accessTokenFetcher?.(e)??null;this.logger.log(`New token fetched`,t?.slice(0,5)+`...`);let n=Nt();if(t==null||n===t){q.getInstance().track(`update_token_invalid`,{channel:e}),this.emit(`authTokenInvalid`,{}),Pt(null);return}return Pt(t),t}catch(e){let t=e instanceof Error?e.message:String(e);return q.getInstance().track(`update_token_fetch_error`,{message:t}),this.logger.error(`Error fetching new token`,{error:e,message:t}),Pt(null),null}}setFeedUrl(e){if(!global.OVERLAYED_META.release.id){this.logger.warn(`Tried to set feed URL in development mode`);return}X().setFeedURL(Rn({application_id:global.OVERLAYED.APPLICATION_ID,release_id:global.OVERLAYED_META.release.id,cortex_user_id:global.OVERLAYED_RUNTIME.userId,access_token:Nt(),requested_channel:e.requestedChannel}))}registerListenerForwarders(){X().on(`checking-for-update`,()=>{this.logger.info(`Checking for updates`),this.emit(`checkingForUpdates`,{})}),X().on(`download-progress`,e=>{this._downloadStarted||(this._downloadStarted=!0,q.getInstance().track(`update_download_started`,{version:X().currentVersion?.version??``})),this.emit(`downloadProgress`,{info:e});let t=`Download speed: ${e.bytesPerSecond} - Downloaded ${e.percent}%`;t+=` (${e.transferred}/${e.total})`,this.logger.log(t)}),X().on(`error`,(e,t)=>{this.logger.error(`Error`,e,t),q.getInstance().track(`update_download_error`,{message:t??e.message}),this.emit(`error`,{error:e,message:t})}),X().on(`update-not-available`,e=>{this.logger.info(`Update not available`,e),q.getInstance().track(`update_not_available`,{version:e.version}),this.emit(`updateNotAvailable`,{info:e})}),X().on(`update-available`,e=>{this.logger.info(`Update available`,e),q.getInstance().track(`update_available`,{version:e.version,channel:X().channel??``}),this.emit(`updateAvailable`,{info:e})}),X().on(`update-downloaded`,e=>{this.logger.info(`Update downloaded`,e),q.getInstance().track(`update_download_complete`,{version:e.version}),this.emit(`updateDownloaded`,{event:e})}),X().on(`update-cancelled`,e=>{this.logger.info(`Update cancelled`,e),q.getInstance().track(`update_cancelled`,{version:e.version}),this.emit(`updateCancelled`,{info:e})})}getAccessTokenExpirationDate(e){try{let t=e.split(`.`)[1];if(!t)return null;let n=atob(t.replace(/-/g,`+`).replace(/_/g,`/`)),r=JSON.parse(n);return r.exp?new Date(r.exp*1e3):null}catch{return null}}});function Bn(){let e=zn.getInstance();return{site:Mn(),on:(t,n)=>{e.on(t,n)},off:(t,n)=>{e.off(t,n)},setAccessTokenFetcher:t=>e.setAccessTokenFetcher(t),checkForUpdates:()=>e.checkForUpdates(),switchChannel:t=>e.checkForUpdates(t),quitAndInstall:(t,n)=>e.quitAndInstall(t,n),canUpdate:()=>e.canUpdate(),downloadUpdate:t=>e.downloadUpdate(t)}}function Vn(){return{getChannel:()=>global.OVERLAYED_META.release.channel,getVersion:()=>global.OVERLAYED_META.release.version,getReleaseId:()=>global.OVERLAYED_META.release.id}}const Hn=j(class extends Ge{_knownModificationTimes=new Map;_confirmedDumps=new Set;_pendingReports=new Map;_snapshotTimestamp=0;boundOnGameReady=this.onGameReady.bind(this);boundOnGameClose=this.onGameClose.bind(this);constructor(){super(`CrashDumpManager`)}init(){super.init(),this.logger.debug(`init() registering game event listeners`),J.getInstance().on(`gameReadyInternal`,this.boundOnGameReady),J.getInstance().on(`gameCloseInternal`,this.boundOnGameClose),this.logger.debug(`init() complete`)}destroy(){this.logger.debug(`destroy() called`,{pendingReports:this._pendingReports.size,confirmedDumps:this._confirmedDumps.size,knownModificationTimes:this._knownModificationTimes.size}),J.getInstance().off(`gameReadyInternal`,this.boundOnGameReady),J.getInstance().off(`gameCloseInternal`,this.boundOnGameClose),this._knownModificationTimes.clear(),this._confirmedDumps.clear(),this._pendingReports.clear(),this._snapshotTimestamp=0,this.logger.debug(`destroy() cleanup complete`),super.destroy()}async submit(e){this.logger.debug(`submit() called`,{id:e,pendingCount:this._pendingReports.size});let t=this._pendingReports.get(e);if(!t){this.logger.warn(`submit called with unknown id`,e);return}let{response:n,dumpPath:r}=t;this.logger.debug(`Resolved pending report for submission`,{id:e,dumpPath:r});let i=global.OVERLAYED.APPLICATION_ID,a=G();if(this.logger.debug(`Resolved identifiers for submission`,{applicationId:i,cortexUserId:a}),n.crash_dump_upload_request)try{this.logger.debug(`Reading crash dump file`,{dumpPath:r});let t=await E.readFile(r);this.logger.debug(`Uploading crash dump`,{dumpPath:r,size:t.byteLength}),await dt(n.crash_dump_upload_request,new Uint8Array(t)),this.logger.debug(`Crash dump uploaded, confirming`,{id:e}),await at(i,e,{cortex_user_id:a,file_type:`crash_dump`}),this.logger.debug(`Crash dump confirmed`,{id:e})}catch(e){this.logger.error(`Failed to upload crash dump`,{dumpPath:r,error:e})}else this.logger.warn(`No crash dump upload request in response`,{id:e});this._pendingReports.delete(e),this._confirmedDumps.add(r),this.logger.debug(`Report state updated, attempting dump file cleanup`,{id:e,dumpPath:r});try{await E.unlink(r),this.logger.debug(`Dump file cleaned up successfully`,{dumpPath:r})}catch(e){this.logger.warn(`Failed to clean up dump file after submission`,{dumpPath:r,error:e})}this.logger.log(`Crash report submitted successfully`,r)}async onGameReady({game:e}){this.logger.debug(`onGameReady() fired`,{game:e.identifier}),await this.snapshotModificationTimes(),this.logger.debug(`onGameReady() snapshot complete`,{game:e.identifier})}async onGameClose({game:e}){this.logger.debug(`onGameClose() fired`,{game:e.identifier}),await this.scanForNewDumps(mt(e.identifier)),this.logger.debug(`onGameClose() scan complete`,{game:e.identifier})}async snapshotModificationTimes(){let e=xe();this._snapshotTimestamp=Date.now(),this.logger.debug(`snapshotModificationTimes() called`,{crashDumpsPath:e,snapshotTimestamp:this._snapshotTimestamp});try{await E.access(e)}catch{this.logger.debug(`Crash dumps directory does not exist, skipping snapshot`,{crashDumpsPath:e});return}let t=await this.findAllDumps(e);this.logger.debug(`Found dumps for snapshot`,{count:t.length});for(let e of t)try{let t=await E.stat(e);if(t.mtimeMs>=this._snapshotTimestamp-3e4){this.logger.debug(`Skipping recent dump from snapshot`,{dumpPath:e,mtimeMs:t.mtimeMs,snapshotTimestamp:this._snapshotTimestamp});continue}this._knownModificationTimes.set(e,t.mtimeMs),this.logger.debug(`Recorded modification time`,{dumpPath:e,mtimeMs:t.mtimeMs})}catch(t){this.logger.warn(`Failed to stat dump file during snapshot`,{dumpPath:e,error:t})}this.logger.debug(`Snapshot complete`,{totalTracked:this._knownModificationTimes.size})}async scanForNewDumps(e){let t=xe();this.logger.debug(`scanForNewDumps() called`,{game:e,crashDumpsPath:t});try{await E.access(t)}catch{this.logger.debug(`Crash dumps directory does not exist, skipping scan`,{crashDumpsPath:t});return}let n=new Set([...this._pendingReports.values()].map(e=>e.dumpPath)),r=await this.findAllDumps(t);this.logger.debug(`Scan found dumps`,{total:r.length,pendingCount:n.size,confirmedCount:this._confirmedDumps.size});for(let t of r){if(this._confirmedDumps.has(t)){this.logger.debug(`Skipping already confirmed dump`,{dumpPath:t});continue}if(n.has(t)){this.logger.debug(`Skipping already pending dump`,{dumpPath:t});continue}let r;try{r=await E.stat(t)}catch(e){this.logger.warn(`Failed to stat dump file during scan`,{dumpPath:t,error:e});continue}let i=r.mtimeMs,a=this._knownModificationTimes.get(t);if(this.logger.debug(`Comparing modification times`,{dumpPath:t,modificationTime:i,knownModificationTime:a}),a===void 0||i>a){this.logger.debug(`Dump is new or modified`,{dumpPath:t,isNew:a===void 0});try{let n=r.size,i=m.basename(m.dirname(t)),a=m.basename(t,m.extname(t));this.logger.debug(`Preparing crash report`,{dumpPath:t,crashDumpSize:n,crashSource:i});let o=(await Tn().generateAsync({type:`uint8array`})).byteLength,s=global.OVERLAYED.APPLICATION_ID,c=G(),l=global.OVERLAYED_META.release.id;if(!l)throw Error(`Missing release id, the API rejects crash reports without one`);this.logger.debug(`Creating game crash report via API`,{applicationId:s,cortexUserId:c,game:e,crashSource:i,crashDumpSize:n,logsSize:o});let{data:u}=await it(s,{cortex_user_id:c,game:e,crash_source:i,crash_identifier:a,release_id:l,logs_size:o,crash_dump_size:n});this._pendingReports.set(u.id,{response:u,dumpPath:t}),this.logger.debug(`Crash report created, emitting 'new' event`,{id:u.id,game:e}),this.logger.log(`New crash dump detected`,{dumpPath:t,game:e,id:u.id}),this.emit(`new`,{id:u.id,game:e})}catch(e){this.logger.error(`Failed to create game crash report`,{dumpPath:t,error:e})}}else this.logger.debug(`Dump unchanged, skipping`,{dumpPath:t});this._knownModificationTimes.set(t,i)}this.logger.debug(`scanForNewDumps() complete`,{game:e,pendingReports:this._pendingReports.size})}async findAllDumps(e){this.logger.debug(`findAllDumps() called`,{basePath:e});let t=[],n;try{n=await E.readdir(e,{withFileTypes:!0})}catch(n){return this.logger.warn(`Failed to read crash dumps directory`,{basePath:e,error:n}),t}this.logger.debug(`Top-level entries in crash dumps directory`,{count:n.length,directories:n.filter(e=>e.isDirectory()).map(e=>e.name)});for(let r of n)if(r.isDirectory()){let n=m.join(e,r.name),i;try{i=await E.readdir(n,{withFileTypes:!0})}catch(e){this.logger.warn(`Failed to read crash dump subdirectory`,{subPath:n,error:e});continue}let a=i.filter(e=>e.isFile()&&e.name.endsWith(`.dmp`));this.logger.debug(`Scanned subdirectory`,{subPath:n,totalEntries:i.length,dmpCount:a.length});for(let e of a)t.push(m.join(n,e.name))}return this.logger.debug(`findAllDumps() complete`,{totalFound:t.length}),t}});let Un=!1,Wn={},Gn,Kn=new fe,qn;function Jn(e){Xn(e);let t=Yn(e),{init:n=!0,debug:r=!1,silent:i=!0}=t,a=Qn(e);if(I.getInstance().init(e.applicationId,r,i),hn.getInstance().init(e.applicationId,r,!0,!0),a&&tr(tt(e.applicationId),!1).catch(()=>{}),Un)return Gn;function o(){if(Un){I.getInstance().warn(`Overlayed already initialized`);return}an();let n=qt.get({createIfMissing:!1});if(n){let t=Yt({currentAccount:n.currentAccount,accounts:n.accounts,expected:{applicationId:e.applicationId,baseUrl:qe}});t&&V(()=>t.account.apiKey)}let r=new Map,i=new Map,a=Bn(),s=Zt(t.modules,r,Kn),c=Qt(),l=rn(t.keybinds),u=vn(t.navigationGuard),d=bn(),f=Sn(),p=xn(),m=Dn(t),h=Fn(),g=jn(t.featureFlags),_=Vn();I.getInstance().log(`Overlayed initialized`),$n(t),kn(t,r,i,Kn,Wn),Un=!0,Gn={...s,...c,ads:f,keybinds:l,windows:u,input:d,cortex:p,hasAnyActiveProcesses:()=>Lt.getInstance().hasAnyActiveGames,hasAnyActiveGames:()=>J.getInstance().isInGame,init:o,log:m,initialized:Un,notices:h,featureFlags:g,updater:a,application:_,crashDumps:{on:(e,t)=>Hn.getInstance().on(e,t),off:(e,t)=>Hn.getInstance().off(e,t),submit:e=>Hn.getInstance().submit(e)}},Gn.universal.on(`logged_in`,e=>{q.getInstance().track(`account_id`,{account_id:e.content.accountId,game:e.game})})}return n&&a?(o(),Gn):new Proxy({init:o},{get:(e,t)=>{if(t===`init`)return e[t];if(!Un)throw Error(a?`overlayed was called before initialized: ${t}`:Zn);return Gn[t]}})}function Yn(e){return{...e,modules:[...e.modules,Ue()]}}global.OVERLAYED=new Proxy({},{get:()=>{throw Error(`function overlayed was not called`)}});function Xn(e){if(!ue(e.applicationId))throw Error(`Invalid applicationId, must be a valid ULID.`)}const Zn="Overlayed metadata has not been initialized yet. Run `overlayed init` to set up your local development environment.";function Qn(e){let t=er(),n=`2.1.0`,r=tt(e.applicationId);function i(){return{package_version:n,application_id:r,application_version:t?.release.version??`0.0.0`}}return I.getInstance().log(`ua object`,i()),Xe(()=>i()),t===null?(global.OVERLAYED=new Proxy({},{get:()=>{throw Error(Zn)}}),tr(r,!0),!1):(global.OVERLAYED={APPLICATION_ID:r,APP_BUILD_CHANNEL:t.release.channel,APP_VERSION:t.release.version,PACKAGE_VERSION:n,FRONTEND_VERSION:`0.0.0`,sessionId:jt(),electron:e.electron},global.OVERLAYED_META=t,global.OVERLAYED_RUNTIME={userId:G()},I.getInstance().log(`meta`,t),!0)}function $n(e){I.getInstance().warn(`Bootstrapping`);let t=e.universal?[`*`]:e.modules.map(e=>e.key);J.getInstance().setSubscribedGames(t),I.getInstance().warn(`Initializing update manager`),zn.getInstance().init(),I.getInstance().warn(`Initialized update manager`),mn.getInstance().init({manualUpdates:e.site?.manualUpdates??!1}),Gt.getInstance().init(),J.getInstance().init(),Hn.getInstance().init(),Lt.getInstance().init(),Rt.getInstance().init({subscribedGames:t}),q.getInstance().track(`start`,{}),Kt.getInstance().check(e.applicationId);try{qn&&clearInterval(qn),qn=setInterval(()=>{try{Mt()}catch{}},3e4),qn.unref()}catch(e){I.getInstance().log(`failed to start sessionLastUsed interval`,e)}async function n(){let e={};e.os=te.platform().trim(),e.os_version=process.getSystemVersion().trim(),e.architecture=te.arch().trim();let t=te.cpus();t.length>0?(e.cpu=t[0].model.trim(),e.cpu_cores=t.length,e.cpu_speed=t[0].speed):I.getInstance().warn(`Failed to collect CPU info`);let n=await k.graphics();I.getInstance().info(`GPU info`,n);let r=n.controllers.sort((e,t)=>(t.vram??0)-(e.vram??0))[0];r?(e.gpu=r.model.trim(),e.gpu_memory=r.vram??0):I.getInstance().warn(`Failed to find primary GPU`),e.display_count=n.displays.length;let i=n.displays.find(e=>e.main)??n.displays[0];i?(e.primary_display_resolution_x=i.resolutionX??void 0,e.primary_display_resolution_y=i.resolutionY??void 0,e.primary_display_refresh_rate=i.currentRefreshRate??void 0):I.getInstance().warn(`Failed to find main display`),e.ram=process.getSystemMemoryInfo().total;let a=te.homedir(),o=await E.statfs(a);return o&&`blocks`in o&&`bsize`in o&&`bavail`in o?(e.disk=o.blocks*o.bsize,e.disk_free=o.bavail*o.bsize):I.getInstance().warn(`Failed to collect disk info`),I.getInstance().log(`Retrieved system information`,e),e}O.on(`ready`,()=>{n().then(e=>{q.getInstance().track(`system_info`,e)}).catch(e=>{I.getInstance().log(`Failed to retrieve system information`,e)})}),O.on(`quit`,()=>{q.getInstance().track(`electron_quit`,{}),nr()}),process.on(`exit`,()=>{q.getInstance().track(`exit`,{}),nr()})}function er(){if(O.isPackaged)try{let e=m.join(process.resourcesPath,`meta.json`);return JSON.parse(y.readFileSync(e,`utf-8`))}catch(e){throw Error(`Failed to read application metadata from resources/meta.json`,{cause:e})}else{let e=m.join(process.cwd(),`.overlayed`,`meta.json`);return y.existsSync(e)?JSON.parse(y.readFileSync(e,`utf-8`)):null}}async function tr(e,t=!1){if(!O.isPackaged)try{I.getInstance().log(`Fetching application metadata from API...`);let n=Ee({...(await nt(e)).data,siteUrl:``});t&&(I.getInstance().log(v.yellowBright(`Uninitialized development environment detected. Created .overlayed folder. In the future, run ${v.bold(`overlayed init`)} to do so. \n\nThe process will now exit to load the cached metadata.\n\n${v.italic(`Note: This will never happen in a packaged application, and will only happen once in local development so long as the .overlayed folder exists.`)}`)),process.exit(0)),global.OVERLAYED_META=n}catch(e){I.getInstance().error(`Failed to fetch application meta`,e),t&&(console.error(`
|
|
16
16
|
Failed to fetch application metadata. Please ensure you're authenticated with 'overlayed login'.
|
|
17
|
-
`),process.exit(1))}}async function
|
|
17
|
+
`),process.exit(1))}}async function nr(){try{Mt()}catch{}try{qn&&clearInterval(qn),qn=void 0}catch{}q.getInstance().flush(),Rt.getInstance().destroy(),Hn.getInstance().destroy(),J.getInstance().destroy(),Gt.getInstance().destroy(),Lt.getInstance().destroy(),K.getInstance().getInterface(`OGG_SIEGE`).destroy(),Ne.getInstance().destroy(),me.getInstance().destroy(),zn.getInstance().destroy(),mn.getInstance().destroy(),An.getInstance().destroy()}export{Pe as RenderInterface,Ie as VirtualKey,z as defineConfig,Jn as overlayed};
|
package/dist/sand.d.ts
CHANGED
|
@@ -116,46 +116,72 @@ declare function module(): {
|
|
|
116
116
|
readonly events: import("arktype").Module<{
|
|
117
117
|
event: {
|
|
118
118
|
game: "sand";
|
|
119
|
-
type: "
|
|
119
|
+
type: "trampler_lost";
|
|
120
120
|
creationTime: number;
|
|
121
121
|
content: {
|
|
122
|
-
|
|
122
|
+
tramplerId: SandTramplerId;
|
|
123
123
|
};
|
|
124
124
|
} | {
|
|
125
125
|
game: "sand";
|
|
126
|
-
type: "
|
|
126
|
+
type: "party_member_joined";
|
|
127
127
|
creationTime: number;
|
|
128
128
|
content: {
|
|
129
129
|
accountId: SandAccountId;
|
|
130
130
|
displayName: string;
|
|
131
131
|
platformId: SandPlatformId;
|
|
132
132
|
playfabId: SandPlayfabId;
|
|
133
|
+
characterId: SandCharacterId;
|
|
134
|
+
isCaptain: boolean;
|
|
133
135
|
};
|
|
134
136
|
} | {
|
|
135
137
|
game: "sand";
|
|
136
|
-
type: "
|
|
138
|
+
type: "tech_tree_changed";
|
|
137
139
|
creationTime: number;
|
|
138
140
|
content: {
|
|
139
|
-
|
|
141
|
+
unlocked: number;
|
|
142
|
+
total: number;
|
|
143
|
+
nodes: {
|
|
144
|
+
id: SandTechNodeId;
|
|
145
|
+
name: string;
|
|
146
|
+
tier: number;
|
|
147
|
+
isUnlocked: boolean;
|
|
148
|
+
isAvailable: boolean;
|
|
149
|
+
}[];
|
|
140
150
|
};
|
|
141
151
|
} | {
|
|
142
152
|
game: "sand";
|
|
143
|
-
type: "
|
|
153
|
+
type: "match_ended";
|
|
154
|
+
creationTime: number;
|
|
155
|
+
} | {
|
|
156
|
+
game: "sand";
|
|
157
|
+
type: "extraction_removed";
|
|
144
158
|
creationTime: number;
|
|
145
159
|
content: {
|
|
146
|
-
|
|
160
|
+
extractionId: SandExtractionId;
|
|
147
161
|
};
|
|
148
162
|
} | {
|
|
149
163
|
game: "sand";
|
|
150
|
-
type: "
|
|
164
|
+
type: "logged_in";
|
|
151
165
|
creationTime: number;
|
|
152
166
|
content: {
|
|
153
167
|
accountId: SandAccountId;
|
|
154
168
|
displayName: string;
|
|
155
169
|
platformId: SandPlatformId;
|
|
156
170
|
playfabId: SandPlayfabId;
|
|
157
|
-
|
|
158
|
-
|
|
171
|
+
};
|
|
172
|
+
} | {
|
|
173
|
+
game: "sand";
|
|
174
|
+
type: "game_state_changed";
|
|
175
|
+
creationTime: number;
|
|
176
|
+
content: {
|
|
177
|
+
state: "aborted" | "all_left" | "decayed" | "extracted" | "failed" | "in_progress" | "invalid" | "loot_division" | "match_found" | "matchmaking" | "menu" | "waiting_for_players" | (string & {});
|
|
178
|
+
};
|
|
179
|
+
} | {
|
|
180
|
+
game: "sand";
|
|
181
|
+
type: "party_changed";
|
|
182
|
+
creationTime: number;
|
|
183
|
+
content: {
|
|
184
|
+
joinCode: SandPartyJoinCode;
|
|
159
185
|
};
|
|
160
186
|
} | {
|
|
161
187
|
game: "sand";
|
|
@@ -189,21 +215,6 @@ declare function module(): {
|
|
|
189
215
|
amount: number;
|
|
190
216
|
delta: number;
|
|
191
217
|
};
|
|
192
|
-
} | {
|
|
193
|
-
game: "sand";
|
|
194
|
-
type: "tech_tree_changed";
|
|
195
|
-
creationTime: number;
|
|
196
|
-
content: {
|
|
197
|
-
unlocked: number;
|
|
198
|
-
total: number;
|
|
199
|
-
nodes: {
|
|
200
|
-
id: SandTechNodeId;
|
|
201
|
-
name: string;
|
|
202
|
-
tier: number;
|
|
203
|
-
isUnlocked: boolean;
|
|
204
|
-
isAvailable: boolean;
|
|
205
|
-
}[];
|
|
206
|
-
};
|
|
207
218
|
} | {
|
|
208
219
|
game: "sand";
|
|
209
220
|
type: "tech_tree_item_unlocked";
|
|
@@ -249,10 +260,6 @@ declare function module(): {
|
|
|
249
260
|
};
|
|
250
261
|
}[];
|
|
251
262
|
};
|
|
252
|
-
} | {
|
|
253
|
-
game: "sand";
|
|
254
|
-
type: "match_ended";
|
|
255
|
-
creationTime: number;
|
|
256
263
|
} | {
|
|
257
264
|
game: "sand";
|
|
258
265
|
type: "world_time_changed";
|
|
@@ -336,13 +343,6 @@ declare function module(): {
|
|
|
336
343
|
z: number;
|
|
337
344
|
};
|
|
338
345
|
};
|
|
339
|
-
} | {
|
|
340
|
-
game: "sand";
|
|
341
|
-
type: "trampler_lost";
|
|
342
|
-
creationTime: number;
|
|
343
|
-
content: {
|
|
344
|
-
tramplerId: SandTramplerId;
|
|
345
|
-
};
|
|
346
346
|
} | {
|
|
347
347
|
game: "sand";
|
|
348
348
|
type: "inventory_changed";
|
|
@@ -1056,46 +1056,72 @@ type InventoryEquippedChangedEvent = typeof InventoryEquippedChanged.infer; //#e
|
|
|
1056
1056
|
declare const sandEvents: import("arktype").Module<{
|
|
1057
1057
|
event: {
|
|
1058
1058
|
game: "sand";
|
|
1059
|
-
type: "
|
|
1059
|
+
type: "trampler_lost";
|
|
1060
1060
|
creationTime: number;
|
|
1061
1061
|
content: {
|
|
1062
|
-
|
|
1062
|
+
tramplerId: SandTramplerId;
|
|
1063
1063
|
};
|
|
1064
1064
|
} | {
|
|
1065
1065
|
game: "sand";
|
|
1066
|
-
type: "
|
|
1066
|
+
type: "party_member_joined";
|
|
1067
1067
|
creationTime: number;
|
|
1068
1068
|
content: {
|
|
1069
1069
|
accountId: SandAccountId;
|
|
1070
1070
|
displayName: string;
|
|
1071
1071
|
platformId: SandPlatformId;
|
|
1072
1072
|
playfabId: SandPlayfabId;
|
|
1073
|
+
characterId: SandCharacterId;
|
|
1074
|
+
isCaptain: boolean;
|
|
1073
1075
|
};
|
|
1074
1076
|
} | {
|
|
1075
1077
|
game: "sand";
|
|
1076
|
-
type: "
|
|
1078
|
+
type: "tech_tree_changed";
|
|
1077
1079
|
creationTime: number;
|
|
1078
1080
|
content: {
|
|
1079
|
-
|
|
1081
|
+
unlocked: number;
|
|
1082
|
+
total: number;
|
|
1083
|
+
nodes: {
|
|
1084
|
+
id: SandTechNodeId;
|
|
1085
|
+
name: string;
|
|
1086
|
+
tier: number;
|
|
1087
|
+
isUnlocked: boolean;
|
|
1088
|
+
isAvailable: boolean;
|
|
1089
|
+
}[];
|
|
1080
1090
|
};
|
|
1081
1091
|
} | {
|
|
1082
1092
|
game: "sand";
|
|
1083
|
-
type: "
|
|
1093
|
+
type: "match_ended";
|
|
1094
|
+
creationTime: number;
|
|
1095
|
+
} | {
|
|
1096
|
+
game: "sand";
|
|
1097
|
+
type: "extraction_removed";
|
|
1084
1098
|
creationTime: number;
|
|
1085
1099
|
content: {
|
|
1086
|
-
|
|
1100
|
+
extractionId: SandExtractionId;
|
|
1087
1101
|
};
|
|
1088
1102
|
} | {
|
|
1089
1103
|
game: "sand";
|
|
1090
|
-
type: "
|
|
1104
|
+
type: "logged_in";
|
|
1091
1105
|
creationTime: number;
|
|
1092
1106
|
content: {
|
|
1093
1107
|
accountId: SandAccountId;
|
|
1094
1108
|
displayName: string;
|
|
1095
1109
|
platformId: SandPlatformId;
|
|
1096
1110
|
playfabId: SandPlayfabId;
|
|
1097
|
-
|
|
1098
|
-
|
|
1111
|
+
};
|
|
1112
|
+
} | {
|
|
1113
|
+
game: "sand";
|
|
1114
|
+
type: "game_state_changed";
|
|
1115
|
+
creationTime: number;
|
|
1116
|
+
content: {
|
|
1117
|
+
state: "aborted" | "all_left" | "decayed" | "extracted" | "failed" | "in_progress" | "invalid" | "loot_division" | "match_found" | "matchmaking" | "menu" | "waiting_for_players" | (string & {});
|
|
1118
|
+
};
|
|
1119
|
+
} | {
|
|
1120
|
+
game: "sand";
|
|
1121
|
+
type: "party_changed";
|
|
1122
|
+
creationTime: number;
|
|
1123
|
+
content: {
|
|
1124
|
+
joinCode: SandPartyJoinCode;
|
|
1099
1125
|
};
|
|
1100
1126
|
} | {
|
|
1101
1127
|
game: "sand";
|
|
@@ -1129,21 +1155,6 @@ declare const sandEvents: import("arktype").Module<{
|
|
|
1129
1155
|
amount: number;
|
|
1130
1156
|
delta: number;
|
|
1131
1157
|
};
|
|
1132
|
-
} | {
|
|
1133
|
-
game: "sand";
|
|
1134
|
-
type: "tech_tree_changed";
|
|
1135
|
-
creationTime: number;
|
|
1136
|
-
content: {
|
|
1137
|
-
unlocked: number;
|
|
1138
|
-
total: number;
|
|
1139
|
-
nodes: {
|
|
1140
|
-
id: SandTechNodeId;
|
|
1141
|
-
name: string;
|
|
1142
|
-
tier: number;
|
|
1143
|
-
isUnlocked: boolean;
|
|
1144
|
-
isAvailable: boolean;
|
|
1145
|
-
}[];
|
|
1146
|
-
};
|
|
1147
1158
|
} | {
|
|
1148
1159
|
game: "sand";
|
|
1149
1160
|
type: "tech_tree_item_unlocked";
|
|
@@ -1189,10 +1200,6 @@ declare const sandEvents: import("arktype").Module<{
|
|
|
1189
1200
|
};
|
|
1190
1201
|
}[];
|
|
1191
1202
|
};
|
|
1192
|
-
} | {
|
|
1193
|
-
game: "sand";
|
|
1194
|
-
type: "match_ended";
|
|
1195
|
-
creationTime: number;
|
|
1196
1203
|
} | {
|
|
1197
1204
|
game: "sand";
|
|
1198
1205
|
type: "world_time_changed";
|
|
@@ -1276,13 +1283,6 @@ declare const sandEvents: import("arktype").Module<{
|
|
|
1276
1283
|
z: number;
|
|
1277
1284
|
};
|
|
1278
1285
|
};
|
|
1279
|
-
} | {
|
|
1280
|
-
game: "sand";
|
|
1281
|
-
type: "trampler_lost";
|
|
1282
|
-
creationTime: number;
|
|
1283
|
-
content: {
|
|
1284
|
-
tramplerId: SandTramplerId;
|
|
1285
|
-
};
|
|
1286
1286
|
} | {
|
|
1287
1287
|
game: "sand";
|
|
1288
1288
|
type: "inventory_changed";
|
package/dist/siege.d.ts
CHANGED
|
@@ -237,6 +237,7 @@ declare const SIEGE_OPERATOR_TO_ID: Readonly<{
|
|
|
237
237
|
readonly rauora: SiegeOperatorNameId;
|
|
238
238
|
readonly denari: SiegeOperatorNameId;
|
|
239
239
|
readonly solidSnake: SiegeOperatorNameId;
|
|
240
|
+
readonly noor: SiegeOperatorNameId;
|
|
240
241
|
}>;
|
|
241
242
|
declare const SIEGE_OPERATOR_LABELS: Record<SiegeOperatorNameId, string>;
|
|
242
243
|
interface SiegeOperatorMeta {
|
|
@@ -557,6 +558,10 @@ declare const SIEGE_OPERATOR_META: Readonly<{
|
|
|
557
558
|
readonly name: "Solid Snake";
|
|
558
559
|
readonly role: "attacker";
|
|
559
560
|
};
|
|
561
|
+
readonly [SIEGE_OPERATOR_TO_ID.noor]: {
|
|
562
|
+
readonly name: "Noor";
|
|
563
|
+
readonly role: "defender";
|
|
564
|
+
};
|
|
560
565
|
}>;
|
|
561
566
|
declare const SIEGE_SIDE_OPERATORS: Record<Extract<SiegeSide, "attacker" | "defender">, SiegeOperatorMetaFull[]>;
|
|
562
567
|
declare const SIEGE_MAP_TO_ID: Readonly<{
|
|
@@ -652,6 +657,18 @@ declare function module(): {
|
|
|
652
657
|
};
|
|
653
658
|
};
|
|
654
659
|
event: {
|
|
660
|
+
game: "siege";
|
|
661
|
+
type: "player_side_changed";
|
|
662
|
+
creationTime: number;
|
|
663
|
+
content: {
|
|
664
|
+
playerId: SiegePlayerId;
|
|
665
|
+
side: "attacker" | "both" | "defender" | "invalid" | (string & {});
|
|
666
|
+
};
|
|
667
|
+
} | {
|
|
668
|
+
game: "siege";
|
|
669
|
+
type: "stopped_queuing";
|
|
670
|
+
creationTime: number;
|
|
671
|
+
} | {
|
|
655
672
|
game: "siege";
|
|
656
673
|
type: "started_queuing";
|
|
657
674
|
creationTime: number;
|
|
@@ -663,10 +680,6 @@ declare function module(): {
|
|
|
663
680
|
};
|
|
664
681
|
matchType: SiegeMatchType;
|
|
665
682
|
};
|
|
666
|
-
} | {
|
|
667
|
-
game: "siege";
|
|
668
|
-
type: "stopped_queuing";
|
|
669
|
-
creationTime: number;
|
|
670
683
|
} | {
|
|
671
684
|
game: "siege";
|
|
672
685
|
type: "match_started";
|
|
@@ -833,14 +846,6 @@ declare function module(): {
|
|
|
833
846
|
playerId: SiegePlayerId;
|
|
834
847
|
locationName: string;
|
|
835
848
|
};
|
|
836
|
-
} | {
|
|
837
|
-
game: "siege";
|
|
838
|
-
type: "player_side_changed";
|
|
839
|
-
creationTime: number;
|
|
840
|
-
content: {
|
|
841
|
-
playerId: SiegePlayerId;
|
|
842
|
-
side: "attacker" | "both" | "defender" | "invalid" | (string & {});
|
|
843
|
-
};
|
|
844
849
|
} | {
|
|
845
850
|
game: "siege";
|
|
846
851
|
type: "player_score_changed";
|
|
@@ -2012,6 +2017,18 @@ declare const siegeEvents: import("arktype").Module<{
|
|
|
2012
2017
|
};
|
|
2013
2018
|
};
|
|
2014
2019
|
event: {
|
|
2020
|
+
game: "siege";
|
|
2021
|
+
type: "player_side_changed";
|
|
2022
|
+
creationTime: number;
|
|
2023
|
+
content: {
|
|
2024
|
+
playerId: SiegePlayerId;
|
|
2025
|
+
side: "attacker" | "both" | "defender" | "invalid" | (string & {});
|
|
2026
|
+
};
|
|
2027
|
+
} | {
|
|
2028
|
+
game: "siege";
|
|
2029
|
+
type: "stopped_queuing";
|
|
2030
|
+
creationTime: number;
|
|
2031
|
+
} | {
|
|
2015
2032
|
game: "siege";
|
|
2016
2033
|
type: "started_queuing";
|
|
2017
2034
|
creationTime: number;
|
|
@@ -2023,10 +2040,6 @@ declare const siegeEvents: import("arktype").Module<{
|
|
|
2023
2040
|
};
|
|
2024
2041
|
matchType: SiegeMatchType;
|
|
2025
2042
|
};
|
|
2026
|
-
} | {
|
|
2027
|
-
game: "siege";
|
|
2028
|
-
type: "stopped_queuing";
|
|
2029
|
-
creationTime: number;
|
|
2030
2043
|
} | {
|
|
2031
2044
|
game: "siege";
|
|
2032
2045
|
type: "match_started";
|
|
@@ -2193,14 +2206,6 @@ declare const siegeEvents: import("arktype").Module<{
|
|
|
2193
2206
|
playerId: SiegePlayerId;
|
|
2194
2207
|
locationName: string;
|
|
2195
2208
|
};
|
|
2196
|
-
} | {
|
|
2197
|
-
game: "siege";
|
|
2198
|
-
type: "player_side_changed";
|
|
2199
|
-
creationTime: number;
|
|
2200
|
-
content: {
|
|
2201
|
-
playerId: SiegePlayerId;
|
|
2202
|
-
side: "attacker" | "both" | "defender" | "invalid" | (string & {});
|
|
2203
|
-
};
|
|
2204
2209
|
} | {
|
|
2205
2210
|
game: "siege";
|
|
2206
2211
|
type: "player_score_changed";
|
package/dist/siege.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{scope as e,type as t}from"arktype";function n(e){return e}function r(e){return e}function i(e){return e?t=>(e(t),t):r}const a=i(),o=i(),s=i(),c=i(),l=i(),u=i(),d=i(),f=i(),p=i(),m=i(),h=i(),g=i(),_=`00000000-0000-0000-0000-000000000000`,ee=[`intro`,`planning`,`prep`,`action`,`results`,`invalid`,`first`],v=t(`string`),y=[0,1],b=t(`===`,...y),x=[`attacker`,`defender`,`both`,`invalid`],S=t(`string`),te=[`normal`,`overhealed`,`low_health`,`downed`,`dead`,`respawning`],C=t(`string`),w=[`pc`,`xbox`,`playstation`,`invalid`],T=t(`string`),E=`bullet.melee.explosive.falling.regeneration.unknown.debris.projectile.downed.gas.thermal_explosion.melee_gadget.barbed_wire.electric.reinforcement.frag.paralyzed.emp.break.cleanup.interrogation.melee-finisher.toxic.toxic-explosion.pneumatic.body-contact.contact-explosion.flash.parasite-spike.laser.concussion.blowtorch.taser-shield.reverse-friendly-fire.self-destroyed.area-control.fire.breach-kick.break-wall.blade-mine.melee-pushback.supressive-fire.gas-pipe-fire.invalid`.split(`.`),D=t(`string`),ne=[`unknown`,`enemy`,`friendly`,`invalid`],O=t(`string`),re=[`invalid`,`head`,`left_upper_arm`,`right_upper_arm`,`left_forearm`,`right_forearm`,`left_hand`,`right_hand`,`upper_torso`,`lower_torso`,`crotch`,`left_thigh`,`right_thigh`,`left_calf`,`right_calf`,`left_foot`,`right_foot`,`neck`,`clothing`],k=t(`string`),A=Object.freeze({teamDeathmatch:h(`TEAM DEATHMATCH`),goldenGun:h(`GOLDEN GUN`),freeForAll:h(`FREE FOR ALL`),weaponRoulette:h(`WEAPON ROULETTE`),dualFront:h(`DUAL FRONT`),bomb:h(`BOMB`),versusAi:h(`VERSUS AI`),hostage:h(`HOSTAGE`),threeVsThreeSecureArea:h(`3 VS 3 SECURE AREA`),targetDrill:h(`TARGET DRILL`),rengoku:h(`RENGOKU`),hideAndSeek:h(`HIDE AND SEEK`)}),j=Object.freeze({[A.teamDeathmatch]:`Team Deathmatch`,[A.goldenGun]:`Golden Gun`,[A.freeForAll]:`Free For All`,[A.weaponRoulette]:`Weapon Roulette`,[A.dualFront]:`Dual Front`,[A.bomb]:`Bomb`,[A.versusAi]:`Versus AI`,[A.hostage]:`Hostage`,[A.threeVsThreeSecureArea]:`3v3 Secure Area`,[A.targetDrill]:`Target Drill`,[A.rengoku]:`Rengoku`,[A.hideAndSeek]:`Hide and Seek`}),M=Object.freeze({ranked:a(205379),quickMatch:a(138115),customGame:a(62008),versusAi:a(397300),standard:a(393930),arcade:a(320109),siegeCup:a(414089),dualFront:a(420611),showdown:a(305544),trainingGrounds:a(-1),unranked:a(310813),deathmatch:a(420611),rengoku:a(359430),muteProtocol:a(368421),fieldTraining:a(423927),hideAndSeek:a(310854)}),N=Object.freeze({[M.quickMatch]:`Quick Match`,[M.ranked]:`Ranked`,[M.customGame]:`Custom Game`,[M.versusAi]:`Versus AI`,[M.standard]:`Standard`,[M.arcade]:`Arcade`,[M.siegeCup]:`Siege Cup`,[M.dualFront]:`Dual Front`,[M.showdown]:`Showdown`,[M.trainingGrounds]:`Training Grounds`,[M.unranked]:`Unranked`,[M.deathmatch]:`Deathmatch`,[M.rengoku]:`Rengoku`,[M.muteProtocol]:`M.U.T.E Protocol`,[M.fieldTraining]:`Field Training`,[M.hideAndSeek]:`Hide and Seek`}),P=Object.freeze({glaz:o(62242),blitz:o(62243),buck:o(62244),sledge:o(62245),ash:o(62246),thermite:o(62247),castle:o(62248),rook:o(62249),pulse:o(62250),doc:o(62251),mute:o(62252),smoke:o(62253),recruit:o(62555),thatcher:o(65143),twitch:o(65156),montagne:o(65159),bandit:o(65165),fuze:o(65168),kapkan:o(65171),tachanka:o(65174),jager:o(113049),iq:o(113052),frost:o(186159),blackbeard:o(187249),valkyrie:o(187252),caveira:o(207671),capitao:o(207674),echo:o(209180),hibana:o(209183),mira:o(222172),jackal:o(222182),ying:o(239334),lesion:o(239337),ela:o(254595),zofia:o(254606),dokkaebi:o(273652),vigil:o(273663),finka:o(281457),lion:o(281463),alibi:o(282399),maestro:o(285888),maverick:o(288504),clash:o(288526),nomad:o(293435),kaid:o(293436),gridlock:o(298589),mozzie:o(298616),nokk:o(299657),warden:o(299668),goyo:o(304196),amaru:o(308469),kali:o(310757),wamai:o(310768),oryx:o(317965),iana:o(317976),melusi:o(320062),ace:o(320073),zero:o(328927),aruni:o(328940),flores:o(334086),thunderbird:o(336466),osa:o(344493),thorn:o(349405),azami:o(354314),sens:o(357386),grim:o(365404),solis:o(376836),brava:o(382419),fenrir:o(386388),ram:o(392904),tubarao:o(395594),deimos:o(400504),striker:o(404278),sentry:o(404290),skopos:o(408405),rauora:o(421052),denari:o(2437779699),solidSnake:o(3786633270)}),F=Object.freeze({[P.glaz]:`glaz`,[P.blitz]:`blitz`,[P.buck]:`buck`,[P.sledge]:`sledge`,[P.ash]:`ash`,[P.thermite]:`thermite`,[P.castle]:`castle`,[P.rook]:`rook`,[P.pulse]:`pulse`,[P.doc]:`doc`,[P.mute]:`mute`,[P.smoke]:`smoke`,[P.recruit]:`recruit`,[P.thatcher]:`thatcher`,[P.twitch]:`twitch`,[P.montagne]:`montagne`,[P.bandit]:`bandit`,[P.fuze]:`fuze`,[P.kapkan]:`kapkan`,[P.tachanka]:`tachanka`,[P.jager]:`jager`,[P.iq]:`iq`,[P.frost]:`frost`,[P.blackbeard]:`blackbeard`,[P.valkyrie]:`valkyrie`,[P.caveira]:`caveira`,[P.capitao]:`capitao`,[P.echo]:`echo`,[P.hibana]:`hibana`,[P.mira]:`mira`,[P.jackal]:`jackal`,[P.ying]:`ying`,[P.lesion]:`lesion`,[P.ela]:`ela`,[P.zofia]:`zofia`,[P.dokkaebi]:`dokkaebi`,[P.vigil]:`vigil`,[P.finka]:`finka`,[P.lion]:`lion`,[P.alibi]:`alibi`,[P.maestro]:`maestro`,[P.maverick]:`maverick`,[P.clash]:`clash`,[P.nomad]:`nomad`,[P.kaid]:`kaid`,[P.gridlock]:`gridlock`,[P.mozzie]:`mozzie`,[P.nokk]:`nokk`,[P.warden]:`warden`,[P.goyo]:`goyo`,[P.amaru]:`amaru`,[P.kali]:`kali`,[P.wamai]:`wamai`,[P.oryx]:`oryx`,[P.iana]:`iana`,[P.melusi]:`melusi`,[P.ace]:`ace`,[P.zero]:`zero`,[P.aruni]:`aruni`,[P.flores]:`flores`,[P.thunderbird]:`thunderbird`,[P.osa]:`osa`,[P.thorn]:`thorn`,[P.azami]:`azami`,[P.sens]:`sens`,[P.grim]:`grim`,[P.solis]:`solis`,[P.brava]:`brava`,[P.fenrir]:`fenrir`,[P.ram]:`ram`,[P.tubarao]:`tubarao`,[P.deimos]:`deimos`,[P.striker]:`striker`,[P.sentry]:`sentry`,[P.skopos]:`skopos`,[P.rauora]:`rauora`,[P.solidSnake]:`solid snake`,[P.denari]:`denari`}),I=Object.freeze({[P.striker]:{name:`Striker`,role:`attacker`},[P.sledge]:{name:`Sledge`,role:`attacker`},[P.thatcher]:{name:`Thatcher`,role:`attacker`},[P.ash]:{name:`Ash`,role:`attacker`},[P.thermite]:{name:`Thermite`,role:`attacker`},[P.twitch]:{name:`Twitch`,role:`attacker`},[P.montagne]:{name:`Montagne`,role:`attacker`},[P.glaz]:{name:`Glaz`,role:`attacker`},[P.fuze]:{name:`Fuze`,role:`attacker`},[P.blitz]:{name:`Blitz`,role:`attacker`},[P.iq]:{name:`IQ`,role:`attacker`},[P.buck]:{name:`Buck`,role:`attacker`},[P.blackbeard]:{name:`Blackbeard`,role:`attacker`},[P.capitao]:{name:`Capitão`,role:`attacker`},[P.hibana]:{name:`Hibana`,role:`attacker`},[P.jackal]:{name:`Jackal`,role:`attacker`},[P.ying]:{name:`Ying`,role:`attacker`},[P.zofia]:{name:`Zofia`,role:`attacker`},[P.dokkaebi]:{name:`Dokkaebi`,role:`attacker`},[P.lion]:{name:`Lion`,role:`attacker`},[P.finka]:{name:`Finka`,role:`attacker`},[P.maverick]:{name:`Maverick`,role:`attacker`},[P.nomad]:{name:`Nomad`,role:`attacker`},[P.gridlock]:{name:`Gridlock`,role:`attacker`},[P.nokk]:{name:`Nøkk`,role:`attacker`},[P.amaru]:{name:`Amaru`,role:`attacker`},[P.kali]:{name:`Kali`,role:`attacker`},[P.iana]:{name:`Iana`,role:`attacker`},[P.ace]:{name:`Ace`,role:`attacker`},[P.zero]:{name:`Zero`,role:`attacker`},[P.flores]:{name:`Flores`,role:`attacker`},[P.osa]:{name:`Osa`,role:`attacker`},[P.sens]:{name:`Sens`,role:`attacker`},[P.grim]:{name:`Grim`,role:`attacker`},[P.brava]:{name:`Brava`,role:`attacker`},[P.ram]:{name:`Ram`,role:`attacker`},[P.deimos]:{name:`Deimos`,role:`attacker`},[P.rauora]:{name:`Rauora`,role:`attacker`},[P.sentry]:{name:`Sentry`,role:`defender`},[P.smoke]:{name:`Smoke`,role:`defender`},[P.mute]:{name:`Mute`,role:`defender`},[P.castle]:{name:`Castle`,role:`defender`},[P.pulse]:{name:`Pulse`,role:`defender`},[P.doc]:{name:`Doc`,role:`defender`},[P.rook]:{name:`Rook`,role:`defender`},[P.kapkan]:{name:`Kapkan`,role:`defender`},[P.tachanka]:{name:`Tachanka`,role:`defender`},[P.jager]:{name:`Jäger`,role:`defender`},[P.bandit]:{name:`Bandit`,role:`defender`},[P.frost]:{name:`Frost`,role:`defender`},[P.valkyrie]:{name:`Valkyrie`,role:`defender`},[P.caveira]:{name:`Caveira`,role:`defender`},[P.echo]:{name:`Echo`,role:`defender`},[P.mira]:{name:`Mira`,role:`defender`},[P.lesion]:{name:`Lesion`,role:`defender`},[P.ela]:{name:`Ela`,role:`defender`},[P.vigil]:{name:`Vigil`,role:`defender`},[P.alibi]:{name:`Alibi`,role:`defender`},[P.maestro]:{name:`Maestro`,role:`defender`},[P.clash]:{name:`Clash`,role:`defender`},[P.kaid]:{name:`Kaid`,role:`defender`},[P.mozzie]:{name:`Mozzie`,role:`defender`},[P.warden]:{name:`Warden`,role:`defender`},[P.goyo]:{name:`Goyo`,role:`defender`},[P.wamai]:{name:`Wamai`,role:`defender`},[P.oryx]:{name:`Oryx`,role:`defender`},[P.melusi]:{name:`Melusi`,role:`defender`},[P.aruni]:{name:`Aruni`,role:`defender`},[P.thunderbird]:{name:`Thunderbird`,role:`defender`},[P.thorn]:{name:`Thorn`,role:`defender`},[P.azami]:{name:`Azami`,role:`defender`},[P.solis]:{name:`Solis`,role:`defender`},[P.fenrir]:{name:`Fenrir`,role:`defender`},[P.tubarao]:{name:`Tubarao`,role:`defender`},[P.skopos]:{name:`Skopós`,role:`defender`},[P.denari]:{name:`Denari`,role:`defender`},[P.solidSnake]:{name:`Solid Snake`,role:`attacker`}}),L=Object.freeze({attacker:Object.entries(I).filter(([e,t])=>t.role===`attacker`).map(([e])=>({...I[o(Number(e))],id:o(Number(e))})),defender:Object.entries(I).filter(([e,t])=>t.role===`defender`).map(([e])=>({...I[o(Number(e))],id:o(Number(e))}))}),R=Object.freeze({favela:s(202283),fortress:s(293334),villa:s(286407),neighborhood:s(333785),themePark:s(229325),stadium:s(338641),outback:s(299534),yacht:s(62226),emeraldPlains:s(358871),chalet:s(62230),coastline:s(217482),bank:s(62228),consulate:s(62227),tower:s(255669),nighthavenLabs:s(375492),presidentialPlane:s(62225),house:s(62221),kafeDostoyevsky:s(62232),border:s(201746),closeQuarter:s(365400),lair:s(396234),herefordBase:s(62223),skyscraper:s(208094),cqbBasics:s(196157),oregon:s(62222),fortTruth:s(307723),kanal:s(62229),stadium2020:s(357300),clubhouse:s(62224),district:s(1193341205),shinden:s(359432),stadiumBravo:s(376421),muteCommTower:s(328922),doktorsLab:s(560244830),calypsoCasino:s(1913017857)}),z=Object.freeze({[R.favela]:`Favela`,[R.fortress]:`Fortress`,[R.villa]:`Villa`,[R.neighborhood]:`Neighborhood`,[R.themePark]:`Theme Park`,[R.stadium]:`Stadium`,[R.outback]:`Outback`,[R.yacht]:`Yacht`,[R.emeraldPlains]:`Emerald Plains`,[R.chalet]:`Chalet`,[R.coastline]:`Coastline`,[R.bank]:`Bank`,[R.consulate]:`Consulate`,[R.tower]:`Tower`,[R.nighthavenLabs]:`Nighthaven Labs`,[R.presidentialPlane]:`Presidential Plane`,[R.house]:`House`,[R.kafeDostoyevsky]:`Kafe Dostoyevsky`,[R.border]:`Border`,[R.closeQuarter]:`Close Quarter`,[R.outback]:`Outback`,[R.lair]:`Lair`,[R.herefordBase]:`Hereford Base`,[R.skyscraper]:`Skyscraper`,[R.cqbBasics]:`CQB Basics`,[R.oregon]:`Oregon`,[R.outback]:`Outback`,318512:`Stadium`,[R.fortTruth]:`Fort Truth`,[R.kanal]:`Kanal`,[R.cqbBasics]:`CQB Basics`,[R.stadium2020]:`Stadium 2020`,[R.clubhouse]:`Clubhouse`,[R.district]:`District`,[R.shinden]:`Shinden`,[R.stadiumBravo]:`Stadium Bravo`,[R.muteCommTower]:`M.U.T.E Comm Tower`,[R.doktorsLab]:`Doktor's Lab`,[R.calypsoCasino]:`Calypso Casino`}),B=Object.freeze({notPlayed:c(0),inProgress:c(1),lost:c(2),enemiesEliminated:c(3),objectiveComplete:c(4),timeRanOut:c(5),enemiesSurrendered:c(6),unknownReason:c(7),matchCancelled:c(8)}),V=Object.freeze({[B.notPlayed]:`Not Played`,[B.inProgress]:`In Progress`,[B.lost]:`Lost`,[B.enemiesEliminated]:`Enemies Eliminated`,[B.objectiveComplete]:`Objective Complete`,[B.timeRanOut]:`Time ran out`,[B.enemiesSurrendered]:`Enemies Surrendered`,[B.unknownReason]:`Unknown Reason`,[B.matchCancelled]:`Match Cancelled`}),H=Object.freeze({day:g(177839),night:g(177840)}),U=Object.freeze({[H.day]:`Day`,[H.night]:`Night`}),W=()=>t({id:`number`,value:`string`}),G=t({kills:`number`,deaths:`number`,assists:`number`,gameModeActions:`number`,score:`number`}),K=t({instigatorPlayerId:n(t.number),receiverPlayerId:n(t.number),damageAmount:`number`,remainingHealth:`number`,preDamageHealth:`number`,maxHealth:`number`,damageType:D,damageTeamType:O,damageHitZone:k,damageSourceId:n(t.number).or(`null`),damageItemId:n(t.number).or(`null`),damageItemInstanceId:n(t.number).or(`null`),damageTime:`number`}),q=t({index:`number`,roundsUntilNextSegment:`number`,segmentSize:`number`,segmentIndex:`number`,team0:{role:S,state:n(t.number)},team1:{role:S,state:n(t.number)}}),J=t({name:W(),timeOfDay:W()}),Y=t({playerId:n(t.number),finalHealth:`number`,finalLifeState:C,operatorName:W()}),X=t({roundData:q,damageEvents:K.array(),players:Y.array()}),Z=t({game:`string`,type:`string`,creationTime:`number`}),ie=[B.enemiesEliminated,B.objectiveComplete,B.timeRanOut,B.enemiesSurrendered,B.unknownReason];function ae(e){return ie.includes(e)}const oe=[B.notPlayed,B.inProgress];function se(e){return!oe.includes(e)}const Q=Z.and({game:`'siege'`}),ce=Q.and({type:`'match_started'`,content:{gameMode:n(t.string),gameType:W(),matchType:n(t.string),matchId:n(t.string),map:J,isRoundBased:`boolean`,currentRoundIndex:`number`,rounds:q.array()}}),le=Q.and({type:`'started_queuing'`,content:{gameMode:n(t.string),gameType:W(),matchType:n(t.string)}}),ue=Q.and({type:`'stopped_queuing'`}),de=Q.and({type:`'match_ended'`}),fe=Q.and({type:`'map_changed'`,content:{map:J}}),pe=Q.and({type:`'operator_ban_voting_started'`,content:{team:b,index:`number`,side:S}}),me=Q.and({type:`'operator_banned'`,content:{team:b,index:`number`,side:S,operatorName:W().or(`null`)}}),he=Q.and({type:`'operator_ban_cleared'`,content:{team:b,index:`number`}}),ge=Q.and({type:`'round_ended'`,content:X}),_e=Q.and({type:`'phase_changed'`,content:{phase:v}}),ve=Q.and({type:`'player_joined'`,content:{playerId:n(t.number),username:`string`,pcUsername:`string | null`,profileId:n(t.string),isBot:`boolean`,isEnemy:`boolean`,isSquadMember:`boolean`,isLocalPlayer:`boolean`,side:S,team:b,platform:T,isPrivacyUsername:`boolean`,hasAvatarHidden:`boolean`,hasCommendStreak:`boolean`,pingId:`number`,matchStats:G,lifeState:C,ping:`number`}}).pipe(e=>({...e,content:{...e.content,startingSide:e.content.side}})),ye=Q.and({type:`'player_left'`,content:{playerId:n(t.number)}}),be=Q.and({type:`'player_operator_changed'`,content:{playerId:n(t.number),operatorName:W()}}),xe=Q.and({type:`'player_location_changed'`,content:{playerId:n(t.number),locationName:`string`}}),Se=Q.and({type:`'player_side_changed'`,content:{playerId:n(t.number),side:S}}),Ce=Q.and({type:`'player_score_changed'`,content:{playerId:n(t.number),score:`number`}}),we=Q.and({type:`'player_kills_changed'`,content:{playerId:n(t.number),kills:`number`}}),Te=Q.and({type:`'player_deaths_changed'`,content:{playerId:n(t.number),deaths:`number`}}),$=Q.and({type:`'player_assists_changed'`,content:{playerId:n(t.number),assists:`number`}}),Ee=Q.and({type:`'player_game_mode_actions_changed'`,content:{playerId:n(t.number),gameModeActions:`number`}}),De=Q.and({type:`'player_ping_updated'`,content:{playerId:n(t.number),ping:`number`}}),Oe=e({"#event1":`started_queuing | stopped_queuing | match_started | match_ended | map_changed | operator_ban_voting_started | operator_banned | operator_ban_cleared | round_ended | phase_changed | player_joined | player_left | player_operator_changed`,"#event2":`player_location_changed | player_side_changed | player_score_changed | player_kills_changed | player_deaths_changed | player_assists_changed | player_game_mode_actions_changed | player_life_state_changed | player_died | player_downed | player_ping_id_changed | player_team_changed | defuser_planted | defuser_sabotaged | defuser_picked_up | defuser_dropped | player_ping_updated`,event:`event1 | event2`,started_queuing:le,stopped_queuing:ue,match_started:ce,match_ended:de,map_changed:fe,operator_ban_voting_started:pe,operator_banned:me,operator_ban_cleared:he,round_ended:ge,phase_changed:_e,player_joined:ve,player_left:ye,player_operator_changed:be,player_location_changed:xe,player_side_changed:Se,player_score_changed:Ce,player_kills_changed:we,player_deaths_changed:Te,player_assists_changed:$,player_game_mode_actions_changed:Ee,defuser_planted:Q.and({type:`'defuser_planted'`,content:{playerId:n(t.number)}}),defuser_sabotaged:Q.and({type:`'defuser_sabotaged'`,content:{playerId:n(t.number)}}),defuser_picked_up:Q.and({type:`'defuser_picked_up'`,content:{playerId:n(t.number),initial:`boolean`}}),defuser_dropped:Q.and({type:`'defuser_dropped'`,content:{playerId:n(t.number)}}),player_ping_updated:De,player_life_state_changed:Q.and({type:`'player_life_state_changed'`,content:{playerId:n(t.number),lifeState:C}}),player_died:Q.and({type:`'player_died'`,content:{playerId:n(t.number),instigatorPlayerId:n(t.number),headshot:`boolean`}}),player_downed:Q.and({type:`'player_downed'`,content:{playerId:n(t.number),instigatorPlayerId:n(t.number)}}),player_ping_id_changed:Q.and({type:`'player_ping_id_changed'`,content:{playerId:n(t.number),pingId:`number`}}),player_team_changed:Q.and({type:`'player_team_changed'`,content:{playerId:n(t.number),team:b}})}).export();function ke(){return{key:`siege`,events:Oe}}export{Z as BaseEvent,_ as SIEGE_BOT_ID,re as SIEGE_DAMAGE_HIT_ZONES,ne as SIEGE_DAMAGE_TEAM_TYPES,E as SIEGE_DAMAGE_TYPES,A as SIEGE_GAME_MODES_TO_ID,j as SIEGE_GAME_MODE_LABELS,ee as SIEGE_GAME_MODE_PHASES,M as SIEGE_GAME_MODE_TYPES_TO_ID,N as SIEGE_GAME_MODE_TYPE_LABELS,z as SIEGE_MAP_LABELS,R as SIEGE_MAP_TO_ID,F as SIEGE_OPERATOR_LABELS,I as SIEGE_OPERATOR_META,P as SIEGE_OPERATOR_TO_ID,te as SIEGE_PLAYER_LIFE_STATES,w as SIEGE_PROFILE_PLATFORMS,B as SIEGE_ROUND_STATES_TO_ID,V as SIEGE_ROUND_STATE_LABELS,x as SIEGE_SIDES,L as SIEGE_SIDE_OPERATORS,y as SIEGE_TEAMS,U as SIEGE_TIME_OF_DAY_LABELS,H as SIEGE_TIME_OF_DAY_TO_ID,k as SiegeDamageHitZoneSchema,p as SiegeDamageSourceId,O as SiegeDamageTeamTypeSchema,D as SiegeDamageTypeSchema,h as SiegeGameMode,v as SiegeGameModePhaseSchema,a as SiegeGameModeTypeNameId,f as SiegeItemObjectId,s as SiegeMapNameId,l as SiegeMatchId,m as SiegeMatchType,o as SiegeOperatorNameId,u as SiegePlayerId,C as SiegePlayerLifeStateSchema,d as SiegeProfileId,T as SiegeProfilePlatformSchema,c as SiegeRoundState,S as SiegeSideSchema,b as SiegeTeamSchema,g as SiegeTimeOfDay,se as isSiegeRoundStateCompleted,ae as isSiegeRoundStateVictory,ke as module};
|
|
1
|
+
import{scope as e,type as t}from"arktype";function n(e){return e}function r(e){return e}function i(e){return e?t=>(e(t),t):r}const a=i(),o=i(),s=i(),c=i(),l=i(),u=i(),d=i(),f=i(),p=i(),m=i(),h=i(),g=i(),_=`00000000-0000-0000-0000-000000000000`,ee=[`intro`,`planning`,`prep`,`action`,`results`,`invalid`,`first`],v=t(`string`),y=[0,1],b=t(`===`,...y),x=[`attacker`,`defender`,`both`,`invalid`],S=t(`string`),te=[`normal`,`overhealed`,`low_health`,`downed`,`dead`,`respawning`],C=t(`string`),w=[`pc`,`xbox`,`playstation`,`invalid`],T=t(`string`),E=`bullet.melee.explosive.falling.regeneration.unknown.debris.projectile.downed.gas.thermal_explosion.melee_gadget.barbed_wire.electric.reinforcement.frag.paralyzed.emp.break.cleanup.interrogation.melee-finisher.toxic.toxic-explosion.pneumatic.body-contact.contact-explosion.flash.parasite-spike.laser.concussion.blowtorch.taser-shield.reverse-friendly-fire.self-destroyed.area-control.fire.breach-kick.break-wall.blade-mine.melee-pushback.supressive-fire.gas-pipe-fire.invalid`.split(`.`),D=t(`string`),ne=[`unknown`,`enemy`,`friendly`,`invalid`],O=t(`string`),re=[`invalid`,`head`,`left_upper_arm`,`right_upper_arm`,`left_forearm`,`right_forearm`,`left_hand`,`right_hand`,`upper_torso`,`lower_torso`,`crotch`,`left_thigh`,`right_thigh`,`left_calf`,`right_calf`,`left_foot`,`right_foot`,`neck`,`clothing`],k=t(`string`),A=Object.freeze({teamDeathmatch:h(`TEAM DEATHMATCH`),goldenGun:h(`GOLDEN GUN`),freeForAll:h(`FREE FOR ALL`),weaponRoulette:h(`WEAPON ROULETTE`),dualFront:h(`DUAL FRONT`),bomb:h(`BOMB`),versusAi:h(`VERSUS AI`),hostage:h(`HOSTAGE`),threeVsThreeSecureArea:h(`3 VS 3 SECURE AREA`),targetDrill:h(`TARGET DRILL`),rengoku:h(`RENGOKU`),hideAndSeek:h(`HIDE AND SEEK`)}),j=Object.freeze({[A.teamDeathmatch]:`Team Deathmatch`,[A.goldenGun]:`Golden Gun`,[A.freeForAll]:`Free For All`,[A.weaponRoulette]:`Weapon Roulette`,[A.dualFront]:`Dual Front`,[A.bomb]:`Bomb`,[A.versusAi]:`Versus AI`,[A.hostage]:`Hostage`,[A.threeVsThreeSecureArea]:`3v3 Secure Area`,[A.targetDrill]:`Target Drill`,[A.rengoku]:`Rengoku`,[A.hideAndSeek]:`Hide and Seek`}),M=Object.freeze({ranked:a(205379),quickMatch:a(138115),customGame:a(62008),versusAi:a(397300),standard:a(393930),arcade:a(320109),siegeCup:a(414089),dualFront:a(420611),showdown:a(305544),trainingGrounds:a(-1),unranked:a(310813),deathmatch:a(420611),rengoku:a(359430),muteProtocol:a(368421),fieldTraining:a(423927),hideAndSeek:a(310854)}),N=Object.freeze({[M.quickMatch]:`Quick Match`,[M.ranked]:`Ranked`,[M.customGame]:`Custom Game`,[M.versusAi]:`Versus AI`,[M.standard]:`Standard`,[M.arcade]:`Arcade`,[M.siegeCup]:`Siege Cup`,[M.dualFront]:`Dual Front`,[M.showdown]:`Showdown`,[M.trainingGrounds]:`Training Grounds`,[M.unranked]:`Unranked`,[M.deathmatch]:`Deathmatch`,[M.rengoku]:`Rengoku`,[M.muteProtocol]:`M.U.T.E Protocol`,[M.fieldTraining]:`Field Training`,[M.hideAndSeek]:`Hide and Seek`}),P=Object.freeze({glaz:o(62242),blitz:o(62243),buck:o(62244),sledge:o(62245),ash:o(62246),thermite:o(62247),castle:o(62248),rook:o(62249),pulse:o(62250),doc:o(62251),mute:o(62252),smoke:o(62253),recruit:o(62555),thatcher:o(65143),twitch:o(65156),montagne:o(65159),bandit:o(65165),fuze:o(65168),kapkan:o(65171),tachanka:o(65174),jager:o(113049),iq:o(113052),frost:o(186159),blackbeard:o(187249),valkyrie:o(187252),caveira:o(207671),capitao:o(207674),echo:o(209180),hibana:o(209183),mira:o(222172),jackal:o(222182),ying:o(239334),lesion:o(239337),ela:o(254595),zofia:o(254606),dokkaebi:o(273652),vigil:o(273663),finka:o(281457),lion:o(281463),alibi:o(282399),maestro:o(285888),maverick:o(288504),clash:o(288526),nomad:o(293435),kaid:o(293436),gridlock:o(298589),mozzie:o(298616),nokk:o(299657),warden:o(299668),goyo:o(304196),amaru:o(308469),kali:o(310757),wamai:o(310768),oryx:o(317965),iana:o(317976),melusi:o(320062),ace:o(320073),zero:o(328927),aruni:o(328940),flores:o(334086),thunderbird:o(336466),osa:o(344493),thorn:o(349405),azami:o(354314),sens:o(357386),grim:o(365404),solis:o(376836),brava:o(382419),fenrir:o(386388),ram:o(392904),tubarao:o(395594),deimos:o(400504),striker:o(404278),sentry:o(404290),skopos:o(408405),rauora:o(421052),denari:o(2437779699),solidSnake:o(3786633270),noor:o(3523569805)}),F=Object.freeze({[P.glaz]:`glaz`,[P.blitz]:`blitz`,[P.buck]:`buck`,[P.sledge]:`sledge`,[P.ash]:`ash`,[P.thermite]:`thermite`,[P.castle]:`castle`,[P.rook]:`rook`,[P.pulse]:`pulse`,[P.doc]:`doc`,[P.mute]:`mute`,[P.smoke]:`smoke`,[P.recruit]:`recruit`,[P.thatcher]:`thatcher`,[P.twitch]:`twitch`,[P.montagne]:`montagne`,[P.bandit]:`bandit`,[P.fuze]:`fuze`,[P.kapkan]:`kapkan`,[P.tachanka]:`tachanka`,[P.jager]:`jager`,[P.iq]:`iq`,[P.frost]:`frost`,[P.blackbeard]:`blackbeard`,[P.valkyrie]:`valkyrie`,[P.caveira]:`caveira`,[P.capitao]:`capitao`,[P.echo]:`echo`,[P.hibana]:`hibana`,[P.mira]:`mira`,[P.jackal]:`jackal`,[P.ying]:`ying`,[P.lesion]:`lesion`,[P.ela]:`ela`,[P.zofia]:`zofia`,[P.dokkaebi]:`dokkaebi`,[P.vigil]:`vigil`,[P.finka]:`finka`,[P.lion]:`lion`,[P.alibi]:`alibi`,[P.maestro]:`maestro`,[P.maverick]:`maverick`,[P.clash]:`clash`,[P.nomad]:`nomad`,[P.kaid]:`kaid`,[P.gridlock]:`gridlock`,[P.mozzie]:`mozzie`,[P.nokk]:`nokk`,[P.warden]:`warden`,[P.goyo]:`goyo`,[P.amaru]:`amaru`,[P.kali]:`kali`,[P.wamai]:`wamai`,[P.oryx]:`oryx`,[P.iana]:`iana`,[P.melusi]:`melusi`,[P.ace]:`ace`,[P.zero]:`zero`,[P.aruni]:`aruni`,[P.flores]:`flores`,[P.thunderbird]:`thunderbird`,[P.osa]:`osa`,[P.thorn]:`thorn`,[P.azami]:`azami`,[P.sens]:`sens`,[P.grim]:`grim`,[P.solis]:`solis`,[P.brava]:`brava`,[P.fenrir]:`fenrir`,[P.ram]:`ram`,[P.tubarao]:`tubarao`,[P.deimos]:`deimos`,[P.striker]:`striker`,[P.sentry]:`sentry`,[P.skopos]:`skopos`,[P.rauora]:`rauora`,[P.solidSnake]:`solid snake`,[P.denari]:`denari`,[P.noor]:`noor`}),I=Object.freeze({[P.striker]:{name:`Striker`,role:`attacker`},[P.sledge]:{name:`Sledge`,role:`attacker`},[P.thatcher]:{name:`Thatcher`,role:`attacker`},[P.ash]:{name:`Ash`,role:`attacker`},[P.thermite]:{name:`Thermite`,role:`attacker`},[P.twitch]:{name:`Twitch`,role:`attacker`},[P.montagne]:{name:`Montagne`,role:`attacker`},[P.glaz]:{name:`Glaz`,role:`attacker`},[P.fuze]:{name:`Fuze`,role:`attacker`},[P.blitz]:{name:`Blitz`,role:`attacker`},[P.iq]:{name:`IQ`,role:`attacker`},[P.buck]:{name:`Buck`,role:`attacker`},[P.blackbeard]:{name:`Blackbeard`,role:`attacker`},[P.capitao]:{name:`Capitão`,role:`attacker`},[P.hibana]:{name:`Hibana`,role:`attacker`},[P.jackal]:{name:`Jackal`,role:`attacker`},[P.ying]:{name:`Ying`,role:`attacker`},[P.zofia]:{name:`Zofia`,role:`attacker`},[P.dokkaebi]:{name:`Dokkaebi`,role:`attacker`},[P.lion]:{name:`Lion`,role:`attacker`},[P.finka]:{name:`Finka`,role:`attacker`},[P.maverick]:{name:`Maverick`,role:`attacker`},[P.nomad]:{name:`Nomad`,role:`attacker`},[P.gridlock]:{name:`Gridlock`,role:`attacker`},[P.nokk]:{name:`Nøkk`,role:`attacker`},[P.amaru]:{name:`Amaru`,role:`attacker`},[P.kali]:{name:`Kali`,role:`attacker`},[P.iana]:{name:`Iana`,role:`attacker`},[P.ace]:{name:`Ace`,role:`attacker`},[P.zero]:{name:`Zero`,role:`attacker`},[P.flores]:{name:`Flores`,role:`attacker`},[P.osa]:{name:`Osa`,role:`attacker`},[P.sens]:{name:`Sens`,role:`attacker`},[P.grim]:{name:`Grim`,role:`attacker`},[P.brava]:{name:`Brava`,role:`attacker`},[P.ram]:{name:`Ram`,role:`attacker`},[P.deimos]:{name:`Deimos`,role:`attacker`},[P.rauora]:{name:`Rauora`,role:`attacker`},[P.sentry]:{name:`Sentry`,role:`defender`},[P.smoke]:{name:`Smoke`,role:`defender`},[P.mute]:{name:`Mute`,role:`defender`},[P.castle]:{name:`Castle`,role:`defender`},[P.pulse]:{name:`Pulse`,role:`defender`},[P.doc]:{name:`Doc`,role:`defender`},[P.rook]:{name:`Rook`,role:`defender`},[P.kapkan]:{name:`Kapkan`,role:`defender`},[P.tachanka]:{name:`Tachanka`,role:`defender`},[P.jager]:{name:`Jäger`,role:`defender`},[P.bandit]:{name:`Bandit`,role:`defender`},[P.frost]:{name:`Frost`,role:`defender`},[P.valkyrie]:{name:`Valkyrie`,role:`defender`},[P.caveira]:{name:`Caveira`,role:`defender`},[P.echo]:{name:`Echo`,role:`defender`},[P.mira]:{name:`Mira`,role:`defender`},[P.lesion]:{name:`Lesion`,role:`defender`},[P.ela]:{name:`Ela`,role:`defender`},[P.vigil]:{name:`Vigil`,role:`defender`},[P.alibi]:{name:`Alibi`,role:`defender`},[P.maestro]:{name:`Maestro`,role:`defender`},[P.clash]:{name:`Clash`,role:`defender`},[P.kaid]:{name:`Kaid`,role:`defender`},[P.mozzie]:{name:`Mozzie`,role:`defender`},[P.warden]:{name:`Warden`,role:`defender`},[P.goyo]:{name:`Goyo`,role:`defender`},[P.wamai]:{name:`Wamai`,role:`defender`},[P.oryx]:{name:`Oryx`,role:`defender`},[P.melusi]:{name:`Melusi`,role:`defender`},[P.aruni]:{name:`Aruni`,role:`defender`},[P.thunderbird]:{name:`Thunderbird`,role:`defender`},[P.thorn]:{name:`Thorn`,role:`defender`},[P.azami]:{name:`Azami`,role:`defender`},[P.solis]:{name:`Solis`,role:`defender`},[P.fenrir]:{name:`Fenrir`,role:`defender`},[P.tubarao]:{name:`Tubarao`,role:`defender`},[P.skopos]:{name:`Skopós`,role:`defender`},[P.denari]:{name:`Denari`,role:`defender`},[P.solidSnake]:{name:`Solid Snake`,role:`attacker`},[P.noor]:{name:`Noor`,role:`defender`}}),L=Object.freeze({attacker:Object.entries(I).filter(([e,t])=>t.role===`attacker`).map(([e])=>({...I[o(Number(e))],id:o(Number(e))})),defender:Object.entries(I).filter(([e,t])=>t.role===`defender`).map(([e])=>({...I[o(Number(e))],id:o(Number(e))}))}),R=Object.freeze({favela:s(202283),fortress:s(293334),villa:s(286407),neighborhood:s(333785),themePark:s(229325),stadium:s(338641),outback:s(299534),yacht:s(62226),emeraldPlains:s(358871),chalet:s(62230),coastline:s(217482),bank:s(62228),consulate:s(62227),tower:s(255669),nighthavenLabs:s(375492),presidentialPlane:s(62225),house:s(62221),kafeDostoyevsky:s(62232),border:s(201746),closeQuarter:s(365400),lair:s(396234),herefordBase:s(62223),skyscraper:s(208094),cqbBasics:s(196157),oregon:s(62222),fortTruth:s(307723),kanal:s(62229),stadium2020:s(357300),clubhouse:s(62224),district:s(1193341205),shinden:s(359432),stadiumBravo:s(376421),muteCommTower:s(328922),doktorsLab:s(560244830),calypsoCasino:s(1913017857)}),z=Object.freeze({[R.favela]:`Favela`,[R.fortress]:`Fortress`,[R.villa]:`Villa`,[R.neighborhood]:`Neighborhood`,[R.themePark]:`Theme Park`,[R.stadium]:`Stadium`,[R.outback]:`Outback`,[R.yacht]:`Yacht`,[R.emeraldPlains]:`Emerald Plains`,[R.chalet]:`Chalet`,[R.coastline]:`Coastline`,[R.bank]:`Bank`,[R.consulate]:`Consulate`,[R.tower]:`Tower`,[R.nighthavenLabs]:`Nighthaven Labs`,[R.presidentialPlane]:`Presidential Plane`,[R.house]:`House`,[R.kafeDostoyevsky]:`Kafe Dostoyevsky`,[R.border]:`Border`,[R.closeQuarter]:`Close Quarter`,[R.outback]:`Outback`,[R.lair]:`Lair`,[R.herefordBase]:`Hereford Base`,[R.skyscraper]:`Skyscraper`,[R.cqbBasics]:`CQB Basics`,[R.oregon]:`Oregon`,[R.outback]:`Outback`,318512:`Stadium`,[R.fortTruth]:`Fort Truth`,[R.kanal]:`Kanal`,[R.cqbBasics]:`CQB Basics`,[R.stadium2020]:`Stadium 2020`,[R.clubhouse]:`Clubhouse`,[R.district]:`District`,[R.shinden]:`Shinden`,[R.stadiumBravo]:`Stadium Bravo`,[R.muteCommTower]:`M.U.T.E Comm Tower`,[R.doktorsLab]:`Doktor's Lab`,[R.calypsoCasino]:`Calypso Casino`}),B=Object.freeze({notPlayed:c(0),inProgress:c(1),lost:c(2),enemiesEliminated:c(3),objectiveComplete:c(4),timeRanOut:c(5),enemiesSurrendered:c(6),unknownReason:c(7),matchCancelled:c(8)}),V=Object.freeze({[B.notPlayed]:`Not Played`,[B.inProgress]:`In Progress`,[B.lost]:`Lost`,[B.enemiesEliminated]:`Enemies Eliminated`,[B.objectiveComplete]:`Objective Complete`,[B.timeRanOut]:`Time ran out`,[B.enemiesSurrendered]:`Enemies Surrendered`,[B.unknownReason]:`Unknown Reason`,[B.matchCancelled]:`Match Cancelled`}),H=Object.freeze({day:g(177839),night:g(177840)}),U=Object.freeze({[H.day]:`Day`,[H.night]:`Night`}),W=()=>t({id:`number`,value:`string`}),G=t({kills:`number`,deaths:`number`,assists:`number`,gameModeActions:`number`,score:`number`}),K=t({instigatorPlayerId:n(t.number),receiverPlayerId:n(t.number),damageAmount:`number`,remainingHealth:`number`,preDamageHealth:`number`,maxHealth:`number`,damageType:D,damageTeamType:O,damageHitZone:k,damageSourceId:n(t.number).or(`null`),damageItemId:n(t.number).or(`null`),damageItemInstanceId:n(t.number).or(`null`),damageTime:`number`}),q=t({index:`number`,roundsUntilNextSegment:`number`,segmentSize:`number`,segmentIndex:`number`,team0:{role:S,state:n(t.number)},team1:{role:S,state:n(t.number)}}),J=t({name:W(),timeOfDay:W()}),Y=t({playerId:n(t.number),finalHealth:`number`,finalLifeState:C,operatorName:W()}),X=t({roundData:q,damageEvents:K.array(),players:Y.array()}),Z=t({game:`string`,type:`string`,creationTime:`number`}),ie=[B.enemiesEliminated,B.objectiveComplete,B.timeRanOut,B.enemiesSurrendered,B.unknownReason];function ae(e){return ie.includes(e)}const oe=[B.notPlayed,B.inProgress];function se(e){return!oe.includes(e)}const Q=Z.and({game:`'siege'`}),ce=Q.and({type:`'match_started'`,content:{gameMode:n(t.string),gameType:W(),matchType:n(t.string),matchId:n(t.string),map:J,isRoundBased:`boolean`,currentRoundIndex:`number`,rounds:q.array()}}),le=Q.and({type:`'started_queuing'`,content:{gameMode:n(t.string),gameType:W(),matchType:n(t.string)}}),ue=Q.and({type:`'stopped_queuing'`}),de=Q.and({type:`'match_ended'`}),fe=Q.and({type:`'map_changed'`,content:{map:J}}),pe=Q.and({type:`'operator_ban_voting_started'`,content:{team:b,index:`number`,side:S}}),me=Q.and({type:`'operator_banned'`,content:{team:b,index:`number`,side:S,operatorName:W().or(`null`)}}),he=Q.and({type:`'operator_ban_cleared'`,content:{team:b,index:`number`}}),ge=Q.and({type:`'round_ended'`,content:X}),_e=Q.and({type:`'phase_changed'`,content:{phase:v}}),ve=Q.and({type:`'player_joined'`,content:{playerId:n(t.number),username:`string`,pcUsername:`string | null`,profileId:n(t.string),isBot:`boolean`,isEnemy:`boolean`,isSquadMember:`boolean`,isLocalPlayer:`boolean`,side:S,team:b,platform:T,isPrivacyUsername:`boolean`,hasAvatarHidden:`boolean`,hasCommendStreak:`boolean`,pingId:`number`,matchStats:G,lifeState:C,ping:`number`}}).pipe(e=>({...e,content:{...e.content,startingSide:e.content.side}})),ye=Q.and({type:`'player_left'`,content:{playerId:n(t.number)}}),be=Q.and({type:`'player_operator_changed'`,content:{playerId:n(t.number),operatorName:W()}}),xe=Q.and({type:`'player_location_changed'`,content:{playerId:n(t.number),locationName:`string`}}),Se=Q.and({type:`'player_side_changed'`,content:{playerId:n(t.number),side:S}}),Ce=Q.and({type:`'player_score_changed'`,content:{playerId:n(t.number),score:`number`}}),we=Q.and({type:`'player_kills_changed'`,content:{playerId:n(t.number),kills:`number`}}),Te=Q.and({type:`'player_deaths_changed'`,content:{playerId:n(t.number),deaths:`number`}}),$=Q.and({type:`'player_assists_changed'`,content:{playerId:n(t.number),assists:`number`}}),Ee=Q.and({type:`'player_game_mode_actions_changed'`,content:{playerId:n(t.number),gameModeActions:`number`}}),De=Q.and({type:`'player_ping_updated'`,content:{playerId:n(t.number),ping:`number`}}),Oe=e({"#event1":`started_queuing | stopped_queuing | match_started | match_ended | map_changed | operator_ban_voting_started | operator_banned | operator_ban_cleared | round_ended | phase_changed | player_joined | player_left | player_operator_changed`,"#event2":`player_location_changed | player_side_changed | player_score_changed | player_kills_changed | player_deaths_changed | player_assists_changed | player_game_mode_actions_changed | player_life_state_changed | player_died | player_downed | player_ping_id_changed | player_team_changed | defuser_planted | defuser_sabotaged | defuser_picked_up | defuser_dropped | player_ping_updated`,event:`event1 | event2`,started_queuing:le,stopped_queuing:ue,match_started:ce,match_ended:de,map_changed:fe,operator_ban_voting_started:pe,operator_banned:me,operator_ban_cleared:he,round_ended:ge,phase_changed:_e,player_joined:ve,player_left:ye,player_operator_changed:be,player_location_changed:xe,player_side_changed:Se,player_score_changed:Ce,player_kills_changed:we,player_deaths_changed:Te,player_assists_changed:$,player_game_mode_actions_changed:Ee,defuser_planted:Q.and({type:`'defuser_planted'`,content:{playerId:n(t.number)}}),defuser_sabotaged:Q.and({type:`'defuser_sabotaged'`,content:{playerId:n(t.number)}}),defuser_picked_up:Q.and({type:`'defuser_picked_up'`,content:{playerId:n(t.number),initial:`boolean`}}),defuser_dropped:Q.and({type:`'defuser_dropped'`,content:{playerId:n(t.number)}}),player_ping_updated:De,player_life_state_changed:Q.and({type:`'player_life_state_changed'`,content:{playerId:n(t.number),lifeState:C}}),player_died:Q.and({type:`'player_died'`,content:{playerId:n(t.number),instigatorPlayerId:n(t.number),headshot:`boolean`}}),player_downed:Q.and({type:`'player_downed'`,content:{playerId:n(t.number),instigatorPlayerId:n(t.number)}}),player_ping_id_changed:Q.and({type:`'player_ping_id_changed'`,content:{playerId:n(t.number),pingId:`number`}}),player_team_changed:Q.and({type:`'player_team_changed'`,content:{playerId:n(t.number),team:b}})}).export();function ke(){return{key:`siege`,events:Oe}}export{Z as BaseEvent,_ as SIEGE_BOT_ID,re as SIEGE_DAMAGE_HIT_ZONES,ne as SIEGE_DAMAGE_TEAM_TYPES,E as SIEGE_DAMAGE_TYPES,A as SIEGE_GAME_MODES_TO_ID,j as SIEGE_GAME_MODE_LABELS,ee as SIEGE_GAME_MODE_PHASES,M as SIEGE_GAME_MODE_TYPES_TO_ID,N as SIEGE_GAME_MODE_TYPE_LABELS,z as SIEGE_MAP_LABELS,R as SIEGE_MAP_TO_ID,F as SIEGE_OPERATOR_LABELS,I as SIEGE_OPERATOR_META,P as SIEGE_OPERATOR_TO_ID,te as SIEGE_PLAYER_LIFE_STATES,w as SIEGE_PROFILE_PLATFORMS,B as SIEGE_ROUND_STATES_TO_ID,V as SIEGE_ROUND_STATE_LABELS,x as SIEGE_SIDES,L as SIEGE_SIDE_OPERATORS,y as SIEGE_TEAMS,U as SIEGE_TIME_OF_DAY_LABELS,H as SIEGE_TIME_OF_DAY_TO_ID,k as SiegeDamageHitZoneSchema,p as SiegeDamageSourceId,O as SiegeDamageTeamTypeSchema,D as SiegeDamageTypeSchema,h as SiegeGameMode,v as SiegeGameModePhaseSchema,a as SiegeGameModeTypeNameId,f as SiegeItemObjectId,s as SiegeMapNameId,l as SiegeMatchId,m as SiegeMatchType,o as SiegeOperatorNameId,u as SiegePlayerId,C as SiegePlayerLifeStateSchema,d as SiegeProfileId,T as SiegeProfilePlatformSchema,c as SiegeRoundState,S as SiegeSideSchema,b as SiegeTeamSchema,g as SiegeTimeOfDay,se as isSiegeRoundStateCompleted,ae as isSiegeRoundStateVictory,ke as module};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@overlayed/app",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "Overlayed app",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"typescript"
|
|
@@ -80,11 +80,11 @@
|
|
|
80
80
|
"msw": "^2.14.6",
|
|
81
81
|
"typescript": "^6.0.3",
|
|
82
82
|
"vite": "^8.1.3",
|
|
83
|
-
"@overlayed/api": "0.0.6",
|
|
84
83
|
"@overlayed/cortex-client": "0.0.6",
|
|
85
84
|
"@overlayed/events": "0.0.4",
|
|
86
|
-
"@overlayed/native-managers": "0.0.4",
|
|
87
85
|
"@overlayed/sand": "0.0.0",
|
|
86
|
+
"@overlayed/native-managers": "0.0.4",
|
|
87
|
+
"@overlayed/api": "0.0.6",
|
|
88
88
|
"@overlayed/shared-node": "0.0.4",
|
|
89
89
|
"@overlayed/siege": "0.0.5",
|
|
90
90
|
"@overlayed/universal": "0.0.0",
|