dmencu 2.2.16 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -74,11 +74,11 @@ import {
74
74
  accion_id_pregunta,
75
75
  accion_agregar_formulario,
76
76
  NO_CAMBIAR__VERIFICAR_SI_ES_NECESARIO,
77
- NO_CAMBIAR__SOLO_TRAER_STATUS,
78
- MODO_DM_LOCALSTORAGE_KEY
77
+ NO_CAMBIAR__SOLO_TRAER_STATUS
79
78
  } from "./bypass-formulario"
80
79
 
81
80
  import { html, HtmlTag } from "js-to-html";
81
+ import { getFormularioConfig } from "./render-config";
82
82
 
83
83
  const DELAY_SCROLL_3 = 50;
84
84
 
@@ -1948,7 +1948,7 @@ function FormularioDespliegue(props: { forPk: ForPk }) {
1948
1948
  })
1949
1949
  // @ts-expect-error especial hay que leerlo en el parser de casilleros si esto termina quedando así
1950
1950
  var pantallaCompleta = formulario.especial?.pantallaCompleta;
1951
- const modoDM: ModoDM = my.getLocalVar(MODO_DM_LOCALSTORAGE_KEY);
1951
+ const modoDM: ModoDM = getFormularioConfig().getModoDM()!;
1952
1952
  return (
1953
1953
  <>
1954
1954
  <AppBar position="fixed" color={soloLectura ? 'secondary' : (modoDM == 'capa' ? 'success' : 'primary')}>
@@ -2115,7 +2115,7 @@ setDesplegarCarga((props: {
2115
2115
  var estructura = getEstructura();
2116
2116
  let cantLineasResumen = likeAr(informacionHdr).filter((informacion) => informacion.tem.carga == idCarga).array().length;
2117
2117
  const dispatch = useDispatch();
2118
- const modoDM: ModoDM = my.getLocalVar(MODO_DM_LOCALSTORAGE_KEY);
2118
+ const modoDM: ModoDM = getFormularioConfig().getModoDM()!;
2119
2119
  return <Paper className="carga" style={{ marginBottom: '10px', padding: '10px' }}>
2120
2120
  <div className="informacion-carga">
2121
2121
  <div className="carga">Área: {idCarga}</div>
@@ -2244,7 +2244,7 @@ setHojaDeRutaDespliegue((_props: {}) => {
2244
2244
  var feedbackRowValidator = getFeedbackRowValidator()
2245
2245
  const dispatch = useDispatch();
2246
2246
  const online = useOnlineStatus();
2247
- const modoDM: ModoDM = my.getLocalVar(MODO_DM_LOCALSTORAGE_KEY);
2247
+ const modoDM: ModoDM = getFormularioConfig().getModoDM()!;
2248
2248
  return (
2249
2249
  <>
2250
2250
  <AppBar position="fixed" color={modoDM == 'capa' ? 'success' : 'primary'}>
@@ -2289,7 +2289,7 @@ setHojaDeRutaDespliegue((_props: {}) => {
2289
2289
  </div> : null}
2290
2290
  <div className="nombre-version">
2291
2291
  <div>Instituto de Estadística y Censos de la Ciudad Autónoma de Buenos Aires - IDECBA</div>
2292
- <div>versión {my.getLocalVar('app-cache-version')} - sincro {num_sincro}</div>
2292
+ <div>versión {getFormularioConfig().getAppCacheVersion() || 'sin versión'} - sincro {num_sincro}</div>
2293
2293
  </div>
2294
2294
  </Paper>
2295
2295
  {likeAr(cargas).map((carga, idCarga, _, posicion) =>
@@ -2380,7 +2380,7 @@ function PantallaInicialSinCarga(_props: {}) {
2380
2380
  const online = useOnlineStatus();
2381
2381
 
2382
2382
  const paragraphStyles = { fontSize: "1.2rem", fontWeight: 600, padding: "5px 10px" };
2383
- const modoDM: ModoDM = my.getLocalVar(MODO_DM_LOCALSTORAGE_KEY);
2383
+ const modoDM: ModoDM = getFormularioConfig().getModoDM()!;
2384
2384
  return (
2385
2385
  <>
2386
2386
  <AppBar position="fixed" color={modoDM == 'capa' ? 'success' : 'primary'}>
@@ -0,0 +1 @@
1
+ export declare function initFormRenderer(): void;
@@ -0,0 +1,49 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports", "./render-config"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.initFormRenderer = initFormRenderer;
13
+ const render_config_1 = require("./render-config");
14
+ const LOCAL_STORAGE_STATE_NAME = 'hdr-state';
15
+ const LAST_AUTO_VALUE_PK_RAIZ = 'proximo_valor_pk_raiz';
16
+ const APP_CACHE_VERSION = 'app-cache-version';
17
+ const MODO_DM_LOCALSTORAGE_KEY = 'modo_dm';
18
+ function initFormRenderer() {
19
+ (0, render_config_1.setFormularioConfig)({
20
+ getCasoState() {
21
+ return myOwn.getLocalVar(LOCAL_STORAGE_STATE_NAME);
22
+ },
23
+ setCasoState(state) {
24
+ myOwn.setLocalVar(LOCAL_STORAGE_STATE_NAME, state);
25
+ },
26
+ getUltimoValorPkRaiz() {
27
+ return myOwn.getLocalVar(LAST_AUTO_VALUE_PK_RAIZ);
28
+ },
29
+ setUltimoValorPkRaiz(value) {
30
+ myOwn.setLocalVar(LAST_AUTO_VALUE_PK_RAIZ, value);
31
+ },
32
+ getAppCacheVersion() {
33
+ return myOwn.getLocalVar(APP_CACHE_VERSION);
34
+ },
35
+ setAppCacheVersion(version) {
36
+ myOwn.setLocalVar(APP_CACHE_VERSION, version);
37
+ },
38
+ getModoDM() {
39
+ return myOwn.getLocalVar(MODO_DM_LOCALSTORAGE_KEY);
40
+ },
41
+ setModoDM(modo) {
42
+ myOwn.setLocalVar(MODO_DM_LOCALSTORAGE_KEY, modo);
43
+ },
44
+ // @ts-ignore
45
+ ambienteDemo: myOwn.config.config.ambiente == 'test' || myOwn.config.config.ambiente == 'demo',
46
+ });
47
+ }
48
+ });
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLWluaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdW5sb2dnZWQvcmVuZGVyLWluaXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUFTQSw0Q0FvQ0M7SUE3Q0QsbURBQXNEO0lBSXRELE1BQU0sd0JBQXdCLEdBQUcsV0FBVyxDQUFDO0lBQzdDLE1BQU0sdUJBQXVCLEdBQUcsdUJBQXVCLENBQUM7SUFDeEQsTUFBTSxpQkFBaUIsR0FBRyxtQkFBbUIsQ0FBQztJQUM5QyxNQUFNLHdCQUF3QixHQUFHLFNBQVMsQ0FBQztJQUUzQyxTQUFnQixnQkFBZ0I7UUFDNUIsSUFBQSxtQ0FBbUIsRUFBQztZQUNoQixZQUFZO2dCQUNSLE9BQU8sS0FBSyxDQUFDLFdBQVcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1lBQ3ZELENBQUM7WUFFRCxZQUFZLENBQUMsS0FBSztnQkFDZCxLQUFLLENBQUMsV0FBVyxDQUFDLHdCQUF3QixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3ZELENBQUM7WUFFRCxvQkFBb0I7Z0JBQ2hCLE9BQU8sS0FBSyxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1lBQ3RELENBQUM7WUFFRCxvQkFBb0IsQ0FBQyxLQUFLO2dCQUN0QixLQUFLLENBQUMsV0FBVyxDQUFDLHVCQUF1QixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3RELENBQUM7WUFFRCxrQkFBa0I7Z0JBQ2QsT0FBTyxLQUFLLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDaEQsQ0FBQztZQUVELGtCQUFrQixDQUFDLE9BQWU7Z0JBQzlCLEtBQUssQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDbEQsQ0FBQztZQUVELFNBQVM7Z0JBQ0wsT0FBTyxLQUFLLENBQUMsV0FBVyxDQUFDLHdCQUF3QixDQUFDLENBQUM7WUFDdkQsQ0FBQztZQUVELFNBQVMsQ0FBQyxJQUFZO2dCQUNsQixLQUFLLENBQUMsV0FBVyxDQUFDLHdCQUF3QixFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3RELENBQUM7WUFDRCxhQUFhO1lBQ2IsWUFBWSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxNQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLE1BQU07U0FDakcsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNldEZvcm11bGFyaW9Db25maWcgfSBmcm9tIFwiLi9yZW5kZXItY29uZmlnXCI7XHJcbmltcG9ydCB7IE1vZG9ETSB9IGZyb20gXCIuL3RpcG9zXCI7XHJcblxyXG5cclxuY29uc3QgTE9DQUxfU1RPUkFHRV9TVEFURV9OQU1FID0gJ2hkci1zdGF0ZSc7XHJcbmNvbnN0IExBU1RfQVVUT19WQUxVRV9QS19SQUlaID0gJ3Byb3hpbW9fdmFsb3JfcGtfcmFpeic7XHJcbmNvbnN0IEFQUF9DQUNIRV9WRVJTSU9OID0gJ2FwcC1jYWNoZS12ZXJzaW9uJztcclxuY29uc3QgTU9ET19ETV9MT0NBTFNUT1JBR0VfS0VZID0gJ21vZG9fZG0nO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGluaXRGb3JtUmVuZGVyZXIoKSB7XHJcbiAgICBzZXRGb3JtdWxhcmlvQ29uZmlnKHtcclxuICAgICAgICBnZXRDYXNvU3RhdGUoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBteU93bi5nZXRMb2NhbFZhcihMT0NBTF9TVE9SQUdFX1NUQVRFX05BTUUpO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHNldENhc29TdGF0ZShzdGF0ZSkge1xyXG4gICAgICAgICAgICBteU93bi5zZXRMb2NhbFZhcihMT0NBTF9TVE9SQUdFX1NUQVRFX05BTUUsIHN0YXRlKTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBnZXRVbHRpbW9WYWxvclBrUmFpeigpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG15T3duLmdldExvY2FsVmFyKExBU1RfQVVUT19WQUxVRV9QS19SQUlaKTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBzZXRVbHRpbW9WYWxvclBrUmFpeih2YWx1ZSkge1xyXG4gICAgICAgICAgICBteU93bi5zZXRMb2NhbFZhcihMQVNUX0FVVE9fVkFMVUVfUEtfUkFJWiwgdmFsdWUpO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIGdldEFwcENhY2hlVmVyc2lvbigpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG15T3duLmdldExvY2FsVmFyKEFQUF9DQUNIRV9WRVJTSU9OKTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBzZXRBcHBDYWNoZVZlcnNpb24odmVyc2lvbjogc3RyaW5nKSB7XHJcbiAgICAgICAgICAgIG15T3duLnNldExvY2FsVmFyKEFQUF9DQUNIRV9WRVJTSU9OLCB2ZXJzaW9uKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIFxyXG4gICAgICAgIGdldE1vZG9ETSgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG15T3duLmdldExvY2FsVmFyKE1PRE9fRE1fTE9DQUxTVE9SQUdFX0tFWSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBcclxuICAgICAgICBzZXRNb2RvRE0obW9kbzogTW9kb0RNKSB7XHJcbiAgICAgICAgICAgIG15T3duLnNldExvY2FsVmFyKE1PRE9fRE1fTE9DQUxTVE9SQUdFX0tFWSwgbW9kbyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgYW1iaWVudGVEZW1vOiBteU93bi5jb25maWcuY29uZmlnLmFtYmllbnRlID09ICd0ZXN0JyB8fCBteU93bi5jb25maWcuY29uZmlnLmFtYmllbnRlID09ICdkZW1vJyxcclxuICAgIH0pO1xyXG59Il19
File without changes
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlwb3MgY29weS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91bmxvZ2dlZC90aXBvcyBjb3B5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIiXX0=
@@ -13,7 +13,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
13
13
  if (v !== undefined) module.exports = v;
14
14
  }
15
15
  else if (typeof define === "function" && define.amd) {
16
- define(["require", "exports", "js-to-html", "./render-formulario", "./abrir-formulario", "./bypass-formulario", "cast-error"], factory);
16
+ define(["require", "exports", "js-to-html", "./render-formulario", "./abrir-formulario", "cast-error", "./render-init", "./render-config"], factory);
17
17
  }
18
18
  })(function (require, exports) {
19
19
  "use strict";
@@ -22,9 +22,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
22
22
  const js_to_html_1 = require("js-to-html");
23
23
  const render_formulario_1 = require("./render-formulario");
24
24
  const abrir_formulario_1 = require("./abrir-formulario");
25
- const bypass_formulario_1 = require("./bypass-formulario");
26
25
  const cast_error_1 = require("cast-error");
27
26
  const ServiceWorkerAdmin = require("service-worker-admin");
27
+ const render_init_1 = require("./render-init");
28
+ const render_config_1 = require("./render-config");
28
29
  function siExisteId(id, hacer) {
29
30
  var elemento = document.getElementById(id);
30
31
  if (elemento != null) {
@@ -91,12 +92,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
91
92
  </div>
92
93
  `;
93
94
  if (location.pathname.endsWith(`/${URL_DM}`)) {
95
+ (0, render_init_1.initFormRenderer)();
94
96
  var startApp = () => __awaiter(this, void 0, void 0, function* () { });
95
97
  var datosByPass = my.getLocalVar(abrir_formulario_1.GLOVAR_DATOSBYPASS);
96
98
  if (datosByPass) {
97
99
  startApp = () => __awaiter(this, void 0, void 0, function* () {
98
100
  var version = yield swa.getSW('version');
99
- myOwn.setLocalVar('app-cache-version', version);
101
+ (0, render_config_1.getFormularioConfig)().setAppCacheVersion(version);
100
102
  //@ts-ignore existe
101
103
  var estructura = my.getLocalVar(abrir_formulario_1.GLOVAR_ESTRUCTURA);
102
104
  (0, abrir_formulario_1.cargarEstructura)(estructura);
@@ -108,8 +110,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
108
110
  else {
109
111
  startApp = () => __awaiter(this, void 0, void 0, function* () {
110
112
  try {
111
- const modoDmDefecto = my.getLocalVar(bypass_formulario_1.MODO_DM_LOCALSTORAGE_KEY) || (yield my.ajax.modo_dm_defecto_obtener({}));
112
- my.setLocalVar(bypass_formulario_1.MODO_DM_LOCALSTORAGE_KEY, modoDmDefecto);
113
+ const modoDmDefecto = (0, render_config_1.getFormularioConfig)().getModoDM() || (yield my.ajax.modo_dm_defecto_obtener({}));
114
+ (0, render_config_1.getFormularioConfig)().setModoDM(modoDmDefecto);
113
115
  }
114
116
  catch (err) {
115
117
  console.log('no se pudo traer el modo por defecto');
@@ -188,4 +190,4 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
188
190
  });
189
191
  }();
190
192
  });
191
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5sb2dnZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdW5sb2dnZWQvdW5sb2dnZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUEsWUFBWSxDQUFDOzs7SUFDYiwyQ0FBaUM7SUFDakMsMkRBQTJGO0lBQzNGLHlEQUErRztJQUMvRywyREFBK0Q7SUFFL0QsMkNBQXNDO0lBQ3RDLE1BQU0sa0JBQWtCLEdBQUcsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFFM0QsU0FBUyxVQUFVLENBQUMsRUFBVSxFQUFFLEtBQWtDO1FBQzlELElBQUksUUFBUSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0MsSUFBRyxRQUFRLElBQUUsSUFBSSxFQUFDLENBQUM7WUFDZixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDcEIsQ0FBQztJQUNMLENBQUM7SUFFRCxTQUFTLGlCQUFpQixDQUFDLEVBQVMsRUFBRSxPQUFlO1FBQ2pELFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBLEVBQUUsQ0FBQSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBQyxPQUFPLENBQUEsQ0FBQyxDQUFBLE9BQU8sQ0FBQSxDQUFDLENBQUEsTUFBTSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUNELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQztJQUV2QixJQUFJLGlCQUFpQixHQUFHLEdBQUUsRUFBRTtRQUN4QixPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxRQUFRLENBQUMsTUFBTSxHQUFDLFFBQVEsQ0FBQyxRQUFRLE9BQU8sTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNwRixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUE7SUFDckIsQ0FBQyxDQUFBO0lBRUQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRTs7WUFDNUIsSUFBSSxN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LFdBQVcsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLGlCQUFJLENBQUMsR0FBRyxDQUFDLEVBQUMsRUFBRSxFQUFDLFdBQVcsRUFBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNuRixRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtZQUMvRCxDQUFDO1lBQ0QsT0FBTyxNQUFNLENBQUM7UUFDbEIsQ0FBQztLQUFBLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xyXG5pbXBvcnQge2h0bWx9ICBmcm9tICdqcy10by1odG1sJztcclxuaW1wb3J0IHsgZGVzcGxlZ2FyRm9ybXVsYXJpb0FjdHVhbCwgZG1QYW50YWxsYUluaWNpYWxTaW5DYXJnYSB9IGZyb20gJy4vcmVuZGVyLWZvcm11bGFyaW8nO1xyXG5pbXBvcnQgeyBjYXJnYXJFc3RydWN0dXJhLCBjYXJnYXJIb2phRGVSdXRhLCBHTE9WQVJfRVNUUlVDVFVSQSwgR0xPVkFSX0RBVE9TQllQQVNTIH0gZnJvbSAnLi9hYnJpci1mb3JtdWxhcmlvJztcclxuaW1wb3J0IHsgTU9ET19ETV9MT0NBTFNUT1JBR0VfS0VZIH0gZnJvbSAnLi9ieXBhc3MtZm9ybXVsYXJpbyc7XHJcbmltcG9ydCB7IE1vZG9ETSB9IGZyb20gJy4vdGlwb3MnO1xuaW1wb3J0IHsgZXhwZWN0ZWQgfSBmcm9tIFwiY2FzdC1lcnJvclwiO1xyXG5jb25zdCBTZXJ2aWNlV29ya2VyQWRtaW4gPSByZXF1aXJlKFwic2VydmljZS13b3JrZXItYWRtaW5cIik7XHJcblxyXG5mdW5jdGlvbiBzaUV4aXN0ZUlkKGlkOiBzdHJpbmcsIGhhY2VyOiAoYXJnMDogSFRNTEVsZW1lbnQpID0+IHZvaWQpe1xyXG4gICAgdmFyIGVsZW1lbnRvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xyXG4gICAgaWYoZWxlbWVudG8hPW51bGwpe1xyXG4gICAgICAgIGhhY2VyKGVsZW1lbnRvKTtcclxuICAgIH1cclxufVxyXG5cclxuZnVuY3Rpb24gbW9zdHJhckVsZW1lbnRvSWQoaWQ6c3RyaW5nLCBtb3N0cmFyOmJvb2xlYW4pe1xyXG4gICAgc2lFeGlzdGVJZChpZCwgZT0+ZS5zdHlsZS5kaXNwbGF5PW1vc3RyYXI/J2Jsb2NrJzonbm9uZScpO1xyXG59XHJcbmNvbnN0IFVSTF9ETSA9ICdjYW1wbyc7XHJcblxyXG52YXIgcmVsb2FkV2l0aG91dEhhc2ggPSAoKT0+e1xyXG4gICAgaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCwgJycsIGAke2xvY2F0aW9uLm9yaWdpbitsb2NhdGlvbi5wYXRobmFtZX0vLi4vJHtVUkxfRE19YCk7XHJcbiAgICBsb2NhdGlvbi5yZWxvYWQoKVxyXG59XHJcblxyXG53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGFzeW5jIGZ1bmN0aW9uKCl7XHJcbiAgICB2YXIgbGF5b3V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RvdGFsLWxheW91dCcpITtcclxuICAgIGlmKCFsYXlvdXQpe1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdubyBlbmN1ZW50cm8gZWwgRElWLnRvdGFsLWxheW91dCcpXHJcbiAgICAgICAgYXdhaXQgbXlPd24ucmVhZHk7XHJcbiAgICAgICAgbGF5b3V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RvdGFsLWxheW91dCcpITtcclxuICAgIH1cclxuICAgIGF3YWl0IG15T3duLnJlYWR5O1xyXG4gICAgaWYobG9jYXRpb24ucGF0aG5hbWUuZW5kc1dpdGgoJy9zYWx2YXInKSl7XHJcbiAgICAgICAgdHJ5e1xyXG4gICAgICAgICAgICBmb3IgKGxldCB4IGluIGxvY2FsU3RvcmFnZSl7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhsb2NhbFN0b3JhZ2VbeF0pO1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgbXlPd24uYWpheC5kbV9yZXNjYXRhcih7bG9jYWxTdG9yYWdlSXRlbTpsb2NhbFN0b3JhZ2VbeF0sIGxvY2FsU3RvcmFnZUl0ZW1LZXk6eH0pXHJcbiAgICAgICAgICAgICAgICBsYXlvdXQuYXBwZW5kKFxyXG4gICAgICAgICAgICAgICAgICAgIGh0bWwucChgaXRlbSBcIiR7eH1cIiBkZSBsb2NhbFN0b2dhZ2UgZ3VhcmRhZG8uYCkuY3JlYXRlKClcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsYXlvdXQuYXBwZW5kKFxyXG4gICAgICAgICAgICAgICAgaHRtbC5wKGB0b2RvcyBsb3MgaXRlbXMgZnVlcm9uIHNhbHZhZG9zLmApLmNyZWF0ZSgpXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICB9Y2F0Y2goZXJyKXtcclxuICAgICAgICAgICAgbGF5b3V0LmFwcGVuZChcclxuICAgICAgICAgICAgICAgIGh0bWwucChgc2UgcHJvZHVqbyB1biBlcnJvciBhbCBzYWx2YXIgbG9zIGRhdG9zIGRlbCBkbS5gKS5jcmVhdGUoKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRyeXtcclxuICAgICAgICAgICAgdmFyIHJlZ2lzdHJhdGlvbnMgPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5nZXRSZWdpc3RyYXRpb25zKCk7XHJcbiAgICAgICAgICAgIGZvcihsZXQgcmVnaXN0cmF0aW9uIG9mIHJlZ2lzdHJhdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHJlZ2lzdHJhdGlvbi51bnJlZ2lzdGVyKClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsYXlvdXQuYXBwZW5kKFxyXG4gICAgICAgICAgICAgICAgaHRtbC5wKGB0b2RvcyBsb3Mgc3cgZnVlcm9uIGRlc2luc3RhbGFkb3MuYCkuY3JlYXRlKClcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgIH1jYXRjaChlcnIpe1xyXG4gICAgICAgICAgICBsYXlvdXQuYXBwZW5kKFxyXG4gICAgICAgICAgICAgICAgaHRtbC5wKGBzZSBwcm9kdWpvIHVuIGVycm9yIGFsIGRlc2luc3RhbGFyIGxvcyBzdy5gKS5jcmVhdGUoKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgfVxyXG4gICAgfWVsc2V7XHJcbiAgICAgICAgbGF5b3V0LmlubmVySFRNTD1gXHJcbiAgICAgICAgICAgIDxzcGFuIGlkPVwibWluaS1jb25zb2xlXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8ZGl2IGlkPW51ZXZhLXZlcnNpb24taW5zdGFsYWRhIHN0eWxlPVwicG9zaXRpb246Zml4ZWQ7IHRvcDo1cHg7IHotaW5kZXg6OTUwMDsgZGlzcGxheTpub25lXCI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj5IYXkgdW5hIG51ZXZhIHZlcnNpw7NuIGluc3RhbGFkYSA8L3NwYW4+PGJ1dHRvbiBpZD1yZWZyZXNjYXI+PHNwYW4gY2xhc3M9cm90YXI+4oa7PC9zcGFuPiByZWZyZXNjYXI8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgaWQ9aW5zdGFsYWRvIHN0eWxlPVwiZGlzcGxheTpub25lXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGlkPW1haW5fbGF5b3V0PjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBpZD1pbnN0YWxhbmRvIHN0eWxlPVwiZGlzcGxheTpub25lOyBtYXJnaW4tdG9wOjMwcHhcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgaWQ9dm9sdmVyLWRlLWluc3RhbGFjaW9uIHN0eWxlPVwicG9zaXRpb246Zml4ZWQ7IHRvcDo1cHg7IHotaW5kZXg6OTUwMDtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD12b2x2ZXItZGUtaW5zdGFsYWNpb24tcG9yLXF1ZT48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD12b2x2ZXItZGUtaW5zdGFsYWNpb24tY29tbz52b2x2ZXI8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBpZD1hcmNoaXZvcz5cclxuICAgICAgICAgICAgICAgICAgICA8aDI+cHJvZ3Jlc28gaW5zdGFsYWNpb248L2gyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIGA7XHJcbiAgICAgICAgaWYobG9jYXRpb24ucGF0aG5hbWUuZW5kc1dpdGgoYC8ke1VSTF9ETX1gKSl7XHJcbiAgICAgICAgICAgIHZhciBzdGFydEFwcDooKT0+UHJvbWlzZTx2b2lkPiA9IGFzeW5jICgpPT57fTtcclxuICAgICAgICAgICAgdmFyIGRhdG9zQnlQYXNzID0gbXkuZ2V0TG9jYWxWYXIoR0xPVkFSX0RBVE9TQllQQVNTKTtcclxuICAgICAgICAgICAgaWYoZGF0b3NCeVBhc3Mpe1xyXG4gICAgICAgICAgICAgICAgc3RhcnRBcHAgPSBhc3luYyAoKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciB2ZXJzaW9uID0gYXdhaXQgc3dhLmdldFNXKCd2ZXJzaW9uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgbXlPd24uc2V0TG9jYWxWYXIoJ2FwcC1jYWNoZS12ZXJzaW9uJywgdmVyc2lvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlIGV4aXN0ZSBcclxuICAgICAgICAgICAgICAgICAgICB2YXIgZXN0cnVjdHVyYSA9IG15LmdldExvY2FsVmFyKEdMT1ZBUl9FU1RSVUNUVVJBKTtcclxuICAgICAgICAgICAgICAgICAgICBjYXJnYXJFc3RydWN0dXJhKGVzdHJ1Y3R1cmEpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhcmdhckhvamFEZVJ1dGEoeyAuLi5kYXRvc0J5UGFzcywgbW9kb0FsbWFjZW5hbWllbnRvOiAnbG9jYWwnIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGRlc3BsZWdhckZvcm11bGFyaW9BY3R1YWwoe21vZG9EZW1vOiBmYWxzZSwgb3BlcmF0aXZvOiBlc3RydWN0dXJhLm9wZXJhdGl2b30pO1xyXG4gICAgICAgICAgICAgICAgICAgIG15Lm1lbnVOYW1lID0gVVJMX0RNO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgIHN0YXJ0QXBwID0gYXN5bmMgKCk9PntcclxuICAgICAgICAgICAgICAgICAgICB0cnl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZG9EbURlZmVjdG8gPSBteS5nZXRMb2NhbFZhcihNT0RPX0RNX0xPQ0FMU1RPUkFHRV9LRVkpIHx8IGF3YWl0IG15LmFqYXgubW9kb19kbV9kZWZlY3RvX29idGVuZXIoe30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBteS5zZXRMb2NhbFZhcihNT0RPX0RNX0xPQ0FMU1RPUkFHRV9LRVksIG1vZG9EbURlZmVjdG8pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1jYXRjaChlcnIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnbm8gc2UgcHVkbyB0cmFlciBlbCBtb2RvIHBvciBkZWZlY3RvJylcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlIGV4aXN0ZSBcclxuICAgICAgICAgICAgICAgICAgICBkbVBhbnRhbGxhSW5pY2lhbFNpbkNhcmdhKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdmFyIHJlZnJlc2NhclN0YXR1cz1hc3luYyBmdW5jdGlvbihzaG93U2NyZWVuOiBzdHJpbmcsIG5ld1ZlcnNpb25BdmFpYWJsZTogc3RyaW5nLCBfaW5zdGFsbGluZzogYW55KXtcclxuICAgICAgICAgICAgICAgIHZhciBidXNjYW5kb0FjdHVhbGl6YWNpb24gPSBsb2NhdGlvbi5ocmVmLmVuZHNXaXRoKCcjaW5zdD0xJyk7XHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbnVldmEtdmVyc2lvbi1pbnN0YWxhZGEnKSEuc3R5bGUuZGlzcGxheT1uZXdWZXJzaW9uQXZhaWFibGU9PSd5ZXMnPycnOidub25lJztcclxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2b2x2ZXItZGUtaW5zdGFsYWNpb24nKSEuc3R5bGUuZGlzcGxheT1uZXdWZXJzaW9uQXZhaWFibGU9PSd5ZXMnPydub25lJzonJztcclxuICAgICAgICAgICAgICAgIGlmKHNob3dTY3JlZW49PSdhcHAnICYmICFidXNjYW5kb0FjdHVhbGl6YWNpb24pe1xyXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnN0YWxhZG8nKSEuc3R5bGUuZGlzcGxheT0nJztcclxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5zdGFsYW5kbycpIS5zdHlsZS5kaXNwbGF5PSdub25lJztcclxuICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnN0YWxhZG8nKSEuc3R5bGUuZGlzcGxheT0nbm9uZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2luc3RhbGFuZG8nKSEuc3R5bGUuZGlzcGxheT0nJztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdmFyIHN3YSA9IG5ldyBTZXJ2aWNlV29ya2VyQWRtaW4oKTtcclxuICAgICAgICAgICAgc3dhLmluc3RhbGxPckFjdGl2YXRlKHtcclxuICAgICAgICAgICAgICAgIG9uRWFjaEZpbGU6IGFzeW5jICh1cmw6IHN0cmluZywgX2Vycm9yOiBFcnJvciB8IG51bGwpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2ZpbGU6ICcsdXJsKTtcclxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXJjaGl2b3MnKSEuYXBwZW5kKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBodG1sLmRpdih1cmwpLmNyZWF0ZSgpXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIG9uSW5mb01lc3NhZ2U6IChtOiBzdHJpbmcpPT5jb25zb2xlLmxvZygnbWVzc2FnZTogJywgbSksXHJcbiAgICAgICAgICAgICAgICBvbkVycm9yOiBhc3luYyAoZXJyOiBFcnJvciwgY29udGV4dDogc3RyaW5nKT0+e1xuICAgICAgICAgICAgICAgICAgICB2YXIgZXJyb3IgPSBleHBlY3RlZChlcnIpO1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnZXJyb3I6ICcrKGNvbnRleHQ/YCBlbiAoJHtjb250ZXh0fSlgOicnKSwgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhjb250ZXh0LCBlcnJvciwgJ2Vycm9yLWNvbnNvbGUnKVxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnZXJyb3IgYWwgZGVzY2FyZ2FyIGNhY2hlJywgZXJyb3IubWVzc2FnZSlcclxuICAgICAgICAgICAgICAgICAgICBpZihjb250ZXh0IT0naW5pdGlhbGl6aW5nIHNlcnZpY2Utd29ya2VyJyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsYXlvdXQgPSBhd2FpdCBhd2FpdEZvckNhY2hlTGF5b3V0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2FjaGVTdGF0dXNFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhY2hlLXN0YXR1cycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZighY2FjaGVTdGF0dXNFbGVtZW50KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlU3RhdHVzRWxlbWVudCA9IGh0bWwucCh7aWQ6J2NhY2hlLXN0YXR1cyd9KS5jcmVhdGUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dC5pbnNlcnRCZWZvcmUoY2FjaGVTdGF0dXNFbGVtZW50LCBsYXlvdXQuZmlyc3RDaGlsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVTdGF0dXNFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ3dhcm5pbmcnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZVN0YXR1c0VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnYWxsLW9rJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVTdGF0dXNFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2RhbmdlcicpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlU3RhdHVzRWxlbWVudC50ZXh0Q29udGVudD0nZXJyb3IgYWwgZGVzY2FyZ2FyIGxhIGFwbGljYWNpw7NuLiAnICsgZXJyb3IubWVzc2FnZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgb25SZWFkeVRvU3RhcnQ6c3RhcnRBcHAsXHJcbiAgICAgICAgICAgICAgICBvblN0YXRlQ2hhbmdlOnJlZnJlc2NhclN0YXR1c1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlZnJlc2NhcicpIS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsKCk9PntcclxuICAgICAgICAgICAgcmVsb2FkV2l0aG91dEhhc2goKVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2b2x2ZXItZGUtaW5zdGFsYWNpb24tY29tbycpIS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsKCk9PntcclxuICAgICAgICAgICAgcmVsb2FkV2l0aG91dEhhc2goKVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59KVxyXG5cclxuZXhwb3J0IHZhciBhd2FpdEZvckNhY2hlTGF5b3V0ID0gYXN5bmMgZnVuY3Rpb24gcHJlcGFyZUxheW91dEZvckNhY2hlKCl7XHJcbiAgICBhd2FpdCBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCBfcmVqZWN0KXtcclxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcscmVzb2x2ZSk7XHJcbiAgICB9KTtcclxuICAgIHZhciBsYXlvdXQ9KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYWNoZS1sYXlvdXQnKXx8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpO1xyXG4gICAgaWYoIWxheW91dC5pZCl7XHJcbiAgICAgICAgbGF5b3V0LmlkPSdjYWNoZS1sYXlvdXQnO1xyXG4gICAgICAgIGxheW91dC5hcHBlbmRDaGlsZChodG1sLmRpdih7aWQ6J2FwcC12ZXJzaW9ucyd9KS5jcmVhdGUoKSk7XHJcbiAgICAgICAgbGF5b3V0LmFwcGVuZENoaWxkKGh0bWwuZGl2KHtpZDonYXBwLXN0YXR1cyd9KS5jcmVhdGUoKSk7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsYXlvdXQuYXBwZW5kQ2hpbGQoaHRtbC5kaXYoe2lkOidjYWNoZS1sb2cnfSkuY3JlYXRlKCkpKTtcclxuICAgICAgICBkb2N1bWVudC5ib2R5Lmluc2VydEJlZm9yZShsYXlvdXQsZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxheW91dDtcclxufSgpOyJdfQ==
193
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5sb2dnZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdW5sb2dnZWQvdW5sb2dnZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUEsWUFBWSxDQUFDOzs7SUFDYiwyQ0FBaUM7SUFDakMsMkRBQTJGO0lBQzNGLHlEQUErRztJQUUvRywyQ0FBc0M7SUFDdEMsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUMzRCwrQ0FBaUQ7SUFDakQsbURBQXNEO0lBR3RELFNBQVMsVUFBVSxDQUFDLEVBQVUsRUFBRSxLQUFrQztRQUM5RCxJQUFJLFFBQVEsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLElBQUcsUUFBUSxJQUFFLElBQUksRUFBQyxDQUFDO1lBQ2YsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3BCLENBQUM7SUFDTCxDQUFDO0lBRUQsU0FBUyxpQkFBaUIsQ0FBQyxFQUFTLEVBQUUsT0FBZTtRQUNqRCxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQSxFQUFFLENBQUEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUMsT0FBTyxDQUFBLENBQUMsQ0FBQSxPQUFPLENBQUEsQ0FBQyxDQUFBLE1BQU0sQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUM7SUFFdkIsSUFBSSxpQkFBaUIsR0FBRyxHQUFFLEVBQUU7UUFDeEIsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsUUFBUSxDQUFDLE1BQU0sR0FBQyxRQUFRLENBQUMsUUFBUSxPQUFPLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDcEYsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFBO0lBQ3JCLENBQUMsQ0FBQTtJQUVELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUU7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QU0sRUFBRSxDQUFDLENBQUM7Z0JBQ3pELFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsaUJBQUksQ0FBQyxHQUFHLENBQUMsRUFBQyxFQUFFLEVBQUMsV0FBVyxFQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ25GLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1lBQy9ELENBQUM7WUFDRCxPQUFPLE1BQU0sQ0FBQztRQUNsQixDQUFDO0tBQUEsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcbmltcG9ydCB7aHRtbH0gIGZyb20gJ2pzLXRvLWh0bWwnO1xyXG5pbXBvcnQgeyBkZXNwbGVnYXJGb3JtdWxhcmlvQWN0dWFsLCBkbVBhbnRhbGxhSW5pY2lhbFNpbkNhcmdhIH0gZnJvbSAnLi9yZW5kZXItZm9ybXVsYXJpbyc7XHJcbmltcG9ydCB7IGNhcmdhckVzdHJ1Y3R1cmEsIGNhcmdhckhvamFEZVJ1dGEsIEdMT1ZBUl9FU1RSVUNUVVJBLCBHTE9WQVJfREFUT1NCWVBBU1MgfSBmcm9tICcuL2FicmlyLWZvcm11bGFyaW8nO1xyXG5pbXBvcnQgeyBNb2RvRE0gfSBmcm9tICcuL3RpcG9zJztcclxuaW1wb3J0IHsgZXhwZWN0ZWQgfSBmcm9tIFwiY2FzdC1lcnJvclwiO1xyXG5jb25zdCBTZXJ2aWNlV29ya2VyQWRtaW4gPSByZXF1aXJlKFwic2VydmljZS13b3JrZXItYWRtaW5cIik7XHJcbmltcG9ydCB7IGluaXRGb3JtUmVuZGVyZXIgfSBmcm9tIFwiLi9yZW5kZXItaW5pdFwiO1xyXG5pbXBvcnQgeyBnZXRGb3JtdWxhcmlvQ29uZmlnIH0gZnJvbSBcIi4vcmVuZGVyLWNvbmZpZ1wiO1xyXG5cclxuXHJcbmZ1bmN0aW9uIHNpRXhpc3RlSWQoaWQ6IHN0cmluZywgaGFjZXI6IChhcmcwOiBIVE1MRWxlbWVudCkgPT4gdm9pZCl7XHJcbiAgICB2YXIgZWxlbWVudG8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XHJcbiAgICBpZihlbGVtZW50byE9bnVsbCl7XHJcbiAgICAgICAgaGFjZXIoZWxlbWVudG8pO1xyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBtb3N0cmFyRWxlbWVudG9JZChpZDpzdHJpbmcsIG1vc3RyYXI6Ym9vbGVhbil7XHJcbiAgICBzaUV4aXN0ZUlkKGlkLCBlPT5lLnN0eWxlLmRpc3BsYXk9bW9zdHJhcj8nYmxvY2snOidub25lJyk7XHJcbn1cclxuY29uc3QgVVJMX0RNID0gJ2NhbXBvJztcclxuXHJcbnZhciByZWxvYWRXaXRob3V0SGFzaCA9ICgpPT57XHJcbiAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCAnJywgYCR7bG9jYXRpb24ub3JpZ2luK2xvY2F0aW9uLnBhdGhuYW1lfS8uLi8ke1VSTF9ETX1gKTtcclxuICAgIGxvY2F0aW9uLnJlbG9hZCgpXHJcbn1cclxuXHJcbndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgYXN5bmMgZnVuY3Rpb24oKXtcclxuICAgIHZhciBsYXlvdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG90YWwtbGF5b3V0JykhO1xyXG4gICAgaWYoIWxheW91dCl7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ25vIGVuY3VlbnRybyBlbCBESVYudG90YWwtbGF5b3V0JylcclxuICAgICAgICBhd2FpdCBteU93bi5yZWFkeTtcclxuICAgICAgICBsYXlvdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG90YWwtbGF5b3V0JykhO1xyXG4gICAgfVxyXG4gICAgYXdhaXQgbXlPd24ucmVhZHk7XHJcbiAgICBpZihsb2NhdGlvbi5wYXRobmFtZS5lbmRzV2l0aCgnL3NhbHZhcicpKXtcclxuICAgICAgICB0cnl7XHJcbiAgICAgICAgICAgIGZvciAobGV0IHggaW4gbG9jYWxTdG9yYWdlKXtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGxvY2FsU3RvcmFnZVt4XSk7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCBteU93bi5hamF4LmRtX3Jlc2NhdGFyKHtsb2NhbFN0b3JhZ2VJdGVtOmxvY2FsU3RvcmFnZVt4XSwgbG9jYWxTdG9yYWdlSXRlbUtleTp4fSlcclxuICAgICAgICAgICAgICAgIGxheW91dC5hcHBlbmQoXHJcbiAgICAgICAgICAgICAgICAgICAgaHRtbC5wKGBpdGVtIFwiJHt4fVwiIGRlIGxvY2FsU3RvZ2FnZSBndWFyZGFkby5gKS5jcmVhdGUoKVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxheW91dC5hcHBlbmQoXHJcbiAgICAgICAgICAgICAgICBodG1sLnAoYHRvZG9zIGxvcyBpdGVtcyBmdWVyb24gc2FsdmFkb3MuYCkuY3JlYXRlKClcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgIH1jYXRjaChlcnIpe1xyXG4gICAgICAgICAgICBsYXlvdXQuYXBwZW5kKFxyXG4gICAgICAgICAgICAgICAgaHRtbC5wKGBzZSBwcm9kdWpvIHVuIGVycm9yIGFsIHNhbHZhciBsb3MgZGF0b3MgZGVsIGRtLmApLmNyZWF0ZSgpXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICB9XHJcbiAgICAgICAgdHJ5e1xyXG4gICAgICAgICAgICB2YXIgcmVnaXN0cmF0aW9ucyA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmdldFJlZ2lzdHJhdGlvbnMoKTtcclxuICAgICAgICAgICAgZm9yKGxldCByZWdpc3RyYXRpb24gb2YgcmVnaXN0cmF0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgcmVnaXN0cmF0aW9uLnVucmVnaXN0ZXIoKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxheW91dC5hcHBlbmQoXHJcbiAgICAgICAgICAgICAgICBodG1sLnAoYHRvZG9zIGxvcyBzdyBmdWVyb24gZGVzaW5zdGFsYWRvcy5gKS5jcmVhdGUoKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgfWNhdGNoKGVycil7XHJcbiAgICAgICAgICAgIGxheW91dC5hcHBlbmQoXHJcbiAgICAgICAgICAgICAgICBodG1sLnAoYHNlIHByb2R1am8gdW4gZXJyb3IgYWwgZGVzaW5zdGFsYXIgbG9zIHN3LmApLmNyZWF0ZSgpXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICB9XHJcbiAgICB9ZWxzZXtcclxuICAgICAgICBsYXlvdXQuaW5uZXJIVE1MPWBcclxuICAgICAgICAgICAgPHNwYW4gaWQ9XCJtaW5pLWNvbnNvbGVcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDxkaXYgaWQ9bnVldmEtdmVyc2lvbi1pbnN0YWxhZGEgc3R5bGU9XCJwb3NpdGlvbjpmaXhlZDsgdG9wOjVweDsgei1pbmRleDo5NTAwOyBkaXNwbGF5Om5vbmVcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPkhheSB1bmEgbnVldmEgdmVyc2nDs24gaW5zdGFsYWRhIDwvc3Bhbj48YnV0dG9uIGlkPXJlZnJlc2Nhcj48c3BhbiBjbGFzcz1yb3Rhcj7ihrs8L3NwYW4+IHJlZnJlc2NhcjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBpZD1pbnN0YWxhZG8gc3R5bGU9XCJkaXNwbGF5Om5vbmVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgaWQ9bWFpbl9sYXlvdXQ+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGlkPWluc3RhbGFuZG8gc3R5bGU9XCJkaXNwbGF5Om5vbmU7IG1hcmdpbi10b3A6MzBweFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBpZD12b2x2ZXItZGUtaW5zdGFsYWNpb24gc3R5bGU9XCJwb3NpdGlvbjpmaXhlZDsgdG9wOjVweDsgei1pbmRleDo5NTAwO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGlkPXZvbHZlci1kZS1pbnN0YWxhY2lvbi1wb3ItcXVlPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPXZvbHZlci1kZS1pbnN0YWxhY2lvbi1jb21vPnZvbHZlcjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGlkPWFyY2hpdm9zPlxyXG4gICAgICAgICAgICAgICAgICAgIDxoMj5wcm9ncmVzbyBpbnN0YWxhY2lvbjwvaDI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgYDtcclxuICAgICAgICBpZihsb2NhdGlvbi5wYXRobmFtZS5lbmRzV2l0aChgLyR7VVJMX0RNfWApKXtcclxuICAgICAgICAgICAgaW5pdEZvcm1SZW5kZXJlcigpO1xyXG4gICAgICAgICAgICB2YXIgc3RhcnRBcHA6KCk9PlByb21pc2U8dm9pZD4gPSBhc3luYyAoKT0+e307XHJcbiAgICAgICAgICAgIHZhciBkYXRvc0J5UGFzcyA9IG15LmdldExvY2FsVmFyKEdMT1ZBUl9EQVRPU0JZUEFTUyk7XHJcbiAgICAgICAgICAgIGlmKGRhdG9zQnlQYXNzKXtcclxuICAgICAgICAgICAgICAgIHN0YXJ0QXBwID0gYXN5bmMgKCk9PntcclxuICAgICAgICAgICAgICAgICAgICB2YXIgdmVyc2lvbiA9IGF3YWl0IHN3YS5nZXRTVygndmVyc2lvbicpO1xyXG4gICAgICAgICAgICAgICAgICAgIGdldEZvcm11bGFyaW9Db25maWcoKS5zZXRBcHBDYWNoZVZlcnNpb24odmVyc2lvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlIGV4aXN0ZSBcclxuICAgICAgICAgICAgICAgICAgICB2YXIgZXN0cnVjdHVyYSA9IG15LmdldExvY2FsVmFyKEdMT1ZBUl9FU1RSVUNUVVJBKTtcclxuICAgICAgICAgICAgICAgICAgICBjYXJnYXJFc3RydWN0dXJhKGVzdHJ1Y3R1cmEpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhcmdhckhvamFEZVJ1dGEoeyAuLi5kYXRvc0J5UGFzcywgbW9kb0FsbWFjZW5hbWllbnRvOiAnbG9jYWwnIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGRlc3BsZWdhckZvcm11bGFyaW9BY3R1YWwoe21vZG9EZW1vOiBmYWxzZSwgb3BlcmF0aXZvOiBlc3RydWN0dXJhLm9wZXJhdGl2b30pO1xyXG4gICAgICAgICAgICAgICAgICAgIG15Lm1lbnVOYW1lID0gVVJMX0RNO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgIHN0YXJ0QXBwID0gYXN5bmMgKCk9PntcclxuICAgICAgICAgICAgICAgICAgICB0cnl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZG9EbURlZmVjdG86IE1vZG9ETSA9IGdldEZvcm11bGFyaW9Db25maWcoKS5nZXRNb2RvRE0oKSB8fCBhd2FpdCBteS5hamF4Lm1vZG9fZG1fZGVmZWN0b19vYnRlbmVyKHt9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICBnZXRGb3JtdWxhcmlvQ29uZmlnKCkuc2V0TW9kb0RNKG1vZG9EbURlZmVjdG8pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1jYXRjaChlcnIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnbm8gc2UgcHVkbyB0cmFlciBlbCBtb2RvIHBvciBkZWZlY3RvJylcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlIGV4aXN0ZSBcclxuICAgICAgICAgICAgICAgICAgICBkbVBhbnRhbGxhSW5pY2lhbFNpbkNhcmdhKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdmFyIHJlZnJlc2NhclN0YXR1cz1hc3luYyBmdW5jdGlvbihzaG93U2NyZWVuOiBzdHJpbmcsIG5ld1ZlcnNpb25BdmFpYWJsZTogc3RyaW5nLCBfaW5zdGFsbGluZzogYW55KXtcclxuICAgICAgICAgICAgICAgIHZhciBidXNjYW5kb0FjdHVhbGl6YWNpb24gPSBsb2NhdGlvbi5ocmVmLmVuZHNXaXRoKCcjaW5zdD0xJyk7XHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbnVldmEtdmVyc2lvbi1pbnN0YWxhZGEnKSEuc3R5bGUuZGlzcGxheT1uZXdWZXJzaW9uQXZhaWFibGU9PSd5ZXMnPycnOidub25lJztcclxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2b2x2ZXItZGUtaW5zdGFsYWNpb24nKSEuc3R5bGUuZGlzcGxheT1uZXdWZXJzaW9uQXZhaWFibGU9PSd5ZXMnPydub25lJzonJztcclxuICAgICAgICAgICAgICAgIGlmKHNob3dTY3JlZW49PSdhcHAnICYmICFidXNjYW5kb0FjdHVhbGl6YWNpb24pe1xyXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnN0YWxhZG8nKSEuc3R5bGUuZGlzcGxheT0nJztcclxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5zdGFsYW5kbycpIS5zdHlsZS5kaXNwbGF5PSdub25lJztcclxuICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnN0YWxhZG8nKSEuc3R5bGUuZGlzcGxheT0nbm9uZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2luc3RhbGFuZG8nKSEuc3R5bGUuZGlzcGxheT0nJztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdmFyIHN3YSA9IG5ldyBTZXJ2aWNlV29ya2VyQWRtaW4oKTtcclxuICAgICAgICAgICAgc3dhLmluc3RhbGxPckFjdGl2YXRlKHtcclxuICAgICAgICAgICAgICAgIG9uRWFjaEZpbGU6IGFzeW5jICh1cmw6IHN0cmluZywgX2Vycm9yOiBFcnJvciB8IG51bGwpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2ZpbGU6ICcsdXJsKTtcclxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXJjaGl2b3MnKSEuYXBwZW5kKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBodG1sLmRpdih1cmwpLmNyZWF0ZSgpXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIG9uSW5mb01lc3NhZ2U6IChtOiBzdHJpbmcpPT5jb25zb2xlLmxvZygnbWVzc2FnZTogJywgbSksXHJcbiAgICAgICAgICAgICAgICBvbkVycm9yOiBhc3luYyAoZXJyOiBFcnJvciwgY29udGV4dDogc3RyaW5nKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBlcnJvciA9IGV4cGVjdGVkKGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2Vycm9yOiAnKyhjb250ZXh0P2AgZW4gKCR7Y29udGV4dH0pYDonJyksIGVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhjb250ZXh0LCBlcnJvciwgJ2Vycm9yLWNvbnNvbGUnKVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdlcnJvciBhbCBkZXNjYXJnYXIgY2FjaGUnLCBlcnJvci5tZXNzYWdlKVxyXG4gICAgICAgICAgICAgICAgICAgIGlmKGNvbnRleHQhPSdpbml0aWFsaXppbmcgc2VydmljZS13b3JrZXInKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxheW91dCA9IGF3YWl0IGF3YWl0Rm9yQ2FjaGVMYXlvdXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjYWNoZVN0YXR1c0VsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2FjaGUtc3RhdHVzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCFjYWNoZVN0YXR1c0VsZW1lbnQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVTdGF0dXNFbGVtZW50ID0gaHRtbC5wKHtpZDonY2FjaGUtc3RhdHVzJ30pLmNyZWF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0Lmluc2VydEJlZm9yZShjYWNoZVN0YXR1c0VsZW1lbnQsIGxheW91dC5maXJzdENoaWxkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZVN0YXR1c0VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnd2FybmluZycpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlU3RhdHVzRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdhbGwtb2snKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZVN0YXR1c0VsZW1lbnQuY2xhc3NMaXN0LmFkZCgnZGFuZ2VyJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVTdGF0dXNFbGVtZW50LnRleHRDb250ZW50PSdlcnJvciBhbCBkZXNjYXJnYXIgbGEgYXBsaWNhY2nDs24uICcgKyBlcnJvci5tZXNzYWdlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBvblJlYWR5VG9TdGFydDpzdGFydEFwcCxcclxuICAgICAgICAgICAgICAgIG9uU3RhdGVDaGFuZ2U6cmVmcmVzY2FyU3RhdHVzXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVmcmVzY2FyJykhLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywoKT0+e1xyXG4gICAgICAgICAgICByZWxvYWRXaXRob3V0SGFzaCgpXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ZvbHZlci1kZS1pbnN0YWxhY2lvbi1jb21vJykhLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywoKT0+e1xyXG4gICAgICAgICAgICByZWxvYWRXaXRob3V0SGFzaCgpXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn0pXHJcblxyXG5leHBvcnQgdmFyIGF3YWl0Rm9yQ2FjaGVMYXlvdXQgPSBhc3luYyBmdW5jdGlvbiBwcmVwYXJlTGF5b3V0Rm9yQ2FjaGUoKXtcclxuICAgIGF3YWl0IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIF9yZWplY3Qpe1xyXG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJyxyZXNvbHZlKTtcclxuICAgIH0pO1xyXG4gICAgdmFyIGxheW91dD0oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhY2hlLWxheW91dCcpfHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7XHJcbiAgICBpZighbGF5b3V0LmlkKXtcclxuICAgICAgICBsYXlvdXQuaWQ9J2NhY2hlLWxheW91dCc7XHJcbiAgICAgICAgbGF5b3V0LmFwcGVuZENoaWxkKGh0bWwuZGl2KHtpZDonYXBwLXZlcnNpb25zJ30pLmNyZWF0ZSgpKTtcclxuICAgICAgICBsYXlvdXQuYXBwZW5kQ2hpbGQoaHRtbC5kaXYoe2lkOidhcHAtc3RhdHVzJ30pLmNyZWF0ZSgpKTtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxheW91dC5hcHBlbmRDaGlsZChodG1sLmRpdih7aWQ6J2NhY2hlLWxvZyd9KS5jcmVhdGUoKSkpO1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKGxheW91dCxkb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQpXHJcbiAgICB9XHJcbiAgICByZXR1cm4gbGF5b3V0O1xyXG59KCk7Il19
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "dmencu",
3
3
  "description": "DM Encu - Encuestas en dispositivo móvil",
4
- "version": "2.2.16",
4
+ "version": "2.3.0",
5
5
  "author": "Codenautas <codenautas@googlegroups.com>",
6
6
  "license": "MIT",
7
7
  "main": "dist/server/server/app-dmencu.js",