dmencu 0.3.10 → 0.3.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/unlogged/bypass-formulario.d.ts +2 -2
- package/dist/client/unlogged/bypass-formulario.js +14 -12
- package/dist/client/unlogged/redux-formulario.d.ts +1 -1
- package/dist/client/unlogged/redux-formulario.js +8 -5
- package/dist/client/unlogged/render-formulario.tsx +42 -38
- package/dist/client/unlogged/tipos.d.ts +12 -6
- package/dist/client/unlogged/tipos.js +6 -3
- package/dist/server/server/app-dmencu.js +1 -1
- package/dist/server/server/procedures-dmencu.js +16 -23
- package/dist/server/server/table-estados_acciones.js +2 -6
- package/dist/server/server/table-tareas_tem_asignables.js +3 -3
- package/dist/server/unlogged/tipos.d.ts +12 -6
- package/dist/server/unlogged/tipos.js +6 -3
- package/dist/unlogged/unlogged/bypass-formulario.d.ts +2 -2
- package/dist/unlogged/unlogged/bypass-formulario.js +14 -12
- package/dist/unlogged/unlogged/redux-formulario.d.ts +1 -1
- package/dist/unlogged/unlogged/redux-formulario.js +8 -5
- package/dist/unlogged/unlogged/render-formulario.d.ts +4 -3
- package/dist/unlogged/unlogged/render-formulario.js +32 -25
- package/dist/unlogged/unlogged/render-formulario.tsx +42 -38
- package/dist/unlogged/unlogged/tipos.d.ts +12 -6
- package/dist/unlogged/unlogged/tipos.js +6 -3
- package/install/accion_cumple_condicion.sql +13 -9
- package/package.json +3 -2
|
@@ -284,7 +284,7 @@ export declare const dispatchers: import("redux-typed-reducer").ReturnsTheSameTh
|
|
|
284
284
|
export declare function replaceSpecialWords(text: string, nombre: string, apellido: string, resultado: string): string;
|
|
285
285
|
export declare function gotoSincronizar(): void;
|
|
286
286
|
export declare function gotoCampo(): void;
|
|
287
|
-
export declare function gotoConsistir(operativo: IdOperativo, tarea: IdTarea,
|
|
287
|
+
export declare function gotoConsistir(operativo: IdOperativo, tarea: IdTarea, encuesta: IdEnc): void;
|
|
288
288
|
export declare function getCacheVersion(): any;
|
|
289
289
|
export declare function traerEstructura(params: {
|
|
290
290
|
operativo: string;
|
|
@@ -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", "redux", "./tipos", "redux-typed-reducer", "like-ar", "best-globals"], factory);
|
|
16
|
+
define(["require", "exports", "redux", "./tipos", "redux-typed-reducer", "like-ar", "best-globals", "json4all"], factory);
|
|
17
17
|
}
|
|
18
18
|
})(function (require, exports) {
|
|
19
19
|
"use strict";
|
|
@@ -24,6 +24,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
24
24
|
const redux_typed_reducer_1 = require("redux-typed-reducer");
|
|
25
25
|
const likeAr = require("like-ar");
|
|
26
26
|
const bestGlobals = require("best-globals");
|
|
27
|
+
const JSON4all = require("json4all");
|
|
27
28
|
var my = myOwn;
|
|
28
29
|
const LOCAL_STORAGE_STATE_NAME = 'hdr-state';
|
|
29
30
|
function forPkToUrl(forPk, pilaForPk) {
|
|
@@ -207,8 +208,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
207
208
|
location.reload();
|
|
208
209
|
}
|
|
209
210
|
exports.gotoCampo = gotoCampo;
|
|
210
|
-
function gotoConsistir(operativo, tarea,
|
|
211
|
-
|
|
211
|
+
function gotoConsistir(operativo, tarea, encuesta) {
|
|
212
|
+
// TODO-2023-03: probar con esto:
|
|
213
|
+
history.replaceState(null, '', `${location.origin + location.pathname}/../menu#w=consistir_encuesta&up=${JSON4all.toUrl({ operativo, tarea, encuesta })}&autoproced=true`);
|
|
214
|
+
// history.replaceState(null, '', `${location.origin+location.pathname}/../menu#w=consistir_encuesta&up={"operativo":"${operativo}","tarea":"${tarea}","encuesta":${encuesta}}&autoproced=true`);
|
|
212
215
|
location.reload();
|
|
213
216
|
}
|
|
214
217
|
exports.gotoConsistir = gotoConsistir;
|
|
@@ -286,7 +289,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
286
289
|
initialState.opciones.forPk = JSON.parse(addrParams.state_forPk);
|
|
287
290
|
}
|
|
288
291
|
if (addrParams.state_pilaForPk) {
|
|
289
|
-
initialState.opciones.pilaForPk = addrParams.state_pilaForPk.split('|').map(j =>
|
|
292
|
+
initialState.opciones.pilaForPk = addrParams.state_pilaForPk.split('|').map(j => JSON4all.parse(j));
|
|
290
293
|
}
|
|
291
294
|
return initialState;
|
|
292
295
|
});
|
|
@@ -312,4 +315,4 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
312
315
|
}
|
|
313
316
|
exports.dmTraerDatosFormulario = dmTraerDatosFormulario;
|
|
314
317
|
});
|
|
315
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkdXgtZm9ybXVsYXJpby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91bmxvZ2dlZC9yZWR1eC1mb3JtdWxhcmlvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBLGlDQUFvQztJQUNwQyxtQ0FVaUI7SUFDakIsNkRBQW9GO0lBRXBGLGtDQUFrQztJQUNsQyw0Q0FBNEM7SUFJNUMsSUFBSSxFQUFFLEdBQUMsS0FBSyxDQUFDO0lBRWIsTUFBTSx3QkFBd0IsR0FBRSxXQUFXLENBQUM7SUFFNUMsU0FBUyxVQUFVLENBQUMsS0FBZ0IsRUFBRSxTQUFpQjtRQUNuRCxJQUFJLFVBQVUsR0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLElBQUksSUFBRSxRQUFRLENBQUMsTUFBTSxJQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLEtBQUssQ0FBQyxpQkFBaUIsaUNBQ2hCLFVBQVUsS0FDYixXQUFXLEVBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFBLG9CQUFZLEVBQUMsS0FBSyxDQUFDLEVBQ3hELGVBQWUsRUFBQyxTQUFTLENBQUMsR0FBRyxDQUFDLG9CQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQ3ZELENBQUM7SUFDUCxDQUFDO0lBRUQsSUFBSSxRQUFRLEdBQUM7UUFDVCxlQUFlLEVBQUUsQ0FBQyxPQUF3QyxFQUFFLEVBQUUsQ0FDMUQsVUFBUyxLQUFnQjtZQUNyQix1Q0FDTyxLQUFLLEtBQ1IsUUFBUSxrQ0FDRCxLQUFLLENBQUMsUUFBUSxLQUNqQixjQUFjLEVBQUMsT0FBTyxDQUFDLGNBQWMsT0FFNUM7UUFDTCxDQUFDO1FBQ0wsa0JBQWtCLEVBQUUsQ0FBQyxPQUE0QyxFQUFFLEVBQUUsQ0FDakUsVUFBUyxLQUFnQjtZQUNyQixJQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxD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U0FBUyxHQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUEsRUFBRSxDQUFBLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDL0Y7b0JBQ0QsT0FBTyxZQUFZLENBQUM7Z0JBQ3hCLENBQUM7YUFBQSxDQUFBO1lBQ0QsSUFBSSxTQUFTLEdBQUcsU0FBUyxTQUFTLENBQUMsS0FBZTtnQkFDOUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hCLENBQUMsQ0FBQTtZQUNELDRCQUE0QjtZQUM1QixJQUFJLFlBQVksR0FBYSxNQUFNLFNBQVMsRUFBRSxDQUFDO1lBQy9DLE1BQU0sVUFBVSxHQUFHLElBQUEsbUNBQWEsRUFBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDekQsZ0NBQWdDO1lBQ2hDLCtCQUErQjtZQUMvQixvQkFBb0I7WUFDcEIsTUFBTSxLQUFLLEdBQUcsSUFBQSxtQkFBVyxFQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUNwRCxTQUFTLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDNUIsS0FBSyxDQUFDLFNBQVMsQ0FBQztnQkFDWCxTQUFTLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDakMsQ0FBQyxDQUFDLENBQUM7WUFDSCx3QkFBd0I7WUFDeEIsc0JBQXNCO1lBQ3RCLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7S0FBQTtJQTdERCx3REE2REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVTdG9yZSB9IGZyb20gXCJyZWR1eFwiO1xyXG5pbXBvcnQgeyBDYXNpbGxlcm9zSW1wbGVtZW50YWRvcywgQ2Fzb1N0YXRlLCBcclxuICAgIEVzdGFkb0NhcmdhLCBFc3RydWN0dXJhUm93VmFsaWRhdG9yLCBcclxuICAgIEZvcm11bGFyaW8sIEZvclBrLCBGb3JQa1JhaXosIFxyXG4gICAgSWRDYXJnYSwgSWREZXN0aW5vLCBJZEZvcm11bGFyaW8sIElkVmFyaWFibGUsIElkT3BlcmF0aXZvLCBcclxuICAgIE1vZG9EZXNwbGllZ3VlLCBcclxuICAgIE9wY2lvbixcclxuICAgIHRvUGxhaW5Gb3JQayxcclxuICAgIElkRmluLFxyXG4gICAgSWRFbmMsXHJcbiAgICBJZFRhcmVhLFxyXG59IGZyb20gXCIuL3RpcG9zXCI7XHJcbmltcG9ydCB7IGNyZWF0ZVJlZHVjZXIsIGNyZWF0ZURpc3BhdGNoZXJzLCBBY3Rpb25zRnJvbSB9IGZyb20gXCJyZWR1eC10eXBlZC1yZWR1Y2VyXCI7XHJcbmltcG9ydCB7IE1vZG9BbG1hY2VuYW1pZW50byB9IGZyb20gXCIuL3RpcG9zXCJcclxuaW1wb3J0ICogYXMgbGlrZUFyIGZyb20gXCJsaWtlLWFyXCI7XHJcbmltcG9ydCAqIGFzIGJlc3RHbG9iYWxzIGZyb20gXCJiZXN0LWdsb2JhbHNcIjtcclxuXHJcbmltcG9ydCB7IE9wY2lvbiBhcyBSb3dWYWxpZGF0b3JPcGNpb24gfSBmcm9tIFwicm93LXZhbGlkYXRvclwiO1xyXG5cclxudmFyIG15PW15T3duO1xyXG5cclxuY29uc3QgTE9DQUxfU1RPUkFHRV9TVEFURV9OQU1FID0naGRyLXN0YXRlJztcclxuXHJcbmZ1bmN0aW9uIGZvclBrVG9VcmwoZm9yUGs6Rm9yUGt8bnVsbCwgcGlsYUZvclBrOkZvclBrW10pe1xyXG4gICAgdmFyIGFkZHJQYXJhbXM9bXlPd24uVXJpU2VhcmNoVG9PYmplY3QobG9jYXRpb24uaGFzaHx8bG9jYXRpb24uc2VhcmNofHwnJyk7XHJcbiAgICBteU93bi5yZXBsYWNlQWRkclBhcmFtcyh7XHJcbiAgICAgICAgLi4uYWRkclBhcmFtcywgXHJcbiAgICAgICAgc3RhdGVfZm9yUGs6Zm9yUGsgPT0gbnVsbCA/ICdudWxsJyA6IHRvUGxhaW5Gb3JQayhmb3JQayksIFxyXG4gICAgICAgIHN0YXRlX3BpbGFGb3JQazpwaWxhRm9yUGsubWFwKHRvUGxhaW5Gb3JQaykuam9pbignfCcpXHJcbiAgICB9KTtcclxufVxyXG5cclxudmFyIHJlZHVjZXJzPXtcclxuICAgIE1PRE9fREVTUExJRUdVRTogKHBheWxvYWQ6IHttb2RvRGVzcGxpZWd1ZTpNb2RvRGVzcGxpZWd1ZX0pID0+IFxyXG4gICAgICAgIGZ1bmN0aW9uKHN0YXRlOiBDYXNvU3RhdGUpe1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgICAgICAgICBvcGNpb25lczp7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUub3BjaW9uZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgbW9kb0Rlc3BsaWVndWU6cGF5bG9hZC5tb2RvRGVzcGxpZWd1ZVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgIENBTUJJQVJfRk9STVVMQVJJTzogKHBheWxvYWQ6IHtmb3JQazpGb3JQaywgYXBpbGFyVnVlbHRhOmJvb2xlYW59KSA9PiBcclxuICAgICAgICBmdW5jdGlvbihzdGF0ZTogQ2Fzb1N0YXRlKXtcclxuICAgICAgICAgICAgdmFyIGZvclBrID0gcGF5bG9hZC5mb3JQaztcclxuICAgICAgICAgICAgdmFyIHBpbGFGb3JQayA9IHBheWxvYWQuYXBpbGFyVnVlbHRhPyhcclxuICAgICAgICAgICAgICAgIHN0YXRlLm9wY2lvbmVzLmZvclBrPT1udWxsP1tdOlsuLi5zdGF0ZS5vcGNpb25lcy5waWxhRm9yUGssIHN0YXRlLm9wY2lvbmVzLmZvclBrXVxyXG4gICAgICAgICAgICApOnN0YXRlLm9wY2lvbmVzLnBpbGFGb3JQaztcclxuICAgICAgICAgICAgZm9yUGtUb1VybChmb3JQaywgcGlsYUZvclBrKTtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgICAgICAgICAgb3BjaW9uZXM6e1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLm9wY2lvbmVzLFxyXG4gICAgICAgICAgICAgICAgICAgIGZvclBrLFxyXG4gICAgICAgICAgICAgICAgICAgIHBpbGFGb3JQa1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgIFZPTFZFUl9ERV9GT1JNVUxBUklPOiAoe21hZ25pdHVkUmV0cm9jZXNvfToge21hZ25pdHVkUmV0cm9jZXNvOm51bWJlcn0pID0+IFxyXG4gICAgICAgIGZ1bmN0aW9uKHN0YXRlOiBDYXNvU3RhdGUpe1xyXG4gICAgICAgICAgICB2YXIgZm9yUGsgPSBzdGF0ZS5vcGNpb25lcy5waWxhRm9yUGtbc3RhdGUub3BjaW9uZXMucGlsYUZvclBrLmxlbmd0aC1tYWduaXR1ZFJldHJvY2Vzb118fG51bGw7XHJcbiAgICAgICAgICAgIHZhciBwaWxhRm9yUGsgPSBzdGF0ZS5vcGNpb25lcy5waWxhRm9yUGsuc2xpY2UoMCxzdGF0ZS5vcGNpb25lcy5waWxhRm9yUGsubGVuZ3RoLW1hZ25pdHVkUmV0cm9jZXNvKTtcclxuICAgICAgICAgICAgZm9yUGtUb1VybChmb3JQaywgcGlsYUZvclBrKTtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgICAgICAgICAgb3BjaW9uZXM6e1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLm9wY2lvbmVzLFxyXG4gICAgICAgICAgICAgICAgICAgIGZvclBrLFxyXG4gICAgICAgICAgICAgICAgICAgIHBpbGFGb3JQa1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgIEVTVEFET19DQVJHQTogKHBheWxvYWQ6IHtpZENhcmdhOklkQ2FyZ2EsIGVzdGFkb19jYXJnYTpFc3RhZG9DYXJnYX0pID0+XHJcbiAgICAgICAgZnVuY3Rpb24oc3RhdGU6IENhc29TdGF0ZSl7XHJcbiAgICAgICAgICAgIHJldHVybiBzdGF0ZVxyXG4gICAgICAgICAgICAvL0RFU0FDVElWQURPXHJcbiAgICAgICAgICAgIC8vcmV0dXJuIHtcclxuICAgICAgICAgICAgLy8gICAgLi4uc3RhdGUsXHJcbiAgICAgICAgICAgIC8vICAgIGRhdG9zOntcclxuICAgICAgICAgICAgLy8gICAgICAgIC4uLnN0YXRlLmRhdG9zLFxyXG4gICAgICAgICAgICAvLyAgICAgICAgY2FyZ2FzOntcclxuICAgICAgICAgICAgLy8gICAgICAgICAgICAuLi5zdGF0ZS5kYXRvcy5jYXJnYXMsXHJcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgW3BheWxvYWQuaWRDYXJnYV06IHtcclxuICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgLi4uc3RhdGUuZGF0b3MuY2FyZ2FzW3BheWxvYWQuaWRDYXJnYV0sXHJcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgIGVzdGFkb19jYXJnYTogcGF5bG9hZC5lc3RhZG9fY2FyZ2FcclxuICAgICAgICAgICAgLy8gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vICAgIH1cclxuICAgICAgICAgICAgLy99XHJcbiAgICAgICAgfSxcclxuICAgIFZPTFZFUl9IRFI6IChfcGF5bG9hZDoge30pID0+IFxyXG4gICAgICAgIGZ1bmN0aW9uKHN0YXRlOiBDYXNvU3RhdGUpe1xyXG4gICAgICAgICAgICB2YXIgZm9yUGsgPSBudWxsO1xyXG4gICAgICAgICAgICB2YXIgcGlsYUZvclBrOkZvclBrW10gPSBbXTtcclxuICAgICAgICAgICAgZm9yUGtUb1VybChmb3JQaywgcGlsYUZvclBrKTtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgICAgICAgICAgb3BjaW9uZXM6e1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLm9wY2lvbmVzLFxyXG4gICAgICAgICAgICAgICAgICAgIGZvclBrLFxyXG4gICAgICAgICAgICAgICAgICAgIHBpbGFGb3JQa1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgIFNFVF9PUENJT046IChwYXlsb2FkOiB7b3BjaW9uOmtleW9mIENhc29TdGF0ZVsnb3BjaW9uZXMnXSwgdmFsb3I6YW55fSkgPT4gXHJcbiAgICAgICAgZnVuY3Rpb24oc3RhdGU6IENhc29TdGF0ZSl7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICAgICAgICAgIG9wY2lvbmVzOntcclxuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZS5vcGNpb25lcyxcclxuICAgICAgICAgICAgICAgICAgICBbcGF5bG9hZC5vcGNpb25dOiBwYXlsb2FkLnZhbG9yXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgUkVTRVRfT1BDSU9ORVM6IChfcGF5bG9hZDoge30pID0+IFxyXG4gICAgICAgIGZ1bmN0aW9uKHN0YXRlOiBDYXNvU3RhdGUpe1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgICAgICAgICBvcGNpb25lczp7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUub3BjaW9uZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yUGs6IG51bGxcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICBSRUlOSUNJQVJfREVNTzogKF9wYXlsb2FkOiB7fSkgPT5cclxuICAgICAgICBmdW5jdGlvbihzdGF0ZTogQ2Fzb1N0YXRlKXtcclxuICAgICAgICAgICAgaWYoIXN0YXRlLm1vZG8uZGVtbykgcmV0dXJuIHN0YXRlO1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlIGNvcGlvIGxvcyBkYXRvcyBpbmljaWFsZXNcclxuICAgICAgICAgICAgICAgIGRhdG9zOmJlc3RHbG9iYWxzLmRlZXBDb3B5KHN0YXRlLm1vZG8uZGVtbylcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICBDT05GSVJNQVJfQk9SUkFSX1JFU1BVRVNUQTogKHBheWxvYWQ6IHtmb3JQazpGb3JQaywgdmFyaWFibGU6SWRWYXJpYWJsZXxudWxsfSkgPT4gXHJcbiAgICAgICAgZnVuY3Rpb24oc3RhdGU6IENhc29TdGF0ZSl7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICAgICAgICAgIG9wY2lvbmVzOntcclxuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZS5vcGNpb25lcyxcclxuICAgICAgICAgICAgICAgICAgICBmb3JQazpwYXlsb2FkLmZvclBrLFxyXG4gICAgICAgICAgICAgICAgICAgIG1vZG9Cb3JyYXJSZXNwdWVzdGE6IHBheWxvYWQudmFyaWFibGVcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEFjdGlvbkZvcm11bGFyaW9TdGF0ZSA9IEFjdGlvbnNGcm9tPHR5cGVvZiByZWR1Y2Vycz47XHJcbi8qIEZJTiBBQ0NJT05FUyAqL1xyXG5cclxuZXhwb3J0IGNvbnN0IGRpc3BhdGNoZXJzID0gY3JlYXRlRGlzcGF0Y2hlcnMocmVkdWNlcnMpO1xyXG5cclxuaW50ZXJmYWNlIElEYXRhU2VwYXJhZGE8VCBleHRlbmRzIHt0aXBvYzpzdHJpbmd9PiB7XHJcbiAgICBkYXRhOlQsXHJcbiAgICBjaGlsZHM6SURhdGFTZXBhcmFkYTxUPltdXHJcbn1cclxuXHJcbnR5cGUgSURhdGFDb25DYXNpbGxlcm9zPFQ+ID0gVCAmIHtcclxuICAgIGNhc2lsbGVyb3M6cmVhZG9ubHkgSURhdGFDb25DYXNpbGxlcm9zPFQ+W11cclxufVxyXG5cclxuY29uc3QgY2FzaWxsZXJvVmFjaW89e3NhbHRvOm51bGwsIGRlc3BsaWVndWU6bnVsbCwgYWNsYXJhY2lvbjpudWxsLCB2ZXJfaWQ6bnVsbCwgY2FzaWxsZXJvczpbXSwgbGVlcjpudWxsLFxyXG4gICAgZGVzcGxpZWd1ZUVuY2FiZXphZG86bnVsbCwgZGVzcGxpZWd1ZUNvbnRlbmlkbzpudWxsLCBkZXNwbGllZ3VlT2N1bHRhOm51bGwsIGRlc3BsaWVndWVUaXBvSW5wdXQ6bnVsbFxyXG59XHJcblxyXG5jb25zdCBvcGNpb25lc1NpTm86IE9wY2lvbltdID0gW1xyXG4gICAgey4uLmNhc2lsbGVyb1ZhY2lvLCBjYXNpbGxlcm86MSwgdGlwb2M6J08nLCBub21icmU6J1PDrSd9LFxyXG4gICAgey4uLmNhc2lsbGVyb1ZhY2lvLCBjYXNpbGxlcm86MiwgdGlwb2M6J08nLCBub21icmU6J05vJ30sXHJcbl1cclxuXHJcbnR5cGUgQ2FyYWNlcml6YWNpb25Fc3RhZG9Sb3dWYWxpZGF0b3I9e1xyXG4gICAgY29ycmVjdG86Ym9vbGVhbixcclxuICAgIGNvblZhbG9yOmJvb2xlYW58bnVsbCwgLy8gbnVsbCA9IHVua25vd25cclxufVxyXG5cclxuZnVuY3Rpb24gYXBsYW5hckxhQ3VydmE8VCBleHRlbmRzIHt0aXBvYzpzdHJpbmcsIGRlc3BsaWVndWU/OnN0cmluZ30+KGNhc2lsbGVyb3NEYXRhOklEYXRhU2VwYXJhZGE8VD4pOklEYXRhQ29uQ2FzaWxsZXJvczxUfE9wY2lvbj57XHJcbiAgICB2YXIgZGF0YSA9IGNhc2lsbGVyb3NEYXRhLmRhdGFcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgLi4uZGF0YSxcclxuICAgICAgICBkZXNwbGllZ3VlQ29udGVuaWRvOiBkYXRhLmRlc3BsaWVndWU/LmluY2x1ZGVzKCdob3Jpem9udGFsJyk/J2hvcml6b250YWwnOmRhdGEuZGVzcGxpZWd1ZT8uaW5jbHVkZXMoJ3ZlcnRpY2FsJyk/J3ZlcnRpY2FsJzpudWxsLFxyXG4gICAgICAgIGRlc3BsaWVndWVFbmNhYmV6YWRvOiBkYXRhLmRlc3BsaWVndWU/LmluY2x1ZGVzKCdsYXRlcmFsJyk/J2xhdGVyYWwnOmRhdGEuZGVzcGxpZWd1ZT8uaW5jbHVkZXMoJ3N1cGVyaW9yJyk/J3N1cGVyaW9yJzpudWxsLFxyXG4gICAgICAgIGRlc3BsaWVndWVPY3VsdGE6IGRhdGEuZGVzcGxpZWd1ZT8uaW5jbHVkZXMoJ29jdWx0YXInKT8/bnVsbCxcclxuICAgICAgICBkZXNwbGllZ3VlVGlwb0lucHV0OiBkYXRhLmRlc3BsaWVndWU/LmluY2x1ZGVzKCd0ZWxlZm9ubycpPyd0ZWwnOm51bGwsXHJcbiAgICAgICAgY2FzaWxsZXJvczogIWNhc2lsbGVyb3NEYXRhLmNoaWxkcy5sZW5ndGggJiYgY2FzaWxsZXJvc0RhdGEuZGF0YS50aXBvYz09J09NJyA/IG9wY2lvbmVzU2lObyA6XHJcbiAgICAgICAgICAgICBjYXNpbGxlcm9zRGF0YS5jaGlsZHMubWFwKGNhc2lsbGVybz0+YXBsYW5hckxhQ3VydmEoY2FzaWxsZXJvKSlcclxuICAgIH1cclxufVxyXG5cclxuLy8gdHlwZSBBbnlSZWY8VCBleHRlbmRzIHt9Pj1bVCwga2V5b2YgVF07XHJcblxyXG5mdW5jdGlvbiByZWxsZW5hclZhcmlhYmxlc1lPcGNpb25lcyhpZEZvcm11bGFyaW86SWRGb3JtdWxhcmlvLCBlc3RydWN0dXJhOkVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3IsIGNhc2lsbGVybzpDYXNpbGxlcm9zSW1wbGVtZW50YWRvcywgdW5pZGFkQW5hbGlzaXM/OnN0cmluZ3xudWxsLFxyXG4gICAgc3Vib3JkaW5hZGFWYXI/OklkVmFyaWFibGUsIHN1Ym9yZGluYWRhVmFsb3I/OmFueVxyXG4pe1xyXG4gICAgaWYoY2FzaWxsZXJvLnZhcl9uYW1lICE9IG51bGwgfHwgY2FzaWxsZXJvLnRpcG9jPT0nRklMVFJPJyl7XHJcbiAgICAgICAgdmFyIHZhcl9uYW1lOklkVmFyaWFibGVcclxuICAgICAgICBpZihjYXNpbGxlcm8udGlwb2M9PSdGSUxUUk8nKXtcclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSBwb25nbyBjb21vIG5vbWJyZSBkZSB2YXJpYWJsZSBlbCBmaWx0cm87XHJcbiAgICAgICAgICAgIHZhcl9uYW1lID0gY2FzaWxsZXJvLmNhc2lsbGVybztcclxuICAgICAgICB9ZWxzZSBpZihjYXNpbGxlcm8udmFyX25hbWUuZW5kc1dpdGgoJyEnKSl7XHJcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgbGFzIHZhcmlhYmxlcyBlc3Blam8gc29uIGxhcyBxdWUgdGVybWluYW4gZW4gIVxyXG4gICAgICAgICAgICB2YXJfbmFtZSA9IGNhc2lsbGVyby52YXJfbmFtZV9lc3BlY2lhbC5yZXBsYWNlKC8hKyQvLCcnKTtcclxuICAgICAgICAgICAgY2FzaWxsZXJvLnZhcl9uYW1lID0gdmFyX25hbWU7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIHZhcl9uYW1lID0gY2FzaWxsZXJvLnZhcl9uYW1lXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCB2YXJpYWJsZURlZj17XHJcbiAgICAgICAgICAgIHRpcG86Y2FzaWxsZXJvLnRpcG9jPT0nRklMVFJPJz8nZmlsdHJvJzpjYXNpbGxlcm8udGlwb2M9PSdPTScgfHwgY2FzaWxsZXJvLnRpcG92YXI9PSdzaV9ubyc/J29wY2lvbmVzJzpjYXNpbGxlcm8udGlwb3ZhcixcclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSBvcHRhdGl2byBwb2Ryw61hIG5vIGV4aXN0aXIsIHF1ZWRhcsOhIG51bGwuXHJcbiAgICAgICAgICAgIG9wdGF0aXZhOmNhc2lsbGVyby5vcHRhdGl2byEsXHJcbiAgICAgICAgICAgIG9wY2lvbmVzOihjYXNpbGxlcm8udGlwb2M9PSdPTScgfHwgY2FzaWxsZXJvLnRpcG92YXI9PSdvcGNpb25lcycgfHwgY2FzaWxsZXJvLnRpcG92YXI9PSdzaV9ubyc/XHJcbiAgICAgICAgICAgICAgICBsaWtlQXIuY3JlYXRlSW5kZXgoY2FzaWxsZXJvLmNhc2lsbGVyb3MsICdjYXNpbGxlcm8nKTp7fSkgYXMgdW5rbm93biBhcyB7IFtrZXk6IHN0cmluZ106IFJvd1ZhbGlkYXRvck9wY2lvbjxJZFZhcmlhYmxlPiB9LFxyXG4gICAgICAgICAgICBzYWx0bzpjYXNpbGxlcm8uc2FsdG8gYXMgSWRWYXJpYWJsZSxcclxuICAgICAgICAgICAgc2FsdG9Oc05yOidzYWx0b19uc19uYycgaW4gY2FzaWxsZXJvICYmIGNhc2lsbGVyby5zYWx0b19uc19uYyB8fCBudWxsLFxyXG4gICAgICAgICAgICBmdW5jaW9uSGFiaWxpdGFyOmNhc2lsbGVyby5leHByZXNpb25faGFiaWxpdGFyX2pzLFxyXG4gICAgICAgICAgICBmdW5jaW9uQXV0b0luZ3Jlc2FyOmNhc2lsbGVyby5leHByZXNpb25fYXV0b2luZ3Jlc2FyX2pzLFxyXG4gICAgICAgICAgICBjYWxjdWxhZGE6XHJcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlIC8vIFRPRE8uIEF2ZXJpZ3VhciBzaSBsYXMgcHJlZ3VudGFzIHkgZmlsdHJvcyBwdWVkZW4gdGVuZXIgdW5pZGFkIGRlIGFuw6FsaXNpc1xyXG4gICAgICAgICAgICAgICAgY2FzaWxsZXJvLnVuaWRhZF9hbmFsaXNpcyAmJiBjYXNpbGxlcm8udW5pZGFkX2FuYWxpc2lzIT11bmlkYWRBbmFsaXNpcyBcclxuICAgICAgICAgICAgICAgIHx8IGNhc2lsbGVyby5jYWxjdWxhZGEsXHJcbiAgICAgICAgICAgIGxpYnJlOmNhc2lsbGVyby5saWJyZVxyXG4gICAgICAgIH0gYXMgKHR5cGVvZiBlc3RydWN0dXJhLnZhcmlhYmxlcylbSWRWYXJpYWJsZV1cclxuICAgICAgICBpZihzdWJvcmRpbmFkYVZhbG9yICE9IHVuZGVmaW5lZCl7XHJcbiAgICAgICAgICAgIHZhcmlhYmxlRGVmLnN1Ym9yZGluYWRhVmFyID0gc3Vib3JkaW5hZGFWYXI7XHJcbiAgICAgICAgICAgIHZhcmlhYmxlRGVmLnN1Ym9yZGluYWRhVmFsb3IgPSBzdWJvcmRpbmFkYVZhbG9yO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlc3RydWN0dXJhLnZhcmlhYmxlc1t2YXJfbmFtZV09dmFyaWFibGVEZWY7XHJcbiAgICB9IGVsc2UgaWYgKGNhc2lsbGVyby50aXBvYz09J0JGJyl7XHJcbiAgICAgICAvLyB2YXIgdmFyX25hbWUgPSAnJEIuRjonK2Nhc2lsbGVyby5zYWx0byBhcyBJZFZhcmlhYmxlOyAgICAvL29yaWdpbmFsXHJcbiAgICAgICAgdmFyIHNhbHRvTm9tYnJlPWNhc2lsbGVyby5zYWx0byEuc3Vic3RyKDAsMik9PSdGOic/Y2FzaWxsZXJvLnNhbHRvIS5zbGljZSgyKTpjYXNpbGxlcm8uc2FsdG87XHJcbiAgICAgICAgdmFyIHZhcl9uYW1lID0gJyRCLkY6JytzYWx0b05vbWJyZSBhcyBJZFZhcmlhYmxlO1xyXG4gICAgICAgIGNhc2lsbGVyby52YXJfbmFtZV9CRiA9IHZhcl9uYW1lO1xyXG4gICAgICAgIGxldCB2YXJpYWJsZURlZj17XHJcbiAgICAgICAgICAgIHRpcG86J3RleHRvJyxcclxuICAgICAgICAgICAgbGlicmU6dHJ1ZSxcclxuICAgICAgICAgICAgLi4uKGNhc2lsbGVyby5leHByZXNpb25faGFiaWxpdGFyP3tmdW5jaW9uSGFiaWxpdGFyOmB2YWxvcmVzWycke2Nhc2lsbGVyby5leHByZXNpb25faGFiaWxpdGFyfSddICE9PTAgYH06e30pLFxyXG4gICAgICAgIH1cclxuICAgICAgICBlc3RydWN0dXJhLnZhcmlhYmxlc1t2YXJfbmFtZV09dmFyaWFibGVEZWY7XHJcbiAgICB9XHJcbiAgICBpZihjYXNpbGxlcm8uY2FzaWxsZXJvcyl7XHJcbiAgICAgICAgY2FzaWxsZXJvLmNhc2lsbGVyb3MuZm9yRWFjaCgoY2FzaWxsZXJvSGlqbzpDYXNpbGxlcm9zSW1wbGVtZW50YWRvcyk9PlxyXG4gICAgICAgICAgICByZWxsZW5hclZhcmlhYmxlc1lPcGNpb25lcyhpZEZvcm11bGFyaW8sIGVzdHJ1Y3R1cmEsIGNhc2lsbGVyb0hpam8sIHVuaWRhZEFuYWxpc2lzLCBjYXNpbGxlcm8udmFyX25hbWU/Y2FzaWxsZXJvLnZhcl9uYW1lOmNhc2lsbGVyby50aXBvYz09J08nP3N1Ym9yZGluYWRhVmFyOnVuZGVmaW5lZCxjYXNpbGxlcm8udGlwb2M9PSdPJz9jYXNpbGxlcm8uY2FzaWxsZXJvOnVuZGVmaW5lZClcclxuICAgICAgICApXHJcbiAgICB9XHJcbn1cclxuXHJcbnR5cGUgUmVnaXN0cm9EZXN0aW5vcz17W2Rlc3Rpbm8gaW4gSWREZXN0aW5vXTpJZFZhcmlhYmxlfG51bGx9O1xyXG5cclxuZnVuY3Rpb24gb2J0ZW5lckRlc3Rpbm9zQ2FzaWxsZXJvcyhjYXNpbGxlcm86Q2FzaWxsZXJvc0ltcGxlbWVudGFkb3MsIGRlc3Rpbm9zPzpSZWdpc3Ryb0Rlc3Rpbm9zKTpSZWdpc3Ryb0Rlc3Rpbm9ze1xyXG4gICAgaWYoZGVzdGlub3M9PW51bGwpIHJldHVybiBvYnRlbmVyRGVzdGlub3NDYXNpbGxlcm9zKGNhc2lsbGVybywge30gYXMgUmVnaXN0cm9EZXN0aW5vcyk7XHJcbiAgICBpZihjYXNpbGxlcm8udGlwb2M9PSdGSUxUUk8nKXtcclxuICAgICAgICBkZXN0aW5vc1tjYXNpbGxlcm8uY2FzaWxsZXJvXT1jYXNpbGxlcm8uY2FzaWxsZXJvIGFzIElkVmFyaWFibGU7XHJcbiAgICB9ZWxzZSBpZihjYXNpbGxlcm8udGlwb2MhPSdGJyAmJiBjYXNpbGxlcm8udGlwb2MhPSdPJyAmJiBjYXNpbGxlcm8udGlwb2MhPSdPTScpe1xyXG4gICAgICAgIGRlc3Rpbm9zW2Nhc2lsbGVyby5jYXNpbGxlcm9dPWNhc2lsbGVyby5wcmltZXJhX3ZhcmlhYmxlfHxudWxsXHJcbiAgICB9XHJcbiAgICBpZihjYXNpbGxlcm8uY2FzaWxsZXJvcyl7XHJcbiAgICAgICAgY2FzaWxsZXJvLmNhc2lsbGVyb3MuZm9yRWFjaChjPT5vYnRlbmVyRGVzdGlub3NDYXNpbGxlcm9zKGMsZGVzdGlub3MpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBkZXN0aW5vcztcclxufVxyXG5cclxuZnVuY3Rpb24gcmVsbGVuYXJEZXN0aW5vcyhlc3RydWN0dXJhOkVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3IsIGRlc3Rpbm9zOlJlZ2lzdHJvRGVzdGlub3MpOkVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3J7XHJcbiAgICBmdW5jdGlvbiBvYnRlbmVyRGVzdGlubyhpZFZhcmlhYmxlUXVlVGllbmVVbkRlc3Rpbm86SWRWYXJpYWJsZXxudWxsfHVuZGVmaW5lZHxJZEZpbik6SWRWYXJpYWJsZXxudWxse1xyXG4gICAgICAgIHJldHVybiBpZFZhcmlhYmxlUXVlVGllbmVVbkRlc3Rpbm89PSdmaW4nIGFzIElkVmFyaWFibGUgPyAnZmluJyBhcyBJZFZhcmlhYmxlIDogaWRWYXJpYWJsZVF1ZVRpZW5lVW5EZXN0aW5vIT1udWxsICYmIGRlc3Rpbm9zW2lkVmFyaWFibGVRdWVUaWVuZVVuRGVzdGlubyBhcyBJZERlc3Rpbm9dIHx8IG51bGxcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgLi4uZXN0cnVjdHVyYSxcclxuICAgICAgICB2YXJpYWJsZXM6bGlrZUFyKGVzdHJ1Y3R1cmEudmFyaWFibGVzKS5tYXAodmFyaWFibGVEZWY9Pih7XHJcbiAgICAgICAgICAgIC4uLnZhcmlhYmxlRGVmLFxyXG4gICAgICAgICAgICBzYWx0bzpvYnRlbmVyRGVzdGlubyh2YXJpYWJsZURlZi5zYWx0byksXHJcbiAgICAgICAgICAgIHNhbHRvTnNOcjpvYnRlbmVyRGVzdGlubyh2YXJpYWJsZURlZi5zYWx0b05zTnIpLFxyXG4gICAgICAgICAgICBvcGNpb25lczp2YXJpYWJsZURlZi5vcGNpb25lcyE9bnVsbCA/IGxpa2VBcih2YXJpYWJsZURlZi5vcGNpb25lcykubWFwKG9wY2lvbkRlZj0+KHtzYWx0bzpvYnRlbmVyRGVzdGlubyhvcGNpb25EZWYuc2FsdG8pfSkpLnBsYWluKCk6dW5kZWZpbmVkXHJcbiAgICAgICAgfSkpLnBsYWluKClcclxuICAgIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZ2VuZXJhckVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3IoY2FzaWxsZXJvOkNhc2lsbGVyb3NJbXBsZW1lbnRhZG9zLCBpZEZvcm11bGFyaW86IElkRm9ybXVsYXJpbyk6RXN0cnVjdHVyYVJvd1ZhbGlkYXRvcntcclxuICAgIHZhciBlc3RydWN0dXJhSW5jb21wbGV0YTpFc3RydWN0dXJhUm93VmFsaWRhdG9yPXt2YXJpYWJsZXM6e30sIG1hcmNhRmluOidmaW4nfSBhcyB1bmtub3duIGFzIEVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3I7XHJcbiAgICByZWxsZW5hclZhcmlhYmxlc1lPcGNpb25lcyhpZEZvcm11bGFyaW8sIGVzdHJ1Y3R1cmFJbmNvbXBsZXRhLCBjYXNpbGxlcm8sIFxyXG4gICAgICAgIC8vIEB0cy1pZ25vcmUgdmVyIHNpIGN1YWxxdWllciBjb3NhIHB1ZWRlIHRlbmVyIHVuaWRhZF9hbmFsaXNpc1xyXG4gICAgICAgIGNhc2lsbGVyby51bmlkYWRfYW5hbGlzaXNcclxuICAgICk7XHJcbiAgICB2YXIgZGVzdGlub3M9b2J0ZW5lckRlc3Rpbm9zQ2FzaWxsZXJvcyhjYXNpbGxlcm8pO1xyXG4gICAgcmV0dXJuIHJlbGxlbmFyRGVzdGlub3MoZXN0cnVjdHVyYUluY29tcGxldGEsIGRlc3Rpbm9zKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VTcGVjaWFsV29yZHModGV4dDpzdHJpbmcsIG5vbWJyZTpzdHJpbmcsIGFwZWxsaWRvOnN0cmluZywgcmVzdWx0YWRvOnN0cmluZyk6c3RyaW5ne1xyXG4gICAgZnVuY3Rpb24gY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKHRleHQ6c3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRleHQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB0ZXh0LnNsaWNlKDEpO1xyXG4gICAgfVxyXG4gICAgdmFyIHNpbXBsaWZpY2F0ZWRDaGFyczp7W2s6c3RyaW5nXTpzdHJpbmd9PXtcclxuICAgICAgICBcIiNub21icmVcIjpjYXBpdGFsaXplRmlyc3RMZXR0ZXIobm9tYnJlKSxcclxuICAgICAgICBcIiNhcGVsbGlkb1wiOmNhcGl0YWxpemVGaXJzdExldHRlcihhcGVsbGlkbyksXHJcbiAgICAgICAgXCIjcmVzdWx0YWRvXCI6cmVzdWx0YWRvLFxyXG4gICAgfTtcclxuICAgIHZhciByZSA9IG5ldyBSZWdFeHAoT2JqZWN0LmtleXMoc2ltcGxpZmljYXRlZENoYXJzKS5qb2luKFwifFwiKSxcImdpXCIpO1xyXG5cclxuICAgIHJldHVybiB0ZXh0LnJlcGxhY2UocmUsIGZ1bmN0aW9uKG1hdGNoZWQpe1xyXG4gICAgICAgIHJldHVybiBzaW1wbGlmaWNhdGVkQ2hhcnNbbWF0Y2hlZC50b0xvd2VyQ2FzZSgpXTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ290b1NpbmNyb25pemFyKCl7XHJcbiAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCAnJywgYCR7bG9jYXRpb24ub3JpZ2luK2xvY2F0aW9uLnBhdGhuYW1lfS8uLi9tZW51I2k9c2luY3Jvbml6YXJgKTtcclxuICAgIGxvY2F0aW9uLnJlbG9hZCgpOyAgIFxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ290b0NhbXBvKCl7XHJcbiAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCAnJywgYCR7bG9jYXRpb24ub3JpZ2luK2xvY2F0aW9uLnBhdGhuYW1lfS8uLi9jYW1wb2ApO1xyXG4gICAgbG9jYXRpb24ucmVsb2FkKCk7ICAgXHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnb3RvQ29uc2lzdGlyKG9wZXJhdGl2bzpJZE9wZXJhdGl2byx0YXJlYTpJZFRhcmVhLCBpZEVuYzpJZEVuYyl7XHJcbiAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCAnJywgYCR7bG9jYXRpb24ub3JpZ2luK2xvY2F0aW9uLnBhdGhuYW1lfS8uLi9tZW51I3c9Y29uc2lzdGlyX2VuY3Vlc3RhJnVwPXtcIm9wZXJhdGl2b1wiOlwiJHtvcGVyYXRpdm99XCIsXCJ0YXJlYVwiOlwiJHt0YXJlYX1cIixcImVuY3Vlc3RhXCI6JHtpZEVuY319JmF1dG9wcm9jZWQ9dHJ1ZWApO1xyXG4gICAgbG9jYXRpb24ucmVsb2FkKCk7ICAgXHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRDYWNoZVZlcnNpb24oKXtcclxuICAgIHJldHVybiBteS5nZXRMb2NhbFZhcignYXBwLWNhY2hlLXZlcnNpb24nKTtcclxufVxyXG5cclxudmFyIHJlZGlyZWN0SWZOb3RMb2dnZWQgPSBmdW5jdGlvbiByZWRpcmVjdElmTm90TG9nZ2VkKGVycjpFcnJvcil7XHJcbiAgICBpZihlcnIubWVzc2FnZSA9PSBteS5tZXNzYWdlcy5ub3RMb2dnZWQpe1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCk9PntcclxuICAgICAgICAgICAgaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCwgJycsIGAke2xvY2F0aW9uLm9yaWdpbitsb2NhdGlvbi5wYXRobmFtZX0vLi4vbG9naW4ke2xvY2F0aW9uLmhhc2h9YCk7XHJcbiAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpOyAgIFxyXG4gICAgICAgIH0sMTUwMClcclxuICAgICAgICBcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRyYWVyRXN0cnVjdHVyYShwYXJhbXM6e29wZXJhdGl2bzogc3RyaW5nfSl7XHJcbiAgICB2YXIgZXN0cnVjdHVyYSA9ICBhd2FpdCBteS5hamF4Lm9wZXJhdGl2b19lc3RydWN0dXJhX2NvbXBsZXRhKHBhcmFtcyk7XHJcbiAgICB2YXIgY2FzaWxsZXJvc09yaWdpbmFsZXM6e30gPSBlc3RydWN0dXJhLmZvcm11bGFyaW9zO1xyXG4gICAgLy9UT0RPOiBHRU5FUkFMSVpBUlxyXG4gICAgLy9AdHMtaWdub3JlXHJcbiAgICAvLyBjYXNpbGxlcm9zT3JpZ2luYWxlc1snRjpGMl9wZXJzb25hcyddPWNhc2lsbGVyb3NPcmlnaW5hbGVzWydGOkYyJ10uY2hpbGRzLmZpbmQoY2FzaWxsZXJvPT5jYXNpbGxlcm8uZGF0YS5jYXNpbGxlcm89PSdMUCcpO1xyXG4gICAgdmFyIG1haW5Gb3JtOklkRm9ybXVsYXJpb3x1bmRlZmluZWQ7XHJcbiAgICAvL0B0cy1pZ25vcmVcclxuICAgIHZhciBjYXNpbGxlcm9zVG9kb3NGb3JtdWxhcmlvczp7W2YgaW4gSWRGb3JtdWxhcmlvXTp7Y2FzaWxsZXJvczpGb3JtdWxhcmlvLCBlc3RydWN0dXJhUm93VmFsaWRhdG9yOkVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3J9fT1cclxuICAgICAgICBsaWtlQXIoY2FzaWxsZXJvc09yaWdpbmFsZXMpLm1hcChcclxuICAgICAgICAgICAgKGNhc2lsbGVyb3NKZXJhcnF1aXphZG9zOmFueSwgaWRGb3JtdWxhcmlvKT0+e1xyXG4gICAgICAgICAgICAgICAgdmFyIGNhc2lsbGVyb3NBcGxhbmFkb3M6Q2FzaWxsZXJvc0ltcGxlbWVudGFkb3MgPSBhcGxhbmFyTGFDdXJ2YShjYXNpbGxlcm9zSmVyYXJxdWl6YWRvcyk7XHJcbiAgICAgICAgICAgICAgICBpZihjYXNpbGxlcm9zQXBsYW5hZG9zLnRpcG9jPT0nRicgJiYgY2FzaWxsZXJvc0FwbGFuYWRvcy5mb3JtdWxhcmlvX3ByaW5jaXBhbCl7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFpbkZvcm09aWRGb3JtdWxhcmlvO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXNpbGxlcm9zOiBjYXNpbGxlcm9zQXBsYW5hZG9zLFxyXG4gICAgICAgICAgICAgICAgICAgIGVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3I6IGdlbmVyYXJFc3RydWN0dXJhUm93VmFsaWRhdG9yKGNhc2lsbGVyb3NBcGxhbmFkb3MsIGlkRm9ybXVsYXJpbylcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICkucGxhaW4oKTtcclxuICAgIGVzdHJ1Y3R1cmEuZm9ybXVsYXJpb3MgPSBjYXNpbGxlcm9zVG9kb3NGb3JtdWxhcmlvc1xyXG4gICAgcmV0dXJuIGVzdHJ1Y3R1cmE7XHJcbn1cclxuXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkbVRyYWVyRGF0b3NGb3JtdWxhcmlvKG9wdHM6e29wZXJhdGl2bzpJZE9wZXJhdGl2bywgbW9kb0RlbW86Ym9vbGVhbiwgZm9yUGtSYWl6PzpGb3JQa1JhaXp9KXtcclxuICAgIHZhciBnZXRDYXNvU3RhdGU9KCk6Q2Fzb1N0YXRlPT4gbXlPd24uZ2V0TG9jYWxWYXIoTE9DQUxfU1RPUkFHRV9TVEFURV9OQU1FKTtcclxuICAgIHZhciBzZXRDYXNvU3RhdGU9KGNhc29TdGF0ZTpDYXNvU3RhdGUpPT4gbXlPd24uc2V0TG9jYWxWYXIoTE9DQUxfU1RPUkFHRV9TVEFURV9OQU1FLCBjYXNvU3RhdGUpO1xyXG4gICAgXHJcbiAgICB2YXIgbG9hZFN0YXRlID0gYXN5bmMgZnVuY3Rpb24gbG9hZFN0YXRlKCk6UHJvbWlzZTxDYXNvU3RhdGU+e1xyXG4gICAgICAgIHZhciBjYXNvU3RhdGU6Q2Fzb1N0YXRlfG51bGwgPSBnZXRDYXNvU3RhdGUoKTtcclxuICAgICAgICB2YXIgaW5pdGlhbFN0YXRlID0ge1xyXG4gICAgICAgICAgICBvcGNpb25lczp7XHJcbiAgICAgICAgICAgICAgICBmb3JQazpudWxsLFxyXG4gICAgICAgICAgICAgICAgcGlsYUZvclBrOltdLFxyXG4gICAgICAgICAgICAgICAgbW9kb0Rlc3BsaWVndWU6J3JlbGV2YW1pZW50bycsXHJcbiAgICAgICAgICAgICAgICBtb2RvRGlyZWN0bzpmYWxzZSxcclxuICAgICAgICAgICAgICAgIGNvbkNhbXBvT3BjaW9uZXM6ZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBzYWx0b0F1dG9tYXRpY286dHJ1ZSwgXHJcbiAgICAgICAgICAgICAgICBiaWVudmVuaWRvOnRydWUsXHJcbiAgICAgICAgICAgICAgICBtb2RvQm9ycmFyUmVzcHVlc3RhOm51bGwsXHJcbiAgICAgICAgICAgIH0gYXMgQ2Fzb1N0YXRlW1wib3BjaW9uZXNcIl0sIC8vIHBvbmVyIGxvcyB2YWxvcmVzIHBvciBkZWZlY3RvIG3DoXMgYWJham9cclxuICAgICAgICAgICAgbW9kbzp7XHJcbiAgICAgICAgICAgICAgICAvL0B0cy1pZ25vcmUgZXMgdW4gYm9vbGVhbm8gcGVybyBwb25nbyBhaMOtIGxvcyBkYXRvcyBkZSBkZW1vIVxyXG4gICAgICAgICAgICAgICAgZGVtbzogXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgIG15T3duLmNvbmZpZy5jb25maWcuYW1iaWVudGU9PSd0ZXN0JyB8fCBteU93bi5jb25maWcuY29uZmlnLmFtYmllbnRlPT0nZGVtbycsXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGFzIENhc29TdGF0ZTtcclxuICAgICAgICBpZihjYXNvU3RhdGUpe1xyXG4gICAgICAgICAgICBpbml0aWFsU3RhdGUgPSB7XHJcbiAgICAgICAgICAgICAgICAuLi5pbml0aWFsU3RhdGUsIFxyXG4gICAgICAgICAgICAgICAgb3BjaW9uZXM6Y2Fzb1N0YXRlLm9wY2lvbmVzLFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKG9wdHMuZm9yUGtSYWl6KXtcclxuICAgICAgICAgICAgaW5pdGlhbFN0YXRlLm9wY2lvbmVzLmZvclBrPW9wdHMuZm9yUGtSYWl6O1xyXG4gICAgICAgICAgICBpbml0aWFsU3RhdGUub3BjaW9uZXMubW9kb0RpcmVjdG89ISFvcHRzLmZvclBrUmFpejtcclxuICAgICAgICAgICAgaW5pdGlhbFN0YXRlLm9wY2lvbmVzLnBpbGFGb3JQaz1bXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIGFkZHJQYXJhbXM9bXlPd24uVXJpU2VhcmNoVG9PYmplY3QobG9jYXRpb24uaGFzaHx8bG9jYXRpb24uc2VhcmNofHwnJyk7XHJcbiAgICAgICAgaWYoYWRkclBhcmFtcy5zdGF0ZV9mb3JQayl7XHJcbiAgICAgICAgICAgIGluaXRpYWxTdGF0ZS5vcGNpb25lcy5mb3JQaz1KU09OLnBhcnNlKGFkZHJQYXJhbXMuc3RhdGVfZm9yUGspO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZihhZGRyUGFyYW1zLnN0YXRlX3BpbGFGb3JQayl7XHJcbiAgICAgICAgICAgIGluaXRpYWxTdGF0ZS5vcGNpb25lcy5waWxhRm9yUGs9YWRkclBhcmFtcy5zdGF0ZV9waWxhRm9yUGsuc3BsaXQoJ3wnKS5tYXAoaj0+SlNPTi5wYXJzZShqKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpbml0aWFsU3RhdGU7XHJcbiAgICB9XHJcbiAgICB2YXIgc2F2ZVN0YXRlID0gZnVuY3Rpb24gc2F2ZVN0YXRlKHN0YXRlOkNhc29TdGF0ZSl7XHJcbiAgICAgICAgc2V0Q2Fzb1N0YXRlKHN0YXRlKTtcclxuICAgIH1cclxuICAgIC8qIERFRklOSUNJT04gQ09OVFJPTEFET1IgKi9cclxuICAgIHZhciBpbml0aWFsU3RhdGU6Q2Fzb1N0YXRlID0gYXdhaXQgbG9hZFN0YXRlKCk7XHJcbiAgICBjb25zdCBoZHJSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcihyZWR1Y2VycywgaW5pdGlhbFN0YXRlKTtcclxuICAgIC8qIEZJTiBERUZJTklDSU9OIENPTlRST0xBRE9SICovXHJcbiAgICAvKiBDQVJHQSBZIEdVQVJEQURPIERFIFNUQVRFICovXHJcbiAgICAvKiBDUkVBQ0lPTiBTVE9SRSAqL1xyXG4gICAgY29uc3Qgc3RvcmUgPSBjcmVhdGVTdG9yZShoZHJSZWR1Y2VyLCBpbml0aWFsU3RhdGUpOyBcclxuICAgIHNhdmVTdGF0ZShzdG9yZS5nZXRTdGF0ZSgpKTtcclxuICAgIHN0b3JlLnN1YnNjcmliZShmdW5jdGlvbigpe1xyXG4gICAgICAgICBzYXZlU3RhdGUoc3RvcmUuZ2V0U3RhdGUoKSk7XHJcbiAgICB9KTtcclxuICAgIC8qIEZJTiBDUkVBQ0lPTiBTVE9SRSAqL1xyXG4gICAgLy9IRFIgQ09OIFNUT1JFIENSRUFET1xyXG4gICAgcmV0dXJuIHN0b3JlO1xyXG59Il19
|
|
318
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkdXgtZm9ybXVsYXJpby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91bmxvZ2dlZC9yZWR1eC1mb3JtdWxhcmlvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBLGlDQUFvQztJQUNwQyxtQ0FVaUI7SUFDakIsNkRBQW9GO0lBRXBGLGtDQUFrQztJQUNsQyw0Q0FBNEM7SUFDNUMscUNBQXFDO0lBSXJDLElBQUksRUFBRSxHQUFDLEtBQUssQ0FBQztJQUViLE1BQU0sd0JBQXdCLEdBQUUsV0FBVyxDQUFDO0lBRTVDLFNBQVMsVUFBVSxDQUFDLEtBQWdCLEVBQUUsU0FBaUI7UUFDbkQsSUFBSSxVQUFVLEdBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUUsUUFBUSxDQUFDLE1BQU0sSUFBRSxFQUFFLENBQUMsQ0FBQztRQUMzRSxLQUFLLENBQUMsaUJBQWlCLGlDQUNoQixVQUFVLEtBQ2IsV0FBVyxFQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBQSxvQkFBWSxFQUFDLEtBQUssQ0FBQyxFQUN4RCxlQUFlLEVBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxvQkFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUN2RCxDQUFDO0lBQ1AsQ0FBQztJQUVELElBQUksUUFBUSxHQUFDO1FBQ1QsZUFBZSxFQUFFLENBQUMsT0FBd0MsRUFBRSxFQUFFLENBQzFELFVBQVMsS0FBZ0I7WUFDckIsdUNBQ08sS0FBSyxLQUNSLFFBQVEsa0NBQ0QsS0FBSyxDQUFDLFFBQVEsS0FDakIsY0FBYyxFQUFDLE9BQU8sQ0FBQyxjQUFjLE9BRTVDO1FBQ0wsQ0FBQztRQUNMLGtCQUFrQixFQUFFLENBQUMsT0FBNEMsRUFBRSxFQUFFLENBQ2pFLFVBQVMsS0FBZ0I7WUFDckIsSUFBSSxLQUFLLEdBQUcsT0FB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QyxDQUFDO3FCQUNsRTtvQkFDRCxJQUFHLFVBQVUsQ0FBQyxlQUFlLEVBQUM7d0JBQzFCLFlBQVksQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFFLFVBQVUsQ0FBQyxlQUEwQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBLEVBQUUsQ0FBQSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQy9HO29CQUNELE9BQU8sWUFBWSxDQUFDO2dCQUN4QixDQUFDO2FBQUEsQ0FBQTtZQUNELElBQUksU0FBUyxHQUFHLFNBQVMsU0FBUyxDQUFDLEtBQWU7Z0JBQzlDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QixDQUFDLENBQUE7WUFDRCw0QkFBNEI7WUFDNUIsSUFBSSxZQUFZLEdBQWEsTUFBTSxTQUFTLEVBQUUsQ0FBQztZQUMvQyxNQUFNLFVBQVUsR0FBRyxJQUFBLG1DQUFhLEVBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQ3pELGdDQUFnQztZQUNoQywrQkFBK0I7WUFDL0Isb0JBQW9CO1lBQ3BCLE1BQU0sS0FBSyxHQUFHLElBQUEsbUJBQVcsRUFBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDcEQsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQzVCLEtBQUssQ0FBQyxTQUFTLENBQUM7Z0JBQ1gsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxDQUFDO1lBQ0gsd0JBQXdCO1lBQ3hCLHNCQUFzQjtZQUN0QixPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO0tBQUE7SUE3REQsd0RBNkRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlU3RvcmUgfSBmcm9tIFwicmVkdXhcIjtcclxuaW1wb3J0IHsgQ2FzaWxsZXJvc0ltcGxlbWVudGFkb3MsIENhc29TdGF0ZSwgXHJcbiAgICBFc3RhZG9DYXJnYSwgRXN0cnVjdHVyYVJvd1ZhbGlkYXRvciwgXHJcbiAgICBGb3JtdWxhcmlvLCBGb3JQaywgRm9yUGtSYWl6LCBcclxuICAgIElkQ2FyZ2EsIElkRGVzdGlubywgSWRGb3JtdWxhcmlvLCBJZFZhcmlhYmxlLCBJZE9wZXJhdGl2bywgXHJcbiAgICBNb2RvRGVzcGxpZWd1ZSwgXHJcbiAgICBPcGNpb24sXHJcbiAgICB0b1BsYWluRm9yUGssXHJcbiAgICBJZEZpbixcclxuICAgIElkRW5jLFxyXG4gICAgSWRUYXJlYSxcclxufSBmcm9tIFwiLi90aXBvc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVSZWR1Y2VyLCBjcmVhdGVEaXNwYXRjaGVycywgQWN0aW9uc0Zyb20gfSBmcm9tIFwicmVkdXgtdHlwZWQtcmVkdWNlclwiO1xyXG5pbXBvcnQgeyBNb2RvQWxtYWNlbmFtaWVudG8gfSBmcm9tIFwiLi90aXBvc1wiXHJcbmltcG9ydCAqIGFzIGxpa2VBciBmcm9tIFwibGlrZS1hclwiO1xyXG5pbXBvcnQgKiBhcyBiZXN0R2xvYmFscyBmcm9tIFwiYmVzdC1nbG9iYWxzXCI7XHJcbmltcG9ydCAqIGFzIEpTT040YWxsIGZyb20gXCJqc29uNGFsbFwiO1xyXG5cclxuaW1wb3J0IHsgT3BjaW9uIGFzIFJvd1ZhbGlkYXRvck9wY2lvbiB9IGZyb20gXCJyb3ctdmFsaWRhdG9yXCI7XHJcblxyXG52YXIgbXk9bXlPd247XHJcblxyXG5jb25zdCBMT0NBTF9TVE9SQUdFX1NUQVRFX05BTUUgPSdoZHItc3RhdGUnO1xyXG5cclxuZnVuY3Rpb24gZm9yUGtUb1VybChmb3JQazpGb3JQa3xudWxsLCBwaWxhRm9yUGs6Rm9yUGtbXSl7XHJcbiAgICB2YXIgYWRkclBhcmFtcz1teU93bi5VcmlTZWFyY2hUb09iamVjdChsb2NhdGlvbi5oYXNofHxsb2NhdGlvbi5zZWFyY2h8fCcnKTtcclxuICAgIG15T3duLnJlcGxhY2VBZGRyUGFyYW1zKHtcclxuICAgICAgICAuLi5hZGRyUGFyYW1zLCBcclxuICAgICAgICBzdGF0ZV9mb3JQazpmb3JQayA9PSBudWxsID8gJ251bGwnIDogdG9QbGFpbkZvclBrKGZvclBrKSwgXHJcbiAgICAgICAgc3RhdGVfcGlsYUZvclBrOnBpbGFGb3JQay5tYXAodG9QbGFpbkZvclBrKS5qb2luKCd8JylcclxuICAgIH0pO1xyXG59XHJcblxyXG52YXIgcmVkdWNlcnM9e1xyXG4gICAgTU9ET19ERVNQTElFR1VFOiAocGF5bG9hZDoge21vZG9EZXNwbGllZ3VlOk1vZG9EZXNwbGllZ3VlfSkgPT4gXHJcbiAgICAgICAgZnVuY3Rpb24oc3RhdGU6IENhc29TdGF0ZSl7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICAgICAgICAgIG9wY2lvbmVzOntcclxuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZS5vcGNpb25lcyxcclxuICAgICAgICAgICAgICAgICAgICBtb2RvRGVzcGxpZWd1ZTpwYXlsb2FkLm1vZG9EZXNwbGllZ3VlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgQ0FNQklBUl9GT1JNVUxBUklPOiAocGF5bG9hZDoge2ZvclBrOkZvclBrLCBhcGlsYXJWdWVsdGE6Ym9vbGVhbn0pID0+IFxyXG4gICAgICAgIGZ1bmN0aW9uKHN0YXRlOiBDYXNvU3RhdGUpe1xyXG4gICAgICAgICAgICB2YXIgZm9yUGsgPSBwYXlsb2FkLmZvclBrO1xyXG4gICAgICAgICAgICB2YXIgcGlsYUZvclBrID0gcGF5bG9hZC5hcGlsYXJWdWVsdGE/KFxyXG4gICAgICAgICAgICAgICAgc3RhdGUub3BjaW9uZXMuZm9yUGs9PW51bGw/W106Wy4uLnN0YXRlLm9wY2lvbmVzLnBpbGFGb3JQaywgc3RhdGUub3BjaW9uZXMuZm9yUGtdXHJcbiAgICAgICAgICAgICk6c3RhdGUub3BjaW9uZXMucGlsYUZvclBrO1xyXG4gICAgICAgICAgICBmb3JQa1RvVXJsKGZvclBrLCBwaWxhRm9yUGspO1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgICAgICAgICBvcGNpb25lczp7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUub3BjaW9uZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yUGssXHJcbiAgICAgICAgICAgICAgICAgICAgcGlsYUZvclBrXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgVk9MVkVSX0RFX0ZPUk1VTEFSSU86ICh7bWFnbml0dWRSZXRyb2Nlc299OiB7bWFnbml0dWRSZXRyb2Nlc286bnVtYmVyfSkgPT4gXHJcbiAgICAgICAgZnVuY3Rpb24oc3RhdGU6IENhc29TdGF0ZSl7XHJcbiAgICAgICAgICAgIHZhciBmb3JQayA9IHN0YXRlLm9wY2lvbmVzLnBpbGFGb3JQa1tzdGF0ZS5vcGNpb25lcy5waWxhRm9yUGsubGVuZ3RoLW1hZ25pdHVkUmV0cm9jZXNvXXx8bnVsbDtcclxuICAgICAgICAgICAgdmFyIHBpbGFGb3JQayA9IHN0YXRlLm9wY2lvbmVzLnBpbGFGb3JQay5zbGljZSgwLHN0YXRlLm9wY2lvbmVzLnBpbGFGb3JQay5sZW5ndGgtbWFnbml0dWRSZXRyb2Nlc28pO1xyXG4gICAgICAgICAgICBmb3JQa1RvVXJsKGZvclBrLCBwaWxhRm9yUGspO1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgICAgICAgICBvcGNpb25lczp7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUub3BjaW9uZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yUGssXHJcbiAgICAgICAgICAgICAgICAgICAgcGlsYUZvclBrXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgRVNUQURPX0NBUkdBOiAocGF5bG9hZDoge2lkQ2FyZ2E6SWRDYXJnYSwgZXN0YWRvX2NhcmdhOkVzdGFkb0NhcmdhfSkgPT5cclxuICAgICAgICBmdW5jdGlvbihzdGF0ZTogQ2Fzb1N0YXRlKXtcclxuICAgICAgICAgICAgcmV0dXJuIHN0YXRlXHJcbiAgICAgICAgICAgIC8vREVTQUNUSVZBRE9cclxuICAgICAgICAgICAgLy9yZXR1cm4ge1xyXG4gICAgICAgICAgICAvLyAgICAuLi5zdGF0ZSxcclxuICAgICAgICAgICAgLy8gICAgZGF0b3M6e1xyXG4gICAgICAgICAgICAvLyAgICAgICAgLi4uc3RhdGUuZGF0b3MsXHJcbiAgICAgICAgICAgIC8vICAgICAgICBjYXJnYXM6e1xyXG4gICAgICAgICAgICAvLyAgICAgICAgICAgIC4uLnN0YXRlLmRhdG9zLmNhcmdhcyxcclxuICAgICAgICAgICAgLy8gICAgICAgICAgICBbcGF5bG9hZC5pZENhcmdhXToge1xyXG4gICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAuLi5zdGF0ZS5kYXRvcy5jYXJnYXNbcGF5bG9hZC5pZENhcmdhXSxcclxuICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgZXN0YWRvX2NhcmdhOiBwYXlsb2FkLmVzdGFkb19jYXJnYVxyXG4gICAgICAgICAgICAvLyAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gICAgICAgIH1cclxuICAgICAgICAgICAgLy8gICAgfVxyXG4gICAgICAgICAgICAvL31cclxuICAgICAgICB9LFxyXG4gICAgVk9MVkVSX0hEUjogKF9wYXlsb2FkOiB7fSkgPT4gXHJcbiAgICAgICAgZnVuY3Rpb24oc3RhdGU6IENhc29TdGF0ZSl7XHJcbiAgICAgICAgICAgIHZhciBmb3JQayA9IG51bGw7XHJcbiAgICAgICAgICAgIHZhciBwaWxhRm9yUGs6Rm9yUGtbXSA9IFtdO1xyXG4gICAgICAgICAgICBmb3JQa1RvVXJsKGZvclBrLCBwaWxhRm9yUGspO1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgICAgICAgICBvcGNpb25lczp7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUub3BjaW9uZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yUGssXHJcbiAgICAgICAgICAgICAgICAgICAgcGlsYUZvclBrXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgU0VUX09QQ0lPTjogKHBheWxvYWQ6IHtvcGNpb246a2V5b2YgQ2Fzb1N0YXRlWydvcGNpb25lcyddLCB2YWxvcjphbnl9KSA9PiBcclxuICAgICAgICBmdW5jdGlvbihzdGF0ZTogQ2Fzb1N0YXRlKXtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgICAgICAgICAgb3BjaW9uZXM6e1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLm9wY2lvbmVzLFxyXG4gICAgICAgICAgICAgICAgICAgIFtwYXlsb2FkLm9wY2lvbl06IHBheWxvYWQudmFsb3JcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICBSRVNFVF9PUENJT05FUzogKF9wYXlsb2FkOiB7fSkgPT4gXHJcbiAgICAgICAgZnVuY3Rpb24oc3RhdGU6IENhc29TdGF0ZSl7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICAgICAgICAgIG9wY2lvbmVzOntcclxuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZS5vcGNpb25lcyxcclxuICAgICAgICAgICAgICAgICAgICBmb3JQazogbnVsbFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgIFJFSU5JQ0lBUl9ERU1POiAoX3BheWxvYWQ6IHt9KSA9PlxyXG4gICAgICAgIGZ1bmN0aW9uKHN0YXRlOiBDYXNvU3RhdGUpe1xyXG4gICAgICAgICAgICBpZighc3RhdGUubW9kby5kZW1vKSByZXR1cm4gc3RhdGU7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgY29waW8gbG9zIGRhdG9zIGluaWNpYWxlc1xyXG4gICAgICAgICAgICAgICAgZGF0b3M6YmVzdEdsb2JhbHMuZGVlcENvcHkoc3RhdGUubW9kby5kZW1vKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgIENPTkZJUk1BUl9CT1JSQVJfUkVTUFVFU1RBOiAocGF5bG9hZDoge2ZvclBrOkZvclBrLCB2YXJpYWJsZTpJZFZhcmlhYmxlfG51bGx9KSA9PiBcclxuICAgICAgICBmdW5jdGlvbihzdGF0ZTogQ2Fzb1N0YXRlKXtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgICAgICAgICAgb3BjaW9uZXM6e1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLm9wY2lvbmVzLFxyXG4gICAgICAgICAgICAgICAgICAgIGZvclBrOnBheWxvYWQuZm9yUGssXHJcbiAgICAgICAgICAgICAgICAgICAgbW9kb0JvcnJhclJlc3B1ZXN0YTogcGF5bG9hZC52YXJpYWJsZVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgQWN0aW9uRm9ybXVsYXJpb1N0YXRlID0gQWN0aW9uc0Zyb208dHlwZW9mIHJlZHVjZXJzPjtcclxuLyogRklOIEFDQ0lPTkVTICovXHJcblxyXG5leHBvcnQgY29uc3QgZGlzcGF0Y2hlcnMgPSBjcmVhdGVEaXNwYXRjaGVycyhyZWR1Y2Vycyk7XHJcblxyXG5pbnRlcmZhY2UgSURhdGFTZXBhcmFkYTxUIGV4dGVuZHMge3RpcG9jOnN0cmluZ30+IHtcclxuICAgIGRhdGE6VCxcclxuICAgIGNoaWxkczpJRGF0YVNlcGFyYWRhPFQ+W11cclxufVxyXG5cclxudHlwZSBJRGF0YUNvbkNhc2lsbGVyb3M8VD4gPSBUICYge1xyXG4gICAgY2FzaWxsZXJvczpyZWFkb25seSBJRGF0YUNvbkNhc2lsbGVyb3M8VD5bXVxyXG59XHJcblxyXG5jb25zdCBjYXNpbGxlcm9WYWNpbz17c2FsdG86bnVsbCwgZGVzcGxpZWd1ZTpudWxsLCBhY2xhcmFjaW9uOm51bGwsIHZlcl9pZDpudWxsLCBjYXNpbGxlcm9zOltdLCBsZWVyOm51bGwsXHJcbiAgICBkZXNwbGllZ3VlRW5jYWJlemFkbzpudWxsLCBkZXNwbGllZ3VlQ29udGVuaWRvOm51bGwsIGRlc3BsaWVndWVPY3VsdGE6bnVsbCwgZGVzcGxpZWd1ZVRpcG9JbnB1dDpudWxsXHJcbn1cclxuXHJcbmNvbnN0IG9wY2lvbmVzU2lObzogT3BjaW9uW10gPSBbXHJcbiAgICB7Li4uY2FzaWxsZXJvVmFjaW8sIGNhc2lsbGVybzoxLCB0aXBvYzonTycsIG5vbWJyZTonU8OtJ30sXHJcbiAgICB7Li4uY2FzaWxsZXJvVmFjaW8sIGNhc2lsbGVybzoyLCB0aXBvYzonTycsIG5vbWJyZTonTm8nfSxcclxuXVxyXG5cclxudHlwZSBDYXJhY2VyaXphY2lvbkVzdGFkb1Jvd1ZhbGlkYXRvcj17XHJcbiAgICBjb3JyZWN0bzpib29sZWFuLFxyXG4gICAgY29uVmFsb3I6Ym9vbGVhbnxudWxsLCAvLyBudWxsID0gdW5rbm93blxyXG59XHJcblxyXG5mdW5jdGlvbiBhcGxhbmFyTGFDdXJ2YTxUIGV4dGVuZHMge3RpcG9jOnN0cmluZywgZGVzcGxpZWd1ZT86c3RyaW5nfT4oY2FzaWxsZXJvc0RhdGE6SURhdGFTZXBhcmFkYTxUPik6SURhdGFDb25DYXNpbGxlcm9zPFR8T3BjaW9uPntcclxuICAgIHZhciBkYXRhID0gY2FzaWxsZXJvc0RhdGEuZGF0YVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5kYXRhLFxyXG4gICAgICAgIGRlc3BsaWVndWVDb250ZW5pZG86IGRhdGEuZGVzcGxpZWd1ZT8uaW5jbHVkZXMoJ2hvcml6b250YWwnKT8naG9yaXpvbnRhbCc6ZGF0YS5kZXNwbGllZ3VlPy5pbmNsdWRlcygndmVydGljYWwnKT8ndmVydGljYWwnOm51bGwsXHJcbiAgICAgICAgZGVzcGxpZWd1ZUVuY2FiZXphZG86IGRhdGEuZGVzcGxpZWd1ZT8uaW5jbHVkZXMoJ2xhdGVyYWwnKT8nbGF0ZXJhbCc6ZGF0YS5kZXNwbGllZ3VlPy5pbmNsdWRlcygnc3VwZXJpb3InKT8nc3VwZXJpb3InOm51bGwsXHJcbiAgICAgICAgZGVzcGxpZWd1ZU9jdWx0YTogZGF0YS5kZXNwbGllZ3VlPy5pbmNsdWRlcygnb2N1bHRhcicpPz9udWxsLFxyXG4gICAgICAgIGRlc3BsaWVndWVUaXBvSW5wdXQ6IGRhdGEuZGVzcGxpZWd1ZT8uaW5jbHVkZXMoJ3RlbGVmb25vJyk/J3RlbCc6bnVsbCxcclxuICAgICAgICBjYXNpbGxlcm9zOiAhY2FzaWxsZXJvc0RhdGEuY2hpbGRzLmxlbmd0aCAmJiBjYXNpbGxlcm9zRGF0YS5kYXRhLnRpcG9jPT0nT00nID8gb3BjaW9uZXNTaU5vIDpcclxuICAgICAgICAgICAgIGNhc2lsbGVyb3NEYXRhLmNoaWxkcy5tYXAoY2FzaWxsZXJvPT5hcGxhbmFyTGFDdXJ2YShjYXNpbGxlcm8pKVxyXG4gICAgfVxyXG59XHJcblxyXG4vLyB0eXBlIEFueVJlZjxUIGV4dGVuZHMge30+PVtULCBrZXlvZiBUXTtcclxuXHJcbmZ1bmN0aW9uIHJlbGxlbmFyVmFyaWFibGVzWU9wY2lvbmVzKGlkRm9ybXVsYXJpbzpJZEZvcm11bGFyaW8sIGVzdHJ1Y3R1cmE6RXN0cnVjdHVyYVJvd1ZhbGlkYXRvciwgY2FzaWxsZXJvOkNhc2lsbGVyb3NJbXBsZW1lbnRhZG9zLCB1bmlkYWRBbmFsaXNpcz86c3RyaW5nfG51bGwsXHJcbiAgICBzdWJvcmRpbmFkYVZhcj86SWRWYXJpYWJsZSwgc3Vib3JkaW5hZGFWYWxvcj86YW55XHJcbil7XHJcbiAgICBpZihjYXNpbGxlcm8udmFyX25hbWUgIT0gbnVsbCB8fCBjYXNpbGxlcm8udGlwb2M9PSdGSUxUUk8nKXtcclxuICAgICAgICB2YXIgdmFyX25hbWU6SWRWYXJpYWJsZVxyXG4gICAgICAgIGlmKGNhc2lsbGVyby50aXBvYz09J0ZJTFRSTycpe1xyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlIHBvbmdvIGNvbW8gbm9tYnJlIGRlIHZhcmlhYmxlIGVsIGZpbHRybztcclxuICAgICAgICAgICAgdmFyX25hbWUgPSBjYXNpbGxlcm8uY2FzaWxsZXJvO1xyXG4gICAgICAgIH1lbHNlIGlmKGNhc2lsbGVyby52YXJfbmFtZS5lbmRzV2l0aCgnIScpKXtcclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSBsYXMgdmFyaWFibGVzIGVzcGVqbyBzb24gbGFzIHF1ZSB0ZXJtaW5hbiBlbiAhXHJcbiAgICAgICAgICAgIHZhcl9uYW1lID0gY2FzaWxsZXJvLnZhcl9uYW1lX2VzcGVjaWFsLnJlcGxhY2UoLyErJC8sJycpO1xyXG4gICAgICAgICAgICBjYXNpbGxlcm8udmFyX25hbWUgPSB2YXJfbmFtZTtcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgdmFyX25hbWUgPSBjYXNpbGxlcm8udmFyX25hbWVcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHZhcmlhYmxlRGVmPXtcclxuICAgICAgICAgICAgdGlwbzpjYXNpbGxlcm8udGlwb2M9PSdGSUxUUk8nPydmaWx0cm8nOmNhc2lsbGVyby50aXBvYz09J09NJyB8fCBjYXNpbGxlcm8udGlwb3Zhcj09J3NpX25vJz8nb3BjaW9uZXMnOmNhc2lsbGVyby50aXBvdmFyLFxyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlIG9wdGF0aXZvIHBvZHLDrWEgbm8gZXhpc3RpciwgcXVlZGFyw6EgbnVsbC5cclxuICAgICAgICAgICAgb3B0YXRpdmE6Y2FzaWxsZXJvLm9wdGF0aXZvISxcclxuICAgICAgICAgICAgb3BjaW9uZXM6KGNhc2lsbGVyby50aXBvYz09J09NJyB8fCBjYXNpbGxlcm8udGlwb3Zhcj09J29wY2lvbmVzJyB8fCBjYXNpbGxlcm8udGlwb3Zhcj09J3NpX25vJz9cclxuICAgICAgICAgICAgICAgIGxpa2VBci5jcmVhdGVJbmRleChjYXNpbGxlcm8uY2FzaWxsZXJvcywgJ2Nhc2lsbGVybycpOnt9KSBhcyB1bmtub3duIGFzIHsgW2tleTogc3RyaW5nXTogUm93VmFsaWRhdG9yT3BjaW9uPElkVmFyaWFibGU+IH0sXHJcbiAgICAgICAgICAgIHNhbHRvOmNhc2lsbGVyby5zYWx0byBhcyBJZFZhcmlhYmxlLFxyXG4gICAgICAgICAgICBzYWx0b05zTnI6J3NhbHRvX25zX25jJyBpbiBjYXNpbGxlcm8gJiYgY2FzaWxsZXJvLnNhbHRvX25zX25jIHx8IG51bGwsXHJcbiAgICAgICAgICAgIGZ1bmNpb25IYWJpbGl0YXI6Y2FzaWxsZXJvLmV4cHJlc2lvbl9oYWJpbGl0YXJfanMsXHJcbiAgICAgICAgICAgIGZ1bmNpb25BdXRvSW5ncmVzYXI6Y2FzaWxsZXJvLmV4cHJlc2lvbl9hdXRvaW5ncmVzYXJfanMsXHJcbiAgICAgICAgICAgIGNhbGN1bGFkYTpcclxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgLy8gVE9ETy4gQXZlcmlndWFyIHNpIGxhcyBwcmVndW50YXMgeSBmaWx0cm9zIHB1ZWRlbiB0ZW5lciB1bmlkYWQgZGUgYW7DoWxpc2lzXHJcbiAgICAgICAgICAgICAgICBjYXNpbGxlcm8udW5pZGFkX2FuYWxpc2lzICYmIGNhc2lsbGVyby51bmlkYWRfYW5hbGlzaXMhPXVuaWRhZEFuYWxpc2lzIFxyXG4gICAgICAgICAgICAgICAgfHwgY2FzaWxsZXJvLmNhbGN1bGFkYSxcclxuICAgICAgICAgICAgbGlicmU6Y2FzaWxsZXJvLmxpYnJlXHJcbiAgICAgICAgfSBhcyAodHlwZW9mIGVzdHJ1Y3R1cmEudmFyaWFibGVzKVtJZFZhcmlhYmxlXVxyXG4gICAgICAgIGlmKHN1Ym9yZGluYWRhVmFsb3IgIT0gdW5kZWZpbmVkKXtcclxuICAgICAgICAgICAgdmFyaWFibGVEZWYuc3Vib3JkaW5hZGFWYXIgPSBzdWJvcmRpbmFkYVZhcjtcclxuICAgICAgICAgICAgdmFyaWFibGVEZWYuc3Vib3JkaW5hZGFWYWxvciA9IHN1Ym9yZGluYWRhVmFsb3I7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVzdHJ1Y3R1cmEudmFyaWFibGVzW3Zhcl9uYW1lXT12YXJpYWJsZURlZjtcclxuICAgIH0gZWxzZSBpZiAoY2FzaWxsZXJvLnRpcG9jPT0nQkYnKXtcclxuICAgICAgIC8vIHZhciB2YXJfbmFtZSA9ICckQi5GOicrY2FzaWxsZXJvLnNhbHRvIGFzIElkVmFyaWFibGU7ICAgIC8vb3JpZ2luYWxcclxuICAgICAgICB2YXIgc2FsdG9Ob21icmU9Y2FzaWxsZXJvLnNhbHRvIS5zdWJzdHIoMCwyKT09J0Y6Jz9jYXNpbGxlcm8uc2FsdG8hLnNsaWNlKDIpOmNhc2lsbGVyby5zYWx0bztcclxuICAgICAgICB2YXIgdmFyX25hbWUgPSAnJEIuRjonK3NhbHRvTm9tYnJlIGFzIElkVmFyaWFibGU7XHJcbiAgICAgICAgY2FzaWxsZXJvLnZhcl9uYW1lX0JGID0gdmFyX25hbWU7XHJcbiAgICAgICAgbGV0IHZhcmlhYmxlRGVmPXtcclxuICAgICAgICAgICAgdGlwbzondGV4dG8nLFxyXG4gICAgICAgICAgICBsaWJyZTp0cnVlLFxyXG4gICAgICAgICAgICAuLi4oY2FzaWxsZXJvLmV4cHJlc2lvbl9oYWJpbGl0YXI/e2Z1bmNpb25IYWJpbGl0YXI6YHZhbG9yZXNbJyR7Y2FzaWxsZXJvLmV4cHJlc2lvbl9oYWJpbGl0YXJ9J10gIT09MCBgfTp7fSksXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVzdHJ1Y3R1cmEudmFyaWFibGVzW3Zhcl9uYW1lXT12YXJpYWJsZURlZjtcclxuICAgIH1cclxuICAgIGlmKGNhc2lsbGVyby5jYXNpbGxlcm9zKXtcclxuICAgICAgICBjYXNpbGxlcm8uY2FzaWxsZXJvcy5mb3JFYWNoKChjYXNpbGxlcm9IaWpvOkNhc2lsbGVyb3NJbXBsZW1lbnRhZG9zKT0+XHJcbiAgICAgICAgICAgIHJlbGxlbmFyVmFyaWFibGVzWU9wY2lvbmVzKGlkRm9ybXVsYXJpbywgZXN0cnVjdHVyYSwgY2FzaWxsZXJvSGlqbywgdW5pZGFkQW5hbGlzaXMsIGNhc2lsbGVyby52YXJfbmFtZT9jYXNpbGxlcm8udmFyX25hbWU6Y2FzaWxsZXJvLnRpcG9jPT0nTyc/c3Vib3JkaW5hZGFWYXI6dW5kZWZpbmVkLGNhc2lsbGVyby50aXBvYz09J08nP2Nhc2lsbGVyby5jYXNpbGxlcm86dW5kZWZpbmVkKVxyXG4gICAgICAgIClcclxuICAgIH1cclxufVxyXG5cclxudHlwZSBSZWdpc3Ryb0Rlc3Rpbm9zPXtbZGVzdGlubyBpbiBJZERlc3Rpbm9dOklkVmFyaWFibGV8bnVsbH07XHJcblxyXG5mdW5jdGlvbiBvYnRlbmVyRGVzdGlub3NDYXNpbGxlcm9zKGNhc2lsbGVybzpDYXNpbGxlcm9zSW1wbGVtZW50YWRvcywgZGVzdGlub3M/OlJlZ2lzdHJvRGVzdGlub3MpOlJlZ2lzdHJvRGVzdGlub3N7XHJcbiAgICBpZihkZXN0aW5vcz09bnVsbCkgcmV0dXJuIG9idGVuZXJEZXN0aW5vc0Nhc2lsbGVyb3MoY2FzaWxsZXJvLCB7fSBhcyBSZWdpc3Ryb0Rlc3Rpbm9zKTtcclxuICAgIGlmKGNhc2lsbGVyby50aXBvYz09J0ZJTFRSTycpe1xyXG4gICAgICAgIGRlc3Rpbm9zW2Nhc2lsbGVyby5jYXNpbGxlcm9dPWNhc2lsbGVyby5jYXNpbGxlcm8gYXMgSWRWYXJpYWJsZTtcclxuICAgIH1lbHNlIGlmKGNhc2lsbGVyby50aXBvYyE9J0YnICYmIGNhc2lsbGVyby50aXBvYyE9J08nICYmIGNhc2lsbGVyby50aXBvYyE9J09NJyl7XHJcbiAgICAgICAgZGVzdGlub3NbY2FzaWxsZXJvLmNhc2lsbGVyb109Y2FzaWxsZXJvLnByaW1lcmFfdmFyaWFibGV8fG51bGxcclxuICAgIH1cclxuICAgIGlmKGNhc2lsbGVyby5jYXNpbGxlcm9zKXtcclxuICAgICAgICBjYXNpbGxlcm8uY2FzaWxsZXJvcy5mb3JFYWNoKGM9Pm9idGVuZXJEZXN0aW5vc0Nhc2lsbGVyb3MoYyxkZXN0aW5vcykpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRlc3Rpbm9zO1xyXG59XHJcblxyXG5mdW5jdGlvbiByZWxsZW5hckRlc3Rpbm9zKGVzdHJ1Y3R1cmE6RXN0cnVjdHVyYVJvd1ZhbGlkYXRvciwgZGVzdGlub3M6UmVnaXN0cm9EZXN0aW5vcyk6RXN0cnVjdHVyYVJvd1ZhbGlkYXRvcntcclxuICAgIGZ1bmN0aW9uIG9idGVuZXJEZXN0aW5vKGlkVmFyaWFibGVRdWVUaWVuZVVuRGVzdGlubzpJZFZhcmlhYmxlfG51bGx8dW5kZWZpbmVkfElkRmluKTpJZFZhcmlhYmxlfG51bGx7XHJcbiAgICAgICAgcmV0dXJuIGlkVmFyaWFibGVRdWVUaWVuZVVuRGVzdGlubz09J2ZpbicgYXMgSWRWYXJpYWJsZSA/ICdmaW4nIGFzIElkVmFyaWFibGUgOiBpZFZhcmlhYmxlUXVlVGllbmVVbkRlc3Rpbm8hPW51bGwgJiYgZGVzdGlub3NbaWRWYXJpYWJsZVF1ZVRpZW5lVW5EZXN0aW5vIGFzIElkRGVzdGlub10gfHwgbnVsbFxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5lc3RydWN0dXJhLFxyXG4gICAgICAgIHZhcmlhYmxlczpsaWtlQXIoZXN0cnVjdHVyYS52YXJpYWJsZXMpLm1hcCh2YXJpYWJsZURlZj0+KHtcclxuICAgICAgICAgICAgLi4udmFyaWFibGVEZWYsXHJcbiAgICAgICAgICAgIHNhbHRvOm9idGVuZXJEZXN0aW5vKHZhcmlhYmxlRGVmLnNhbHRvKSxcclxuICAgICAgICAgICAgc2FsdG9Oc05yOm9idGVuZXJEZXN0aW5vKHZhcmlhYmxlRGVmLnNhbHRvTnNOciksXHJcbiAgICAgICAgICAgIG9wY2lvbmVzOnZhcmlhYmxlRGVmLm9wY2lvbmVzIT1udWxsID8gbGlrZUFyKHZhcmlhYmxlRGVmLm9wY2lvbmVzKS5tYXAob3BjaW9uRGVmPT4oe3NhbHRvOm9idGVuZXJEZXN0aW5vKG9wY2lvbkRlZi5zYWx0byl9KSkucGxhaW4oKTp1bmRlZmluZWRcclxuICAgICAgICB9KSkucGxhaW4oKVxyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBnZW5lcmFyRXN0cnVjdHVyYVJvd1ZhbGlkYXRvcihjYXNpbGxlcm86Q2FzaWxsZXJvc0ltcGxlbWVudGFkb3MsIGlkRm9ybXVsYXJpbzogSWRGb3JtdWxhcmlvKTpFc3RydWN0dXJhUm93VmFsaWRhdG9ye1xyXG4gICAgdmFyIGVzdHJ1Y3R1cmFJbmNvbXBsZXRhOkVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3I9e3ZhcmlhYmxlczp7fSwgbWFyY2FGaW46J2Zpbid9IGFzIHVua25vd24gYXMgRXN0cnVjdHVyYVJvd1ZhbGlkYXRvcjtcclxuICAgIHJlbGxlbmFyVmFyaWFibGVzWU9wY2lvbmVzKGlkRm9ybXVsYXJpbywgZXN0cnVjdHVyYUluY29tcGxldGEsIGNhc2lsbGVybywgXHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZSB2ZXIgc2kgY3VhbHF1aWVyIGNvc2EgcHVlZGUgdGVuZXIgdW5pZGFkX2FuYWxpc2lzXHJcbiAgICAgICAgY2FzaWxsZXJvLnVuaWRhZF9hbmFsaXNpc1xyXG4gICAgKTtcclxuICAgIHZhciBkZXN0aW5vcz1vYnRlbmVyRGVzdGlub3NDYXNpbGxlcm9zKGNhc2lsbGVybyk7XHJcbiAgICByZXR1cm4gcmVsbGVuYXJEZXN0aW5vcyhlc3RydWN0dXJhSW5jb21wbGV0YSwgZGVzdGlub3MpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZVNwZWNpYWxXb3Jkcyh0ZXh0OnN0cmluZywgbm9tYnJlOnN0cmluZywgYXBlbGxpZG86c3RyaW5nLCByZXN1bHRhZG86c3RyaW5nKTpzdHJpbmd7XHJcbiAgICBmdW5jdGlvbiBjYXBpdGFsaXplRmlyc3RMZXR0ZXIodGV4dDpzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGV4dC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHRleHQuc2xpY2UoMSk7XHJcbiAgICB9XHJcbiAgICB2YXIgc2ltcGxpZmljYXRlZENoYXJzOntbazpzdHJpbmddOnN0cmluZ309e1xyXG4gICAgICAgIFwiI25vbWJyZVwiOmNhcGl0YWxpemVGaXJzdExldHRlcihub21icmUpLFxyXG4gICAgICAgIFwiI2FwZWxsaWRvXCI6Y2FwaXRhbGl6ZUZpcnN0TGV0dGVyKGFwZWxsaWRvKSxcclxuICAgICAgICBcIiNyZXN1bHRhZG9cIjpyZXN1bHRhZG8sXHJcbiAgICB9O1xyXG4gICAgdmFyIHJlID0gbmV3IFJlZ0V4cChPYmplY3Qua2V5cyhzaW1wbGlmaWNhdGVkQ2hhcnMpLmpvaW4oXCJ8XCIpLFwiZ2lcIik7XHJcblxyXG4gICAgcmV0dXJuIHRleHQucmVwbGFjZShyZSwgZnVuY3Rpb24obWF0Y2hlZCl7XHJcbiAgICAgICAgcmV0dXJuIHNpbXBsaWZpY2F0ZWRDaGFyc1ttYXRjaGVkLnRvTG93ZXJDYXNlKCldO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnb3RvU2luY3Jvbml6YXIoKXtcclxuICAgIGhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsICcnLCBgJHtsb2NhdGlvbi5vcmlnaW4rbG9jYXRpb24ucGF0aG5hbWV9Ly4uL21lbnUjaT1zaW5jcm9uaXphcmApO1xyXG4gICAgbG9jYXRpb24ucmVsb2FkKCk7ICAgXHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnb3RvQ2FtcG8oKXtcclxuICAgIGhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsICcnLCBgJHtsb2NhdGlvbi5vcmlnaW4rbG9jYXRpb24ucGF0aG5hbWV9Ly4uL2NhbXBvYCk7XHJcbiAgICBsb2NhdGlvbi5yZWxvYWQoKTsgICBcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdvdG9Db25zaXN0aXIob3BlcmF0aXZvOklkT3BlcmF0aXZvLHRhcmVhOklkVGFyZWEsIGVuY3Vlc3RhOklkRW5jKXtcclxuICAgIC8vIFRPRE8tMjAyMy0wMzogcHJvYmFyIGNvbiBlc3RvOlxyXG4gICAgaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCwgJycsIGAke2xvY2F0aW9uLm9yaWdpbitsb2NhdGlvbi5wYXRobmFtZX0vLi4vbWVudSN3PWNvbnNpc3Rpcl9lbmN1ZXN0YSZ1cD0ke0pTT040YWxsLnRvVXJsKHtvcGVyYXRpdm8sIHRhcmVhLCBlbmN1ZXN0YX0pfSZhdXRvcHJvY2VkPXRydWVgKTtcclxuICAgIC8vIGhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsICcnLCBgJHtsb2NhdGlvbi5vcmlnaW4rbG9jYXRpb24ucGF0aG5hbWV9Ly4uL21lbnUjdz1jb25zaXN0aXJfZW5jdWVzdGEmdXA9e1wib3BlcmF0aXZvXCI6XCIke29wZXJhdGl2b31cIixcInRhcmVhXCI6XCIke3RhcmVhfVwiLFwiZW5jdWVzdGFcIjoke2VuY3Vlc3RhfX0mYXV0b3Byb2NlZD10cnVlYCk7XHJcbiAgICBsb2NhdGlvbi5yZWxvYWQoKTsgICBcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldENhY2hlVmVyc2lvbigpe1xyXG4gICAgcmV0dXJuIG15LmdldExvY2FsVmFyKCdhcHAtY2FjaGUtdmVyc2lvbicpO1xyXG59XHJcblxyXG52YXIgcmVkaXJlY3RJZk5vdExvZ2dlZCA9IGZ1bmN0aW9uIHJlZGlyZWN0SWZOb3RMb2dnZWQoZXJyOkVycm9yKXtcclxuICAgIGlmKGVyci5tZXNzYWdlID09IG15Lm1lc3NhZ2VzLm5vdExvZ2dlZCl7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKT0+e1xyXG4gICAgICAgICAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCAnJywgYCR7bG9jYXRpb24ub3JpZ2luK2xvY2F0aW9uLnBhdGhuYW1lfS8uLi9sb2dpbiR7bG9jYXRpb24uaGFzaH1gKTtcclxuICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7ICAgXHJcbiAgICAgICAgfSwxNTAwKVxyXG4gICAgICAgIFxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdHJhZXJFc3RydWN0dXJhKHBhcmFtczp7b3BlcmF0aXZvOiBzdHJpbmd9KXtcclxuICAgIHZhciBlc3RydWN0dXJhID0gIGF3YWl0IG15LmFqYXgub3BlcmF0aXZvX2VzdHJ1Y3R1cmFfY29tcGxldGEocGFyYW1zKTtcclxuICAgIHZhciBjYXNpbGxlcm9zT3JpZ2luYWxlczp7fSA9IGVzdHJ1Y3R1cmEuZm9ybXVsYXJpb3M7XHJcbiAgICAvL1RPRE86IEdFTkVSQUxJWkFSXHJcbiAgICAvL0B0cy1pZ25vcmVcclxuICAgIC8vIGNhc2lsbGVyb3NPcmlnaW5hbGVzWydGOkYyX3BlcnNvbmFzJ109Y2FzaWxsZXJvc09yaWdpbmFsZXNbJ0Y6RjInXS5jaGlsZHMuZmluZChjYXNpbGxlcm89PmNhc2lsbGVyby5kYXRhLmNhc2lsbGVybz09J0xQJyk7XHJcbiAgICB2YXIgbWFpbkZvcm06SWRGb3JtdWxhcmlvfHVuZGVmaW5lZDtcclxuICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgdmFyIGNhc2lsbGVyb3NUb2Rvc0Zvcm11bGFyaW9zOntbZiBpbiBJZEZvcm11bGFyaW9dOntjYXNpbGxlcm9zOkZvcm11bGFyaW8sIGVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3I6RXN0cnVjdHVyYVJvd1ZhbGlkYXRvcn19PVxyXG4gICAgICAgIGxpa2VBcihjYXNpbGxlcm9zT3JpZ2luYWxlcykubWFwKFxyXG4gICAgICAgICAgICAoY2FzaWxsZXJvc0plcmFycXVpemFkb3M6YW55LCBpZEZvcm11bGFyaW8pPT57XHJcbiAgICAgICAgICAgICAgICB2YXIgY2FzaWxsZXJvc0FwbGFuYWRvczpDYXNpbGxlcm9zSW1wbGVtZW50YWRvcyA9IGFwbGFuYXJMYUN1cnZhKGNhc2lsbGVyb3NKZXJhcnF1aXphZG9zKTtcclxuICAgICAgICAgICAgICAgIGlmKGNhc2lsbGVyb3NBcGxhbmFkb3MudGlwb2M9PSdGJyAmJiBjYXNpbGxlcm9zQXBsYW5hZG9zLmZvcm11bGFyaW9fcHJpbmNpcGFsKXtcclxuICAgICAgICAgICAgICAgICAgICBtYWluRm9ybT1pZEZvcm11bGFyaW87XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2lsbGVyb3M6IGNhc2lsbGVyb3NBcGxhbmFkb3MsXHJcbiAgICAgICAgICAgICAgICAgICAgZXN0cnVjdHVyYVJvd1ZhbGlkYXRvcjogZ2VuZXJhckVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3IoY2FzaWxsZXJvc0FwbGFuYWRvcywgaWRGb3JtdWxhcmlvKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKS5wbGFpbigpO1xyXG4gICAgZXN0cnVjdHVyYS5mb3JtdWxhcmlvcyA9IGNhc2lsbGVyb3NUb2Rvc0Zvcm11bGFyaW9zXHJcbiAgICByZXR1cm4gZXN0cnVjdHVyYTtcclxufVxyXG5cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRtVHJhZXJEYXRvc0Zvcm11bGFyaW8ob3B0czp7b3BlcmF0aXZvOklkT3BlcmF0aXZvLCBtb2RvRGVtbzpib29sZWFuLCBmb3JQa1JhaXo/OkZvclBrUmFpen0pe1xyXG4gICAgdmFyIGdldENhc29TdGF0ZT0oKTpDYXNvU3RhdGU9PiBteU93bi5nZXRMb2NhbFZhcihMT0NBTF9TVE9SQUdFX1NUQVRFX05BTUUpO1xyXG4gICAgdmFyIHNldENhc29TdGF0ZT0oY2Fzb1N0YXRlOkNhc29TdGF0ZSk9PiBteU93bi5zZXRMb2NhbFZhcihMT0NBTF9TVE9SQUdFX1NUQVRFX05BTUUsIGNhc29TdGF0ZSk7XHJcbiAgICBcclxuICAgIHZhciBsb2FkU3RhdGUgPSBhc3luYyBmdW5jdGlvbiBsb2FkU3RhdGUoKTpQcm9taXNlPENhc29TdGF0ZT57XHJcbiAgICAgICAgdmFyIGNhc29TdGF0ZTpDYXNvU3RhdGV8bnVsbCA9IGdldENhc29TdGF0ZSgpO1xyXG4gICAgICAgIHZhciBpbml0aWFsU3RhdGUgPSB7XHJcbiAgICAgICAgICAgIG9wY2lvbmVzOntcclxuICAgICAgICAgICAgICAgIGZvclBrOm51bGwsXHJcbiAgICAgICAgICAgICAgICBwaWxhRm9yUGs6W10sXHJcbiAgICAgICAgICAgICAgICBtb2RvRGVzcGxpZWd1ZToncmVsZXZhbWllbnRvJyxcclxuICAgICAgICAgICAgICAgIG1vZG9EaXJlY3RvOmZhbHNlLFxyXG4gICAgICAgICAgICAgICAgY29uQ2FtcG9PcGNpb25lczpmYWxzZSxcclxuICAgICAgICAgICAgICAgIHNhbHRvQXV0b21hdGljbzp0cnVlLCBcclxuICAgICAgICAgICAgICAgIGJpZW52ZW5pZG86dHJ1ZSxcclxuICAgICAgICAgICAgICAgIG1vZG9Cb3JyYXJSZXNwdWVzdGE6bnVsbCxcclxuICAgICAgICAgICAgfSBhcyBDYXNvU3RhdGVbXCJvcGNpb25lc1wiXSwgLy8gcG9uZXIgbG9zIHZhbG9yZXMgcG9yIGRlZmVjdG8gbcOhcyBhYmFqb1xyXG4gICAgICAgICAgICBtb2RvOntcclxuICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZSBlcyB1biBib29sZWFubyBwZXJvIHBvbmdvIGFow60gbG9zIGRhdG9zIGRlIGRlbW8hXHJcbiAgICAgICAgICAgICAgICBkZW1vOiBcclxuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICAgICAgbXlPd24uY29uZmlnLmNvbmZpZy5hbWJpZW50ZT09J3Rlc3QnIHx8IG15T3duLmNvbmZpZy5jb25maWcuYW1iaWVudGU9PSdkZW1vJyxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gYXMgQ2Fzb1N0YXRlO1xyXG4gICAgICAgIGlmKGNhc29TdGF0ZSl7XHJcbiAgICAgICAgICAgIGluaXRpYWxTdGF0ZSA9IHtcclxuICAgICAgICAgICAgICAgIC4uLmluaXRpYWxTdGF0ZSwgXHJcbiAgICAgICAgICAgICAgICBvcGNpb25lczpjYXNvU3RhdGUub3BjaW9uZXMsXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYob3B0cy5mb3JQa1JhaXope1xyXG4gICAgICAgICAgICBpbml0aWFsU3RhdGUub3BjaW9uZXMuZm9yUGs9b3B0cy5mb3JQa1JhaXo7XHJcbiAgICAgICAgICAgIGluaXRpYWxTdGF0ZS5vcGNpb25lcy5tb2RvRGlyZWN0bz0hIW9wdHMuZm9yUGtSYWl6O1xyXG4gICAgICAgICAgICBpbml0aWFsU3RhdGUub3BjaW9uZXMucGlsYUZvclBrPVtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgYWRkclBhcmFtcz1teU93bi5VcmlTZWFyY2hUb09iamVjdChsb2NhdGlvbi5oYXNofHxsb2NhdGlvbi5zZWFyY2h8fCcnKTtcclxuICAgICAgICBpZihhZGRyUGFyYW1zLnN0YXRlX2ZvclBrKXtcclxuICAgICAgICAgICAgaW5pdGlhbFN0YXRlLm9wY2lvbmVzLmZvclBrPUpTT04ucGFyc2UoYWRkclBhcmFtcy5zdGF0ZV9mb3JQayk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKGFkZHJQYXJhbXMuc3RhdGVfcGlsYUZvclBrKXtcclxuICAgICAgICAgICAgaW5pdGlhbFN0YXRlLm9wY2lvbmVzLnBpbGFGb3JQaz0oYWRkclBhcmFtcy5zdGF0ZV9waWxhRm9yUGsgYXMgc3RyaW5nKS5zcGxpdCgnfCcpLm1hcChqPT5KU09ONGFsbC5wYXJzZShqKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpbml0aWFsU3RhdGU7XHJcbiAgICB9XHJcbiAgICB2YXIgc2F2ZVN0YXRlID0gZnVuY3Rpb24gc2F2ZVN0YXRlKHN0YXRlOkNhc29TdGF0ZSl7XHJcbiAgICAgICAgc2V0Q2Fzb1N0YXRlKHN0YXRlKTtcclxuICAgIH1cclxuICAgIC8qIERFRklOSUNJT04gQ09OVFJPTEFET1IgKi9cclxuICAgIHZhciBpbml0aWFsU3RhdGU6Q2Fzb1N0YXRlID0gYXdhaXQgbG9hZFN0YXRlKCk7XHJcbiAgICBjb25zdCBoZHJSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcihyZWR1Y2VycywgaW5pdGlhbFN0YXRlKTtcclxuICAgIC8qIEZJTiBERUZJTklDSU9OIENPTlRST0xBRE9SICovXHJcbiAgICAvKiBDQVJHQSBZIEdVQVJEQURPIERFIFNUQVRFICovXHJcbiAgICAvKiBDUkVBQ0lPTiBTVE9SRSAqL1xyXG4gICAgY29uc3Qgc3RvcmUgPSBjcmVhdGVTdG9yZShoZHJSZWR1Y2VyLCBpbml0aWFsU3RhdGUpOyBcclxuICAgIHNhdmVTdGF0ZShzdG9yZS5nZXRTdGF0ZSgpKTtcclxuICAgIHN0b3JlLnN1YnNjcmliZShmdW5jdGlvbigpe1xyXG4gICAgICAgICBzYXZlU3RhdGUoc3RvcmUuZ2V0U3RhdGUoKSk7XHJcbiAgICB9KTtcclxuICAgIC8qIEZJTiBDUkVBQ0lPTiBTVE9SRSAqL1xyXG4gICAgLy9IRFIgQ09OIFNUT1JFIENSRUFET1xyXG4gICAgcmV0dXJuIHN0b3JlO1xyXG59Il19
|
|
@@ -13,16 +13,16 @@ import {Bloque, BotonFormulario,
|
|
|
13
13
|
CasilleroBase, CasoState, ConjuntoPreguntas, Consistencia,
|
|
14
14
|
EstadoCarga, Filtro, ForPk, ForPkRaiz, Formulario,
|
|
15
15
|
IdFormulario, IdPregunta, IdTarea, IdVariable, InfoFormulario,
|
|
16
|
-
HojaDeRuta,
|
|
17
16
|
ModoDespliegue,
|
|
18
17
|
Opcion, OpcionMultiple, PlainForPk,
|
|
19
18
|
Pregunta, PreguntaConOpciones, PreguntaSimple,
|
|
20
|
-
Respuestas, RespuestasRaiz, Valor, TEM, IdCarga, Carga, IdFin, IdUnidadAnalisis,
|
|
19
|
+
Respuestas, RespuestaLasUA, RespuestasRaiz, Valor, TEM, IdCarga, Carga, IdFin, IdUnidadAnalisis,
|
|
21
20
|
ModoAlmacenamiento,
|
|
22
21
|
toPlainForPk,
|
|
23
22
|
IdCasillero,
|
|
24
23
|
PreguntaConSiNo,
|
|
25
|
-
Texto, Estructura, InformacionHdr, DatosHdrUaPpal, ConfiguracionSorteoFormulario, ResumenEstado, DatosByPassPersistibles, IdOperativo, IdEnc, Libre
|
|
24
|
+
Texto, Estructura, InformacionHdr, DatosHdrUaPpal, ConfiguracionSorteoFormulario, ResumenEstado, DatosByPassPersistibles, IdOperativo, IdEnc, Libre, UnidadAnalisis,
|
|
25
|
+
iterator, empty
|
|
26
26
|
} from "./tipos";
|
|
27
27
|
import{
|
|
28
28
|
accion_abrir_formulario,
|
|
@@ -60,7 +60,7 @@ import { CSSProperties } from "@material-ui/core/styles/withStyles";
|
|
|
60
60
|
|
|
61
61
|
import {
|
|
62
62
|
registrarElemento, setAttrDistinto, setValorDistinto, dispatchByPass,
|
|
63
|
-
getDirty,
|
|
63
|
+
getDirty, getFeedbackRowValidator,
|
|
64
64
|
getFuncionHabilitar,
|
|
65
65
|
getEstructura,
|
|
66
66
|
defOperativo,
|
|
@@ -118,7 +118,7 @@ export type LibreDespliegueType = (props:{
|
|
|
118
118
|
var LibreDespliegue: LibreDespliegueType
|
|
119
119
|
|
|
120
120
|
const Button = ({variant, onClick, disabled, children, className, color, size,
|
|
121
|
-
disableElevation, disableFocusRipple, disableRipple,
|
|
121
|
+
disableElevation, disableFocusRipple, disableRipple,
|
|
122
122
|
...other
|
|
123
123
|
}:{
|
|
124
124
|
variant?:string,
|
|
@@ -169,7 +169,8 @@ const TextField = (props:{
|
|
|
169
169
|
onChange?:(event:any)=>void,
|
|
170
170
|
onFocus?:(event:any)=>void,
|
|
171
171
|
onBlur?:(event:any, valor:any)=>void,
|
|
172
|
-
onKeyDown?:(event:KeyboardEvent)=>void
|
|
172
|
+
// onKeyDown?:(event:KeyboardEvent)=>void // KeyboardEventHandler<HTMLInputElement>
|
|
173
|
+
onKeyDown?:React.KeyboardEventHandler<HTMLInputElement>
|
|
173
174
|
})=><input
|
|
174
175
|
id={props.id}
|
|
175
176
|
disabled={props.disabled}
|
|
@@ -464,17 +465,17 @@ function EncabezadoDespliegue(props:{casillero:CasilleroEncabezable, verIdGuion?
|
|
|
464
465
|
>
|
|
465
466
|
<ICON.DeleteForever/>
|
|
466
467
|
</Button></div>:null}
|
|
467
|
-
{casillero.var_name
|
|
468
|
+
{casillero.var_name?(ns_nc=><div><Button
|
|
468
469
|
id={"nsnc-pregunta-"+casillero.var_name}
|
|
469
470
|
mi-variable={casillero.var_name}
|
|
470
471
|
variant="outlined"
|
|
471
472
|
className="boton-pregunta-nsnc"
|
|
472
473
|
onClick={()=>{
|
|
473
|
-
dispatchByPass(accion_registrar_respuesta, {respuesta:
|
|
474
|
+
dispatchByPass(accion_registrar_respuesta, {respuesta:ns_nc, variable:casillero.var_name as IdVariable, forPk:forPk})
|
|
474
475
|
}}
|
|
475
476
|
>
|
|
476
477
|
NS/NC
|
|
477
|
-
</Button></div
|
|
478
|
+
</Button></div>)(casillero.valor_ns_nc??-9):null}
|
|
478
479
|
</div>
|
|
479
480
|
</div>
|
|
480
481
|
<div className="nombre-div">
|
|
@@ -589,7 +590,7 @@ function Campo(props:{disabled:boolean, pregunta:PreguntaSimple|PreguntaConOpcio
|
|
|
589
590
|
fullWidth={true}
|
|
590
591
|
inputProps={inputProps}
|
|
591
592
|
type={pregunta.despliegueTipoInput??adaptarTipoVarCasillero(pregunta.tipovar)}
|
|
592
|
-
onKeyDown={(event:KeyboardEvent)=>{
|
|
593
|
+
onKeyDown={(event:React.KeyboardEvent)=>{
|
|
593
594
|
var esEnter = (event.key == 'Enter' || event.keyCode == 13)
|
|
594
595
|
debeSaltar = esEnter && (saltoAutomatico || conCampoOpciones);
|
|
595
596
|
if(esEnter){
|
|
@@ -685,8 +686,8 @@ function DesplegarCasillero(props:{
|
|
|
685
686
|
id?:string,
|
|
686
687
|
style?:React.CSSProperties,
|
|
687
688
|
despliegueEncabezado?:'lateral'|'superior'
|
|
688
|
-
children:React.ReactNode|
|
|
689
|
-
"ocultar-salteada"?:
|
|
689
|
+
children:React.ReactNode|React.ReactNode[],
|
|
690
|
+
"ocultar-salteada"?:'SI'|'NO'|'INHABILITAR'|undefined
|
|
690
691
|
}){
|
|
691
692
|
return <div
|
|
692
693
|
key={`${props.casillero.tipoc}-${props.id||props.casillero.id_casillero}`}
|
|
@@ -778,7 +779,7 @@ var calcularDisabledBFAgregarListo = (configSorteoFormulario:ConfiguracionSorteo
|
|
|
778
779
|
!!(configSorteoFormulario && configSorteoFormulario.id_formulario_individual == formulario)
|
|
779
780
|
|
|
780
781
|
function botonesDelFormulario(r:Respuestas, unidad_analisis:IdUnidadAnalisis, estructura:Estructura, forPkPadre:ForPk, feedbackAll:{[formulario in PlainForPk]:FormStructureState<IdVariable, Valor, IdFin>}):HtmlTag<HTMLDivElement>{
|
|
781
|
-
var formsVivienda = getFormulariosForIdVivienda(forPkPadre.vivienda
|
|
782
|
+
var formsVivienda = getFormulariosForIdVivienda(forPkPadre.vivienda);
|
|
782
783
|
var uaDef = estructura.unidades_analisis[unidad_analisis];
|
|
783
784
|
var arrayEstructuraFormularios = (likeAr(estructura.formularios)).array();
|
|
784
785
|
var x = likeAr(uaDef.hijas).filter(uaHija=>
|
|
@@ -1004,11 +1005,11 @@ function BotonFormularioDespliegue(props:{casillero:BotonFormulario, formulario:
|
|
|
1004
1005
|
var habilitador = casillero.expresion_habilitar_js?getFuncionHabilitar(casillero.expresion_habilitar_js):()=>true;
|
|
1005
1006
|
var {opciones} = useSelectorVivienda(forPk);
|
|
1006
1007
|
//var idFormularioDestino = 'F:'+casillero.salto! as IdFormulario; //original
|
|
1007
|
-
var armoNomSalto=casillero.salto
|
|
1008
|
+
var armoNomSalto=casillero.salto?.substring(0,2)=='F:'?casillero.salto.slice(2):casillero.salto;
|
|
1008
1009
|
//console.log('BotonFormularioDespliegue armoNomSalto ' +armoNomSalto);
|
|
1009
1010
|
var idFormularioDestino = 'F:'+armoNomSalto! as IdFormulario;
|
|
1010
1011
|
var estructura = getEstructura();
|
|
1011
|
-
var {formularioAAbrir} = useSelector((
|
|
1012
|
+
var {formularioAAbrir} = useSelector((_state:CasoState)=>({
|
|
1012
1013
|
formularioAAbrir:estructura.formularios[idFormularioDestino].casilleros,
|
|
1013
1014
|
}));
|
|
1014
1015
|
var sufijoIdElemento = toPlainForPk(forPk);
|
|
@@ -1057,7 +1058,7 @@ function BotonFormularioDespliegue(props:{casillero:BotonFormulario, formulario:
|
|
|
1057
1058
|
// var estadoDelBoton = feedbackRow.feedback['$B.F:'+casillero.salto as IdVariable].estado //original
|
|
1058
1059
|
var estadoDelBoton = feedbackRow.feedback['$B.F:'+armoNomSalto as IdVariable].estado
|
|
1059
1060
|
// console.log('BotonFormularioDespliegue estadoDelBoton ' +estadoDelBoton );
|
|
1060
|
-
var configSorteoFormulario = estructura.configSorteo?estructura.configSorteo[getMainFormForVivienda(forPk.vivienda
|
|
1061
|
+
var configSorteoFormulario = estructura.configSorteo?estructura.configSorteo[getMainFormForVivienda(forPk.vivienda)]:null
|
|
1061
1062
|
listaDeBotonesAbrir = likeAr(conjunto).map((_, i)=>{
|
|
1062
1063
|
let num:number = numberOrStringIncIfArray(i, conjunto) as number;
|
|
1063
1064
|
let forPk={...props.forPk, formulario:idFormularioDestino, [nuevoCampoPk]:num};
|
|
@@ -1213,7 +1214,7 @@ function DesplegarContenidoInternoBloqueOFormulario(props:{bloqueOFormulario:Blo
|
|
|
1213
1214
|
setForPkActual(props.bloqueOFormulario.casillero)
|
|
1214
1215
|
}
|
|
1215
1216
|
useEffect(()=>{
|
|
1216
|
-
var timer
|
|
1217
|
+
var timer = setTimeout(()=>{
|
|
1217
1218
|
setVerTodo(true);
|
|
1218
1219
|
},250)
|
|
1219
1220
|
return ()=>{
|
|
@@ -1354,14 +1355,14 @@ function BarraDeNavegacion(props:{forPk:ForPk, soloLectura:boolean, modoDirecto:
|
|
|
1354
1355
|
const forPk = props.forPk;
|
|
1355
1356
|
const {opciones} = useSelectorVivienda(forPk);
|
|
1356
1357
|
const [confirmaCerrar, setConfirmaCerrar] = useState<boolean|null>(false);
|
|
1357
|
-
var dominio = getDatosByPass().informacionHdr[forPk.vivienda
|
|
1358
|
+
var dominio = getDatosByPass().informacionHdr[forPk.vivienda].tem.dominio;
|
|
1358
1359
|
var cerrarDirecto = async function(){
|
|
1359
1360
|
removeCSSById(BOOTSTRAP_5_1_3_SRC);
|
|
1360
1361
|
var estructura = getEstructura();
|
|
1361
1362
|
gotoConsistir(
|
|
1362
1363
|
estructura.operativo as IdOperativo,
|
|
1363
|
-
getDatosByPass().informacionHdr[forPk.vivienda
|
|
1364
|
-
forPk.vivienda
|
|
1364
|
+
getDatosByPass().informacionHdr[forPk.vivienda].tarea.tarea,
|
|
1365
|
+
forPk.vivienda
|
|
1365
1366
|
);
|
|
1366
1367
|
//var hash=new URLSearchParams(location.hash?.replace(/^\#/,'').split('&autoproced')[0]);
|
|
1367
1368
|
////hash.delete('autoproced')
|
|
@@ -1528,6 +1529,8 @@ function FormularioDespliegue(props:{forPk:ForPk}){
|
|
|
1528
1529
|
feedbackForm.resumen
|
|
1529
1530
|
)})
|
|
1530
1531
|
})
|
|
1532
|
+
// @ts-expect-error especial hay que leerlo en el parser de casilleros si esto termina quedando así
|
|
1533
|
+
var pantallaCompleta = formulario.especial?.pantallaCompleta;
|
|
1531
1534
|
return (
|
|
1532
1535
|
<>
|
|
1533
1536
|
<AppBar position="fixed" color={soloLectura?'secondary':'primary'}>
|
|
@@ -1548,10 +1551,10 @@ function FormularioDespliegue(props:{forPk:ForPk}){
|
|
|
1548
1551
|
)}
|
|
1549
1552
|
</ButtonGroup>
|
|
1550
1553
|
</div>:null}
|
|
1551
|
-
|
|
1552
|
-
|
|
1554
|
+
{pantallaCompleta?null:<BotonVolverEnDiv id="boton-volver-1"/>}
|
|
1555
|
+
{pantallaCompleta?null:<FormularioEncabezado casillero={formulario}/>}
|
|
1553
1556
|
<DesplegarContenidoInternoBloqueOFormulario bloqueOFormulario={formulario} formulario={formulario} forPk={forPk} multiple={false}/>
|
|
1554
|
-
|
|
1557
|
+
{pantallaCompleta?null:<BotonVolverEnDiv id="boton-volver-2"/>}
|
|
1555
1558
|
</Paper>
|
|
1556
1559
|
<Fab id='fab-activo-arriba' color="primary" aria-label="add" onClick={onClickSaltarActual}>
|
|
1557
1560
|
<ICON.KeyboardArrowUp />
|
|
@@ -1593,14 +1596,14 @@ resumidores.push(
|
|
|
1593
1596
|
)
|
|
1594
1597
|
|
|
1595
1598
|
export function DesplegarLineaResumenUAPrincipal(props:{
|
|
1596
|
-
numVivienda:
|
|
1599
|
+
numVivienda:IdEnc,
|
|
1597
1600
|
formPrincipal:IdFormulario,
|
|
1598
1601
|
tarea: string,
|
|
1599
1602
|
respuestas:RespuestasRaiz,
|
|
1600
1603
|
}){
|
|
1601
1604
|
const {numVivienda, respuestas, formPrincipal, tarea} = props;
|
|
1602
1605
|
const id='viv-'+numVivienda;
|
|
1603
|
-
const forPk:ForPk={formulario:formPrincipal, vivienda:
|
|
1606
|
+
const forPk:ForPk={formulario:formPrincipal, vivienda:numVivienda};
|
|
1604
1607
|
var tem = getDatosByPass().informacionHdr[numVivienda].tem;
|
|
1605
1608
|
var dispatch = useDispatch();
|
|
1606
1609
|
useEffect(()=>{
|
|
@@ -1655,7 +1658,7 @@ export function DesplegarCarga(props:{
|
|
|
1655
1658
|
idCarga:IdCarga,
|
|
1656
1659
|
posicion:number,
|
|
1657
1660
|
informacionHdr:InformacionHdr,
|
|
1658
|
-
respuestas:
|
|
1661
|
+
respuestas: RespuestaLasUA,
|
|
1659
1662
|
feedbackRowValidator:{
|
|
1660
1663
|
[formulario in PlainForPk]:FormStructureState<IdVariable, Valor, IdFin>
|
|
1661
1664
|
}
|
|
@@ -1693,13 +1696,13 @@ export function DesplegarCarga(props:{
|
|
|
1693
1696
|
</TableRow>
|
|
1694
1697
|
</TableHead>
|
|
1695
1698
|
<TableBody>
|
|
1696
|
-
{
|
|
1699
|
+
{likeAr(informacionHdr).filter((informacion)=>informacion.tem.carga==idCarga).map((informacion, numVivienda)=>
|
|
1697
1700
|
<DesplegarLineaResumenUAPrincipal
|
|
1698
1701
|
key={numVivienda}
|
|
1699
1702
|
numVivienda={numVivienda}
|
|
1700
1703
|
tarea={informacion.tarea.tarea}
|
|
1701
1704
|
formPrincipal={informacion.tarea.main_form}
|
|
1702
|
-
respuestas={respuestas.viviendas[numVivienda]}
|
|
1705
|
+
respuestas={respuestas.viviendas[numVivienda] as RespuestasRaiz}
|
|
1703
1706
|
/>
|
|
1704
1707
|
).array()}
|
|
1705
1708
|
</TableBody>
|
|
@@ -1809,7 +1812,7 @@ export function HojaDeRutaDespliegue(){
|
|
|
1809
1812
|
<div>Dirección General de Estadística y Censos - C.A.B.A.</div>
|
|
1810
1813
|
<div>{my.getLocalVar('app-version')} sincro {num_sincro} - versión {appVersion}</div>
|
|
1811
1814
|
</div>
|
|
1812
|
-
{likeAr(cargas).map((carga
|
|
1815
|
+
{likeAr(cargas).map((carga, idCarga, _, posicion)=>
|
|
1813
1816
|
<DesplegarCarga key={idCarga} carga={carga} idCarga={idCarga} posicion={posicion} informacionHdr={informacionHdr} feedbackRowValidator={feedbackRowValidator} respuestas={respuestas}/>
|
|
1814
1817
|
).array()}
|
|
1815
1818
|
</div>
|
|
@@ -1963,7 +1966,7 @@ export async function dmPantallaInicialSinCarga(){
|
|
|
1963
1966
|
)
|
|
1964
1967
|
}
|
|
1965
1968
|
|
|
1966
|
-
export async function desplegarFormularioActual(opts:{modoDemo:boolean, forPkRaiz?:ForPkRaiz}){
|
|
1969
|
+
export async function desplegarFormularioActual(opts:{modoDemo:boolean, forPkRaiz?:ForPkRaiz, operativo:IdOperativo}){
|
|
1967
1970
|
// traer los metadatos en una "estructura"
|
|
1968
1971
|
// traer los datos de localStorage
|
|
1969
1972
|
// verificar el main Layout
|
|
@@ -2038,8 +2041,9 @@ setCalcularVariables((respuestasRaiz:RespuestasRaiz, forPk:ForPk)=>{
|
|
|
2038
2041
|
//TODO GENERALIZAR
|
|
2039
2042
|
var uasIterar:{
|
|
2040
2043
|
[key in IdUnidadAnalisis]:{
|
|
2041
|
-
uaPersonas: IdUnidadAnalisis
|
|
2042
|
-
varSexoPersona: IdVariable
|
|
2044
|
+
uaPersonas: IdUnidadAnalisis
|
|
2045
|
+
varSexoPersona: IdVariable
|
|
2046
|
+
varNombrePersona: IdVariable
|
|
2043
2047
|
varLosNombres: IdVariable
|
|
2044
2048
|
}
|
|
2045
2049
|
} = {
|
|
@@ -2049,8 +2053,7 @@ setCalcularVariables((respuestasRaiz:RespuestasRaiz, forPk:ForPk)=>{
|
|
|
2049
2053
|
varNombrePersona: 'nombre' as IdVariable,
|
|
2050
2054
|
varLosNombres: "los_nombres" as IdVariable
|
|
2051
2055
|
},
|
|
2052
|
-
|
|
2053
|
-
hogares_sup: {
|
|
2056
|
+
["hogares_sup" as IdUnidadAnalisis] : {
|
|
2054
2057
|
uaPersonas: 'personas_sup' as IdUnidadAnalisis,
|
|
2055
2058
|
varSexoPersona: 'sexo_sup' as IdVariable,
|
|
2056
2059
|
varNombrePersona: 'nombre_sup' as IdVariable,
|
|
@@ -2060,13 +2063,14 @@ setCalcularVariables((respuestasRaiz:RespuestasRaiz, forPk:ForPk)=>{
|
|
|
2060
2063
|
likeAr(uasIterar).forEach((configHogares,uaHogares)=>{
|
|
2061
2064
|
var estructura = getEstructura();
|
|
2062
2065
|
if(estructura.unidades_analisis[uaHogares]){
|
|
2063
|
-
for(var respuestasHogar of respuestasRaiz[uaHogares]
|
|
2064
|
-
if(!respuestasHogar[configHogares.uaPersonas] || respuestasHogar[configHogares.uaPersonas]
|
|
2065
|
-
|
|
2066
|
+
for(var respuestasHogar of iterator(respuestasRaiz[uaHogares]??[])){
|
|
2067
|
+
if(!respuestasHogar[configHogares.uaPersonas] || empty(respuestasHogar[configHogares.uaPersonas]) || respuestasHogar[configHogares.uaPersonas][0][configHogares.varSexoPersona] == null){
|
|
2068
|
+
var losNombres = respuestasHogar[configHogares.varLosNombres] as string
|
|
2069
|
+
if(losNombres != null){
|
|
2066
2070
|
if(!respuestasHogar[configHogares.uaPersonas]){
|
|
2067
2071
|
respuestasHogar[configHogares.uaPersonas]=[];
|
|
2068
2072
|
}
|
|
2069
|
-
|
|
2073
|
+
losNombres
|
|
2070
2074
|
.split(',')
|
|
2071
2075
|
.filter((nombre:string)=>nombre.trim().length > 0)
|
|
2072
2076
|
.forEach((nombre:string, i:number)=>{
|
|
@@ -70,6 +70,7 @@ export declare type OpcionMultiple = CasilleroBase & {
|
|
|
70
70
|
casilleros: [OpcionSi, OpcionNo];
|
|
71
71
|
calculada?: boolean;
|
|
72
72
|
libre?: boolean;
|
|
73
|
+
valor_ns_nc: any;
|
|
73
74
|
};
|
|
74
75
|
export declare type PreguntaBase = CasilleroBase & {
|
|
75
76
|
tipoc: 'P';
|
|
@@ -77,6 +78,7 @@ export declare type PreguntaBase = CasilleroBase & {
|
|
|
77
78
|
casillero: IdPregunta;
|
|
78
79
|
calculada: boolean | null;
|
|
79
80
|
libre: boolean | null;
|
|
81
|
+
valor_ns_nc: any;
|
|
80
82
|
};
|
|
81
83
|
export declare type PreguntaSimple = PreguntaBase & {
|
|
82
84
|
tipovar: TipoVariables;
|
|
@@ -172,12 +174,14 @@ export declare type CasillerosImplementados = Formulario | Bloque | Filtro | Con
|
|
|
172
174
|
export declare type CampoPkRaiz = 'vivienda' | 'etc...';
|
|
173
175
|
export declare type ForPkRaiz = {
|
|
174
176
|
formulario: IdFormulario;
|
|
177
|
+
vivienda: IdEnc;
|
|
175
178
|
} & {
|
|
176
179
|
[campo in CampoPkRaiz]?: number;
|
|
177
180
|
};
|
|
178
181
|
export declare type CampoPk = 'vivienda' | 'hogar' | 'persona' | 'etc...';
|
|
179
182
|
export declare type ForPk = {
|
|
180
183
|
formulario: IdFormulario;
|
|
184
|
+
vivienda: IdEnc;
|
|
181
185
|
} & {
|
|
182
186
|
[campo in CampoPk]?: number;
|
|
183
187
|
};
|
|
@@ -185,11 +189,13 @@ export declare type PlainForPk = '{"formulario":"F:F1","vivienda":"10202","perso
|
|
|
185
189
|
export declare type ObjetoNumeradoOArray<T> = T[] | {
|
|
186
190
|
[n in number]: T;
|
|
187
191
|
};
|
|
188
|
-
export declare type
|
|
192
|
+
export declare type RespuestasUnaUA = {
|
|
189
193
|
[pregunta in IdVariable]: Valor;
|
|
190
|
-
}
|
|
194
|
+
};
|
|
195
|
+
export declare type RespuestaLasUA = {
|
|
191
196
|
[ua in IdUnidadAnalisis]: ObjetoNumeradoOArray<Respuestas>;
|
|
192
197
|
};
|
|
198
|
+
export declare type Respuestas = RespuestasUnaUA & RespuestaLasUA;
|
|
193
199
|
export declare type RespuestasRaiz = Respuestas & {
|
|
194
200
|
resumenEstado: ResumenEstado;
|
|
195
201
|
resumenEstadoSup: ResumenEstado;
|
|
@@ -227,7 +233,7 @@ export declare type TEM = {
|
|
|
227
233
|
};
|
|
228
234
|
export declare type ResumenEstado = 'vacio' | 'con problemas' | 'incompleto' | 'ok' | 'no rea' | 'cita pactada';
|
|
229
235
|
export declare type InfoTarea = {
|
|
230
|
-
tarea
|
|
236
|
+
tarea: IdTarea;
|
|
231
237
|
notas?: string;
|
|
232
238
|
fecha_asignacion?: Date;
|
|
233
239
|
asignado?: string;
|
|
@@ -298,7 +304,7 @@ export declare type Estructura = {
|
|
|
298
304
|
grupo0_sup: string;
|
|
299
305
|
}[];
|
|
300
306
|
};
|
|
301
|
-
export declare type IdEnc =
|
|
307
|
+
export declare type IdEnc = 130031 | 130032;
|
|
302
308
|
export declare type InformacionHdr = {
|
|
303
309
|
[enc in IdEnc]: DatosHdrUaPpal;
|
|
304
310
|
};
|
|
@@ -437,6 +443,8 @@ export declare type ConfiguracionSorteoFormulario = {
|
|
|
437
443
|
id_formulario_padre?: IdFormulario;
|
|
438
444
|
} & (ConfiguracionSorteoHash | ConfiguracionSorteoTabla);
|
|
439
445
|
export declare function toPlainForPk(forPk: ForPk): PlainForPk;
|
|
446
|
+
export declare var iterator: <T>(o: ObjetoNumeradoOArray<T>) => Iterable<T>;
|
|
447
|
+
export declare var empty: <T>(o: ObjetoNumeradoOArray<T> | null | undefined) => boolean;
|
|
440
448
|
declare global {
|
|
441
449
|
namespace myOwn {
|
|
442
450
|
interface AddrParams {
|
|
@@ -448,12 +456,10 @@ declare global {
|
|
|
448
456
|
export declare type DireccionAccion = 'avance' | 'retroceso' | 'blanqueo';
|
|
449
457
|
export declare type EstadoAccion = {
|
|
450
458
|
operativo: string;
|
|
451
|
-
tarea: 'encu' | 'recu' | 'supe';
|
|
452
459
|
estado: string;
|
|
453
460
|
eaccion: string;
|
|
454
461
|
condicion: string;
|
|
455
462
|
estado_destino: string;
|
|
456
|
-
tarea_destino: string;
|
|
457
463
|
eaccion_direccion: DireccionAccion;
|
|
458
464
|
path_icono_svg: string;
|
|
459
465
|
nombre_procedure: string;
|