@pobammer-ts/small-rules 2.5.0 → 2.5.2
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.js +3 -3
- package/package.json +128 -128
package/dist/index.js
CHANGED
|
@@ -5,9 +5,9 @@ import{definePlugin as e,defineRule as t}from"oxlint-plugin-utilities";import n
|
|
|
5
5
|
`&&--g;break}return u.push(e.removeRange([g,m])),u}const wr=t({create(e){let{sourceCode:t}=e;function n(n){let r=0;for(;r<n.length;){let i=Sr(t,n,r);if(i===void 0){r+=1;continue}e.report({fix(e){return Cr(e,t,i)},messageId:`preferArrayLiteral`,node:i.declaration}),r=n.indexOf(i.lastAssignmentStatement)+1}}return{BlockStatement(e){n(e.body)},Program(e){n(e.body)}}},meta:{docs:{description:`Disallow new Array<T>() followed by contiguous index assignments; use an array literal instead.`},fixable:`code`,messages:{preferArrayLiteral:`Use an array literal instead of new Array<T>() followed by index assignments.`},schema:[],type:`suggestion`}});function Tr(e){return typeof e!=`object`||!e?!1:`allowAutofix`in e?e.allowAutofix===void 0||typeof e.allowAutofix==`boolean`:!0}function Er(e,t,n){if(e.type!==t.type)return!1;switch(e.type){case`CallExpression`:return t.type===`CallExpression`&&n.getText(e)===n.getText(t);case`Identifier`:return t.type===`Identifier`&&e.name===t.name;case`Literal`:return t.type===`Literal`&&e.value===t.value&&e.raw===t.raw;case`MemberExpression`:return t.type===`MemberExpression`&&Dr(e,t,n);case`Super`:return t.type===`Super`;case`ThisExpression`:return t.type===`ThisExpression`;default:return!1}}function Dr(e,t,n){return e.computed!==t.computed||e.optional!==t.optional||!Er(e.object,t.object,n)?!1:e.computed?Or(e.property,t.property,n):kr(e.property,t.property)}function Or(e,t,n){return rt(e)&&rt(t)&&Er(e,t,n)}function kr(e,t){return e.type===`PrivateIdentifier`||t.type===`PrivateIdentifier`?e.type===`PrivateIdentifier`&&t.type===`PrivateIdentifier`&&e.name===t.name:t.type===`Identifier`&&e.type===`Identifier`&&e.name===t.name}function Ar(e,t){switch(e.type){case`Identifier`:case`ThisExpression`:return!0;case`Literal`:return t;case`MemberExpression`:return e.optional||!Ar(e.object,!1)?!1:e.computed?rt(e.property)?Ar(e.property,!0):!1:e.property.type===`Identifier`||e.property.type===`PrivateIdentifier`;default:return!1}}function jr(e){return Ar(e,!1)}function Mr(e){return e.type!==`CallExpression`||e.optional||e.arguments.length>0||e.callee.type!==`MemberExpression`||e.callee.optional||e.callee.computed||e.callee.property.type!==`Identifier`?!1:e.callee.property.name===`size`}function Nr(e,t,n){if(!(e.operator!==`=`||e.left.type!==`MemberExpression`||!e.left.computed)){if(n===`roblox-ts`&&Mr(e.left.property))return Er(e.left.object,e.left.property.callee.object,t)?e.left:void 0;if(n===`standard`){let{property:n}=e.left;if(n.type===`MemberExpression`&&!n.optional&&!n.computed&&n.property.type===`Identifier`&&n.property.name===`length`)return Er(e.left.object,n.object,t)?e.left:void 0}}}const Pr=t({create(e){let[t]=e.options,n=Tr(t)&&t.allowAutofix,r=t?.environment===`standard`?`standard`:`roblox-ts`,{sourceCode:i}=e;return{AssignmentExpression(t){let a=Nr(t,i,r);if(a===void 0)return;let o=t.parent.type===`ExpressionStatement`?t.parent:void 0;if(!(n&&o!==void 0&&jr(a.object))){e.report({messageId:`usePush`,node:t});return}let s=i.getText(a.object),c=i.getText(t.right);e.report({fix(e){return e.replaceText(o,`${s}.push(${c});`)},messageId:`usePush`,node:t})}}},meta:{docs:{description:`Disallow array append assignments using array[array.size()] = value (roblox-ts) or array[array.length] = value (standard) and prefer push-based appends.`},fixable:`code`,messages:{usePush:`Do not append with array[array.size()] = value or array[array.length] = value. Use array.push(value) instead.`},schema:[{additionalProperties:!1,properties:{allowAutofix:{default:!1,type:`boolean`},environment:{...mn,default:`roblox-ts`,description:`Array environment mode: 'roblox-ts' checks array[array.size()]; 'standard' checks array[array.length].`}},type:`object`}],type:`problem`}}),Fr=/^set[A-Z]/u;function L({callee:e}){if(e.type===`Identifier`)return e.name;if(e.type===`MemberExpression`&&e.property.type===`Identifier`)return e.property.name}function Ir(e){return Fr.test(e)}function Lr(e){let[t]=e.arguments;return t?.type===`ArrowFunctionExpression`||t?.type===`FunctionExpression`?t:void 0}function Rr(e,t){let n=[e];for(;n.length>0;){let e=n.pop();if(e===void 0)break;t(e),Br(e,n)}}function zr(e,t){t(e);for(let n of Object.values(e))Ur(n,e,t)}function Br(e,t){for(let n in e)se(n)||Vr(Reflect.get(e,n),e,t)}function Vr(e,t,n){if(!(typeof e!=`object`||!e||e===t.parent)){if(Array.isArray(e)){Hr(e,t,n);return}D(e)&&n.push(e)}}function Hr(e,t,n){for(let r=e.length-1;r>=0;--r){let i=e[r];i!==t.parent&&D(i)&&n.push(i)}}function Ur(e,t,n){if(Array.isArray(e)){for(let r of e)Ur(r,t,n);return}e===t.parent||!D(e)||zr(e,n)}function Wr(e){let{key:t}=e;if(t.type===`Identifier`)return t.name;if(t.type===`Literal`&&y(t.value))return t.value}function Gr(e){let{value:t}=e;if(t.type===`Identifier`)return t;if(t.type===`AssignmentPattern`&&t.left.type===`Identifier`)return t.left}function Kr(e){let t=0;return Rr(e,e=>{e.type!==`CallExpression`||e.callee.type!==`Identifier`||Ir(e.callee.name)&&(t+=1)}),t}function qr(e,t,n,r,i){if(t===void 0)return 0;if(t.type===`SpreadElement`)return 3;let a=w(t);return a.type===`ArrayExpression`?a.elements.length===0?1:i(e,a,n,r)?2:3:3}const Jr=new Set([`catch`,`finally`,`then`]);function Yr(e){let t=new Set;for(let n of e.body)n.type!==`MethodDefinition`||n.kind!==`method`||!n.value.async||n.key.type===`Identifier`&&t.add(n.key.name);return t}function Xr(e){return e.callee.type!==`MemberExpression`||e.callee.property.type!==`Identifier`?!1:Jr.has(e.callee.property.name)}function Zr({callee:e}){let t=w(e);return Fe(t)&&t.async}function Qr({callee:e},t){if(!(e.type!==`MemberExpression`||e.object.type!==`ThisExpression`||e.property.type!==`Identifier`))return t.has(e.property.name)?e.property.name:void 0}function $r(e){let{parent:t}=e;return t?.type!==`AssignmentExpression`||t.right!==e?!1:t.left.type===`MemberExpression`&&t.left.object.type===`ThisExpression`}function ei(e){let{parent:t}=e;if(!(t?.type!==`VariableDeclarator`||t.init!==e))return t.id.type===`Identifier`?t.id.name:void 0}function ti(e){return!Fe(e)||e.parent.type===`ParenthesizedExpression`&&e.parent.parent.type===`CallExpression`&&e.parent.parent.callee===e.parent?!1:e.parent.type!==`CallExpression`||e.parent.callee!==e}function ni(e,t){let n=e;for(;n!==t;){let{parent:e}=n;if(e===null)return!1;if(ti(e))return!0;n=e}return!1}function ri(e,t){let n=Qr(e,t);if(n===void 0||$r(e))return;if(e.parent.type===`ExpressionStatement`)return{data:{methodName:n},messageId:`unhandledAsyncCall`,node:e};let r=ei(e);if(r!==void 0)return{data:{variableName:r},messageId:`orphanedPromise`,node:e}}function ii(e,t){let n=[],r=0;function i(i){if(i!==e&&ni(i,e))return;if(i.type===`AwaitExpression`){n[r++]={messageId:`awaitInConstructor`,node:i};return}if(i.type!==`CallExpression`)return;Xr(i)&&(n[r++]={messageId:`promiseChainInConstructor`,node:i}),Zr(i)&&(n[r++]={messageId:`asyncIifeInConstructor`,node:i});let a=ri(i,t);a!==void 0&&(n[r++]=a)}return zr(e,i),n}const ai=t({create(e){function t(t){e.report({data:t.data,messageId:t.messageId,node:t.node})}return{"MethodDefinition[kind='constructor']"(e){if(e.value.type!==`FunctionExpression`||e.value.body?.type!==`BlockStatement`||e.parent.type!==`ClassBody`)return;let n=Yr(e.parent),r=e.value.body,i=ii(r,n);for(let e of i)t(e)}}},meta:{docs:{description:`Disallow asynchronous operations inside class constructors. Constructors return immediately, so async work causes race conditions, unhandled rejections, and incomplete object states.`},messages:{asyncIifeInConstructor:`Refactor this asynchronous operation outside of the constructor. Async IIFEs create unhandled promises and incomplete object state.`,awaitInConstructor:`Refactor this asynchronous operation outside of the constructor. Using 'await' in a constructor causes the class to be instantiated before the async operation completes.`,orphanedPromise:`Refactor this asynchronous operation outside of the constructor. Promise assigned to '{{variableName}}' is never consumed - errors will be silently swallowed.`,promiseChainInConstructor:`Refactor this asynchronous operation outside of the constructor. Promise chains (.then/.catch/.finally) in constructors lead to race conditions.`,unhandledAsyncCall:`Refactor this asynchronous operation outside of the constructor. Calling async method '{{methodName}}' without handling its result creates uncontrolled async behavior.`},schema:[],type:`problem`}}),oi=[`PlanckSystem`,`System`,`SystemFunction`,`SystemReturn`,`SystemTableLike`],si=new Set([`comments`,`loc`,`parent`,`range`,`tokens`]);function ci(e){if(e.type===`Identifier`)return e.name;if(e.type===`TSQualifiedName`)return ci(e.right)}function li(e,t){if(e==null)return!1;if(e.type===`TSTypeAnnotation`)return li(e.typeAnnotation,t);if(e.type!==`TSTypeReference`)return!1;let n=ci(e.typeName);return n!==void 0&&t.has(n)}function ui(e,t){for(let n of Object.keys(e)){if(si.has(n))continue;let r=Reflect.get(e,n);r!=null&&t.push(r)}}function di(e,t){let n=[e];for(;n.length>0;){let e=n.pop();if(!(typeof e!=`object`||!e)){if(Array.isArray(e)){for(let t of e)n.push(t);continue}D(e)&&t(e)!==!1&&ui(e,n)}}}function fi(e){if(e.type===`Property`)return e.computed?e.key.type===`Literal`&&typeof e.key.value==`string`?e.key.value:void 0:e.key.type===`Identifier`?e.key.name:void 0}function pi(e,t,n){for(let r of e.properties)if(!(fi(r)!==`system`||r.type!==`Property`)){if(N(r.value))n.add(r.value);else if(r.value.type===`Identifier`){let e=t.get(r.value.name);e!==void 0&&n.add(e)}}}function mi(e){if(e.callee.type===`Identifier`)return e.callee.name;if(e.callee.type===`MemberExpression`)return T(e.callee)}function hi(e,t){e.async||e.body===null||di(e.body,n=>N(n)&&n!==e&&n.async?!1:(n.type===`CallExpression`&&mi(n)?.endsWith(`Async`)===!0&&t(n),!0))}const gi=t({create(e){let t=e.options[0]?.additionalSystemTypeNames??[],n=new Set([...oi,...t]);return{"Program:exit"(t){let r=new Map,i=new Set,a=[];di(t,e=>{if(N(e)){e.id!==null&&r.set(e.id.name,e),li(e.returnType,n)&&i.add(e);return}if(e.type===`VariableDeclarator`&&e.id.type===`Identifier`){if(!li(e.id.typeAnnotation,n)||e.init===null)return;N(e.init)?i.add(e.init):e.init.type===`ObjectExpression`&&a.push(e.init);return}e.type===`TSSatisfiesExpression`&&li(e.typeAnnotation,n)&&e.expression.type===`ObjectExpression`&&a.push(e.expression)});for(let e of a)pi(e,r,i);for(let t of i)hi(t,t=>{e.report({messageId:`noAsyncInSystem`,node:t})})}}},meta:{docs:{description:`Disallow Async-suffixed calls in synchronous Planck system execution.`,recommended:!0},messages:{noAsyncInSystem:`Do not call an Async-suffixed function from a synchronous Planck system.`},schema:[{additionalProperties:!1,properties:{additionalSystemTypeNames:{items:{type:`string`},type:`array`,uniqueItems:!0}},type:`object`}],type:`problem`}}),_i=new Set([`useAsyncEffect`,`useEffect`,`useInsertionEffect`,`useLayoutEffect`,`useMountEffect`,`useReactiveEffect`,`useUnmountEffect`,`useUpdateEffect`]),vi=t({create(e){return{CallExpression(t){let n=L(t);if(n===void 0||!_i.has(n))return;let r=Lr(t);if(r===void 0)return;let i=Kr(r);i<3||e.report({data:{count:String(i)},messageId:`cascadingSetState`,node:t})}}},meta:{docs:{description:`Disallow effect hooks with many cascading state updates.`,recommended:!0},messages:{cascadingSetState:`{{count}} setState calls in a single useEffect — consider using useReducer or deriving state`},type:`problem`}});function yi(e){return Math.round(e>1?e:e*255)}function bi(e){return{reportUnknownComponents:typeof e==`object`&&e&&`reportUnknownComponents`in e?e.reportUnknownComponents===!0:!0}}function xi(e){let t=[],n=0,r=!0;for(let i of e){if(!We(i))return;let e=yi(i.value);t[n++]=e,e!==0&&(r=!1)}return[r,t]}const Si=t({create(e){let t=bi(e.options[0]);return{NewExpression(n){if(!Ie(n,`Color3`))return;let r=n.arguments;if(r.length===0)return;let i=xi(r);if(!i){t.reportUnknownComponents&&e.report({messageId:r.length<3?`useFromRGB`:`onlyZeroArgs`,node:n});return}if(r.length<3){let[t,r=0]=i[1];e.report({fix:e=>e.replaceText(n,`Color3.fromRGB(${t}, ${r}, 0)`),messageId:`useFromRGB`,node:n});return}i[0]||e.report({fix:e=>e.replaceText(n,`Color3.fromRGB(${i[1].join(`, `)})`),messageId:`onlyZeroArgs`,node:n})}}},meta:{docs:{description:`Ban new Color3(...) except new Color3() or new Color3(0, 0, 0). Use Color3.fromRGB() instead.`},fixable:`code`,messages:{onlyZeroArgs:`Use Color3.fromRGB() instead of new Color3(). new Color3() uses floats [0-1] and performs worse than Color3.fromRGB() which uses [0-255]. Only 'new Color3()' or 'new Color3(0, 0, 0)' are allowed.`,useFromRGB:`Use Color3.fromRGB() instead of new Color3(). new Color3() uses floats [0-1] and performs worse than Color3.fromRGB() which uses [0-255].`},schema:[{additionalProperties:!1,properties:{reportUnknownComponents:{default:!0,type:`boolean`}},type:`object`}],type:`problem`}});function Ci(e,t){let n=e.scan(t);return n===0?0:1-(1-e.probability)**n}function wi(e,t){let n=0;for(let r of e){let e=Ci(r,t);n=1-(1-n)*(1-e)}return n}function Ti(e,t){return wi(e,t)>=.9}function Ei(e,t){return t.some(t=>Ti(e,t))}function Di(e){return{probability:e,scan(e){for(let t=0;t<e.length-1;t+=1){let n=e.charAt(t),r=e.charAt(t+1);if(n===n.toLowerCase()&&r===r.toUpperCase()&&r!==r.toLowerCase())return 1}return 0}}}const Oi=/\s+/gu;function ki(e,t){if(t===``)return e.length+1;let n=0,r=0;for(;r<=e.length-t.length;){let i=e.indexOf(t,r);if(i===-1)break;n+=1,r=i+t.length}return n}function Ai(e,t){let n=t.map(e=>y(e)?{pattern:e,type:`string`}:{pattern:new RegExp(e.source,`gu`),type:`regexp`});return{probability:e,scan(e){let t=e.replace(Oi,``),r=0;for(let e of n){if(e.type===`string`){r+=ki(t,e.pattern);continue}e.pattern.lastIndex=0;let n=t.match(e.pattern);n&&(r+=n.length)}return r}}}const ji=/\s/u;function Mi(e,t){let n=new Set(t);return{probability:e,scan(e){for(let t=e.length-1;t>=0;--t){let r=e.charAt(t);if(n.has(r))return 1;if(!ji.test(r)&&r!==`*`&&r!==`/`)return 0}return 0}}}const Ni=/[ \t(),{}]/u;function Pi(e,t){let n=new Set(t);return{probability:e,scan(e){let t=e.split(Ni),r=0;for(let e of t)n.has(e)&&(r+=1);return r}}}const Fi=`public.abstract.class.implements.extends.return.throw.private.protected.enum.continue.assert.boolean.this.instanceof.interface.static.void.super.true.case:.let.const.var.async.await.break.yield.typeof.import.export`.split(`.`),Ii=[`++`,`||`,`&&`,`===`,`?.`,`??`],Li=[`for(`,`if(`,`while(`,`catch(`,`switch(`,`try{`,`else{`,`this.`,`window.`,/;\s+\/\//u,`import '`,`import "`,`require(`],Ri=[`}`,`;`,`{`];function zi(){return[Mi(.95,Ri),Pi(.7,Ii),Pi(.3,Fi),Ai(.95,Li),Di(.5)]}const Bi=new Set([`BreakStatement`,`ContinueStatement`,`LabeledStatement`]);function Vi(e){return Bi.has(e.type)}function Hi(e){return{comments:e,value:e.map(({value:e})=>e).join(`
|
|
6
6
|
`)}}const Ui=zi();function Wi(e,t,n){let r=e.loc.start.line,i=t.loc.start.line;if(r+1!==i)return!1;let a=n.getTokenAfter(e);return!a||a.loc.start.line>i}function Gi(e,t){let n=[],r=0,i=[],a=0;for(let o of e)if(o.type===`Block`)a>0&&(n[r++]=Hi(i),i=[],a=0),n[r++]=Hi([o]);else if(a===0)i[a++]=o;else{let e=i.at(-1);e&&Wi(e,o,t)?i[a++]=o:(n[r++]=Hi(i),i=[o],a=1)}return a>0&&(n[r]=Hi(i)),n}const Ki=/\{/gu,qi=/\}/gu;function Ji(e){let t=(e.match(Ki)??[]).length-(e.match(qi)??[]).length;return t>0?e+`}`.repeat(t):t<0?`{`.repeat(-t)+e:e}function Yi(e){return Ei(Ui,e.split(`
|
|
7
7
|
`))}function Xi(e){return e.type!==`ReturnStatement`&&e.type!==`ThrowStatement`?!1:e.argument?.type===`Identifier`}function Zi(e){return e.type===`UnaryExpression`&&(e.operator===`-`||e.operator===`+`)}function Qi(e){return e.type===`Literal`&&(y(e.value)||b(e.value))}function $i(e){return x(e)&&y(e.type)}function ea(e){let t=[],n=0;for(let r of e)$i(r)&&(t[n++]=r);return t}function ta(e,t){if(e.type!==`ExpressionStatement`)return!1;let{expression:n}=e;return n.type===`Identifier`||n.type===`SequenceExpression`||Zi(n)||Qi(n)||!t.trimEnd().endsWith(`;`)}function na(e,t){if(e.length!==1)return!1;let n=e.at(0);return n?Vi(n)||Xi(n)||ta(n,t):!1}const ra=[/A 'return' statement can only be used within a function body/u];function ia(e){for(let t of e){let e=!1;for(let n of ra)if(n.test(t.message)){e=!0;break}if(!e)return!1}return!0}function aa(e){return(e.errors.length===0||ia(e.errors))&&e.program.body.length>0}function oa(e,t){let n=o(t),r=u(`file${n||`.js`}`,e);if(aa(r))return r;if(n!==`.tsx`&&n!==`.jsx`){let t=u(`file.tsx`,e);if(aa(t))return t}}function sa(e,t){if(!Yi(e))return!1;let n=oa(e,t);return n?!na(ea(n.program.body),e):!1}function ca(e){let t=1;for(let n of e)n===`
|
|
8
|
-
`&&(t+=1);return t}const la=t({create(e){let{maxLines:t=0}=e.options[0]??{};return{"Program:exit"(){let n=Gi(e.sourceCode.getAllComments(),e.sourceCode);for(let r of n){let n=r.value.trim();if(n===`}`||ca(r.value)<=t||!sa(Ji(n),e.filename))continue;let i=r.comments.at(0),a=r.comments.at(-1);i&&a&&e.report({loc:{end:a.loc.end,start:i.loc.start},messageId:`commentedCode`,suggest:[{desc:`Remove this commented out code`,fix(e){return e.removeRange([i.range[0],a.range[1]])}}]})}}}},meta:{docs:{description:`Disallow commented-out code`,recommended:!1},hasSuggestions:!0,messages:{commentedCode:`Commented-out code creates confusion about intent and clutters the codebase. Version control preserves history, making dead code comments unnecessary. Delete the commented code entirely. If needed later, retrieve it from git history.`},schema:[{additionalProperties:!1,properties:{maxLines:{default:0,description:`Maximum number of lines of commented code allowed without reporting. Default 0 means any commented code triggers an error.`,type:`number`}},type:`object`}],type:`suggestion`}});function R(e){return{constant:!0,value:e}}function ua(){return{constant:!1}}function da(e){return{constant:!0,value:e}}function fa(){return{constant:!1}}function pa(e){let t=new Set;if(!e?.loopExitCalls)return t;for(let n of e.loopExitCalls)ne(n)&&t.add(n);return t}function ma(e){let t=w(e);if(t.type===`Identifier`)return t.name;if(t.type!==`MemberExpression`)return;let n=ma(t.object);if(n===void 0||n.length===0)return;let r=T(t);if(!(r===void 0||r.length===0))return`${n}.${r}`}function ha(e,t){if(t.size===0)return!1;let n=ma(e.callee);return n===void 0||n.length===0?!1:t.has(n)}function ga(e,t){return z(e.type===`SpreadElement`?e.argument:e,t)}function z(e,t){if(t.size===0)return!1;let n=w(e);switch(n.type){case`ArrayExpression`:return _a(n,t);case`ArrowFunctionExpression`:case`ClassExpression`:case`FunctionExpression`:return!1;case`AssignmentExpression`:return z(n.right,t);case`AwaitExpression`:return z(n.argument,t);case`BinaryExpression`:return va(n,t);case`CallExpression`:return ya(n,t);case`ConditionalExpression`:return ba(n,t);case`LogicalExpression`:return xa(n,t);case`MemberExpression`:return Sa(n,t);case`NewExpression`:return Ca(n,t);case`SequenceExpression`:return n.expressions.some(e=>z(e,t));case`TaggedTemplateExpression`:return wa(n,t);case`TemplateLiteral`:return n.expressions.some(e=>z(e,t));case`UnaryExpression`:case`UpdateExpression`:return z(n.argument,t);case`YieldExpression`:return n.argument?z(n.argument,t):!1;default:return!1}}function _a(e,t){for(let n of e.elements)if(n!==null&&ga(n,t))return!0;return!1}function va(e,t){let{left:n}=e;return n.type!==`PrivateIdentifier`&&z(n,t)?!0:z(e.right,t)}function ya(e,t){return ha(e,t)||z(e.callee,t)?!0:e.arguments.some(e=>ga(e,t))}function ba(e,t){return z(e.test,t)||z(e.consequent,t)||z(e.alternate,t)}function xa(e,t){return z(e.left,t)||z(e.right,t)}function Sa(e,t){return z(e.object,t)?!0:e.computed&&z(e.property,t)}function Ca(e,t){return z(e.callee,t)?!0:e.arguments.some(e=>ga(e,t))}function wa(e,t){return z(e.tag,t)?!0:e.quasi.expressions.some(e=>z(e,t))}function Ta(e){let t=w(e);switch(t.type){case`ArrayExpression`:return R([]);case`ArrowFunctionExpression`:case`ClassExpression`:case`FunctionExpression`:return R(!0);case`Identifier`:return t.name===`undefined`?R(void 0):t.name===`NaN`?R(NaN):t.name===`Infinity`?R(1/0):ua();case`Literal`:return R(t.value);case`LogicalExpression`:return Ea(t);case`ObjectExpression`:return R({});case`SequenceExpression`:{let e=t.expressions.at(-1);return e?Ta(e):ua()}case`TemplateLiteral`:return t.expressions.length>0?ua():t.quasis.length===0?R(``):R(t.quasis[0]?.value.cooked??``);case`UnaryExpression`:return Da(t);default:return ua()}}function Ea(e){let t=Ta(e.left);return t.constant?e.operator===`&&`?t.value===!0?Ta(e.right):R(t.value):e.operator===`||`?t.value===!0?R(t.value):Ta(e.right):t.value===void 0?Ta(e.right):R(t.value):ua()}function Da(e){if(e.operator===`typeof`)return R(`string`);if(e.operator===`void`)return R(void 0);let t=Ta(e.argument);return t.constant?e.operator===`!`?R(!t.value):e.operator===`+`&&b(t.value)?R(t.value):e.operator===`-`&&b(t.value)?R(-t.value):e.operator===`~`&&b(t.value)?R(~t.value):ua():ua()}function B(e){let t=w(e);if(t.type===`ConditionalExpression`)return Oa(t);if(t.type===`LogicalExpression`)return ka(t);if(t.type===`SequenceExpression`){let e=t.expressions.at(-1);return e?B(e):fa()}let n=Ta(t);return n.constant?da(!!n.value):fa()}function Oa(e){let t=B(e.test);if(t.constant)return B(t.value===!0?e.consequent:e.alternate);let n=B(e.consequent),r=B(e.alternate);return n.constant&&r.constant&&n.value===r.value?n:fa()}function ka(e){let t=B(e.left);if(!t.constant)return fa();if(e.operator===`&&`)return t.value?B(e.right):da(!1);if(e.operator===`||`)return t.value===!0?da(!0):B(e.right);let n=Ta(e.left);return n.constant?n.value===void 0?B(e.right):da(!!n.value):fa()}const Aa=new Set([`DoWhileStatement`,`ForInStatement`,`ForOfStatement`,`ForStatement`,`WhileStatement`]);function ja(e){return Aa.has(e.type)}function Ma(e,t){let n=t;for(;n!==null;){if(n.type===`LabeledStatement`&&n.label.name===e)return n.body;if(n.type===`Program`)return;n=n.parent}}function Na(e,t){if(e.label)return Ma(e.label.name,e.parent)===t;let n=e.parent;for(;n!==null;){if(n.type===`Program`||N(n)||n.type===`SwitchStatement`)return!1;if(ja(n))return n===t;n=n.parent}return!1}function Pa(e,t){return e?e.type===`VariableDeclaration`?e.declarations.some(e=>e.init?z(e.init,t):!1):z(e,t):!1}function Fa(e,t){switch(e.type){case`DoWhileStatement`:case`WhileStatement`:return z(e.test,t);case`ForInStatement`:case`ForOfStatement`:return z(e.right,t);case`ForStatement`:return!!(Pa(e.init,t)||e.test&&z(e.test,t)||e.update&&z(e.update,t));default:return!1}}function V(e,t,n){switch(e.type){case`BlockStatement`:return e.body.some(e=>V(e,t,n));case`BreakStatement`:return Na(e,t);case`DoWhileStatement`:case`WhileStatement`:return Ia(e,t,n);case`ExpressionStatement`:return z(e.expression,n);case`ForInStatement`:case`ForOfStatement`:return La(e,t,n);case`ForStatement`:return Ra(e,t,n);case`IfStatement`:return za(e,t,n);case`LabeledStatement`:return V(e.body,t,n);case`ReturnStatement`:return!0;case`SwitchStatement`:return e.cases.some(e=>e.consequent.some(e=>V(e,t,n)));case`TryStatement`:return Ba(e,t,n);case`VariableDeclaration`:return e.declarations.some(e=>e.init?z(e.init,n):!1);case`WithStatement`:return Va(e,t,n);default:return!1}}function Ia(e,t,n){return z(e.test,n)?!0:V(e.body,t,n)}function La(e,t,n){return z(e.right,n)?!0:V(e.body,t,n)}function Ra(e,t,n){return Pa(e.init,n)||e.test&&z(e.test,n)||e.update&&z(e.update,n)?!0:V(e.body,t,n)}function za(e,t,n){return V(e.consequent,t,n)?!0:e.alternate?V(e.alternate,t,n):!1}function Ba(e,t,n){return!!(V(e.block,t,n)||e.handler&&V(e.handler.body,t,n)||e.finalizer&&V(e.finalizer,t,n))}function Va(e,t,n){return z(e.object,n)?!0:V(e.body,t,n)}function Ha(e,t,n){return e.constant?!e.value||!Fa(t,n)&&!V(t.body,t,n):!1}const Ua=t({create(e){let t=e.options?.[0],n=pa(typeof t==`object`&&t?t:void 0);function r(t){B(t).constant&&e.report({messageId:`unexpected`,node:t})}function i(t,r){Ha(B(r),t,n)&&e.report({messageId:`unexpected`,node:r})}return{ConditionalExpression(e){r(e.test)},DoWhileStatement(e){i(e,e.test)},ForStatement(e){e.test&&i(e,e.test)},IfStatement(e){r(e.test)},WhileStatement(e){i(e,e.test)}}},meta:{docs:{description:`Disallow constant conditions, but allow constant loops that include loop exits such as break, return, or configured calls.`},messages:{unexpected:`Unexpected constant condition.`},schema:[{additionalProperties:!1,properties:{loopExitCalls:{items:{minLength:1,type:`string`},type:`array`}},type:`object`}],type:`problem`}});function Wa(e){let n=`CallExpression[callee.type="Identifier"][callee.name="${e.name}"]`;return t({create(t){return{[n](n){t.report({messageId:e.messageId,node:n})}}},meta:{docs:{description:`Use ${e.alternative} instead of ${e.name}().`},messages:{[e.messageId]:e.message.replaceAll(`{{name}}`,e.name).replaceAll(`{{alternative}}`,e.alternative)},schema:[],type:`problem`}})}const Ga=Wa({alternative:`throw`,message:`Replace {{name}}(...) with {{alternative}}.`,messageId:`noError`,name:`error`});function Ka(e){let t=new Set;if(!e?.eventsImportPaths)return t;for(let n of e.eventsImportPaths)ne(n)&&t.add(n);return t}function qa(e){switch(e.type){case`ChainExpression`:case`ParenthesizedExpression`:case`TSAsExpression`:case`TSInstantiationExpression`:case`TSNonNullExpression`:case`TSTypeAssertion`:return qa(e.expression);default:return e}}function Ja(e){let t=qa(e);if(t.type===`Identifier`)return t.name;if(t.type===`MemberExpression`)return Ja(t.object)}function Ya(e,t){let n=qa(e.callee);if(n.type!==`MemberExpression`||T(n)!==`connect`)return;let r=Ja(n.object);if(r===void 0||!t.has(r))return;let[i]=e.arguments;if(i)switch(i.type){case`ArrowFunctionExpression`:case`FunctionExpression`:return i;default:return}}function Xa(e,t){let n=qa(e.callee);if(n.type!==`MemberExpression`)return!1;let r=Ja(n);return r!==void 0&&t.has(r)}function Za(e,t){return e.has(t)?!1:(e.add(t),!0)}function Qa(e,t){return Za(t.playerValues,e)}function $a(e,t){return Za(t.playerContainers,e)}function H(e,t){switch(e.type){case`ArrayPattern`:{let n=!1;for(let r of e.elements)r&&(n=H(r,t)||n);return n}case`AssignmentPattern`:return H(e.left,t);case`Identifier`:return Qa(e.name,t);case`ObjectPattern`:{let n=!1;for(let r of e.properties){if(r.type===`RestElement`){n=H(r.argument,t)||n;continue}n=H(r.value,t)||n}return n}case`RestElement`:return H(e.argument,t);default:return!1}}function eo(e,t,n){return t===0?!1:e.type===`Identifier`?t===2?Qa(e.name,n):$a(e.name,n):H(e,n)}function to(e,t,n){return e.type===`MemberExpression`||t===0?!1:e.type===`ArrayPattern`||e.type===`AssignmentPattern`||e.type===`Identifier`||e.type===`ObjectPattern`||e.type===`RestElement`?e.type===`Identifier`?t===2?Qa(e.name,n):$a(e.name,n):H(e,n):!1}function U(e,t){let n=qa(e);switch(n.type){case`ArrayExpression`:return no(n,t);case`AssignmentExpression`:return U(n.right,t);case`ConditionalExpression`:return ro(n,t);case`Identifier`:return t.playerValues.has(n.name)?2:+!!t.playerContainers.has(n.name);case`MemberExpression`:return io(n,t);case`ObjectExpression`:return ao(n,t);case`SequenceExpression`:{let e=n.expressions.at(-1);return e===void 0?0:U(e,t)}default:return 0}}function no(e,t){for(let n of e.elements)if(n!==null&&U(n.type===`SpreadElement`?n.argument:n,t)!==0)return 1;return 0}function ro(e,t){let n=U(e.consequent,t);return n===U(e.alternate,t)?n:0}function io(e,t){return U(e.object,t)===1?2:0}function ao(e,t){for(let n of e.properties)if(U(n.type===`SpreadElement`?n.argument:n.value,t)!==0)return 1;return 0}function oo(e,t){if(e.type===`TSParameterProperty`){H(e.parameter,t);return}H(e,t)}const so=t({create(e){let t=Ka(e.options[0]),n=new Set,r=new WeakMap,i=[];function a(){let e=i.at(-1);if(e?.callbackState&&!(e.callbackDepth>0))return e.callbackState}function o(e){if(e.type!==`FunctionDeclaration`){let t=r.get(e);if(t){i.push({callbackDepth:0,callbackState:t});return}}let t=i.at(-1);if(!t?.callbackState){i.push({callbackDepth:0,callbackState:void 0});return}i.push({callbackDepth:t.callbackDepth+1,callbackState:t.callbackState})}function s(){i.pop()}return{ArrowFunctionExpression:o,"ArrowFunctionExpression:exit":s,AssignmentExpression(e){let t=a();if(!t||e.operator!==`=`)return;let n=U(e.right,t);n!==0&&to(e.left,n,t)},CallExpression(t){let i=Ya(t,n);if(i){let e={playerContainers:new Set,playerValues:new Set},[t]=i.params;t&&oo(t,e),r.set(i,e)}let o=a();if(!(o&&Xa(t,n)))return;let[s]=t.arguments;!s||s.type===`SpreadElement`||U(s,o)!==2||e.report({messageId:`preferFunctions`,node:t})},FunctionDeclaration:o,"FunctionDeclaration:exit":s,FunctionExpression:o,"FunctionExpression:exit":s,ImportDeclaration(e){let r=e.source.value;if(t.has(r))for(let t of e.specifiers){if(t.type===`ImportDefaultSpecifier`){t.local.name===`Events`&&n.add(t.local.name);continue}if(t.type===`ImportSpecifier`){if(t.imported.type===`Identifier`&&t.imported.name===`Events`){n.add(t.local.name);continue}t.imported.type===`Literal`&&t.imported.value===`Events`&&n.add(t.local.name)}}},VariableDeclarator(e){let t=a();if(!(t&&e.init))return;let n=U(e.init,t);n!==0&&eo(e.id,n,t)}}},meta:{docs:{description:`Disallow sending Events back to the same player inside an Events.connect callback; use Functions for request/response.`},messages:{preferFunctions:`Do not call Events for the same player inside an Events.connect callback. Use a Functions callback instead.`},schema:[{additionalProperties:!1,properties:{eventsImportPaths:{items:{minLength:1,type:`string`},type:`array`}},required:[`eventsImportPaths`],type:`object`}],type:`problem`}}),co=/^[A-Z]/u;function W(e){return co.test(e)}function lo(e){return e.type===`FunctionDeclaration`&&e.id!==null&&W(e.id.name)}function uo(e){return e.type===`CallExpression`?e.callee.type===`Identifier`?e.callee.name===`memo`:e.callee.type===`MemberExpression`&&e.callee.object.type===`Identifier`&&e.callee.object.name===`React`&&e.callee.property.type===`Identifier`&&e.callee.property.name===`memo`:!1}function fo({callee:e}){return e.type===`Identifier`?e.name===`forwardRef`||e.name===`memo`:e.type===`MemberExpression`&&e.object.type===`Identifier`&&e.object.name===`React`&&e.property.type===`Identifier`&&(e.property.name===`forwardRef`||e.property.name===`memo`)}function po({name:e}){return e.type===`JSXIdentifier`?e.name:e.name.name}function mo(e,t){for(let n of e.openingElement.attributes)if(n.type===`JSXAttribute`&&n.name.type===`JSXIdentifier`&&n.name.name===t)return!0;return!1}function ho(e,t){if(e.type!==`JSXIdentifier`)return!1;let n=e.name.charAt(0);return n!==``&&n===n.toLowerCase()||t.has(e.name)}function go(e){if(e.type===`BinaryExpression`)switch(e.operator){case`%`:case`*`:case`**`:case`+`:case`-`:case`/`:return go(e.left)&&go(e.right);default:return!1}return e.type===`Identifier`||e.type===`Literal`?!0:e.type===`MemberExpression`?!e.computed&&go(e.object):e.type===`ParenthesizedExpression`?go(e.expression):e.type===`TemplateLiteral`?e.expressions.length===0:e.type===`UnaryExpression`&&go(e.argument)}function _o(e,t){return e?.type===`CallExpression`&&e.callee.type===`Identifier`&&(y(t)?e.callee.name===t:t.has(e.callee.name))}function vo(e){return e.type===`VariableDeclarator`&&e.id.type===`Identifier`&&W(e.id.name)&&e.init!==null&&(e.init.type===`ArrowFunctionExpression`||e.init.type===`FunctionExpression`)}function yo(e){return e.loc.end.line-e.loc.start.line+1}function bo(e){if(!(e.type!==`FunctionDeclaration`||!lo(e)||e.id===null||e.body===null)&&D(e.id)&&`name`in e.id&&y(e.id.name))return{body:e.body,name:e.id.name,nameNode:e.id}}function xo(e){if(e.type!==`VariableDeclarator`||!vo(e)||e.init===null||!(`name`in e.id&&y(e.id.name))||e.init.type!==`ArrowFunctionExpression`&&e.init.type!==`FunctionExpression`||!D(e.init.body))return;let{name:t}=e.id;return{body:e.init.body,name:t,nameNode:e.id}}const So=t({create(e){function t(t,n,r){let i=yo(r);i<=300||e.report({data:{lineCount:String(i),name:n},messageId:`giantComponent`,node:t})}return{FunctionDeclaration(e){let n=bo(e);n!==void 0&&t(n.nameNode,n.name,n.body)},VariableDeclarator(e){let n=xo(e);n!==void 0&&t(n.nameNode,n.name,n.body)}}},meta:{docs:{description:`Report React components whose bodies exceed the configured size threshold.`,recommended:!0},messages:{giantComponent:`Component "{{name}}" is {{lineCount}} lines — consider breaking it into smaller focused components`},type:`problem`}}),Co=new Set([`ArrowFunctionExpression`,`FunctionDeclaration`,`FunctionExpression`]);function wo(e){if(e.type===`FunctionDeclaration`&&e.id!==null&&O(e.id.name))return e.id.name;if(e.type===`FunctionExpression`||e.type===`ArrowFunctionExpression`){let{parent:t}=e;if(t.type===`VariableDeclarator`&&t.id.type===`Identifier`&&O(t.id.name))return t.id.name;if(t.type===`Property`&&t.key.type===`Identifier`&&O(t.key.name)||t.type===`MethodDefinition`&&t.key.type===`Identifier`&&O(t.key.name))return t.key.name}}function To(e){let{parent:t}=e;if(t.type===`VariableDeclarator`&&t.id.type===`Identifier`&&O(t.id.name))return t.id.name;if(t.type===`AssignmentExpression`&&t.left.type===`Identifier`&&O(t.left.name))return t.left.name;let n;if(t.type===`ExportDefaultDeclaration`&&e.arguments.length>0){let[t]=e.arguments;t?.type===`FunctionExpression`&&t.id&&O(t.id.name)&&(n=t.id.name)}return n}function Eo(e){if(!He(e))return;let[t]=e.params;if(!t)return;let n;if(t.type===`ObjectPattern`&&(n=t),t.type===`AssignmentPattern`&&t.left.type===`ObjectPattern`&&(n=t.left),!n)return;let r=0;for(let e of n.properties)e.type===`Property`&&(r+=1);return r}function Do(e,t){return t?.type===`TSLiteralType`}function Oo(e,t){if(!He(e)||e.body===null)return{maxJsxDepth:0,nullLiterals:[],stateHookCount:0};let n=0,r=0,i=[],a=0;return Rr(e.body,o=>{if(!(Co.has(o.type)&&o!==e)){if(o.type===`JSXElement`||o.type===`JSXFragment`){a+=1,a>n&&(n=a);return}if(o.type===`CallExpression`){let e=L(o);e!==void 0&&e.length>0&&t.has(e)&&(r+=1)}o.type===`Literal`&&o.value===null&&!Do(o,o.parent)&&i.push(o)}}),{maxJsxDepth:n,nullLiterals:i,stateHookCount:r}}function ko(e){let t={enforceTargetLines:!0,ignoreComponents:[],maxDestructuredProps:5,maxLines:200,maxStateHooks:5,maxTsxNesting:3,stateHooks:[`useState`,`useReducer`,`useBinding`],targetLines:120};if(typeof e!=`object`||!e)return t;let n=e;return{enforceTargetLines:typeof n.enforceTargetLines==`boolean`?n.enforceTargetLines:t.enforceTargetLines,ignoreComponents:Array.isArray(n.ignoreComponents)?n.ignoreComponents:t.ignoreComponents,maxDestructuredProps:b(n.maxDestructuredProps)?n.maxDestructuredProps:t.maxDestructuredProps,maxLines:b(n.maxLines)?n.maxLines:t.maxLines,maxStateHooks:b(n.maxStateHooks)?n.maxStateHooks:t.maxStateHooks,maxTsxNesting:b(n.maxTsxNesting)?n.maxTsxNesting:t.maxTsxNesting,stateHooks:Array.isArray(n.stateHooks)?n.stateHooks:t.stateHooks,targetLines:b(n.targetLines)?n.targetLines:t.targetLines}}const Ao=t({create(e){let t=ko(e.options[0]),n=new Set(t.ignoreComponents),r=new Set(t.stateHooks),i=new WeakSet;function a(a,o){if(n.has(o)||i.has(a))return;i.add(a);let s=a.loc,c=s.end.line-s.start.line+1;c>t.maxLines?e.report({data:{lines:String(c),max:String(t.maxLines),name:o,target:String(t.targetLines)},messageId:`exceedsMaxLines`,node:a}):t.enforceTargetLines&&c>t.targetLines&&e.report({data:{lines:String(c),max:String(t.maxLines),name:o,target:String(t.targetLines)},messageId:`exceedsTargetLines`,node:a});let l=Eo(a);b(l)&&l>t.maxDestructuredProps&&e.report({data:{count:String(l),max:String(t.maxDestructuredProps),name:o},messageId:`tooManyProps`,node:a});let u=Oo(a,r);u.maxJsxDepth>t.maxTsxNesting&&e.report({data:{depth:String(u.maxJsxDepth),max:String(t.maxTsxNesting),name:o},messageId:`tsxNestingTooDeep`,node:a}),u.stateHookCount>t.maxStateHooks&&e.report({data:{count:String(u.stateHookCount),hooks:t.stateHooks.join(`, `),max:String(t.maxStateHooks),name:o},messageId:`tooManyStateHooks`,node:a});for(let t of u.nullLiterals)e.report({messageId:`nullLiteral`,node:t})}function o(e){let t=wo(e);t===void 0||t.length===0||a(e,t)}return{ArrowFunctionExpression:o,CallExpression(e){if(!fo(e))return;let[t]=e.arguments;if(!t||t.type!==`FunctionExpression`&&t.type!==`ArrowFunctionExpression`)return;let n=To(e),r=wo(t),i=n??r;i===void 0||i.length===0||a(t,i)},FunctionDeclaration(e){e.type===`FunctionDeclaration`&&o(e)},FunctionExpression(e){e.type===`FunctionExpression`&&o(e)}}},meta:{docs:{description:`Enforce React component size and complexity limits inspired by the 'Refactor God Component' checklist.`,recommended:!1},messages:{exceedsMaxLines:`Component '{{name}}' is {{lines}} lines; max allowed is {{max}}. Split into smaller components/hooks.`,exceedsTargetLines:`Component '{{name}}' is {{lines}} lines; target is {{target}} (max {{max}}). Consider extracting hooks/components.`,nullLiteral:"Avoid `null` in components; use `undefined` instead.",tooManyProps:`Component '{{name}}' destructures {{count}} props; max allowed is {{max}}. Group props or split the component.`,tooManyStateHooks:`Component '{{name}}' has {{count}} state hooks ({{hooks}}); max allowed is {{max}}. Extract cohesive state into a custom hook.`,tsxNestingTooDeep:`Component '{{name}}' has TSX nesting depth {{depth}}; max allowed is {{max}}. Extract child components.`},schema:[{additionalProperties:!1,properties:{enforceTargetLines:{default:!0,description:`Whether to report when exceeding targetLines (soft limit).`,type:`boolean`},ignoreComponents:{description:`Component names to ignore.`,items:{type:`string`},type:`array`},maxDestructuredProps:{default:5,description:`Maximum number of destructured props in a component parameter.`,type:`number`},maxLines:{default:200,description:`Hard maximum lines for a component.`,type:`number`},maxStateHooks:{default:5,description:`Maximum number of stateful hook calls in a component.`,type:`number`},maxTsxNesting:{default:3,description:`Maximum JSX/TSX nesting depth in a component.`,type:`number`},stateHooks:{default:[`useState`,`useReducer`,`useBinding`],description:`Hook names to count toward state complexity.`,items:{type:`string`},type:`array`},targetLines:{default:120,description:`Soft target lines for a component.`,type:`number`}},type:`object`}],type:`problem`}});function jo({callee:e}){if(e.type!==`CallExpression`)return!1;let t=e.callee;if(t.type!==`MemberExpression`)return!1;let{object:n}=t;return n.type===`Identifier`&&n.name===`Ianitor`}const Mo=t({create(e){let t=0;function n(){t+=1}function r(){--t}return{ArrowFunctionExpression:n,"ArrowFunctionExpression:exit":r,CallExpression(n){t===0||!jo(n)||e.report({messageId:`hoistIanitorValidator`,node:n})},FunctionDeclaration:n,"FunctionDeclaration:exit":r,FunctionExpression:n,"FunctionExpression:exit":r}},meta:{docs:{description:`Disallow Ianitor validator creation inside function bodies. Hoist to module scope to avoid recreating validators on every call.`,recommended:!0},messages:{hoistIanitorValidator:`Ianitor validator created inside function body is slow — hoist to module scope. Example: const validator = Ianitor.keyOf(ids);`},schema:[],type:`problem`}});function No(e){let t=w(e);if(t.type!==`CallExpression`)return!1;let n=w(t.callee);if(n.type!==`MemberExpression`||n.computed)return!1;let r=w(n.object);return r.type===`Identifier`&&r.name===`Ianitor`&&n.property.type===`Identifier`}function Po(e){for(let{node:t}of e.defs){if(t.type!==`VariableDeclarator`)continue;let{init:e}=t;if(e!==null&&No(e))return!0}return!1}function Fo(e,t){let n=w(e.callee);if(n.type===`CallExpression`)return No(n);if(n.type===`Identifier`){let r=E(t.getScope(e),n.name);return r!==void 0&&Po(r)}return!1}function Io(e){let t=!1;for(let n of e.properties)if(!(n.type!==`Property`||n.key.type!==`Identifier`)){if(n.key.name===`error`||n.key.name===`value`)return!1;n.key.name===`success`&&(t=!0)}return t}function Lo(e){for(let t of e.properties)if(t.type===`Property`&&t.key.type===`Identifier`&&t.key.name===`success`)return t.key}const Ro=t({create(e){let{sourceCode:t}=e,n=new Set,r=new Map;function i(e){let t=r.get(e);t!==void 0&&(t.referencedFully=!0)}return{CallExpression(e){for(let t of e.arguments)if(t.type===`Identifier`){let e=r.get(t.name);e!==void 0&&(e.referencedFully=!0)}},MemberExpression({computed:n,object:i,property:a}){if(n||a.type!==`Identifier`)return;let o=w(i);if(o.type===`CallExpression`&&a.name===`success`){Fo(o,t)&&e.report({messageId:`preferCreateGuard`,node:a});return}if(o.type===`Identifier`){let e=r.get(o.name);e!==void 0&&e.properties.add(a.name)}},"Program:exit"(){for(let[,{firstSuccessNode:t,properties:n,referencedFully:i}]of r)n.has(`success`)&&!n.has(`error`)&&!n.has(`value`)&&!i&&e.report({messageId:`preferCreateGuard`,node:t})},ReturnStatement({argument:e}){e?.type===`Identifier`&&i(e.name)},VariableDeclarator({id:i,init:a}){if(a===null)return;let o=w(a);if(o.type===`CallExpression`){if(i.type===`Identifier`&&No(o)){n.add(i.name);return}if(i.type===`ObjectPattern`&&Fo(o,t)&&Io(i)){let t=Lo(i);t!==void 0&&e.report({messageId:`preferCreateGuard`,node:t})}i.type===`Identifier`&&o.callee.type===`Identifier`&&n.has(o.callee.name)&&r.set(i.name,{firstSuccessNode:i,properties:new Set,referencedFully:!1})}}}},meta:{docs:{description:"Disallow accessing `.success` on Ianitor check results when the full result object is not needed."},messages:{preferCreateGuard:`Replace with Flamework.createGuard<T>(). Ianitor check results allocate a table on every call; Flamework.createGuard returns a plain boolean at runtime with zero allocation.`},schema:[],type:`suggestion`}}),zo=[`binding`];function Bo(e){if(e.type===`Identifier`)return e.name;if(e.type===`AssignmentPattern`&&e.left.type===`Identifier`)return e.left.name}function Vo({body:e},t){if(e.length!==1)return!1;let[n]=e;return n?.type!==`ReturnStatement`||n.argument?.type!==`Identifier`?!1:n.argument.name===t}function Ho(e){if(e.params.length!==1)return;let[t]=e.params;return t===void 0?void 0:Bo(t)}function Uo(e){if(e.type===`ArrowFunctionExpression`){let t=Ho(e);if(t===void 0)return!1;let{body:n}=e;switch(n.type){case`BlockStatement`:return Vo(n,t);case`Identifier`:return n.name===t;default:return!1}}if(e.type===`FunctionExpression`){let t=Ho(e);return t===void 0||e.body===null?!1:Vo(e.body,t)}return!1}function Wo(e){return L(e)===`joinBindings`}function Go(e){for(let t of e.defs){if(t.node.type!==`VariableDeclarator`)continue;let{init:e}=t.node;if(e?.type===`CallExpression`&&(L(e)===`useBinding`||Wo(e)||e.callee.type===`MemberExpression`&&T(e.callee)===`map`))return!0}return!1}function Ko(e,{object:t},n){if(t.type===`Identifier`){let r=t.name.toLowerCase();for(let e of n)if(r.includes(e.toLowerCase()))return!0;let i=E(e.getScope(t),t.name);if(i!==void 0&&Go(i))return!0}return t.type===`CallExpression`&&(t.callee.type===`MemberExpression`&&T(t.callee)===`map`||Wo(t))}const qo=t({create(e){let{sourceCode:t}=e,[n]=e.options,r=n?.bindingPatterns??zo;return{CallExpression(n){let{callee:i}=n;if(i.type!==`MemberExpression`||i.computed||i.property.type!==`Identifier`||T(i)!==`map`||n.arguments.length!==1)return;let[a]=n.arguments;if(a===void 0||a.type===`SpreadElement`||!Uo(a))return;let o=Ko(t,i,r);e.report({fix(e){return e.replaceText(n,t.getText(i.object))},messageId:o?`identityBindingMap`:`identityArrayMap`,node:n})}}},meta:{docs:{description:"Disallow pointless identity `.map()` calls that return the parameter unchanged"},fixable:`code`,messages:{identityArrayMap:"Pointless identity `.map()` call on Array. Use `table.clone(array)` or `[...array]` instead.",identityBindingMap:"Pointless identity `.map()` call on Binding. Use the original binding directly."},schema:[{additionalProperties:!1,properties:{bindingPatterns:{default:[...zo],description:`Variable name patterns to recognize as Bindings (case insensitive)`,items:{type:`string`},type:`array`}},type:`object`}],type:`suggestion`}});function Jo(e){let{parent:t}=e;return t?.type===`ExpressionStatement`||t?.type===`ForStatement`&&t.update===e}const Yo=t({create(e){let[t]=e.options,n=Tr(t)&&t.allowAutofix,{sourceCode:r}=e;return{UpdateExpression(t){if(!Jo(t))return;let i=r.getText(t.argument),a=t.operator===`++`?`noIncrement`:`noDecrement`;if(!n){e.report({messageId:a,node:t});return}let o=t.operator===`++`?`${i} += 1`:`${i} -= 1`;e.report({fix(e){return e.replaceText(t,o)},messageId:a,node:t})}}},meta:{docs:{description:"Disallow standalone `++` and `--` statements.",recommended:!0},fixable:`code`,messages:{noDecrement:"Do not use standalone `--`. Use `-= 1` instead.",noIncrement:"Do not use standalone `++`. Use `+= 1` instead."},schema:[{additionalProperties:!1,properties:{allowAutofix:{default:!1,type:`boolean`}},type:`object`}],type:`suggestion`}});function Xo(e){return e.name.type===`JSXIdentifier`?e.name.name:void 0}function Zo(e){switch(e.type){case`ArrayExpression`:return`array`;case`ArrowFunctionExpression`:case`FunctionExpression`:return`function`;case`JSXElement`:case`JSXFragment`:return`JSX`;case`ObjectExpression`:return`object`;default:return}}const Qo=t({create(e){let t=new Set;return{JSXAttribute(n){if(n.value?.type!==`JSXExpressionContainer`||n.value.expression.type===`JSXEmptyExpression`)return;let r=n.parent;if(!he(r))return;let i=Xo(r);if(i===void 0||!t.has(i))return;let a=Zo(n.value.expression);a!==void 0&&e.report({data:{name:i,type:a},messageId:`inlineProperty`,node:n.value.expression})},VariableDeclarator(e){e.id.type===`Identifier`&&e.init!==null&&uo(e.init)&&t.add(e.id.name)}}},meta:{docs:{description:`Prevent inline properties from being passed to memoized components.`,recommended:!0},messages:{inlineProperty:`Inline {{type}} passed to memoized component "{{name}}" — new references cause unnecessary re-renders`},type:`problem`}}),$o={checkPrivate:!0,checkProtected:!0,checkPublic:!0};function es(e){return x(e)?{checkPrivate:typeof e.checkPrivate!=`boolean`||e.checkPrivate,checkProtected:typeof e.checkProtected!=`boolean`||e.checkProtected,checkPublic:typeof e.checkPublic!=`boolean`||e.checkPublic}:$o}function ts(e,t){if(e.static||e.kind!==`method`)return!1;let n=e.accessibility??`public`;return!(n===`private`&&!t.checkPrivate||n===`protected`&&!t.checkProtected||n===`public`&&!t.checkPublic)}function ns(e,t){if(t.has(e))return!1;if(t.add(e),e.type===`ThisExpression`||e.type===`Super`)return!0;if(!x(e))return!1;for(let n in e)if(Object.hasOwn(e,n)&&rs(e[n],t))return!0;return!1}function rs(e,t){if(Array.isArray(e)){for(let n of e)if(D(n)&&ns(n,t))return!0;return!1}return D(e)&&ns(e,t)}function is({value:e}){return e.type===`FunctionExpression`&&ns(e,new WeakSet)}function as(e){return e.key.type===`Identifier`?e.key.name:`unknown`}const os=t({create(e){let t=es(e.options[0]);return{MethodDefinition(n){!ts(n,t)||is(n)||e.report({data:{methodName:as(n)},messageId:`noInstanceMethodWithoutThis`,node:n})}}},meta:{docs:{description:`Detect instance methods that do not use 'this' and suggest converting them to standalone functions for better performance in roblox-ts.`},messages:{noInstanceMethodWithoutThis:`Method '{{methodName}}' does not use 'this' and creates unnecessary metatable overhead in roblox-ts. Convert it to a standalone function for better performance.`},schema:[{additionalProperties:!1,properties:{checkPrivate:{default:!0,description:`Check private methods (default: true)`,type:`boolean`},checkProtected:{default:!0,description:`Check protected methods (default: true)`,type:`boolean`},checkPublic:{default:!0,description:`Check public methods (default: true)`,type:`boolean`}},type:`object`}],type:`problem`}}),ss=[`Axes`,`BrickColor`,`CFrame`,`Color3`,`ColorSequence`,`ColorSequenceKeypoint`,`DateTime`,`Enum`,`Faces`,`NumberRange`,`NumberSequence`,`NumberSequenceKeypoint`,`PathWaypoint`,`PhysicalProperties`,`Ray`,`Rect`,`Region3`,`Region3int16`,`TweenInfo`,`UDim`,`UDim2`,`Vector2`,`Vector3`,`Vector3int16`,`Vector3int32`],cs=new Set([`!`,`+`,`-`,`typeof`,`void`,`~`]),ls=new Set(`ArrayExpression.ArrowFunctionExpression.AssignmentExpression.AwaitExpression.BinaryExpression.CallExpression.ChainExpression.ClassExpression.ConditionalExpression.FunctionExpression.Identifier.ImportExpression.Literal.LogicalExpression.MemberExpression.MetaProperty.NewExpression.ObjectExpression.ParenthesizedExpression.SequenceExpression.Super.TaggedTemplateExpression.TemplateLiteral.ThisExpression.TSAsExpression.TSInstantiationExpression.TSNonNullExpression.TSSatisfiesExpression.TSTypeAssertion.UnaryExpression.UpdateExpression.YieldExpression`.split(`.`));function us(e){return ls.has(e.type)}function G(e){return e.type===`module`||e.type===`global`}function ds(e){for(let t of e.defs)if(t.type===`ImportBinding`)return!0;return!1}function fs(e){return e.type===`Variable`}function ps(e){if(!fs(e))return;let t=e.node;if(t.type!==`VariableDeclarator`)return;let{parent:n}=t;if(!(n.type!==`VariableDeclaration`||n.kind!==`const`))return t.init??void 0}function ms(e,t){let n=E(e.getScope(t),t.name);if(!(n===void 0||!G(n.scope)))for(let e of n.defs){let t=ps(e);if(t!==void 0)return t}}function hs(e,t){let n=E(e.getScope(t),t.name);if(n!==void 0)for(let e of n.defs){let t=ps(e);if(t!==void 0)return t}}function gs(e,t,n){let r=w(t);if(n.has(r))return!1;if(n.add(r),r.type===`Identifier`&&r.name===`undefined`||r.type===`UnaryExpression`&&r.operator===`void`)return!0;if(r.type!==`Identifier`)return!1;let i=hs(e,r);return i!==void 0&&gs(e,i,n)}function _s(e,t,n,r){return t.type===`Identifier`?!0:us(t)?K(e,t,n,r):!1}function vs(e,t,n,r){let i=w(t);return i.type===`Identifier`?bs(e,i,n,r):i.type!==`MemberExpression`||!K(e,i.object,n,r)?!1:i.computed?K(e,i.property,n,r):i.property.type===`Identifier`}function ys(e,t,n,r,i){return vs(e,n,r,i)?t.every(t=>t.type!==`SpreadElement`&&K(e,t,r,i)):!1}function K(e,t,n,r){let i=w(t);if(n.has(i))return!1;switch(n.add(i),i.type){case`ArrayExpression`:return Cs(e,i,n,r);case`BinaryExpression`:case`LogicalExpression`:return us(i.left)?K(e,i.left,n,r)&&K(e,i.right,n,r):!1;case`CallExpression`:return ys(e,i.arguments,i.callee,n,r);case`ChainExpression`:return K(e,i.expression,n,r);case`ConditionalExpression`:return K(e,i.test,n,r)&&K(e,i.consequent,n,r)&&K(e,i.alternate,n,r);case`Identifier`:return bs(e,i,n,r);case`Literal`:return!0;case`MemberExpression`:return K(e,i.object,n,r)&&(!i.computed||_s(e,i.property,n,r));case`NewExpression`:return ys(e,i.arguments,i.callee,n,r);case`ObjectExpression`:return Ss(e,i,n,r);case`SequenceExpression`:return i.expressions.length>0&&i.expressions.every(t=>K(e,t,n,r));case`TemplateLiteral`:return i.expressions.length===0;case`UnaryExpression`:return cs.has(i.operator)&&K(e,i.argument,n,r);default:return!1}}function bs(e,t,n,r){let i=E(e.getScope(t),t.name);if(i===void 0)return r.staticGlobalFactories.has(t.name);if(!G(i.scope))return!1;if(ds(i))return!0;for(let t of i.defs){let i=ps(t);if(i!==void 0&&K(e,i,n,r))return!0}return!1}function xs(e){return e.type!==`PrivateIdentifier`&&e.type!==`Identifier`}function Ss(e,t,n,r){for(let i of t.properties)if(i.type!==`Property`||i.kind!==`init`||i.computed&&xs(i.key)&&!K(e,i.key,n,r)||!K(e,i.value,n,r))return!1;return!0}function Cs(e,{elements:t},n,r){for(let i of t)if(i===null||i.type===`SpreadElement`||!K(e,i,n,r))return!1;return!0}function ws(e){return e.type===`JSXIdentifier`?e.name:e.name.name}function Ts(e){return e===`nativeProperties`||e.endsWith(`NativeProperties`)}function Es(e){if(!(e.type!==`Variable`||e.node.type!==`VariableDeclarator`))return e.node.init??void 0}function Ds(e){let t=w(e);for(;t.type===`MemberExpression`;){let e=w(t.object);if(e.type===`Identifier`)return e;if(e.type!==`MemberExpression`)return;t=e}return t.type===`Identifier`?t:void 0}function Os(e,t){let n=w(t);if(n.type===`ObjectExpression`)return!0;let r=Ds(n);if(r===void 0)return!1;let i=E(e.getScope(r),r.name);return i===void 0?!1:ds(i)||G(i.scope)}function ks(e,t,n){let r=w(t);if(n.has(r))return;if(n.add(r),r.type===`ObjectExpression`)return r;if(r.type!==`Identifier`)return;let i=E(e.getScope(r),r.name);if(!(i===void 0||G(i.scope)))for(let t of i.defs){let r=Es(t);if(r===void 0)continue;let i=ks(e,r,n);if(i!==void 0)return i}}const As=t({create(e){let{sourceCode:t}=e;function n(n,r){for(let i of n.properties){if(i.type!==`SpreadElement`||!Os(t,i.argument))continue;let n=t.getText(i.argument);e.report({data:`propertyName`in r?{prop:r.propertyName,source:n}:{source:n},messageId:r.messageId,node:i})}}return{JSXAttribute(e){let r=ws(e.name);if(r===void 0||!Ts(r))return;let{value:i}=e;if(i?.type!==`JSXExpressionContainer`)return;let{expression:a}=i;if(a.type===`JSXEmptyExpression`)return;let o=ks(t,a,new Set);o!==void 0&&n(o,{messageId:`noNativePropertiesSpread`,propertyName:r})},JSXSpreadAttribute(e){let r=ks(t,e.argument,new Set);r!==void 0&&n(r,{messageId:`noElementSpread`})}}},meta:{docs:{description:`Disallow spreading static property bags into nativeProperties/*NativeProperties props and onto JSX elements via intermediate objects, because the spread creates a new copied table every render.`,recommended:!0},messages:{noElementSpread:`Spreading static property bag {{source}} through an intermediate object creates a new table every render. Inline the full object properties directly on the JSX element.`,noNativePropertiesSpread:`Spreading static property bag {{source}} into {{prop}} creates a new table every render. Pass it directly or inline the full object instead.`},schema:[],type:`problem`}});function js(e){return e.parent.type===`ExpressionStatement`?!0:e.parent.type!==`UnaryExpression`||e.parent.operator!==`void`?!1:e.parent.parent.type===`ExpressionStatement`}function Ms(e,t,n,r){if(bn(e,t))for(let t of e.specifiers){if(t.type===`ImportSpecifier`){ue(t.imported,`useMemo`)&&n.add(t.local.name);continue}r.add(t.local.name)}}const Ns=new Set([`Instance`]);function Ps(e){let t=x(e)&&S(e.constructors)?new Set(e.constructors):Ns,n=x(e)&&e.environment===`standard`?`standard`:`roblox-ts`,r=x(e)?e.maxHelperTraceDepth:void 0;return{constructors:t,environment:n,maxHelperTraceDepth:re(r)&&Number.isInteger(r)&&r>=0?r:4}}function Fs(e){return e?.type===`CallExpression`}function Is(e,t,n){let r=e.parent;for(;r!==null;){if(Fe(r)){let{parent:e}=r;if(Fs(e)&&e.arguments[0]===r){if(!fe(e,t,n)){r=e.parent;continue}return!0}}r=r.parent}return!1}function Ls(e,t,n,r,i){let a=r.get(e);if(a!==void 0)return a;if(i.has(e))return new Set;i.add(e);let o=new Set;for(let a of e.defs){let e=Rs(a,t,n,r,i);for(let t of e)o.add(t)}return i.delete(e),r.set(e,o),o}function Rs(e,t,n,r,i){if(e.type===`FunctionName`)return zs(e,n);if(e.type!==`Variable`)return new Set;let{node:a}=e;if(a.type!==`VariableDeclarator`||a.init===null)return new Set;let o=w(a.init);if(Fe(o))return Bs(o,n);if(o.type!==`Identifier`)return new Set;let s=E(t.getScope(o),o.name);return s===void 0?new Set:Ls(s,t,n,r,i)}function zs(e,t){let{node:n}=e;return n.type===`FunctionDeclaration`?Bs(n,t):new Set}function Bs(e,t){let n=t.get(e)?.id;return n===void 0?new Set:new Set([n])}function Vs(e,t,n,r){let i=E(t.getScope(e),e.name);return i===void 0?new Set:Ls(i,t,n,r,new Set)}function Hs(e,t,n,r){for(let i of t.values())for(let t of i.callIdentifiers){let a=Vs(t,e,n,r);for(let e of a)i.callees.add(e)}}function Us(e,t,n){let r=new Set(e),i=[];for(let t of e)i.push({depth:0,functionId:t});let a=0;for(;a<i.length;){let e=i[a];if(a+=1,e===void 0||e.depth>=n)continue;let o=t.get(e.functionId);if(o!==void 0)for(let t of o.callees)r.has(t)||(r.add(t),i.push({depth:e.depth+1,functionId:t}))}return r}function Ws(e,t,n,r,i){let a=new Set;for(let e of t){let t=r.get(e)?.id;t!==void 0&&a.add(t)}for(let t of n){let n=Vs(t,e,r,i);for(let e of n)a.add(e)}return a}const Gs=t({create(e){let t=Ps(e.options[0]);if(t.constructors.size===0)return{};let n=vn(t.environment),r=new Set,i=new Set,a=new Map,o=new Map,s=[],c=[],l=[],u=[],d=new Map,f=0;function p(e){let t=a.get(e);if(t!==void 0)return t;let n={callees:new Set,callIdentifiers:[],id:f};return f+=1,a.set(e,n),o.set(n.id,n),n}function m(e){let t=s.at(-1);if(t===void 0)return;let n=o.get(t);n!==void 0&&n.callIdentifiers.push(e)}function h(e){s.push(p(e).id)}function g(){s.pop()}return{ArrowFunctionExpression:h,"ArrowFunctionExpression:exit":g,CallExpression(e){if(e.callee.type===`Identifier`&&m(e.callee),!fe(e,r,i))return;let[t]=e.arguments;if(t!==void 0){if(t.type===`Identifier`){l.push(t);return}Fe(t)&&u.push(t)}},FunctionDeclaration:h,"FunctionDeclaration:exit":g,FunctionExpression:h,"FunctionExpression:exit":g,ImportDeclaration(e){Ms(e,n,r,i)},NewExpression(e){if(e.callee.type!==`Identifier`)return;let n=e.callee.name;t.constructors.has(n)&&c.push({constructorName:n,containingFunctionId:s.at(-1),isLexicallyInsideUseMemo:Is(e,r,i),node:e})},"Program:exit"(){Hs(e.sourceCode,o,a,d);let n=Us(Ws(e.sourceCode,u,l,a,d),o,t.maxHelperTraceDepth);for(let t of c){let r=t.containingFunctionId!==void 0&&n.has(t.containingFunctionId);(t.isLexicallyInsideUseMemo||r)&&e.report({data:{constructorName:t.constructorName},messageId:`noNewInUseMemo`,node:t.node})}}}},meta:{docs:{description:`Disallow configured constructor calls (default: new Instance) inside React useMemo callbacks.`},messages:{noNewInUseMemo:"Avoid creating '{{constructorName}}' with `new` inside useMemo. Create it outside the memo callback or use an effect/ref pattern."},schema:[{additionalProperties:!1,properties:{constructors:{description:`Constructor identifiers that should be disallowed inside useMemo callbacks.`,items:{type:`string`},type:`array`},environment:{default:`roblox-ts`,description:`The React environment: 'roblox-ts' uses @rbxts/react, 'standard' uses react.`,enum:[`roblox-ts`,`standard`],type:`string`},maxHelperTraceDepth:{default:4,description:`Maximum depth for tracing local helper function calls from useMemo callbacks. 0 disables helper traversal.`,minimum:0,type:`integer`}},type:`object`}],type:`problem`}}),Ks=Wa({alternative:`Log`,message:`{{name}}() is a raw output function lacking log levels, timestamps, and filtering. Production systems require structured logging for debugging and monitoring. Replace {{name}}(...) with {{alternative}}.`,messageId:`noPrint`,name:`print`});function qs(e,t){let n=t;for(;n;){if(n.set.has(e))return!0;n=n.upper}return!1}function Js(e){let t=new Map,n=new Set;for(let n of e.keys())t.set(n,0);function r(i,a){t.set(i,1),a.push(i);for(let o of e.get(i)??[]){let e=t.get(o);if(e===1){let e=a.lastIndexOf(o);for(let t=e;t<a.length;t+=1){let e=a[t];e!==void 0&&n.add(e)}}else e===0&&r(o,a)}a.pop(),t.set(i,2)}for(let n of e.keys())t.get(n)===0&&r(n,[]);return n}const Ys=t({create(e){let{sourceCode:t}=e,n=new Map,r=[],i=[],a=[],o=new Map;function s(e){r.push(e)}function c(){r.pop()}function l(){for(let e=r.length-1;e>=0;--e){let t=r[e];if(t!==void 0)return t}}function u(e){n.has(e)||n.set(e,new Set)}function d(){for(let e=a.length-1;e>=0;--e)if(a[e]!==void 0)return a[e]}return{ArrowFunctionExpression(){s(void 0)},"ArrowFunctionExpression:exit":c,CallExpression(e){let r=l();if(r===void 0)return;let a,s=!1;if(e.callee.type===`Identifier`?a=e.callee.name:e.callee.type===`MemberExpression`&&e.callee.object.type===`ThisExpression`&&e.callee.property.type===`Identifier`&&(a=e.callee.property.name,s=!0),a===void 0)return;let c=!1;if(s){let e=d();e!==void 0&&o.get(e)?.has(a)===!0&&(c=!0)}else{let n=t.getScope(e);c=qs(a,n)}c&&(n.get(r)?.add(a),i.push({callee:a,caller:r,node:e}))},ClassDeclaration(e){let t=e.id?.name;t!==void 0&&!o.has(t)&&o.set(t,new Set),a.push(t)},"ClassDeclaration:exit"(){a.pop()},FunctionDeclaration(e){let t=e.id?.name;t!==void 0&&t.length>0&&u(t),s(t)},"FunctionDeclaration:exit":c,FunctionExpression(e){e.id&&u(e.id.name);let{parent:t}=e;t?.type===`MethodDefinition`&&t.key.type===`Identifier`?s(t.key.name):s(void 0)},"FunctionExpression:exit":c,MethodDefinition(e){let t=d();e.key.type===`Identifier`&&t!==void 0&&(o.get(t)?.add(e.key.name),u(e.key.name))},"Program:exit"(){let t=Js(n);if(t.size!==0)for(let n of i)t.has(n.caller)&&t.has(n.callee)&&e.report({messageId:`noRecursive`,node:n.node})},VariableDeclarator(e){e.id.type===`Identifier`&&e.init!==null&&(e.init.type===`FunctionExpression`||e.init.type===`ArrowFunctionExpression`)&&(u(e.id.name),s(e.id.name))},"VariableDeclarator:exit"(e){e.id.type===`Identifier`&&e.init!==null&&(e.init.type===`FunctionExpression`||e.init.type===`ArrowFunctionExpression`)&&c()}}},meta:{messages:{noRecursive:`Recursion is not allowed (JPL Power of 10). Use iteration instead — a loop or explicit stack.`},schema:[{additionalProperties:!1,properties:{},type:`object`}]}}),Xs=new m({extensions:[`.ts`,`.tsx`,`.js`,`.jsx`,`.mjs`,`.cjs`,`.json`,`.node`]}),Zs={found:!1};function Qs(e,t){if(!e.startsWith(`.`))return Zs;let{path:n}=Xs.sync(a(t),e);return n===void 0||n===``?Zs:{found:!0,path:n}}const $s=`uiaspectratioconstraint`,ec=new Set([`ButtonSpritesheet`,`GenericSpritesheet`,`LabelSpritesheet`]);function tc({openingElement:e}){let{name:t}=e;return t.type===`JSXIdentifier`?t.name:void 0}function nc(e){let t=!1;return Rr(e,e=>{t||e.type===`JSXElement`&&tc(e)===$s&&(t=!0)}),t}function rc(e){if(e.type===`FunctionDeclaration`)return e.id?.name;if(Fe(e)){let{parent:t}=e;if(t.type===`VariableDeclarator`&&t.id.type===`Identifier`)return t.id.name}}function ic(e){if(e.body.type!==`BlockStatement`)return w(e.body)}function ac(e){for(let t of e.defs){if(t.type!==`ImportBinding`)continue;let{parent:e}=t.node;if(e?.type===`ImportDeclaration`&&y(e.source.value))return e.source.value}}const oc=new Map;function sc(e,t){if(!e.startsWith(`.`))return!1;let n=Qs(e,t);if(!n.found)return!1;let r=oc.get(n.path);if(r!==void 0)return r;try{let e=f(n.path,`utf8`).includes(`<uiaspectratioconstraint`);return oc.set(n.path,e),e}catch{return oc.set(n.path,!1),!1}}function cc(e){for(let t of e.openingElement.attributes)if(!(t.type!==`JSXAttribute`||t.name.type!==`JSXIdentifier`||t.name.name!==`scaled`)&&t.value?.type===`JSXExpressionContainer`&&t.value.expression.type===`Literal`&&t.value.expression.value===!1)return!0;return!1}function lc(e){return e.type===`JSXElement`?tc(e)===$s:e.type===`JSXExpressionContainer`&&e.expression.type===`Identifier`&&e.expression.name===`UI_ASPECT_RATIO_CONSTRAINT`}function uc(e,t,n,r){if(t.has(e))return!0;if(n===void 0)return!1;let i=n.set.get(e);if(i===void 0||!ds(i))return!1;let a=ac(i);return a!==void 0&&(sc(a,r)||ec.has(e))}const dc=t({create(e){let{filename:t,sourceCode:n}=e,r=new Set,i=[],a;return{ArrowFunctionExpression(e){let t=rc(e),n=ic(e);t===void 0||n===void 0||n.type!==`JSXElement`&&n.type!==`JSXFragment`||nc(n)&&r.add(t)},FunctionDeclaration(e){let t=rc(e);if(t===void 0||e.body?.body.length!==1)return;let[n]=e.body.body;n?.type!==`ReturnStatement`||n.argument===null||nc(n.argument)&&r.add(t)},ImportDeclaration(e){a??=e},JSXElement(e){i.push(e)},"Program:exit"(){let o;a!==void 0&&(o=n.getScope(a));for(let n of i){let i=tc(n);if(i!==void 0&&!(!uc(i,r,o,t)||cc(n)))for(let t of n.children)lc(t)&&e.report({messageId:`redundantAspectRatioConstraint`,node:t})}}}},meta:{docs:{description:`Disallow redundant uiaspectratioconstraint children inside components that already manage their own aspect ratio internally.`},messages:{redundantAspectRatioConstraint:`This component already renders a uiaspectratioconstraint internally. Passing one as a child is redundant and will cause layout issues.`},schema:[],type:`problem`}}),fc=new Set([`JSXElement`,`ReactElement`,`ReactNode`]),pc=new Set([`ChainExpression`,`ParenthesizedExpression`,`TSAsExpression`,`TSInstantiationExpression`,`TSNonNullExpression`,`TSSatisfiesExpression`,`TSTypeAssertion`]),mc=/^use[A-Z]/u;function hc(e){return mc.test(e)}function gc(e){if(e?.type!==`TSTypeReference`)return!1;let{typeName:t}=e;return t.type===`Identifier`?fc.has(t.name):t.type===`TSQualifiedName`&&fc.has(t.right.name)}function _c({returnType:e}){return e?.typeAnnotation??void 0}function vc(e){if(e.type===`ArrowFunctionExpression`&&(e.body.type===`JSXElement`||e.body.type===`JSXFragment`))return!0;if(e.body===null)return!1;let t=!1;return zr(e.body,e=>{if(t||e.type!==`ReturnStatement`)return;let{argument:n}=e;n!==null&&(n.type===`JSXElement`||n.type===`JSXFragment`)&&(t=!0)}),t}function yc({parent:e}){return e.type===`CallExpression`||e.type===`JSXExpressionContainer`||e.type===`ArrayExpression`}function bc(e){if(!(e.parent?.type!==`VariableDeclarator`||e.parent.id.type!==`Identifier`))return e.parent.id.name}function xc(e){return e.type===`Identifier`?e.name:void 0}function Sc(e){let t=e;for(;t!==void 0&&pc.has(t.type);)t=t.parent??void 0;return t}function Cc(e){let t=Sc(e.parent??void 0);return t?.type===`Property`&&wc(t.value)===e}function wc(e){let t=e;for(;Tc(t);)t=t.expression;return t}function Tc(e){return pc.has(e.type)}function Ec(e,t){if(t.type===`FunctionDeclaration`){let n=e.getDeclaredVariables(t);return n.length>0?n[0]:void 0}let{parent:n}=t;if(n?.type!==`VariableDeclarator`)return;let r=e.getDeclaredVariables(n);return r.length>0?r[0]:void 0}function Dc(e,t){let n=Ec(t,e);if(n===void 0)return!1;let r=!1;for(let e of n.references)if(!e.isWrite()&&(r=!0,!Cc(e.identifier)))return!1;return r}const Oc=t({create(e){let t=0;function n(t,n){e.report({data:{functionName:n},messageId:`noRenderHelper`,node:t})}function r(r){let{parent:i}=r,a=bc(r);if(a!==void 0&&W(a)){--t;return}if(t>0||yc(r)||i.type!==`VariableDeclarator`)return;let o=xc(i.id);if(o===void 0||W(o)||hc(o)||Dc(r,e.sourceCode))return;let s=ce(i.id),c=s!==void 0&&gc(s.typeAnnotation),l=gc(_c(r));(c||l||vc(r))&&n(i,o)}return{ArrowFunctionExpression(e){let n=bc(e);n!==void 0&&W(n)&&(t+=1)},"ArrowFunctionExpression:exit":r,FunctionDeclaration({id:e}){e!==null&&W(e.name)&&(t+=1)},"FunctionDeclaration:exit"(r){if(r.id===null)return;let i=r.id.name;if(W(i)){--t;return}t>0||hc(i)||Dc(r,e.sourceCode)||(gc(_c(r))||vc(r))&&n(r,i)},FunctionExpression(e){let n=bc(e);n!==void 0&&W(n)&&(t+=1)},"FunctionExpression:exit":r}},meta:{docs:{description:`Disallow non-component functions that return JSX or React elements.`},messages:{noRenderHelper:`Convert render helper '{{functionName}}' to a React component. Functions that return JSX should be PascalCase components, not camelCase helpers.`},schema:[],type:`suggestion`}}),kc=h({"message?":`string | undefined`,object:`string`,properties:h(`string[]`).readonly()}).readonly(),Ac=h({"allowFiles?":h(`string[]`).readonly().or(`undefined`),"checkComputed?":`boolean | undefined`,restrictions:kc.array().readonly()}).readonly(),jc={matchBase:!0},Mc={dot:!0,magicalBraces:!0};function Nc(e){return e.replaceAll(`\\`,`/`)}function Pc(e){let t=Nc(e);if(!s(e))return[t];let n=Nc(l(process.cwd(),e));return n.length===0||n.startsWith(`..`)?[t]:[t,n]}function Fc(e,t){let n=new g(e,t),r=n.hasMagic();return{hasMagic:r,matches:r?e=>n.match(e):t=>t===e}}function Ic(e){let t=new Set,n=[],r=0;for(let i of e){let e=Fc(i,Mc);e.hasMagic?n[r++]=e.matches:t.add(i)}return e=>t.has(e)||n.some(t=>t(e))}function Lc(e){return{matchesObject:Fc(e.object,Mc).matches,matchesProperty:Ic(e.properties),message:e.message}}function Rc(e){let[t]=e.options;if(!Ac.allows(t))return{checkComputed:!0,isAllowedFile:!1,restrictions:[]};let{allowFiles:n,checkComputed:r,restrictions:i}=t,a=Pc(e.filename),o=n?.some(e=>a.some(t=>_(t,e,jc)))??!1;return{checkComputed:r??!0,isAllowedFile:o,restrictions:i.map(Lc)}}const zc=t({create(e){let{checkComputed:t,isAllowedFile:n,restrictions:r}=Rc(e);function i(i,a){if(n||!M(i)||i.computed&&!t||i.object.type!==`Identifier`)return;let o=T(i);if(o!==void 0){for(let t of r)if(t.matchesObject(i.object.name)&&t.matchesProperty(o)){t.message===void 0?e.report({data:{object:i.object.name,property:o},messageId:`restricted`,node:a}):e.report({data:{message:t.message},messageId:`restrictedCustom`,node:a});return}}}return{AssignmentExpression(e){i(e.left,e)},UpdateExpression(e){i(e.argument,e)}}},meta:{docs:{description:`Disallow assignment to restricted object properties.`,recommended:!0},messages:{restricted:`Assignment to '{{object}}.{{property}}' is not permitted.`,restrictedCustom:`{{message}}`},schema:[{additionalProperties:!1,properties:{allowFiles:{items:{type:`string`},type:`array`},checkComputed:{default:!0,type:`boolean`},restrictions:{items:{additionalProperties:!1,properties:{message:{type:`string`},object:{type:`string`},properties:{items:{type:`string`},minItems:1,type:`array`}},required:[`object`,`properties`],type:`object`},type:`array`}},required:[`restrictions`],type:`object`}],type:`problem`}}),Bc=/\.spec\.(?:ts|tsx)$/u,Vc=t({createOnce(e){return{Program(t){let{filename:n}=e;n&&Bc.test(n)&&e.report({messageId:`noSpecFileExtension`,node:t})}}},meta:{docs:{description:`Disallow the .spec.{ts,tsx} file extension for test files. Use .test.{ts,tsx} instead.`,recommended:!0},messages:{noSpecFileExtension:`Test files must use .test.ts or .test.tsx instead of .spec.ts or .spec.tsx. Rename this file to use the .test extension.`},schema:[],type:`problem`}}),Hc=`Fragment`;function Uc(e){return e.parent?.type===`ImportDeclaration`?e.parent:void 0}function Wc(e,t){if(e.type!==`ImportBinding`)return!1;let n=Uc(e.node);return n!==void 0&&t.has(n.source.value)}function Gc(e,t){if(e===void 0)return!1;for(let n of e.defs)if(Wc(n,t)&&(n.node.type===`ImportDefaultSpecifier`||n.node.type===`ImportNamespaceSpecifier`))return!0;return!1}function Kc(e,t,n){if(e===void 0)return!1;for(let r of e.defs)if(Wc(r,n)&&r.node.type===`ImportSpecifier`&&pe(r.node)===t)return!0;return!1}function qc(e,t,n){let{callee:r}=t;return r.type===`Identifier`?Kc(E(e.getScope(r),r.name),`createElement`,n):r.type!==`MemberExpression`||r.computed||T(r)!==`createElement`||r.object.type!==`Identifier`?!1:Gc(E(e.getScope(r.object),r.object.name),n)}function Jc(e){return e.type===`Literal`&&y(e.value)}function Yc(e,t){if(ds(e))return O(t)||t===Hc;if(!G(e.scope)||!O(t)&&t!==Hc)return!1;for(let t of e.defs){if(t.type===`FunctionName`||t.type===`ClassName`)return!0;if(t.type!==`Variable`||t.node.type!==`VariableDeclarator`)continue;let e=t.node.init??void 0;if(e!==void 0&&(Fe(e)||e.type===`ClassExpression`))return!0}return!1}function Xc(e,t,n){let r=E(e.getScope(t),t.name);return Kc(r,Hc,n)?!0:r!==void 0&&Yc(r,t.name)}function Zc(e){let t=e;for(;;){if(t.computed)return;if(t.object.type===`Identifier`)return t.object;if(t.object.type!==`MemberExpression`)return;t=t.object}}function Qc(e){if(e.computed)return;let t=T(e);if(t!==void 0)return e.object.type===`MemberExpression`&&Qc(e.object)===void 0?void 0:t}function $c(e,t,n){let r=Zc(t);if(r===void 0)return!1;let i=Qc(t);if(i===void 0)return!1;let a=E(e.getScope(r),r.name);return Gc(a,n)&&i===Hc?!0:a===void 0||!ds(a)?!1:O(i)}function el(e,t,n){return t.type===`SpreadElement`?!1:Jc(t)?!0:t.type===`Identifier`?Xc(e,t,n):t.type===`MemberExpression`&&$c(e,t,n)}const tl=t({create(e){let t=yn(e.options[0]),{sourceCode:n}=e;return{CallExpression(r){if(!qc(n,r,t))return;let[i]=r.arguments;i!==void 0&&el(n,i,t)&&e.report({messageId:`useJsx`,node:r})}}},meta:{docs:{description:`Require JSX for static React.createElement calls.`,recommended:!0},messages:{useJsx:`Use JSX instead of static React.createElement calls.`},schema:[{additionalProperties:!1,properties:{environment:mn},type:`object`}],type:`problem`}});function nl(e,t){let n=w(t);if(n.type!==`CallExpression`||n.optional)return!1;let r=w(n.callee);if(r.type!==`MemberExpression`||r.optional||T(r)!==`create`)return!1;let i=w(r.object);return i.type!==`Identifier`||i.name!==`table`?!1:!ie(e,i,`table`)}function rl(e,t){let n=w(t);if(n.type!==`NewExpression`||n.arguments.length!==1&&n.arguments.length!==2)return!1;let r=w(n.callee);return r.type!==`Identifier`||r.name!==`Array`?!1:!ie(e,r,`Array`)}const il=t({create(e){return{CallExpression(t){if(t.optional)return;let n=w(t.callee);if(n.type!==`MemberExpression`||n.optional||T(n)!==`map`)return;let r=w(n.object);(nl(e.sourceCode,r)||rl(e.sourceCode,r))&&e.report({messageId:`avoidConstructThenMap`,node:t})}}},meta:{docs:{description:`Disallow map(...) directly on table.create(...) and new Array(...) constructor patterns in roblox-ts.`},messages:{avoidConstructThenMap:`Do not map directly on table.create(...) or new Array(...). Allocate first, then write by index in a loop.`},schema:[],type:`suggestion`}});function al(e){let{callee:t}=e;if(t.type!==`MemberExpression`||T(t)!==`await`||t.object.type!==`CallExpression`)return!1;let n=t.object.callee;return n.type!==`MemberExpression`||n.object.type!==`Identifier`||n.object.name!==`Promise`?!1:T(n)===`delay`}const ol=t({createOnce(e){return{CallExpression(t){if(al(t)){e.report({messageId:`noPromiseDelayAwait`,node:t});return}let{callee:n}=t;n.type===`MemberExpression`&&(n.object.type!==`Identifier`||n.object.name!==`task`||T(n)===`wait`&&e.report({messageId:`noTaskWait`,node:t}))}}},meta:{docs:{description:`Disallow task.wait() calls.`},messages:{noPromiseDelayAwait:`Do not use Promise.delay(...).await() in tests. Advance deterministic schedulers or wait for the actual condition instead.`,noTaskWait:`Do not use task.wait() in tests. Advance deterministic schedulers or wait for the actual condition instead.`},schema:[],type:`problem`}}),sl=t({createOnce(e){return{JSXAttribute(t){t.name.type!==`JSXIdentifier`||!t.name.name.startsWith(`_`)||e.report({data:{propName:t.name.name},messageId:`noUnderscoreReactProp`,node:t.name})}}},meta:{docs:{description:`Ban React property names that begin with an underscore in JSX.`},messages:{noUnderscoreReactProp:`React prop '{{propName}}' starts with '_'. Remove the leading underscore from the prop name.`},schema:[],type:`problem`}}),cl=/@(?:link|linkcode|linkplain|see)\s+\{?(?<identifier>\w+)/gu,ll=/\{@(?:link|linkcode|linkplain|see)\s+(?<identifier>\w+)/gu,ul=/[@{](?:type|typedef|param|returns?|template|augments|extends|implements)\s+(?<annotation>[^}]*)/gu,dl=/\b(?<identifier>\w+)\b/gu;function fl(e){return e.type===`ImportDefaultSpecifier`||e.type===`ImportNamespaceSpecifier`||e.type===`ImportSpecifier`}function pl(e){let t=new Set;for(let n of e)n.type===`Block`&&(ml(n.value,t),hl(n.value,t));return t}function ml(e,t){for(let n of[cl,ll])for(let r of e.matchAll(n)){let e=r.groups?.identifier;e!==void 0&&t.add(e)}}function hl(e,t){for(let n of e.matchAll(ul)){let e=n.groups?.annotation;if(e!==void 0)for(let n of e.matchAll(dl)){let e=n.groups?.identifier;e!==void 0&&t.add(e)}}}function gl(e,t,n,r){if(t.specifiers.length===1)return r.remove(t);let i=e.getTokenAfter(n);if(t.specifiers[0]===n&&i?.value===`,`){let t=e.getTokenBefore(n);if(t!==null)return[r.removeRange([t.range[1],n.range[0]]),r.remove(n),r.remove(i)]}if(i?.value===`,`)return r.removeRange([n.range[0],i.range[1]]);let a=e.getTokenBefore(n);return a?.value===`,`?r.removeRange([a.range[0],n.range[1]]):r.remove(n)}const _l=t({create(e){let{sourceCode:t}=e,n=e.options[0]?.checkJSDoc??!0,r=n?pl(t.getAllComments()):new Set,i=[],a;return{ImportDeclaration(e){a??=e;for(let t of e.specifiers)fl(t)&&i.push({identifierName:t.local.name,parent:e,specifier:t})},"Program:exit"(){if(a===void 0)return;let o=t.getScope(a);for(let{identifierName:a,parent:s,specifier:c}of i){let i=o.set.get(a);i!==void 0&&i.references.length>0||n&&r.has(a)||e.report({data:{identifierName:a},fix(e){return gl(t,s,c,e)},messageId:`unusedImport`,node:c})}}}},meta:{docs:{description:`Disallow unused imports`},fixable:`code`,messages:{unusedImport:`Import '{{identifierName}}' is defined but never used.`},schema:[{additionalProperties:!1,properties:{checkJSDoc:{default:!0,description:`Check if imports are referenced in JSDoc comments`,type:`boolean`}},type:`object`}],type:`problem`}}),vl=t({create(e){let t=new Set,n=new Set,r=yn(e.options[0]);return{CallExpression(r){fe(r,t,n)&&js(r)&&e.report({messageId:`unusedUseMemo`,node:r})},ImportDeclaration(e){Ms(e,r,t,n)}}},meta:{docs:{description:`Disallow standalone useMemo calls that ignore the memoized value.`,recommended:!0},messages:{unusedUseMemo:`useMemo results must be used. Standalone useMemo calls add overhead without preserving a value.`},schema:[{additionalProperties:!1,properties:{environment:{default:`roblox-ts`,enum:[`roblox-ts`,`standard`],type:`string`}},type:`object`}],type:`problem`}});function yl(e){if(e.body===null)return;if(e.body.type!==`BlockStatement`)return e.body;if(e.body.body.length!==1)return;let[t]=e.body.body;if(t?.type===`ReturnStatement`)return t.argument??void 0}const bl=t({create(e){return{CallExpression(t){if(!_o(t,`useMemo`))return;let n=Lr(t);if(n===void 0)return;let r=yl(n);r===void 0||!go(r)||e.report({messageId:`simpleMemo`,node:t})}}},meta:{docs:{description:`Disallow useMemo for expressions that are already trivial to compute.`,recommended:!0},messages:{simpleMemo:`useMemo wrapping a trivially cheap expression - memo overhead exceeds the computation`},type:`problem`}}),xl=/^[A-Z][A-Z0-9_]*$/u,Sl={staticGlobalFactories:new Set(ss)},Cl=[String.raw`^Array\b`,String.raw`^Object\b`,String.raw`^Map\b`,String.raw`^Set\b`,String.raw`^WeakMap\b`,String.raw`^WeakSet\b`];function wl(e){let t=[],n=0,r=[e];for(;r.length>0;){let e=r.pop();if(e===void 0)break;e.type!==`global`&&(t[n++]=e);for(let t of e.childScopes)r.push(t)}return t}function Tl(e){return Fe(e)||e.type===`ClassExpression`}const El=new Set([`ArrayExpression`,`ObjectExpression`,`JSXElement`,`JSXFragment`]);function Dl(e,t,n){if(El.has(e.type))return!0;if(e.type!==`CallExpression`&&e.type!==`NewExpression`)return!1;let r=n.getText(e.callee);for(let e of t)if(e.test(r))return!0;return!1}function Ol(e){return e.type===`Program`||e.type===`BlockStatement`}function kl(e){switch(e.type){case`ChainExpression`:case`ParenthesizedExpression`:case`TSAsExpression`:case`TSInstantiationExpression`:case`TSNonNullExpression`:case`TSSatisfiesExpression`:case`TSTypeAssertion`:return kl(e.expression);case`Identifier`:return e.name;case`MemberExpression`:return kl(e.object);default:return}}function q(e,t){switch(e.type){case`ArrayExpression`:return Al(e,t);case`BinaryExpression`:case`LogicalExpression`:return jl(e,t);case`CallExpression`:case`NewExpression`:return Ml(e,t);case`ChainExpression`:return q(e.expression,t);case`ParenthesizedExpression`:case`TSAsExpression`:case`TSInstantiationExpression`:case`TSNonNullExpression`:case`TSSatisfiesExpression`:case`TSTypeAssertion`:return q(e.expression,t);case`ConditionalExpression`:return Nl(e,t);case`MemberExpression`:return Pl(e,t);case`ObjectExpression`:return Fl(e,t);case`SequenceExpression`:return!1;case`SpreadElement`:return!1;case`TemplateLiteral`:return Il(e.expressions,t);case`UnaryExpression`:return q(e.argument,t);default:return!0}}function Al(e,t){for(let n of e.elements)if(n===null||!q(n,t))return!1;return!0}function jl(e,t){return q(e.left,t)&&q(e.right,t)}function Ml(e,t){let n=kl(e.callee);return n===void 0||!t.has(n)||!q(e.callee,t)?!1:Il(e.arguments,t)}function Nl(e,t){return q(e.test,t)&&q(e.consequent,t)&&q(e.alternate,t)}function Pl(e,t){return q(e.object,t)&&(!e.computed||q(e.property,t))}function Fl(e,t){for(let n of e.properties)if(n.type!==`Property`||n.computed&&!q(n.key,t)||!q(n.value,t))return!1;return!0}function Il(e,t){for(let n of e)if(!q(n,t))return!1;return!0}function Ll(e,t){return t.type===`Literal`||K(e,t,new Set,Sl)&&q(t,Sl.staticGlobalFactories)}function Rl(e,t){let n=t;for(;n.type===`ParenthesizedExpression`;)n=n.expression;return e.getText(n)}function zl(e,t){let{parent:n}=e;if(n==null||!Ol(n))return!1;let{body:r}=n;for(let n=0;n<r.length;n+=1)if(r[n]===e)return r[n+1]===t;return!1}function Bl(e,t){let[n]=t.range;for(;n>0;){let t=e[n-1];if(t===` `||t===` `){--n;continue}break}let[,r]=t.range,i=r;for(;i<e.length;){let t=e[i];if(t===`
|
|
9
|
-
`||t===`\r`){i+=1;continue}break}return[n,i]}function Vl(e){let t=e.parent,n=e;for(;t!=null;){if(k(t)&&t.init===n)return t;n=t,t=t.parent}}const Hl=t({create(e){let{sourceCode:t}=e,[n]=e.options,r=(n?.ignoreCallPatterns??Cl).map(e=>new RegExp(e,`u`));function i(e){if(t.getCommentsInside(e).length>0)return!0;let n=e.loc?.start.line,r=e.loc?.end.line;if(n===void 0||r===void 0)return!1;for(let r of t.getCommentsBefore(e)){let e=r.loc?.end.line;if(e===n||e===n-1)return!0}for(let n of t.getCommentsAfter(e)){let e=n.loc?.start.line;if(e===r||e===r+1)return!0}return!1}function a(e,n){let r,i=0;for(let e of n.references)e.isReadOnly()&&(i+=1,r=e);if(!(i!==1||r===void 0||r.from!==e||t.getScope(r.identifier)!==e))return r}function o(e,n){let{name:i}=n;if(!xl.test(i))return;let[o]=n.defs;if(o?.type!==`Variable`)return;let s=o.node;if(!(k(s)&&nt(s.id))||s.init===null)return;let c=o.parent;if(c===null||!Me(c)||c.kind!==`const`||c.declarations.length!==1||Ne(c.parent))return;let l=s.init;if(Tl(l)||Dl(l,r,t))return;let u=a(e,n);if(u===void 0||!nt(u.identifier))return;let d=Vl(u.identifier);if(d===void 0)return;let f=d.parent;if(!(!Me(f)||f.kind!==`const`))return{declarationNode:c,enclosingDeclaration:f,initializer:l,name:i,referenceIdentifier:u.identifier,reportNode:s.id}}function s(n){let r=[];for(let a of n.variables){let s=o(n,a);if(s===void 0)continue;let c=zl(s.declarationNode,s.enclosingDeclaration),l=Ll(t,s.initializer),u=q(s.initializer,Sl.staticGlobalFactories);if(!((c||l)&&u&&!i(s.declarationNode))){e.report({data:{name:s.name},messageId:`uselessConstantNoFix`,node:s.reportNode});continue}r.push({declarationNode:s.declarationNode,initializerText:Rl(t,s.initializer),name:s.name,referenceIdentifier:s.referenceIdentifier,reportNode:s.reportNode})}c(r)}function c(n){let[r]=n;r!==void 0&&e.report({data:{name:r.name,names:n.map(e=>e.name).join(`, `)},fix(e){let r=[],i=0;for(let t of n)r[i++]=e.replaceText(t.referenceIdentifier,t.initializerText);for(let a of n)r[i++]=e.removeRange(Bl(t.text,a.declarationNode));return r},messageId:n.length===1?`uselessConstant`:`uselessConstants`,node:r.reportNode})}return{"Program:exit"(e){let n=wl(t.getScope(e));for(let e of n)s(e)}}},meta:{docs:{description:`Disallow constants that do not add value.`,recommended:!0},fixable:`code`,messages:{uselessConstant:`Constant '{{name}}' is only referenced once in the same scope. Inline it directly, or move it to a higher scope if reference stability is needed.`,uselessConstantNoFix:`Constant '{{name}}' is only referenced once in the same scope. It cannot be auto-inlined because the initializer is not safely movable or the declaration has attached comments. Inline it manually, or move it to a higher scope if reference stability is needed.`,uselessConstants:`Constants '{{names}}' are only referenced once in the same scope. Inline them directly, or move them to a higher scope if reference stability is needed.`},schema:[{additionalProperties:!1,properties:{ignoreCallPatterns:{default:[...Cl],items:{type:`string`},type:`array`}},type:`object`}],type:`problem`}});var Ul={AdGui:{Archivable:{type:`bool`,value:!0}},AdPortal:{Archivable:{type:`bool`,value:!0}},AlignOrientation:{AlignType:{enumType:`AlignType`,type:`Enum`,value:`AllAxes`},Archivable:{type:`bool`,value:!0},CFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Enabled:{type:`bool`,value:!0},MaxAngularVelocity:{type:`number`,value:`inf`},MaxTorque:{type:`number`,value:1e4},Mode:{enumType:`OrientationAlignmentMode`,type:`Enum`,value:`TwoAttachment`},PrimaryAxisOnly:{type:`bool`,value:!1},ReactionTorqueEnabled:{type:`bool`,value:!1},Responsiveness:{type:`number`,value:10},RigidityEnabled:{type:`bool`,value:!1},Visible:{type:`bool`,value:!1}},AlignPosition:{ApplyAtCenterOfMass:{type:`bool`,value:!1},Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},ForceLimitMode:{enumType:`ForceLimitMode`,type:`Enum`,value:`Magnitude`},ForceRelativeTo:{enumType:`ActuatorRelativeTo`,type:`Enum`,value:`World`},MaxAxesForce:{type:`Vector3`,value:[1e4,1e4,1e4]},MaxForce:{type:`number`,value:1e4},MaxVelocity:{type:`number`,value:`inf`},Mode:{enumType:`PositionAlignmentMode`,type:`Enum`,value:`TwoAttachment`},Position:{type:`Vector3`,value:[0,0,0]},ReactionForceEnabled:{type:`bool`,value:!1},Responsiveness:{type:`number`,value:10},RigidityEnabled:{type:`bool`,value:!1},Visible:{type:`bool`,value:!1}},AngularVelocity:{AngularVelocity:{type:`Vector3`,value:[0,0,0]},Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},MaxTorque:{type:`number`,value:0},ReactionTorqueEnabled:{type:`bool`,value:!1},RelativeTo:{enumType:`ActuatorRelativeTo`,type:`Enum`,value:`World`},Visible:{type:`bool`,value:!1}},Animation:{Archivable:{type:`bool`,value:!0}},AnimationConstraint:{AngularDamping:{type:`number`,value:1},AngularStrength:{type:`number`,value:1},Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},IsKinematic:{type:`bool`,value:!1},LinearDamping:{type:`number`,value:1},LinearStrength:{type:`number`,value:1},MaxForce:{type:`number`,value:1e4},MaxTorque:{type:`number`,value:1e4},Transform:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Visible:{type:`bool`,value:!1}},AnimationController:{Archivable:{type:`bool`,value:!0}},AnimationGraphDefinition:{Archivable:{type:`bool`,value:!0},Loop:{type:`bool`,value:!0},Priority:{enumType:`AnimationPriority`,type:`Enum`,value:`Action`}},AnimationNodeDefinition:{Archivable:{type:`bool`,value:!0},NodeType:{enumType:`AnimationNodeType`,type:`Enum`,value:`InvalidNode`}},Animator:{Archivable:{type:`bool`,value:!0},PreferLodEnabled:{type:`bool`,value:!0}},ArcHandles:{Archivable:{type:`bool`,value:!0},Color3:{type:`Color3`,value:[.05098039284348488,.4117647111415863,.6745098233222961]},Transparency:{type:`number`,value:0},Visible:{type:`bool`,value:!0}},Attachment:{Archivable:{type:`bool`,value:!0},CFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Visible:{type:`bool`,value:!1}},AudioAnalyzer:{Archivable:{type:`bool`,value:!0},SpectrumEnabled:{type:`bool`,value:!0},WindowSize:{enumType:`AudioWindowSize`,type:`Enum`,value:`Medium`}},AudioChannelMixer:{Archivable:{type:`bool`,value:!0},Layout:{enumType:`AudioChannelLayout`,type:`Enum`,value:`Stereo`}},AudioChannelSplitter:{Archivable:{type:`bool`,value:!0},Layout:{enumType:`AudioChannelLayout`,type:`Enum`,value:`Stereo`}},AudioChorus:{Archivable:{type:`bool`,value:!0},Bypass:{type:`bool`,value:!1},Depth:{type:`number`,value:.44999998807907104},Mix:{type:`number`,value:.8500000238418579},Rate:{type:`number`,value:5}},AudioCompressor:{Archivable:{type:`bool`,value:!0},Attack:{type:`number`,value:.10000000149011612},Bypass:{type:`bool`,value:!1},MakeupGain:{type:`number`,value:0},Ratio:{type:`number`,value:40},Release:{type:`number`,value:.10000000149011612},Threshold:{type:`number`,value:-40}},AudioDeviceInput:{AccessType:{enumType:`AccessModifierType`,type:`Enum`,value:`Deny`},Archivable:{type:`bool`,value:!0},Muted:{type:`bool`,value:!1},Volume:{type:`number`,value:1}},AudioDeviceOutput:{Archivable:{type:`bool`,value:!0}},AudioDistortion:{Archivable:{type:`bool`,value:!0},Bypass:{type:`bool`,value:!1},Level:{type:`number`,value:.5}},AudioEcho:{Archivable:{type:`bool`,value:!0},Bypass:{type:`bool`,value:!1},DelayTime:{type:`number`,value:1},DryLevel:{type:`number`,value:0},Feedback:{type:`number`,value:.5},RampTime:{type:`number`,value:0},WetLevel:{type:`number`,value:0}},AudioEmitter:{AcousticSimulationEnabled:{type:`bool`,value:!0},Archivable:{type:`bool`,value:!0},AudioInteractionGroup:{type:`string`,value:``},DiffractionEnabled:{enumType:`SimulationMode`,type:`Enum`,value:`Default`},OcclusionEnabled:{enumType:`SimulationMode`,type:`Enum`,value:`Default`},PositionType:{enumType:`EmitterPositionType`,type:`Enum`,value:`Parent`},ReverbEnabled:{enumType:`SimulationMode`,type:`Enum`,value:`Default`},SimulationFidelity:{enumType:`AudioSimulationFidelity`,type:`Enum`,value:`Automatic`}},AudioEqualizer:{Archivable:{type:`bool`,value:!0},Bypass:{type:`bool`,value:!1},HighGain:{type:`number`,value:0},LowGain:{type:`number`,value:0},MidGain:{type:`number`,value:0}},AudioFader:{Archivable:{type:`bool`,value:!0},Bypass:{type:`bool`,value:!1},Volume:{type:`number`,value:1}},AudioFilter:{Archivable:{type:`bool`,value:!0},Bypass:{type:`bool`,value:!1},FilterType:{enumType:`AudioFilterType`,type:`Enum`,value:`Peak`},Frequency:{type:`number`,value:2e3},Gain:{type:`number`,value:0},Q:{type:`number`,value:.7070000171661377}},AudioFlanger:{Archivable:{type:`bool`,value:!0},Bypass:{type:`bool`,value:!1},Depth:{type:`number`,value:.44999998807907104},Mix:{type:`number`,value:.8500000238418579},Rate:{type:`number`,value:5}},AudioGate:{Archivable:{type:`bool`,value:!0},Attack:{type:`number`,value:.009999999776482582},Bypass:{type:`bool`,value:!1},Release:{type:`number`,value:.10000000149011612}},AudioLimiter:{Archivable:{type:`bool`,value:!0},Bypass:{type:`bool`,value:!1},MaxLevel:{type:`number`,value:0},Release:{type:`number`,value:.009999999776482582}},AudioListener:{AcousticSimulationEnabled:{type:`bool`,value:!0},Archivable:{type:`bool`,value:!0},AudioInteractionGroup:{type:`string`,value:``},DiffractionEnabled:{enumType:`SimulationMode`,type:`Enum`,value:`Default`},OcclusionEnabled:{enumType:`SimulationMode`,type:`Enum`,value:`Default`},PositionType:{enumType:`ListenerPositionType`,type:`Enum`,value:`Parent`},ReverbEnabled:{enumType:`SimulationMode`,type:`Enum`,value:`Default`},SimulationFidelity:{enumType:`AudioSimulationFidelity`,type:`Enum`,value:`Automatic`}},AudioPitchShifter:{Archivable:{type:`bool`,value:!0},Bypass:{type:`bool`,value:!1},Pitch:{type:`number`,value:1.25},WindowSize:{enumType:`AudioWindowSize`,type:`Enum`,value:`Medium`}},AudioPlayer:{Archivable:{type:`bool`,value:!0},AutoLoad:{type:`bool`,value:!0},AutoPlay:{type:`bool`,value:!1},Looping:{type:`bool`,value:!1},PlaybackSpeed:{type:`number`,value:1},TimePosition:{type:`number`,value:0},Volume:{type:`number`,value:1}},AudioRecorder:{Archivable:{type:`bool`,value:!0}},AudioReverb:{Archivable:{type:`bool`,value:!0},Bypass:{type:`bool`,value:!1},DecayRatio:{type:`number`,value:.5},DecayTime:{type:`number`,value:1.5},Density:{type:`number`,value:1},Diffusion:{type:`number`,value:1},DryLevel:{type:`number`,value:0},EarlyDelayTime:{type:`number`,value:.019999999552965164},HighCutFrequency:{type:`number`,value:2e4},LateDelayTime:{type:`number`,value:.03999999910593033},LowShelfFrequency:{type:`number`,value:250},LowShelfGain:{type:`number`,value:0},ReferenceFrequency:{type:`number`,value:5e3},WetLevel:{type:`number`,value:-6}},AudioSpeechToText:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!1},Text:{type:`string`,value:``}},AudioTextToSpeech:{Archivable:{type:`bool`,value:!0},Looping:{type:`bool`,value:!1},Pitch:{type:`number`,value:0},PlaybackSpeed:{type:`number`,value:1},Speed:{type:`number`,value:1},Text:{type:`string`,value:``},TimePosition:{type:`number`,value:0},VoiceId:{type:`string`,value:``},Volume:{type:`number`,value:1}},AudioTremolo:{Archivable:{type:`bool`,value:!0},Bypass:{type:`bool`,value:!1},Depth:{type:`number`,value:1},Duty:{type:`number`,value:.5},Frequency:{type:`number`,value:5},Shape:{type:`number`,value:0},Skew:{type:`number`,value:0},Square:{type:`number`,value:0}},AuroraScript:{Archivable:{type:`bool`,value:!0}},AvatarAbilityRules:{Archivable:{type:`bool`,value:!0}},AvatarAccessoryRules:{Archivable:{type:`bool`,value:!0}},AvatarAnimationRules:{Archivable:{type:`bool`,value:!0}},AvatarBodyRules:{Archivable:{type:`bool`,value:!0}},AvatarClothingRules:{Archivable:{type:`bool`,value:!0}},AvatarCollisionRules:{Archivable:{type:`bool`,value:!0}},AvatarRules:{Archivable:{type:`bool`,value:!0}},BallSocketConstraint:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},LimitsEnabled:{type:`bool`,value:!1},Radius:{type:`number`,value:.15000000596046448},Restitution:{type:`number`,value:0},TwistLimitsEnabled:{type:`bool`,value:!1},TwistLowerAngle:{type:`number`,value:-45},TwistUpperAngle:{type:`number`,value:45},UpperAngle:{type:`number`,value:45},Visible:{type:`bool`,value:!1}},Beam:{Archivable:{type:`bool`,value:!0},Brightness:{type:`number`,value:1},CurveSize0:{type:`number`,value:0},CurveSize1:{type:`number`,value:0},Enabled:{type:`bool`,value:!0},FaceCamera:{type:`bool`,value:!1},LightEmission:{type:`number`,value:0},LightInfluence:{type:`number`,value:0},Segments:{type:`number`,value:10},TextureLength:{type:`number`,value:1},TextureMode:{enumType:`TextureMode`,type:`Enum`,value:`Stretch`},TextureSpeed:{type:`number`,value:1},Width0:{type:`number`,value:1},Width1:{type:`number`,value:1},ZOffset:{type:`number`,value:0}},BillboardGui:{Active:{type:`bool`,value:!1},AlwaysOnTop:{type:`bool`,value:!1},Archivable:{type:`bool`,value:!0},AutoLocalize:{type:`bool`,value:!0},Brightness:{type:`number`,value:1},ClipsDescendants:{type:`bool`,value:!1},DistanceLowerLimit:{type:`number`,value:0},DistanceUpperLimit:{type:`number`,value:-1},Enabled:{type:`bool`,value:!0},ExtentsOffset:{type:`Vector3`,value:[0,0,0]},ExtentsOffsetWorldSpace:{type:`Vector3`,value:[0,0,0]},LightInfluence:{type:`number`,value:0},MaxDistance:{type:`number`,value:`inf`},ResetOnSpawn:{type:`bool`,value:!0},SelectionBehaviorDown:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorLeft:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorRight:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorUp:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionGroup:{type:`bool`,value:!1},Size:{type:`UDim2`,value:[0,0,0,0]},SizeOffset:{type:`Vector2`,value:[0,0]},StudsOffset:{type:`Vector3`,value:[0,0,0]},StudsOffsetWorldSpace:{type:`Vector3`,value:[0,0,0]},ZIndexBehavior:{enumType:`ZIndexBehavior`,type:`Enum`,value:`Global`}},BlockMesh:{Archivable:{type:`bool`,value:!0},Offset:{type:`Vector3`,value:[0,0,0]},Scale:{type:`Vector3`,value:[1,1,1]},VertexColor:{type:`Vector3`,value:[1,1,1]}},BloomEffect:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},Intensity:{type:`number`,value:.4000000059604645},Size:{type:`number`,value:24},Threshold:{type:`number`,value:.949999988079071}},BlurEffect:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},Size:{type:`number`,value:24}},BodyAngularVelocity:{AngularVelocity:{type:`Vector3`,value:[0,2,0]},Archivable:{type:`bool`,value:!0},MaxTorque:{type:`Vector3`,value:[4e3,4e3,4e3]},P:{type:`number`,value:1250}},BodyColors:{Archivable:{type:`bool`,value:!0},HeadColor3:{type:`Color3`,value:[.9921569228172302,.917647123336792,.5529412031173706]},LeftArmColor3:{type:`Color3`,value:[.9921569228172302,.917647123336792,.5529412031173706]},LeftLegColor3:{type:`Color3`,value:[.05098039656877518,.4117647409439087,.6745098233222961]},RightArmColor3:{type:`Color3`,value:[.9921569228172302,.917647123336792,.5529412031173706]},RightLegColor3:{type:`Color3`,value:[.05098039656877518,.4117647409439087,.6745098233222961]},TorsoColor3:{type:`Color3`,value:[.1568627506494522,.49803924560546875,.27843138575553894]}},BodyForce:{Archivable:{type:`bool`,value:!0},Force:{type:`Vector3`,value:[0,1,0]}},BodyGyro:{Archivable:{type:`bool`,value:!0},CFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},D:{type:`number`,value:500},MaxTorque:{type:`Vector3`,value:[4e5,0,4e5]},P:{type:`number`,value:3e3}},BodyPartDescription:{Archivable:{type:`bool`,value:!0},AssetId:{type:`number`,value:0},BodyPart:{enumType:`BodyPart`,type:`Enum`,value:`Head`},Color:{type:`Color3`,value:[0,0,0]},HeadShape:{type:`string`,value:``}},BodyPosition:{Archivable:{type:`bool`,value:!0},D:{type:`number`,value:1250},MaxForce:{type:`Vector3`,value:[4e3,4e3,4e3]},P:{type:`number`,value:1e4},Position:{type:`Vector3`,value:[0,50,0]}},BodyThrust:{Archivable:{type:`bool`,value:!0},Force:{type:`Vector3`,value:[0,1,0]},Location:{type:`Vector3`,value:[0,0,0]}},BodyVelocity:{Archivable:{type:`bool`,value:!0},MaxForce:{type:`Vector3`,value:[4e3,4e3,4e3]},P:{type:`number`,value:1250},Velocity:{type:`Vector3`,value:[0,2,0]}},Bone:{Archivable:{type:`bool`,value:!0},CFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Visible:{type:`bool`,value:!1}},BoolValue:{Archivable:{type:`bool`,value:!0},Value:{type:`bool`,value:!1}},BoxHandleAdornment:{AdornCullingMode:{enumType:`AdornCullingMode`,type:`Enum`,value:`Automatic`},AlwaysOnTop:{type:`bool`,value:!1},Archivable:{type:`bool`,value:!0},CFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Color3:{type:`Color3`,value:[.05098039284348488,.4117647111415863,.6745098233222961]},Shading:{enumType:`AdornShading`,type:`Enum`,value:`Default`},Size:{type:`Vector3`,value:[1,1,1]},SizeRelativeOffset:{type:`Vector3`,value:[0,0,0]},Transparency:{type:`number`,value:0},Visible:{type:`bool`,value:!0},ZIndex:{type:`number`,value:-1}},BrickColorValue:{Archivable:{type:`bool`,value:!0}},Camera:{Archivable:{type:`bool`,value:!0},CameraType:{enumType:`CameraType`,type:`Enum`,value:`Fixed`},CFrame:{type:`CFrame`,value:[0,20,20,1,0,0,0,.7071068286895752,.7071068286895752,0,-.7071068286895752,.7071068286895752]},FieldOfView:{type:`number`,value:70},FieldOfViewMode:{enumType:`FieldOfViewMode`,type:`Enum`,value:`Vertical`},Focus:{type:`CFrame`,value:[0,0,-5,1,0,0,0,1,0,0,0,1]},HeadLocked:{type:`bool`,value:!0},HeadScale:{type:`number`,value:1},VRTiltAndRollEnabled:{type:`bool`,value:!1}},CanvasGroup:{Active:{type:`bool`,value:!1},AnchorPoint:{type:`Vector2`,value:[0,0]},Archivable:{type:`bool`,value:!0},AutoLocalize:{type:`bool`,value:!0},AutomaticSize:{enumType:`AutomaticSize`,type:`Enum`,value:`None`},BackgroundColor3:{type:`Color3`,value:[.6392157077789307,.6352941393852234,.6470588445663452]},BackgroundTransparency:{type:`number`,value:0},BorderColor3:{type:`Color3`,value:[.10588235408067703,.16470588743686676,.2078431397676468]},BorderMode:{enumType:`BorderMode`,type:`Enum`,value:`Outline`},BorderSizePixel:{type:`number`,value:1},ClipsDescendants:{type:`bool`,value:!0},Draggable:{type:`bool`,value:!1},GroupColor3:{type:`Color3`,value:[1,1,1]},GroupTransparency:{type:`number`,value:0},InputSink:{enumType:`InputSink`,type:`Enum`,value:`None`},Interactable:{type:`bool`,value:!0},LayoutOrder:{type:`number`,value:0},Position:{type:`UDim2`,value:[0,0,0,0]},Rotation:{type:`number`,value:0},Selectable:{type:`bool`,value:!1},SelectionBehaviorDown:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorLeft:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorRight:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorUp:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionGroup:{type:`bool`,value:!1},SelectionOrder:{type:`number`,value:0},Size:{type:`UDim2`,value:[0,0,0,0]},SizeConstraint:{enumType:`SizeConstraint`,type:`Enum`,value:`RelativeXY`},Visible:{type:`bool`,value:!0},ZIndex:{type:`number`,value:1}},CFrameValue:{Archivable:{type:`bool`,value:!0},Value:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]}},CharacterMesh:{Archivable:{type:`bool`,value:!0},BodyPart:{enumType:`BodyPart`,type:`Enum`,value:`Head`},OverlayTextureId:{type:`number`,value:0}},ChorusSoundEffect:{Archivable:{type:`bool`,value:!0},Depth:{type:`number`,value:.15000000596046448},Enabled:{type:`bool`,value:!0},Mix:{type:`number`,value:.5},Priority:{type:`number`,value:0},Rate:{type:`number`,value:.5}},ClickDetector:{Archivable:{type:`bool`,value:!0},MaxActivationDistance:{type:`number`,value:32}},Color3Value:{Archivable:{type:`bool`,value:!0},Value:{type:`Color3`,value:[0,0,0]}},ColorCorrectionEffect:{Archivable:{type:`bool`,value:!0},Brightness:{type:`number`,value:0},Contrast:{type:`number`,value:0},Enabled:{type:`bool`,value:!0},Saturation:{type:`number`,value:0},TintColor:{type:`Color3`,value:[1,1,1]}},ColorGradingEffect:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},TonemapperPreset:{enumType:`TonemapperPreset`,type:`Enum`,value:`Default`}},CompositeValueCurve:{Archivable:{type:`bool`,value:!0},CurveType:{enumType:`CompositeValueCurveType`,type:`Enum`,value:`NumberRange`}},CompressorSoundEffect:{Archivable:{type:`bool`,value:!0},Attack:{type:`number`,value:.10000000149011612},Enabled:{type:`bool`,value:!0},GainMakeup:{type:`number`,value:0},Priority:{type:`number`,value:0},Ratio:{type:`number`,value:40},Release:{type:`number`,value:.10000000149011612},Threshold:{type:`number`,value:-40}},ConeHandleAdornment:{AdornCullingMode:{enumType:`AdornCullingMode`,type:`Enum`,value:`Automatic`},AlwaysOnTop:{type:`bool`,value:!1},Archivable:{type:`bool`,value:!0},CFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Color3:{type:`Color3`,value:[.05098039284348488,.4117647111415863,.6745098233222961]},Height:{type:`number`,value:2},Hollow:{type:`bool`,value:!1},Radius:{type:`number`,value:.5},Shading:{enumType:`AdornShading`,type:`Enum`,value:`Default`},SizeRelativeOffset:{type:`Vector3`,value:[0,0,0]},Transparency:{type:`number`,value:0},Visible:{type:`bool`,value:!0},ZIndex:{type:`number`,value:-1}},Configuration:{Archivable:{type:`bool`,value:!0}},CornerWedgePart:{Anchored:{type:`bool`,value:!1},Archivable:{type:`bool`,value:!0},AudioCanCollide:{type:`bool`,value:!0},BackParamA:{type:`number`,value:-.5},BackParamB:{type:`number`,value:.5},BackSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},BackSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},BottomParamA:{type:`number`,value:-.5},BottomParamB:{type:`number`,value:.5},BottomSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},BottomSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},CanCollide:{type:`bool`,value:!0},CanQuery:{type:`bool`,value:!0},CanTouch:{type:`bool`,value:!0},CastShadow:{type:`bool`,value:!0},CFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},CollisionGroup:{type:`string`,value:`Default`},CollisionGroupId:{type:`number`,value:0},Color:{type:`Color3`,value:[163,162,165]},EnableFluidForces:{type:`bool`,value:!0},FrontParamA:{type:`number`,value:-.5},FrontParamB:{type:`number`,value:.5},FrontSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},FrontSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},LeftParamA:{type:`number`,value:-.5},LeftParamB:{type:`number`,value:.5},LeftSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},LeftSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},Locked:{type:`bool`,value:!1},Massless:{type:`bool`,value:!1},Material:{enumType:`Material`,type:`Enum`,value:`Plastic`},MaterialVariant:{type:`string`,value:``},PivotOffset:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Reflectance:{type:`number`,value:0},RightParamA:{type:`number`,value:-.5},RightParamB:{type:`number`,value:.5},RightSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},RightSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},RootPriority:{type:`number`,value:0},RotVelocity:{type:`Vector3`,value:[0,0,0]},Size:{type:`Vector3`,value:[2,2,2]},TopParamA:{type:`number`,value:-.5},TopParamB:{type:`number`,value:.5},TopSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},TopSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},Transparency:{type:`number`,value:0},Velocity:{type:`Vector3`,value:[0,0,0]}},CurveAnimation:{Archivable:{type:`bool`,value:!0},Loop:{type:`bool`,value:!0},Priority:{enumType:`AnimationPriority`,type:`Enum`,value:`Action`}},CustomLog:{Archivable:{type:`bool`,value:!0}},CylinderHandleAdornment:{AdornCullingMode:{enumType:`AdornCullingMode`,type:`Enum`,value:`Automatic`},AlwaysOnTop:{type:`bool`,value:!1},Angle:{type:`number`,value:360},Archivable:{type:`bool`,value:!0},CFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Color3:{type:`Color3`,value:[.05098039284348488,.4117647111415863,.6745098233222961]},Height:{type:`number`,value:1},InnerRadius:{type:`number`,value:0},Radius:{type:`number`,value:1},Shading:{enumType:`AdornShading`,type:`Enum`,value:`Default`},SizeRelativeOffset:{type:`Vector3`,value:[0,0,0]},Transparency:{type:`number`,value:0},Visible:{type:`bool`,value:!0},ZIndex:{type:`number`,value:-1}},CylinderMesh:{Archivable:{type:`bool`,value:!0},Offset:{type:`Vector3`,value:[0,0,0]},Scale:{type:`Vector3`,value:[1,1,1]},VertexColor:{type:`Vector3`,value:[1,1,1]}},CylindricalConstraint:{ActuatorType:{enumType:`ActuatorType`,type:`Enum`,value:`None`},AngularActuatorType:{enumType:`ActuatorType`,type:`Enum`,value:`None`},AngularLimitsEnabled:{type:`bool`,value:!1},AngularResponsiveness:{type:`number`,value:45},AngularRestitution:{type:`number`,value:0},AngularSpeed:{type:`number`,value:0},AngularVelocity:{type:`number`,value:0},Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},InclinationAngle:{type:`number`,value:0},LimitsEnabled:{type:`bool`,value:!1},LinearResponsiveness:{type:`number`,value:45},LowerAngle:{type:`number`,value:-45},LowerLimit:{type:`number`,value:0},MotorMaxAcceleration:{type:`number`,value:`inf`},MotorMaxAngularAcceleration:{type:`number`,value:5e5},MotorMaxForce:{type:`number`,value:0},MotorMaxTorque:{type:`number`,value:0},Restitution:{type:`number`,value:0},RotationAxisVisible:{type:`bool`,value:!1},ServoMaxForce:{type:`number`,value:0},ServoMaxTorque:{type:`number`,value:0},Size:{type:`number`,value:.15000000596046448},SoftlockAngularServoUponReachingTarget:{type:`bool`,value:!1},SoftlockServoUponReachingTarget:{type:`bool`,value:!1},Speed:{type:`number`,value:0},TargetAngle:{type:`number`,value:0},TargetPosition:{type:`number`,value:0},UpperAngle:{type:`number`,value:45},UpperLimit:{type:`number`,value:5},Velocity:{type:`number`,value:0},Visible:{type:`bool`,value:!1}},Decal:{Archivable:{type:`bool`,value:!0},AutoLocalize:{type:`bool`,value:!0},Color3:{type:`Color3`,value:[1,1,1]},Face:{enumType:`NormalId`,type:`Enum`,value:`Front`},Rotation:{type:`number`,value:0},Transparency:{type:`number`,value:0},UVOffset:{type:`Vector2`,value:[0,0]},UVScale:{type:`Vector2`,value:[1,1]},ZIndex:{type:`number`,value:1}},DepthOfFieldEffect:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},FarIntensity:{type:`number`,value:.75},FocusDistance:{type:`number`,value:.05000000074505806},InFocusRadius:{type:`number`,value:10},NearIntensity:{type:`number`,value:.75}},DigitsRigDescription:{Archivable:{type:`bool`,value:!0},Index1TposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Index2TposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Index3TposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},IndexRange:{type:`Vector3`,value:[0,0,0]},IndexSize:{type:`number`,value:0},Middle1TposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Middle2TposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Middle3TposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},MiddleRange:{type:`Vector3`,value:[0,0,0]},MiddleSize:{type:`number`,value:0},Pinky1TposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Pinky2TposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Pinky3TposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},PinkyRange:{type:`Vector3`,value:[0,0,0]},PinkySize:{type:`number`,value:0},Ring1TposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Ring2TposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Ring3TposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},RingRange:{type:`Vector3`,value:[0,0,0]},RingSize:{type:`number`,value:0},Side:{enumType:`DigitsRigDescriptionSide`,type:`Enum`,value:`None`},Thumb1TposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Thumb2TposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Thumb3TposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},ThumbRange:{type:`Vector3`,value:[0,0,0]},ThumbSize:{type:`number`,value:0}},DistortionSoundEffect:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},Level:{type:`number`,value:.75},Priority:{type:`number`,value:0}},DoubleConstrainedValue:{Archivable:{type:`bool`,value:!0},MaxValue:{type:`number`,value:1},MinValue:{type:`number`,value:0}},DragDetector:{ApplyAtCenterOfMass:{type:`bool`,value:!1},Archivable:{type:`bool`,value:!0},DragFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},DragStyle:{enumType:`DragDetectorDragStyle`,type:`Enum`,value:`TranslatePlane`},Enabled:{type:`bool`,value:!0},GamepadModeSwitchKeyCode:{enumType:`KeyCode`,type:`Enum`,value:`ButtonR1`},KeyboardModeSwitchKeyCode:{enumType:`KeyCode`,type:`Enum`,value:`LeftControl`},MaxActivationDistance:{type:`number`,value:32},MaxDragAngle:{type:`number`,value:0},MaxDragTranslation:{type:`Vector3`,value:[0,0,0]},MaxForce:{type:`number`,value:1e7},MaxTorque:{type:`number`,value:1e4},MinDragAngle:{type:`number`,value:0},MinDragTranslation:{type:`Vector3`,value:[0,0,0]},Orientation:{type:`Vector3`,value:[0,180,90]},PermissionPolicy:{enumType:`DragDetectorPermissionPolicy`,type:`Enum`,value:`Everybody`},ResponseStyle:{enumType:`DragDetectorResponseStyle`,type:`Enum`,value:`Physical`},Responsiveness:{type:`number`,value:10},RunLocally:{type:`bool`,value:!1},TrackballRadialPullFactor:{type:`number`,value:1},TrackballRollFactor:{type:`number`,value:1},VRSwitchKeyCode:{enumType:`KeyCode`,type:`Enum`,value:`ButtonL2`}},Dragger:{Archivable:{type:`bool`,value:!0}},EchoSoundEffect:{Archivable:{type:`bool`,value:!0},Delay:{type:`number`,value:1},DryLevel:{type:`number`,value:0},Enabled:{type:`bool`,value:!0},Feedback:{type:`number`,value:.5},Priority:{type:`number`,value:0},WetLevel:{type:`number`,value:0}},EqualizerSoundEffect:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},HighGain:{type:`number`,value:0},LowGain:{type:`number`,value:-20},MidGain:{type:`number`,value:-10},Priority:{type:`number`,value:0}},EulerRotationCurve:{Archivable:{type:`bool`,value:!0},RotationOrder:{enumType:`RotationOrder`,type:`Enum`,value:`XYZ`}},ExplorerFilter:{Archivable:{type:`bool`,value:!0}},FaceControls:{Archivable:{type:`bool`,value:!0}},FileMesh:{Archivable:{type:`bool`,value:!0},Offset:{type:`Vector3`,value:[0,0,0]},Scale:{type:`Vector3`,value:[1,1,1]},VertexColor:{type:`Vector3`,value:[1,1,1]}},Fire:{Archivable:{type:`bool`,value:!0},Color:{type:`Color3`,value:[.9254902601242065,.545098066329956,.27450981736183167]},Enabled:{type:`bool`,value:!0},Heat:{type:`number`,value:9},SecondaryColor:{type:`Color3`,value:[.545098066329956,.3137255012989044,.21568629145622253]},Size:{type:`number`,value:5},TimeScale:{type:`number`,value:1}},FlangeSoundEffect:{Archivable:{type:`bool`,value:!0},Depth:{type:`number`,value:.44999998807907104},Enabled:{type:`bool`,value:!0},Mix:{type:`number`,value:.8500000238418579},Priority:{type:`number`,value:0},Rate:{type:`number`,value:5}},FloatCurve:{Archivable:{type:`bool`,value:!0}},FloorWire:{Archivable:{type:`bool`,value:!0},Color3:{type:`Color3`,value:[.05098039284348488,.4117647111415863,.6745098233222961]},CycleOffset:{type:`number`,value:0},StudsBetweenTextures:{type:`number`,value:4},TextureSize:{type:`Vector2`,value:[1,1]},Transparency:{type:`number`,value:0},Velocity:{type:`number`,value:2},Visible:{type:`bool`,value:!0},WireRadius:{type:`number`,value:.0625}},Folder:{Archivable:{type:`bool`,value:!0}},ForceField:{Archivable:{type:`bool`,value:!0},Visible:{type:`bool`,value:!0}},Frame:{Active:{type:`bool`,value:!1},AnchorPoint:{type:`Vector2`,value:[0,0]},Archivable:{type:`bool`,value:!0},AutoLocalize:{type:`bool`,value:!0},AutomaticSize:{enumType:`AutomaticSize`,type:`Enum`,value:`None`},BackgroundColor3:{type:`Color3`,value:[.6392157077789307,.6352941393852234,.6470588445663452]},BackgroundTransparency:{type:`number`,value:0},BorderColor3:{type:`Color3`,value:[.10588235408067703,.16470588743686676,.2078431397676468]},BorderMode:{enumType:`BorderMode`,type:`Enum`,value:`Outline`},BorderSizePixel:{type:`number`,value:1},ClipsDescendants:{type:`bool`,value:!1},Draggable:{type:`bool`,value:!1},InputSink:{enumType:`InputSink`,type:`Enum`,value:`None`},Interactable:{type:`bool`,value:!0},LayoutOrder:{type:`number`,value:0},Position:{type:`UDim2`,value:[0,0,0,0]},Rotation:{type:`number`,value:0},Selectable:{type:`bool`,value:!1},SelectionBehaviorDown:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorLeft:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorRight:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorUp:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionGroup:{type:`bool`,value:!1},SelectionOrder:{type:`number`,value:0},Size:{type:`UDim2`,value:[0,0,0,0]},SizeConstraint:{enumType:`SizeConstraint`,type:`Enum`,value:`RelativeXY`},Style:{enumType:`FrameStyle`,type:`Enum`,value:`Custom`},Visible:{type:`bool`,value:!0},ZIndex:{type:`number`,value:1}},GeneratedFolder:{Archivable:{type:`bool`,value:!0}},Handles:{Archivable:{type:`bool`,value:!0},Color3:{type:`Color3`,value:[.05098039284348488,.4117647111415863,.6745098233222961]},Style:{enumType:`HandlesStyle`,type:`Enum`,value:`Resize`},Transparency:{type:`number`,value:0},Visible:{type:`bool`,value:!0}},HapticEffect:{Archivable:{type:`bool`,value:!0},Looped:{type:`bool`,value:!1},Position:{type:`Vector3`,value:[0,0,0]},Radius:{type:`number`,value:3},Type:{enumType:`HapticEffectType`,type:`Enum`,value:`UIClick`}},Highlight:{Archivable:{type:`bool`,value:!0},DepthMode:{enumType:`HighlightDepthMode`,type:`Enum`,value:`AlwaysOnTop`},Enabled:{type:`bool`,value:!0},FillColor:{type:`Color3`,value:[1,0,0]},FillTransparency:{type:`number`,value:.5},OutlineColor:{type:`Color3`,value:[1,1,1]},OutlineTransparency:{type:`number`,value:0}},HingeConstraint:{ActuatorType:{enumType:`ActuatorType`,type:`Enum`,value:`None`},AngularResponsiveness:{type:`number`,value:45},AngularSpeed:{type:`number`,value:0},AngularVelocity:{type:`number`,value:0},Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},LimitsEnabled:{type:`bool`,value:!1},LowerAngle:{type:`number`,value:-45},MotorMaxAcceleration:{type:`number`,value:5e5},MotorMaxTorque:{type:`number`,value:0},Radius:{type:`number`,value:.15000000596046448},Restitution:{type:`number`,value:0},ServoMaxTorque:{type:`number`,value:0},SoftlockServoUponReachingTarget:{type:`bool`,value:!1},TargetAngle:{type:`number`,value:0},UpperAngle:{type:`number`,value:45},Visible:{type:`bool`,value:!1}},Humanoid:{Archivable:{type:`bool`,value:!0},AutoJumpEnabled:{type:`bool`,value:!0},AutomaticScalingEnabled:{type:`bool`,value:!0},AutoRotate:{type:`bool`,value:!0},BreakJointsOnDeath:{type:`bool`,value:!0},CollisionType:{enumType:`HumanoidCollisionType`,type:`Enum`,value:`OuterBox`},DisplayDistanceType:{enumType:`HumanoidDisplayDistanceType`,type:`Enum`,value:`Viewer`},DisplayName:{type:`string`,value:``},EvaluateStateMachine:{type:`bool`,value:!0},HealthDisplayDistance:{type:`number`,value:100},HealthDisplayType:{enumType:`HumanoidHealthDisplayType`,type:`Enum`,value:`DisplayWhenDamaged`},HipHeight:{type:`number`,value:0},JumpHeight:{type:`number`,value:7.199999809265137},JumpPower:{type:`number`,value:50},MaxHealth:{type:`number`,value:100},MaxSlopeAngle:{type:`number`,value:89},NameDisplayDistance:{type:`number`,value:100},NameOcclusion:{enumType:`NameOcclusion`,type:`Enum`,value:`OccludeAll`},RequiresNeck:{type:`bool`,value:!0},RigType:{enumType:`HumanoidRigType`,type:`Enum`,value:`R6`},UseJumpPower:{type:`bool`,value:!0},WalkSpeed:{type:`number`,value:16}},HumanoidController:{Archivable:{type:`bool`,value:!0}},HumanoidDescription:{Archivable:{type:`bool`,value:!0},BodyTypeScale:{type:`number`,value:.30000001192092896},ClimbAnimation:{type:`number`,value:0},DepthScale:{type:`number`,value:1},Face:{type:`number`,value:0},FallAnimation:{type:`number`,value:0},GraphicTShirt:{type:`number`,value:0},HeadScale:{type:`number`,value:1},HeightScale:{type:`number`,value:1},IdleAnimation:{type:`number`,value:0},JumpAnimation:{type:`number`,value:0},MoodAnimation:{type:`number`,value:0},Pants:{type:`number`,value:0},ProportionScale:{type:`number`,value:1},RunAnimation:{type:`number`,value:0},Shirt:{type:`number`,value:0},StaticFacialAnimation:{type:`bool`,value:!1},SwimAnimation:{type:`number`,value:0},UseAvatarSettings:{type:`bool`,value:!1},WalkAnimation:{type:`number`,value:0},WidthScale:{type:`number`,value:1}},HumanoidRigDescription:{Archivable:{type:`bool`,value:!0},ChestRangeMax:{type:`Vector3`,value:[0,0,0]},ChestRangeMin:{type:`Vector3`,value:[0,0,0]},ChestSize:{type:`number`,value:0},ChestTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},HeadBaseRangeMax:{type:`Vector3`,value:[0,0,0]},HeadBaseRangeMin:{type:`Vector3`,value:[0,0,0]},HeadBaseSize:{type:`number`,value:0},HeadBaseTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},LeftAnkleRangeMax:{type:`Vector3`,value:[0,0,0]},LeftAnkleRangeMin:{type:`Vector3`,value:[0,0,0]},LeftAnkleSize:{type:`number`,value:0},LeftAnkleTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},LeftClavicleRangeMax:{type:`Vector3`,value:[0,0,0]},LeftClavicleRangeMin:{type:`Vector3`,value:[0,0,0]},LeftClavicleSize:{type:`number`,value:0},LeftClavicleTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},LeftElbowRangeMax:{type:`Vector3`,value:[0,0,0]},LeftElbowRangeMin:{type:`Vector3`,value:[0,0,0]},LeftElbowSize:{type:`number`,value:0},LeftElbowTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},LeftHipRangeMax:{type:`Vector3`,value:[0,0,0]},LeftHipRangeMin:{type:`Vector3`,value:[0,0,0]},LeftHipSize:{type:`number`,value:0},LeftHipTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},LeftKneeRangeMax:{type:`Vector3`,value:[0,0,0]},LeftKneeRangeMin:{type:`Vector3`,value:[0,0,0]},LeftKneeSize:{type:`number`,value:0},LeftKneeTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},LeftShoulderRangeMax:{type:`Vector3`,value:[0,0,0]},LeftShoulderRangeMin:{type:`Vector3`,value:[0,0,0]},LeftShoulderSize:{type:`number`,value:0},LeftShoulderTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},LeftToeBaseRangeMax:{type:`Vector3`,value:[0,0,0]},LeftToeBaseRangeMin:{type:`Vector3`,value:[0,0,0]},LeftToeBaseSize:{type:`number`,value:0},LeftToeBaseTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},LeftWristRangeMax:{type:`Vector3`,value:[0,0,0]},LeftWristRangeMin:{type:`Vector3`,value:[0,0,0]},LeftWristSize:{type:`number`,value:0},LeftWristTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},NeckRangeMax:{type:`Vector3`,value:[0,0,0]},NeckRangeMin:{type:`Vector3`,value:[0,0,0]},NeckSize:{type:`number`,value:0},NeckTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},RightAnkleRangeMax:{type:`Vector3`,value:[0,0,0]},RightAnkleRangeMin:{type:`Vector3`,value:[0,0,0]},RightAnkleSize:{type:`number`,value:0},RightAnkleTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},RightClavicleRangeMax:{type:`Vector3`,value:[0,0,0]},RightClavicleRangeMin:{type:`Vector3`,value:[0,0,0]},RightClavicleSize:{type:`number`,value:0},RightClavicleTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},RightElbowRangeMax:{type:`Vector3`,value:[0,0,0]},RightElbowRangeMin:{type:`Vector3`,value:[0,0,0]},RightElbowSize:{type:`number`,value:0},RightElbowTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},RightHipRangeMax:{type:`Vector3`,value:[0,0,0]},RightHipRangeMin:{type:`Vector3`,value:[0,0,0]},RightHipSize:{type:`number`,value:0},RightHipTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},RightKneeRangeMax:{type:`Vector3`,value:[0,0,0]},RightKneeRangeMin:{type:`Vector3`,value:[0,0,0]},RightKneeSize:{type:`number`,value:0},RightKneeTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},RightShoulderRangeMax:{type:`Vector3`,value:[0,0,0]},RightShoulderRangeMin:{type:`Vector3`,value:[0,0,0]},RightShoulderSize:{type:`number`,value:0},RightShoulderTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},RightToeBaseRangeMax:{type:`Vector3`,value:[0,0,0]},RightToeBaseRangeMin:{type:`Vector3`,value:[0,0,0]},RightToeBaseSize:{type:`number`,value:0},RightToeBaseTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},RightWristRangeMax:{type:`Vector3`,value:[0,0,0]},RightWristRangeMin:{type:`Vector3`,value:[0,0,0]},RightWristSize:{type:`number`,value:0},RightWristTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},RootRangeMax:{type:`Vector3`,value:[0,0,0]},RootRangeMin:{type:`Vector3`,value:[0,0,0]},RootSize:{type:`number`,value:0},RootTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},SpineRangeMax:{type:`Vector3`,value:[0,0,0]},SpineRangeMin:{type:`Vector3`,value:[0,0,0]},SpineSize:{type:`number`,value:0},SpineTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},WaistRangeMax:{type:`Vector3`,value:[0,0,0]},WaistRangeMin:{type:`Vector3`,value:[0,0,0]},WaistSize:{type:`number`,value:0},WaistTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]}},IKControl:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},EndEffectorOffset:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Offset:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Priority:{type:`number`,value:0},SmoothTime:{type:`number`,value:.05000000074505806},Type:{enumType:`IKControlType`,type:`Enum`,value:`Transform`},Weight:{type:`number`,value:1}},ImageButton:{Active:{type:`bool`,value:!0},AnchorPoint:{type:`Vector2`,value:[0,0]},Archivable:{type:`bool`,value:!0},AutoButtonColor:{type:`bool`,value:!0},AutoLocalize:{type:`bool`,value:!0},AutomaticSize:{enumType:`AutomaticSize`,type:`Enum`,value:`None`},BackgroundColor3:{type:`Color3`,value:[.6392157077789307,.6352941393852234,.6470588445663452]},BackgroundTransparency:{type:`number`,value:0},BorderColor3:{type:`Color3`,value:[.10588235408067703,.16470588743686676,.2078431397676468]},BorderMode:{enumType:`BorderMode`,type:`Enum`,value:`Outline`},BorderSizePixel:{type:`number`,value:1},ClipsDescendants:{type:`bool`,value:!1},Draggable:{type:`bool`,value:!1},ImageColor3:{type:`Color3`,value:[1,1,1]},ImageRectOffset:{type:`Vector2`,value:[0,0]},ImageRectSize:{type:`Vector2`,value:[0,0]},ImageTransparency:{type:`number`,value:0},InputSink:{enumType:`InputSink`,type:`Enum`,value:`None`},Interactable:{type:`bool`,value:!0},LayoutOrder:{type:`number`,value:0},Modal:{type:`bool`,value:!1},Position:{type:`UDim2`,value:[0,0,0,0]},ResampleMode:{enumType:`ResamplerMode`,type:`Enum`,value:`Default`},Rotation:{type:`number`,value:0},ScaleType:{enumType:`ScaleType`,type:`Enum`,value:`Stretch`},Selectable:{type:`bool`,value:!0},Selected:{type:`bool`,value:!1},SelectionBehaviorDown:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorLeft:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorRight:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorUp:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionGroup:{type:`bool`,value:!1},SelectionOrder:{type:`number`,value:0},Size:{type:`UDim2`,value:[0,0,0,0]},SizeConstraint:{enumType:`SizeConstraint`,type:`Enum`,value:`RelativeXY`},SliceCenter:{type:`Rect`,value:[0,0,0,0]},SliceScale:{type:`number`,value:1},Style:{enumType:`ButtonStyle`,type:`Enum`,value:`Custom`},TileSize:{type:`UDim2`,value:[1,0,1,0]},Visible:{type:`bool`,value:!0},ZIndex:{type:`number`,value:1}},ImageHandleAdornment:{AdornCullingMode:{enumType:`AdornCullingMode`,type:`Enum`,value:`Automatic`},AlwaysOnTop:{type:`bool`,value:!1},Archivable:{type:`bool`,value:!0},CFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Color3:{type:`Color3`,value:[.9490196704864502,.9529412388801575,.9529412388801575]},Size:{type:`Vector2`,value:[1,1]},SizeRelativeOffset:{type:`Vector3`,value:[0,0,0]},Transparency:{type:`number`,value:0},Visible:{type:`bool`,value:!0},ZIndex:{type:`number`,value:-1}},ImageLabel:{Active:{type:`bool`,value:!1},AnchorPoint:{type:`Vector2`,value:[0,0]},Archivable:{type:`bool`,value:!0},AutoLocalize:{type:`bool`,value:!0},AutomaticSize:{enumType:`AutomaticSize`,type:`Enum`,value:`None`},BackgroundColor3:{type:`Color3`,value:[.6392157077789307,.6352941393852234,.6470588445663452]},BackgroundTransparency:{type:`number`,value:0},BorderColor3:{type:`Color3`,value:[.10588235408067703,.16470588743686676,.2078431397676468]},BorderMode:{enumType:`BorderMode`,type:`Enum`,value:`Outline`},BorderSizePixel:{type:`number`,value:1},ClipsDescendants:{type:`bool`,value:!1},Draggable:{type:`bool`,value:!1},ImageColor3:{type:`Color3`,value:[1,1,1]},ImageRectOffset:{type:`Vector2`,value:[0,0]},ImageRectSize:{type:`Vector2`,value:[0,0]},ImageTransparency:{type:`number`,value:0},InputSink:{enumType:`InputSink`,type:`Enum`,value:`None`},Interactable:{type:`bool`,value:!0},LayoutOrder:{type:`number`,value:0},Position:{type:`UDim2`,value:[0,0,0,0]},ResampleMode:{enumType:`ResamplerMode`,type:`Enum`,value:`Default`},Rotation:{type:`number`,value:0},ScaleType:{enumType:`ScaleType`,type:`Enum`,value:`Stretch`},Selectable:{type:`bool`,value:!1},SelectionBehaviorDown:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorLeft:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorRight:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorUp:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionGroup:{type:`bool`,value:!1},SelectionOrder:{type:`number`,value:0},Size:{type:`UDim2`,value:[0,0,0,0]},SizeConstraint:{enumType:`SizeConstraint`,type:`Enum`,value:`RelativeXY`},SliceCenter:{type:`Rect`,value:[0,0,0,0]},SliceScale:{type:`number`,value:1},TileSize:{type:`UDim2`,value:[1,0,1,0]},Visible:{type:`bool`,value:!0},ZIndex:{type:`number`,value:1}},InputAction:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},Type:{enumType:`InputActionType`,type:`Enum`,value:`Bool`}},InputBinding:{Archivable:{type:`bool`,value:!0},Backward:{enumType:`KeyCode`,type:`Enum`,value:`Unknown`},ClampMagnitudeToOne:{type:`bool`,value:!0},Down:{enumType:`KeyCode`,type:`Enum`,value:`Unknown`},Forward:{enumType:`KeyCode`,type:`Enum`,value:`Unknown`},KeyCode:{enumType:`KeyCode`,type:`Enum`,value:`Unknown`},Left:{enumType:`KeyCode`,type:`Enum`,value:`Unknown`},PointerIndex:{type:`number`,value:0},PressedThreshold:{type:`number`,value:.5},PrimaryModifier:{enumType:`KeyCode`,type:`Enum`,value:`Unknown`},ReleasedThreshold:{type:`number`,value:.20000000298023224},ResponseCurve:{type:`number`,value:1},Right:{enumType:`KeyCode`,type:`Enum`,value:`Unknown`},Scale:{type:`number`,value:1},SecondaryModifier:{enumType:`KeyCode`,type:`Enum`,value:`Unknown`},Type:{enumType:`InputBindingType`,type:`Enum`,value:`Automatic`},Up:{enumType:`KeyCode`,type:`Enum`,value:`Unknown`},Vector2Scale:{type:`Vector2`,value:[1,1]},Vector3Scale:{type:`Vector3`,value:[1,1,1]}},InputContext:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},Priority:{type:`number`,value:1e3},Sink:{type:`bool`,value:!1}},IntConstrainedValue:{Archivable:{type:`bool`,value:!0},MaxValue:{type:`number`,value:10},MinValue:{type:`number`,value:0}},IntValue:{Archivable:{type:`bool`,value:!0},Value:{type:`number`,value:0}},LinearVelocity:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},ForceLimitMode:{enumType:`ForceLimitMode`,type:`Enum`,value:`Magnitude`},ForceLimitsEnabled:{type:`bool`,value:!0},LineDirection:{type:`Vector3`,value:[1,0,0]},LineVelocity:{type:`number`,value:0},MaxAxesForce:{type:`Vector3`,value:[1e3,1e3,1e3]},MaxForce:{type:`number`,value:1e3},MaxPlanarAxesForce:{type:`Vector2`,value:[1e3,1e3]},PlaneVelocity:{type:`Vector2`,value:[0,0]},PrimaryTangentAxis:{type:`Vector3`,value:[1,0,0]},ReactionForceEnabled:{type:`bool`,value:!0},RelativeTo:{enumType:`ActuatorRelativeTo`,type:`Enum`,value:`World`},SecondaryTangentAxis:{type:`Vector3`,value:[0,1,0]},VectorVelocity:{type:`Vector3`,value:[0,0,0]},VelocityConstraintMode:{enumType:`VelocityConstraintMode`,type:`Enum`,value:`Vector`},Visible:{type:`bool`,value:!1}},LineForce:{ApplyAtCenterOfMass:{type:`bool`,value:!1},Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},InverseSquareLaw:{type:`bool`,value:!1},Magnitude:{type:`number`,value:1e3},MaxForce:{type:`number`,value:`inf`},ReactionForceEnabled:{type:`bool`,value:!1},Visible:{type:`bool`,value:!1}},LineHandleAdornment:{AdornCullingMode:{enumType:`AdornCullingMode`,type:`Enum`,value:`Automatic`},AlwaysOnTop:{type:`bool`,value:!1},Archivable:{type:`bool`,value:!0},CFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Color3:{type:`Color3`,value:[.05098039284348488,.4117647111415863,.6745098233222961]},Length:{type:`number`,value:5},SizeRelativeOffset:{type:`Vector3`,value:[0,0,0]},Thickness:{type:`number`,value:1},Transparency:{type:`number`,value:0},Visible:{type:`bool`,value:!0},ZIndex:{type:`number`,value:-1}},LocalizationTable:{Archivable:{type:`bool`,value:!0},SourceLocaleId:{type:`string`,value:`en-us`}},MakeupDescription:{Archivable:{type:`bool`,value:!0},AssetId:{type:`number`,value:0},MakeupType:{enumType:`MakeupType`,type:`Enum`,value:`Face`},Order:{type:`number`,value:0}},MaterialVariant:{AlphaMode:{enumType:`AlphaMode`,type:`Enum`,value:`Opaque`},Archivable:{type:`bool`,value:!0},BaseMaterial:{enumType:`Material`,type:`Enum`,value:`Plastic`},EmissiveStrength:{type:`number`,value:1},EmissiveTint:{type:`Color3`,value:[1,1,1]},MaterialPattern:{enumType:`MaterialPattern`,type:`Enum`,value:`Regular`},StudsPerTile:{type:`number`,value:10}},MeshPart:{Anchored:{type:`bool`,value:!1},Archivable:{type:`bool`,value:!0},AudioCanCollide:{type:`bool`,value:!0},BackParamA:{type:`number`,value:-.5},BackParamB:{type:`number`,value:.5},BackSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},BackSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},BottomParamA:{type:`number`,value:-.5},BottomParamB:{type:`number`,value:.5},BottomSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},BottomSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},CanCollide:{type:`bool`,value:!0},CanQuery:{type:`bool`,value:!0},CanTouch:{type:`bool`,value:!0},CastShadow:{type:`bool`,value:!0},CFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},CollisionGroup:{type:`string`,value:`Default`},CollisionGroupId:{type:`number`,value:0},Color:{type:`Color3`,value:[163,162,165]},DoubleSided:{type:`bool`,value:!1},EnableFluidForces:{type:`bool`,value:!0},FrontParamA:{type:`number`,value:-.5},FrontParamB:{type:`number`,value:.5},FrontSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},FrontSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},LeftParamA:{type:`number`,value:-.5},LeftParamB:{type:`number`,value:.5},LeftSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},LeftSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},Locked:{type:`bool`,value:!1},Massless:{type:`bool`,value:!1},Material:{enumType:`Material`,type:`Enum`,value:`Plastic`},MaterialVariant:{type:`string`,value:``},PivotOffset:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Reflectance:{type:`number`,value:0},RenderFidelity:{enumType:`RenderFidelity`,type:`Enum`,value:`Automatic`},RightParamA:{type:`number`,value:-.5},RightParamB:{type:`number`,value:.5},RightSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},RightSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},RootPriority:{type:`number`,value:0},RotVelocity:{type:`Vector3`,value:[0,0,0]},Size:{type:`Vector3`,value:[4,1.2000000476837158,2]},TopParamA:{type:`number`,value:-.5},TopParamB:{type:`number`,value:.5},TopSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},TopSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},Transparency:{type:`number`,value:0},Velocity:{type:`Vector3`,value:[0,0,0]}},Model:{Archivable:{type:`bool`,value:!0},LevelOfDetail:{enumType:`ModelLevelOfDetail`,type:`Enum`,value:`Automatic`},ModelStreamingMode:{enumType:`ModelStreamingMode`,type:`Enum`,value:`Default`}},Motor:{Archivable:{type:`bool`,value:!0},C0:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},C1:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},DesiredAngle:{type:`number`,value:0},Enabled:{type:`bool`,value:!0},MaxVelocity:{type:`number`,value:0}},Motor6D:{Archivable:{type:`bool`,value:!0},C0:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},C1:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},DesiredAngle:{type:`number`,value:0},Enabled:{type:`bool`,value:!0},MaxVelocity:{type:`number`,value:0}},MotorFeature:{Archivable:{type:`bool`,value:!0},FaceId:{enumType:`NormalId`,type:`Enum`,value:`Right`},InOut:{enumType:`InOut`,type:`Enum`,value:`Center`},LeftRight:{enumType:`LeftRight`,type:`Enum`,value:`Center`},TopBottom:{enumType:`TopBottom`,type:`Enum`,value:`Center`}},NoCollisionConstraint:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0}},Noise:{Archivable:{type:`bool`,value:!0}},NumberPose:{Archivable:{type:`bool`,value:!0},EasingDirection:{enumType:`PoseEasingDirection`,type:`Enum`,value:`In`},EasingStyle:{enumType:`PoseEasingStyle`,type:`Enum`,value:`Linear`},Value:{type:`number`,value:0},Weight:{type:`number`,value:1}},NumberValue:{Archivable:{type:`bool`,value:!0},Value:{type:`number`,value:0}},ObjectValue:{Archivable:{type:`bool`,value:!0}},Pants:{Archivable:{type:`bool`,value:!0},Color3:{type:`Color3`,value:[1,1,1]}},Part:{Anchored:{type:`bool`,value:!1},Archivable:{type:`bool`,value:!0},AudioCanCollide:{type:`bool`,value:!0},BackParamA:{type:`number`,value:-.5},BackParamB:{type:`number`,value:.5},BackSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},BackSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},BottomParamA:{type:`number`,value:-.5},BottomParamB:{type:`number`,value:.5},BottomSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Inlet`},BottomSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},CanCollide:{type:`bool`,value:!0},CanQuery:{type:`bool`,value:!0},CanTouch:{type:`bool`,value:!0},CastShadow:{type:`bool`,value:!0},CFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},CollisionGroup:{type:`string`,value:`Default`},CollisionGroupId:{type:`number`,value:0},Color:{type:`Color3`,value:[163,162,165]},EnableFluidForces:{type:`bool`,value:!0},FormFactor:{enumType:`FormFactor`,type:`Enum`,value:`Brick`},FrontParamA:{type:`number`,value:-.5},FrontParamB:{type:`number`,value:.5},FrontSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},FrontSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},LeftParamA:{type:`number`,value:-.5},LeftParamB:{type:`number`,value:.5},LeftSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},LeftSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},Locked:{type:`bool`,value:!1},Massless:{type:`bool`,value:!1},Material:{enumType:`Material`,type:`Enum`,value:`Plastic`},MaterialVariant:{type:`string`,value:``},PivotOffset:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Reflectance:{type:`number`,value:0},RightParamA:{type:`number`,value:-.5},RightParamB:{type:`number`,value:.5},RightSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},RightSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},RootPriority:{type:`number`,value:0},RotVelocity:{type:`Vector3`,value:[0,0,0]},Shape:{enumType:`PartType`,type:`Enum`,value:`Block`},Size:{type:`Vector3`,value:[4,1.2000000476837158,2]},TopParamA:{type:`number`,value:-.5},TopParamB:{type:`number`,value:.5},TopSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Studs`},TopSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},Transparency:{type:`number`,value:0},Velocity:{type:`Vector3`,value:[0,0,0]}},ParticleEmitter:{Acceleration:{type:`Vector3`,value:[0,0,0]},Archivable:{type:`bool`,value:!0},Brightness:{type:`number`,value:1},Drag:{type:`number`,value:0},EmissionDirection:{enumType:`NormalId`,type:`Enum`,value:`Top`},Enabled:{type:`bool`,value:!0},FlipbookBlendFrames:{type:`bool`,value:!0},FlipbookIncompatible:{type:`string`,value:`Particle texture must be 1024 by 1024 to use flipbooks.`},FlipbookLayout:{enumType:`ParticleFlipbookLayout`,type:`Enum`,value:`None`},FlipbookMode:{enumType:`ParticleFlipbookMode`,type:`Enum`,value:`Loop`},FlipbookSizeX:{type:`number`,value:1},FlipbookSizeY:{type:`number`,value:1},FlipbookStartRandom:{type:`bool`,value:!1},LightEmission:{type:`number`,value:0},LightInfluence:{type:`number`,value:0},LockedToPart:{type:`bool`,value:!1},Orientation:{enumType:`ParticleOrientation`,type:`Enum`,value:`FacingCamera`},Rate:{type:`number`,value:20},Shape:{enumType:`ParticleEmitterShape`,type:`Enum`,value:`Box`},ShapeInOut:{enumType:`ParticleEmitterShapeInOut`,type:`Enum`,value:`Outward`},ShapePartial:{type:`number`,value:1},ShapeStyle:{enumType:`ParticleEmitterShapeStyle`,type:`Enum`,value:`Volume`},SpreadAngle:{type:`Vector2`,value:[0,0]},TimeScale:{type:`number`,value:1},VelocityInheritance:{type:`number`,value:0},WindAffectsDrag:{type:`bool`,value:!1},ZOffset:{type:`number`,value:0}},Path2D:{Archivable:{type:`bool`,value:!0},Closed:{type:`bool`,value:!1},Color3:{type:`Color3`,value:[0,0,0]},Thickness:{type:`number`,value:1},Visible:{type:`bool`,value:!0},ZIndex:{type:`number`,value:1}},PitchShiftSoundEffect:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},Octave:{type:`number`,value:1.25},Priority:{type:`number`,value:0}},PlaneConstraint:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},Visible:{type:`bool`,value:!1}},PluginAction:{Archivable:{type:`bool`,value:!0}},PointLight:{Archivable:{type:`bool`,value:!0},Brightness:{type:`number`,value:1},Color:{type:`Color3`,value:[1,1,1]},Enabled:{type:`bool`,value:!0},Range:{type:`number`,value:8},Shadows:{type:`bool`,value:!1}},PrismaticConstraint:{ActuatorType:{enumType:`ActuatorType`,type:`Enum`,value:`None`},Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},LimitsEnabled:{type:`bool`,value:!1},LinearResponsiveness:{type:`number`,value:45},LowerLimit:{type:`number`,value:0},MotorMaxAcceleration:{type:`number`,value:`inf`},MotorMaxForce:{type:`number`,value:0},Restitution:{type:`number`,value:0},ServoMaxForce:{type:`number`,value:0},Size:{type:`number`,value:.15000000596046448},SoftlockServoUponReachingTarget:{type:`bool`,value:!1},Speed:{type:`number`,value:0},TargetPosition:{type:`number`,value:0},UpperLimit:{type:`number`,value:5},Velocity:{type:`number`,value:0},Visible:{type:`bool`,value:!1}},ProceduralModel:{Archivable:{type:`bool`,value:!0},LevelOfDetail:{enumType:`ModelLevelOfDetail`,type:`Enum`,value:`Automatic`},ModelStreamingMode:{enumType:`ModelStreamingMode`,type:`Enum`,value:`Default`},Size:{type:`Vector3`,value:[12,12,12]}},ProximityPrompt:{ActionText:{type:`string`,value:`Interact`},Archivable:{type:`bool`,value:!0},AutoLocalize:{type:`bool`,value:!0},ClickablePrompt:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},Exclusivity:{enumType:`ProximityPromptExclusivity`,type:`Enum`,value:`OnePerButton`},GamepadKeyCode:{enumType:`KeyCode`,type:`Enum`,value:`ButtonX`},HoldDuration:{type:`number`,value:0},KeyboardKeyCode:{enumType:`KeyCode`,type:`Enum`,value:`E`},MaxActivationDistance:{type:`number`,value:10},MaxIndicatorDistance:{type:`number`,value:0},ObjectText:{type:`string`,value:``},RequiresLineOfSight:{type:`bool`,value:!0},Style:{enumType:`ProximityPromptStyle`,type:`Enum`,value:`Default`},UIOffset:{type:`Vector2`,value:[0,0]}},PyramidHandleAdornment:{AdornCullingMode:{enumType:`AdornCullingMode`,type:`Enum`,value:`Automatic`},AlwaysOnTop:{type:`bool`,value:!1},Archivable:{type:`bool`,value:!0},CFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Color3:{type:`Color3`,value:[.05098039284348488,.4117647111415863,.6745098233222961]},Height:{type:`number`,value:2},Shading:{enumType:`AdornShading`,type:`Enum`,value:`Default`},Sides:{type:`number`,value:4},Size:{type:`number`,value:1},SizeRelativeOffset:{type:`Vector3`,value:[0,0,0]},Transparency:{type:`number`,value:0},Visible:{type:`bool`,value:!0},ZIndex:{type:`number`,value:-1}},RayValue:{Archivable:{type:`bool`,value:!0}},RealtimeMedia:{Archivable:{type:`bool`,value:!0}},RelativeGui:{Archivable:{type:`bool`,value:!0}},RenderingTest:{Archivable:{type:`bool`,value:!0},CFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},ComparisonDiffThreshold:{type:`number`,value:10},ComparisonMethod:{enumType:`RenderingTestComparisonMethod`,type:`Enum`,value:`psnr`},ComparisonPsnrThreshold:{type:`number`,value:50},Description:{type:`string`,value:``},FieldOfView:{type:`number`,value:70},PerfTest:{type:`bool`,value:!1},QualityAuto:{type:`bool`,value:!1},QualityLevel:{type:`number`,value:21},RenderingTestFrameCount:{type:`number`,value:20},ShouldSkip:{type:`bool`,value:!1},Ticket:{type:`string`,value:``},Timeout:{type:`number`,value:30}},ReverbSoundEffect:{Archivable:{type:`bool`,value:!0},DecayTime:{type:`number`,value:1.5},Density:{type:`number`,value:1},Diffusion:{type:`number`,value:1},DryLevel:{type:`number`,value:-6},Enabled:{type:`bool`,value:!0},Priority:{type:`number`,value:0},WetLevel:{type:`number`,value:0}},RigidConstraint:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},Visible:{type:`bool`,value:!1}},RocketPropulsion:{Archivable:{type:`bool`,value:!0},CartoonFactor:{type:`number`,value:.699999988079071},MaxSpeed:{type:`number`,value:30},MaxThrust:{type:`number`,value:4e3},MaxTorque:{type:`Vector3`,value:[4e5,4e5,0]},TargetOffset:{type:`Vector3`,value:[0,0,0]},TargetRadius:{type:`number`,value:4},ThrustD:{type:`number`,value:.0010000000474974513},ThrustP:{type:`number`,value:5},TurnD:{type:`number`,value:500},TurnP:{type:`number`,value:3e3}},RodConstraint:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},Length:{type:`number`,value:5},LimitAngle0:{type:`number`,value:90},LimitAngle1:{type:`number`,value:90},LimitsEnabled:{type:`bool`,value:!1},Thickness:{type:`number`,value:.10000000149011612},Visible:{type:`bool`,value:!1}},RopeConstraint:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},Length:{type:`number`,value:5},Restitution:{type:`number`,value:0},Thickness:{type:`number`,value:.10000000149011612},Visible:{type:`bool`,value:!1},WinchEnabled:{type:`bool`,value:!1},WinchForce:{type:`number`,value:1e4},WinchResponsiveness:{type:`number`,value:45},WinchSpeed:{type:`number`,value:2},WinchTarget:{type:`number`,value:5}},Rotate:{Archivable:{type:`bool`,value:!0},C0:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},C1:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Enabled:{type:`bool`,value:!0}},RotateP:{Archivable:{type:`bool`,value:!0},BaseAngle:{type:`number`,value:0},C0:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},C1:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Enabled:{type:`bool`,value:!0}},RotateV:{Archivable:{type:`bool`,value:!0},BaseAngle:{type:`number`,value:0},C0:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},C1:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Enabled:{type:`bool`,value:!0}},RotationCurve:{Archivable:{type:`bool`,value:!0}},ScreenGui:{Archivable:{type:`bool`,value:!0},AutoLocalize:{type:`bool`,value:!0},ClipToDeviceSafeArea:{type:`bool`,value:!0},DisplayOrder:{type:`number`,value:0},Enabled:{type:`bool`,value:!0},ResetOnSpawn:{type:`bool`,value:!0},SafeAreaCompatibility:{enumType:`SafeAreaCompatibility`,type:`Enum`,value:`FullscreenExtension`},ScreenInsets:{enumType:`ScreenInsets`,type:`Enum`,value:`CoreUISafeInsets`},SelectionBehaviorDown:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorLeft:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorRight:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorUp:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionGroup:{type:`bool`,value:!1},ZIndexBehavior:{enumType:`ZIndexBehavior`,type:`Enum`,value:`Global`}},ScrollingFrame:{Active:{type:`bool`,value:!1},AnchorPoint:{type:`Vector2`,value:[0,0]},Archivable:{type:`bool`,value:!0},AutoLocalize:{type:`bool`,value:!0},AutomaticCanvasSize:{enumType:`AutomaticSize`,type:`Enum`,value:`None`},AutomaticSize:{enumType:`AutomaticSize`,type:`Enum`,value:`None`},BackgroundColor3:{type:`Color3`,value:[.6392157077789307,.6352941393852234,.6470588445663452]},BackgroundTransparency:{type:`number`,value:0},BorderColor3:{type:`Color3`,value:[.10588235408067703,.16470588743686676,.2078431397676468]},BorderMode:{enumType:`BorderMode`,type:`Enum`,value:`Outline`},BorderSizePixel:{type:`number`,value:1},CanvasPosition:{type:`Vector2`,value:[0,0]},CanvasSize:{type:`UDim2`,value:[0,0,2,0]},ClipsDescendants:{type:`bool`,value:!0},Draggable:{type:`bool`,value:!1},ElasticBehavior:{enumType:`ElasticBehavior`,type:`Enum`,value:`WhenScrollable`},HorizontalScrollBarInset:{enumType:`ScrollBarInset`,type:`Enum`,value:`None`},InputSink:{enumType:`InputSink`,type:`Enum`,value:`None`},Interactable:{type:`bool`,value:!0},LayoutOrder:{type:`number`,value:0},Position:{type:`UDim2`,value:[0,0,0,0]},Rotation:{type:`number`,value:0},ScrollBarImageColor3:{type:`Color3`,value:[1,1,1]},ScrollBarImageTransparency:{type:`number`,value:0},ScrollBarThickness:{type:`number`,value:12},ScrollingDirection:{enumType:`ScrollingDirection`,type:`Enum`,value:`XY`},ScrollingEnabled:{type:`bool`,value:!0},Selectable:{type:`bool`,value:!0},SelectionBehaviorDown:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorLeft:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorRight:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorUp:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionGroup:{type:`bool`,value:!0},SelectionOrder:{type:`number`,value:0},Size:{type:`UDim2`,value:[0,0,0,0]},SizeConstraint:{enumType:`SizeConstraint`,type:`Enum`,value:`RelativeXY`},VerticalScrollBarInset:{enumType:`ScrollBarInset`,type:`Enum`,value:`None`},VerticalScrollBarPosition:{enumType:`VerticalScrollBarPosition`,type:`Enum`,value:`Right`},Visible:{type:`bool`,value:!0},ZIndex:{type:`number`,value:1}},Seat:{Anchored:{type:`bool`,value:!1},Archivable:{type:`bool`,value:!0},AudioCanCollide:{type:`bool`,value:!0},BackParamA:{type:`number`,value:-.5},BackParamB:{type:`number`,value:.5},BackSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},BackSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},BottomParamA:{type:`number`,value:-.5},BottomParamB:{type:`number`,value:.5},BottomSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Inlet`},BottomSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},CanCollide:{type:`bool`,value:!0},CanQuery:{type:`bool`,value:!0},CanTouch:{type:`bool`,value:!0},CastShadow:{type:`bool`,value:!0},CFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},CollisionGroup:{type:`string`,value:`Default`},CollisionGroupId:{type:`number`,value:0},Color:{type:`Color3`,value:[163,162,165]},Disabled:{type:`bool`,value:!1},EnableFluidForces:{type:`bool`,value:!0},FormFactor:{enumType:`FormFactor`,type:`Enum`,value:`Brick`},FrontParamA:{type:`number`,value:-.5},FrontParamB:{type:`number`,value:.5},FrontSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},FrontSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},LeftParamA:{type:`number`,value:-.5},LeftParamB:{type:`number`,value:.5},LeftSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},LeftSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},Locked:{type:`bool`,value:!1},Massless:{type:`bool`,value:!1},Material:{enumType:`Material`,type:`Enum`,value:`Plastic`},MaterialVariant:{type:`string`,value:``},PivotOffset:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Reflectance:{type:`number`,value:0},RightParamA:{type:`number`,value:-.5},RightParamB:{type:`number`,value:.5},RightSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},RightSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},RootPriority:{type:`number`,value:0},RotVelocity:{type:`Vector3`,value:[0,0,0]},Shape:{enumType:`PartType`,type:`Enum`,value:`Block`},Size:{type:`Vector3`,value:[4,1.2000000476837158,2]},TopParamA:{type:`number`,value:-.5},TopParamB:{type:`number`,value:.5},TopSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Studs`},TopSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},Transparency:{type:`number`,value:0},Velocity:{type:`Vector3`,value:[0,0,0]}},SelectionBox:{Archivable:{type:`bool`,value:!0},Color3:{type:`Color3`,value:[.05098039284348488,.4117647111415863,.6745098233222961]},LineThickness:{type:`number`,value:.15000000596046448},SurfaceColor3:{type:`Color3`,value:[.05098039656877518,.4117647409439087,.6745098233222961]},SurfaceTransparency:{type:`number`,value:1},Transparency:{type:`number`,value:0},Visible:{type:`bool`,value:!0}},SelectionPartLasso:{Archivable:{type:`bool`,value:!0},Color3:{type:`Color3`,value:[.05098039284348488,.4117647111415863,.6745098233222961]},Transparency:{type:`number`,value:0},Visible:{type:`bool`,value:!0}},SelectionPointLasso:{Archivable:{type:`bool`,value:!0},Color3:{type:`Color3`,value:[.05098039284348488,.4117647111415863,.6745098233222961]},Point:{type:`Vector3`,value:[0,0,0]},Transparency:{type:`number`,value:0},Visible:{type:`bool`,value:!0}},SelectionSphere:{Archivable:{type:`bool`,value:!0},Color3:{type:`Color3`,value:[.05098039284348488,.4117647111415863,.6745098233222961]},SurfaceColor3:{type:`Color3`,value:[.05098039656877518,.4117647409439087,.6745098233222961]},SurfaceTransparency:{type:`number`,value:1},Transparency:{type:`number`,value:0},Visible:{type:`bool`,value:!0}},Shirt:{Archivable:{type:`bool`,value:!0},Color3:{type:`Color3`,value:[1,1,1]}},ShirtGraphic:{Archivable:{type:`bool`,value:!0},Color3:{type:`Color3`,value:[1,1,1]}},Sky:{Archivable:{type:`bool`,value:!0},CelestialBodiesShown:{type:`bool`,value:!0},MoonAngularSize:{type:`number`,value:11},SkyboxOrientation:{type:`Vector3`,value:[0,0,0]},StarCount:{type:`number`,value:3e3},SunAngularSize:{type:`number`,value:21}},Smoke:{Archivable:{type:`bool`,value:!0},Color:{type:`Color3`,value:[1,1,1]},Enabled:{type:`bool`,value:!0},Opacity:{type:`number`,value:.5},RiseVelocity:{type:`number`,value:1},Size:{type:`number`,value:1},TimeScale:{type:`number`,value:1}},Sound:{AcousticSimulationEnabled:{type:`bool`,value:!0},Archivable:{type:`bool`,value:!0},Looped:{type:`bool`,value:!1},PlaybackRegionsEnabled:{type:`bool`,value:!1},PlaybackSpeed:{type:`number`,value:1},Playing:{type:`bool`,value:!1},PlayOnRemove:{type:`bool`,value:!1},RollOffMaxDistance:{type:`number`,value:1e4},RollOffMinDistance:{type:`number`,value:10},RollOffMode:{enumType:`RollOffMode`,type:`Enum`,value:`Inverse`},TimePosition:{type:`number`,value:0},Volume:{type:`number`,value:.5}},SoundGroup:{Archivable:{type:`bool`,value:!0},Volume:{type:`number`,value:.5}},Sparkles:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},SparkleColor:{type:`Color3`,value:[.5647059082984924,.09803922474384308,1]},TimeScale:{type:`number`,value:1}},SpecialMesh:{Archivable:{type:`bool`,value:!0},MeshType:{enumType:`MeshType`,type:`Enum`,value:`Head`},Offset:{type:`Vector3`,value:[0,0,0]},Scale:{type:`Vector3`,value:[1,1,1]},VertexColor:{type:`Vector3`,value:[1,1,1]}},SphereHandleAdornment:{AdornCullingMode:{enumType:`AdornCullingMode`,type:`Enum`,value:`Automatic`},AlwaysOnTop:{type:`bool`,value:!1},Archivable:{type:`bool`,value:!0},CFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Color3:{type:`Color3`,value:[.05098039284348488,.4117647111415863,.6745098233222961]},Radius:{type:`number`,value:1},Shading:{enumType:`AdornShading`,type:`Enum`,value:`Default`},SizeRelativeOffset:{type:`Vector3`,value:[0,0,0]},Transparency:{type:`number`,value:0},Visible:{type:`bool`,value:!0},ZIndex:{type:`number`,value:-1}},SpotLight:{Angle:{type:`number`,value:90},Archivable:{type:`bool`,value:!0},Brightness:{type:`number`,value:1},Color:{type:`Color3`,value:[1,1,1]},Enabled:{type:`bool`,value:!0},Face:{enumType:`NormalId`,type:`Enum`,value:`Front`},Range:{type:`number`,value:16},Shadows:{type:`bool`,value:!1}},SpringConstraint:{Archivable:{type:`bool`,value:!0},Coils:{type:`number`,value:3},Damping:{type:`number`,value:0},Enabled:{type:`bool`,value:!0},FreeLength:{type:`number`,value:1},LimitsEnabled:{type:`bool`,value:!1},MaxForce:{type:`number`,value:`inf`},MaxLength:{type:`number`,value:5},MinLength:{type:`number`,value:0},Radius:{type:`number`,value:.4000000059604645},Stiffness:{type:`number`,value:0},Thickness:{type:`number`,value:.10000000149011612},Visible:{type:`bool`,value:!1}},StringValue:{Archivable:{type:`bool`,value:!0},Value:{type:`string`,value:``}},StyleDerive:{Archivable:{type:`bool`,value:!0},Priority:{type:`number`,value:0}},StyleLink:{Archivable:{type:`bool`,value:!0}},StyleQuery:{Archivable:{type:`bool`,value:!0}},StyleRule:{Archivable:{type:`bool`,value:!0},Priority:{type:`number`,value:0},Selector:{type:`string`,value:``}},StyleSheet:{Archivable:{type:`bool`,value:!0}},SunRaysEffect:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},Intensity:{type:`number`,value:.25},Spread:{type:`number`,value:1}},SurfaceAppearance:{AlphaMode:{enumType:`AlphaMode`,type:`Enum`,value:`Overlay`},Archivable:{type:`bool`,value:!0},Color:{type:`Color3`,value:[1,1,1]},EmissiveStrength:{type:`number`,value:1},EmissiveTint:{type:`Color3`,value:[1,1,1]},ResampleMode:{enumType:`ResamplerMode`,type:`Enum`,value:`Default`}},SurfaceGui:{Active:{type:`bool`,value:!0},AlwaysOnTop:{type:`bool`,value:!1},Archivable:{type:`bool`,value:!0},AutoLocalize:{type:`bool`,value:!0},Brightness:{type:`number`,value:1},CanvasSize:{type:`Vector2`,value:[800,600]},ClipsDescendants:{type:`bool`,value:!1},Enabled:{type:`bool`,value:!0},Face:{enumType:`NormalId`,type:`Enum`,value:`Front`},LightInfluence:{type:`number`,value:0},MaxDistance:{type:`number`,value:0},PixelsPerStud:{type:`number`,value:50},ResetOnSpawn:{type:`bool`,value:!0},SelectionBehaviorDown:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorLeft:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorRight:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorUp:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionGroup:{type:`bool`,value:!1},SizingMode:{enumType:`SurfaceGuiSizingMode`,type:`Enum`,value:`FixedSize`},ToolPunchThroughDistance:{type:`number`,value:0},ZIndexBehavior:{enumType:`ZIndexBehavior`,type:`Enum`,value:`Global`},ZOffset:{type:`number`,value:0}},SurfaceLight:{Angle:{type:`number`,value:90},Archivable:{type:`bool`,value:!0},Brightness:{type:`number`,value:1},Color:{type:`Color3`,value:[1,1,1]},Enabled:{type:`bool`,value:!0},Face:{enumType:`NormalId`,type:`Enum`,value:`Front`},Range:{type:`number`,value:16},Shadows:{type:`bool`,value:!1}},TextBox:{Active:{type:`bool`,value:!0},AnchorPoint:{type:`Vector2`,value:[0,0]},Archivable:{type:`bool`,value:!0},AutoLocalize:{type:`bool`,value:!0},AutomaticSize:{enumType:`AutomaticSize`,type:`Enum`,value:`None`},BackgroundColor3:{type:`Color3`,value:[.6392157077789307,.6352941393852234,.6470588445663452]},BackgroundTransparency:{type:`number`,value:0},BorderColor3:{type:`Color3`,value:[.10588235408067703,.16470588743686676,.2078431397676468]},BorderMode:{enumType:`BorderMode`,type:`Enum`,value:`Outline`},BorderSizePixel:{type:`number`,value:1},ClearTextOnFocus:{type:`bool`,value:!0},ClipsDescendants:{type:`bool`,value:!1},Draggable:{type:`bool`,value:!1},InputSink:{enumType:`InputSink`,type:`Enum`,value:`None`},Interactable:{type:`bool`,value:!0},LayoutOrder:{type:`number`,value:0},LineHeight:{type:`number`,value:1},MaxVisibleGraphemes:{type:`number`,value:-1},MultiLine:{type:`bool`,value:!1},OpenTypeFeatures:{type:`string`,value:``},PlaceholderColor3:{type:`Color3`,value:[.5,.5,.5]},PlaceholderText:{type:`string`,value:``},Position:{type:`UDim2`,value:[0,0,0,0]},RichText:{type:`bool`,value:!1},Rotation:{type:`number`,value:0},Selectable:{type:`bool`,value:!0},SelectionBehaviorDown:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorLeft:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorRight:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorUp:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionGroup:{type:`bool`,value:!1},SelectionOrder:{type:`number`,value:0},ShowNativeInput:{type:`bool`,value:!0},Size:{type:`UDim2`,value:[0,0,0,0]},SizeConstraint:{enumType:`SizeConstraint`,type:`Enum`,value:`RelativeXY`},Text:{type:`string`,value:`TextBox`},TextColor3:{type:`Color3`,value:[.10588236153125763,.16470588743686676,.20784315466880798]},TextDirection:{enumType:`TextDirection`,type:`Enum`,value:`Auto`},TextEditable:{type:`bool`,value:!0},TextScaled:{type:`bool`,value:!1},TextSize:{type:`number`,value:8},TextStrokeColor3:{type:`Color3`,value:[0,0,0]},TextStrokeTransparency:{type:`number`,value:1},TextTransparency:{type:`number`,value:0},TextTruncate:{enumType:`TextTruncate`,type:`Enum`,value:`None`},TextWrapped:{type:`bool`,value:!1},TextXAlignment:{enumType:`TextXAlignment`,type:`Enum`,value:`Center`},TextYAlignment:{enumType:`TextYAlignment`,type:`Enum`,value:`Center`},Visible:{type:`bool`,value:!0},ZIndex:{type:`number`,value:1}},TextButton:{Active:{type:`bool`,value:!0},AnchorPoint:{type:`Vector2`,value:[0,0]},Archivable:{type:`bool`,value:!0},AutoButtonColor:{type:`bool`,value:!0},AutoLocalize:{type:`bool`,value:!0},AutomaticSize:{enumType:`AutomaticSize`,type:`Enum`,value:`None`},BackgroundColor3:{type:`Color3`,value:[.6392157077789307,.6352941393852234,.6470588445663452]},BackgroundTransparency:{type:`number`,value:0},BorderColor3:{type:`Color3`,value:[.10588235408067703,.16470588743686676,.2078431397676468]},BorderMode:{enumType:`BorderMode`,type:`Enum`,value:`Outline`},BorderSizePixel:{type:`number`,value:1},ClipsDescendants:{type:`bool`,value:!1},Draggable:{type:`bool`,value:!1},InputSink:{enumType:`InputSink`,type:`Enum`,value:`None`},Interactable:{type:`bool`,value:!0},LayoutOrder:{type:`number`,value:0},LineHeight:{type:`number`,value:1},MaxVisibleGraphemes:{type:`number`,value:-1},Modal:{type:`bool`,value:!1},OpenTypeFeatures:{type:`string`,value:``},Position:{type:`UDim2`,value:[0,0,0,0]},RichText:{type:`bool`,value:!1},Rotation:{type:`number`,value:0},Selectable:{type:`bool`,value:!0},Selected:{type:`bool`,value:!1},SelectionBehaviorDown:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorLeft:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorRight:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorUp:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionGroup:{type:`bool`,value:!1},SelectionOrder:{type:`number`,value:0},Size:{type:`UDim2`,value:[0,0,0,0]},SizeConstraint:{enumType:`SizeConstraint`,type:`Enum`,value:`RelativeXY`},Style:{enumType:`ButtonStyle`,type:`Enum`,value:`Custom`},Text:{type:`string`,value:`Button`},TextColor3:{type:`Color3`,value:[.10588236153125763,.16470588743686676,.20784315466880798]},TextDirection:{enumType:`TextDirection`,type:`Enum`,value:`Auto`},TextScaled:{type:`bool`,value:!1},TextSize:{type:`number`,value:8},TextStrokeColor3:{type:`Color3`,value:[0,0,0]},TextStrokeTransparency:{type:`number`,value:1},TextTransparency:{type:`number`,value:0},TextTruncate:{enumType:`TextTruncate`,type:`Enum`,value:`None`},TextWrapped:{type:`bool`,value:!1},TextXAlignment:{enumType:`TextXAlignment`,type:`Enum`,value:`Center`},TextYAlignment:{enumType:`TextYAlignment`,type:`Enum`,value:`Center`},Visible:{type:`bool`,value:!0},ZIndex:{type:`number`,value:1}},TextGenerator:{Archivable:{type:`bool`,value:!0},Seed:{type:`number`,value:0},SystemPrompt:{type:`string`,value:``},Temperature:{type:`number`,value:.699999988079071},TopP:{type:`number`,value:.8999999761581421}},TextLabel:{Active:{type:`bool`,value:!1},AnchorPoint:{type:`Vector2`,value:[0,0]},Archivable:{type:`bool`,value:!0},AutoLocalize:{type:`bool`,value:!0},AutomaticSize:{enumType:`AutomaticSize`,type:`Enum`,value:`None`},BackgroundColor3:{type:`Color3`,value:[.6392157077789307,.6352941393852234,.6470588445663452]},BackgroundTransparency:{type:`number`,value:0},BorderColor3:{type:`Color3`,value:[.10588235408067703,.16470588743686676,.2078431397676468]},BorderMode:{enumType:`BorderMode`,type:`Enum`,value:`Outline`},BorderSizePixel:{type:`number`,value:1},ClipsDescendants:{type:`bool`,value:!1},Draggable:{type:`bool`,value:!1},InputSink:{enumType:`InputSink`,type:`Enum`,value:`None`},Interactable:{type:`bool`,value:!0},LayoutOrder:{type:`number`,value:0},LineHeight:{type:`number`,value:1},MaxVisibleGraphemes:{type:`number`,value:-1},OpenTypeFeatures:{type:`string`,value:``},Position:{type:`UDim2`,value:[0,0,0,0]},RichText:{type:`bool`,value:!1},Rotation:{type:`number`,value:0},Selectable:{type:`bool`,value:!1},SelectionBehaviorDown:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorLeft:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorRight:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorUp:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionGroup:{type:`bool`,value:!1},SelectionOrder:{type:`number`,value:0},Size:{type:`UDim2`,value:[0,0,0,0]},SizeConstraint:{enumType:`SizeConstraint`,type:`Enum`,value:`RelativeXY`},Text:{type:`string`,value:`Label`},TextColor3:{type:`Color3`,value:[.10588236153125763,.16470588743686676,.20784315466880798]},TextDirection:{enumType:`TextDirection`,type:`Enum`,value:`Auto`},TextScaled:{type:`bool`,value:!1},TextSize:{type:`number`,value:8},TextStrokeColor3:{type:`Color3`,value:[0,0,0]},TextStrokeTransparency:{type:`number`,value:1},TextTransparency:{type:`number`,value:0},TextTruncate:{enumType:`TextTruncate`,type:`Enum`,value:`None`},TextWrapped:{type:`bool`,value:!1},TextXAlignment:{enumType:`TextXAlignment`,type:`Enum`,value:`Center`},TextYAlignment:{enumType:`TextYAlignment`,type:`Enum`,value:`Center`},Visible:{type:`bool`,value:!0},ZIndex:{type:`number`,value:1}},Texture:{Archivable:{type:`bool`,value:!0},AutoLocalize:{type:`bool`,value:!0},Color3:{type:`Color3`,value:[1,1,1]},Face:{enumType:`NormalId`,type:`Enum`,value:`Front`},OffsetStudsU:{type:`number`,value:0},OffsetStudsV:{type:`number`,value:0},Rotation:{type:`number`,value:0},StudsPerTileU:{type:`number`,value:2},StudsPerTileV:{type:`number`,value:2},Transparency:{type:`number`,value:0},UVOffset:{type:`Vector2`,value:[0,0]},UVScale:{type:`Vector2`,value:[1,1]},ZIndex:{type:`number`,value:1}},Tool:{Archivable:{type:`bool`,value:!0},CanBeDropped:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},Grip:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},LevelOfDetail:{enumType:`ModelLevelOfDetail`,type:`Enum`,value:`Automatic`},ManualActivationOnly:{type:`bool`,value:!1},ModelStreamingMode:{enumType:`ModelStreamingMode`,type:`Enum`,value:`Default`},RequiresHandle:{type:`bool`,value:!0},ToolTip:{type:`string`,value:``}},Torque:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},RelativeTo:{enumType:`ActuatorRelativeTo`,type:`Enum`,value:`Attachment0`},Torque:{type:`Vector3`,value:[0,0,0]},Visible:{type:`bool`,value:!1}},TorsionSpringConstraint:{Archivable:{type:`bool`,value:!0},Coils:{type:`number`,value:8},Damping:{type:`number`,value:.009999999776482582},Enabled:{type:`bool`,value:!0},LimitEnabled:{type:`bool`,value:!1},LimitsEnabled:{type:`bool`,value:!1},MaxAngle:{type:`number`,value:45},MaxTorque:{type:`number`,value:`inf`},Radius:{type:`number`,value:.4000000059604645},Restitution:{type:`number`,value:0},Stiffness:{type:`number`,value:100},Visible:{type:`bool`,value:!1}},Trail:{Archivable:{type:`bool`,value:!0},Brightness:{type:`number`,value:1},Enabled:{type:`bool`,value:!0},FaceCamera:{type:`bool`,value:!1},Lifetime:{type:`number`,value:2},LightEmission:{type:`number`,value:0},LightInfluence:{type:`number`,value:0},MaxLength:{type:`number`,value:0},MinLength:{type:`number`,value:.10000000149011612},TextureLength:{type:`number`,value:1},TextureMode:{enumType:`TextureMode`,type:`Enum`,value:`Stretch`}},TremoloSoundEffect:{Archivable:{type:`bool`,value:!0},Depth:{type:`number`,value:1},Duty:{type:`number`,value:.5},Enabled:{type:`bool`,value:!0},Frequency:{type:`number`,value:5},Priority:{type:`number`,value:0}},TrussPart:{Anchored:{type:`bool`,value:!1},Archivable:{type:`bool`,value:!0},AudioCanCollide:{type:`bool`,value:!0},BackParamA:{type:`number`,value:-.5},BackParamB:{type:`number`,value:.5},BackSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Universal`},BackSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},BottomParamA:{type:`number`,value:-.5},BottomParamB:{type:`number`,value:.5},BottomSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Universal`},BottomSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},CanCollide:{type:`bool`,value:!0},CanQuery:{type:`bool`,value:!0},CanTouch:{type:`bool`,value:!0},CastShadow:{type:`bool`,value:!0},CFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},CollisionGroup:{type:`string`,value:`Default`},CollisionGroupId:{type:`number`,value:0},Color:{type:`Color3`,value:[163,162,165]},EnableFluidForces:{type:`bool`,value:!0},FrontParamA:{type:`number`,value:-.5},FrontParamB:{type:`number`,value:.5},FrontSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Universal`},FrontSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},LeftParamA:{type:`number`,value:-.5},LeftParamB:{type:`number`,value:.5},LeftSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Universal`},LeftSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},Locked:{type:`bool`,value:!1},Massless:{type:`bool`,value:!1},Material:{enumType:`Material`,type:`Enum`,value:`Plastic`},MaterialVariant:{type:`string`,value:``},PivotOffset:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Reflectance:{type:`number`,value:0},RightParamA:{type:`number`,value:-.5},RightParamB:{type:`number`,value:.5},RightSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Universal`},RightSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},RootPriority:{type:`number`,value:0},RotVelocity:{type:`Vector3`,value:[0,0,0]},Size:{type:`Vector3`,value:[2,2,2]},TopParamA:{type:`number`,value:-.5},TopParamB:{type:`number`,value:.5},TopSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Universal`},TopSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},Transparency:{type:`number`,value:0},Velocity:{type:`Vector3`,value:[0,0,0]}},UIAspectRatioConstraint:{Archivable:{type:`bool`,value:!0},AspectRatio:{type:`number`,value:1},AspectType:{enumType:`AspectType`,type:`Enum`,value:`FitWithinMaxSize`},DominantAxis:{enumType:`DominantAxis`,type:`Enum`,value:`Width`}},UICorner:{Archivable:{type:`bool`,value:!0},BottomLeftRadius:{type:`UDim`,value:[0,8]},BottomRightRadius:{type:`UDim`,value:[0,8]},TopLeftRadius:{type:`UDim`,value:[0,8]},TopRightRadius:{type:`UDim`,value:[0,8]}},UIDragDetector:{Archivable:{type:`bool`,value:!0},BoundingBehavior:{enumType:`UIDragDetectorBoundingBehavior`,type:`Enum`,value:`Automatic`},DragAxis:{type:`Vector2`,value:[1,0]},DragRelativity:{enumType:`UIDragDetectorDragRelativity`,type:`Enum`,value:`Absolute`},DragRotation:{type:`number`,value:0},DragSpace:{enumType:`UIDragDetectorDragSpace`,type:`Enum`,value:`Parent`},DragStyle:{enumType:`UIDragDetectorDragStyle`,type:`Enum`,value:`TranslatePlane`},DragUDim2:{type:`UDim2`,value:[0,0,0,0]},Enabled:{type:`bool`,value:!0},MaxDragAngle:{type:`number`,value:0},MaxDragTranslation:{type:`UDim2`,value:[0,0,0,0]},MinDragAngle:{type:`number`,value:0},MinDragTranslation:{type:`UDim2`,value:[0,0,0,0]},ResponseStyle:{enumType:`UIDragDetectorResponseStyle`,type:`Enum`,value:`Offset`},SelectionModeDragSpeed:{type:`UDim2`,value:[0,300,0,300]},SelectionModeRotateSpeed:{type:`number`,value:90},UIDragSpeedAxisMapping:{enumType:`UIDragSpeedAxisMapping`,type:`Enum`,value:`XY`}},UIFlexItem:{Archivable:{type:`bool`,value:!0},FlexMode:{enumType:`UIFlexMode`,type:`Enum`,value:`None`},GrowRatio:{type:`number`,value:0},ItemLineAlignment:{enumType:`ItemLineAlignment`,type:`Enum`,value:`Automatic`},ShrinkRatio:{type:`number`,value:0}},UIGradient:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},Offset:{type:`Vector2`,value:[0,0]},Rotation:{type:`number`,value:0},Scale:{type:`number`,value:1},TileMode:{enumType:`GradientTileMode`,type:`Enum`,value:`Clamp`},Type:{enumType:`GradientType`,type:`Enum`,value:`Linear`}},UIGridLayout:{Archivable:{type:`bool`,value:!0},CellPadding:{type:`UDim2`,value:[0,5,0,5]},CellSize:{type:`UDim2`,value:[0,100,0,100]},FillDirection:{enumType:`FillDirection`,type:`Enum`,value:`Horizontal`},FillDirectionMaxCells:{type:`number`,value:0},HorizontalAlignment:{enumType:`HorizontalAlignment`,type:`Enum`,value:`Left`},SortOrder:{enumType:`SortOrder`,type:`Enum`,value:`Name`},StartCorner:{enumType:`StartCorner`,type:`Enum`,value:`TopLeft`},VerticalAlignment:{enumType:`VerticalAlignment`,type:`Enum`,value:`Top`}},UIListLayout:{Archivable:{type:`bool`,value:!0},FillDirection:{enumType:`FillDirection`,type:`Enum`,value:`Vertical`},HorizontalAlignment:{enumType:`HorizontalAlignment`,type:`Enum`,value:`Left`},HorizontalFlex:{enumType:`UIFlexAlignment`,type:`Enum`,value:`None`},ItemLineAlignment:{enumType:`ItemLineAlignment`,type:`Enum`,value:`Automatic`},Padding:{type:`UDim`,value:[0,0]},SortOrder:{enumType:`SortOrder`,type:`Enum`,value:`Name`},VerticalAlignment:{enumType:`VerticalAlignment`,type:`Enum`,value:`Top`},VerticalFlex:{enumType:`UIFlexAlignment`,type:`Enum`,value:`None`},Wraps:{type:`bool`,value:!1}},UIPadding:{Archivable:{type:`bool`,value:!0},PaddingBottom:{type:`UDim`,value:[0,0]},PaddingLeft:{type:`UDim`,value:[0,0]},PaddingRight:{type:`UDim`,value:[0,0]},PaddingTop:{type:`UDim`,value:[0,0]}},UIPageLayout:{Animated:{type:`bool`,value:!0},Archivable:{type:`bool`,value:!0},Circular:{type:`bool`,value:!1},EasingDirection:{enumType:`EasingDirection`,type:`Enum`,value:`Out`},EasingStyle:{enumType:`EasingStyle`,type:`Enum`,value:`Back`},FillDirection:{enumType:`FillDirection`,type:`Enum`,value:`Horizontal`},GamepadInputEnabled:{type:`bool`,value:!0},HorizontalAlignment:{enumType:`HorizontalAlignment`,type:`Enum`,value:`Left`},Padding:{type:`UDim`,value:[0,0]},ScrollWheelInputEnabled:{type:`bool`,value:!0},SortOrder:{enumType:`SortOrder`,type:`Enum`,value:`Name`},TouchInputEnabled:{type:`bool`,value:!0},TweenTime:{type:`number`,value:1},VerticalAlignment:{enumType:`VerticalAlignment`,type:`Enum`,value:`Top`}},UIScale:{Archivable:{type:`bool`,value:!0},Scale:{type:`number`,value:1}},UIShadow:{Archivable:{type:`bool`,value:!0},BlurRadius:{type:`UDim`,value:[0,0]},Color:{type:`Color3`,value:[0,0,0]},Enabled:{type:`bool`,value:!0},Offset:{type:`UDim2`,value:[0,0,0,0]},Spread:{type:`UDim2`,value:[0,0,0,0]},Transparency:{type:`number`,value:0},ZIndex:{type:`number`,value:-1}},UISizeConstraint:{Archivable:{type:`bool`,value:!0},MaxSize:{type:`Vector2`,value:[`inf`,`inf`]},MinSize:{type:`Vector2`,value:[0,0]}},UIStroke:{ApplyStrokeMode:{enumType:`ApplyStrokeMode`,type:`Enum`,value:`Contextual`},Archivable:{type:`bool`,value:!0},BorderOffset:{type:`UDim`,value:[0,0]},BorderStrokePosition:{enumType:`BorderStrokePosition`,type:`Enum`,value:`Outer`},Color:{type:`Color3`,value:[0,0,0]},Enabled:{type:`bool`,value:!0},LineJoinMode:{enumType:`LineJoinMode`,type:`Enum`,value:`Round`},StrokeSizingMode:{enumType:`StrokeSizingMode`,type:`Enum`,value:`FixedSize`},Thickness:{type:`number`,value:1},Transparency:{type:`number`,value:0},ZIndex:{type:`number`,value:1}},UITableLayout:{Archivable:{type:`bool`,value:!0},FillDirection:{enumType:`FillDirection`,type:`Enum`,value:`Vertical`},FillEmptySpaceColumns:{type:`bool`,value:!1},FillEmptySpaceRows:{type:`bool`,value:!1},HorizontalAlignment:{enumType:`HorizontalAlignment`,type:`Enum`,value:`Left`},MajorAxis:{enumType:`TableMajorAxis`,type:`Enum`,value:`RowMajor`},Padding:{type:`UDim2`,value:[0,0,0,0]},SortOrder:{enumType:`SortOrder`,type:`Enum`,value:`Name`},VerticalAlignment:{enumType:`VerticalAlignment`,type:`Enum`,value:`Top`}},UITextSizeConstraint:{Archivable:{type:`bool`,value:!0},MaxTextSize:{type:`number`,value:100},MinTextSize:{type:`number`,value:1}},UniversalConstraint:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},LimitsEnabled:{type:`bool`,value:!1},MaxAngle:{type:`number`,value:45},Radius:{type:`number`,value:.20000000298023224},Restitution:{type:`number`,value:0},Visible:{type:`bool`,value:!1}},ValueCurve:{Archivable:{type:`bool`,value:!0}},Vector3Curve:{Archivable:{type:`bool`,value:!0}},Vector3Value:{Archivable:{type:`bool`,value:!0},Value:{type:`Vector3`,value:[0,0,0]}},VectorForce:{ApplyAtCenterOfMass:{type:`bool`,value:!1},Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},Force:{type:`Vector3`,value:[1e3,0,0]},RelativeTo:{enumType:`ActuatorRelativeTo`,type:`Enum`,value:`Attachment0`},Visible:{type:`bool`,value:!1}},VehicleSeat:{Anchored:{type:`bool`,value:!1},Archivable:{type:`bool`,value:!0},AudioCanCollide:{type:`bool`,value:!0},BackParamA:{type:`number`,value:-.5},BackParamB:{type:`number`,value:.5},BackSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},BackSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},BottomParamA:{type:`number`,value:-.5},BottomParamB:{type:`number`,value:.5},BottomSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Inlet`},BottomSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},CanCollide:{type:`bool`,value:!0},CanQuery:{type:`bool`,value:!0},CanTouch:{type:`bool`,value:!0},CastShadow:{type:`bool`,value:!0},CFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},CollisionGroup:{type:`string`,value:`Default`},CollisionGroupId:{type:`number`,value:0},Color:{type:`Color3`,value:[163,162,165]},Disabled:{type:`bool`,value:!1},EnableFluidForces:{type:`bool`,value:!0},FrontParamA:{type:`number`,value:-.5},FrontParamB:{type:`number`,value:.5},FrontSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},FrontSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},HeadsUpDisplay:{type:`bool`,value:!0},LeftParamA:{type:`number`,value:-.5},LeftParamB:{type:`number`,value:.5},LeftSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},LeftSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},Locked:{type:`bool`,value:!1},Massless:{type:`bool`,value:!1},Material:{enumType:`Material`,type:`Enum`,value:`Plastic`},MaterialVariant:{type:`string`,value:``},MaxSpeed:{type:`number`,value:25},PivotOffset:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Reflectance:{type:`number`,value:0},RightParamA:{type:`number`,value:-.5},RightParamB:{type:`number`,value:.5},RightSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},RightSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},RootPriority:{type:`number`,value:0},RotVelocity:{type:`Vector3`,value:[0,0,0]},Size:{type:`Vector3`,value:[4,1.2000000476837158,2]},Steer:{type:`number`,value:0},SteerFloat:{type:`number`,value:0},Throttle:{type:`number`,value:0},ThrottleFloat:{type:`number`,value:0},TopParamA:{type:`number`,value:-.5},TopParamB:{type:`number`,value:.5},TopSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Studs`},TopSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},Torque:{type:`number`,value:10},Transparency:{type:`number`,value:0},TurnSpeed:{type:`number`,value:1},Velocity:{type:`Vector3`,value:[0,0,0]}},VelocityMotor:{Archivable:{type:`bool`,value:!0},C0:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},C1:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},CurrentAngle:{type:`number`,value:0},DesiredAngle:{type:`number`,value:0},Enabled:{type:`bool`,value:!0},MaxVelocity:{type:`number`,value:0}},VideoDisplay:{Active:{type:`bool`,value:!1},AnchorPoint:{type:`Vector2`,value:[0,0]},Archivable:{type:`bool`,value:!0},AutoLocalize:{type:`bool`,value:!0},AutomaticSize:{enumType:`AutomaticSize`,type:`Enum`,value:`None`},BackgroundColor3:{type:`Color3`,value:[.6392157077789307,.6352941393852234,.6470588445663452]},BackgroundTransparency:{type:`number`,value:0},BorderColor3:{type:`Color3`,value:[.10588235408067703,.16470588743686676,.2078431397676468]},BorderMode:{enumType:`BorderMode`,type:`Enum`,value:`Outline`},BorderSizePixel:{type:`number`,value:1},ClipsDescendants:{type:`bool`,value:!1},Draggable:{type:`bool`,value:!1},InputSink:{enumType:`InputSink`,type:`Enum`,value:`None`},Interactable:{type:`bool`,value:!0},LayoutOrder:{type:`number`,value:0},Position:{type:`UDim2`,value:[0,0,0,0]},ResampleMode:{enumType:`ResamplerMode`,type:`Enum`,value:`Default`},Rotation:{type:`number`,value:0},ScaleType:{enumType:`ScaleType`,type:`Enum`,value:`Stretch`},Selectable:{type:`bool`,value:!1},SelectionBehaviorDown:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorLeft:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorRight:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorUp:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionGroup:{type:`bool`,value:!1},SelectionOrder:{type:`number`,value:0},Size:{type:`UDim2`,value:[0,0,0,0]},SizeConstraint:{enumType:`SizeConstraint`,type:`Enum`,value:`RelativeXY`},TileSize:{type:`UDim2`,value:[1,0,1,0]},VideoColor3:{type:`Color3`,value:[1,1,1]},VideoRectOffset:{type:`Vector2`,value:[0,0]},VideoRectSize:{type:`Vector2`,value:[0,0]},VideoTransparency:{type:`number`,value:0},Visible:{type:`bool`,value:!0},ZIndex:{type:`number`,value:1}},VideoFrame:{Active:{type:`bool`,value:!1},AnchorPoint:{type:`Vector2`,value:[0,0]},Archivable:{type:`bool`,value:!0},AutoLocalize:{type:`bool`,value:!0},AutomaticSize:{enumType:`AutomaticSize`,type:`Enum`,value:`None`},BackgroundColor3:{type:`Color3`,value:[.6392157077789307,.6352941393852234,.6470588445663452]},BackgroundTransparency:{type:`number`,value:0},BorderColor3:{type:`Color3`,value:[.10588235408067703,.16470588743686676,.2078431397676468]},BorderMode:{enumType:`BorderMode`,type:`Enum`,value:`Outline`},BorderSizePixel:{type:`number`,value:1},ClipsDescendants:{type:`bool`,value:!1},Draggable:{type:`bool`,value:!1},InputSink:{enumType:`InputSink`,type:`Enum`,value:`None`},Interactable:{type:`bool`,value:!0},InternalVideoUsage:{enumType:`InternalVideoUsage`,type:`Enum`,value:`Default`},LayoutOrder:{type:`number`,value:0},Looped:{type:`bool`,value:!1},MaximumResolution:{enumType:`VideoSampleSize`,type:`Enum`,value:`Full`},Playing:{type:`bool`,value:!1},Position:{type:`UDim2`,value:[0,0,0,0]},RollOffMaxDistance:{type:`number`,value:1e4},RollOffMinDistance:{type:`number`,value:1},RollOffMode:{enumType:`RollOffMode`,type:`Enum`,value:`Inverse`},Rotation:{type:`number`,value:0},Selectable:{type:`bool`,value:!1},SelectionBehaviorDown:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorLeft:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorRight:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorUp:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionGroup:{type:`bool`,value:!1},SelectionOrder:{type:`number`,value:0},Size:{type:`UDim2`,value:[0,0,0,0]},SizeConstraint:{enumType:`SizeConstraint`,type:`Enum`,value:`RelativeXY`},TimePosition:{type:`number`,value:0},Visible:{type:`bool`,value:!0},Volume:{type:`number`,value:1},ZIndex:{type:`number`,value:1}},VideoPlayer:{Archivable:{type:`bool`,value:!0},InternalVideoUsage:{enumType:`InternalVideoUsage`,type:`Enum`,value:`Default`},Looping:{type:`bool`,value:!1},MaximumResolution:{enumType:`VideoSampleSize`,type:`Enum`,value:`Full`},PlaybackSpeed:{type:`number`,value:1},TimePosition:{type:`number`,value:0},Volume:{type:`number`,value:1}},ViewportFrame:{Active:{type:`bool`,value:!1},Ambient:{type:`Color3`,value:[.7843137383460999,.7843137383460999,.7843137383460999]},AnchorPoint:{type:`Vector2`,value:[0,0]},Archivable:{type:`bool`,value:!0},AutoLocalize:{type:`bool`,value:!0},AutomaticSize:{enumType:`AutomaticSize`,type:`Enum`,value:`None`},BackgroundColor3:{type:`Color3`,value:[.6392157077789307,.6352941393852234,.6470588445663452]},BackgroundTransparency:{type:`number`,value:0},BorderColor3:{type:`Color3`,value:[.10588235408067703,.16470588743686676,.2078431397676468]},BorderMode:{enumType:`BorderMode`,type:`Enum`,value:`Outline`},BorderSizePixel:{type:`number`,value:1},ClipsDescendants:{type:`bool`,value:!1},Draggable:{type:`bool`,value:!1},ImageColor3:{type:`Color3`,value:[1,1,1]},ImageTransparency:{type:`number`,value:0},InputSink:{enumType:`InputSink`,type:`Enum`,value:`None`},Interactable:{type:`bool`,value:!0},LayoutOrder:{type:`number`,value:0},LightColor:{type:`Color3`,value:[.5490196347236633,.5490196347236633,.5490196347236633]},LightDirection:{type:`Vector3`,value:[-1,-1,-1]},Position:{type:`UDim2`,value:[0,0,0,0]},Rotation:{type:`number`,value:0},Selectable:{type:`bool`,value:!1},SelectionBehaviorDown:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorLeft:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorRight:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorUp:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionGroup:{type:`bool`,value:!1},SelectionOrder:{type:`number`,value:0},Size:{type:`UDim2`,value:[0,0,0,0]},SizeConstraint:{enumType:`SizeConstraint`,type:`Enum`,value:`RelativeXY`},Visible:{type:`bool`,value:!0},ZIndex:{type:`number`,value:1}},WedgePart:{Anchored:{type:`bool`,value:!1},Archivable:{type:`bool`,value:!0},AudioCanCollide:{type:`bool`,value:!0},BackParamA:{type:`number`,value:-.5},BackParamB:{type:`number`,value:.5},BackSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},BackSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},BottomParamA:{type:`number`,value:-.5},BottomParamB:{type:`number`,value:.5},BottomSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Inlet`},BottomSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},CanCollide:{type:`bool`,value:!0},CanQuery:{type:`bool`,value:!0},CanTouch:{type:`bool`,value:!0},CastShadow:{type:`bool`,value:!0},CFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},CollisionGroup:{type:`string`,value:`Default`},CollisionGroupId:{type:`number`,value:0},Color:{type:`Color3`,value:[163,162,165]},EnableFluidForces:{type:`bool`,value:!0},FormFactor:{enumType:`FormFactor`,type:`Enum`,value:`Brick`},FrontParamA:{type:`number`,value:-.5},FrontParamB:{type:`number`,value:.5},FrontSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},FrontSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},LeftParamA:{type:`number`,value:-.5},LeftParamB:{type:`number`,value:.5},LeftSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},LeftSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},Locked:{type:`bool`,value:!1},Massless:{type:`bool`,value:!1},Material:{enumType:`Material`,type:`Enum`,value:`Plastic`},MaterialVariant:{type:`string`,value:``},PivotOffset:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Reflectance:{type:`number`,value:0},RightParamA:{type:`number`,value:-.5},RightParamB:{type:`number`,value:.5},RightSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},RightSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},RootPriority:{type:`number`,value:0},RotVelocity:{type:`Vector3`,value:[0,0,0]},Size:{type:`Vector3`,value:[4,1.2000000476837158,2]},TopParamA:{type:`number`,value:-.5},TopParamB:{type:`number`,value:.5},TopSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},TopSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},Transparency:{type:`number`,value:0},Velocity:{type:`Vector3`,value:[0,0,0]}},Weld:{Archivable:{type:`bool`,value:!0},C0:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},C1:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Enabled:{type:`bool`,value:!0}},WeldConstraint:{Archivable:{type:`bool`,value:!0}},Wire:{Archivable:{type:`bool`,value:!0},SourceName:{type:`string`,value:`Output`},TargetName:{type:`string`,value:`Input`}},WireframeHandleAdornment:{AdornCullingMode:{enumType:`AdornCullingMode`,type:`Enum`,value:`Automatic`},AlwaysOnTop:{type:`bool`,value:!1},Archivable:{type:`bool`,value:!0},CFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Color3:{type:`Color3`,value:[.05098039284348488,.4117647111415863,.6745098233222961]},Scale:{type:`Vector3`,value:[1,1,1]},SizeRelativeOffset:{type:`Vector3`,value:[0,0,0]},Thickness:{type:`number`,value:1},Transparency:{type:`number`,value:0},Visible:{type:`bool`,value:!0},ZIndex:{type:`number`,value:-1}},WorldModel:{Archivable:{type:`bool`,value:!0},LevelOfDetail:{enumType:`ModelLevelOfDetail`,type:`Enum`,value:`Automatic`},ModelStreamingMode:{enumType:`ModelStreamingMode`,type:`Enum`,value:`Default`}},WrapDeformer:{Archivable:{type:`bool`,value:!0},CageOrigin:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},ImportOrigin:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]}},WrapLayer:{Archivable:{type:`bool`,value:!0},AutoSkin:{enumType:`WrapLayerAutoSkin`,type:`Enum`,value:`Disabled`},BindOffset:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},CageOrigin:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Enabled:{type:`bool`,value:!0},ImportOrigin:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Order:{type:`number`,value:1},Puffiness:{type:`number`,value:1},ReferenceOrigin:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},ShrinkFactor:{type:`number`,value:0}},WrapTarget:{Archivable:{type:`bool`,value:!0},CageOrigin:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},ImportOrigin:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Stiffness:{type:`number`,value:0}},WrapTextureTransfer:{Archivable:{type:`bool`,value:!0},UVMaxBound:{type:`Vector2`,value:[`-inf`,`-inf`]},UVMinBound:{type:`Vector2`,value:[`inf`,`inf`]}}};const Wl=Object.keys(Ul).length,Gl=new Set([`Name`,`Parent`]),Kl=new Set(Array.from(Gl,e=>e.toLowerCase())),ql=new Map(Object.entries(Ul).map(([e])=>[e.toLowerCase(),e]));function Jl(e){let t=new Map;for(let[n,r]of Object.entries(e)){if(!au(r))continue;let e=n.toLowerCase();t.has(e)||t.set(e,{propertyName:n,value:r})}return t}const Yl=new Map([[`TextLabel`,new Map([[`text`,{propertyName:`Text`,value:{type:`string`,value:``}}]])],[`UICorner`,new Map([[`cornerradius`,{propertyName:`CornerRadius`,value:{type:`UDim`,value:[0,0]}}]])]]),Xl=new Map(Object.entries(Ul).map(([e,t])=>[e,Jl(t)]));function Zl(e,t){return e.type===`Identifier`&&e.name===t}function Ql(e){return e.type===`Literal`&&typeof e.value==`boolean`}function $l(e){if(e.type!==`JSXIdentifier`)return;let t=ql.get(e.name.toLowerCase());if(!(t===void 0||e.name===t))return t}function eu(e){if(e.type===`JSXIdentifier`)return e.name}function tu(e){let{value:t}=e;if(t!==null){if(t.type===`Literal`)return t;if(!(t.type!==`JSXExpressionContainer`||t.expression.type===`JSXEmptyExpression`))return t.expression}}function nu(e,t){let n=t.toLowerCase(),r=Yl.get(e)?.get(n);if(r!==void 0)return r;let i=Xl.get(e);if(i!==void 0)return i.get(n)}function ru(e){return Kl.has(e.toLowerCase())}function iu(e){return b(e)||e===`inf`||e===`-inf`}function au(e){if(!(x(e)&&y(e.type)&&`value`in e))return!1;switch(e.type){case`bool`:return typeof e.value==`boolean`;case`CFrame`:return Array.isArray(e.value)&&e.value.length===12&&e.value.every(iu);case`Color3`:return Array.isArray(e.value)&&e.value.length===3&&e.value.every(b);case`Enum`:return y(e.enumType)&&y(e.value);case`number`:return iu(e.value);case`Rect`:case`UDim2`:return Array.isArray(e.value)&&e.value.length===4&&e.value.every(iu);case`string`:return y(e.value);case`UDim`:case`Vector2`:return Array.isArray(e.value)&&e.value.length===2&&e.value.every(iu);case`Vector3`:return Array.isArray(e.value)&&e.value.length===3&&e.value.every(iu)}return!1}function ou(e){let t=w(e);if(t.type!==`NewExpression`||!Zl(t.callee,`Instance`))return;let[n]=t.arguments;if(!(n===void 0||n.type===`SpreadElement`||!_e(n)))return n.value}function su(e,t,n=new WeakSet){if(Array.isArray(e)){for(let r of e)if(su(r,t,n))return!0;return!1}if(!x(e)||n.has(e))return!1;if(n.add(e),e.type===`Identifier`&&e.name===t)return!0;for(let r of Object.values(e))if(su(r,t,n))return!0;return!1}function cu(e){let t=[],n=e;for(;n.type===`MemberExpression`;){if(n.computed||n.property.type!==`Identifier`)return;t.unshift(n.property.name);let{object:e}=n;if(e.type===`Identifier`)return t.unshift(e.name),t;if(e.type!==`MemberExpression`)return;n=e}if(n.type===`Identifier`)return t.unshift(n.name),t}function lu(e){let t=cu(e);return t?.length===2&&t[0]===`math`&&t[1]===`huge`}function uu(e){return e===`inf`?1/0:e===`-inf`?-1/0:e}function du(e,t){return uu(e)===t}function fu(e,t){if(e.length!==t.length)return!1;for(let[n,r]of e.entries()){let e=t[n];if(r===void 0||e===void 0||!du(r,e))return!1}return!0}function J(e){if(We(e))return e.value;if(lu(e))return 1/0;if(e.type!==`UnaryExpression`||e.operator!==`+`&&e.operator!==`-`)return;let t=J(e.argument);if(t!==void 0)return e.operator===`+`?t:-t}function pu(e){if(e.length!==2)return;let[t,n]=e;if(!(t===void 0||n===void 0||t.type===`SpreadElement`||n.type===`SpreadElement`))return[t,n]}function mu(e){if(e.length!==3)return;let[t,n,r]=e;if(!(t===void 0||n===void 0||r===void 0||t.type===`SpreadElement`||n.type===`SpreadElement`||r.type===`SpreadElement`))return[t,n,r]}function hu(e){if(e.length!==4)return;let[t,n,r,i]=e;if(!(t===void 0||n===void 0||r===void 0||i===void 0||t.type===`SpreadElement`||n.type===`SpreadElement`||r.type===`SpreadElement`||i.type===`SpreadElement`))return[t,n,r,i]}function gu(e){if(e.type===`MemberExpression`){let t=cu(e);return t?.length===2&&t[0]===`Vector2`&&t[1]===`zero`?[0,0]:void 0}if(!(e.type!==`NewExpression`||!Zl(e.callee,`Vector2`)))return e.arguments.length===0?[0,0]:_u(e.arguments)}function _u(e){let t=pu(e);if(t===void 0)return;let[n,r]=t,i=J(n),a=J(r);if(!(i===void 0||a===void 0))return[i,a]}function vu(e){let t=mu(e);if(t===void 0)return;let[n,r,i]=t,a=J(n),o=J(r),s=J(i);if(!(a===void 0||o===void 0||s===void 0))return[a,o,s]}function yu(e){if(e.type===`MemberExpression`){let t=cu(e);return t?.length===2&&t[0]===`Vector3`&&t[1]===`zero`?[0,0,0]:void 0}if(!(e.type!==`NewExpression`||!Zl(e.callee,`Vector3`)))return e.arguments.length===0?[0,0,0]:vu(e.arguments)}function bu(e){if(!(e.type!==`NewExpression`||!Zl(e.callee,`UDim`)))return e.arguments.length===0?[0,0]:_u(e.arguments)}function xu(e){let t=hu(e);if(t===void 0)return;let[n,r,i,a]=t,o=J(n),s=J(r),c=J(i),l=J(a);if(!(o===void 0||s===void 0||c===void 0||l===void 0))return[o,s,c,l]}function Su(e){if(e.type===`CallExpression`){let t=cu(e.callee),n=_u(e.arguments);if(t===void 0||n===void 0)return;let[r,i]=n;return t.length===2&&t[0]===`UDim2`&&t[1]===`fromOffset`?[0,r,0,i]:t.length===2&&t[0]===`UDim2`&&t[1]===`fromScale`?[r,0,i,0]:void 0}if(!(e.type!==`NewExpression`||!Zl(e.callee,`UDim2`)))return e.arguments.length===0?[0,0,0,0]:xu(e.arguments)}function Cu(e){if(!(e.type!==`NewExpression`||!Zl(e.callee,`Rect`)))return e.arguments.length===0?[0,0,0,0]:xu(e.arguments)}function wu(e){let[t,n,r]=e,i=J(t),a=J(n),o=J(r);if(!(i===void 0||a===void 0||o===void 0))return[i,a,o]}function Tu(e){if(e.type===`CallExpression`){let t=cu(e.callee),n=mu(e.arguments);if(t?.length!==2||t[0]!==`Color3`||t[1]!==`fromRGB`||n===void 0)return;let r=wu(n);if(r===void 0)return;let[i,a,o]=r;return[Math.fround(i/255),Math.fround(a/255),Math.fround(o/255)]}if(e.type!==`NewExpression`||!Zl(e.callee,`Color3`))return;if(e.arguments.length===0)return[0,0,0];let t=mu(e.arguments);if(t!==void 0)return wu(t)}function Eu(e){if(e.type!==`NewExpression`||!Zl(e.callee,`CFrame`))return;if(e.arguments.length===0)return[0,0,0,1,0,0,0,1,0,0,0,1];let t=vu(e.arguments);if(t===void 0)return;let[n,r,i]=t;return[n,r,i,1,0,0,0,1,0,0,0,1]}function Du(e){let t=cu(e);if(t?.length!==3||t[0]!==`Enum`)return;let[,n,r]=t;if(!(n===void 0||r===void 0))return{enumType:n,value:r}}function Ou(e,t){switch(t.type){case`bool`:return Ql(e)&&e.value===t.value;case`CFrame`:{let n=Eu(e);return n!==void 0&&fu(t.value,n)}case`Color3`:{let n=Tu(e);return n!==void 0&&n[0]===t.value[0]&&n[1]===t.value[1]&&n[2]===t.value[2]}case`Enum`:{let n=Du(e);return n!==void 0&&n.enumType===t.enumType&&n.value===t.value}case`number`:{let n=J(e);return n!==void 0&&du(t.value,n)}case`Rect`:{let n=Cu(e);return n!==void 0&&fu(t.value,n)}case`string`:return _e(e)&&e.value===t.value;case`UDim`:{let n=bu(e);return n!==void 0&&fu(t.value,n)}case`UDim2`:{let n=Su(e);return n!==void 0&&fu(t.value,n)}case`Vector2`:{let n=gu(e);return n!==void 0&&fu(t.value,n)}case`Vector3`:{let n=yu(e);return n!==void 0&&fu(t.value,n)}default:return!1}}const ku=t({create(e){let{sourceCode:t}=e;function n(e){return t.getCommentsBefore(e).length>0||t.getCommentsAfter(e).length>0||t.getCommentsInside(e).length>0}function r(e){let r=t.getTokenBefore(e),i=t.getTokenAfter(e);if(n(e)||r!==null&&t.commentsExistBetween(r,e)||i!==null&&t.commentsExistBetween(e,i))return;let[a]=e.range;for(;a>0;){let e=t.text[a-1];if(e===` `||e===` `){--a;continue}break}return t=>t.removeRange([a,e.range[1]])}function i(e,r){if(e.attributes.some(e=>e.type===`JSXSpreadAttribute`))return;let i=t.getTokenBefore(r),a=t.getTokenAfter(r);if(i!==null&&!n(r)&&!t.commentsExistBetween(i,r)&&!(a!==null&&t.commentsExistBetween(r,a)))return e=>e.removeRange([i.range[1],r.range[1]])}function a(t,n,i){if(n.operator!==`=`||n.left.type!==`MemberExpression`||n.left.computed||n.left.object.type!==`Identifier`||n.left.property.type!==`Identifier`)return;let a=i.get(n.left.object.name);if(a===void 0)return;let o=n.left.property.name;if(ru(o))return;let s=nu(a.className,o);if(s===void 0||!Ou(n.right,s.value))return;let c=r(t);if(c===void 0){e.report({data:{className:a.className,propertyName:s.propertyName},messageId:`uselessDefault`,node:n.left});return}e.report({data:{className:a.className,propertyName:s.propertyName},fix:c,messageId:`uselessDefault`,node:n.left})}function o(e,t){for(let[n]of t)for(let r of e.arguments)if(r.type!==`SpreadElement`&&su(r,n)){t.delete(n);break}}function s(e,t){if(!(e.left.type!==`Identifier`&&e.left.type!==`MemberExpression`))for(let[n]of t)su(e.right,n)&&t.delete(n)}function c(e,t){if(e.argument!==null)for(let[n]of t)su(e.argument,n)&&t.delete(n)}function l(e){let t=new Map;for(let n of e)u(n,t)}function u(e,t){if(e.type===`ExpressionStatement`){d(e,t);return}if(e.type===`ReturnStatement`){c(e,t);return}e.type===`VariableDeclaration`&&f(e,t)}function d(e,t){let n=w(e.expression);if(n.type===`AssignmentExpression`){a(e,n,t),s(n,t);return}n.type===`CallExpression`&&o(n,t)}function f(e,t){if(e.kind===`const`)for(let n of e.declarations){if(n.id.type!==`Identifier`||n.init===null)continue;let e=ou(n.init);e!==void 0&&t.set(n.id.name,{className:e})}}return{BlockStatement(e){l(e.body)},JSXOpeningElement(t){let n=$l(t.name);if(n!==void 0)for(let r of t.attributes){if(r.type===`JSXSpreadAttribute`)continue;let a=eu(r.name);if(a===void 0||ru(a))continue;let o=nu(n,a);if(o===void 0)continue;let s=tu(r);if(!(r.value===null&&o.value.type===`bool`&&o.value.value)&&(s===void 0||!Ou(s,o.value)))continue;let c=i(t,r);if(c===void 0){e.report({data:{className:n,propertyName:o.propertyName},messageId:`uselessDefault`,node:r});continue}e.report({data:{className:n,propertyName:o.propertyName},fix:c,messageId:`uselessDefault`,node:r})}},Program(e){l(e.body)}}},meta:{docs:{description:`Scaffold for detecting useless default values across ${Wl} default-property classes.`},fixable:`code`,messages:{uselessDefault:`Remove "{{propertyName}}" from {{className}}. It already matches the default value.`},schema:[],type:`suggestion`}}),Au=[`useEffect`,`useLayoutEffect`,`useInsertionEffect`],ju=[`on`],Mu=[`useRef`],Nu=[`useState`,`useReducer`];function Pu(e){return e===void 0?{environment:`roblox-ts`,hooks:new Set(Au),propertyCallbackPrefixes:new Set(ju),refHooks:new Set(Mu),reportAdjustState:!0,reportDerivedState:!0,reportDuplicateDeps:!0,reportEffectChain:!0,reportEmptyEffect:!0,reportEventFlag:!0,reportEventSpecificLogic:!0,reportExternalStore:!0,reportInitializeState:!0,reportLogOnly:!0,reportMixedDerivedState:!0,reportNotifyParent:!0,reportPassRefToParent:!0,reportResetState:!0,stateHooks:new Set(Nu)}:{environment:hn(e.environment)?e.environment:`roblox-ts`,hooks:new Set(S(e.hooks)?e.hooks:Au),propertyCallbackPrefixes:new Set(S(e.propertyCallbackPrefixes)?e.propertyCallbackPrefixes:ju),refHooks:new Set(S(e.refHooks)?e.refHooks:Mu),reportAdjustState:e.reportAdjustState??!0,reportDerivedState:e.reportDerivedState??!0,reportDuplicateDeps:e.reportDuplicateDeps??!0,reportEffectChain:e.reportEffectChain??!0,reportEmptyEffect:e.reportEmptyEffect??!0,reportEventFlag:e.reportEventFlag??!0,reportEventSpecificLogic:e.reportEventSpecificLogic??!0,reportExternalStore:e.reportExternalStore??!0,reportInitializeState:e.reportInitializeState??!0,reportLogOnly:e.reportLogOnly??!0,reportMixedDerivedState:e.reportMixedDerivedState??!0,reportNotifyParent:e.reportNotifyParent??!0,reportPassRefToParent:e.reportPassRefToParent??!0,reportResetState:e.reportResetState??!0,stateHooks:new Set(S(e.stateHooks)?e.stateHooks:Nu)}}function Fu(e){if(!(e.type!==`MemberExpression`||e.computed||e.object.type!==`Identifier`||e.property.type!==`Identifier`))return{objectName:e.object.name,propertyName:e.property.name}}function Iu(e){if(!(e.type!==`MemberExpression`||e.computed||e.property.type!==`Identifier`))return e.property.name}function Lu(e,t,n,r){let{callee:i}=e;if(i.type===`Identifier`)return t.has(i.name);let a=Fu(i);return a!==void 0&&n.has(a.objectName)&&r.has(a.propertyName)}function Ru(e){if((e.type===`FunctionDeclaration`||e.type===`FunctionExpression`)&&e.id!==null)return e.id.name;let{parent:t}=e;if(t.type===`VariableDeclarator`&&t.id.type===`Identifier`)return t.id.name;if(`key`in t&&!(`computed`in t&&t.computed)&&D(t.key)&&t.key.type===`Identifier`)return t.key.name}function zu(e){return ne(e)&&e.startsWith(`use`)}function Bu(e){if(e.type===`ReturnStatement`)return e.argument===null;if(e.type!==`BlockStatement`||e.body.length!==1)return!1;let[t]=e.body;return t?.type===`ReturnStatement`&&t.argument===null}function Vu(e,t){`body`in e&&D(e.body)&&(e.body.type===`BlockStatement`?t.push(...e.body.body):t.push(e.body))}function Hu(e,t){if(e.type===`BlockStatement`){t.push(...e.body);return}if(e.type===`IfStatement`){t.push(e.consequent),e.alternate!==null&&t.push(e.alternate);return}if(e.type===`DoWhileStatement`||e.type===`ForInStatement`||e.type===`ForOfStatement`||e.type===`ForStatement`||e.type===`LabeledStatement`||e.type===`WhileStatement`||e.type===`WithStatement`){Vu(e,t);return}if(e.type===`SwitchStatement`){for(let n of e.cases)t.push(...n.consequent);return}e.type===`TryStatement`&&(t.push(...e.block.body),e.handler!==null&&t.push(...e.handler.body.body),e.finalizer!==null&&t.push(...e.finalizer.body))}function Uu(e){let t=[...e.body];for(;t.length>0;){let e=t.pop();if(e!==void 0)switch(e.type){case`ArrowFunctionExpression`:continue;case`FunctionDeclaration`:continue;case`FunctionExpression`:continue;case`ReturnStatement`:if(e.argument!==null)return!0;continue;case`DoWhileStatement`:case`ForInStatement`:case`ForOfStatement`:case`ForStatement`:case`BlockStatement`:case`IfStatement`:case`LabeledStatement`:case`SwitchStatement`:case`TryStatement`:case`WhileStatement`:case`WithStatement`:Hu(e,t);continue;default:continue}}return!1}function Wu(e){if(e.length===0)return e;let[t]=e;return t?.type!==`IfStatement`||t.alternate!==null||!Bu(t.consequent)?e:e.slice(1)}function Gu(e){return e.type===`ChainExpression`?e.expression:e}function Y(e){if(e.type!==`ExpressionStatement`)return;let t=Gu(e.expression);return t.type===`CallExpression`?t:void 0}function Ku(e,t){return e.callee.type===`Identifier`&&t.has(e.callee.name)}function qu(e){return e.type===`Literal`&&e.value===!1}function Ju(e){return e.type===`Literal`||e.type===`UnaryExpression`&&e.operator===`void`&&e.argument.type===`Literal`&&e.argument.value===0}function Yu(e){return e.type===`ArrayExpression`&&e.elements.length===0}function Xu(e){return e.type===`ObjectExpression`&&e.properties.length===0}function Zu(e){if(e.type===`Literal`){let{value:t}=e;return t===``||t===0||t===!1||t===null}return Ju(e)?!0:Yu(e)||Xu(e)}function Qu(e,t){let n=Y(e);if(n?.callee.type!==`Identifier`)return;let r=t.get(n.callee.name);if(r===void 0||n.arguments.length!==1)return;let[i]=n.arguments;if(!(i===void 0||!qu(i)))return r}function $u(e,t){let n=Y(e);if(!(n===void 0||Ku(n,t)))return n}function ed(e,t){return e.type===`UnaryExpression`&&e.operator===`!`&&e.argument.type===`Identifier`&&e.argument.name===t}function td(e,t){return e.type===`Identifier`&&e.name===t}function X(e){return e.type===`BlockStatement`?e.body:[e]}function nd(e,t,n){let[r,i,a]=e;if(r?.type!==`IfStatement`||r.alternate!==null||i===void 0||a===void 0)return;let o=Qu(i,t),s=Qu(a,t),c=Bu(r.consequent);if(o!==void 0&&s===void 0)return c&&ed(r.test,o)?$u(a,n)===void 0?void 0:o:void 0;if(!(s===void 0||o!==void 0)&&c&&ed(r.test,s))return $u(i,n)===void 0?void 0:s}function rd(e,t,n){if(e.type!==`IfStatement`||e.alternate!==null)return;let r=X(e.consequent),[i,a]=r;if(r.length!==2||i===void 0||a===void 0)return;let o=Qu(i,t),s=Qu(a,t);if(o!==void 0&&s===void 0)return td(e.test,o)?$u(a,n)===void 0?void 0:o:void 0;if(!(s===void 0||o!==void 0)&&td(e.test,s))return $u(i,n)===void 0?void 0:s}function id(e,t,n){if(e.length===3)return nd(e,t,n);if(e.length===1){let[r]=e;return r===void 0?void 0:rd(r,t,n)}}const ad=new Set([`ArrayExpression`,`BinaryExpression`,`CallExpression`,`ChainExpression`,`ConditionalExpression`,`Identifier`,`LogicalExpression`,`MemberExpression`,`ObjectExpression`,`PrivateIdentifier`,`TemplateLiteral`,`UnaryExpression`]);function od(e){return ad.has(e.type)}function sd(e,t){for(let n of e.elements)n!==null&&n.type!==`SpreadElement`&&t.push(n)}function cd(e,t){t.push(e.callee);for(let n of e.arguments)n.type!==`SpreadElement`&&t.push(n)}function ld(e,t){t.push(e.object),e.computed||t.push(e.property)}function ud(e,t){for(let n of e.properties)n.type===`Property`&&t.push(n.value)}function dd(e,t){switch(e.type){case`ArrayExpression`:sd(e,t);break;case`BinaryExpression`:case`LogicalExpression`:t.push(e.left,e.right);break;case`CallExpression`:cd(e,t);break;case`ChainExpression`:t.push(e.expression);break;case`ConditionalExpression`:t.push(e.test,e.consequent,e.alternate);break;case`MemberExpression`:ld(e,t);break;case`ObjectExpression`:ud(e,t);break;case`TemplateLiteral`:t.push(...e.expressions);break;case`UnaryExpression`:t.push(e.argument);break;default:}}function fd(e){let t=[e],n=new Set;for(;t.length>0;){let e=t.pop();if(!(e===void 0||n.has(e))){if(n.add(e),e.type===`Identifier`)return!0;dd(e,t)}}return!1}function pd(e,t){let n=0;for(let r of e){if(r.type===`IfStatement`){if(r.alternate!==null)return;let e=pd(X(r.consequent),t);if(e===void 0||e===0)return;n+=e;continue}let e=Y(r);if(e===void 0||!t(e))return;n+=1}return n>0?n:void 0}function md(e,t){return pd(e,e=>Ku(e,t)?e.arguments.some(e=>e.type!==`SpreadElement`&&fd(e)):!1)}function hd(e,t,n){return pd(e,e=>yd(e,t,n))}function gd(e,t){for(let n of t)if(e.startsWith(n))return!0;return!1}function _d(e){return e.type===`AssignmentPattern`?e.left:e}function vd(e,t,n,r){let i={functionId:n,isCustomHook:r,propertyCallbackIdentifiers:new Set,propertyObjectName:void 0},[a]=e.params;if(a===void 0)return i;let o=_d(a);if(o.type===`Identifier`)return i.propertyObjectName=o.name,i;if(o.type!==`ObjectPattern`)return i;for(let e of o.properties){if(e.type!==`Property`)continue;let n=Wr(e);if(n===void 0||!gd(n,t))continue;let r=Gr(e);r!==void 0&&i.propertyCallbackIdentifiers.add(r.name)}return i}function yd(e,t,n){let{callee:r}=e;if(r.type===`Identifier`)return t.propertyCallbackIdentifiers.has(r.name);let i=Fu(r);return i!==void 0&&t.propertyObjectName!==void 0&&i.objectName===t.propertyObjectName&&gd(i.propertyName,n)}function bd(e,t){let[,n]=e.arguments;if(n?.type!==`ArrayExpression`)return!1;for(let e of n.elements)if(e?.type===`Identifier`&&e.name===t)return!0;return!1}function xd(e){let t=new Set,[,n]=e.arguments;if(n?.type!==`ArrayExpression`)return t;for(let e of n.elements)e?.type===`Identifier`&&t.add(e.name);return t}function Sd(e){let[,t]=e.arguments;return t===void 0||t.type===`ArrayExpression`&&t.elements.length===0}function Cd(e,t){if(e.length===0)return!1;for(let n of e){if(n.type===`IfStatement`){if(n.alternate!==null||!Cd(X(n.consequent),t))return!1;continue}if(!t(n))return!1}return!0}function wd(e,t){let n=new Set;for(let r of e){if(r.type===`IfStatement`){let e=X(r.consequent);for(let r of wd(e,t))n.add(r);continue}let e=Y(r);e!==void 0&&Ku(e,t)&&e.callee.type===`Identifier`&&n.add(e.callee.name)}return n}function Td(e,t){let{callee:n}=e;if(n.type===`Identifier`)return t.has(n.name);let r=Fu(n);return r!==void 0&&t.has(r.objectName)}function Ed(e,t,n){for(let r of e){if(r.type===`IfStatement`){if(Ed(X(r.consequent),t,n))return!0;continue}let e=Y(r);if(e!==void 0&&!Ku(e,t)&&!Td(e,n))return!0}return!1}function Dd(e,t,n){return Cd(e,e=>{let r=Y(e);if(r===void 0||!Ku(r,t)||r.arguments.length!==1)return!1;let[i]=r.arguments;return i!==void 0&&n(i)})}function Od(e){return e.type===`Literal`&&typeof e.value!=`object`||Yu(e)||Xu(e)}function kd(e,t){return Dd(e,t,Zu)}function Ad(e,t){return Dd(e,t,Od)}function jd(e){return Cd(e,e=>{let t=Y(e);return t!==void 0&&Fu(t.callee)?.objectName===`console`})}const Md=new Set([`addEventListener`,`addListener`,`on`,`subscribe`]);function Nd(e){return e.some(e=>{let t=Y(e);if(t===void 0)return!1;let n=Iu(t.callee);return n!==void 0&&Md.has(n)})}function Pd(e,t){return e.type===`MemberExpression`&&!e.computed&&e.object.type===`Identifier`&&e.property.type===`Identifier`&&e.property.name===`current`&&t.has(e.object.name)}function Fd(e,t,n){return e.callee.type===`Identifier`&&n.has(e.callee.name)&&e.arguments.some(e=>Pd(e,t))}function Id(e,t,n){for(let r of e){if(r.type===`IfStatement`){if(Id(X(r.consequent),t,n))return!0;continue}let e=Y(r);if(e!==void 0&&Fd(e,t,n))return!0}return!1}function Ld(e){let t=new Set,n=new Set,r=od(e)?[e]:[];for(;r.length>0;){let e=r.pop();if(!(e===void 0||n.has(e))){if(n.add(e),e.type===`Identifier`){t.add(e.name);continue}od(e)&&dd(e,r)}}return t}function Rd(e){return e.alternate===null?[]:e.alternate.type===`BlockStatement`?e.alternate.body:[e.alternate]}function zd(e,t,n){return[...Ld(e.test)].some(e=>n.has(e)&&!t.has(e))}function Bd(e,t){return e.some(e=>{let n=Y(e);return n!==void 0&&Ku(n,t)})}function Vd(e,t,n,r){for(let i of e)if(i.type===`IfStatement`&&(zd(i,n,r)&&Bd(X(i.consequent),t)||Vd(Rd(i),t,n,r)))return!0;return!1}const Hd=new Set([`alert`,`confirm`,`display`,`hide`,`log`,`navigate`,`notify`,`post`,`prompt`,`redirect`,`report`,`send`,`show`,`submit`,`track`]);function Ud(e){let t=e.toLowerCase();for(let e of Hd)if(t.startsWith(e))return!0;return!1}function Wd(e,t){let n=Y(e);return n===void 0||Ku(n,t)?!1:n.callee.type===`Identifier`?Ud(n.callee.name):n.callee.type!==`MemberExpression`||n.callee.computed||n.callee.property.type!==`Identifier`?!1:Ud(n.callee.property.name)}function Gd(e,t){return[...Ld(e.test)].some(e=>t.has(e))}function Kd(e,t,n){for(let r of e)if(r.type===`IfStatement`&&(Gd(r,n)&&X(r.consequent).some(e=>Wd(e,t))||r.alternate!==null&&Kd(Rd(r),t,n)))return!0;return!1}function qd(e,t){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}function Jd(e,t){return`${e}:${t}`}function Yd(e){if(e.body?.type===`BlockStatement`)return e.body}function Xd(e){return e.body.type===`BlockStatement`}function Zd(e){return e.body!==null}const Qd=new Set(`addEventListener.addListener.alert.analytics.cancelAnimationFrame.clearInterval.clearTimeout.confirm.debug.delete.error.fetch.get.info.log.navigate.navigateTo.notify.observe.patch.post.prompt.put.redirect.removeEventListener.removeListener.report.requestAnimationFrame.send.setInterval.setTimeout.showNotification.submit.subscribe.track.unobserve.unsubscribe.warn`.split(`.`)),$d=[`fetch`,`send`,`post`,`track`],ef=new Set([`addEventListener`,`addListener`,`cancelAnimationFrame`,`catch`,`clearInterval`,`clearTimeout`,`finally`,`observe`,`removeEventListener`,`removeListener`,`requestAnimationFrame`,`setInterval`,`setTimeout`,`subscribe`,`then`,`unobserve`,`unsubscribe`]),tf=[`log`,`fetch`,`send`,`track`,`report`,`show`,`navigate`,`submit`,`post`,`notify`];function nf(e){for(let t of tf)if(e.startsWith(t))return!0;return!1}function rf(e){return e.object.type===`Identifier`&&e.object.name===`console`&&e.property.type===`Identifier`&&(e.property.name===`log`||e.property.name===`warn`||e.property.name===`error`||e.property.name===`info`||e.property.name===`debug`)}function af(e){for(let t of $d)if(e.startsWith(t))return!0;return ef.has(e)}function of(e,t,n){let{callee:r}=e;return Ku(e,t)?!1:r.type===`Identifier`?n.has(r.name)?!1:Qd.has(r.name)||nf(r.name):r.type!==`MemberExpression`||r.computed||r.property.type!==`Identifier`||r.object.type===`Identifier`&&n.has(r.object.name)?!1:rf(r)||af(r.property.name)}function sf(e,t,n){for(let r of e){if(r.type===`IfStatement`){if(sf(X(r.consequent),t,n))return!0;continue}let e=Y(r);if(e!==void 0&&of(e,t,n))return!0}return!1}const cf=t({create(e){let t=Pu(e.options[0]),n=vn(t.environment),r=new Set,i=new Set,a=new Set,o=new Set,s=new Set,c=new Map,l=new Set,u=new Set,d=[],f=1,p=new Map,m=[];function h(e){return Lu(e,i,r,t.hooks)}function g(e){return Lu(e,a,r,t.stateHooks)}function _(e){return Lu(e,l,r,t.refHooks)}function v(e){if(e.init?.type!==`CallExpression`||!g(e.init)||e.id.type!==`ArrayPattern`)return;let{elements:t}=e.id;if(t.length<2)return;let[,n]=t;if(n==null||n.type!==`Identifier`)return;o.add(n.name);let[r]=t;r?.type===`Identifier`&&(s.add(r.name),c.set(n.name,r.name))}function ee(e){e.init?.type!==`CallExpression`||!_(e.init)||e.id.type!==`Identifier`||u.add(e.id.name)}function te(e){e.id.type!==`Identifier`||e.init===null||(e.init.type===`FunctionExpression`||e.init.type===`ArrowFunctionExpression`)&&p.set(e.id.name,e.init)}function y(e){let n=f;f+=1;let r=Ru(e);d.push(vd(e,t.propertyCallbackPrefixes,n,zu(r))),e.type===`FunctionDeclaration`&&e.id!==null&&p.set(e.id.name,e)}function b(){d.pop()}function x(e){return t.reportMixedDerivedState&&e.setterCalls.size>0&&e.hasNonSetter&&!e.hasReturnCleanup?!sf(e.statements,o,e.functionContext?.propertyCallbackIdentifiers??new Set):!1}function ne(e){let{coreStatements:n,dependencyIdentifiers:r,functionContext:i,hasNonSetter:a,hasReturnCleanup:l,node:d,statements:f}=e,p=t.reportEventFlag?id(f,c,o):void 0,m=[...r].some(e=>!(s.has(e)||o.has(e)));return[[t.reportEmptyEffect&&(f.length===0||f[0]!==void 0&&Bu(f[0])),`emptyEffect`],[t.reportInitializeState&&Sd(d)&&Ad(f,o),`initializeState`],[t.reportResetState&&kd(f,o)&&m,`resetState`],[p!==void 0&&bd(d,p),`eventFlag`],[t.reportEventSpecificLogic&&Kd(f,o,s),`eventSpecificLogic`],[t.reportAdjustState&&Vd(f,o,s,r)&&!a,`adjustState`],[t.reportDerivedState&&md(n,o)!==void 0,`derivedState`],[x(e),`mixedDerivedState`],[t.reportPassRefToParent&&i!==void 0&&Id(f,u,i.propertyCallbackIdentifiers),`passRefToParent`],[t.reportNotifyParent&&i!==void 0&&!i.isCustomHook&&hd(n,i,t.propertyCallbackPrefixes)!==void 0,`notifyParent`],[t.reportExternalStore&&Nd(f)&&l,`externalStore`],[t.reportLogOnly&&jd(f),`logOnly`]].find(([e])=>e)?.[1]}function S(t,n,r){let i=d.at(-1),a=Wu(n),s=xd(t),c=wd(n,o),l=Ed(n,o,i?.propertyCallbackIdentifiers??new Set),u=r!==void 0&&Uu(r);m.push({depIdentifiers:s,hasNonSetterSideEffect:l,hasReturnWithCleanup:u,node:t,ownerFunctionId:i?.functionId??0,setterCalls:c,statements:n});let f=ne({coreStatements:a,dependencyIdentifiers:s,functionContext:i,hasNonSetter:l,hasReturnCleanup:u,node:t,setterCalls:c,statements:n});f!==void 0&&e.report({messageId:f,node:t})}function C(){if(!t.reportEffectChain)return;let n=re();for(let t of m)if(!(t.hasNonSetterSideEffect||t.hasReturnWithCleanup))for(let r of t.depIdentifiers){let i=Jd(t.ownerFunctionId,r),a=n.get(i);if(a!==void 0&&w(a)){e.report({messageId:`effectChain`,node:t.node});return}}}function re(){let e=new Map;for(let[t,n]of m.entries())for(let r of n.setterCalls){let i=c.get(r);if(i===void 0)continue;let a=Jd(n.ownerFunctionId,i),o=e.get(a);o===void 0&&(o=new Set,e.set(a,o)),o.add(t)}return e}function w(e){return e.size!==0&&[...e].every(e=>{let t=m[e];return t!==void 0&&!t.hasNonSetterSideEffect&&!t.hasReturnWithCleanup})}function T(){if(!t.reportDuplicateDeps||m.length<2)return;let e=new Set;for(let t=0;t<m.length;t+=1){if(e.has(t))continue;let n=E(t,e);n.length<2||ie(n,e)}}function E(e,t){let n=m[e];if(n===void 0||n.depIdentifiers.size===0)return[];let r=[e];for(let i=e+1;i<m.length;i+=1){let e=m[i];t.has(i)||e!==void 0&&e.ownerFunctionId===n.ownerFunctionId&&qd(n.depIdentifiers,e.depIdentifiers)&&r.push(i)}return r}function ie(t,n){for(let r of t){n.add(r);let t=m[r];t!==void 0&&e.report({messageId:`duplicateDeps`,node:t.node})}}function ae(e,t){let n=p.get(t);if(n===void 0||n.async)return;let r=Yd(n);r!==void 0&&S(e,r.body.filter(e=>e.type!==`EmptyStatement`),r)}function oe(e,t){if(!t.async){if(t.type===`ArrowFunctionExpression`){if(!Xd(t))return;S(e,t.body.body.filter(e=>e.type!==`EmptyStatement`),t.body);return}Zd(t)&&S(e,t.body.body.filter(e=>e.type!==`EmptyStatement`),t.body)}}return{ArrowFunctionExpression:y,"ArrowFunctionExpression:exit":b,CallExpression(e){if(!h(e))return;let[t]=e.arguments;if(t!==void 0){if(t.type===`Identifier`){ae(e,t.name);return}He(t)&&oe(e,t)}},FunctionDeclaration:y,"FunctionDeclaration:exit":b,FunctionExpression:y,"FunctionExpression:exit":b,ImportDeclaration(e){xn(e,n,r,(e,n)=>{t.hooks.has(e)&&i.add(n),t.stateHooks.has(e)&&a.add(n),t.refHooks.has(e)&&l.add(n)})},"Program:exit"(){C(),T()},VariableDeclarator(e){v(e),ee(e),te(e)}}},meta:{docs:{description:`Disallow effects that only derive state, notify parent callbacks, reset state on prop changes, or route event side effects through state.`},messages:{adjustState:`This effect adjusts state when a prop changes. Adjust the state directly during rendering or restructure to avoid this need.`,derivedState:`This effect only derives state from properties or state. Compute the value during rendering instead of useEffect.`,duplicateDeps:`Multiple effects have identical dependency arrays. Combine them into a single effect for better performance.`,effectChain:`This effect is part of a chain of effects that only derive state from other effects. Consolidate the logic into event handlers or compute during rendering.`,emptyEffect:`This effect has an empty body and should be removed.`,eventFlag:`This effect only reacts to a state flag. Call the side effect directly in the event handler instead of toggling state.`,eventSpecificLogic:`This effect runs event-specific logic based on state. Move this logic to the event handler that triggers the state change.`,externalStore:"This effect subscribes to an external store and syncs to state. Use `useSyncExternalStore` instead.",initializeState:`This effect initializes state with a constant value. Pass the value as the useState initializer instead.`,logOnly:`This effect only contains console.log calls. Remove it (debug leftover) or move the logging to an event handler.`,mixedDerivedState:`This effect contains state setter calls that derive values from props or state mixed with other operations. Extract the setter calls and compute values during rendering.`,notifyParent:`This effect only notifies a parent via a property callback. Call the callback in the event handler instead of useEffect.`,passRefToParent:"This effect passes a ref to a parent callback. Use `forwardRef` or `useImperativeHandle` instead.",resetState:"This effect resets state when a prop changes. Pass a `key` prop to the component instead to reset all state automatically."},schema:[{additionalProperties:!1,properties:{environment:{default:`roblox-ts`,description:`The React environment: 'roblox-ts' uses @rbxts/react, 'standard' uses react.`,enum:[`roblox-ts`,`standard`],type:`string`},hooks:{default:[...Au],items:{type:`string`},type:`array`},propertyCallbackPrefixes:{default:[...ju],items:{type:`string`},type:`array`},refHooks:{default:[...Mu],description:`Ref hook names that return mutable ref objects.`,items:{type:`string`},type:`array`},reportAdjustState:{default:!0,type:`boolean`},reportDerivedState:{default:!0,type:`boolean`},reportDuplicateDeps:{default:!0,type:`boolean`},reportEffectChain:{default:!0,type:`boolean`},reportEmptyEffect:{default:!0,type:`boolean`},reportEventFlag:{default:!0,type:`boolean`},reportEventSpecificLogic:{default:!0,type:`boolean`},reportExternalStore:{default:!0,type:`boolean`},reportInitializeState:{default:!0,type:`boolean`},reportLogOnly:{default:!0,type:`boolean`},reportMixedDerivedState:{default:!0,type:`boolean`},reportNotifyParent:{default:!0,type:`boolean`},reportPassRefToParent:{default:!0,type:`boolean`},reportResetState:{default:!0,type:`boolean`},stateHooks:{default:[...Nu],description:`State hook names that return [value, setter] pairs.`,items:{type:`string`},type:`array`}},type:`object`}],type:`suggestion`}});function lf(e){return x(e)&&y(e.dependencyMode)&&(e.dependencyMode===`empty-or-omitted`||e.dependencyMode===`aggressive`)?e.dependencyMode:`non-updating`}function uf(e){let t=x(e)&&S(e.staticGlobalFactories)?e.staticGlobalFactories:ss;return{dependencyMode:lf(e),environment:Sn(e),staticGlobalFactories:new Set(t)}}function df(e){return{staticGlobalFactories:e.staticGlobalFactories}}function ff(e){let t=Lr(e);if(t===void 0)return;let{body:n}=t;if(n===null)return;if(n.type!==`BlockStatement`)return n;if(n.body.length!==1)return;let[r]=n.body;return r?.type===`ReturnStatement`?r.argument??void 0:void 0}function pf(e,t){switch(t.dependencyMode){case`aggressive`:return!0;case`empty-or-omitted`:return e===0||e===1;case`non-updating`:return e===0||e===1||e===2;default:{let e=Error(`Unknown dependency mode: ${String(t.dependencyMode)}`);throw Error.captureStackTrace(e,pf),e}}}const mf=t({create(e){let t=uf(e.options[0]),n=df(t),r=vn(t.environment),i=new Set,a=new Set;return{CallExpression(r){if(!fe(r,i,a)||js(r)||r.arguments.length===0)return;let o=ff(r);if(o===void 0)return;let s=new Set;K(e.sourceCode,o,s,n)&&pf(qr(e.sourceCode,r.arguments[1],s,n,Cs),t)&&e.report({messageId:`uselessUseMemo`,node:r})},ImportDeclaration(e){Ms(e,r,i,a)}}},meta:{docs:{description:`Disallow useMemo calls that only wrap values static enough to live at module scope.`},messages:{uselessUseMemo:`useMemo is wrapping a static value. Move the value to module scope instead of paying hook overhead for no runtime benefit.`},schema:[{additionalProperties:!1,properties:{dependencyMode:{default:`non-updating`,enum:[`empty-or-omitted`,`non-updating`,`aggressive`],type:`string`},environment:{default:`roblox-ts`,enum:[`roblox-ts`,`standard`],type:`string`},staticGlobalFactories:{items:{type:`string`},type:`array`}},type:`object`}],type:`suggestion`}}),hf=[`useSpring`];function gf(e){let t=!1,n=!1;for(let r of e.properties)if(!(r.type!==`Property`||r.computed||r.key.type!==`Identifier`)&&(r.key.name===`from`&&(t=!0),r.key.name===`to`&&(n=!0),t&&n))return!0;return!1}function _f(e,t,n){let r=w(t);if(r.type===`ObjectExpression`)return n(r);if(r.type!==`Identifier`)return!1;let i=E(e.getScope(r),r.name);if(i===void 0||!G(i.scope)||ds(i))return!1;for(let e of i.defs){let t=ps(e);if(t===void 0)continue;let r=w(t);if(r.type===`ObjectExpression`&&n(r))return!0}return!1}function vf(e,t){return _f(e,t,gf)}function yf(e,t,n,r){let i={staticGlobalFactories:r.staticGlobalFactories};return _f(e,t,t=>Ss(e,t,n,i))}function bf(e,t){return e===0||e===2||e===1&&t.treatEmptyDepsAsViolation}function xf({callee:e},t){if(e.type===`Identifier`)return t.springHooks.has(e.name);if(e.type===`MemberExpression`&&!e.computed){let{property:n}=e;if(n.type===`Identifier`)return t.springHooks.has(n.name)}return!1}const Sf=t({create(e){let[t]=e.options,n={springHooks:new Set(t?.springHooks??hf),staticGlobalFactories:new Set(t?.staticGlobalFactories??ss),treatEmptyDepsAsViolation:t?.treatEmptyDepsAsViolation??!0};return{CallExpression(t){if(!xf(t,n)||t.arguments.length===0)return;let[r]=t.arguments;if(r===void 0||r.type===`SpreadElement`)return;let i=new Set;if(!yf(e.sourceCode,r,i,n)||vf(e.sourceCode,r))return;let a=t.arguments.length>1?t.arguments[1]:void 0;bf(qr(e.sourceCode,a,i,n,Cs),n)&&e.report({messageId:`uselessSpring`,node:t})}}},meta:{docs:{description:`Disallow useSpring hooks whose config and dependencies are entirely static`},messages:{uselessSpring:`useSpring call has only static inputs and non-updating dependencies; replace it with a constant or remove the hook.`},schema:[{additionalProperties:!1,default:{staticGlobalFactories:[...ss],treatEmptyDepsAsViolation:!0},properties:{springHooks:{description:`Hook identifiers that should be treated as spring hooks`,items:{type:`string`},type:`array`},staticGlobalFactories:{default:[...ss],description:`Global factory identifiers that are treated as static constructors`,items:{type:`string`},type:`array`},treatEmptyDepsAsViolation:{default:!0,description:`Treat static config with an empty dependency array as a violation`,type:`boolean`}},type:`object`}],type:`suggestion`}}),Cf=Wa({alternative:`Log`,message:`{{name}}() is a raw output function lacking log levels, timestamps, and filtering. Production systems require structured logging for debugging and monitoring. Replace {{name}}(...) with {{alternative}}.`,messageId:`noWarn`,name:`warn`}),wf=t({create(e){return{ImportDeclaration(t){t.importKind!==`type`&&e.report({messageId:`onlyTypeImports`,node:t})}}},meta:{docs:{description:`Require all imports to be type-only imports. Benchmarks cannot import non-types because the benchmarker plugin will throw an error.`,recommended:!0},messages:{onlyTypeImports:"Benchmarks must use `import type` to avoid runtime imports that break the benchmarker plugin."},schema:[],type:`problem`}});function Tf(e){return!e.computed&&Ef(e.value)}function Ef(e){if(e===void 0)return!1;switch(e.type){case`ArrayExpression`:return e.elements.every(e=>e===null||e.type!==`SpreadElement`&&Ef(e));case`CallExpression`:return e.callee.type===`MemberExpression`&&Ef(e.callee.object);case`Literal`:return!0;case`MemberExpression`:return Ef(e.object);case`ObjectExpression`:return e.properties.every(e=>e.type!==`SpreadElement`&&Tf(e));default:return!1}}function Df(e){let t=e;for(;t.type===`MemberExpression`;){if(t.computed&&!Be(t.property))return!1;t=t.object}return!0}function Of(e){return e.type===`MethodDefinition`&&e.kind===`constructor`&&e.key.type===`Identifier`&&e.key.name===`constructor`}function kf(e){if(e.type!==`ExpressionStatement`)return!1;let{expression:t}=e;if(t.type!==`AssignmentExpression`)return!1;let{left:n}=t;if(n.type!==`MemberExpression`||n.object.type!==`ThisExpression`)return!1;let{property:r}=n;return(r.type===`Identifier`||Be(r))&&Ef(t.right)&&Df(n)}const Af=t({create(e){let[t=`always`]=e.options;if(t===`never`)return{PropertyDefinition(t){t.static||e.report({messageId:`unexpectedClassProperty`,node:t})}};function n(t){for(let n of t.body.body)if(!(!Of(n)||n.value.body===null))for(let t of n.value.body.body)kf(t)&&e.report({messageId:`unexpectedAssignment`,node:t.expression})}return{ClassDeclaration(e){n(e)},ClassExpression(e){n(e)}}},meta:{docs:{description:`Prefer class properties to assignment of literals in constructors.`},messages:{unexpectedAssignment:`Constructor assigns a literal value to this.property. Literals are static and known at class definition time. Move to a class property declaration: propertyName = value; at class level. This clarifies intent and reduces constructor complexity.`,unexpectedClassProperty:`Class property declarations are disabled by rule configuration (mode: 'never'). Move initialization into the constructor: this.propertyName = value; inside constructor().`},schema:[{enum:[`always`,`never`],type:`string`}],type:`suggestion`}});function jf(e){if(!G(e.scope))return!1;for(let t of e.defs){if(t.type!==`Variable`)continue;let e=t.node;if(e.type!==`VariableDeclarator`)continue;let n=e.parent;if(n.type===`VariableDeclaration`&&n.kind===`const`)return!0}return!1}function Mf(e,t){let n=E(e.getScope(t),t.name);return n===void 0?!1:ds(n)||jf(n)}function Nf(e,t){let n=E(e.getScope(t),t.name);return n===void 0?!1:ds(n)||G(n.scope)}function Pf(e,t){let n=t;for(;n.type===`MemberExpression`;){if(n.computed)return!1;n=w(n.object)}return n.type===`Identifier`&&Nf(e,n)}function Ff(e,t){let n=w(t);switch(n.type){case`Identifier`:return Mf(e,n);case`Literal`:return!0;case`MemberExpression`:return Pf(e,n);case`TemplateLiteral`:return n.expressions.length===0;case`UnaryExpression`:return n.operator===`-`&&w(n.argument).type===`Literal`;default:return!1}}function If(e,t){for(let n of t.properties)if(n.type!==`Property`||n.kind!==`init`||n.computed||!Ff(e,n.value))return!1;return!0}function Lf(e,t){if(t.id.type!==`ArrayPattern`||t.init?.type!==`CallExpression`||L(t.init)!==`useReducer`)return;let n=t.id.elements[1];if(n!=null&&n.type===`Identifier`)return E(e.getScope(n),n.name)}function Rf(e){let t=e;for(;t!==void 0;){if(t.type===`Program`)return t;t=t.parent}}function zf(e,t,n,r,i){let a=`const ${r} = ${t.getText(n)};`,{body:o}=i,s;for(let e of o){if(e.type===`ImportDeclaration`){s=e;continue}break}if(s!==void 0)return e.insertTextAfter(s,`\n\n${a}`);let[c]=o;return c===void 0?e.insertTextAfterRange([i.range[0],i.range[1]],a):e.insertTextBefore(c,`${a}\n\n`)}const Bf=t({create(e){let t=new Set,{sourceCode:n}=e,r=0;return{CallExpression(i){if(i.callee.type!==`Identifier`)return;let a=E(n.getScope(i.callee),i.callee.name);if(a===void 0||!t.has(a))return;let[o]=i.arguments;if(o===void 0||o.type===`SpreadElement`)return;let s=w(o);if(s.type!==`ObjectExpression`||!If(n,s))return;let c=Rf(s);if(c===void 0)return;let l=`PREFER_CONSTANT_ACTION_${r}`;r+=1,e.report({messageId:`preferConstantDispatch`,node:s,suggest:[{desc:`Extract to module constant \`${l}\``,fix(e){return[zf(e,n,s,l,c),e.replaceText(s,l)]}}]})},VariableDeclarator(e){let r=Lf(n,e);r!==void 0&&t.add(r)}}},meta:{docs:{description:`Disallow inline useReducer action objects that could be module-level constants.`,recommended:!0},hasSuggestions:!0,messages:{preferConstantDispatch:`Move this inline useReducer action object to a module-level constant.`},schema:[],type:`suggestion`}}),Vf=new Set([`.js`,`.jsx`,`.ts`,`.tsx`]),Hf=new Set([`.git`,`.next`,`.turbo`,`__fixtures__`,`__mocks__`,`__tests__`,`coverage`,`dist`,`documentation`,`example`,`examples`,`fixture`,`fixtures`,`node_modules`,`opensrc`,`stories`,`story`,`test`,`tests`]),Uf=/\bexport\s+default\b/u,Wf=/\/index$/u,Gf=/\.(?:[cm]?jsx?|tsx?)$/u,Kf=new Map,qf=new Map,Jf=new Map,Yf=/[.*+?^${}()|[\]\\]/gu,Xf=String.raw`\$&`;function Zf(e){return e.replaceAll(Yf,Xf)}const Qf=new Map;function $f(e){return e.includes(`u`)||e.includes(`v`)?e:`${e}u`}function ep(e,t){let n=`${t}:${e}`,r=Qf.get(n);if(r!==void 0)return r;let i=new RegExp(e,$f(t));if(Qf.size>=64){let e=Qf.keys().next().value;e!==void 0&&Qf.delete(e)}return Qf.set(n,i),i}function tp(e){return e.replaceAll(`\\`,`/`)}function np(e){let t=qf.get(e);if(t!==void 0)return t;let n=f(e,`utf8`);return qf.set(e,n),n}function rp(e,t){let n=Zf(t);return ep(`\\bexport\\s+(?:const|function|class)\\s+${n}\\b`,`u`).test(e)||ep(`\\bexport\\s*\\{[^}]*\\b${n}\\b[^}]*\\}`,`u`).test(e)?`named`:Uf.test(e)&&ep(`\\b${n}\\b`,`u`).test(e)?`default`:void 0}function ip(e,t){for(let n of t)if(!ep(`\\b${Zf(n)}\\b`,`u`).test(e))return!1;return!0}function ap(e){let t=Jf.get(e);if(t!==void 0)return t;let n=e;for(;;){if(d(c(n,`package.json`))||d(c(n,`tsconfig.json`)))return Jf.set(e,n),n;let t=a(n);if(t===n){Jf.set(e,void 0);return}n=t}}function op(e){let t=Kf.get(e);if(t!==void 0)return t;let n=new Map;function r(e){for(let t of p(e,{withFileTypes:!0})){let a=t.name.toLowerCase();if(t.name.startsWith(`.`)&&t.name!==`.storybook`||Hf.has(a))continue;let s=c(e,t.name);if(t.isDirectory()){r(s);continue}let l=o(t.name);if(!Vf.has(l)||t.name.endsWith(`.d.ts`))continue;let u=i(t.name,l).toLowerCase(),d=n.get(u);d===void 0?n.set(u,[s]):d.push(s)}}r(e);let a=new Map;for(let[e,t]of n)a.set(e,t);return Kf.set(e,a),a}function sp(e,t){let n=tp(l(a(e),t));return n=n.replace(Gf,``),n=n.replace(Wf,``),n.startsWith(`.`)||(n=`./${n}`),n}function cp(e){let t=ap(a(e)),n=tp(t===void 0?e:l(t,e));for(let e of n.split(`/`))if(Hf.has(e.toLowerCase()))return!0;return!1}function lp(e,t){if(cp(e))return{importStyle:void 0,matches:!1};let n=o(e);if(!Vf.has(n)||e.endsWith(`.d.ts`))return{importStyle:void 0,matches:!1};let r=i(e,n).toLowerCase();if(!t.fileNames.map(e=>e.toLowerCase()).includes(r))return{importStyle:void 0,matches:!1};let a=np(e);if(!ep(`\\b${Zf(t.componentName)}\\b`,`u`).test(a)||t.markers!==void 0&&!ip(a,t.markers))return{importStyle:void 0,matches:!1};let s=rp(a,t.componentName);return s===void 0?{importStyle:void 0,matches:!1}:{importStyle:s,matches:!0}}function up(e,t,n){let r=e.source.value;if(!(y(r)&&r.startsWith(`.`))||t===``)return{importStyle:void 0,matches:!1};let i=Qs(r,t);return i.found?lp(i.path,n):{importStyle:void 0,matches:!1}}function dp(e,t,n,r){if(t.matches)for(let t of e.specifiers){if(t.type===`ImportDefaultSpecifier`){r.add(t.local.name);continue}if(t.type!==`ImportSpecifier`)continue;let{imported:e}=t;(e.type===`Identifier`?e.name:e.value)===n&&r.add(t.local.name)}}function fp(e,t){let n=ap(a(e));if(n===void 0)return{found:!1};let r=op(n),i=new Set;for(let e of t.fileNames)for(let t of r.get(e.toLowerCase())??[])i.add(t);let o=[...i].filter(e=>lp(e,t).matches);if(o.length!==1)return{found:!1};let[s]=o;if(s===void 0)return{found:!1};let c=lp(s,t);return{found:!0,importSource:sp(e,s),importStyle:c.importStyle,path:s}}const pp={componentName:`ContextStack`,fileNames:[`context-stack`],markers:[`providers`]},mp=new Set([`.jsx`,`.tsx`]);function hp(e){return e.openingElement.name.type===`JSXMemberExpression`&&e.openingElement.name.property.name===`Provider`}function gp(e){return e.children.filter(e=>e.type===`JSXText`?e.value.trim()!==``:e.type!==`JSXExpressionContainer`||e.expression.type!==`JSXEmptyExpression`)}function _p(e){let{parent:t}=e;if(t.type!==`JSXElement`||!hp(t))return!1;let n=gp(t);return n.length===1&&n[0]===e}function vp(e){if(!hp(e))return;let t=[e],n=e;for(;;){let e=gp(n);if(e.length!==1)break;let[r]=e;if(r?.type!==`JSXElement`||!hp(r))break;t.push(r),n=r}return t.length>1?t:void 0}function yp(e,t){let n=!1;for(let r of e.children){if(r===t){n=!0;continue}if(!(r.type===`JSXText`&&r.value.trim()===``))return!1}return n}function bp(e){let t=0;for(let n of e){let r=e[t+1];if(r===void 0){t+=1;continue}if(!yp(n,r))return!1;t+=1}return!0}function xp(e,t){let n=t.getText(e.openingElement);return e.openingElement.selfClosing?n:n.endsWith(`>`)?`${n.slice(0,-1)} />`:void 0}function Sp(e,t,n){let r=[];for(let e of t){let t=xp(e,n);if(t===void 0)return;r.push(t)}let i=t.at(-1);if(i===void 0||i.closingElement===null)return;let a=n.text.slice(i.openingElement.range[1],i.closingElement.range[0]);return`<${e} providers={[${r.join(`, `)}]}>${a}</${e}>`}const Cp=t({create(e){let{filename:t,sourceCode:n}=e,r=t===``?{found:!1}:fp(t,pp),i=new Set;return{ImportDeclaration(e){dp(e,up(e,t,pp),pp.componentName,i)},JSXElement(a){if(_p(a))return;let s=vp(a);if(s===void 0||i.size===0&&!r.found)return;let c=mp.has(o(t))&&i.size===1&&bp(s),[l]=i,u=c&&l!==void 0?Sp(l,s,n):void 0;if(u!==void 0){e.report({fix:e=>e.replaceText(a,u),messageId:`preferContextStack`,node:a});return}e.report({messageId:`preferContextStack`,node:a})}}},meta:{docs:{description:`Prefer a local ContextStack component over directly nesting multiple context providers.`},fixable:`code`,messages:{preferContextStack:"Use the local `ContextStack` component instead of nesting multiple context providers directly."},schema:[],type:`suggestion`}});function wp(e){return x(e)&&b(e.maximumStatements)?e.maximumStatements:1}function Tp(e){return e.type===`IfStatement`&&e.alternate===null}function Ep(e,t){return e.type===`ExpressionStatement`&&t===0||e.type===`BlockStatement`&&e.body.length>t}function Dp(e,t){if(e.body.length!==1)return!1;let[n]=e.body;return n===void 0||!Tp(n)?!1:Ep(n.consequent,t)}const Op=t({create(e){let t=wp(e.options[0]);function n(n){Dp(n,t)&&e.report({messageId:`preferEarlyReturn`,node:n})}return{ArrowFunctionExpression(e){e.body.type===`BlockStatement`&&n(e.body)},FunctionDeclaration(e){e.body!==null&&n(e.body)},FunctionExpression(e){e.body!==null&&n(e.body)}}},meta:{docs:{description:`Prefer early returns over full-body conditional wrapping.`,recommended:!0},messages:{preferEarlyReturn:`Function body is wrapped in a single conditional without an else branch. This increases nesting depth and cognitive load. Invert the condition and return early: if (!condition) return; then place the main logic at the top level.`},schema:[{additionalProperties:!1,properties:{maximumStatements:{default:1,minimum:0,type:`number`}},type:`object`}],type:`suggestion`}});function kp(e){return e.type===`Identifier`&&(e.name===`it`||e.name===`test`)}function Ap(e){if(e.callee.type!==`MemberExpression`||!kp(e.callee.object))return!1;let t=T(e.callee);return t===`only`||t===`skip`}function jp(e){return e.callee.type!==`MemberExpression`||!kp(e.callee.object)?!1:T(e.callee)===`each`}function Mp(e){let t=e.arguments.at(-1);return t===void 0||!He(t)?void 0:t}function Np(e){return e.type===`DoWhileStatement`||e.type===`ForInStatement`||e.type===`ForOfStatement`||e.type===`ForStatement`||e.type===`WhileStatement`}function Pp(e,t){return e.type===t.type&&e.range[0]===t.range[0]&&e.range[1]===t.range[1]}function Fp(e,t){return{hasCallback:e.hasCallback||t.hasCallback,hasIndeterminate:e.hasIndeterminate||t.hasIndeterminate,hasLoop:e.hasLoop||t.hasLoop}}function Ip(e,t){if(Pp(e,t))return{hasCallback:!1,hasIndeterminate:!1,hasLoop:!1};let n={hasCallback:He(e),hasIndeterminate:He(e)||Np(e)||e.type===`ConditionalExpression`||e.type===`IfStatement`||e.type===`SwitchCase`||e.type===`TryStatement`&&e.handler!==null,hasLoop:Np(e)};return e.parent===null?n:Fp(n,Ip(e.parent,t))}function Lp(e){return e.callee.type===`Identifier`?kp(e.callee):Ap(e)?!0:e.callee.type===`CallExpression`&&jp(e.callee)}function Rp(e){return Lp(e)?Mp(e):void 0}function zp({callee:e}){return e.type!==`MemberExpression`||e.object.type!==`Identifier`||e.object.name!==`expect`?!1:T(e)===`assertions`}function Bp({callee:e}){return e.type!==`MemberExpression`||e.object.type!==`Identifier`||e.object.name!==`expect`?!1:T(e)===`hasAssertions`}function Vp(e,t=[]){return e.callee.type===`Identifier`&&(e.callee.name===`expect`||t.includes(e.callee.name))}function Hp(e,t=[]){let n=0,r=!1,i=!1,a=!1,o=0;return Rr(e,s=>{if(s.type!==`CallExpression`||!Vp(s,t))return;let c=Ip(s.parent,e);if(c.hasLoop&&(i=!0),c.hasCallback&&(r=!0),c.hasIndeterminate){a=!0,o+=1;return}n+=1}),{deterministic:n,hasExpectInCallback:r,hasExpectInLoop:i,hasIndeterminate:a,indeterminate:o}}function Up(e){return Array.isArray(e)?e.filter(y):[]}function Wp(e){return x(e)?{additionalAssertionFunctions:Up(e.additionalAssertionFunctions),additionalExpectCallNames:Up(e.additionalExpectCallNames),onlyFunctionsWithAsyncKeyword:e.onlyFunctionsWithAsyncKeyword===!0,onlyFunctionsWithExpectInCallback:e.onlyFunctionsWithExpectInCallback===!0,onlyFunctionsWithExpectInLoop:e.onlyFunctionsWithExpectInLoop===!0}:{additionalAssertionFunctions:[],additionalExpectCallNames:[],onlyFunctionsWithAsyncKeyword:!1,onlyFunctionsWithExpectInCallback:!1,onlyFunctionsWithExpectInLoop:!1}}function Gp(e){return[...new Set([...e.additionalExpectCallNames,...e.additionalAssertionFunctions])]}function Kp(e){return e.onlyFunctionsWithAsyncKeyword||e.onlyFunctionsWithExpectInCallback||e.onlyFunctionsWithExpectInLoop}function qp(e){return e.body??void 0}function Jp(e){let t=qp(e);return t?.type===`BlockStatement`?t:void 0}function Yp(e,t,n,r,i,a){return n+r===0?!1:!Kp(t)||t.onlyFunctionsWithAsyncKeyword&&e.async||t.onlyFunctionsWithExpectInCallback&&i||t.onlyFunctionsWithExpectInLoop&&a}function Xp(e){let t=Jp(e);if(t===void 0)return;let[n]=t.body;if(!(n?.type!==`ExpressionStatement`||n.expression.type!==`CallExpression`))return n.expression}function Zp(e,t,n,r,i){let a=Jp(t);if(a===void 0){e.report({messageId:`haveExpectAssertions`,node:n});return}let[o]=a.body;if(i){e.report({messageId:`haveExpectAssertions`,node:n,suggest:[{fix(e){return o===void 0?e.insertTextAfterRange([a.range[0],a.range[0]+1],` expect.hasAssertions();`):e.insertTextBefore(o,`expect.hasAssertions();
|
|
10
|
-
`)},messageId:`suggestAddingHasAssertions`}]});return}e.report({messageId:`haveExpectAssertions`,node:n,suggest:[{data:{count:String(r)},fix(e){return o===void 0?e.insertTextAfterRange([a.range[0],a.range[0]+1],` expect.assertions(${r});`):e.insertTextBefore(o,`expect.assertions(${r});\n`)},messageId:`suggestAddingAssertions`}]})}function Qp(e,t,n,r){if(Bp(t)){t.arguments.length>0&&e.report({messageId:`hasAssertionsTakesNoArguments`,node:t});return}if(!zp(t))return;if(t.arguments.length!==1){e.report({messageId:`assertionsRequiresOneArgument`,node:t});return}let[i]=t.arguments;if(i===void 0||i.type===`SpreadElement`||!We(i)){e.report({messageId:`assertionsRequiresNumberArgument`,node:t});return}!r&&n>0&&i.value!==n&&e.report({data:{actual:String(n),expected:String(i.value)},messageId:`wrongAssertionCount`,node:t})}const $p=t({create(e){let t=Wp(e.options[0]);return{CallExpression(n){if(!Lp(n))return;let r=Rp(n);if(r===void 0)return;let i=qp(r);if(i===void 0)return;let{deterministic:a,indeterminate:o,hasIndeterminate:s,hasExpectInCallback:c,hasExpectInLoop:l}=Hp(i,Gp(t));if(!Yp(r,t,a,o,c,l))return;let u=Xp(r);if(u!==void 0&&(zp(u)||Bp(u))){if(Qp(e,u,a,s),Bp(u)&&u.arguments.length===0&&a>0&&!s){let[t]=Jp(r)?.body??[];t!==void 0&&e.report({data:{count:String(a)},fix(e){return e.replaceText(t,`expect.assertions(${a});`)},messageId:`preferAssertionsCount`,node:u})}return}Zp(e,r,n,a,s)}}},meta:{docs:{description:`Enforce expect assertion guards in Jest tests and prefer expect.assertions(n) over expect.hasAssertions() when the count is known.`,recommended:!0},fixable:`code`,hasSuggestions:!0,messages:{assertionsRequiresNumberArgument:`This argument should be a number`,assertionsRequiresOneArgument:"`expect.assertions` expects a single argument of type number",hasAssertionsTakesNoArguments:"`expect.hasAssertions` expects no arguments",haveExpectAssertions:"Every test should have either `expect.assertions(<number of assertions>)` or `expect.hasAssertions()` as its first expression",preferAssertionsCount:"Use `expect.assertions({{count}})` instead of `expect.hasAssertions()` when the count is known",suggestAddingAssertions:"Add `expect.assertions({{count}})`",suggestAddingHasAssertions:"Add `expect.hasAssertions()`",wrongAssertionCount:`Expected {{expected}} assertions, but test has {{actual}} expect calls`},schema:[{additionalProperties:!1,properties:{additionalAssertionFunctions:{items:{type:`string`},type:`array`},additionalExpectCallNames:{items:{type:`string`},type:`array`},onlyFunctionsWithAsyncKeyword:{type:`boolean`},onlyFunctionsWithExpectInCallback:{type:`boolean`},onlyFunctionsWithExpectInLoop:{type:`boolean`}},type:`object`}],type:`suggestion`}});function em(e){if(!(x(e)&&`additionalHoistableComponents`in e))return new Set;let{additionalHoistableComponents:t}=e;return t===void 0||!S(t)?new Set:new Set(t)}function tm(e){if(!(x(e)&&`additionalStaticFactories`in e))return new Set;let{additionalStaticFactories:t}=e;return t===void 0||!S(t)?new Set:new Set(t)}function nm(e,t){let n=t,{parent:r}=n;for(;r.type===`ParenthesizedExpression`;)n=r,{parent:r}=n;if(r.type!==`VariableDeclarator`||r.id.type!==`Identifier`||r.init!==n)return!1;let i=E(e.sourceCode.getScope(n),r.id.name);return i!==void 0&&G(i.scope)}function rm(e,t,n,r){if(t.name.type===`JSXIdentifier`&&(t.name.name===`Event`||t.name.name===`Change`))return!1;let{value:i}=t;return i===null||i.type===`Literal`?!0:i.type!==`JSXExpressionContainer`||i.expression.type===`JSXEmptyExpression`||gs(e.sourceCode,i.expression,new Set)?!1:K(e.sourceCode,i.expression,n,r)}function im(e,t,n,r){for(let i of t.attributes)if(i.type===`JSXSpreadAttribute`||!rm(e,i,n,r))return!1;return!0}function am(e,t,n,r,i){if(t.type===`JSXText`)return t.value.trim()===``;if(t.type===`JSXElement`)return sm(e,t,n,r,i);if(t.type!==`JSXExpressionContainer`)return!1;if(t.expression.type===`JSXEmptyExpression`)return!0;if(t.expression.type===`Identifier`){let a=ms(e.sourceCode,t.expression);if(a?.type===`JSXElement`)return sm(e,a,n,r,i)}return K(e.sourceCode,t.expression,n,i)}function om(e,t,n,r,i){for(let a of t.children)if(!am(e,a,n,r,i))return!1;return!0}function sm(e,t,n,r,i){return ho(t.openingElement.name,r)&&im(e,t.openingElement,n,i)&&om(e,t,n,r,i)}function cm(e,t,n,r){let{parent:i}=t;for(;i.type!==`Program`;){if(i.type===`JSXElement`&&sm(e,i,new Set,n,r))return!0;({parent:i}=i)}return!1}function lm(e,t){let n=t,{parent:r}=n;for(;r.type!==`Program`;){if(r.type===`VariableDeclarator`&&r.id.type===`Identifier`&&r.init===n){let t=E(e.sourceCode.getScope(n),r.id.name);if(t!==void 0&&G(t.scope))return!0}(r.type===`JSXElement`||r.type===`JSXFragment`||r.type===`ParenthesizedExpression`)&&(n=r),{parent:r}=r}return!1}function um(e,t){let n=e.sourceCode.getText(t);e.report({data:{elementText:n},messageId:`hoistableJsxElement`,node:t})}const dm=t({create(e){let[t]=e.options,n=em(t),r=tm(t),i={staticGlobalFactories:new Set([...ss,...r])};return{JSXElement(t){sm(e,t,new Set,n,i)&&(nm(e,t)||cm(e,t,n,i)||lm(e,t)||um(e,t))}}},meta:{docs:{description:`Prefer extracting static Roblox JSX intrinsic elements to module-level constants.`},messages:{hoistableJsxElement:"Extract `{{elementText}}` to a shared module-level const — this Roblox JSX element is fully static and identical elements should reuse the same const."},schema:[{additionalProperties:!1,properties:{additionalHoistableComponents:{description:`Additional component names that can be hoisted to module-level constants.`,items:{type:`string`},type:`array`},additionalStaticFactories:{description:`Additional factory functions whose return values are considered static.`,items:{type:`string`},type:`array`}},type:`object`}],type:`suggestion`}}),fm={staticGlobalFactories:new Set(ss)};function pm(e){let{value:t}=e;if(t?.type===`JSXExpressionContainer`&&t.expression.type!==`JSXEmptyExpression`)return t.expression}function mm(e,t){let n=t;for(;;){let{parent:r}=n;if(r===null)return!1;if(r.type===`VariableDeclarator`)return gm(e,t,r,n);let i=hm(r);if(i===void 0)return!1;n=i}}function hm(e){if(e.type===`JSXElement`||e.type===`JSXFragment`||e.type===`JSXExpressionContainer`||e.type===`ParenthesizedExpression`||e.type===`ArrayExpression`)return e}function gm(e,t,n,r){if(n.id.type!==`Identifier`||n.init!==r)return!1;let i=E(e.sourceCode.getScope(t),n.id.name);return i!==void 0&&G(i.scope)}function _m(e,t){let n=e.sourceCode.getText(t);e.report({data:{objectText:n},messageId:`hoistableObjectProp`,node:t})}function vm(e,t){if(t.properties.some(e=>e.type===`Property`&&e.computed))return;let n=new Set;if(K(e.sourceCode,t,n,fm)){_m(e,t);return}for(let n of t.properties){if(n.type!==`Property`)continue;let t=w(n.value);t.type===`ObjectExpression`&&vm(e,t)}}const ym=t({create(e){return{JSXAttribute(t){let n=pm(t);if(n===void 0)return;let r=w(n);if(r.type!==`ObjectExpression`)return;let i=t.parent;if(i.type!==`JSXOpeningElement`)return;let a=i.parent;a.type===`JSXElement`&&mm(e,a)||vm(e,r)}}},meta:{docs:{description:`Prefer extracting inline JSX object props to module-level constants when the entire object is statically hoistable.`},messages:{hoistableObjectProp:"Extract `{{objectText}}` to a module-level const — this inline JSX prop object is fully static and causes unnecessary reference churn on every render."},schema:[],type:`suggestion`}});function bm({type:e}){return e===`Identifier`||e===`MemberExpression`||e===`CallExpression`||e===`NewExpression`||e===`ThisExpression`}function xm(e){let t=e;for(;t.type===`ParenthesizedExpression`;)t=t.expression;return t}const Sm=t({createOnce(e){return{CallExpression(t){if(t.optional)return;let n=w(t.callee);if(n.type!==`MemberExpression`||n.optional||T(n)!==`floor`)return;let r=w(n.object);if(r.type!==`Identifier`||r.name!==`math`||ie(e.sourceCode,r,`math`)||t.arguments.length!==1)return;let[i]=t.arguments;if(i===void 0||i.type===`SpreadElement`)return;let a=w(i);if(a.type!==`BinaryExpression`||a.operator!==`/`)return;let o=w(a.left),s=e.sourceCode.getText(xm(a.left)),c=bm(o)?s:`(${s})`,l=e.sourceCode.getText(xm(a.right));e.report({fix:e=>e.replaceText(t,`${c}.idiv(${l})`),messageId:`useIdiv`,node:t})}}},meta:{docs:{description:`Prefer .idiv() for integer division instead of math.floor(x / y).`,recommended:!0},fixable:`code`,messages:{useIdiv:`Use .idiv() instead of math.floor(x / y) for integer division.`},schema:[],type:`suggestion`}}),Cm={componentName:`Portal`,fileNames:[`portal`],markers:[`target`]},wm=new Set([`@rbxts/react-roblox`,`react-dom`]),Tm=new Set([`.jsx`,`.tsx`]);function Em(e){return e.type===`ImportBinding`}function Dm(e){return e.parent?.type===`ImportDeclaration`?e.parent:void 0}function Om(e){if(e===void 0)return!1;for(let t of e.defs){if(!Em(t)||t.node.type!==`ImportSpecifier`)continue;let e=Dm(t.node);if(e===void 0||!wm.has(e.source.value))continue;let{imported:n}=t.node;if(n.type===`Identifier`&&n.name===`createPortal`)return!0}return!1}function km(e){if(e===void 0)return!1;for(let t of e.defs){if(!Em(t)||t.node.type!==`ImportNamespaceSpecifier`)continue;let e=Dm(t.node);if(e!==void 0&&wm.has(e.source.value))return!0}return!1}function Am(e,{callee:t}){return t.type===`Identifier`?Om(E(e.getScope(t),t.name)):t.type!==`MemberExpression`||t.computed||t.property.type!==`Identifier`||t.property.name!==`createPortal`||t.object.type!==`Identifier`?!1:km(E(e.getScope(t.object),t.object.name))}function jm(e,t){return e.type===`JSXElement`||e.type===`JSXFragment`?t.getText(e):`{${t.getText(e)}}`}function Mm(e,t,n){if(t.arguments.length!==2)return;let[r,i]=t.arguments;if(r===void 0||i===void 0)return;let a=jm(r,n);return`<${e} target={${n.getText(i)}}>${a}</${e}>`}const Nm=t({create(e){let{filename:t,sourceCode:n}=e,r=t===``?{found:!1}:fp(t,Cm),i=new Set;return{CallExpression(a){if(!Am(n,a)||a.arguments.length!==2||!(i.size>0||r.found))return;let s=Tm.has(o(t))&&i.size===1,[c]=i,l=s&&c!==void 0?Mm(c,a,n):void 0;if(l!==void 0){e.report({fix:e=>e.replaceText(a,l),messageId:`preferPortalComponent`,node:a});return}e.report({messageId:`preferPortalComponent`,node:a})},ImportDeclaration(e){dp(e,up(e,t,Cm),Cm.componentName,i)}}},meta:{docs:{description:`Prefer a local Portal component over direct createPortal calls when the project already defines one.`},fixable:`code`,messages:{preferPortalComponent:"Use the local `Portal` component instead of calling `createPortal` directly."},schema:[],type:`suggestion`}});function Pm(e){return e===void 0?!1:e.type===`TSTypeAnnotation`?Pm(e.typeAnnotation):e.type===`TSNumberKeyword`||e.type===`TSTypeReference`&&e.typeName.type===`Identifier`&&e.typeName.name===`Number`}function Fm(e){return e.type!==`PrivateIdentifier`}function Im(e){let t=w(e);return t.type===`Literal`&&!b(t.value)}function Lm(e){if(e.type===`Parameter`){let t=e.name;if(t.type===`Identifier`&&t.typeAnnotation!==void 0&&t.typeAnnotation!==null)return!Pm(t.typeAnnotation);let{parent:n}=t;return n?.type===`AssignmentPattern`&&Im(n.right)}if(e.type!==`Variable`||e.node.type!==`VariableDeclarator`)return!1;let{id:t,init:n}=e.node;return t.type===`Identifier`&&t.typeAnnotation!==void 0&&t.typeAnnotation!==null?!Pm(t.typeAnnotation):n!=null&&Im(n)}function Rm(e,t){let n=E(e.getScope(t),t.name);if(n===void 0)return!1;for(let e of n.defs)if(Lm(e))return!0;return!1}function zm(e,t){if(t.type===`ParenthesizedExpression`)return zm(e,t.expression);if(t.type===`TSAsExpression`||t.type===`TSTypeAssertion`)return!Pm(t.typeAnnotation);if(Im(t))return!0;let n=w(t);return n.type===`Identifier`&&Rm(e,n)}function Bm(e,t){return e.getText(w(t))}function Vm(e){let t=e;for(;t.type===`ParenthesizedExpression`;)t=t.expression;return t}function Hm(e,t){let n=Vm(t);return n.type===`SequenceExpression`?`(${e.getText(n)})`:e.getText(n)}function Um(e,t){if(t.test.type!==`BinaryExpression`)return;let{alternate:n,consequent:r,test:i}=t,{left:a,operator:o,right:s}=i;if(!(Fm(a)&&Fm(s))||!(I(a)&&I(s))||zm(e,a)||zm(e,s))return;let c=Bm(e,a),l=Bm(e,s),u=Bm(e,n),d=Bm(e,r),f=o===`>`||o===`>=`,p=o===`<`||o===`<=`;if(f&&c===u&&l===d||p&&c===d&&l===u)return`min`;if(f&&c===d&&l===u||p&&c===u&&l===d)return`max`}const Wm=t({create(e){let{sourceCode:t}=e;return{ConditionalExpression(n){if(ie(t,n,`math`))return;let r=Um(t,n);if(r===void 0||n.test.type!==`BinaryExpression`)return;let{left:i,right:a}=n.test;if(!(Fm(i)&&Fm(a)))return;let o=Hm(t,i),s=Hm(t,a);e.report({fix(e){return e.replaceText(n,`math.${r}(${o}, ${s})`)},messageId:`preferMathMethod`,node:n})}}},meta:{docs:{description:`Prefer math.min() and math.max() over simple clamp-like ternaries.`,recommended:!0},fixable:`code`,messages:{preferMathMethod:"Use `math.min()` or `math.max()` instead of this ternary comparison."},schema:[],type:`suggestion`}}),Gm=new Set([`ReadonlyRecord`,`Record`]);function Km(e){return e.type===`TSTypeReference`&&e.typeName.type===`Identifier`&&Gm.has(e.typeName.name)}function qm(e){if(e.id.type!==`Identifier`)return;let t=ce(e.id);if(t===void 0)return;let{typeAnnotation:n}=t;if(!Km(n))return;let{typeArguments:r}=n;if(r?.params.length!==2)return;let[i,a]=r.params;if(!(i===void 0||a===void 0)&&a.type===`TSLiteralType`&&!(a.literal.type!==`Literal`||a.literal.value!==!0))return i}function Jm(e){if(e?.type!==`ObjectExpression`)return!1;for(let t of e.properties)if(t.type!==`Property`||t.value.type!==`Literal`||t.value.value!==!0)return!1;return!0}const Ym=t({create(e){let{sourceCode:t}=e;return{VariableDeclarator(n){if(n.id.type!==`Identifier`)return;let r=n.id.name;if(!Jm(n.init))return;let i=qm(n);if(i===void 0)return;let a=t.getText(i);e.report({data:{enumType:a},fix(e){return e.replaceTextRange([n.range[0],n.range[1]],`${r} = Modding.inspect<Record<${a}, true>>()`)},messageId:`preferModdingInspect`,node:n.id})}}},meta:{docs:{description:`Prefer Modding.inspect over manually enumerating every enum member in a Record<Enum, true>.`,recommended:!0},fixable:`code`,messages:{preferModdingInspect:`Replace manual {{enumType}} enumeration with Modding.inspect<Record<{{enumType}}, true>>().`},schema:[],type:`suggestion`}}),Xm=/^[A-Z][A-Z0-9_]*$/u;function Zm(e){let{type:t}=e;if(t===`module`||t===`global`)return!0;if(e.upper?.type===`global`){let{block:t}=e.upper;if(t.type===`Program`&&t.sourceType===`script`)return!0}return!1}const Qm=t({create(e){let t=!1;return{VariableDeclaration(e){t=e.kind===`const`},"VariableDeclaration:exit"(){t=!1},VariableDeclarator(n){let{id:r}=n;if(!(r.type!==`Identifier`||!Xm.test(r.name))){if(!t){e.report({messageId:`mustUseConst`,node:n});return}Zm(e.sourceCode.getScope(n))||e.report({messageId:`mustBeModuleScope`,node:n})}}}},meta:{docs:{description:"Prefer that screaming snake case variables always be defined using `const`, and always appear at module scope."},messages:{mustBeModuleScope:`You must place screaming snake case at module scope. If this is not meant to be a module-scoped variable, use camelcase instead.`,mustUseConst:"You must use `const` when defining screaming snake case variables. If this is not a constant, use camelcase instead."},schema:[],type:`suggestion`}}),$m=new Set([`end`,`loc`,`parent`,`range`,`start`]),eh=new Set([`.jsx`,`.tsx`]),th=new Set([`PaddingBottom`,`PaddingLeft`,`PaddingRight`,`PaddingTop`]),nh={componentName:`DirectionalPadding`,fileNames:[`directional-padding`],markers:[`horizontal`,`vertical`]},rh={componentName:`EqualPadding`,fileNames:[`equal-padding`],markers:[`padding`]};function ih(e,t){return Object.is(e,t)?!0:Array.isArray(e)?Array.isArray(t)&&ah(e,t):Array.isArray(t)||typeof e!=`object`||typeof t!=`object`||e===null||t===null||!(x(e)&&x(t))?!1:oh(e,t)}function ah(e,t){if(e.length!==t.length)return!1;let n=0;for(let r of e)if(!ih(r,t[n++]))return!1;return!0}function oh(e,t){let n=Object.entries(e).filter(([e])=>!$m.has(e)),r=Object.entries(t).filter(([e])=>!$m.has(e));if(n.length!==r.length)return!1;for(let[e,r]of n)if(!(e in t)||!ih(r,t[e]))return!1;return!0}function sh(e){for(let t of e.children)if(!(t.type===`JSXText`&&t.value.trim()===``)&&!(t.type===`JSXExpressionContainer`&&t.expression.type===`JSXEmptyExpression`))return!0;return!1}function ch({value:e}){if(e!==null){if(e.type===`JSXExpressionContainer`)switch(e.expression.type){case`JSXElement`:case`JSXEmptyExpression`:case`JSXFragment`:return;default:return w(e.expression)}return e.type===`Literal`?e:void 0}}function lh(e){let t=new Map;for(let n of e.attributes){if(n.type===`JSXSpreadAttribute`||n.name.type!==`JSXIdentifier`)return;let e=n.name.name;if(!th.has(e)||t.has(e)||n.value===null)return;t.set(e,n)}let n=t.get(`PaddingBottom`),r=t.get(`PaddingLeft`),i=t.get(`PaddingRight`),a=t.get(`PaddingTop`);if(!(n===void 0||r===void 0||i===void 0||a===void 0))return{paddingBottom:n,paddingLeft:r,paddingRight:i,paddingTop:a}}function uh({value:e},t){if(e!==null)switch(e.type){case`JSXExpressionContainer`:case`Literal`:return t.getText(e);default:return}}function dh(e,t,n,r){let i=uh(n.paddingTop,r);if(i===void 0)return;if(t===`preferEqualPadding`)return`<${e} padding=${i} />`;let a=uh(n.paddingLeft,r);if(a!==void 0)return`<${e} horizontal=${i} vertical=${a} />`}function fh(e){let t=ch(e.paddingBottom),n=ch(e.paddingLeft),r=ch(e.paddingRight),i=ch(e.paddingTop);if(t===void 0||n===void 0||r===void 0||i===void 0)return;if(ih(i,t)&&ih(i,n)&&ih(i,r))return`preferEqualPadding`;let a=ih(i,t),o=ih(n,r);return a&&o?`preferDirectionalPadding`:void 0}function ph(e){return e.type===`JSXIdentifier`}const mh=t({create(e){let{filename:t}=e,n=t===``?{found:!1}:fp(t,nh),r=t===``?{found:!1}:fp(t,rh),i=new Set,a=new Set;return{ImportDeclaration(e){let n=up(e,t,nh),r=up(e,t,rh);dp(e,n,nh.componentName,i),dp(e,r,rh.componentName,a)},JSXElement(s){if(sh(s))return;let{openingElement:c}=s;if(!ph(c.name)||c.name.name!==`uipadding`)return;let l=lh(c);if(l===void 0)return;let u=fh(l);if(u===void 0)return;let d=u===`preferEqualPadding`?a:i,f=u===`preferEqualPadding`?r:n;if(d.size===0&&!f.found)return;let p=eh.has(o(t))&&d.size===1,[m]=[...d],h=p&&m!==void 0?dh(m,u,l,e.sourceCode):void 0;if(h!==void 0){e.report({fix(e){return e.replaceText(s,h)},messageId:u,node:s});return}e.report({messageId:u,node:s})}}},meta:{docs:{description:`Prefer local EqualPadding and DirectionalPadding components over matching <uipadding /> declarations.`},fixable:`code`,messages:{preferDirectionalPadding:"Use the local `DirectionalPadding` component when horizontal and vertical padding already match.",preferEqualPadding:"Use the local `EqualPadding` component when all four padding values already match."},schema:[],type:`suggestion`}}),hh=/[A-Z]+(?![a-z])|[A-Z]?[a-z]+|\d+/gu,gh=/^[^A-Za-z0-9]+|[^A-Za-z0-9]+$/gu,_h=/(?<first>[a-z0-9])(?<second>[A-Z])/gu,vh=/[_\-\s]+/gu;function yh(e){return e.replaceAll(gh,``).replaceAll(_h,`$<first> $<second>`).replaceAll(vh,` `).match(hh)??[]}function bh(e){let t=yh(e),n=``;for(let e of t)e.length!==0&&(n+=`${e.slice(0,1).toUpperCase()}${e.slice(1).toLowerCase()}`);return n}const xh=/^\d/u;function Sh(e){if(e.id.type===`Identifier`)return e.id.name;if(!(e.id.type!==`Literal`||!y(e.id.value)))return xh.test(e.id.value)?void 0:e.id.value}const Ch=t({createOnce(e){return{TSEnumDeclaration(t){let n=t.id.name;bh(n)!==n&&e.report({data:{identifier:n},messageId:`notPascalCase`,node:t.id})},TSEnumMember(t){let n=Sh(t);n===void 0||bh(n)===n||e.report({data:{identifier:n},messageId:`notPascalCase`,node:t.id})}}},meta:{docs:{description:`Enforce Pascal case when naming enums.`,recommended:!0},messages:{notPascalCase:`Enum '{{ identifier }}' uses non-standard casing. TypeScript convention requires PascalCase for enum names and members to distinguish them from variables (camelCase) and constants (UPPER_CASE). Rename to PascalCase: capitalize first letter of each word, no underscores.`},schema:[],type:`suggestion`}});function wh(e,t){return We(e)&&e.value===t}function Th(e){if(e===`ColorSequence`)return`ColorSequenceKeypoint`;if(e===`NumberSequence`)return`NumberSequenceKeypoint`}function Eh(e,t,n){if(e.type!==`NewExpression`||!Ie(e,t)||e.arguments.length!==2)return;let[r,i]=e.arguments;if(!(r===void 0||r.type===`SpreadElement`)&&!(i===void 0||i.type===`SpreadElement`))return wh(r,n)?i:void 0}function Dh(e,t,n){if(t.arguments.length!==2)return;let[r,i]=t.arguments;if(r===void 0||r.type===`SpreadElement`||i===void 0||i.type===`SpreadElement`)return;let a=e.sourceCode.getText(r);if(a===e.sourceCode.getText(i))return{messageId:`preferSingleOverload`,replacement:`new ${n}(${a})`}}function Oh(e,t,n,r){if(t.arguments.length!==1)return;let[i]=t.arguments;if(i===void 0||i.type===`SpreadElement`||i.type!==`ArrayExpression`||i.elements.length!==2)return;let[a,o]=i.elements;if(a===void 0||o===void 0||a===null||o===null||a.type===`SpreadElement`||o.type===`SpreadElement`)return;let s=Eh(a,r,0),c=Eh(o,r,1);if(s===void 0||c===void 0)return;let l=e.sourceCode.getText(s),u=e.sourceCode.getText(c);return{messageId:l===u?`preferSingleOverload`:`preferTwoPointOverload`,replacement:l===u?`new ${n}(${l})`:`new ${n}(${l}, ${u})`}}const kh=t({createOnce(e){return{NewExpression(t){if(t.callee.type!==`Identifier`)return;let n=t.callee.name,r=Th(n);if(r===void 0)return;let i=Dh(e,t,n)??Oh(e,t,n,r);i!==void 0&&e.report({fix:e=>e.replaceText(t,i.replacement),messageId:i.messageId,node:t})}}},meta:{docs:{description:`Prefer direct ColorSequence and NumberSequence overloads over two-keypoint arrays.`,recommended:!0},fixable:`code`,messages:{preferSingleOverload:`Use the single-value sequence overload instead of two identical keypoints.`,preferTwoPointOverload:`Use the two-value sequence overload instead of constructing a two-keypoint array.`},schema:[],type:`suggestion`}});function Ah(e){return e.length===2}function jh(e){return e.type===`MemberExpression`&&!e.computed}function Mh(e,t){if(e.type!==`CallExpression`)return!1;let{callee:n}=e;if(!jh(n)||n.property.name!==t||!Ah(e.arguments))return!1;let[r,i]=e.arguments;return r.type!==`SpreadElement`&&i.type!==`SpreadElement`}function Nh(e,t){if(e.declarations.length!==1)return;let[n]=e.declarations;if(n===void 0)return;let{id:r,init:i}=n;if(r.type!==`Identifier`||i===null||!Mh(i,t))return;let{callee:a}=i;if(!jh(a))return;let[o,s]=i.arguments;if(!(o===void 0||s===void 0||o.type===`SpreadElement`||s.type===`SpreadElement`))return{componentNode:s,entityNode:o,node:i,queryType:t,variableDeclaration:e,variableDeclarator:n,variableName:r.name,worldNode:a.object}}const Ph=new Set([`ConditionalExpression`,`DoWhileStatement`,`ForStatement`,`IfStatement`,`WhileStatement`]);function Fh(e){return x(e)&&`parent`in e}function Ih(e){return x(e)&&y(e.type)?e.type:void 0}function Lh(e){return x(e)&&y(e.operator)?e.operator:void 0}function Rh(e){return Ih(e)===`LogicalExpression`&&Lh(e)===`&&`}function zh(e){return x(e)&&e.type===`Identifier`&&y(e.name)}function Bh(e){let{parent:t}=e;if(Rh(t))return!0;let n=Ih(t);if(n===void 0||!Ph.has(n))return!1;let r=e;for(;r!==void 0&&r!==t&&Fh(r);){let e=r.parent;if(Rh(e))return!0;r=e}return!1}function Vh(e){if(e.isWrite())return!1;let{identifier:t}=e;return zh(t)?Bh(t):!1}function Hh(e,t,n){return E(n.getScope(t),e)?.references.some(Vh)??!1}function Uh(e,t){return e.every(e=>Hh(e.variableName,e.variableDeclaration,t))}const Wh=/^[\s;]*$/u;function Gh(e,t,n){if(e===void 0)return!0;if(n.getText(e.worldNode)!==n.getText(t.worldNode)||n.getText(e.entityNode)!==n.getText(t.entityNode)||e.queryType!==t.queryType)return!1;let[,r]=e.variableDeclaration.range,[i]=t.variableDeclaration.range,a=n.text.slice(r,i);return Wh.test(a)}function Kh(e,t){if(e.length<2)return;let[n]=e;if(n===void 0)return;let{sourceCode:r}=t,i=r.getText(n.worldNode),a=r.getText(n.entityNode),o=e.map(e=>e.variableName),s=e.map(e=>r.getText(e.componentNode));qh(e,t,`const ${o.length===1?o[0]:`[${o.join(`, `)}]`} = ${i}.get(${a}, ${s.join(`, `)});`,`preferSingleGet`,n)}function qh(e,t,n,r,i){let a=e.at(0)?.variableDeclaration,o=e.at(-1)?.variableDeclaration;a===void 0||o===void 0||t.report({data:{fixedCode:n},fix(e){let[t]=a.range,[,r]=o.range;return e.replaceTextRange([t,r],n)},messageId:r,node:i.node})}function Jh(e,t){if(e.length<2)return;let{sourceCode:n}=t;if(!Uh(e,n))return;let[r]=e;r!==void 0&&qh(e,t,`const hasAll = ${n.getText(r.worldNode)}.has(${n.getText(r.entityNode)}, ${e.map(e=>n.getText(e.componentNode)).join(`, `)});`,`preferSingleHas`,r)}const Yh=t({create(e){let{sourceCode:t}=e,n=[],r=[];function i(){n.length>=2&&Kh(n,e),n=[]}function a(){r.length>=2&&Jh(r,e),r=[]}function o(){i(),a()}return{":statement:not(VariableDeclaration[kind='const'])":o,"Program:exit":o,"VariableDeclaration[kind='const']"(e){let s=Nh(e,`get`);if(s!==void 0){let e=n.at(-1);e!==void 0&&!Gh(e,s,t)&&i(),n.push(s),a();return}let c=Nh(e,`has`);if(c!==void 0){let e=r.at(-1);e!==void 0&&!Gh(e,c,t)&&a(),r.push(c),i();return}o()}}},meta:{docs:{description:`Enforce combining multiple world.get() or world.has() calls into a single call for better Jecs performance.`},fixable:`code`,messages:{preferSingleGet:`Multiple world.get() calls on the same entity should be combined into a single call for better performance. Suggested fix: {{fixedCode}}`,preferSingleHas:`Multiple world.has() calls on the same entity should be combined into a single call for better performance. Suggested fix: {{fixedCode}}`},schema:[],type:`suggestion`}}),Xh=new Set([`alumni`,`axes`,`cacti`,`children`,`criteria`,`data`,`dice`,`feet`,`fungi`,`geese`,`indices`,`matrices`,`media`,`men`,`mice`,`octopi`,`people`,`phenomena`,`teeth`,`vertices`,`women`]),Zh=new Set([`alias`,`analysis`,`axis`,`basis`,`business`,`class`,`crisis`,`glass`,`news`,`series`,`species`,`status`,`thesis`]),Qh=new Set([`args`,`components`,`controllers`,`dto`,`dtos`,`entries`,`enums`,`hooks`,`items`,`keys`,`models`,`options`,`orders`,`pages`,`parameters`,`params`,`props`,`repositories`,`services`,`settings`,`types`,`values`,`vo`,`vos`]),$h=/[A-Z]+(?![a-z])|[A-Z]?[a-z]+|\d+/gu,eg=/^[A-Z]{2,}[sS]?$/u;function tg(e){let t=[],n=0;for(let r of e.split(`_`)){let e=r.match($h);if(e!==null)for(let r of e)t[n++]=r}return t}const ng=/^\d+$/u;function rg(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(!(n===void 0||ng.test(n)))return{lowercased:n.toLowerCase(),original:n}}}const ig=/[sS]$/u,ag=/(?:ches|shes|xes|zes)$/u;function og(e,t){return Xh.has(e)||Qh.has(e)?!0:Zh.has(e)?!1:eg.test(t)&&ig.test(t)||e.endsWith(`ies`)||e.endsWith(`ves`)||ag.test(e)||e.endsWith(`s`)&&!e.endsWith(`ss`)&&!e.endsWith(`us`)&&!e.endsWith(`is`)}function sg(e){if(eg.test(e)&&ig.test(e))return!0;let t=rg(tg(e));return t!==void 0&&og(t.lowercased,t.original)}const cg=t({createOnce(e){return{TSEnumDeclaration({id:t}){let{name:n}=t;sg(n)&&e.report({data:{name:n},messageId:`notSingular`,node:t})}}},meta:{docs:{description:`Prefer singular naming for enums.`,recommended:!0},messages:{notSingular:`Enum name "{{name}}" should be singular.`},schema:[],type:`suggestion`}});function lg(e){return e.type===`JSXElement`||e.type===`JSXFragment`}function ug(e,t,n){return e.type===`Super`||t.type===`Super`?e.type===`Super`&&t.type===`Super`:Z(e,t,n)}function dg(e,t,n){return e.type===`SpreadElement`||t.type===`SpreadElement`?e.type!==`SpreadElement`||t.type!==`SpreadElement`?!1:Z(e.argument,t.argument,n):Z(e,t,n)}function fg(e,t,n){return e.type===`PrivateIdentifier`||t.type===`PrivateIdentifier`?e.type===`PrivateIdentifier`&&t.type===`PrivateIdentifier`&&e.name===t.name:Z(e,t,n)}function Z(e,t,n){let r=w(e),i=w(t);if(r.type!==i.type)return!1;switch(r.type){case`BinaryExpression`:return i.type===`BinaryExpression`&&pg(r,i,n);case`CallExpression`:return i.type===`CallExpression`&&mg(r,i,n);case`Identifier`:return i.type===`Identifier`&&r.name===i.name;case`Literal`:return i.type===`Literal`&&r.value===i.value;case`LogicalExpression`:return i.type===`LogicalExpression`&&hg(r,i,n);case`MemberExpression`:return i.type===`MemberExpression`&&gg(r,i,n);case`ThisExpression`:return i.type===`ThisExpression`;case`UnaryExpression`:return i.type===`UnaryExpression`&&r.operator===i.operator&&Z(r.argument,i.argument,n);default:return n.getText(r)===n.getText(i)}}function pg(e,t,n){return e.operator===t.operator&&fg(e.left,t.left,n)&&fg(e.right,t.right,n)}function mg(e,t,n){if(e.optional!==t.optional||!ug(e.callee,t.callee,n)||e.arguments.length!==t.arguments.length)return!1;for(let r=0;r<e.arguments.length;r+=1){let i=e.arguments[r],a=t.arguments[r];if(i===void 0||a===void 0||!dg(i,a,n))return!1}return!0}function hg(e,t,n){return e.operator===t.operator&&Z(e.left,t.left,n)&&Z(e.right,t.right,n)}function gg(e,t,n){return e.computed!==t.computed||e.optional!==t.optional||!ug(e.object,t.object,n)?!1:e.computed?fg(e.property,t.property,n):_g(e.property,t.property)}function _g(e,t){return(e.type===`Identifier`&&t.type===`Identifier`||e.type===`PrivateIdentifier`&&t.type===`PrivateIdentifier`)&&e.name===t.name}function vg(e){let t=w(e);if(!(t.type!==`UnaryExpression`||t.operator!==`!`))return w(t.argument)}function yg(e){let t=w(e);if(t.type===`BinaryExpression`&&!(t.operator!==`===`&&t.operator!==`!==`))return{left:t.left,operator:t.operator,right:t.right}}function bg(e){let t=w(e);return t.type===`Identifier`||t.type===`ThisExpression`||t.type===`Literal`}function xg(e){return rt(e)&&bg(e)}function Sg(e,t,n){let r=vg(e);if(r&&Z(r,t,n))return{isFixSafe:bg(r)};let i=vg(t);if(i&&Z(i,e,n))return{isFixSafe:bg(i)};let a=yg(e),o=yg(t);if(!(a&&o)||!(a.operator===`===`&&o.operator===`!==`||a.operator===`!==`&&o.operator===`===`))return;let s=fg(a.left,o.left,n)&&fg(a.right,o.right,n),c=fg(a.left,o.right,n)&&fg(a.right,o.left,n);if(s||c)return{isFixSafe:xg(a.left)&&xg(a.right)&&xg(o.left)&&xg(o.right)}}function Cg(e){return e.type===`JSXText`&&e.value.trim()===``}function wg(e){if(e.type===`JSXExpressionContainer`&&e.expression.type!==`JSXEmptyExpression`&&e.expression.type===`LogicalExpression`&&e.expression.operator===`&&`&&lg(e.expression.right))return{condition:e.expression.left,logical:e.expression,node:e,renderBranch:e.expression.right}}const Tg=t({create(e){let{sourceCode:t}=e;function n(e,t){let n=t;for(;n<e.length;){let t=e[n];if(t===void 0||!Cg(t))break;n+=1}let r=e[n];return r===void 0?void 0:wg(r)}function r(n,r){let i=Sg(n.condition,r.condition,t);if(i!==void 0){if(i.isFixSafe){e.report({fix(e){let i=`{${t.getText(n.condition)} ? ${t.getText(n.renderBranch)} : ${t.getText(r.renderBranch)}}`;return e.replaceTextRange([n.node.range[0],r.node.range[1]],i)},messageId:`preferTernaryConditionalRendering`,node:n.logical});return}e.report({messageId:`preferTernaryConditionalRendering`,node:n.logical})}}function i(e){for(let t=0;t<e.length;t+=1){let i=e[t];if(i===void 0)continue;let a=wg(i);if(a===void 0)continue;let o=n(e,t+1);o!==void 0&&r(a,o)}}return{JSXElement(e){i(e.children)},JSXFragment(e){i(e.children)}}},meta:{docs:{description:`Prefer ternary expressions over complementary JSX && branches.`},fixable:`code`,messages:{preferTernaryConditionalRendering:`Use a single ternary expression instead of complementary JSX && branches.`},schema:[],type:`suggestion`}});function Eg(e){return e.type===`PrivateIdentifier`}function Dg(e){return e===`+`||e===`-`||e===`*`||e===`/`||e===`%`}function Og(e){return e.type===`BinaryExpression`&&Dg(e.operator)&&!Eg(e.left)&&!Eg(e.right)}function kg(e){switch(e.type){case`BinaryExpression`:{if(!Og(e))return;let{left:t,right:n}=e,r=kg(t),i=kg(n);return r===void 0||i===void 0?void 0:`${r} ${e.operator} ${i}`}case`Identifier`:return e.name;case`Literal`:return re(e.value)?String(e.value):void 0;case`UnaryExpression`:{let t=kg(e.argument);return t===void 0||e.operator!==`+`&&e.operator!==`-`?void 0:`${e.operator}${t}`}default:return}}function Ag(e,t,n){switch(e){case`%`:return n===0?void 0:t%n;case`*`:return t*n;case`+`:return t+n;case`-`:return t-n;case`/`:return n===0?void 0:t/n;default:return}}function jg(e){switch(e.type){case`BinaryExpression`:{if(!Og(e))return;let{left:t,right:n}=e,r=jg(t),i=jg(n);return r===void 0||i===void 0?void 0:Ag(e.operator,r,i)}case`Identifier`:return;case`Literal`:return re(e.value)?e.value:void 0;case`UnaryExpression`:{let t=jg(e.argument);return t===void 0?void 0:e.operator===`+`?t:e.operator===`-`?-t:void 0}default:return}}function Mg(e){if(e.length!==4)return;let[t,n,r,i]=e;if(t===void 0||n===void 0||r===void 0||i===void 0||t.type===`SpreadElement`||n.type===`SpreadElement`||r.type===`SpreadElement`||i.type===`SpreadElement`)return;let a=kg(t),o=kg(n),s=kg(r),c=kg(i);if(!(a===void 0||o===void 0||s===void 0||c===void 0))return{offsetXText:o,offsetYText:c,scaleXText:a,scaleYText:s}}const Ng=t({create(e){return{NewExpression(t){if(!Ie(t,`UDim2`))return;let n=Mg(t.arguments);if(n===void 0)return;let[r,i,a,o]=t.arguments;if(r===void 0||i===void 0||a===void 0||o===void 0||r.type===`SpreadElement`||i.type===`SpreadElement`||a.type===`SpreadElement`||o.type===`SpreadElement`)return;let s=jg(r),c=jg(i),l=jg(a),u=jg(o);if(!(s===0&&c===0&&l===0&&u===0)){if(c===0&&u===0){e.report({fix(e){return e.replaceText(t,`UDim2.fromScale(${n.scaleXText}, ${n.scaleYText})`)},messageId:`preferFromScale`,node:t});return}s===0&&l===0&&e.report({fix(e){return e.replaceText(t,`UDim2.fromOffset(${n.offsetXText}, ${n.offsetYText})`)},messageId:`preferFromOffset`,node:t})}}}},meta:{docs:{description:`Prefer UDim2.fromScale() or UDim2.fromOffset() over new UDim2() when all offsets or all scales are zero.`},fixable:`code`,messages:{preferFromOffset:`Use UDim2.fromOffset() instead of new UDim2() when all scales are 0.`,preferFromScale:`Use UDim2.fromScale() instead of new UDim2() when all offsets are 0.`},schema:[],type:`suggestion`}});function Pg(e,t,n){if(t.type!==`BlockStatement`)return;let r=0;for(let e of t.body)if(e.type===`VariableDeclaration`)for(let t of e.declarations)_o(t.init,`useState`)&&(r+=1);r<5||e.report({data:{componentName:n,useStateCount:String(r)},messageId:`excessiveUseState`,node:t})}const Fg=t({create(e){return{FunctionDeclaration(t){t.id===null||!W(t.id.name)||`body`in t&&t.body&&Pg(e,t.body,t.id.name)},VariableDeclarator(t){vo(t)&&t.init&&`body`in t.init&&t.init.body&&`name`in t.id&&Pg(e,t.init.body,t.id.name)}}},meta:{docs:{description:`Suggest using useReducer for related state updates instead of multiple useState calls.`,recommended:!0},messages:{excessiveUseState:`Component "{{componentName}}" has {{useStateCount}} useState calls — consider useReducer for related state`},type:`problem`}}),Ig=`replace`,Lg=`suggestion`,Rg=`A more descriptive name will do too.`,zg={args:`parameters`,char:`character`,dt:`deltaTime`,plr:`player`},Bg=[`char`],Vg={acc:{accumulator:!0},arg:{argument:!0},args:{arguments:!0},arr:{array:!0},attr:{attribute:!0},attrs:{attributes:!0},btn:{button:!0},cb:{callback:!0},char:{character:!0},conf:{config:!0},ctx:{context:!0},cur:{current:!0},curr:{current:!0},db:{database:!0},def:{defer:!0,deferred:!0,define:!0,definition:!0},dest:{destination:!0},dev:{development:!0},dir:{direction:!0,directory:!0},dirs:{directories:!0},dist:{distance:!0},doc:{document:!0},docs:{documentation:!0,documents:!0},dst:{daylightSavingTime:!0,destination:!0,distribution:!0},dt:{dateTime:!0,deltaTime:!0},e:{error:!0,event:!0},el:{element:!0},elem:{element:!0},elems:{elements:!0},env:{environment:!0},envs:{environments:!0},err:{error:!0},ev:{event:!0},evt:{event:!0},ext:{extension:!0},exts:{extensions:!0},fn:{func:!0,function:!0},func:{function:!0},i:{index:!0},idx:{index:!0},impl:{implementation:!0},j:{index:!0},len:{length:!0},lib:{library:!0},mod:{module:!0},msg:{message:!0},num:{number:!0},obj:{object:!0},opts:{options:!0},param:{parameter:!0},params:{parameters:!0},pkg:{package:!0},plr:{player:!0},prev:{previous:!0},prod:{production:!0},prop:{property:!0},props:{properties:!0},rel:{related:!0,relationship:!0,relative:!0},req:{request:!0},res:{resource:!0,response:!0,result:!0},ret:{returnValue:!0},retval:{returnValue:!0},sep:{separator:!0},src:{source:!0},stdDev:{standardDeviation:!0},str:{string:!0},tbl:{table:!0},temp:{temporary:!0},tit:{title:!0},tmp:{temporary:!0},util:{utility:!0},utils:{utilities:!0},val:{value:!0},var:{variable:!0},vars:{variables:!0},ver:{version:!0}},Hg={defaultProps:!0,devDependencies:!0,EmberENV:!0,getDerivedStateFromProps:!0,getInitialProps:!0,getServerSideProps:!0,getStaticProps:!0,iOS:!0,obj:!0,propTypes:!0,setupFilesAfterEnv:!0},Ug=[`i18n`,`l10n`],Wg=/(?=[A-Z])|(?<=[_.-])/u,Gg=new Set(`any.as.boolean.break.case.catch.class.const.constructor.continue.debugger.declare.default.delete.do.else.enum.export.extends.false.finally.for.from.function.get.if.implements.import.in.instanceof.interface.let.module.new.null.number.of.package.private.protected.public.require.return.set.static.string.super.switch.symbol.this.throw.true.try.type.typeof.var.void.while.with.yield`.split(`.`)),Kg=/^[A-Za-z]+$/u;function qg(e){return e>=65&&e<=90||e>=97&&e<=122||e===36||e===95}function Jg(e){return e<192?qg(e):e>=12289&&e<=55295?!0:e<=767?e!==215&&e!==247:e<=8191?e>=880&&e!==894:e<=8591?e>=8204&&e<=8205||e>=8304:e<=12271?e>=11264:e<=64255?e>=63744:e<=65023?e>=64512:e<=65279?e>=65136:e<=65370?e>=65313&&e<=65338||e>=65345:e>=65382&&e<=65500}function Yg(e){return!!(Jg(e)||e>=48&&e<=57||e===8204||e===8205||e>=768&&e<=865||e>=8240&&e<=8266)}function Xg(e){if(e.length===0||Gg.has(e))return!1;let t=e.codePointAt(0);if(t===void 0||!Jg(t))return!1;let n=t>65535?2:1;for(;n<e.length;){let t=e.codePointAt(n);if(t===void 0||!Yg(t))return!1;n+=t>65535?2:1}return!0}function Zg(e,t,n){return e?t:n}const Qg=/(?<=[a-z])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z])/u,$g=/(?<=[a-zA-Z])(?=\d)|(?<=\d)(?=[a-zA-Z])/u,e_=/[a-zA-Z]+|\d+|[^a-zA-Z\d]+/gu,t_=/[.+^${}()|[\]\\]/gu,n_=/^\/(?<first>.+)\/(?<second>[dgimsuvy]*)$/u,r_=new WeakMap;function i_(e){return e===e.toUpperCase()}function a_(e){return i_(e.charAt(0))}function o_(e){return e.charAt(0).toUpperCase()+e.slice(1)}function s_(e){return e.charAt(0).toLowerCase()+e.slice(1)}function c_(e){return e.includes(`u`)||e.includes(`v`)?e:`${e}u`}function l_(e){let t=e.match(e_);if(t===null)return[e];let n=[],r=0;for(let e of t){if(!Kg.test(e)){n[r++]=e;continue}r=u_(e,n,r)}return n}function u_(e,t,n){let r=n;for(let n of e.split($g))if(n.length!==0)for(let e of n.split(Qg))e.length>0&&(t[r++]=e);return r}const d_=/\$\d+/gu;function f_(e){let t=e.match(d_);if(t===null)return 0;let n=0;for(let e of t){let t=Math.trunc(Number(e.slice(1)));t>n&&(n=t)}return n}function p_(e){let t=f_(e);if(t===0)return[];let n=Array.from({length:t});for(let e=1;e<=t;e+=1)n[e-1]=RegExp(`\\$${e}`,`gu`);return n}function m_(e){let t=[],n=[],r=0;for(let[i,a]of e)a&&(t[r]=s_(i),n[r]=o_(i),r+=1);return{lowerFirst:t.toSorted(),upperFirst:n.toSorted()}}function h_(e,t){if(e.startsWith(`/`)){let n=n_.exec(e);if(n?.groups!==void 0)return{matcher:{original:e,pattern:RegExp(`^${n.groups.first}$`,c_(n.groups.second??``)),replacement:t,replacementPatterns:p_(t)},type:`pattern`}}if(e.includes(`*`)||e.includes(`?`)){let n=e.replaceAll(t_,String.raw`\$&`).replaceAll(`*`,`(.*)`).replaceAll(`?`,`(.)`),r=0,i=t.replaceAll(`*`,()=>`$${++r}`);return{matcher:{original:e,pattern:RegExp(`^${n}$`,`u`),replacement:i,replacementPatterns:p_(i)},type:`pattern`}}return{original:e,replacement:t,type:`exact`}}function g_(e,t){let n=t.exactMatchers.get(e);if(n!==void 0)return{matchedWord:e,replacement:n,shorthand:e};for(let n of t.matchers){let t=e.match(n.pattern);if(t===null)continue;let r=n.replacement,i=1;for(let e of n.replacementPatterns)r=r.replaceAll(e,t[i]??``),i+=1;return{matchedWord:e,replacement:r,shorthand:n.original}}}function __(e,t){if(t.ignoreExact.has(e))return!0;for(let n of t.ignoreMatchers)if(n.pattern.test(e))return!0;return!1}function v_(e,t){return e===`internal`||typeof e==`boolean`?e:t}function y_(e){if(!x(e))return;let t={};for(let[n,r]of Object.entries(e))typeof r==`boolean`&&(t[n]=r);return t}function b_(e,t){return typeof e==`boolean`?e:t}function x_(e){let t=x(e)?e:void 0,n=y_(t?.allowList),r=Zg(b_(t?.extendDefaultAllowList,!0),n===void 0?Hg:{...Hg,...n},n??{});return new Map(Object.entries(r))}function S_(e){if(!x(e))return{};let t={};for(let[n,r]of Object.entries(e)){if(r===!1){t[n]=!1;continue}if(!x(r))continue;let e={};for(let[t,n]of Object.entries(r))typeof n==`boolean`&&(e[t]=n);t[n]=e}return t}function C_(e){let t=x(e)?e:void 0,n=b_(t?.extendDefaultReplacements,!0),r=S_(t?.replacements),i=new Set([...Object.keys(Vg),...Object.keys(r)]),a=[];for(let e of i){let t=r[e],i=n?Vg[e]??{}:{},o=t===!1?{}:Zg(t===void 0,i,{...i,...t}),s=new Map(Object.entries(o));r_.set(s,m_(s)),a.push([e,s])}return new Map(a)}function w_(e){let t=x(e)?e:void 0,n=[];for(let e of Ug)n.push(e);if(Array.isArray(t?.ignore))for(let e of t.ignore)(y(e)||e instanceof RegExp)&&n.push(e);return n.map(e=>e instanceof RegExp?e:new RegExp(e,`u`))}function T_(e){let t=x(e)?e:void 0,n=new Set(Bg);if(!S(t?.allowPropertyAccess))return n;for(let e of t.allowPropertyAccess)n.add(e);return n}function E_(e){let t=x(e)?e:void 0,n=new Map,r=new Set,i=[],a=[],o=C(t?.shorthands)?t.shorthands:{},s={...zg,...o};for(let[e,t]of Object.entries(s)){let r=h_(e,t);r.type===`exact`?n.set(r.original,r.replacement):a.push(r.matcher)}if(S(t?.ignoreShorthands))for(let e of t.ignoreShorthands){let t=h_(e,``);t.type===`exact`?r.add(t.original):i.push(t.matcher)}return{exactMatchers:n,ignoreExact:r,ignoreMatchers:i,matchers:a}}function D_(e){let t=x(e)?e:void 0;return{allowList:x_(t),allowPropertyAccess:T_(t),checkDefaultAndNamespaceImports:v_(t?.checkDefaultAndNamespaceImports,`internal`),checkFilenames:b_(t?.checkFilenames,!0),checkProperties:b_(t?.checkProperties,!1),checkShorthandImports:v_(t?.checkShorthandImports,`internal`),checkShorthandProperties:b_(t?.checkShorthandProperties,!0),checkVariables:b_(t?.checkVariables,!0),ignore:w_(t),replacements:C_(t),shorthandConfiguration:E_(t)}}function O_(e,t){if(i_(e)||t.allowList.get(e)===!0)return[];let n=t.replacements.get(s_(e))??t.replacements.get(e)??t.replacements.get(o_(e));if(n===void 0)return[];let r=r_.get(n);return r===void 0?[]:a_(e)?r.upperFirst:r.lowerFirst}function k_(e,t){if(e.length===0)return;let n=l_(e),r=[],i=!1;for(let e of n){let n=g_(e,t);n!==void 0&&(i=!0,r.push(n))}if(!i)return;let a=``,o=0;for(let e of n){let t=r[o];if(t?.matchedWord===e){a+=t.replacement,o+=1;continue}a+=e}return{matches:r,replaced:a}}function A_(e,t){if(__(e,t))return!0;let n=l_(e),r=!1;for(let e of n){let n=g_(e,t);if(n!==void 0&&(r=!0,!__(n.matchedWord,t)))return!1}return r}function j_(e,t,n){if(n.has(e))return!0;for(let e of t.matches)if(!n.has(e.matchedWord))return!1;return t.matches.length>0}function M_(e,t,n=3){if(t.allowList.get(e)===!0||t.ignore.some(t=>t.test(e)))return{total:0};let r=k_(e,t.shorthandConfiguration);if(r!==void 0)return A_(e,t.shorthandConfiguration)?{total:0}:{samples:[r.replaced],total:1};if(i_(e))return{total:0};let i=O_(e,t);if(i.length>0)return{samples:i.slice(0,n),total:i.length};let a=e.split(Wg).filter(Boolean),o=!1,s=[],c=0;for(let e of a){let n=O_(e,t);if(n.length>0){o=!0,s[c++]=n;continue}s[c++]=[e]}if(!o)return{total:0};let l=s.reduce((e,t)=>e*t.length,1);return{samples:N_(s,l,n).map(e=>e.join(``)),total:l}}function N_(e,t,n){let r=Math.min(t,n),i=Array.from({length:r},(t,n)=>{let r=n,i=[];for(let t=e.length-1;t>=0;--t){let n=e[t]??[],a=r%n.length;r=(r-a)/n.length;let o=n[a];o!==void 0&&i.unshift(o)}return i});for(let e of i)for(let t=e.length-1;t>0;--t){let n=e[t]??``;Kg.test(n)&&e[t-1]?.endsWith(n)===!0&&e.splice(t,1)}return i}function P_(e,t){let n=t.replacements.get(e);if(n===void 0)return!1;let r=r_.get(n);return r!==void 0&&r.lowerFirst.length>0}function F_(e,t,n){let{samples:r=[],total:i}=t;if(i===1)return{data:{discouragedName:e,nameTypeText:n,replacement:r[0]??``},messageId:Ig};let a=r.map(e=>`\`${e}\``).join(`, `),o=i-r.length;return o>0&&(a+=`, ... (${o>99?`99+`:o} more omitted)`),{data:{discouragedName:e,nameTypeText:n,replacementsText:a},messageId:Lg}}function I_(e){let t=[e],n=1;for(let r of e.childScopes){let e=I_(r);for(let r of e)t[n++]=r}return t}function L_(e,t){return!t.some(t=>E(t,e)!==void 0)}function R_(e,t,n){let r=e;if(!(!Xg(r)&&(r=`${r}_`,!Xg(r)))){for(;!(L_(r,t)&&n(r,t));)r=`${r}_`;return r}}function z_(e){let t=new Set;for(let n of e.identifiers)t.add(n);for(let{identifier:n}of e.references)t.add(n);return[...t]}function B_(e,t){return e.range[0]===t.range[0]&&e.range[1]===t.range[1]}function V_(e){let{parent:t}=e;return!ye(t)||t.local!==e?!1:B_(t.local,t.imported)}function H_(e){let{parent:t}=e;return!be(t)||t.local!==e?!1:B_(t.local,t.exported)}function U_(e){if(!A(e))return!1;let{parent:t}=e;return xe(t)&&t.shorthand&&t.value===e}function W_(e){if(!A(e))return!1;let{parent:t}=e;if(!$e(t)||t.left!==e)return!1;let n=t.parent;return xe(n)?n.shorthand:!1}function G_(e){if(!A(e))return!1;let{parent:t}=e;if(Ae(t)&&t.local===e||je(t)&&t.local===e)return!0;if(ye(t)&&t.local===e){let{imported:e}=t;if(j(e)&&e.name==="default")return!0}return k(t)&&t.id===e&&t.init!==null&&tt(t.init)}function K_(e){if(!A(e))return!1;let{parent:t}=e;if(k(t)&&t.id===e){let e=t.parent;return Me(e)?Ne(e.parent):!1}return Pe(t)&&t.id===e||Le(t)&&t.id===e||Re(t)&&t.id===e?Ne(t.parent):!1}function q_(e){return z_(e).every(e=>!(K_(e)||me(e)))}function J_(e,t,n){if(A(e))return U_(e)||W_(e)?n.replaceText(e,`${e.name}: ${t}`):V_(e)?n.replaceText(e,`${e.name} as ${t}`):H_(e)?n.replaceText(e,`${t} as ${e.name}`):n.replaceText(e,t)}function Y_(e,t,n){let r=[],i=0;for(let a of z_(e)){let e=J_(a,t,n);e!==void 0&&(r[i++]=e)}return r}function X_(e){if(!A(e))return!1;let{parent:t}=e;if(M(t)&&t.property===e&&!t.computed){let e=t.parent;if(Se(e)&&e.left===t)return!0}return xe(t)&&t.key===e&&!t.computed&&!t.shorthand&&(qe(t.parent)||Je(t.parent))||ze(t)&&t.key===e&&!t.computed||be(t)&&t.exported===e&&t.local!==e?!0:(Oe(t)||ke(t))&&t.key===e&&!t.computed}function Z_(e){if(!A(e))return!1;let{parent:t}=e;return xe(t)&&t.key===e&&!t.computed&&!t.shorthand&&(qe(t.parent)||Je(t.parent))}function Q_(e){if(e.type===`ImportBinding`){let{parent:t}=e;if(t!==null&&ge(t)&&_e(t.source))return t.source.value}if(e.type===`Variable`){let{node:t}=e;if(k(t)&&t.init!==null&&tt(t.init)){let[e]=t.init.arguments;if(e!==void 0&&_e(e))return e.value}}}function $_(e){let t=Q_(e);return t!==void 0&&!t.includes(`node_modules`)&&(t.startsWith(`.`)||t.startsWith(`/`))}function ev(e,t){return e===!1?!1:e!==`internal`||$_(t)}function tv(e){return e.defs.length===1&&e.defs[0]?.type===`ClassName`}function nv(e){return function(t,n){return n.every(n=>{let r=e.get(n);return r===void 0||!r.has(t)})}}function rv(e){let{parent:t}=e;return M(t)&&t.property===e&&!t.computed||Ue(t)&&t.right===e}function iv(e,t){let{parent:n}=e,r;return M(n)&&n.property===e&&!n.computed?r=n.object:Ue(n)&&n.right===e&&(r=n.left),r===void 0||!A(r)?!1:E(t.getScope(e),r.name)?.defs[0]?.type===`ImportBinding`}function av(e,t,n,r){r({...F_(e.name,{samples:[t],total:1},n?`property`:`variable`),node:e})}function ov(e,t,n){return G_(t)&&!ev(n.checkDefaultAndNamespaceImports,e)||V_(t)&&!ev(n.checkShorthandImports,e)?!0:!n.checkShorthandProperties&&U_(t)}function sv(e){if(e.name!==`plr`)return;let[t]=e.defs;if(t?.type!==`Variable`||!k(t.node)||t.node.init===null)return;let{init:n}=t.node;if(M(n)&&!n.computed&&j(n.object)&&n.object.name===`Players`&&j(n.property)&&n.property.name===`LocalPlayer`)return`localPlayer`}function cv(e,t,n,r){let i=[],a=0,o=0;for(let s of e){let e=R_(s,t,n);if(e!==void 0){if(e!==s&&P_(s,r)){o+=1;continue}e.length>0&&(i[a++]=e)}}return{droppedDiscouraged:o,safeSamples:i}}function lv(e,t,n){let r=e.type===`Variable`&&k(e.node)&&e.node.init===null,i=e.type===`Parameter`&&t.scope.type===`function`&&t.scope.block.type===`ArrowFunctionExpression`,a=r||i;return(e,t)=>!(!n(e,t)||a&&e===`arguments`)}function uv(e,t,n,r,i,a,o){for(let e of i)a.has(e)||a.set(e,new Set),a.get(e)?.add(r);e({...t,fix(e){return Y_(n,r,e)},node:o})}function dv(e,t,n,r,i){let[a]=e.defs;if(a===void 0)return;let o=a.name;if(!j(o)||ov(a,o,t))return;let s=lv(a,e,r),c=sv(e),l=c===void 0?M_(e.name,t):{samples:[c],total:1};if(l.total===0||!l.samples)return;let{references:u}=e,d=[...u.map(e=>e.from),e.scope],{droppedDiscouraged:f,safeSamples:p}=cv(l.samples,d,s,t),m=p.length>0?p:l.samples,h=b(l.samples.length)&&l.samples.length===l.total?Math.max(0,l.total-f):l.total,g=e.name===`fn`&&h>1?m.map(e=>e===`function_`?`function`:e):m,_=F_(o.name,{samples:g,total:h},`variable`);if(h===1&&p.length===1&&q_(e)){let[t]=p;if(t!==void 0){uv(i,_,e,t,d,n,o);return}}i({..._,node:o})}function fv(e,t){if(!tv(e)){t(e);return}if(e.scope.type===`class`){let[n]=e.defs;if(n===void 0){t(e);return}let r=n.name;if(!j(r)){t(e);return}t(e)}}function pv(e,t){for(let n of I_(e))for(let e of n.variables)fv(e,t)}function mv(e,t,n,r){let i=X_(e),a=rv(e);a&&iv(e,r)||hv(e,i,a,t,n)||t.checkProperties&&i&&gv(e,t,n)}function hv(e,t,n,r,i){let a=k_(e.name,r.shorthandConfiguration);return a===void 0||!(t||n)?!1:(A_(e.name,r.shorthandConfiguration)||!r.checkShorthandProperties||n&&j_(e.name,a,r.allowPropertyAccess)||av(e,a.replaced,!0,i),!0)}function gv(e,t,n){let r=M_(e.name,t);if(r.total===0)return;let i=F_(e.name,r,`property`),a=_v(e,r.samples);if(a!==void 0){n({...i,fix(t){return t.replaceText(e,a)},node:e});return}n({...i,node:e})}function _v(e,t){if(t?.length!==1||!Z_(e))return;let[n]=t,{parent:r}=e;if(n!==void 0&&xe(r)&&_e(r.value)&&Xg(n))return n}const vv=t({create(e){let t=D_(e.options[0]),n=e.physicalFilename,r=new WeakMap,i=nv(r),{sourceCode:a}=e;function o(n){dv(n,t,r,i,e.report)}return{Identifier(n){!A(n)||n.name===`__proto__`||mv(n,t,e.report,a)},JSXOpeningElement({name:n}){if(!(t.checkVariables&&me(n)&&a_(n.name)))return;let r=M_(n.name,t);if(r.total===0)return;let i=F_(n.name,r,`variable`);e.report({...i,node:n})},"Program:exit"(r){if(t.checkFilenames&&n!==`<input>`&&n!==`<text>`){let i=Math.max(n.lastIndexOf(`/`),n.lastIndexOf(`\\`)),a=n.slice(i+1),o=a.lastIndexOf(`.`),s=o===-1?``:a.slice(o),c=M_(o===-1?a:a.slice(0,o),t);if(c.total>0&&c.samples){let t=c.samples.map(e=>`${e}${s}`);e.report({...F_(a,{samples:t,total:c.total},`filename`),node:r})}}t.checkVariables&&pv(a.getScope(r),o)}}},meta:{docs:{description:`Prevent abbreviations.`,recommended:!1},fixable:`code`,messages:{[Ig]:`The {{nameTypeText}} \`{{discouragedName}}\` should be named \`{{replacement}}\`. ${Rg}`,[Lg]:`Please rename the {{nameTypeText}} \`{{discouragedName}}\`. Suggested names are: {{replacementsText}}. ${Rg}`},schema:[{additionalProperties:!1,properties:{allowList:{additionalProperties:{type:`boolean`},type:`object`},allowPropertyAccess:{items:{type:`string`},type:`array`},checkDefaultAndNamespaceImports:{enum:[!1,!0,`internal`]},checkFilenames:{type:`boolean`},checkProperties:{type:`boolean`},checkShorthandImports:{enum:[!1,!0,`internal`]},checkShorthandProperties:{type:`boolean`},checkVariables:{type:`boolean`},extendDefaultAllowList:{type:`boolean`},extendDefaultReplacements:{type:`boolean`},ignore:{items:{oneOf:[{type:`object`},{type:`string`}]},type:`array`},ignoreShorthands:{items:{type:`string`},type:`array`},replacements:{additionalProperties:{oneOf:[{enum:[!1]},{additionalProperties:{type:`boolean`},type:`object`}]},type:`object`},shorthands:{additionalProperties:{type:`string`},type:`object`}},type:`object`}],type:`suggestion`}}),yv=/^use[A-Z0-9].*$/u;function bv(e){return yv.test(e)}function xv(e){if(e.id!==null)return e.id.name}function Sv(e){return e.id.type===`Identifier`?e.id.name:void 0}function Cv(e){let t=xv(e);return t!==void 0&&bv(t)}function wv({parent:e}){if(e.type!==`VariableDeclarator`)return!1;let t=Sv(e);return t!==void 0&&bv(t)}function Tv(e,t){let n=e.get(t);if(!(n===void 0||n.length===0))return n.at(-1)}function Ev(e){for(let t=e.defs.length-1;t>=0;--t){let n=e.defs[t];if(!(n?.node.type!==`VariableDeclarator`||n.node.init?.type!==`ArrayExpression`))return n.node.init}}function Dv(e){for(let t=e.defs.length-1;t>=0;--t){let n=e.defs[t];if(n?.node.type===`VariableDeclarator`&&n.node.init?.type===`ObjectExpression`)return!0}return!1}function Ov(e,t,n,r){let i=E(e.getScope(t),n);if(i!==void 0){let e=Ev(i);if(e!==void 0)return e}return Tv(r,n)}function kv(e,t,n){if(e.argument.type===`Identifier`){let r=Ov(t,e,e.argument.name,n);return r===void 0?1:Av(r,t,n)}return e.argument.type===`ArrayExpression`?Av(e.argument,t,n):1}function Av(e,t,n){let r=0;for(let i of e.elements){if(i===null){r+=1;continue}if(i.type===`SpreadElement`){r+=kv(i,t,n);continue}r+=1}return r}function jv(e,t){let n=E(e.getScope(t),t.name);return n!==void 0&&Dv(n)}function Mv(e){let t=Sv(e);if(!(t===void 0||e.init?.type!==`ArrayExpression`))return{init:e.init,name:t}}function Nv(e,t){let n=Mv(e);if(n===void 0)return;let{init:r,name:i}=n,a=t.get(i)??[];a.push(r),t.set(i,a)}function Pv(e,t){let n=Mv(e);if(n===void 0)return;let{name:r}=n,i=t.get(r);i===void 0||i.length===0||(i.pop(),i.length===0&&t.delete(r))}const Fv=t({create(e){let{sourceCode:t}=e,n=new Map,r=0;function i(e){Cv(e)&&(r+=1)}function a(e){Cv(e)&&--r}function o(e){wv(e)&&(r+=1)}function s(e){wv(e)&&--r}function c(t){e.report({data:{count:`2`},messageId:`tooManyReturnValues`,node:t})}function l(e){if(!(r===0||e.argument===null||e.argument.type===`ObjectExpression`)){if(e.argument.type===`Identifier`){if(jv(t,e.argument))return;let r=Ov(t,e,e.argument.name,n);if(r===void 0)return;Av(r,t,n)>2&&c(e);return}e.argument.type===`ArrayExpression`&&Av(e.argument,t,n)>2&&c(e)}}return{ArrowFunctionExpression:o,"ArrowFunctionExpression:exit":s,FunctionDeclaration:i,"FunctionDeclaration:exit":a,FunctionExpression:i,"FunctionExpression:exit":a,ReturnStatement:l,VariableDeclarator(e){Nv(e,n)},"VariableDeclarator:exit"(e){Pv(e,n)}}},meta:{docs:{description:`Restrict React hooks to object returns or short tuples.`},messages:{tooManyReturnValues:`Hook returns more than {{count}} values. Return an object with named properties instead.`},schema:[],type:`suggestion`}});function Iv(e){return e.endsWith(`Async`)}function Lv(e){let{parent:t}=e;if(t.type!==`ObjectExpression`)return!1;let{parent:n}=t;return n.type===`CallExpression`||n.type===`NewExpression`?n.arguments.includes(t):!1}const Rv=t({create(e){let t=e.options[0]?.except,n=t===void 0?new Set:new Set(t);function r(e){return Iv(e)||n.has(e)}function i(t){r(t.name)||e.report({messageId:`missingAsyncSuffix`,node:t})}return{FunctionDeclaration(e){!e.async||e.id===null||i(e.id)},MethodDefinition(e){!e.value.async||e.key.type!==`Identifier`||i(e.key)},Property(e){!e.method||e.value.type!==`FunctionExpression`||!e.value.async||e.key.type===`Identifier`&&(Lv(e)||i(e.key))},PropertyDefinition(e){e.value?.type!==`ArrowFunctionExpression`&&e.value?.type!==`FunctionExpression`||!e.value.async||e.key.type!==`Identifier`||i(e.key)},VariableDeclarator(e){e.id.type===`Identifier`&&(e.init?.type!==`ArrowFunctionExpression`&&e.init?.type!==`FunctionExpression`||e.init.async&&i(e.id))}}},meta:{docs:{description:`Require async function names to end with Async.`},messages:{missingAsyncSuffix:`Async functions must have names that end with Async.`},schema:[{additionalProperties:!1,properties:{except:{items:{type:`string`},type:`array`}},type:`object`}],type:`problem`}});function zv(e){if(!(x(e)&&`classes`in e&&x(e.classes)))return new Map;let{classes:t}=e,n=new Map;for(let[e,r]of Object.entries(t))y(r)&&n.set(e,r);return n}function Bv(e){return e?.type===`module`||e?.type===`global`}function Vv(e){if(e.type===`ImportDefaultSpecifier`)return e.local.name;if(e.type===`ImportSpecifier`){if(e.imported.type===`Identifier`)return e.imported.name;if(y(e.imported.value))return e.imported.value}}function Hv(e,t,n){if(e.callee.type===`Identifier`){let r=t.get(e.callee.name);if(r===void 0)return;let i=n.get(r);return i===void 0?void 0:{className:r,importSource:i}}if(e.callee.type===`MemberExpression`&&e.callee.property.type===`Identifier`){let t=e.callee.property.name,r=n.get(t);return r===void 0?void 0:{className:t,importSource:r}}}function Uv(e,t,n){if(!y(e.source.value))return;let r=e.source.value;for(let[i,a]of t)if(a===r)for(let t of e.specifiers)Vv(t)===i&&n.set(t.local.name,i)}const Wv=t({create(e){let{sourceCode:t}=e,n=zv(e.options[0]);if(n.size===0)return{};let r=new Map;return{ImportDeclaration(e){Uv(e,n,r)},NewExpression(i){let a=Hv(i,r,n);a!==void 0&&(Bv(t.getScope(i))||e.report({data:{className:a.className,importSource:a.importSource},messageId:`mustBeModuleLevel`,node:i}))}}},meta:{docs:{description:`Require configured classes to be instantiated at module level only.`},messages:{mustBeModuleLevel:`'{{className}}' from '{{importSource}}' must be instantiated at module level only.`},schema:[{additionalProperties:!1,properties:{classes:{additionalProperties:{type:`string`},type:`object`}},type:`object`}],type:`problem`}}),Gv=[{allowAsync:!1,name:`useEffect`},{allowAsync:!1,name:`useLayoutEffect`},{allowAsync:!1,name:`useInsertionEffect`}];function Kv(e){return x(e)&&y(e.name)&&typeof e.allowAsync==`boolean`}function qv(e){if(!x(e))return{environment:`roblox-ts`,hooks:Gv};let t=hn(e.environment)?e.environment:`roblox-ts`,n=e.hooks;if(!Array.isArray(n))return{environment:t,hooks:Gv};let r=[];for(let e of n)Kv(e)&&r.push(e);return r.length===0?{environment:t,hooks:Gv}:{environment:t,hooks:r}}function Jv(e){for(let t of e.defs){let{node:e}=t;if(e.type===`FunctionDeclaration`)return{isAsync:e.async,node:e,type:`function-declaration`};if(e.type===`VariableDeclarator`){if(e.init===null)continue;if(e.init.type===`ArrowFunctionExpression`)return{isAsync:e.init.async,node:e.init,type:`arrow`};if(e.init.type===`FunctionExpression`)return{isAsync:e.init.async,node:e.init,type:`function-expression`}}}}function Yv(e,t){let n=E(e.getScope(t),t.name);if(n===void 0)return!1;for(let e of n.defs){let{node:t}=e;if(t.type!==`VariableDeclarator`||t.init?.type!==`CallExpression`)continue;let n=L(t.init);if(n===`useCallback`||n===`useMemo`)return!0}return!1}const Xv=t({create(e){let{environment:t,hooks:n}=qv(e.options[0]),r=new Map(n.map(e=>[e.name,e.allowAsync])),i=new Set(r.keys()),a=t===`roblox-ts`;function o(e){let t=r.get(e);return typeof t==`boolean`&&t}function s(t,n,r){e.report({data:{hook:t},messageId:r,node:n})}function c(t,n,r){let i=E(e.sourceCode.getScope(r),r.name);if(i===void 0){Yv(e.sourceCode,r)&&s(t,n,`identifierReferencesCallback`);return}let a=Jv(i);if(a===void 0){Yv(e.sourceCode,r)&&s(t,n,`identifierReferencesCallback`);return}l(t,n,a)}function l(e,t,n){if(n.type===`arrow`){n.isAsync&&!o(e)?s(e,t,`identifierReferencesAsyncArrow`):n.isAsync||s(e,t,`identifierReferencesArrow`);return}if(n.type===`function-expression`){u(e,t,n.node);return}n.isAsync&&!o(e)&&s(e,t,`identifierReferencesAsyncFunction`)}function u(e,t,n){n.id===null?s(e,t,`anonymousFunction`):a&&s(e,t,`functionExpression`)}function d(e,t,n){let r=n.id!==null;r&&n.async?s(e,t,`asyncFunctionExpression`):r&&a?s(e,t,`functionExpression`):!r&&n.async?s(e,t,`asyncAnonymousFunction`):r||s(e,t,`anonymousFunction`)}return{CallExpression(e){let t=L(e);if(t===void 0||!i.has(t))return;let[n]=e.arguments;if(n!==void 0){if(n.type===`Identifier`){c(t,e,n);return}if(n.type===`ArrowFunctionExpression`){n.async?s(t,e,`asyncArrowFunction`):s(t,e,`arrowFunction`);return}n.type===`FunctionExpression`&&d(t,e,n)}}}},meta:{docs:{description:`Enforce named effect functions for better debuggability. Prevents inline arrow functions in useEffect and similar hooks.`,recommended:!1},messages:{anonymousFunction:`Anonymous function passed to {{hook}}. debug.info returns empty string for anonymous functions, making stack traces useless for debugging. Extract to: function effectName() { ... } then pass effectName.`,arrowFunction:`Arrow function passed to {{hook}}. Arrow functions have no debug name and create new instances each render. Extract to: function effectName() { ... } then pass effectName.`,asyncAnonymousFunction:`Async anonymous function in {{hook}}. Two issues: (1) no debug name makes stack traces useless, (2) async effects require cancellation logic for unmount. Extract to: async function effectName() { ... } with cleanup.`,asyncArrowFunction:`Async arrow function in {{hook}}. Two issues: (1) arrow functions have no debug name, (2) async effects require cancellation logic. Extract to: async function effectName() { ... } with cleanup.`,asyncFunctionDeclaration:`Async function declaration passed to {{hook}}. Async effects require cancellation logic to handle component unmount. Implement cleanup or set allowAsync: true if cancellation is handled.`,asyncFunctionExpression:`Async function expression in {{hook}}. Async effects require cancellation logic for unmount. Extract to a named async function declaration with cleanup, then pass the reference.`,functionExpression:`Function expression passed to {{hook}}. Function expressions create new instances each render, breaking referential equality. Extract to: function effectName() { ... } at module or component top-level.`,identifierReferencesArrow:`{{hook}} receives identifier pointing to arrow function. Arrow functions have no debug name and lack referential stability. Convert to: function effectName() { ... } then pass effectName.`,identifierReferencesAsyncArrow:`{{hook}} receives identifier pointing to async arrow function. Two issues: (1) no debug name, (2) async effects require cancellation logic. Convert to: async function effectName() { ... } with cleanup.`,identifierReferencesAsyncFunction:`{{hook}} receives identifier pointing to async function. Async effects require cancellation logic for unmount. Implement cleanup or set allowAsync: true if cancellation is handled.`,identifierReferencesCallback:`{{hook}} receives identifier from useCallback/useMemo. These hooks return new references when dependencies change, causing unexpected effect re-runs. Use a stable function declaration: function effectName() { ... }`},schema:[{additionalProperties:!1,properties:{environment:{default:`roblox-ts`,description:`Environment mode: 'roblox-ts' only allows identifiers, 'standard' allows both identifiers and named function expressions`,enum:[`roblox-ts`,`standard`],type:`string`},hooks:{description:`Array of hook configuration objects with name and allowAsync settings`,items:{additionalProperties:!1,properties:{allowAsync:{description:`Whether async functions are allowed for this hook`,type:`boolean`},name:{description:`Hook name to check`,type:`string`}},required:[`name`,`allowAsync`],type:`object`},type:`array`}},type:`object`}],type:`problem`}});h({"alternatives?":h(`string[]`).readonly().or(`undefined`),closer:h(`string[]`).readonly().or(`string`),opener:`string`,"openerAlternatives?":h(`string[]`).readonly().or(`undefined`),"platform?":h(`"roblox" | undefined`),"requireSync?":`boolean | undefined`,"yieldingFunctions?":h(`string[]`).readonly().or(`undefined`)}).readonly();const Zv=new Set([`DoWhileStatement`,`ForInStatement`,`ForOfStatement`,`ForStatement`,`WhileStatement`]),Qv=[`task.wait`,`wait`,`*.WaitForChild`,`*.*Async`];function $v(e,t){for(let n of t){let t=!1;for(let r of n)if(r.index===e.index){t=!0;break}if(!t)return!1}return!0}function ey(e,t){return t.filter(t=>t.some(t=>t.index===e.index))}function ty({callee:e}){if(e.type===`Identifier`)return e.name;if(e.type===`MemberExpression`){let t=e.object.type===`Identifier`?e.object.name:void 0,n=e.property.type===`Identifier`?e.property.name:void 0;if(t!==void 0&&n!==void 0)return`${t}.${n}`}}function Q(e){let t=[];if(S(e.closer)?t.push(...e.closer):y(e.closer)&&t.push(e.closer),e.alternatives)for(let n of e.alternatives)t.push(n);return t}function ny(e){let t=[e.opener];return e.openerAlternatives&&t.push(...e.openerAlternatives),t}function ry(e){return e.length===0?`configured opener`:e.length===1?e[0]??`configured opener`:e.join(`' or '`)}function iy(e){return e?Zv.has(e.type):!1}function ay(e){return e?.type===`SwitchStatement`}function oy(e,t){if(e.type!==`Identifier`)return;let n=t;for(;n;){if(n.type===`LabeledStatement`&&n.label.name===e.name)return n.body;n=n.parent??void 0}}function sy(e,t){let n=e.label?oy(e.label,e.parent):void 0;if(n)return iy(n)?n:void 0;let r=e.parent;for(;r;){if(iy(r))return r;if(t&&ay(r))return;r=r.parent??void 0}}function cy(e){return sy(e,!0)}function ly(e){return sy(e,!1)}function uy(e){return{...e,loopAncestors:[...e.loopAncestors]}}const dy=t({create(e){let[t]=e.options,n={allowConditionalClosers:t?.allowConditionalClosers??!1,allowMultipleOpeners:t?.allowMultipleOpeners??!0,maxNestingDepth:t?.maxNestingDepth??1/0,pairs:t?.pairs??[]},r=n.pairs.length===0?[{closer:`debug.profileend`,opener:`debug.profilebegin`,platform:`roblox`,requireSync:!0,yieldingFunctions:[...Qv]}]:n.pairs,i={...n.allowConditionalClosers===void 0?{}:{allowConditionalClosers:n.allowConditionalClosers},...n.allowMultipleOpeners===void 0?{}:{allowMultipleOpeners:n.allowMultipleOpeners},...n.maxNestingDepth===void 0?{}:{maxNestingDepth:n.maxNestingDepth},pairs:r},a=[],o=[],s=0,c=[],l=!1,u=!1,d=[],f=new Map,p=new Map,m=new Map;function h(e){if(m.has(e))return m.get(e)??[];let t=[],n=0;for(let r of i.pairs){if(!ny(r).includes(e))continue;let i=Q(r);for(let e of i)t.includes(e)||(t[n++]=e)}return m.set(e,t),t}function g(){return d.length>0?d.at(-1):{asyncContext:!1,currentFunction:void 0,hasEarlyExit:!1,inCatch:!1,inConditional:!1,inFinally:!1,inLoop:!1,inTry:!1}}function _(e){let t=g();d.push({...t,...e})}function v(){d.pop()}function ee(e){let t=d.at(-1);t&&(d[d.length-1]={...t,...e})}function te(){return a.map(uy)}function y(e){f.set(e,te())}function b(e,t){return i.pairs.find(n=>(t?ny(n):Q(n)).includes(e))}function x(e,t){return t.platform===`roblox`&&(t.yieldingFunctions??Qv).some(t=>{if(t.startsWith(`*.`)){let n=t.slice(2);return e.endsWith(`.${n}`)}return e===t})}function ne(e){let t=Q(e);return t.length===1?t[0]??`closer`:t.join(`' or '`)}function S(t,n){e.report({data:{closer:ne(t.config),opener:t.opener,paths:n},messageId:`unpairedOpener`,node:t.node})}function C(e){a.length=0;for(let t of e)a.push({...t})}function re(e){let t=p.get(e)??[];t.push(te()),p.set(e,t)}function w(e,t,n){for(let r of e){let e=ey(r,t);e.length<=0||e.length>=t.length||i.allowConditionalClosers===!1&&S(r,n)}}function T(e){e.type!==`FunctionDeclaration`&&e.type!==`FunctionExpression`&&e.type!==`ArrowFunctionExpression`||(c.push([...a]),a.length=0,l=!1,u=!1,_({asyncContext:e.async,currentFunction:e,hasEarlyExit:!1,inCatch:!1,inConditional:!1,inFinally:!1,inLoop:!1,inTry:!1}))}function E(){if(a.length>0)for(let e of a)S(e,`function exit`);let e=c.pop();e?(a.length=0,a.push(...e)):a.length=0,v()}function ie(e){e.type===`IfStatement`&&(_({inConditional:!0}),y(e))}function ae(e){if(e.type!==`IfStatement`)return;v();let t=f.get(e),n=p.get(e);if(t&&n&&n.length>0){let r=e.alternate!==null;for(let e of n)for(let n of e)t.some(({index:e})=>e===n.index)||S(n,`conditional branch`);if(r){w(t,n,`not all execution paths`);let e=t.filter(e=>$v(e,n));a.length=0,a.push(...e)}else C(t)}f.delete(e),p.delete(e)}function oe(e){let{parent:t}=e;if(t?.type===`IfStatement`){re(t);let e=f.get(t);if(!e)return;C(e)}}function D(e){let{parent:t}=e;t?.type===`IfStatement`&&re(t)}function se(e){e.type===`TryStatement`&&y(e)}function O(t){if(t.type!==`TryStatement`)return;let n=f.get(t),r=p.get(t);if(t.finalizer){f.delete(t),p.delete(t);return}if(n&&r&&r.length>0){for(let t of n){let n=r.filter(e=>e.some(e=>e.index===t.index));if(n.length>0&&n.length<r.length&&i.allowConditionalClosers===!1){let n=Q(t.config),r=n.length===1?n[0]??`closer`:n.join(`' or '`);e.report({data:{closer:r,opener:t.opener,paths:`not all execution paths`},messageId:`unpairedOpener`,node:t.node})}}let t=n.filter(e=>$v(e,r));a.length=0,a.push(...t)}f.delete(t),p.delete(t)}function k(){_({inTry:!0})}function ce(e,t){if(e.type!==t)return;let{parent:n}=e;if(n.type===`TryStatement`){re(n);let e=f.get(n);e&&C(e)}v()}function le(e){ce(e,`BlockStatement`)}function ue(){_({inCatch:!0})}function de(e){ce(e,`CatchClause`)}function fe(){_({inFinally:!0})}function pe(e){e.type===`SwitchStatement`&&(_({inConditional:!0}),y(e))}function A(e){if(e.type!==`SwitchStatement`)return;v();let t=f.get(e),n=p.get(e);if(t&&n&&n.length>0)if(e.cases.some(e=>e.test===null)&&n.length===e.cases.length){w(t,n,`not all execution paths`);let e=t.filter(e=>$v(e,n));a.length=0,a.push(...e)}else C(t);f.delete(e),p.delete(e)}function j(e){if(e.type!==`SwitchCase`)return;let{parent:t}=e;if(t.type===`SwitchStatement`){re(t);let e=f.get(t);if(!e)return;C(e)}}function me(e){iy(e)&&(o.push(e),_({inLoop:!0}))}function he(){o.length>0&&o.pop(),v()}function ge(t){if(ee({hasEarlyExit:!0}),!(g().inFinally||a.length===0))for(let{config:n,node:r,opener:i}of a){let a=Q(n),o=a.length===1?a[0]??`closer`:a.join(`' or '`),s=t.type===`ReturnStatement`?`return`:`throw`;e.report({data:{closer:o,opener:i,paths:`${s} at line ${t.loc.start.line}`},messageId:`unpairedOpener`,node:r})}}function _e(t){if(t.type!==`BreakStatement`&&t.type!==`ContinueStatement`||a.length===0)return;let n=t.type===`ContinueStatement`?ly(t):cy(t);if(n)for(let{config:r,loopAncestors:i,node:o,opener:s}of a){if(!i.some(e=>e===n))continue;let a=Q(r),c=a.length===1?a[0]??`closer`:a.join(`' or '`),l=t.type===`BreakStatement`?`break`:`continue`,u=t.loc.start.line;e.report({data:{closer:c,opener:s,paths:`${l} at line ${u}`},messageId:`unpairedOpener`,node:o})}}function ve(t,n,r){let c=i.maxNestingDepth??0;c>0&&a.length>=c&&e.report({data:{max:String(c)},messageId:`maxNestingExceeded`,node:t}),i.allowMultipleOpeners===!1&&a.length>0&&a.at(-1)?.opener===n&&e.report({data:{opener:n},messageId:`multipleOpeners`,node:t});let l={config:r,index:s++,location:t.loc,loopAncestors:[...o],node:t,opener:n};a.push(l)}function ye(t,n){let r=a.findLastIndex(e=>Q(e.config).includes(n));if(r===-1){if(l&&!u){u=!0;return}if(a.length===0){e.report({data:{closer:n},messageId:`unpairedCloser`,node:t});return}let r=ry(h(a.at(-1).opener));e.report({data:{closer:n,expected:r},messageId:`unexpectedCloser`,node:t});return}let i=a[r];if(i){if(r!==a.length-1){let r=a.at(-1);r&&e.report({data:{actual:r.opener,closer:n,expected:i.opener},messageId:`wrongOrder`,node:t})}a.splice(r,1)}}function be(t,n,r){let i=Q(r.config),a=i.length===1?i[0]??`closer`:i.join(`' or '`);e.report({data:{closer:a,yieldingFunction:n},messageId:`robloxYieldViolation`,node:t})}function xe(t){if(!(t.type!==`AwaitExpression`&&t.type!==`YieldExpression`&&t.type!==`ForOfStatement`))for(let{config:n,opener:r}of a){if(n.requireSync!==!0)continue;let i=Q(n),a=i.length===1?i[0]??`closer`:i.join(`' or '`),o=t.type===`YieldExpression`?`yield`:`await`;e.report({data:{asyncType:o,closer:a,opener:r},messageId:`asyncViolation`,node:t})}}function M(e){if(e.type!==`CallExpression`)return;let t=ty(e);if(t===void 0||t===``)return;let n=b(t,!0);if(n){ve(e,t,n);return}if(b(t,!1)){ye(e,t);return}for(let n of a)if(x(t,n.config)){be(e,t,n),a.length=0,l=!0;return}}return{ArrowFunctionExpression:T,"ArrowFunctionExpression:exit":E,AwaitExpression:xe,BreakStatement:_e,CallExpression:M,CatchClause:ue,"CatchClause:exit":de,ContinueStatement:_e,DoWhileStatement:me,"DoWhileStatement:exit":he,ForInStatement:me,"ForInStatement:exit":he,ForOfStatement:e=>{e.await&&xe(e),me(e)},"ForOfStatement:exit":he,ForStatement:me,"ForStatement:exit":he,FunctionDeclaration:T,"FunctionDeclaration:exit":E,FunctionExpression:T,"FunctionExpression:exit":E,IfStatement:ie,"IfStatement > .alternate:exit":D,"IfStatement > .consequent:exit":oe,"IfStatement:exit":ae,ReturnStatement:ge,"SwitchCase:exit":j,SwitchStatement:pe,"SwitchStatement:exit":A,ThrowStatement:ge,TryStatement:se,"TryStatement > .block":k,"TryStatement > .block:exit":le,"TryStatement > .finalizer":fe,"TryStatement > .finalizer:exit":v,"TryStatement:exit":O,WhileStatement:me,"WhileStatement:exit":he,YieldExpression:xe}},meta:{docs:{description:`Enforces balanced opener/closer function calls across all execution paths`,recommended:!1},fixable:`code`,messages:{asyncViolation:`Cannot use {{asyncType}} between '{{opener}}' and '{{closer}}' (requireSync: true)`,conditionalOpener:`Conditional opener '{{opener}}' at {{location}} may not have matching closer on all paths`,maxNestingExceeded:`Maximum nesting depth of {{max}} exceeded for paired calls`,multipleOpeners:`Multiple consecutive calls to '{{opener}}' without matching closers (allowMultipleOpeners: false)`,robloxYieldViolation:`Yielding function '{{yieldingFunction}}' auto-closes all profiles - subsequent '{{closer}}' will error`,unexpectedCloser:`Unexpected call to '{{closer}}' - expected one of: {{expected}}`,unpairedCloser:`Unexpected call to '{{closer}}' - no matching opener on stack`,unpairedOpener:`Unpaired call to '{{opener}}' - missing '{{closer}}' on {{paths}}`,wrongOrder:`Closer '{{closer}}' called out of order - expected to close '{{expected}}' but '{{actual}}' is still open`},schema:[{additionalProperties:!1,properties:{allowConditionalClosers:{default:!1,type:`boolean`},allowMultipleOpeners:{default:!0,type:`boolean`},maxNestingDepth:{default:0,minimum:0,type:`number`},pairs:{items:{additionalProperties:!1,properties:{alternatives:{items:{minLength:1,type:`string`},type:`array`},closer:{oneOf:[{minLength:1,type:`string`},{items:{minLength:1,type:`string`},minItems:1,type:`array`}]},opener:{minLength:1,type:`string`},openerAlternatives:{items:{minLength:1,type:`string`},type:`array`},platform:{enum:[`roblox`],type:`string`},requireSync:{default:!1,type:`boolean`},yieldingFunctions:{items:{minLength:1,type:`string`},type:`array`}},required:[`opener`,`closer`],type:`object`},minItems:1,type:`array`}},required:[`pairs`],type:`object`}],type:`problem`}}),fy={allowRootKeys:!1,ignoreCallExpressions:[`ReactTree.mount`,`CreateReactStory`,`createReactStory`,`createPlatformStory`],iterationMethods:[`map`,`filter`,`forEach`,`flatMap`,`reduce`,`reduceRight`,`some`,`every`,`find`,`findIndex`],memoizationHooks:[`useCallback`,`useMemo`]},py=new Set([`ChainExpression`,`ParenthesizedExpression`,`TSAsExpression`,`TSInstantiationExpression`,`TSNonNullExpression`,`TSSatisfiesExpression`,`TSTypeAssertion`]),my=new Set([...py,`AwaitExpression`,`ConditionalExpression`,`LogicalExpression`,`SequenceExpression`,`SpreadElement`]),hy={iteration:!1,memoization:!1},gy=new Set([`ConditionalExpression`,`LogicalExpression`]),_y=new Set([`BlockStatement`,`CatchClause`,`DoWhileStatement`,`ForInStatement`,`ForOfStatement`,`ForStatement`,`IfStatement`,`LabeledStatement`,`SwitchCase`,`SwitchStatement`,`TryStatement`,`WhileStatement`,`WithStatement`]);function $(e){return e.parent??void 0}function vy(e){let t=e;for(;t!==void 0&&py.has(t.type);)t=$(t);return t}function yy(e){let t=$(e);for(;t!==void 0;){if(N(t))return t;t=$(t)}}function by(e,t,n){let{callee:r}=e;if(r.type===`Identifier`)return{iteration:t.has(r.name),memoization:n.has(r.name)};if(r.type===`MemberExpression`&&r.property.type===`Identifier`){let{name:i}=r.property,a={iteration:t.has(i),memoization:n.has(i)};return i===`from`&&r.object.type===`Identifier`&&r.object.name===`Array`&&e.arguments.length>=2||i===`call`&&r.object.type===`MemberExpression`&&r.object.property.type===`Identifier`&&t.has(r.object.property.name)?{...a,iteration:!0}:a}return hy}function xy(e){let t=e,n=$(e);for(;n!==void 0;){if(n.type===`CallExpression`){for(let e of n.arguments)if(e===t||e.type===`SpreadElement`&&e.argument===t)return n;return}if(my.has(n.type)){t=n,n=$(n);continue}break}}function Sy(e,t){if(t.type===`FunctionDeclaration`){let n=e.getDeclaredVariables(t);return n.length>0?n[0]:void 0}let n=$(t);if(n!==void 0&&(n.type===`VariableDeclarator`||n.type===`AssignmentExpression`)){let t=e.getDeclaredVariables(n);if(t.length>0)return t[0]}}function Cy(e,t){e.iteration||=t.iteration,e.memoization||=t.memoization}function wy(e,t,n){if(e.isWrite())return hy;let r=xy(e.identifier);return r===void 0||fo(r)?hy:by(r,t,n)}function Ty(e,t,n,r){let i=xy(t);if(i!==void 0)return fo(i)?hy:by(i,n,r);let a=Sy(e,t);if(a===void 0)return hy;let o={iteration:!1,memoization:!1};for(let e of a.references)if(Cy(o,wy(e,n,r)),o.iteration&&o.memoization)return o;return o}function Ey(e){let t=Dy(e);return t===void 0?!1:t.type===`ReturnStatement`?ky(t):t.type===`ArrowFunctionExpression`}function Dy(e){let t=Oy(vy($(e)));for(;t!==void 0&&gy.has(t.type);)t=vy($(t));return Oy(t)}function Oy(e){return e?.type===`JSXExpressionContainer`?vy($(e)):e}function ky(e){let t=vy($(e));for(;t!==void 0&&_y.has(t.type);)t=vy($(t));return t!==void 0&&N(t)}function Ay(e){if(!Ey(e))return!1;let t=yy(e);if(t===void 0)return!1;let n=vy($(t));return n?.type!==`CallExpression`||fo(n)}function jy(e,t){let n=$(e);if(n===void 0||n.type===`JSXExpressionContainer`&&(n=$(n),n===void 0))return!1;for(let e=0;e<20&&n!==void 0;e+=1){if(n.type===`CallExpression`){let{callee:e}=n;return e.type===`Identifier`?t.includes(e.name):e.type===`MemberExpression`&&e.object.type===`Identifier`&&e.property.type===`Identifier`&&t.includes(`${e.object.name}.${e.property.name}`)}n=$(n)}return!1}function My(e){return e.toLowerCase().endsWith(`children`)}function Ny(e){let t=$(e);if(t===void 0)return!1;for(;t!==void 0&&(t.type===`ConditionalExpression`||t.type===`LogicalExpression`);)t=$(t);if(t===void 0||t.type===`JSXExpressionContainer`&&(t=$(t),t===void 0)||t.type!==`JSXAttribute`)return!1;let n=po(t);return n===void 0||!My(n)}function Py(e){let t=e,n=$(e);for(;n!==void 0&&py.has(n.type);)t=n,n=$(n);return n===void 0?!1:n.type===`VariableDeclarator`?n.init===t:n.type===`AssignmentExpression`&&n.right===t}function Fy(e,t){let n=$(e);if(n===void 0)return!1;let r=!1;for(;n!==void 0&&(n.type===t||py.has(n.type));)n.type===t&&(r=!0),n=$(n);if(!r||n?.type!==`JSXExpressionContainer`)return!1;let i=$(n);return i===void 0?!1:i.type===`JSXElement`||i.type===`JSXFragment`}function Iy(e){return Fy(e,`ConditionalExpression`)}function Ly(e){return Fy(e,`LogicalExpression`)}const Ry=t({create(e){let[t]=e.options,n={allowRootKeys:fy.allowRootKeys,ignoreCallExpressions:fy.ignoreCallExpressions,iterationMethods:fy.iterationMethods,memoizationHooks:fy.memoizationHooks,...t},r=new Set(n.iterationMethods),i=new Set(n.memoizationHooks);function a(t){let a=yy(t),o=a===void 0?hy:Ty(e.sourceCode,a,r,i),s=o.iteration||o.memoization;if(Ay(t)&&!s){!n.allowRootKeys&&t.type===`JSXElement`&&mo(t,`key`)&&e.report({messageId:`rootComponentWithKey`,node:t});return}if(!jy(t,n.ignoreCallExpressions)&&!(Py(t)||Ny(t)||Iy(t))&&!(t.type===`JSXFragment`&&Ly(t))&&!(t.type===`JSXFragment`&&o.memoization&&!o.iteration&&Ey(t))){if(t.type===`JSXFragment`){e.report({messageId:`missingKey`,node:t});return}mo(t,`key`)||e.report({messageId:`missingKey`,node:t})}}return{JSXElement:a,JSXFragment:a}},meta:{docs:{description:`Require keys on React components when used in lists or iteration.`},messages:{missingKey:"JSX element in list/callback lacks key prop. React Luau warns about missing keys in _G.__DEV__ mode. Add a unique `key` prop using a stable identifier (not array index).",rootComponentWithKey:"Root return has unnecessary key prop. The key gets overwritten by the parent anyway. Remove the `key` prop."},schema:[{additionalProperties:!1,properties:{allowRootKeys:{default:!1,description:`Allow key props on root component returns`,type:`boolean`},ignoreCallExpressions:{default:[`ReactTree.mount`],description:`Function calls where JSX arguments don't need keys`,items:{type:`string`},type:`array`},iterationMethods:{default:fy.iterationMethods,description:`Array method names that indicate iteration contexts where keys are required`,items:{type:`string`},type:`array`},memoizationHooks:{default:[`useCallback`,`useMemo`],description:`Hook names that indicate memoization contexts where keys are required`,items:{type:`string`},type:`array`}},type:`object`}],type:`problem`}});function zy(e){if(e.id.type===`Identifier`)return e.id.name}function By(e,t,n){return de(e,t,n,`memo`)}function Vy(e,t,n){return e.callee.type===`Identifier`?t.has(e.callee.name):e.callee.type!==`MemberExpression`||e.callee.property.type!==`Identifier`||e.callee.property.name!==`createContext`||e.callee.object.type!==`Identifier`?!1:n.has(e.callee.object.name)}function Hy(e){let t=e;for(;t!==null;){if(t.type===`ExportNamedDeclaration`||t.type===`ExportDefaultDeclaration`)return!0;t=t.parent}return!1}function Uy(e){return e.parent.type===`VariableDeclaration`?e.parent.parent.type===`ExportNamedDeclaration`||e.parent.parent.type===`ExportDefaultDeclaration`:!1}function Wy(e,t,n){for(let r of e.getDeclaredVariables(t))if(r.name===n){for(let{identifier:e}of r.references)if(Hy(e))return!0;return!1}return!1}function Gy(e,t,n,r){return r.has(t)||Uy(n)?!0:Wy(e,n,t)}function Ky(e,t,n){e.report({data:{variableName:n},messageId:t.kind===`context`?`missingContextDisplayName`:`missingMemoDisplayName`,node:t.node})}const qy=t({create(e){let t=yn(e.options[0]),n=new Set,r=new Set,i=new Set,a=new Map,o=new Set;return{'AssignmentExpression[left.type="MemberExpression"]'(e){let{left:t}=e;if(t.type!==`MemberExpression`||t.property.type!==`Identifier`||t.property.name!==`displayName`||t.object.type!==`Identifier`)return;let n=a.get(t.object.name);n!==void 0&&(n.hasDisplayName=!0)},ExportDefaultDeclaration(t){if(t.declaration.type===`CallExpression`){if(By(t.declaration,n,i)){e.report({messageId:`directMemoExport`,node:t});return}Vy(t.declaration,r,i)&&e.report({messageId:`directContextExport`,node:t});return}t.declaration.type===`Identifier`&&o.add(t.declaration.name)},ExportNamedDeclaration(e){for(let t of e.specifiers)t.exported.type!==`Identifier`||t.exported.name!=="default"||t.local.type!==`Identifier`||o.add(t.local.name)},ImportDeclaration(e){if(bn(e,t))for(let t of e.specifiers){if(t.type===`ImportSpecifier`){let e=pe(t);e===`memo`&&n.add(t.local.name),e===`createContext`&&r.add(t.local.name);continue}i.add(t.local.name)}},"Program:exit"(){for(let[t,n]of a)n.hasDisplayName||Gy(e.sourceCode,t,n.node,o)&&Ky(e,n,t)},VariableDeclarator(e){if(e.init?.type!==`CallExpression`)return;let t=zy(e);if(t!==void 0){if(By(e.init,n,i)){a.set(t,{hasDisplayName:!1,kind:`memo`,node:e});return}Vy(e.init,r,i)&&a.set(t,{hasDisplayName:!1,kind:`context`,node:e})}}}},meta:{docs:{description:`Require displayName on exported memo components and contexts.`},messages:{directContextExport:`Directly exporting createContext() result prevents setting displayName.`,directMemoExport:`Directly exporting memo() result prevents setting displayName.`,missingContextDisplayName:`Context '{{variableName}}' must have a displayName assigned.`,missingMemoDisplayName:`Memo component '{{variableName}}' must have a displayName assigned.`},schema:[{additionalProperties:!1,properties:{environment:mn},type:`object`}],type:`problem`}});function Jy(e){return x(e)&&e.metric===`statements`?`statements`:`lines`}function Yy(e,t){let n=e.consequent.length;if(n===0)return!1;let[r]=e.consequent;if(r===void 0||n===1&&r.type===`BlockStatement`)return!1;if(t===`statements`)return n>1;let i=e.consequent[n-1];return i!==void 0&&r.loc.start.line!==i.loc.end.line}const Xy=t({create(e){let t=Jy(e.options[0]);return{SwitchCase(n){if(!Yy(n,t))return;let[r]=n.consequent,i=n.consequent.at(-1);r===void 0||i===void 0||e.report({fix(e){return[e.insertTextBefore(r,`{
|
|
8
|
+
`&&(t+=1);return t}const la=t({create(e){let{maxLines:t=0}=e.options[0]??{};return{"Program:exit"(){let n=Gi(e.sourceCode.getAllComments(),e.sourceCode);for(let r of n){let n=r.value.trim();if(n===`}`||ca(r.value)<=t||!sa(Ji(n),e.filename))continue;let i=r.comments.at(0),a=r.comments.at(-1);i&&a&&e.report({loc:{end:a.loc.end,start:i.loc.start},messageId:`commentedCode`,suggest:[{desc:`Remove this commented out code`,fix(e){return e.removeRange([i.range[0],a.range[1]])}}]})}}}},meta:{docs:{description:`Disallow commented-out code`,recommended:!1},hasSuggestions:!0,messages:{commentedCode:`Commented-out code creates confusion about intent and clutters the codebase. Version control preserves history, making dead code comments unnecessary. Delete the commented code entirely. If needed later, retrieve it from git history.`},schema:[{additionalProperties:!1,properties:{maxLines:{default:0,description:`Maximum number of lines of commented code allowed without reporting. Default 0 means any commented code triggers an error.`,type:`number`}},type:`object`}],type:`suggestion`}});function R(e){return{constant:!0,value:e}}function ua(){return{constant:!1}}function da(e){return{constant:!0,value:e}}function fa(){return{constant:!1}}function pa(e){let t=new Set;if(!e?.loopExitCalls)return t;for(let n of e.loopExitCalls)ne(n)&&t.add(n);return t}function ma(e){let t=w(e);if(t.type===`Identifier`)return t.name;if(t.type!==`MemberExpression`)return;let n=ma(t.object);if(n===void 0||n.length===0)return;let r=T(t);if(!(r===void 0||r.length===0))return`${n}.${r}`}function ha(e,t){if(t.size===0)return!1;let n=ma(e.callee);return n===void 0||n.length===0?!1:t.has(n)}function ga(e,t){return z(e.type===`SpreadElement`?e.argument:e,t)}function z(e,t){if(t.size===0)return!1;let n=w(e);switch(n.type){case`ArrayExpression`:return _a(n,t);case`ArrowFunctionExpression`:case`ClassExpression`:case`FunctionExpression`:return!1;case`AssignmentExpression`:return z(n.right,t);case`AwaitExpression`:return z(n.argument,t);case`BinaryExpression`:return va(n,t);case`CallExpression`:return ya(n,t);case`ConditionalExpression`:return ba(n,t);case`LogicalExpression`:return xa(n,t);case`MemberExpression`:return Sa(n,t);case`NewExpression`:return Ca(n,t);case`SequenceExpression`:return n.expressions.some(e=>z(e,t));case`TaggedTemplateExpression`:return wa(n,t);case`TemplateLiteral`:return n.expressions.some(e=>z(e,t));case`UnaryExpression`:case`UpdateExpression`:return z(n.argument,t);case`YieldExpression`:return n.argument?z(n.argument,t):!1;default:return!1}}function _a(e,t){for(let n of e.elements)if(n!==null&&ga(n,t))return!0;return!1}function va(e,t){let{left:n}=e;return n.type!==`PrivateIdentifier`&&z(n,t)?!0:z(e.right,t)}function ya(e,t){return ha(e,t)||z(e.callee,t)?!0:e.arguments.some(e=>ga(e,t))}function ba(e,t){return z(e.test,t)||z(e.consequent,t)||z(e.alternate,t)}function xa(e,t){return z(e.left,t)||z(e.right,t)}function Sa(e,t){return z(e.object,t)?!0:e.computed&&z(e.property,t)}function Ca(e,t){return z(e.callee,t)?!0:e.arguments.some(e=>ga(e,t))}function wa(e,t){return z(e.tag,t)?!0:e.quasi.expressions.some(e=>z(e,t))}function Ta(e){let t=w(e);switch(t.type){case`ArrayExpression`:return R([]);case`ArrowFunctionExpression`:case`ClassExpression`:case`FunctionExpression`:return R(!0);case`Identifier`:return t.name===`undefined`?R(void 0):t.name===`NaN`?R(NaN):t.name===`Infinity`?R(1/0):ua();case`Literal`:return R(t.value);case`LogicalExpression`:return Ea(t);case`ObjectExpression`:return R({});case`SequenceExpression`:{let e=t.expressions.at(-1);return e?Ta(e):ua()}case`TemplateLiteral`:return t.expressions.length>0?ua():t.quasis.length===0?R(``):R(t.quasis[0]?.value.cooked??``);case`UnaryExpression`:return Da(t);default:return ua()}}function Ea(e){let t=Ta(e.left);return t.constant?e.operator===`&&`?t.value===!0?Ta(e.right):R(t.value):e.operator===`||`?t.value===!0?R(t.value):Ta(e.right):t.value===void 0?Ta(e.right):R(t.value):ua()}function Da(e){if(e.operator===`typeof`)return R(`string`);if(e.operator===`void`)return R(void 0);let t=Ta(e.argument);return t.constant?e.operator===`!`?R(!t.value):e.operator===`+`&&b(t.value)?R(t.value):e.operator===`-`&&b(t.value)?R(-t.value):e.operator===`~`&&b(t.value)?R(~t.value):ua():ua()}function B(e){let t=w(e);if(t.type===`ConditionalExpression`)return Oa(t);if(t.type===`LogicalExpression`)return ka(t);if(t.type===`SequenceExpression`){let e=t.expressions.at(-1);return e?B(e):fa()}let n=Ta(t);return n.constant?da(!!n.value):fa()}function Oa(e){let t=B(e.test);if(t.constant)return B(t.value===!0?e.consequent:e.alternate);let n=B(e.consequent),r=B(e.alternate);return n.constant&&r.constant&&n.value===r.value?n:fa()}function ka(e){let t=B(e.left);if(!t.constant)return fa();if(e.operator===`&&`)return t.value?B(e.right):da(!1);if(e.operator===`||`)return t.value===!0?da(!0):B(e.right);let n=Ta(e.left);return n.constant?n.value===void 0?B(e.right):da(!!n.value):fa()}const Aa=new Set([`DoWhileStatement`,`ForInStatement`,`ForOfStatement`,`ForStatement`,`WhileStatement`]);function ja(e){return Aa.has(e.type)}function Ma(e,t){let n=t;for(;n!==null;){if(n.type===`LabeledStatement`&&n.label.name===e)return n.body;if(n.type===`Program`)return;n=n.parent}}function Na(e,t){if(e.label)return Ma(e.label.name,e.parent)===t;let n=e.parent;for(;n!==null;){if(n.type===`Program`||N(n)||n.type===`SwitchStatement`)return!1;if(ja(n))return n===t;n=n.parent}return!1}function Pa(e,t){return e?e.type===`VariableDeclaration`?e.declarations.some(e=>e.init?z(e.init,t):!1):z(e,t):!1}function Fa(e,t){switch(e.type){case`DoWhileStatement`:case`WhileStatement`:return z(e.test,t);case`ForInStatement`:case`ForOfStatement`:return z(e.right,t);case`ForStatement`:return!!(Pa(e.init,t)||e.test&&z(e.test,t)||e.update&&z(e.update,t));default:return!1}}function V(e,t,n){switch(e.type){case`BlockStatement`:return e.body.some(e=>V(e,t,n));case`BreakStatement`:return Na(e,t);case`DoWhileStatement`:case`WhileStatement`:return Ia(e,t,n);case`ExpressionStatement`:return z(e.expression,n);case`ForInStatement`:case`ForOfStatement`:return La(e,t,n);case`ForStatement`:return Ra(e,t,n);case`IfStatement`:return za(e,t,n);case`LabeledStatement`:return V(e.body,t,n);case`ReturnStatement`:return!0;case`SwitchStatement`:return e.cases.some(e=>e.consequent.some(e=>V(e,t,n)));case`TryStatement`:return Ba(e,t,n);case`VariableDeclaration`:return e.declarations.some(e=>e.init?z(e.init,n):!1);case`WithStatement`:return Va(e,t,n);default:return!1}}function Ia(e,t,n){return z(e.test,n)?!0:V(e.body,t,n)}function La(e,t,n){return z(e.right,n)?!0:V(e.body,t,n)}function Ra(e,t,n){return Pa(e.init,n)||e.test&&z(e.test,n)||e.update&&z(e.update,n)?!0:V(e.body,t,n)}function za(e,t,n){return V(e.consequent,t,n)?!0:e.alternate?V(e.alternate,t,n):!1}function Ba(e,t,n){return!!(V(e.block,t,n)||e.handler&&V(e.handler.body,t,n)||e.finalizer&&V(e.finalizer,t,n))}function Va(e,t,n){return z(e.object,n)?!0:V(e.body,t,n)}function Ha(e,t,n){return e.constant?!e.value||!Fa(t,n)&&!V(t.body,t,n):!1}const Ua=t({create(e){let t=e.options?.[0],n=pa(typeof t==`object`&&t?t:void 0);function r(t){B(t).constant&&e.report({messageId:`unexpected`,node:t})}function i(t,r){Ha(B(r),t,n)&&e.report({messageId:`unexpected`,node:r})}return{ConditionalExpression(e){r(e.test)},DoWhileStatement(e){i(e,e.test)},ForStatement(e){e.test&&i(e,e.test)},IfStatement(e){r(e.test)},WhileStatement(e){i(e,e.test)}}},meta:{docs:{description:`Disallow constant conditions, but allow constant loops that include loop exits such as break, return, or configured calls.`},messages:{unexpected:`Unexpected constant condition.`},schema:[{additionalProperties:!1,properties:{loopExitCalls:{items:{minLength:1,type:`string`},type:`array`}},type:`object`}],type:`problem`}});function Wa(e){let n=`CallExpression[callee.type="Identifier"][callee.name="${e.name}"]`;return t({create(t){return{[n](n){t.report({messageId:e.messageId,node:n})}}},meta:{docs:{description:`Use ${e.alternative} instead of ${e.name}().`},messages:{[e.messageId]:e.message.replaceAll(`{{name}}`,e.name).replaceAll(`{{alternative}}`,e.alternative)},schema:[],type:`problem`}})}const Ga=Wa({alternative:`throw`,message:`Replace {{name}}(...) with {{alternative}}.`,messageId:`noError`,name:`error`});function Ka(e){let t=new Set;if(!e?.eventsImportPaths)return t;for(let n of e.eventsImportPaths)ne(n)&&t.add(n);return t}function qa(e){switch(e.type){case`ChainExpression`:case`ParenthesizedExpression`:case`TSAsExpression`:case`TSInstantiationExpression`:case`TSNonNullExpression`:case`TSTypeAssertion`:return qa(e.expression);default:return e}}function Ja(e){let t=qa(e);if(t.type===`Identifier`)return t.name;if(t.type===`MemberExpression`)return Ja(t.object)}function Ya(e,t){let n=qa(e.callee);if(n.type!==`MemberExpression`||T(n)!==`connect`)return;let r=Ja(n.object);if(r===void 0||!t.has(r))return;let[i]=e.arguments;if(i)switch(i.type){case`ArrowFunctionExpression`:case`FunctionExpression`:return i;default:return}}function Xa(e,t){let n=qa(e.callee);if(n.type!==`MemberExpression`)return!1;let r=Ja(n);return r!==void 0&&t.has(r)}function Za(e,t){return e.has(t)?!1:(e.add(t),!0)}function Qa(e,t){return Za(t.playerValues,e)}function $a(e,t){return Za(t.playerContainers,e)}function H(e,t){switch(e.type){case`ArrayPattern`:{let n=!1;for(let r of e.elements)r&&(n=H(r,t)||n);return n}case`AssignmentPattern`:return H(e.left,t);case`Identifier`:return Qa(e.name,t);case`ObjectPattern`:{let n=!1;for(let r of e.properties){if(r.type===`RestElement`){n=H(r.argument,t)||n;continue}n=H(r.value,t)||n}return n}case`RestElement`:return H(e.argument,t);default:return!1}}function eo(e,t,n){return t===0?!1:e.type===`Identifier`?t===2?Qa(e.name,n):$a(e.name,n):H(e,n)}function to(e,t,n){return e.type===`MemberExpression`||t===0?!1:e.type===`ArrayPattern`||e.type===`AssignmentPattern`||e.type===`Identifier`||e.type===`ObjectPattern`||e.type===`RestElement`?e.type===`Identifier`?t===2?Qa(e.name,n):$a(e.name,n):H(e,n):!1}function U(e,t){let n=qa(e);switch(n.type){case`ArrayExpression`:return no(n,t);case`AssignmentExpression`:return U(n.right,t);case`ConditionalExpression`:return ro(n,t);case`Identifier`:return t.playerValues.has(n.name)?2:+!!t.playerContainers.has(n.name);case`MemberExpression`:return io(n,t);case`ObjectExpression`:return ao(n,t);case`SequenceExpression`:{let e=n.expressions.at(-1);return e===void 0?0:U(e,t)}default:return 0}}function no(e,t){for(let n of e.elements)if(n!==null&&U(n.type===`SpreadElement`?n.argument:n,t)!==0)return 1;return 0}function ro(e,t){let n=U(e.consequent,t);return n===U(e.alternate,t)?n:0}function io(e,t){return U(e.object,t)===1?2:0}function ao(e,t){for(let n of e.properties)if(U(n.type===`SpreadElement`?n.argument:n.value,t)!==0)return 1;return 0}function oo(e,t){if(e.type===`TSParameterProperty`){H(e.parameter,t);return}H(e,t)}const so=t({create(e){let t=Ka(e.options[0]),n=new Set,r=new WeakMap,i=[];function a(){let e=i.at(-1);if(e?.callbackState&&!(e.callbackDepth>0))return e.callbackState}function o(e){if(e.type!==`FunctionDeclaration`){let t=r.get(e);if(t){i.push({callbackDepth:0,callbackState:t});return}}let t=i.at(-1);if(!t?.callbackState){i.push({callbackDepth:0,callbackState:void 0});return}i.push({callbackDepth:t.callbackDepth+1,callbackState:t.callbackState})}function s(){i.pop()}return{ArrowFunctionExpression:o,"ArrowFunctionExpression:exit":s,AssignmentExpression(e){let t=a();if(!t||e.operator!==`=`)return;let n=U(e.right,t);n!==0&&to(e.left,n,t)},CallExpression(t){let i=Ya(t,n);if(i){let e={playerContainers:new Set,playerValues:new Set},[t]=i.params;t&&oo(t,e),r.set(i,e)}let o=a();if(!(o&&Xa(t,n)))return;let[s]=t.arguments;!s||s.type===`SpreadElement`||U(s,o)!==2||e.report({messageId:`preferFunctions`,node:t})},FunctionDeclaration:o,"FunctionDeclaration:exit":s,FunctionExpression:o,"FunctionExpression:exit":s,ImportDeclaration(e){let r=e.source.value;if(t.has(r))for(let t of e.specifiers){if(t.type===`ImportDefaultSpecifier`){t.local.name===`Events`&&n.add(t.local.name);continue}if(t.type===`ImportSpecifier`){if(t.imported.type===`Identifier`&&t.imported.name===`Events`){n.add(t.local.name);continue}t.imported.type===`Literal`&&t.imported.value===`Events`&&n.add(t.local.name)}}},VariableDeclarator(e){let t=a();if(!(t&&e.init))return;let n=U(e.init,t);n!==0&&eo(e.id,n,t)}}},meta:{docs:{description:`Disallow sending Events back to the same player inside an Events.connect callback; use Functions for request/response.`},messages:{preferFunctions:`Do not call Events for the same player inside an Events.connect callback. Use a Functions callback instead.`},schema:[{additionalProperties:!1,properties:{eventsImportPaths:{items:{minLength:1,type:`string`},type:`array`}},required:[`eventsImportPaths`],type:`object`}],type:`problem`}}),co=/^[A-Z]/u;function W(e){return co.test(e)}function lo(e){return e.type===`FunctionDeclaration`&&e.id!==null&&W(e.id.name)}function uo(e){return e.type===`CallExpression`?e.callee.type===`Identifier`?e.callee.name===`memo`:e.callee.type===`MemberExpression`&&e.callee.object.type===`Identifier`&&e.callee.object.name===`React`&&e.callee.property.type===`Identifier`&&e.callee.property.name===`memo`:!1}function fo({callee:e}){return e.type===`Identifier`?e.name===`forwardRef`||e.name===`memo`:e.type===`MemberExpression`&&e.object.type===`Identifier`&&e.object.name===`React`&&e.property.type===`Identifier`&&(e.property.name===`forwardRef`||e.property.name===`memo`)}function po({name:e}){return e.type===`JSXIdentifier`?e.name:e.name.name}function mo(e,t){for(let n of e.openingElement.attributes)if(n.type===`JSXAttribute`&&n.name.type===`JSXIdentifier`&&n.name.name===t)return!0;return!1}function ho(e,t){if(e.type!==`JSXIdentifier`)return!1;let n=e.name.charAt(0);return n!==``&&n===n.toLowerCase()||t.has(e.name)}function go(e){if(e.type===`BinaryExpression`)switch(e.operator){case`%`:case`*`:case`**`:case`+`:case`-`:case`/`:return go(e.left)&&go(e.right);default:return!1}return e.type===`Identifier`||e.type===`Literal`?!0:e.type===`MemberExpression`?!e.computed&&go(e.object):e.type===`ParenthesizedExpression`?go(e.expression):e.type===`TemplateLiteral`?e.expressions.length===0:e.type===`UnaryExpression`&&go(e.argument)}function _o(e,t){return e?.type===`CallExpression`&&e.callee.type===`Identifier`&&(y(t)?e.callee.name===t:t.has(e.callee.name))}function vo(e){return e.type===`VariableDeclarator`&&e.id.type===`Identifier`&&W(e.id.name)&&e.init!==null&&(e.init.type===`ArrowFunctionExpression`||e.init.type===`FunctionExpression`)}function yo(e){return e.loc.end.line-e.loc.start.line+1}function bo(e){if(!(e.type!==`FunctionDeclaration`||!lo(e)||e.id===null||e.body===null)&&D(e.id)&&`name`in e.id&&y(e.id.name))return{body:e.body,name:e.id.name,nameNode:e.id}}function xo(e){if(e.type!==`VariableDeclarator`||!vo(e)||e.init===null||!(`name`in e.id&&y(e.id.name))||e.init.type!==`ArrowFunctionExpression`&&e.init.type!==`FunctionExpression`||!D(e.init.body))return;let{name:t}=e.id;return{body:e.init.body,name:t,nameNode:e.id}}const So=t({create(e){function t(t,n,r){let i=yo(r);i<=300||e.report({data:{lineCount:String(i),name:n},messageId:`giantComponent`,node:t})}return{FunctionDeclaration(e){let n=bo(e);n!==void 0&&t(n.nameNode,n.name,n.body)},VariableDeclarator(e){let n=xo(e);n!==void 0&&t(n.nameNode,n.name,n.body)}}},meta:{docs:{description:`Report React components whose bodies exceed the configured size threshold.`,recommended:!0},messages:{giantComponent:`Component "{{name}}" is {{lineCount}} lines — consider breaking it into smaller focused components`},type:`problem`}}),Co=new Set([`ArrowFunctionExpression`,`FunctionDeclaration`,`FunctionExpression`]);function wo(e){if(e.type===`FunctionDeclaration`&&e.id!==null&&O(e.id.name))return e.id.name;if(e.type===`FunctionExpression`||e.type===`ArrowFunctionExpression`){let{parent:t}=e;if(t.type===`VariableDeclarator`&&t.id.type===`Identifier`&&O(t.id.name))return t.id.name;if(t.type===`Property`&&t.key.type===`Identifier`&&O(t.key.name)||t.type===`MethodDefinition`&&t.key.type===`Identifier`&&O(t.key.name))return t.key.name}}function To(e){let{parent:t}=e;if(t.type===`VariableDeclarator`&&t.id.type===`Identifier`&&O(t.id.name))return t.id.name;if(t.type===`AssignmentExpression`&&t.left.type===`Identifier`&&O(t.left.name))return t.left.name;let n;if(t.type===`ExportDefaultDeclaration`&&e.arguments.length>0){let[t]=e.arguments;t?.type===`FunctionExpression`&&t.id&&O(t.id.name)&&(n=t.id.name)}return n}function Eo(e){if(!He(e))return;let[t]=e.params;if(!t)return;let n;if(t.type===`ObjectPattern`&&(n=t),t.type===`AssignmentPattern`&&t.left.type===`ObjectPattern`&&(n=t.left),!n)return;let r=0;for(let e of n.properties)e.type===`Property`&&(r+=1);return r}function Do(e,t){return t?.type===`TSLiteralType`}function Oo(e,t){if(!He(e)||e.body===null)return{maxJsxDepth:0,nullLiterals:[],stateHookCount:0};let n=0,r=0,i=[],a=0;return Rr(e.body,o=>{if(!(Co.has(o.type)&&o!==e)){if(o.type===`JSXElement`||o.type===`JSXFragment`){a+=1,a>n&&(n=a);return}if(o.type===`CallExpression`){let e=L(o);e!==void 0&&e.length>0&&t.has(e)&&(r+=1)}o.type===`Literal`&&o.value===null&&!Do(o,o.parent)&&i.push(o)}}),{maxJsxDepth:n,nullLiterals:i,stateHookCount:r}}function ko(e){let t={enforceTargetLines:!0,ignoreComponents:[],maxDestructuredProps:5,maxLines:200,maxStateHooks:5,maxTsxNesting:3,stateHooks:[`useState`,`useReducer`,`useBinding`],targetLines:120};if(typeof e!=`object`||!e)return t;let n=e;return{enforceTargetLines:typeof n.enforceTargetLines==`boolean`?n.enforceTargetLines:t.enforceTargetLines,ignoreComponents:Array.isArray(n.ignoreComponents)?n.ignoreComponents:t.ignoreComponents,maxDestructuredProps:b(n.maxDestructuredProps)?n.maxDestructuredProps:t.maxDestructuredProps,maxLines:b(n.maxLines)?n.maxLines:t.maxLines,maxStateHooks:b(n.maxStateHooks)?n.maxStateHooks:t.maxStateHooks,maxTsxNesting:b(n.maxTsxNesting)?n.maxTsxNesting:t.maxTsxNesting,stateHooks:Array.isArray(n.stateHooks)?n.stateHooks:t.stateHooks,targetLines:b(n.targetLines)?n.targetLines:t.targetLines}}const Ao=t({create(e){let t=ko(e.options[0]),n=new Set(t.ignoreComponents),r=new Set(t.stateHooks),i=new WeakSet;function a(a,o){if(n.has(o)||i.has(a))return;i.add(a);let s=a.loc,c=s.end.line-s.start.line+1;c>t.maxLines?e.report({data:{lines:String(c),max:String(t.maxLines),name:o,target:String(t.targetLines)},messageId:`exceedsMaxLines`,node:a}):t.enforceTargetLines&&c>t.targetLines&&e.report({data:{lines:String(c),max:String(t.maxLines),name:o,target:String(t.targetLines)},messageId:`exceedsTargetLines`,node:a});let l=Eo(a);b(l)&&l>t.maxDestructuredProps&&e.report({data:{count:String(l),max:String(t.maxDestructuredProps),name:o},messageId:`tooManyProps`,node:a});let u=Oo(a,r);u.maxJsxDepth>t.maxTsxNesting&&e.report({data:{depth:String(u.maxJsxDepth),max:String(t.maxTsxNesting),name:o},messageId:`tsxNestingTooDeep`,node:a}),u.stateHookCount>t.maxStateHooks&&e.report({data:{count:String(u.stateHookCount),hooks:t.stateHooks.join(`, `),max:String(t.maxStateHooks),name:o},messageId:`tooManyStateHooks`,node:a});for(let t of u.nullLiterals)e.report({messageId:`nullLiteral`,node:t})}function o(e){let t=wo(e);t===void 0||t.length===0||a(e,t)}return{ArrowFunctionExpression:o,CallExpression(e){if(!fo(e))return;let[t]=e.arguments;if(!t||t.type!==`FunctionExpression`&&t.type!==`ArrowFunctionExpression`)return;let n=To(e),r=wo(t),i=n??r;i===void 0||i.length===0||a(t,i)},FunctionDeclaration(e){e.type===`FunctionDeclaration`&&o(e)},FunctionExpression(e){e.type===`FunctionExpression`&&o(e)}}},meta:{docs:{description:`Enforce React component size and complexity limits inspired by the 'Refactor God Component' checklist.`,recommended:!1},messages:{exceedsMaxLines:`Component '{{name}}' is {{lines}} lines; max allowed is {{max}}. Split into smaller components/hooks.`,exceedsTargetLines:`Component '{{name}}' is {{lines}} lines; target is {{target}} (max {{max}}). Consider extracting hooks/components.`,nullLiteral:"Avoid `null` in components; use `undefined` instead.",tooManyProps:`Component '{{name}}' destructures {{count}} props; max allowed is {{max}}. Group props or split the component.`,tooManyStateHooks:`Component '{{name}}' has {{count}} state hooks ({{hooks}}); max allowed is {{max}}. Extract cohesive state into a custom hook.`,tsxNestingTooDeep:`Component '{{name}}' has TSX nesting depth {{depth}}; max allowed is {{max}}. Extract child components.`},schema:[{additionalProperties:!1,properties:{enforceTargetLines:{default:!0,description:`Whether to report when exceeding targetLines (soft limit).`,type:`boolean`},ignoreComponents:{description:`Component names to ignore.`,items:{type:`string`},type:`array`},maxDestructuredProps:{default:5,description:`Maximum number of destructured props in a component parameter.`,type:`number`},maxLines:{default:200,description:`Hard maximum lines for a component.`,type:`number`},maxStateHooks:{default:5,description:`Maximum number of stateful hook calls in a component.`,type:`number`},maxTsxNesting:{default:3,description:`Maximum JSX/TSX nesting depth in a component.`,type:`number`},stateHooks:{default:[`useState`,`useReducer`,`useBinding`],description:`Hook names to count toward state complexity.`,items:{type:`string`},type:`array`},targetLines:{default:120,description:`Soft target lines for a component.`,type:`number`}},type:`object`}],type:`problem`}});function jo({callee:e}){if(e.type!==`CallExpression`)return!1;let t=e.callee;if(t.type!==`MemberExpression`)return!1;let{object:n}=t;return n.type===`Identifier`&&n.name===`Ianitor`}const Mo=t({create(e){let t=0;function n(){t+=1}function r(){--t}return{ArrowFunctionExpression:n,"ArrowFunctionExpression:exit":r,CallExpression(n){t===0||!jo(n)||e.report({messageId:`hoistIanitorValidator`,node:n})},FunctionDeclaration:n,"FunctionDeclaration:exit":r,FunctionExpression:n,"FunctionExpression:exit":r}},meta:{docs:{description:`Disallow Ianitor validator creation inside function bodies. Hoist to module scope to avoid recreating validators on every call.`,recommended:!0},messages:{hoistIanitorValidator:`Ianitor validator created inside function body is slow — hoist to module scope. Example: const validator = Ianitor.keyOf(ids);`},schema:[],type:`problem`}});function No(e){let t=w(e);if(t.type!==`CallExpression`)return!1;let n=w(t.callee);if(n.type!==`MemberExpression`||n.computed)return!1;let r=w(n.object);return r.type===`Identifier`&&r.name===`Ianitor`&&n.property.type===`Identifier`}function Po(e){for(let{node:t}of e.defs){if(t.type!==`VariableDeclarator`)continue;let{init:e}=t;if(e!==null&&No(e))return!0}return!1}function Fo(e,t){let n=w(e.callee);if(n.type===`CallExpression`)return No(n);if(n.type===`Identifier`){let r=E(t.getScope(e),n.name);return r!==void 0&&Po(r)}return!1}function Io(e){let t=!1;for(let n of e.properties)if(!(n.type!==`Property`||n.key.type!==`Identifier`)){if(n.key.name===`error`||n.key.name===`value`)return!1;n.key.name===`success`&&(t=!0)}return t}function Lo(e){for(let t of e.properties)if(t.type===`Property`&&t.key.type===`Identifier`&&t.key.name===`success`)return t.key}const Ro=t({create(e){let{sourceCode:t}=e,n=new Set,r=new Map;function i(e){let t=r.get(e);t!==void 0&&(t.referencedFully=!0)}return{CallExpression(e){for(let t of e.arguments)if(t.type===`Identifier`){let e=r.get(t.name);e!==void 0&&(e.referencedFully=!0)}},MemberExpression({computed:n,object:i,property:a}){if(n||a.type!==`Identifier`)return;let o=w(i);if(o.type===`CallExpression`&&a.name===`success`){Fo(o,t)&&e.report({messageId:`preferCreateGuard`,node:a});return}if(o.type===`Identifier`){let e=r.get(o.name);e!==void 0&&e.properties.add(a.name)}},"Program:exit"(){for(let[,{firstSuccessNode:t,properties:n,referencedFully:i}]of r)n.has(`success`)&&!n.has(`error`)&&!n.has(`value`)&&!i&&e.report({messageId:`preferCreateGuard`,node:t})},ReturnStatement({argument:e}){e?.type===`Identifier`&&i(e.name)},VariableDeclarator({id:i,init:a}){if(a===null)return;let o=w(a);if(o.type===`CallExpression`){if(i.type===`Identifier`&&No(o)){n.add(i.name);return}if(i.type===`ObjectPattern`&&Fo(o,t)&&Io(i)){let t=Lo(i);t!==void 0&&e.report({messageId:`preferCreateGuard`,node:t})}i.type===`Identifier`&&o.callee.type===`Identifier`&&n.has(o.callee.name)&&r.set(i.name,{firstSuccessNode:i,properties:new Set,referencedFully:!1})}}}},meta:{docs:{description:"Disallow accessing `.success` on Ianitor check results when the full result object is not needed."},messages:{preferCreateGuard:`Replace with Flamework.createGuard<T>(). Ianitor check results allocate a table on every call; Flamework.createGuard returns a plain boolean at runtime with zero allocation.`},schema:[],type:`suggestion`}}),zo=[`binding`];function Bo(e){if(e.type===`Identifier`)return e.name;if(e.type===`AssignmentPattern`&&e.left.type===`Identifier`)return e.left.name}function Vo({body:e},t){if(e.length!==1)return!1;let[n]=e;return n?.type!==`ReturnStatement`||n.argument?.type!==`Identifier`?!1:n.argument.name===t}function Ho(e){if(e.params.length!==1)return;let[t]=e.params;return t===void 0?void 0:Bo(t)}function Uo(e){if(e.type===`ArrowFunctionExpression`){let t=Ho(e);if(t===void 0)return!1;let{body:n}=e;switch(n.type){case`BlockStatement`:return Vo(n,t);case`Identifier`:return n.name===t;default:return!1}}if(e.type===`FunctionExpression`){let t=Ho(e);return t===void 0||e.body===null?!1:Vo(e.body,t)}return!1}function Wo(e){return L(e)===`joinBindings`}function Go(e){for(let t of e.defs){if(t.node.type!==`VariableDeclarator`)continue;let{init:e}=t.node;if(e?.type===`CallExpression`&&(L(e)===`useBinding`||Wo(e)||e.callee.type===`MemberExpression`&&T(e.callee)===`map`))return!0}return!1}function Ko(e,{object:t},n){if(t.type===`Identifier`){let r=t.name.toLowerCase();for(let e of n)if(r.includes(e.toLowerCase()))return!0;let i=E(e.getScope(t),t.name);if(i!==void 0&&Go(i))return!0}return t.type===`CallExpression`&&(t.callee.type===`MemberExpression`&&T(t.callee)===`map`||Wo(t))}const qo=t({create(e){let{sourceCode:t}=e,[n]=e.options,r=n?.bindingPatterns??zo;return{CallExpression(n){let{callee:i}=n;if(i.type!==`MemberExpression`||i.computed||i.property.type!==`Identifier`||T(i)!==`map`||n.arguments.length!==1)return;let[a]=n.arguments;if(a===void 0||a.type===`SpreadElement`||!Uo(a))return;let o=Ko(t,i,r);e.report({fix(e){return e.replaceText(n,t.getText(i.object))},messageId:o?`identityBindingMap`:`identityArrayMap`,node:n})}}},meta:{docs:{description:"Disallow pointless identity `.map()` calls that return the parameter unchanged"},fixable:`code`,messages:{identityArrayMap:"Pointless identity `.map()` call on Array. Use `table.clone(array)` or `[...array]` instead.",identityBindingMap:"Pointless identity `.map()` call on Binding. Use the original binding directly."},schema:[{additionalProperties:!1,properties:{bindingPatterns:{default:[...zo],description:`Variable name patterns to recognize as Bindings (case insensitive)`,items:{type:`string`},type:`array`}},type:`object`}],type:`suggestion`}});function Jo(e){let{parent:t}=e;return t?.type===`ExpressionStatement`||t?.type===`ForStatement`&&t.update===e}const Yo=t({create(e){let[t]=e.options,n=Tr(t)&&t.allowAutofix,{sourceCode:r}=e;return{UpdateExpression(t){if(!Jo(t))return;let i=r.getText(t.argument),a=t.operator===`++`?`noIncrement`:`noDecrement`;if(!n){e.report({messageId:a,node:t});return}let o=t.operator===`++`?`${i} += 1`:`${i} -= 1`;e.report({fix(e){return e.replaceText(t,o)},messageId:a,node:t})}}},meta:{docs:{description:"Disallow standalone `++` and `--` statements.",recommended:!0},fixable:`code`,messages:{noDecrement:"Do not use standalone `--`. Use `-= 1` instead.",noIncrement:"Do not use standalone `++`. Use `+= 1` instead."},schema:[{additionalProperties:!1,properties:{allowAutofix:{default:!1,type:`boolean`}},type:`object`}],type:`suggestion`}});function Xo(e){return e.name.type===`JSXIdentifier`?e.name.name:void 0}function Zo(e){switch(e.type){case`ArrayExpression`:return`array`;case`ArrowFunctionExpression`:case`FunctionExpression`:return`function`;case`JSXElement`:case`JSXFragment`:return`JSX`;case`ObjectExpression`:return`object`;default:return}}const Qo=t({create(e){let t=new Set;return{JSXAttribute(n){if(n.value?.type!==`JSXExpressionContainer`||n.value.expression.type===`JSXEmptyExpression`)return;let r=n.parent;if(!he(r))return;let i=Xo(r);if(i===void 0||!t.has(i))return;let a=Zo(n.value.expression);a!==void 0&&e.report({data:{name:i,type:a},messageId:`inlineProperty`,node:n.value.expression})},VariableDeclarator(e){e.id.type===`Identifier`&&e.init!==null&&uo(e.init)&&t.add(e.id.name)}}},meta:{docs:{description:`Prevent inline properties from being passed to memoized components.`,recommended:!0},messages:{inlineProperty:`Inline {{type}} passed to memoized component "{{name}}" — new references cause unnecessary re-renders`},type:`problem`}}),$o={checkPrivate:!0,checkProtected:!0,checkPublic:!0};function es(e){return x(e)?{checkPrivate:typeof e.checkPrivate!=`boolean`||e.checkPrivate,checkProtected:typeof e.checkProtected!=`boolean`||e.checkProtected,checkPublic:typeof e.checkPublic!=`boolean`||e.checkPublic}:$o}function ts(e,t){if(e.static||e.kind!==`method`)return!1;let n=e.accessibility??`public`;return!(n===`private`&&!t.checkPrivate||n===`protected`&&!t.checkProtected||n===`public`&&!t.checkPublic)}function ns(e,t){if(t.has(e))return!1;if(t.add(e),e.type===`ThisExpression`||e.type===`Super`)return!0;if(!x(e))return!1;for(let n in e)if(Object.hasOwn(e,n)&&rs(e[n],t))return!0;return!1}function rs(e,t){if(Array.isArray(e)){for(let n of e)if(D(n)&&ns(n,t))return!0;return!1}return D(e)&&ns(e,t)}function is({value:e}){return e.type===`FunctionExpression`&&ns(e,new WeakSet)}function as(e){return e.key.type===`Identifier`?e.key.name:`unknown`}const os=t({create(e){let t=es(e.options[0]);return{MethodDefinition(n){!ts(n,t)||is(n)||e.report({data:{methodName:as(n)},messageId:`noInstanceMethodWithoutThis`,node:n})}}},meta:{docs:{description:`Detect instance methods that do not use 'this' and suggest converting them to standalone functions for better performance in roblox-ts.`},messages:{noInstanceMethodWithoutThis:`Method '{{methodName}}' does not use 'this' and creates unnecessary metatable overhead in roblox-ts. Convert it to a standalone function for better performance.`},schema:[{additionalProperties:!1,properties:{checkPrivate:{default:!0,description:`Check private methods (default: true)`,type:`boolean`},checkProtected:{default:!0,description:`Check protected methods (default: true)`,type:`boolean`},checkPublic:{default:!0,description:`Check public methods (default: true)`,type:`boolean`}},type:`object`}],type:`problem`}}),ss=[`Axes`,`BrickColor`,`CFrame`,`Color3`,`ColorSequence`,`ColorSequenceKeypoint`,`DateTime`,`Enum`,`Faces`,`NumberRange`,`NumberSequence`,`NumberSequenceKeypoint`,`PathWaypoint`,`PhysicalProperties`,`Ray`,`Rect`,`Region3`,`Region3int16`,`TweenInfo`,`UDim`,`UDim2`,`Vector2`,`Vector3`,`Vector3int16`,`Vector3int32`],cs=new Set([`!`,`+`,`-`,`typeof`,`void`,`~`]),ls=new Set(`ArrayExpression.ArrowFunctionExpression.AssignmentExpression.AwaitExpression.BinaryExpression.CallExpression.ChainExpression.ClassExpression.ConditionalExpression.FunctionExpression.Identifier.ImportExpression.Literal.LogicalExpression.MemberExpression.MetaProperty.NewExpression.ObjectExpression.ParenthesizedExpression.SequenceExpression.Super.TaggedTemplateExpression.TemplateLiteral.ThisExpression.TSAsExpression.TSInstantiationExpression.TSNonNullExpression.TSSatisfiesExpression.TSTypeAssertion.UnaryExpression.UpdateExpression.YieldExpression`.split(`.`));function us(e){return ls.has(e.type)}function G(e){return e.type===`module`||e.type===`global`}function ds(e){for(let t of e.defs)if(t.type===`ImportBinding`)return!0;return!1}function fs(e){return e.type===`Variable`}function ps(e){if(!fs(e))return;let t=e.node;if(t.type!==`VariableDeclarator`)return;let{parent:n}=t;if(!(n.type!==`VariableDeclaration`||n.kind!==`const`))return t.init??void 0}function ms(e,t){let n=E(e.getScope(t),t.name);if(!(n===void 0||!G(n.scope)))for(let e of n.defs){let t=ps(e);if(t!==void 0)return t}}function hs(e,t){let n=E(e.getScope(t),t.name);if(n!==void 0)for(let e of n.defs){let t=ps(e);if(t!==void 0)return t}}function gs(e,t,n){let r=w(t);if(n.has(r))return!1;if(n.add(r),r.type===`Identifier`&&r.name===`undefined`||r.type===`UnaryExpression`&&r.operator===`void`)return!0;if(r.type!==`Identifier`)return!1;let i=hs(e,r);return i!==void 0&&gs(e,i,n)}function _s(e,t,n,r){return t.type===`Identifier`?!0:us(t)?K(e,t,n,r):!1}function vs(e,t,n,r){let i=w(t);return i.type===`Identifier`?bs(e,i,n,r):i.type!==`MemberExpression`||!K(e,i.object,n,r)?!1:i.computed?K(e,i.property,n,r):i.property.type===`Identifier`}function ys(e,t,n,r,i){return vs(e,n,r,i)?t.every(t=>t.type!==`SpreadElement`&&K(e,t,r,i)):!1}function K(e,t,n,r){let i=w(t);if(n.has(i))return!1;switch(n.add(i),i.type){case`ArrayExpression`:return Cs(e,i,n,r);case`BinaryExpression`:case`LogicalExpression`:return us(i.left)?K(e,i.left,n,r)&&K(e,i.right,n,r):!1;case`CallExpression`:return ys(e,i.arguments,i.callee,n,r);case`ChainExpression`:return K(e,i.expression,n,r);case`ConditionalExpression`:return K(e,i.test,n,r)&&K(e,i.consequent,n,r)&&K(e,i.alternate,n,r);case`Identifier`:return bs(e,i,n,r);case`Literal`:return!0;case`MemberExpression`:return K(e,i.object,n,r)&&(!i.computed||_s(e,i.property,n,r));case`NewExpression`:return ys(e,i.arguments,i.callee,n,r);case`ObjectExpression`:return Ss(e,i,n,r);case`SequenceExpression`:return i.expressions.length>0&&i.expressions.every(t=>K(e,t,n,r));case`TemplateLiteral`:return i.expressions.length===0;case`UnaryExpression`:return cs.has(i.operator)&&K(e,i.argument,n,r);default:return!1}}function bs(e,t,n,r){let i=E(e.getScope(t),t.name);if(i===void 0)return r.staticGlobalFactories.has(t.name);if(!G(i.scope))return!1;if(ds(i))return!0;for(let t of i.defs){let i=ps(t);if(i!==void 0&&K(e,i,n,r))return!0}return!1}function xs(e){return e.type!==`PrivateIdentifier`&&e.type!==`Identifier`}function Ss(e,t,n,r){for(let i of t.properties)if(i.type!==`Property`||i.kind!==`init`||i.computed&&xs(i.key)&&!K(e,i.key,n,r)||!K(e,i.value,n,r))return!1;return!0}function Cs(e,{elements:t},n,r){for(let i of t)if(i===null||i.type===`SpreadElement`||!K(e,i,n,r))return!1;return!0}function ws(e){return e.type===`JSXIdentifier`?e.name:e.name.name}function Ts(e){return e===`nativeProperties`||e.endsWith(`NativeProperties`)}function Es(e){if(!(e.type!==`Variable`||e.node.type!==`VariableDeclarator`))return e.node.init??void 0}function Ds(e){let t=w(e);for(;t.type===`MemberExpression`;){let e=w(t.object);if(e.type===`Identifier`)return e;if(e.type!==`MemberExpression`)return;t=e}return t.type===`Identifier`?t:void 0}function Os(e,t){let n=w(t);if(n.type===`ObjectExpression`)return!0;let r=Ds(n);if(r===void 0)return!1;let i=E(e.getScope(r),r.name);return i===void 0?!1:ds(i)||G(i.scope)}function ks(e,t,n){let r=w(t);if(n.has(r))return;if(n.add(r),r.type===`ObjectExpression`)return r;if(r.type!==`Identifier`)return;let i=E(e.getScope(r),r.name);if(!(i===void 0||G(i.scope)))for(let t of i.defs){let r=Es(t);if(r===void 0)continue;let i=ks(e,r,n);if(i!==void 0)return i}}const As=t({create(e){let{sourceCode:t}=e;function n(n,r){for(let i of n.properties){if(i.type!==`SpreadElement`||!Os(t,i.argument))continue;let n=t.getText(i.argument);e.report({data:`propertyName`in r?{prop:r.propertyName,source:n}:{source:n},messageId:r.messageId,node:i})}}return{JSXAttribute(e){let r=ws(e.name);if(r===void 0||!Ts(r))return;let{value:i}=e;if(i?.type!==`JSXExpressionContainer`)return;let{expression:a}=i;if(a.type===`JSXEmptyExpression`)return;let o=ks(t,a,new Set);o!==void 0&&n(o,{messageId:`noNativePropertiesSpread`,propertyName:r})},JSXSpreadAttribute(e){let r=ks(t,e.argument,new Set);r!==void 0&&n(r,{messageId:`noElementSpread`})}}},meta:{docs:{description:`Disallow spreading static property bags into nativeProperties/*NativeProperties props and onto JSX elements via intermediate objects, because the spread creates a new copied table every render.`,recommended:!0},messages:{noElementSpread:`Spreading static property bag {{source}} through an intermediate object creates a new table every render. Inline the full object properties directly on the JSX element.`,noNativePropertiesSpread:`Spreading static property bag {{source}} into {{prop}} creates a new table every render. Pass it directly or inline the full object instead.`},schema:[],type:`problem`}});function js(e){return e.parent.type===`ExpressionStatement`?!0:e.parent.type!==`UnaryExpression`||e.parent.operator!==`void`?!1:e.parent.parent.type===`ExpressionStatement`}function Ms(e,t,n,r){if(bn(e,t))for(let t of e.specifiers){if(t.type===`ImportSpecifier`){ue(t.imported,`useMemo`)&&n.add(t.local.name);continue}r.add(t.local.name)}}const Ns=new Set([`Instance`]);function Ps(e){let t=x(e)&&S(e.constructors)?new Set(e.constructors):Ns,n=x(e)&&e.environment===`standard`?`standard`:`roblox-ts`,r=x(e)?e.maxHelperTraceDepth:void 0;return{constructors:t,environment:n,maxHelperTraceDepth:re(r)&&Number.isInteger(r)&&r>=0?r:4}}function Fs(e){return e?.type===`CallExpression`}function Is(e,t,n){let r=e.parent;for(;r!==null;){if(Fe(r)){let{parent:e}=r;if(Fs(e)&&e.arguments[0]===r){if(!fe(e,t,n)){r=e.parent;continue}return!0}}r=r.parent}return!1}function Ls(e,t,n,r,i){let a=r.get(e);if(a!==void 0)return a;if(i.has(e))return new Set;i.add(e);let o=new Set;for(let a of e.defs){let e=Rs(a,t,n,r,i);for(let t of e)o.add(t)}return i.delete(e),r.set(e,o),o}function Rs(e,t,n,r,i){if(e.type===`FunctionName`)return zs(e,n);if(e.type!==`Variable`)return new Set;let{node:a}=e;if(a.type!==`VariableDeclarator`||a.init===null)return new Set;let o=w(a.init);if(Fe(o))return Bs(o,n);if(o.type!==`Identifier`)return new Set;let s=E(t.getScope(o),o.name);return s===void 0?new Set:Ls(s,t,n,r,i)}function zs(e,t){let{node:n}=e;return n.type===`FunctionDeclaration`?Bs(n,t):new Set}function Bs(e,t){let n=t.get(e)?.id;return n===void 0?new Set:new Set([n])}function Vs(e,t,n,r){let i=E(t.getScope(e),e.name);return i===void 0?new Set:Ls(i,t,n,r,new Set)}function Hs(e,t,n,r){for(let i of t.values())for(let t of i.callIdentifiers){let a=Vs(t,e,n,r);for(let e of a)i.callees.add(e)}}function Us(e,t,n){let r=new Set(e),i=[];for(let t of e)i.push({depth:0,functionId:t});let a=0;for(;a<i.length;){let e=i[a];if(a+=1,e===void 0||e.depth>=n)continue;let o=t.get(e.functionId);if(o!==void 0)for(let t of o.callees)r.has(t)||(r.add(t),i.push({depth:e.depth+1,functionId:t}))}return r}function Ws(e,t,n,r,i){let a=new Set;for(let e of t){let t=r.get(e)?.id;t!==void 0&&a.add(t)}for(let t of n){let n=Vs(t,e,r,i);for(let e of n)a.add(e)}return a}const Gs=t({create(e){let t=Ps(e.options[0]);if(t.constructors.size===0)return{};let n=vn(t.environment),r=new Set,i=new Set,a=new Map,o=new Map,s=[],c=[],l=[],u=[],d=new Map,f=0;function p(e){let t=a.get(e);if(t!==void 0)return t;let n={callIdentifiers:[],callees:new Set,id:f};return f+=1,a.set(e,n),o.set(n.id,n),n}function m(e){let t=s.at(-1);if(t===void 0)return;let n=o.get(t);n!==void 0&&n.callIdentifiers.push(e)}function h(e){s.push(p(e).id)}function g(){s.pop()}return{ArrowFunctionExpression:h,"ArrowFunctionExpression:exit":g,CallExpression(e){if(e.callee.type===`Identifier`&&m(e.callee),!fe(e,r,i))return;let[t]=e.arguments;if(t!==void 0){if(t.type===`Identifier`){l.push(t);return}Fe(t)&&u.push(t)}},FunctionDeclaration:h,"FunctionDeclaration:exit":g,FunctionExpression:h,"FunctionExpression:exit":g,ImportDeclaration(e){Ms(e,n,r,i)},NewExpression(e){if(e.callee.type!==`Identifier`)return;let n=e.callee.name;t.constructors.has(n)&&c.push({constructorName:n,containingFunctionId:s.at(-1),isLexicallyInsideUseMemo:Is(e,r,i),node:e})},"Program:exit"(){Hs(e.sourceCode,o,a,d);let n=Us(Ws(e.sourceCode,u,l,a,d),o,t.maxHelperTraceDepth);for(let t of c){let r=t.containingFunctionId!==void 0&&n.has(t.containingFunctionId);(t.isLexicallyInsideUseMemo||r)&&e.report({data:{constructorName:t.constructorName},messageId:`noNewInUseMemo`,node:t.node})}}}},meta:{docs:{description:`Disallow configured constructor calls (default: new Instance) inside React useMemo callbacks.`},messages:{noNewInUseMemo:"Avoid creating '{{constructorName}}' with `new` inside useMemo. Create it outside the memo callback or use an effect/ref pattern."},schema:[{additionalProperties:!1,properties:{constructors:{description:`Constructor identifiers that should be disallowed inside useMemo callbacks.`,items:{type:`string`},type:`array`},environment:{default:`roblox-ts`,description:`The React environment: 'roblox-ts' uses @rbxts/react, 'standard' uses react.`,enum:[`roblox-ts`,`standard`],type:`string`},maxHelperTraceDepth:{default:4,description:`Maximum depth for tracing local helper function calls from useMemo callbacks. 0 disables helper traversal.`,minimum:0,type:`integer`}},type:`object`}],type:`problem`}}),Ks=Wa({alternative:`Log`,message:`{{name}}() is a raw output function lacking log levels, timestamps, and filtering. Production systems require structured logging for debugging and monitoring. Replace {{name}}(...) with {{alternative}}.`,messageId:`noPrint`,name:`print`});function qs(e,t){let n=t;for(;n;){if(n.set.has(e))return!0;n=n.upper}return!1}function Js(e){let t=new Map,n=new Set;for(let n of e.keys())t.set(n,0);function r(i,a){t.set(i,1),a.push(i);for(let o of e.get(i)??[]){let e=t.get(o);if(e===1){let e=a.lastIndexOf(o);for(let t=e;t<a.length;t+=1){let e=a[t];e!==void 0&&n.add(e)}}else e===0&&r(o,a)}a.pop(),t.set(i,2)}for(let n of e.keys())t.get(n)===0&&r(n,[]);return n}const Ys=t({create(e){let{sourceCode:t}=e,n=new Map,r=[],i=[],a=[],o=new Map;function s(e){r.push(e)}function c(){r.pop()}function l(){for(let e=r.length-1;e>=0;--e){let t=r[e];if(t!==void 0)return t}}function u(e){n.has(e)||n.set(e,new Set)}function d(){for(let e=a.length-1;e>=0;--e)if(a[e]!==void 0)return a[e]}return{ArrowFunctionExpression(){s(void 0)},"ArrowFunctionExpression:exit":c,CallExpression(e){let r=l();if(r===void 0)return;let a,s=!1;if(e.callee.type===`Identifier`?a=e.callee.name:e.callee.type===`MemberExpression`&&e.callee.object.type===`ThisExpression`&&e.callee.property.type===`Identifier`&&(a=e.callee.property.name,s=!0),a===void 0)return;let c=!1;if(s){let e=d();e!==void 0&&o.get(e)?.has(a)===!0&&(c=!0)}else{let n=t.getScope(e);c=qs(a,n)}c&&(n.get(r)?.add(a),i.push({callee:a,caller:r,node:e}))},ClassDeclaration(e){let t=e.id?.name;t!==void 0&&!o.has(t)&&o.set(t,new Set),a.push(t)},"ClassDeclaration:exit"(){a.pop()},FunctionDeclaration(e){let t=e.id?.name;t!==void 0&&t.length>0&&u(t),s(t)},"FunctionDeclaration:exit":c,FunctionExpression(e){e.id&&u(e.id.name);let{parent:t}=e;t?.type===`MethodDefinition`&&t.key.type===`Identifier`?s(t.key.name):s(void 0)},"FunctionExpression:exit":c,MethodDefinition(e){let t=d();e.key.type===`Identifier`&&t!==void 0&&(o.get(t)?.add(e.key.name),u(e.key.name))},"Program:exit"(){let t=Js(n);if(t.size!==0)for(let n of i)t.has(n.caller)&&t.has(n.callee)&&e.report({messageId:`noRecursive`,node:n.node})},VariableDeclarator(e){e.id.type===`Identifier`&&e.init!==null&&(e.init.type===`FunctionExpression`||e.init.type===`ArrowFunctionExpression`)&&(u(e.id.name),s(e.id.name))},"VariableDeclarator:exit"(e){e.id.type===`Identifier`&&e.init!==null&&(e.init.type===`FunctionExpression`||e.init.type===`ArrowFunctionExpression`)&&c()}}},meta:{messages:{noRecursive:`Recursion is not allowed (JPL Power of 10). Use iteration instead — a loop or explicit stack.`},schema:[{additionalProperties:!1,properties:{},type:`object`}]}}),Xs=new m({extensions:[`.ts`,`.tsx`,`.js`,`.jsx`,`.mjs`,`.cjs`,`.json`,`.node`]}),Zs={found:!1};function Qs(e,t){if(!e.startsWith(`.`))return Zs;let{path:n}=Xs.sync(a(t),e);return n===void 0||n===``?Zs:{found:!0,path:n}}const $s=`uiaspectratioconstraint`,ec=new Set([`ButtonSpritesheet`,`GenericSpritesheet`,`LabelSpritesheet`]);function tc({openingElement:e}){let{name:t}=e;return t.type===`JSXIdentifier`?t.name:void 0}function nc(e){let t=!1;return Rr(e,e=>{t||e.type===`JSXElement`&&tc(e)===$s&&(t=!0)}),t}function rc(e){if(e.type===`FunctionDeclaration`)return e.id?.name;if(Fe(e)){let{parent:t}=e;if(t.type===`VariableDeclarator`&&t.id.type===`Identifier`)return t.id.name}}function ic(e){if(e.body.type!==`BlockStatement`)return w(e.body)}function ac(e){for(let t of e.defs){if(t.type!==`ImportBinding`)continue;let{parent:e}=t.node;if(e?.type===`ImportDeclaration`&&y(e.source.value))return e.source.value}}const oc=new Map;function sc(e,t){if(!e.startsWith(`.`))return!1;let n=Qs(e,t);if(!n.found)return!1;let r=oc.get(n.path);if(r!==void 0)return r;try{let e=f(n.path,`utf8`).includes(`<uiaspectratioconstraint`);return oc.set(n.path,e),e}catch{return oc.set(n.path,!1),!1}}function cc(e){for(let t of e.openingElement.attributes)if(!(t.type!==`JSXAttribute`||t.name.type!==`JSXIdentifier`||t.name.name!==`scaled`)&&t.value?.type===`JSXExpressionContainer`&&t.value.expression.type===`Literal`&&t.value.expression.value===!1)return!0;return!1}function lc(e){return e.type===`JSXElement`?tc(e)===$s:e.type===`JSXExpressionContainer`&&e.expression.type===`Identifier`&&e.expression.name===`UI_ASPECT_RATIO_CONSTRAINT`}function uc(e,t,n,r){if(t.has(e))return!0;if(n===void 0)return!1;let i=n.set.get(e);if(i===void 0||!ds(i))return!1;let a=ac(i);return a!==void 0&&(sc(a,r)||ec.has(e))}const dc=t({create(e){let{filename:t,sourceCode:n}=e,r=new Set,i=[],a;return{ArrowFunctionExpression(e){let t=rc(e),n=ic(e);t===void 0||n===void 0||n.type!==`JSXElement`&&n.type!==`JSXFragment`||nc(n)&&r.add(t)},FunctionDeclaration(e){let t=rc(e);if(t===void 0||e.body?.body.length!==1)return;let[n]=e.body.body;n?.type!==`ReturnStatement`||n.argument===null||nc(n.argument)&&r.add(t)},ImportDeclaration(e){a??=e},JSXElement(e){i.push(e)},"Program:exit"(){let o;a!==void 0&&(o=n.getScope(a));for(let n of i){let i=tc(n);if(i!==void 0&&!(!uc(i,r,o,t)||cc(n)))for(let t of n.children)lc(t)&&e.report({messageId:`redundantAspectRatioConstraint`,node:t})}}}},meta:{docs:{description:`Disallow redundant uiaspectratioconstraint children inside components that already manage their own aspect ratio internally.`},messages:{redundantAspectRatioConstraint:`This component already renders a uiaspectratioconstraint internally. Passing one as a child is redundant and will cause layout issues.`},schema:[],type:`problem`}}),fc=new Set([`JSXElement`,`ReactElement`,`ReactNode`]),pc=new Set([`ChainExpression`,`ParenthesizedExpression`,`TSAsExpression`,`TSInstantiationExpression`,`TSNonNullExpression`,`TSSatisfiesExpression`,`TSTypeAssertion`]),mc=/^use[A-Z]/u;function hc(e){return mc.test(e)}function gc(e){if(e?.type!==`TSTypeReference`)return!1;let{typeName:t}=e;return t.type===`Identifier`?fc.has(t.name):t.type===`TSQualifiedName`&&fc.has(t.right.name)}function _c({returnType:e}){return e?.typeAnnotation??void 0}function vc(e){if(e.type===`ArrowFunctionExpression`&&(e.body.type===`JSXElement`||e.body.type===`JSXFragment`))return!0;if(e.body===null)return!1;let t=!1;return zr(e.body,e=>{if(t||e.type!==`ReturnStatement`)return;let{argument:n}=e;n!==null&&(n.type===`JSXElement`||n.type===`JSXFragment`)&&(t=!0)}),t}function yc({parent:e}){return e.type===`CallExpression`||e.type===`JSXExpressionContainer`||e.type===`ArrayExpression`}function bc(e){if(!(e.parent?.type!==`VariableDeclarator`||e.parent.id.type!==`Identifier`))return e.parent.id.name}function xc(e){return e.type===`Identifier`?e.name:void 0}function Sc(e){let t=e;for(;t!==void 0&&pc.has(t.type);)t=t.parent??void 0;return t}function Cc(e){let t=Sc(e.parent??void 0);return t?.type===`Property`&&wc(t.value)===e}function wc(e){let t=e;for(;Tc(t);)t=t.expression;return t}function Tc(e){return pc.has(e.type)}function Ec(e,t){if(t.type===`FunctionDeclaration`){let n=e.getDeclaredVariables(t);return n.length>0?n[0]:void 0}let{parent:n}=t;if(n?.type!==`VariableDeclarator`)return;let r=e.getDeclaredVariables(n);return r.length>0?r[0]:void 0}function Dc(e,t){let n=Ec(t,e);if(n===void 0)return!1;let r=!1;for(let e of n.references)if(!e.isWrite()&&(r=!0,!Cc(e.identifier)))return!1;return r}const Oc=t({create(e){let t=0;function n(t,n){e.report({data:{functionName:n},messageId:`noRenderHelper`,node:t})}function r(r){let{parent:i}=r,a=bc(r);if(a!==void 0&&W(a)){--t;return}if(t>0||yc(r)||i.type!==`VariableDeclarator`)return;let o=xc(i.id);if(o===void 0||W(o)||hc(o)||Dc(r,e.sourceCode))return;let s=ce(i.id),c=s!==void 0&&gc(s.typeAnnotation),l=gc(_c(r));(c||l||vc(r))&&n(i,o)}return{ArrowFunctionExpression(e){let n=bc(e);n!==void 0&&W(n)&&(t+=1)},"ArrowFunctionExpression:exit":r,FunctionDeclaration({id:e}){e!==null&&W(e.name)&&(t+=1)},"FunctionDeclaration:exit"(r){if(r.id===null)return;let i=r.id.name;if(W(i)){--t;return}t>0||hc(i)||Dc(r,e.sourceCode)||(gc(_c(r))||vc(r))&&n(r,i)},FunctionExpression(e){let n=bc(e);n!==void 0&&W(n)&&(t+=1)},"FunctionExpression:exit":r}},meta:{docs:{description:`Disallow non-component functions that return JSX or React elements.`},messages:{noRenderHelper:`Convert render helper '{{functionName}}' to a React component. Functions that return JSX should be PascalCase components, not camelCase helpers.`},schema:[],type:`suggestion`}}),kc=h({"message?":`string | undefined`,object:`string`,properties:h(`string[]`).readonly()}).readonly(),Ac=h({"allowFiles?":h(`string[]`).readonly().or(`undefined`),"checkComputed?":`boolean | undefined`,restrictions:kc.array().readonly()}).readonly(),jc={matchBase:!0},Mc={dot:!0,magicalBraces:!0};function Nc(e){return e.replaceAll(`\\`,`/`)}function Pc(e){let t=Nc(e);if(!s(e))return[t];let n=Nc(l(process.cwd(),e));return n.length===0||n.startsWith(`..`)?[t]:[t,n]}function Fc(e,t){let n=new g(e,t),r=n.hasMagic();return{hasMagic:r,matches:r?e=>n.match(e):t=>t===e}}function Ic(e){let t=new Set,n=[],r=0;for(let i of e){let e=Fc(i,Mc);e.hasMagic?n[r++]=e.matches:t.add(i)}return e=>t.has(e)||n.some(t=>t(e))}function Lc(e){return{matchesObject:Fc(e.object,Mc).matches,matchesProperty:Ic(e.properties),message:e.message}}function Rc(e){let[t]=e.options;if(!Ac.allows(t))return{checkComputed:!0,isAllowedFile:!1,restrictions:[]};let{allowFiles:n,checkComputed:r,restrictions:i}=t,a=Pc(e.filename),o=n?.some(e=>a.some(t=>_(t,e,jc)))??!1;return{checkComputed:r??!0,isAllowedFile:o,restrictions:i.map(Lc)}}const zc=t({create(e){let{checkComputed:t,isAllowedFile:n,restrictions:r}=Rc(e);function i(i,a){if(n||!M(i)||i.computed&&!t||i.object.type!==`Identifier`)return;let o=T(i);if(o!==void 0){for(let t of r)if(t.matchesObject(i.object.name)&&t.matchesProperty(o)){t.message===void 0?e.report({data:{object:i.object.name,property:o},messageId:`restricted`,node:a}):e.report({data:{message:t.message},messageId:`restrictedCustom`,node:a});return}}}return{AssignmentExpression(e){i(e.left,e)},UpdateExpression(e){i(e.argument,e)}}},meta:{docs:{description:`Disallow assignment to restricted object properties.`,recommended:!0},messages:{restricted:`Assignment to '{{object}}.{{property}}' is not permitted.`,restrictedCustom:`{{message}}`},schema:[{additionalProperties:!1,properties:{allowFiles:{items:{type:`string`},type:`array`},checkComputed:{default:!0,type:`boolean`},restrictions:{items:{additionalProperties:!1,properties:{message:{type:`string`},object:{type:`string`},properties:{items:{type:`string`},minItems:1,type:`array`}},required:[`object`,`properties`],type:`object`},type:`array`}},required:[`restrictions`],type:`object`}],type:`problem`}}),Bc=/\.spec\.(?:ts|tsx)$/u,Vc=t({createOnce(e){return{Program(t){let{filename:n}=e;n&&Bc.test(n)&&e.report({messageId:`noSpecFileExtension`,node:t})}}},meta:{docs:{description:`Disallow the .spec.{ts,tsx} file extension for test files. Use .test.{ts,tsx} instead.`,recommended:!0},messages:{noSpecFileExtension:`Test files must use .test.ts or .test.tsx instead of .spec.ts or .spec.tsx. Rename this file to use the .test extension.`},schema:[],type:`problem`}}),Hc=`Fragment`;function Uc(e){return e.parent?.type===`ImportDeclaration`?e.parent:void 0}function Wc(e,t){if(e.type!==`ImportBinding`)return!1;let n=Uc(e.node);return n!==void 0&&t.has(n.source.value)}function Gc(e,t){if(e===void 0)return!1;for(let n of e.defs)if(Wc(n,t)&&(n.node.type===`ImportDefaultSpecifier`||n.node.type===`ImportNamespaceSpecifier`))return!0;return!1}function Kc(e,t,n){if(e===void 0)return!1;for(let r of e.defs)if(Wc(r,n)&&r.node.type===`ImportSpecifier`&&pe(r.node)===t)return!0;return!1}function qc(e,t,n){let{callee:r}=t;return r.type===`Identifier`?Kc(E(e.getScope(r),r.name),`createElement`,n):r.type!==`MemberExpression`||r.computed||T(r)!==`createElement`||r.object.type!==`Identifier`?!1:Gc(E(e.getScope(r.object),r.object.name),n)}function Jc(e){return e.type===`Literal`&&y(e.value)}function Yc(e,t){if(ds(e))return O(t)||t===Hc;if(!G(e.scope)||!O(t)&&t!==Hc)return!1;for(let t of e.defs){if(t.type===`FunctionName`||t.type===`ClassName`)return!0;if(t.type!==`Variable`||t.node.type!==`VariableDeclarator`)continue;let e=t.node.init??void 0;if(e!==void 0&&(Fe(e)||e.type===`ClassExpression`))return!0}return!1}function Xc(e,t,n){let r=E(e.getScope(t),t.name);return Kc(r,Hc,n)?!0:r!==void 0&&Yc(r,t.name)}function Zc(e){let t=e;for(;;){if(t.computed)return;if(t.object.type===`Identifier`)return t.object;if(t.object.type!==`MemberExpression`)return;t=t.object}}function Qc(e){if(e.computed)return;let t=T(e);if(t!==void 0)return e.object.type===`MemberExpression`&&Qc(e.object)===void 0?void 0:t}function $c(e,t,n){let r=Zc(t);if(r===void 0)return!1;let i=Qc(t);if(i===void 0)return!1;let a=E(e.getScope(r),r.name);return Gc(a,n)&&i===Hc?!0:a===void 0||!ds(a)?!1:O(i)}function el(e,t,n){return t.type===`SpreadElement`?!1:Jc(t)?!0:t.type===`Identifier`?Xc(e,t,n):t.type===`MemberExpression`&&$c(e,t,n)}const tl=t({create(e){let t=yn(e.options[0]),{sourceCode:n}=e;return{CallExpression(r){if(!qc(n,r,t))return;let[i]=r.arguments;i!==void 0&&el(n,i,t)&&e.report({messageId:`useJsx`,node:r})}}},meta:{docs:{description:`Require JSX for static React.createElement calls.`,recommended:!0},messages:{useJsx:`Use JSX instead of static React.createElement calls.`},schema:[{additionalProperties:!1,properties:{environment:mn},type:`object`}],type:`problem`}});function nl(e,t){let n=w(t);if(n.type!==`CallExpression`||n.optional)return!1;let r=w(n.callee);if(r.type!==`MemberExpression`||r.optional||T(r)!==`create`)return!1;let i=w(r.object);return i.type!==`Identifier`||i.name!==`table`?!1:!ie(e,i,`table`)}function rl(e,t){let n=w(t);if(n.type!==`NewExpression`||n.arguments.length!==1&&n.arguments.length!==2)return!1;let r=w(n.callee);return r.type!==`Identifier`||r.name!==`Array`?!1:!ie(e,r,`Array`)}const il=t({create(e){return{CallExpression(t){if(t.optional)return;let n=w(t.callee);if(n.type!==`MemberExpression`||n.optional||T(n)!==`map`)return;let r=w(n.object);(nl(e.sourceCode,r)||rl(e.sourceCode,r))&&e.report({messageId:`avoidConstructThenMap`,node:t})}}},meta:{docs:{description:`Disallow map(...) directly on table.create(...) and new Array(...) constructor patterns in roblox-ts.`},messages:{avoidConstructThenMap:`Do not map directly on table.create(...) or new Array(...). Allocate first, then write by index in a loop.`},schema:[],type:`suggestion`}});function al(e){let{callee:t}=e;if(t.type!==`MemberExpression`||T(t)!==`await`||t.object.type!==`CallExpression`)return!1;let n=t.object.callee;return n.type!==`MemberExpression`||n.object.type!==`Identifier`||n.object.name!==`Promise`?!1:T(n)===`delay`}const ol=t({createOnce(e){return{CallExpression(t){if(al(t)){e.report({messageId:`noPromiseDelayAwait`,node:t});return}let{callee:n}=t;n.type===`MemberExpression`&&(n.object.type!==`Identifier`||n.object.name!==`task`||T(n)===`wait`&&e.report({messageId:`noTaskWait`,node:t}))}}},meta:{docs:{description:`Disallow task.wait() calls.`},messages:{noPromiseDelayAwait:`Do not use Promise.delay(...).await() in tests. Advance deterministic schedulers or wait for the actual condition instead.`,noTaskWait:`Do not use task.wait() in tests. Advance deterministic schedulers or wait for the actual condition instead.`},schema:[],type:`problem`}}),sl=t({createOnce(e){return{JSXAttribute(t){t.name.type!==`JSXIdentifier`||!t.name.name.startsWith(`_`)||e.report({data:{propName:t.name.name},messageId:`noUnderscoreReactProp`,node:t.name})}}},meta:{docs:{description:`Ban React property names that begin with an underscore in JSX.`},messages:{noUnderscoreReactProp:`React prop '{{propName}}' starts with '_'. Remove the leading underscore from the prop name.`},schema:[],type:`problem`}}),cl=/@(?:link|linkcode|linkplain|see)\s+\{?(?<identifier>\w+)/gu,ll=/\{@(?:link|linkcode|linkplain|see)\s+(?<identifier>\w+)/gu,ul=/[@{](?:type|typedef|param|returns?|template|augments|extends|implements)\s+(?<annotation>[^}]*)/gu,dl=/\b(?<identifier>\w+)\b/gu;function fl(e){return e.type===`ImportDefaultSpecifier`||e.type===`ImportNamespaceSpecifier`||e.type===`ImportSpecifier`}function pl(e){let t=new Set;for(let n of e)n.type===`Block`&&(ml(n.value,t),hl(n.value,t));return t}function ml(e,t){for(let n of[cl,ll])for(let r of e.matchAll(n)){let e=r.groups?.identifier;e!==void 0&&t.add(e)}}function hl(e,t){for(let n of e.matchAll(ul)){let e=n.groups?.annotation;if(e!==void 0)for(let n of e.matchAll(dl)){let e=n.groups?.identifier;e!==void 0&&t.add(e)}}}function gl(e,t,n,r){if(t.specifiers.length===1)return r.remove(t);let i=e.getTokenAfter(n);if(t.specifiers[0]===n&&i?.value===`,`){let t=e.getTokenBefore(n);if(t!==null)return[r.removeRange([t.range[1],n.range[0]]),r.remove(n),r.remove(i)]}if(i?.value===`,`)return r.removeRange([n.range[0],i.range[1]]);let a=e.getTokenBefore(n);return a?.value===`,`?r.removeRange([a.range[0],n.range[1]]):r.remove(n)}const _l=t({create(e){let{sourceCode:t}=e,n=e.options[0]?.checkJSDoc??!0,r=n?pl(t.getAllComments()):new Set,i=[],a;return{ImportDeclaration(e){a??=e;for(let t of e.specifiers)fl(t)&&i.push({identifierName:t.local.name,parent:e,specifier:t})},"Program:exit"(){if(a===void 0)return;let o=t.getScope(a);for(let{identifierName:a,parent:s,specifier:c}of i){let i=o.set.get(a);i!==void 0&&i.references.length>0||n&&r.has(a)||e.report({data:{identifierName:a},fix(e){return gl(t,s,c,e)},messageId:`unusedImport`,node:c})}}}},meta:{docs:{description:`Disallow unused imports`},fixable:`code`,messages:{unusedImport:`Import '{{identifierName}}' is defined but never used.`},schema:[{additionalProperties:!1,properties:{checkJSDoc:{default:!0,description:`Check if imports are referenced in JSDoc comments`,type:`boolean`}},type:`object`}],type:`problem`}}),vl=t({create(e){let t=new Set,n=new Set,r=yn(e.options[0]);return{CallExpression(r){fe(r,t,n)&&js(r)&&e.report({messageId:`unusedUseMemo`,node:r})},ImportDeclaration(e){Ms(e,r,t,n)}}},meta:{docs:{description:`Disallow standalone useMemo calls that ignore the memoized value.`,recommended:!0},messages:{unusedUseMemo:`useMemo results must be used. Standalone useMemo calls add overhead without preserving a value.`},schema:[{additionalProperties:!1,properties:{environment:{default:`roblox-ts`,enum:[`roblox-ts`,`standard`],type:`string`}},type:`object`}],type:`problem`}});function yl(e){if(e.body===null)return;if(e.body.type!==`BlockStatement`)return e.body;if(e.body.body.length!==1)return;let[t]=e.body.body;if(t?.type===`ReturnStatement`)return t.argument??void 0}const bl=t({create(e){return{CallExpression(t){if(!_o(t,`useMemo`))return;let n=Lr(t);if(n===void 0)return;let r=yl(n);r===void 0||!go(r)||e.report({messageId:`simpleMemo`,node:t})}}},meta:{docs:{description:`Disallow useMemo for expressions that are already trivial to compute.`,recommended:!0},messages:{simpleMemo:`useMemo wrapping a trivially cheap expression - memo overhead exceeds the computation`},type:`problem`}}),xl=/^[A-Z][A-Z0-9_]*$/u,Sl={staticGlobalFactories:new Set(ss)},Cl=[String.raw`^Array\b`,String.raw`^Object\b`,String.raw`^Map\b`,String.raw`^Set\b`,String.raw`^WeakMap\b`,String.raw`^WeakSet\b`];function wl(e){let t=[],n=0,r=[e];for(;r.length>0;){let e=r.pop();if(e===void 0)break;e.type!==`global`&&(t[n++]=e);for(let t of e.childScopes)r.push(t)}return t}function Tl(e){return Fe(e)||e.type===`ClassExpression`}const El=new Set([`ArrayExpression`,`ObjectExpression`,`JSXElement`,`JSXFragment`]);function Dl(e,t,n){if(El.has(e.type))return!0;if(e.type!==`CallExpression`&&e.type!==`NewExpression`)return!1;let r=n.getText(e.callee);for(let e of t)if(e.test(r))return!0;return!1}function Ol(e){return e.type===`Program`||e.type===`BlockStatement`}function kl(e){switch(e.type){case`ChainExpression`:case`ParenthesizedExpression`:case`TSAsExpression`:case`TSInstantiationExpression`:case`TSNonNullExpression`:case`TSSatisfiesExpression`:case`TSTypeAssertion`:return kl(e.expression);case`Identifier`:return e.name;case`MemberExpression`:return kl(e.object);default:return}}function q(e,t){switch(e.type){case`ArrayExpression`:return Al(e,t);case`BinaryExpression`:case`LogicalExpression`:return jl(e,t);case`CallExpression`:case`NewExpression`:return Ml(e,t);case`ChainExpression`:return q(e.expression,t);case`ParenthesizedExpression`:case`TSAsExpression`:case`TSInstantiationExpression`:case`TSNonNullExpression`:case`TSSatisfiesExpression`:case`TSTypeAssertion`:return q(e.expression,t);case`ConditionalExpression`:return Nl(e,t);case`MemberExpression`:return Pl(e,t);case`ObjectExpression`:return Fl(e,t);case`SequenceExpression`:return!1;case`SpreadElement`:return!1;case`TemplateLiteral`:return Il(e.expressions,t);case`UnaryExpression`:return q(e.argument,t);default:return!0}}function Al(e,t){for(let n of e.elements)if(n===null||!q(n,t))return!1;return!0}function jl(e,t){return q(e.left,t)&&q(e.right,t)}function Ml(e,t){let n=kl(e.callee);return n===void 0||!t.has(n)||!q(e.callee,t)?!1:Il(e.arguments,t)}function Nl(e,t){return q(e.test,t)&&q(e.consequent,t)&&q(e.alternate,t)}function Pl(e,t){return q(e.object,t)&&(!e.computed||q(e.property,t))}function Fl(e,t){for(let n of e.properties)if(n.type!==`Property`||n.computed&&!q(n.key,t)||!q(n.value,t))return!1;return!0}function Il(e,t){for(let n of e)if(!q(n,t))return!1;return!0}function Ll(e,t){return t.type===`Literal`||K(e,t,new Set,Sl)&&q(t,Sl.staticGlobalFactories)}function Rl(e,t){let n=t;for(;n.type===`ParenthesizedExpression`;)n=n.expression;return e.getText(n)}function zl(e,t){let{parent:n}=e;if(n==null||!Ol(n))return!1;let{body:r}=n;for(let n=0;n<r.length;n+=1)if(r[n]===e)return r[n+1]===t;return!1}function Bl(e,t){let[n]=t.range;for(;n>0;){let t=e[n-1];if(t===` `||t===` `){--n;continue}break}let[,r]=t.range,i=r;for(;i<e.length;){let t=e[i];if(t===`
|
|
9
|
+
`||t===`\r`){i+=1;continue}break}return[n,i]}function Vl(e){let t=e.parent,n=e;for(;t!=null;){if(k(t)&&t.init===n)return t;n=t,t=t.parent}}const Hl=t({create(e){let{sourceCode:t}=e,[n]=e.options,r=(n?.ignoreCallPatterns??Cl).map(e=>new RegExp(e,`u`));function i(e){if(t.getCommentsInside(e).length>0)return!0;let n=e.loc?.start.line,r=e.loc?.end.line;if(n===void 0||r===void 0)return!1;for(let r of t.getCommentsBefore(e)){let e=r.loc?.end.line;if(e===n||e===n-1)return!0}for(let n of t.getCommentsAfter(e)){let e=n.loc?.start.line;if(e===r||e===r+1)return!0}return!1}function a(e,n){let r,i=0;for(let e of n.references)e.isReadOnly()&&(i+=1,r=e);if(!(i!==1||r===void 0||r.from!==e||t.getScope(r.identifier)!==e))return r}function o(e,n){let{name:i}=n;if(!xl.test(i))return;let[o]=n.defs;if(o?.type!==`Variable`)return;let s=o.node;if(!(k(s)&&nt(s.id))||s.init===null)return;let c=o.parent;if(c===null||!Me(c)||c.kind!==`const`||c.declarations.length!==1||Ne(c.parent))return;let l=s.init;if(Tl(l)||Dl(l,r,t))return;let u=a(e,n);if(u===void 0||!nt(u.identifier))return;let d=Vl(u.identifier);if(d===void 0)return;let f=d.parent;if(!(!Me(f)||f.kind!==`const`))return{declarationNode:c,enclosingDeclaration:f,initializer:l,name:i,referenceIdentifier:u.identifier,reportNode:s.id}}function s(n){let r=[];for(let a of n.variables){let s=o(n,a);if(s===void 0)continue;let c=zl(s.declarationNode,s.enclosingDeclaration),l=Ll(t,s.initializer),u=q(s.initializer,Sl.staticGlobalFactories);if(!((c||l)&&u&&!i(s.declarationNode))){e.report({data:{name:s.name},messageId:`uselessConstantNoFix`,node:s.reportNode});continue}r.push({declarationNode:s.declarationNode,initializerText:Rl(t,s.initializer),name:s.name,referenceIdentifier:s.referenceIdentifier,reportNode:s.reportNode})}c(r)}function c(n){let[r]=n;r!==void 0&&e.report({data:{name:r.name,names:n.map(e=>e.name).join(`, `)},fix(e){let r=[],i=0;for(let t of n)r[i++]=e.replaceText(t.referenceIdentifier,t.initializerText);for(let a of n)r[i++]=e.removeRange(Bl(t.text,a.declarationNode));return r},messageId:n.length===1?`uselessConstant`:`uselessConstants`,node:r.reportNode})}return{"Program:exit"(e){let n=wl(t.getScope(e));for(let e of n)s(e)}}},meta:{docs:{description:`Disallow constants that do not add value.`,recommended:!0},fixable:`code`,messages:{uselessConstant:`Constant '{{name}}' is only referenced once in the same scope. Inline it directly, or move it to a higher scope if reference stability is needed.`,uselessConstantNoFix:`Constant '{{name}}' is only referenced once in the same scope. It cannot be auto-inlined because the initializer is not safely movable or the declaration has attached comments. Inline it manually, or move it to a higher scope if reference stability is needed.`,uselessConstants:`Constants '{{names}}' are only referenced once in the same scope. Inline them directly, or move them to a higher scope if reference stability is needed.`},schema:[{additionalProperties:!1,properties:{ignoreCallPatterns:{default:[...Cl],items:{type:`string`},type:`array`}},type:`object`}],type:`problem`}});var Ul={AdGui:{Archivable:{type:`bool`,value:!0}},AdPortal:{Archivable:{type:`bool`,value:!0}},AlignOrientation:{AlignType:{enumType:`AlignType`,type:`Enum`,value:`AllAxes`},Archivable:{type:`bool`,value:!0},CFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Enabled:{type:`bool`,value:!0},MaxAngularVelocity:{type:`number`,value:`inf`},MaxTorque:{type:`number`,value:1e4},Mode:{enumType:`OrientationAlignmentMode`,type:`Enum`,value:`TwoAttachment`},PrimaryAxisOnly:{type:`bool`,value:!1},ReactionTorqueEnabled:{type:`bool`,value:!1},Responsiveness:{type:`number`,value:10},RigidityEnabled:{type:`bool`,value:!1},Visible:{type:`bool`,value:!1}},AlignPosition:{ApplyAtCenterOfMass:{type:`bool`,value:!1},Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},ForceLimitMode:{enumType:`ForceLimitMode`,type:`Enum`,value:`Magnitude`},ForceRelativeTo:{enumType:`ActuatorRelativeTo`,type:`Enum`,value:`World`},MaxAxesForce:{type:`Vector3`,value:[1e4,1e4,1e4]},MaxForce:{type:`number`,value:1e4},MaxVelocity:{type:`number`,value:`inf`},Mode:{enumType:`PositionAlignmentMode`,type:`Enum`,value:`TwoAttachment`},Position:{type:`Vector3`,value:[0,0,0]},ReactionForceEnabled:{type:`bool`,value:!1},Responsiveness:{type:`number`,value:10},RigidityEnabled:{type:`bool`,value:!1},Visible:{type:`bool`,value:!1}},AngularVelocity:{AngularVelocity:{type:`Vector3`,value:[0,0,0]},Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},MaxTorque:{type:`number`,value:0},ReactionTorqueEnabled:{type:`bool`,value:!1},RelativeTo:{enumType:`ActuatorRelativeTo`,type:`Enum`,value:`World`},Visible:{type:`bool`,value:!1}},Animation:{Archivable:{type:`bool`,value:!0}},AnimationConstraint:{AngularDamping:{type:`number`,value:1},AngularStrength:{type:`number`,value:1},Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},IsKinematic:{type:`bool`,value:!1},LinearDamping:{type:`number`,value:1},LinearStrength:{type:`number`,value:1},MaxForce:{type:`number`,value:1e4},MaxTorque:{type:`number`,value:1e4},Transform:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Visible:{type:`bool`,value:!1}},AnimationController:{Archivable:{type:`bool`,value:!0}},AnimationGraphDefinition:{Archivable:{type:`bool`,value:!0},Loop:{type:`bool`,value:!0},Priority:{enumType:`AnimationPriority`,type:`Enum`,value:`Action`}},AnimationNodeDefinition:{Archivable:{type:`bool`,value:!0},NodeType:{enumType:`AnimationNodeType`,type:`Enum`,value:`InvalidNode`}},Animator:{Archivable:{type:`bool`,value:!0},PreferLodEnabled:{type:`bool`,value:!0}},ArcHandles:{Archivable:{type:`bool`,value:!0},Color3:{type:`Color3`,value:[.05098039284348488,.4117647111415863,.6745098233222961]},Transparency:{type:`number`,value:0},Visible:{type:`bool`,value:!0}},Attachment:{Archivable:{type:`bool`,value:!0},CFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Visible:{type:`bool`,value:!1}},AudioAnalyzer:{Archivable:{type:`bool`,value:!0},SpectrumEnabled:{type:`bool`,value:!0},WindowSize:{enumType:`AudioWindowSize`,type:`Enum`,value:`Medium`}},AudioChannelMixer:{Archivable:{type:`bool`,value:!0},Layout:{enumType:`AudioChannelLayout`,type:`Enum`,value:`Stereo`}},AudioChannelSplitter:{Archivable:{type:`bool`,value:!0},Layout:{enumType:`AudioChannelLayout`,type:`Enum`,value:`Stereo`}},AudioChorus:{Archivable:{type:`bool`,value:!0},Bypass:{type:`bool`,value:!1},Depth:{type:`number`,value:.44999998807907104},Mix:{type:`number`,value:.8500000238418579},Rate:{type:`number`,value:5}},AudioCompressor:{Archivable:{type:`bool`,value:!0},Attack:{type:`number`,value:.10000000149011612},Bypass:{type:`bool`,value:!1},MakeupGain:{type:`number`,value:0},Ratio:{type:`number`,value:40},Release:{type:`number`,value:.10000000149011612},Threshold:{type:`number`,value:-40}},AudioDeviceInput:{AccessType:{enumType:`AccessModifierType`,type:`Enum`,value:`Deny`},Archivable:{type:`bool`,value:!0},Muted:{type:`bool`,value:!1},Volume:{type:`number`,value:1}},AudioDeviceOutput:{Archivable:{type:`bool`,value:!0}},AudioDistortion:{Archivable:{type:`bool`,value:!0},Bypass:{type:`bool`,value:!1},Level:{type:`number`,value:.5}},AudioEcho:{Archivable:{type:`bool`,value:!0},Bypass:{type:`bool`,value:!1},DelayTime:{type:`number`,value:1},DryLevel:{type:`number`,value:0},Feedback:{type:`number`,value:.5},RampTime:{type:`number`,value:0},WetLevel:{type:`number`,value:0}},AudioEmitter:{AcousticSimulationEnabled:{type:`bool`,value:!0},Archivable:{type:`bool`,value:!0},AudioInteractionGroup:{type:`string`,value:``},DiffractionEnabled:{enumType:`SimulationMode`,type:`Enum`,value:`Default`},OcclusionEnabled:{enumType:`SimulationMode`,type:`Enum`,value:`Default`},PositionType:{enumType:`EmitterPositionType`,type:`Enum`,value:`Parent`},ReverbEnabled:{enumType:`SimulationMode`,type:`Enum`,value:`Default`},SimulationFidelity:{enumType:`AudioSimulationFidelity`,type:`Enum`,value:`Automatic`}},AudioEqualizer:{Archivable:{type:`bool`,value:!0},Bypass:{type:`bool`,value:!1},HighGain:{type:`number`,value:0},LowGain:{type:`number`,value:0},MidGain:{type:`number`,value:0}},AudioFader:{Archivable:{type:`bool`,value:!0},Bypass:{type:`bool`,value:!1},Volume:{type:`number`,value:1}},AudioFilter:{Archivable:{type:`bool`,value:!0},Bypass:{type:`bool`,value:!1},FilterType:{enumType:`AudioFilterType`,type:`Enum`,value:`Peak`},Frequency:{type:`number`,value:2e3},Gain:{type:`number`,value:0},Q:{type:`number`,value:.7070000171661377}},AudioFlanger:{Archivable:{type:`bool`,value:!0},Bypass:{type:`bool`,value:!1},Depth:{type:`number`,value:.44999998807907104},Mix:{type:`number`,value:.8500000238418579},Rate:{type:`number`,value:5}},AudioGate:{Archivable:{type:`bool`,value:!0},Attack:{type:`number`,value:.009999999776482582},Bypass:{type:`bool`,value:!1},Release:{type:`number`,value:.10000000149011612}},AudioLimiter:{Archivable:{type:`bool`,value:!0},Bypass:{type:`bool`,value:!1},MaxLevel:{type:`number`,value:0},Release:{type:`number`,value:.009999999776482582}},AudioListener:{AcousticSimulationEnabled:{type:`bool`,value:!0},Archivable:{type:`bool`,value:!0},AudioInteractionGroup:{type:`string`,value:``},DiffractionEnabled:{enumType:`SimulationMode`,type:`Enum`,value:`Default`},OcclusionEnabled:{enumType:`SimulationMode`,type:`Enum`,value:`Default`},PositionType:{enumType:`ListenerPositionType`,type:`Enum`,value:`Parent`},ReverbEnabled:{enumType:`SimulationMode`,type:`Enum`,value:`Default`},SimulationFidelity:{enumType:`AudioSimulationFidelity`,type:`Enum`,value:`Automatic`}},AudioPitchShifter:{Archivable:{type:`bool`,value:!0},Bypass:{type:`bool`,value:!1},Pitch:{type:`number`,value:1.25},WindowSize:{enumType:`AudioWindowSize`,type:`Enum`,value:`Medium`}},AudioPlayer:{Archivable:{type:`bool`,value:!0},AutoLoad:{type:`bool`,value:!0},AutoPlay:{type:`bool`,value:!1},Looping:{type:`bool`,value:!1},PlaybackSpeed:{type:`number`,value:1},TimePosition:{type:`number`,value:0},Volume:{type:`number`,value:1}},AudioRecorder:{Archivable:{type:`bool`,value:!0}},AudioReverb:{Archivable:{type:`bool`,value:!0},Bypass:{type:`bool`,value:!1},DecayRatio:{type:`number`,value:.5},DecayTime:{type:`number`,value:1.5},Density:{type:`number`,value:1},Diffusion:{type:`number`,value:1},DryLevel:{type:`number`,value:0},EarlyDelayTime:{type:`number`,value:.019999999552965164},HighCutFrequency:{type:`number`,value:2e4},LateDelayTime:{type:`number`,value:.03999999910593033},LowShelfFrequency:{type:`number`,value:250},LowShelfGain:{type:`number`,value:0},ReferenceFrequency:{type:`number`,value:5e3},WetLevel:{type:`number`,value:-6}},AudioSpeechToText:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!1},Text:{type:`string`,value:``}},AudioTextToSpeech:{Archivable:{type:`bool`,value:!0},Looping:{type:`bool`,value:!1},Pitch:{type:`number`,value:0},PlaybackSpeed:{type:`number`,value:1},Speed:{type:`number`,value:1},Text:{type:`string`,value:``},TimePosition:{type:`number`,value:0},VoiceId:{type:`string`,value:``},Volume:{type:`number`,value:1}},AudioTremolo:{Archivable:{type:`bool`,value:!0},Bypass:{type:`bool`,value:!1},Depth:{type:`number`,value:1},Duty:{type:`number`,value:.5},Frequency:{type:`number`,value:5},Shape:{type:`number`,value:0},Skew:{type:`number`,value:0},Square:{type:`number`,value:0}},AuroraScript:{Archivable:{type:`bool`,value:!0}},AvatarAbilityRules:{Archivable:{type:`bool`,value:!0}},AvatarAccessoryRules:{Archivable:{type:`bool`,value:!0}},AvatarAnimationRules:{Archivable:{type:`bool`,value:!0}},AvatarBodyRules:{Archivable:{type:`bool`,value:!0}},AvatarClothingRules:{Archivable:{type:`bool`,value:!0}},AvatarCollisionRules:{Archivable:{type:`bool`,value:!0}},AvatarRules:{Archivable:{type:`bool`,value:!0}},BallSocketConstraint:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},LimitsEnabled:{type:`bool`,value:!1},Radius:{type:`number`,value:.15000000596046448},Restitution:{type:`number`,value:0},TwistLimitsEnabled:{type:`bool`,value:!1},TwistLowerAngle:{type:`number`,value:-45},TwistUpperAngle:{type:`number`,value:45},UpperAngle:{type:`number`,value:45},Visible:{type:`bool`,value:!1}},Beam:{Archivable:{type:`bool`,value:!0},Brightness:{type:`number`,value:1},CurveSize0:{type:`number`,value:0},CurveSize1:{type:`number`,value:0},Enabled:{type:`bool`,value:!0},FaceCamera:{type:`bool`,value:!1},LightEmission:{type:`number`,value:0},LightInfluence:{type:`number`,value:0},Segments:{type:`number`,value:10},TextureLength:{type:`number`,value:1},TextureMode:{enumType:`TextureMode`,type:`Enum`,value:`Stretch`},TextureSpeed:{type:`number`,value:1},Width0:{type:`number`,value:1},Width1:{type:`number`,value:1},ZOffset:{type:`number`,value:0}},BillboardGui:{Active:{type:`bool`,value:!1},AlwaysOnTop:{type:`bool`,value:!1},Archivable:{type:`bool`,value:!0},AutoLocalize:{type:`bool`,value:!0},Brightness:{type:`number`,value:1},ClipsDescendants:{type:`bool`,value:!1},DistanceLowerLimit:{type:`number`,value:0},DistanceUpperLimit:{type:`number`,value:-1},Enabled:{type:`bool`,value:!0},ExtentsOffset:{type:`Vector3`,value:[0,0,0]},ExtentsOffsetWorldSpace:{type:`Vector3`,value:[0,0,0]},LightInfluence:{type:`number`,value:0},MaxDistance:{type:`number`,value:`inf`},ResetOnSpawn:{type:`bool`,value:!0},SelectionBehaviorDown:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorLeft:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorRight:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorUp:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionGroup:{type:`bool`,value:!1},Size:{type:`UDim2`,value:[0,0,0,0]},SizeOffset:{type:`Vector2`,value:[0,0]},StudsOffset:{type:`Vector3`,value:[0,0,0]},StudsOffsetWorldSpace:{type:`Vector3`,value:[0,0,0]},ZIndexBehavior:{enumType:`ZIndexBehavior`,type:`Enum`,value:`Global`}},BlockMesh:{Archivable:{type:`bool`,value:!0},Offset:{type:`Vector3`,value:[0,0,0]},Scale:{type:`Vector3`,value:[1,1,1]},VertexColor:{type:`Vector3`,value:[1,1,1]}},BloomEffect:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},Intensity:{type:`number`,value:.4000000059604645},Size:{type:`number`,value:24},Threshold:{type:`number`,value:.949999988079071}},BlurEffect:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},Size:{type:`number`,value:24}},BodyAngularVelocity:{AngularVelocity:{type:`Vector3`,value:[0,2,0]},Archivable:{type:`bool`,value:!0},MaxTorque:{type:`Vector3`,value:[4e3,4e3,4e3]},P:{type:`number`,value:1250}},BodyColors:{Archivable:{type:`bool`,value:!0},HeadColor3:{type:`Color3`,value:[.9921569228172302,.917647123336792,.5529412031173706]},LeftArmColor3:{type:`Color3`,value:[.9921569228172302,.917647123336792,.5529412031173706]},LeftLegColor3:{type:`Color3`,value:[.05098039656877518,.4117647409439087,.6745098233222961]},RightArmColor3:{type:`Color3`,value:[.9921569228172302,.917647123336792,.5529412031173706]},RightLegColor3:{type:`Color3`,value:[.05098039656877518,.4117647409439087,.6745098233222961]},TorsoColor3:{type:`Color3`,value:[.1568627506494522,.49803924560546875,.27843138575553894]}},BodyForce:{Archivable:{type:`bool`,value:!0},Force:{type:`Vector3`,value:[0,1,0]}},BodyGyro:{Archivable:{type:`bool`,value:!0},CFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},D:{type:`number`,value:500},MaxTorque:{type:`Vector3`,value:[4e5,0,4e5]},P:{type:`number`,value:3e3}},BodyPartDescription:{Archivable:{type:`bool`,value:!0},AssetId:{type:`number`,value:0},BodyPart:{enumType:`BodyPart`,type:`Enum`,value:`Head`},Color:{type:`Color3`,value:[0,0,0]},HeadShape:{type:`string`,value:``}},BodyPosition:{Archivable:{type:`bool`,value:!0},D:{type:`number`,value:1250},MaxForce:{type:`Vector3`,value:[4e3,4e3,4e3]},P:{type:`number`,value:1e4},Position:{type:`Vector3`,value:[0,50,0]}},BodyThrust:{Archivable:{type:`bool`,value:!0},Force:{type:`Vector3`,value:[0,1,0]},Location:{type:`Vector3`,value:[0,0,0]}},BodyVelocity:{Archivable:{type:`bool`,value:!0},MaxForce:{type:`Vector3`,value:[4e3,4e3,4e3]},P:{type:`number`,value:1250},Velocity:{type:`Vector3`,value:[0,2,0]}},Bone:{Archivable:{type:`bool`,value:!0},CFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Visible:{type:`bool`,value:!1}},BoolValue:{Archivable:{type:`bool`,value:!0},Value:{type:`bool`,value:!1}},BoxHandleAdornment:{AdornCullingMode:{enumType:`AdornCullingMode`,type:`Enum`,value:`Automatic`},AlwaysOnTop:{type:`bool`,value:!1},Archivable:{type:`bool`,value:!0},CFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Color3:{type:`Color3`,value:[.05098039284348488,.4117647111415863,.6745098233222961]},Shading:{enumType:`AdornShading`,type:`Enum`,value:`Default`},Size:{type:`Vector3`,value:[1,1,1]},SizeRelativeOffset:{type:`Vector3`,value:[0,0,0]},Transparency:{type:`number`,value:0},Visible:{type:`bool`,value:!0},ZIndex:{type:`number`,value:-1}},BrickColorValue:{Archivable:{type:`bool`,value:!0}},CFrameValue:{Archivable:{type:`bool`,value:!0},Value:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]}},Camera:{Archivable:{type:`bool`,value:!0},CFrame:{type:`CFrame`,value:[0,20,20,1,0,0,0,.7071068286895752,.7071068286895752,0,-.7071068286895752,.7071068286895752]},CameraType:{enumType:`CameraType`,type:`Enum`,value:`Fixed`},FieldOfView:{type:`number`,value:70},FieldOfViewMode:{enumType:`FieldOfViewMode`,type:`Enum`,value:`Vertical`},Focus:{type:`CFrame`,value:[0,0,-5,1,0,0,0,1,0,0,0,1]},HeadLocked:{type:`bool`,value:!0},HeadScale:{type:`number`,value:1},VRTiltAndRollEnabled:{type:`bool`,value:!1}},CanvasGroup:{Active:{type:`bool`,value:!1},AnchorPoint:{type:`Vector2`,value:[0,0]},Archivable:{type:`bool`,value:!0},AutoLocalize:{type:`bool`,value:!0},AutomaticSize:{enumType:`AutomaticSize`,type:`Enum`,value:`None`},BackgroundColor3:{type:`Color3`,value:[.6392157077789307,.6352941393852234,.6470588445663452]},BackgroundTransparency:{type:`number`,value:0},BorderColor3:{type:`Color3`,value:[.10588235408067703,.16470588743686676,.2078431397676468]},BorderMode:{enumType:`BorderMode`,type:`Enum`,value:`Outline`},BorderSizePixel:{type:`number`,value:1},ClipsDescendants:{type:`bool`,value:!0},Draggable:{type:`bool`,value:!1},GroupColor3:{type:`Color3`,value:[1,1,1]},GroupTransparency:{type:`number`,value:0},InputSink:{enumType:`InputSink`,type:`Enum`,value:`None`},Interactable:{type:`bool`,value:!0},LayoutOrder:{type:`number`,value:0},Position:{type:`UDim2`,value:[0,0,0,0]},Rotation:{type:`number`,value:0},Selectable:{type:`bool`,value:!1},SelectionBehaviorDown:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorLeft:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorRight:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorUp:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionGroup:{type:`bool`,value:!1},SelectionOrder:{type:`number`,value:0},Size:{type:`UDim2`,value:[0,0,0,0]},SizeConstraint:{enumType:`SizeConstraint`,type:`Enum`,value:`RelativeXY`},Visible:{type:`bool`,value:!0},ZIndex:{type:`number`,value:1}},CharacterMesh:{Archivable:{type:`bool`,value:!0},BodyPart:{enumType:`BodyPart`,type:`Enum`,value:`Head`},OverlayTextureId:{type:`number`,value:0}},ChorusSoundEffect:{Archivable:{type:`bool`,value:!0},Depth:{type:`number`,value:.15000000596046448},Enabled:{type:`bool`,value:!0},Mix:{type:`number`,value:.5},Priority:{type:`number`,value:0},Rate:{type:`number`,value:.5}},ClickDetector:{Archivable:{type:`bool`,value:!0},MaxActivationDistance:{type:`number`,value:32}},Color3Value:{Archivable:{type:`bool`,value:!0},Value:{type:`Color3`,value:[0,0,0]}},ColorCorrectionEffect:{Archivable:{type:`bool`,value:!0},Brightness:{type:`number`,value:0},Contrast:{type:`number`,value:0},Enabled:{type:`bool`,value:!0},Saturation:{type:`number`,value:0},TintColor:{type:`Color3`,value:[1,1,1]}},ColorGradingEffect:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},TonemapperPreset:{enumType:`TonemapperPreset`,type:`Enum`,value:`Default`}},CompositeValueCurve:{Archivable:{type:`bool`,value:!0},CurveType:{enumType:`CompositeValueCurveType`,type:`Enum`,value:`NumberRange`}},CompressorSoundEffect:{Archivable:{type:`bool`,value:!0},Attack:{type:`number`,value:.10000000149011612},Enabled:{type:`bool`,value:!0},GainMakeup:{type:`number`,value:0},Priority:{type:`number`,value:0},Ratio:{type:`number`,value:40},Release:{type:`number`,value:.10000000149011612},Threshold:{type:`number`,value:-40}},ConeHandleAdornment:{AdornCullingMode:{enumType:`AdornCullingMode`,type:`Enum`,value:`Automatic`},AlwaysOnTop:{type:`bool`,value:!1},Archivable:{type:`bool`,value:!0},CFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Color3:{type:`Color3`,value:[.05098039284348488,.4117647111415863,.6745098233222961]},Height:{type:`number`,value:2},Hollow:{type:`bool`,value:!1},Radius:{type:`number`,value:.5},Shading:{enumType:`AdornShading`,type:`Enum`,value:`Default`},SizeRelativeOffset:{type:`Vector3`,value:[0,0,0]},Transparency:{type:`number`,value:0},Visible:{type:`bool`,value:!0},ZIndex:{type:`number`,value:-1}},Configuration:{Archivable:{type:`bool`,value:!0}},CornerWedgePart:{Anchored:{type:`bool`,value:!1},Archivable:{type:`bool`,value:!0},AudioCanCollide:{type:`bool`,value:!0},BackParamA:{type:`number`,value:-.5},BackParamB:{type:`number`,value:.5},BackSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},BackSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},BottomParamA:{type:`number`,value:-.5},BottomParamB:{type:`number`,value:.5},BottomSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},BottomSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},CFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},CanCollide:{type:`bool`,value:!0},CanQuery:{type:`bool`,value:!0},CanTouch:{type:`bool`,value:!0},CastShadow:{type:`bool`,value:!0},CollisionGroup:{type:`string`,value:`Default`},CollisionGroupId:{type:`number`,value:0},Color:{type:`Color3`,value:[163,162,165]},EnableFluidForces:{type:`bool`,value:!0},FrontParamA:{type:`number`,value:-.5},FrontParamB:{type:`number`,value:.5},FrontSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},FrontSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},LeftParamA:{type:`number`,value:-.5},LeftParamB:{type:`number`,value:.5},LeftSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},LeftSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},Locked:{type:`bool`,value:!1},Massless:{type:`bool`,value:!1},Material:{enumType:`Material`,type:`Enum`,value:`Plastic`},MaterialVariant:{type:`string`,value:``},PivotOffset:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Reflectance:{type:`number`,value:0},RightParamA:{type:`number`,value:-.5},RightParamB:{type:`number`,value:.5},RightSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},RightSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},RootPriority:{type:`number`,value:0},RotVelocity:{type:`Vector3`,value:[0,0,0]},Size:{type:`Vector3`,value:[2,2,2]},TopParamA:{type:`number`,value:-.5},TopParamB:{type:`number`,value:.5},TopSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},TopSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},Transparency:{type:`number`,value:0},Velocity:{type:`Vector3`,value:[0,0,0]}},CurveAnimation:{Archivable:{type:`bool`,value:!0},Loop:{type:`bool`,value:!0},Priority:{enumType:`AnimationPriority`,type:`Enum`,value:`Action`}},CustomLog:{Archivable:{type:`bool`,value:!0}},CylinderHandleAdornment:{AdornCullingMode:{enumType:`AdornCullingMode`,type:`Enum`,value:`Automatic`},AlwaysOnTop:{type:`bool`,value:!1},Angle:{type:`number`,value:360},Archivable:{type:`bool`,value:!0},CFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Color3:{type:`Color3`,value:[.05098039284348488,.4117647111415863,.6745098233222961]},Height:{type:`number`,value:1},InnerRadius:{type:`number`,value:0},Radius:{type:`number`,value:1},Shading:{enumType:`AdornShading`,type:`Enum`,value:`Default`},SizeRelativeOffset:{type:`Vector3`,value:[0,0,0]},Transparency:{type:`number`,value:0},Visible:{type:`bool`,value:!0},ZIndex:{type:`number`,value:-1}},CylinderMesh:{Archivable:{type:`bool`,value:!0},Offset:{type:`Vector3`,value:[0,0,0]},Scale:{type:`Vector3`,value:[1,1,1]},VertexColor:{type:`Vector3`,value:[1,1,1]}},CylindricalConstraint:{ActuatorType:{enumType:`ActuatorType`,type:`Enum`,value:`None`},AngularActuatorType:{enumType:`ActuatorType`,type:`Enum`,value:`None`},AngularLimitsEnabled:{type:`bool`,value:!1},AngularResponsiveness:{type:`number`,value:45},AngularRestitution:{type:`number`,value:0},AngularSpeed:{type:`number`,value:0},AngularVelocity:{type:`number`,value:0},Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},InclinationAngle:{type:`number`,value:0},LimitsEnabled:{type:`bool`,value:!1},LinearResponsiveness:{type:`number`,value:45},LowerAngle:{type:`number`,value:-45},LowerLimit:{type:`number`,value:0},MotorMaxAcceleration:{type:`number`,value:`inf`},MotorMaxAngularAcceleration:{type:`number`,value:5e5},MotorMaxForce:{type:`number`,value:0},MotorMaxTorque:{type:`number`,value:0},Restitution:{type:`number`,value:0},RotationAxisVisible:{type:`bool`,value:!1},ServoMaxForce:{type:`number`,value:0},ServoMaxTorque:{type:`number`,value:0},Size:{type:`number`,value:.15000000596046448},SoftlockAngularServoUponReachingTarget:{type:`bool`,value:!1},SoftlockServoUponReachingTarget:{type:`bool`,value:!1},Speed:{type:`number`,value:0},TargetAngle:{type:`number`,value:0},TargetPosition:{type:`number`,value:0},UpperAngle:{type:`number`,value:45},UpperLimit:{type:`number`,value:5},Velocity:{type:`number`,value:0},Visible:{type:`bool`,value:!1}},Decal:{Archivable:{type:`bool`,value:!0},AutoLocalize:{type:`bool`,value:!0},Color3:{type:`Color3`,value:[1,1,1]},Face:{enumType:`NormalId`,type:`Enum`,value:`Front`},Rotation:{type:`number`,value:0},Transparency:{type:`number`,value:0},UVOffset:{type:`Vector2`,value:[0,0]},UVScale:{type:`Vector2`,value:[1,1]},ZIndex:{type:`number`,value:1}},DepthOfFieldEffect:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},FarIntensity:{type:`number`,value:.75},FocusDistance:{type:`number`,value:.05000000074505806},InFocusRadius:{type:`number`,value:10},NearIntensity:{type:`number`,value:.75}},DigitsRigDescription:{Archivable:{type:`bool`,value:!0},Index1TposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Index2TposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Index3TposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},IndexRange:{type:`Vector3`,value:[0,0,0]},IndexSize:{type:`number`,value:0},Middle1TposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Middle2TposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Middle3TposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},MiddleRange:{type:`Vector3`,value:[0,0,0]},MiddleSize:{type:`number`,value:0},Pinky1TposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Pinky2TposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Pinky3TposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},PinkyRange:{type:`Vector3`,value:[0,0,0]},PinkySize:{type:`number`,value:0},Ring1TposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Ring2TposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Ring3TposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},RingRange:{type:`Vector3`,value:[0,0,0]},RingSize:{type:`number`,value:0},Side:{enumType:`DigitsRigDescriptionSide`,type:`Enum`,value:`None`},Thumb1TposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Thumb2TposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Thumb3TposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},ThumbRange:{type:`Vector3`,value:[0,0,0]},ThumbSize:{type:`number`,value:0}},DistortionSoundEffect:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},Level:{type:`number`,value:.75},Priority:{type:`number`,value:0}},DoubleConstrainedValue:{Archivable:{type:`bool`,value:!0},MaxValue:{type:`number`,value:1},MinValue:{type:`number`,value:0}},DragDetector:{ApplyAtCenterOfMass:{type:`bool`,value:!1},Archivable:{type:`bool`,value:!0},DragFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},DragStyle:{enumType:`DragDetectorDragStyle`,type:`Enum`,value:`TranslatePlane`},Enabled:{type:`bool`,value:!0},GamepadModeSwitchKeyCode:{enumType:`KeyCode`,type:`Enum`,value:`ButtonR1`},KeyboardModeSwitchKeyCode:{enumType:`KeyCode`,type:`Enum`,value:`LeftControl`},MaxActivationDistance:{type:`number`,value:32},MaxDragAngle:{type:`number`,value:0},MaxDragTranslation:{type:`Vector3`,value:[0,0,0]},MaxForce:{type:`number`,value:1e7},MaxTorque:{type:`number`,value:1e4},MinDragAngle:{type:`number`,value:0},MinDragTranslation:{type:`Vector3`,value:[0,0,0]},Orientation:{type:`Vector3`,value:[0,180,90]},PermissionPolicy:{enumType:`DragDetectorPermissionPolicy`,type:`Enum`,value:`Everybody`},ResponseStyle:{enumType:`DragDetectorResponseStyle`,type:`Enum`,value:`Physical`},Responsiveness:{type:`number`,value:10},RunLocally:{type:`bool`,value:!1},TrackballRadialPullFactor:{type:`number`,value:1},TrackballRollFactor:{type:`number`,value:1},VRSwitchKeyCode:{enumType:`KeyCode`,type:`Enum`,value:`ButtonL2`}},Dragger:{Archivable:{type:`bool`,value:!0}},EchoSoundEffect:{Archivable:{type:`bool`,value:!0},Delay:{type:`number`,value:1},DryLevel:{type:`number`,value:0},Enabled:{type:`bool`,value:!0},Feedback:{type:`number`,value:.5},Priority:{type:`number`,value:0},WetLevel:{type:`number`,value:0}},EqualizerSoundEffect:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},HighGain:{type:`number`,value:0},LowGain:{type:`number`,value:-20},MidGain:{type:`number`,value:-10},Priority:{type:`number`,value:0}},EulerRotationCurve:{Archivable:{type:`bool`,value:!0},RotationOrder:{enumType:`RotationOrder`,type:`Enum`,value:`XYZ`}},ExplorerFilter:{Archivable:{type:`bool`,value:!0}},FaceControls:{Archivable:{type:`bool`,value:!0}},FileMesh:{Archivable:{type:`bool`,value:!0},Offset:{type:`Vector3`,value:[0,0,0]},Scale:{type:`Vector3`,value:[1,1,1]},VertexColor:{type:`Vector3`,value:[1,1,1]}},Fire:{Archivable:{type:`bool`,value:!0},Color:{type:`Color3`,value:[.9254902601242065,.545098066329956,.27450981736183167]},Enabled:{type:`bool`,value:!0},Heat:{type:`number`,value:9},SecondaryColor:{type:`Color3`,value:[.545098066329956,.3137255012989044,.21568629145622253]},Size:{type:`number`,value:5},TimeScale:{type:`number`,value:1}},FlangeSoundEffect:{Archivable:{type:`bool`,value:!0},Depth:{type:`number`,value:.44999998807907104},Enabled:{type:`bool`,value:!0},Mix:{type:`number`,value:.8500000238418579},Priority:{type:`number`,value:0},Rate:{type:`number`,value:5}},FloatCurve:{Archivable:{type:`bool`,value:!0}},FloorWire:{Archivable:{type:`bool`,value:!0},Color3:{type:`Color3`,value:[.05098039284348488,.4117647111415863,.6745098233222961]},CycleOffset:{type:`number`,value:0},StudsBetweenTextures:{type:`number`,value:4},TextureSize:{type:`Vector2`,value:[1,1]},Transparency:{type:`number`,value:0},Velocity:{type:`number`,value:2},Visible:{type:`bool`,value:!0},WireRadius:{type:`number`,value:.0625}},Folder:{Archivable:{type:`bool`,value:!0}},ForceField:{Archivable:{type:`bool`,value:!0},Visible:{type:`bool`,value:!0}},Frame:{Active:{type:`bool`,value:!1},AnchorPoint:{type:`Vector2`,value:[0,0]},Archivable:{type:`bool`,value:!0},AutoLocalize:{type:`bool`,value:!0},AutomaticSize:{enumType:`AutomaticSize`,type:`Enum`,value:`None`},BackgroundColor3:{type:`Color3`,value:[.6392157077789307,.6352941393852234,.6470588445663452]},BackgroundTransparency:{type:`number`,value:0},BorderColor3:{type:`Color3`,value:[.10588235408067703,.16470588743686676,.2078431397676468]},BorderMode:{enumType:`BorderMode`,type:`Enum`,value:`Outline`},BorderSizePixel:{type:`number`,value:1},ClipsDescendants:{type:`bool`,value:!1},Draggable:{type:`bool`,value:!1},InputSink:{enumType:`InputSink`,type:`Enum`,value:`None`},Interactable:{type:`bool`,value:!0},LayoutOrder:{type:`number`,value:0},Position:{type:`UDim2`,value:[0,0,0,0]},Rotation:{type:`number`,value:0},Selectable:{type:`bool`,value:!1},SelectionBehaviorDown:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorLeft:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorRight:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorUp:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionGroup:{type:`bool`,value:!1},SelectionOrder:{type:`number`,value:0},Size:{type:`UDim2`,value:[0,0,0,0]},SizeConstraint:{enumType:`SizeConstraint`,type:`Enum`,value:`RelativeXY`},Style:{enumType:`FrameStyle`,type:`Enum`,value:`Custom`},Visible:{type:`bool`,value:!0},ZIndex:{type:`number`,value:1}},GeneratedFolder:{Archivable:{type:`bool`,value:!0}},Handles:{Archivable:{type:`bool`,value:!0},Color3:{type:`Color3`,value:[.05098039284348488,.4117647111415863,.6745098233222961]},Style:{enumType:`HandlesStyle`,type:`Enum`,value:`Resize`},Transparency:{type:`number`,value:0},Visible:{type:`bool`,value:!0}},HapticEffect:{Archivable:{type:`bool`,value:!0},Looped:{type:`bool`,value:!1},Position:{type:`Vector3`,value:[0,0,0]},Radius:{type:`number`,value:3},Type:{enumType:`HapticEffectType`,type:`Enum`,value:`UIClick`}},Highlight:{Archivable:{type:`bool`,value:!0},DepthMode:{enumType:`HighlightDepthMode`,type:`Enum`,value:`AlwaysOnTop`},Enabled:{type:`bool`,value:!0},FillColor:{type:`Color3`,value:[1,0,0]},FillTransparency:{type:`number`,value:.5},OutlineColor:{type:`Color3`,value:[1,1,1]},OutlineTransparency:{type:`number`,value:0}},HingeConstraint:{ActuatorType:{enumType:`ActuatorType`,type:`Enum`,value:`None`},AngularResponsiveness:{type:`number`,value:45},AngularSpeed:{type:`number`,value:0},AngularVelocity:{type:`number`,value:0},Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},LimitsEnabled:{type:`bool`,value:!1},LowerAngle:{type:`number`,value:-45},MotorMaxAcceleration:{type:`number`,value:5e5},MotorMaxTorque:{type:`number`,value:0},Radius:{type:`number`,value:.15000000596046448},Restitution:{type:`number`,value:0},ServoMaxTorque:{type:`number`,value:0},SoftlockServoUponReachingTarget:{type:`bool`,value:!1},TargetAngle:{type:`number`,value:0},UpperAngle:{type:`number`,value:45},Visible:{type:`bool`,value:!1}},Humanoid:{Archivable:{type:`bool`,value:!0},AutoJumpEnabled:{type:`bool`,value:!0},AutoRotate:{type:`bool`,value:!0},AutomaticScalingEnabled:{type:`bool`,value:!0},BreakJointsOnDeath:{type:`bool`,value:!0},CollisionType:{enumType:`HumanoidCollisionType`,type:`Enum`,value:`OuterBox`},DisplayDistanceType:{enumType:`HumanoidDisplayDistanceType`,type:`Enum`,value:`Viewer`},DisplayName:{type:`string`,value:``},EvaluateStateMachine:{type:`bool`,value:!0},HealthDisplayDistance:{type:`number`,value:100},HealthDisplayType:{enumType:`HumanoidHealthDisplayType`,type:`Enum`,value:`DisplayWhenDamaged`},HipHeight:{type:`number`,value:0},JumpHeight:{type:`number`,value:7.199999809265137},JumpPower:{type:`number`,value:50},MaxHealth:{type:`number`,value:100},MaxSlopeAngle:{type:`number`,value:89},NameDisplayDistance:{type:`number`,value:100},NameOcclusion:{enumType:`NameOcclusion`,type:`Enum`,value:`OccludeAll`},RequiresNeck:{type:`bool`,value:!0},RigType:{enumType:`HumanoidRigType`,type:`Enum`,value:`R6`},UseJumpPower:{type:`bool`,value:!0},WalkSpeed:{type:`number`,value:16}},HumanoidController:{Archivable:{type:`bool`,value:!0}},HumanoidDescription:{Archivable:{type:`bool`,value:!0},BodyTypeScale:{type:`number`,value:.30000001192092896},ClimbAnimation:{type:`number`,value:0},DepthScale:{type:`number`,value:1},Face:{type:`number`,value:0},FallAnimation:{type:`number`,value:0},GraphicTShirt:{type:`number`,value:0},HeadScale:{type:`number`,value:1},HeightScale:{type:`number`,value:1},IdleAnimation:{type:`number`,value:0},JumpAnimation:{type:`number`,value:0},MoodAnimation:{type:`number`,value:0},Pants:{type:`number`,value:0},ProportionScale:{type:`number`,value:1},RunAnimation:{type:`number`,value:0},Shirt:{type:`number`,value:0},StaticFacialAnimation:{type:`bool`,value:!1},SwimAnimation:{type:`number`,value:0},UseAvatarSettings:{type:`bool`,value:!1},WalkAnimation:{type:`number`,value:0},WidthScale:{type:`number`,value:1}},HumanoidRigDescription:{Archivable:{type:`bool`,value:!0},ChestRangeMax:{type:`Vector3`,value:[0,0,0]},ChestRangeMin:{type:`Vector3`,value:[0,0,0]},ChestSize:{type:`number`,value:0},ChestTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},HeadBaseRangeMax:{type:`Vector3`,value:[0,0,0]},HeadBaseRangeMin:{type:`Vector3`,value:[0,0,0]},HeadBaseSize:{type:`number`,value:0},HeadBaseTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},LeftAnkleRangeMax:{type:`Vector3`,value:[0,0,0]},LeftAnkleRangeMin:{type:`Vector3`,value:[0,0,0]},LeftAnkleSize:{type:`number`,value:0},LeftAnkleTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},LeftClavicleRangeMax:{type:`Vector3`,value:[0,0,0]},LeftClavicleRangeMin:{type:`Vector3`,value:[0,0,0]},LeftClavicleSize:{type:`number`,value:0},LeftClavicleTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},LeftElbowRangeMax:{type:`Vector3`,value:[0,0,0]},LeftElbowRangeMin:{type:`Vector3`,value:[0,0,0]},LeftElbowSize:{type:`number`,value:0},LeftElbowTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},LeftHipRangeMax:{type:`Vector3`,value:[0,0,0]},LeftHipRangeMin:{type:`Vector3`,value:[0,0,0]},LeftHipSize:{type:`number`,value:0},LeftHipTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},LeftKneeRangeMax:{type:`Vector3`,value:[0,0,0]},LeftKneeRangeMin:{type:`Vector3`,value:[0,0,0]},LeftKneeSize:{type:`number`,value:0},LeftKneeTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},LeftShoulderRangeMax:{type:`Vector3`,value:[0,0,0]},LeftShoulderRangeMin:{type:`Vector3`,value:[0,0,0]},LeftShoulderSize:{type:`number`,value:0},LeftShoulderTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},LeftToeBaseRangeMax:{type:`Vector3`,value:[0,0,0]},LeftToeBaseRangeMin:{type:`Vector3`,value:[0,0,0]},LeftToeBaseSize:{type:`number`,value:0},LeftToeBaseTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},LeftWristRangeMax:{type:`Vector3`,value:[0,0,0]},LeftWristRangeMin:{type:`Vector3`,value:[0,0,0]},LeftWristSize:{type:`number`,value:0},LeftWristTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},NeckRangeMax:{type:`Vector3`,value:[0,0,0]},NeckRangeMin:{type:`Vector3`,value:[0,0,0]},NeckSize:{type:`number`,value:0},NeckTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},RightAnkleRangeMax:{type:`Vector3`,value:[0,0,0]},RightAnkleRangeMin:{type:`Vector3`,value:[0,0,0]},RightAnkleSize:{type:`number`,value:0},RightAnkleTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},RightClavicleRangeMax:{type:`Vector3`,value:[0,0,0]},RightClavicleRangeMin:{type:`Vector3`,value:[0,0,0]},RightClavicleSize:{type:`number`,value:0},RightClavicleTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},RightElbowRangeMax:{type:`Vector3`,value:[0,0,0]},RightElbowRangeMin:{type:`Vector3`,value:[0,0,0]},RightElbowSize:{type:`number`,value:0},RightElbowTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},RightHipRangeMax:{type:`Vector3`,value:[0,0,0]},RightHipRangeMin:{type:`Vector3`,value:[0,0,0]},RightHipSize:{type:`number`,value:0},RightHipTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},RightKneeRangeMax:{type:`Vector3`,value:[0,0,0]},RightKneeRangeMin:{type:`Vector3`,value:[0,0,0]},RightKneeSize:{type:`number`,value:0},RightKneeTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},RightShoulderRangeMax:{type:`Vector3`,value:[0,0,0]},RightShoulderRangeMin:{type:`Vector3`,value:[0,0,0]},RightShoulderSize:{type:`number`,value:0},RightShoulderTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},RightToeBaseRangeMax:{type:`Vector3`,value:[0,0,0]},RightToeBaseRangeMin:{type:`Vector3`,value:[0,0,0]},RightToeBaseSize:{type:`number`,value:0},RightToeBaseTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},RightWristRangeMax:{type:`Vector3`,value:[0,0,0]},RightWristRangeMin:{type:`Vector3`,value:[0,0,0]},RightWristSize:{type:`number`,value:0},RightWristTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},RootRangeMax:{type:`Vector3`,value:[0,0,0]},RootRangeMin:{type:`Vector3`,value:[0,0,0]},RootSize:{type:`number`,value:0},RootTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},SpineRangeMax:{type:`Vector3`,value:[0,0,0]},SpineRangeMin:{type:`Vector3`,value:[0,0,0]},SpineSize:{type:`number`,value:0},SpineTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},WaistRangeMax:{type:`Vector3`,value:[0,0,0]},WaistRangeMin:{type:`Vector3`,value:[0,0,0]},WaistSize:{type:`number`,value:0},WaistTposeAdjustment:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]}},IKControl:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},EndEffectorOffset:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Offset:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Priority:{type:`number`,value:0},SmoothTime:{type:`number`,value:.05000000074505806},Type:{enumType:`IKControlType`,type:`Enum`,value:`Transform`},Weight:{type:`number`,value:1}},ImageButton:{Active:{type:`bool`,value:!0},AnchorPoint:{type:`Vector2`,value:[0,0]},Archivable:{type:`bool`,value:!0},AutoButtonColor:{type:`bool`,value:!0},AutoLocalize:{type:`bool`,value:!0},AutomaticSize:{enumType:`AutomaticSize`,type:`Enum`,value:`None`},BackgroundColor3:{type:`Color3`,value:[.6392157077789307,.6352941393852234,.6470588445663452]},BackgroundTransparency:{type:`number`,value:0},BorderColor3:{type:`Color3`,value:[.10588235408067703,.16470588743686676,.2078431397676468]},BorderMode:{enumType:`BorderMode`,type:`Enum`,value:`Outline`},BorderSizePixel:{type:`number`,value:1},ClipsDescendants:{type:`bool`,value:!1},Draggable:{type:`bool`,value:!1},ImageColor3:{type:`Color3`,value:[1,1,1]},ImageRectOffset:{type:`Vector2`,value:[0,0]},ImageRectSize:{type:`Vector2`,value:[0,0]},ImageTransparency:{type:`number`,value:0},InputSink:{enumType:`InputSink`,type:`Enum`,value:`None`},Interactable:{type:`bool`,value:!0},LayoutOrder:{type:`number`,value:0},Modal:{type:`bool`,value:!1},Position:{type:`UDim2`,value:[0,0,0,0]},ResampleMode:{enumType:`ResamplerMode`,type:`Enum`,value:`Default`},Rotation:{type:`number`,value:0},ScaleType:{enumType:`ScaleType`,type:`Enum`,value:`Stretch`},Selectable:{type:`bool`,value:!0},Selected:{type:`bool`,value:!1},SelectionBehaviorDown:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorLeft:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorRight:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorUp:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionGroup:{type:`bool`,value:!1},SelectionOrder:{type:`number`,value:0},Size:{type:`UDim2`,value:[0,0,0,0]},SizeConstraint:{enumType:`SizeConstraint`,type:`Enum`,value:`RelativeXY`},SliceCenter:{type:`Rect`,value:[0,0,0,0]},SliceScale:{type:`number`,value:1},Style:{enumType:`ButtonStyle`,type:`Enum`,value:`Custom`},TileSize:{type:`UDim2`,value:[1,0,1,0]},Visible:{type:`bool`,value:!0},ZIndex:{type:`number`,value:1}},ImageHandleAdornment:{AdornCullingMode:{enumType:`AdornCullingMode`,type:`Enum`,value:`Automatic`},AlwaysOnTop:{type:`bool`,value:!1},Archivable:{type:`bool`,value:!0},CFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Color3:{type:`Color3`,value:[.9490196704864502,.9529412388801575,.9529412388801575]},Size:{type:`Vector2`,value:[1,1]},SizeRelativeOffset:{type:`Vector3`,value:[0,0,0]},Transparency:{type:`number`,value:0},Visible:{type:`bool`,value:!0},ZIndex:{type:`number`,value:-1}},ImageLabel:{Active:{type:`bool`,value:!1},AnchorPoint:{type:`Vector2`,value:[0,0]},Archivable:{type:`bool`,value:!0},AutoLocalize:{type:`bool`,value:!0},AutomaticSize:{enumType:`AutomaticSize`,type:`Enum`,value:`None`},BackgroundColor3:{type:`Color3`,value:[.6392157077789307,.6352941393852234,.6470588445663452]},BackgroundTransparency:{type:`number`,value:0},BorderColor3:{type:`Color3`,value:[.10588235408067703,.16470588743686676,.2078431397676468]},BorderMode:{enumType:`BorderMode`,type:`Enum`,value:`Outline`},BorderSizePixel:{type:`number`,value:1},ClipsDescendants:{type:`bool`,value:!1},Draggable:{type:`bool`,value:!1},ImageColor3:{type:`Color3`,value:[1,1,1]},ImageRectOffset:{type:`Vector2`,value:[0,0]},ImageRectSize:{type:`Vector2`,value:[0,0]},ImageTransparency:{type:`number`,value:0},InputSink:{enumType:`InputSink`,type:`Enum`,value:`None`},Interactable:{type:`bool`,value:!0},LayoutOrder:{type:`number`,value:0},Position:{type:`UDim2`,value:[0,0,0,0]},ResampleMode:{enumType:`ResamplerMode`,type:`Enum`,value:`Default`},Rotation:{type:`number`,value:0},ScaleType:{enumType:`ScaleType`,type:`Enum`,value:`Stretch`},Selectable:{type:`bool`,value:!1},SelectionBehaviorDown:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorLeft:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorRight:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorUp:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionGroup:{type:`bool`,value:!1},SelectionOrder:{type:`number`,value:0},Size:{type:`UDim2`,value:[0,0,0,0]},SizeConstraint:{enumType:`SizeConstraint`,type:`Enum`,value:`RelativeXY`},SliceCenter:{type:`Rect`,value:[0,0,0,0]},SliceScale:{type:`number`,value:1},TileSize:{type:`UDim2`,value:[1,0,1,0]},Visible:{type:`bool`,value:!0},ZIndex:{type:`number`,value:1}},InputAction:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},Type:{enumType:`InputActionType`,type:`Enum`,value:`Bool`}},InputBinding:{Archivable:{type:`bool`,value:!0},Backward:{enumType:`KeyCode`,type:`Enum`,value:`Unknown`},ClampMagnitudeToOne:{type:`bool`,value:!0},Down:{enumType:`KeyCode`,type:`Enum`,value:`Unknown`},Forward:{enumType:`KeyCode`,type:`Enum`,value:`Unknown`},KeyCode:{enumType:`KeyCode`,type:`Enum`,value:`Unknown`},Left:{enumType:`KeyCode`,type:`Enum`,value:`Unknown`},PointerIndex:{type:`number`,value:0},PressedThreshold:{type:`number`,value:.5},PrimaryModifier:{enumType:`KeyCode`,type:`Enum`,value:`Unknown`},ReleasedThreshold:{type:`number`,value:.20000000298023224},ResponseCurve:{type:`number`,value:1},Right:{enumType:`KeyCode`,type:`Enum`,value:`Unknown`},Scale:{type:`number`,value:1},SecondaryModifier:{enumType:`KeyCode`,type:`Enum`,value:`Unknown`},Type:{enumType:`InputBindingType`,type:`Enum`,value:`Automatic`},Up:{enumType:`KeyCode`,type:`Enum`,value:`Unknown`},Vector2Scale:{type:`Vector2`,value:[1,1]},Vector3Scale:{type:`Vector3`,value:[1,1,1]}},InputContext:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},Priority:{type:`number`,value:1e3},Sink:{type:`bool`,value:!1}},IntConstrainedValue:{Archivable:{type:`bool`,value:!0},MaxValue:{type:`number`,value:10},MinValue:{type:`number`,value:0}},IntValue:{Archivable:{type:`bool`,value:!0},Value:{type:`number`,value:0}},LineForce:{ApplyAtCenterOfMass:{type:`bool`,value:!1},Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},InverseSquareLaw:{type:`bool`,value:!1},Magnitude:{type:`number`,value:1e3},MaxForce:{type:`number`,value:`inf`},ReactionForceEnabled:{type:`bool`,value:!1},Visible:{type:`bool`,value:!1}},LineHandleAdornment:{AdornCullingMode:{enumType:`AdornCullingMode`,type:`Enum`,value:`Automatic`},AlwaysOnTop:{type:`bool`,value:!1},Archivable:{type:`bool`,value:!0},CFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Color3:{type:`Color3`,value:[.05098039284348488,.4117647111415863,.6745098233222961]},Length:{type:`number`,value:5},SizeRelativeOffset:{type:`Vector3`,value:[0,0,0]},Thickness:{type:`number`,value:1},Transparency:{type:`number`,value:0},Visible:{type:`bool`,value:!0},ZIndex:{type:`number`,value:-1}},LinearVelocity:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},ForceLimitMode:{enumType:`ForceLimitMode`,type:`Enum`,value:`Magnitude`},ForceLimitsEnabled:{type:`bool`,value:!0},LineDirection:{type:`Vector3`,value:[1,0,0]},LineVelocity:{type:`number`,value:0},MaxAxesForce:{type:`Vector3`,value:[1e3,1e3,1e3]},MaxForce:{type:`number`,value:1e3},MaxPlanarAxesForce:{type:`Vector2`,value:[1e3,1e3]},PlaneVelocity:{type:`Vector2`,value:[0,0]},PrimaryTangentAxis:{type:`Vector3`,value:[1,0,0]},ReactionForceEnabled:{type:`bool`,value:!0},RelativeTo:{enumType:`ActuatorRelativeTo`,type:`Enum`,value:`World`},SecondaryTangentAxis:{type:`Vector3`,value:[0,1,0]},VectorVelocity:{type:`Vector3`,value:[0,0,0]},VelocityConstraintMode:{enumType:`VelocityConstraintMode`,type:`Enum`,value:`Vector`},Visible:{type:`bool`,value:!1}},LocalizationTable:{Archivable:{type:`bool`,value:!0},SourceLocaleId:{type:`string`,value:`en-us`}},MakeupDescription:{Archivable:{type:`bool`,value:!0},AssetId:{type:`number`,value:0},MakeupType:{enumType:`MakeupType`,type:`Enum`,value:`Face`},Order:{type:`number`,value:0}},MaterialVariant:{AlphaMode:{enumType:`AlphaMode`,type:`Enum`,value:`Opaque`},Archivable:{type:`bool`,value:!0},BaseMaterial:{enumType:`Material`,type:`Enum`,value:`Plastic`},EmissiveStrength:{type:`number`,value:1},EmissiveTint:{type:`Color3`,value:[1,1,1]},MaterialPattern:{enumType:`MaterialPattern`,type:`Enum`,value:`Regular`},StudsPerTile:{type:`number`,value:10}},MeshPart:{Anchored:{type:`bool`,value:!1},Archivable:{type:`bool`,value:!0},AudioCanCollide:{type:`bool`,value:!0},BackParamA:{type:`number`,value:-.5},BackParamB:{type:`number`,value:.5},BackSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},BackSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},BottomParamA:{type:`number`,value:-.5},BottomParamB:{type:`number`,value:.5},BottomSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},BottomSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},CFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},CanCollide:{type:`bool`,value:!0},CanQuery:{type:`bool`,value:!0},CanTouch:{type:`bool`,value:!0},CastShadow:{type:`bool`,value:!0},CollisionGroup:{type:`string`,value:`Default`},CollisionGroupId:{type:`number`,value:0},Color:{type:`Color3`,value:[163,162,165]},DoubleSided:{type:`bool`,value:!1},EnableFluidForces:{type:`bool`,value:!0},FrontParamA:{type:`number`,value:-.5},FrontParamB:{type:`number`,value:.5},FrontSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},FrontSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},LeftParamA:{type:`number`,value:-.5},LeftParamB:{type:`number`,value:.5},LeftSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},LeftSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},Locked:{type:`bool`,value:!1},Massless:{type:`bool`,value:!1},Material:{enumType:`Material`,type:`Enum`,value:`Plastic`},MaterialVariant:{type:`string`,value:``},PivotOffset:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Reflectance:{type:`number`,value:0},RenderFidelity:{enumType:`RenderFidelity`,type:`Enum`,value:`Automatic`},RightParamA:{type:`number`,value:-.5},RightParamB:{type:`number`,value:.5},RightSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},RightSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},RootPriority:{type:`number`,value:0},RotVelocity:{type:`Vector3`,value:[0,0,0]},Size:{type:`Vector3`,value:[4,1.2000000476837158,2]},TopParamA:{type:`number`,value:-.5},TopParamB:{type:`number`,value:.5},TopSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},TopSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},Transparency:{type:`number`,value:0},Velocity:{type:`Vector3`,value:[0,0,0]}},Model:{Archivable:{type:`bool`,value:!0},LevelOfDetail:{enumType:`ModelLevelOfDetail`,type:`Enum`,value:`Automatic`},ModelStreamingMode:{enumType:`ModelStreamingMode`,type:`Enum`,value:`Default`}},Motor:{Archivable:{type:`bool`,value:!0},C0:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},C1:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},DesiredAngle:{type:`number`,value:0},Enabled:{type:`bool`,value:!0},MaxVelocity:{type:`number`,value:0}},Motor6D:{Archivable:{type:`bool`,value:!0},C0:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},C1:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},DesiredAngle:{type:`number`,value:0},Enabled:{type:`bool`,value:!0},MaxVelocity:{type:`number`,value:0}},MotorFeature:{Archivable:{type:`bool`,value:!0},FaceId:{enumType:`NormalId`,type:`Enum`,value:`Right`},InOut:{enumType:`InOut`,type:`Enum`,value:`Center`},LeftRight:{enumType:`LeftRight`,type:`Enum`,value:`Center`},TopBottom:{enumType:`TopBottom`,type:`Enum`,value:`Center`}},NoCollisionConstraint:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0}},Noise:{Archivable:{type:`bool`,value:!0}},NumberPose:{Archivable:{type:`bool`,value:!0},EasingDirection:{enumType:`PoseEasingDirection`,type:`Enum`,value:`In`},EasingStyle:{enumType:`PoseEasingStyle`,type:`Enum`,value:`Linear`},Value:{type:`number`,value:0},Weight:{type:`number`,value:1}},NumberValue:{Archivable:{type:`bool`,value:!0},Value:{type:`number`,value:0}},ObjectValue:{Archivable:{type:`bool`,value:!0}},Pants:{Archivable:{type:`bool`,value:!0},Color3:{type:`Color3`,value:[1,1,1]}},Part:{Anchored:{type:`bool`,value:!1},Archivable:{type:`bool`,value:!0},AudioCanCollide:{type:`bool`,value:!0},BackParamA:{type:`number`,value:-.5},BackParamB:{type:`number`,value:.5},BackSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},BackSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},BottomParamA:{type:`number`,value:-.5},BottomParamB:{type:`number`,value:.5},BottomSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Inlet`},BottomSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},CFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},CanCollide:{type:`bool`,value:!0},CanQuery:{type:`bool`,value:!0},CanTouch:{type:`bool`,value:!0},CastShadow:{type:`bool`,value:!0},CollisionGroup:{type:`string`,value:`Default`},CollisionGroupId:{type:`number`,value:0},Color:{type:`Color3`,value:[163,162,165]},EnableFluidForces:{type:`bool`,value:!0},FormFactor:{enumType:`FormFactor`,type:`Enum`,value:`Brick`},FrontParamA:{type:`number`,value:-.5},FrontParamB:{type:`number`,value:.5},FrontSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},FrontSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},LeftParamA:{type:`number`,value:-.5},LeftParamB:{type:`number`,value:.5},LeftSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},LeftSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},Locked:{type:`bool`,value:!1},Massless:{type:`bool`,value:!1},Material:{enumType:`Material`,type:`Enum`,value:`Plastic`},MaterialVariant:{type:`string`,value:``},PivotOffset:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Reflectance:{type:`number`,value:0},RightParamA:{type:`number`,value:-.5},RightParamB:{type:`number`,value:.5},RightSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},RightSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},RootPriority:{type:`number`,value:0},RotVelocity:{type:`Vector3`,value:[0,0,0]},Shape:{enumType:`PartType`,type:`Enum`,value:`Block`},Size:{type:`Vector3`,value:[4,1.2000000476837158,2]},TopParamA:{type:`number`,value:-.5},TopParamB:{type:`number`,value:.5},TopSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Studs`},TopSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},Transparency:{type:`number`,value:0},Velocity:{type:`Vector3`,value:[0,0,0]}},ParticleEmitter:{Acceleration:{type:`Vector3`,value:[0,0,0]},Archivable:{type:`bool`,value:!0},Brightness:{type:`number`,value:1},Drag:{type:`number`,value:0},EmissionDirection:{enumType:`NormalId`,type:`Enum`,value:`Top`},Enabled:{type:`bool`,value:!0},FlipbookBlendFrames:{type:`bool`,value:!0},FlipbookIncompatible:{type:`string`,value:`Particle texture must be 1024 by 1024 to use flipbooks.`},FlipbookLayout:{enumType:`ParticleFlipbookLayout`,type:`Enum`,value:`None`},FlipbookMode:{enumType:`ParticleFlipbookMode`,type:`Enum`,value:`Loop`},FlipbookSizeX:{type:`number`,value:1},FlipbookSizeY:{type:`number`,value:1},FlipbookStartRandom:{type:`bool`,value:!1},LightEmission:{type:`number`,value:0},LightInfluence:{type:`number`,value:0},LockedToPart:{type:`bool`,value:!1},Orientation:{enumType:`ParticleOrientation`,type:`Enum`,value:`FacingCamera`},Rate:{type:`number`,value:20},Shape:{enumType:`ParticleEmitterShape`,type:`Enum`,value:`Box`},ShapeInOut:{enumType:`ParticleEmitterShapeInOut`,type:`Enum`,value:`Outward`},ShapePartial:{type:`number`,value:1},ShapeStyle:{enumType:`ParticleEmitterShapeStyle`,type:`Enum`,value:`Volume`},SpreadAngle:{type:`Vector2`,value:[0,0]},TimeScale:{type:`number`,value:1},VelocityInheritance:{type:`number`,value:0},WindAffectsDrag:{type:`bool`,value:!1},ZOffset:{type:`number`,value:0}},Path2D:{Archivable:{type:`bool`,value:!0},Closed:{type:`bool`,value:!1},Color3:{type:`Color3`,value:[0,0,0]},Thickness:{type:`number`,value:1},Visible:{type:`bool`,value:!0},ZIndex:{type:`number`,value:1}},PitchShiftSoundEffect:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},Octave:{type:`number`,value:1.25},Priority:{type:`number`,value:0}},PlaneConstraint:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},Visible:{type:`bool`,value:!1}},PluginAction:{Archivable:{type:`bool`,value:!0}},PointLight:{Archivable:{type:`bool`,value:!0},Brightness:{type:`number`,value:1},Color:{type:`Color3`,value:[1,1,1]},Enabled:{type:`bool`,value:!0},Range:{type:`number`,value:8},Shadows:{type:`bool`,value:!1}},PrismaticConstraint:{ActuatorType:{enumType:`ActuatorType`,type:`Enum`,value:`None`},Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},LimitsEnabled:{type:`bool`,value:!1},LinearResponsiveness:{type:`number`,value:45},LowerLimit:{type:`number`,value:0},MotorMaxAcceleration:{type:`number`,value:`inf`},MotorMaxForce:{type:`number`,value:0},Restitution:{type:`number`,value:0},ServoMaxForce:{type:`number`,value:0},Size:{type:`number`,value:.15000000596046448},SoftlockServoUponReachingTarget:{type:`bool`,value:!1},Speed:{type:`number`,value:0},TargetPosition:{type:`number`,value:0},UpperLimit:{type:`number`,value:5},Velocity:{type:`number`,value:0},Visible:{type:`bool`,value:!1}},ProceduralModel:{Archivable:{type:`bool`,value:!0},LevelOfDetail:{enumType:`ModelLevelOfDetail`,type:`Enum`,value:`Automatic`},ModelStreamingMode:{enumType:`ModelStreamingMode`,type:`Enum`,value:`Default`},Size:{type:`Vector3`,value:[12,12,12]}},ProximityPrompt:{ActionText:{type:`string`,value:`Interact`},Archivable:{type:`bool`,value:!0},AutoLocalize:{type:`bool`,value:!0},ClickablePrompt:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},Exclusivity:{enumType:`ProximityPromptExclusivity`,type:`Enum`,value:`OnePerButton`},GamepadKeyCode:{enumType:`KeyCode`,type:`Enum`,value:`ButtonX`},HoldDuration:{type:`number`,value:0},KeyboardKeyCode:{enumType:`KeyCode`,type:`Enum`,value:`E`},MaxActivationDistance:{type:`number`,value:10},MaxIndicatorDistance:{type:`number`,value:0},ObjectText:{type:`string`,value:``},RequiresLineOfSight:{type:`bool`,value:!0},Style:{enumType:`ProximityPromptStyle`,type:`Enum`,value:`Default`},UIOffset:{type:`Vector2`,value:[0,0]}},PyramidHandleAdornment:{AdornCullingMode:{enumType:`AdornCullingMode`,type:`Enum`,value:`Automatic`},AlwaysOnTop:{type:`bool`,value:!1},Archivable:{type:`bool`,value:!0},CFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Color3:{type:`Color3`,value:[.05098039284348488,.4117647111415863,.6745098233222961]},Height:{type:`number`,value:2},Shading:{enumType:`AdornShading`,type:`Enum`,value:`Default`},Sides:{type:`number`,value:4},Size:{type:`number`,value:1},SizeRelativeOffset:{type:`Vector3`,value:[0,0,0]},Transparency:{type:`number`,value:0},Visible:{type:`bool`,value:!0},ZIndex:{type:`number`,value:-1}},RayValue:{Archivable:{type:`bool`,value:!0}},RealtimeMedia:{Archivable:{type:`bool`,value:!0}},RelativeGui:{Archivable:{type:`bool`,value:!0}},RenderingTest:{Archivable:{type:`bool`,value:!0},CFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},ComparisonDiffThreshold:{type:`number`,value:10},ComparisonMethod:{enumType:`RenderingTestComparisonMethod`,type:`Enum`,value:`psnr`},ComparisonPsnrThreshold:{type:`number`,value:50},Description:{type:`string`,value:``},FieldOfView:{type:`number`,value:70},PerfTest:{type:`bool`,value:!1},QualityAuto:{type:`bool`,value:!1},QualityLevel:{type:`number`,value:21},RenderingTestFrameCount:{type:`number`,value:20},ShouldSkip:{type:`bool`,value:!1},Ticket:{type:`string`,value:``},Timeout:{type:`number`,value:30}},ReverbSoundEffect:{Archivable:{type:`bool`,value:!0},DecayTime:{type:`number`,value:1.5},Density:{type:`number`,value:1},Diffusion:{type:`number`,value:1},DryLevel:{type:`number`,value:-6},Enabled:{type:`bool`,value:!0},Priority:{type:`number`,value:0},WetLevel:{type:`number`,value:0}},RigidConstraint:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},Visible:{type:`bool`,value:!1}},RocketPropulsion:{Archivable:{type:`bool`,value:!0},CartoonFactor:{type:`number`,value:.699999988079071},MaxSpeed:{type:`number`,value:30},MaxThrust:{type:`number`,value:4e3},MaxTorque:{type:`Vector3`,value:[4e5,4e5,0]},TargetOffset:{type:`Vector3`,value:[0,0,0]},TargetRadius:{type:`number`,value:4},ThrustD:{type:`number`,value:.0010000000474974513},ThrustP:{type:`number`,value:5},TurnD:{type:`number`,value:500},TurnP:{type:`number`,value:3e3}},RodConstraint:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},Length:{type:`number`,value:5},LimitAngle0:{type:`number`,value:90},LimitAngle1:{type:`number`,value:90},LimitsEnabled:{type:`bool`,value:!1},Thickness:{type:`number`,value:.10000000149011612},Visible:{type:`bool`,value:!1}},RopeConstraint:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},Length:{type:`number`,value:5},Restitution:{type:`number`,value:0},Thickness:{type:`number`,value:.10000000149011612},Visible:{type:`bool`,value:!1},WinchEnabled:{type:`bool`,value:!1},WinchForce:{type:`number`,value:1e4},WinchResponsiveness:{type:`number`,value:45},WinchSpeed:{type:`number`,value:2},WinchTarget:{type:`number`,value:5}},Rotate:{Archivable:{type:`bool`,value:!0},C0:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},C1:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Enabled:{type:`bool`,value:!0}},RotateP:{Archivable:{type:`bool`,value:!0},BaseAngle:{type:`number`,value:0},C0:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},C1:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Enabled:{type:`bool`,value:!0}},RotateV:{Archivable:{type:`bool`,value:!0},BaseAngle:{type:`number`,value:0},C0:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},C1:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Enabled:{type:`bool`,value:!0}},RotationCurve:{Archivable:{type:`bool`,value:!0}},ScreenGui:{Archivable:{type:`bool`,value:!0},AutoLocalize:{type:`bool`,value:!0},ClipToDeviceSafeArea:{type:`bool`,value:!0},DisplayOrder:{type:`number`,value:0},Enabled:{type:`bool`,value:!0},ResetOnSpawn:{type:`bool`,value:!0},SafeAreaCompatibility:{enumType:`SafeAreaCompatibility`,type:`Enum`,value:`FullscreenExtension`},ScreenInsets:{enumType:`ScreenInsets`,type:`Enum`,value:`CoreUISafeInsets`},SelectionBehaviorDown:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorLeft:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorRight:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorUp:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionGroup:{type:`bool`,value:!1},ZIndexBehavior:{enumType:`ZIndexBehavior`,type:`Enum`,value:`Global`}},ScrollingFrame:{Active:{type:`bool`,value:!1},AnchorPoint:{type:`Vector2`,value:[0,0]},Archivable:{type:`bool`,value:!0},AutoLocalize:{type:`bool`,value:!0},AutomaticCanvasSize:{enumType:`AutomaticSize`,type:`Enum`,value:`None`},AutomaticSize:{enumType:`AutomaticSize`,type:`Enum`,value:`None`},BackgroundColor3:{type:`Color3`,value:[.6392157077789307,.6352941393852234,.6470588445663452]},BackgroundTransparency:{type:`number`,value:0},BorderColor3:{type:`Color3`,value:[.10588235408067703,.16470588743686676,.2078431397676468]},BorderMode:{enumType:`BorderMode`,type:`Enum`,value:`Outline`},BorderSizePixel:{type:`number`,value:1},CanvasPosition:{type:`Vector2`,value:[0,0]},CanvasSize:{type:`UDim2`,value:[0,0,2,0]},ClipsDescendants:{type:`bool`,value:!0},Draggable:{type:`bool`,value:!1},ElasticBehavior:{enumType:`ElasticBehavior`,type:`Enum`,value:`WhenScrollable`},HorizontalScrollBarInset:{enumType:`ScrollBarInset`,type:`Enum`,value:`None`},InputSink:{enumType:`InputSink`,type:`Enum`,value:`None`},Interactable:{type:`bool`,value:!0},LayoutOrder:{type:`number`,value:0},Position:{type:`UDim2`,value:[0,0,0,0]},Rotation:{type:`number`,value:0},ScrollBarImageColor3:{type:`Color3`,value:[1,1,1]},ScrollBarImageTransparency:{type:`number`,value:0},ScrollBarThickness:{type:`number`,value:12},ScrollingDirection:{enumType:`ScrollingDirection`,type:`Enum`,value:`XY`},ScrollingEnabled:{type:`bool`,value:!0},Selectable:{type:`bool`,value:!0},SelectionBehaviorDown:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorLeft:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorRight:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorUp:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionGroup:{type:`bool`,value:!0},SelectionOrder:{type:`number`,value:0},Size:{type:`UDim2`,value:[0,0,0,0]},SizeConstraint:{enumType:`SizeConstraint`,type:`Enum`,value:`RelativeXY`},VerticalScrollBarInset:{enumType:`ScrollBarInset`,type:`Enum`,value:`None`},VerticalScrollBarPosition:{enumType:`VerticalScrollBarPosition`,type:`Enum`,value:`Right`},Visible:{type:`bool`,value:!0},ZIndex:{type:`number`,value:1}},Seat:{Anchored:{type:`bool`,value:!1},Archivable:{type:`bool`,value:!0},AudioCanCollide:{type:`bool`,value:!0},BackParamA:{type:`number`,value:-.5},BackParamB:{type:`number`,value:.5},BackSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},BackSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},BottomParamA:{type:`number`,value:-.5},BottomParamB:{type:`number`,value:.5},BottomSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Inlet`},BottomSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},CFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},CanCollide:{type:`bool`,value:!0},CanQuery:{type:`bool`,value:!0},CanTouch:{type:`bool`,value:!0},CastShadow:{type:`bool`,value:!0},CollisionGroup:{type:`string`,value:`Default`},CollisionGroupId:{type:`number`,value:0},Color:{type:`Color3`,value:[163,162,165]},Disabled:{type:`bool`,value:!1},EnableFluidForces:{type:`bool`,value:!0},FormFactor:{enumType:`FormFactor`,type:`Enum`,value:`Brick`},FrontParamA:{type:`number`,value:-.5},FrontParamB:{type:`number`,value:.5},FrontSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},FrontSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},LeftParamA:{type:`number`,value:-.5},LeftParamB:{type:`number`,value:.5},LeftSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},LeftSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},Locked:{type:`bool`,value:!1},Massless:{type:`bool`,value:!1},Material:{enumType:`Material`,type:`Enum`,value:`Plastic`},MaterialVariant:{type:`string`,value:``},PivotOffset:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Reflectance:{type:`number`,value:0},RightParamA:{type:`number`,value:-.5},RightParamB:{type:`number`,value:.5},RightSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},RightSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},RootPriority:{type:`number`,value:0},RotVelocity:{type:`Vector3`,value:[0,0,0]},Shape:{enumType:`PartType`,type:`Enum`,value:`Block`},Size:{type:`Vector3`,value:[4,1.2000000476837158,2]},TopParamA:{type:`number`,value:-.5},TopParamB:{type:`number`,value:.5},TopSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Studs`},TopSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},Transparency:{type:`number`,value:0},Velocity:{type:`Vector3`,value:[0,0,0]}},SelectionBox:{Archivable:{type:`bool`,value:!0},Color3:{type:`Color3`,value:[.05098039284348488,.4117647111415863,.6745098233222961]},LineThickness:{type:`number`,value:.15000000596046448},SurfaceColor3:{type:`Color3`,value:[.05098039656877518,.4117647409439087,.6745098233222961]},SurfaceTransparency:{type:`number`,value:1},Transparency:{type:`number`,value:0},Visible:{type:`bool`,value:!0}},SelectionPartLasso:{Archivable:{type:`bool`,value:!0},Color3:{type:`Color3`,value:[.05098039284348488,.4117647111415863,.6745098233222961]},Transparency:{type:`number`,value:0},Visible:{type:`bool`,value:!0}},SelectionPointLasso:{Archivable:{type:`bool`,value:!0},Color3:{type:`Color3`,value:[.05098039284348488,.4117647111415863,.6745098233222961]},Point:{type:`Vector3`,value:[0,0,0]},Transparency:{type:`number`,value:0},Visible:{type:`bool`,value:!0}},SelectionSphere:{Archivable:{type:`bool`,value:!0},Color3:{type:`Color3`,value:[.05098039284348488,.4117647111415863,.6745098233222961]},SurfaceColor3:{type:`Color3`,value:[.05098039656877518,.4117647409439087,.6745098233222961]},SurfaceTransparency:{type:`number`,value:1},Transparency:{type:`number`,value:0},Visible:{type:`bool`,value:!0}},Shirt:{Archivable:{type:`bool`,value:!0},Color3:{type:`Color3`,value:[1,1,1]}},ShirtGraphic:{Archivable:{type:`bool`,value:!0},Color3:{type:`Color3`,value:[1,1,1]}},Sky:{Archivable:{type:`bool`,value:!0},CelestialBodiesShown:{type:`bool`,value:!0},MoonAngularSize:{type:`number`,value:11},SkyboxOrientation:{type:`Vector3`,value:[0,0,0]},StarCount:{type:`number`,value:3e3},SunAngularSize:{type:`number`,value:21}},Smoke:{Archivable:{type:`bool`,value:!0},Color:{type:`Color3`,value:[1,1,1]},Enabled:{type:`bool`,value:!0},Opacity:{type:`number`,value:.5},RiseVelocity:{type:`number`,value:1},Size:{type:`number`,value:1},TimeScale:{type:`number`,value:1}},Sound:{AcousticSimulationEnabled:{type:`bool`,value:!0},Archivable:{type:`bool`,value:!0},Looped:{type:`bool`,value:!1},PlayOnRemove:{type:`bool`,value:!1},PlaybackRegionsEnabled:{type:`bool`,value:!1},PlaybackSpeed:{type:`number`,value:1},Playing:{type:`bool`,value:!1},RollOffMaxDistance:{type:`number`,value:1e4},RollOffMinDistance:{type:`number`,value:10},RollOffMode:{enumType:`RollOffMode`,type:`Enum`,value:`Inverse`},TimePosition:{type:`number`,value:0},Volume:{type:`number`,value:.5}},SoundGroup:{Archivable:{type:`bool`,value:!0},Volume:{type:`number`,value:.5}},Sparkles:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},SparkleColor:{type:`Color3`,value:[.5647059082984924,.09803922474384308,1]},TimeScale:{type:`number`,value:1}},SpecialMesh:{Archivable:{type:`bool`,value:!0},MeshType:{enumType:`MeshType`,type:`Enum`,value:`Head`},Offset:{type:`Vector3`,value:[0,0,0]},Scale:{type:`Vector3`,value:[1,1,1]},VertexColor:{type:`Vector3`,value:[1,1,1]}},SphereHandleAdornment:{AdornCullingMode:{enumType:`AdornCullingMode`,type:`Enum`,value:`Automatic`},AlwaysOnTop:{type:`bool`,value:!1},Archivable:{type:`bool`,value:!0},CFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Color3:{type:`Color3`,value:[.05098039284348488,.4117647111415863,.6745098233222961]},Radius:{type:`number`,value:1},Shading:{enumType:`AdornShading`,type:`Enum`,value:`Default`},SizeRelativeOffset:{type:`Vector3`,value:[0,0,0]},Transparency:{type:`number`,value:0},Visible:{type:`bool`,value:!0},ZIndex:{type:`number`,value:-1}},SpotLight:{Angle:{type:`number`,value:90},Archivable:{type:`bool`,value:!0},Brightness:{type:`number`,value:1},Color:{type:`Color3`,value:[1,1,1]},Enabled:{type:`bool`,value:!0},Face:{enumType:`NormalId`,type:`Enum`,value:`Front`},Range:{type:`number`,value:16},Shadows:{type:`bool`,value:!1}},SpringConstraint:{Archivable:{type:`bool`,value:!0},Coils:{type:`number`,value:3},Damping:{type:`number`,value:0},Enabled:{type:`bool`,value:!0},FreeLength:{type:`number`,value:1},LimitsEnabled:{type:`bool`,value:!1},MaxForce:{type:`number`,value:`inf`},MaxLength:{type:`number`,value:5},MinLength:{type:`number`,value:0},Radius:{type:`number`,value:.4000000059604645},Stiffness:{type:`number`,value:0},Thickness:{type:`number`,value:.10000000149011612},Visible:{type:`bool`,value:!1}},StringValue:{Archivable:{type:`bool`,value:!0},Value:{type:`string`,value:``}},StyleDerive:{Archivable:{type:`bool`,value:!0},Priority:{type:`number`,value:0}},StyleLink:{Archivable:{type:`bool`,value:!0}},StyleQuery:{Archivable:{type:`bool`,value:!0}},StyleRule:{Archivable:{type:`bool`,value:!0},Priority:{type:`number`,value:0},Selector:{type:`string`,value:``}},StyleSheet:{Archivable:{type:`bool`,value:!0}},SunRaysEffect:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},Intensity:{type:`number`,value:.25},Spread:{type:`number`,value:1}},SurfaceAppearance:{AlphaMode:{enumType:`AlphaMode`,type:`Enum`,value:`Overlay`},Archivable:{type:`bool`,value:!0},Color:{type:`Color3`,value:[1,1,1]},EmissiveStrength:{type:`number`,value:1},EmissiveTint:{type:`Color3`,value:[1,1,1]},ResampleMode:{enumType:`ResamplerMode`,type:`Enum`,value:`Default`}},SurfaceGui:{Active:{type:`bool`,value:!0},AlwaysOnTop:{type:`bool`,value:!1},Archivable:{type:`bool`,value:!0},AutoLocalize:{type:`bool`,value:!0},Brightness:{type:`number`,value:1},CanvasSize:{type:`Vector2`,value:[800,600]},ClipsDescendants:{type:`bool`,value:!1},Enabled:{type:`bool`,value:!0},Face:{enumType:`NormalId`,type:`Enum`,value:`Front`},LightInfluence:{type:`number`,value:0},MaxDistance:{type:`number`,value:0},PixelsPerStud:{type:`number`,value:50},ResetOnSpawn:{type:`bool`,value:!0},SelectionBehaviorDown:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorLeft:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorRight:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorUp:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionGroup:{type:`bool`,value:!1},SizingMode:{enumType:`SurfaceGuiSizingMode`,type:`Enum`,value:`FixedSize`},ToolPunchThroughDistance:{type:`number`,value:0},ZIndexBehavior:{enumType:`ZIndexBehavior`,type:`Enum`,value:`Global`},ZOffset:{type:`number`,value:0}},SurfaceLight:{Angle:{type:`number`,value:90},Archivable:{type:`bool`,value:!0},Brightness:{type:`number`,value:1},Color:{type:`Color3`,value:[1,1,1]},Enabled:{type:`bool`,value:!0},Face:{enumType:`NormalId`,type:`Enum`,value:`Front`},Range:{type:`number`,value:16},Shadows:{type:`bool`,value:!1}},TextBox:{Active:{type:`bool`,value:!0},AnchorPoint:{type:`Vector2`,value:[0,0]},Archivable:{type:`bool`,value:!0},AutoLocalize:{type:`bool`,value:!0},AutomaticSize:{enumType:`AutomaticSize`,type:`Enum`,value:`None`},BackgroundColor3:{type:`Color3`,value:[.6392157077789307,.6352941393852234,.6470588445663452]},BackgroundTransparency:{type:`number`,value:0},BorderColor3:{type:`Color3`,value:[.10588235408067703,.16470588743686676,.2078431397676468]},BorderMode:{enumType:`BorderMode`,type:`Enum`,value:`Outline`},BorderSizePixel:{type:`number`,value:1},ClearTextOnFocus:{type:`bool`,value:!0},ClipsDescendants:{type:`bool`,value:!1},Draggable:{type:`bool`,value:!1},InputSink:{enumType:`InputSink`,type:`Enum`,value:`None`},Interactable:{type:`bool`,value:!0},LayoutOrder:{type:`number`,value:0},LineHeight:{type:`number`,value:1},MaxVisibleGraphemes:{type:`number`,value:-1},MultiLine:{type:`bool`,value:!1},OpenTypeFeatures:{type:`string`,value:``},PlaceholderColor3:{type:`Color3`,value:[.5,.5,.5]},PlaceholderText:{type:`string`,value:``},Position:{type:`UDim2`,value:[0,0,0,0]},RichText:{type:`bool`,value:!1},Rotation:{type:`number`,value:0},Selectable:{type:`bool`,value:!0},SelectionBehaviorDown:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorLeft:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorRight:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorUp:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionGroup:{type:`bool`,value:!1},SelectionOrder:{type:`number`,value:0},ShowNativeInput:{type:`bool`,value:!0},Size:{type:`UDim2`,value:[0,0,0,0]},SizeConstraint:{enumType:`SizeConstraint`,type:`Enum`,value:`RelativeXY`},Text:{type:`string`,value:`TextBox`},TextColor3:{type:`Color3`,value:[.10588236153125763,.16470588743686676,.20784315466880798]},TextDirection:{enumType:`TextDirection`,type:`Enum`,value:`Auto`},TextEditable:{type:`bool`,value:!0},TextScaled:{type:`bool`,value:!1},TextSize:{type:`number`,value:8},TextStrokeColor3:{type:`Color3`,value:[0,0,0]},TextStrokeTransparency:{type:`number`,value:1},TextTransparency:{type:`number`,value:0},TextTruncate:{enumType:`TextTruncate`,type:`Enum`,value:`None`},TextWrapped:{type:`bool`,value:!1},TextXAlignment:{enumType:`TextXAlignment`,type:`Enum`,value:`Center`},TextYAlignment:{enumType:`TextYAlignment`,type:`Enum`,value:`Center`},Visible:{type:`bool`,value:!0},ZIndex:{type:`number`,value:1}},TextButton:{Active:{type:`bool`,value:!0},AnchorPoint:{type:`Vector2`,value:[0,0]},Archivable:{type:`bool`,value:!0},AutoButtonColor:{type:`bool`,value:!0},AutoLocalize:{type:`bool`,value:!0},AutomaticSize:{enumType:`AutomaticSize`,type:`Enum`,value:`None`},BackgroundColor3:{type:`Color3`,value:[.6392157077789307,.6352941393852234,.6470588445663452]},BackgroundTransparency:{type:`number`,value:0},BorderColor3:{type:`Color3`,value:[.10588235408067703,.16470588743686676,.2078431397676468]},BorderMode:{enumType:`BorderMode`,type:`Enum`,value:`Outline`},BorderSizePixel:{type:`number`,value:1},ClipsDescendants:{type:`bool`,value:!1},Draggable:{type:`bool`,value:!1},InputSink:{enumType:`InputSink`,type:`Enum`,value:`None`},Interactable:{type:`bool`,value:!0},LayoutOrder:{type:`number`,value:0},LineHeight:{type:`number`,value:1},MaxVisibleGraphemes:{type:`number`,value:-1},Modal:{type:`bool`,value:!1},OpenTypeFeatures:{type:`string`,value:``},Position:{type:`UDim2`,value:[0,0,0,0]},RichText:{type:`bool`,value:!1},Rotation:{type:`number`,value:0},Selectable:{type:`bool`,value:!0},Selected:{type:`bool`,value:!1},SelectionBehaviorDown:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorLeft:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorRight:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorUp:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionGroup:{type:`bool`,value:!1},SelectionOrder:{type:`number`,value:0},Size:{type:`UDim2`,value:[0,0,0,0]},SizeConstraint:{enumType:`SizeConstraint`,type:`Enum`,value:`RelativeXY`},Style:{enumType:`ButtonStyle`,type:`Enum`,value:`Custom`},Text:{type:`string`,value:`Button`},TextColor3:{type:`Color3`,value:[.10588236153125763,.16470588743686676,.20784315466880798]},TextDirection:{enumType:`TextDirection`,type:`Enum`,value:`Auto`},TextScaled:{type:`bool`,value:!1},TextSize:{type:`number`,value:8},TextStrokeColor3:{type:`Color3`,value:[0,0,0]},TextStrokeTransparency:{type:`number`,value:1},TextTransparency:{type:`number`,value:0},TextTruncate:{enumType:`TextTruncate`,type:`Enum`,value:`None`},TextWrapped:{type:`bool`,value:!1},TextXAlignment:{enumType:`TextXAlignment`,type:`Enum`,value:`Center`},TextYAlignment:{enumType:`TextYAlignment`,type:`Enum`,value:`Center`},Visible:{type:`bool`,value:!0},ZIndex:{type:`number`,value:1}},TextGenerator:{Archivable:{type:`bool`,value:!0},Seed:{type:`number`,value:0},SystemPrompt:{type:`string`,value:``},Temperature:{type:`number`,value:.699999988079071},TopP:{type:`number`,value:.8999999761581421}},TextLabel:{Active:{type:`bool`,value:!1},AnchorPoint:{type:`Vector2`,value:[0,0]},Archivable:{type:`bool`,value:!0},AutoLocalize:{type:`bool`,value:!0},AutomaticSize:{enumType:`AutomaticSize`,type:`Enum`,value:`None`},BackgroundColor3:{type:`Color3`,value:[.6392157077789307,.6352941393852234,.6470588445663452]},BackgroundTransparency:{type:`number`,value:0},BorderColor3:{type:`Color3`,value:[.10588235408067703,.16470588743686676,.2078431397676468]},BorderMode:{enumType:`BorderMode`,type:`Enum`,value:`Outline`},BorderSizePixel:{type:`number`,value:1},ClipsDescendants:{type:`bool`,value:!1},Draggable:{type:`bool`,value:!1},InputSink:{enumType:`InputSink`,type:`Enum`,value:`None`},Interactable:{type:`bool`,value:!0},LayoutOrder:{type:`number`,value:0},LineHeight:{type:`number`,value:1},MaxVisibleGraphemes:{type:`number`,value:-1},OpenTypeFeatures:{type:`string`,value:``},Position:{type:`UDim2`,value:[0,0,0,0]},RichText:{type:`bool`,value:!1},Rotation:{type:`number`,value:0},Selectable:{type:`bool`,value:!1},SelectionBehaviorDown:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorLeft:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorRight:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorUp:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionGroup:{type:`bool`,value:!1},SelectionOrder:{type:`number`,value:0},Size:{type:`UDim2`,value:[0,0,0,0]},SizeConstraint:{enumType:`SizeConstraint`,type:`Enum`,value:`RelativeXY`},Text:{type:`string`,value:`Label`},TextColor3:{type:`Color3`,value:[.10588236153125763,.16470588743686676,.20784315466880798]},TextDirection:{enumType:`TextDirection`,type:`Enum`,value:`Auto`},TextScaled:{type:`bool`,value:!1},TextSize:{type:`number`,value:8},TextStrokeColor3:{type:`Color3`,value:[0,0,0]},TextStrokeTransparency:{type:`number`,value:1},TextTransparency:{type:`number`,value:0},TextTruncate:{enumType:`TextTruncate`,type:`Enum`,value:`None`},TextWrapped:{type:`bool`,value:!1},TextXAlignment:{enumType:`TextXAlignment`,type:`Enum`,value:`Center`},TextYAlignment:{enumType:`TextYAlignment`,type:`Enum`,value:`Center`},Visible:{type:`bool`,value:!0},ZIndex:{type:`number`,value:1}},Texture:{Archivable:{type:`bool`,value:!0},AutoLocalize:{type:`bool`,value:!0},Color3:{type:`Color3`,value:[1,1,1]},Face:{enumType:`NormalId`,type:`Enum`,value:`Front`},OffsetStudsU:{type:`number`,value:0},OffsetStudsV:{type:`number`,value:0},Rotation:{type:`number`,value:0},StudsPerTileU:{type:`number`,value:2},StudsPerTileV:{type:`number`,value:2},Transparency:{type:`number`,value:0},UVOffset:{type:`Vector2`,value:[0,0]},UVScale:{type:`Vector2`,value:[1,1]},ZIndex:{type:`number`,value:1}},Tool:{Archivable:{type:`bool`,value:!0},CanBeDropped:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},Grip:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},LevelOfDetail:{enumType:`ModelLevelOfDetail`,type:`Enum`,value:`Automatic`},ManualActivationOnly:{type:`bool`,value:!1},ModelStreamingMode:{enumType:`ModelStreamingMode`,type:`Enum`,value:`Default`},RequiresHandle:{type:`bool`,value:!0},ToolTip:{type:`string`,value:``}},Torque:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},RelativeTo:{enumType:`ActuatorRelativeTo`,type:`Enum`,value:`Attachment0`},Torque:{type:`Vector3`,value:[0,0,0]},Visible:{type:`bool`,value:!1}},TorsionSpringConstraint:{Archivable:{type:`bool`,value:!0},Coils:{type:`number`,value:8},Damping:{type:`number`,value:.009999999776482582},Enabled:{type:`bool`,value:!0},LimitEnabled:{type:`bool`,value:!1},LimitsEnabled:{type:`bool`,value:!1},MaxAngle:{type:`number`,value:45},MaxTorque:{type:`number`,value:`inf`},Radius:{type:`number`,value:.4000000059604645},Restitution:{type:`number`,value:0},Stiffness:{type:`number`,value:100},Visible:{type:`bool`,value:!1}},Trail:{Archivable:{type:`bool`,value:!0},Brightness:{type:`number`,value:1},Enabled:{type:`bool`,value:!0},FaceCamera:{type:`bool`,value:!1},Lifetime:{type:`number`,value:2},LightEmission:{type:`number`,value:0},LightInfluence:{type:`number`,value:0},MaxLength:{type:`number`,value:0},MinLength:{type:`number`,value:.10000000149011612},TextureLength:{type:`number`,value:1},TextureMode:{enumType:`TextureMode`,type:`Enum`,value:`Stretch`}},TremoloSoundEffect:{Archivable:{type:`bool`,value:!0},Depth:{type:`number`,value:1},Duty:{type:`number`,value:.5},Enabled:{type:`bool`,value:!0},Frequency:{type:`number`,value:5},Priority:{type:`number`,value:0}},TrussPart:{Anchored:{type:`bool`,value:!1},Archivable:{type:`bool`,value:!0},AudioCanCollide:{type:`bool`,value:!0},BackParamA:{type:`number`,value:-.5},BackParamB:{type:`number`,value:.5},BackSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Universal`},BackSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},BottomParamA:{type:`number`,value:-.5},BottomParamB:{type:`number`,value:.5},BottomSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Universal`},BottomSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},CFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},CanCollide:{type:`bool`,value:!0},CanQuery:{type:`bool`,value:!0},CanTouch:{type:`bool`,value:!0},CastShadow:{type:`bool`,value:!0},CollisionGroup:{type:`string`,value:`Default`},CollisionGroupId:{type:`number`,value:0},Color:{type:`Color3`,value:[163,162,165]},EnableFluidForces:{type:`bool`,value:!0},FrontParamA:{type:`number`,value:-.5},FrontParamB:{type:`number`,value:.5},FrontSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Universal`},FrontSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},LeftParamA:{type:`number`,value:-.5},LeftParamB:{type:`number`,value:.5},LeftSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Universal`},LeftSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},Locked:{type:`bool`,value:!1},Massless:{type:`bool`,value:!1},Material:{enumType:`Material`,type:`Enum`,value:`Plastic`},MaterialVariant:{type:`string`,value:``},PivotOffset:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Reflectance:{type:`number`,value:0},RightParamA:{type:`number`,value:-.5},RightParamB:{type:`number`,value:.5},RightSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Universal`},RightSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},RootPriority:{type:`number`,value:0},RotVelocity:{type:`Vector3`,value:[0,0,0]},Size:{type:`Vector3`,value:[2,2,2]},TopParamA:{type:`number`,value:-.5},TopParamB:{type:`number`,value:.5},TopSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Universal`},TopSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},Transparency:{type:`number`,value:0},Velocity:{type:`Vector3`,value:[0,0,0]}},UIAspectRatioConstraint:{Archivable:{type:`bool`,value:!0},AspectRatio:{type:`number`,value:1},AspectType:{enumType:`AspectType`,type:`Enum`,value:`FitWithinMaxSize`},DominantAxis:{enumType:`DominantAxis`,type:`Enum`,value:`Width`}},UICorner:{Archivable:{type:`bool`,value:!0},BottomLeftRadius:{type:`UDim`,value:[0,8]},BottomRightRadius:{type:`UDim`,value:[0,8]},TopLeftRadius:{type:`UDim`,value:[0,8]},TopRightRadius:{type:`UDim`,value:[0,8]}},UIDragDetector:{Archivable:{type:`bool`,value:!0},BoundingBehavior:{enumType:`UIDragDetectorBoundingBehavior`,type:`Enum`,value:`Automatic`},DragAxis:{type:`Vector2`,value:[1,0]},DragRelativity:{enumType:`UIDragDetectorDragRelativity`,type:`Enum`,value:`Absolute`},DragRotation:{type:`number`,value:0},DragSpace:{enumType:`UIDragDetectorDragSpace`,type:`Enum`,value:`Parent`},DragStyle:{enumType:`UIDragDetectorDragStyle`,type:`Enum`,value:`TranslatePlane`},DragUDim2:{type:`UDim2`,value:[0,0,0,0]},Enabled:{type:`bool`,value:!0},MaxDragAngle:{type:`number`,value:0},MaxDragTranslation:{type:`UDim2`,value:[0,0,0,0]},MinDragAngle:{type:`number`,value:0},MinDragTranslation:{type:`UDim2`,value:[0,0,0,0]},ResponseStyle:{enumType:`UIDragDetectorResponseStyle`,type:`Enum`,value:`Offset`},SelectionModeDragSpeed:{type:`UDim2`,value:[0,300,0,300]},SelectionModeRotateSpeed:{type:`number`,value:90},UIDragSpeedAxisMapping:{enumType:`UIDragSpeedAxisMapping`,type:`Enum`,value:`XY`}},UIFlexItem:{Archivable:{type:`bool`,value:!0},FlexMode:{enumType:`UIFlexMode`,type:`Enum`,value:`None`},GrowRatio:{type:`number`,value:0},ItemLineAlignment:{enumType:`ItemLineAlignment`,type:`Enum`,value:`Automatic`},ShrinkRatio:{type:`number`,value:0}},UIGradient:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},Offset:{type:`Vector2`,value:[0,0]},Rotation:{type:`number`,value:0},Scale:{type:`number`,value:1},TileMode:{enumType:`GradientTileMode`,type:`Enum`,value:`Clamp`},Type:{enumType:`GradientType`,type:`Enum`,value:`Linear`}},UIGridLayout:{Archivable:{type:`bool`,value:!0},CellPadding:{type:`UDim2`,value:[0,5,0,5]},CellSize:{type:`UDim2`,value:[0,100,0,100]},FillDirection:{enumType:`FillDirection`,type:`Enum`,value:`Horizontal`},FillDirectionMaxCells:{type:`number`,value:0},HorizontalAlignment:{enumType:`HorizontalAlignment`,type:`Enum`,value:`Left`},SortOrder:{enumType:`SortOrder`,type:`Enum`,value:`Name`},StartCorner:{enumType:`StartCorner`,type:`Enum`,value:`TopLeft`},VerticalAlignment:{enumType:`VerticalAlignment`,type:`Enum`,value:`Top`}},UIListLayout:{Archivable:{type:`bool`,value:!0},FillDirection:{enumType:`FillDirection`,type:`Enum`,value:`Vertical`},HorizontalAlignment:{enumType:`HorizontalAlignment`,type:`Enum`,value:`Left`},HorizontalFlex:{enumType:`UIFlexAlignment`,type:`Enum`,value:`None`},ItemLineAlignment:{enumType:`ItemLineAlignment`,type:`Enum`,value:`Automatic`},Padding:{type:`UDim`,value:[0,0]},SortOrder:{enumType:`SortOrder`,type:`Enum`,value:`Name`},VerticalAlignment:{enumType:`VerticalAlignment`,type:`Enum`,value:`Top`},VerticalFlex:{enumType:`UIFlexAlignment`,type:`Enum`,value:`None`},Wraps:{type:`bool`,value:!1}},UIPadding:{Archivable:{type:`bool`,value:!0},PaddingBottom:{type:`UDim`,value:[0,0]},PaddingLeft:{type:`UDim`,value:[0,0]},PaddingRight:{type:`UDim`,value:[0,0]},PaddingTop:{type:`UDim`,value:[0,0]}},UIPageLayout:{Animated:{type:`bool`,value:!0},Archivable:{type:`bool`,value:!0},Circular:{type:`bool`,value:!1},EasingDirection:{enumType:`EasingDirection`,type:`Enum`,value:`Out`},EasingStyle:{enumType:`EasingStyle`,type:`Enum`,value:`Back`},FillDirection:{enumType:`FillDirection`,type:`Enum`,value:`Horizontal`},GamepadInputEnabled:{type:`bool`,value:!0},HorizontalAlignment:{enumType:`HorizontalAlignment`,type:`Enum`,value:`Left`},Padding:{type:`UDim`,value:[0,0]},ScrollWheelInputEnabled:{type:`bool`,value:!0},SortOrder:{enumType:`SortOrder`,type:`Enum`,value:`Name`},TouchInputEnabled:{type:`bool`,value:!0},TweenTime:{type:`number`,value:1},VerticalAlignment:{enumType:`VerticalAlignment`,type:`Enum`,value:`Top`}},UIScale:{Archivable:{type:`bool`,value:!0},Scale:{type:`number`,value:1}},UIShadow:{Archivable:{type:`bool`,value:!0},BlurRadius:{type:`UDim`,value:[0,0]},Color:{type:`Color3`,value:[0,0,0]},Enabled:{type:`bool`,value:!0},Offset:{type:`UDim2`,value:[0,0,0,0]},Spread:{type:`UDim2`,value:[0,0,0,0]},Transparency:{type:`number`,value:0},ZIndex:{type:`number`,value:-1}},UISizeConstraint:{Archivable:{type:`bool`,value:!0},MaxSize:{type:`Vector2`,value:[`inf`,`inf`]},MinSize:{type:`Vector2`,value:[0,0]}},UIStroke:{ApplyStrokeMode:{enumType:`ApplyStrokeMode`,type:`Enum`,value:`Contextual`},Archivable:{type:`bool`,value:!0},BorderOffset:{type:`UDim`,value:[0,0]},BorderStrokePosition:{enumType:`BorderStrokePosition`,type:`Enum`,value:`Outer`},Color:{type:`Color3`,value:[0,0,0]},Enabled:{type:`bool`,value:!0},LineJoinMode:{enumType:`LineJoinMode`,type:`Enum`,value:`Round`},StrokeSizingMode:{enumType:`StrokeSizingMode`,type:`Enum`,value:`FixedSize`},Thickness:{type:`number`,value:1},Transparency:{type:`number`,value:0},ZIndex:{type:`number`,value:1}},UITableLayout:{Archivable:{type:`bool`,value:!0},FillDirection:{enumType:`FillDirection`,type:`Enum`,value:`Vertical`},FillEmptySpaceColumns:{type:`bool`,value:!1},FillEmptySpaceRows:{type:`bool`,value:!1},HorizontalAlignment:{enumType:`HorizontalAlignment`,type:`Enum`,value:`Left`},MajorAxis:{enumType:`TableMajorAxis`,type:`Enum`,value:`RowMajor`},Padding:{type:`UDim2`,value:[0,0,0,0]},SortOrder:{enumType:`SortOrder`,type:`Enum`,value:`Name`},VerticalAlignment:{enumType:`VerticalAlignment`,type:`Enum`,value:`Top`}},UITextSizeConstraint:{Archivable:{type:`bool`,value:!0},MaxTextSize:{type:`number`,value:100},MinTextSize:{type:`number`,value:1}},UniversalConstraint:{Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},LimitsEnabled:{type:`bool`,value:!1},MaxAngle:{type:`number`,value:45},Radius:{type:`number`,value:.20000000298023224},Restitution:{type:`number`,value:0},Visible:{type:`bool`,value:!1}},ValueCurve:{Archivable:{type:`bool`,value:!0}},Vector3Curve:{Archivable:{type:`bool`,value:!0}},Vector3Value:{Archivable:{type:`bool`,value:!0},Value:{type:`Vector3`,value:[0,0,0]}},VectorForce:{ApplyAtCenterOfMass:{type:`bool`,value:!1},Archivable:{type:`bool`,value:!0},Enabled:{type:`bool`,value:!0},Force:{type:`Vector3`,value:[1e3,0,0]},RelativeTo:{enumType:`ActuatorRelativeTo`,type:`Enum`,value:`Attachment0`},Visible:{type:`bool`,value:!1}},VehicleSeat:{Anchored:{type:`bool`,value:!1},Archivable:{type:`bool`,value:!0},AudioCanCollide:{type:`bool`,value:!0},BackParamA:{type:`number`,value:-.5},BackParamB:{type:`number`,value:.5},BackSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},BackSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},BottomParamA:{type:`number`,value:-.5},BottomParamB:{type:`number`,value:.5},BottomSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Inlet`},BottomSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},CFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},CanCollide:{type:`bool`,value:!0},CanQuery:{type:`bool`,value:!0},CanTouch:{type:`bool`,value:!0},CastShadow:{type:`bool`,value:!0},CollisionGroup:{type:`string`,value:`Default`},CollisionGroupId:{type:`number`,value:0},Color:{type:`Color3`,value:[163,162,165]},Disabled:{type:`bool`,value:!1},EnableFluidForces:{type:`bool`,value:!0},FrontParamA:{type:`number`,value:-.5},FrontParamB:{type:`number`,value:.5},FrontSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},FrontSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},HeadsUpDisplay:{type:`bool`,value:!0},LeftParamA:{type:`number`,value:-.5},LeftParamB:{type:`number`,value:.5},LeftSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},LeftSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},Locked:{type:`bool`,value:!1},Massless:{type:`bool`,value:!1},Material:{enumType:`Material`,type:`Enum`,value:`Plastic`},MaterialVariant:{type:`string`,value:``},MaxSpeed:{type:`number`,value:25},PivotOffset:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Reflectance:{type:`number`,value:0},RightParamA:{type:`number`,value:-.5},RightParamB:{type:`number`,value:.5},RightSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},RightSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},RootPriority:{type:`number`,value:0},RotVelocity:{type:`Vector3`,value:[0,0,0]},Size:{type:`Vector3`,value:[4,1.2000000476837158,2]},Steer:{type:`number`,value:0},SteerFloat:{type:`number`,value:0},Throttle:{type:`number`,value:0},ThrottleFloat:{type:`number`,value:0},TopParamA:{type:`number`,value:-.5},TopParamB:{type:`number`,value:.5},TopSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Studs`},TopSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},Torque:{type:`number`,value:10},Transparency:{type:`number`,value:0},TurnSpeed:{type:`number`,value:1},Velocity:{type:`Vector3`,value:[0,0,0]}},VelocityMotor:{Archivable:{type:`bool`,value:!0},C0:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},C1:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},CurrentAngle:{type:`number`,value:0},DesiredAngle:{type:`number`,value:0},Enabled:{type:`bool`,value:!0},MaxVelocity:{type:`number`,value:0}},VideoDisplay:{Active:{type:`bool`,value:!1},AnchorPoint:{type:`Vector2`,value:[0,0]},Archivable:{type:`bool`,value:!0},AutoLocalize:{type:`bool`,value:!0},AutomaticSize:{enumType:`AutomaticSize`,type:`Enum`,value:`None`},BackgroundColor3:{type:`Color3`,value:[.6392157077789307,.6352941393852234,.6470588445663452]},BackgroundTransparency:{type:`number`,value:0},BorderColor3:{type:`Color3`,value:[.10588235408067703,.16470588743686676,.2078431397676468]},BorderMode:{enumType:`BorderMode`,type:`Enum`,value:`Outline`},BorderSizePixel:{type:`number`,value:1},ClipsDescendants:{type:`bool`,value:!1},Draggable:{type:`bool`,value:!1},InputSink:{enumType:`InputSink`,type:`Enum`,value:`None`},Interactable:{type:`bool`,value:!0},LayoutOrder:{type:`number`,value:0},Position:{type:`UDim2`,value:[0,0,0,0]},ResampleMode:{enumType:`ResamplerMode`,type:`Enum`,value:`Default`},Rotation:{type:`number`,value:0},ScaleType:{enumType:`ScaleType`,type:`Enum`,value:`Stretch`},Selectable:{type:`bool`,value:!1},SelectionBehaviorDown:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorLeft:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorRight:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorUp:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionGroup:{type:`bool`,value:!1},SelectionOrder:{type:`number`,value:0},Size:{type:`UDim2`,value:[0,0,0,0]},SizeConstraint:{enumType:`SizeConstraint`,type:`Enum`,value:`RelativeXY`},TileSize:{type:`UDim2`,value:[1,0,1,0]},VideoColor3:{type:`Color3`,value:[1,1,1]},VideoRectOffset:{type:`Vector2`,value:[0,0]},VideoRectSize:{type:`Vector2`,value:[0,0]},VideoTransparency:{type:`number`,value:0},Visible:{type:`bool`,value:!0},ZIndex:{type:`number`,value:1}},VideoFrame:{Active:{type:`bool`,value:!1},AnchorPoint:{type:`Vector2`,value:[0,0]},Archivable:{type:`bool`,value:!0},AutoLocalize:{type:`bool`,value:!0},AutomaticSize:{enumType:`AutomaticSize`,type:`Enum`,value:`None`},BackgroundColor3:{type:`Color3`,value:[.6392157077789307,.6352941393852234,.6470588445663452]},BackgroundTransparency:{type:`number`,value:0},BorderColor3:{type:`Color3`,value:[.10588235408067703,.16470588743686676,.2078431397676468]},BorderMode:{enumType:`BorderMode`,type:`Enum`,value:`Outline`},BorderSizePixel:{type:`number`,value:1},ClipsDescendants:{type:`bool`,value:!1},Draggable:{type:`bool`,value:!1},InputSink:{enumType:`InputSink`,type:`Enum`,value:`None`},Interactable:{type:`bool`,value:!0},InternalVideoUsage:{enumType:`InternalVideoUsage`,type:`Enum`,value:`Default`},LayoutOrder:{type:`number`,value:0},Looped:{type:`bool`,value:!1},MaximumResolution:{enumType:`VideoSampleSize`,type:`Enum`,value:`Full`},Playing:{type:`bool`,value:!1},Position:{type:`UDim2`,value:[0,0,0,0]},RollOffMaxDistance:{type:`number`,value:1e4},RollOffMinDistance:{type:`number`,value:1},RollOffMode:{enumType:`RollOffMode`,type:`Enum`,value:`Inverse`},Rotation:{type:`number`,value:0},Selectable:{type:`bool`,value:!1},SelectionBehaviorDown:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorLeft:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorRight:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorUp:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionGroup:{type:`bool`,value:!1},SelectionOrder:{type:`number`,value:0},Size:{type:`UDim2`,value:[0,0,0,0]},SizeConstraint:{enumType:`SizeConstraint`,type:`Enum`,value:`RelativeXY`},TimePosition:{type:`number`,value:0},Visible:{type:`bool`,value:!0},Volume:{type:`number`,value:1},ZIndex:{type:`number`,value:1}},VideoPlayer:{Archivable:{type:`bool`,value:!0},InternalVideoUsage:{enumType:`InternalVideoUsage`,type:`Enum`,value:`Default`},Looping:{type:`bool`,value:!1},MaximumResolution:{enumType:`VideoSampleSize`,type:`Enum`,value:`Full`},PlaybackSpeed:{type:`number`,value:1},TimePosition:{type:`number`,value:0},Volume:{type:`number`,value:1}},ViewportFrame:{Active:{type:`bool`,value:!1},Ambient:{type:`Color3`,value:[.7843137383460999,.7843137383460999,.7843137383460999]},AnchorPoint:{type:`Vector2`,value:[0,0]},Archivable:{type:`bool`,value:!0},AutoLocalize:{type:`bool`,value:!0},AutomaticSize:{enumType:`AutomaticSize`,type:`Enum`,value:`None`},BackgroundColor3:{type:`Color3`,value:[.6392157077789307,.6352941393852234,.6470588445663452]},BackgroundTransparency:{type:`number`,value:0},BorderColor3:{type:`Color3`,value:[.10588235408067703,.16470588743686676,.2078431397676468]},BorderMode:{enumType:`BorderMode`,type:`Enum`,value:`Outline`},BorderSizePixel:{type:`number`,value:1},ClipsDescendants:{type:`bool`,value:!1},Draggable:{type:`bool`,value:!1},ImageColor3:{type:`Color3`,value:[1,1,1]},ImageTransparency:{type:`number`,value:0},InputSink:{enumType:`InputSink`,type:`Enum`,value:`None`},Interactable:{type:`bool`,value:!0},LayoutOrder:{type:`number`,value:0},LightColor:{type:`Color3`,value:[.5490196347236633,.5490196347236633,.5490196347236633]},LightDirection:{type:`Vector3`,value:[-1,-1,-1]},Position:{type:`UDim2`,value:[0,0,0,0]},Rotation:{type:`number`,value:0},Selectable:{type:`bool`,value:!1},SelectionBehaviorDown:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorLeft:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorRight:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionBehaviorUp:{enumType:`SelectionBehavior`,type:`Enum`,value:`Escape`},SelectionGroup:{type:`bool`,value:!1},SelectionOrder:{type:`number`,value:0},Size:{type:`UDim2`,value:[0,0,0,0]},SizeConstraint:{enumType:`SizeConstraint`,type:`Enum`,value:`RelativeXY`},Visible:{type:`bool`,value:!0},ZIndex:{type:`number`,value:1}},WedgePart:{Anchored:{type:`bool`,value:!1},Archivable:{type:`bool`,value:!0},AudioCanCollide:{type:`bool`,value:!0},BackParamA:{type:`number`,value:-.5},BackParamB:{type:`number`,value:.5},BackSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},BackSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},BottomParamA:{type:`number`,value:-.5},BottomParamB:{type:`number`,value:.5},BottomSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Inlet`},BottomSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},CFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},CanCollide:{type:`bool`,value:!0},CanQuery:{type:`bool`,value:!0},CanTouch:{type:`bool`,value:!0},CastShadow:{type:`bool`,value:!0},CollisionGroup:{type:`string`,value:`Default`},CollisionGroupId:{type:`number`,value:0},Color:{type:`Color3`,value:[163,162,165]},EnableFluidForces:{type:`bool`,value:!0},FormFactor:{enumType:`FormFactor`,type:`Enum`,value:`Brick`},FrontParamA:{type:`number`,value:-.5},FrontParamB:{type:`number`,value:.5},FrontSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},FrontSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},LeftParamA:{type:`number`,value:-.5},LeftParamB:{type:`number`,value:.5},LeftSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},LeftSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},Locked:{type:`bool`,value:!1},Massless:{type:`bool`,value:!1},Material:{enumType:`Material`,type:`Enum`,value:`Plastic`},MaterialVariant:{type:`string`,value:``},PivotOffset:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Reflectance:{type:`number`,value:0},RightParamA:{type:`number`,value:-.5},RightParamB:{type:`number`,value:.5},RightSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},RightSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},RootPriority:{type:`number`,value:0},RotVelocity:{type:`Vector3`,value:[0,0,0]},Size:{type:`Vector3`,value:[4,1.2000000476837158,2]},TopParamA:{type:`number`,value:-.5},TopParamB:{type:`number`,value:.5},TopSurface:{enumType:`SurfaceType`,type:`Enum`,value:`Smooth`},TopSurfaceInput:{enumType:`InputType`,type:`Enum`,value:`NoInput`},Transparency:{type:`number`,value:0},Velocity:{type:`Vector3`,value:[0,0,0]}},Weld:{Archivable:{type:`bool`,value:!0},C0:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},C1:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Enabled:{type:`bool`,value:!0}},WeldConstraint:{Archivable:{type:`bool`,value:!0}},Wire:{Archivable:{type:`bool`,value:!0},SourceName:{type:`string`,value:`Output`},TargetName:{type:`string`,value:`Input`}},WireframeHandleAdornment:{AdornCullingMode:{enumType:`AdornCullingMode`,type:`Enum`,value:`Automatic`},AlwaysOnTop:{type:`bool`,value:!1},Archivable:{type:`bool`,value:!0},CFrame:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Color3:{type:`Color3`,value:[.05098039284348488,.4117647111415863,.6745098233222961]},Scale:{type:`Vector3`,value:[1,1,1]},SizeRelativeOffset:{type:`Vector3`,value:[0,0,0]},Thickness:{type:`number`,value:1},Transparency:{type:`number`,value:0},Visible:{type:`bool`,value:!0},ZIndex:{type:`number`,value:-1}},WorldModel:{Archivable:{type:`bool`,value:!0},LevelOfDetail:{enumType:`ModelLevelOfDetail`,type:`Enum`,value:`Automatic`},ModelStreamingMode:{enumType:`ModelStreamingMode`,type:`Enum`,value:`Default`}},WrapDeformer:{Archivable:{type:`bool`,value:!0},CageOrigin:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},ImportOrigin:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]}},WrapLayer:{Archivable:{type:`bool`,value:!0},AutoSkin:{enumType:`WrapLayerAutoSkin`,type:`Enum`,value:`Disabled`},BindOffset:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},CageOrigin:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Enabled:{type:`bool`,value:!0},ImportOrigin:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Order:{type:`number`,value:1},Puffiness:{type:`number`,value:1},ReferenceOrigin:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},ShrinkFactor:{type:`number`,value:0}},WrapTarget:{Archivable:{type:`bool`,value:!0},CageOrigin:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},ImportOrigin:{type:`CFrame`,value:[0,0,0,1,0,0,0,1,0,0,0,1]},Stiffness:{type:`number`,value:0}},WrapTextureTransfer:{Archivable:{type:`bool`,value:!0},UVMaxBound:{type:`Vector2`,value:[`-inf`,`-inf`]},UVMinBound:{type:`Vector2`,value:[`inf`,`inf`]}}};const Wl=Object.keys(Ul).length,Gl=new Set([`Name`,`Parent`]),Kl=new Set(Array.from(Gl,e=>e.toLowerCase())),ql=new Map(Object.entries(Ul).map(([e])=>[e.toLowerCase(),e]));function Jl(e){let t=new Map;for(let[n,r]of Object.entries(e)){if(!au(r))continue;let e=n.toLowerCase();t.has(e)||t.set(e,{propertyName:n,value:r})}return t}const Yl=new Map([[`TextLabel`,new Map([[`text`,{propertyName:`Text`,value:{type:`string`,value:``}}]])],[`UICorner`,new Map([[`cornerradius`,{propertyName:`CornerRadius`,value:{type:`UDim`,value:[0,0]}}]])]]),Xl=new Map(Object.entries(Ul).map(([e,t])=>[e,Jl(t)]));function Zl(e,t){return e.type===`Identifier`&&e.name===t}function Ql(e){return e.type===`Literal`&&typeof e.value==`boolean`}function $l(e){if(e.type!==`JSXIdentifier`)return;let t=ql.get(e.name.toLowerCase());if(!(t===void 0||e.name===t))return t}function eu(e){if(e.type===`JSXIdentifier`)return e.name}function tu(e){let{value:t}=e;if(t!==null){if(t.type===`Literal`)return t;if(!(t.type!==`JSXExpressionContainer`||t.expression.type===`JSXEmptyExpression`))return t.expression}}function nu(e,t){let n=t.toLowerCase(),r=Yl.get(e)?.get(n);if(r!==void 0)return r;let i=Xl.get(e);if(i!==void 0)return i.get(n)}function ru(e){return Kl.has(e.toLowerCase())}function iu(e){return b(e)||e===`inf`||e===`-inf`}function au(e){if(!(x(e)&&y(e.type)&&`value`in e))return!1;switch(e.type){case`bool`:return typeof e.value==`boolean`;case`CFrame`:return Array.isArray(e.value)&&e.value.length===12&&e.value.every(iu);case`Color3`:return Array.isArray(e.value)&&e.value.length===3&&e.value.every(b);case`Enum`:return y(e.enumType)&&y(e.value);case`number`:return iu(e.value);case`Rect`:case`UDim2`:return Array.isArray(e.value)&&e.value.length===4&&e.value.every(iu);case`string`:return y(e.value);case`UDim`:case`Vector2`:return Array.isArray(e.value)&&e.value.length===2&&e.value.every(iu);case`Vector3`:return Array.isArray(e.value)&&e.value.length===3&&e.value.every(iu)}return!1}function ou(e){let t=w(e);if(t.type!==`NewExpression`||!Zl(t.callee,`Instance`))return;let[n]=t.arguments;if(!(n===void 0||n.type===`SpreadElement`||!_e(n)))return n.value}function su(e,t,n=new WeakSet){if(Array.isArray(e)){for(let r of e)if(su(r,t,n))return!0;return!1}if(!x(e)||n.has(e))return!1;if(n.add(e),e.type===`Identifier`&&e.name===t)return!0;for(let r of Object.values(e))if(su(r,t,n))return!0;return!1}function cu(e){let t=[],n=e;for(;n.type===`MemberExpression`;){if(n.computed||n.property.type!==`Identifier`)return;t.unshift(n.property.name);let{object:e}=n;if(e.type===`Identifier`)return t.unshift(e.name),t;if(e.type!==`MemberExpression`)return;n=e}if(n.type===`Identifier`)return t.unshift(n.name),t}function lu(e){let t=cu(e);return t?.length===2&&t[0]===`math`&&t[1]===`huge`}function uu(e){return e===`inf`?1/0:e===`-inf`?-1/0:e}function du(e,t){return uu(e)===t}function fu(e,t){if(e.length!==t.length)return!1;for(let[n,r]of e.entries()){let e=t[n];if(r===void 0||e===void 0||!du(r,e))return!1}return!0}function J(e){if(We(e))return e.value;if(lu(e))return 1/0;if(e.type!==`UnaryExpression`||e.operator!==`+`&&e.operator!==`-`)return;let t=J(e.argument);if(t!==void 0)return e.operator===`+`?t:-t}function pu(e){if(e.length!==2)return;let[t,n]=e;if(!(t===void 0||n===void 0||t.type===`SpreadElement`||n.type===`SpreadElement`))return[t,n]}function mu(e){if(e.length!==3)return;let[t,n,r]=e;if(!(t===void 0||n===void 0||r===void 0||t.type===`SpreadElement`||n.type===`SpreadElement`||r.type===`SpreadElement`))return[t,n,r]}function hu(e){if(e.length!==4)return;let[t,n,r,i]=e;if(!(t===void 0||n===void 0||r===void 0||i===void 0||t.type===`SpreadElement`||n.type===`SpreadElement`||r.type===`SpreadElement`||i.type===`SpreadElement`))return[t,n,r,i]}function gu(e){if(e.type===`MemberExpression`){let t=cu(e);return t?.length===2&&t[0]===`Vector2`&&t[1]===`zero`?[0,0]:void 0}if(!(e.type!==`NewExpression`||!Zl(e.callee,`Vector2`)))return e.arguments.length===0?[0,0]:_u(e.arguments)}function _u(e){let t=pu(e);if(t===void 0)return;let[n,r]=t,i=J(n),a=J(r);if(!(i===void 0||a===void 0))return[i,a]}function vu(e){let t=mu(e);if(t===void 0)return;let[n,r,i]=t,a=J(n),o=J(r),s=J(i);if(!(a===void 0||o===void 0||s===void 0))return[a,o,s]}function yu(e){if(e.type===`MemberExpression`){let t=cu(e);return t?.length===2&&t[0]===`Vector3`&&t[1]===`zero`?[0,0,0]:void 0}if(!(e.type!==`NewExpression`||!Zl(e.callee,`Vector3`)))return e.arguments.length===0?[0,0,0]:vu(e.arguments)}function bu(e){if(!(e.type!==`NewExpression`||!Zl(e.callee,`UDim`)))return e.arguments.length===0?[0,0]:_u(e.arguments)}function xu(e){let t=hu(e);if(t===void 0)return;let[n,r,i,a]=t,o=J(n),s=J(r),c=J(i),l=J(a);if(!(o===void 0||s===void 0||c===void 0||l===void 0))return[o,s,c,l]}function Su(e){if(e.type===`CallExpression`){let t=cu(e.callee),n=_u(e.arguments);if(t===void 0||n===void 0)return;let[r,i]=n;return t.length===2&&t[0]===`UDim2`&&t[1]===`fromOffset`?[0,r,0,i]:t.length===2&&t[0]===`UDim2`&&t[1]===`fromScale`?[r,0,i,0]:void 0}if(!(e.type!==`NewExpression`||!Zl(e.callee,`UDim2`)))return e.arguments.length===0?[0,0,0,0]:xu(e.arguments)}function Cu(e){if(!(e.type!==`NewExpression`||!Zl(e.callee,`Rect`)))return e.arguments.length===0?[0,0,0,0]:xu(e.arguments)}function wu(e){let[t,n,r]=e,i=J(t),a=J(n),o=J(r);if(!(i===void 0||a===void 0||o===void 0))return[i,a,o]}function Tu(e){if(e.type===`CallExpression`){let t=cu(e.callee),n=mu(e.arguments);if(t?.length!==2||t[0]!==`Color3`||t[1]!==`fromRGB`||n===void 0)return;let r=wu(n);if(r===void 0)return;let[i,a,o]=r;return[Math.fround(i/255),Math.fround(a/255),Math.fround(o/255)]}if(e.type!==`NewExpression`||!Zl(e.callee,`Color3`))return;if(e.arguments.length===0)return[0,0,0];let t=mu(e.arguments);if(t!==void 0)return wu(t)}function Eu(e){if(e.type!==`NewExpression`||!Zl(e.callee,`CFrame`))return;if(e.arguments.length===0)return[0,0,0,1,0,0,0,1,0,0,0,1];let t=vu(e.arguments);if(t===void 0)return;let[n,r,i]=t;return[n,r,i,1,0,0,0,1,0,0,0,1]}function Du(e){let t=cu(e);if(t?.length!==3||t[0]!==`Enum`)return;let[,n,r]=t;if(!(n===void 0||r===void 0))return{enumType:n,value:r}}function Ou(e,t){switch(t.type){case`bool`:return Ql(e)&&e.value===t.value;case`CFrame`:{let n=Eu(e);return n!==void 0&&fu(t.value,n)}case`Color3`:{let n=Tu(e);return n!==void 0&&n[0]===t.value[0]&&n[1]===t.value[1]&&n[2]===t.value[2]}case`Enum`:{let n=Du(e);return n!==void 0&&n.enumType===t.enumType&&n.value===t.value}case`number`:{let n=J(e);return n!==void 0&&du(t.value,n)}case`Rect`:{let n=Cu(e);return n!==void 0&&fu(t.value,n)}case`string`:return _e(e)&&e.value===t.value;case`UDim`:{let n=bu(e);return n!==void 0&&fu(t.value,n)}case`UDim2`:{let n=Su(e);return n!==void 0&&fu(t.value,n)}case`Vector2`:{let n=gu(e);return n!==void 0&&fu(t.value,n)}case`Vector3`:{let n=yu(e);return n!==void 0&&fu(t.value,n)}default:return!1}}const ku=t({create(e){let{sourceCode:t}=e;function n(e){return t.getCommentsBefore(e).length>0||t.getCommentsAfter(e).length>0||t.getCommentsInside(e).length>0}function r(e){let r=t.getTokenBefore(e),i=t.getTokenAfter(e);if(n(e)||r!==null&&t.commentsExistBetween(r,e)||i!==null&&t.commentsExistBetween(e,i))return;let[a]=e.range;for(;a>0;){let e=t.text[a-1];if(e===` `||e===` `){--a;continue}break}return t=>t.removeRange([a,e.range[1]])}function i(e,r){if(e.attributes.some(e=>e.type===`JSXSpreadAttribute`))return;let i=t.getTokenBefore(r),a=t.getTokenAfter(r);if(i!==null&&!n(r)&&!t.commentsExistBetween(i,r)&&!(a!==null&&t.commentsExistBetween(r,a)))return e=>e.removeRange([i.range[1],r.range[1]])}function a(t,n,i){if(n.operator!==`=`||n.left.type!==`MemberExpression`||n.left.computed||n.left.object.type!==`Identifier`||n.left.property.type!==`Identifier`)return;let a=i.get(n.left.object.name);if(a===void 0)return;let o=n.left.property.name;if(ru(o))return;let s=nu(a.className,o);if(s===void 0||!Ou(n.right,s.value))return;let c=r(t);if(c===void 0){e.report({data:{className:a.className,propertyName:s.propertyName},messageId:`uselessDefault`,node:n.left});return}e.report({data:{className:a.className,propertyName:s.propertyName},fix:c,messageId:`uselessDefault`,node:n.left})}function o(e,t){for(let[n]of t)for(let r of e.arguments)if(r.type!==`SpreadElement`&&su(r,n)){t.delete(n);break}}function s(e,t){if(!(e.left.type!==`Identifier`&&e.left.type!==`MemberExpression`))for(let[n]of t)su(e.right,n)&&t.delete(n)}function c(e,t){if(e.argument!==null)for(let[n]of t)su(e.argument,n)&&t.delete(n)}function l(e){let t=new Map;for(let n of e)u(n,t)}function u(e,t){if(e.type===`ExpressionStatement`){d(e,t);return}if(e.type===`ReturnStatement`){c(e,t);return}e.type===`VariableDeclaration`&&f(e,t)}function d(e,t){let n=w(e.expression);if(n.type===`AssignmentExpression`){a(e,n,t),s(n,t);return}n.type===`CallExpression`&&o(n,t)}function f(e,t){if(e.kind===`const`)for(let n of e.declarations){if(n.id.type!==`Identifier`||n.init===null)continue;let e=ou(n.init);e!==void 0&&t.set(n.id.name,{className:e})}}return{BlockStatement(e){l(e.body)},JSXOpeningElement(t){let n=$l(t.name);if(n!==void 0)for(let r of t.attributes){if(r.type===`JSXSpreadAttribute`)continue;let a=eu(r.name);if(a===void 0||ru(a))continue;let o=nu(n,a);if(o===void 0)continue;let s=tu(r);if(!(r.value===null&&o.value.type===`bool`&&o.value.value)&&(s===void 0||!Ou(s,o.value)))continue;let c=i(t,r);if(c===void 0){e.report({data:{className:n,propertyName:o.propertyName},messageId:`uselessDefault`,node:r});continue}e.report({data:{className:n,propertyName:o.propertyName},fix:c,messageId:`uselessDefault`,node:r})}},Program(e){l(e.body)}}},meta:{docs:{description:`Scaffold for detecting useless default values across ${Wl} default-property classes.`},fixable:`code`,messages:{uselessDefault:`Remove "{{propertyName}}" from {{className}}. It already matches the default value.`},schema:[],type:`suggestion`}}),Au=[`useEffect`,`useLayoutEffect`,`useInsertionEffect`],ju=[`on`],Mu=[`useRef`],Nu=[`useState`,`useReducer`];function Pu(e){return e===void 0?{environment:`roblox-ts`,hooks:new Set(Au),propertyCallbackPrefixes:new Set(ju),refHooks:new Set(Mu),reportAdjustState:!0,reportDerivedState:!0,reportDuplicateDeps:!0,reportEffectChain:!0,reportEmptyEffect:!0,reportEventFlag:!0,reportEventSpecificLogic:!0,reportExternalStore:!0,reportInitializeState:!0,reportLogOnly:!0,reportMixedDerivedState:!0,reportNotifyParent:!0,reportPassRefToParent:!0,reportResetState:!0,stateHooks:new Set(Nu)}:{environment:hn(e.environment)?e.environment:`roblox-ts`,hooks:new Set(S(e.hooks)?e.hooks:Au),propertyCallbackPrefixes:new Set(S(e.propertyCallbackPrefixes)?e.propertyCallbackPrefixes:ju),refHooks:new Set(S(e.refHooks)?e.refHooks:Mu),reportAdjustState:e.reportAdjustState??!0,reportDerivedState:e.reportDerivedState??!0,reportDuplicateDeps:e.reportDuplicateDeps??!0,reportEffectChain:e.reportEffectChain??!0,reportEmptyEffect:e.reportEmptyEffect??!0,reportEventFlag:e.reportEventFlag??!0,reportEventSpecificLogic:e.reportEventSpecificLogic??!0,reportExternalStore:e.reportExternalStore??!0,reportInitializeState:e.reportInitializeState??!0,reportLogOnly:e.reportLogOnly??!0,reportMixedDerivedState:e.reportMixedDerivedState??!0,reportNotifyParent:e.reportNotifyParent??!0,reportPassRefToParent:e.reportPassRefToParent??!0,reportResetState:e.reportResetState??!0,stateHooks:new Set(S(e.stateHooks)?e.stateHooks:Nu)}}function Fu(e){if(!(e.type!==`MemberExpression`||e.computed||e.object.type!==`Identifier`||e.property.type!==`Identifier`))return{objectName:e.object.name,propertyName:e.property.name}}function Iu(e){if(!(e.type!==`MemberExpression`||e.computed||e.property.type!==`Identifier`))return e.property.name}function Lu(e,t,n,r){let{callee:i}=e;if(i.type===`Identifier`)return t.has(i.name);let a=Fu(i);return a!==void 0&&n.has(a.objectName)&&r.has(a.propertyName)}function Ru(e){if((e.type===`FunctionDeclaration`||e.type===`FunctionExpression`)&&e.id!==null)return e.id.name;let{parent:t}=e;if(t.type===`VariableDeclarator`&&t.id.type===`Identifier`)return t.id.name;if(`key`in t&&!(`computed`in t&&t.computed)&&D(t.key)&&t.key.type===`Identifier`)return t.key.name}function zu(e){return ne(e)&&e.startsWith(`use`)}function Bu(e){if(e.type===`ReturnStatement`)return e.argument===null;if(e.type!==`BlockStatement`||e.body.length!==1)return!1;let[t]=e.body;return t?.type===`ReturnStatement`&&t.argument===null}function Vu(e,t){`body`in e&&D(e.body)&&(e.body.type===`BlockStatement`?t.push(...e.body.body):t.push(e.body))}function Hu(e,t){if(e.type===`BlockStatement`){t.push(...e.body);return}if(e.type===`IfStatement`){t.push(e.consequent),e.alternate!==null&&t.push(e.alternate);return}if(e.type===`DoWhileStatement`||e.type===`ForInStatement`||e.type===`ForOfStatement`||e.type===`ForStatement`||e.type===`LabeledStatement`||e.type===`WhileStatement`||e.type===`WithStatement`){Vu(e,t);return}if(e.type===`SwitchStatement`){for(let n of e.cases)t.push(...n.consequent);return}e.type===`TryStatement`&&(t.push(...e.block.body),e.handler!==null&&t.push(...e.handler.body.body),e.finalizer!==null&&t.push(...e.finalizer.body))}function Uu(e){let t=[...e.body];for(;t.length>0;){let e=t.pop();if(e!==void 0)switch(e.type){case`ArrowFunctionExpression`:continue;case`FunctionDeclaration`:continue;case`FunctionExpression`:continue;case`ReturnStatement`:if(e.argument!==null)return!0;continue;case`DoWhileStatement`:case`ForInStatement`:case`ForOfStatement`:case`ForStatement`:case`BlockStatement`:case`IfStatement`:case`LabeledStatement`:case`SwitchStatement`:case`TryStatement`:case`WhileStatement`:case`WithStatement`:Hu(e,t);continue;default:continue}}return!1}function Wu(e){if(e.length===0)return e;let[t]=e;return t?.type!==`IfStatement`||t.alternate!==null||!Bu(t.consequent)?e:e.slice(1)}function Gu(e){return e.type===`ChainExpression`?e.expression:e}function Y(e){if(e.type!==`ExpressionStatement`)return;let t=Gu(e.expression);return t.type===`CallExpression`?t:void 0}function Ku(e,t){return e.callee.type===`Identifier`&&t.has(e.callee.name)}function qu(e){return e.type===`Literal`&&e.value===!1}function Ju(e){return e.type===`Literal`||e.type===`UnaryExpression`&&e.operator===`void`&&e.argument.type===`Literal`&&e.argument.value===0}function Yu(e){return e.type===`ArrayExpression`&&e.elements.length===0}function Xu(e){return e.type===`ObjectExpression`&&e.properties.length===0}function Zu(e){if(e.type===`Literal`){let{value:t}=e;return t===``||t===0||t===!1||t===null}return Ju(e)?!0:Yu(e)||Xu(e)}function Qu(e,t){let n=Y(e);if(n?.callee.type!==`Identifier`)return;let r=t.get(n.callee.name);if(r===void 0||n.arguments.length!==1)return;let[i]=n.arguments;if(!(i===void 0||!qu(i)))return r}function $u(e,t){let n=Y(e);if(!(n===void 0||Ku(n,t)))return n}function ed(e,t){return e.type===`UnaryExpression`&&e.operator===`!`&&e.argument.type===`Identifier`&&e.argument.name===t}function td(e,t){return e.type===`Identifier`&&e.name===t}function X(e){return e.type===`BlockStatement`?e.body:[e]}function nd(e,t,n){let[r,i,a]=e;if(r?.type!==`IfStatement`||r.alternate!==null||i===void 0||a===void 0)return;let o=Qu(i,t),s=Qu(a,t),c=Bu(r.consequent);if(o!==void 0&&s===void 0)return c&&ed(r.test,o)?$u(a,n)===void 0?void 0:o:void 0;if(!(s===void 0||o!==void 0)&&c&&ed(r.test,s))return $u(i,n)===void 0?void 0:s}function rd(e,t,n){if(e.type!==`IfStatement`||e.alternate!==null)return;let r=X(e.consequent),[i,a]=r;if(r.length!==2||i===void 0||a===void 0)return;let o=Qu(i,t),s=Qu(a,t);if(o!==void 0&&s===void 0)return td(e.test,o)?$u(a,n)===void 0?void 0:o:void 0;if(!(s===void 0||o!==void 0)&&td(e.test,s))return $u(i,n)===void 0?void 0:s}function id(e,t,n){if(e.length===3)return nd(e,t,n);if(e.length===1){let[r]=e;return r===void 0?void 0:rd(r,t,n)}}const ad=new Set([`ArrayExpression`,`BinaryExpression`,`CallExpression`,`ChainExpression`,`ConditionalExpression`,`Identifier`,`LogicalExpression`,`MemberExpression`,`ObjectExpression`,`PrivateIdentifier`,`TemplateLiteral`,`UnaryExpression`]);function od(e){return ad.has(e.type)}function sd(e,t){for(let n of e.elements)n!==null&&n.type!==`SpreadElement`&&t.push(n)}function cd(e,t){t.push(e.callee);for(let n of e.arguments)n.type!==`SpreadElement`&&t.push(n)}function ld(e,t){t.push(e.object),e.computed||t.push(e.property)}function ud(e,t){for(let n of e.properties)n.type===`Property`&&t.push(n.value)}function dd(e,t){switch(e.type){case`ArrayExpression`:sd(e,t);break;case`BinaryExpression`:case`LogicalExpression`:t.push(e.left,e.right);break;case`CallExpression`:cd(e,t);break;case`ChainExpression`:t.push(e.expression);break;case`ConditionalExpression`:t.push(e.test,e.consequent,e.alternate);break;case`MemberExpression`:ld(e,t);break;case`ObjectExpression`:ud(e,t);break;case`TemplateLiteral`:t.push(...e.expressions);break;case`UnaryExpression`:t.push(e.argument);break;default:}}function fd(e){let t=[e],n=new Set;for(;t.length>0;){let e=t.pop();if(!(e===void 0||n.has(e))){if(n.add(e),e.type===`Identifier`)return!0;dd(e,t)}}return!1}function pd(e,t){let n=0;for(let r of e){if(r.type===`IfStatement`){if(r.alternate!==null)return;let e=pd(X(r.consequent),t);if(e===void 0||e===0)return;n+=e;continue}let e=Y(r);if(e===void 0||!t(e))return;n+=1}return n>0?n:void 0}function md(e,t){return pd(e,e=>Ku(e,t)?e.arguments.some(e=>e.type!==`SpreadElement`&&fd(e)):!1)}function hd(e,t,n){return pd(e,e=>yd(e,t,n))}function gd(e,t){for(let n of t)if(e.startsWith(n))return!0;return!1}function _d(e){return e.type===`AssignmentPattern`?e.left:e}function vd(e,t,n,r){let i={functionId:n,isCustomHook:r,propertyCallbackIdentifiers:new Set,propertyObjectName:void 0},[a]=e.params;if(a===void 0)return i;let o=_d(a);if(o.type===`Identifier`)return i.propertyObjectName=o.name,i;if(o.type!==`ObjectPattern`)return i;for(let e of o.properties){if(e.type!==`Property`)continue;let n=Wr(e);if(n===void 0||!gd(n,t))continue;let r=Gr(e);r!==void 0&&i.propertyCallbackIdentifiers.add(r.name)}return i}function yd(e,t,n){let{callee:r}=e;if(r.type===`Identifier`)return t.propertyCallbackIdentifiers.has(r.name);let i=Fu(r);return i!==void 0&&t.propertyObjectName!==void 0&&i.objectName===t.propertyObjectName&&gd(i.propertyName,n)}function bd(e,t){let[,n]=e.arguments;if(n?.type!==`ArrayExpression`)return!1;for(let e of n.elements)if(e?.type===`Identifier`&&e.name===t)return!0;return!1}function xd(e){let t=new Set,[,n]=e.arguments;if(n?.type!==`ArrayExpression`)return t;for(let e of n.elements)e?.type===`Identifier`&&t.add(e.name);return t}function Sd(e){let[,t]=e.arguments;return t===void 0||t.type===`ArrayExpression`&&t.elements.length===0}function Cd(e,t){if(e.length===0)return!1;for(let n of e){if(n.type===`IfStatement`){if(n.alternate!==null||!Cd(X(n.consequent),t))return!1;continue}if(!t(n))return!1}return!0}function wd(e,t){let n=new Set;for(let r of e){if(r.type===`IfStatement`){let e=X(r.consequent);for(let r of wd(e,t))n.add(r);continue}let e=Y(r);e!==void 0&&Ku(e,t)&&e.callee.type===`Identifier`&&n.add(e.callee.name)}return n}function Td(e,t){let{callee:n}=e;if(n.type===`Identifier`)return t.has(n.name);let r=Fu(n);return r!==void 0&&t.has(r.objectName)}function Ed(e,t,n){for(let r of e){if(r.type===`IfStatement`){if(Ed(X(r.consequent),t,n))return!0;continue}let e=Y(r);if(e!==void 0&&!Ku(e,t)&&!Td(e,n))return!0}return!1}function Dd(e,t,n){return Cd(e,e=>{let r=Y(e);if(r===void 0||!Ku(r,t)||r.arguments.length!==1)return!1;let[i]=r.arguments;return i!==void 0&&n(i)})}function Od(e){return e.type===`Literal`&&typeof e.value!=`object`||Yu(e)||Xu(e)}function kd(e,t){return Dd(e,t,Zu)}function Ad(e,t){return Dd(e,t,Od)}function jd(e){return Cd(e,e=>{let t=Y(e);return t!==void 0&&Fu(t.callee)?.objectName===`console`})}const Md=new Set([`addEventListener`,`addListener`,`on`,`subscribe`]);function Nd(e){return e.some(e=>{let t=Y(e);if(t===void 0)return!1;let n=Iu(t.callee);return n!==void 0&&Md.has(n)})}function Pd(e,t){return e.type===`MemberExpression`&&!e.computed&&e.object.type===`Identifier`&&e.property.type===`Identifier`&&e.property.name===`current`&&t.has(e.object.name)}function Fd(e,t,n){return e.callee.type===`Identifier`&&n.has(e.callee.name)&&e.arguments.some(e=>Pd(e,t))}function Id(e,t,n){for(let r of e){if(r.type===`IfStatement`){if(Id(X(r.consequent),t,n))return!0;continue}let e=Y(r);if(e!==void 0&&Fd(e,t,n))return!0}return!1}function Ld(e){let t=new Set,n=new Set,r=od(e)?[e]:[];for(;r.length>0;){let e=r.pop();if(!(e===void 0||n.has(e))){if(n.add(e),e.type===`Identifier`){t.add(e.name);continue}od(e)&&dd(e,r)}}return t}function Rd(e){return e.alternate===null?[]:e.alternate.type===`BlockStatement`?e.alternate.body:[e.alternate]}function zd(e,t,n){return[...Ld(e.test)].some(e=>n.has(e)&&!t.has(e))}function Bd(e,t){return e.some(e=>{let n=Y(e);return n!==void 0&&Ku(n,t)})}function Vd(e,t,n,r){for(let i of e)if(i.type===`IfStatement`&&(zd(i,n,r)&&Bd(X(i.consequent),t)||Vd(Rd(i),t,n,r)))return!0;return!1}const Hd=new Set([`alert`,`confirm`,`display`,`hide`,`log`,`navigate`,`notify`,`post`,`prompt`,`redirect`,`report`,`send`,`show`,`submit`,`track`]);function Ud(e){let t=e.toLowerCase();for(let e of Hd)if(t.startsWith(e))return!0;return!1}function Wd(e,t){let n=Y(e);return n===void 0||Ku(n,t)?!1:n.callee.type===`Identifier`?Ud(n.callee.name):n.callee.type!==`MemberExpression`||n.callee.computed||n.callee.property.type!==`Identifier`?!1:Ud(n.callee.property.name)}function Gd(e,t){return[...Ld(e.test)].some(e=>t.has(e))}function Kd(e,t,n){for(let r of e)if(r.type===`IfStatement`&&(Gd(r,n)&&X(r.consequent).some(e=>Wd(e,t))||r.alternate!==null&&Kd(Rd(r),t,n)))return!0;return!1}function qd(e,t){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}function Jd(e,t){return`${e}:${t}`}function Yd(e){if(e.body?.type===`BlockStatement`)return e.body}function Xd(e){return e.body.type===`BlockStatement`}function Zd(e){return e.body!==null}const Qd=new Set(`addEventListener.addListener.alert.analytics.cancelAnimationFrame.clearInterval.clearTimeout.confirm.debug.delete.error.fetch.get.info.log.navigate.navigateTo.notify.observe.patch.post.prompt.put.redirect.removeEventListener.removeListener.report.requestAnimationFrame.send.setInterval.setTimeout.showNotification.submit.subscribe.track.unobserve.unsubscribe.warn`.split(`.`)),$d=[`fetch`,`send`,`post`,`track`],ef=new Set([`addEventListener`,`addListener`,`cancelAnimationFrame`,`catch`,`clearInterval`,`clearTimeout`,`finally`,`observe`,`removeEventListener`,`removeListener`,`requestAnimationFrame`,`setInterval`,`setTimeout`,`subscribe`,`then`,`unobserve`,`unsubscribe`]),tf=[`log`,`fetch`,`send`,`track`,`report`,`show`,`navigate`,`submit`,`post`,`notify`];function nf(e){for(let t of tf)if(e.startsWith(t))return!0;return!1}function rf(e){return e.object.type===`Identifier`&&e.object.name===`console`&&e.property.type===`Identifier`&&(e.property.name===`log`||e.property.name===`warn`||e.property.name===`error`||e.property.name===`info`||e.property.name===`debug`)}function af(e){for(let t of $d)if(e.startsWith(t))return!0;return ef.has(e)}function of(e,t,n){let{callee:r}=e;return Ku(e,t)?!1:r.type===`Identifier`?n.has(r.name)?!1:Qd.has(r.name)||nf(r.name):r.type!==`MemberExpression`||r.computed||r.property.type!==`Identifier`||r.object.type===`Identifier`&&n.has(r.object.name)?!1:rf(r)||af(r.property.name)}function sf(e,t,n){for(let r of e){if(r.type===`IfStatement`){if(sf(X(r.consequent),t,n))return!0;continue}let e=Y(r);if(e!==void 0&&of(e,t,n))return!0}return!1}const cf=t({create(e){let t=Pu(e.options[0]),n=vn(t.environment),r=new Set,i=new Set,a=new Set,o=new Set,s=new Set,c=new Map,l=new Set,u=new Set,d=[],f=1,p=new Map,m=[];function h(e){return Lu(e,i,r,t.hooks)}function g(e){return Lu(e,a,r,t.stateHooks)}function _(e){return Lu(e,l,r,t.refHooks)}function v(e){if(e.init?.type!==`CallExpression`||!g(e.init)||e.id.type!==`ArrayPattern`)return;let{elements:t}=e.id;if(t.length<2)return;let[,n]=t;if(n==null||n.type!==`Identifier`)return;o.add(n.name);let[r]=t;r?.type===`Identifier`&&(s.add(r.name),c.set(n.name,r.name))}function ee(e){e.init?.type!==`CallExpression`||!_(e.init)||e.id.type!==`Identifier`||u.add(e.id.name)}function te(e){e.id.type!==`Identifier`||e.init===null||(e.init.type===`FunctionExpression`||e.init.type===`ArrowFunctionExpression`)&&p.set(e.id.name,e.init)}function y(e){let n=f;f+=1;let r=Ru(e);d.push(vd(e,t.propertyCallbackPrefixes,n,zu(r))),e.type===`FunctionDeclaration`&&e.id!==null&&p.set(e.id.name,e)}function b(){d.pop()}function x(e){return t.reportMixedDerivedState&&e.setterCalls.size>0&&e.hasNonSetter&&!e.hasReturnCleanup?!sf(e.statements,o,e.functionContext?.propertyCallbackIdentifiers??new Set):!1}function ne(e){let{coreStatements:n,dependencyIdentifiers:r,functionContext:i,hasNonSetter:a,hasReturnCleanup:l,node:d,statements:f}=e,p=t.reportEventFlag?id(f,c,o):void 0,m=[...r].some(e=>!(s.has(e)||o.has(e)));return[[t.reportEmptyEffect&&(f.length===0||f[0]!==void 0&&Bu(f[0])),`emptyEffect`],[t.reportInitializeState&&Sd(d)&&Ad(f,o),`initializeState`],[t.reportResetState&&kd(f,o)&&m,`resetState`],[p!==void 0&&bd(d,p),`eventFlag`],[t.reportEventSpecificLogic&&Kd(f,o,s),`eventSpecificLogic`],[t.reportAdjustState&&Vd(f,o,s,r)&&!a,`adjustState`],[t.reportDerivedState&&md(n,o)!==void 0,`derivedState`],[x(e),`mixedDerivedState`],[t.reportPassRefToParent&&i!==void 0&&Id(f,u,i.propertyCallbackIdentifiers),`passRefToParent`],[t.reportNotifyParent&&i!==void 0&&!i.isCustomHook&&hd(n,i,t.propertyCallbackPrefixes)!==void 0,`notifyParent`],[t.reportExternalStore&&Nd(f)&&l,`externalStore`],[t.reportLogOnly&&jd(f),`logOnly`]].find(([e])=>e)?.[1]}function S(t,n,r){let i=d.at(-1),a=Wu(n),s=xd(t),c=wd(n,o),l=Ed(n,o,i?.propertyCallbackIdentifiers??new Set),u=r!==void 0&&Uu(r);m.push({depIdentifiers:s,hasNonSetterSideEffect:l,hasReturnWithCleanup:u,node:t,ownerFunctionId:i?.functionId??0,setterCalls:c,statements:n});let f=ne({coreStatements:a,dependencyIdentifiers:s,functionContext:i,hasNonSetter:l,hasReturnCleanup:u,node:t,setterCalls:c,statements:n});f!==void 0&&e.report({messageId:f,node:t})}function C(){if(!t.reportEffectChain)return;let n=re();for(let t of m)if(!(t.hasNonSetterSideEffect||t.hasReturnWithCleanup))for(let r of t.depIdentifiers){let i=Jd(t.ownerFunctionId,r),a=n.get(i);if(a!==void 0&&w(a)){e.report({messageId:`effectChain`,node:t.node});return}}}function re(){let e=new Map;for(let[t,n]of m.entries())for(let r of n.setterCalls){let i=c.get(r);if(i===void 0)continue;let a=Jd(n.ownerFunctionId,i),o=e.get(a);o===void 0&&(o=new Set,e.set(a,o)),o.add(t)}return e}function w(e){return e.size!==0&&[...e].every(e=>{let t=m[e];return t!==void 0&&!t.hasNonSetterSideEffect&&!t.hasReturnWithCleanup})}function T(){if(!t.reportDuplicateDeps||m.length<2)return;let e=new Set;for(let t=0;t<m.length;t+=1){if(e.has(t))continue;let n=E(t,e);n.length<2||ie(n,e)}}function E(e,t){let n=m[e];if(n===void 0||n.depIdentifiers.size===0)return[];let r=[e];for(let i=e+1;i<m.length;i+=1){let e=m[i];t.has(i)||e!==void 0&&e.ownerFunctionId===n.ownerFunctionId&&qd(n.depIdentifiers,e.depIdentifiers)&&r.push(i)}return r}function ie(t,n){for(let r of t){n.add(r);let t=m[r];t!==void 0&&e.report({messageId:`duplicateDeps`,node:t.node})}}function ae(e,t){let n=p.get(t);if(n===void 0||n.async)return;let r=Yd(n);r!==void 0&&S(e,r.body.filter(e=>e.type!==`EmptyStatement`),r)}function oe(e,t){if(!t.async){if(t.type===`ArrowFunctionExpression`){if(!Xd(t))return;S(e,t.body.body.filter(e=>e.type!==`EmptyStatement`),t.body);return}Zd(t)&&S(e,t.body.body.filter(e=>e.type!==`EmptyStatement`),t.body)}}return{ArrowFunctionExpression:y,"ArrowFunctionExpression:exit":b,CallExpression(e){if(!h(e))return;let[t]=e.arguments;if(t!==void 0){if(t.type===`Identifier`){ae(e,t.name);return}He(t)&&oe(e,t)}},FunctionDeclaration:y,"FunctionDeclaration:exit":b,FunctionExpression:y,"FunctionExpression:exit":b,ImportDeclaration(e){xn(e,n,r,(e,n)=>{t.hooks.has(e)&&i.add(n),t.stateHooks.has(e)&&a.add(n),t.refHooks.has(e)&&l.add(n)})},"Program:exit"(){C(),T()},VariableDeclarator(e){v(e),ee(e),te(e)}}},meta:{docs:{description:`Disallow effects that only derive state, notify parent callbacks, reset state on prop changes, or route event side effects through state.`},messages:{adjustState:`This effect adjusts state when a prop changes. Adjust the state directly during rendering or restructure to avoid this need.`,derivedState:`This effect only derives state from properties or state. Compute the value during rendering instead of useEffect.`,duplicateDeps:`Multiple effects have identical dependency arrays. Combine them into a single effect for better performance.`,effectChain:`This effect is part of a chain of effects that only derive state from other effects. Consolidate the logic into event handlers or compute during rendering.`,emptyEffect:`This effect has an empty body and should be removed.`,eventFlag:`This effect only reacts to a state flag. Call the side effect directly in the event handler instead of toggling state.`,eventSpecificLogic:`This effect runs event-specific logic based on state. Move this logic to the event handler that triggers the state change.`,externalStore:"This effect subscribes to an external store and syncs to state. Use `useSyncExternalStore` instead.",initializeState:`This effect initializes state with a constant value. Pass the value as the useState initializer instead.`,logOnly:`This effect only contains console.log calls. Remove it (debug leftover) or move the logging to an event handler.`,mixedDerivedState:`This effect contains state setter calls that derive values from props or state mixed with other operations. Extract the setter calls and compute values during rendering.`,notifyParent:`This effect only notifies a parent via a property callback. Call the callback in the event handler instead of useEffect.`,passRefToParent:"This effect passes a ref to a parent callback. Use `forwardRef` or `useImperativeHandle` instead.",resetState:"This effect resets state when a prop changes. Pass a `key` prop to the component instead to reset all state automatically."},schema:[{additionalProperties:!1,properties:{environment:{default:`roblox-ts`,description:`The React environment: 'roblox-ts' uses @rbxts/react, 'standard' uses react.`,enum:[`roblox-ts`,`standard`],type:`string`},hooks:{default:[...Au],items:{type:`string`},type:`array`},propertyCallbackPrefixes:{default:[...ju],items:{type:`string`},type:`array`},refHooks:{default:[...Mu],description:`Ref hook names that return mutable ref objects.`,items:{type:`string`},type:`array`},reportAdjustState:{default:!0,type:`boolean`},reportDerivedState:{default:!0,type:`boolean`},reportDuplicateDeps:{default:!0,type:`boolean`},reportEffectChain:{default:!0,type:`boolean`},reportEmptyEffect:{default:!0,type:`boolean`},reportEventFlag:{default:!0,type:`boolean`},reportEventSpecificLogic:{default:!0,type:`boolean`},reportExternalStore:{default:!0,type:`boolean`},reportInitializeState:{default:!0,type:`boolean`},reportLogOnly:{default:!0,type:`boolean`},reportMixedDerivedState:{default:!0,type:`boolean`},reportNotifyParent:{default:!0,type:`boolean`},reportPassRefToParent:{default:!0,type:`boolean`},reportResetState:{default:!0,type:`boolean`},stateHooks:{default:[...Nu],description:`State hook names that return [value, setter] pairs.`,items:{type:`string`},type:`array`}},type:`object`}],type:`suggestion`}});function lf(e){return x(e)&&y(e.dependencyMode)&&(e.dependencyMode===`empty-or-omitted`||e.dependencyMode===`aggressive`)?e.dependencyMode:`non-updating`}function uf(e){let t=x(e)&&S(e.staticGlobalFactories)?e.staticGlobalFactories:ss;return{dependencyMode:lf(e),environment:Sn(e),staticGlobalFactories:new Set(t)}}function df(e){return{staticGlobalFactories:e.staticGlobalFactories}}function ff(e){let t=Lr(e);if(t===void 0)return;let{body:n}=t;if(n===null)return;if(n.type!==`BlockStatement`)return n;if(n.body.length!==1)return;let[r]=n.body;return r?.type===`ReturnStatement`?r.argument??void 0:void 0}function pf(e,t){switch(t.dependencyMode){case`aggressive`:return!0;case`empty-or-omitted`:return e===0||e===1;case`non-updating`:return e===0||e===1||e===2;default:{let e=Error(`Unknown dependency mode: ${String(t.dependencyMode)}`);throw Error.captureStackTrace(e,pf),e}}}const mf=t({create(e){let t=uf(e.options[0]),n=df(t),r=vn(t.environment),i=new Set,a=new Set;return{CallExpression(r){if(!fe(r,i,a)||js(r)||r.arguments.length===0)return;let o=ff(r);if(o===void 0)return;let s=new Set;K(e.sourceCode,o,s,n)&&pf(qr(e.sourceCode,r.arguments[1],s,n,Cs),t)&&e.report({messageId:`uselessUseMemo`,node:r})},ImportDeclaration(e){Ms(e,r,i,a)}}},meta:{docs:{description:`Disallow useMemo calls that only wrap values static enough to live at module scope.`},messages:{uselessUseMemo:`useMemo is wrapping a static value. Move the value to module scope instead of paying hook overhead for no runtime benefit.`},schema:[{additionalProperties:!1,properties:{dependencyMode:{default:`non-updating`,enum:[`empty-or-omitted`,`non-updating`,`aggressive`],type:`string`},environment:{default:`roblox-ts`,enum:[`roblox-ts`,`standard`],type:`string`},staticGlobalFactories:{items:{type:`string`},type:`array`}},type:`object`}],type:`suggestion`}}),hf=[`useSpring`];function gf(e){let t=!1,n=!1;for(let r of e.properties)if(!(r.type!==`Property`||r.computed||r.key.type!==`Identifier`)&&(r.key.name===`from`&&(t=!0),r.key.name===`to`&&(n=!0),t&&n))return!0;return!1}function _f(e,t,n){let r=w(t);if(r.type===`ObjectExpression`)return n(r);if(r.type!==`Identifier`)return!1;let i=E(e.getScope(r),r.name);if(i===void 0||!G(i.scope)||ds(i))return!1;for(let e of i.defs){let t=ps(e);if(t===void 0)continue;let r=w(t);if(r.type===`ObjectExpression`&&n(r))return!0}return!1}function vf(e,t){return _f(e,t,gf)}function yf(e,t,n,r){let i={staticGlobalFactories:r.staticGlobalFactories};return _f(e,t,t=>Ss(e,t,n,i))}function bf(e,t){return e===0||e===2||e===1&&t.treatEmptyDepsAsViolation}function xf({callee:e},t){if(e.type===`Identifier`)return t.springHooks.has(e.name);if(e.type===`MemberExpression`&&!e.computed){let{property:n}=e;if(n.type===`Identifier`)return t.springHooks.has(n.name)}return!1}const Sf=t({create(e){let[t]=e.options,n={springHooks:new Set(t?.springHooks??hf),staticGlobalFactories:new Set(t?.staticGlobalFactories??ss),treatEmptyDepsAsViolation:t?.treatEmptyDepsAsViolation??!0};return{CallExpression(t){if(!xf(t,n)||t.arguments.length===0)return;let[r]=t.arguments;if(r===void 0||r.type===`SpreadElement`)return;let i=new Set;if(!yf(e.sourceCode,r,i,n)||vf(e.sourceCode,r))return;let a=t.arguments.length>1?t.arguments[1]:void 0;bf(qr(e.sourceCode,a,i,n,Cs),n)&&e.report({messageId:`uselessSpring`,node:t})}}},meta:{docs:{description:`Disallow useSpring hooks whose config and dependencies are entirely static`},messages:{uselessSpring:`useSpring call has only static inputs and non-updating dependencies; replace it with a constant or remove the hook.`},schema:[{additionalProperties:!1,default:{staticGlobalFactories:[...ss],treatEmptyDepsAsViolation:!0},properties:{springHooks:{description:`Hook identifiers that should be treated as spring hooks`,items:{type:`string`},type:`array`},staticGlobalFactories:{default:[...ss],description:`Global factory identifiers that are treated as static constructors`,items:{type:`string`},type:`array`},treatEmptyDepsAsViolation:{default:!0,description:`Treat static config with an empty dependency array as a violation`,type:`boolean`}},type:`object`}],type:`suggestion`}}),Cf=Wa({alternative:`Log`,message:`{{name}}() is a raw output function lacking log levels, timestamps, and filtering. Production systems require structured logging for debugging and monitoring. Replace {{name}}(...) with {{alternative}}.`,messageId:`noWarn`,name:`warn`}),wf=t({create(e){return{ImportDeclaration(t){t.importKind!==`type`&&e.report({messageId:`onlyTypeImports`,node:t})}}},meta:{docs:{description:`Require all imports to be type-only imports. Benchmarks cannot import non-types because the benchmarker plugin will throw an error.`,recommended:!0},messages:{onlyTypeImports:"Benchmarks must use `import type` to avoid runtime imports that break the benchmarker plugin."},schema:[],type:`problem`}});function Tf(e){return!e.computed&&Ef(e.value)}function Ef(e){if(e===void 0)return!1;switch(e.type){case`ArrayExpression`:return e.elements.every(e=>e===null||e.type!==`SpreadElement`&&Ef(e));case`CallExpression`:return e.callee.type===`MemberExpression`&&Ef(e.callee.object);case`Literal`:return!0;case`MemberExpression`:return Ef(e.object);case`ObjectExpression`:return e.properties.every(e=>e.type!==`SpreadElement`&&Tf(e));default:return!1}}function Df(e){let t=e;for(;t.type===`MemberExpression`;){if(t.computed&&!Be(t.property))return!1;t=t.object}return!0}function Of(e){return e.type===`MethodDefinition`&&e.kind===`constructor`&&e.key.type===`Identifier`&&e.key.name===`constructor`}function kf(e){if(e.type!==`ExpressionStatement`)return!1;let{expression:t}=e;if(t.type!==`AssignmentExpression`)return!1;let{left:n}=t;if(n.type!==`MemberExpression`||n.object.type!==`ThisExpression`)return!1;let{property:r}=n;return(r.type===`Identifier`||Be(r))&&Ef(t.right)&&Df(n)}const Af=t({create(e){let[t=`always`]=e.options;if(t===`never`)return{PropertyDefinition(t){t.static||e.report({messageId:`unexpectedClassProperty`,node:t})}};function n(t){for(let n of t.body.body)if(!(!Of(n)||n.value.body===null))for(let t of n.value.body.body)kf(t)&&e.report({messageId:`unexpectedAssignment`,node:t.expression})}return{ClassDeclaration(e){n(e)},ClassExpression(e){n(e)}}},meta:{docs:{description:`Prefer class properties to assignment of literals in constructors.`},messages:{unexpectedAssignment:`Constructor assigns a literal value to this.property. Literals are static and known at class definition time. Move to a class property declaration: propertyName = value; at class level. This clarifies intent and reduces constructor complexity.`,unexpectedClassProperty:`Class property declarations are disabled by rule configuration (mode: 'never'). Move initialization into the constructor: this.propertyName = value; inside constructor().`},schema:[{enum:[`always`,`never`],type:`string`}],type:`suggestion`}});function jf(e){if(!G(e.scope))return!1;for(let t of e.defs){if(t.type!==`Variable`)continue;let e=t.node;if(e.type!==`VariableDeclarator`)continue;let n=e.parent;if(n.type===`VariableDeclaration`&&n.kind===`const`)return!0}return!1}function Mf(e,t){let n=E(e.getScope(t),t.name);return n===void 0?!1:ds(n)||jf(n)}function Nf(e,t){let n=E(e.getScope(t),t.name);return n===void 0?!1:ds(n)||G(n.scope)}function Pf(e,t){let n=t;for(;n.type===`MemberExpression`;){if(n.computed)return!1;n=w(n.object)}return n.type===`Identifier`&&Nf(e,n)}function Ff(e,t){let n=w(t);switch(n.type){case`Identifier`:return Mf(e,n);case`Literal`:return!0;case`MemberExpression`:return Pf(e,n);case`TemplateLiteral`:return n.expressions.length===0;case`UnaryExpression`:return n.operator===`-`&&w(n.argument).type===`Literal`;default:return!1}}function If(e,t){for(let n of t.properties)if(n.type!==`Property`||n.kind!==`init`||n.computed||!Ff(e,n.value))return!1;return!0}function Lf(e,t){if(t.id.type!==`ArrayPattern`||t.init?.type!==`CallExpression`||L(t.init)!==`useReducer`)return;let n=t.id.elements[1];if(n!=null&&n.type===`Identifier`)return E(e.getScope(n),n.name)}function Rf(e){let t=e;for(;t!==void 0;){if(t.type===`Program`)return t;t=t.parent}}function zf(e,t,n,r,i){let a=`const ${r} = ${t.getText(n)};`,{body:o}=i,s;for(let e of o){if(e.type===`ImportDeclaration`){s=e;continue}break}if(s!==void 0)return e.insertTextAfter(s,`\n\n${a}`);let[c]=o;return c===void 0?e.insertTextAfterRange([i.range[0],i.range[1]],a):e.insertTextBefore(c,`${a}\n\n`)}const Bf=t({create(e){let t=new Set,{sourceCode:n}=e,r=0;return{CallExpression(i){if(i.callee.type!==`Identifier`)return;let a=E(n.getScope(i.callee),i.callee.name);if(a===void 0||!t.has(a))return;let[o]=i.arguments;if(o===void 0||o.type===`SpreadElement`)return;let s=w(o);if(s.type!==`ObjectExpression`||!If(n,s))return;let c=Rf(s);if(c===void 0)return;let l=`PREFER_CONSTANT_ACTION_${r}`;r+=1,e.report({messageId:`preferConstantDispatch`,node:s,suggest:[{desc:`Extract to module constant \`${l}\``,fix(e){return[zf(e,n,s,l,c),e.replaceText(s,l)]}}]})},VariableDeclarator(e){let r=Lf(n,e);r!==void 0&&t.add(r)}}},meta:{docs:{description:`Disallow inline useReducer action objects that could be module-level constants.`,recommended:!0},hasSuggestions:!0,messages:{preferConstantDispatch:`Move this inline useReducer action object to a module-level constant.`},schema:[],type:`suggestion`}}),Vf=new Set([`.js`,`.jsx`,`.ts`,`.tsx`]),Hf=new Set([`.git`,`.next`,`.turbo`,`__fixtures__`,`__mocks__`,`__tests__`,`coverage`,`dist`,`documentation`,`example`,`examples`,`fixture`,`fixtures`,`node_modules`,`opensrc`,`stories`,`story`,`test`,`tests`]),Uf=/\bexport\s+default\b/u,Wf=/\/index$/u,Gf=/\.(?:[cm]?jsx?|tsx?)$/u,Kf=new Map,qf=new Map,Jf=new Map,Yf=/[.*+?^${}()|[\]\\]/gu,Xf=String.raw`\$&`;function Zf(e){return e.replaceAll(Yf,Xf)}const Qf=new Map;function $f(e){return e.includes(`u`)||e.includes(`v`)?e:`${e}u`}function ep(e,t){let n=`${t}:${e}`,r=Qf.get(n);if(r!==void 0)return r;let i=new RegExp(e,$f(t));if(Qf.size>=64){let e=Qf.keys().next().value;e!==void 0&&Qf.delete(e)}return Qf.set(n,i),i}function tp(e){return e.replaceAll(`\\`,`/`)}function np(e){let t=qf.get(e);if(t!==void 0)return t;let n=f(e,`utf8`);return qf.set(e,n),n}function rp(e,t){let n=Zf(t);return ep(`\\bexport\\s+(?:const|function|class)\\s+${n}\\b`,`u`).test(e)||ep(`\\bexport\\s*\\{[^}]*\\b${n}\\b[^}]*\\}`,`u`).test(e)?`named`:Uf.test(e)&&ep(`\\b${n}\\b`,`u`).test(e)?`default`:void 0}function ip(e,t){for(let n of t)if(!ep(`\\b${Zf(n)}\\b`,`u`).test(e))return!1;return!0}function ap(e){let t=Jf.get(e);if(t!==void 0)return t;let n=e;for(;;){if(d(c(n,`package.json`))||d(c(n,`tsconfig.json`)))return Jf.set(e,n),n;let t=a(n);if(t===n){Jf.set(e,void 0);return}n=t}}function op(e){let t=Kf.get(e);if(t!==void 0)return t;let n=new Map;function r(e){for(let t of p(e,{withFileTypes:!0})){let a=t.name.toLowerCase();if(t.name.startsWith(`.`)&&t.name!==`.storybook`||Hf.has(a))continue;let s=c(e,t.name);if(t.isDirectory()){r(s);continue}let l=o(t.name);if(!Vf.has(l)||t.name.endsWith(`.d.ts`))continue;let u=i(t.name,l).toLowerCase(),d=n.get(u);d===void 0?n.set(u,[s]):d.push(s)}}r(e);let a=new Map;for(let[e,t]of n)a.set(e,t);return Kf.set(e,a),a}function sp(e,t){let n=tp(l(a(e),t));return n=n.replace(Gf,``),n=n.replace(Wf,``),n.startsWith(`.`)||(n=`./${n}`),n}function cp(e){let t=ap(a(e)),n=tp(t===void 0?e:l(t,e));for(let e of n.split(`/`))if(Hf.has(e.toLowerCase()))return!0;return!1}function lp(e,t){if(cp(e))return{importStyle:void 0,matches:!1};let n=o(e);if(!Vf.has(n)||e.endsWith(`.d.ts`))return{importStyle:void 0,matches:!1};let r=i(e,n).toLowerCase();if(!t.fileNames.map(e=>e.toLowerCase()).includes(r))return{importStyle:void 0,matches:!1};let a=np(e);if(!ep(`\\b${Zf(t.componentName)}\\b`,`u`).test(a)||t.markers!==void 0&&!ip(a,t.markers))return{importStyle:void 0,matches:!1};let s=rp(a,t.componentName);return s===void 0?{importStyle:void 0,matches:!1}:{importStyle:s,matches:!0}}function up(e,t,n){let r=e.source.value;if(!(y(r)&&r.startsWith(`.`))||t===``)return{importStyle:void 0,matches:!1};let i=Qs(r,t);return i.found?lp(i.path,n):{importStyle:void 0,matches:!1}}function dp(e,t,n,r){if(t.matches)for(let t of e.specifiers){if(t.type===`ImportDefaultSpecifier`){r.add(t.local.name);continue}if(t.type!==`ImportSpecifier`)continue;let{imported:e}=t;(e.type===`Identifier`?e.name:e.value)===n&&r.add(t.local.name)}}function fp(e,t){let n=ap(a(e));if(n===void 0)return{found:!1};let r=op(n),i=new Set;for(let e of t.fileNames)for(let t of r.get(e.toLowerCase())??[])i.add(t);let o=[...i].filter(e=>lp(e,t).matches);if(o.length!==1)return{found:!1};let[s]=o;if(s===void 0)return{found:!1};let c=lp(s,t);return{found:!0,importSource:sp(e,s),importStyle:c.importStyle,path:s}}const pp={componentName:`ContextStack`,fileNames:[`context-stack`],markers:[`providers`]},mp=new Set([`.jsx`,`.tsx`]);function hp(e){return e.openingElement.name.type===`JSXMemberExpression`&&e.openingElement.name.property.name===`Provider`}function gp(e){return e.children.filter(e=>e.type===`JSXText`?e.value.trim()!==``:e.type!==`JSXExpressionContainer`||e.expression.type!==`JSXEmptyExpression`)}function _p(e){let{parent:t}=e;if(t.type!==`JSXElement`||!hp(t))return!1;let n=gp(t);return n.length===1&&n[0]===e}function vp(e){if(!hp(e))return;let t=[e],n=e;for(;;){let e=gp(n);if(e.length!==1)break;let[r]=e;if(r?.type!==`JSXElement`||!hp(r))break;t.push(r),n=r}return t.length>1?t:void 0}function yp(e,t){let n=!1;for(let r of e.children){if(r===t){n=!0;continue}if(!(r.type===`JSXText`&&r.value.trim()===``))return!1}return n}function bp(e){let t=0;for(let n of e){let r=e[t+1];if(r===void 0){t+=1;continue}if(!yp(n,r))return!1;t+=1}return!0}function xp(e,t){let n=t.getText(e.openingElement);return e.openingElement.selfClosing?n:n.endsWith(`>`)?`${n.slice(0,-1)} />`:void 0}function Sp(e,t,n){let r=[];for(let e of t){let t=xp(e,n);if(t===void 0)return;r.push(t)}let i=t.at(-1);if(i===void 0||i.closingElement===null)return;let a=n.text.slice(i.openingElement.range[1],i.closingElement.range[0]);return`<${e} providers={[${r.join(`, `)}]}>${a}</${e}>`}const Cp=t({create(e){let{filename:t,sourceCode:n}=e,r=t===``?{found:!1}:fp(t,pp),i=new Set;return{ImportDeclaration(e){dp(e,up(e,t,pp),pp.componentName,i)},JSXElement(a){if(_p(a))return;let s=vp(a);if(s===void 0||i.size===0&&!r.found)return;let c=mp.has(o(t))&&i.size===1&&bp(s),[l]=i,u=c&&l!==void 0?Sp(l,s,n):void 0;if(u!==void 0){e.report({fix:e=>e.replaceText(a,u),messageId:`preferContextStack`,node:a});return}e.report({messageId:`preferContextStack`,node:a})}}},meta:{docs:{description:`Prefer a local ContextStack component over directly nesting multiple context providers.`},fixable:`code`,messages:{preferContextStack:"Use the local `ContextStack` component instead of nesting multiple context providers directly."},schema:[],type:`suggestion`}});function wp(e){return x(e)&&b(e.maximumStatements)?e.maximumStatements:1}function Tp(e){return e.type===`IfStatement`&&e.alternate===null}function Ep(e,t){return e.type===`ExpressionStatement`&&t===0||e.type===`BlockStatement`&&e.body.length>t}function Dp(e,t){if(e.body.length!==1)return!1;let[n]=e.body;return n===void 0||!Tp(n)?!1:Ep(n.consequent,t)}const Op=t({create(e){let t=wp(e.options[0]);function n(n){Dp(n,t)&&e.report({messageId:`preferEarlyReturn`,node:n})}return{ArrowFunctionExpression(e){e.body.type===`BlockStatement`&&n(e.body)},FunctionDeclaration(e){e.body!==null&&n(e.body)},FunctionExpression(e){e.body!==null&&n(e.body)}}},meta:{docs:{description:`Prefer early returns over full-body conditional wrapping.`,recommended:!0},messages:{preferEarlyReturn:`Function body is wrapped in a single conditional without an else branch. This increases nesting depth and cognitive load. Invert the condition and return early: if (!condition) return; then place the main logic at the top level.`},schema:[{additionalProperties:!1,properties:{maximumStatements:{default:1,minimum:0,type:`number`}},type:`object`}],type:`suggestion`}});function kp(e){return e.type===`Identifier`&&(e.name===`it`||e.name===`test`)}function Ap(e){if(e.callee.type!==`MemberExpression`||!kp(e.callee.object))return!1;let t=T(e.callee);return t===`only`||t===`skip`}function jp(e){return e.callee.type!==`MemberExpression`||!kp(e.callee.object)?!1:T(e.callee)===`each`}function Mp(e){let t=e.arguments.at(-1);return t===void 0||!He(t)?void 0:t}function Np(e){return e.type===`DoWhileStatement`||e.type===`ForInStatement`||e.type===`ForOfStatement`||e.type===`ForStatement`||e.type===`WhileStatement`}function Pp(e,t){return e.type===t.type&&e.range[0]===t.range[0]&&e.range[1]===t.range[1]}function Fp(e,t){return{hasCallback:e.hasCallback||t.hasCallback,hasIndeterminate:e.hasIndeterminate||t.hasIndeterminate,hasLoop:e.hasLoop||t.hasLoop}}function Ip(e,t){if(Pp(e,t))return{hasCallback:!1,hasIndeterminate:!1,hasLoop:!1};let n={hasCallback:He(e),hasIndeterminate:He(e)||Np(e)||e.type===`ConditionalExpression`||e.type===`IfStatement`||e.type===`SwitchCase`||e.type===`TryStatement`&&e.handler!==null,hasLoop:Np(e)};return e.parent===null?n:Fp(n,Ip(e.parent,t))}function Lp(e){return e.callee.type===`Identifier`?kp(e.callee):Ap(e)?!0:e.callee.type===`CallExpression`&&jp(e.callee)}function Rp(e){return Lp(e)?Mp(e):void 0}function zp({callee:e}){return e.type!==`MemberExpression`||e.object.type!==`Identifier`||e.object.name!==`expect`?!1:T(e)===`assertions`}function Bp({callee:e}){return e.type!==`MemberExpression`||e.object.type!==`Identifier`||e.object.name!==`expect`?!1:T(e)===`hasAssertions`}function Vp(e,t=[]){return e.callee.type===`Identifier`&&(e.callee.name===`expect`||t.includes(e.callee.name))}function Hp(e,t=[]){let n=0,r=!1,i=!1,a=!1,o=0;return Rr(e,s=>{if(s.type!==`CallExpression`||!Vp(s,t))return;let c=Ip(s.parent,e);if(c.hasLoop&&(i=!0),c.hasCallback&&(r=!0),c.hasIndeterminate){a=!0,o+=1;return}n+=1}),{deterministic:n,hasExpectInCallback:r,hasExpectInLoop:i,hasIndeterminate:a,indeterminate:o}}function Up(e){return Array.isArray(e)?e.filter(y):[]}function Wp(e){return x(e)?{additionalAssertionFunctions:Up(e.additionalAssertionFunctions),additionalExpectCallNames:Up(e.additionalExpectCallNames),onlyFunctionsWithAsyncKeyword:e.onlyFunctionsWithAsyncKeyword===!0,onlyFunctionsWithExpectInCallback:e.onlyFunctionsWithExpectInCallback===!0,onlyFunctionsWithExpectInLoop:e.onlyFunctionsWithExpectInLoop===!0}:{additionalAssertionFunctions:[],additionalExpectCallNames:[],onlyFunctionsWithAsyncKeyword:!1,onlyFunctionsWithExpectInCallback:!1,onlyFunctionsWithExpectInLoop:!1}}function Gp(e){return[...new Set([...e.additionalExpectCallNames,...e.additionalAssertionFunctions])]}function Kp(e){return e.onlyFunctionsWithAsyncKeyword||e.onlyFunctionsWithExpectInCallback||e.onlyFunctionsWithExpectInLoop}function qp(e){return e.body??void 0}function Jp(e){let t=qp(e);return t?.type===`BlockStatement`?t:void 0}function Yp(e,t,n,r,i,a){return n+r===0?!1:!Kp(t)||t.onlyFunctionsWithAsyncKeyword&&e.async||t.onlyFunctionsWithExpectInCallback&&i||t.onlyFunctionsWithExpectInLoop&&a}function Xp(e){let t=Jp(e);if(t===void 0)return;let[n]=t.body;if(!(n?.type!==`ExpressionStatement`||n.expression.type!==`CallExpression`))return n.expression}function Zp(e,t,n,r,i){let a=Jp(t);if(a===void 0){e.report({messageId:`haveExpectAssertions`,node:n});return}let[o]=a.body;if(i){e.report({messageId:`haveExpectAssertions`,node:n,suggest:[{fix(e){return o===void 0?e.insertTextAfterRange([a.range[0],a.range[0]+1],` expect.hasAssertions();`):e.insertTextBefore(o,`expect.hasAssertions();
|
|
10
|
+
`)},messageId:`suggestAddingHasAssertions`}]});return}e.report({messageId:`haveExpectAssertions`,node:n,suggest:[{data:{count:String(r)},fix(e){return o===void 0?e.insertTextAfterRange([a.range[0],a.range[0]+1],` expect.assertions(${r});`):e.insertTextBefore(o,`expect.assertions(${r});\n`)},messageId:`suggestAddingAssertions`}]})}function Qp(e,t,n,r){if(Bp(t)){t.arguments.length>0&&e.report({messageId:`hasAssertionsTakesNoArguments`,node:t});return}if(!zp(t))return;if(t.arguments.length!==1){e.report({messageId:`assertionsRequiresOneArgument`,node:t});return}let[i]=t.arguments;if(i===void 0||i.type===`SpreadElement`||!We(i)){e.report({messageId:`assertionsRequiresNumberArgument`,node:t});return}!r&&n>0&&i.value!==n&&e.report({data:{actual:String(n),expected:String(i.value)},messageId:`wrongAssertionCount`,node:t})}const $p=t({create(e){let t=Wp(e.options[0]);return{CallExpression(n){if(!Lp(n))return;let r=Rp(n);if(r===void 0)return;let i=qp(r);if(i===void 0)return;let{deterministic:a,indeterminate:o,hasIndeterminate:s,hasExpectInCallback:c,hasExpectInLoop:l}=Hp(i,Gp(t));if(!Yp(r,t,a,o,c,l))return;let u=Xp(r);if(u!==void 0&&(zp(u)||Bp(u))){if(Qp(e,u,a,s),Bp(u)&&u.arguments.length===0&&a>0&&!s){let[t]=Jp(r)?.body??[];t!==void 0&&e.report({data:{count:String(a)},fix(e){return e.replaceText(t,`expect.assertions(${a});`)},messageId:`preferAssertionsCount`,node:u})}return}Zp(e,r,n,a,s)}}},meta:{docs:{description:`Enforce expect assertion guards in Jest tests and prefer expect.assertions(n) over expect.hasAssertions() when the count is known.`,recommended:!0},fixable:`code`,hasSuggestions:!0,messages:{assertionsRequiresNumberArgument:`This argument should be a number`,assertionsRequiresOneArgument:"`expect.assertions` expects a single argument of type number",hasAssertionsTakesNoArguments:"`expect.hasAssertions` expects no arguments",haveExpectAssertions:"Every test should have either `expect.assertions(<number of assertions>)` or `expect.hasAssertions()` as its first expression",preferAssertionsCount:"Use `expect.assertions({{count}})` instead of `expect.hasAssertions()` when the count is known",suggestAddingAssertions:"Add `expect.assertions({{count}})`",suggestAddingHasAssertions:"Add `expect.hasAssertions()`",wrongAssertionCount:`Expected {{expected}} assertions, but test has {{actual}} expect calls`},schema:[{additionalProperties:!1,properties:{additionalAssertionFunctions:{items:{type:`string`},type:`array`},additionalExpectCallNames:{items:{type:`string`},type:`array`},onlyFunctionsWithAsyncKeyword:{type:`boolean`},onlyFunctionsWithExpectInCallback:{type:`boolean`},onlyFunctionsWithExpectInLoop:{type:`boolean`}},type:`object`}],type:`suggestion`}});function em(e){if(!(x(e)&&`additionalHoistableComponents`in e))return new Set;let{additionalHoistableComponents:t}=e;return t===void 0||!S(t)?new Set:new Set(t)}function tm(e){if(!(x(e)&&`additionalStaticFactories`in e))return new Set;let{additionalStaticFactories:t}=e;return t===void 0||!S(t)?new Set:new Set(t)}function nm(e,t){let n=t,{parent:r}=n;for(;r.type===`ParenthesizedExpression`;)n=r,{parent:r}=n;if(r.type!==`VariableDeclarator`||r.id.type!==`Identifier`||r.init!==n)return!1;let i=E(e.sourceCode.getScope(n),r.id.name);return i!==void 0&&G(i.scope)}function rm(e,t,n,r){if(t.name.type===`JSXIdentifier`&&(t.name.name===`Event`||t.name.name===`Change`))return!1;let{value:i}=t;return i===null||i.type===`Literal`?!0:i.type!==`JSXExpressionContainer`||i.expression.type===`JSXEmptyExpression`||gs(e.sourceCode,i.expression,new Set)?!1:K(e.sourceCode,i.expression,n,r)}function im(e,t,n,r){for(let i of t.attributes)if(i.type===`JSXSpreadAttribute`||!rm(e,i,n,r))return!1;return!0}function am(e,t,n,r,i){if(t.type===`JSXText`)return t.value.trim()===``;if(t.type===`JSXElement`)return sm(e,t,n,r,i);if(t.type!==`JSXExpressionContainer`)return!1;if(t.expression.type===`JSXEmptyExpression`)return!0;if(t.expression.type===`Identifier`){let a=ms(e.sourceCode,t.expression);if(a?.type===`JSXElement`)return sm(e,a,n,r,i)}return K(e.sourceCode,t.expression,n,i)}function om(e,t,n,r,i){for(let a of t.children)if(!am(e,a,n,r,i))return!1;return!0}function sm(e,t,n,r,i){return ho(t.openingElement.name,r)&&im(e,t.openingElement,n,i)&&om(e,t,n,r,i)}function cm(e,t,n,r){let{parent:i}=t;for(;i.type!==`Program`;){if(i.type===`JSXElement`&&sm(e,i,new Set,n,r))return!0;({parent:i}=i)}return!1}function lm(e,t){let n=t,{parent:r}=n;for(;r.type!==`Program`;){if(r.type===`VariableDeclarator`&&r.id.type===`Identifier`&&r.init===n){let t=E(e.sourceCode.getScope(n),r.id.name);if(t!==void 0&&G(t.scope))return!0}(r.type===`JSXElement`||r.type===`JSXFragment`||r.type===`ParenthesizedExpression`)&&(n=r),{parent:r}=r}return!1}function um(e,t){let n=e.sourceCode.getText(t);e.report({data:{elementText:n},messageId:`hoistableJsxElement`,node:t})}const dm=t({create(e){let[t]=e.options,n=em(t),r=tm(t),i={staticGlobalFactories:new Set([...ss,...r])};return{JSXElement(t){sm(e,t,new Set,n,i)&&(nm(e,t)||cm(e,t,n,i)||lm(e,t)||um(e,t))}}},meta:{docs:{description:`Prefer extracting static Roblox JSX intrinsic elements to module-level constants.`},messages:{hoistableJsxElement:"Extract `{{elementText}}` to a shared module-level const — this Roblox JSX element is fully static and identical elements should reuse the same const."},schema:[{additionalProperties:!1,properties:{additionalHoistableComponents:{description:`Additional component names that can be hoisted to module-level constants.`,items:{type:`string`},type:`array`},additionalStaticFactories:{description:`Additional factory functions whose return values are considered static.`,items:{type:`string`},type:`array`}},type:`object`}],type:`suggestion`}}),fm={staticGlobalFactories:new Set(ss)};function pm(e){let{value:t}=e;if(t?.type===`JSXExpressionContainer`&&t.expression.type!==`JSXEmptyExpression`)return t.expression}function mm(e,t){let n=t;for(;;){let{parent:r}=n;if(r===null)return!1;if(r.type===`VariableDeclarator`)return gm(e,t,r,n);let i=hm(r);if(i===void 0)return!1;n=i}}function hm(e){if(e.type===`JSXElement`||e.type===`JSXFragment`||e.type===`JSXExpressionContainer`||e.type===`ParenthesizedExpression`||e.type===`ArrayExpression`)return e}function gm(e,t,n,r){if(n.id.type!==`Identifier`||n.init!==r)return!1;let i=E(e.sourceCode.getScope(t),n.id.name);return i!==void 0&&G(i.scope)}function _m(e,t){let n=e.sourceCode.getText(t);e.report({data:{objectText:n},messageId:`hoistableObjectProp`,node:t})}function vm(e,t){if(t.properties.some(e=>e.type===`Property`&&e.computed))return;let n=new Set;if(K(e.sourceCode,t,n,fm)){_m(e,t);return}for(let n of t.properties){if(n.type!==`Property`)continue;let t=w(n.value);t.type===`ObjectExpression`&&vm(e,t)}}const ym=t({create(e){return{JSXAttribute(t){let n=pm(t);if(n===void 0)return;let r=w(n);if(r.type!==`ObjectExpression`)return;let i=t.parent;if(i.type!==`JSXOpeningElement`)return;let a=i.parent;a.type===`JSXElement`&&mm(e,a)||vm(e,r)}}},meta:{docs:{description:`Prefer extracting inline JSX object props to module-level constants when the entire object is statically hoistable.`},messages:{hoistableObjectProp:"Extract `{{objectText}}` to a module-level const — this inline JSX prop object is fully static and causes unnecessary reference churn on every render."},schema:[],type:`suggestion`}});function bm({type:e}){return e===`Identifier`||e===`MemberExpression`||e===`CallExpression`||e===`NewExpression`||e===`ThisExpression`}function xm(e){let t=e;for(;t.type===`ParenthesizedExpression`;)t=t.expression;return t}const Sm=t({createOnce(e){return{CallExpression(t){if(t.optional)return;let n=w(t.callee);if(n.type!==`MemberExpression`||n.optional||T(n)!==`floor`)return;let r=w(n.object);if(r.type!==`Identifier`||r.name!==`math`||ie(e.sourceCode,r,`math`)||t.arguments.length!==1)return;let[i]=t.arguments;if(i===void 0||i.type===`SpreadElement`)return;let a=w(i);if(a.type!==`BinaryExpression`||a.operator!==`/`)return;let o=w(a.left),s=e.sourceCode.getText(xm(a.left)),c=bm(o)?s:`(${s})`,l=e.sourceCode.getText(xm(a.right));e.report({fix:e=>e.replaceText(t,`${c}.idiv(${l})`),messageId:`useIdiv`,node:t})}}},meta:{docs:{description:`Prefer .idiv() for integer division instead of math.floor(x / y).`,recommended:!0},fixable:`code`,messages:{useIdiv:`Use .idiv() instead of math.floor(x / y) for integer division.`},schema:[],type:`suggestion`}}),Cm={componentName:`Portal`,fileNames:[`portal`],markers:[`target`]},wm=new Set([`@rbxts/react-roblox`,`react-dom`]),Tm=new Set([`.jsx`,`.tsx`]);function Em(e){return e.type===`ImportBinding`}function Dm(e){return e.parent?.type===`ImportDeclaration`?e.parent:void 0}function Om(e){if(e===void 0)return!1;for(let t of e.defs){if(!Em(t)||t.node.type!==`ImportSpecifier`)continue;let e=Dm(t.node);if(e===void 0||!wm.has(e.source.value))continue;let{imported:n}=t.node;if(n.type===`Identifier`&&n.name===`createPortal`)return!0}return!1}function km(e){if(e===void 0)return!1;for(let t of e.defs){if(!Em(t)||t.node.type!==`ImportNamespaceSpecifier`)continue;let e=Dm(t.node);if(e!==void 0&&wm.has(e.source.value))return!0}return!1}function Am(e,{callee:t}){return t.type===`Identifier`?Om(E(e.getScope(t),t.name)):t.type!==`MemberExpression`||t.computed||t.property.type!==`Identifier`||t.property.name!==`createPortal`||t.object.type!==`Identifier`?!1:km(E(e.getScope(t.object),t.object.name))}function jm(e,t){return e.type===`JSXElement`||e.type===`JSXFragment`?t.getText(e):`{${t.getText(e)}}`}function Mm(e,t,n){if(t.arguments.length!==2)return;let[r,i]=t.arguments;if(r===void 0||i===void 0)return;let a=jm(r,n);return`<${e} target={${n.getText(i)}}>${a}</${e}>`}const Nm=t({create(e){let{filename:t,sourceCode:n}=e,r=t===``?{found:!1}:fp(t,Cm),i=new Set;return{CallExpression(a){if(!Am(n,a)||a.arguments.length!==2||!(i.size>0||r.found))return;let s=Tm.has(o(t))&&i.size===1,[c]=i,l=s&&c!==void 0?Mm(c,a,n):void 0;if(l!==void 0){e.report({fix:e=>e.replaceText(a,l),messageId:`preferPortalComponent`,node:a});return}e.report({messageId:`preferPortalComponent`,node:a})},ImportDeclaration(e){dp(e,up(e,t,Cm),Cm.componentName,i)}}},meta:{docs:{description:`Prefer a local Portal component over direct createPortal calls when the project already defines one.`},fixable:`code`,messages:{preferPortalComponent:"Use the local `Portal` component instead of calling `createPortal` directly."},schema:[],type:`suggestion`}});function Pm(e){return e===void 0?!1:e.type===`TSTypeAnnotation`?Pm(e.typeAnnotation):e.type===`TSNumberKeyword`||e.type===`TSTypeReference`&&e.typeName.type===`Identifier`&&e.typeName.name===`Number`}function Fm(e){return e.type!==`PrivateIdentifier`}function Im(e){let t=w(e);return t.type===`Literal`&&!b(t.value)}function Lm(e){if(e.type===`Parameter`){let t=e.name;if(t.type===`Identifier`&&t.typeAnnotation!==void 0&&t.typeAnnotation!==null)return!Pm(t.typeAnnotation);let{parent:n}=t;return n?.type===`AssignmentPattern`&&Im(n.right)}if(e.type!==`Variable`||e.node.type!==`VariableDeclarator`)return!1;let{id:t,init:n}=e.node;return t.type===`Identifier`&&t.typeAnnotation!==void 0&&t.typeAnnotation!==null?!Pm(t.typeAnnotation):n!=null&&Im(n)}function Rm(e,t){let n=E(e.getScope(t),t.name);if(n===void 0)return!1;for(let e of n.defs)if(Lm(e))return!0;return!1}function zm(e,t){if(t.type===`ParenthesizedExpression`)return zm(e,t.expression);if(t.type===`TSAsExpression`||t.type===`TSTypeAssertion`)return!Pm(t.typeAnnotation);if(Im(t))return!0;let n=w(t);return n.type===`Identifier`&&Rm(e,n)}function Bm(e,t){return e.getText(w(t))}function Vm(e){let t=e;for(;t.type===`ParenthesizedExpression`;)t=t.expression;return t}function Hm(e,t){let n=Vm(t);return n.type===`SequenceExpression`?`(${e.getText(n)})`:e.getText(n)}function Um(e,t){if(t.test.type!==`BinaryExpression`)return;let{alternate:n,consequent:r,test:i}=t,{left:a,operator:o,right:s}=i;if(!(Fm(a)&&Fm(s))||!(I(a)&&I(s))||zm(e,a)||zm(e,s))return;let c=Bm(e,a),l=Bm(e,s),u=Bm(e,n),d=Bm(e,r),f=o===`>`||o===`>=`,p=o===`<`||o===`<=`;if(f&&c===u&&l===d||p&&c===d&&l===u)return`min`;if(f&&c===d&&l===u||p&&c===u&&l===d)return`max`}const Wm=t({create(e){let{sourceCode:t}=e;return{ConditionalExpression(n){if(ie(t,n,`math`))return;let r=Um(t,n);if(r===void 0||n.test.type!==`BinaryExpression`)return;let{left:i,right:a}=n.test;if(!(Fm(i)&&Fm(a)))return;let o=Hm(t,i),s=Hm(t,a);e.report({fix(e){return e.replaceText(n,`math.${r}(${o}, ${s})`)},messageId:`preferMathMethod`,node:n})}}},meta:{docs:{description:`Prefer math.min() and math.max() over simple clamp-like ternaries.`,recommended:!0},fixable:`code`,messages:{preferMathMethod:"Use `math.min()` or `math.max()` instead of this ternary comparison."},schema:[],type:`suggestion`}}),Gm=new Set([`ReadonlyRecord`,`Record`]);function Km(e){return e.type===`TSTypeReference`&&e.typeName.type===`Identifier`&&Gm.has(e.typeName.name)}function qm(e){if(e.id.type!==`Identifier`)return;let t=ce(e.id);if(t===void 0)return;let{typeAnnotation:n}=t;if(!Km(n))return;let{typeArguments:r}=n;if(r?.params.length!==2)return;let[i,a]=r.params;if(!(i===void 0||a===void 0)&&a.type===`TSLiteralType`&&!(a.literal.type!==`Literal`||a.literal.value!==!0))return i}function Jm(e){if(e?.type!==`ObjectExpression`)return!1;for(let t of e.properties)if(t.type!==`Property`||t.value.type!==`Literal`||t.value.value!==!0)return!1;return!0}const Ym=t({create(e){let{sourceCode:t}=e;return{VariableDeclarator(n){if(n.id.type!==`Identifier`)return;let r=n.id.name;if(!Jm(n.init))return;let i=qm(n);if(i===void 0)return;let a=t.getText(i);e.report({data:{enumType:a},fix(e){return e.replaceTextRange([n.range[0],n.range[1]],`${r} = Modding.inspect<Record<${a}, true>>()`)},messageId:`preferModdingInspect`,node:n.id})}}},meta:{docs:{description:`Prefer Modding.inspect over manually enumerating every enum member in a Record<Enum, true>.`,recommended:!0},fixable:`code`,messages:{preferModdingInspect:`Replace manual {{enumType}} enumeration with Modding.inspect<Record<{{enumType}}, true>>().`},schema:[],type:`suggestion`}}),Xm=/^[A-Z][A-Z0-9_]*$/u;function Zm(e){let{type:t}=e;if(t===`module`||t===`global`)return!0;if(e.upper?.type===`global`){let{block:t}=e.upper;if(t.type===`Program`&&t.sourceType===`script`)return!0}return!1}const Qm=t({create(e){let t=!1;return{VariableDeclaration(e){t=e.kind===`const`},"VariableDeclaration:exit"(){t=!1},VariableDeclarator(n){let{id:r}=n;if(!(r.type!==`Identifier`||!Xm.test(r.name))){if(!t){e.report({messageId:`mustUseConst`,node:n});return}Zm(e.sourceCode.getScope(n))||e.report({messageId:`mustBeModuleScope`,node:n})}}}},meta:{docs:{description:"Prefer that screaming snake case variables always be defined using `const`, and always appear at module scope."},messages:{mustBeModuleScope:`You must place screaming snake case at module scope. If this is not meant to be a module-scoped variable, use camelcase instead.`,mustUseConst:"You must use `const` when defining screaming snake case variables. If this is not a constant, use camelcase instead."},schema:[],type:`suggestion`}}),$m=new Set([`end`,`loc`,`parent`,`range`,`start`]),eh=new Set([`.jsx`,`.tsx`]),th=new Set([`PaddingBottom`,`PaddingLeft`,`PaddingRight`,`PaddingTop`]),nh={componentName:`DirectionalPadding`,fileNames:[`directional-padding`],markers:[`horizontal`,`vertical`]},rh={componentName:`EqualPadding`,fileNames:[`equal-padding`],markers:[`padding`]};function ih(e,t){return Object.is(e,t)?!0:Array.isArray(e)?Array.isArray(t)&&ah(e,t):Array.isArray(t)||typeof e!=`object`||typeof t!=`object`||e===null||t===null||!(x(e)&&x(t))?!1:oh(e,t)}function ah(e,t){if(e.length!==t.length)return!1;let n=0;for(let r of e)if(!ih(r,t[n++]))return!1;return!0}function oh(e,t){let n=Object.entries(e).filter(([e])=>!$m.has(e)),r=Object.entries(t).filter(([e])=>!$m.has(e));if(n.length!==r.length)return!1;for(let[e,r]of n)if(!(e in t)||!ih(r,t[e]))return!1;return!0}function sh(e){for(let t of e.children)if(!(t.type===`JSXText`&&t.value.trim()===``)&&!(t.type===`JSXExpressionContainer`&&t.expression.type===`JSXEmptyExpression`))return!0;return!1}function ch({value:e}){if(e!==null){if(e.type===`JSXExpressionContainer`)switch(e.expression.type){case`JSXElement`:case`JSXEmptyExpression`:case`JSXFragment`:return;default:return w(e.expression)}return e.type===`Literal`?e:void 0}}function lh(e){let t=new Map;for(let n of e.attributes){if(n.type===`JSXSpreadAttribute`||n.name.type!==`JSXIdentifier`)return;let e=n.name.name;if(!th.has(e)||t.has(e)||n.value===null)return;t.set(e,n)}let n=t.get(`PaddingBottom`),r=t.get(`PaddingLeft`),i=t.get(`PaddingRight`),a=t.get(`PaddingTop`);if(!(n===void 0||r===void 0||i===void 0||a===void 0))return{paddingBottom:n,paddingLeft:r,paddingRight:i,paddingTop:a}}function uh({value:e},t){if(e!==null)switch(e.type){case`JSXExpressionContainer`:case`Literal`:return t.getText(e);default:return}}function dh(e,t,n,r){let i=uh(n.paddingTop,r);if(i===void 0)return;if(t===`preferEqualPadding`)return`<${e} padding=${i} />`;let a=uh(n.paddingLeft,r);if(a!==void 0)return`<${e} horizontal=${i} vertical=${a} />`}function fh(e){let t=ch(e.paddingBottom),n=ch(e.paddingLeft),r=ch(e.paddingRight),i=ch(e.paddingTop);if(t===void 0||n===void 0||r===void 0||i===void 0)return;if(ih(i,t)&&ih(i,n)&&ih(i,r))return`preferEqualPadding`;let a=ih(i,t),o=ih(n,r);return a&&o?`preferDirectionalPadding`:void 0}function ph(e){return e.type===`JSXIdentifier`}const mh=t({create(e){let{filename:t}=e,n=t===``?{found:!1}:fp(t,nh),r=t===``?{found:!1}:fp(t,rh),i=new Set,a=new Set;return{ImportDeclaration(e){let n=up(e,t,nh),r=up(e,t,rh);dp(e,n,nh.componentName,i),dp(e,r,rh.componentName,a)},JSXElement(s){if(sh(s))return;let{openingElement:c}=s;if(!ph(c.name)||c.name.name!==`uipadding`)return;let l=lh(c);if(l===void 0)return;let u=fh(l);if(u===void 0)return;let d=u===`preferEqualPadding`?a:i,f=u===`preferEqualPadding`?r:n;if(d.size===0&&!f.found)return;let p=eh.has(o(t))&&d.size===1,[m]=[...d],h=p&&m!==void 0?dh(m,u,l,e.sourceCode):void 0;if(h!==void 0){e.report({fix(e){return e.replaceText(s,h)},messageId:u,node:s});return}e.report({messageId:u,node:s})}}},meta:{docs:{description:`Prefer local EqualPadding and DirectionalPadding components over matching <uipadding /> declarations.`},fixable:`code`,messages:{preferDirectionalPadding:"Use the local `DirectionalPadding` component when horizontal and vertical padding already match.",preferEqualPadding:"Use the local `EqualPadding` component when all four padding values already match."},schema:[],type:`suggestion`}}),hh=/[A-Z]+(?![a-z])|[A-Z]?[a-z]+|\d+/gu,gh=/^[^A-Za-z0-9]+|[^A-Za-z0-9]+$/gu,_h=/(?<first>[a-z0-9])(?<second>[A-Z])/gu,vh=/[_\-\s]+/gu;function yh(e){return e.replaceAll(gh,``).replaceAll(_h,`$<first> $<second>`).replaceAll(vh,` `).match(hh)??[]}function bh(e){let t=yh(e),n=``;for(let e of t)e.length!==0&&(n+=`${e.slice(0,1).toUpperCase()}${e.slice(1).toLowerCase()}`);return n}const xh=/^\d/u;function Sh(e){if(e.id.type===`Identifier`)return e.id.name;if(!(e.id.type!==`Literal`||!y(e.id.value)))return xh.test(e.id.value)?void 0:e.id.value}const Ch=t({createOnce(e){return{TSEnumDeclaration(t){let n=t.id.name;bh(n)!==n&&e.report({data:{identifier:n},messageId:`notPascalCase`,node:t.id})},TSEnumMember(t){let n=Sh(t);n===void 0||bh(n)===n||e.report({data:{identifier:n},messageId:`notPascalCase`,node:t.id})}}},meta:{docs:{description:`Enforce Pascal case when naming enums.`,recommended:!0},messages:{notPascalCase:`Enum '{{ identifier }}' uses non-standard casing. TypeScript convention requires PascalCase for enum names and members to distinguish them from variables (camelCase) and constants (UPPER_CASE). Rename to PascalCase: capitalize first letter of each word, no underscores.`},schema:[],type:`suggestion`}});function wh(e,t){return We(e)&&e.value===t}function Th(e){if(e===`ColorSequence`)return`ColorSequenceKeypoint`;if(e===`NumberSequence`)return`NumberSequenceKeypoint`}function Eh(e,t,n){if(e.type!==`NewExpression`||!Ie(e,t)||e.arguments.length!==2)return;let[r,i]=e.arguments;if(!(r===void 0||r.type===`SpreadElement`)&&!(i===void 0||i.type===`SpreadElement`))return wh(r,n)?i:void 0}function Dh(e,t,n){if(t.arguments.length!==2)return;let[r,i]=t.arguments;if(r===void 0||r.type===`SpreadElement`||i===void 0||i.type===`SpreadElement`)return;let a=e.sourceCode.getText(r);if(a===e.sourceCode.getText(i))return{messageId:`preferSingleOverload`,replacement:`new ${n}(${a})`}}function Oh(e,t,n,r){if(t.arguments.length!==1)return;let[i]=t.arguments;if(i===void 0||i.type===`SpreadElement`||i.type!==`ArrayExpression`||i.elements.length!==2)return;let[a,o]=i.elements;if(a===void 0||o===void 0||a===null||o===null||a.type===`SpreadElement`||o.type===`SpreadElement`)return;let s=Eh(a,r,0),c=Eh(o,r,1);if(s===void 0||c===void 0)return;let l=e.sourceCode.getText(s),u=e.sourceCode.getText(c);return{messageId:l===u?`preferSingleOverload`:`preferTwoPointOverload`,replacement:l===u?`new ${n}(${l})`:`new ${n}(${l}, ${u})`}}const kh=t({createOnce(e){return{NewExpression(t){if(t.callee.type!==`Identifier`)return;let n=t.callee.name,r=Th(n);if(r===void 0)return;let i=Dh(e,t,n)??Oh(e,t,n,r);i!==void 0&&e.report({fix:e=>e.replaceText(t,i.replacement),messageId:i.messageId,node:t})}}},meta:{docs:{description:`Prefer direct ColorSequence and NumberSequence overloads over two-keypoint arrays.`,recommended:!0},fixable:`code`,messages:{preferSingleOverload:`Use the single-value sequence overload instead of two identical keypoints.`,preferTwoPointOverload:`Use the two-value sequence overload instead of constructing a two-keypoint array.`},schema:[],type:`suggestion`}});function Ah(e){return e.length===2}function jh(e){return e.type===`MemberExpression`&&!e.computed}function Mh(e,t){if(e.type!==`CallExpression`)return!1;let{callee:n}=e;if(!jh(n)||n.property.name!==t||!Ah(e.arguments))return!1;let[r,i]=e.arguments;return r.type!==`SpreadElement`&&i.type!==`SpreadElement`}function Nh(e,t){if(e.declarations.length!==1)return;let[n]=e.declarations;if(n===void 0)return;let{id:r,init:i}=n;if(r.type!==`Identifier`||i===null||!Mh(i,t))return;let{callee:a}=i;if(!jh(a))return;let[o,s]=i.arguments;if(!(o===void 0||s===void 0||o.type===`SpreadElement`||s.type===`SpreadElement`))return{componentNode:s,entityNode:o,node:i,queryType:t,variableDeclaration:e,variableDeclarator:n,variableName:r.name,worldNode:a.object}}const Ph=new Set([`ConditionalExpression`,`DoWhileStatement`,`ForStatement`,`IfStatement`,`WhileStatement`]);function Fh(e){return x(e)&&`parent`in e}function Ih(e){return x(e)&&y(e.type)?e.type:void 0}function Lh(e){return x(e)&&y(e.operator)?e.operator:void 0}function Rh(e){return Ih(e)===`LogicalExpression`&&Lh(e)===`&&`}function zh(e){return x(e)&&e.type===`Identifier`&&y(e.name)}function Bh(e){let{parent:t}=e;if(Rh(t))return!0;let n=Ih(t);if(n===void 0||!Ph.has(n))return!1;let r=e;for(;r!==void 0&&r!==t&&Fh(r);){let e=r.parent;if(Rh(e))return!0;r=e}return!1}function Vh(e){if(e.isWrite())return!1;let{identifier:t}=e;return zh(t)?Bh(t):!1}function Hh(e,t,n){return E(n.getScope(t),e)?.references.some(Vh)??!1}function Uh(e,t){return e.every(e=>Hh(e.variableName,e.variableDeclaration,t))}const Wh=/^[\s;]*$/u;function Gh(e,t,n){if(e===void 0)return!0;if(n.getText(e.worldNode)!==n.getText(t.worldNode)||n.getText(e.entityNode)!==n.getText(t.entityNode)||e.queryType!==t.queryType)return!1;let[,r]=e.variableDeclaration.range,[i]=t.variableDeclaration.range,a=n.text.slice(r,i);return Wh.test(a)}function Kh(e,t){if(e.length<2)return;let[n]=e;if(n===void 0)return;let{sourceCode:r}=t,i=r.getText(n.worldNode),a=r.getText(n.entityNode),o=e.map(e=>e.variableName),s=e.map(e=>r.getText(e.componentNode));qh(e,t,`const ${o.length===1?o[0]:`[${o.join(`, `)}]`} = ${i}.get(${a}, ${s.join(`, `)});`,`preferSingleGet`,n)}function qh(e,t,n,r,i){let a=e.at(0)?.variableDeclaration,o=e.at(-1)?.variableDeclaration;a===void 0||o===void 0||t.report({data:{fixedCode:n},fix(e){let[t]=a.range,[,r]=o.range;return e.replaceTextRange([t,r],n)},messageId:r,node:i.node})}function Jh(e,t){if(e.length<2)return;let{sourceCode:n}=t;if(!Uh(e,n))return;let[r]=e;r!==void 0&&qh(e,t,`const hasAll = ${n.getText(r.worldNode)}.has(${n.getText(r.entityNode)}, ${e.map(e=>n.getText(e.componentNode)).join(`, `)});`,`preferSingleHas`,r)}const Yh=t({create(e){let{sourceCode:t}=e,n=[],r=[];function i(){n.length>=2&&Kh(n,e),n=[]}function a(){r.length>=2&&Jh(r,e),r=[]}function o(){i(),a()}return{":statement:not(VariableDeclaration[kind='const'])":o,"Program:exit":o,"VariableDeclaration[kind='const']"(e){let s=Nh(e,`get`);if(s!==void 0){let e=n.at(-1);e!==void 0&&!Gh(e,s,t)&&i(),n.push(s),a();return}let c=Nh(e,`has`);if(c!==void 0){let e=r.at(-1);e!==void 0&&!Gh(e,c,t)&&a(),r.push(c),i();return}o()}}},meta:{docs:{description:`Enforce combining multiple world.get() or world.has() calls into a single call for better Jecs performance.`},fixable:`code`,messages:{preferSingleGet:`Multiple world.get() calls on the same entity should be combined into a single call for better performance. Suggested fix: {{fixedCode}}`,preferSingleHas:`Multiple world.has() calls on the same entity should be combined into a single call for better performance. Suggested fix: {{fixedCode}}`},schema:[],type:`suggestion`}}),Xh=new Set([`alumni`,`axes`,`cacti`,`children`,`criteria`,`data`,`dice`,`feet`,`fungi`,`geese`,`indices`,`matrices`,`media`,`men`,`mice`,`octopi`,`people`,`phenomena`,`teeth`,`vertices`,`women`]),Zh=new Set([`alias`,`analysis`,`axis`,`basis`,`business`,`class`,`crisis`,`glass`,`news`,`series`,`species`,`status`,`thesis`]),Qh=new Set([`args`,`components`,`controllers`,`dto`,`dtos`,`entries`,`enums`,`hooks`,`items`,`keys`,`models`,`options`,`orders`,`pages`,`parameters`,`params`,`props`,`repositories`,`services`,`settings`,`types`,`values`,`vo`,`vos`]),$h=/[A-Z]+(?![a-z])|[A-Z]?[a-z]+|\d+/gu,eg=/^[A-Z]{2,}[sS]?$/u;function tg(e){let t=[],n=0;for(let r of e.split(`_`)){let e=r.match($h);if(e!==null)for(let r of e)t[n++]=r}return t}const ng=/^\d+$/u;function rg(e){for(let t=e.length-1;t>=0;--t){let n=e[t];if(!(n===void 0||ng.test(n)))return{lowercased:n.toLowerCase(),original:n}}}const ig=/[sS]$/u,ag=/(?:ches|shes|xes|zes)$/u;function og(e,t){return Xh.has(e)||Qh.has(e)?!0:Zh.has(e)?!1:eg.test(t)&&ig.test(t)||e.endsWith(`ies`)||e.endsWith(`ves`)||ag.test(e)||e.endsWith(`s`)&&!e.endsWith(`ss`)&&!e.endsWith(`us`)&&!e.endsWith(`is`)}function sg(e){if(eg.test(e)&&ig.test(e))return!0;let t=rg(tg(e));return t!==void 0&&og(t.lowercased,t.original)}const cg=t({createOnce(e){return{TSEnumDeclaration({id:t}){let{name:n}=t;sg(n)&&e.report({data:{name:n},messageId:`notSingular`,node:t})}}},meta:{docs:{description:`Prefer singular naming for enums.`,recommended:!0},messages:{notSingular:`Enum name "{{name}}" should be singular.`},schema:[],type:`suggestion`}});function lg(e){return e.type===`JSXElement`||e.type===`JSXFragment`}function ug(e,t,n){return e.type===`Super`||t.type===`Super`?e.type===`Super`&&t.type===`Super`:Z(e,t,n)}function dg(e,t,n){return e.type===`SpreadElement`||t.type===`SpreadElement`?e.type!==`SpreadElement`||t.type!==`SpreadElement`?!1:Z(e.argument,t.argument,n):Z(e,t,n)}function fg(e,t,n){return e.type===`PrivateIdentifier`||t.type===`PrivateIdentifier`?e.type===`PrivateIdentifier`&&t.type===`PrivateIdentifier`&&e.name===t.name:Z(e,t,n)}function Z(e,t,n){let r=w(e),i=w(t);if(r.type!==i.type)return!1;switch(r.type){case`BinaryExpression`:return i.type===`BinaryExpression`&&pg(r,i,n);case`CallExpression`:return i.type===`CallExpression`&&mg(r,i,n);case`Identifier`:return i.type===`Identifier`&&r.name===i.name;case`Literal`:return i.type===`Literal`&&r.value===i.value;case`LogicalExpression`:return i.type===`LogicalExpression`&&hg(r,i,n);case`MemberExpression`:return i.type===`MemberExpression`&&gg(r,i,n);case`ThisExpression`:return i.type===`ThisExpression`;case`UnaryExpression`:return i.type===`UnaryExpression`&&r.operator===i.operator&&Z(r.argument,i.argument,n);default:return n.getText(r)===n.getText(i)}}function pg(e,t,n){return e.operator===t.operator&&fg(e.left,t.left,n)&&fg(e.right,t.right,n)}function mg(e,t,n){if(e.optional!==t.optional||!ug(e.callee,t.callee,n)||e.arguments.length!==t.arguments.length)return!1;for(let r=0;r<e.arguments.length;r+=1){let i=e.arguments[r],a=t.arguments[r];if(i===void 0||a===void 0||!dg(i,a,n))return!1}return!0}function hg(e,t,n){return e.operator===t.operator&&Z(e.left,t.left,n)&&Z(e.right,t.right,n)}function gg(e,t,n){return e.computed!==t.computed||e.optional!==t.optional||!ug(e.object,t.object,n)?!1:e.computed?fg(e.property,t.property,n):_g(e.property,t.property)}function _g(e,t){return(e.type===`Identifier`&&t.type===`Identifier`||e.type===`PrivateIdentifier`&&t.type===`PrivateIdentifier`)&&e.name===t.name}function vg(e){let t=w(e);if(!(t.type!==`UnaryExpression`||t.operator!==`!`))return w(t.argument)}function yg(e){let t=w(e);if(t.type===`BinaryExpression`&&!(t.operator!==`===`&&t.operator!==`!==`))return{left:t.left,operator:t.operator,right:t.right}}function bg(e){let t=w(e);return t.type===`Identifier`||t.type===`ThisExpression`||t.type===`Literal`}function xg(e){return rt(e)&&bg(e)}function Sg(e,t,n){let r=vg(e);if(r&&Z(r,t,n))return{isFixSafe:bg(r)};let i=vg(t);if(i&&Z(i,e,n))return{isFixSafe:bg(i)};let a=yg(e),o=yg(t);if(!(a&&o)||!(a.operator===`===`&&o.operator===`!==`||a.operator===`!==`&&o.operator===`===`))return;let s=fg(a.left,o.left,n)&&fg(a.right,o.right,n),c=fg(a.left,o.right,n)&&fg(a.right,o.left,n);if(s||c)return{isFixSafe:xg(a.left)&&xg(a.right)&&xg(o.left)&&xg(o.right)}}function Cg(e){return e.type===`JSXText`&&e.value.trim()===``}function wg(e){if(e.type===`JSXExpressionContainer`&&e.expression.type!==`JSXEmptyExpression`&&e.expression.type===`LogicalExpression`&&e.expression.operator===`&&`&&lg(e.expression.right))return{condition:e.expression.left,logical:e.expression,node:e,renderBranch:e.expression.right}}const Tg=t({create(e){let{sourceCode:t}=e;function n(e,t){let n=t;for(;n<e.length;){let t=e[n];if(t===void 0||!Cg(t))break;n+=1}let r=e[n];return r===void 0?void 0:wg(r)}function r(n,r){let i=Sg(n.condition,r.condition,t);if(i!==void 0){if(i.isFixSafe){e.report({fix(e){let i=`{${t.getText(n.condition)} ? ${t.getText(n.renderBranch)} : ${t.getText(r.renderBranch)}}`;return e.replaceTextRange([n.node.range[0],r.node.range[1]],i)},messageId:`preferTernaryConditionalRendering`,node:n.logical});return}e.report({messageId:`preferTernaryConditionalRendering`,node:n.logical})}}function i(e){for(let t=0;t<e.length;t+=1){let i=e[t];if(i===void 0)continue;let a=wg(i);if(a===void 0)continue;let o=n(e,t+1);o!==void 0&&r(a,o)}}return{JSXElement(e){i(e.children)},JSXFragment(e){i(e.children)}}},meta:{docs:{description:`Prefer ternary expressions over complementary JSX && branches.`},fixable:`code`,messages:{preferTernaryConditionalRendering:`Use a single ternary expression instead of complementary JSX && branches.`},schema:[],type:`suggestion`}});function Eg(e){return e.type===`PrivateIdentifier`}function Dg(e){return e===`+`||e===`-`||e===`*`||e===`/`||e===`%`}function Og(e){return e.type===`BinaryExpression`&&Dg(e.operator)&&!Eg(e.left)&&!Eg(e.right)}function kg(e){switch(e.type){case`BinaryExpression`:{if(!Og(e))return;let{left:t,right:n}=e,r=kg(t),i=kg(n);return r===void 0||i===void 0?void 0:`${r} ${e.operator} ${i}`}case`Identifier`:return e.name;case`Literal`:return re(e.value)?String(e.value):void 0;case`UnaryExpression`:{let t=kg(e.argument);return t===void 0||e.operator!==`+`&&e.operator!==`-`?void 0:`${e.operator}${t}`}default:return}}function Ag(e,t,n){switch(e){case`%`:return n===0?void 0:t%n;case`*`:return t*n;case`+`:return t+n;case`-`:return t-n;case`/`:return n===0?void 0:t/n;default:return}}function jg(e){switch(e.type){case`BinaryExpression`:{if(!Og(e))return;let{left:t,right:n}=e,r=jg(t),i=jg(n);return r===void 0||i===void 0?void 0:Ag(e.operator,r,i)}case`Identifier`:return;case`Literal`:return re(e.value)?e.value:void 0;case`UnaryExpression`:{let t=jg(e.argument);return t===void 0?void 0:e.operator===`+`?t:e.operator===`-`?-t:void 0}default:return}}function Mg(e){if(e.length!==4)return;let[t,n,r,i]=e;if(t===void 0||n===void 0||r===void 0||i===void 0||t.type===`SpreadElement`||n.type===`SpreadElement`||r.type===`SpreadElement`||i.type===`SpreadElement`)return;let a=kg(t),o=kg(n),s=kg(r),c=kg(i);if(!(a===void 0||o===void 0||s===void 0||c===void 0))return{offsetXText:o,offsetYText:c,scaleXText:a,scaleYText:s}}const Ng=t({create(e){return{NewExpression(t){if(!Ie(t,`UDim2`))return;let n=Mg(t.arguments);if(n===void 0)return;let[r,i,a,o]=t.arguments;if(r===void 0||i===void 0||a===void 0||o===void 0||r.type===`SpreadElement`||i.type===`SpreadElement`||a.type===`SpreadElement`||o.type===`SpreadElement`)return;let s=jg(r),c=jg(i),l=jg(a),u=jg(o);if(!(s===0&&c===0&&l===0&&u===0)){if(c===0&&u===0){e.report({fix(e){return e.replaceText(t,`UDim2.fromScale(${n.scaleXText}, ${n.scaleYText})`)},messageId:`preferFromScale`,node:t});return}s===0&&l===0&&e.report({fix(e){return e.replaceText(t,`UDim2.fromOffset(${n.offsetXText}, ${n.offsetYText})`)},messageId:`preferFromOffset`,node:t})}}}},meta:{docs:{description:`Prefer UDim2.fromScale() or UDim2.fromOffset() over new UDim2() when all offsets or all scales are zero.`},fixable:`code`,messages:{preferFromOffset:`Use UDim2.fromOffset() instead of new UDim2() when all scales are 0.`,preferFromScale:`Use UDim2.fromScale() instead of new UDim2() when all offsets are 0.`},schema:[],type:`suggestion`}});function Pg(e,t,n){if(t.type!==`BlockStatement`)return;let r=0;for(let e of t.body)if(e.type===`VariableDeclaration`)for(let t of e.declarations)_o(t.init,`useState`)&&(r+=1);r<5||e.report({data:{componentName:n,useStateCount:String(r)},messageId:`excessiveUseState`,node:t})}const Fg=t({create(e){return{FunctionDeclaration(t){t.id===null||!W(t.id.name)||`body`in t&&t.body&&Pg(e,t.body,t.id.name)},VariableDeclarator(t){vo(t)&&t.init&&`body`in t.init&&t.init.body&&`name`in t.id&&Pg(e,t.init.body,t.id.name)}}},meta:{docs:{description:`Suggest using useReducer for related state updates instead of multiple useState calls.`,recommended:!0},messages:{excessiveUseState:`Component "{{componentName}}" has {{useStateCount}} useState calls — consider useReducer for related state`},type:`problem`}}),Ig=`replace`,Lg=`suggestion`,Rg=`A more descriptive name will do too.`,zg={args:`parameters`,char:`character`,dt:`deltaTime`,plr:`player`},Bg=[`char`],Vg={acc:{accumulator:!0},arg:{argument:!0},args:{arguments:!0},arr:{array:!0},attr:{attribute:!0},attrs:{attributes:!0},btn:{button:!0},cb:{callback:!0},char:{character:!0},conf:{config:!0},ctx:{context:!0},cur:{current:!0},curr:{current:!0},db:{database:!0},def:{defer:!0,deferred:!0,define:!0,definition:!0},dest:{destination:!0},dev:{development:!0},dir:{direction:!0,directory:!0},dirs:{directories:!0},dist:{distance:!0},doc:{document:!0},docs:{documentation:!0,documents:!0},dst:{daylightSavingTime:!0,destination:!0,distribution:!0},dt:{dateTime:!0,deltaTime:!0},e:{error:!0,event:!0},el:{element:!0},elem:{element:!0},elems:{elements:!0},env:{environment:!0},envs:{environments:!0},err:{error:!0},ev:{event:!0},evt:{event:!0},ext:{extension:!0},exts:{extensions:!0},fn:{func:!0,function:!0},func:{function:!0},i:{index:!0},idx:{index:!0},impl:{implementation:!0},j:{index:!0},len:{length:!0},lib:{library:!0},mod:{module:!0},msg:{message:!0},num:{number:!0},obj:{object:!0},opts:{options:!0},param:{parameter:!0},params:{parameters:!0},pkg:{package:!0},plr:{player:!0},prev:{previous:!0},prod:{production:!0},prop:{property:!0},props:{properties:!0},rel:{related:!0,relationship:!0,relative:!0},req:{request:!0},res:{resource:!0,response:!0,result:!0},ret:{returnValue:!0},retval:{returnValue:!0},sep:{separator:!0},src:{source:!0},stdDev:{standardDeviation:!0},str:{string:!0},tbl:{table:!0},temp:{temporary:!0},tit:{title:!0},tmp:{temporary:!0},util:{utility:!0},utils:{utilities:!0},val:{value:!0},var:{variable:!0},vars:{variables:!0},ver:{version:!0}},Hg={EmberENV:!0,defaultProps:!0,devDependencies:!0,getDerivedStateFromProps:!0,getInitialProps:!0,getServerSideProps:!0,getStaticProps:!0,iOS:!0,obj:!0,propTypes:!0,setupFilesAfterEnv:!0},Ug=[`i18n`,`l10n`],Wg=/(?=[A-Z])|(?<=[_.-])/u,Gg=new Set(`any.as.boolean.break.case.catch.class.const.constructor.continue.debugger.declare.default.delete.do.else.enum.export.extends.false.finally.for.from.function.get.if.implements.import.in.instanceof.interface.let.module.new.null.number.of.package.private.protected.public.require.return.set.static.string.super.switch.symbol.this.throw.true.try.type.typeof.var.void.while.with.yield`.split(`.`)),Kg=/^[A-Za-z]+$/u;function qg(e){return e>=65&&e<=90||e>=97&&e<=122||e===36||e===95}function Jg(e){return e<192?qg(e):e>=12289&&e<=55295?!0:e<=767?e!==215&&e!==247:e<=8191?e>=880&&e!==894:e<=8591?e>=8204&&e<=8205||e>=8304:e<=12271?e>=11264:e<=64255?e>=63744:e<=65023?e>=64512:e<=65279?e>=65136:e<=65370?e>=65313&&e<=65338||e>=65345:e>=65382&&e<=65500}function Yg(e){return!!(Jg(e)||e>=48&&e<=57||e===8204||e===8205||e>=768&&e<=865||e>=8240&&e<=8266)}function Xg(e){if(e.length===0||Gg.has(e))return!1;let t=e.codePointAt(0);if(t===void 0||!Jg(t))return!1;let n=t>65535?2:1;for(;n<e.length;){let t=e.codePointAt(n);if(t===void 0||!Yg(t))return!1;n+=t>65535?2:1}return!0}function Zg(e,t,n){return e?t:n}const Qg=/(?<=[a-z])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z])/u,$g=/(?<=[a-zA-Z])(?=\d)|(?<=\d)(?=[a-zA-Z])/u,e_=/[a-zA-Z]+|\d+|[^a-zA-Z\d]+/gu,t_=/[.+^${}()|[\]\\]/gu,n_=/^\/(?<first>.+)\/(?<second>[dgimsuvy]*)$/u,r_=new WeakMap;function i_(e){return e===e.toUpperCase()}function a_(e){return i_(e.charAt(0))}function o_(e){return e.charAt(0).toUpperCase()+e.slice(1)}function s_(e){return e.charAt(0).toLowerCase()+e.slice(1)}function c_(e){return e.includes(`u`)||e.includes(`v`)?e:`${e}u`}function l_(e){let t=e.match(e_);if(t===null)return[e];let n=[],r=0;for(let e of t){if(!Kg.test(e)){n[r++]=e;continue}r=u_(e,n,r)}return n}function u_(e,t,n){let r=n;for(let n of e.split($g))if(n.length!==0)for(let e of n.split(Qg))e.length>0&&(t[r++]=e);return r}const d_=/\$\d+/gu;function f_(e){let t=e.match(d_);if(t===null)return 0;let n=0;for(let e of t){let t=Math.trunc(Number(e.slice(1)));t>n&&(n=t)}return n}function p_(e){let t=f_(e);if(t===0)return[];let n=Array.from({length:t});for(let e=1;e<=t;e+=1)n[e-1]=RegExp(`\\$${e}`,`gu`);return n}function m_(e){let t=[],n=[],r=0;for(let[i,a]of e)a&&(t[r]=s_(i),n[r]=o_(i),r+=1);return{lowerFirst:t.toSorted(),upperFirst:n.toSorted()}}function h_(e,t){if(e.startsWith(`/`)){let n=n_.exec(e);if(n?.groups!==void 0)return{matcher:{original:e,pattern:RegExp(`^${n.groups.first}$`,c_(n.groups.second??``)),replacement:t,replacementPatterns:p_(t)},type:`pattern`}}if(e.includes(`*`)||e.includes(`?`)){let n=e.replaceAll(t_,String.raw`\$&`).replaceAll(`*`,`(.*)`).replaceAll(`?`,`(.)`),r=0,i=t.replaceAll(`*`,()=>`$${++r}`);return{matcher:{original:e,pattern:RegExp(`^${n}$`,`u`),replacement:i,replacementPatterns:p_(i)},type:`pattern`}}return{original:e,replacement:t,type:`exact`}}function g_(e,t){let n=t.exactMatchers.get(e);if(n!==void 0)return{matchedWord:e,replacement:n,shorthand:e};for(let n of t.matchers){let t=e.match(n.pattern);if(t===null)continue;let r=n.replacement,i=1;for(let e of n.replacementPatterns)r=r.replaceAll(e,t[i]??``),i+=1;return{matchedWord:e,replacement:r,shorthand:n.original}}}function __(e,t){if(t.ignoreExact.has(e))return!0;for(let n of t.ignoreMatchers)if(n.pattern.test(e))return!0;return!1}function v_(e,t){return e===`internal`||typeof e==`boolean`?e:t}function y_(e){if(!x(e))return;let t={};for(let[n,r]of Object.entries(e))typeof r==`boolean`&&(t[n]=r);return t}function b_(e,t){return typeof e==`boolean`?e:t}function x_(e){let t=x(e)?e:void 0,n=y_(t?.allowList),r=Zg(b_(t?.extendDefaultAllowList,!0),n===void 0?Hg:{...Hg,...n},n??{});return new Map(Object.entries(r))}function S_(e){if(!x(e))return{};let t={};for(let[n,r]of Object.entries(e)){if(r===!1){t[n]=!1;continue}if(!x(r))continue;let e={};for(let[t,n]of Object.entries(r))typeof n==`boolean`&&(e[t]=n);t[n]=e}return t}function C_(e){let t=x(e)?e:void 0,n=b_(t?.extendDefaultReplacements,!0),r=S_(t?.replacements),i=new Set([...Object.keys(Vg),...Object.keys(r)]),a=[];for(let e of i){let t=r[e],i=n?Vg[e]??{}:{},o=t===!1?{}:Zg(t===void 0,i,{...i,...t}),s=new Map(Object.entries(o));r_.set(s,m_(s)),a.push([e,s])}return new Map(a)}function w_(e){let t=x(e)?e:void 0,n=[];for(let e of Ug)n.push(e);if(Array.isArray(t?.ignore))for(let e of t.ignore)(y(e)||e instanceof RegExp)&&n.push(e);return n.map(e=>e instanceof RegExp?e:new RegExp(e,`u`))}function T_(e){let t=x(e)?e:void 0,n=new Set(Bg);if(!S(t?.allowPropertyAccess))return n;for(let e of t.allowPropertyAccess)n.add(e);return n}function E_(e){let t=x(e)?e:void 0,n=new Map,r=new Set,i=[],a=[],o=C(t?.shorthands)?t.shorthands:{},s={...zg,...o};for(let[e,t]of Object.entries(s)){let r=h_(e,t);r.type===`exact`?n.set(r.original,r.replacement):a.push(r.matcher)}if(S(t?.ignoreShorthands))for(let e of t.ignoreShorthands){let t=h_(e,``);t.type===`exact`?r.add(t.original):i.push(t.matcher)}return{exactMatchers:n,ignoreExact:r,ignoreMatchers:i,matchers:a}}function D_(e){let t=x(e)?e:void 0;return{allowList:x_(t),allowPropertyAccess:T_(t),checkDefaultAndNamespaceImports:v_(t?.checkDefaultAndNamespaceImports,`internal`),checkFilenames:b_(t?.checkFilenames,!0),checkProperties:b_(t?.checkProperties,!1),checkShorthandImports:v_(t?.checkShorthandImports,`internal`),checkShorthandProperties:b_(t?.checkShorthandProperties,!0),checkVariables:b_(t?.checkVariables,!0),ignore:w_(t),replacements:C_(t),shorthandConfiguration:E_(t)}}function O_(e,t){if(i_(e)||t.allowList.get(e)===!0)return[];let n=t.replacements.get(s_(e))??t.replacements.get(e)??t.replacements.get(o_(e));if(n===void 0)return[];let r=r_.get(n);return r===void 0?[]:a_(e)?r.upperFirst:r.lowerFirst}function k_(e,t){if(e.length===0)return;let n=l_(e),r=[],i=!1;for(let e of n){let n=g_(e,t);n!==void 0&&(i=!0,r.push(n))}if(!i)return;let a=``,o=0;for(let e of n){let t=r[o];if(t?.matchedWord===e){a+=t.replacement,o+=1;continue}a+=e}return{matches:r,replaced:a}}function A_(e,t){if(__(e,t))return!0;let n=l_(e),r=!1;for(let e of n){let n=g_(e,t);if(n!==void 0&&(r=!0,!__(n.matchedWord,t)))return!1}return r}function j_(e,t,n){if(n.has(e))return!0;for(let e of t.matches)if(!n.has(e.matchedWord))return!1;return t.matches.length>0}function M_(e,t,n=3){if(t.allowList.get(e)===!0||t.ignore.some(t=>t.test(e)))return{total:0};let r=k_(e,t.shorthandConfiguration);if(r!==void 0)return A_(e,t.shorthandConfiguration)?{total:0}:{samples:[r.replaced],total:1};if(i_(e))return{total:0};let i=O_(e,t);if(i.length>0)return{samples:i.slice(0,n),total:i.length};let a=e.split(Wg).filter(Boolean),o=!1,s=[],c=0;for(let e of a){let n=O_(e,t);if(n.length>0){o=!0,s[c++]=n;continue}s[c++]=[e]}if(!o)return{total:0};let l=s.reduce((e,t)=>e*t.length,1);return{samples:N_(s,l,n).map(e=>e.join(``)),total:l}}function N_(e,t,n){let r=Math.min(t,n),i=Array.from({length:r},(t,n)=>{let r=n,i=[];for(let t=e.length-1;t>=0;--t){let n=e[t]??[],a=r%n.length;r=(r-a)/n.length;let o=n[a];o!==void 0&&i.unshift(o)}return i});for(let e of i)for(let t=e.length-1;t>0;--t){let n=e[t]??``;Kg.test(n)&&e[t-1]?.endsWith(n)===!0&&e.splice(t,1)}return i}function P_(e,t){let n=t.replacements.get(e);if(n===void 0)return!1;let r=r_.get(n);return r!==void 0&&r.lowerFirst.length>0}function F_(e,t,n){let{samples:r=[],total:i}=t;if(i===1)return{data:{discouragedName:e,nameTypeText:n,replacement:r[0]??``},messageId:Ig};let a=r.map(e=>`\`${e}\``).join(`, `),o=i-r.length;return o>0&&(a+=`, ... (${o>99?`99+`:o} more omitted)`),{data:{discouragedName:e,nameTypeText:n,replacementsText:a},messageId:Lg}}function I_(e){let t=[e],n=1;for(let r of e.childScopes){let e=I_(r);for(let r of e)t[n++]=r}return t}function L_(e,t){return!t.some(t=>E(t,e)!==void 0)}function R_(e,t,n){let r=e;if(!(!Xg(r)&&(r=`${r}_`,!Xg(r)))){for(;!(L_(r,t)&&n(r,t));)r=`${r}_`;return r}}function z_(e){let t=new Set;for(let n of e.identifiers)t.add(n);for(let{identifier:n}of e.references)t.add(n);return[...t]}function B_(e,t){return e.range[0]===t.range[0]&&e.range[1]===t.range[1]}function V_(e){let{parent:t}=e;return!ye(t)||t.local!==e?!1:B_(t.local,t.imported)}function H_(e){let{parent:t}=e;return!be(t)||t.local!==e?!1:B_(t.local,t.exported)}function U_(e){if(!A(e))return!1;let{parent:t}=e;return xe(t)&&t.shorthand&&t.value===e}function W_(e){if(!A(e))return!1;let{parent:t}=e;if(!$e(t)||t.left!==e)return!1;let n=t.parent;return xe(n)?n.shorthand:!1}function G_(e){if(!A(e))return!1;let{parent:t}=e;if(Ae(t)&&t.local===e||je(t)&&t.local===e)return!0;if(ye(t)&&t.local===e){let{imported:e}=t;if(j(e)&&e.name==="default")return!0}return k(t)&&t.id===e&&t.init!==null&&tt(t.init)}function K_(e){if(!A(e))return!1;let{parent:t}=e;if(k(t)&&t.id===e){let e=t.parent;return Me(e)?Ne(e.parent):!1}return Pe(t)&&t.id===e||Le(t)&&t.id===e||Re(t)&&t.id===e?Ne(t.parent):!1}function q_(e){return z_(e).every(e=>!(K_(e)||me(e)))}function J_(e,t,n){if(A(e))return U_(e)||W_(e)?n.replaceText(e,`${e.name}: ${t}`):V_(e)?n.replaceText(e,`${e.name} as ${t}`):H_(e)?n.replaceText(e,`${t} as ${e.name}`):n.replaceText(e,t)}function Y_(e,t,n){let r=[],i=0;for(let a of z_(e)){let e=J_(a,t,n);e!==void 0&&(r[i++]=e)}return r}function X_(e){if(!A(e))return!1;let{parent:t}=e;if(M(t)&&t.property===e&&!t.computed){let e=t.parent;if(Se(e)&&e.left===t)return!0}return xe(t)&&t.key===e&&!t.computed&&!t.shorthand&&(qe(t.parent)||Je(t.parent))||ze(t)&&t.key===e&&!t.computed||be(t)&&t.exported===e&&t.local!==e?!0:(Oe(t)||ke(t))&&t.key===e&&!t.computed}function Z_(e){if(!A(e))return!1;let{parent:t}=e;return xe(t)&&t.key===e&&!t.computed&&!t.shorthand&&(qe(t.parent)||Je(t.parent))}function Q_(e){if(e.type===`ImportBinding`){let{parent:t}=e;if(t!==null&&ge(t)&&_e(t.source))return t.source.value}if(e.type===`Variable`){let{node:t}=e;if(k(t)&&t.init!==null&&tt(t.init)){let[e]=t.init.arguments;if(e!==void 0&&_e(e))return e.value}}}function $_(e){let t=Q_(e);return t!==void 0&&!t.includes(`node_modules`)&&(t.startsWith(`.`)||t.startsWith(`/`))}function ev(e,t){return e===!1?!1:e!==`internal`||$_(t)}function tv(e){return e.defs.length===1&&e.defs[0]?.type===`ClassName`}function nv(e){return function(t,n){return n.every(n=>{let r=e.get(n);return r===void 0||!r.has(t)})}}function rv(e){let{parent:t}=e;return M(t)&&t.property===e&&!t.computed||Ue(t)&&t.right===e}function iv(e,t){let{parent:n}=e,r;return M(n)&&n.property===e&&!n.computed?r=n.object:Ue(n)&&n.right===e&&(r=n.left),r===void 0||!A(r)?!1:E(t.getScope(e),r.name)?.defs[0]?.type===`ImportBinding`}function av(e,t,n,r){r({...F_(e.name,{samples:[t],total:1},n?`property`:`variable`),node:e})}function ov(e,t,n){return G_(t)&&!ev(n.checkDefaultAndNamespaceImports,e)||V_(t)&&!ev(n.checkShorthandImports,e)?!0:!n.checkShorthandProperties&&U_(t)}function sv(e){if(e.name!==`plr`)return;let[t]=e.defs;if(t?.type!==`Variable`||!k(t.node)||t.node.init===null)return;let{init:n}=t.node;if(M(n)&&!n.computed&&j(n.object)&&n.object.name===`Players`&&j(n.property)&&n.property.name===`LocalPlayer`)return`localPlayer`}function cv(e,t,n,r){let i=[],a=0,o=0;for(let s of e){let e=R_(s,t,n);if(e!==void 0){if(e!==s&&P_(s,r)){o+=1;continue}e.length>0&&(i[a++]=e)}}return{droppedDiscouraged:o,safeSamples:i}}function lv(e,t,n){let r=e.type===`Variable`&&k(e.node)&&e.node.init===null,i=e.type===`Parameter`&&t.scope.type===`function`&&t.scope.block.type===`ArrowFunctionExpression`,a=r||i;return(e,t)=>!(!n(e,t)||a&&e===`arguments`)}function uv(e,t,n,r,i,a,o){for(let e of i)a.has(e)||a.set(e,new Set),a.get(e)?.add(r);e({...t,fix(e){return Y_(n,r,e)},node:o})}function dv(e,t,n,r,i){let[a]=e.defs;if(a===void 0)return;let o=a.name;if(!j(o)||ov(a,o,t))return;let s=lv(a,e,r),c=sv(e),l=c===void 0?M_(e.name,t):{samples:[c],total:1};if(l.total===0||!l.samples)return;let{references:u}=e,d=[...u.map(e=>e.from),e.scope],{droppedDiscouraged:f,safeSamples:p}=cv(l.samples,d,s,t),m=p.length>0?p:l.samples,h=b(l.samples.length)&&l.samples.length===l.total?Math.max(0,l.total-f):l.total,g=e.name===`fn`&&h>1?m.map(e=>e===`function_`?`function`:e):m,_=F_(o.name,{samples:g,total:h},`variable`);if(h===1&&p.length===1&&q_(e)){let[t]=p;if(t!==void 0){uv(i,_,e,t,d,n,o);return}}i({..._,node:o})}function fv(e,t){if(!tv(e)){t(e);return}if(e.scope.type===`class`){let[n]=e.defs;if(n===void 0){t(e);return}let r=n.name;if(!j(r)){t(e);return}t(e)}}function pv(e,t){for(let n of I_(e))for(let e of n.variables)fv(e,t)}function mv(e,t,n,r){let i=X_(e),a=rv(e);a&&iv(e,r)||hv(e,i,a,t,n)||t.checkProperties&&i&&gv(e,t,n)}function hv(e,t,n,r,i){let a=k_(e.name,r.shorthandConfiguration);return a===void 0||!(t||n)?!1:(A_(e.name,r.shorthandConfiguration)||!r.checkShorthandProperties||n&&j_(e.name,a,r.allowPropertyAccess)||av(e,a.replaced,!0,i),!0)}function gv(e,t,n){let r=M_(e.name,t);if(r.total===0)return;let i=F_(e.name,r,`property`),a=_v(e,r.samples);if(a!==void 0){n({...i,fix(t){return t.replaceText(e,a)},node:e});return}n({...i,node:e})}function _v(e,t){if(t?.length!==1||!Z_(e))return;let[n]=t,{parent:r}=e;if(n!==void 0&&xe(r)&&_e(r.value)&&Xg(n))return n}const vv=t({create(e){let t=D_(e.options[0]),n=e.physicalFilename,r=new WeakMap,i=nv(r),{sourceCode:a}=e;function o(n){dv(n,t,r,i,e.report)}return{Identifier(n){!A(n)||n.name===`__proto__`||mv(n,t,e.report,a)},JSXOpeningElement({name:n}){if(!(t.checkVariables&&me(n)&&a_(n.name)))return;let r=M_(n.name,t);if(r.total===0)return;let i=F_(n.name,r,`variable`);e.report({...i,node:n})},"Program:exit"(r){if(t.checkFilenames&&n!==`<input>`&&n!==`<text>`){let i=Math.max(n.lastIndexOf(`/`),n.lastIndexOf(`\\`)),a=n.slice(i+1),o=a.lastIndexOf(`.`),s=o===-1?``:a.slice(o),c=M_(o===-1?a:a.slice(0,o),t);if(c.total>0&&c.samples){let t=c.samples.map(e=>`${e}${s}`);e.report({...F_(a,{samples:t,total:c.total},`filename`),node:r})}}t.checkVariables&&pv(a.getScope(r),o)}}},meta:{docs:{description:`Prevent abbreviations.`,recommended:!1},fixable:`code`,messages:{[Ig]:`The {{nameTypeText}} \`{{discouragedName}}\` should be named \`{{replacement}}\`. ${Rg}`,[Lg]:`Please rename the {{nameTypeText}} \`{{discouragedName}}\`. Suggested names are: {{replacementsText}}. ${Rg}`},schema:[{additionalProperties:!1,properties:{allowList:{additionalProperties:{type:`boolean`},type:`object`},allowPropertyAccess:{items:{type:`string`},type:`array`},checkDefaultAndNamespaceImports:{enum:[!1,!0,`internal`]},checkFilenames:{type:`boolean`},checkProperties:{type:`boolean`},checkShorthandImports:{enum:[!1,!0,`internal`]},checkShorthandProperties:{type:`boolean`},checkVariables:{type:`boolean`},extendDefaultAllowList:{type:`boolean`},extendDefaultReplacements:{type:`boolean`},ignore:{items:{oneOf:[{type:`object`},{type:`string`}]},type:`array`},ignoreShorthands:{items:{type:`string`},type:`array`},replacements:{additionalProperties:{oneOf:[{enum:[!1]},{additionalProperties:{type:`boolean`},type:`object`}]},type:`object`},shorthands:{additionalProperties:{type:`string`},type:`object`}},type:`object`}],type:`suggestion`}}),yv=/^use[A-Z0-9].*$/u;function bv(e){return yv.test(e)}function xv(e){if(e.id!==null)return e.id.name}function Sv(e){return e.id.type===`Identifier`?e.id.name:void 0}function Cv(e){let t=xv(e);return t!==void 0&&bv(t)}function wv({parent:e}){if(e.type!==`VariableDeclarator`)return!1;let t=Sv(e);return t!==void 0&&bv(t)}function Tv(e,t){let n=e.get(t);if(!(n===void 0||n.length===0))return n.at(-1)}function Ev(e){for(let t=e.defs.length-1;t>=0;--t){let n=e.defs[t];if(!(n?.node.type!==`VariableDeclarator`||n.node.init?.type!==`ArrayExpression`))return n.node.init}}function Dv(e){for(let t=e.defs.length-1;t>=0;--t){let n=e.defs[t];if(n?.node.type===`VariableDeclarator`&&n.node.init?.type===`ObjectExpression`)return!0}return!1}function Ov(e,t,n,r){let i=E(e.getScope(t),n);if(i!==void 0){let e=Ev(i);if(e!==void 0)return e}return Tv(r,n)}function kv(e,t,n){if(e.argument.type===`Identifier`){let r=Ov(t,e,e.argument.name,n);return r===void 0?1:Av(r,t,n)}return e.argument.type===`ArrayExpression`?Av(e.argument,t,n):1}function Av(e,t,n){let r=0;for(let i of e.elements){if(i===null){r+=1;continue}if(i.type===`SpreadElement`){r+=kv(i,t,n);continue}r+=1}return r}function jv(e,t){let n=E(e.getScope(t),t.name);return n!==void 0&&Dv(n)}function Mv(e){let t=Sv(e);if(!(t===void 0||e.init?.type!==`ArrayExpression`))return{init:e.init,name:t}}function Nv(e,t){let n=Mv(e);if(n===void 0)return;let{init:r,name:i}=n,a=t.get(i)??[];a.push(r),t.set(i,a)}function Pv(e,t){let n=Mv(e);if(n===void 0)return;let{name:r}=n,i=t.get(r);i===void 0||i.length===0||(i.pop(),i.length===0&&t.delete(r))}const Fv=t({create(e){let{sourceCode:t}=e,n=new Map,r=0;function i(e){Cv(e)&&(r+=1)}function a(e){Cv(e)&&--r}function o(e){wv(e)&&(r+=1)}function s(e){wv(e)&&--r}function c(t){e.report({data:{count:`2`},messageId:`tooManyReturnValues`,node:t})}function l(e){if(!(r===0||e.argument===null||e.argument.type===`ObjectExpression`)){if(e.argument.type===`Identifier`){if(jv(t,e.argument))return;let r=Ov(t,e,e.argument.name,n);if(r===void 0)return;Av(r,t,n)>2&&c(e);return}e.argument.type===`ArrayExpression`&&Av(e.argument,t,n)>2&&c(e)}}return{ArrowFunctionExpression:o,"ArrowFunctionExpression:exit":s,FunctionDeclaration:i,"FunctionDeclaration:exit":a,FunctionExpression:i,"FunctionExpression:exit":a,ReturnStatement:l,VariableDeclarator(e){Nv(e,n)},"VariableDeclarator:exit"(e){Pv(e,n)}}},meta:{docs:{description:`Restrict React hooks to object returns or short tuples.`},messages:{tooManyReturnValues:`Hook returns more than {{count}} values. Return an object with named properties instead.`},schema:[],type:`suggestion`}});function Iv(e){return e.endsWith(`Async`)}function Lv(e){let{parent:t}=e;if(t.type!==`ObjectExpression`)return!1;let{parent:n}=t;return n.type===`CallExpression`||n.type===`NewExpression`?n.arguments.includes(t):!1}const Rv=t({create(e){let t=e.options[0]?.except,n=t===void 0?new Set:new Set(t);function r(e){return Iv(e)||n.has(e)}function i(t){r(t.name)||e.report({messageId:`missingAsyncSuffix`,node:t})}return{FunctionDeclaration(e){!e.async||e.id===null||i(e.id)},MethodDefinition(e){!e.value.async||e.key.type!==`Identifier`||i(e.key)},Property(e){!e.method||e.value.type!==`FunctionExpression`||!e.value.async||e.key.type===`Identifier`&&(Lv(e)||i(e.key))},PropertyDefinition(e){e.value?.type!==`ArrowFunctionExpression`&&e.value?.type!==`FunctionExpression`||!e.value.async||e.key.type!==`Identifier`||i(e.key)},VariableDeclarator(e){e.id.type===`Identifier`&&(e.init?.type!==`ArrowFunctionExpression`&&e.init?.type!==`FunctionExpression`||e.init.async&&i(e.id))}}},meta:{docs:{description:`Require async function names to end with Async.`},messages:{missingAsyncSuffix:`Async functions must have names that end with Async.`},schema:[{additionalProperties:!1,properties:{except:{items:{type:`string`},type:`array`}},type:`object`}],type:`problem`}});function zv(e){if(!(x(e)&&`classes`in e&&x(e.classes)))return new Map;let{classes:t}=e,n=new Map;for(let[e,r]of Object.entries(t))y(r)&&n.set(e,r);return n}function Bv(e){return e?.type===`module`||e?.type===`global`}function Vv(e){if(e.type===`ImportDefaultSpecifier`)return e.local.name;if(e.type===`ImportSpecifier`){if(e.imported.type===`Identifier`)return e.imported.name;if(y(e.imported.value))return e.imported.value}}function Hv(e,t,n){if(e.callee.type===`Identifier`){let r=t.get(e.callee.name);if(r===void 0)return;let i=n.get(r);return i===void 0?void 0:{className:r,importSource:i}}if(e.callee.type===`MemberExpression`&&e.callee.property.type===`Identifier`){let t=e.callee.property.name,r=n.get(t);return r===void 0?void 0:{className:t,importSource:r}}}function Uv(e,t,n){if(!y(e.source.value))return;let r=e.source.value;for(let[i,a]of t)if(a===r)for(let t of e.specifiers)Vv(t)===i&&n.set(t.local.name,i)}const Wv=t({create(e){let{sourceCode:t}=e,n=zv(e.options[0]);if(n.size===0)return{};let r=new Map;return{ImportDeclaration(e){Uv(e,n,r)},NewExpression(i){let a=Hv(i,r,n);a!==void 0&&(Bv(t.getScope(i))||e.report({data:{className:a.className,importSource:a.importSource},messageId:`mustBeModuleLevel`,node:i}))}}},meta:{docs:{description:`Require configured classes to be instantiated at module level only.`},messages:{mustBeModuleLevel:`'{{className}}' from '{{importSource}}' must be instantiated at module level only.`},schema:[{additionalProperties:!1,properties:{classes:{additionalProperties:{type:`string`},type:`object`}},type:`object`}],type:`problem`}}),Gv=[{allowAsync:!1,name:`useEffect`},{allowAsync:!1,name:`useLayoutEffect`},{allowAsync:!1,name:`useInsertionEffect`}];function Kv(e){return x(e)&&y(e.name)&&typeof e.allowAsync==`boolean`}function qv(e){if(!x(e))return{environment:`roblox-ts`,hooks:Gv};let t=hn(e.environment)?e.environment:`roblox-ts`,n=e.hooks;if(!Array.isArray(n))return{environment:t,hooks:Gv};let r=[];for(let e of n)Kv(e)&&r.push(e);return r.length===0?{environment:t,hooks:Gv}:{environment:t,hooks:r}}function Jv(e){for(let t of e.defs){let{node:e}=t;if(e.type===`FunctionDeclaration`)return{isAsync:e.async,node:e,type:`function-declaration`};if(e.type===`VariableDeclarator`){if(e.init===null)continue;if(e.init.type===`ArrowFunctionExpression`)return{isAsync:e.init.async,node:e.init,type:`arrow`};if(e.init.type===`FunctionExpression`)return{isAsync:e.init.async,node:e.init,type:`function-expression`}}}}function Yv(e,t){let n=E(e.getScope(t),t.name);if(n===void 0)return!1;for(let e of n.defs){let{node:t}=e;if(t.type!==`VariableDeclarator`||t.init?.type!==`CallExpression`)continue;let n=L(t.init);if(n===`useCallback`||n===`useMemo`)return!0}return!1}const Xv=t({create(e){let{environment:t,hooks:n}=qv(e.options[0]),r=new Map(n.map(e=>[e.name,e.allowAsync])),i=new Set(r.keys()),a=t===`roblox-ts`;function o(e){let t=r.get(e);return typeof t==`boolean`&&t}function s(t,n,r){e.report({data:{hook:t},messageId:r,node:n})}function c(t,n,r){let i=E(e.sourceCode.getScope(r),r.name);if(i===void 0){Yv(e.sourceCode,r)&&s(t,n,`identifierReferencesCallback`);return}let a=Jv(i);if(a===void 0){Yv(e.sourceCode,r)&&s(t,n,`identifierReferencesCallback`);return}l(t,n,a)}function l(e,t,n){if(n.type===`arrow`){n.isAsync&&!o(e)?s(e,t,`identifierReferencesAsyncArrow`):n.isAsync||s(e,t,`identifierReferencesArrow`);return}if(n.type===`function-expression`){u(e,t,n.node);return}n.isAsync&&!o(e)&&s(e,t,`identifierReferencesAsyncFunction`)}function u(e,t,n){n.id===null?s(e,t,`anonymousFunction`):a&&s(e,t,`functionExpression`)}function d(e,t,n){let r=n.id!==null;r&&n.async?s(e,t,`asyncFunctionExpression`):r&&a?s(e,t,`functionExpression`):!r&&n.async?s(e,t,`asyncAnonymousFunction`):r||s(e,t,`anonymousFunction`)}return{CallExpression(e){let t=L(e);if(t===void 0||!i.has(t))return;let[n]=e.arguments;if(n!==void 0){if(n.type===`Identifier`){c(t,e,n);return}if(n.type===`ArrowFunctionExpression`){n.async?s(t,e,`asyncArrowFunction`):s(t,e,`arrowFunction`);return}n.type===`FunctionExpression`&&d(t,e,n)}}}},meta:{docs:{description:`Enforce named effect functions for better debuggability. Prevents inline arrow functions in useEffect and similar hooks.`,recommended:!1},messages:{anonymousFunction:`Anonymous function passed to {{hook}}. debug.info returns empty string for anonymous functions, making stack traces useless for debugging. Extract to: function effectName() { ... } then pass effectName.`,arrowFunction:`Arrow function passed to {{hook}}. Arrow functions have no debug name and create new instances each render. Extract to: function effectName() { ... } then pass effectName.`,asyncAnonymousFunction:`Async anonymous function in {{hook}}. Two issues: (1) no debug name makes stack traces useless, (2) async effects require cancellation logic for unmount. Extract to: async function effectName() { ... } with cleanup.`,asyncArrowFunction:`Async arrow function in {{hook}}. Two issues: (1) arrow functions have no debug name, (2) async effects require cancellation logic. Extract to: async function effectName() { ... } with cleanup.`,asyncFunctionDeclaration:`Async function declaration passed to {{hook}}. Async effects require cancellation logic to handle component unmount. Implement cleanup or set allowAsync: true if cancellation is handled.`,asyncFunctionExpression:`Async function expression in {{hook}}. Async effects require cancellation logic for unmount. Extract to a named async function declaration with cleanup, then pass the reference.`,functionExpression:`Function expression passed to {{hook}}. Function expressions create new instances each render, breaking referential equality. Extract to: function effectName() { ... } at module or component top-level.`,identifierReferencesArrow:`{{hook}} receives identifier pointing to arrow function. Arrow functions have no debug name and lack referential stability. Convert to: function effectName() { ... } then pass effectName.`,identifierReferencesAsyncArrow:`{{hook}} receives identifier pointing to async arrow function. Two issues: (1) no debug name, (2) async effects require cancellation logic. Convert to: async function effectName() { ... } with cleanup.`,identifierReferencesAsyncFunction:`{{hook}} receives identifier pointing to async function. Async effects require cancellation logic for unmount. Implement cleanup or set allowAsync: true if cancellation is handled.`,identifierReferencesCallback:`{{hook}} receives identifier from useCallback/useMemo. These hooks return new references when dependencies change, causing unexpected effect re-runs. Use a stable function declaration: function effectName() { ... }`},schema:[{additionalProperties:!1,properties:{environment:{default:`roblox-ts`,description:`Environment mode: 'roblox-ts' only allows identifiers, 'standard' allows both identifiers and named function expressions`,enum:[`roblox-ts`,`standard`],type:`string`},hooks:{description:`Array of hook configuration objects with name and allowAsync settings`,items:{additionalProperties:!1,properties:{allowAsync:{description:`Whether async functions are allowed for this hook`,type:`boolean`},name:{description:`Hook name to check`,type:`string`}},required:[`name`,`allowAsync`],type:`object`},type:`array`}},type:`object`}],type:`problem`}});h({"alternatives?":h(`string[]`).readonly().or(`undefined`),closer:h(`string[]`).readonly().or(`string`),opener:`string`,"openerAlternatives?":h(`string[]`).readonly().or(`undefined`),"platform?":h(`"roblox" | undefined`),"requireSync?":`boolean | undefined`,"yieldingFunctions?":h(`string[]`).readonly().or(`undefined`)}).readonly();const Zv=new Set([`DoWhileStatement`,`ForInStatement`,`ForOfStatement`,`ForStatement`,`WhileStatement`]),Qv=[`task.wait`,`wait`,`*.WaitForChild`,`*.*Async`];function $v(e,t){for(let n of t){let t=!1;for(let r of n)if(r.index===e.index){t=!0;break}if(!t)return!1}return!0}function ey(e,t){return t.filter(t=>t.some(t=>t.index===e.index))}function ty({callee:e}){if(e.type===`Identifier`)return e.name;if(e.type===`MemberExpression`){let t=e.object.type===`Identifier`?e.object.name:void 0,n=e.property.type===`Identifier`?e.property.name:void 0;if(t!==void 0&&n!==void 0)return`${t}.${n}`}}function Q(e){let t=[];if(S(e.closer)?t.push(...e.closer):y(e.closer)&&t.push(e.closer),e.alternatives)for(let n of e.alternatives)t.push(n);return t}function ny(e){let t=[e.opener];return e.openerAlternatives&&t.push(...e.openerAlternatives),t}function ry(e){return e.length===0?`configured opener`:e.length===1?e[0]??`configured opener`:e.join(`' or '`)}function iy(e){return e?Zv.has(e.type):!1}function ay(e){return e?.type===`SwitchStatement`}function oy(e,t){if(e.type!==`Identifier`)return;let n=t;for(;n;){if(n.type===`LabeledStatement`&&n.label.name===e.name)return n.body;n=n.parent??void 0}}function sy(e,t){let n=e.label?oy(e.label,e.parent):void 0;if(n)return iy(n)?n:void 0;let r=e.parent;for(;r;){if(iy(r))return r;if(t&&ay(r))return;r=r.parent??void 0}}function cy(e){return sy(e,!0)}function ly(e){return sy(e,!1)}function uy(e){return{...e,loopAncestors:[...e.loopAncestors]}}const dy=t({create(e){let[t]=e.options,n={allowConditionalClosers:t?.allowConditionalClosers??!1,allowMultipleOpeners:t?.allowMultipleOpeners??!0,maxNestingDepth:t?.maxNestingDepth??1/0,pairs:t?.pairs??[]},r=n.pairs.length===0?[{closer:`debug.profileend`,opener:`debug.profilebegin`,platform:`roblox`,requireSync:!0,yieldingFunctions:[...Qv]}]:n.pairs,i={...n.allowConditionalClosers===void 0?{}:{allowConditionalClosers:n.allowConditionalClosers},...n.allowMultipleOpeners===void 0?{}:{allowMultipleOpeners:n.allowMultipleOpeners},...n.maxNestingDepth===void 0?{}:{maxNestingDepth:n.maxNestingDepth},pairs:r},a=[],o=[],s=0,c=[],l=!1,u=!1,d=[],f=new Map,p=new Map,m=new Map;function h(e){if(m.has(e))return m.get(e)??[];let t=[],n=0;for(let r of i.pairs){if(!ny(r).includes(e))continue;let i=Q(r);for(let e of i)t.includes(e)||(t[n++]=e)}return m.set(e,t),t}function g(){return d.length>0?d.at(-1):{asyncContext:!1,currentFunction:void 0,hasEarlyExit:!1,inCatch:!1,inConditional:!1,inFinally:!1,inLoop:!1,inTry:!1}}function _(e){let t=g();d.push({...t,...e})}function v(){d.pop()}function ee(e){let t=d.at(-1);t&&(d[d.length-1]={...t,...e})}function te(){return a.map(uy)}function y(e){f.set(e,te())}function b(e,t){return i.pairs.find(n=>(t?ny(n):Q(n)).includes(e))}function x(e,t){return t.platform===`roblox`&&(t.yieldingFunctions??Qv).some(t=>{if(t.startsWith(`*.`)){let n=t.slice(2);return e.endsWith(`.${n}`)}return e===t})}function ne(e){let t=Q(e);return t.length===1?t[0]??`closer`:t.join(`' or '`)}function S(t,n){e.report({data:{closer:ne(t.config),opener:t.opener,paths:n},messageId:`unpairedOpener`,node:t.node})}function C(e){a.length=0;for(let t of e)a.push({...t})}function re(e){let t=p.get(e)??[];t.push(te()),p.set(e,t)}function w(e,t,n){for(let r of e){let e=ey(r,t);e.length<=0||e.length>=t.length||i.allowConditionalClosers===!1&&S(r,n)}}function T(e){e.type!==`FunctionDeclaration`&&e.type!==`FunctionExpression`&&e.type!==`ArrowFunctionExpression`||(c.push([...a]),a.length=0,l=!1,u=!1,_({asyncContext:e.async,currentFunction:e,hasEarlyExit:!1,inCatch:!1,inConditional:!1,inFinally:!1,inLoop:!1,inTry:!1}))}function E(){if(a.length>0)for(let e of a)S(e,`function exit`);let e=c.pop();e?(a.length=0,a.push(...e)):a.length=0,v()}function ie(e){e.type===`IfStatement`&&(_({inConditional:!0}),y(e))}function ae(e){if(e.type!==`IfStatement`)return;v();let t=f.get(e),n=p.get(e);if(t&&n&&n.length>0){let r=e.alternate!==null;for(let e of n)for(let n of e)t.some(({index:e})=>e===n.index)||S(n,`conditional branch`);if(r){w(t,n,`not all execution paths`);let e=t.filter(e=>$v(e,n));a.length=0,a.push(...e)}else C(t)}f.delete(e),p.delete(e)}function oe(e){let{parent:t}=e;if(t?.type===`IfStatement`){re(t);let e=f.get(t);if(!e)return;C(e)}}function D(e){let{parent:t}=e;t?.type===`IfStatement`&&re(t)}function se(e){e.type===`TryStatement`&&y(e)}function O(t){if(t.type!==`TryStatement`)return;let n=f.get(t),r=p.get(t);if(t.finalizer){f.delete(t),p.delete(t);return}if(n&&r&&r.length>0){for(let t of n){let n=r.filter(e=>e.some(e=>e.index===t.index));if(n.length>0&&n.length<r.length&&i.allowConditionalClosers===!1){let n=Q(t.config),r=n.length===1?n[0]??`closer`:n.join(`' or '`);e.report({data:{closer:r,opener:t.opener,paths:`not all execution paths`},messageId:`unpairedOpener`,node:t.node})}}let t=n.filter(e=>$v(e,r));a.length=0,a.push(...t)}f.delete(t),p.delete(t)}function k(){_({inTry:!0})}function ce(e,t){if(e.type!==t)return;let{parent:n}=e;if(n.type===`TryStatement`){re(n);let e=f.get(n);e&&C(e)}v()}function le(e){ce(e,`BlockStatement`)}function ue(){_({inCatch:!0})}function de(e){ce(e,`CatchClause`)}function fe(){_({inFinally:!0})}function pe(e){e.type===`SwitchStatement`&&(_({inConditional:!0}),y(e))}function A(e){if(e.type!==`SwitchStatement`)return;v();let t=f.get(e),n=p.get(e);if(t&&n&&n.length>0)if(e.cases.some(e=>e.test===null)&&n.length===e.cases.length){w(t,n,`not all execution paths`);let e=t.filter(e=>$v(e,n));a.length=0,a.push(...e)}else C(t);f.delete(e),p.delete(e)}function j(e){if(e.type!==`SwitchCase`)return;let{parent:t}=e;if(t.type===`SwitchStatement`){re(t);let e=f.get(t);if(!e)return;C(e)}}function me(e){iy(e)&&(o.push(e),_({inLoop:!0}))}function he(){o.length>0&&o.pop(),v()}function ge(t){if(ee({hasEarlyExit:!0}),!(g().inFinally||a.length===0))for(let{config:n,node:r,opener:i}of a){let a=Q(n),o=a.length===1?a[0]??`closer`:a.join(`' or '`),s=t.type===`ReturnStatement`?`return`:`throw`;e.report({data:{closer:o,opener:i,paths:`${s} at line ${t.loc.start.line}`},messageId:`unpairedOpener`,node:r})}}function _e(t){if(t.type!==`BreakStatement`&&t.type!==`ContinueStatement`||a.length===0)return;let n=t.type===`ContinueStatement`?ly(t):cy(t);if(n)for(let{config:r,loopAncestors:i,node:o,opener:s}of a){if(!i.some(e=>e===n))continue;let a=Q(r),c=a.length===1?a[0]??`closer`:a.join(`' or '`),l=t.type===`BreakStatement`?`break`:`continue`,u=t.loc.start.line;e.report({data:{closer:c,opener:s,paths:`${l} at line ${u}`},messageId:`unpairedOpener`,node:o})}}function ve(t,n,r){let c=i.maxNestingDepth??0;c>0&&a.length>=c&&e.report({data:{max:String(c)},messageId:`maxNestingExceeded`,node:t}),i.allowMultipleOpeners===!1&&a.length>0&&a.at(-1)?.opener===n&&e.report({data:{opener:n},messageId:`multipleOpeners`,node:t});let l={config:r,index:s++,location:t.loc,loopAncestors:[...o],node:t,opener:n};a.push(l)}function ye(t,n){let r=a.findLastIndex(e=>Q(e.config).includes(n));if(r===-1){if(l&&!u){u=!0;return}if(a.length===0){e.report({data:{closer:n},messageId:`unpairedCloser`,node:t});return}let r=ry(h(a.at(-1).opener));e.report({data:{closer:n,expected:r},messageId:`unexpectedCloser`,node:t});return}let i=a[r];if(i){if(r!==a.length-1){let r=a.at(-1);r&&e.report({data:{actual:r.opener,closer:n,expected:i.opener},messageId:`wrongOrder`,node:t})}a.splice(r,1)}}function be(t,n,r){let i=Q(r.config),a=i.length===1?i[0]??`closer`:i.join(`' or '`);e.report({data:{closer:a,yieldingFunction:n},messageId:`robloxYieldViolation`,node:t})}function xe(t){if(!(t.type!==`AwaitExpression`&&t.type!==`YieldExpression`&&t.type!==`ForOfStatement`))for(let{config:n,opener:r}of a){if(n.requireSync!==!0)continue;let i=Q(n),a=i.length===1?i[0]??`closer`:i.join(`' or '`),o=t.type===`YieldExpression`?`yield`:`await`;e.report({data:{asyncType:o,closer:a,opener:r},messageId:`asyncViolation`,node:t})}}function M(e){if(e.type!==`CallExpression`)return;let t=ty(e);if(t===void 0||t===``)return;let n=b(t,!0);if(n){ve(e,t,n);return}if(b(t,!1)){ye(e,t);return}for(let n of a)if(x(t,n.config)){be(e,t,n),a.length=0,l=!0;return}}return{ArrowFunctionExpression:T,"ArrowFunctionExpression:exit":E,AwaitExpression:xe,BreakStatement:_e,CallExpression:M,CatchClause:ue,"CatchClause:exit":de,ContinueStatement:_e,DoWhileStatement:me,"DoWhileStatement:exit":he,ForInStatement:me,"ForInStatement:exit":he,ForOfStatement:e=>{e.await&&xe(e),me(e)},"ForOfStatement:exit":he,ForStatement:me,"ForStatement:exit":he,FunctionDeclaration:T,"FunctionDeclaration:exit":E,FunctionExpression:T,"FunctionExpression:exit":E,IfStatement:ie,"IfStatement > .alternate:exit":D,"IfStatement > .consequent:exit":oe,"IfStatement:exit":ae,ReturnStatement:ge,"SwitchCase:exit":j,SwitchStatement:pe,"SwitchStatement:exit":A,ThrowStatement:ge,TryStatement:se,"TryStatement > .block":k,"TryStatement > .block:exit":le,"TryStatement > .finalizer":fe,"TryStatement > .finalizer:exit":v,"TryStatement:exit":O,WhileStatement:me,"WhileStatement:exit":he,YieldExpression:xe}},meta:{docs:{description:`Enforces balanced opener/closer function calls across all execution paths`,recommended:!1},fixable:`code`,messages:{asyncViolation:`Cannot use {{asyncType}} between '{{opener}}' and '{{closer}}' (requireSync: true)`,conditionalOpener:`Conditional opener '{{opener}}' at {{location}} may not have matching closer on all paths`,maxNestingExceeded:`Maximum nesting depth of {{max}} exceeded for paired calls`,multipleOpeners:`Multiple consecutive calls to '{{opener}}' without matching closers (allowMultipleOpeners: false)`,robloxYieldViolation:`Yielding function '{{yieldingFunction}}' auto-closes all profiles - subsequent '{{closer}}' will error`,unexpectedCloser:`Unexpected call to '{{closer}}' - expected one of: {{expected}}`,unpairedCloser:`Unexpected call to '{{closer}}' - no matching opener on stack`,unpairedOpener:`Unpaired call to '{{opener}}' - missing '{{closer}}' on {{paths}}`,wrongOrder:`Closer '{{closer}}' called out of order - expected to close '{{expected}}' but '{{actual}}' is still open`},schema:[{additionalProperties:!1,properties:{allowConditionalClosers:{default:!1,type:`boolean`},allowMultipleOpeners:{default:!0,type:`boolean`},maxNestingDepth:{default:0,minimum:0,type:`number`},pairs:{items:{additionalProperties:!1,properties:{alternatives:{items:{minLength:1,type:`string`},type:`array`},closer:{oneOf:[{minLength:1,type:`string`},{items:{minLength:1,type:`string`},minItems:1,type:`array`}]},opener:{minLength:1,type:`string`},openerAlternatives:{items:{minLength:1,type:`string`},type:`array`},platform:{enum:[`roblox`],type:`string`},requireSync:{default:!1,type:`boolean`},yieldingFunctions:{items:{minLength:1,type:`string`},type:`array`}},required:[`opener`,`closer`],type:`object`},minItems:1,type:`array`}},required:[`pairs`],type:`object`}],type:`problem`}}),fy={allowRootKeys:!1,ignoreCallExpressions:[`ReactTree.mount`,`CreateReactStory`,`createReactStory`,`createPlatformStory`],iterationMethods:[`map`,`filter`,`forEach`,`flatMap`,`reduce`,`reduceRight`,`some`,`every`,`find`,`findIndex`],memoizationHooks:[`useCallback`,`useMemo`]},py=new Set([`ChainExpression`,`ParenthesizedExpression`,`TSAsExpression`,`TSInstantiationExpression`,`TSNonNullExpression`,`TSSatisfiesExpression`,`TSTypeAssertion`]),my=new Set([...py,`AwaitExpression`,`ConditionalExpression`,`LogicalExpression`,`SequenceExpression`,`SpreadElement`]),hy={iteration:!1,memoization:!1},gy=new Set([`ConditionalExpression`,`LogicalExpression`]),_y=new Set([`BlockStatement`,`CatchClause`,`DoWhileStatement`,`ForInStatement`,`ForOfStatement`,`ForStatement`,`IfStatement`,`LabeledStatement`,`SwitchCase`,`SwitchStatement`,`TryStatement`,`WhileStatement`,`WithStatement`]);function $(e){return e.parent??void 0}function vy(e){let t=e;for(;t!==void 0&&py.has(t.type);)t=$(t);return t}function yy(e){let t=$(e);for(;t!==void 0;){if(N(t))return t;t=$(t)}}function by(e,t,n){let{callee:r}=e;if(r.type===`Identifier`)return{iteration:t.has(r.name),memoization:n.has(r.name)};if(r.type===`MemberExpression`&&r.property.type===`Identifier`){let{name:i}=r.property,a={iteration:t.has(i),memoization:n.has(i)};return i===`from`&&r.object.type===`Identifier`&&r.object.name===`Array`&&e.arguments.length>=2||i===`call`&&r.object.type===`MemberExpression`&&r.object.property.type===`Identifier`&&t.has(r.object.property.name)?{...a,iteration:!0}:a}return hy}function xy(e){let t=e,n=$(e);for(;n!==void 0;){if(n.type===`CallExpression`){for(let e of n.arguments)if(e===t||e.type===`SpreadElement`&&e.argument===t)return n;return}if(my.has(n.type)){t=n,n=$(n);continue}break}}function Sy(e,t){if(t.type===`FunctionDeclaration`){let n=e.getDeclaredVariables(t);return n.length>0?n[0]:void 0}let n=$(t);if(n!==void 0&&(n.type===`VariableDeclarator`||n.type===`AssignmentExpression`)){let t=e.getDeclaredVariables(n);if(t.length>0)return t[0]}}function Cy(e,t){e.iteration||=t.iteration,e.memoization||=t.memoization}function wy(e,t,n){if(e.isWrite())return hy;let r=xy(e.identifier);return r===void 0||fo(r)?hy:by(r,t,n)}function Ty(e,t,n,r){let i=xy(t);if(i!==void 0)return fo(i)?hy:by(i,n,r);let a=Sy(e,t);if(a===void 0)return hy;let o={iteration:!1,memoization:!1};for(let e of a.references)if(Cy(o,wy(e,n,r)),o.iteration&&o.memoization)return o;return o}function Ey(e){let t=Dy(e);return t===void 0?!1:t.type===`ReturnStatement`?ky(t):t.type===`ArrowFunctionExpression`}function Dy(e){let t=Oy(vy($(e)));for(;t!==void 0&&gy.has(t.type);)t=vy($(t));return Oy(t)}function Oy(e){return e?.type===`JSXExpressionContainer`?vy($(e)):e}function ky(e){let t=vy($(e));for(;t!==void 0&&_y.has(t.type);)t=vy($(t));return t!==void 0&&N(t)}function Ay(e){if(!Ey(e))return!1;let t=yy(e);if(t===void 0)return!1;let n=vy($(t));return n?.type!==`CallExpression`||fo(n)}function jy(e,t){let n=$(e);if(n===void 0||n.type===`JSXExpressionContainer`&&(n=$(n),n===void 0))return!1;for(let e=0;e<20&&n!==void 0;e+=1){if(n.type===`CallExpression`){let{callee:e}=n;return e.type===`Identifier`?t.includes(e.name):e.type===`MemberExpression`&&e.object.type===`Identifier`&&e.property.type===`Identifier`&&t.includes(`${e.object.name}.${e.property.name}`)}n=$(n)}return!1}function My(e){return e.toLowerCase().endsWith(`children`)}function Ny(e){let t=$(e);if(t===void 0)return!1;for(;t!==void 0&&(t.type===`ConditionalExpression`||t.type===`LogicalExpression`);)t=$(t);if(t===void 0||t.type===`JSXExpressionContainer`&&(t=$(t),t===void 0)||t.type!==`JSXAttribute`)return!1;let n=po(t);return n===void 0||!My(n)}function Py(e){let t=e,n=$(e);for(;n!==void 0&&py.has(n.type);)t=n,n=$(n);return n===void 0?!1:n.type===`VariableDeclarator`?n.init===t:n.type===`AssignmentExpression`&&n.right===t}function Fy(e,t){let n=$(e);if(n===void 0)return!1;let r=!1;for(;n!==void 0&&(n.type===t||py.has(n.type));)n.type===t&&(r=!0),n=$(n);if(!r||n?.type!==`JSXExpressionContainer`)return!1;let i=$(n);return i===void 0?!1:i.type===`JSXElement`||i.type===`JSXFragment`}function Iy(e){return Fy(e,`ConditionalExpression`)}function Ly(e){return Fy(e,`LogicalExpression`)}const Ry=t({create(e){let[t]=e.options,n={allowRootKeys:fy.allowRootKeys,ignoreCallExpressions:fy.ignoreCallExpressions,iterationMethods:fy.iterationMethods,memoizationHooks:fy.memoizationHooks,...t},r=new Set(n.iterationMethods),i=new Set(n.memoizationHooks);function a(t){let a=yy(t),o=a===void 0?hy:Ty(e.sourceCode,a,r,i),s=o.iteration||o.memoization;if(Ay(t)&&!s){!n.allowRootKeys&&t.type===`JSXElement`&&mo(t,`key`)&&e.report({messageId:`rootComponentWithKey`,node:t});return}if(!jy(t,n.ignoreCallExpressions)&&!(Py(t)||Ny(t)||Iy(t))&&!(t.type===`JSXFragment`&&Ly(t))&&!(t.type===`JSXFragment`&&o.memoization&&!o.iteration&&Ey(t))){if(t.type===`JSXFragment`){e.report({messageId:`missingKey`,node:t});return}mo(t,`key`)||e.report({messageId:`missingKey`,node:t})}}return{JSXElement:a,JSXFragment:a}},meta:{docs:{description:`Require keys on React components when used in lists or iteration.`},messages:{missingKey:"JSX element in list/callback lacks key prop. React Luau warns about missing keys in _G.__DEV__ mode. Add a unique `key` prop using a stable identifier (not array index).",rootComponentWithKey:"Root return has unnecessary key prop. The key gets overwritten by the parent anyway. Remove the `key` prop."},schema:[{additionalProperties:!1,properties:{allowRootKeys:{default:!1,description:`Allow key props on root component returns`,type:`boolean`},ignoreCallExpressions:{default:[`ReactTree.mount`],description:`Function calls where JSX arguments don't need keys`,items:{type:`string`},type:`array`},iterationMethods:{default:fy.iterationMethods,description:`Array method names that indicate iteration contexts where keys are required`,items:{type:`string`},type:`array`},memoizationHooks:{default:[`useCallback`,`useMemo`],description:`Hook names that indicate memoization contexts where keys are required`,items:{type:`string`},type:`array`}},type:`object`}],type:`problem`}});function zy(e){if(e.id.type===`Identifier`)return e.id.name}function By(e,t,n){return de(e,t,n,`memo`)}function Vy(e,t,n){return e.callee.type===`Identifier`?t.has(e.callee.name):e.callee.type!==`MemberExpression`||e.callee.property.type!==`Identifier`||e.callee.property.name!==`createContext`||e.callee.object.type!==`Identifier`?!1:n.has(e.callee.object.name)}function Hy(e){let t=e;for(;t!==null;){if(t.type===`ExportNamedDeclaration`||t.type===`ExportDefaultDeclaration`)return!0;t=t.parent}return!1}function Uy(e){return e.parent.type===`VariableDeclaration`?e.parent.parent.type===`ExportNamedDeclaration`||e.parent.parent.type===`ExportDefaultDeclaration`:!1}function Wy(e,t,n){for(let r of e.getDeclaredVariables(t))if(r.name===n){for(let{identifier:e}of r.references)if(Hy(e))return!0;return!1}return!1}function Gy(e,t,n,r){return r.has(t)||Uy(n)?!0:Wy(e,n,t)}function Ky(e,t,n){e.report({data:{variableName:n},messageId:t.kind===`context`?`missingContextDisplayName`:`missingMemoDisplayName`,node:t.node})}const qy=t({create(e){let t=yn(e.options[0]),n=new Set,r=new Set,i=new Set,a=new Map,o=new Set;return{'AssignmentExpression[left.type="MemberExpression"]'(e){let{left:t}=e;if(t.type!==`MemberExpression`||t.property.type!==`Identifier`||t.property.name!==`displayName`||t.object.type!==`Identifier`)return;let n=a.get(t.object.name);n!==void 0&&(n.hasDisplayName=!0)},ExportDefaultDeclaration(t){if(t.declaration.type===`CallExpression`){if(By(t.declaration,n,i)){e.report({messageId:`directMemoExport`,node:t});return}Vy(t.declaration,r,i)&&e.report({messageId:`directContextExport`,node:t});return}t.declaration.type===`Identifier`&&o.add(t.declaration.name)},ExportNamedDeclaration(e){for(let t of e.specifiers)t.exported.type!==`Identifier`||t.exported.name!=="default"||t.local.type!==`Identifier`||o.add(t.local.name)},ImportDeclaration(e){if(bn(e,t))for(let t of e.specifiers){if(t.type===`ImportSpecifier`){let e=pe(t);e===`memo`&&n.add(t.local.name),e===`createContext`&&r.add(t.local.name);continue}i.add(t.local.name)}},"Program:exit"(){for(let[t,n]of a)n.hasDisplayName||Gy(e.sourceCode,t,n.node,o)&&Ky(e,n,t)},VariableDeclarator(e){if(e.init?.type!==`CallExpression`)return;let t=zy(e);if(t!==void 0){if(By(e.init,n,i)){a.set(t,{hasDisplayName:!1,kind:`memo`,node:e});return}Vy(e.init,r,i)&&a.set(t,{hasDisplayName:!1,kind:`context`,node:e})}}}},meta:{docs:{description:`Require displayName on exported memo components and contexts.`},messages:{directContextExport:`Directly exporting createContext() result prevents setting displayName.`,directMemoExport:`Directly exporting memo() result prevents setting displayName.`,missingContextDisplayName:`Context '{{variableName}}' must have a displayName assigned.`,missingMemoDisplayName:`Memo component '{{variableName}}' must have a displayName assigned.`},schema:[{additionalProperties:!1,properties:{environment:mn},type:`object`}],type:`problem`}});function Jy(e){return x(e)&&e.metric===`statements`?`statements`:`lines`}function Yy(e,t){let n=e.consequent.length;if(n===0)return!1;let[r]=e.consequent;if(r===void 0||n===1&&r.type===`BlockStatement`)return!1;if(t===`statements`)return n>1;let i=e.consequent[n-1];return i!==void 0&&r.loc.start.line!==i.loc.end.line}const Xy=t({create(e){let t=Jy(e.options[0]);return{SwitchCase(n){if(!Yy(n,t))return;let[r]=n.consequent,i=n.consequent.at(-1);r===void 0||i===void 0||e.report({fix(e){return[e.insertTextBefore(r,`{
|
|
11
11
|
`),e.insertTextAfter(i,`
|
|
12
12
|
}`)]},messageId:`wrapCaseBody`,node:r})}}},meta:{docs:{description:`Require braces around switch case bodies that span multiple lines.`},fixable:`code`,messages:{wrapCaseBody:`Wrap this switch case body in braces.`},schema:[{additionalProperties:!1,properties:{metric:{default:`lines`,enum:[`lines`,`statements`],type:`string`}},type:`object`}],type:`problem`}});function Zy(e){let t=e.parent;for(;t!==null;){switch(t.type){case`FunctionDeclaration`:return t.id?.name;case`FunctionExpression`:return t.id?t.id.name:Qy(t);case`ArrowFunctionExpression`:return Qy(t);default:break}t=t.parent}}function Qy({parent:e}){if(e?.type===`VariableDeclarator`&&e.id.type===`Identifier`)return e.id.name;if(e?.type===`PropertyDefinition`||e?.type===`MethodDefinition`){if(e.key.type===`PrivateIdentifier`)return`#${e.key.name}`;if(e.key.type===`Identifier`)return e.key.name}}function $y(e){let t=e.parent;for(;t!==null;){switch(t.type){case`FunctionDeclaration`:return!1;case`FunctionExpression`:return(t.parent?.type===`MethodDefinition`||t.parent?.type===`PropertyDefinition`)&&t.parent.parent?.type===`ClassBody`;case`ArrowFunctionExpression`:return t.parent?.type===`PropertyDefinition`&&t.parent.parent?.type===`ClassBody`;default:break}t=t.parent}return!1}function eb(e,t,n){try{let r=e.getScope(t),i=new Set(r.variables.map(e=>e.name)),a=t.parent;for(;a!==null;)a.type===`CatchClause`&&a.param?.type===`Identifier`&&i.add(a.param.name),a=a.parent;if(!i.has(n))return n;for(let e=2;e<100;e+=1){let t=`${n}${e}`;if(!i.has(t))return t}}catch{}return n}function tb(e,t){try{let n=e.getScope(t);for(;n!==null;){let e=n.set.get(t.name);if(e!==void 0){let t=e.defs.find(e=>e.type===`ImportBinding`);return t?.parent?.type===`ImportDeclaration`?t.parent.source.value:void 0}n=n.upper}}catch{}}function nb(e,t){try{let n=e.getScope(t);for(;n!==null;){if(n.set.has(t.name))return!0;n=n.upper}}catch{}return!1}function rb(e,t){return y(e)?t===e:(Array.isArray(e.name)?e.name:[e.name]).includes(t)}function ib(e,t,n,r){if(!rb(r,n.name))return!1;if(y(r))return!0;switch(r.from){case void 0:return!0;case`package`:return tb(e,n)===r.package;case`file`:return nb(e,n)&&tb(e,n)===void 0?r.path===void 0?!0:t===`<input>`||t===`<text>`?!1:t.endsWith(r.path):!1;case`library`:return e.isGlobalReference(n);default:return!1}}function ab(e,t,n,r){return r.some(r=>ib(e,t,n,r))}const ob=t({create(e){let{sourceCode:t}=e,n=e.options[0]?.allow??[],r=e.physicalFilename??`<input>`;return{ThrowStatement(i){let{argument:a}=i;if(a.type!==`NewExpression`)return;let{callee:o}=a;if(o.type!==`Identifier`||!o.name.endsWith(`Error`)||ab(t,r,o,n))return;let s=Zy(i);if(s===void 0)return;let c=$y(i)?`this.${s}`:s;e.report({fix(e){let n=eb(t,i,`error`),r=[`const ${n} = ${t.getText(a)};`,`Error.captureStackTrace(${n}, ${c});`,`throw ${n};`].join(`
|
|
13
13
|
`);return i.parent?.type===`BlockStatement`?e.replaceText(i,r):e.replaceText(i,`{\n${r}\n}`)},messageId:`missingCaptureStackTrace`,node:i})}}},meta:{docs:{description:`Require 'Error.captureStackTrace' before throwing errors to produce accurate stack traces.`,recommended:!1},fixable:`code`,messages:{missingCaptureStackTrace:`Call 'Error.captureStackTrace' on this error before throwing it so the stack trace points to the throw site.`},schema:[{additionalProperties:!1,properties:{allow:{description:`Error classes that do not need Error.captureStackTrace`,items:{anyOf:[{type:`string`},{additionalProperties:!1,properties:{from:{description:`Where the error class is declared`,enum:[`file`,`library`,`package`],type:`string`},name:{anyOf:[{type:`string`},{items:{type:`string`},type:`array`}],description:`Name(s) of the error class`},package:{description:`Package the error class is imported from (required when from is 'package')`,type:`string`},path:{description:`Optional file path filter for file specifiers (matched against the end of the file path)`,type:`string`}},required:[`name`],type:`object`}]},type:`array`}},type:`object`}],type:`suggestion`}});function sb(e){return e.includes(`u`)||e.includes(`v`)}function cb(e,t){return e.type===`Identifier`&&e.name===t}function lb(e){if(!(e.type!==`Literal`||!y(e.value)))return e.value}function ub(e){return e.type!==`SpreadElement`}const db=t({createOnce(e){return{CallExpression(t){if(!cb(t.callee,`regex`))return;if(t.arguments.length<2){e.report({messageId:`requireUnicodeFlag`,node:t});return}let[,n]=t.arguments;if(n===void 0||!ub(n))return;let r=lb(n);r!==void 0&&(sb(r)||e.report({messageId:`requireUnicodeFlag`,node:t}))}}},meta:{docs:{description:`Require the 'u' or 'v' unicode flag on arktype regex() calls.`},messages:{requireUnicodeFlag:`Missing the 'u' or 'v' unicode flag on this regex() call. Use the unicode flag to avoid silently creating invalid regex patterns.`},schema:[],type:`problem`}});function fb(e,t){t.type===`ObjectExpression`&&t.properties.length===0&&e.report({messageId:`emptyObjectDefault`,node:t}),t.type===`ArrayExpression`&&t.elements.length===0&&e.report({messageId:`emptyArrayDefault`,node:t})}function pb(e,t){for(let n of t){if(n.type===`AssignmentPattern`&&n.left.type===`ObjectPattern`){mb(e,n.left),D(n.right)&&fb(e,n.right);continue}n.type===`ObjectPattern`&&mb(e,n)}}function mb(e,t){for(let n of t.properties){let t=hb(n);t!==void 0&&fb(e,t)}}function hb(e){if(e.type!==`Property`||e.value.type!==`AssignmentPattern`)return;let t=e.value.right;return D(t)?t:void 0}function gb(e){if(!(e.type!==`FunctionDeclaration`||!lo(e)))return[...e.params]}function _b(e){if(!(e.type!==`VariableDeclarator`||!vo(e)||e.init===null)&&!(e.init.type!==`ArrowFunctionExpression`&&e.init.type!==`FunctionExpression`))return[...e.init.params]}const vb=t({create(e){return{FunctionDeclaration(t){let n=gb(t);n!==void 0&&pb(e,n)},VariableDeclarator(t){let n=_b(t);n!==void 0&&pb(e,n)}}},meta:{docs:{description:`Prevent inline empty object and array defaults in component prop destructuring.`,recommended:!0},messages:{emptyArrayDefault:`Default prop value [] creates a new array reference every render — extract to a module-level constant`,emptyObjectDefault:`Default prop value {} creates a new object reference every render — extract to a module-level constant`},type:`problem`}}),yb=/(?<first>[\p{Ll}\d])(?<second>\p{Lu})/gu,bb=/(?<first>\p{Lu})(?<second>\p{Lu}\p{Ll})/gu,xb=`$<first>\0$<second>`;function Sb(e){let t=e.trim();if(t.length===0)return``;let n=t.replace(yb,xb).replace(bb,xb),r=0,{length:i}=n;for(;n.charCodeAt(r)===0;)r+=1;if(r===i)return``;for(;n.charCodeAt(i-1)===0;)--i;let a=``,o=r;for(let e=r;e<=i;e+=1)if(!(e!==i&&n.charCodeAt(e)!==0)){if(e>o){let t=n.slice(o,e),r=t.charCodeAt(0);a.length>0&&r>=48&&r<=57&&(a+=`_`),a+=t.charAt(0).toUpperCase()+t.slice(1).toLowerCase()}o=e+1}return a}function Cb(e){return e.split(`/`).filter(e=>!e.startsWith(`.`))}function wb(e){return e.split(`/`).filter(e=>e===`..`).length}function Tb(e){return e.some(e=>e===Sb(e)&&!e.includes(`.`))}function Eb(e){return r.basename(e,r.extname(e))===`index`}function Db(e){if(!e.includes(`fixtures`))return!1;let t=e.indexOf(`fixtures`);return!Tb(e.slice(0,t))}const Ob=t({create(e){let t=e.options?.[0],{allow:n=[],maxDepth:i=1}=typeof t==`object`&&t?t:{allow:[],maxDepth:1},a=n.map(e=>new RegExp(e,`u`));return{ImportDeclaration(t){let n=t.source.value;if(!(y(n)&&n.startsWith(`.`))||a.some(e=>e.test(n)))return;let{filename:o}=e;if(o===``)return;let s=Qs(n,o);if(!s.found)return;let c=r.relative(o,s.path).replaceAll(`\\`,`/`),l=Cb(c);if((wb(c)>1||l.includes(`components`))&&Tb(l)&&l.length>i&&!Eb(c)&&!Db(l)){e.report({messageId:`noReachingIntoComponent`,node:t});return}l.includes(`components`)&&l.length>i+1&&!Eb(c)&&!Db(l)&&e.report({messageId:`noReachingIntoComponent`,node:t})}}},meta:{docs:{description:`Prevent module imports between components.`},messages:{noReachingIntoComponent:`Do not reach into an individual component's folder for nested modules. Import from the closest shared components folder instead.`},schema:[{additionalProperties:!1,properties:{allow:{items:{type:`string`},type:`array`},maxDepth:{type:`integer`}},type:`object`}],type:`problem`}}),kb=new Set([`ArrayExpression`,`ArrowFunctionExpression`,`FunctionDeclaration`,`FunctionExpression`,`ObjectExpression`]),Ab=new Map([[`useCallback`,{closureIndex:0,dependenciesIndex:1}],[`useEffect`,{closureIndex:0,dependenciesIndex:1}],[`useImperativeHandle`,{closureIndex:1,dependenciesIndex:2}],[`useInsertionEffect`,{closureIndex:0,dependenciesIndex:1}],[`useLayoutEffect`,{closureIndex:0,dependenciesIndex:1}],[`useMemo`,{closureIndex:0,dependenciesIndex:1}],[`useSpring`,{closureIndex:0,dependenciesIndex:1}],[`useSprings`,{closureIndex:1,dependenciesIndex:2}],[`useTrail`,{closureIndex:1,dependenciesIndex:2}]]),jb=new Map([[`useBinding`,!0],[`useReducer`,new Set([1])],[`useRef`,!0],[`useState`,new Set([1])],[`useTransition`,new Set([1])]]),Mb=new Set([`ClassDeclaration`,`FunctionDeclaration`,`FunctionName`,`ImportBinding`]),Nb=new Set(`Array.BigInt.Boolean.clearInterval.clearTimeout.console.Date.decodeURI.decodeURIComponent.Document.Element.encodeURI.encodeURIComponent.Error.Event.Exclude.Extract.Function.Infinity.InstanceType.isFinite.isNaN.JSON.Map.Math.NaN.Node.NonNullable.null.Number.Object.Omit.Parameters.parseFloat.parseInt.Partial.Pick.Promise.Readonly.ReadonlyArray.ReadonlyMap.ReadonlySet.Record.RegExp.Required.ReturnType.Set.setInterval.setTimeout.String.Symbol.undefined.WeakMap.WeakSet.Window`.split(`.`));function Pb(e){let{callee:t}=e;if(t.type===`Identifier`)return t.name;if(t.type===`MemberExpression`&&t.property.type===`Identifier`)return t.property.name}function Fb(e){let t=0,n=e;for(;;){if(n.type===`ChainExpression`||n.type===`ParenthesizedExpression`||n.type===`TSAsExpression`||n.type===`TSNonNullExpression`||n.type===`TSSatisfiesExpression`||n.type===`TSTypeAssertion`){n=n.expression;continue}if(n.type!==`MemberExpression`)break;t+=1,n=n.object}return t}function Ib(e){let t=e;for(;;){if(t.type===`ChainExpression`||t.type===`ParenthesizedExpression`||t.type===`TSAsExpression`||t.type===`TSNonNullExpression`||t.type===`TSSatisfiesExpression`||t.type===`TSTypeAssertion`){t=t.expression;continue}if(t.type!==`MemberExpression`)break;t=t.object}return t.type===`Identifier`?t:void 0}function Lb(e){return e.type===`Identifier`?[e.name]:e.type===`MemberExpression`?Lb(e.object):e.type===`ChainExpression`||e.type===`ParenthesizedExpression`||e.type===`TSNonNullExpression`||e.type===`TSAsExpression`||e.type===`TSSatisfiesExpression`||e.type===`TSTypeAssertion`?Lb(e.expression):e.type===`BinaryExpression`||e.type===`LogicalExpression`?[...Lb(e.left),...Lb(e.right)]:e.type===`UnaryExpression`?Lb(e.argument):e.type===`ConditionalExpression`?[...Lb(e.test),...Lb(e.consequent),...Lb(e.alternate)]:[]}function Rb(e){return Qb.has(e.type)}function zb(e,t){if(e.type===`Identifier`)return e.name;if(e.type===`ChainExpression`||e.type===`ParenthesizedExpression`||Rb(e))return zb(e.expression,t);if(e.type===`MemberExpression`){let n=zb(e.object,t);if(e.computed)return`${n}[${t.getText(e.property)}]`;let r=e.property.type===`Identifier`?e.property.name:``;return`${n}${e.optional?`?.`:`.`}${r}`}return t.getText(e)}function Bb(e,t){return e.type===`VariableDeclarator`&&e.id.type===t}function Vb(e,t,n){if(e===void 0||!(e instanceof Set&&Bb(t,`ArrayPattern`)))return!1;let{elements:r}=t.id,i=0;for(let t of r){if((t?.type===`Identifier`?t.name:void 0)===n)return e.has(i);i+=1}return!1}function Hb(e,t,n){if(e===void 0||!(e instanceof Set&&Bb(t,`ObjectPattern`)))return!1;for(let r of t.id.properties){if(r.type!==`Property`||Gr(r)?.name!==n)continue;let t=Wr(r);return t!==void 0&&e.has(t)}return!1}function Ub(e,t,n,r){if(e?.type!==`CallExpression`)return!1;let i=Pb(e);if(i===void 0)return!1;let a=r.get(i);return a===!0||Vb(a,t,n)||Hb(a,t,n)}function Wb(e){if(e?.type!==`CallExpression`)return!1;let{callee:t}=e;return t.type===`MemberExpression`&&t.object.type===`Identifier`&&t.object.name===`React`&&t.property.type===`Identifier`&&t.property.name===`joinBindings`}function Gb(e){if(e?.type!==`CallExpression`)return!1;let{callee:t}=e;return t.type===`MemberExpression`&&t.property.type===`Identifier`&&t.property.name===`map`}function Kb(e){return e?.type===`Literal`||e?.type===`TemplateLiteral`||e?.type===`UnaryExpression`&&e.argument.type===`Literal`}function qb(e,t){let n=e.defs.find(e=>e.node===t);if(n?.node.type!==`VariableDeclarator`)return!1;let r=n.node.parent.parent;return r?.type===`Program`||r?.type===`ExportNamedDeclaration`}function Jb(e,t,n,r){let{node:i,type:a}=t;if(Mb.has(a))return!0;if(a!==`Variable`||i.type!==`VariableDeclarator`)return!1;let{parent:o}=i;if(o.type!==`VariableDeclaration`||o.kind!==`const`)return!1;let{init:s}=i;return Ub(s,i,n,r)||Wb(s)||Gb(s)||Kb(s)||qb(e,i)}function Yb(e,t,n){if(!e)return!1;let r=e.defs;if(r.length===0)return!1;for(let i of r)if(Jb(e,i,t,n))return!0;return!1}function Xb(e,t){let n=t,r=e;for(;n;){if(n.type===`CallExpression`&&n.callee===r){if(r.type===`MemberExpression`)return r.object;break}let e=n.type===`MemberExpression`&&n.object===r,t=n.type===`ChainExpression`,i=n.type===`TSNonNullExpression`;if(!(e||t||i))break;r=n,n=r.parent??void 0}return r}const Zb=new Set([`ArrowFunctionExpression`,`FunctionDeclaration`,`FunctionExpression`,`VariableDeclarator`]),Qb=new Set([`TSAsExpression`,`TSInstantiationExpression`,`TSNonNullExpression`,`TSSatisfiesExpression`,`TSTypeAssertion`]);function $b(e){if(e.type!==`Identifier`)return!1;let{parent:t}=e;return t.type===`Property`&&t.computed&&t.key===e}function ex(e){if(e.type!==`Identifier`)return!1;let t=e.parent??void 0;for(;t;){if(Qb.has(t.type)){t=t.parent??void 0;continue}if(t.type.startsWith(`TS`))return!0;if(Zb.has(t.type))return!1;t=t.parent??void 0}return!1}function tx(e,t){let n=t.parent??void 0;for(;n;){if(N(n)){let t=n;return e.defs.some(e=>e.type===`Parameter`&&e.node===t)?!0:e.defs.some(e=>{let n=e.node.parent??void 0;for(;n&&n!==t;)n=n.parent??void 0;return n===t})}n=n.parent??void 0}return!1}function nx(e,t){if(e.type!==`Identifier`)return;let n,r=t;for(;r;){let t=r.set.get(e.name);if(t){n=t;break}r=r.upper}if(!(!n||n.defs.length===0))for(let e of n.defs){let t=e.node;if(t.type===`FunctionDeclaration`)return t;if(t.type===`VariableDeclarator`&&t.init&&(t.init.type===`ArrowFunctionExpression`||t.init.type===`FunctionExpression`))return t.init}}function rx(e,t){let n=t;for(;n;){let t=n.set.get(e);if(t)return t;n=n.upper}}function ix(e,t){let n=e.node;for(;n;){if(n===t)return!0;n=n.parent??void 0}return!1}function ax(e,t){return e!==void 0&&!e.defs.some(e=>ix(e,t))}function ox(e,t,n,r){let i=Xb(e,e.parent??void 0);return{depth:Fb(i),forceDependency:$b(e),name:t,node:i,usagePath:zb(i,r),variable:n}}function sx(e){return e.type===`ParenthesizedExpression`||e.type===`TSSatisfiesExpression`||e.type===`TSAsExpression`||e.type===`TSTypeAssertion`||e.type===`TSNonNullExpression`}function cx(e,t,n){let r=t.visitorKeys[e.type]??[];for(let t of r){if(!x(e))break;let r=e[t];if(Array.isArray(r))for(let e of r)D(e)&&n(e);else D(r)&&n(r)}}function lx(e,t){let n=[],r=new Set;function i(i){if(i.type!==`Identifier`)return;let{name:a}=i;if(r.has(a)||Nb.has(a)||ex(i))return;let o=rx(a,t.getScope(i));ax(o,e)&&o!==void 0&&tx(o,e)&&(r.add(a),n.push(ox(i,a,o,t)))}function a(e){if(e.type===`Identifier`&&i(e),sx(e)){a(e.expression);return}if(e.type===`MemberExpression`){a(e.object),e.computed&&a(e.property);return}if(e.type===`ChainExpression`){a(e.expression);return}if(e.type===`Property`){e.computed&&a(e.key),a(e.value);return}cx(e,t,a)}return a(e),n}function ux(e,t){let n=[];for(let r of e.elements){if(!r)continue;let e=r.type===`SpreadElement`?r.argument:r,i=zb(e,t),a=Fb(e);n.push({depth:a,name:i,node:e})}return n}function dx({name:e}){return e}function fx(e){return e?kb.has(e.type):!1}function px(e,{parent:t}){return t.type===`VariableDeclarator`?e.variable?.defs.some(e=>e.node===t)??!1:!1}function mx(e){return e.length>0&&b(e[0])}function hx(e){return e.length>0&&y(e[0])}function gx(e){return typeof e==`boolean`?e:b(e)?new Set([e]):Array.isArray(e)&&(mx(e)||hx(e))?new Set(e):!1}function _x(e,t,n,r){let i=[],a=0;for(let{name:e}of t)e!==n.name&&(i[a++]=e);let o=`[${i.join(`, `)}]`;e.report({data:{name:n.name},fix(e){return e.replaceText(r,o)},messageId:`unnecessaryDependency`,node:n.node,suggest:[{data:{name:n.name},fix(e){return e.replaceText(r,o)},messageId:`removeDependencySuggestion`}]})}function vx(e){return e!==void 0&&N(e)}function yx(e,t){return e.filter(e=>e.forceDependency||!Yb(e.variable,e.name,t))}function bx(e,t,n,r){if(r.length===0)return;let i=[...new Set(r.map(dx))].join(`, `),a=`[${[...new Set(r.map(({usagePath:e})=>e))].toSorted().join(`, `)}]`;e.report({data:{deps:i},fix(e){return e.insertTextAfter(n,`, ${a}`)},messageId:`missingDependenciesArray`,node:t,suggest:[{data:{dependencies:a},fix(e){return e.insertTextAfter(n,`, ${a}`)},messageId:`addDependenciesArraySuggestion`}]})}function xx(e){let t=Ib(e);return t?.type===`Identifier`?t.name:void 0}function Sx(e,t){let n=xx(t.node);return n===void 0?[]:e.filter(e=>xx(e.node)===n)}function Cx(e,t){return e.length>0&&e.every(e=>!e.forceDependency&&Yb(e.variable,e.name,t))}function wx(e,t,n,r,i,a,o){for(let s of t){let c=Sx(n,s);if(c.length===0){a&&_x(e,t,s,r);continue}if(o&&Cx(c,i)){_x(e,t,s,r);continue}let l=Math.max(...c.map(({depth:e})=>e));a&&s.depth>l&&_x(e,t,s,r)}}function Tx(e,t,n){let r=Ib(e.node);if(r?.type===`Identifier`&&e.depth<=t.depth)return r.name===xx(t.node);if(!n)return!1;let i=xx(t.node);return i!==void 0&&Lb(e.node).includes(i)}function Ex(e,t,n,r){let i=[];for(let a of yx(e,n))xx(a.node)!==void 0&&(t.some(e=>Tx(e,a,r))||i.push(a));return i}function Dx(e,t,n,r){if(r.length===0)return;let i=n.map(({name:e})=>e),a=r.map(({usagePath:e})=>e),o=`[${[...i,...a].toSorted().join(`, `)}]`,s=n.at(-1)?.node??t,c=r.at(0);if(r.length===1&&c!==void 0){e.report({data:{name:c.usagePath},fix(e){return e.replaceText(t,o)},messageId:`missingDependency`,node:s,suggest:[{data:{name:c.usagePath},fix(e){return e.replaceText(t,o)},messageId:`addDependencySuggestion`}]});return}e.report({data:{names:a.join(`, `)},fix(e){return e.replaceText(t,o)},messageId:`missingDependencies`,node:s,suggest:[{fix(e){return e.replaceText(t,o)},messageId:`addMissingDependenciesSuggestion`}]})}function Ox(e){let t=e.variable?.defs[0];return t?.node.type===`VariableDeclarator`?t.node.init??void 0:void 0}function kx(e,t,n,r){for(let i of yx(t,r)){let t=xx(i.node);if(t!==void 0){for(let r of n)if(xx(r.node)===t&&r.depth===i.depth){r.depth===0&&fx(Ox(i))&&e.report({data:{name:i.usagePath},messageId:`unstableDependency`,node:r.node});break}}}}const Ax=t({create(e){let[t]=e.options,n={hooks:t?.hooks??[],reportMissingDependenciesArray:t?.reportMissingDependenciesArray??!0,reportUnnecessaryDependencies:t?.reportUnnecessaryDependencies??!0,reportUnnecessaryStableDependencies:t?.reportUnnecessaryStableDependencies??!1,resolveExpressionDependencies:t?.resolveExpressionDependencies??!0},r=new Map(Ab);for(let e of n.hooks)e.closureIndex===void 0||e.dependenciesIndex===void 0||r.set(e.name,{closureIndex:e.closureIndex,dependenciesIndex:e.dependenciesIndex});let i=new Map(jb);for(let e of n.hooks)e.stableResult!==void 0&&i.set(e.name,gx(e.stableResult));let a=new WeakMap;function o(t){let n=a.get(t);if(n)return n;let r=e.sourceCode.getScope(t);return a.set(t,r),r}function s(e,t){if(e.type===`ArrowFunctionExpression`)return e;if(!(N(e)||e.type===`Identifier`))return;let n=nx(e,o(t));return vx(n)?n:void 0}return{CallExpression(t){let a=Pb(t);if(a===void 0||a===``)return;let o=r.get(a);if(!o)return;let{closureIndex:c,dependenciesIndex:l}=o,u=t.arguments,d=u[c];if(d===void 0)return;let f=s(d,t);if(!f)return;let p=u[l];if(!p&&n.reportMissingDependenciesArray){bx(e,t,d,yx(lx(f,e.sourceCode).filter(e=>!px(e,t)),i));return}if(!p||p.type!==`ArrayExpression`)return;let m=p,h=lx(f,e.sourceCode).filter(e=>!px(e,t)),g=ux(m,e.sourceCode);(n.reportUnnecessaryDependencies||n.reportUnnecessaryStableDependencies)&&wx(e,g,h,m,i,n.reportUnnecessaryDependencies,n.reportUnnecessaryStableDependencies),Dx(e,m,g,Ex(h,g,i,n.resolveExpressionDependencies)),kx(e,h,g,i)}}},meta:{docs:{description:`Enforce exhaustive and correct dependency specification in React hooks to prevent stale closures and unnecessary re-renders`},fixable:`code`,hasSuggestions:!0,messages:{addDependenciesArraySuggestion:`Add dependencies array: {{dependencies}}`,addDependencySuggestion:`Add '{{name}}' to dependencies array`,addMissingDependenciesSuggestion:`Add missing dependencies to array`,missingDependencies:`This hook does not specify all its dependencies. Missing: {{names}}`,missingDependenciesArray:`This hook does not specify its dependencies array. Missing: {{deps}}`,missingDependency:`This hook does not specify its dependency on {{name}}.`,removeDependencySuggestion:`Remove '{{name}}' from dependencies array`,unnecessaryDependency:`This dependency {{name}} can be removed from the list.`,unstableDependency:`{{name}} changes on every re-render. Wrap the definition in useCallback() or useMemo() to stabilize it.`},schema:[{additionalProperties:!1,properties:{hooks:{description:`Array of custom hook entries to check for exhaustive dependencies`,items:{additionalProperties:!1,properties:{closureIndex:{description:`Index of the closure argument for dependency validation`,type:`number`},dependenciesIndex:{description:`Index of the dependencies array for validation`,type:`number`},name:{description:`The name of the hook`,type:`string`},stableResult:{description:`Specify stable results: true (whole result), number (array index), number[] (multiple indices), or string[] (object properties)`,oneOf:[{type:`boolean`},{type:`number`},{items:{type:`number`},type:`array`},{items:{type:`string`},type:`array`}]}},required:[`name`],type:`object`},type:`array`},reportMissingDependenciesArray:{default:!0,description:`Report when the dependencies array is completely missing`,type:`boolean`},reportUnnecessaryDependencies:{default:!0,description:`Report when unnecessary dependencies are specified`,type:`boolean`},reportUnnecessaryStableDependencies:{default:!1,description:`Report when stable values (useRef, useState setter, etc.) are included as dependencies`,type:`boolean`},resolveExpressionDependencies:{default:!0,description:"Recognize expression dependencies like `value !== undefined` as covering a capture",type:`boolean`}},type:`object`}],type:`problem`}}),jx=/^use[A-Z]/u;function Mx(e){return jx.test(e)}function Nx(e){return x(e)?e:{}}function Px(e){if((e.type===`FunctionDeclaration`||e.type===`FunctionExpression`)&&e.id!==null)return O(e.id.name)||Mx(e.id.name);let{parent:t}=e;return t.type===`VariableDeclarator`&&j(t.id)?O(t.id.name)||Mx(t.id.name):t.type===`Property`&&j(t.key)||t.type===`MethodDefinition`&&j(t.key)?O(t.key.name)||Mx(t.key.name):!1}function Fx(e){let t=L(e);return t!==void 0&&Mx(t)}function Ix(e){let t=e.parent,n=!1;for(let r=0;r<20&&t!==null&&!N(t);r+=1){if(t.type===`TryStatement`){let r=e;for(;r!==null&&r!==t;){if(r===t.finalizer){n=!0;break}r=r.parent}break}t=t.parent}return n}function Lx(e,t){return t!==void 0&&e.callee.type===`Identifier`&&`name`in e.callee&&e.callee.name===t}function Rx(e,t){return{afterEarlyReturn:!1,functionDepth:t,inConditional:!1,inLoop:!1,inNestedFunction:!1,inTryBlock:!1,isComponentOrHook:!1,...e}}function zx(e){if(e.type===`FunctionDeclaration`||e.type===`FunctionExpression`)return e.id?.name??void 0}function Bx(e){return j(e)?e.name:void 0}function Vx(e,t,n,r){if(n===void 0||Object.keys(n).length===0)return!1;let i=Hx(t,n);if(i!==void 0)return i;let a=t.callee.type===`Identifier`?r.get(e):void 0;return a!==void 0&&n[a]===!1?!0:(a!==void 0&&n[a],!1)}function Hx(e,t){if(e.callee.type!==`MemberExpression`)return;let n=Bx(e.callee.object);if(n!==void 0&&t[n]===!1)return!0;if(n!==void 0&&t[n]===!0)return!1}const Ux=e({meta:{name:`small-rules`},rules:{"array-type-generic":te,"ban-instances":ut,"ban-react-fc":mt,"ban-types":vt,"directive-disable-enable-pair":Kt,"directive-no-aggregating-enable":qt,"directive-no-duplicate-disable":Jt,"directive-no-restricted-disable":Yt,"directive-no-unlimited-disable":Xt,"directive-no-unused-enable":Zt,"directive-no-use":Qt,"directive-require-description":tn,"enforce-ianitor-check-type":pn,"memoized-effect-dependencies":Ln,"no-array-constructor-elements":mr,"no-array-constructor-index-assignment":wr,"no-array-size-assignment":Pr,"no-async-constructor":ai,"no-async-in-system":gi,"no-cascading-set-state":vi,"no-color3-constructor":Si,"no-commented-code":la,"no-constant-condition-with-break":Ua,"no-error":Ga,"no-events-in-events-callback":so,"no-giant-component":So,"no-god-components":Ao,"no-ianitor-in-function-body":Mo,"no-ianitor-success-access":Ro,"no-identity-map":qo,"no-increment-decrement":Yo,"no-inline-property-on-memo-component":Qo,"no-instance-methods-without-this":os,"no-native-properties-spread":As,"no-new-instance-in-use-memo":Gs,"no-print":Ks,"no-recursive":Ys,"no-redundant-aspect-ratio-constraint":dc,"no-render-helper-functions":Oc,"no-restricted-property-assignment":zc,"no-spec-file-extension":Vc,"no-static-react-create-element":tl,"no-table-create-map":il,"no-task-wait":ol,"no-underscore-react-props":sl,"no-unused-imports":_l,"no-unused-use-memo":vl,"no-use-memo-simple-expression":bl,"no-useless-constants":Hl,"no-useless-default":ku,"no-useless-use-effect":cf,"no-useless-use-memo":mf,"no-useless-use-spring":Sf,"no-warn":Cf,"only-type-imports":wf,"prefer-class-properties":Af,"prefer-constant-dispatch":Bf,"prefer-context-stack":Cp,"prefer-early-return":Op,"prefer-expect-assertions":$p,"prefer-hoisted-jsx-elements":dm,"prefer-hoisted-jsx-object-properties":ym,"prefer-idiv":Sm,"prefer-local-portal-component":Nm,"prefer-math-min-max":Wm,"prefer-modding-inspect":Ym,"prefer-module-scope-constants":Qm,"prefer-padding-components":mh,"prefer-pascal-case-enums":Ch,"prefer-sequence-overloads":kh,"prefer-single-world-query":Yh,"prefer-singular-enums":cg,"prefer-ternary-conditional-rendering":Tg,"prefer-udim2-shorthand":Ng,"prefer-use-reducer":Fg,"prevent-abbreviations":vv,"react-hooks-strict-return":Fv,"require-async-suffix":Rv,"require-module-level-instantiation":Wv,"require-named-effect-functions":Xv,"require-paired-calls":dy,"require-react-component-keys":Ry,"require-react-display-names":qy,"require-switch-case-braces":Xy,"require-throw-error-capture":ob,"require-unicode-regex":db,"rerender-memo-with-default-value":vb,"strict-component-boundaries":Ob,"use-exhaustive-dependencies":Ax,"use-hook-at-top-level":t({create(e){let t=Nx(e.options[0]),n=[],r=[],i,a=new Map;function o(){return n.length>0?n.at(-1):void 0}function s(e){n.push(e)}function c(){n.pop()}function l(e){let t=o();t!==void 0&&(n[n.length-1]={...t,...e})}function u(e,n){let{ignoreHooks:r,importSources:i,onlyHooks:o}=t;return o!==void 0&&o.length>0?!o.includes(e):r?.includes(e)===!0||Vx(e,n,i,a)}function d(e){let t=o(),n=t===void 0?0:t.functionDepth+1,a=Px(e);r.push(i);let c=zx(e);c!==void 0&&(i=c),t?.isComponentOrHook===!0?s(Rx({functionDepth:n,inNestedFunction:!0},n)):a&&s(Rx({functionDepth:n,isComponentOrHook:!0},n))}function f(){o()!==void 0&&c(),i=r.pop()}return{ArrowFunctionExpression:d,"ArrowFunctionExpression:exit":f,CallExpression(t){if(!Fx(t))return;let n=L(t);if(n===void 0||u(n,t))return;let r=o();if(!(r===void 0||!(r.isComponentOrHook||r.inNestedFunction)||Ix(t))){if(Lx(t,i)){e.report({messageId:`recursiveHookCall`,node:t});return}if(r.inNestedFunction){e.report({messageId:`nestedFunction`,node:t});return}if(r.inConditional){e.report({messageId:`conditionalHook`,node:t});return}if(r.inLoop){e.report({messageId:`loopHook`,node:t});return}if(r.inTryBlock){e.report({messageId:`tryBlockHook`,node:t});return}r.afterEarlyReturn&&e.report({messageId:`afterEarlyReturn`,node:t})}},ConditionalExpression(){l({inConditional:!0})},"ConditionalExpression:exit"(){l({inConditional:!1})},DoWhileStatement(){l({inLoop:!0})},"DoWhileStatement:exit"(){l({inLoop:!1})},ForInStatement(){l({inLoop:!0})},"ForInStatement:exit"(){l({inLoop:!1})},ForOfStatement(){l({inLoop:!0})},"ForOfStatement:exit"(){l({inLoop:!1})},ForStatement(){l({inLoop:!0})},"ForStatement:exit"(){l({inLoop:!1})},FunctionDeclaration:d,"FunctionDeclaration:exit":f,FunctionExpression:d,"FunctionExpression:exit":f,IfStatement(){l({inConditional:!0})},"IfStatement:exit"(){l({inConditional:!1})},ImportDeclaration(e){let n=e.source.value;if(!(t.importSources===void 0||Object.keys(t.importSources).length===0))for(let t of e.specifiers)t.type===`ImportSpecifier`&&j(t.imported)&&Mx(t.imported.name)&&a.set(t.local.name,n)},LogicalExpression(){l({inConditional:!0})},"LogicalExpression:exit"(){l({inConditional:!1})},"ReturnStatement:exit"(){l({afterEarlyReturn:!0})},SwitchStatement(){l({inConditional:!0})},"SwitchStatement:exit"(){l({inConditional:!1})},TryStatement(){l({inTryBlock:!0})},"TryStatement:exit"(){l({inTryBlock:!1})},WhileStatement(){l({inLoop:!0})},"WhileStatement:exit"(){l({inLoop:!1})}}},meta:{docs:{description:`Enforce that React hooks are only called at the top level of components or custom hooks, never conditionally or in nested functions`,recommended:!0},messages:{afterEarlyReturn:`This hook is being called after an early return. Hooks must be called unconditionally and in the same order every render.`,conditionalHook:`This hook is being called conditionally. All hooks must be called in the exact same order in every component render.`,loopHook:`This hook is being called inside a loop. All hooks must be called in the exact same order in every component render.`,nestedFunction:`This hook is being called from a nested function. All hooks must be called unconditionally from the top-level component.`,recursiveHookCall:`This hook is being called recursively. Recursive calls require a condition to terminate, which violates hook rules.`,tryBlockHook:`This hook is being called inside a try block. Hooks must be called unconditionally at the top level.`},schema:[{additionalProperties:!1,properties:{ignoreHooks:{items:{type:`string`},type:`array`},importSources:{additionalProperties:{type:`boolean`},type:`object`},onlyHooks:{items:{type:`string`},type:`array`}},type:`object`}],type:`problem`}})}});export{Ux as default};
|