@next-secure-check/core 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/scanner.d.ts.map +1 -1
- package/dist/scanner.js +78 -3
- package/dist/scanner.js.map +1 -1
- package/package.json +1 -1
package/dist/scanner.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAgD,WAAW,EAAE,UAAU,EAAc,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAgD,WAAW,EAAE,UAAU,EAAc,MAAM,YAAY,CAAC;AAKpH,wBAAsB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CAkCpG;AAED,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAU5E"}
|
package/dist/scanner.js
CHANGED
|
@@ -5,6 +5,8 @@ import { applyContextTuning } from "./context-tuning.js";
|
|
|
5
5
|
import { collectFiles } from "./file-collector.js";
|
|
6
6
|
import { detectProject } from "./project-detector.js";
|
|
7
7
|
import { summarizeFindings } from "./score.js";
|
|
8
|
+
const KNOWN_AUTH_MODULE_PATTERN = /(?:^|["'\s])(?:next-auth(?:\/|["'])|@auth(?:\/|["'])|@clerk\/nextjs(?:\/|["'])|@supabase\/(?:ssr|auth-helpers-nextjs)(?:\/|["'])|better-auth(?:\/|["']))/i;
|
|
9
|
+
const KNOWN_RATE_LIMIT_MODULE_PATTERN = /(?:^|["'\s])(?:@upstash\/ratelimit|rate-limiter-flexible|express-rate-limit|@arcjet\/next)(?:\/|["'])/i;
|
|
8
10
|
export async function scanProject(targetPath, options = {}) {
|
|
9
11
|
const startedAt = Date.now();
|
|
10
12
|
const rootPath = await resolveProjectPath(targetPath);
|
|
@@ -97,17 +99,90 @@ function middlewareScopeRoot(filePath) {
|
|
|
97
99
|
return /^((?:apps|packages)\/[^/]+)\/(?:src\/)?middleware\.[tj]s$/.exec(filePath)?.[1];
|
|
98
100
|
}
|
|
99
101
|
function hasMiddlewareAuthSignal(content) {
|
|
100
|
-
|
|
102
|
+
const code = extractMiddlewareCode(stripCommentsAndStrings(content));
|
|
103
|
+
const sourceWithoutComments = stripComments(content);
|
|
104
|
+
const hasAuthCall = /\b(?:requireAuth|currentUser|getServerSession|verifyToken|isAdmin|withAuth|clerkMiddleware)\s*\(/i.test(code);
|
|
105
|
+
const hasKnownModuleAuthCall = hasKnownAuthImport(sourceWithoutComments) && /\b(?:auth|clerk|getUser)\s*\(/i.test(code);
|
|
106
|
+
const hasAuthGuard = /\b(?:if|while)\s*\([^)]*\b(?:session|user|account|claims)(?:\.|\?\.)\s*(?:role|permission)\b/i.test(code);
|
|
107
|
+
return hasAuthCall || hasKnownModuleAuthCall || hasAuthGuard || /\b(?:auth|jwt|session|token)\s*\.\s*verify\s*\(/i.test(code);
|
|
101
108
|
}
|
|
102
109
|
function hasMiddlewareRateLimitSignal(content) {
|
|
103
|
-
|
|
110
|
+
const code = extractMiddlewareCode(stripCommentsAndStrings(content));
|
|
111
|
+
const sourceWithoutComments = stripComments(content);
|
|
112
|
+
const hasDirectLimiterCall = /\b(?:applyRateLimit|checkRateLimit|enforceRateLimit|rateLimit|rateLimited|slowDown|throttle|withRateLimit)\s*\(/i.test(code);
|
|
113
|
+
const hasLimiterMethodCall = /\b(?:limiter|rateLimit|rateLimiter|ratelimit|redis|throttle|upstash)\s*\.\s*(?:check|consume|limit|rateLimit)\s*\(/i.test(code);
|
|
114
|
+
const hasKnownModuleLimiterCall = KNOWN_RATE_LIMIT_MODULE_PATTERN.test(sourceWithoutComments) && /\.\s*limit\s*\(/i.test(code);
|
|
115
|
+
const hasRateLimitResponse = /\b(?:new\s+)?(?:Response|NextResponse)\s*(?:\.\s*\w+)?\s*\([\s\S]{0,600}?\bstatus\s*:\s*429\b/i.test(code) ||
|
|
116
|
+
/\b(?:res|response|reply)\s*\.\s*status\s*\(\s*429\s*\)/i.test(code) ||
|
|
117
|
+
/\bstatusCode\s*=\s*429\b/i.test(code);
|
|
118
|
+
return hasDirectLimiterCall || hasLimiterMethodCall || hasKnownModuleLimiterCall || hasRateLimitResponse;
|
|
104
119
|
}
|
|
105
120
|
function extractMiddlewareMatchers(content) {
|
|
106
|
-
const matcherProperty = /matcher\s*:\s*(\[[^\]]+\]|["'`][^"'`]+["'`])/s.exec(content);
|
|
121
|
+
const matcherProperty = /matcher\s*:\s*(\[[^\]]+\]|["'`][^"'`]+["'`])/s.exec(stripComments(content));
|
|
107
122
|
if (!matcherProperty) {
|
|
108
123
|
return [];
|
|
109
124
|
}
|
|
110
125
|
const matcherValue = matcherProperty[1] ?? "";
|
|
111
126
|
return [...matcherValue.matchAll(/["'`]([^"'`]+)["'`]/g)].map((match) => match[1] ?? "").filter(Boolean);
|
|
112
127
|
}
|
|
128
|
+
function stripComments(content) {
|
|
129
|
+
return content.replace(/\/\*[\s\S]*?\*\/|\/\/[^\r\n]*/g, (match) => match.replace(/[^\r\n]/g, " "));
|
|
130
|
+
}
|
|
131
|
+
function stripCommentsAndStrings(content) {
|
|
132
|
+
return content.replace(/\/\*[\s\S]*?\*\/|\/\/[^\r\n]*|"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|`(?:\\.|[^`\\])*`/g, (match) => match.replace(/[^\r\n]/g, " "));
|
|
133
|
+
}
|
|
134
|
+
function extractMiddlewareCode(code) {
|
|
135
|
+
const functionMatch = /\b(?:export\s+)?(?:default\s+)?(?:async\s+)?function\s+middleware\s*\([^)]*\)\s*\{/i.exec(code);
|
|
136
|
+
if (functionMatch) {
|
|
137
|
+
const openBraceIndex = code.indexOf("{", functionMatch.index);
|
|
138
|
+
return code.slice(functionMatch.index, findMatchingBrace(code, openBraceIndex) + 1);
|
|
139
|
+
}
|
|
140
|
+
const arrowMatch = /\b(?:export\s+)?(?:const|let|var)\s+middleware\s*=\s*(?:async\s*)?(?:\([^)]*\)|[A-Za-z_$][\w$]*)\s*=>/i.exec(code);
|
|
141
|
+
if (!arrowMatch) {
|
|
142
|
+
return code;
|
|
143
|
+
}
|
|
144
|
+
const bodyStart = arrowMatch.index + arrowMatch[0].length;
|
|
145
|
+
if (code[bodyStart] === "{") {
|
|
146
|
+
return code.slice(arrowMatch.index, findMatchingBrace(code, bodyStart) + 1);
|
|
147
|
+
}
|
|
148
|
+
const statementEnd = code.indexOf(";", bodyStart);
|
|
149
|
+
return code.slice(arrowMatch.index, statementEnd === -1 ? code.length : statementEnd);
|
|
150
|
+
}
|
|
151
|
+
function findMatchingBrace(code, openBraceIndex) {
|
|
152
|
+
if (openBraceIndex < 0) {
|
|
153
|
+
return code.length - 1;
|
|
154
|
+
}
|
|
155
|
+
let depth = 0;
|
|
156
|
+
for (let index = openBraceIndex; index < code.length; index += 1) {
|
|
157
|
+
if (code[index] === "{") {
|
|
158
|
+
depth += 1;
|
|
159
|
+
}
|
|
160
|
+
else if (code[index] === "}") {
|
|
161
|
+
depth -= 1;
|
|
162
|
+
if (depth === 0) {
|
|
163
|
+
return index;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return code.length - 1;
|
|
168
|
+
}
|
|
169
|
+
function hasKnownAuthImport(content) {
|
|
170
|
+
const importPattern = /\bimport\s+(?:\{([^}]*)\}|([A-Za-z_$][\w$]*))\s+from\s*["']([^"']+)["']/g;
|
|
171
|
+
for (const match of content.matchAll(importPattern)) {
|
|
172
|
+
const namedBindings = match[1] ?? "";
|
|
173
|
+
const defaultBinding = match[2] ?? "";
|
|
174
|
+
const moduleName = match[3] ?? "";
|
|
175
|
+
const containsAuthBinding = hasNamedAuthBinding(namedBindings) || /^(?:auth|clerk|getUser)$/i.test(defaultBinding);
|
|
176
|
+
if (containsAuthBinding && KNOWN_AUTH_MODULE_PATTERN.test(`\"${moduleName}\"`)) {
|
|
177
|
+
return true;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return false;
|
|
181
|
+
}
|
|
182
|
+
function hasNamedAuthBinding(namedBindings) {
|
|
183
|
+
return namedBindings.split(",").some((binding) => {
|
|
184
|
+
const importedName = binding.trim().split(/\s+as\s+/i)[0]?.trim() ?? "";
|
|
185
|
+
return /^(?:auth|clerk|getUser)$/i.test(importedName);
|
|
186
|
+
});
|
|
187
|
+
}
|
|
113
188
|
//# sourceMappingURL=scanner.js.map
|
package/dist/scanner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAG/C,MAAM,yBAAyB,GAAG,2JAA2J,CAAC;AAC9L,MAAM,+BAA+B,GAAG,wGAAwG,CAAC;AAEjJ,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,UAAkB,EAAE,UAAuB,EAAE;IAC7E,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,UAAU,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE;QACzC,YAAY,EAAE,OAAO,CAAC,YAAY;KACnC,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,mBAAmB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7G,MAAM,OAAO,GAAgB;QAC3B,UAAU;QACV,QAAQ;QACR,KAAK;QACL,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,UAAU,EAAE,wBAAwB,CAAC,KAAK,CAAC;QAC3C,WAAW,EAAE,SAAS,CAAC,WAAW;KACnC,CAAC;IACF,MAAM,QAAQ,GAAG,YAAY,CAC3B,4BAA4B,CAC1B,yBAAyB,CAAC,MAAM,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,EACzD,OAAO,CAAC,aAAa,IAAI,UAAU,CACpC,CACF,CAAC;IAEF,OAAO;QACL,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,OAAO,EAAE,iBAAiB,CAAC,QAAQ,CAAC;QACpC,QAAQ;QACR,QAAQ,EAAE;YACR,SAAS,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;YAC5C,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YAClC,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,OAAO;SAC5C;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,UAAkB;IACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;IACvB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEtC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,oCAAoC,UAAU,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,KAAa,EAAE,OAAoB;IACzD,MAAM,QAAQ,GAAc,EAAE,CAAC;IAE/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,yBAAyB,CAAC,QAAmB;IACpD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QAC9B,MAAM,cAAc,GAAG,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE7D,OAAO;YACL,GAAG,OAAO;YACV,OAAO,EAAE,cAAc,CAAC,OAAO;YAC/B,aAAa,EAAE,cAAc,CAAC,aAAa;SAC5C,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,4BAA4B,CAAC,QAAmB,EAAE,aAAwD;IACjH,IAAI,aAAa,KAAK,KAAK,EAAE,CAAC;QAC5B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,mBAAmB,CAAC,UAAqB;IAChD,OAAO,IAAI,GAAG,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACxF,CAAC;AAED,SAAS,YAAY,CAAC,QAAmB;IACvC,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACjC,MAAM,WAAW,GAAG,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAmB;IACnD,OAAO,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACnD,QAAQ,EAAE,IAAI,CAAC,IAAI;QACnB,aAAa,EAAE,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC;QACpD,kBAAkB,EAAE,4BAA4B,CAAC,IAAI,CAAC,OAAO,CAAC;QAC9D,QAAQ,EAAE,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC;QACjD,SAAS,EAAE,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;KAChD,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAgB;IACxC,OAAO,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC;AACtD,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAgB;IAC3C,IAAI,+BAA+B,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,2DAA2D,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACzF,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAe;IAC9C,MAAM,IAAI,GAAG,qBAAqB,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC;IACrE,MAAM,qBAAqB,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,WAAW,GAAG,mGAAmG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnI,MAAM,sBAAsB,GAAG,kBAAkB,CAAC,qBAAqB,CAAC,IAAI,gCAAgC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxH,MAAM,YAAY,GAAG,+FAA+F,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEhI,OAAO,WAAW,IAAI,sBAAsB,IAAI,YAAY,IAAI,kDAAkD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChI,CAAC;AAED,SAAS,4BAA4B,CAAC,OAAe;IACnD,MAAM,IAAI,GAAG,qBAAqB,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC;IACrE,MAAM,qBAAqB,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,oBAAoB,GAAG,kHAAkH,CAAC,IAAI,CAClJ,IAAI,CACL,CAAC;IACF,MAAM,oBAAoB,GAAG,qHAAqH,CAAC,IAAI,CACrJ,IAAI,CACL,CAAC;IACF,MAAM,yBAAyB,GAAG,+BAA+B,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/H,MAAM,oBAAoB,GACxB,gGAAgG,CAAC,IAAI,CAAC,IAAI,CAAC;QAC3G,yDAAyD,CAAC,IAAI,CAAC,IAAI,CAAC;QACpE,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEzC,OAAO,oBAAoB,IAAI,oBAAoB,IAAI,yBAAyB,IAAI,oBAAoB,CAAC;AAC3G,CAAC;AAED,SAAS,yBAAyB,CAAC,OAAe;IAChD,MAAM,eAAe,GAAG,+CAA+C,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IACrG,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,YAAY,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9C,OAAO,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC3G,CAAC;AAED,SAAS,aAAa,CAAC,OAAe;IACpC,OAAO,OAAO,CAAC,OAAO,CAAC,gCAAgC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;AACtG,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAe;IAC9C,OAAO,OAAO,CAAC,OAAO,CACpB,sFAAsF,EACtF,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAC1C,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY;IACzC,MAAM,aAAa,GAAG,qFAAqF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvH,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,iBAAiB,CAAC,IAAI,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,MAAM,UAAU,GAAG,wGAAwG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvI,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC1D,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,iBAAiB,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAClD,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;AACxF,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY,EAAE,cAAsB;IAC7D,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,KAAK,GAAG,cAAc,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACjE,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;YACxB,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;aAAM,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;YAC/B,KAAK,IAAI,CAAC,CAAC;YACX,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBAChB,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAe;IACzC,MAAM,aAAa,GAAG,0EAA0E,CAAC;IAEjG,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QACpD,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACrC,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACtC,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAClC,MAAM,mBAAmB,GACvB,mBAAmB,CAAC,aAAa,CAAC,IAAI,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAEzF,IAAI,mBAAmB,IAAI,yBAAyB,CAAC,IAAI,CAAC,KAAK,UAAU,IAAI,CAAC,EAAE,CAAC;YAC/E,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,mBAAmB,CAAC,aAAqB;IAChD,OAAO,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;QAC/C,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACxE,OAAO,2BAA2B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC"}
|