@ainetwork/adk-provider-auth-next 0.3.2 → 0.3.4
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/{chunk-MUGDGWZH.js → chunk-IJK2CKGD.js} +3 -3
- package/dist/chunk-IJK2CKGD.js.map +1 -0
- package/dist/implements/next.auth.cjs +1 -1
- package/dist/implements/next.auth.cjs.map +1 -1
- package/dist/implements/next.auth.d.cts +2 -2
- package/dist/implements/next.auth.d.ts +2 -2
- package/dist/implements/next.auth.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -1
- package/implements/next.auth.ts +2 -2
- package/package.json +3 -3
- package/dist/chunk-MUGDGWZH.js.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// implements/next.auth.ts
|
|
2
|
-
import {
|
|
2
|
+
import { AuthModule } from "@ainetwork/adk/modules";
|
|
3
3
|
import jwt from "jsonwebtoken";
|
|
4
|
-
var NextAuth = class extends
|
|
4
|
+
var NextAuth = class extends AuthModule {
|
|
5
5
|
constructor(config) {
|
|
6
6
|
super();
|
|
7
7
|
this.config = config;
|
|
@@ -61,4 +61,4 @@ var NextAuth = class extends BaseAuth {
|
|
|
61
61
|
export {
|
|
62
62
|
NextAuth
|
|
63
63
|
};
|
|
64
|
-
//# sourceMappingURL=chunk-
|
|
64
|
+
//# sourceMappingURL=chunk-IJK2CKGD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../implements/next.auth.ts"],"sourcesContent":["import { AuthModule } from \"@ainetwork/adk/modules\";\nimport { AuthResponse } from \"@ainetwork/adk/types/auth\";\nimport type { Request } from \"express\";\nimport jwt from \"jsonwebtoken\";\n\nexport interface NextAuthConfig {\n nextAuthSecret: string;\n}\n\ninterface NextAuthJWTPayload {\n name?: string;\n email?: string;\n picture?: string;\n sub: string;\n iat: number;\n exp: number;\n jti?: string;\n}\n\nexport class NextAuth extends AuthModule {\n constructor(private readonly config: NextAuthConfig) {\n super();\n }\n\n private verifyNextAuthToken(token: string): Promise<NextAuthJWTPayload> {\n return new Promise((resolve, reject) => {\n if (!this.config.nextAuthSecret) {\n reject(new Error(\"NextAuth secret is required for NextAuth token verification\"));\n return;\n }\n\n jwt.verify(\n token,\n this.config.nextAuthSecret,\n {\n algorithms: [\"HS256\"],\n },\n (err, decoded) => {\n if (err) {\n reject(err);\n return;\n }\n resolve(decoded as NextAuthJWTPayload);\n }\n );\n });\n }\n\n public async authenticate(req: any, res: any): Promise<AuthResponse> {\n const token = this.extractBearerToken(req);\n if (!token) {\n return { isAuthenticated: false };\n }\n\n try {\n const payload = await this.verifyNextAuthToken(token);\n if (payload.sub) {\n return {\n isAuthenticated: true,\n userId: payload.sub,\n };\n } else {\n console.error(\"OTP auth verification failed: Token does not contain sub claim\");\n return { isAuthenticated: false };\n }\n } catch (err) {\n console.error(\"OTP auth verification failed:\", (err as Error).message);\n return { isAuthenticated: false };\n }\n }\n\n private extractBearerToken(req: Request): string | null {\n const authHeader = req.headers.authorization;\n if (!authHeader?.startsWith(\"Bearer \")) {\n return null;\n }\n return authHeader.substring(7);\n }\n}\n"],"mappings":";AAAA,SAAS,kBAAkB;AAG3B,OAAO,SAAS;AAgBT,IAAM,WAAN,cAAuB,WAAW;AAAA,EACvC,YAA6B,QAAwB;AACnD,UAAM;AADqB;AAAA,EAE7B;AAAA,EAEQ,oBAAoB,OAA4C;AACtE,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,UAAI,CAAC,KAAK,OAAO,gBAAgB;AAC/B,eAAO,IAAI,MAAM,6DAA6D,CAAC;AAC/E;AAAA,MACF;AAEA,UAAI;AAAA,QACF;AAAA,QACA,KAAK,OAAO;AAAA,QACZ;AAAA,UACE,YAAY,CAAC,OAAO;AAAA,QACtB;AAAA,QACA,CAAC,KAAK,YAAY;AAChB,cAAI,KAAK;AACP,mBAAO,GAAG;AACV;AAAA,UACF;AACA,kBAAQ,OAA6B;AAAA,QACvC;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAa,aAAa,KAAU,KAAiC;AACnE,UAAM,QAAQ,KAAK,mBAAmB,GAAG;AACzC,QAAI,CAAC,OAAO;AACV,aAAO,EAAE,iBAAiB,MAAM;AAAA,IAClC;AAEA,QAAI;AACF,YAAM,UAAU,MAAM,KAAK,oBAAoB,KAAK;AACpD,UAAI,QAAQ,KAAK;AACf,eAAO;AAAA,UACL,iBAAiB;AAAA,UACjB,QAAQ,QAAQ;AAAA,QAClB;AAAA,MACF,OAAO;AACL,gBAAQ,MAAM,gEAAgE;AAC9E,eAAO,EAAE,iBAAiB,MAAM;AAAA,MAClC;AAAA,IACF,SAAS,KAAK;AACZ,cAAQ,MAAM,iCAAkC,IAAc,OAAO;AACrE,aAAO,EAAE,iBAAiB,MAAM;AAAA,IAClC;AAAA,EACF;AAAA,EAEQ,mBAAmB,KAA6B;AACtD,UAAM,aAAa,IAAI,QAAQ;AAC/B,QAAI,CAAC,YAAY,WAAW,SAAS,GAAG;AACtC,aAAO;AAAA,IACT;AACA,WAAO,WAAW,UAAU,CAAC;AAAA,EAC/B;AACF;","names":[]}
|
|
@@ -35,7 +35,7 @@ __export(next_auth_exports, {
|
|
|
35
35
|
module.exports = __toCommonJS(next_auth_exports);
|
|
36
36
|
var import_modules = require("@ainetwork/adk/modules");
|
|
37
37
|
var import_jsonwebtoken = __toESM(require("jsonwebtoken"), 1);
|
|
38
|
-
var NextAuth = class extends import_modules.
|
|
38
|
+
var NextAuth = class extends import_modules.AuthModule {
|
|
39
39
|
constructor(config) {
|
|
40
40
|
super();
|
|
41
41
|
this.config = config;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../implements/next.auth.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"sources":["../../implements/next.auth.ts"],"sourcesContent":["import { AuthModule } from \"@ainetwork/adk/modules\";\nimport { AuthResponse } from \"@ainetwork/adk/types/auth\";\nimport type { Request } from \"express\";\nimport jwt from \"jsonwebtoken\";\n\nexport interface NextAuthConfig {\n nextAuthSecret: string;\n}\n\ninterface NextAuthJWTPayload {\n name?: string;\n email?: string;\n picture?: string;\n sub: string;\n iat: number;\n exp: number;\n jti?: string;\n}\n\nexport class NextAuth extends AuthModule {\n constructor(private readonly config: NextAuthConfig) {\n super();\n }\n\n private verifyNextAuthToken(token: string): Promise<NextAuthJWTPayload> {\n return new Promise((resolve, reject) => {\n if (!this.config.nextAuthSecret) {\n reject(new Error(\"NextAuth secret is required for NextAuth token verification\"));\n return;\n }\n\n jwt.verify(\n token,\n this.config.nextAuthSecret,\n {\n algorithms: [\"HS256\"],\n },\n (err, decoded) => {\n if (err) {\n reject(err);\n return;\n }\n resolve(decoded as NextAuthJWTPayload);\n }\n );\n });\n }\n\n public async authenticate(req: any, res: any): Promise<AuthResponse> {\n const token = this.extractBearerToken(req);\n if (!token) {\n return { isAuthenticated: false };\n }\n\n try {\n const payload = await this.verifyNextAuthToken(token);\n if (payload.sub) {\n return {\n isAuthenticated: true,\n userId: payload.sub,\n };\n } else {\n console.error(\"OTP auth verification failed: Token does not contain sub claim\");\n return { isAuthenticated: false };\n }\n } catch (err) {\n console.error(\"OTP auth verification failed:\", (err as Error).message);\n return { isAuthenticated: false };\n }\n }\n\n private extractBearerToken(req: Request): string | null {\n const authHeader = req.headers.authorization;\n if (!authHeader?.startsWith(\"Bearer \")) {\n return null;\n }\n return authHeader.substring(7);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAA2B;AAG3B,0BAAgB;AAgBT,IAAM,WAAN,cAAuB,0BAAW;AAAA,EACvC,YAA6B,QAAwB;AACnD,UAAM;AADqB;AAAA,EAE7B;AAAA,EAEQ,oBAAoB,OAA4C;AACtE,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,UAAI,CAAC,KAAK,OAAO,gBAAgB;AAC/B,eAAO,IAAI,MAAM,6DAA6D,CAAC;AAC/E;AAAA,MACF;AAEA,0BAAAA,QAAI;AAAA,QACF;AAAA,QACA,KAAK,OAAO;AAAA,QACZ;AAAA,UACE,YAAY,CAAC,OAAO;AAAA,QACtB;AAAA,QACA,CAAC,KAAK,YAAY;AAChB,cAAI,KAAK;AACP,mBAAO,GAAG;AACV;AAAA,UACF;AACA,kBAAQ,OAA6B;AAAA,QACvC;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAa,aAAa,KAAU,KAAiC;AACnE,UAAM,QAAQ,KAAK,mBAAmB,GAAG;AACzC,QAAI,CAAC,OAAO;AACV,aAAO,EAAE,iBAAiB,MAAM;AAAA,IAClC;AAEA,QAAI;AACF,YAAM,UAAU,MAAM,KAAK,oBAAoB,KAAK;AACpD,UAAI,QAAQ,KAAK;AACf,eAAO;AAAA,UACL,iBAAiB;AAAA,UACjB,QAAQ,QAAQ;AAAA,QAClB;AAAA,MACF,OAAO;AACL,gBAAQ,MAAM,gEAAgE;AAC9E,eAAO,EAAE,iBAAiB,MAAM;AAAA,MAClC;AAAA,IACF,SAAS,KAAK;AACZ,cAAQ,MAAM,iCAAkC,IAAc,OAAO;AACrE,aAAO,EAAE,iBAAiB,MAAM;AAAA,IAClC;AAAA,EACF;AAAA,EAEQ,mBAAmB,KAA6B;AACtD,UAAM,aAAa,IAAI,QAAQ;AAC/B,QAAI,CAAC,YAAY,WAAW,SAAS,GAAG;AACtC,aAAO;AAAA,IACT;AACA,WAAO,WAAW,UAAU,CAAC;AAAA,EAC/B;AACF;","names":["jwt"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AuthModule } from '@ainetwork/adk/modules';
|
|
2
2
|
import { AuthResponse } from '@ainetwork/adk/types/auth';
|
|
3
3
|
|
|
4
4
|
interface NextAuthConfig {
|
|
5
5
|
nextAuthSecret: string;
|
|
6
6
|
}
|
|
7
|
-
declare class NextAuth extends
|
|
7
|
+
declare class NextAuth extends AuthModule {
|
|
8
8
|
private readonly config;
|
|
9
9
|
constructor(config: NextAuthConfig);
|
|
10
10
|
private verifyNextAuthToken;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AuthModule } from '@ainetwork/adk/modules';
|
|
2
2
|
import { AuthResponse } from '@ainetwork/adk/types/auth';
|
|
3
3
|
|
|
4
4
|
interface NextAuthConfig {
|
|
5
5
|
nextAuthSecret: string;
|
|
6
6
|
}
|
|
7
|
-
declare class NextAuth extends
|
|
7
|
+
declare class NextAuth extends AuthModule {
|
|
8
8
|
private readonly config;
|
|
9
9
|
constructor(config: NextAuthConfig);
|
|
10
10
|
private verifyNextAuthToken;
|
package/dist/index.cjs
CHANGED
|
@@ -37,7 +37,7 @@ module.exports = __toCommonJS(index_exports);
|
|
|
37
37
|
// implements/next.auth.ts
|
|
38
38
|
var import_modules = require("@ainetwork/adk/modules");
|
|
39
39
|
var import_jsonwebtoken = __toESM(require("jsonwebtoken"), 1);
|
|
40
|
-
var NextAuth = class extends import_modules.
|
|
40
|
+
var NextAuth = class extends import_modules.AuthModule {
|
|
41
41
|
constructor(config) {
|
|
42
42
|
super();
|
|
43
43
|
this.config = config;
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../index.ts","../implements/next.auth.ts"],"sourcesContent":["export { NextAuth, type NextAuthConfig } from \"./implements/next.auth\";\n","import {
|
|
1
|
+
{"version":3,"sources":["../index.ts","../implements/next.auth.ts"],"sourcesContent":["export { NextAuth, type NextAuthConfig } from \"./implements/next.auth\";\n","import { AuthModule } from \"@ainetwork/adk/modules\";\nimport { AuthResponse } from \"@ainetwork/adk/types/auth\";\nimport type { Request } from \"express\";\nimport jwt from \"jsonwebtoken\";\n\nexport interface NextAuthConfig {\n nextAuthSecret: string;\n}\n\ninterface NextAuthJWTPayload {\n name?: string;\n email?: string;\n picture?: string;\n sub: string;\n iat: number;\n exp: number;\n jti?: string;\n}\n\nexport class NextAuth extends AuthModule {\n constructor(private readonly config: NextAuthConfig) {\n super();\n }\n\n private verifyNextAuthToken(token: string): Promise<NextAuthJWTPayload> {\n return new Promise((resolve, reject) => {\n if (!this.config.nextAuthSecret) {\n reject(new Error(\"NextAuth secret is required for NextAuth token verification\"));\n return;\n }\n\n jwt.verify(\n token,\n this.config.nextAuthSecret,\n {\n algorithms: [\"HS256\"],\n },\n (err, decoded) => {\n if (err) {\n reject(err);\n return;\n }\n resolve(decoded as NextAuthJWTPayload);\n }\n );\n });\n }\n\n public async authenticate(req: any, res: any): Promise<AuthResponse> {\n const token = this.extractBearerToken(req);\n if (!token) {\n return { isAuthenticated: false };\n }\n\n try {\n const payload = await this.verifyNextAuthToken(token);\n if (payload.sub) {\n return {\n isAuthenticated: true,\n userId: payload.sub,\n };\n } else {\n console.error(\"OTP auth verification failed: Token does not contain sub claim\");\n return { isAuthenticated: false };\n }\n } catch (err) {\n console.error(\"OTP auth verification failed:\", (err as Error).message);\n return { isAuthenticated: false };\n }\n }\n\n private extractBearerToken(req: Request): string | null {\n const authHeader = req.headers.authorization;\n if (!authHeader?.startsWith(\"Bearer \")) {\n return null;\n }\n return authHeader.substring(7);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,qBAA2B;AAG3B,0BAAgB;AAgBT,IAAM,WAAN,cAAuB,0BAAW;AAAA,EACvC,YAA6B,QAAwB;AACnD,UAAM;AADqB;AAAA,EAE7B;AAAA,EAEQ,oBAAoB,OAA4C;AACtE,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,UAAI,CAAC,KAAK,OAAO,gBAAgB;AAC/B,eAAO,IAAI,MAAM,6DAA6D,CAAC;AAC/E;AAAA,MACF;AAEA,0BAAAA,QAAI;AAAA,QACF;AAAA,QACA,KAAK,OAAO;AAAA,QACZ;AAAA,UACE,YAAY,CAAC,OAAO;AAAA,QACtB;AAAA,QACA,CAAC,KAAK,YAAY;AAChB,cAAI,KAAK;AACP,mBAAO,GAAG;AACV;AAAA,UACF;AACA,kBAAQ,OAA6B;AAAA,QACvC;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAa,aAAa,KAAU,KAAiC;AACnE,UAAM,QAAQ,KAAK,mBAAmB,GAAG;AACzC,QAAI,CAAC,OAAO;AACV,aAAO,EAAE,iBAAiB,MAAM;AAAA,IAClC;AAEA,QAAI;AACF,YAAM,UAAU,MAAM,KAAK,oBAAoB,KAAK;AACpD,UAAI,QAAQ,KAAK;AACf,eAAO;AAAA,UACL,iBAAiB;AAAA,UACjB,QAAQ,QAAQ;AAAA,QAClB;AAAA,MACF,OAAO;AACL,gBAAQ,MAAM,gEAAgE;AAC9E,eAAO,EAAE,iBAAiB,MAAM;AAAA,MAClC;AAAA,IACF,SAAS,KAAK;AACZ,cAAQ,MAAM,iCAAkC,IAAc,OAAO;AACrE,aAAO,EAAE,iBAAiB,MAAM;AAAA,IAClC;AAAA,EACF;AAAA,EAEQ,mBAAmB,KAA6B;AACtD,UAAM,aAAa,IAAI,QAAQ;AAC/B,QAAI,CAAC,YAAY,WAAW,SAAS,GAAG;AACtC,aAAO;AAAA,IACT;AACA,WAAO,WAAW,UAAU,CAAC;AAAA,EAC/B;AACF;","names":["jwt"]}
|
package/dist/index.js
CHANGED
package/implements/next.auth.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AuthModule } from "@ainetwork/adk/modules";
|
|
2
2
|
import { AuthResponse } from "@ainetwork/adk/types/auth";
|
|
3
3
|
import type { Request } from "express";
|
|
4
4
|
import jwt from "jsonwebtoken";
|
|
@@ -17,7 +17,7 @@ interface NextAuthJWTPayload {
|
|
|
17
17
|
jti?: string;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
export class NextAuth extends
|
|
20
|
+
export class NextAuth extends AuthModule {
|
|
21
21
|
constructor(private readonly config: NextAuthConfig) {
|
|
22
22
|
super();
|
|
23
23
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ainetwork/adk-provider-auth-next",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.4",
|
|
4
4
|
"author": "AI Network (https://ainetwork.ai)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"clean": "rm -rf dist"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@ainetwork/adk": "^0.3.
|
|
24
|
+
"@ainetwork/adk": "^0.3.4",
|
|
25
25
|
"jsonwebtoken": "^9.0.2"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
@@ -33,5 +33,5 @@
|
|
|
33
33
|
"publishConfig": {
|
|
34
34
|
"access": "public"
|
|
35
35
|
},
|
|
36
|
-
"gitHead": "
|
|
36
|
+
"gitHead": "a1e19f88b1255e8b5d3fd6f60edb82139b324123"
|
|
37
37
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../implements/next.auth.ts"],"sourcesContent":["import { BaseAuth } from \"@ainetwork/adk/modules\";\nimport { AuthResponse } from \"@ainetwork/adk/types/auth\";\nimport type { Request } from \"express\";\nimport jwt from \"jsonwebtoken\";\n\nexport interface NextAuthConfig {\n nextAuthSecret: string;\n}\n\ninterface NextAuthJWTPayload {\n name?: string;\n email?: string;\n picture?: string;\n sub: string;\n iat: number;\n exp: number;\n jti?: string;\n}\n\nexport class NextAuth extends BaseAuth {\n constructor(private readonly config: NextAuthConfig) {\n super();\n }\n\n private verifyNextAuthToken(token: string): Promise<NextAuthJWTPayload> {\n return new Promise((resolve, reject) => {\n if (!this.config.nextAuthSecret) {\n reject(new Error(\"NextAuth secret is required for NextAuth token verification\"));\n return;\n }\n\n jwt.verify(\n token,\n this.config.nextAuthSecret,\n {\n algorithms: [\"HS256\"],\n },\n (err, decoded) => {\n if (err) {\n reject(err);\n return;\n }\n resolve(decoded as NextAuthJWTPayload);\n }\n );\n });\n }\n\n public async authenticate(req: any, res: any): Promise<AuthResponse> {\n const token = this.extractBearerToken(req);\n if (!token) {\n return { isAuthenticated: false };\n }\n\n try {\n const payload = await this.verifyNextAuthToken(token);\n if (payload.sub) {\n return {\n isAuthenticated: true,\n userId: payload.sub,\n };\n } else {\n console.error(\"OTP auth verification failed: Token does not contain sub claim\");\n return { isAuthenticated: false };\n }\n } catch (err) {\n console.error(\"OTP auth verification failed:\", (err as Error).message);\n return { isAuthenticated: false };\n }\n }\n\n private extractBearerToken(req: Request): string | null {\n const authHeader = req.headers.authorization;\n if (!authHeader?.startsWith(\"Bearer \")) {\n return null;\n }\n return authHeader.substring(7);\n }\n}\n"],"mappings":";AAAA,SAAS,gBAAgB;AAGzB,OAAO,SAAS;AAgBT,IAAM,WAAN,cAAuB,SAAS;AAAA,EACrC,YAA6B,QAAwB;AACnD,UAAM;AADqB;AAAA,EAE7B;AAAA,EAEQ,oBAAoB,OAA4C;AACtE,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,UAAI,CAAC,KAAK,OAAO,gBAAgB;AAC/B,eAAO,IAAI,MAAM,6DAA6D,CAAC;AAC/E;AAAA,MACF;AAEA,UAAI;AAAA,QACF;AAAA,QACA,KAAK,OAAO;AAAA,QACZ;AAAA,UACE,YAAY,CAAC,OAAO;AAAA,QACtB;AAAA,QACA,CAAC,KAAK,YAAY;AAChB,cAAI,KAAK;AACP,mBAAO,GAAG;AACV;AAAA,UACF;AACA,kBAAQ,OAA6B;AAAA,QACvC;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,MAAa,aAAa,KAAU,KAAiC;AACnE,UAAM,QAAQ,KAAK,mBAAmB,GAAG;AACzC,QAAI,CAAC,OAAO;AACV,aAAO,EAAE,iBAAiB,MAAM;AAAA,IAClC;AAEA,QAAI;AACF,YAAM,UAAU,MAAM,KAAK,oBAAoB,KAAK;AACpD,UAAI,QAAQ,KAAK;AACf,eAAO;AAAA,UACL,iBAAiB;AAAA,UACjB,QAAQ,QAAQ;AAAA,QAClB;AAAA,MACF,OAAO;AACL,gBAAQ,MAAM,gEAAgE;AAC9E,eAAO,EAAE,iBAAiB,MAAM;AAAA,MAClC;AAAA,IACF,SAAS,KAAK;AACZ,cAAQ,MAAM,iCAAkC,IAAc,OAAO;AACrE,aAAO,EAAE,iBAAiB,MAAM;AAAA,IAClC;AAAA,EACF;AAAA,EAEQ,mBAAmB,KAA6B;AACtD,UAAM,aAAa,IAAI,QAAQ;AAC/B,QAAI,CAAC,YAAY,WAAW,SAAS,GAAG;AACtC,aAAO;AAAA,IACT;AACA,WAAO,WAAW,UAAU,CAAC;AAAA,EAC/B;AACF;","names":[]}
|