dmencu 3.2.21 → 3.3.1

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.
Files changed (226) hide show
  1. package/README.md +42 -42
  2. package/dist/client/client/client.js +3 -3
  3. package/dist/client/unlogged/abrir-formulario.js +1 -1
  4. package/dist/client/unlogged/bypass-formulario.d.ts +6 -42
  5. package/dist/client/unlogged/bypass-formulario.js +84 -219
  6. package/dist/client/unlogged/calculos-encuesta.js +112 -38
  7. package/dist/client/unlogged/helpers-casilleros.d.ts +1 -1
  8. package/dist/client/unlogged/helpers-casilleros.js +12 -18
  9. package/dist/client/unlogged/helpers-formulario.d.ts +16 -0
  10. package/dist/client/unlogged/helpers-formulario.js +88 -0
  11. package/dist/client/unlogged/redux-formulario.d.ts +1 -2
  12. package/dist/client/unlogged/redux-formulario.js +21 -31
  13. package/dist/client/unlogged/render-formulario.d.ts +2 -6
  14. package/dist/client/unlogged/render-formulario.js +29 -68
  15. package/dist/client/unlogged/render-formulario.tsx +29 -57
  16. package/dist/client/unlogged/render-general.js +1 -1
  17. package/dist/client/unlogged/render-general.tsx +1 -1
  18. package/dist/client/unlogged/tipos.d.ts +74 -40
  19. package/dist/client/unlogged/tipos.js +1 -1
  20. package/dist/server/app-dmencu.d.ts +1428 -0
  21. package/dist/server/app-dmencu.js +1054 -0
  22. package/dist/server/def-config.d.ts +1 -0
  23. package/dist/server/def-config.js +123 -0
  24. package/dist/server/procedures-dmencu.d.ts +43 -0
  25. package/dist/server/procedures-dmencu.js +2295 -0
  26. package/dist/server/server/app-dmencu.d.ts +42 -91
  27. package/dist/server/server/app-dmencu.js +114 -52
  28. package/dist/server/server/procedures-dmencu.d.ts +34 -2
  29. package/dist/server/server/procedures-dmencu.js +77 -51
  30. package/dist/server/server/setters-rea-no-rea.d.ts +13 -0
  31. package/dist/server/server/setters-rea-no-rea.js +35 -0
  32. package/dist/server/server/table-areas.js +4 -4
  33. package/dist/server/server/table-areas_asignacion_general.js +2 -1
  34. package/dist/server/server/table-control_campo.js +4 -4
  35. package/dist/server/server/table-no_rea.js +4 -2
  36. package/dist/server/server/table-no_rea_sup.js +7 -3
  37. package/dist/server/server/table-personal.js +1 -1
  38. package/dist/server/server/table-tareas_tem.js +2 -2
  39. package/dist/server/server/table-tem.js +2 -2
  40. package/dist/server/server/types-dmencu.d.ts +34 -2
  41. package/dist/server/server/types-dmencu.js +2 -1
  42. package/dist/server/setters-rea-no-rea.d.ts +13 -0
  43. package/dist/server/setters-rea-no-rea.js +35 -0
  44. package/dist/server/table-acciones.d.ts +2 -0
  45. package/dist/server/table-acciones.js +45 -0
  46. package/dist/server/table-area_enc_proximas.d.ts +2 -0
  47. package/dist/server/table-area_enc_proximas.js +30 -0
  48. package/dist/server/table-areas.d.ts +4 -0
  49. package/dist/server/table-areas.js +112 -0
  50. package/dist/server/table-areas_asignacion_general.d.ts +2 -0
  51. package/dist/server/table-areas_asignacion_general.js +86 -0
  52. package/dist/server/table-barrios.d.ts +2 -0
  53. package/dist/server/table-barrios.js +35 -0
  54. package/dist/server/table-comunas.d.ts +2 -0
  55. package/dist/server/table-comunas.js +33 -0
  56. package/dist/server/table-control_campo.d.ts +12 -0
  57. package/dist/server/table-control_campo.js +119 -0
  58. package/dist/server/table-control_dias_carga.d.ts +2 -0
  59. package/dist/server/table-control_dias_carga.js +63 -0
  60. package/dist/server/table-control_resumen.d.ts +2 -0
  61. package/dist/server/table-control_resumen.js +19 -0
  62. package/dist/server/table-diccionario.d.ts +2 -0
  63. package/dist/server/table-diccionario.js +32 -0
  64. package/dist/server/table-dictra.d.ts +2 -0
  65. package/dist/server/table-dictra.js +46 -0
  66. package/dist/server/table-dicvar.d.ts +2 -0
  67. package/dist/server/table-dicvar.js +32 -0
  68. package/dist/server/table-encuestadores.d.ts +13 -0
  69. package/dist/server/table-encuestadores.js +75 -0
  70. package/dist/server/table-estados.d.ts +2 -0
  71. package/dist/server/table-estados.js +47 -0
  72. package/dist/server/table-estados_acciones.d.ts +2 -0
  73. package/dist/server/table-estados_acciones.js +40 -0
  74. package/dist/server/table-fracciones.d.ts +2 -0
  75. package/dist/server/table-fracciones.js +37 -0
  76. package/dist/server/table-grilla_hoja_ruta.d.ts +2 -0
  77. package/dist/server/table-grilla_hoja_ruta.js +93 -0
  78. package/dist/server/table-historial_tem.d.ts +2 -0
  79. package/dist/server/table-historial_tem.js +57 -0
  80. package/dist/server/table-hogares.d.ts +2 -0
  81. package/dist/server/table-hogares.js +156 -0
  82. package/dist/server/table-hogares_sup.d.ts +2 -0
  83. package/dist/server/table-hogares_sup.js +191 -0
  84. package/dist/server/table-inconsistencias_cumplen_condicion.d.ts +2 -0
  85. package/dist/server/table-inconsistencias_cumplen_condicion.js +33 -0
  86. package/dist/server/table-manzanas.d.ts +2 -0
  87. package/dist/server/table-manzanas.js +36 -0
  88. package/dist/server/table-mis_encuestadores.d.ts +2 -0
  89. package/dist/server/table-mis_encuestadores.js +77 -0
  90. package/dist/server/table-mis_tareas.d.ts +2 -0
  91. package/dist/server/table-mis_tareas.js +18 -0
  92. package/dist/server/table-mis_tareas_areas.d.ts +2 -0
  93. package/dist/server/table-mis_tareas_areas.js +20 -0
  94. package/dist/server/table-modos_dm.d.ts +2 -0
  95. package/dist/server/table-modos_dm.js +28 -0
  96. package/dist/server/table-no_rea.js +38 -0
  97. package/dist/server/table-no_rea_sup.js +36 -0
  98. package/dist/server/table-operaciones.d.ts +2 -0
  99. package/dist/server/table-operaciones.js +30 -0
  100. package/dist/server/table-parametros.d.ts +2 -0
  101. package/dist/server/table-parametros.js +40 -0
  102. package/dist/server/table-permisos.d.ts +2 -0
  103. package/dist/server/table-permisos.js +31 -0
  104. package/dist/server/table-personal.d.ts +5 -0
  105. package/dist/server/table-personal.js +62 -0
  106. package/dist/server/table-personal_rol.d.ts +2 -0
  107. package/dist/server/table-personal_rol.js +42 -0
  108. package/dist/server/table-personas.d.ts +2 -0
  109. package/dist/server/table-personas.js +448 -0
  110. package/dist/server/table-personas_sup.d.ts +2 -0
  111. package/dist/server/table-personas_sup.js +93 -0
  112. package/dist/server/table-radios.d.ts +2 -0
  113. package/dist/server/table-radios.js +37 -0
  114. package/dist/server/table-rea.d.ts +2 -0
  115. package/dist/server/table-rea.js +38 -0
  116. package/dist/server/table-rea_sup.d.ts +2 -0
  117. package/dist/server/table-rea_sup.js +38 -0
  118. package/dist/server/table-recepcionistas.d.ts +2 -0
  119. package/dist/server/table-recepcionistas.js +18 -0
  120. package/dist/server/table-recuperadores.d.ts +2 -0
  121. package/dist/server/table-recuperadores.js +18 -0
  122. package/dist/server/table-roles.d.ts +2 -0
  123. package/dist/server/table-roles.js +33 -0
  124. package/dist/server/table-roles_permisos.d.ts +2 -0
  125. package/dist/server/table-roles_permisos.js +36 -0
  126. package/dist/server/table-roles_subordinados.d.ts +2 -0
  127. package/dist/server/table-roles_subordinados.js +31 -0
  128. package/dist/server/table-semanas.d.ts +2 -0
  129. package/dist/server/table-semanas.js +42 -0
  130. package/dist/server/table-sincronizaciones.d.ts +2 -0
  131. package/dist/server/table-sincronizaciones.js +30 -0
  132. package/dist/server/table-supervisores.d.ts +2 -0
  133. package/dist/server/table-supervisores.js +18 -0
  134. package/dist/server/table-tareas.d.ts +2 -0
  135. package/dist/server/table-tareas.js +48 -0
  136. package/dist/server/table-tareas_areas.d.ts +7 -0
  137. package/dist/server/table-tareas_areas.js +112 -0
  138. package/dist/server/table-tareas_proximas.d.ts +2 -0
  139. package/dist/server/table-tareas_proximas.js +48 -0
  140. package/dist/server/table-tareas_tem.d.ts +14 -0
  141. package/dist/server/table-tareas_tem.js +206 -0
  142. package/dist/server/table-tareas_tem_analisis_campo.d.ts +2 -0
  143. package/dist/server/table-tareas_tem_analisis_campo.js +31 -0
  144. package/dist/server/table-tareas_tem_fin_campo.d.ts +3 -0
  145. package/dist/server/table-tareas_tem_fin_campo.js +56 -0
  146. package/dist/server/table-tareas_tem_ingreso.d.ts +2 -0
  147. package/dist/server/table-tareas_tem_ingreso.js +31 -0
  148. package/dist/server/table-tareas_tem_procesamiento.d.ts +2 -0
  149. package/dist/server/table-tareas_tem_procesamiento.js +34 -0
  150. package/dist/server/table-tareas_tem_recepcion.d.ts +6 -0
  151. package/dist/server/table-tareas_tem_recepcion.js +59 -0
  152. package/dist/server/table-tem.d.ts +3 -0
  153. package/dist/server/table-tem.js +247 -0
  154. package/dist/server/table-tem_asignacion.d.ts +2 -0
  155. package/dist/server/table-tem_asignacion.js +50 -0
  156. package/dist/server/table-tem_borradas.d.ts +2 -0
  157. package/dist/server/table-tem_borradas.js +35 -0
  158. package/dist/server/table-usuarios.d.ts +2 -0
  159. package/dist/server/table-usuarios.js +63 -0
  160. package/dist/server/table-visitas.d.ts +2 -0
  161. package/dist/server/table-visitas.js +91 -0
  162. package/dist/server/table-visitas_sup.d.ts +2 -0
  163. package/dist/server/table-visitas_sup.js +91 -0
  164. package/dist/server/table-viviendas.d.ts +2 -0
  165. package/dist/server/table-viviendas.js +299 -0
  166. package/dist/server/types-dmencu.d.ts +95 -0
  167. package/dist/server/types-dmencu.js +34 -0
  168. package/dist/server/unlogged/tipos.d.ts +74 -40
  169. package/dist/server/unlogged/tipos.js +1 -1
  170. package/dist/test/app-para-tests.d.ts +1115 -0
  171. package/dist/test/app-para-tests.js +95 -0
  172. package/dist/test/test-caches-rea.d.ts +1 -0
  173. package/dist/test/test-caches-rea.js +243 -0
  174. package/dist/test/test-helpers-casilleros.d.ts +1 -0
  175. package/dist/test/test-helpers-casilleros.js +154 -0
  176. package/dist/test/test-helpers-formulario.d.ts +1 -0
  177. package/dist/test/test-helpers-formulario.js +95 -0
  178. package/dist/test/test-impacto-rea-no-rea-en-bd.d.ts +1 -0
  179. package/dist/test/test-impacto-rea-no-rea-en-bd.js +243 -0
  180. package/dist/test/test-menu-segun-rol.d.ts +1 -0
  181. package/dist/test/test-menu-segun-rol.js +170 -0
  182. package/dist/test/test-setters-rea-no-rea.d.ts +1 -0
  183. package/dist/test/test-setters-rea-no-rea.js +95 -0
  184. package/dist/test/test.d.ts +6 -0
  185. package/dist/test/test.js +8 -2
  186. package/dist/unlogged/helpers-casilleros.d.ts +1 -1
  187. package/dist/unlogged/helpers-casilleros.js +12 -18
  188. package/dist/unlogged/helpers-formulario.d.ts +16 -0
  189. package/dist/unlogged/helpers-formulario.js +88 -0
  190. package/dist/unlogged/tipos.d.ts +1 -1
  191. package/dist/unlogged/tipos.js +1 -1
  192. package/dist/unlogged/unlogged/abrir-formulario.js +1 -1
  193. package/dist/unlogged/unlogged/bypass-formulario.d.ts +6 -42
  194. package/dist/unlogged/unlogged/bypass-formulario.js +84 -219
  195. package/dist/unlogged/unlogged/helpers-casilleros.js +7 -14
  196. package/dist/unlogged/unlogged/helpers-formulario.d.ts +16 -0
  197. package/dist/unlogged/unlogged/helpers-formulario.js +88 -0
  198. package/dist/unlogged/unlogged/redux-formulario.d.ts +1 -2
  199. package/dist/unlogged/unlogged/redux-formulario.js +21 -31
  200. package/dist/unlogged/unlogged/render-formulario.d.ts +2 -6
  201. package/dist/unlogged/unlogged/render-formulario.js +29 -68
  202. package/dist/unlogged/unlogged/render-formulario.tsx +29 -57
  203. package/dist/unlogged/unlogged/render-general.js +1 -1
  204. package/dist/unlogged/unlogged/render-general.tsx +1 -1
  205. package/dist/unlogged/unlogged/tipos.d.ts +74 -40
  206. package/dist/unlogged/unlogged/tipos.js +1 -1
  207. package/dist/unlogged/unlogged/unlogged.js +2 -2
  208. package/install/accion_cumple_condicion.sql +1 -1
  209. package/install/generador_accion_cumple_condicion.sql +2 -2
  210. package/install/tarea_cumple_condicion.sql +1 -1
  211. package/install/xcalcular_resultado_trg.sql +1 -1
  212. package/package.json +20 -17
  213. package/dist/server/server/table-no_rea copy.js +0 -38
  214. package/dist/server/server/table-no_rea_sup copy.js +0 -36
  215. package/dist/unlogged/bypass-formulario.d.ts +0 -198
  216. package/dist/unlogged/bypass-formulario.js +0 -1226
  217. package/dist/unlogged/redux-formulario.d.ts +0 -440
  218. package/dist/unlogged/redux-formulario.js +0 -324
  219. package/dist/unlogged/render-config.d.ts +0 -52
  220. package/dist/unlogged/render-config.js +0 -161
  221. package/dist/unlogged/unlogged/bypass-formulario copy.d.ts +0 -198
  222. package/dist/unlogged/unlogged/bypass-formulario copy.js +0 -1226
  223. package/dist/unlogged/unlogged/helpers.d.ts +0 -14
  224. package/dist/unlogged/unlogged/helpers.js +0 -129
  225. /package/dist/server/{server/table-no_rea copy.d.ts → table-no_rea.d.ts} +0 -0
  226. /package/dist/server/{server/table-no_rea_sup copy.d.ts → table-no_rea_sup.d.ts} +0 -0
@@ -4,13 +4,12 @@
4
4
  if (v !== undefined) module.exports = v;
5
5
  }
6
6
  else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "like-ar"], factory);
7
+ define(["require", "exports"], factory);
8
8
  }
