dmencu 3.2.21 → 3.4.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/README.md +42 -42
- package/ayuda/asignacion.md +16 -0
- package/ayuda/circuito-encuesta.md +27 -0
- package/ayuda/control.md +13 -0
- package/ayuda/dm-cambiar-modo.md +16 -0
- package/ayuda/dm-relevamiento.md +20 -0
- package/ayuda/dm-sincronizar.md +18 -0
- package/ayuda/fin-de-campo.md +14 -0
- package/ayuda/metadatos.md +14 -0
- package/ayuda/procesar.md +13 -0
- package/ayuda/recepcion.md +20 -0
- package/ayuda/supervision.md +9 -0
- package/ayuda/usuarios.md +12 -0
- package/ayuda/varios.md +23 -0
- package/dist/client/client/client.js +101 -4
- package/dist/client/client/css/menu.styl +29 -0
- package/dist/client/unlogged/abrir-formulario.js +1 -1
- package/dist/client/unlogged/bypass-formulario.d.ts +6 -42
- package/dist/client/unlogged/bypass-formulario.js +84 -219
- package/dist/client/unlogged/calculos-encuesta.js +112 -38
- package/dist/client/unlogged/css/formulario-react.styl +9 -0
- package/dist/client/unlogged/helpers-casilleros.d.ts +1 -1
- package/dist/client/unlogged/helpers-casilleros.js +12 -18
- package/dist/client/unlogged/helpers-formulario.d.ts +16 -0
- package/dist/client/unlogged/helpers-formulario.js +88 -0
- package/dist/client/unlogged/redux-formulario.d.ts +1 -2
- package/dist/client/unlogged/redux-formulario.js +21 -31
- package/dist/client/unlogged/render-config.d.ts +5 -1
- package/dist/client/unlogged/render-config.js +14 -1
- package/dist/client/unlogged/render-formulario.d.ts +3 -6
- package/dist/client/unlogged/render-formulario.js +71 -69
- package/dist/client/unlogged/render-formulario.tsx +100 -57
- package/dist/client/unlogged/render-general.d.ts +2 -0
- package/dist/client/unlogged/render-general.js +2 -1
- package/dist/client/unlogged/render-general.tsx +2 -1
- package/dist/client/unlogged/render-init.d.ts +1 -0
- package/dist/client/unlogged/render-init.js +9 -2
- package/dist/client/unlogged/tipos.d.ts +93 -41
- package/dist/client/unlogged/tipos.js +1 -1
- package/dist/server/app-dmencu.d.ts +1435 -0
- package/dist/server/app-dmencu.js +1091 -0
- package/dist/server/ayuda.d.ts +19 -0
- package/dist/server/ayuda.js +224 -0
- package/dist/server/def-config.d.ts +1 -0
- package/dist/server/def-config.js +123 -0
- package/dist/server/procedures-dmencu.d.ts +43 -0
- package/dist/server/procedures-dmencu.js +2313 -0
- package/dist/server/server/app-dmencu.d.ts +49 -91
- package/dist/server/server/app-dmencu.js +151 -52
- package/dist/server/server/ayuda.d.ts +19 -0
- package/dist/server/server/ayuda.js +224 -0
- package/dist/server/server/procedures-dmencu.d.ts +34 -2
- package/dist/server/server/procedures-dmencu.js +93 -51
- package/dist/server/server/setters-rea-no-rea.d.ts +13 -0
- package/dist/server/server/setters-rea-no-rea.js +35 -0
- package/dist/server/server/table-areas.js +4 -4
- package/dist/server/server/table-areas_asignacion_general.js +2 -1
- package/dist/server/server/table-control_campo.js +4 -4
- package/dist/server/server/table-no_rea.js +4 -2
- package/dist/server/server/table-no_rea_sup.js +7 -3
- package/dist/server/server/table-personal.js +1 -1
- package/dist/server/server/table-tareas_tem.js +2 -2
- package/dist/server/server/table-tem.js +2 -2
- package/dist/server/server/types-dmencu.d.ts +53 -2
- package/dist/server/server/types-dmencu.js +2 -1
- package/dist/server/setters-rea-no-rea.d.ts +13 -0
- package/dist/server/setters-rea-no-rea.js +35 -0
- package/dist/server/table-acciones.d.ts +2 -0
- package/dist/server/table-acciones.js +45 -0
- package/dist/server/table-area_enc_proximas.d.ts +2 -0
- package/dist/server/table-area_enc_proximas.js +30 -0
- package/dist/server/table-areas.d.ts +4 -0
- package/dist/server/table-areas.js +112 -0
- package/dist/server/table-areas_asignacion_general.d.ts +2 -0
- package/dist/server/table-areas_asignacion_general.js +86 -0
- package/dist/server/table-barrios.d.ts +2 -0
- package/dist/server/table-barrios.js +35 -0
- package/dist/server/table-comunas.d.ts +2 -0
- package/dist/server/table-comunas.js +33 -0
- package/dist/server/table-control_campo.d.ts +12 -0
- package/dist/server/table-control_campo.js +119 -0
- package/dist/server/table-control_dias_carga.d.ts +2 -0
- package/dist/server/table-control_dias_carga.js +63 -0
- package/dist/server/table-control_resumen.d.ts +2 -0
- package/dist/server/table-control_resumen.js +19 -0
- package/dist/server/table-diccionario.d.ts +2 -0
- package/dist/server/table-diccionario.js +32 -0
- package/dist/server/table-dictra.d.ts +2 -0
- package/dist/server/table-dictra.js +46 -0
- package/dist/server/table-dicvar.d.ts +2 -0
- package/dist/server/table-dicvar.js +32 -0
- package/dist/server/table-encuestadores.d.ts +13 -0
- package/dist/server/table-encuestadores.js +75 -0
- package/dist/server/table-estados.d.ts +2 -0
- package/dist/server/table-estados.js +47 -0
- package/dist/server/table-estados_acciones.d.ts +2 -0
- package/dist/server/table-estados_acciones.js +40 -0
- package/dist/server/table-fracciones.d.ts +2 -0
- package/dist/server/table-fracciones.js +37 -0
- package/dist/server/table-grilla_hoja_ruta.d.ts +2 -0
- package/dist/server/table-grilla_hoja_ruta.js +93 -0
- package/dist/server/table-historial_tem.d.ts +2 -0
- package/dist/server/table-historial_tem.js +57 -0
- package/dist/server/table-hogares.d.ts +2 -0
- package/dist/server/table-hogares.js +156 -0
- package/dist/server/table-hogares_sup.d.ts +2 -0
- package/dist/server/table-hogares_sup.js +191 -0
- package/dist/server/table-inconsistencias_cumplen_condicion.d.ts +2 -0
- package/dist/server/table-inconsistencias_cumplen_condicion.js +33 -0
- package/dist/server/table-manzanas.d.ts +2 -0
- package/dist/server/table-manzanas.js +36 -0
- package/dist/server/table-mis_encuestadores.d.ts +2 -0
- package/dist/server/table-mis_encuestadores.js +77 -0
- package/dist/server/table-mis_tareas.d.ts +2 -0
- package/dist/server/table-mis_tareas.js +18 -0
- package/dist/server/table-mis_tareas_areas.d.ts +2 -0
- package/dist/server/table-mis_tareas_areas.js +20 -0
- package/dist/server/table-modos_dm.d.ts +2 -0
- package/dist/server/table-modos_dm.js +28 -0
- package/dist/server/table-no_rea.js +38 -0
- package/dist/server/table-no_rea_sup.js +36 -0
- package/dist/server/table-operaciones.d.ts +2 -0
- package/dist/server/table-operaciones.js +30 -0
- package/dist/server/table-parametros.d.ts +2 -0
- package/dist/server/table-parametros.js +40 -0
- package/dist/server/table-permisos.d.ts +2 -0
- package/dist/server/table-permisos.js +31 -0
- package/dist/server/table-personal.d.ts +5 -0
- package/dist/server/table-personal.js +62 -0
- package/dist/server/table-personal_rol.d.ts +2 -0
- package/dist/server/table-personal_rol.js +42 -0
- package/dist/server/table-personas.d.ts +2 -0
- package/dist/server/table-personas.js +448 -0
- package/dist/server/table-personas_sup.d.ts +2 -0
- package/dist/server/table-personas_sup.js +93 -0
- package/dist/server/table-radios.d.ts +2 -0
- package/dist/server/table-radios.js +37 -0
- package/dist/server/table-rea.d.ts +2 -0
- package/dist/server/table-rea.js +38 -0
- package/dist/server/table-rea_sup.d.ts +2 -0
- package/dist/server/table-rea_sup.js +38 -0
- package/dist/server/table-recepcionistas.d.ts +2 -0
- package/dist/server/table-recepcionistas.js +18 -0
- package/dist/server/table-recuperadores.d.ts +2 -0
- package/dist/server/table-recuperadores.js +18 -0
- package/dist/server/table-roles.d.ts +2 -0
- package/dist/server/table-roles.js +33 -0
- package/dist/server/table-roles_permisos.d.ts +2 -0
- package/dist/server/table-roles_permisos.js +36 -0
- package/dist/server/table-roles_subordinados.d.ts +2 -0
- package/dist/server/table-roles_subordinados.js +31 -0
- package/dist/server/table-semanas.d.ts +2 -0
- package/dist/server/table-semanas.js +42 -0
- package/dist/server/table-sincronizaciones.d.ts +2 -0
- package/dist/server/table-sincronizaciones.js +30 -0
- package/dist/server/table-supervisores.d.ts +2 -0
- package/dist/server/table-supervisores.js +18 -0
- package/dist/server/table-tareas.d.ts +2 -0
- package/dist/server/table-tareas.js +48 -0
- package/dist/server/table-tareas_areas.d.ts +7 -0
- package/dist/server/table-tareas_areas.js +112 -0
- package/dist/server/table-tareas_proximas.d.ts +2 -0
- package/dist/server/table-tareas_proximas.js +48 -0
- package/dist/server/table-tareas_tem.d.ts +14 -0
- package/dist/server/table-tareas_tem.js +206 -0
- package/dist/server/table-tareas_tem_analisis_campo.d.ts +2 -0
- package/dist/server/table-tareas_tem_analisis_campo.js +31 -0
- package/dist/server/table-tareas_tem_fin_campo.d.ts +3 -0
- package/dist/server/table-tareas_tem_fin_campo.js +56 -0
- package/dist/server/table-tareas_tem_ingreso.d.ts +2 -0
- package/dist/server/table-tareas_tem_ingreso.js +31 -0
- package/dist/server/table-tareas_tem_procesamiento.d.ts +2 -0
- package/dist/server/table-tareas_tem_procesamiento.js +34 -0
- package/dist/server/table-tareas_tem_recepcion.d.ts +6 -0
- package/dist/server/table-tareas_tem_recepcion.js +59 -0
- package/dist/server/table-tem.d.ts +3 -0
- package/dist/server/table-tem.js +247 -0
- package/dist/server/table-tem_asignacion.d.ts +2 -0
- package/dist/server/table-tem_asignacion.js +50 -0
- package/dist/server/table-tem_borradas.d.ts +2 -0
- package/dist/server/table-tem_borradas.js +35 -0
- package/dist/server/table-usuarios.d.ts +2 -0
- package/dist/server/table-usuarios.js +63 -0
- package/dist/server/table-visitas.d.ts +2 -0
- package/dist/server/table-visitas.js +91 -0
- package/dist/server/table-visitas_sup.d.ts +2 -0
- package/dist/server/table-visitas_sup.js +91 -0
- package/dist/server/table-viviendas.d.ts +2 -0
- package/dist/server/table-viviendas.js +299 -0
- package/dist/server/types-dmencu.d.ts +114 -0
- package/dist/server/types-dmencu.js +34 -0
- package/dist/server/unlogged/tipos.d.ts +93 -41
- package/dist/server/unlogged/tipos.js +1 -1
- package/dist/test/app-para-tests.d.ts +1117 -0
- package/dist/test/app-para-tests.js +95 -0
- package/dist/test/test-ayuda.d.ts +1 -0
- package/dist/test/test-ayuda.js +183 -0
- package/dist/test/test-caches-rea.d.ts +1 -0
- package/dist/test/test-caches-rea.js +243 -0
- package/dist/test/test-helpers-casilleros.d.ts +1 -0
- package/dist/test/test-helpers-casilleros.js +154 -0
- package/dist/test/test-helpers-formulario.d.ts +1 -0
- package/dist/test/test-helpers-formulario.js +95 -0
- package/dist/test/test-impacto-rea-no-rea-en-bd.d.ts +1 -0
- package/dist/test/test-impacto-rea-no-rea-en-bd.js +243 -0
- package/dist/test/test-menu-segun-rol.d.ts +1 -0
- package/dist/test/test-menu-segun-rol.js +170 -0
- package/dist/test/test-setters-rea-no-rea.d.ts +1 -0
- package/dist/test/test-setters-rea-no-rea.js +95 -0
- package/dist/test/test.d.ts +7 -0
- package/dist/test/test.js +9 -2
- package/dist/unlogged/helpers-casilleros.d.ts +1 -1
- package/dist/unlogged/helpers-casilleros.js +12 -18
- package/dist/unlogged/helpers-formulario.d.ts +16 -0
- package/dist/unlogged/helpers-formulario.js +88 -0
- package/dist/unlogged/tipos.d.ts +20 -2
- package/dist/unlogged/tipos.js +1 -1
- package/dist/unlogged/unlogged/abrir-formulario.js +1 -1
- package/dist/unlogged/unlogged/bypass-formulario.d.ts +6 -42
- package/dist/unlogged/unlogged/bypass-formulario.js +84 -219
- package/dist/unlogged/unlogged/css/formulario-react.styl +9 -0
- package/dist/unlogged/unlogged/helpers-casilleros.js +7 -14
- package/dist/unlogged/unlogged/helpers-formulario.d.ts +16 -0
- package/dist/unlogged/unlogged/helpers-formulario.js +88 -0
- package/dist/unlogged/unlogged/redux-formulario.d.ts +1 -2
- package/dist/unlogged/unlogged/redux-formulario.js +21 -31
- package/dist/unlogged/unlogged/render-config.d.ts +5 -1
- package/dist/unlogged/unlogged/render-config.js +14 -1
- package/dist/unlogged/unlogged/render-formulario.d.ts +3 -6
- package/dist/unlogged/unlogged/render-formulario.js +71 -69
- package/dist/unlogged/unlogged/render-formulario.tsx +100 -57
- package/dist/unlogged/unlogged/render-general.d.ts +2 -0
- package/dist/unlogged/unlogged/render-general.js +2 -1
- package/dist/unlogged/unlogged/render-general.tsx +2 -1
- package/dist/unlogged/unlogged/render-init.d.ts +1 -0
- package/dist/unlogged/unlogged/render-init.js +9 -2
- package/dist/unlogged/unlogged/tipos.d.ts +93 -41
- package/dist/unlogged/unlogged/tipos.js +1 -1
- package/dist/unlogged/unlogged/unlogged.js +15 -2
- package/install/accion_cumple_condicion.sql +1 -1
- package/install/generador_accion_cumple_condicion.sql +2 -2
- package/install/tarea_cumple_condicion.sql +1 -1
- package/install/xcalcular_resultado_trg.sql +1 -1
- package/package.json +24 -18
- package/dist/server/server/table-no_rea copy.js +0 -38
- package/dist/server/server/table-no_rea_sup copy.js +0 -36
- package/dist/unlogged/bypass-formulario.d.ts +0 -198
- package/dist/unlogged/bypass-formulario.js +0 -1226
- package/dist/unlogged/redux-formulario.d.ts +0 -440
- package/dist/unlogged/redux-formulario.js +0 -324
- package/dist/unlogged/render-config.d.ts +0 -52
- package/dist/unlogged/render-config.js +0 -161
- package/dist/unlogged/unlogged/bypass-formulario copy.d.ts +0 -198
- package/dist/unlogged/unlogged/bypass-formulario copy.js +0 -1226
- package/dist/unlogged/unlogged/helpers.d.ts +0 -14
- package/dist/unlogged/unlogged/helpers.js +0 -129
- /package/dist/server/{server/table-no_rea copy.d.ts → table-no_rea.d.ts} +0 -0
- /package/dist/server/{server/table-no_rea_sup copy.d.ts → table-no_rea_sup.d.ts} +0 -0
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
(function (factory) {
|
|
2
|
+
if (typeof module === "object" && typeof module.exports === "object") {
|
|
3
|
+
var v = factory(require, exports);
|
|
4
|
+
if (v !== undefined) module.exports = v;
|
|
5
|
+
}
|
|
6
|
+
else if (typeof define === "function" && define.amd) {
|
|
7
|
+
define(["require", "exports", "node:fs", "node:path", "meta-enc", "procesamiento", "../server/app-dmencu"], factory);
|
|
8
|
+
}
|
|
9
|
+
})(function (require, exports) {
|
|
10
|
+
"use strict";
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.AppDmEncuParaTests = void 0;
|
|
13
|
+
exports.crearAppParaTests = crearAppParaTests;
|
|
14
|
+
exports.permisosDeInstalacion = permisosDeInstalacion;
|
|
15
|
+
exports.contextoDelRol = contextoDelRol;
|
|
16
|
+
const fs = require("node:fs");
|
|
17
|
+
const path = require("node:path");
|
|
18
|
+
const meta_enc_1 = require("meta-enc");
|
|
19
|
+
const procesamiento_1 = require("procesamiento");
|
|
20
|
+
const app_dmencu_1 = require("../server/app-dmencu");
|
|
21
|
+
// La app compuesta igual que en server-dmencu.ts, pero sin llamar a start():
|
|
22
|
+
// no se conecta a la base ni levanta el servidor.
|
|
23
|
+
exports.AppDmEncuParaTests = (0, app_dmencu_1.emergeAppDmEncu)((0, procesamiento_1.emergeAppProcesamiento)((0, procesamiento_1.emergeAppConsistencias)((0, procesamiento_1.emergeAppDatosExt)((0, meta_enc_1.emergeAppMetaEnc)((0, meta_enc_1.emergeAppRelEnc)((0, procesamiento_1.emergeAppVarCal)((0, meta_enc_1.emergeAppOperativos)(meta_enc_1.AppBackend))))))));
|
|
24
|
+
// policy 'web' es el modo RELEVAMIENTO (dispositivos), cualquier otra es GABINETE (ver getModoByPolicy)
|
|
25
|
+
function crearAppParaTests(policy = '') {
|
|
26
|
+
var be = new exports.AppDmEncuParaTests();
|
|
27
|
+
// la configuración se carga en start(); se completa sólo la parte del servidor
|
|
28
|
+
be.config.server = {
|
|
29
|
+
'base-url': '',
|
|
30
|
+
port: 3000,
|
|
31
|
+
'session-store': 'memory',
|
|
32
|
+
'ip-replacer': '',
|
|
33
|
+
'silent-startup': true,
|
|
34
|
+
'kill-9': '',
|
|
35
|
+
bitacoraSchema: '',
|
|
36
|
+
bitacoraTableName: '',
|
|
37
|
+
useCors: false,
|
|
38
|
+
allowedHosts: [],
|
|
39
|
+
policy,
|
|
40
|
+
};
|
|
41
|
+
var permisos = permisosDeInstalacion();
|
|
42
|
+
be.caches.permisosRol = permisos.permisosRol;
|
|
43
|
+
be.caches.permisosRolSoloTrue = permisos.permisosRol;
|
|
44
|
+
be.caches.permisosSuperuser = permisos.permisosSuperuser;
|
|
45
|
+
be.caches.permisosParaNadie = permisos.permisosParaNadie;
|
|
46
|
+
return be;
|
|
47
|
+
}
|
|
48
|
+
function leerTab(nombreArchivo) {
|
|
49
|
+
// los tests corren desde dist/test
|
|
50
|
+
var contenido = fs.readFileSync(path.join(__dirname, '../../install', nombreArchivo), 'utf8');
|
|
51
|
+
var [encabezado, ...lineas] = contenido.split(/\r?\n/).filter(linea => linea.trim() != '');
|
|
52
|
+
var columnas = encabezado.split('|').map(columna => columna.trim());
|
|
53
|
+
return lineas.map(linea => {
|
|
54
|
+
var valores = linea.split('|').map(valor => valor.trim());
|
|
55
|
+
var fila = {};
|
|
56
|
+
columnas.forEach((columna, i) => { fila[columna] = valores[i]; });
|
|
57
|
+
return fila;
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
function puedeDe(filas, habilitado) {
|
|
61
|
+
var puede = {};
|
|
62
|
+
filas.forEach(fila => {
|
|
63
|
+
puede[fila.permiso] = puede[fila.permiso] || {};
|
|
64
|
+
puede[fila.permiso][fila.accion] = habilitado(fila);
|
|
65
|
+
});
|
|
66
|
+
return puede;
|
|
67
|
+
}
|
|
68
|
+
// Arma los permisos como lo hace postConfig en app-dmencu.ts (que los lee de la base),
|
|
69
|
+
// a partir de los .tab con que se instala la base
|
|
70
|
+
function permisosDeInstalacion() {
|
|
71
|
+
var roles = leerTab('roles.tab');
|
|
72
|
+
var rolesPermisos = leerTab('roles_permisos.tab');
|
|
73
|
+
var permisos = leerTab('permisos.tab');
|
|
74
|
+
var permisosRol = {};
|
|
75
|
+
roles.forEach(rol => {
|
|
76
|
+
var filasDelRol = rolesPermisos.filter(rp => rp.rol == rol.rol);
|
|
77
|
+
permisosRol[rol.rol] = {
|
|
78
|
+
superuser: rol.superuser == 'true',
|
|
79
|
+
puede: filasDelRol.length ? puedeDe(filasDelRol, rp => rp.habilitado == 'true') : undefined,
|
|
80
|
+
};
|
|
81
|
+
});
|
|
82
|
+
return {
|
|
83
|
+
permisosRol,
|
|
84
|
+
permisosSuperuser: puedeDe(permisos, () => true),
|
|
85
|
+
permisosParaNadie: puedeDe(permisos, () => false),
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
// contexto como el que arma getContext para un usuario con ese rol
|
|
89
|
+
function contextoDelRol(be, rol, idper = 'PER1') {
|
|
90
|
+
var user = { rol, idper, usuario: 'usu_' + rol };
|
|
91
|
+
return Object.assign(Object.assign({}, (0, app_dmencu_1.permisosSegunUsuario)(be.caches, user)), { be,
|
|
92
|
+
user, session: {}, username: user.usuario, machineId: 'test', navigator: 'test' });
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXBhcmEtdGVzdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC9hcHAtcGFyYS10ZXN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUE4QkEsOENBc0JDO0lBNEJELHNEQWlCQztJQUdELHdDQVdDO0lBL0dELDhCQUE4QjtJQUM5QixrQ0FBa0M7SUFFbEMsdUNBQThGO0lBQzlGLGlEQUFtSDtJQUVuSCxxREFBNkU7SUFHN0UsNkVBQTZFO0lBQzdFLGtEQUFrRDtJQUNyQyxRQUFBLGtCQUFrQixHQUFHLElBQUEsNEJBQWUsRUFDN0MsSUFBQSxzQ0FBc0IsRUFDbEIsSUFBQSxzQ0FBc0IsRUFDbEIsSUFBQSxpQ0FBaUIsRUFDYixJQUFBLDJCQUFnQixFQUNaLElBQUEsMEJBQWUsRUFDWCxJQUFBLCtCQUFlLEVBQ1gsSUFBQSw4QkFBbUIsRUFBQyxxQkFBVSxDQUFDLENBQ2xDLENBQ0osQ0FDSixDQUNKLENBQ0osQ0FDSixDQUNKLENBQUM7SUFJRix3R0FBd0c7SUFDeEcsU0FBZ0IsaUJBQWlCLENBQUMsU0FBaUIsRUFBRTtRQUNqRCxJQUFJLEVBQUUsR0FBRyxJQUFJLDBCQUFrQixFQUFFLENBQUM7UUFDbEMsK0VBQStFO1FBQy9FLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHO1lBQ2YsVUFBVSxFQUFFLEVBQUU7WUFDZCxJQUFJLEVBQUUsSUFBSTtZQUNWLGVBQWUsRUFBRSxRQUFRO1lBQ3pCLGFBQWEsRUFBRSxFQUFFO1lBQ2pCLGdCQUFnQixFQUFFLElBQUk7WUFDdEIsUUFBUSxFQUFFLEVBQUU7WUFDWixjQUFjLEVBQUUsRUFBRTtZQUNsQixpQkFBaUIsRUFBRSxFQUFFO1lBQ3JCLE9BQU8sRUFBRSxLQUFLO1lBQ2QsWUFBWSxFQUFFLEVBQUU7WUFDaEIsTUFBTTtTQUNULENBQUM7UUFDRixJQUFJLFFBQVEsR0FBRyxxQkFBcUIsRUFBRSxDQUFDO1FBQ3ZDLEVBQUUsQ0FBQyxNQUFNLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUM7UUFDN0MsRUFBRSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDO1FBQ3JELEVBQUUsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEdBQUcsUUFBUSxDQUFDLGlCQUFpQixDQUFDO1FBQ3pELEVBQUUsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEdBQUcsUUFBUSxDQUFDLGlCQUFpQixDQUFDO1FBQ3pELE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUlELFNBQVMsT0FBTyxDQUFDLGFBQXFCO1FBQ2xDLG1DQUFtQztRQUNuQyxJQUFJLFNBQVMsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLGVBQWUsRUFBRSxhQUFhLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM5RixJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsTUFBTSxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDM0YsSUFBSSxRQUFRLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNwRSxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDdEIsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUMxRCxJQUFJLElBQUksR0FBWSxFQUFFLENBQUM7WUFDdkIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsRSxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxTQUFTLE9BQU8sQ0FBQyxLQUFnQixFQUFFLFVBQXNDO1FBQ3JFLElBQUksS0FBSyxHQUE0QyxFQUFFLENBQUM7UUFDeEQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNqQixLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2hELEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCx1RkFBdUY7SUFDdkYsa0RBQWtEO0lBQ2xELFNBQWdCLHFCQUFxQjtRQUNqQyxJQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDakMsSUFBSSxhQUFhLEdBQUcsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDbEQsSUFBSSxRQUFRLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksV0FBVyxHQUFnQixFQUFFLENBQUM7UUFDbEMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNoQixJQUFJLFdBQVcsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDaEUsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRztnQkFDbkIsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTLElBQUksTUFBTTtnQkFDbEMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO2FBQzlGLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU87WUFDSCxXQUFXO1lBQ1gsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7WUFDaEQsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUM7U0FDcEQsQ0FBQztJQUNOLENBQUM7SUFFRCxtRUFBbUU7SUFDbkUsU0FBZ0IsY0FBYyxDQUFDLEVBQWdCLEVBQUUsR0FBVyxFQUFFLFFBQWdCLE1BQU07UUFDaEYsSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDakQsdUNBQ08sSUFBQSxpQ0FBb0IsRUFBQyxFQUFFLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUN4QyxFQUFFO1lBQ0YsSUFBSSxFQUNKLE9BQU8sRUFBRSxFQUFFLEVBQ1gsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQ3RCLFNBQVMsRUFBRSxNQUFNLEVBQ2pCLFNBQVMsRUFBRSxNQUFNLElBQ25CO0lBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuXG5pbXBvcnQgeyBBcHBCYWNrZW5kLCBlbWVyZ2VBcHBNZXRhRW5jLCBlbWVyZ2VBcHBPcGVyYXRpdm9zLCBlbWVyZ2VBcHBSZWxFbmMgfSBmcm9tICdtZXRhLWVuYyc7XG5pbXBvcnQgeyBlbWVyZ2VBcHBDb25zaXN0ZW5jaWFzLCBlbWVyZ2VBcHBEYXRvc0V4dCwgZW1lcmdlQXBwUHJvY2VzYW1pZW50bywgZW1lcmdlQXBwVmFyQ2FsIH0gZnJvbSAncHJvY2VzYW1pZW50byc7XG5cbmltcG9ydCB7IGVtZXJnZUFwcERtRW5jdSwgcGVybWlzb3NTZWd1blVzdWFyaW8gfSBmcm9tICcuLi9zZXJ2ZXIvYXBwLWRtZW5jdSc7XG5pbXBvcnQgdHlwZSB7IENvbnRleHQsIFBlcm1pc29zUm9sLCBQdWVkZSB9IGZyb20gJy4uL3NlcnZlci90eXBlcy1kbWVuY3UnO1xuXG4vLyBMYSBhcHAgY29tcHVlc3RhIGlndWFsIHF1ZSBlbiBzZXJ2ZXItZG1lbmN1LnRzLCBwZXJvIHNpbiBsbGFtYXIgYSBzdGFydCgpOlxuLy8gbm8gc2UgY29uZWN0YSBhIGxhIGJhc2UgbmkgbGV2YW50YSBlbCBzZXJ2aWRvci5cbmV4cG9ydCBjb25zdCBBcHBEbUVuY3VQYXJhVGVzdHMgPSBlbWVyZ2VBcHBEbUVuY3UoXG4gICAgZW1lcmdlQXBwUHJvY2VzYW1pZW50byhcbiAgICAgICAgZW1lcmdlQXBwQ29uc2lzdGVuY2lhcyhcbiAgICAgICAgICAgIGVtZXJnZUFwcERhdG9zRXh0KFxuICAgICAgICAgICAgICAgIGVtZXJnZUFwcE1ldGFFbmMoXG4gICAgICAgICAgICAgICAgICAgIGVtZXJnZUFwcFJlbEVuYyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtZXJnZUFwcFZhckNhbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWVyZ2VBcHBPcGVyYXRpdm9zKEFwcEJhY2tlbmQpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgIClcbiAgICApXG4pO1xuXG5leHBvcnQgdHlwZSBBcHBQYXJhVGVzdHMgPSBJbnN0YW5jZVR5cGU8dHlwZW9mIEFwcERtRW5jdVBhcmFUZXN0cz47XG5cbi8vIHBvbGljeSAnd2ViJyBlcyBlbCBtb2RvIFJFTEVWQU1JRU5UTyAoZGlzcG9zaXRpdm9zKSwgY3VhbHF1aWVyIG90cmEgZXMgR0FCSU5FVEUgKHZlciBnZXRNb2RvQnlQb2xpY3kpXG5leHBvcnQgZnVuY3Rpb24gY3JlYXJBcHBQYXJhVGVzdHMocG9saWN5OiBzdHJpbmcgPSAnJyk6IEFwcFBhcmFUZXN0cyB7XG4gICAgdmFyIGJlID0gbmV3IEFwcERtRW5jdVBhcmFUZXN0cygpO1xuICAgIC8vIGxhIGNvbmZpZ3VyYWNpw7NuIHNlIGNhcmdhIGVuIHN0YXJ0KCk7IHNlIGNvbXBsZXRhIHPDs2xvIGxhIHBhcnRlIGRlbCBzZXJ2aWRvclxuICAgIGJlLmNvbmZpZy5zZXJ2ZXIgPSB7XG4gICAgICAgICdiYXNlLXVybCc6ICcnLFxuICAgICAgICBwb3J0OiAzMDAwLFxuICAgICAgICAnc2Vzc2lvbi1zdG9yZSc6ICdtZW1vcnknLFxuICAgICAgICAnaXAtcmVwbGFjZXInOiAnJyxcbiAgICAgICAgJ3NpbGVudC1zdGFydHVwJzogdHJ1ZSxcbiAgICAgICAgJ2tpbGwtOSc6ICcnLFxuICAgICAgICBiaXRhY29yYVNjaGVtYTogJycsXG4gICAgICAgIGJpdGFjb3JhVGFibGVOYW1lOiAnJyxcbiAgICAgICAgdXNlQ29yczogZmFsc2UsXG4gICAgICAgIGFsbG93ZWRIb3N0czogW10sXG4gICAgICAgIHBvbGljeSxcbiAgICB9O1xuICAgIHZhciBwZXJtaXNvcyA9IHBlcm1pc29zRGVJbnN0YWxhY2lvbigpO1xuICAgIGJlLmNhY2hlcy5wZXJtaXNvc1JvbCA9IHBlcm1pc29zLnBlcm1pc29zUm9sO1xuICAgIGJlLmNhY2hlcy5wZXJtaXNvc1JvbFNvbG9UcnVlID0gcGVybWlzb3MucGVybWlzb3NSb2w7XG4gICAgYmUuY2FjaGVzLnBlcm1pc29zU3VwZXJ1c2VyID0gcGVybWlzb3MucGVybWlzb3NTdXBlcnVzZXI7XG4gICAgYmUuY2FjaGVzLnBlcm1pc29zUGFyYU5hZGllID0gcGVybWlzb3MucGVybWlzb3NQYXJhTmFkaWU7XG4gICAgcmV0dXJuIGJlO1xufVxuXG50eXBlIEZpbGFUYWIgPSBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG5mdW5jdGlvbiBsZWVyVGFiKG5vbWJyZUFyY2hpdm86IHN0cmluZyk6IEZpbGFUYWJbXSB7XG4gICAgLy8gbG9zIHRlc3RzIGNvcnJlbiBkZXNkZSBkaXN0L3Rlc3RcbiAgICB2YXIgY29udGVuaWRvID0gZnMucmVhZEZpbGVTeW5jKHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi8uLi9pbnN0YWxsJywgbm9tYnJlQXJjaGl2byksICd1dGY4Jyk7XG4gICAgdmFyIFtlbmNhYmV6YWRvLCAuLi5saW5lYXNdID0gY29udGVuaWRvLnNwbGl0KC9cXHI/XFxuLykuZmlsdGVyKGxpbmVhID0+IGxpbmVhLnRyaW0oKSAhPSAnJyk7XG4gICAgdmFyIGNvbHVtbmFzID0gZW5jYWJlemFkby5zcGxpdCgnfCcpLm1hcChjb2x1bW5hID0+IGNvbHVtbmEudHJpbSgpKTtcbiAgICByZXR1cm4gbGluZWFzLm1hcChsaW5lYSA9PiB7XG4gICAgICAgIHZhciB2YWxvcmVzID0gbGluZWEuc3BsaXQoJ3wnKS5tYXAodmFsb3IgPT4gdmFsb3IudHJpbSgpKTtcbiAgICAgICAgdmFyIGZpbGE6IEZpbGFUYWIgPSB7fTtcbiAgICAgICAgY29sdW1uYXMuZm9yRWFjaCgoY29sdW1uYSwgaSkgPT4geyBmaWxhW2NvbHVtbmFdID0gdmFsb3Jlc1tpXTsgfSk7XG4gICAgICAgIHJldHVybiBmaWxhO1xuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBwdWVkZURlKGZpbGFzOiBGaWxhVGFiW10sIGhhYmlsaXRhZG86IChmaWxhOiBGaWxhVGFiKSA9PiBib29sZWFuKTogUHVlZGUge1xuICAgIHZhciBwdWVkZTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgYm9vbGVhbj4+ID0ge307XG4gICAgZmlsYXMuZm9yRWFjaChmaWxhID0+IHtcbiAgICAgICAgcHVlZGVbZmlsYS5wZXJtaXNvXSA9IHB1ZWRlW2ZpbGEucGVybWlzb10gfHwge307XG4gICAgICAgIHB1ZWRlW2ZpbGEucGVybWlzb11bZmlsYS5hY2Npb25dID0gaGFiaWxpdGFkbyhmaWxhKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcHVlZGU7XG59XG5cbi8vIEFybWEgbG9zIHBlcm1pc29zIGNvbW8gbG8gaGFjZSBwb3N0Q29uZmlnIGVuIGFwcC1kbWVuY3UudHMgKHF1ZSBsb3MgbGVlIGRlIGxhIGJhc2UpLFxuLy8gYSBwYXJ0aXIgZGUgbG9zIC50YWIgY29uIHF1ZSBzZSBpbnN0YWxhIGxhIGJhc2VcbmV4cG9ydCBmdW5jdGlvbiBwZXJtaXNvc0RlSW5zdGFsYWNpb24oKTogeyBwZXJtaXNvc1JvbDogUGVybWlzb3NSb2wsIHBlcm1pc29zU3VwZXJ1c2VyOiBQdWVkZSwgcGVybWlzb3NQYXJhTmFkaWU6IFB1ZWRlIH0ge1xuICAgIHZhciByb2xlcyA9IGxlZXJUYWIoJ3JvbGVzLnRhYicpO1xuICAgIHZhciByb2xlc1Blcm1pc29zID0gbGVlclRhYigncm9sZXNfcGVybWlzb3MudGFiJyk7XG4gICAgdmFyIHBlcm1pc29zID0gbGVlclRhYigncGVybWlzb3MudGFiJyk7XG4gICAgdmFyIHBlcm1pc29zUm9sOiBQZXJtaXNvc1JvbCA9IHt9O1xuICAgIHJvbGVzLmZvckVhY2gocm9sID0+IHtcbiAgICAgICAgdmFyIGZpbGFzRGVsUm9sID0gcm9sZXNQZXJtaXNvcy5maWx0ZXIocnAgPT4gcnAucm9sID09IHJvbC5yb2wpO1xuICAgICAgICBwZXJtaXNvc1JvbFtyb2wucm9sXSA9IHtcbiAgICAgICAgICAgIHN1cGVydXNlcjogcm9sLnN1cGVydXNlciA9PSAndHJ1ZScsXG4gICAgICAgICAgICBwdWVkZTogZmlsYXNEZWxSb2wubGVuZ3RoID8gcHVlZGVEZShmaWxhc0RlbFJvbCwgcnAgPT4gcnAuaGFiaWxpdGFkbyA9PSAndHJ1ZScpIDogdW5kZWZpbmVkLFxuICAgICAgICB9O1xuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICAgIHBlcm1pc29zUm9sLFxuICAgICAgICBwZXJtaXNvc1N1cGVydXNlcjogcHVlZGVEZShwZXJtaXNvcywgKCkgPT4gdHJ1ZSksXG4gICAgICAgIHBlcm1pc29zUGFyYU5hZGllOiBwdWVkZURlKHBlcm1pc29zLCAoKSA9PiBmYWxzZSksXG4gICAgfTtcbn1cblxuLy8gY29udGV4dG8gY29tbyBlbCBxdWUgYXJtYSBnZXRDb250ZXh0IHBhcmEgdW4gdXN1YXJpbyBjb24gZXNlIHJvbFxuZXhwb3J0IGZ1bmN0aW9uIGNvbnRleHRvRGVsUm9sKGJlOiBBcHBQYXJhVGVzdHMsIHJvbDogc3RyaW5nLCBpZHBlcjogc3RyaW5nID0gJ1BFUjEnKTogQ29udGV4dCB7XG4gICAgdmFyIHVzZXIgPSB7IHJvbCwgaWRwZXIsIHVzdWFyaW86ICd1c3VfJyArIHJvbCB9O1xuICAgIHJldHVybiB7XG4gICAgICAgIC4uLnBlcm1pc29zU2VndW5Vc3VhcmlvKGJlLmNhY2hlcywgdXNlciksXG4gICAgICAgIGJlLFxuICAgICAgICB1c2VyLFxuICAgICAgICBzZXNzaW9uOiB7fSxcbiAgICAgICAgdXNlcm5hbWU6IHVzZXIudXN1YXJpbyxcbiAgICAgICAgbWFjaGluZUlkOiAndGVzdCcsXG4gICAgICAgIG5hdmlnYXRvcjogJ3Rlc3QnLFxuICAgIH07XG59XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
(function (factory) {
|
|
2
|
+
if (typeof module === "object" && typeof module.exports === "object") {
|
|
3
|
+
var v = factory(require, exports);
|
|
4
|
+
if (v !== undefined) module.exports = v;
|
|
5
|
+
}
|
|
6
|
+
else if (typeof define === "function" && define.amd) {
|
|
7
|
+
define(["require", "exports", "mocha", "node:assert", "node:fs", "node:os", "node:path", "../server/app-dmencu", "../server/ayuda", "./app-para-tests"], factory);
|
|
8
|
+
}
|
|
9
|
+
})(function (require, exports) {
|
|
10
|
+
"use strict";
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const mocha_1 = require("mocha");
|
|
13
|
+
const assert = require("node:assert");
|
|
14
|
+
const fs = require("node:fs");
|
|
15
|
+
const os = require("node:os");
|
|
16
|
+
const path = require("node:path");
|
|
17
|
+
const app_dmencu_1 = require("../server/app-dmencu");
|
|
18
|
+
const ayuda_1 = require("../server/ayuda");
|
|
19
|
+
const app_para_tests_1 = require("./app-para-tests");
|
|
20
|
+
const GABINETE = '';
|
|
21
|
+
const RELEVAMIENTO = 'web';
|
|
22
|
+
function appConAyuda(policy) {
|
|
23
|
+
var be = (0, app_para_tests_1.crearAppParaTests)(policy);
|
|
24
|
+
be.caches.ayuda = (0, ayuda_1.cargarAyuda)(be.getAyudaFuentes());
|
|
25
|
+
return be;
|
|
26
|
+
}
|
|
27
|
+
function idsVisibles(be, rol) {
|
|
28
|
+
return (0, ayuda_1.temasVisibles)(be.caches.ayuda, (0, app_dmencu_1.quienConsultaAyuda)((0, app_para_tests_1.contextoDelRol)(be, rol))).map(tema => tema.id);
|
|
29
|
+
}
|
|
30
|
+
function tema(contenido, origen = 'test') {
|
|
31
|
+
return (0, ayuda_1.parsearTemaDeAyuda)(contenido, 'tema.md', origen);
|
|
32
|
+
}
|
|
33
|
+
(0, mocha_1.describe)('dmencu - ayuda en línea', () => {
|
|
34
|
+
(0, mocha_1.describe)('formato de los archivos', () => {
|
|
35
|
+
(0, mocha_1.it)('lee el encabezado y convierte el markdown a html', () => {
|
|
36
|
+
var leido = tema('---\nid: uno\ntitulo: Uno\npermisos: [campo.editar]\nmenu: asignacion\n---\nTexto **fuerte** y [otro](ayuda:dos)\n');
|
|
37
|
+
assert.strictEqual(leido.id, 'uno');
|
|
38
|
+
assert.strictEqual(leido.titulo, 'Uno');
|
|
39
|
+
assert.deepStrictEqual(leido.permisos, ['campo.editar']);
|
|
40
|
+
assert.deepStrictEqual(leido.menu, ['asignacion']);
|
|
41
|
+
assert.deepStrictEqual(leido.roles, []);
|
|
42
|
+
assert.strictEqual(leido.modo, null);
|
|
43
|
+
assert.strictEqual(leido.html, '<p>Texto <strong>fuerte</strong> y <a href="ayuda:dos">otro</a></p>\n');
|
|
44
|
+
});
|
|
45
|
+
(0, mocha_1.it)('no deja pasar html crudo', () => {
|
|
46
|
+
assert.ok(!tema('---\nid: uno\ntitulo: Uno\n---\n<script>alert(1)</script>\n').html.includes('<script>'));
|
|
47
|
+
});
|
|
48
|
+
(0, mocha_1.it)('acepta archivos con BOM y fin de línea de Windows', () => {
|
|
49
|
+
assert.strictEqual(tema('---\r\nid: uno\r\ntitulo: Uno\r\n---\r\nhola\r\n').html, '<p>hola</p>\n');
|
|
50
|
+
});
|
|
51
|
+
(0, mocha_1.it)('rechaza un archivo sin encabezado', () => {
|
|
52
|
+
assert.throws(() => tema('# Hola\n'), /falta el encabezado/);
|
|
53
|
+
});
|
|
54
|
+
(0, mocha_1.it)('rechaza campos desconocidos (para detectar errores de tipeo)', () => {
|
|
55
|
+
assert.throws(() => tema('---\nid: uno\ntitulo: Uno\npermiso: campo.editar\n---\n'), /campo desconocido "permiso"/);
|
|
56
|
+
});
|
|
57
|
+
(0, mocha_1.it)('rechaza un modo que no existe', () => {
|
|
58
|
+
assert.throws(() => tema('---\nid: uno\ntitulo: Uno\nmodo: OFICINA\n---\n'), /modo debe ser/);
|
|
59
|
+
});
|
|
60
|
+
(0, mocha_1.it)('rechaza permisos sin acción', () => {
|
|
61
|
+
assert.throws(() => tema('---\nid: uno\ntitulo: Uno\npermisos: [campo]\n---\n'), /permiso.accion/);
|
|
62
|
+
});
|
|
63
|
+
(0, mocha_1.it)('exige título salvo para ocultar', () => {
|
|
64
|
+
assert.throws(() => tema('---\nid: uno\n---\n'), /titulo/);
|
|
65
|
+
assert.strictEqual(tema('---\nid: uno\nocultar: true\n---\n').ocultar, true);
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
(0, mocha_1.describe)('fuentes: cómo las apps finales agregan, reemplazan y ocultan temas', () => {
|
|
69
|
+
var dmencu = [
|
|
70
|
+
tema('---\nid: a\ntitulo: A de dmencu\norden: 1\n---\n', 'dmencu'),
|
|
71
|
+
tema('---\nid: b\ntitulo: B\norden: 2\n---\n', 'dmencu'),
|
|
72
|
+
tema('---\nid: c\ntitulo: C\norden: 3\n---\n', 'dmencu'),
|
|
73
|
+
];
|
|
74
|
+
var app = [
|
|
75
|
+
tema('---\nid: a\ntitulo: A de la app\norden: 1\n---\n', 'app'),
|
|
76
|
+
tema('---\nid: b\nocultar: true\n---\n', 'app'),
|
|
77
|
+
tema('---\nid: d\ntitulo: D\norden: 0\n---\n', 'app'),
|
|
78
|
+
];
|
|
79
|
+
(0, mocha_1.it)('un id repetido reemplaza al anterior, ocultar lo quita y los nuevos se agregan según orden', () => {
|
|
80
|
+
var combinados = (0, ayuda_1.combinarTemasDeAyuda)([dmencu, app]);
|
|
81
|
+
assert.deepStrictEqual(combinados.map(t => [t.id, t.origen]), [['d', 'app'], ['a', 'app'], ['c', 'dmencu']]);
|
|
82
|
+
});
|
|
83
|
+
(0, mocha_1.it)('rechaza ids repetidos dentro de una misma carpeta', () => {
|
|
84
|
+
var carpeta = fs.mkdtempSync(path.join(os.tmpdir(), 'ayuda-'));
|
|
85
|
+
try {
|
|
86
|
+
fs.writeFileSync(path.join(carpeta, '1.md'), '---\nid: a\ntitulo: A\n---\n');
|
|
87
|
+
fs.writeFileSync(path.join(carpeta, '2.md'), '---\nid: a\ntitulo: Otra A\n---\n');
|
|
88
|
+
assert.throws(() => (0, ayuda_1.leerFuenteDeAyuda)({ origen: 'test', carpeta }), /ya está en/);
|
|
89
|
+
}
|
|
90
|
+
finally {
|
|
91
|
+
fs.rmSync(carpeta, { recursive: true });
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
(0, mocha_1.it)('avisa si la carpeta no existe', () => {
|
|
95
|
+
assert.throws(() => (0, ayuda_1.leerFuenteDeAyuda)({ origen: 'test', carpeta: path.join(os.tmpdir(), 'no-existe-ayuda') }), /no existe la carpeta/);
|
|
96
|
+
});
|
|
97
|
+
(0, mocha_1.it)('la carpeta de dmencu se encuentra desde el js compilado', () => {
|
|
98
|
+
assert.ok(fs.existsSync(path.join((0, ayuda_1.carpetaDelPaquete)(__dirname), 'ayuda')));
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
(0, mocha_1.describe)('los temas de dmencu', () => {
|
|
102
|
+
(0, mocha_1.it)('no tienen problemas en GABINETE (permisos, roles y opciones de menú existen)', () => {
|
|
103
|
+
assert.deepStrictEqual(appConAyuda(GABINETE).problemasDeAyuda(), []);
|
|
104
|
+
});
|
|
105
|
+
(0, mocha_1.it)('no tienen problemas en RELEVAMIENTO', () => {
|
|
106
|
+
assert.deepStrictEqual(appConAyuda(RELEVAMIENTO).problemasDeAyuda(), []);
|
|
107
|
+
});
|
|
108
|
+
(0, mocha_1.it)('cada opción del menú de admin en GABINETE tiene un tema que la explica, directa o a través de su menú padre', () => {
|
|
109
|
+
var be = appConAyuda(GABINETE);
|
|
110
|
+
var context = (0, app_para_tests_1.contextoDelRol)(be, 'admin');
|
|
111
|
+
var opciones = (0, ayuda_1.menuConAyuda)(be.getMenu(context).menu, be.caches.ayuda);
|
|
112
|
+
var sinAyuda = opciones.filter(opcion => opcion.tema == null && opcion.ruta != 'configurar' && opcion.ruta != 'carto').map(opcion => opcion.ruta);
|
|
113
|
+
assert.deepStrictEqual(sinAyuda, []);
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
(0, mocha_1.describe)('qué ve cada perfil', () => {
|
|
117
|
+
(0, mocha_1.it)('en RELEVAMIENTO quien releva ve la ayuda del dispositivo', () => {
|
|
118
|
+
var be = appConAyuda(RELEVAMIENTO);
|
|
119
|
+
assert.deepStrictEqual(idsVisibles(be, 'encuestador'), ['dm-relevamiento', 'dm-sincronizar', 'dm-cambiar-modo']);
|
|
120
|
+
assert.deepStrictEqual(idsVisibles(be, 'supervisor'), ['dm-relevamiento', 'dm-sincronizar', 'dm-cambiar-modo']);
|
|
121
|
+
});
|
|
122
|
+
(0, mocha_1.it)('en RELEVAMIENTO quien no releva no ve ayuda ni la opción del menú', () => {
|
|
123
|
+
var be = appConAyuda(RELEVAMIENTO);
|
|
124
|
+
assert.deepStrictEqual(idsVisibles(be, 'coor_campo'), []);
|
|
125
|
+
assert.deepStrictEqual(be.getMenu((0, app_para_tests_1.contextoDelRol)(be, 'coor_campo')).menu, []);
|
|
126
|
+
});
|
|
127
|
+
(0, mocha_1.it)('en GABINETE el encuestador no ve la ayuda del dispositivo', () => {
|
|
128
|
+
var be = appConAyuda(GABINETE);
|
|
129
|
+
assert.deepStrictEqual(idsVisibles(be, 'encuestador'), []);
|
|
130
|
+
assert.deepStrictEqual(be.getMenu((0, app_para_tests_1.contextoDelRol)(be, 'encuestador')).menu, []);
|
|
131
|
+
});
|
|
132
|
+
(0, mocha_1.it)('en GABINETE el ingresador ve lo de campo pero no lo de administración ni procesamiento', () => {
|
|
133
|
+
var ids = idsVisibles(appConAyuda(GABINETE), 'ingresador');
|
|
134
|
+
assert.deepStrictEqual(ids, ['circuito-encuesta', 'asignacion', 'recepcion', 'supervision', 'varios']);
|
|
135
|
+
});
|
|
136
|
+
(0, mocha_1.it)('diseño conceptual ve la ayuda de metadatos', () => {
|
|
137
|
+
var ids = idsVisibles(appConAyuda(GABINETE), 'dis_conceptual');
|
|
138
|
+
assert.deepStrictEqual(ids, ['circuito-encuesta', 'metadatos']);
|
|
139
|
+
});
|
|
140
|
+
(0, mocha_1.it)('admin (superuser) ve todos los temas del modo', () => {
|
|
141
|
+
var be = appConAyuda(GABINETE);
|
|
142
|
+
var deGabinete = be.caches.ayuda.filter(t => t.modo != 'RELEVAMIENTO').map(t => t.id);
|
|
143
|
+
assert.deepStrictEqual(idsVisibles(be, 'admin'), deGabinete);
|
|
144
|
+
});
|
|
145
|
+
(0, mocha_1.it)('un tema por rol se muestra a ese rol aunque no tenga el permiso', () => {
|
|
146
|
+
var porRol = tema('---\nid: x\ntitulo: X\nroles: [auxiliar]\n---\n');
|
|
147
|
+
var be = (0, app_para_tests_1.crearAppParaTests)(GABINETE);
|
|
148
|
+
assert.deepStrictEqual((0, ayuda_1.temasVisibles)([porRol], (0, app_dmencu_1.quienConsultaAyuda)((0, app_para_tests_1.contextoDelRol)(be, 'auxiliar'))).map(t => t.id), ['x']);
|
|
149
|
+
assert.deepStrictEqual((0, ayuda_1.temasVisibles)([porRol], (0, app_dmencu_1.quienConsultaAyuda)((0, app_para_tests_1.contextoDelRol)(be, 'ingresador'))), []);
|
|
150
|
+
});
|
|
151
|
+
(0, mocha_1.it)('la opción ayuda va al final del menú de quien tiene temas', () => {
|
|
152
|
+
var be = appConAyuda(RELEVAMIENTO);
|
|
153
|
+
var menu = be.getMenu((0, app_para_tests_1.contextoDelRol)(be, 'encuestador')).menu;
|
|
154
|
+
assert.deepStrictEqual(menu.map(opcion => opcion.name), ['relevamiento', 'sincronizar', 'cambiar_modo', 'ayuda']);
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
(0, mocha_1.describe)('menú con ayuda (lo que muestra "Qué puedo hacer")', () => {
|
|
158
|
+
(0, mocha_1.it)('liga cada opción del menú del usuario con su tema y no incluye la opción ayuda', () => {
|
|
159
|
+
var be = appConAyuda(RELEVAMIENTO);
|
|
160
|
+
var context = (0, app_para_tests_1.contextoDelRol)(be, 'encuestador');
|
|
161
|
+
var temas = (0, ayuda_1.temasVisibles)(be.caches.ayuda, (0, app_dmencu_1.quienConsultaAyuda)(context));
|
|
162
|
+
assert.deepStrictEqual((0, ayuda_1.menuConAyuda)(be.getMenu(context).menu, temas), [
|
|
163
|
+
{ ruta: 'relevamiento', label: 'relevamiento', tema: 'dm-relevamiento', opciones: [] },
|
|
164
|
+
{ ruta: 'sincronizar', label: 'sincronizar', tema: 'dm-sincronizar', opciones: [] },
|
|
165
|
+
{ ruta: 'cambiar_modo', label: 'cambiar modo', tema: 'dm-cambiar-modo', opciones: [] },
|
|
166
|
+
]);
|
|
167
|
+
});
|
|
168
|
+
(0, mocha_1.it)('recorre los submenús con rutas separadas por /', () => {
|
|
169
|
+
var be = appConAyuda(GABINETE);
|
|
170
|
+
var context = (0, app_para_tests_1.contextoDelRol)(be, 'ingresador');
|
|
171
|
+
var temas = (0, ayuda_1.temasVisibles)(be.caches.ayuda, (0, app_dmencu_1.quienConsultaAyuda)(context));
|
|
172
|
+
var asignacion = (0, ayuda_1.menuConAyuda)(be.getMenu(context).menu, temas).find(opcion => opcion.ruta == 'asignacion');
|
|
173
|
+
assert.ok(asignacion);
|
|
174
|
+
assert.deepStrictEqual(asignacion.opciones.map(opcion => [opcion.ruta, opcion.tema]), [
|
|
175
|
+
['asignacion/encuestador', 'asignacion'],
|
|
176
|
+
['asignacion/ingresador', 'asignacion'],
|
|
177
|
+
['asignacion/recuperador', 'asignacion'],
|
|
178
|
+
]);
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1heXVkYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L3Rlc3QtYXl1ZGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUFBQSxpQ0FBcUM7SUFFckMsc0NBQXVDO0lBQ3ZDLDhCQUE4QjtJQUM5Qiw4QkFBOEI7SUFDOUIsa0NBQWtDO0lBRWxDLHFEQUEwRDtJQUMxRCwyQ0FFeUI7SUFFekIscURBQW1GO0lBRW5GLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNwQixNQUFNLFlBQVksR0FBRyxLQUFLLENBQUM7SUFFM0IsU0FBUyxXQUFXLENBQUMsTUFBYztRQUMvQixJQUFJLEVBQUUsR0FBRyxJQUFBLGtDQUFpQixFQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLElBQUEsbUJBQVcsRUFBQyxFQUFFLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztRQUNwRCxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCxTQUFTLFdBQVcsQ0FBQyxFQUFnQixFQUFFLEdBQVc7UUFDOUMsT0FBTyxJQUFBLHFCQUFhLEVBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBQSwrQkFBa0IsRUFBQyxJQUFBLCtCQUFjLEVBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUcsQ0FBQztJQUVELFNBQVMsSUFBSSxDQUFDLFNBQWlCLEVBQUUsU0FBaUIsTUFBTTtRQUNwRCxPQUFPLElBQUEsMEJBQWtCLEVBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsSUFBQSxnQkFBUSxFQUFDLHlCQUF5QixFQUFFLEdBQUcsRUFBRTtRQUVyQyxJQUFBLGdCQUFRLEVBQUMseUJBQXlCLEVBQUUsR0FBRyxFQUFFO1lBQ3JDLElBQUEsVUFBRSxFQUFDLGtEQUFrRCxFQUFFLEdBQUcsRUFBRTtnQkFDeEQsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLG9IQUFvSCxDQUFDLENBQUM7Z0JBQ3ZJLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDcEMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUN4QyxNQUFNLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO2dCQUN6RCxNQUFNLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO2dCQUNuRCxNQUFNLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3hDLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDckMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLHVFQUF1RSxDQUFDLENBQUM7WUFDNUcsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFBLFVBQUUsRUFBQywwQkFBMEIsRUFBRSxHQUFHLEVBQUU7Z0JBQ2hDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsNkRBQTZELENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDOUcsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFBLFVBQUUsRUFBQyxtREFBbUQsRUFBRSxHQUFHLEVBQUU7Z0JBQ3pELE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLG1EQUFtRCxDQUFDLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1lBQ3hHLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBQSxVQUFFLEVBQUMsbUNBQW1DLEVBQUUsR0FBRyxFQUFFO2dCQUN6QyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO1lBQ2pFLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBQSxVQUFFLEVBQUMsOERBQThELEVBQUUsR0FBRyxFQUFFO2dCQUNwRSxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyx5REFBeUQsQ0FBQyxFQUFFLDZCQUE2QixDQUFDLENBQUM7WUFDeEgsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFBLFVBQUUsRUFBQywrQkFBK0IsRUFBRSxHQUFHLEVBQUU7Z0JBQ3JDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGlEQUFpRCxDQUFDLEVBQUUsZUFBZSxDQUFDLENBQUM7WUFDbEcsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFBLFVBQUUsRUFBQyw2QkFBNkIsRUFBRSxHQUFHLEVBQUU7Z0JBQ25DLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLHFEQUFxRCxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztZQUN2RyxDQUFDLENBQUMsQ0FBQztZQUNILElBQUEsVUFBRSxFQUFDLGlDQUFpQyxFQUFFLEdBQUcsRUFBRTtnQkFDdkMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDM0QsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsb0NBQW9DLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDakYsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUEsZ0JBQVEsRUFBQyxvRUFBb0UsRUFBRSxHQUFHLEVBQUU7WUFDaEYsSUFBSSxNQUFNLEdBQUc7Z0JBQ1QsSUFBSSxDQUFDLGtEQUFrRCxFQUFFLFFBQVEsQ0FBQztnQkFDbEUsSUFBSSxDQUFDLHdDQUF3QyxFQUFFLFFBQVEsQ0FBQztnQkFDeEQsSUFBSSxDQUFDLHdDQUF3QyxFQUFFLFFBQVEsQ0FBQzthQUMzRCxDQUFDO1lBQ0YsSUFBSSxHQUFHLEdBQUc7Z0JBQ04sSUFBSSxDQUFDLGtEQUFrRCxFQUFFLEtBQUssQ0FBQztnQkFDL0QsSUFBSSxDQUFDLGtDQUFrQyxFQUFFLEtBQUssQ0FBQztnQkFDL0MsSUFBSSxDQUFDLHdDQUF3QyxFQUFFLEtBQUssQ0FBQzthQUN4RCxDQUFDO1lBQ0YsSUFBQSxVQUFFLEVBQUMsNEZBQTRGLEVBQUUsR0FBRyxFQUFFO2dCQUNsRyxJQUFJLFVBQVUsR0FBRyxJQUFBLDRCQUFvQixFQUFDLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JELE1BQU0sQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqSCxDQUFDLENBQUMsQ0FBQztZQUNILElBQUEsVUFBRSxFQUFDLG1EQUFtRCxFQUFFLEdBQUcsRUFBRTtnQkFDekQsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUMvRCxJQUFJLENBQUM7b0JBQ0QsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsRUFBRSw4QkFBOEIsQ0FBQyxDQUFDO29CQUM3RSxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUFFLG1DQUFtQyxDQUFDLENBQUM7b0JBQ2xGLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBQSx5QkFBaUIsRUFBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQztnQkFDdEYsQ0FBQzt3QkFBUyxDQUFDO29CQUNQLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQzVDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztZQUNILElBQUEsVUFBRSxFQUFDLCtCQUErQixFQUFFLEdBQUcsRUFBRTtnQkFDckMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFBLHlCQUFpQixFQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsaUJBQWlCLENBQUMsRUFBRSxDQUFDLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztZQUMzSSxDQUFDLENBQUMsQ0FBQztZQUNILElBQUEsVUFBRSxFQUFDLHlEQUF5RCxFQUFFLEdBQUcsRUFBRTtnQkFDL0QsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBQSx5QkFBaUIsRUFBQyxTQUFTLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0UsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUEsZ0JBQVEsRUFBQyxxQkFBcUIsRUFBRSxHQUFHLEVBQUU7WUFDakMsSUFBQSxVQUFFLEVBQUMsOEVBQThFLEVBQUUsR0FBRyxFQUFFO2dCQUNwRixNQUFNLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3pFLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBQSxVQUFFLEVBQUMscUNBQXFDLEVBQUUsR0FBRyxFQUFFO2dCQUMzQyxNQUFNLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzdFLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBQSxVQUFFLEVBQUMsNkdBQTZHLEVBQUUsR0FBRyxFQUFFO2dCQUNuSCxJQUFJLEVBQUUsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQy9CLElBQUksT0FBTyxHQUFHLElBQUEsK0JBQWMsRUFBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQzFDLElBQUksUUFBUSxHQUFHLElBQUEsb0JBQVksRUFBQyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN2RSxJQUFJLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksTUFBTSxDQUFDLElBQUksSUFBSSxZQUFZLElBQUksTUFBTSxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2xKLE1BQU0sQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3pDLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFBLGdCQUFRLEVBQUMsb0JBQW9CLEVBQUUsR0FBRyxFQUFFO1lBQ2hDLElBQUEsVUFBRSxFQUFDLDBEQUEwRCxFQUFFLEdBQUcsRUFBRTtnQkFDaEUsSUFBSSxFQUFFLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUNuQyxNQUFNLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pILE1BQU0sQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxZQUFZLENBQUMsRUFBRSxDQUFDLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixDQUFDLENBQUMsQ0FBQztZQUNwSCxDQUFDLENBQUMsQ0FBQztZQUNILElBQUEsVUFBRSxFQUFDLG1FQUFtRSxFQUFFLEdBQUcsRUFBRTtnQkFDekUsSUFBSSxFQUFFLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUNuQyxNQUFNLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQzFELE1BQU0sQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFBLCtCQUFjLEVBQUMsRUFBRSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2xGLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBQSxVQUFFLEVBQUMsMkRBQTJELEVBQUUsR0FBRyxFQUFFO2dCQUNqRSxJQUFJLEVBQUUsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQy9CLE1BQU0sQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxhQUFhLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDM0QsTUFBTSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUEsK0JBQWMsRUFBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbkYsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFBLFVBQUUsRUFBQyx3RkFBd0YsRUFBRSxHQUFHLEVBQUU7Z0JBQzlGLElBQUksR0FBRyxHQUFHLFdBQVcsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7Z0JBQzNELE1BQU0sQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLENBQUMsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUMzRyxDQUFDLENBQUMsQ0FBQztZQUNILElBQUEsVUFBRSxFQUFDLDRDQUE0QyxFQUFFLEdBQUcsRUFBRTtnQkFDbEQsSUFBSSxHQUFHLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUMvRCxNQUFNLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDcEUsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFBLFVBQUUsRUFBQywrQ0FBK0MsRUFBRSxHQUFHLEVBQUU7Z0JBQ3JELElBQUksRUFBRSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDL0IsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxjQUFjLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3RGLE1BQU0sQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUNqRSxDQUFDLENBQUMsQ0FBQztZQUNILElBQUEsVUFBRSxFQUFDLGlFQUFpRSxFQUFFLEdBQUcsRUFBRTtnQkFDdkUsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLGlEQUFpRCxDQUFDLENBQUM7Z0JBQ3JFLElBQUksRUFBRSxHQUFHLElBQUEsa0NBQWlCLEVBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3JDLE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBQSxxQkFBYSxFQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBQSwrQkFBa0IsRUFBQyxJQUFBLCtCQUFjLEVBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUMxSCxNQUFNLENBQUMsZUFBZSxDQUFDLElBQUEscUJBQWEsRUFBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUEsK0JBQWtCLEVBQUMsSUFBQSwrQkFBYyxFQUFDLEVBQUUsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDOUcsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFBLFVBQUUsRUFBQywyREFBMkQsRUFBRSxHQUFHLEVBQUU7Z0JBQ2pFLElBQUksRUFBRSxHQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxJQUFJLEdBQW1CLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBQSwrQkFBYyxFQUFDLEVBQUUsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDOUUsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUN0SCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBQSxnQkFBUSxFQUFDLG1EQUFtRCxFQUFFLEdBQUcsRUFBRTtZQUMvRCxJQUFBLFVBQUUsRUFBQyxnRkFBZ0YsRUFBRSxHQUFHLEVBQUU7Z0JBQ3RGLElBQUksRUFBRSxHQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxPQUFPLEdBQUcsSUFBQSwrQkFBYyxFQUFDLEVBQUUsRUFBRSxhQUFhLENBQUMsQ0FBQztnQkFDaEQsSUFBSSxLQUFLLEdBQUcsSUFBQSxxQkFBYSxFQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUEsK0JBQWtCLEVBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDeEUsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFBLG9CQUFZLEVBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUU7b0JBQ2xFLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFO29CQUN0RixFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRTtvQkFDbkYsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUU7aUJBQ3pGLENBQUMsQ0FBQztZQUNQLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBQSxVQUFFLEVBQUMsZ0RBQWdELEVBQUUsR0FBRyxFQUFFO2dCQUN0RCxJQUFJLEVBQUUsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQy9CLElBQUksT0FBTyxHQUFHLElBQUEsK0JBQWMsRUFBQyxFQUFFLEVBQUUsWUFBWSxDQUFDLENBQUM7Z0JBQy9DLElBQUksS0FBSyxHQUFHLElBQUEscUJBQWEsRUFBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFBLCtCQUFrQixFQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQ3hFLElBQUksVUFBVSxHQUFHLElBQUEsb0JBQVksRUFBQyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLFlBQVksQ0FBQyxDQUFDO2dCQUMzRyxNQUFNLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUN0QixNQUFNLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO29CQUNsRixDQUFDLHdCQUF3QixFQUFFLFlBQVksQ0FBQztvQkFDeEMsQ0FBQyx1QkFBdUIsRUFBRSxZQUFZLENBQUM7b0JBQ3ZDLENBQUMsd0JBQXdCLEVBQUUsWUFBWSxDQUFDO2lCQUMzQyxDQUFDLENBQUM7WUFDUCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZXNjcmliZSwgaXQgfSBmcm9tICdtb2NoYSc7XG5cbmltcG9ydCBhc3NlcnQgPSByZXF1aXJlKCdub2RlOmFzc2VydCcpO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgKiBhcyBvcyBmcm9tICdub2RlOm9zJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAnbm9kZTpwYXRoJztcblxuaW1wb3J0IHsgcXVpZW5Db25zdWx0YUF5dWRhIH0gZnJvbSAnLi4vc2VydmVyL2FwcC1kbWVuY3UnO1xuaW1wb3J0IHtcbiAgICBjYXJnYXJBeXVkYSwgY2FycGV0YURlbFBhcXVldGUsIGNvbWJpbmFyVGVtYXNEZUF5dWRhLCBsZWVyRnVlbnRlRGVBeXVkYSwgbWVudUNvbkF5dWRhLCBwYXJzZWFyVGVtYURlQXl1ZGEsIHRlbWFzVmlzaWJsZXNcbn0gZnJvbSAnLi4vc2VydmVyL2F5dWRhJztcbmltcG9ydCB0eXBlIHsgQXl1ZGFUZW1hLCBNZW51SW5mb0Jhc2UgfSBmcm9tICcuLi9zZXJ2ZXIvdHlwZXMtZG1lbmN1JztcbmltcG9ydCB7IEFwcFBhcmFUZXN0cywgY29udGV4dG9EZWxSb2wsIGNyZWFyQXBwUGFyYVRlc3RzIH0gZnJvbSAnLi9hcHAtcGFyYS10ZXN0cyc7XG5cbmNvbnN0IEdBQklORVRFID0gJyc7XG5jb25zdCBSRUxFVkFNSUVOVE8gPSAnd2ViJztcblxuZnVuY3Rpb24gYXBwQ29uQXl1ZGEocG9saWN5OiBzdHJpbmcpOiBBcHBQYXJhVGVzdHMge1xuICAgIHZhciBiZSA9IGNyZWFyQXBwUGFyYVRlc3RzKHBvbGljeSk7XG4gICAgYmUuY2FjaGVzLmF5dWRhID0gY2FyZ2FyQXl1ZGEoYmUuZ2V0QXl1ZGFGdWVudGVzKCkpO1xuICAgIHJldHVybiBiZTtcbn1cblxuZnVuY3Rpb24gaWRzVmlzaWJsZXMoYmU6IEFwcFBhcmFUZXN0cywgcm9sOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRlbWFzVmlzaWJsZXMoYmUuY2FjaGVzLmF5dWRhLCBxdWllbkNvbnN1bHRhQXl1ZGEoY29udGV4dG9EZWxSb2woYmUsIHJvbCkpKS5tYXAodGVtYSA9PiB0ZW1hLmlkKTtcbn1cblxuZnVuY3Rpb24gdGVtYShjb250ZW5pZG86IHN0cmluZywgb3JpZ2VuOiBzdHJpbmcgPSAndGVzdCcpOiBBeXVkYVRlbWEge1xuICAgIHJldHVybiBwYXJzZWFyVGVtYURlQXl1ZGEoY29udGVuaWRvLCAndGVtYS5tZCcsIG9yaWdlbik7XG59XG5cbmRlc2NyaWJlKCdkbWVuY3UgLSBheXVkYSBlbiBsw61uZWEnLCAoKSA9PiB7XG5cbiAgICBkZXNjcmliZSgnZm9ybWF0byBkZSBsb3MgYXJjaGl2b3MnLCAoKSA9PiB7XG4gICAgICAgIGl0KCdsZWUgZWwgZW5jYWJlemFkbyB5IGNvbnZpZXJ0ZSBlbCBtYXJrZG93biBhIGh0bWwnLCAoKSA9PiB7XG4gICAgICAgICAgICB2YXIgbGVpZG8gPSB0ZW1hKCctLS1cXG5pZDogdW5vXFxudGl0dWxvOiBVbm9cXG5wZXJtaXNvczogW2NhbXBvLmVkaXRhcl1cXG5tZW51OiBhc2lnbmFjaW9uXFxuLS0tXFxuVGV4dG8gKipmdWVydGUqKiB5IFtvdHJvXShheXVkYTpkb3MpXFxuJyk7XG4gICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwobGVpZG8uaWQsICd1bm8nKTtcbiAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChsZWlkby50aXR1bG8sICdVbm8nKTtcbiAgICAgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwobGVpZG8ucGVybWlzb3MsIFsnY2FtcG8uZWRpdGFyJ10pO1xuICAgICAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChsZWlkby5tZW51LCBbJ2FzaWduYWNpb24nXSk7XG4gICAgICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKGxlaWRvLnJvbGVzLCBbXSk7XG4gICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwobGVpZG8ubW9kbywgbnVsbCk7XG4gICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwobGVpZG8uaHRtbCwgJzxwPlRleHRvIDxzdHJvbmc+ZnVlcnRlPC9zdHJvbmc+IHkgPGEgaHJlZj1cImF5dWRhOmRvc1wiPm90cm88L2E+PC9wPlxcbicpO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ25vIGRlamEgcGFzYXIgaHRtbCBjcnVkbycsICgpID0+IHtcbiAgICAgICAgICAgIGFzc2VydC5vayghdGVtYSgnLS0tXFxuaWQ6IHVub1xcbnRpdHVsbzogVW5vXFxuLS0tXFxuPHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0PlxcbicpLmh0bWwuaW5jbHVkZXMoJzxzY3JpcHQ+JykpO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ2FjZXB0YSBhcmNoaXZvcyBjb24gQk9NIHkgZmluIGRlIGzDrW5lYSBkZSBXaW5kb3dzJywgKCkgPT4ge1xuICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlbWEoJ++7vy0tLVxcclxcbmlkOiB1bm9cXHJcXG50aXR1bG86IFVub1xcclxcbi0tLVxcclxcbmhvbGFcXHJcXG4nKS5odG1sLCAnPHA+aG9sYTwvcD5cXG4nKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KCdyZWNoYXphIHVuIGFyY2hpdm8gc2luIGVuY2FiZXphZG8nLCAoKSA9PiB7XG4gICAgICAgICAgICBhc3NlcnQudGhyb3dzKCgpID0+IHRlbWEoJyMgSG9sYVxcbicpLCAvZmFsdGEgZWwgZW5jYWJlemFkby8pO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3JlY2hhemEgY2FtcG9zIGRlc2Nvbm9jaWRvcyAocGFyYSBkZXRlY3RhciBlcnJvcmVzIGRlIHRpcGVvKScsICgpID0+IHtcbiAgICAgICAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdGVtYSgnLS0tXFxuaWQ6IHVub1xcbnRpdHVsbzogVW5vXFxucGVybWlzbzogY2FtcG8uZWRpdGFyXFxuLS0tXFxuJyksIC9jYW1wbyBkZXNjb25vY2lkbyBcInBlcm1pc29cIi8pO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3JlY2hhemEgdW4gbW9kbyBxdWUgbm8gZXhpc3RlJywgKCkgPT4ge1xuICAgICAgICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiB0ZW1hKCctLS1cXG5pZDogdW5vXFxudGl0dWxvOiBVbm9cXG5tb2RvOiBPRklDSU5BXFxuLS0tXFxuJyksIC9tb2RvIGRlYmUgc2VyLyk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgncmVjaGF6YSBwZXJtaXNvcyBzaW4gYWNjacOzbicsICgpID0+IHtcbiAgICAgICAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdGVtYSgnLS0tXFxuaWQ6IHVub1xcbnRpdHVsbzogVW5vXFxucGVybWlzb3M6IFtjYW1wb11cXG4tLS1cXG4nKSwgL3Blcm1pc28uYWNjaW9uLyk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnZXhpZ2UgdMOtdHVsbyBzYWx2byBwYXJhIG9jdWx0YXInLCAoKSA9PiB7XG4gICAgICAgICAgICBhc3NlcnQudGhyb3dzKCgpID0+IHRlbWEoJy0tLVxcbmlkOiB1bm9cXG4tLS1cXG4nKSwgL3RpdHVsby8pO1xuICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRlbWEoJy0tLVxcbmlkOiB1bm9cXG5vY3VsdGFyOiB0cnVlXFxuLS0tXFxuJykub2N1bHRhciwgdHJ1ZSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ2Z1ZW50ZXM6IGPDs21vIGxhcyBhcHBzIGZpbmFsZXMgYWdyZWdhbiwgcmVlbXBsYXphbiB5IG9jdWx0YW4gdGVtYXMnLCAoKSA9PiB7XG4gICAgICAgIHZhciBkbWVuY3UgPSBbXG4gICAgICAgICAgICB0ZW1hKCctLS1cXG5pZDogYVxcbnRpdHVsbzogQSBkZSBkbWVuY3VcXG5vcmRlbjogMVxcbi0tLVxcbicsICdkbWVuY3UnKSxcbiAgICAgICAgICAgIHRlbWEoJy0tLVxcbmlkOiBiXFxudGl0dWxvOiBCXFxub3JkZW46IDJcXG4tLS1cXG4nLCAnZG1lbmN1JyksXG4gICAgICAgICAgICB0ZW1hKCctLS1cXG5pZDogY1xcbnRpdHVsbzogQ1xcbm9yZGVuOiAzXFxuLS0tXFxuJywgJ2RtZW5jdScpLFxuICAgICAgICBdO1xuICAgICAgICB2YXIgYXBwID0gW1xuICAgICAgICAgICAgdGVtYSgnLS0tXFxuaWQ6IGFcXG50aXR1bG86IEEgZGUgbGEgYXBwXFxub3JkZW46IDFcXG4tLS1cXG4nLCAnYXBwJyksXG4gICAgICAgICAgICB0ZW1hKCctLS1cXG5pZDogYlxcbm9jdWx0YXI6IHRydWVcXG4tLS1cXG4nLCAnYXBwJyksXG4gICAgICAgICAgICB0ZW1hKCctLS1cXG5pZDogZFxcbnRpdHVsbzogRFxcbm9yZGVuOiAwXFxuLS0tXFxuJywgJ2FwcCcpLFxuICAgICAgICBdO1xuICAgICAgICBpdCgndW4gaWQgcmVwZXRpZG8gcmVlbXBsYXphIGFsIGFudGVyaW9yLCBvY3VsdGFyIGxvIHF1aXRhIHkgbG9zIG51ZXZvcyBzZSBhZ3JlZ2FuIHNlZ8O6biBvcmRlbicsICgpID0+IHtcbiAgICAgICAgICAgIHZhciBjb21iaW5hZG9zID0gY29tYmluYXJUZW1hc0RlQXl1ZGEoW2RtZW5jdSwgYXBwXSk7XG4gICAgICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKGNvbWJpbmFkb3MubWFwKHQgPT4gW3QuaWQsIHQub3JpZ2VuXSksIFtbJ2QnLCAnYXBwJ10sIFsnYScsICdhcHAnXSwgWydjJywgJ2RtZW5jdSddXSk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgncmVjaGF6YSBpZHMgcmVwZXRpZG9zIGRlbnRybyBkZSB1bmEgbWlzbWEgY2FycGV0YScsICgpID0+IHtcbiAgICAgICAgICAgIHZhciBjYXJwZXRhID0gZnMubWtkdGVtcFN5bmMocGF0aC5qb2luKG9zLnRtcGRpcigpLCAnYXl1ZGEtJykpO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBmcy53cml0ZUZpbGVTeW5jKHBhdGguam9pbihjYXJwZXRhLCAnMS5tZCcpLCAnLS0tXFxuaWQ6IGFcXG50aXR1bG86IEFcXG4tLS1cXG4nKTtcbiAgICAgICAgICAgICAgICBmcy53cml0ZUZpbGVTeW5jKHBhdGguam9pbihjYXJwZXRhLCAnMi5tZCcpLCAnLS0tXFxuaWQ6IGFcXG50aXR1bG86IE90cmEgQVxcbi0tLVxcbicpO1xuICAgICAgICAgICAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbGVlckZ1ZW50ZURlQXl1ZGEoeyBvcmlnZW46ICd0ZXN0JywgY2FycGV0YSB9KSwgL3lhIGVzdMOhIGVuLyk7XG4gICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIGZzLnJtU3luYyhjYXJwZXRhLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGl0KCdhdmlzYSBzaSBsYSBjYXJwZXRhIG5vIGV4aXN0ZScsICgpID0+IHtcbiAgICAgICAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbGVlckZ1ZW50ZURlQXl1ZGEoeyBvcmlnZW46ICd0ZXN0JywgY2FycGV0YTogcGF0aC5qb2luKG9zLnRtcGRpcigpLCAnbm8tZXhpc3RlLWF5dWRhJykgfSksIC9ubyBleGlzdGUgbGEgY2FycGV0YS8pO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ2xhIGNhcnBldGEgZGUgZG1lbmN1IHNlIGVuY3VlbnRyYSBkZXNkZSBlbCBqcyBjb21waWxhZG8nLCAoKSA9PiB7XG4gICAgICAgICAgICBhc3NlcnQub2soZnMuZXhpc3RzU3luYyhwYXRoLmpvaW4oY2FycGV0YURlbFBhcXVldGUoX19kaXJuYW1lKSwgJ2F5dWRhJykpKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnbG9zIHRlbWFzIGRlIGRtZW5jdScsICgpID0+IHtcbiAgICAgICAgaXQoJ25vIHRpZW5lbiBwcm9ibGVtYXMgZW4gR0FCSU5FVEUgKHBlcm1pc29zLCByb2xlcyB5IG9wY2lvbmVzIGRlIG1lbsO6IGV4aXN0ZW4pJywgKCkgPT4ge1xuICAgICAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChhcHBDb25BeXVkYShHQUJJTkVURSkucHJvYmxlbWFzRGVBeXVkYSgpLCBbXSk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnbm8gdGllbmVuIHByb2JsZW1hcyBlbiBSRUxFVkFNSUVOVE8nLCAoKSA9PiB7XG4gICAgICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKGFwcENvbkF5dWRhKFJFTEVWQU1JRU5UTykucHJvYmxlbWFzRGVBeXVkYSgpLCBbXSk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnY2FkYSBvcGNpw7NuIGRlbCBtZW7DuiBkZSBhZG1pbiBlbiBHQUJJTkVURSB0aWVuZSB1biB0ZW1hIHF1ZSBsYSBleHBsaWNhLCBkaXJlY3RhIG8gYSB0cmF2w6lzIGRlIHN1IG1lbsO6IHBhZHJlJywgKCkgPT4ge1xuICAgICAgICAgICAgdmFyIGJlID0gYXBwQ29uQXl1ZGEoR0FCSU5FVEUpO1xuICAgICAgICAgICAgdmFyIGNvbnRleHQgPSBjb250ZXh0b0RlbFJvbChiZSwgJ2FkbWluJyk7XG4gICAgICAgICAgICB2YXIgb3BjaW9uZXMgPSBtZW51Q29uQXl1ZGEoYmUuZ2V0TWVudShjb250ZXh0KS5tZW51LCBiZS5jYWNoZXMuYXl1ZGEpO1xuICAgICAgICAgICAgdmFyIHNpbkF5dWRhID0gb3BjaW9uZXMuZmlsdGVyKG9wY2lvbiA9PiBvcGNpb24udGVtYSA9PSBudWxsICYmIG9wY2lvbi5ydXRhICE9ICdjb25maWd1cmFyJyAmJiBvcGNpb24ucnV0YSAhPSAnY2FydG8nKS5tYXAob3BjaW9uID0+IG9wY2lvbi5ydXRhKTtcbiAgICAgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoc2luQXl1ZGEsIFtdKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgncXXDqSB2ZSBjYWRhIHBlcmZpbCcsICgpID0+IHtcbiAgICAgICAgaXQoJ2VuIFJFTEVWQU1JRU5UTyBxdWllbiByZWxldmEgdmUgbGEgYXl1ZGEgZGVsIGRpc3Bvc2l0aXZvJywgKCkgPT4ge1xuICAgICAgICAgICAgdmFyIGJlID0gYXBwQ29uQXl1ZGEoUkVMRVZBTUlFTlRPKTtcbiAgICAgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoaWRzVmlzaWJsZXMoYmUsICdlbmN1ZXN0YWRvcicpLCBbJ2RtLXJlbGV2YW1pZW50bycsICdkbS1zaW5jcm9uaXphcicsICdkbS1jYW1iaWFyLW1vZG8nXSk7XG4gICAgICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKGlkc1Zpc2libGVzKGJlLCAnc3VwZXJ2aXNvcicpLCBbJ2RtLXJlbGV2YW1pZW50bycsICdkbS1zaW5jcm9uaXphcicsICdkbS1jYW1iaWFyLW1vZG8nXSk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnZW4gUkVMRVZBTUlFTlRPIHF1aWVuIG5vIHJlbGV2YSBubyB2ZSBheXVkYSBuaSBsYSBvcGNpw7NuIGRlbCBtZW7DuicsICgpID0+IHtcbiAgICAgICAgICAgIHZhciBiZSA9IGFwcENvbkF5dWRhKFJFTEVWQU1JRU5UTyk7XG4gICAgICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKGlkc1Zpc2libGVzKGJlLCAnY29vcl9jYW1wbycpLCBbXSk7XG4gICAgICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKGJlLmdldE1lbnUoY29udGV4dG9EZWxSb2woYmUsICdjb29yX2NhbXBvJykpLm1lbnUsIFtdKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KCdlbiBHQUJJTkVURSBlbCBlbmN1ZXN0YWRvciBubyB2ZSBsYSBheXVkYSBkZWwgZGlzcG9zaXRpdm8nLCAoKSA9PiB7XG4gICAgICAgICAgICB2YXIgYmUgPSBhcHBDb25BeXVkYShHQUJJTkVURSk7XG4gICAgICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKGlkc1Zpc2libGVzKGJlLCAnZW5jdWVzdGFkb3InKSwgW10pO1xuICAgICAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChiZS5nZXRNZW51KGNvbnRleHRvRGVsUm9sKGJlLCAnZW5jdWVzdGFkb3InKSkubWVudSwgW10pO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ2VuIEdBQklORVRFIGVsIGluZ3Jlc2Fkb3IgdmUgbG8gZGUgY2FtcG8gcGVybyBubyBsbyBkZSBhZG1pbmlzdHJhY2nDs24gbmkgcHJvY2VzYW1pZW50bycsICgpID0+IHtcbiAgICAgICAgICAgIHZhciBpZHMgPSBpZHNWaXNpYmxlcyhhcHBDb25BeXVkYShHQUJJTkVURSksICdpbmdyZXNhZG9yJyk7XG4gICAgICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKGlkcywgWydjaXJjdWl0by1lbmN1ZXN0YScsICdhc2lnbmFjaW9uJywgJ3JlY2VwY2lvbicsICdzdXBlcnZpc2lvbicsICd2YXJpb3MnXSk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnZGlzZcOxbyBjb25jZXB0dWFsIHZlIGxhIGF5dWRhIGRlIG1ldGFkYXRvcycsICgpID0+IHtcbiAgICAgICAgICAgIHZhciBpZHMgPSBpZHNWaXNpYmxlcyhhcHBDb25BeXVkYShHQUJJTkVURSksICdkaXNfY29uY2VwdHVhbCcpO1xuICAgICAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChpZHMsIFsnY2lyY3VpdG8tZW5jdWVzdGEnLCAnbWV0YWRhdG9zJ10pO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ2FkbWluIChzdXBlcnVzZXIpIHZlIHRvZG9zIGxvcyB0ZW1hcyBkZWwgbW9kbycsICgpID0+IHtcbiAgICAgICAgICAgIHZhciBiZSA9IGFwcENvbkF5dWRhKEdBQklORVRFKTtcbiAgICAgICAgICAgIHZhciBkZUdhYmluZXRlID0gYmUuY2FjaGVzLmF5dWRhLmZpbHRlcih0ID0+IHQubW9kbyAhPSAnUkVMRVZBTUlFTlRPJykubWFwKHQgPT4gdC5pZCk7XG4gICAgICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKGlkc1Zpc2libGVzKGJlLCAnYWRtaW4nKSwgZGVHYWJpbmV0ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgndW4gdGVtYSBwb3Igcm9sIHNlIG11ZXN0cmEgYSBlc2Ugcm9sIGF1bnF1ZSBubyB0ZW5nYSBlbCBwZXJtaXNvJywgKCkgPT4ge1xuICAgICAgICAgICAgdmFyIHBvclJvbCA9IHRlbWEoJy0tLVxcbmlkOiB4XFxudGl0dWxvOiBYXFxucm9sZXM6IFthdXhpbGlhcl1cXG4tLS1cXG4nKTtcbiAgICAgICAgICAgIHZhciBiZSA9IGNyZWFyQXBwUGFyYVRlc3RzKEdBQklORVRFKTtcbiAgICAgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwodGVtYXNWaXNpYmxlcyhbcG9yUm9sXSwgcXVpZW5Db25zdWx0YUF5dWRhKGNvbnRleHRvRGVsUm9sKGJlLCAnYXV4aWxpYXInKSkpLm1hcCh0ID0+IHQuaWQpLCBbJ3gnXSk7XG4gICAgICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHRlbWFzVmlzaWJsZXMoW3BvclJvbF0sIHF1aWVuQ29uc3VsdGFBeXVkYShjb250ZXh0b0RlbFJvbChiZSwgJ2luZ3Jlc2Fkb3InKSkpLCBbXSk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnbGEgb3BjacOzbiBheXVkYSB2YSBhbCBmaW5hbCBkZWwgbWVuw7ogZGUgcXVpZW4gdGllbmUgdGVtYXMnLCAoKSA9PiB7XG4gICAgICAgICAgICB2YXIgYmUgPSBhcHBDb25BeXVkYShSRUxFVkFNSUVOVE8pO1xuICAgICAgICAgICAgdmFyIG1lbnU6IE1lbnVJbmZvQmFzZVtdID0gYmUuZ2V0TWVudShjb250ZXh0b0RlbFJvbChiZSwgJ2VuY3Vlc3RhZG9yJykpLm1lbnU7XG4gICAgICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKG1lbnUubWFwKG9wY2lvbiA9PiBvcGNpb24ubmFtZSksIFsncmVsZXZhbWllbnRvJywgJ3NpbmNyb25pemFyJywgJ2NhbWJpYXJfbW9kbycsICdheXVkYSddKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnbWVuw7ogY29uIGF5dWRhIChsbyBxdWUgbXVlc3RyYSBcIlF1w6kgcHVlZG8gaGFjZXJcIiknLCAoKSA9PiB7XG4gICAgICAgIGl0KCdsaWdhIGNhZGEgb3BjacOzbiBkZWwgbWVuw7ogZGVsIHVzdWFyaW8gY29uIHN1IHRlbWEgeSBubyBpbmNsdXllIGxhIG9wY2nDs24gYXl1ZGEnLCAoKSA9PiB7XG4gICAgICAgICAgICB2YXIgYmUgPSBhcHBDb25BeXVkYShSRUxFVkFNSUVOVE8pO1xuICAgICAgICAgICAgdmFyIGNvbnRleHQgPSBjb250ZXh0b0RlbFJvbChiZSwgJ2VuY3Vlc3RhZG9yJyk7XG4gICAgICAgICAgICB2YXIgdGVtYXMgPSB0ZW1hc1Zpc2libGVzKGJlLmNhY2hlcy5heXVkYSwgcXVpZW5Db25zdWx0YUF5dWRhKGNvbnRleHQpKTtcbiAgICAgICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwobWVudUNvbkF5dWRhKGJlLmdldE1lbnUoY29udGV4dCkubWVudSwgdGVtYXMpLCBbXG4gICAgICAgICAgICAgICAgeyBydXRhOiAncmVsZXZhbWllbnRvJywgbGFiZWw6ICdyZWxldmFtaWVudG8nLCB0ZW1hOiAnZG0tcmVsZXZhbWllbnRvJywgb3BjaW9uZXM6IFtdIH0sXG4gICAgICAgICAgICAgICAgeyBydXRhOiAnc2luY3Jvbml6YXInLCBsYWJlbDogJ3NpbmNyb25pemFyJywgdGVtYTogJ2RtLXNpbmNyb25pemFyJywgb3BjaW9uZXM6IFtdIH0sXG4gICAgICAgICAgICAgICAgeyBydXRhOiAnY2FtYmlhcl9tb2RvJywgbGFiZWw6ICdjYW1iaWFyIG1vZG8nLCB0ZW1hOiAnZG0tY2FtYmlhci1tb2RvJywgb3BjaW9uZXM6IFtdIH0sXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KCdyZWNvcnJlIGxvcyBzdWJtZW7DunMgY29uIHJ1dGFzIHNlcGFyYWRhcyBwb3IgLycsICgpID0+IHtcbiAgICAgICAgICAgIHZhciBiZSA9IGFwcENvbkF5dWRhKEdBQklORVRFKTtcbiAgICAgICAgICAgIHZhciBjb250ZXh0ID0gY29udGV4dG9EZWxSb2woYmUsICdpbmdyZXNhZG9yJyk7XG4gICAgICAgICAgICB2YXIgdGVtYXMgPSB0ZW1hc1Zpc2libGVzKGJlLmNhY2hlcy5heXVkYSwgcXVpZW5Db25zdWx0YUF5dWRhKGNvbnRleHQpKTtcbiAgICAgICAgICAgIHZhciBhc2lnbmFjaW9uID0gbWVudUNvbkF5dWRhKGJlLmdldE1lbnUoY29udGV4dCkubWVudSwgdGVtYXMpLmZpbmQob3BjaW9uID0+IG9wY2lvbi5ydXRhID09ICdhc2lnbmFjaW9uJyk7XG4gICAgICAgICAgICBhc3NlcnQub2soYXNpZ25hY2lvbik7XG4gICAgICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKGFzaWduYWNpb24ub3BjaW9uZXMubWFwKG9wY2lvbiA9PiBbb3BjaW9uLnJ1dGEsIG9wY2lvbi50ZW1hXSksIFtcbiAgICAgICAgICAgICAgICBbJ2FzaWduYWNpb24vZW5jdWVzdGFkb3InLCAnYXNpZ25hY2lvbiddLFxuICAgICAgICAgICAgICAgIFsnYXNpZ25hY2lvbi9pbmdyZXNhZG9yJywgJ2FzaWduYWNpb24nXSxcbiAgICAgICAgICAgICAgICBbJ2FzaWduYWNpb24vcmVjdXBlcmFkb3InLCAnYXNpZ25hY2lvbiddLFxuICAgICAgICAgICAgXSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufSk7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|