@davidbc01/telar 0.2.0 → 0.2.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/README.md +4 -4
- package/dist/cli.js +102 -31
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -109,8 +109,8 @@ Telar compila a HTML + CSS + JavaScript optimizados. El desarrollador nunca toca
|
|
|
109
109
|
| Generación de JavaScript | ✅ Completo |
|
|
110
110
|
| CLI — compilar, servir, verificar | ✅ Completo |
|
|
111
111
|
| Publicado en npm | ✅ Completo |
|
|
112
|
-
| Live reload en telar servir |
|
|
113
|
-
| Extensión VS Code |
|
|
112
|
+
| Live reload en telar servir | ✅ Completo |
|
|
113
|
+
| Extensión VS Code | 🔄 En desarrollo |
|
|
114
114
|
| Lanzamiento público | 🟪 Pendiente |
|
|
115
115
|
|
|
116
116
|
## Hoja de ruta
|
|
@@ -129,7 +129,7 @@ Telar compila a HTML + CSS + JavaScript optimizados. El desarrollador nunca toca
|
|
|
129
129
|
- [x] Servidor HTTP integrado en `telar servir`
|
|
130
130
|
|
|
131
131
|
### v0.3 - Experiencia de desarrollo
|
|
132
|
-
- [
|
|
132
|
+
- [x] Live reload en `telar servir`
|
|
133
133
|
- [ ] Extensión para VS Code
|
|
134
134
|
- [ ] Mensajes de error mejorados con contexto visual
|
|
135
135
|
|
|
@@ -141,7 +141,7 @@ Telar compila a HTML + CSS + JavaScript optimizados. El desarrollador nunca toca
|
|
|
141
141
|
|
|
142
142
|
## ¿Por qué en español?
|
|
143
143
|
|
|
144
|
-
La
|
|
144
|
+
La mayoría de los lenguajes de programación usan palabras clave en inglés. Esto añade una barrera invisible para los más de 500 millones de hispanohablantes que aprenden a programar.
|
|
145
145
|
|
|
146
146
|
Telar no pretende reemplazar el inglés como lengua franca de la programación. Pretende demostrar que la sintaxis de un lenguaje puede ser un dialecto estructurado de cualquier idioma humano, y que eso reduce drásticamente la curva de aprendizaje.
|
|
147
147
|
|
package/dist/cli.js
CHANGED
|
@@ -46,28 +46,28 @@ const lexer_1 = require("./lexer");
|
|
|
46
46
|
const parser_1 = require("./parser");
|
|
47
47
|
const generador_1 = require("./generador");
|
|
48
48
|
const tipos_1 = require("./tipos");
|
|
49
|
-
const VERSION = '0.
|
|
49
|
+
const VERSION = '0.2.0';
|
|
50
50
|
const AYUDA = `
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
51
|
+
Telar v${VERSION} — Lenguaje de programación para la web
|
|
52
|
+
|
|
53
|
+
Uso:
|
|
54
|
+
telar <comando> [opciones]
|
|
55
|
+
|
|
56
|
+
Comandos:
|
|
57
|
+
compilar <archivo.telar> Compila a HTML + CSS
|
|
58
|
+
compilar <archivo.telar> -o <carpeta> Especifica carpeta de salida
|
|
59
|
+
servir <archivo.telar> Compila y sirve en localhost
|
|
60
|
+
verificar <archivo.telar> Verifica la sintaxis sin compilar
|
|
61
|
+
|
|
62
|
+
Ejemplos:
|
|
63
|
+
telar compilar app.telar
|
|
64
|
+
telar compilar app.telar -o dist/
|
|
65
|
+
telar servir app.telar
|
|
66
|
+
telar verificar app.telar
|
|
67
|
+
|
|
68
|
+
Opciones:
|
|
69
|
+
--ayuda, -a Muestra esta ayuda
|
|
70
|
+
--version, -v Muestra la versión
|
|
71
71
|
`;
|
|
72
72
|
// --- Entrada principal ---
|
|
73
73
|
const args = process.argv.slice(2);
|
|
@@ -117,6 +117,7 @@ function comandoCompilar(args) {
|
|
|
117
117
|
function comandoServir(args) {
|
|
118
118
|
const { archivo, salida } = parsearArgs(args, '.telar-tmp');
|
|
119
119
|
const puerto = 3000;
|
|
120
|
+
const puertoWS = 3001;
|
|
120
121
|
// Compilar primero
|
|
121
122
|
console.log(`\nTelar — compilando ${path.basename(archivo)}...\n`);
|
|
122
123
|
const archivos = compilar(archivo);
|
|
@@ -126,18 +127,86 @@ function comandoServir(args) {
|
|
|
126
127
|
if (!fs.existsSync(salida)) {
|
|
127
128
|
fs.mkdirSync(salida, { recursive: true });
|
|
128
129
|
}
|
|
129
|
-
|
|
130
|
-
|
|
130
|
+
function recompilarYEscribir() {
|
|
131
|
+
const nuevos = compilar(archivo);
|
|
132
|
+
if (!nuevos)
|
|
133
|
+
return false;
|
|
134
|
+
for (const f of nuevos) {
|
|
135
|
+
// Inyectar script de live reload en cada HTML
|
|
136
|
+
let contenido = f.contenido;
|
|
137
|
+
if (f.nombre.endsWith('.html')) {
|
|
138
|
+
contenido = contenido.replace('</body>', `<script>
|
|
139
|
+
const ws = new WebSocket('ws://localhost:${puertoWS}');
|
|
140
|
+
ws.onmessage = () => location.reload();
|
|
141
|
+
</script>
|
|
142
|
+
</body>`);
|
|
143
|
+
}
|
|
144
|
+
fs.writeFileSync(path.join(salida, f.nombre), contenido, 'utf-8');
|
|
145
|
+
}
|
|
146
|
+
return true;
|
|
147
|
+
}
|
|
148
|
+
recompilarYEscribir();
|
|
149
|
+
// Servidor WebSocket para live reload
|
|
150
|
+
const net = require('net');
|
|
151
|
+
const clientes = [];
|
|
152
|
+
const wsServer = net.createServer((socket) => {
|
|
153
|
+
// Handshake WebSocket mínimo
|
|
154
|
+
socket.once('data', (data) => {
|
|
155
|
+
const key = data.toString().match(/Sec-WebSocket-Key: (.+)/)?.[1]?.trim();
|
|
156
|
+
if (!key)
|
|
157
|
+
return;
|
|
158
|
+
const crypto = require('crypto');
|
|
159
|
+
const accept = crypto
|
|
160
|
+
.createHash('sha1')
|
|
161
|
+
.update(key + '258EAFA5-E914-47DA-95CA-C5AB0DC85B11')
|
|
162
|
+
.digest('base64');
|
|
163
|
+
socket.write('HTTP/1.1 101 Switching Protocols\r\n' +
|
|
164
|
+
'Upgrade: websocket\r\n' +
|
|
165
|
+
'Connection: Upgrade\r\n' +
|
|
166
|
+
`Sec-WebSocket-Accept: ${accept}\r\n\r\n`);
|
|
167
|
+
clientes.push(socket);
|
|
168
|
+
socket.on('close', () => {
|
|
169
|
+
const i = clientes.indexOf(socket);
|
|
170
|
+
if (i !== -1)
|
|
171
|
+
clientes.splice(i, 1);
|
|
172
|
+
});
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
wsServer.listen(puertoWS);
|
|
176
|
+
function notificarClientes() {
|
|
177
|
+
// Frame WebSocket mínimo para enviar mensaje de texto
|
|
178
|
+
const msg = Buffer.from('reload');
|
|
179
|
+
const frame = Buffer.alloc(2 + msg.length);
|
|
180
|
+
frame[0] = 0x81; // FIN + opcode texto
|
|
181
|
+
frame[1] = msg.length;
|
|
182
|
+
msg.copy(frame, 2);
|
|
183
|
+
clientes.forEach(s => {
|
|
184
|
+
try {
|
|
185
|
+
s.write(frame);
|
|
186
|
+
}
|
|
187
|
+
catch (e) { }
|
|
188
|
+
});
|
|
131
189
|
}
|
|
132
|
-
//
|
|
190
|
+
// Watcher con debounce — evita doble disparo en Windows
|
|
191
|
+
let timeout = null;
|
|
192
|
+
fs.watch(archivo, () => {
|
|
193
|
+
if (timeout)
|
|
194
|
+
clearTimeout(timeout);
|
|
195
|
+
timeout = setTimeout(() => {
|
|
196
|
+
console.log(`\n↻ Cambio detectado — recompilando...`);
|
|
197
|
+
const ok = recompilarYEscribir();
|
|
198
|
+
if (ok) {
|
|
199
|
+
console.log(`✓ Listo`);
|
|
200
|
+
notificarClientes();
|
|
201
|
+
}
|
|
202
|
+
}, 100);
|
|
203
|
+
});
|
|
204
|
+
// Servidor HTTP
|
|
133
205
|
const servidor = http.createServer((req, res) => {
|
|
134
206
|
let urlPath = req.url === '/' ? '/index.html' : req.url ?? '/index.html';
|
|
135
|
-
// Quitar query strings
|
|
136
207
|
urlPath = urlPath.split('?')[0];
|
|
137
|
-
|
|
138
|
-
if (!path.extname(urlPath)) {
|
|
208
|
+
if (!path.extname(urlPath))
|
|
139
209
|
urlPath = urlPath + '.html';
|
|
140
|
-
}
|
|
141
210
|
const rutaArchivo = path.join(salida, urlPath);
|
|
142
211
|
if (fs.existsSync(rutaArchivo)) {
|
|
143
212
|
const ext = path.extname(rutaArchivo);
|
|
@@ -159,12 +228,14 @@ function comandoServir(args) {
|
|
|
159
228
|
});
|
|
160
229
|
servidor.listen(puerto, () => {
|
|
161
230
|
console.log(`✓ Compilación completada`);
|
|
162
|
-
console.log(`\n🌐 Telar sirviendo en http://localhost:${puerto}
|
|
163
|
-
console.log(
|
|
231
|
+
console.log(`\n🌐 Telar sirviendo en http://localhost:${puerto}`);
|
|
232
|
+
console.log(`⚡ Live reload activo — guarda el archivo para recompilar`);
|
|
233
|
+
console.log(`\n Presiona Ctrl+C para parar\n`);
|
|
164
234
|
});
|
|
165
|
-
// Limpiar
|
|
235
|
+
// Limpiar al salir
|
|
166
236
|
process.on('SIGINT', () => {
|
|
167
237
|
console.log('\n\n Parando servidor...');
|
|
238
|
+
wsServer.close();
|
|
168
239
|
fs.rmSync(salida, { recursive: true, force: true });
|
|
169
240
|
process.exit(0);
|
|
170
241
|
});
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;AACA,MAAM;AACN,SAAS;AACT,0CAA0C;AAC1C,wCAAwC;AACxC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEN,uCAAwB;AACxB,2CAA4B;AAC5B,2CAA4B;AAC5B,mCAA+B;AAC/B,qCAAiC;AACjC,2CAAuC;AACvC,mCAAoC;AAEpC,MAAM,OAAO,GAAG,OAAO,CAAA;AAEvB,MAAM,KAAK,GAAG;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;AACA,MAAM;AACN,SAAS;AACT,0CAA0C;AAC1C,wCAAwC;AACxC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEN,uCAAwB;AACxB,2CAA4B;AAC5B,2CAA4B;AAC5B,mCAA+B;AAC/B,qCAAiC;AACjC,2CAAuC;AACvC,mCAAoC;AAEpC,MAAM,OAAO,GAAG,OAAO,CAAA;AAEvB,MAAM,KAAK,GAAG;aACD,OAAO;;;;;;;;;;;;;;;;;;;;CAoBnB,CAAA;AAED,4BAA4B;AAE5B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAElC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IACvE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACnB,CAAC;AAED,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,UAAU,OAAO,EAAE,CAAC,CAAA;IAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACnB,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;AAEvB,QAAQ,OAAO,EAAE,CAAC;IACd,KAAK,UAAU;QACX,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QAC9B,MAAK;IACT,KAAK,QAAQ;QACT,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QAC5B,MAAK;IACT,KAAK,WAAW;QACZ,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QAC/B,MAAK;IACT;QACI,OAAO,CAAC,KAAK,CAAC,8BAA8B,OAAO,GAAG,CAAC,CAAA;QACvD,OAAO,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAA;QAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACvB,CAAC;AAED,4BAA4B;AAE5B,SAAS,eAAe,CAAC,IAAc;IACnC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAErD,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAElE,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAA;IAClC,IAAI,CAAC,QAAQ;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAE9B,0BAA0B;IAC1B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC7C,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAA;QACxC,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;QAC5C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAAA;IACjC,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,QAAQ,QAAQ,CAAC,MAAM,0BAA0B,MAAM,KAAK,CAAC,CAAA;AAC7E,CAAC;AAED,0BAA0B;AAE1B,SAAS,aAAa,CAAC,IAAc;IACjC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,IAAI,EAAE,YAAY,CAAC,CAAA;IAC3D,MAAM,MAAM,GAAG,IAAI,CAAA;IACnB,MAAM,QAAQ,GAAG,IAAI,CAAA;IAErB,mBAAmB;IACnB,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAClE,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAA;IAClC,IAAI,CAAC,QAAQ;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAE9B,8BAA8B;IAC9B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC7C,CAAC;IAED,SAAS,mBAAmB;QACxB,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAA;QAChC,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAA;QACzB,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACrB,8CAA8C;YAC9C,IAAI,SAAS,GAAG,CAAC,CAAC,SAAS,CAAA;YAC3B,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC7B,SAAS,GAAG,SAAS,CAAC,OAAO,CAC7B,SAAS,EACT;+CAC+B,QAAQ;;;QAG/C,CACS,CAAA;YACL,CAAC;YACD,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;QACrE,CAAC;QACD,OAAO,IAAI,CAAA;IACf,CAAC;IAED,mBAAmB,EAAE,CAAA;IAErB,sCAAsC;IACtC,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;IAC1B,MAAM,QAAQ,GAAU,EAAE,CAAA;IAE1B,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,MAAW,EAAE,EAAE;QAC9C,6BAA6B;QAC7B,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACjC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAA;YACzE,IAAI,CAAC,GAAG;gBAAE,OAAM;YAChB,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;YAChC,MAAM,MAAM,GAAG,MAAM;iBAChB,UAAU,CAAC,MAAM,CAAC;iBAClB,MAAM,CAAC,GAAG,GAAG,sCAAsC,CAAC;iBACpD,MAAM,CAAC,QAAQ,CAAC,CAAA;YACrB,MAAM,CAAC,KAAK,CACR,sCAAsC;gBACtC,wBAAwB;gBACxB,yBAAyB;gBACzB,yBAAyB,MAAM,UAAU,CAC5C,CAAA;YACD,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACrB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACpB,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;gBAClC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACvC,CAAC,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAEzB,SAAS,iBAAiB;QACtB,sDAAsD;QACtD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACjC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAA;QAC1C,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA,CAAC,qBAAqB;QACrC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAA;QACrB,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QAClB,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACjB,IAAI,CAAC;gBAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YAAC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC;QACvC,CAAC,CAAC,CAAA;IACN,CAAC;IAED,wDAAwD;IACxD,IAAI,OAAO,GAA0B,IAAI,CAAA;IACzC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE;QACnB,IAAI,OAAO;YAAE,YAAY,CAAC,OAAO,CAAC,CAAA;QAClC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YACtB,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAA;YACtD,MAAM,EAAE,GAAG,mBAAmB,EAAE,CAAA;YAChC,IAAI,EAAE,EAAE,CAAC;gBACT,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;gBACvB,iBAAiB,EAAE,CAAA;YACnB,CAAC;QACL,CAAC,EAAE,GAAG,CAAC,CAAA;IACX,CAAC,CAAC,CAAA;IAEF,gBAAgB;IAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC5C,IAAI,OAAO,GAAG,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,aAAa,CAAA;QACxE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QAC/B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;YAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAA;QAEvD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAE9C,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;YACrC,MAAM,IAAI,GAAG,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,0BAA0B;gBAC7C,CAAC,CAAC,GAAG,KAAK,MAAM,CAAE,CAAC,CAAC,yBAAyB;oBAC7C,CAAC,CAAC,GAAG,KAAK,KAAK,CAAG,CAAC,CAAC,wBAAwB;wBAC5C,CAAC,CAAC,YAAY,CAAA;YAC1B,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAA;YAC5C,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAA;QACzC,CAAC;aAAM,CAAC;YACJ,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,0BAA0B,EAAE,CAAC,CAAA;YAClE,GAAG,CAAC,GAAG,CAAC;;gCAEY,OAAO;;aAE1B,CAAC,CAAA;QACN,CAAC;IACL,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE;QACzB,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAA;QACxC,OAAO,CAAC,GAAG,CAAC,6CAA6C,MAAM,EAAE,CAAC,CAAA;QAClE,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAA;QACxE,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAA;IACpD,CAAC,CAAC,CAAA;IAEF,mBAAmB;IACnB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAA;QACzC,QAAQ,CAAC,KAAK,EAAE,CAAA;QAChB,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC,CAAC,CAAA;AACN,CAAC;AAED,6BAA6B;AAE7B,SAAS,gBAAgB,CAAC,IAAc;IACpC,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IACzC,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IAE5C,OAAO,CAAC,GAAG,CAAC,yBAAyB,aAAa,OAAO,CAAC,CAAA;IAE1D,IAAI,CAAC;QACD,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,CAAA;QACtC,IAAI,CAAC,SAAS;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAE/B,MAAM,KAAK,GAAG,IAAI,aAAK,CAAC,SAAS,CAAC,CAAA;QAClC,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE,CAAA;QAEhC,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,MAAM,CAAC,CAAA;QACjC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE,CAAA;QAE9B,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;QACnC,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,aAAa,KAAK,CAAC,KAAK,CAAC,MAAM,YAAY,CAAC,CAAA;QAElF,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACtB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAA;QAChD,CAAC,CAAC,CAAA;QAEF,OAAO,CAAC,GAAG,EAAE,CAAA;IAEjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,IAAI,KAAK,YAAY,kBAAU,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAA;QACjD,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACxB,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;AACL,CAAC;AAED,kBAAkB;AAElB,SAAS,QAAQ,CAAC,WAAmB;IACjC,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;IAEhD,IAAI,CAAC;QACD,MAAM,SAAS,GAAG,WAAW,CAAC,WAAW,CAAC,CAAA;QAC1C,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAA;QAE3B,MAAM,KAAK,GAAG,IAAI,aAAK,CAAC,SAAS,CAAC,CAAA;QAClC,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE,CAAA;QAEhC,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,MAAM,CAAC,CAAA;QACjC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE,CAAA;QAE9B,MAAM,SAAS,GAAG,IAAI,qBAAS,CAAC,KAAK,CAAC,CAAA;QACtC,OAAO,SAAS,CAAC,OAAO,EAAE,CAAA;IAE9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,IAAI,KAAK,YAAY,kBAAU,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAA;QACjD,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACxB,CAAC;QACD,OAAO,IAAI,CAAA;IACf,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC7B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,mCAAmC,IAAI,IAAI,CAAC,CAAA;QAC1D,OAAO,IAAI,CAAA;IACf,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAA;QAC9D,OAAO,IAAI,CAAA;IACf,CAAC;IAED,OAAO,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AACzC,CAAC;AAED,SAAS,WAAW,CAAC,IAAc,EAAE,aAAqB;IACtD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAA;QAC/C,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAA;QACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;IACvB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAClC,MAAM,MAAM,GAAG,OAAO,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QAC9C,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACnB,CAAC,CAAC,aAAa,CAAA;IAEnB,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAA;AAC9B,CAAC"}
|