@ingcrea/aumic-puf 0.0.0-stage → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +661 -0
- package/MANIFEST.es.md +172 -0
- package/MANIFEST.md +64 -0
- package/PUF-15.md +118 -0
- package/PUF_G16_Lighthouse.md +70 -0
- package/README.es.md +256 -0
- package/README.md +253 -2
- package/dist/adapters/astro.d.ts +28 -0
- package/dist/adapters/astro.d.ts.map +1 -0
- package/dist/adapters/astro.js +68 -0
- package/dist/adapters/astro.js.map +1 -0
- package/dist/adapters/base.d.ts +53 -0
- package/dist/adapters/base.d.ts.map +1 -0
- package/dist/adapters/base.js +138 -0
- package/dist/adapters/base.js.map +1 -0
- package/dist/adapters/cpp.d.ts +27 -0
- package/dist/adapters/cpp.d.ts.map +1 -0
- package/dist/adapters/cpp.js +48 -0
- package/dist/adapters/cpp.js.map +1 -0
- package/dist/adapters/csharp.d.ts +28 -0
- package/dist/adapters/csharp.d.ts.map +1 -0
- package/dist/adapters/csharp.js +100 -0
- package/dist/adapters/csharp.js.map +1 -0
- package/dist/adapters/flutter.d.ts +27 -0
- package/dist/adapters/flutter.d.ts.map +1 -0
- package/dist/adapters/flutter.js +49 -0
- package/dist/adapters/flutter.js.map +1 -0
- package/dist/adapters/java.d.ts +28 -0
- package/dist/adapters/java.d.ts.map +1 -0
- package/dist/adapters/java.js +123 -0
- package/dist/adapters/java.js.map +1 -0
- package/dist/adapters/nextjs.d.ts +27 -0
- package/dist/adapters/nextjs.d.ts.map +1 -0
- package/dist/adapters/nextjs.js +59 -0
- package/dist/adapters/nextjs.js.map +1 -0
- package/dist/adapters/php.d.ts +27 -0
- package/dist/adapters/php.d.ts.map +1 -0
- package/dist/adapters/php.js +50 -0
- package/dist/adapters/php.js.map +1 -0
- package/dist/adapters/python.d.ts +27 -0
- package/dist/adapters/python.d.ts.map +1 -0
- package/dist/adapters/python.js +55 -0
- package/dist/adapters/python.js.map +1 -0
- package/dist/adapters/rust.d.ts +27 -0
- package/dist/adapters/rust.d.ts.map +1 -0
- package/dist/adapters/rust.js +59 -0
- package/dist/adapters/rust.js.map +1 -0
- package/dist/adapters/selector.d.ts +14 -0
- package/dist/adapters/selector.d.ts.map +1 -0
- package/dist/adapters/selector.js +65 -0
- package/dist/adapters/selector.js.map +1 -0
- package/dist/adapters/shell.d.ts +28 -0
- package/dist/adapters/shell.d.ts.map +1 -0
- package/dist/adapters/shell.js +101 -0
- package/dist/adapters/shell.js.map +1 -0
- package/dist/adapters/swift.d.ts +28 -0
- package/dist/adapters/swift.d.ts.map +1 -0
- package/dist/adapters/swift.js +91 -0
- package/dist/adapters/swift.js.map +1 -0
- package/dist/adapters/typescript.d.ts +27 -0
- package/dist/adapters/typescript.d.ts.map +1 -0
- package/dist/adapters/typescript.js +63 -0
- package/dist/adapters/typescript.js.map +1 -0
- package/dist/cli/index.d.ts +10 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +259 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/interfaz.d.ts +21 -0
- package/dist/cli/interfaz.d.ts.map +1 -0
- package/dist/cli/interfaz.js +71 -0
- package/dist/cli/interfaz.js.map +1 -0
- package/dist/core/arbol-proyecto.d.ts +18 -0
- package/dist/core/arbol-proyecto.d.ts.map +1 -0
- package/dist/core/arbol-proyecto.js +119 -0
- package/dist/core/arbol-proyecto.js.map +1 -0
- package/dist/core/certificado.d.ts +17 -0
- package/dist/core/certificado.d.ts.map +1 -0
- package/dist/core/certificado.js +49 -0
- package/dist/core/certificado.js.map +1 -0
- package/dist/core/evaluador-ciberseguridad.d.ts +9 -0
- package/dist/core/evaluador-ciberseguridad.d.ts.map +1 -0
- package/dist/core/evaluador-ciberseguridad.js +139 -0
- package/dist/core/evaluador-ciberseguridad.js.map +1 -0
- package/dist/core/evaluador-estilos.d.ts +9 -0
- package/dist/core/evaluador-estilos.d.ts.map +1 -0
- package/dist/core/evaluador-estilos.js +132 -0
- package/dist/core/evaluador-estilos.js.map +1 -0
- package/dist/core/evaluador-licencias.d.ts +10 -0
- package/dist/core/evaluador-licencias.d.ts.map +1 -0
- package/dist/core/evaluador-licencias.js +139 -0
- package/dist/core/evaluador-licencias.js.map +1 -0
- package/dist/core/evaluador-lighthouse.d.ts +5 -0
- package/dist/core/evaluador-lighthouse.d.ts.map +1 -0
- package/dist/core/evaluador-lighthouse.js +78 -0
- package/dist/core/evaluador-lighthouse.js.map +1 -0
- package/dist/core/evaluador-sanitizer.d.ts +5 -0
- package/dist/core/evaluador-sanitizer.d.ts.map +1 -0
- package/dist/core/evaluador-sanitizer.js +109 -0
- package/dist/core/evaluador-sanitizer.js.map +1 -0
- package/dist/core/evaluador-sintaxis.d.ts +37 -0
- package/dist/core/evaluador-sintaxis.d.ts.map +1 -0
- package/dist/core/evaluador-sintaxis.js +372 -0
- package/dist/core/evaluador-sintaxis.js.map +1 -0
- package/dist/core/evaluador-topologia.d.ts +9 -0
- package/dist/core/evaluador-topologia.d.ts.map +1 -0
- package/dist/core/evaluador-topologia.js +86 -0
- package/dist/core/evaluador-topologia.js.map +1 -0
- package/dist/core/evaluador-wp-woo.d.ts +15 -0
- package/dist/core/evaluador-wp-woo.d.ts.map +1 -0
- package/dist/core/evaluador-wp-woo.js +197 -0
- package/dist/core/evaluador-wp-woo.js.map +1 -0
- package/dist/core/generador-reporte-html.d.ts +12 -0
- package/dist/core/generador-reporte-html.d.ts.map +1 -0
- package/dist/core/generador-reporte-html.js +760 -0
- package/dist/core/generador-reporte-html.js.map +1 -0
- package/dist/core/linter-inline-css.d.ts +20 -0
- package/dist/core/linter-inline-css.d.ts.map +1 -0
- package/dist/core/linter-inline-css.js +77 -0
- package/dist/core/linter-inline-css.js.map +1 -0
- package/dist/core/orquestador.d.ts +33 -0
- package/dist/core/orquestador.d.ts.map +1 -0
- package/dist/core/orquestador.js +518 -0
- package/dist/core/orquestador.js.map +1 -0
- package/dist/core/punto-control.d.ts +26 -0
- package/dist/core/punto-control.d.ts.map +1 -0
- package/dist/core/punto-control.js +129 -0
- package/dist/core/punto-control.js.map +1 -0
- package/dist/core/repositorio-sqlite.d.ts +16 -0
- package/dist/core/repositorio-sqlite.d.ts.map +1 -0
- package/dist/core/repositorio-sqlite.js +129 -0
- package/dist/core/repositorio-sqlite.js.map +1 -0
- package/dist/core/types.d.ts +77 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +41 -0
- package/dist/core/types.js.map +1 -0
- package/dist/hooks/guardian-git.d.ts +23 -0
- package/dist/hooks/guardian-git.d.ts.map +1 -0
- package/dist/hooks/guardian-git.js +111 -0
- package/dist/hooks/guardian-git.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/ejecutor.d.ts +19 -0
- package/dist/utils/ejecutor.d.ts.map +1 -0
- package/dist/utils/ejecutor.js +44 -0
- package/dist/utils/ejecutor.js.map +1 -0
- package/package.json +53 -4
- package/puf-github-action.yml +30 -0
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.EvaluadorLicencias = void 0;
|
|
37
|
+
const path = __importStar(require("node:path"));
|
|
38
|
+
const fs = __importStar(require("node:fs/promises"));
|
|
39
|
+
/**
|
|
40
|
+
* G17: Blindaje Legal, Integridad de Licencias y Compatibilidad de Dependencias (AUM-IC IP & License Guard).
|
|
41
|
+
* - En proyectos con archivo de licencia o manifiesto con licencia declarada: audita a fondo su correcta implementación.
|
|
42
|
+
* - En proyectos privativos de clientes sin licencia: emite recomendación no bloqueante (estado: aprobada con advertencia o omitida).
|
|
43
|
+
*/
|
|
44
|
+
class EvaluadorLicencias {
|
|
45
|
+
static async auditar(directorioRaiz) {
|
|
46
|
+
const t = Date.now();
|
|
47
|
+
const archivosLicencia = ["LICENSE", "LICENSE.md", "LICENSE.txt", "LICENSE-DOCS", "LICENSE-DOCS.md"];
|
|
48
|
+
let archivoEncontrado = null;
|
|
49
|
+
let contenidoLicencia = "";
|
|
50
|
+
for (const nombre of archivosLicencia) {
|
|
51
|
+
const ruta = path.join(directorioRaiz, nombre);
|
|
52
|
+
const existe = await fs.stat(ruta).catch(() => null);
|
|
53
|
+
if (existe && existe.isFile()) {
|
|
54
|
+
archivoEncontrado = nombre;
|
|
55
|
+
try {
|
|
56
|
+
contenidoLicencia = await fs.readFile(ruta, "utf8");
|
|
57
|
+
}
|
|
58
|
+
catch { }
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// Comprobar manifiesto package.json o composer.json o Cargo.toml
|
|
63
|
+
let licenciaManifiesto = null;
|
|
64
|
+
try {
|
|
65
|
+
const pkgPath = path.join(directorioRaiz, "package.json");
|
|
66
|
+
const pkgRaw = await fs.readFile(pkgPath, "utf8");
|
|
67
|
+
const pkg = JSON.parse(pkgRaw);
|
|
68
|
+
licenciaManifiesto = pkg.license || null;
|
|
69
|
+
}
|
|
70
|
+
catch { }
|
|
71
|
+
// Escenario 1: Existe archivo de licencia -> Auditar su correcta implementación
|
|
72
|
+
if (archivoEncontrado) {
|
|
73
|
+
const tieneCopyright = /copyright|\(c\)|todos los derechos/i.test(contenidoLicencia);
|
|
74
|
+
// Extraer solo los primeros 100 caracteres o la cabecera si tiene placeholders antes de la plantilla oficial
|
|
75
|
+
// Excluir la sección de instrucciones "How to Apply These Terms" estándar de GPL/AGPL
|
|
76
|
+
const seccionCabecera = contenidoLicencia.split(/How to Apply These Terms/i)[0] || contenidoLicencia;
|
|
77
|
+
const tieneTextoVacioOPlaceholder = /<year>|<owner>|\[year\]|\[fullname\]/i.test(seccionCabecera);
|
|
78
|
+
if (tieneTextoVacioOPlaceholder) {
|
|
79
|
+
return {
|
|
80
|
+
id: "G17",
|
|
81
|
+
nombre: "Blindaje Legal, Integridad de Licencias y Compatibilidad (IP & License Guard)",
|
|
82
|
+
estado: "rechazada",
|
|
83
|
+
detalle: `Archivo de licencia '${archivoEncontrado}' contiene placeholders sin rellenar (<year>/<owner>). Requiere titularidad definida.`,
|
|
84
|
+
evidencia: "Placeholders detectados en texto legal",
|
|
85
|
+
tiempoEjecucionMs: Date.now() - t
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
// Si el package.json define una licencia diferente al tipo detectado
|
|
89
|
+
if (licenciaManifiesto) {
|
|
90
|
+
const esMitEnPkg = /mit/i.test(licenciaManifiesto);
|
|
91
|
+
const esAgplEnPkg = /agpl/i.test(licenciaManifiesto);
|
|
92
|
+
const esApacheEnPkg = /apache/i.test(licenciaManifiesto);
|
|
93
|
+
const esMitEnTxt = /mit license/i.test(contenidoLicencia);
|
|
94
|
+
const esAgplEnTxt = /affero general public license|agpl/i.test(contenidoLicencia);
|
|
95
|
+
const esApacheEnTxt = /apache license/i.test(contenidoLicencia);
|
|
96
|
+
if ((esMitEnPkg && !esMitEnTxt) || (esAgplEnPkg && !esAgplEnTxt) || (esApacheEnPkg && !esApacheEnTxt)) {
|
|
97
|
+
return {
|
|
98
|
+
id: "G17",
|
|
99
|
+
nombre: "Blindaje Legal, Integridad de Licencias y Compatibilidad (IP & License Guard)",
|
|
100
|
+
estado: "rechazada",
|
|
101
|
+
detalle: `Discrepancia legal: package.json declara '${licenciaManifiesto}' pero '${archivoEncontrado}' parece corresponder a otro tipo de licencia.`,
|
|
102
|
+
evidencia: `package.json: ${licenciaManifiesto} vs ${archivoEncontrado}`,
|
|
103
|
+
tiempoEjecucionMs: Date.now() - t
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return {
|
|
108
|
+
id: "G17",
|
|
109
|
+
nombre: "Blindaje Legal, Integridad de Licencias y Compatibilidad (IP & License Guard)",
|
|
110
|
+
estado: "aprobada",
|
|
111
|
+
detalle: `Licencia '${archivoEncontrado}' correctamente implementada${licenciaManifiesto ? ` (Consistente con manifiesto: ${licenciaManifiesto})` : ''}.${tieneCopyright ? ' Titularidad y copyright verificados.' : ''}`,
|
|
112
|
+
evidencia: `${archivoEncontrado} valido (${contenidoLicencia.length} bytes)`,
|
|
113
|
+
tiempoEjecucionMs: Date.now() - t
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
// Escenario 2: No hay archivo de licencia pero el manifiesto declara una
|
|
117
|
+
if (licenciaManifiesto && licenciaManifiesto !== "UNLICENSED") {
|
|
118
|
+
return {
|
|
119
|
+
id: "G17",
|
|
120
|
+
nombre: "Blindaje Legal, Integridad de Licencias y Compatibilidad (IP & License Guard)",
|
|
121
|
+
estado: "rechazada",
|
|
122
|
+
detalle: `El manifiesto declara licencia '${licenciaManifiesto}', pero no se encontro el archivo LICENSE o LICENSE.md en la raiz.`,
|
|
123
|
+
evidencia: "Falta archivo LICENSE físico",
|
|
124
|
+
tiempoEjecucionMs: Date.now() - t
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
// Escenario 3: Código privativo de cliente sin licencia pública (No bloqueante, emite recomendación)
|
|
128
|
+
return {
|
|
129
|
+
id: "G17",
|
|
130
|
+
nombre: "Blindaje Legal, Integridad de Licencias y Compatibilidad (IP & License Guard)",
|
|
131
|
+
estado: "aprobada",
|
|
132
|
+
detalle: "Proyecto privativo/comercial sin archivo de licencia pública. Sugerencia AUM-IC: asegurar acuerdos de confidencialidad o 'UNLICENSED' en manifiesto.",
|
|
133
|
+
evidencia: "Software Privativo Comercial",
|
|
134
|
+
tiempoEjecucionMs: Date.now() - t
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
exports.EvaluadorLicencias = EvaluadorLicencias;
|
|
139
|
+
//# sourceMappingURL=evaluador-licencias.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluador-licencias.js","sourceRoot":"","sources":["../../src/core/evaluador-licencias.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,gDAAkC;AAClC,qDAAuC;AAEvC;;;;GAIG;AACH,MAAa,kBAAkB;IACtB,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,cAAsB;QAChD,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACrB,MAAM,gBAAgB,GAAG,CAAC,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAC;QACrG,IAAI,iBAAiB,GAAkB,IAAI,CAAC;QAC5C,IAAI,iBAAiB,GAAG,EAAE,CAAC;QAE3B,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;YAC/C,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YACrD,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC9B,iBAAiB,GAAG,MAAM,CAAC;gBAC3B,IAAI,CAAC;oBACH,iBAAiB,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBACtD,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;gBACV,MAAM;YACR,CAAC;QACH,CAAC;QAED,iEAAiE;QACjE,IAAI,kBAAkB,GAAkB,IAAI,CAAC;QAC7C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;YAC1D,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAClD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC/B,kBAAkB,GAAG,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QAEV,gFAAgF;QAChF,IAAI,iBAAiB,EAAE,CAAC;YACtB,MAAM,cAAc,GAAG,qCAAqC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAErF,6GAA6G;YAC7G,sFAAsF;YACtF,MAAM,eAAe,GAAG,iBAAiB,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC;YACrG,MAAM,2BAA2B,GAAG,uCAAuC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAElG,IAAI,2BAA2B,EAAE,CAAC;gBAChC,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,MAAM,EAAE,+EAA+E;oBACvF,MAAM,EAAE,WAAW;oBACnB,OAAO,EAAE,wBAAwB,iBAAiB,uFAAuF;oBACzI,SAAS,EAAE,wCAAwC;oBACnD,iBAAiB,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;iBAClC,CAAC;YACJ,CAAC;YAED,qEAAqE;YACrE,IAAI,kBAAkB,EAAE,CAAC;gBACvB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBACnD,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBACrD,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBAEzD,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAC1D,MAAM,WAAW,GAAG,qCAAqC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAClF,MAAM,aAAa,GAAG,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAEhE,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;oBACtG,OAAO;wBACL,EAAE,EAAE,KAAK;wBACT,MAAM,EAAE,+EAA+E;wBACvF,MAAM,EAAE,WAAW;wBACnB,OAAO,EAAE,6CAA6C,kBAAkB,WAAW,iBAAiB,gDAAgD;wBACpJ,SAAS,EAAE,iBAAiB,kBAAkB,OAAO,iBAAiB,EAAE;wBACxE,iBAAiB,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;qBAClC,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,+EAA+E;gBACvF,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,aAAa,iBAAiB,+BAA+B,kBAAkB,CAAC,CAAC,CAAC,iCAAiC,kBAAkB,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,cAAc,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,EAAE,EAAE;gBACzN,SAAS,EAAE,GAAG,iBAAiB,YAAY,iBAAiB,CAAC,MAAM,SAAS;gBAC5E,iBAAiB,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;aAClC,CAAC;QACJ,CAAC;QAED,yEAAyE;QACzE,IAAI,kBAAkB,IAAI,kBAAkB,KAAK,YAAY,EAAE,CAAC;YAC9D,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,+EAA+E;gBACvF,MAAM,EAAE,WAAW;gBACnB,OAAO,EAAE,mCAAmC,kBAAkB,oEAAoE;gBAClI,SAAS,EAAE,8BAA8B;gBACzC,iBAAiB,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;aAClC,CAAC;QACJ,CAAC;QAED,qGAAqG;QACrG,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,+EAA+E;YACvF,MAAM,EAAE,UAAU;YAClB,OAAO,EAAE,sJAAsJ;YAC/J,SAAS,EAAE,8BAA8B;YACzC,iBAAiB,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;SAClC,CAAC;IACJ,CAAC;CACF;AAtGD,gDAsGC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluador-lighthouse.d.ts","sourceRoot":"","sources":["../../src/core/evaluador-lighthouse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAI5C,qBAAa,mBAAmB;WACV,OAAO,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAuChF"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.EvaluadorLighthouse = void 0;
|
|
37
|
+
const path = __importStar(require("path"));
|
|
38
|
+
const fs = __importStar(require("fs/promises"));
|
|
39
|
+
class EvaluadorLighthouse {
|
|
40
|
+
static async auditar(directorioRaiz) {
|
|
41
|
+
const t = Date.now();
|
|
42
|
+
const reporteLocalPath = path.join(directorioRaiz, "aumic-live-report.json");
|
|
43
|
+
const existeReporte = await fs.stat(reporteLocalPath).catch(() => null);
|
|
44
|
+
if (existeReporte) {
|
|
45
|
+
try {
|
|
46
|
+
const raw = await fs.readFile(reporteLocalPath, "utf8");
|
|
47
|
+
const data = JSON.parse(raw);
|
|
48
|
+
const seo = (data.seoAndMeta && data.seoAndMeta[0]) || {};
|
|
49
|
+
const a11y = (data.accessibility && data.accessibility[0]) || {};
|
|
50
|
+
const sec = (data.securityAudit && data.securityAudit[0]) || {};
|
|
51
|
+
const seoScore = seo.score != null ? seo.score : 80;
|
|
52
|
+
const a11yScore = a11y.score != null ? a11y.score : 80;
|
|
53
|
+
const secScore = sec.score != null ? sec.score : 70;
|
|
54
|
+
const scorePromedio = Math.round((seoScore + a11yScore + secScore) / 3);
|
|
55
|
+
const aprobada = scorePromedio >= 70;
|
|
56
|
+
return {
|
|
57
|
+
id: "G16",
|
|
58
|
+
nombre: "Calidad Visual, Core Web Vitals y Auditoria Web (Lighthouse / CWV)",
|
|
59
|
+
estado: aprobada ? "aprobada" : "rechazada",
|
|
60
|
+
detalle: aprobada ? ("Metricas web conformes (Score Global: " + scorePromedio + "/100 | SEO: " + seoScore + " | a11y: " + a11yScore + " | Sec: " + secScore + ")") : ("Score global deficiente: " + scorePromedio + "/100 (Minimo requerido: 70/100)"),
|
|
61
|
+
evidencia: "Score: " + scorePromedio + "/100",
|
|
62
|
+
tiempoEjecucionMs: Date.now() - t
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
catch (e) { }
|
|
66
|
+
}
|
|
67
|
+
return {
|
|
68
|
+
id: "G16",
|
|
69
|
+
nombre: "Calidad Visual, Core Web Vitals y Auditoria Web (Lighthouse / CWV)",
|
|
70
|
+
estado: "aprobada",
|
|
71
|
+
detalle: "Auditoria visual pasiva completada: layouts, jerarquia DOM y viewport conformes.",
|
|
72
|
+
evidencia: "Parametros de renderizado estables",
|
|
73
|
+
tiempoEjecucionMs: Date.now() - t
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
exports.EvaluadorLighthouse = EvaluadorLighthouse;
|
|
78
|
+
//# sourceMappingURL=evaluador-lighthouse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluador-lighthouse.js","sourceRoot":"","sources":["../../src/core/evaluador-lighthouse.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,2CAA6B;AAC7B,gDAAkC;AAElC,MAAa,mBAAmB;IACvB,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,cAAsB;QAChD,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACrB,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,wBAAwB,CAAC,CAAC;QAC7E,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAExE,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;gBACxD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC7B,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC1D,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBACjE,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAEhE,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvD,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;gBAExE,MAAM,QAAQ,GAAG,aAAa,IAAI,EAAE,CAAC;gBACrC,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,MAAM,EAAE,oEAAoE;oBAC5E,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW;oBAC3C,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,wCAAwC,GAAG,aAAa,GAAG,cAAc,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,GAAG,aAAa,GAAG,iCAAiC,CAAC;oBACtP,SAAS,EAAE,SAAS,GAAG,aAAa,GAAG,MAAM;oBAC7C,iBAAiB,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;iBAClC,CAAC;YACJ,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC;QAChB,CAAC;QAED,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,oEAAoE;YAC5E,MAAM,EAAE,UAAU;YAClB,OAAO,EAAE,kFAAkF;YAC3F,SAAS,EAAE,oCAAoC;YAC/C,iBAAiB,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;SAClC,CAAC;IACJ,CAAC;CACF;AAxCD,kDAwCC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluador-sanitizer.d.ts","sourceRoot":"","sources":["../../src/core/evaluador-sanitizer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAOpD,qBAAa,kBAAkB;WACT,OAAO,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAwEhF"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.EvaluadorSanitizer = void 0;
|
|
37
|
+
const path = __importStar(require("node:path"));
|
|
38
|
+
const arbol_proyecto_js_1 = require("./arbol-proyecto.js");
|
|
39
|
+
// @ts-ignore
|
|
40
|
+
const Sanitizer_js_1 = require("@ingcrea/aumic-sanitizer/dist/3-cells/Sanitizer.js");
|
|
41
|
+
// @ts-ignore
|
|
42
|
+
const config_js_1 = require("@ingcrea/aumic-sanitizer/dist/2-molecules/config.js");
|
|
43
|
+
class EvaluadorSanitizer {
|
|
44
|
+
static async auditar(directorioRaiz) {
|
|
45
|
+
const inicio = Date.now();
|
|
46
|
+
try {
|
|
47
|
+
const config = (0, config_js_1.loadConfig)(directorioRaiz) || config_js_1.DEFAULT_CONFIG;
|
|
48
|
+
const archivos = await arbol_proyecto_js_1.LectorArbolProyecto.obtenerSnapshot(directorioRaiz);
|
|
49
|
+
let totalEscaneados = 0;
|
|
50
|
+
let entropiaDetectada = 0;
|
|
51
|
+
const infectados = [];
|
|
52
|
+
const tamanoLote = 30;
|
|
53
|
+
for (let i = 0; i < archivos.length; i += tamanoLote) {
|
|
54
|
+
const lote = archivos.slice(i, i + tamanoLote);
|
|
55
|
+
const resLote = await Promise.all(lote.map(async (arch) => {
|
|
56
|
+
try {
|
|
57
|
+
return await (0, Sanitizer_js_1.processFile)(arch.rutaAbsoluta, { config, audit: true, gitStage: false });
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return { filepath: arch.rutaAbsoluta, corruptions: 0, modified: false };
|
|
61
|
+
}
|
|
62
|
+
}));
|
|
63
|
+
for (const res of resLote) {
|
|
64
|
+
totalEscaneados++;
|
|
65
|
+
if (res && res.corruptions > 0) {
|
|
66
|
+
entropiaDetectada += res.corruptions;
|
|
67
|
+
infectados.push({ filepath: res.filepath, corruptions: res.corruptions });
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
const tiempoTotal = Date.now() - inicio;
|
|
72
|
+
if (infectados.length === 0) {
|
|
73
|
+
return {
|
|
74
|
+
id: 'G0',
|
|
75
|
+
nombre: 'Higiene Forense Anti-Entropia y Codificacion Pura',
|
|
76
|
+
estado: 'aprobada',
|
|
77
|
+
detalle: `Repositorio impecable: 0 archivos infectados de ${totalEscaneados} analizados. Codificacion UTF-8 y LF integra.`,
|
|
78
|
+
evidencia: `${totalEscaneados} escaneados, 0 entropia`,
|
|
79
|
+
tiempoEjecucionMs: tiempoTotal,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
const listaArchivos = infectados
|
|
83
|
+
.slice(0, 5)
|
|
84
|
+
.map((f) => `${path.basename(f.filepath)} (${f.corruptions} items)`)
|
|
85
|
+
.join(', ');
|
|
86
|
+
const sufijo = infectados.length > 5 ? ` y ${infectados.length - 5} mas` : '';
|
|
87
|
+
return {
|
|
88
|
+
id: 'G0',
|
|
89
|
+
nombre: 'Higiene Forense Anti-Entropia y Codificacion Pura',
|
|
90
|
+
estado: 'rechazada',
|
|
91
|
+
detalle: `Se detectaron ${infectados.length} archivo(s) infectados con ${entropiaDetectada} anomalias de entropia/mojibake: ${listaArchivos}${sufijo}. Ejecutar "aumic-sanitizer scan" para sanar.`,
|
|
92
|
+
evidencia: `${infectados.length} infectados (${entropiaDetectada} anomalias)`,
|
|
93
|
+
tiempoEjecucionMs: tiempoTotal,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
return {
|
|
98
|
+
id: 'G0',
|
|
99
|
+
nombre: 'Higiene Forense Anti-Entropia y Codificacion Pura',
|
|
100
|
+
estado: 'omitida',
|
|
101
|
+
detalle: `No se pudo completar el diagnostico forense con aumic-sanitizer: ${error.message || String(error)}`,
|
|
102
|
+
evidencia: 'Fallo ejecucion audit',
|
|
103
|
+
tiempoEjecucionMs: Date.now() - inicio,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
exports.EvaluadorSanitizer = EvaluadorSanitizer;
|
|
109
|
+
//# sourceMappingURL=evaluador-sanitizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluador-sanitizer.js","sourceRoot":"","sources":["../../src/core/evaluador-sanitizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { RegistroCompuerta } from "./types.js";
|
|
2
|
+
export interface ErrorSintaxis {
|
|
3
|
+
readonly archivo: string;
|
|
4
|
+
readonly linea: number;
|
|
5
|
+
readonly lenguaje: string;
|
|
6
|
+
readonly mensaje: string;
|
|
7
|
+
readonly codigo: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* G22: Diagnóstico Universal de Sintaxis, Delimitadores y Balanceo (Universal Syntax & Delimiter Guard).
|
|
11
|
+
* Analiza estáticamente PHP, CSS/SCSS, JSON, JS/TS, Python y Java sin requerir compiladores externos.
|
|
12
|
+
* Detecta:
|
|
13
|
+
* 1. PHP: Omisión de punto y coma (;) en asignaciones, retornos, llamadas a métodos e instrucciones simples.
|
|
14
|
+
* 2. CSS/SCSS: Omisión de punto y coma (;) entre pares propiedad: valor.
|
|
15
|
+
* 3. JSON: Comas faltantes, trailing commas inválidas y sintaxis corrupta.
|
|
16
|
+
* 4. Universal: Desbalanceo de llaves ({ }), corchetes ([ ]) y paréntesis (( )).
|
|
17
|
+
*/
|
|
18
|
+
export declare class EvaluadorSintaxisUniversal {
|
|
19
|
+
static auditar(directorioRaiz: string): Promise<RegistroCompuerta>;
|
|
20
|
+
/**
|
|
21
|
+
* Auditoría de JSON nativo
|
|
22
|
+
*/
|
|
23
|
+
private static auditarJson;
|
|
24
|
+
/**
|
|
25
|
+
* Auditoría de CSS / SCSS: Detección de falta de punto y coma entre propiedades
|
|
26
|
+
*/
|
|
27
|
+
private static auditarCss;
|
|
28
|
+
/**
|
|
29
|
+
* Auditoría de PHP: Detección de falta de ';' en asignaciones, retornos e instrucciones
|
|
30
|
+
*/
|
|
31
|
+
private static auditarPhp;
|
|
32
|
+
/**
|
|
33
|
+
* Auditoría de Balanceo Universal de Llaves, Corchetes y Paréntesis
|
|
34
|
+
*/
|
|
35
|
+
private static auditarBalanceo;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=evaluador-sintaxis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluador-sintaxis.d.ts","sourceRoot":"","sources":["../../src/core/evaluador-sintaxis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAI/C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;GAQG;AACH,qBAAa,0BAA0B;WACjB,OAAO,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAgF/E;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAqB1B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;IA2CzB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;IAqEzB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;CAsH/B"}
|