9
9
  })(function (require, exports) {
10
10
  "use strict";
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.buscarReaNoReaEnRespuestas = buscarReaNoReaEnRespuestas;
13
- const likeAr = require("like-ar");
14
13
  const estrategiasCondicion = {
15
14
  'rea': {
16
15
  getCondicion: (item) => item.condicion_js,
@@ -45,6 +44,38 @@
45
44
  getTarea: (_item) => null,
46
45
  }
47
46
  };
47
+ // Caché en memoria para no volver a analizar la estructura teórica en cada cambio de input
48
+ const cacheDiccionarioRutas = new WeakMap();
49
+ /**
50
+ * Mapea toda la estructura de UAs produciendo un diccionario O(1):
51
+ * { "viviendas" -> Set("viviendas", "hogares", "personas", "visitas"), "hogares" -> Set("hogares", "personas") }
52
+ */
53
+ function obtenerDiccionarioRutas(uaRaiz) {
54
+ let mapa = cacheDiccionarioRutas.get(uaRaiz);
55
+ if (mapa)
56
+ return mapa;
57
+ mapa = new Map();
58
+ function mapearNodo(nodo) {
59
+ const descendientes = new Set();
60
+ if (nodo === null || nodo === void 0 ? void 0 : nodo.unidad_analisis) {
61
+ descendientes.add(nodo.unidad_analisis);
62
+ }
63
+ const hijas = nodo === null || nodo === void 0 ? void 0 : nodo.hijas;
64
+ if (hijas) {
65
+ for (const key in hijas) {
66
+ const descHija = mapearNodo(hijas[key]);
67
+ descHija.forEach((d) => descendientes.add(d));
68
+ }
69
+ }
70
+ if (nodo === null || nodo === void 0 ? void 0 : nodo.unidad_analisis) {
71
+ mapa.set(nodo.unidad_analisis, descendientes);
72
+ }
73
+ return descendientes;
74
+ }
75
+ mapearNodo(uaRaiz);
76
+ cacheDiccionarioRutas.set(uaRaiz, mapa);
77
+ return mapa;
78
+ }
48
79
  function itemCumpleCondicion(item, respuestas, estrategia, evaluarExpresion) {
49
80
  const condicion = estrategia.getCondicion(item);
50
81
  if (condicion !== null) {
@@ -57,37 +88,65 @@
57
88
  const valor = estrategia.getValor(item);
58
89
  return !!variable && variable in respuestas && respuestas[variable] == valor;
59
90
  }
60
- /**
61
- * Recorre la estructura completa desde la raíz y extrae el contexto combinado de
62
- * TODAS las instancias de la UA 'targetUaNombre' (hermanas, primas, etc.).
63
- */
64
- function obtenerTodasLasInstanciasDeUa(unidadAnalisis, respuestas, targetUaNombre, contextoAcumulado = {}) {
65
- const resultados = [];
66
- const respuestasPlanas = {};
67
- for (const [key, value] of Object.keys(respuestas)) {
68
- if (!Array.isArray(value)) {
69
- respuestasPlanas[key] = value;
91
+ function fusionarRespuestasPlanas(contextoAcumulado, respuestas) {
92
+ const res = Object.assign({}, contextoAcumulado);
93
+ for (const key in respuestas) {
94
+ const val = respuestas[key];
95
+ if (!Array.isArray(val)) {
96
+ res[key] = val;
70
97
  }
71
98
  }
72
- const contextoActual = Object.assign(Object.assign({}, contextoAcumulado), respuestasPlanas);
99
+ return res;
100
+ }
101
+ /**
102
+ * Recolecta el contexto completo de TODAS las instancias de targetUaNombre en la encuesta.
103
+ * Usa el diccionario precalculado para filtrar ramas en O(1) sin hacer recursión innecesaria.
104
+ */
105
+ function obtenerTodasLasInstanciasDeUa(unidadAnalisis, respuestas, targetUaNombre, diccionarioRutas, contextoAcumulado = {}) {
106
+ const contextoActual = fusionarRespuestasPlanas(contextoAcumulado, respuestas);
73
107
  if ((unidadAnalisis === null || unidadAnalisis === void 0 ? void 0 : unidadAnalisis.unidad_analisis) === targetUaNombre) {
74
- return [contextoActual];
108
+ return { completa: true, instancias: [contextoActual] };
109
+ }
110
+ const hijas = unidadAnalisis === null || unidadAnalisis === void 0 ? void 0 : unidadAnalisis.hijas;
111
+ if (!hijas) {
112
+ return { completa: false, instancias: [] };
75
113
  }
76
- const hijas = likeAr(unidadAnalisis === null || unidadAnalisis === void 0 ? void 0 : unidadAnalisis.hijas).array();
77
- for (const uaHija of hijas) {
114
+ const instanciasResultantes = [];
115
+ for (const key in hijas) {
116
+ const uaHija = hijas[key];
78
117
  const nombreUaHija = uaHija === null || uaHija === void 0 ? void 0 : uaHija.unidad_analisis;
79
- if (nombreUaHija && Array.isArray(respuestas[nombreUaHija])) {
80
- for (const respuestasHija of respuestas[nombreUaHija]) {
81
- const res = obtenerTodasLasInstanciasDeUa(uaHija, respuestasHija, targetUaNombre, contextoActual);
82
- resultados.push(...res);
118
+ if (!nombreUaHija)
119
+ continue;
120
+ // CONSULTA DICCIONARIO O(1): ¿Esta rama contiene a la UA que buscamos?
121
+ const descendientesDeHija = diccionarioRutas.get(nombreUaHija);
122
+ if (!descendientesDeHija || !descendientesDeHija.has(targetUaNombre)) {
123
+ continue; // Ignora ramas como 'visitas' instantáneamente
124
+ }
125
+ const arregloHijas = respuestas[nombreUaHija];
126
+ // Integridad estructural: rama válida pero sin array o vacío
127
+ if (!Array.isArray(arregloHijas) || arregloHijas.length === 0) {
128
+ return { completa: false, instancias: [] };
129
+ }
130
+ for (let i = 0; i < arregloHijas.length; i++) {
131
+ const respuestasHija = arregloHijas[i];
132
+ const res = obtenerTodasLasInstanciasDeUa(uaHija, respuestasHija, targetUaNombre, diccionarioRutas, contextoActual);
133
+ if (!res.completa) {
134
+ return { completa: false, instancias: [] };
135
+ }
136
+ for (let j = 0; j < res.instancias.length; j++) {
137
+ instanciasResultantes.push(res.instancias[j]);
83
138
  }
84
139
  }
85
140
  }
86
- return resultados;
141
+ return {
142
+ completa: instanciasResultantes.length > 0,
143
+ instancias: instanciasResultantes,
144
+ };
87
145
  }
88
- function buscarRecursivo(uaRaiz, respuestasRaiz, unidadAnalisisActual, respuestasActuales, listaOrdenada, tipo, tarea, evaluarExpresion) {
146
+ function buscarRecursivo(uaRaiz, respuestasRaiz, unidadAnalisisActual, respuestasActuales, listaOrdenada, tipo, tarea, evaluarExpresion, diccionarioRutas) {
89
147
  const estrategia = estrategiasCondicion[tipo];
90
- for (const item of listaOrdenada) {
148
+ for (let i = 0; i < listaOrdenada.length; i++) {
149
+ const item = listaOrdenada[i];
91
150
  const itemTarea = estrategia.getTarea(item);
92
151
  if (itemTarea && itemTarea !== tarea) {
93
152
  continue;
@@ -98,12 +157,20 @@
98
157
  if (esReaPositiva) {
99
158
  const nombreUaActual = unidadAnalisisActual === null || unidadAnalisisActual === void 0 ? void 0 : unidadAnalisisActual.unidad_analisis;
100
159
  if (nombreUaActual) {
101
- // Obtener todas las personas/hogares de la encuesta (hermanas + primas)
102
- const todasLasInstancias = obtenerTodasLasInstanciasDeUa(uaRaiz, respuestasRaiz, nombreUaActual);
103
- if (todasLasInstancias.length > 1) {
104
- const todasCumplen = todasLasInstancias.every((instanciaContexto) => itemCumpleCondicion(item, instanciaContexto, estrategia, evaluarExpresion));
160
+ const resInstancias = obtenerTodasLasInstanciasDeUa(uaRaiz, respuestasRaiz, nombreUaActual, diccionarioRutas);
161
+ if (!resInstancias.completa) {
162
+ continue;
163
+ }
164
+ if (resInstancias.instancias.length > 1) {
165
+ let todasCumplen = true;
166
+ for (let k = 0; k < resInstancias.instancias.length; k++) {
167
+ if (!itemCumpleCondicion(item, resInstancias.instancias[k], estrategia, evaluarExpresion)) {
168
+ todasCumplen = false;
169
+ break;
170
+ }
171
+ }
105
172
  if (!todasCumplen) {
106
- continue; // Si alguna hermana o prima no cumple, se descarta este item
173
+ continue;
107
174
  }
108
175
  }
109
176
  }
@@ -114,14 +181,19 @@
114
181
  };
115
182
  }
116
183
  }
117
- const hijas = likeAr(unidadAnalisisActual === null || unidadAnalisisActual === void 0 ? void 0 : unidadAnalisisActual.hijas).array();
118
- for (const uaHija of hijas) {
119
- const nombreUaHija = uaHija === null || uaHija === void 0 ? void 0 : uaHija.unidad_analisis;
120
- if (nombreUaHija && Array.isArray(respuestasActuales[nombreUaHija])) {
121
- for (const respuestasHija of respuestasActuales[nombreUaHija]) {
122
- const res = buscarRecursivo(uaRaiz, respuestasRaiz, uaHija, Object.assign(Object.assign({}, respuestasActuales), respuestasHija), listaOrdenada, tipo, tarea, evaluarExpresion);
123
- if (res.codigo !== null) {
124
- return res;
184
+ const hijas = unidadAnalisisActual === null || unidadAnalisisActual === void 0 ? void 0 : unidadAnalisisActual.hijas;
185
+ if (hijas) {
186
+ for (const key in hijas) {
187
+ const uaHija = hijas[key];
188
+ const nombreUaHija = uaHija === null || uaHija === void 0 ? void 0 : uaHija.unidad_analisis;
189
+ if (nombreUaHija && Array.isArray(respuestasActuales[nombreUaHija])) {
190
+ const arregloHijas = respuestasActuales[nombreUaHija];
191
+ for (let i = 0; i < arregloHijas.length; i++) {
192
+ const respuestasHija = arregloHijas[i];
193
+ const res = buscarRecursivo(uaRaiz, respuestasRaiz, uaHija, Object.assign({}, respuestasActuales, respuestasHija), listaOrdenada, tipo, tarea, evaluarExpresion, diccionarioRutas);
194
+ if (res.codigo !== null) {
195
+ return res;
196
+ }
125
197
  }
126
198
  }
127
199
  }
@@ -132,8 +204,10 @@
132
204
  if (!estrategiasCondicion[tipo]) {
133
205
  throw new Error(`Tipo de condición desconocido: ${tipo}`);
134
206
  }
207
+ // Obtiene o crea el diccionario de rutas para la estructura recibida
208
+ const diccionarioRutas = obtenerDiccionarioRutas(unidadAnalisis);
135
209
  const listaOrdenada = [...lista].sort((a, b) => { var _a, _b; return ((_a = a.orden) !== null && _a !== void 0 ? _a : 0) - ((_b = b.orden) !== null && _b !== void 0 ? _b : 0); });
136
- return buscarRecursivo(unidadAnalisis, respuestas, unidadAnalisis, respuestas, listaOrdenada, tipo, tarea, evaluarExpresion);
210
+ return buscarRecursivo(unidadAnalisis, respuestas, unidadAnalisis, respuestas, listaOrdenada, tipo, tarea, evaluarExpresion, diccionarioRutas);
137
211
  }
138
212
  });
139
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3Vsb3MtZW5jdWVzdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdW5sb2dnZWQvY2FsY3Vsb3MtZW5jdWVzdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUFnTUEsZ0VBd0JDO0lBeE5ELGtDQUFtQztJQUtuQyxNQUFNLG9CQUFvQixHQVN0QjtRQUNBLEtBQUssRUFBRTtZQUNILFlBQVksRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUUsSUFBWSxDQUFDLFlBQVk7WUFDbEQsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUk7WUFDdkIsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUk7WUFDcEIsU0FBUyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBRSxJQUFZLENBQUMsR0FBRztZQUN0QyxZQUFZLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFFLElBQVksQ0FBQyxXQUFXO1lBQ2pELFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLFdBQUMsT0FBQSxNQUFDLElBQVksQ0FBQyxLQUFLLG1DQUFJLElBQUksQ0FBQSxFQUFBO1NBQ2xEO1FBQ0QsUUFBUSxFQUFFO1lBQ04sWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUk7WUFDeEIsV0FBVyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBRSxJQUFjLENBQUMsUUFBUTtZQUMvQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFFLElBQWMsQ0FBQyxLQUFLO1lBQ3pDLFNBQVMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUUsSUFBYyxDQUFDLE1BQU07WUFDM0MsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUk7WUFDeEIsUUFBUSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJO1NBQzVCO1FBQ0QsU0FBUyxFQUFFO1lBQ1AsWUFBWSxFQUFFLENBQUMsSUFBSSxFQUFFLEVB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Y2VzQ29udGVudCI6WyJpbXBvcnQgbGlrZUFyID0gcmVxdWlyZShcImxpa2UtYXJcIik7XG5pbXBvcnQgeyBJZFZhcmlhYmxlLCBNYXBlb1RpcG9JdGVtLCBOb1JlYSwgTm9SZWFTdXAsIFJlYSwgUmVhU3VwLCBSZXNwdWVzdGFzLCBUaXBvQ29uZGljaW9uLCBVbmlkYWRBbmFsaXNpcyB9IGZyb20gXCIuL3RpcG9zXCI7XG5cbmV4cG9ydCB0eXBlIEV2YWx1YWRvckV4cHJlc2lvbiA9IChjb25kaWNpb25Kczogc3RyaW5nLCByZXNwdWVzdGFzOiBSZXNwdWVzdGFzKSA9PiBib29sZWFuO1xuXG5jb25zdCBlc3RyYXRlZ2lhc0NvbmRpY2lvbjoge1xuICAgIFtLIGluIFRpcG9Db25kaWNpb25dOiB7XG4gICAgICAgIGdldENvbmRpY2lvbjogKGl0ZW06IE1hcGVvVGlwb0l0ZW1bS10pID0+IHN0cmluZyB8IG51bGw7XG4gICAgICAgIGdldFZhcmlhYmxlOiAoaXRlbTogTWFwZW9UaXBvSXRlbVtLXSkgPT4gc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgZ2V0VmFsb3I6IChpdGVtOiBNYXBlb1RpcG9JdGVtW0tdKSA9PiBzdHJpbmcgfCBudWxsO1xuICAgICAgICBnZXRDb2RpZ286IChpdGVtOiBNYXBlb1RpcG9JdGVtW0tdKSA9PiBudW1iZXI7XG4gICAgICAgIGdldFJlc3VsdGFkbzogKGl0ZW06IE1hcGVvVGlwb0l0ZW1bS10pID0+IGJvb2xlYW47XG4gICAgICAgIGdldFRhcmVhOiAoaXRlbTogTWFwZW9UaXBvSXRlbVtLXSkgPT4gc3RyaW5nIHwgbnVsbDtcbiAgICB9XG59ID0ge1xuICAgICdyZWEnOiB7XG4gICAgICAgIGdldENvbmRpY2lvbjogKGl0ZW0pID0+IChpdGVtIGFzIFJlYSkuY29uZGljaW9uX2pzLFxuICAgICAgICBnZXRWYXJpYWJsZTogKCkgPT4gbnVsbCxcbiAgICAgICAgZ2V0VmFsb3I6ICgpID0+IG51bGwsXG4gICAgICAgIGdldENvZGlnbzogKGl0ZW0pID0+IChpdGVtIGFzIFJlYSkucmVhLFxuICAgICAgICBnZXRSZXN1bHRhZG86IChpdGVtKSA9PiAoaXRlbSBhcyBSZWEpLmVzX3Bvc2l0aXZhLFxuICAgICAgICBnZXRUYXJlYTogKGl0ZW0pID0+IChpdGVtIGFzIFJlYSkudGFyZWEgPz8gbnVsbCxcbiAgICB9LFxuICAgICdub19yZWEnOiB7XG4gICAgICAgIGdldENvbmRpY2lvbjogKCkgPT4gbnVsbCxcbiAgICAgICAgZ2V0VmFyaWFibGU6IChpdGVtKSA9PiAoaXRlbSBhcyBOb1JlYSkudmFyaWFibGUsXG4gICAgICAgIGdldFZhbG9yOiAoaXRlbSkgPT4gKGl0ZW0gYXMgTm9SZWEpLnZhbG9yLFxuICAgICAgICBnZXRDb2RpZ286IChpdGVtKSA9PiAoaXRlbSBhcyBOb1JlYSkubm9fcmVhLFxuICAgICAgICBnZXRSZXN1bHRhZG86ICgpID0+IHRydWUsXG4gICAgICAgIGdldFRhcmVhOiAoX2l0ZW0pID0+IG51bGwsXG4gICAgfSxcbiAgICAncmVhX3N1cCc6IHtcbiAgICAgICAgZ2V0Q29uZGljaW9uOiAoaXRlbSkgPT4gKGl0ZW0gYXMgUmVhU3VwKS5jb25kaWNpb25fanMsXG4gICAgICAgIGdldFZhcmlhYmxlOiAoKSA9PiBudWxsLFxuICAgICAgICBnZXRWYWxvcjogKCkgPT4gbnVsbCxcbiAgICAgICAgZ2V0Q29kaWdvOiAoaXRlbSkgPT4gKGl0ZW0gYXMgUmVhU3VwKS5yZWFfc3VwLFxuICAgICAgICBnZXRSZXN1bHRhZG86IChpdGVtKSA9PiAoaXRlbSBhcyBSZWFTdXApLmVzX3Bvc2l0aXZhLFxuICAgICAgICBnZXRUYXJlYTogKGl0ZW0pID0+IChpdGVtIGFzIFJlYVN1cCkudGFyZWEgPz8gbnVsbCxcbiAgICB9LFxuICAgICdub19yZWFfc3VwJzoge1xuICAgICAgICBnZXRDb25kaWNpb246ICgpID0+IG51bGwsXG4gICAgICAgIGdldFZhcmlhYmxlOiAoaXRlbSkgPT4gKGl0ZW0gYXMgTm9SZWFTdXApLnZhcmlhYmxlX3N1cCxcbiAgICAgICAgZ2V0VmFsb3I6IChpdGVtKSA9PiAoaXRlbSBhcyBOb1JlYVN1cCkudmFsb3Jfc3VwLFxuICAgICAgICBnZXRDb2RpZ286IChpdGVtKSA9PiAoaXRlbSBhcyBOb1JlYVN1cCkubm9fcmVhX3N1cCxcbiAgICAgICAgZ2V0UmVzdWx0YWRvOiAoKSA9PiB0cnVlLFxuICAgICAgICBnZXRUYXJlYTogKF9pdGVtKSA9PiBudWxsLFxuICAgIH1cbn07XG5cbmV4cG9ydCB0eXBlIFJlc3VsdGFkb0J1c3F1ZWRhID0ge1xuICAgIGNvZGlnbzogbnVtYmVyIHwgbnVsbDtcbiAgICByZXN1bHRhZG86IGJvb2xlYW47XG59O1xuXG5mdW5jdGlvbiBpdGVtQ3VtcGxlQ29uZGljaW9uPFQgZXh0ZW5kcyBUaXBvQ29uZGljaW9uPihcbiAgICBpdGVtOiBNYXBlb1RpcG9JdGVtW1RdLFxuICAgIHJlc3B1ZXN0YXM6IFJlc3B1ZXN0YXMsXG4gICAgZXN0cmF0ZWdpYTogdHlwZW9mIGVzdHJhdGVnaWFzQ29uZGljaW9uW1RdLFxuICAgIGV2YWx1YXJFeHByZXNpb246IEV2YWx1YWRvckV4cHJlc2lvbiB8IHVuZGVmaW5lZFxuKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY29uZGljaW9uID0gZXN0cmF0ZWdpYS5nZXRDb25kaWNpb24oaXRlbSk7XG4gICAgaWYgKGNvbmRpY2lvbiAhPT0gbnVsbCkge1xuICAgICAgICBpZiAoIWV2YWx1YXJFeHByZXNpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignU2UgcmVxdWllcmUgZXZhbHVhckV4cHJlc2lvbiBwYXJhIGV2YWx1YXIgdW5hIGNvbmRpY2lvbiBKUycpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBldmFsdWFyRXhwcmVzaW9uKGNvbmRpY2lvbiwgcmVzcHVlc3Rhcyk7XG4gICAgfVxuICAgIGNvbnN0IHZhcmlhYmxlID0gZXN0cmF0ZWdpYS5nZXRWYXJpYWJsZShpdGVtKTtcbiAgICBjb25zdCB2YWxvciA9IGVzdHJhdGVnaWEuZ2V0VmFsb3IoaXRlbSk7XG4gICAgcmV0dXJuICEhdmFyaWFibGUgJiYgdmFyaWFibGUgaW4gcmVzcHVlc3RhcyAmJiByZXNwdWVzdGFzW3ZhcmlhYmxlIGFzIElkVmFyaWFibGVdID09IHZhbG9yO1xufVxuXG4vKipcbiAqIFJlY29ycmUgbGEgZXN0cnVjdHVyYSBjb21wbGV0YSBkZXNkZSBsYSByYcOteiB5IGV4dHJhZSBlbCBjb250ZXh0byBjb21iaW5hZG8gZGVcbiAqIFRPREFTIGxhcyBpbnN0YW5jaWFzIGRlIGxhIFVBICd0YXJnZXRVYU5vbWJyZScgKGhlcm1hbmFzLCBwcmltYXMsIGV0Yy4pLlxuICovXG5mdW5jdGlvbiBvYnRlbmVyVG9kYXNMYXNJbnN0YW5jaWFzRGVVYShcbiAgICB1bmlkYWRBbmFsaXNpczogVW5pZGFkQW5hbGlzaXMsXG4gICAgcmVzcHVlc3RhczogUmVzcHVlc3RhcyxcbiAgICB0YXJnZXRVYU5vbWJyZTogc3RyaW5nLFxuICAgIGNvbnRleHRvQWN1bXVsYWRvID0ge30gYXMgUmVzcHVlc3Rhc1xuKTogUmVzcHVlc3Rhc1tdIHtcbiAgICBjb25zdCByZXN1bHRhZG9zOiBSZXNwdWVzdGFzW10gPSBbXTtcblxuICAgIGNvbnN0IHJlc3B1ZXN0YXNQbGFuYXMgPSB7fSBhcyBSZXNwdWVzdGFzO1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5rZXlzKHJlc3B1ZXN0YXMpKSB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJlc3B1ZXN0YXNQbGFuYXNba2V5IGFzIElkVmFyaWFibGVdID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgY29udGV4dG9BY3R1YWwgPSB7IC4uLmNvbnRleHRvQWN1bXVsYWRvLCAuLi5yZXNwdWVzdGFzUGxhbmFzIH07XG5cbiAgICBpZiAodW5pZGFkQW5hbGlzaXM/LnVuaWRhZF9hbmFsaXNpcyA9PT0gdGFyZ2V0VWFOb21icmUpIHtcbiAgICAgICAgcmV0dXJuIFtjb250ZXh0b0FjdHVhbF07XG4gICAgfVxuXG4gICAgY29uc3QgaGlqYXMgPSBsaWtlQXIodW5pZGFkQW5hbGlzaXM/LmhpamFzKS5hcnJheSgpO1xuICAgIGZvciAoY29uc3QgdWFIaWphIG9mIGhpamFzKSB7XG4gICAgICAgIGNvbnN0IG5vbWJyZVVhSGlqYSA9IHVhSGlqYT8udW5pZGFkX2FuYWxpc2lzO1xuICAgICAgICBpZiAobm9tYnJlVWFIaWphICYmIEFycmF5LmlzQXJyYXkocmVzcHVlc3Rhc1tub21icmVVYUhpamFdKSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCByZXNwdWVzdGFzSGlqYSBvZiByZXNwdWVzdGFzW25vbWJyZVVhSGlqYV0pIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBvYnRlbmVyVG9kYXNMYXNJbnN0YW5jaWFzRGVVYShcbiAgICAgICAgICAgICAgICAgICAgdWFIaWphLFxuICAgICAgICAgICAgICAgICAgICByZXNwdWVzdGFzSGlqYSxcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VWFOb21icmUsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHRvQWN0dWFsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICByZXN1bHRhZG9zLnB1c2goLi4ucmVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRhZG9zO1xufVxuXG5mdW5jdGlvbiBidXNjYXJSZWN1cnNpdm88VCBleHRlbmRzIFRpcG9Db25kaWNpb24+KFxuICAgIHVhUmFpejogVW5pZGFkQW5hbGlzaXMsXG4gICAgcmVzcHVlc3Rhc1JhaXo6IFJlc3B1ZXN0YXMsXG4gICAgdW5pZGFkQW5hbGlzaXNBY3R1YWw6IFVuaWRhZEFuYWxpc2lzLFxuICAgIHJlc3B1ZXN0YXNBY3R1YWxlczogUmVzcHVlc3RhcyxcbiAgICBsaXN0YU9yZGVuYWRhOiBNYXBlb1RpcG9JdGVtW1RdW10sXG4gICAgdGlwbzogVCxcbiAgICB0YXJlYTogc3RyaW5nLFxuICAgIGV2YWx1YXJFeHByZXNpb246IEV2YWx1YWRvckV4cHJlc2lvbiB8IHVuZGVmaW5lZFxuKTogUmVzdWx0YWRvQnVzcXVlZGEge1xuXG4gICAgY29uc3QgZXN0cmF0ZWdpYSA9IGVzdHJhdGVnaWFzQ29uZGljaW9uW3RpcG9dO1xuXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGxpc3RhT3JkZW5hZGEpIHtcbiAgICAgICAgY29uc3QgaXRlbVRhcmVhID0gZXN0cmF0ZWdpYS5nZXRUYXJlYShpdGVtKTtcbiAgICAgICAgaWYgKGl0ZW1UYXJlYSAmJiBpdGVtVGFyZWEgIT09IHRhcmVhKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpdGVtQ3VtcGxlQ29uZGljaW9uKGl0ZW0sIHJlc3B1ZXN0YXNBY3R1YWxlcywgZXN0cmF0ZWdpYSwgZXZhbHVhckV4cHJlc2lvbikpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdGFkbyA9IGVzdHJhdGVnaWEuZ2V0UmVzdWx0YWRvKGl0ZW0pO1xuICAgICAgICAgICAgY29uc3QgZXNSZWFQb3NpdGl2YSA9ICh0aXBvID09PSAncmVhJyB8fCB0aXBvID09PSAncmVhX3N1cCcpICYmIHJlc3VsdGFkbyA9PT0gdHJ1ZTtcblxuICAgICAgICAgICAgaWYgKGVzUmVhUG9zaXRpdmEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBub21icmVVYUFjdHVhbCA9IHVuaWRhZEFuYWxpc2lzQWN0dWFsPy51bmlkYWRfYW5hbGlzaXM7XG4gICAgICAgICAgICAgICAgaWYgKG5vbWJyZVVhQWN0dWFsKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIE9idGVuZXIgdG9kYXMgbGFzIHBlcnNvbmFzL2hvZ2FyZXMgZGUgbGEgZW5jdWVzdGEgKGhlcm1hbmFzICsgcHJpbWFzKVxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0b2Rhc0xhc0luc3RhbmNpYXMgPSBvYnRlbmVyVG9kYXNMYXNJbnN0YW5jaWFzRGVVYShcbiAgICAgICAgICAgICAgICAgICAgICAgIHVhUmFpeixcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3B1ZXN0YXNSYWl6LFxuICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlVWFBY3R1YWxcbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodG9kYXNMYXNJbnN0YW5jaWFzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRvZGFzQ3VtcGxlbiA9IHRvZGFzTGFzSW5zdGFuY2lhcy5ldmVyeSgoaW5zdGFuY2lhQ29udGV4dG8pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbUN1bXBsZUNvbmRpY2lvbihpdGVtLCBpbnN0YW5jaWFDb250ZXh0bywgZXN0cmF0ZWdpYSwgZXZhbHVhckV4cHJlc2lvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdG9kYXNDdW1wbGVuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7IC8vIFNpIGFsZ3VuYSBoZXJtYW5hIG8gcHJpbWEgbm8gY3VtcGxlLCBzZSBkZXNjYXJ0YSBlc3RlIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBjb2RpZ286IGVzdHJhdGVnaWEuZ2V0Q29kaWdvKGl0ZW0pLFxuICAgICAgICAgICAgICAgIHJlc3VsdGFkbyxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBoaWphcyA9IGxpa2VBcih1bmlkYWRBbmFsaXNpc0FjdHVhbD8uaGlqYXMpLmFycmF5KCk7XG4gICAgZm9yIChjb25zdCB1YUhpamEgb2YgaGlqYXMpIHtcbiAgICAgICAgY29uc3Qgbm9tYnJlVWFIaWphID0gdWFIaWphPy51bmlkYWRfYW5hbGlzaXM7XG4gICAgICAgIGlmIChub21icmVVYUhpamEgJiYgQXJyYXkuaXNBcnJheShyZXNwdWVzdGFzQWN0dWFsZXNbbm9tYnJlVWFIaWphXSkpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcmVzcHVlc3Rhc0hpamEgb2YgcmVzcHVlc3Rhc0FjdHVhbGVzW25vbWJyZVVhSGlqYV0pIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBidXNjYXJSZWN1cnNpdm8oXG4gICAgICAgICAgICAgICAgICAgIHVhUmFpeixcbiAgICAgICAgICAgICAgICAgICAgcmVzcHVlc3Rhc1JhaXosXG4gICAgICAgICAgICAgICAgICAgIHVhSGlqYSxcbiAgICAgICAgICAgICAgICAgICAgeyAuLi5yZXNwdWVzdGFzQWN0dWFsZXMsIC4uLnJlc3B1ZXN0YXNIaWphIH0sXG4gICAgICAgICAgICAgICAgICAgIGxpc3RhT3JkZW5hZGEsXG4gICAgICAgICAgICAgICAgICAgIHRpcG8sXG4gICAgICAgICAgICAgICAgICAgIHRhcmVhLFxuICAgICAgICAgICAgICAgICAgICBldmFsdWFyRXhwcmVzaW9uXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBpZiAocmVzLmNvZGlnbyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7IGNvZGlnbzogbnVsbCwgcmVzdWx0YWRvOiBmYWxzZSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVzY2FyUmVhTm9SZWFFblJlc3B1ZXN0YXM8VCBleHRlbmRzIFRpcG9Db25kaWNpb24+KFxuICAgIHVuaWRhZEFuYWxpc2lzOiBVbmlkYWRBbmFsaXNpcyxcbiAgICByZXNwdWVzdGFzOiBSZXNwdWVzdGFzLFxuICAgIGxpc3RhOiBNYXBlb1RpcG9JdGVtW1RdW10sXG4gICAgdGlwbzogVCxcbiAgICB0YXJlYTogc3RyaW5nLFxuICAgIGV2YWx1YXJFeHByZXNpb24/OiBFdmFsdWFkb3JFeHByZXNpb25cbik6IFJlc3VsdGFkb0J1c3F1ZWRhIHtcblxuICAgIGlmICghZXN0cmF0ZWdpYXNDb25kaWNpb25bdGlwb10pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaXBvIGRlIGNvbmRpY2nDs24gZGVzY29ub2NpZG86ICR7dGlwb31gKTtcbiAgICB9XG5cbiAgICBjb25zdCBsaXN0YU9yZGVuYWRhID0gWy4uLmxpc3RhXS5zb3J0KChhLCBiKSA9PiAoYS5vcmRlbiA/PyAwKSAtIChiLm9yZGVuID8/IDApKTtcbiAgICByZXR1cm4gYnVzY2FyUmVjdXJzaXZvKFxuICAgICAgICB1bmlkYWRBbmFsaXNpcyxcbiAgICAgICAgcmVzcHVlc3RhcyxcbiAgICAgICAgdW5pZGFkQW5hbGlzaXMsXG4gICAgICAgIHJlc3B1ZXN0YXMsXG4gICAgICAgIGxpc3RhT3JkZW5hZGEsXG4gICAgICAgIHRpcG8sXG4gICAgICAgIHRhcmVhLFxuICAgICAgICBldmFsdWFyRXhwcmVzaW9uXG4gICAgKTtcbn0iXX0=
213
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3Vsb3MtZW5jdWVzdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdW5sb2dnZWQvY2FsY3Vsb3MtZW5jdWVzdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUEwUkEsZ0VBNEJDO0lBbFRELE1BQU0sb0JBQW9CLEdBU3RCO1FBQ0EsS0FBSyxFQUFFO1lBQ0gsWUFBWSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBRSxJQUFZLENBQUMsWUFBWTtZQUNsRCxXQUFXLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSTtZQUN2QixRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSTtZQUNwQixTQUFTLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFFLElBQVksQ0FBQyxHQUFHO1lBQ3RDLFlBQVksRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUUsSUFBWSxDQUFDLFdBQVc7WUFDakQsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsV0FBQyxPQUFBLE1BQUMsSUFBWSxDQUFDLEtBQUssbUNBQUksSUFBSSxDQUFBLEVBQUE7U0FDbEQ7UUFDRCxRQUFRLEVBQUU7WUFDTixZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSTtZQUN4QixXQUFXLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFFLElBQWMsQ0FBQyxRQUFRO1lBQy9DLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUUsSUFBYyxDQUFDLEtBQUs7WUFDekMsU0FBUyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBRSxJQUFjLENBQUMsTUFBTTtZQUMzQyxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSTtZQUN4QixRQUFRLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUk7U0FDNUI7UUFDRCxTQUFTLEVBQUU7WUFDUCxZQUFZLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFFLElBQWUsQ0FBQyxZQUFZO1lBQ3JELFdBQVcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJO1lBQ3ZCLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJO1lBQ3BCLFNBQVMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUUsSUFBZSxDQUFDLE9BQU87WUFDN0MsWUFBWSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBRSxJQUFlLENBQUMsV0FBVztZQUNwRCxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxXQUFDLE9BQUEsTUFBQyxJQUFlLENBQUMsS0FBSyxtQ0FBSSxJQUFJLENBQUEsRUFBQTtTQUNyRDtRQUNELFlBQVksRUFBRTtZQUNWLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJO1lBQ3hCLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUUsSUFBaUIsQ0FBQyxZQUFZO1lBQ3RELFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUUsSUFBaUIsQ0FBQyxTQUFTO1lBQ2hELFNBQVMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUUsSUFBaUIsQ0FBQyxVQUFVO1lBQ2xELFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJO1lBQ3hCLFFBQVEsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSTtTQUM1QjtLQUNKLENBQUM7SUFPRiwyRkFBMkY7SUFDM0YsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLE9BQU8sRUFBNEMsQ0FBQztJQUV0Rjs7O09BR0c7SUFDSCxTQUFTLHVCQUF1QixDQUFDLE1BQXNCO1FBQ25ELElBQUksSUFBSSxHQUFHLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QyxJQUFJLElBQUk7WUFBRSxPQUFPLElBQUksQ0FBQztRQUV0QixJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQXVCLENBQUM7UUFFdEMsU0FBUyxVQUFVLENBQUMsSUFBb0I7WUFDcEMsTUFBTSxhQUFhLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztZQUN4QyxJQUFJLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxlQUFlLEVBQUUsQ0FBQztnQkFDeEIsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDNUMsQ0FBQztZQUNELE1BQU0sS0FBSyxHQUFHLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxLQUFLLENBQUM7WUFDMUIsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDUixLQUFLLE1BQU0sR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO29CQUN0QixNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQXVCLENBQUUsQ0FBQyxDQUFDO29CQUM3RCxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xELENBQUM7WUFDTCxDQUFDO1lBQ0QsSUFBSSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsZUFBZSxFQUFFLENBQUM7Z0JBQ3hCLElBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUNuRCxDQUFDO1lBQ0QsT0FBTyxhQUFhLENBQUM7UUFDekIsQ0FBQztRQUVELFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuQixxQkFBcUIsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxTQUFTLG1CQUFtQixDQUN4QixJQUFzQixFQUN0QixVQUFzQixFQUN0QixVQUEwQyxFQUMxQyxnQkFBZ0Q7UUFFaEQsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoRCxJQUFJLFNBQVMsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw0REFBNEQsQ0FBQyxDQUFDO1lBQ2xGLENBQUM7WUFDRCxPQUFPLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBQ0QsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QyxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsSUFBSSxRQUFRLElBQUksVUFBVSxJQUFJLFVBQVUsQ0FBQyxRQUFzQixDQUFDLElBQUksS0FBSyxDQUFDO0lBQy9GLENBQUM7SUFFRCxTQUFTLHdCQUF3QixDQUFDLGlCQUE2QixFQUFFLFVBQXNCO1FBQ25GLE1BQU0sR0FBRyxHQUFlLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDN0QsS0FBSyxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUMzQixNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsR0FBaUIsQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RCLEdBQUcsQ0FBQyxHQUFpQixDQUFDLEdBQUcsR0FBWSxDQUFDO1lBQzFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBT0Q7OztPQUdHO0lBQ0gsU0FBUyw2QkFBNkIsQ0FDbEMsY0FBOEIsRUFDOUIsVUFBc0IsRUFDdEIsY0FBc0IsRUFDdEIsZ0JBQTBDLEVBQzFDLG9CQUFvQixFQUFnQjtRQUVwQyxNQUFNLGNBQWMsR0FBRyx3QkFBd0IsQ0FBQyxpQkFBaUIsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUUvRSxJQUFJLENBQUEsY0FBYyxhQUFkLGNBQWMsdUJBQWQsY0FBYyxDQUFFLGVBQWUsTUFBSyxjQUFjLEVBQUUsQ0FBQztZQUNyRCxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1FBQzVELENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxjQUFjLGFBQWQsY0FBYyx1QkFBZCxjQUFjLENBQUUsS0FBSyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNULE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUMvQyxDQUFDO1FBRUQsTUFBTSxxQkFBcUIsR0FBaUIsRUFBRSxDQUFDO1FBRS9DLEtBQUssTUFBTSxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7WUFDdEIsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLEdBQXVCLENBQUMsQ0FBQztZQUM5QyxNQUFNLFlBQVksR0FBRyxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsZUFBZSxDQUFDO1lBQzdDLElBQUksQ0FBQyxZQUFZO2dCQUFFLFNBQVM7WUFFNUIsdUVBQXVFO1lBQ3ZFLE1BQU0sbUJBQW1CLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQy9ELElBQUksQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO2dCQUNuRSxTQUFTLENBQUMsK0NBQStDO1lBQzdELENBQUM7WUFFRCxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsWUFBMEIsQ0FBQyxDQUFDO1lBRTVELDZEQUE2RDtZQUM3RCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUM1RCxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFDL0MsQ0FBQztZQUVELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQzNDLE1BQU0sY0FBYyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQWUsQ0FBQztnQkFDckQsTUFBTSxHQUFHLEdBQUcsNkJBQTZCLENBQ3JDLE1BQU0sRUFDTixjQUFjLEVBQ2QsY0FBYyxFQUNkLGdCQUFnQixFQUNoQixjQUFjLENBQ2pCLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDaEIsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxDQUFDO2dCQUMvQyxDQUFDO2dCQUNELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO29CQUM3QyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNsRCxDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPO1lBQ0gsUUFBUSxFQUFFLHFCQUFxQixDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQzFDLFVBQVUsRUFBRSxxQkFBcUI7U0FDcEMsQ0FBQztJQUNOLENBQUM7SUFFRCxTQUFTLGVBQWUsQ0FDcEIsTUFBc0IsRUFDdEIsY0FBMEIsRUFDMUIsb0JBQW9DLEVBQ3BDLGtCQUE4QixFQUM5QixhQUFpQyxFQUNqQyxJQUFPLEVBQ1AsS0FBYSxFQUNiLGdCQUFnRCxFQUNoRCxnQkFBMEM7UUFHMUMsTUFBTSxVQUFVLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFOUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUM1QyxNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUIsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QyxJQUFJLFNBQVMsSUFBSSxTQUFTLEtBQUssS0FBSyxFQUFFLENBQUM7Z0JBQ25DLFNBQVM7WUFDYixDQUFDO1lBRUQsSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztnQkFDOUUsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDaEQsTUFBTSxhQUFhLEdBQUcsQ0FBQyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxTQUFTLENBQUMsSUFBSSxTQUFTLEtBQUssSUFBSSxDQUFDO2dCQUVuRixJQUFJLGFBQWEsRUFBRSxDQUFDO29CQUNoQixNQUFNLGNBQWMsR0FBRyxvQkFBb0IsYUFBcEIsb0JBQW9CLHVCQUFwQixvQkFBb0IsQ0FBRSxlQUFlLENBQUM7b0JBQzdELElBQUksY0FBYyxFQUFFLENBQUM7d0JBQ2pCLE1BQU0sYUFBYSxHQUFHLDZCQUE2QixDQUMvQyxNQUFNLEVBQ04sY0FBYyxFQUNkLGNBQWMsRUFDZCxnQkFBZ0IsQ0FDbkIsQ0FBQzt3QkFFRixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDOzRCQUMxQixTQUFTO3dCQUNiLENBQUM7d0JBRUQsSUFBSSxhQUFhLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQzs0QkFDdEMsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDOzRCQUN4QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsYUFBYSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQ0FDdkQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7b0NBQ3hGLFlBQVksR0FBRyxLQUFLLENBQUM7b0NBQ3JCLE1BQU07Z0NBQ1YsQ0FBQzs0QkFDTCxDQUFDOzRCQUVELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQ0FDaEIsU0FBUzs0QkFDYixDQUFDO3dCQUNMLENBQUM7b0JBQ0wsQ0FBQztnQkFDTCxDQUFDO2dCQUVELE9BQU87b0JBQ0gsTUFBTSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO29CQUNsQyxTQUFTO2lCQUNaLENBQUM7WUFDTixDQUFDO1FBQ0wsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUFHLG9CQUFvQixhQUFwQixvQkFBb0IsdUJBQXBCLG9CQUFvQixDQUFFLEtBQUssQ0FBQztRQUMxQyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1IsS0FBSyxNQUFNLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDdEIsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLEdBQXVCLENBQUMsQ0FBQztnQkFDOUMsTUFBTSxZQUFZLEdBQUcsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLGVBQWUsQ0FBQztnQkFDN0MsSUFBSSxZQUFZLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxZQUEwQixDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNoRixNQUFNLFlBQVksR0FBRyxrQkFBa0IsQ0FBQyxZQUEwQixDQUE0QixDQUFDO29CQUMvRixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO3dCQUMzQyxNQUFNLGNBQWMsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQ3ZDLE1BQU0sR0FBRyxHQUFHLGVBQWUsQ0FDdkIsTUFBTSxFQUNOLGNBQWMsRUFDZCxNQUFNLEVBQ04sTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxDQUFDLEVBQ3JELGFBQWEsRUFDYixJQUFJLEVBQ0osS0FBSyxFQUNMLGdCQUFnQixFQUNoQixnQkFBZ0IsQ0FDbkIsQ0FBQzt3QkFDRixJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssSUFBSSxFQUFFLENBQUM7NEJBQ3RCLE9BQU8sR0FBRyxDQUFDO3dCQUNmLENBQUM7b0JBQ0wsQ0FBQztnQkFDTCxDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUVELFNBQWdCLDBCQUEwQixDQUN0QyxjQUE4QixFQUM5QixVQUFzQixFQUN0QixLQUF5QixFQUN6QixJQUFPLEVBQ1AsS0FBYSxFQUNiLGdCQUFxQztRQUdyQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUM5QixNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFFRCxxRUFBcUU7UUFDckUsTUFBTSxnQkFBZ0IsR0FBRyx1QkFBdUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUVqRSxNQUFNLGFBQWEsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLGVBQUMsT0FBQSxDQUFDLE1BQUEsQ0FBQyxDQUFDLEtBQUssbUNBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFBLENBQUMsQ0FBQyxLQUFLLG1DQUFJLENBQUMsQ0FBQyxDQUFBLEVBQUEsQ0FBQyxDQUFDO1FBQ2pGLE9BQU8sZUFBZSxDQUNsQixjQUFjLEVBQ2QsVUFBVSxFQUNWLGNBQWMsRUFDZCxVQUFVLEVBQ1YsYUFBYSxFQUNiLElBQUksRUFDSixLQUFLLEVBQ0wsZ0JBQWdCLEVBQ2hCLGdCQUFnQixDQUNuQixDQUFDO0lBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElkVW5pZGFkQW5hbGlzaXMsIElkVmFyaWFibGUsIE1hcGVvVGlwb0l0ZW0sIE5vUmVhLCBOb1JlYVN1cCwgUmVhLCBSZWFTdXAsIFJlc3B1ZXN0YXMsIFRpcG9Db25kaWNpb24sIFVuaWRhZEFuYWxpc2lzLCBWYWxvciB9IGZyb20gXCIuL3RpcG9zXCI7XG5cbmV4cG9ydCB0eXBlIEV2YWx1YWRvckV4cHJlc2lvbiA9IChjb25kaWNpb25Kczogc3RyaW5nLCByZXNwdWVzdGFzOiBSZXNwdWVzdGFzKSA9PiBib29sZWFuO1xuXG5jb25zdCBlc3RyYXRlZ2lhc0NvbmRpY2lvbjoge1xuICAgIFtLIGluIFRpcG9Db25kaWNpb25dOiB7XG4gICAgICAgIGdldENvbmRpY2lvbjogKGl0ZW06IE1hcGVvVGlwb0l0ZW1bS10pID0+IHN0cmluZyB8IG51bGw7XG4gICAgICAgIGdldFZhcmlhYmxlOiAoaXRlbTogTWFwZW9UaXBvSXRlbVtLXSkgPT4gc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgZ2V0VmFsb3I6IChpdGVtOiBNYXBlb1RpcG9JdGVtW0tdKSA9PiBzdHJpbmcgfCBudWxsO1xuICAgICAgICBnZXRDb2RpZ286IChpdGVtOiBNYXBlb1RpcG9JdGVtW0tdKSA9PiBudW1iZXI7XG4gICAgICAgIGdldFJlc3VsdGFkbzogKGl0ZW06IE1hcGVvVGlwb0l0ZW1bS10pID0+IGJvb2xlYW47XG4gICAgICAgIGdldFRhcmVhOiAoaXRlbTogTWFwZW9UaXBvSXRlbVtLXSkgPT4gc3RyaW5nIHwgbnVsbDtcbiAgICB9XG59ID0ge1xuICAgICdyZWEnOiB7XG4gICAgICAgIGdldENvbmRpY2lvbjogKGl0ZW0pID0+IChpdGVtIGFzIFJlYSkuY29uZGljaW9uX2pzLFxuICAgICAgICBnZXRWYXJpYWJsZTogKCkgPT4gbnVsbCxcbiAgICAgICAgZ2V0VmFsb3I6ICgpID0+IG51bGwsXG4gICAgICAgIGdldENvZGlnbzogKGl0ZW0pID0+IChpdGVtIGFzIFJlYSkucmVhLFxuICAgICAgICBnZXRSZXN1bHRhZG86IChpdGVtKSA9PiAoaXRlbSBhcyBSZWEpLmVzX3Bvc2l0aXZhLFxuICAgICAgICBnZXRUYXJlYTogKGl0ZW0pID0+IChpdGVtIGFzIFJlYSkudGFyZWEgPz8gbnVsbCxcbiAgICB9LFxuICAgICdub19yZWEnOiB7XG4gICAgICAgIGdldENvbmRpY2lvbjogKCkgPT4gbnVsbCxcbiAgICAgICAgZ2V0VmFyaWFibGU6IChpdGVtKSA9PiAoaXRlbSBhcyBOb1JlYSkudmFyaWFibGUsXG4gICAgICAgIGdldFZhbG9yOiAoaXRlbSkgPT4gKGl0ZW0gYXMgTm9SZWEpLnZhbG9yLFxuICAgICAgICBnZXRDb2RpZ286IChpdGVtKSA9PiAoaXRlbSBhcyBOb1JlYSkubm9fcmVhLFxuICAgICAgICBnZXRSZXN1bHRhZG86ICgpID0+IHRydWUsXG4gICAgICAgIGdldFRhcmVhOiAoX2l0ZW0pID0+IG51bGwsXG4gICAgfSxcbiAgICAncmVhX3N1cCc6IHtcbiAgICAgICAgZ2V0Q29uZGljaW9uOiAoaXRlbSkgPT4gKGl0ZW0gYXMgUmVhU3VwKS5jb25kaWNpb25fanMsXG4gICAgICAgIGdldFZhcmlhYmxlOiAoKSA9PiBudWxsLFxuICAgICAgICBnZXRWYWxvcjogKCkgPT4gbnVsbCxcbiAgICAgICAgZ2V0Q29kaWdvOiAoaXRlbSkgPT4gKGl0ZW0gYXMgUmVhU3VwKS5yZWFfc3VwLFxuICAgICAgICBnZXRSZXN1bHRhZG86IChpdGVtKSA9PiAoaXRlbSBhcyBSZWFTdXApLmVzX3Bvc2l0aXZhLFxuICAgICAgICBnZXRUYXJlYTogKGl0ZW0pID0+IChpdGVtIGFzIFJlYVN1cCkudGFyZWEgPz8gbnVsbCxcbiAgICB9LFxuICAgICdub19yZWFfc3VwJzoge1xuICAgICAgICBnZXRDb25kaWNpb246ICgpID0+IG51bGwsXG4gICAgICAgIGdldFZhcmlhYmxlOiAoaXRlbSkgPT4gKGl0ZW0gYXMgTm9SZWFTdXApLnZhcmlhYmxlX3N1cCxcbiAgICAgICAgZ2V0VmFsb3I6IChpdGVtKSA9PiAoaXRlbSBhcyBOb1JlYVN1cCkudmFsb3Jfc3VwLFxuICAgICAgICBnZXRDb2RpZ286IChpdGVtKSA9PiAoaXRlbSBhcyBOb1JlYVN1cCkubm9fcmVhX3N1cCxcbiAgICAgICAgZ2V0UmVzdWx0YWRvOiAoKSA9PiB0cnVlLFxuICAgICAgICBnZXRUYXJlYTogKF9pdGVtKSA9PiBudWxsLFxuICAgIH1cbn07XG5cbmV4cG9ydCB0eXBlIFJlc3VsdGFkb0J1c3F1ZWRhID0ge1xuICAgIGNvZGlnbzogbnVtYmVyIHwgbnVsbDtcbiAgICByZXN1bHRhZG86IGJvb2xlYW47XG59O1xuXG4vLyBDYWNow6kgZW4gbWVtb3JpYSBwYXJhIG5vIHZvbHZlciBhIGFuYWxpemFyIGxhIGVzdHJ1Y3R1cmEgdGXDs3JpY2EgZW4gY2FkYSBjYW1iaW8gZGUgaW5wdXRcbmNvbnN0IGNhY2hlRGljY2lvbmFyaW9SdXRhcyA9IG5ldyBXZWFrTWFwPFVuaWRhZEFuYWxpc2lzLCBNYXA8c3RyaW5nLCBTZXQ8c3RyaW5nPj4+KCk7XG5cbi8qKlxuICogTWFwZWEgdG9kYSBsYSBlc3RydWN0dXJhIGRlIFVBcyBwcm9kdWNpZW5kbyB1biBkaWNjaW9uYXJpbyBPKDEpOlxuICogeyBcInZpdmllbmRhc1wiIC0+IFNldChcInZpdmllbmRhc1wiLCBcImhvZ2FyZXNcIiwgXCJwZXJzb25hc1wiLCBcInZpc2l0YXNcIiksIFwiaG9nYXJlc1wiIC0+IFNldChcImhvZ2FyZXNcIiwgXCJwZXJzb25hc1wiKSB9XG4gKi9cbmZ1bmN0aW9uIG9idGVuZXJEaWNjaW9uYXJpb1J1dGFzKHVhUmFpejogVW5pZGFkQW5hbGlzaXMpOiBNYXA8c3RyaW5nLCBTZXQ8c3RyaW5nPj4ge1xuICAgIGxldCBtYXBhID0gY2FjaGVEaWNjaW9uYXJpb1J1dGFzLmdldCh1YVJhaXopO1xuICAgIGlmIChtYXBhKSByZXR1cm4gbWFwYTtcblxuICAgIG1hcGEgPSBuZXcgTWFwPHN0cmluZywgU2V0PHN0cmluZz4+KCk7XG5cbiAgICBmdW5jdGlvbiBtYXBlYXJOb2RvKG5vZG86IFVuaWRhZEFuYWxpc2lzKTogU2V0PHN0cmluZz4ge1xuICAgICAgICBjb25zdCBkZXNjZW5kaWVudGVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgIGlmIChub2RvPy51bmlkYWRfYW5hbGlzaXMpIHtcbiAgICAgICAgICAgIGRlc2NlbmRpZW50ZXMuYWRkKG5vZG8udW5pZGFkX2FuYWxpc2lzKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBoaWphcyA9IG5vZG8/LmhpamFzO1xuICAgICAgICBpZiAoaGlqYXMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGhpamFzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVzY0hpamEgPSBtYXBlYXJOb2RvKGhpamFzW2tleSBhcyBJZFVuaWRhZEFuYWxpc2lzXSEpO1xuICAgICAgICAgICAgICAgIGRlc2NIaWphLmZvckVhY2goKGQpID0+IGRlc2NlbmRpZW50ZXMuYWRkKGQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kbz8udW5pZGFkX2FuYWxpc2lzKSB7XG4gICAgICAgICAgICBtYXBhIS5zZXQobm9kby51bmlkYWRfYW5hbGlzaXMsIGRlc2NlbmRpZW50ZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkZXNjZW5kaWVudGVzO1xuICAgIH1cblxuICAgIG1hcGVhck5vZG8odWFSYWl6KTtcbiAgICBjYWNoZURpY2Npb25hcmlvUnV0YXMuc2V0KHVhUmFpeiwgbWFwYSk7XG4gICAgcmV0dXJuIG1hcGE7XG59XG5cbmZ1bmN0aW9uIGl0ZW1DdW1wbGVDb25kaWNpb248VCBleHRlbmRzIFRpcG9Db25kaWNpb24+KFxuICAgIGl0ZW06IE1hcGVvVGlwb0l0ZW1bVF0sXG4gICAgcmVzcHVlc3RhczogUmVzcHVlc3RhcyxcbiAgICBlc3RyYXRlZ2lhOiB0eXBlb2YgZXN0cmF0ZWdpYXNDb25kaWNpb25bVF0sXG4gICAgZXZhbHVhckV4cHJlc2lvbjogRXZhbHVhZG9yRXhwcmVzaW9uIHwgdW5kZWZpbmVkXG4pOiBib29sZWFuIHtcbiAgICBjb25zdCBjb25kaWNpb24gPSBlc3RyYXRlZ2lhLmdldENvbmRpY2lvbihpdGVtKTtcbiAgICBpZiAoY29uZGljaW9uICE9PSBudWxsKSB7XG4gICAgICAgIGlmICghZXZhbHVhckV4cHJlc2lvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTZSByZXF1aWVyZSBldmFsdWFyRXhwcmVzaW9uIHBhcmEgZXZhbHVhciB1bmEgY29uZGljaW9uIEpTJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGV2YWx1YXJFeHByZXNpb24oY29uZGljaW9uLCByZXNwdWVzdGFzKTtcbiAgICB9XG4gICAgY29uc3QgdmFyaWFibGUgPSBlc3RyYXRlZ2lhLmdldFZhcmlhYmxlKGl0ZW0pO1xuICAgIGNvbnN0IHZhbG9yID0gZXN0cmF0ZWdpYS5nZXRWYWxvcihpdGVtKTtcbiAgICByZXR1cm4gISF2YXJpYWJsZSAmJiB2YXJpYWJsZSBpbiByZXNwdWVzdGFzICYmIHJlc3B1ZXN0YXNbdmFyaWFibGUgYXMgSWRWYXJpYWJsZV0gPT0gdmFsb3I7XG59XG5cbmZ1bmN0aW9uIGZ1c2lvbmFyUmVzcHVlc3Rhc1BsYW5hcyhjb250ZXh0b0FjdW11bGFkbzogUmVzcHVlc3RhcywgcmVzcHVlc3RhczogUmVzcHVlc3Rhcyk6IFJlc3B1ZXN0YXMge1xuICAgIGNvbnN0IHJlczogUmVzcHVlc3RhcyA9IE9iamVjdC5hc3NpZ24oe30sIGNvbnRleHRvQWN1bXVsYWRvKTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiByZXNwdWVzdGFzKSB7XG4gICAgICAgIGNvbnN0IHZhbCA9IHJlc3B1ZXN0YXNba2V5IGFzIElkVmFyaWFibGVdO1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsKSkge1xuICAgICAgICAgICAgcmVzW2tleSBhcyBJZFZhcmlhYmxlXSA9IHZhbCBhcyBWYWxvcjtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuXG50eXBlIFJlc3VsdGFkb0luc3RhbmNpYXMgPSB7XG4gICAgY29tcGxldGE6IGJvb2xlYW47XG4gICAgaW5zdGFuY2lhczogUmVzcHVlc3Rhc1tdO1xufTtcblxuLyoqXG4gKiBSZWNvbGVjdGEgZWwgY29udGV4dG8gY29tcGxldG8gZGUgVE9EQVMgbGFzIGluc3RhbmNpYXMgZGUgdGFyZ2V0VWFOb21icmUgZW4gbGEgZW5jdWVzdGEuXG4gKiBVc2EgZWwgZGljY2lvbmFyaW8gcHJlY2FsY3VsYWRvIHBhcmEgZmlsdHJhciByYW1hcyBlbiBPKDEpIHNpbiBoYWNlciByZWN1cnNpw7NuIGlubmVjZXNhcmlhLlxuICovXG5mdW5jdGlvbiBvYnRlbmVyVG9kYXNMYXNJbnN0YW5jaWFzRGVVYShcbiAgICB1bmlkYWRBbmFsaXNpczogVW5pZGFkQW5hbGlzaXMsXG4gICAgcmVzcHVlc3RhczogUmVzcHVlc3RhcyxcbiAgICB0YXJnZXRVYU5vbWJyZTogc3RyaW5nLFxuICAgIGRpY2Npb25hcmlvUnV0YXM6IE1hcDxzdHJpbmcsIFNldDxzdHJpbmc+PixcbiAgICBjb250ZXh0b0FjdW11bGFkbyA9IHt9IGFzIFJlc3B1ZXN0YXNcbik6IFJlc3VsdGFkb0luc3RhbmNpYXMge1xuICAgIGNvbnN0IGNvbnRleHRvQWN0dWFsID0gZnVzaW9uYXJSZXNwdWVzdGFzUGxhbmFzKGNvbnRleHRvQWN1bXVsYWRvLCByZXNwdWVzdGFzKTtcblxuICAgIGlmICh1bmlkYWRBbmFsaXNpcz8udW5pZGFkX2FuYWxpc2lzID09PSB0YXJnZXRVYU5vbWJyZSkge1xuICAgICAgICByZXR1cm4geyBjb21wbGV0YTogdHJ1ZSwgaW5zdGFuY2lhczogW2NvbnRleHRvQWN0dWFsXSB9O1xuICAgIH1cblxuICAgIGNvbnN0IGhpamFzID0gdW5pZGFkQW5hbGlzaXM/LmhpamFzO1xuICAgIGlmICghaGlqYXMpIHtcbiAgICAgICAgcmV0dXJuIHsgY29tcGxldGE6IGZhbHNlLCBpbnN0YW5jaWFzOiBbXSB9O1xuICAgIH1cblxuICAgIGNvbnN0IGluc3RhbmNpYXNSZXN1bHRhbnRlczogUmVzcHVlc3Rhc1tdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGtleSBpbiBoaWphcykge1xuICAgICAgICBjb25zdCB1YUhpamEgPSBoaWphc1trZXkgYXMgSWRVbmlkYWRBbmFsaXNpc107XG4gICAgICAgIGNvbnN0IG5vbWJyZVVhSGlqYSA9IHVhSGlqYT8udW5pZGFkX2FuYWxpc2lzO1xuICAgICAgICBpZiAoIW5vbWJyZVVhSGlqYSkgY29udGludWU7XG5cbiAgICAgICAgLy8gQ09OU1VMVEEgRElDQ0lPTkFSSU8gTygxKTogwr9Fc3RhIHJhbWEgY29udGllbmUgYSBsYSBVQSBxdWUgYnVzY2Ftb3M/XG4gICAgICAgIGNvbnN0IGRlc2NlbmRpZW50ZXNEZUhpamEgPSBkaWNjaW9uYXJpb1J1dGFzLmdldChub21icmVVYUhpamEpO1xuICAgICAgICBpZiAoIWRlc2NlbmRpZW50ZXNEZUhpamEgfHwgIWRlc2NlbmRpZW50ZXNEZUhpamEuaGFzKHRhcmdldFVhTm9tYnJlKSkge1xuICAgICAgICAgICAgY29udGludWU7IC8vIElnbm9yYSByYW1hcyBjb21vICd2aXNpdGFzJyBpbnN0YW50w6FuZWFtZW50ZVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXJyZWdsb0hpamFzID0gcmVzcHVlc3Rhc1tub21icmVVYUhpamEgYXMgSWRWYXJpYWJsZV07XG5cbiAgICAgICAgLy8gSW50ZWdyaWRhZCBlc3RydWN0dXJhbDogcmFtYSB2w6FsaWRhIHBlcm8gc2luIGFycmF5IG8gdmFjw61vXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShhcnJlZ2xvSGlqYXMpIHx8IGFycmVnbG9IaWphcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB7IGNvbXBsZXRhOiBmYWxzZSwgaW5zdGFuY2lhczogW10gfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyZWdsb0hpamFzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCByZXNwdWVzdGFzSGlqYSA9IGFycmVnbG9IaWphc1tpXSBhcyBSZXNwdWVzdGFzO1xuICAgICAgICAgICAgY29uc3QgcmVzID0gb2J0ZW5lclRvZGFzTGFzSW5zdGFuY2lhc0RlVWEoXG4gICAgICAgICAgICAgICAgdWFIaWphLFxuICAgICAgICAgICAgICAgIHJlc3B1ZXN0YXNIaWphLFxuICAgICAgICAgICAgICAgIHRhcmdldFVhTm9tYnJlLFxuICAgICAgICAgICAgICAgIGRpY2Npb25hcmlvUnV0YXMsXG4gICAgICAgICAgICAgICAgY29udGV4dG9BY3R1YWxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoIXJlcy5jb21wbGV0YSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IGNvbXBsZXRhOiBmYWxzZSwgaW5zdGFuY2lhczogW10gfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgcmVzLmluc3RhbmNpYXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICBpbnN0YW5jaWFzUmVzdWx0YW50ZXMucHVzaChyZXMuaW5zdGFuY2lhc1tqXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBjb21wbGV0YTogaW5zdGFuY2lhc1Jlc3VsdGFudGVzLmxlbmd0aCA+IDAsXG4gICAgICAgIGluc3RhbmNpYXM6IGluc3RhbmNpYXNSZXN1bHRhbnRlcyxcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBidXNjYXJSZWN1cnNpdm88VCBleHRlbmRzIFRpcG9Db25kaWNpb24+KFxuICAgIHVhUmFpejogVW5pZGFkQW5hbGlzaXMsXG4gICAgcmVzcHVlc3Rhc1JhaXo6IFJlc3B1ZXN0YXMsXG4gICAgdW5pZGFkQW5hbGlzaXNBY3R1YWw6IFVuaWRhZEFuYWxpc2lzLFxuICAgIHJlc3B1ZXN0YXNBY3R1YWxlczogUmVzcHVlc3RhcyxcbiAgICBsaXN0YU9yZGVuYWRhOiBNYXBlb1RpcG9JdGVtW1RdW10sXG4gICAgdGlwbzogVCxcbiAgICB0YXJlYTogc3RyaW5nLFxuICAgIGV2YWx1YXJFeHByZXNpb246IEV2YWx1YWRvckV4cHJlc2lvbiB8IHVuZGVmaW5lZCxcbiAgICBkaWNjaW9uYXJpb1J1dGFzOiBNYXA8c3RyaW5nLCBTZXQ8c3RyaW5nPj5cbik6IFJlc3VsdGFkb0J1c3F1ZWRhIHtcblxuICAgIGNvbnN0IGVzdHJhdGVnaWEgPSBlc3RyYXRlZ2lhc0NvbmRpY2lvblt0aXBvXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdGFPcmRlbmFkYS5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBpdGVtID0gbGlzdGFPcmRlbmFkYVtpXTtcbiAgICAgICAgY29uc3QgaXRlbVRhcmVhID0gZXN0cmF0ZWdpYS5nZXRUYXJlYShpdGVtKTtcbiAgICAgICAgaWYgKGl0ZW1UYXJlYSAmJiBpdGVtVGFyZWEgIT09IHRhcmVhKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpdGVtQ3VtcGxlQ29uZGljaW9uKGl0ZW0sIHJlc3B1ZXN0YXNBY3R1YWxlcywgZXN0cmF0ZWdpYSwgZXZhbHVhckV4cHJlc2lvbikpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdGFkbyA9IGVzdHJhdGVnaWEuZ2V0UmVzdWx0YWRvKGl0ZW0pO1xuICAgICAgICAgICAgY29uc3QgZXNSZWFQb3NpdGl2YSA9ICh0aXBvID09PSAncmVhJyB8fCB0aXBvID09PSAncmVhX3N1cCcpICYmIHJlc3VsdGFkbyA9PT0gdHJ1ZTtcblxuICAgICAgICAgICAgaWYgKGVzUmVhUG9zaXRpdmEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBub21icmVVYUFjdHVhbCA9IHVuaWRhZEFuYWxpc2lzQWN0dWFsPy51bmlkYWRfYW5hbGlzaXM7XG4gICAgICAgICAgICAgICAgaWYgKG5vbWJyZVVhQWN0dWFsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc0luc3RhbmNpYXMgPSBvYnRlbmVyVG9kYXNMYXNJbnN0YW5jaWFzRGVVYShcbiAgICAgICAgICAgICAgICAgICAgICAgIHVhUmFpeixcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3B1ZXN0YXNSYWl6LFxuICAgICAgICAgICAgICAgICAgICAgICAgbm9tYnJlVWFBY3R1YWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBkaWNjaW9uYXJpb1J1dGFzXG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXNJbnN0YW5jaWFzLmNvbXBsZXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNJbnN0YW5jaWFzLmluc3RhbmNpYXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRvZGFzQ3VtcGxlbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IHJlc0luc3RhbmNpYXMuaW5zdGFuY2lhcy5sZW5ndGg7IGsrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXRlbUN1bXBsZUNvbmRpY2lvbihpdGVtLCByZXNJbnN0YW5jaWFzLmluc3RhbmNpYXNba10sIGVzdHJhdGVnaWEsIGV2YWx1YXJFeHByZXNpb24pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZGFzQ3VtcGxlbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdG9kYXNDdW1wbGVuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgY29kaWdvOiBlc3RyYXRlZ2lhLmdldENvZGlnbyhpdGVtKSxcbiAgICAgICAgICAgICAgICByZXN1bHRhZG8sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaGlqYXMgPSB1bmlkYWRBbmFsaXNpc0FjdHVhbD8uaGlqYXM7XG4gICAgaWYgKGhpamFzKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGhpamFzKSB7XG4gICAgICAgICAgICBjb25zdCB1YUhpamEgPSBoaWphc1trZXkgYXMgSWRVbmlkYWRBbmFsaXNpc107XG4gICAgICAgICAgICBjb25zdCBub21icmVVYUhpamEgPSB1YUhpamE/LnVuaWRhZF9hbmFsaXNpcztcbiAgICAgICAgICAgIGlmIChub21icmVVYUhpamEgJiYgQXJyYXkuaXNBcnJheShyZXNwdWVzdGFzQWN0dWFsZXNbbm9tYnJlVWFIaWphIGFzIElkVmFyaWFibGVdKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFycmVnbG9IaWphcyA9IHJlc3B1ZXN0YXNBY3R1YWxlc1tub21icmVVYUhpamEgYXMgSWRWYXJpYWJsZV0gYXMgdW5rbm93biBhcyBSZXNwdWVzdGFzW107XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJlZ2xvSGlqYXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzcHVlc3Rhc0hpamEgPSBhcnJlZ2xvSGlqYXNbaV07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IGJ1c2NhclJlY3Vyc2l2byhcbiAgICAgICAgICAgICAgICAgICAgICAgIHVhUmFpeixcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3B1ZXN0YXNSYWl6LFxuICAgICAgICAgICAgICAgICAgICAgICAgdWFIaWphLFxuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih7fSwgcmVzcHVlc3Rhc0FjdHVhbGVzLCByZXNwdWVzdGFzSGlqYSksXG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0YU9yZGVuYWRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGlwbyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmVhLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXZhbHVhckV4cHJlc2lvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpY2Npb25hcmlvUnV0YXNcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5jb2RpZ28gIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyBjb2RpZ286IG51bGwsIHJlc3VsdGFkbzogZmFsc2UgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1c2NhclJlYU5vUmVhRW5SZXNwdWVzdGFzPFQgZXh0ZW5kcyBUaXBvQ29uZGljaW9uPihcbiAgICB1bmlkYWRBbmFsaXNpczogVW5pZGFkQW5hbGlzaXMsXG4gICAgcmVzcHVlc3RhczogUmVzcHVlc3RhcyxcbiAgICBsaXN0YTogTWFwZW9UaXBvSXRlbVtUXVtdLFxuICAgIHRpcG86IFQsXG4gICAgdGFyZWE6IHN0cmluZyxcbiAgICBldmFsdWFyRXhwcmVzaW9uPzogRXZhbHVhZG9yRXhwcmVzaW9uXG4pOiBSZXN1bHRhZG9CdXNxdWVkYSB7XG5cbiAgICBpZiAoIWVzdHJhdGVnaWFzQ29uZGljaW9uW3RpcG9dKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVGlwbyBkZSBjb25kaWNpw7NuIGRlc2Nvbm9jaWRvOiAke3RpcG99YCk7XG4gICAgfVxuXG4gICAgLy8gT2J0aWVuZSBvIGNyZWEgZWwgZGljY2lvbmFyaW8gZGUgcnV0YXMgcGFyYSBsYSBlc3RydWN0dXJhIHJlY2liaWRhXG4gICAgY29uc3QgZGljY2lvbmFyaW9SdXRhcyA9IG9idGVuZXJEaWNjaW9uYXJpb1J1dGFzKHVuaWRhZEFuYWxpc2lzKTtcblxuICAgIGNvbnN0IGxpc3RhT3JkZW5hZGEgPSBbLi4ubGlzdGFdLnNvcnQoKGEsIGIpID0+IChhLm9yZGVuID8/IDApIC0gKGIub3JkZW4gPz8gMCkpO1xuICAgIHJldHVybiBidXNjYXJSZWN1cnNpdm8oXG4gICAgICAgIHVuaWRhZEFuYWxpc2lzLFxuICAgICAgICByZXNwdWVzdGFzLFxuICAgICAgICB1bmlkYWRBbmFsaXNpcyxcbiAgICAgICAgcmVzcHVlc3RhcyxcbiAgICAgICAgbGlzdGFPcmRlbmFkYSxcbiAgICAgICAgdGlwbyxcbiAgICAgICAgdGFyZWEsXG4gICAgICAgIGV2YWx1YXJFeHByZXNpb24sXG4gICAgICAgIGRpY2Npb25hcmlvUnV0YXNcbiAgICApO1xufSJdfQ==
@@ -3,7 +3,7 @@ export declare const helpersCasilleros: {
3
3
  div0err(numerador: number, denominador: number, pk: string): number;
4
4
  funs: {
5
5
  blanco(x: any): boolean;
6
- hoy(): any;
6
+ hoy(): string;
7
7
  fecha_valida(x: string): boolean;
8
8
  mesanio_valido(x: string): boolean;
9
9
  informado(x: any): boolean;
@@ -4,12 +4,13 @@
4
4
  if (v !== undefined) module.exports = v;
5
5
  }
6
6
  else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports"], factory);
7
+ define(["require", "exports", "best-globals"], factory);
8
8
  }
9
9
  })(function (require, exports) {
10
10
  "use strict";
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.helpersCasilleros = void 0;
13
+ const best_globals_1 = require("best-globals");
13
14
  exports.helpersCasilleros = {
14
15
  null2zero(posibleNull) {
15
16
  if (posibleNull == null) {
@@ -28,25 +29,18 @@
28
29
  return x !== 0 && !x;
29
30
  },
30
31
  hoy() {
31
- return date.today().toDmy();
32
+ return best_globals_1.date.today().toDmy();
32
33
  },
33
34
  fecha_valida(x) {
34
35
  var formato_valido = /^([1-9]|0[1-9]|[12]\d|3[01])\/([1-9]|0[1-9]|1[012])\/20\d\d$/.test(x);
35
- var xDate;
36
- var conversionOk;
37
- conversionOk = true;
38
- if (formato_valido) {
39
- const [d, m, y] = x.split('/');
40
- try {
41
- xDate = new Date(`${y}/${m}/${d}`);
42
- }
43
- catch (err) {
44
- conversionOk = false;
45
- }
36
+ if (!formato_valido) {
37
+ return false;
46
38
  }
47
- ;
39
+ const [d, m, y] = x.split('/').map(Number);
40
+ // new Date no falla con fechas inexistentes (31/02 pasa a 03/03), hay que verificar que no se corra
41
+ var xDate = new Date(y, m - 1, d);
48
42
  //faltaria validar que no sea una fecha futura y que sea una fecha en el rango del operativo
49
- return formato_valido && conversionOk;
43
+ return xDate.getFullYear() == y && xDate.getMonth() == m - 1 && xDate.getDate() == d;
50
44
  },
51
45
  mesanio_valido(x) {
52
46
  var formato_valido = /^([1-9]|0[1-9]|1[012])\/(19|20)\d\d$/.test(x);
@@ -72,10 +66,10 @@
72
66
  };
73
67
  var partesRealizacion = fechaRealizacionDDMMYYYY.split("/");
74
68
  //@ts-ignore las partes corresponden a una fecha válida
75
- var today = date.ymd(Number(partesRealizacion[2]), Number(partesRealizacion[1]), Number(partesRealizacion[0]));
69
+ var today = best_globals_1.date.ymd(Number(partesRealizacion[2]), Number(partesRealizacion[1]), Number(partesRealizacion[0]));
76
70
  var partesMesAnnio = mesAnnio.split('/');
77
71
  //@ts-ignore las partes corresponden a una fecha válida
78
- var nacimiento = date.ymd(Number(partesMesAnnio[1]), Number(partesMesAnnio[0]), 1);
72
+ var nacimiento = best_globals_1.date.ymd(Number(partesMesAnnio[1]), Number(partesMesAnnio[0]), 1);
79
73
  //@ts-ignore RealDate es Date y se puede restar
80
74
  var diferenciaMeses = mesesDiferencia(nacimiento, today);
81
75
  var edadDecimales = diferenciaMeses / 12; //ej 36.5
@@ -126,4 +120,4 @@
126
120
  }
127
121
  };
128
122
  });
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy1jYXNpbGxlcm9zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3VubG9nZ2VkL2hlbHBlcnMtY2FzaWxsZXJvcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFDYSxRQUFBLGlCQUFpQixHQUFHO1FBQzdCLFNBQVMsQ0FBQyxXQUFnQjtZQUN0QixJQUFJLFdBQVcsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDdEIsT0FBTyxDQUFDLENBQUM7WUFDYixDQUFDO1lBQ0QsT0FBTyxXQUFXLENBQUM7UUFDdkIsQ0FBQztRQUNELE9BQU8sQ0FBQyxTQUFpQixFQUFFLFdBQW1CLEVBQUUsRUFBVTtZQUN0RCxJQUFJLFdBQVcsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLEdBQUcsRUFBRSxHQUFHLHdCQUF3QixHQUFHLFNBQVMsQ0FBQyxDQUFDO1lBQzdFLENBQUM7WUFDRCxPQUFPLFNBQVMsR0FBRyxXQUFXLENBQUM7UUFDbkMsQ0FBQztRQUNELElBQUksRUFBRTtZQUNGLE1BQU0sQ0FBQyxDQUFNO2dCQUNULE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtZQUN4QixDQUFDO1lBQ0QsR0FBRztnQkFDQyxPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtZQUMvQixDQUFDO1lBQ0QsWUFBWSxDQUFDLENBQVM7Z0JBQ2xCLElBQUksY0FBYyxHQUFHLDhEQUE4RCxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtnQkFDM0YsSUFBSSxLQUFXLENBQUM7Z0JBQ2hCLElBQUksWUFBcUIsQ0FBQztnQkFDMUIsWUFBWSxHQUFHLElBQUksQ0FBQztnQkFDcEIsSUFBSSxjQUFjLEVBQUUsQ0FBQztvQkFDakIsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxD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QUFJLFlBQVk7b0JBQ2pELGFBQWEsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDLG1CQUFtQjtpQkFDaEQsQ0FBQTtZQUNMLENBQUM7WUFDRCxxSUFBcUk7WUFDckksMklBQTJJO1lBQzNJLCtGQUErRjtZQUMvRixHQUFHO1lBQ0g7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCQW1DSTtTQUNQO0tBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5leHBvcnQgY29uc3QgaGVscGVyc0Nhc2lsbGVyb3MgPSB7XHJcbiAgICBudWxsMnplcm8ocG9zaWJsZU51bGw6IGFueSkge1xyXG4gICAgICAgIGlmIChwb3NpYmxlTnVsbCA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcG9zaWJsZU51bGw7XHJcbiAgICB9LFxyXG4gICAgZGl2MGVycihudW1lcmFkb3I6IG51bWJlciwgZGVub21pbmFkb3I6IG51bWJlciwgcGs6IHN0cmluZykge1xyXG4gICAgICAgIGlmIChkZW5vbWluYWRvciA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkVycm9yIGVuIFwiICsgcGsgKyBcIiBkaXZpc2lvbiBwb3IgY2VybyBkZSBcIiArIG51bWVyYWRvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudW1lcmFkb3IgLyBkZW5vbWluYWRvcjtcclxuICAgIH0sXHJcbiAgICBmdW5zOiB7XHJcbiAgICAgICAgYmxhbmNvKHg6IGFueSkge1xyXG4gICAgICAgICAgICByZXR1cm4geCAhPT0gMCAmJiAheFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgaG95KCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZGF0ZS50b2RheSgpLnRvRG15KClcclxuICAgICAgICB9LFxyXG4gICAgICAgIGZlY2hhX3ZhbGlkYSh4OiBzdHJpbmcpIHtcclxuICAgICAgICAgICAgdmFyIGZvcm1hdG9fdmFsaWRvID0gL14oWzEtOV18MFsxLTldfFsxMl1cXGR8M1swMV0pXFwvKFsxLTldfDBbMS05XXwxWzAxMl0pXFwvMjBcXGRcXGQkLy50ZXN0KHgpXHJcbiAgICAgICAgICAgIHZhciB4RGF0ZTogRGF0ZTtcclxuICAgICAgICAgICAgdmFyIGNvbnZlcnNpb25PazogYm9vbGVhbjtcclxuICAgICAgICAgICAgY29udmVyc2lvbk9rID0gdHJ1ZTtcclxuICAgICAgICAgICAgaWYgKGZvcm1hdG9fdmFsaWRvKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBbZCwgbSwgeV0gPSB4LnNwbGl0KCcvJyk7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIHhEYXRlID0gbmV3IERhdGUoYCR7eX0vJHttfS8ke2R9YCk7XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb252ZXJzaW9uT2sgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgLy9mYWx0YXJpYSB2YWxpZGFyIHF1ZSBubyBzZWEgdW5hIGZlY2hhIGZ1dHVyYSB5IHF1ZSBzZWEgdW5hIGZlY2hhIGVuIGVsIHJhbmdvIGRlbCBvcGVyYXRpdm9cclxuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdG9fdmFsaWRvICYmIGNvbnZlcnNpb25Pa1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbWVzYW5pb192YWxpZG8oeDogc3RyaW5nKSB7XHJcbiAgICAgICAgICAgIHZhciBmb3JtYXRvX3ZhbGlkbyA9IC9eKFsxLTldfDBbMS05XXwxWzAxMl0pXFwvKDE5fDIwKVxcZFxcZCQvLnRlc3QoeClcclxuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdG9fdmFsaWRvXHJcbiAgICAgICAgfSxcclxuICAgICAgICBpbmZvcm1hZG8oeDogYW55KSB7XHJcbiAgICAgICAgICAgIHJldHVybiB4ICE9PSB1bmRlZmluZWQgJiYgeCAhPT0gbnVsbCAmJiAoISh4IGluc3RhbmNlb2YgQXJyYXkpIHx8IHgubGVuZ3RoICE9PSAwKVxyXG4gICAgICAgICAgICAgICAgJiYgKCEoeCBpbnN0YW5jZW9mIE9iamVjdCkgfHwgT2JqZWN0LmtleXMoeCkubGVuZ3RoICE9PSAwKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbnNuYyh4OiBhbnkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHggPT0gLTlcclxuICAgICAgICB9LFxyXG4gICAgICAgIHBhcih4OiBudW1iZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHggJSAyID09IDBcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVkYWRfbWVzX2FubmlvX3ZhbGlkbyhlZGFkOiBudW1iZXIsIG1lc0FubmlvOiBzdHJpbmcsIGZlY2hhUmVhbGl6YWNpb25ERE1NWVlZWTogc3RyaW5nKSB7XHJcbiAgICAgICAgICAgIHZhciBtZXNlc0RpZmVyZW5jaWEgPSAoZDE6IERhdGUsIGQyOiBEYXRlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB2YXIgbW9udGhzO1xyXG4gICAgICAgICAgICAgICAgbW9udGhzID0gKGQyLmdldEZ1bGxZZWFyKCkgLSBkMS5nZXRGdWxsWWVhcigpKSAqIDEyO1xyXG4gICAgICAgICAgICAgICAgbW9udGhzIC09IGQxLmdldE1vbnRoKCk7XHJcbiAgICAgICAgICAgICAgICBtb250aHMgKz0gZDIuZ2V0TW9udGgoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBtb250aHMgPD0gMCA/IDAgOiBtb250aHM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdmFyIHBhcnRlc1JlYWxpemFjaW9uID0gZmVjaGFSZWFsaXphY2lvbkRETU1ZWVlZLnNwbGl0KFwiL1wiKTtcclxuICAgICAgICAgICAgLy9AdHMtaWdub3JlIGxhcyBwYXJ0ZXMgY29ycmVzcG9uZGVuIGEgdW5hIGZlY2hhIHbDoWxpZGFcclxuICAgICAgICAgICAgdmFyIHRvZGF5ID0gZGF0ZS55bWQoTnVtYmVyKHBhcnRlc1JlYWxpemFjaW9uWzJdKSwgTnVtYmVyKHBhcnRlc1JlYWxpemFjaW9uWzFdKSwgTnVtYmVyKHBhcnRlc1JlYWxpemFjaW9uWzBdKSlcclxuICAgICAgICAgICAgdmFyIHBhcnRlc01lc0FubmlvID0gbWVzQW5uaW8uc3BsaXQoJy8nKTtcclxuICAgICAgICAgICAgLy9AdHMtaWdub3JlIGxhcyBwYXJ0ZXMgY29ycmVzcG9uZGVuIGEgdW5hIGZlY2hhIHbDoWxpZGFcclxuICAgICAgICAgICAgdmFyIG5hY2ltaWVudG8gPSBkYXRlLnltZChOdW1iZXIocGFydGVzTWVzQW5uaW9bMV0pLCBOdW1iZXIocGFydGVzTWVzQW5uaW9bMF0pLCAxKVxyXG4gICAgICAgICAgICAvL0B0cy1pZ25vcmUgUmVhbERhdGUgZXMgRGF0ZSB5IHNlIHB1ZWRlIHJlc3RhclxyXG4gICAgICAgICAgICB2YXIgZGlmZXJlbmNpYU1lc2VzID0gbWVzZXNEaWZlcmVuY2lhKG5hY2ltaWVudG8sIHRvZGF5KTtcclxuICAgICAgICAgICAgdmFyIGVkYWREZWNpbWFsZXMgPSBkaWZlcmVuY2lhTWVzZXMgLyAxMjsgLy9laiAzNi41XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICBNYXRoLmZsb29yKGVkYWREZWNpbWFsZXMpID09IGVkYWQgfHwgLy9taXNtYSBlZGFkXHJcbiAgICAgICAgICAgICAgICBlZGFkRGVjaW1hbGVzID09IGVkYWQgKyAxIC8vbWVzIGRlIHRvbGVyYW5jaWFcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy9jb3BpYXJfY2FtcG9fdWFfcmFtYShyZXNwdWVzdGFzT3JpZ2VuOlJlc3B1ZXN0YXNbXSwgcG9zaWNpb246bnVtYmVyLCB2YXJpYWJsZU9yaWdlbjogSWRWYXJpYWJsZSwgY2FtaW5vOnN0cmluZywgY29uZGljaW9uOmJvb2xlYW4pe1xyXG4gICAgICAgIC8vICAgIHJldHVybiBjb25kaWNpb24/KHJlc3B1ZXN0YXNPcmlnZW4gJiYgcmVzcHVlc3Rhc09yaWdlbltwb3NpY2lvbi0xXSAmJiByZXNwdWVzdGFzT3JpZ2VuW3Bvc2ljaW9uLTFdW2Ake2NhbWlub31gXVt2YXJpYWJsZU9yaWdlbl0pOm51bGxcclxuICAgICAgICAvLyAgICByZXR1cm4gY29uZGljaW9uP2V2YWwoYHJlc3B1ZXN0YXNPcmlnZW5bJHtwb3NpY2lvbi0xfV0uYCtjYW1pbm8rJy4nK3ZhcmlhYmxlT3JpZ2VuKTpudWxsO1xyXG4gICAgICAgIC8vfVxyXG4gICAgICAgIC8qXHJcbiAgICAgICAgZGJvOntcclxuICAgICAgICAgICAgZGF0b0ZhbWlsaWFyKGVuY3U6c3RyaW5nLGhvZzpudW1iZXIscGVyOm51bWJlciwgZGF0bzpzdHJpbmcpe1xyXG4gICAgICAgICAgICAgICAgdmFyIHhwZXJzb25hcz1wZXJzb25hcztcclxuICAgICAgICAgICAgICAgIHJldHVybiBlbmN1PT1lbmMgJiYgaG9nPT1ob2dhciAmJiBpbmZvcm1hZG8oeHBlcnNvbmFzKSAmJiBwZXI8PSB4cGVyc29uYXMubGVuZ3RoICYmIHBlcj49MSAmJiAhIXhwZXJzb25hc1twZXItMV1bZGF0b10/IHhwZXJzb25hc1twZXItMV1bZGF0b106bnVsbFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlZGFkZmFtaWxpYXIoZW5jdTpzdHJpbmcsaG9nOm51bWJlcixwZXI6bnVtYmVyKXtcclxuICAgICAgICAgICAgICAgIHZhciB4cGVyc29uYXM9cGVyc29uYXM7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0b0ZhbWlsaWFyKGVuY3U6c3RyaW5nLGhvZzpudW1iZXIscGVyOm51bWJlciwnZWRhZCcpXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGV4aXN0ZWluZGl2aWR1YWwoZW5jdTpzdHJpbmcsaG9nOm51bWJlcixwZXI6bnVtYmVyKXtcclxuICAgICAgICAgICAgICAgIHZhciB4cGVyc29uYXM9cGVyc29uYXM7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZW5jdT09ZW5jICYmIGhvZz09aG9nYXIgJiYgISFwZXJzb25hcyAmJiBwZXI8PSBwZXJzb25hcy5sZW5ndGggJiYgcGVyPj0xICYmICEhcGVyc29uYXNbcGVyLTFdWydlbnRyZWFpbmQnXVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBleGlzdGVtaWVtYnJvKGVuY3U6c3RyaW5nLGhvZzpudW1iZXIscGVyOm51bWJlcil7XHJcbiAgICAgICAgICAgICAgICB2YXIgeHBlcnNvbmFzPXBlcnNvbmFzO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVuY3U9PWVuYyAmJiBob2c9PWhvZ2FyICYmICEhcGVyc29uYXMgJiYgcGVyPD0gcGVyc29uYXMubGVuZ3RoICYmIHBlcj49MVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBucm9jb255dWdlcyhlbmN1OnN0cmluZyxob2c6bnVtYmVyKXtcclxuICAgICAgICAgICAgICAgIHZhciB4cGVyc29uYXM9cGVyc29uYXNcclxuICAgICAgICAgICAgICAgIHJldHVybiB4cGVyc29uYXMuZmlsdGVyKCBwZXItPnBlci5wND09MikubGVuZ3RoXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG5yb2plZmVzKGVuY3U6c3RyaW5nLGhvZzpudW1iZXIscGVyOm51bWJlcil7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcGVyc29uYXMuZmlsdGVyKCBwZXItPnBlci5wND09MSkubGVuZ3RoXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHBhcmVudGVzY29mYW1pbGlhcihlbmN1OnN0cmluZyxob2c6bnVtYmVyLHBlcjpudW1iZXIpe1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdG9GYW1pbGlhcihlbmN1OnN0cmluZyxob2c6bnVtYmVyLHBlcjpudW1iZXIsJ3A0JylcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc2V4b2ZhbWlsaWFyKGVuY3U6c3RyaW5nLGhvZzpudW1iZXIscGVyOm51bWJlcil7XHJcbiAgICAgICAgICAgICAgICB2YXIgeHBlcnNvbmFzPXBlcnNvbmFzO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVuY3U9PWVuYyAmJiBob2c9PWhvZ2FyICYmICEheHBlcnNvbmFzICYmIHBlcjw9IHhwZXJzb25hcy5sZW5ndGggJiYgcGVyPj0xICYmICEheHBlcnNvbmFzW3Blci0xXS5zZXhvPyB4cGVyc29uYXNbcGVyLTFdWydzZXhvJ106bnVsbFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzaXRjb255amVmZShlbmN1OnN0cmluZyxob2c6bnVtYmVyKXtcclxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRvRmFtaWxpYXIoZW5jdTpzdHJpbmcsaG9nOm51bWJlciwxLCdwNScpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9ICovXHJcbiAgICB9XHJcbn07Il19
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy1jYXNpbGxlcm9zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3VubG9nZ2VkL2hlbHBlcnMtY2FzaWxsZXJvcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFDQSwrQ0FBb0M7SUFFdkIsUUFBQSxpQkFBaUIsR0FBRztRQUM3QixTQUFTLENBQUMsV0FBZ0I7WUFDdEIsSUFBSSxXQUFXLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ3RCLE9BQU8sQ0FBQyxDQUFDO1lBQ2IsQ0FBQztZQUNELE9BQU8sV0FBVyxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxPQUFPLENBQUMsU0FBaUIsRUFBRSxXQUFtQixFQUFFLEVBQVU7WUFDdEQsSUFBSSxXQUFXLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ25CLE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxHQUFHLEVBQUUsR0FBRyx3QkFBd0IsR0FBRyxTQUFTLENBQUMsQ0FBQztZQUM3RSxDQUFDO1lBQ0QsT0FBTyxTQUFTLEdBQUcsV0FBVyxDQUFDO1FBQ25DLENBQUM7UUFDRCxJQUFJLEVBQUU7WUFDRixNQUFNLENBQUMsQ0FBTTtnQkFDVCxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7WUFDeEIsQ0FBQztZQUNELEdBQUc7Z0JBQ0MsT0FBTyxtQkFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFBO1lBQy9CLENBQUM7WUFDRCxZQUFZLENBQUMsQ0FBUztnQkFDbEIsSUFBSSxjQUFjLEdBQUcsOERBQThELENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO2dCQUMzRixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ2xCLE9BQU8sS0FBSyxDQUFDO2dCQUNqQixDQUFDO2dCQUNELE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxD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SSxJQUFJLElBQUksWUFBWTtvQkFDakQsYUFBYSxJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsbUJBQW1CO2lCQUNoRCxDQUFBO1lBQ0wsQ0FBQztZQUNELHFJQUFxSTtZQUNySSwySUFBMkk7WUFDM0ksK0ZBQStGO1lBQy9GLEdBQUc7WUFDSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0JBbUNJO1NBQ1A7S0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBkYXRlIH0gZnJvbSBcImJlc3QtZ2xvYmFsc1wiO1xuXG5leHBvcnQgY29uc3QgaGVscGVyc0Nhc2lsbGVyb3MgPSB7XG4gICAgbnVsbDJ6ZXJvKHBvc2libGVOdWxsOiBhbnkpIHtcbiAgICAgICAgaWYgKHBvc2libGVOdWxsID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwb3NpYmxlTnVsbDtcbiAgICB9LFxuICAgIGRpdjBlcnIobnVtZXJhZG9yOiBudW1iZXIsIGRlbm9taW5hZG9yOiBudW1iZXIsIHBrOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKGRlbm9taW5hZG9yID09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkVycm9yIGVuIFwiICsgcGsgKyBcIiBkaXZpc2lvbiBwb3IgY2VybyBkZSBcIiArIG51bWVyYWRvcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bWVyYWRvciAvIGRlbm9taW5hZG9yO1xuICAgIH0sXG4gICAgZnVuczoge1xuICAgICAgICBibGFuY28oeDogYW55KSB7XG4gICAgICAgICAgICByZXR1cm4geCAhPT0gMCAmJiAheFxuICAgICAgICB9LFxuICAgICAgICBob3koKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0ZS50b2RheSgpLnRvRG15KClcbiAgICAgICAgfSxcbiAgICAgICAgZmVjaGFfdmFsaWRhKHg6IHN0cmluZykge1xuICAgICAgICAgICAgdmFyIGZvcm1hdG9fdmFsaWRvID0gL14oWzEtOV18MFsxLTldfFsxMl1cXGR8M1swMV0pXFwvKFsxLTldfDBbMS05XXwxWzAxMl0pXFwvMjBcXGRcXGQkLy50ZXN0KHgpXG4gICAgICAgICAgICBpZiAoIWZvcm1hdG9fdmFsaWRvKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgW2QsIG0sIHldID0geC5zcGxpdCgnLycpLm1hcChOdW1iZXIpO1xuICAgICAgICAgICAgLy8gbmV3IERhdGUgbm8gZmFsbGEgY29uIGZlY2hhcyBpbmV4aXN0ZW50ZXMgKDMxLzAyIHBhc2EgYSAwMy8wMyksIGhheSBxdWUgdmVyaWZpY2FyIHF1ZSBubyBzZSBjb3JyYVxuICAgICAgICAgICAgdmFyIHhEYXRlID0gbmV3IERhdGUoeSwgbSAtIDEsIGQpO1xuICAgICAgICAgICAgLy9mYWx0YXJpYSB2YWxpZGFyIHF1ZSBubyBzZWEgdW5hIGZlY2hhIGZ1dHVyYSB5IHF1ZSBzZWEgdW5hIGZlY2hhIGVuIGVsIHJhbmdvIGRlbCBvcGVyYXRpdm9cbiAgICAgICAgICAgIHJldHVybiB4RGF0ZS5nZXRGdWxsWWVhcigpID09IHkgJiYgeERhdGUuZ2V0TW9udGgoKSA9PSBtIC0gMSAmJiB4RGF0ZS5nZXREYXRlKCkgPT0gZFxuICAgICAgICB9LFxuICAgICAgICBtZXNhbmlvX3ZhbGlkbyh4OiBzdHJpbmcpIHtcbiAgICAgICAgICAgIHZhciBmb3JtYXRvX3ZhbGlkbyA9IC9eKFsxLTldfDBbMS05XXwxWzAxMl0pXFwvKDE5fDIwKVxcZFxcZCQvLnRlc3QoeClcbiAgICAgICAgICAgIHJldHVybiBmb3JtYXRvX3ZhbGlkb1xuICAgICAgICB9LFxuICAgICAgICBpbmZvcm1hZG8oeDogYW55KSB7XG4gICAgICAgICAgICByZXR1cm4geCAhPT0gdW5kZWZpbmVkICYmIHggIT09IG51bGwgJiYgKCEoeCBpbnN0YW5jZW9mIEFycmF5KSB8fCB4Lmxlbmd0aCAhPT0gMClcbiAgICAgICAgICAgICAgICAmJiAoISh4IGluc3RhbmNlb2YgT2JqZWN0KSB8fCBPYmplY3Qua2V5cyh4KS5sZW5ndGggIT09IDApXG4gICAgICAgIH0sXG4gICAgICAgIG5zbmMoeDogYW55KSB7XG4gICAgICAgICAgICByZXR1cm4geCA9PSAtOVxuICAgICAgICB9LFxuICAgICAgICBwYXIoeDogbnVtYmVyKSB7XG4gICAgICAgICAgICByZXR1cm4geCAlIDIgPT0gMFxuICAgICAgICB9LFxuICAgICAgICBlZGFkX21lc19hbm5pb192YWxpZG8oZWRhZDogbnVtYmVyLCBtZXNBbm5pbzogc3RyaW5nLCBmZWNoYVJlYWxpemFjaW9uRERNTVlZWVk6IHN0cmluZykge1xuICAgICAgICAgICAgdmFyIG1lc2VzRGlmZXJlbmNpYSA9IChkMTogRGF0ZSwgZDI6IERhdGUpID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgbW9udGhzO1xuICAgICAgICAgICAgICAgIG1vbnRocyA9IChkMi5nZXRGdWxsWWVhcigpIC0gZDEuZ2V0RnVsbFllYXIoKSkgKiAxMjtcbiAgICAgICAgICAgICAgICBtb250aHMgLT0gZDEuZ2V0TW9udGgoKTtcbiAgICAgICAgICAgICAgICBtb250aHMgKz0gZDIuZ2V0TW9udGgoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzIDw9IDAgPyAwIDogbW9udGhzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIHBhcnRlc1JlYWxpemFjaW9uID0gZmVjaGFSZWFsaXphY2lvbkRETU1ZWVlZLnNwbGl0KFwiL1wiKTtcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZSBsYXMgcGFydGVzIGNvcnJlc3BvbmRlbiBhIHVuYSBmZWNoYSB2w6FsaWRhXG4gICAgICAgICAgICB2YXIgdG9kYXkgPSBkYXRlLnltZChOdW1iZXIocGFydGVzUmVhbGl6YWNpb25bMl0pLCBOdW1iZXIocGFydGVzUmVhbGl6YWNpb25bMV0pLCBOdW1iZXIocGFydGVzUmVhbGl6YWNpb25bMF0pKVxuICAgICAgICAgICAgdmFyIHBhcnRlc01lc0FubmlvID0gbWVzQW5uaW8uc3BsaXQoJy8nKTtcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZSBsYXMgcGFydGVzIGNvcnJlc3BvbmRlbiBhIHVuYSBmZWNoYSB2w6FsaWRhXG4gICAgICAgICAgICB2YXIgbmFjaW1pZW50byA9IGRhdGUueW1kKE51bWJlcihwYXJ0ZXNNZXNBbm5pb1sxXSksIE51bWJlcihwYXJ0ZXNNZXNBbm5pb1swXSksIDEpXG4gICAgICAgICAgICAvL0B0cy1pZ25vcmUgUmVhbERhdGUgZXMgRGF0ZSB5IHNlIHB1ZWRlIHJlc3RhclxuICAgICAgICAgICAgdmFyIGRpZmVyZW5jaWFNZXNlcyA9IG1lc2VzRGlmZXJlbmNpYShuYWNpbWllbnRvLCB0b2RheSk7XG4gICAgICAgICAgICB2YXIgZWRhZERlY2ltYWxlcyA9IGRpZmVyZW5jaWFNZXNlcyAvIDEyOyAvL2VqIDM2LjVcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgTWF0aC5mbG9vcihlZGFkRGVjaW1hbGVzKSA9PSBlZGFkIHx8IC8vbWlzbWEgZWRhZFxuICAgICAgICAgICAgICAgIGVkYWREZWNpbWFsZXMgPT0gZWRhZCArIDEgLy9tZXMgZGUgdG9sZXJhbmNpYVxuICAgICAgICAgICAgKVxuICAgICAgICB9LFxuICAgICAgICAvL2NvcGlhcl9jYW1wb191YV9yYW1hKHJlc3B1ZXN0YXNPcmlnZW46UmVzcHVlc3Rhc1tdLCBwb3NpY2lvbjpudW1iZXIsIHZhcmlhYmxlT3JpZ2VuOiBJZFZhcmlhYmxlLCBjYW1pbm86c3RyaW5nLCBjb25kaWNpb246Ym9vbGVhbil7XG4gICAgICAgIC8vICAgIHJldHVybiBjb25kaWNpb24/KHJlc3B1ZXN0YXNPcmlnZW4gJiYgcmVzcHVlc3Rhc09yaWdlbltwb3NpY2lvbi0xXSAmJiByZXNwdWVzdGFzT3JpZ2VuW3Bvc2ljaW9uLTFdW2Ake2NhbWlub31gXVt2YXJpYWJsZU9yaWdlbl0pOm51bGxcbiAgICAgICAgLy8gICAgcmV0dXJuIGNvbmRpY2lvbj9ldmFsKGByZXNwdWVzdGFzT3JpZ2VuWyR7cG9zaWNpb24tMX1dLmArY2FtaW5vKycuJyt2YXJpYWJsZU9yaWdlbik6bnVsbDtcbiAgICAgICAgLy99XG4gICAgICAgIC8qXG4gICAgICAgIGRibzp7XG4gICAgICAgICAgICBkYXRvRmFtaWxpYXIoZW5jdTpzdHJpbmcsaG9nOm51bWJlcixwZXI6bnVtYmVyLCBkYXRvOnN0cmluZyl7XG4gICAgICAgICAgICAgICAgdmFyIHhwZXJzb25hcz1wZXJzb25hcztcbiAgICAgICAgICAgICAgICByZXR1cm4gZW5jdT09ZW5jICYmIGhvZz09aG9nYXIgJiYgaW5mb3JtYWRvKHhwZXJzb25hcykgJiYgcGVyPD0geHBlcnNvbmFzLmxlbmd0aCAmJiBwZXI+PTEgJiYgISF4cGVyc29uYXNbcGVyLTFdW2RhdG9dPyB4cGVyc29uYXNbcGVyLTFdW2RhdG9dOm51bGxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlZGFkZmFtaWxpYXIoZW5jdTpzdHJpbmcsaG9nOm51bWJlcixwZXI6bnVtYmVyKXtcbiAgICAgICAgICAgICAgICB2YXIgeHBlcnNvbmFzPXBlcnNvbmFzO1xuICAgICAgICAgICAgICAgIHJldHVybiBkYXRvRmFtaWxpYXIoZW5jdTpzdHJpbmcsaG9nOm51bWJlcixwZXI6bnVtYmVyLCdlZGFkJylcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBleGlzdGVpbmRpdmlkdWFsKGVuY3U6c3RyaW5nLGhvZzpudW1iZXIscGVyOm51bWJlcil7XG4gICAgICAgICAgICAgICAgdmFyIHhwZXJzb25hcz1wZXJzb25hcztcbiAgICAgICAgICAgICAgICByZXR1cm4gZW5jdT09ZW5jICYmIGhvZz09aG9nYXIgJiYgISFwZXJzb25hcyAmJiBwZXI8PSBwZXJzb25hcy5sZW5ndGggJiYgcGVyPj0xICYmICEhcGVyc29uYXNbcGVyLTFdWydlbnRyZWFpbmQnXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGV4aXN0ZW1pZW1icm8oZW5jdTpzdHJpbmcsaG9nOm51bWJlcixwZXI6bnVtYmVyKXtcbiAgICAgICAgICAgICAgICB2YXIgeHBlcnNvbmFzPXBlcnNvbmFzO1xuICAgICAgICAgICAgICAgIHJldHVybiBlbmN1PT1lbmMgJiYgaG9nPT1ob2dhciAmJiAhIXBlcnNvbmFzICYmIHBlcjw9IHBlcnNvbmFzLmxlbmd0aCAmJiBwZXI+PTFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBucm9jb255dWdlcyhlbmN1OnN0cmluZyxob2c6bnVtYmVyKXtcbiAgICAgICAgICAgICAgICB2YXIgeHBlcnNvbmFzPXBlcnNvbmFzXG4gICAgICAgICAgICAgICAgcmV0dXJuIHhwZXJzb25hcy5maWx0ZXIoIHBlci0+cGVyLnA0PT0yKS5sZW5ndGhcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBucm9qZWZlcyhlbmN1OnN0cmluZyxob2c6bnVtYmVyLHBlcjpudW1iZXIpe1xuICAgICAgICAgICAgICAgIHJldHVybiBwZXJzb25hcy5maWx0ZXIoIHBlci0+cGVyLnA0PT0xKS5sZW5ndGhcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwYXJlbnRlc2NvZmFtaWxpYXIoZW5jdTpzdHJpbmcsaG9nOm51bWJlcixwZXI6bnVtYmVyKXtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0b0ZhbWlsaWFyKGVuY3U6c3RyaW5nLGhvZzpudW1iZXIscGVyOm51bWJlciwncDQnKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNleG9mYW1pbGlhcihlbmN1OnN0cmluZyxob2c6bnVtYmVyLHBlcjpudW1iZXIpe1xuICAgICAgICAgICAgICAgIHZhciB4cGVyc29uYXM9cGVyc29uYXM7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVuY3U9PWVuYyAmJiBob2c9PWhvZ2FyICYmICEheHBlcnNvbmFzICYmIHBlcjw9IHhwZXJzb25hcy5sZW5ndGggJiYgcGVyPj0xICYmICEheHBlcnNvbmFzW3Blci0xXS5zZXhvPyB4cGVyc29uYXNbcGVyLTFdWydzZXhvJ106bnVsbFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNpdGNvbnlqZWZlKGVuY3U6c3RyaW5nLGhvZzpudW1iZXIpe1xuICAgICAgICAgICAgICAgIHJldHVybiBkYXRvRmFtaWxpYXIoZW5jdTpzdHJpbmcsaG9nOm51bWJlciwxLCdwNScpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gKi9cbiAgICB9XG59OyJdfQ==
@@ -0,0 +1,16 @@
1
+ import type { IdComodin, IdFormulario, IdVariable } from "./tipos";
2
+ export declare const REGEX_SPLIT_COMODINES: RegExp;
3
+ export declare const IS_TEM_PATTERN: RegExp;
4
+ export declare const IS_VARIABLE_HASH_PATTERN: RegExp;
5
+ export declare const IS_COMODIN_REDUX_PATTERN: RegExp;
6
+ /** Extrae nombres de comodines estándar (@comodin@) */
7
+ export declare function extraerComodinesRedux(text: string): IdComodin[];
8
+ /** Extrae nombres de variables dinámicas (@#variable@) */
9
+ export declare function extraerVariablesInteres(text: string): string[];
10
+ export declare function getBFVarNames(salto: string | null): {
11
+ listo: IdVariable;
12
+ agregar: IdVariable;
13
+ idFormulario: IdFormulario;
14
+ };
15
+ export declare function replaceSpecialWords(text: string, nombre: string, apellido: string, resultado: string): string;
16
+ export declare function numberOrStringIncIfArray(numberOrString: number | string, object: object | any[]): (number | string);
@@ -0,0 +1,88 @@
1
+ // Funciones puras del formulario, sin dependencias de React, Redux ni del navegador
2
+ // (para poder testearlas en node)
3
+ (function (factory) {
4
+ if (typeof module === "object" && typeof module.exports === "object") {
5
+ var v = factory(require, exports);
6
+ if (v !== undefined) module.exports = v;
7
+ }
8
+ else if (typeof define === "function" && define.amd) {
9
+ define(["require", "exports"], factory);
10
+ }
11
+ })(function (require, exports) {
12
+ "use strict";
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.IS_COMODIN_REDUX_PATTERN = exports.IS_VARIABLE_HASH_PATTERN = exports.IS_TEM_PATTERN = exports.REGEX_SPLIT_COMODINES = void 0;
15
+ exports.extraerComodinesRedux = extraerComodinesRedux;
16
+ exports.extraerVariablesInteres = extraerVariablesInteres;
17
+ exports.getBFVarNames = getBFVarNames;
18
+ exports.replaceSpecialWords = replaceSpecialWords;
19
+ exports.numberOrStringIncIfArray = numberOrStringIncIfArray;
20
+ // RegEx principal para dividir el texto conservando los tokens delimitados por @...@
21
+ exports.REGEX_SPLIT_COMODINES = /(@(?:#?[\w-]+|\$[tT][eE][mM][^@]*)@)/g;
22
+ // Sub-RegExs para identificar el tipo de comodín
23
+ exports.IS_TEM_PATTERN = /^@\$(tem[^@]*)@$/i;
24
+ exports.IS_VARIABLE_HASH_PATTERN = /^@#([\w-]+)@$/;
25
+ exports.IS_COMODIN_REDUX_PATTERN = /^@([\w-]+)@$/;
26
+ /** Extrae nombres de comodines estándar (@comodin@) */
27
+ function extraerComodinesRedux(text) {
28
+ if (!text || !text.includes('@'))
29
+ return [];
30
+ const matches = text.match(/@([a-zA-Z0-9_-]+)@/g);
31
+ if (!matches)
32
+ return [];
33
+ const ids = [];
34
+ for (const m of matches) {
35
+ if (!m.startsWith('@#') && !m.startsWith('@$')) {
36
+ const id = m.slice(1, -1);
37
+ if (!ids.includes(id))
38
+ ids.push(id);
39
+ }
40
+ }
41
+ return ids;
42
+ }
43
+ /** Extrae nombres de variables dinámicas (@#variable@) */
44
+ function extraerVariablesInteres(text) {
45
+ if (!text)
46
+ return [];
47
+ const matches = text.match(/@#([\w-]+)@/g);
48
+ if (!matches)
49
+ return [];
50
+ const vars = [];
51
+ for (const m of matches) {
52
+ const varName = m.slice(2, -1); // Remueve '@#' y '@'
53
+ if (!vars.includes(varName))
54
+ vars.push(varName);
55
+ }
56
+ return vars;
57
+ }
58
+ function getBFVarNames(salto) {
59
+ const armoNomSalto = (salto === null || salto === void 0 ? void 0 : salto.substring(0, 2)) == 'F:' ? salto.slice(2) : salto;
60
+ return {
61
+ listo: '$B.F:' + armoNomSalto,
62
+ agregar: '$B.F:' + armoNomSalto + '_agregar',
63
+ idFormulario: 'F:' + armoNomSalto
64
+ };
65
+ }
66
+ function replaceSpecialWords(text, nombre, apellido, resultado) {
67
+ function capitalizeFirstLetter(text) {
68
+ return text.charAt(0).toUpperCase() + text.slice(1);
69
+ }
70
+ var simplificatedChars = {
71
+ "#nombre": capitalizeFirstLetter(nombre),
72
+ "#apellido": capitalizeFirstLetter(apellido),
73
+ "#resultado": resultado,
74
+ };
75
+ var re = new RegExp(Object.keys(simplificatedChars).join("|"), "gi");
76
+ return text.replace(re, function (matched) {
77
+ return simplificatedChars[matched.toLowerCase()];
78
+ });
79
+ }
80
+ function numberOrStringIncIfArray(numberOrString, object) {
81
+ // @ts-expect-error estoy usando isNaN para ver si es o no un número sumable
82
+ if (isNaN(numberOrString)) {
83
+ return numberOrString;
84
+ }
85
+ return Number(numberOrString) + (object instanceof Array ? 1 : 0);
86
+ }
87
+ });
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy1mb3JtdWxhcmlvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3VubG9nZ2VkL2hlbHBlcnMtZm9ybXVsYXJpby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvRkFBb0Y7QUFDcEYsa0NBQWtDOzs7Ozs7Ozs7Ozs7O0lBYWxDLHNEQWFDO0lBR0QsMERBV0M7SUFFRCxzQ0FPQztJQUVELGtEQWNDO0lBRUQsNERBTUM7SUFyRUQscUZBQXFGO0lBQ3hFLFFBQUEscUJBQXFCLEdBQUcsdUNBQXVDLENBQUM7SUFFN0UsaURBQWlEO0lBQ3BDLFFBQUEsY0FBYyxHQUFHLG1CQUFtQixDQUFDO0lBQ3JDLFFBQUEsd0JBQXdCLEdBQUcsZUFBZSxDQUFDO0lBQzNDLFFBQUEsd0JBQXdCLEdBQUcsY0FBYyxDQUFDO0lBRXZELHVEQUF1RDtJQUN2RCxTQUFnQixxQkFBcUIsQ0FBQyxJQUFZO1FBQzlDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQzVDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBRXhCLE1BQU0sR0FBRyxHQUFnQixFQUFFLENBQUM7UUFDNUIsS0FBSyxNQUFNLENBQUMsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDN0MsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQWMsQ0FBQztnQkFDdkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO29CQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDeEMsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFFRCwwREFBMEQ7SUFDMUQsU0FBZ0IsdUJBQXVCLENBQUMsSUFBWTtRQUNoRCxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3JCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUV4QixNQUFNLElBQUksR0FBYSxFQUFFLENBQUM7UUFDMUIsS0FBSyxNQUFNLENBQUMsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUN0QixNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCO1lBQ3JELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztnQkFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BELENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsU0FBZ0IsYUFBYSxDQUFDLEtBQW9CO1FBQzlDLE1BQU0sWUFBWSxHQUFHLENBQUEsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDN0UsT0FBTztZQUNILEtBQUssRUFBRSxPQUFPLEdBQUcsWUFBMEI7WUFDM0MsT0FBTyxFQUFFLE9BQU8sR0FBRyxZQUFZLEdBQUcsVUFBd0I7WUFDMUQsWUFBWSxFQUFFLElBQUksR0FBRyxZQUE0QjtTQUNwRCxDQUFDO0lBQ04sQ0FBQztJQUVELFNBQWdCLG1CQUFtQixDQUFDLElBQVksRUFBRSxNQUFjLEVBQUUsUUFBZ0IsRUFBRSxTQUFpQjtRQUNqRyxTQUFTLHFCQUFxQixDQUFDLElBQVk7WUFDdkMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUNELElBQUksa0JBQWtCLEdBQTRCO1lBQzlDLFNBQVMsRUFBRSxxQkFBcUIsQ0FBQyxNQUFNLENBQUM7WUFDeEMsV0FBVyxFQUFFLHFCQUFxQixDQUFDLFFBQVEsQ0FBQztZQUM1QyxZQUFZLEVBQUUsU0FBUztTQUMxQixDQUFDO1FBQ0YsSUFBSSxFQUFFLEdBQUcsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUVyRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLFVBQVUsT0FBTztZQUNyQyxPQUFPLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFNBQWdCLHdCQUF3QixDQUFDLGNBQStCLEVBQUUsTUFBc0I7UUFDNUYsNEVBQTRFO1FBQzVFLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDeEIsT0FBTyxjQUFjLENBQUM7UUFDMUIsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsTUFBTSxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gRnVuY2lvbmVzIHB1cmFzIGRlbCBmb3JtdWxhcmlvLCBzaW4gZGVwZW5kZW5jaWFzIGRlIFJlYWN0LCBSZWR1eCBuaSBkZWwgbmF2ZWdhZG9yXG4vLyAocGFyYSBwb2RlciB0ZXN0ZWFybGFzIGVuIG5vZGUpXG5cbmltcG9ydCB0eXBlIHsgSWRDb21vZGluLCBJZEZvcm11bGFyaW8sIElkVmFyaWFibGUgfSBmcm9tIFwiLi90aXBvc1wiO1xuXG4vLyBSZWdFeCBwcmluY2lwYWwgcGFyYSBkaXZpZGlyIGVsIHRleHRvIGNvbnNlcnZhbmRvIGxvcyB0b2tlbnMgZGVsaW1pdGFkb3MgcG9yIEAuLi5AXG5leHBvcnQgY29uc3QgUkVHRVhfU1BMSVRfQ09NT0RJTkVTID0gLyhAKD86Iz9bXFx3LV0rfFxcJFt0VF1bZUVdW21NXVteQF0qKUApL2c7XG5cbi8vIFN1Yi1SZWdFeHMgcGFyYSBpZGVudGlmaWNhciBlbCB0aXBvIGRlIGNvbW9kw61uXG5leHBvcnQgY29uc3QgSVNfVEVNX1BBVFRFUk4gPSAvXkBcXCQodGVtW15AXSopQCQvaTtcbmV4cG9ydCBjb25zdCBJU19WQVJJQUJMRV9IQVNIX1BBVFRFUk4gPSAvXkAjKFtcXHctXSspQCQvO1xuZXhwb3J0IGNvbnN0IElTX0NPTU9ESU5fUkVEVVhfUEFUVEVSTiA9IC9eQChbXFx3LV0rKUAkLztcblxuLyoqIEV4dHJhZSBub21icmVzIGRlIGNvbW9kaW5lcyBlc3TDoW5kYXIgKEBjb21vZGluQCkgKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWVyQ29tb2RpbmVzUmVkdXgodGV4dDogc3RyaW5nKTogSWRDb21vZGluW10ge1xuICAgIGlmICghdGV4dCB8fCAhdGV4dC5pbmNsdWRlcygnQCcpKSByZXR1cm4gW107XG4gICAgY29uc3QgbWF0Y2hlcyA9IHRleHQubWF0Y2goL0AoW2EtekEtWjAtOV8tXSspQC9nKTtcbiAgICBpZiAoIW1hdGNoZXMpIHJldHVybiBbXTtcblxuICAgIGNvbnN0IGlkczogSWRDb21vZGluW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IG0gb2YgbWF0Y2hlcykge1xuICAgICAgICBpZiAoIW0uc3RhcnRzV2l0aCgnQCMnKSAmJiAhbS5zdGFydHNXaXRoKCdAJCcpKSB7XG4gICAgICAgICAgICBjb25zdCBpZCA9IG0uc2xpY2UoMSwgLTEpIGFzIElkQ29tb2RpbjtcbiAgICAgICAgICAgIGlmICghaWRzLmluY2x1ZGVzKGlkKSkgaWRzLnB1c2goaWQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpZHM7XG59XG5cbi8qKiBFeHRyYWUgbm9tYnJlcyBkZSB2YXJpYWJsZXMgZGluw6FtaWNhcyAoQCN2YXJpYWJsZUApICovXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFlclZhcmlhYmxlc0ludGVyZXModGV4dDogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIGlmICghdGV4dCkgcmV0dXJuIFtdO1xuICAgIGNvbnN0IG1hdGNoZXMgPSB0ZXh0Lm1hdGNoKC9AIyhbXFx3LV0rKUAvZyk7XG4gICAgaWYgKCFtYXRjaGVzKSByZXR1cm4gW107XG5cbiAgICBjb25zdCB2YXJzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgbSBvZiBtYXRjaGVzKSB7XG4gICAgICAgIGNvbnN0IHZhck5hbWUgPSBtLnNsaWNlKDIsIC0xKTsgLy8gUmVtdWV2ZSAnQCMnIHkgJ0AnXG4gICAgICAgIGlmICghdmFycy5pbmNsdWRlcyh2YXJOYW1lKSkgdmFycy5wdXNoKHZhck5hbWUpO1xuICAgIH1cbiAgICByZXR1cm4gdmFycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEJGVmFyTmFtZXMoc2FsdG86IHN0cmluZyB8IG51bGwpIHtcbiAgICBjb25zdCBhcm1vTm9tU2FsdG8gPSBzYWx0bz8uc3Vic3RyaW5nKDAsIDIpID09ICdGOicgPyBzYWx0by5zbGljZSgyKSA6IHNhbHRvO1xuICAgIHJldHVybiB7XG4gICAgICAgIGxpc3RvOiAnJEIuRjonICsgYXJtb05vbVNhbHRvIGFzIElkVmFyaWFibGUsXG4gICAgICAgIGFncmVnYXI6ICckQi5GOicgKyBhcm1vTm9tU2FsdG8gKyAnX2FncmVnYXInIGFzIElkVmFyaWFibGUsXG4gICAgICAgIGlkRm9ybXVsYXJpbzogJ0Y6JyArIGFybW9Ob21TYWx0byBhcyBJZEZvcm11bGFyaW9cbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZVNwZWNpYWxXb3Jkcyh0ZXh0OiBzdHJpbmcsIG5vbWJyZTogc3RyaW5nLCBhcGVsbGlkbzogc3RyaW5nLCByZXN1bHRhZG86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgZnVuY3Rpb24gY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKHRleHQ6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGV4dC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHRleHQuc2xpY2UoMSk7XG4gICAgfVxuICAgIHZhciBzaW1wbGlmaWNhdGVkQ2hhcnM6IHsgW2s6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgICBcIiNub21icmVcIjogY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKG5vbWJyZSksXG4gICAgICAgIFwiI2FwZWxsaWRvXCI6IGNhcGl0YWxpemVGaXJzdExldHRlcihhcGVsbGlkbyksXG4gICAgICAgIFwiI3Jlc3VsdGFkb1wiOiByZXN1bHRhZG8sXG4gICAgfTtcbiAgICB2YXIgcmUgPSBuZXcgUmVnRXhwKE9iamVjdC5rZXlzKHNpbXBsaWZpY2F0ZWRDaGFycykuam9pbihcInxcIiksIFwiZ2lcIik7XG5cbiAgICByZXR1cm4gdGV4dC5yZXBsYWNlKHJlLCBmdW5jdGlvbiAobWF0Y2hlZCkge1xuICAgICAgICByZXR1cm4gc2ltcGxpZmljYXRlZENoYXJzW21hdGNoZWQudG9Mb3dlckNhc2UoKV07XG4gICAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBudW1iZXJPclN0cmluZ0luY0lmQXJyYXkobnVtYmVyT3JTdHJpbmc6IG51bWJlciB8IHN0cmluZywgb2JqZWN0OiBvYmplY3QgfCBhbnlbXSk6IChudW1iZXIgfCBzdHJpbmcpIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGVzdG95IHVzYW5kbyBpc05hTiBwYXJhIHZlciBzaSBlcyBvIG5vIHVuIG7Dum1lcm8gc3VtYWJsZVxuICAgIGlmIChpc05hTihudW1iZXJPclN0cmluZykpIHtcbiAgICAgICAgcmV0dXJuIG51bWJlck9yU3RyaW5nO1xuICAgIH1cbiAgICByZXR1cm4gTnVtYmVyKG51bWJlck9yU3RyaW5nKSArIChvYmplY3QgaW5zdGFuY2VvZiBBcnJheSA/IDEgOiAwKTtcbn1cbiJdfQ==
@@ -361,7 +361,7 @@ export declare const dispatchers: import("redux-typed-reducer").ReturnsTheSameTh
361
361
  }) => (state: CasoState) => CasoState;
362
362
  CAMBIAR_COMODINES: (payload: Record<IdComodin, string>) => (state: CasoState) => CasoState;
363
363
  }, "payload">;
364
- export declare function replaceSpecialWords(text: string, nombre: string, apellido: string, resultado: string): string;
364
+ export { replaceSpecialWords } from "./helpers-formulario";
365
365
  export declare function gotoConsistir(operativo: IdOperativo, tarea: IdTarea, enc: IdEnc): void;
366
366
  export declare function adaptarEstructura(estructuraBackend: any): Estructura;
367
367
  export declare function crearStoreFormulario(opts: {
@@ -437,4 +437,3 @@ export declare function crearStoreFormulario(opts: {
437
437
  payload: Record<IdComodin, string>;
438
438
  })>>;
439
439
  export declare function getStoreFormulario(): Store<unknown, import("redux").Action<any>> | null;
440
- export {};