dmencu 3.4.0 → 3.5.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.
@@ -18,7 +18,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
18
18
  if (v !== undefined) module.exports = v;
19
19
  }
20
20
  else if (typeof define === "function" && define.amd) {
21
- define(["require", "exports", "procesamiento", "./procedures-dmencu", "./ayuda", "pg-promise-strict", "mini-tools", "cast-error", "yazl", "express", "fs", "path", "./table-roles", "./table-personal", "./table-recepcionistas", "./table-encuestadores", "./table-encuestadores", "./table-encuestadores", "./table-encuestadores", "./table-mis_encuestadores", "./table-recuperadores", "./table-supervisores", "./table-personal_rol", "./table-permisos", "./table-roles_permisos", "./table-modos_dm", "./table-parametros", "./table-roles_subordinados", "./table-no_rea", "./table-no_rea_sup", "./table-rea", "./table-rea_sup", "./table-tem", "./table-semanas", "./table-usuarios", "./table-operaciones", "./table-comunas", "./table-areas", "./table-sincronizaciones", "./table-tareas", "./table-tareas_tem", "./table-tareas_areas", "./table-areas_asignacion_general", "./table-grilla_hoja_ruta", "./table-tareas_areas", "./table-tareas_areas", "./table-tareas_areas", "./table-tareas_areas", "./table-mis_tareas", "./table-tem_asignacion", "./table-tareas_tem_recepcion", "./table-tareas_tem_ingreso", "./table-tareas_tem_fin_campo", "./table-tareas_tem_procesamiento", "./table-tareas_tem_analisis_campo", "./table-mis_tareas_areas", "./table-control_campo", "./table-control_resumen", "./table-control_dias_carga", "./table-viviendas", "./table-visitas", "./table-hogares", "./table-personas", "./table-visitas_sup", "./table-hogares_sup", "./table-personas_sup", "./table-diccionario", "./table-dictra", "./table-dicvar", "./table-estados", "./table-acciones", "./table-estados_acciones", "./table-tareas_proximas", "./table-historial_tem", "./table-inconsistencias_cumplen_condicion", "./table-tem_borradas", "./table-barrios", "./table-fracciones", "./table-radios", "./table-manzanas", "./table-area_enc_proximas", "./types-dmencu", "./ayuda", "./def-config", "best-globals"], factory);
21
+ define(["require", "exports", "procesamiento", "./procedures-dmencu", "./ayuda", "pg-promise-strict", "mini-tools", "cast-error", "yazl", "express", "fs", "path", "./table-roles", "./table-personal", "./table-recepcionistas", "./table-encuestadores", "./table-encuestadores", "./table-encuestadores", "./table-encuestadores", "./table-mis_encuestadores", "./table-recuperadores", "./table-supervisores", "./table-personal_rol", "./table-permisos", "./table-roles_permisos", "./table-modos_dm", "./table-parametros", "./table-roles_subordinados", "./table-no_rea", "./table-no_rea_sup", "./table-rea", "./table-rea_sup", "./table-tem", "./table-semanas", "./table-usuarios", "./table-operaciones", "./table-comunas", "./table-areas", "./table-sincronizaciones", "./table-tareas", "./table-tareas_tem", "./table-tareas_areas", "./table-areas_asignacion_general", "./table-grilla_hoja_ruta", "./table-tareas_areas", "./table-tareas_areas", "./table-tareas_areas", "./table-tareas_areas", "./table-mis_tareas", "./table-tem_asignacion", "./table-tem_edicion", "./table-tareas_tem_recepcion", "./table-tareas_tem_ingreso", "./table-tareas_tem_fin_campo", "./table-tareas_tem_procesamiento", "./table-tareas_tem_analisis_campo", "./table-mis_tareas_areas", "./table-control_campo", "./table-control_resumen", "./table-control_dias_carga", "./table-viviendas", "./table-visitas", "./table-hogares", "./table-personas", "./table-visitas_sup", "./table-hogares_sup", "./table-personas_sup", "./table-diccionario", "./table-dictra", "./table-dicvar", "./table-estados", "./table-acciones", "./table-estados_acciones", "./table-tareas_proximas", "./table-historial_tem", "./table-inconsistencias_cumplen_condicion", "./table-tem_borradas", "./table-barrios", "./table-fracciones", "./table-radios", "./table-manzanas", "./table-area_enc_proximas", "./types-dmencu", "./ayuda", "./def-config", "best-globals"], factory);
22
22
  }
23
23
  })(function (require, exports) {
24
24
  "use strict";
@@ -77,6 +77,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
77
77
  const table_tareas_areas_5 = require("./table-tareas_areas");
78
78
  const table_mis_tareas_1 = require("./table-mis_tareas");
79
79
  const table_tem_asignacion_1 = require("./table-tem_asignacion");
80
+ const table_tem_edicion_1 = require("./table-tem_edicion");
80
81
  const table_tareas_tem_recepcion_1 = require("./table-tareas_tem_recepcion");
81
82
  const table_tareas_tem_ingreso_1 = require("./table-tareas_tem_ingreso");
82
83
  const table_tareas_tem_fin_campo_1 = require("./table-tareas_tem_fin_campo");
@@ -750,6 +751,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
750
751
  if (((_b = (_a = context.puede) === null || _a === void 0 ? void 0 : _a.campo) === null || _b === void 0 ? void 0 : _b.administrar) || ((_d = (_c = context.puede) === null || _c === void 0 ? void 0 : _c.encuestas) === null || _d === void 0 ? void 0 : _d.procesar)) {
751
752
  const submenuMuestra = [
752
753
  { menuType: 'table', name: 'tem', label: 'TEM' },
754
+ { menuType: 'table', name: 'tem_edicion', label: 'edición TEM' },
753
755
  { menuType: 'proc', name: 'muestra_generar', label: 'generar muestra' },
754
756
  { menuType: 'table', name: 'semanas' },
755
757
  { menuType: 'table', name: 'area_enc_proximas' },
@@ -905,6 +907,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
905
907
  estados_acciones: table_estados_acciones_1.estados_acciones,
906
908
  tareas_proximas: table_tareas_proximas_1.tareas_proximas,
907
909
  tem: table_tem_1.tem,
910
+ tem_edicion: table_tem_edicion_1.tem_edicion,
908
911
  historial_tem: table_historial_tem_1.historial_tem,
909
912
  modos_dm: table_modos_dm_1.modos_dm,
910
913
  parametros: table_parametros_1.parametros,
@@ -1052,4 +1055,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
1052
1055
  }
1053
1056
  exports.AppDmEncu = emergeAppDmEncu((0, procesamiento_1.emergeAppProcesamiento)((0, procesamiento_1.emergeAppConsistencias)((0, procesamiento_1.emergeAppVarCal)((0, procesamiento_1.emergeAppDatosExt)((0, procesamiento_1.emergeAppOperativos)(procesamiento_1.AppBackend))))));
1054
1057
  });
1055
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWRtZW5jdS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2ZXIvYXBwLWRtZW5jdS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBLFlBQVksQ0FBQzs7O0lBcUhiLDBDQUVDO0lBR0Qsb0RBYUM7SUFHRCxnREFPQztJQXdCRCxrRkFnQkM7SUFpRUQsMENBMjRCQztJQWxvQ0QsaURBQTRMO0lBQzVMLDJEQUE2RTtJQUM3RSxtQ0FBNEg7SUFFNUgsd0NBQXdDO0lBQ3hDLHdDQUF3QztJQVV4QywyQ0FBa0Q7SUFFbEQsNkJBQTZCO0lBRTdCLG1DQUFtQztJQUVuQywyQkFBb0M7SUFDcEMsNkJBQTZCO0lBRTdCLCtDQUFzQztJQUN0QyxxREFBNEM7SUFDNUMsaUVBQXdEO0lBQ3hELCtEQUF3RjtJQUN4RiwrREFBZ0U7SUFDaEUsK0RBQStEO0lBQy9ELCtEQUFtRTtJQUNuRSx1RUFBOEQ7SUFDOUQsK0RBQXNEO0lBQ3RELDZEQUFvRDtJQUNwRCw2REFBb0Q7SUFDcEQscURBQTRDO0lBQzVDLGlFQUF3RDtJQUN4RCxxREFBNEM7SUFDNUMseURBQWdEO0lBQ2hELHlFQUFnRTtJQUVoRSxpREFBd0M7SUFDeEMseURBQWdEO0lBQ2hELDJDQUFrQztJQUNsQyxtREFBMEM7SUFDMUMsMkNBQWtDO0lBQ2xDLG1EQUEwQztJQUMxQyxxREFBNEM7SUFDNUMsMkRBQWtEO0lBQ2xELG1EQUEwQztJQUMxQywrQ0FBc0M7SUFDdEMscUVBQTREO0lBQzVELGlEQUF3QztJQUN4Qyx5REFNNEI7SUFDNUIsNkRBQW9EO0lBQ3BELHFGQUE0RTtJQUM1RSxxRUFBNEQ7SUFDNUQsNkRBQW9EO0lBQ3BELDZEQUFvRDtJQUNwRCw2REFBb0Q7SUFDcEQsNkRBQW9EO0lBQ3BELHlEQUFnRDtJQUNoRCxpRUFBd0Q7SUFDeEQsNkVBQW9FO0lBQ3BFLHlFQUFnRTtJQUNoRSw2RUFBb0U7SUFDcEUscUZBQTRFO0lBQzVFLHVGQUE4RTtJQUM5RSxxRUFBNEQ7SUFDNUQsK0RBQXNEO0lBQ3RELG1FQUEwRDtJQUMxRCx5RUFBZ0U7SUFDaEUsdURBQThDO0lBQzlDLG1EQUEwQztJQUMxQyxtREFBMEM7SUFDMUMscURBQTRDO0lBQzVDLDJEQUFrRDtJQUNsRCwyREFBa0Q7SUFDbEQsNkRBQW9EO0lBQ3BELDJEQUFrRDtJQUNsRCxpREFBd0M7SUFDeEMsaURBQXdDO0lBRXhDLG1EQUEwQztJQUMxQyxxREFBNEM7SUFDNUMscUVBQTREO0lBQzVELG1FQUEwRDtJQUMxRCwrREFBc0Q7SUFDdEQsdUdBQThGO0lBQzlGLDZEQUFvRDtJQUNwRCxtREFBMEM7SUFDMUMseURBQWdEO0lBQ2hELGlEQUF3QztJQUN4QyxxREFBNEM7SUFDNUMsdUVBQThEO0lBRTlELGlEQUErQjtJQUMvQiwwQ0FBd0I7SUFDeEIsNkNBQXdDO0lBSXhDLCtDQUF3QztJQUl4QyxNQUFNLGNBQWMsR0FBRyxXQUFXLENBQUM7SUFFbkMsU0FBZ0IsZUFBZSxDQUFDLEVBQWM7UUFDMUMsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztJQUMxRSxDQUFDO0lBRUQsK0ZBQStGO0lBQy9GLFNBQWdCLG9CQUFvQixDQUNoQyxNQUE2RixFQUM3RixJQUFpQztRQUVqQyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNmLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDL0MsQ0FBQztRQUNELElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDbkIsSUFBSSxjQUFjLEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3ZFLElBQUksY0FBYyxhQUFkLGNBQWMsdUJBQWQsY0FBYyxDQUFFLFNBQVMsRUFBRSxDQUFDO1lBQzVCLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNoRSxDQUFDO1FBQ0QsT0FBTyxFQUFFLEtBQUssRUFBRSxjQUFjLGFBQWQsY0FBYyx1QkFBZCxjQUFjLENBQUUsS0FBSyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELGlHQUFpRztJQUNqRyxTQUFnQixrQkFBa0IsQ0FBQyxPQUFnQjs7UUFDL0MsT0FBTztZQUNILEdBQUcsRUFBRSxNQUFBLE1BQUEsT0FBTyxDQUFDLElBQUksMENBQUUsR0FBRyxtQ0FBSSxJQUFJO1lBQzlCLFNBQVMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVM7WUFDOUIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO1lBQ3BCLElBQUksRUFBRSxlQUFlLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztTQUNwQyxDQUFDO0lBQ04sQ0FBQztJQVdELG9IQUFvSDtJQUN2RyxRQUFBLGlCQUFpQixHQUFHLENBQUMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzNELDRGQUE0RjtJQUMvRSxRQUFBLGlCQUFpQixHQUFHLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFPNUUsb0dBQW9HO0lBQ3BHLHFHQUFxRztJQUNyRyx3REFBd0Q7SUFDeEQsU0FBZ0IsbUNBQW1DLENBQy9DLEVBQXlCLEVBQ3pCLFlBQXdFO1FBRXhFLE9BQU8sS0FBSyxXQUFXLE9BQVUsRUFBRSxVQUFhLEVBQUUsR0FBRyxLQUFZO1lBQzdELElBQUksTUFBTSxHQUFHLE1BQU0sWUFBWSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQztZQUMvRCxJQUFJLHlCQUFpQixDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDL0MsRUFBRSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNyRCxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtZQUN2RSxDQUFDO1lBQ0QsSUFBSSx5QkFBaUIsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQy9DLEVBQUUsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDckQsTUFBTSxFQUFFLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMzQyxDQUFDO1lBQ0QsT0FBTyxNQUFNLENBQUM7UUFDbEIsQ0FBQyxDQUFBO0lBQ0wsQ0FBQztJQUVELE1BQU0sMkJBQTJCLEdBQUcsS0FBSyxFQUFFLEVBQWMsRUFBRSxFQUFFO1FBQ3pELE1BQU0sY0FBYyxHQUFHLEtBQUssSUFBSSxFQUFFO1lBQzlCLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBVyxFQUFFLE9BQVksRUFBRSxFQUFFLEVBQUUsQ0FDeEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLHVCQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxFQUFFLGlCQUFpQixHQUFHLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUMxRSxJQUFJLENBQUM7Z0JBQ0QsR0FBRyxDQUFDLCtCQUErQixDQUFDLENBQUM7Z0JBRXJDLElBQUksTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFO29CQUN2RCxPQUFPLE1BQU0sSUFBQSx3Q0FBb0IsRUFBQyxNQUFNLENBQUMsQ0FBQztnQkFDOUMsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsR0FBRyxDQUFDLCtCQUErQixFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ2pELENBQUM7WUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUNYLElBQUksS0FBSyxHQUFHLElBQUEsdUJBQVUsRUFBQyxHQUFHLENBQUMsQ0FBQztnQkFDNUIsR0FBRyxDQUFDLDJCQUEyQixLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUNwRCxDQUFDO29CQUFTLENBQUM7Z0JBQ1AsR0FBRyxDQUFDLHVCQUF1QixDQUFDLENBQUM7WUFDakMsQ0FBQztRQUNMLENBQUMsQ0FBQztRQUNGLE1BQU0sY0FBYyxFQUFFLENBQUM7UUFDdkIsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLGNBQWMsRUFBRSxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFBO1FBQzVELEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztZQUN2QixPQUFPLEVBQUUsMEJBQTBCO1lBQ25DLEdBQUcsRUFBRSxLQUFLO2dCQUNOLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDeEIsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDN0IsQ0FBQztTQUNKLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQTtJQUVELE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxRQUFnQixFQUFFLE1BQWMsRUFBRSxFQUFFLENBQUM7UUFDaEU7WUFDSSxLQUFLLEVBQUUsVUFBVSxRQUFRLGNBQWMsTUFBTSxNQUFNO1lBQ25ELE9BQU8sRUFBRSxPQUFPO1lBQ2hCLE1BQU0sRUFBRSxXQUFXO1NBQ3RCO1FBQ0Q7WUFDSSxLQUFLLEVBQUUsVUFBVSxRQUFRLGNBQWMsTUFBTSxNQUFNO1lBQ25ELE9BQU8sRUFBRSxPQUFPO1lBQ2hCLE1BQU0sRUFBRSxXQUFXO1NBQ3RCO1FBQ0Q7WUFDSSxLQUFLLEVBQUUsVUFBVSxRQUFRLGNBQWMsTUFBTSxNQUFNO1lBQ25ELE9BQU8sRUFBRSxPQUFPO1lBQ2hCLE1BQU0sRUFBRSxXQUFXO1NBQ3RCO1FBQ0Q7WUFDSSxLQUFLLEVBQUUsVUFBVSxRQUFRLGNBQWMsTUFBTSxNQUFNO1lBQ25ELE9BQU8sRUFBRSxPQUFPO1lBQ2hCLE1BQU0sRUFBRSxXQUFXO1NBQ3RCO1FBQ0Q7WUFDSSxLQUFLLEVBQUUsVUFBVSxRQUFRLGVBQWUsTUFBTSxNQUFNO1lBQ3BELE9BQU8sRUFBRSxTQUFTO1lBQ2xCLE1BQU0sRUFBRSxXQUFXO1NBQ3RCO1FBQ0Q7WUFDSSxLQUFLLEVBQUUsVUFBVSxRQUFRLGVBQWUsTUFBTSxNQUFNO1lBQ3BELE9BQU8sRUFBRSxTQUFTO1lBQ2xCLE1BQU0sRUFBRSxXQUFXO1NBQ3RCO0tBQ0osQ0FBQztJQUVGLFNBQWdCLGVBQWUsQ0FBMEUsSUFBTztRQUM1RyxPQUFPLE1BQU0sU0FBVSxTQUFRLElBQUk7WUFDL0IsWUFBWSxHQUFHLElBQVc7Z0JBQ3RCLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFTaEIseUJBQW9CLEdBQUcsQ0FBQyxPQUFlLEVBQUUsRUFBRSxDQUN2QyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUMzRCxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFFaEQsZUFBVSxHQUFHLEtBQUssSUFBSSxFQUFFO29CQUNwQixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7b0JBQ2QsT0FBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFpQixFQUFFLEVBQUUsQ0FDeEQsTUFBTSxDQUFDLEtBQUssQ0FBQyx1REFBdUQsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLENBQzNGLENBQUMsQ0FBQyxLQUFnQixDQUFDO2dCQUN4QixDQUFDLENBQUE7Z0JBakJHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQztnQkFDMUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQTtnQkFDcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQTtnQkFDM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQ0FBZ0MsR0FBRyxLQUFLLENBQUM7Z0JBQ3JELElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDdkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztnQkFDMUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQzNCLENBQUM7WUFZRCxzR0FBc0c7WUFDN0YsS0FBSyxDQUFDLGFBQWEsQ0FBQyxZQUFnQyxFQUFFLGdCQUFnQztnQkFDM0YsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDO2dCQUNkLElBQUksZUFBZSxHQUFHLFlBQVksYUFBWixZQUFZLHVCQUFaLFlBQVksQ0FBRSxJQUFJLENBQUM7Z0JBQ3pDLElBQUksWUFBWSxJQUFJLElBQUksSUFBSSxlQUFlLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ2xELE9BQU8sS0FBSyxDQUFDO2dCQUNqQixDQUFDO2dCQUNELElBQUksR0FBRyxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUM7Z0JBQzlCLElBQUksTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFO29CQUNwRCxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDM0IsT0FBTyxDQUFDLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQzs7OzZGQUdrRCxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUM3RyxDQUFDLENBQUMsQ0FBQTtnQkFDRixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUN0RSxJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUN2QyxPQUFPLE9BQU8sSUFBSSxLQUFLLENBQUE7WUFFM0IsQ0FBQztZQUNRLEtBQUssQ0FBQyxhQUFhO2dCQUN4QixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7Z0JBQ2QsSUFBSSx3QkFBd0IsR0FBRyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsQ0FBQztnQkFDOUQsSUFBSSxVQUFVLEdBQUcsTUFBTSxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQzdDLFVBQVUsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDekcsVUFBVSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ2xDLElBQUksT0FBTyxDQUFDLE1BQU0sSUFBSSxtQkFBbUIsSUFBSSxPQUFPLENBQUMsTUFBTSxJQUFJLHFCQUFxQixFQUFFLENBQUM7d0JBQ25GLE9BQU8sQ0FBQyxZQUFZLEdBQUcsbUNBQW1DLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFDekYsQ0FBQztvQkFDRCxPQUFPLE9BQU8sQ0FBQztnQkFDbkIsQ0FBQyxDQUFDLENBQUE7Z0JBQ0YsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLG9DQUFnQixDQUFDLENBQUM7WUFDL0MsQ0FBQztZQUNRLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxPQUFlO1lBQ3JELENBQUM7WUFDUSxzQkFBc0IsQ0FBQyxPQUE4QixFQUFFLE9BQWU7Z0JBQzNFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQztnQkFDZCxLQUFLLENBQUMsc0JBQXNCLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUMvQyw0REFBNEQ7Z0JBQzVELEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLGdEQUFnRCxDQUFDLENBQUMsQ0FBQTtnQkFDcEYsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEdBQVksRUFBRSxJQUFjLEVBQUUsSUFBa0I7b0JBQ2xFLElBQUksR0FBRyxDQUFDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7d0JBQ3RDLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUNwRSxDQUFDO29CQUNELElBQUksRUFBRSxDQUFDO2dCQUNYLENBQUMsQ0FBQyxDQUFDO2dCQUNILE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFHLFNBQVMsRUFBRSxVQUFVLEdBQUcsRUFBRSxHQUFHLEVBQUUsS0FBSztvQkFDdEQsZ0ZBQWdGO29CQUNoRixJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsR0FBRyxDQUFDO29CQUN4QixJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztvQkFDcEcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUNwRCxDQUFDLENBQUMsQ0FBQztnQkFDSCxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxRQUFRLEVBQUUsVUFBVSxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQUs7b0JBQ3JELGdGQUFnRjtvQkFDaEYsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUM7b0JBQzlCLElBQUksSUFBSSxFQUFFLENBQUM7d0JBQ1Asd0NBQXdDO3dCQUN4QyxJQUFJLGVBQWUsR0FBRyxtQ0FBbUMsQ0FBQzt3QkFDMUQsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQzt3QkFDM0gsU0FBUyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO29CQUNwRCxDQUFDO3lCQUFNLENBQUM7d0JBQ0osR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsT0FBTyxHQUFHLDJCQUEyQixDQUFDLENBQUE7b0JBQzVELENBQUM7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsa0JBQWtCLEVBQUUsVUFBVSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUk7b0JBQzlELE1BQU0sWUFBWSxHQUFHO3dCQUNqQixFQUFFLEVBQUUsS0FBSzt3QkFDVCxLQUFLLEVBQUU7NEJBQ0gsT0FBTyxFQUFFLGtIQUFrSDt5QkFDOUg7cUJBQ0osQ0FBQztvQkFDRixTQUFTLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3RELENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUksbUJBQW1CLEdBQUcsS0FBSztvQkFDM0IsSUFBSSxFQUFFLEdBQUcsTUFBTSxhQUFFLENBQUMsUUFBUSxDQUFDLHNFQUFzRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO29CQUMzRyxJQUFJLFFBQVEsR0FBRyxNQUFNLEVBQUUsQ0FBQywyQkFBMkIsRUFBRSxDQUFDO29CQUN0RCxJQUFJLFVBQVUsR0FBRyxFQUFFO3lCQUNkLE9BQU8sQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7eUJBQzFELE9BQU8sQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7eUJBQzFELE9BQU8sQ0FBQywrQkFBK0IsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQzt5QkFDeEUsT0FBTyxDQUFDLDZCQUE2QixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQzt5QkFDaEYsT0FBTyxDQUFDLHVCQUF1QixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7b0JBQ2hGLGtHQUFrRztvQkFDbEcsT0FBTyxVQUFVLENBQUE7Z0JBQ3JCLENBQUMsQ0FBQTtnQkFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxpQkFBaUIsRUFBRSxLQUFLLFdBQVcsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJO29CQUNuRSxJQUFJLENBQUM7d0JBQ0QsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLG1CQUFtQixFQUFFLEVBQUUsd0JBQXdCLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQ3pGLENBQUM7b0JBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQzt3QkFDWCxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBQSx1QkFBVSxFQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQ3hELENBQUM7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsb0NBQW9DLEVBQUUsS0FBSyxXQUFXLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSTtvQkFDdEYsTUFBTSxRQUFRLEdBQUcsTUFBTSxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUM7b0JBQ3ZDLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDaEQsSUFBSSxDQUFDO3dCQUNELE1BQU0sT0FBTyxHQUFHOzRCQUNaLE1BQU0sRUFBRSxHQUFHLFFBQVEsR0FBRyxNQUFNLHNCQUFzQjs0QkFDbEQsWUFBWSxFQUFFLEdBQUcsUUFBUSxHQUFHLE1BQU0sTUFBTTs0QkFDeEMsYUFBYSxFQUFFLDJCQUEyQixRQUFRLEdBQUcsTUFBTSxHQUFHOzRCQUM5RCxPQUFPLEVBQUUscUJBQXFCLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQzs0QkFDaEQsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLE1BQXlCLENBQUM7eUJBQ2pELENBQUE7d0JBQ0QsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLGtCQUFrQixDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO29CQUMvRSxDQUFDO29CQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7d0JBQ1gsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUEsdUJBQVUsRUFBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUN4RCxDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztZQUNELGFBQWEsQ0FBQyxPQUF3QjtnQkFDbEMsT0FBTztvQkFDSCxXQUFXLEVBQUUsVUFBVTtvQkFDdkIsU0FBUyxFQUFFLFlBQVk7b0JBQ3ZCLGFBQWEsRUFBRSxTQUFTO29CQUN4QixrQkFBa0IsRUFBRSxTQUFTO2lCQUNoQyxDQUFBO1lBQ0wsQ0FBQztZQUNRLGlCQUFpQjtnQkFDdEIsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDO2dCQUNkLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUMxQixFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxLQUFLLFdBQVcsR0FBWSxFQUFFLEdBQWEsRUFBRSxLQUFtQjtvQkFDN0YsU0FBUyxDQUFDLFNBQVMsQ0FBQyw4QkFBOEIsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ3RFLENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxLQUFLLFdBQVcsR0FBWSxFQUFFLEdBQWE7b0JBQzdELElBQUksTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQ25DLENBQUMsTUFBaUIsRUFBRSxFQUFFLENBQ2xCLE1BQU0sQ0FBQyxLQUFLLENBQUMsaURBQWlELEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO3lCQUNsRixnQkFBZ0IsRUFBRSxDQUM5QixDQUFDO29CQUNGLElBQUksUUFBUSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7b0JBQzVCLFNBQVMsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDaEQsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLEtBQUssV0FBVyxHQUFZLEVBQUUsR0FBYTtvQkFDakUsU0FBUyxDQUFDLFNBQVMsQ0FBQyxlQUFlLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUN2RSxDQUFDLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsS0FBSyxXQUFXLEdBQVksRUFBRSxHQUFhLEVBQUUsSUFBZ0I7b0JBQ3ZGLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7d0JBQzlDLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUNBQW1DLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO3dCQUMxRCxPQUFPLElBQUksRUFBRSxDQUFDO29CQUNsQixDQUFDO29CQUNELElBQUksR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUM3QixHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDM0IsSUFBSSxJQUFJLEdBQUcsbUJBQW1CLENBQUE7b0JBQzlCLElBQUksS0FBSyxHQUFHLE1BQU0sYUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDbkMsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxXQUFXLFFBQWdCO3dCQUN4RCxJQUFJLFFBQVEsR0FBRyxJQUFJLEdBQUcsR0FBRyxHQUFHLFFBQVEsQ0FBQzt3QkFDckMsSUFBSSxJQUFJLEdBQUcsTUFBTSxhQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO3dCQUNuQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDOzRCQUNoQixHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQzt3QkFDcEMsQ0FBQztvQkFDTCxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNKLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDZCxDQUFDLENBQUMsQ0FBQTtZQUNOLENBQUM7WUFDUSxLQUFLLENBQUMsVUFBVTtnQkFDckIsTUFBTSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ3pCLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQztnQkFDZCxFQUFFLENBQUMsTUFBTSxDQUFDLGdDQUFnQyxHQUFHLEtBQUssQ0FBQztnQkFDbkQsTUFBTSxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxLQUFLLFdBQVcsTUFBaUI7b0JBQzFELElBQUksU0FBUyxHQUFHOzs7Ozs7Ozs7OzthQVduQixDQUFDO29CQUNFLElBQUksT0FBTyxHQUFHO3dCQUNWLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLEVBQUU7d0JBQ2hGLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRTt3QkFDdEgsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDOzs7Ozs7O2lCQU90QixDQUFDLENBQUMsZ0JBQWdCLEVBQUU7d0JBQ2pCLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQzs7Ozs7OztpQkFPdEIsQ0FBQyxDQUFDLGdCQUFnQixFQUFFO3FCQUNwQixDQUFDO29CQUNGLEVBQUUsQ0FBQyxNQUFNLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7b0JBQ3pDLEVBQUUsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztvQkFDakQsRUFBRSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO29CQUMvQyxFQUFFLENBQUMsTUFBTSxDQUFDLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7b0JBQy9DLHVEQUF1RDtvQkFDdkQscURBQXFEO29CQUNyRCxxREFBcUQ7Z0JBQ3pELENBQUMsQ0FBQyxDQUFDO2dCQUNILEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLElBQUEsbUJBQVcsRUFBQyxFQUFFLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztnQkFDcEQsRUFBRSxDQUFDLGdCQUFnQixFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUNuRSxNQUFNLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDM0IsTUFBTSwyQkFBMkIsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMxQyxDQUFDO1lBQ0Qsb0dBQW9HO1lBQ3BHLGtHQUFrRztZQUNsRyxlQUFlO2dCQUNYLE9BQU8sQ0FBQyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBQSx5QkFBaUIsRUFBQyxTQUFTLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDN0YsQ0FBQztZQUNELHVGQUF1RjtZQUN2RixnQkFBZ0I7Z0JBQ1osSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDO2dCQUNkLElBQUksSUFBSSxHQUFHLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDL0IsSUFBSSxLQUFLLEdBQWEsRUFBRSxDQUFDO2dCQUN6QixNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUM3QyxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQztvQkFDM0MsSUFBSSxPQUFPLEdBQVksRUFBRSxHQUFHLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUM7b0JBQ3ZJLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUEsb0JBQVksRUFBQyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ2pFLENBQUMsQ0FBQyxDQUFDO2dCQUNILE9BQU8sSUFBQSx3QkFBZ0IsRUFDbkIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsRUFDdEUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFDM0IsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUNsQyxLQUFLLENBQ1IsQ0FBQztZQUNOLENBQUM7WUFDUSxrQkFBa0I7Z0JBQ3ZCLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLHNCQUFTLENBQUMsQ0FBQztZQUNwQyxDQUFDO1lBQ1EsY0FBYyxDQUFDLEdBQVksRUFBRSxJQUFvQjtnQkFDdEQsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDO2dCQUNkLElBQUksUUFBUSxHQUFHLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDO2dCQUN4QyxJQUFJLGVBQWUsR0FBNkIsUUFBUSxDQUFDLENBQUMsQ0FBQztvQkFDdkQsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtpQkFDNUcsQ0FBQyxDQUFDLENBQUM7b0JBQ0EsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtpQkFDdEcsQ0FBQztnQkFDRixJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7b0JBQzFCLGVBQWUsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDOUQsQ0FBQztnQkFDRCxJQUFJLGlCQUFpQixHQUE2QjtvQkFDOUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUseUJBQXlCLEVBQUU7b0JBQ2hGLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLDZCQUE2QixFQUFFO29CQUN4RixrSkFBa0o7b0JBQ2xKLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLCtCQUErQixFQUFFO29CQUVqRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUU7b0JBQ3pFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLG9CQUFvQixFQUFFO29CQUNyRiwwRUFBMEU7b0JBQzFFLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxpQkFBaUIsQ0FBQzt5QkFDdEUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLElBQUksSUFBSTsyQkFDdkIsQ0FBQyxDQUFDLElBQUksSUFBSSxZQUFZOzJCQUN0QixDQUFDLENBQUMsSUFBSSxJQUFJLFlBQVksQ0FDNUI7b0JBQ0wsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxzQkFBc0IsRUFBRSxJQUFJLEVBQUUseUJBQXlCLEVBQUU7b0JBQy9FLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUscUJBQXFCLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsd0JBQXdCLEVBQUU7aUJBQ3BHLENBQUM7Z0JBQ0YsSUFBSSxTQUFTLEdBQTZCO29CQUN0QyxHQUFHLGlCQUFpQjtvQkFDcEIsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtvQkFDdEcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtvQkFDdEcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLElBQUksRUFBRSx1QkFBdUIsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO29CQUNuSCxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7b0JBQ2xILEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtvQkFDOUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO29CQUM1RyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7b0JBQ2pILEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxJQUFJLEVBQUUsdUJBQXVCLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtvQkFDbkgsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO29CQUNsSCxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7b0JBQy9HLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtvQkFDbEgsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO29CQUNqSCxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFLElBQUksRUFBRSxLQUFLLEVBQUU7b0JBQ3BILEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRTtvQkFDakgsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFO29CQUNsSCxHQUFHLGVBQWU7b0JBQ2xCLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUU7aUJBQ3ZHLENBQUE7Z0JBQ0QsT0FBTyxTQUFTLENBQUE7Z0JBQ2hCLHFEQUFxRDtZQUN6RCxDQUFDO1lBRUQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxTQUEyQixJQUFJO2dCQUMvQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUM7Z0JBRTFELGlGQUFpRjtnQkFDakYsTUFBTSxjQUFjLEdBQUcsS0FBSyxFQUFFLFFBQWtCLEVBQUUsRUFBRTtvQkFDaEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsTUFBTSxRQUFRLENBQUMsS0FBSyxDQUFDLHdEQUF3RCxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUM7b0JBQ25JLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sUUFBUSxDQUFDLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDO29CQUUxSCxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxLQUFLLENBQUM7O1NBRXRFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQztvQkFFWixJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxLQUFLLENBQUM7O1NBRXZFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQztvQkFFWixJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxLQUFLLENBQUMsZ0VBQWdFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQztvQkFDL0ksSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxHQUFHLENBQUMsTUFBTSxRQUFRLENBQUMsS0FBSyxDQUFDLDBEQUEwRCxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUM7b0JBRXRJLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLGlCQUFpQixHQUFHLENBQUMsTUFBTSxRQUFRLENBQUMsS0FBSyxDQUFDOztTQUUxRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUM7b0JBRVosSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxLQUFLLENBQUM7O1NBRTNFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQztvQkFFWixJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxLQUFLLENBQUM7O1NBRXBFLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQztnQkFDckIsQ0FBQyxDQUFDO2dCQUVGLElBQUksTUFBTSxFQUFFLENBQUM7b0JBQ1QsTUFBTSxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ2pDLENBQUM7cUJBQU0sQ0FBQztvQkFDSixNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRTt3QkFDM0MsTUFBTSxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQ25DLENBQUMsQ0FBQyxDQUFDO2dCQUNQLENBQUM7Z0JBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQTtnQkFDL0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUM3QixDQUFDO1lBQ0Qsc0NBQXNDO1lBQ3RDLGtCQUFrQjtZQUNsQiwwREFBMEQ7WUFDMUQsaUhBQWlIO1lBQ2pILDBDQUEwQztZQUMxQyxPQUFPO1lBQ0UsVUFBVSxDQUFDLEdBQVk7Z0JBQzVCLElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzFDLE9BQU8sRUFBRSxHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsYUFBYSxFQUFFLENBQUM7WUFDMUYsQ0FBQztZQUNRLGlCQUFpQjtnQkFDdEIsSUFBSSxhQUFhLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUFFLEdBQUcsYUFBYSxFQUFFLENBQUM7WUFDdkYsQ0FBQztZQUNRLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxHQUFZOztnQkFDdkQsT0FBTztvQkFDSCxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsK0JBQStCLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ3JELEtBQUssRUFBRSxNQUFBLEdBQUcsQ0FBQyxJQUFJLDBDQUFFLEtBQUs7aUJBQ3pCLENBQUE7WUFDTCxDQUFDO1lBQ0QsS0FBSyxDQUFDLDJCQUEyQjtnQkFDN0IsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDO2dCQUNkLE1BQU0sUUFBUSxHQUFHLE1BQU0sRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFBO2dCQUN0QyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztnQkFFckUsSUFBSSxVQUFVLEdBQUc7b0JBQ2IsT0FBTyxFQUFFLGNBQWM7b0JBQ3ZCLE9BQU8sRUFBRSxRQUFRO29CQUNqQixLQUFLLEVBQUU7d0JBQ0gsT0FBTzt3QkFDUCxTQUFTO3dCQUNULGlCQUFpQjt3QkFDakIsNkJBQTZCO3dCQUM3QixpQ0FBaUM7d0JBQ2pDLG1DQUFtQzt3QkFDbkMsa0JBQWtCO3dCQUNsQix3QkFBd0I7d0JBQ3hCLGtCQUFrQjt3QkFDbEIsb0JBQW9CO3dCQUNwQixtQkFBbUI7d0JBQ25CLGdCQUFnQjt3QkFDaEIscUJBQXFCO3dCQUNyQixpQkFBaUI7d0JBQ2pCLG1CQUFtQjt3QkFDbkIsNEJBQTRCO3dCQUM1QixpQkFBaUI7d0JBQ2pCLG9CQUFvQjt3QkFDcEIsd0JBQXdCO3dCQUN4QixxQkFBcUI7d0JBQ3JCLDZCQUE2Qjt3QkFDN0Isa0JBQWtCO3dCQUNsQixrQkFBa0I7d0JBQ2xCLGtDQUFrQzt3QkFDbEMsc0JBQXNCO3dCQUN0QixvQkFBb0I7d0JBQ3BCLHNCQUFzQjt3QkFDdEIsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLHVCQUF1Qjt3QkFDdkIsMEJBQTBCO3dCQUMxQixZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsbUJBQW1CO3dCQUNuQixvQkFBb0I7d0JBQ3BCLHVCQUF1Qjt3QkFDdkIsd0JBQXdCO3dCQUN4QixrQkFBa0I7d0JBQ2xCLGtCQUFrQjt3QkFDbEIsNkJBQTZCO3dCQUM3QixnQkFBZ0I7d0JBQ2hCLGdCQUFnQjt3QkFDaEIsOEJBQThCO3dCQUM5Qiw2QkFBNkI7d0JBQzdCLDRCQUE0Qjt3QkFDNUIsOEJBQThCO3dCQUM5QiwwQkFBMEI7d0JBQzFCLGtDQUFrQzt3QkFDbEMsNEJBQTRCO3dCQUM1Qiw2QkFBNkI7d0JBQzdCLGlDQUFpQzt3QkFDakMsaUNBQWlDO3dCQUNqQyxpQkFBaUI7d0JBQ2pCLHlCQUF5Qjt3QkFDekIsdUJBQXVCO3dCQUN2Qiw4QkFBOEI7d0JBQzlCLDhCQUE4Qjt3QkFDOUIsNkJBQTZCO3dCQUM3Qiw2QkFBNkI7d0JBQzdCLDRCQUE0Qjt3QkFDNUIsMEJBQTBCO3dCQUMxQiw2QkFBNkI7d0JBQzdCLDRCQUE0Qjt3QkFDNUIsaUNBQWlDO3dCQUNqQyxnQkFBZ0I7d0JBQ2hCLGNBQWM7d0JBQ2Qsb0JBQW9CO3dCQUNwQixrQkFBa0I7d0JBQ2xCLHNCQUFzQjt3QkFDdEIsc0JBQXNCO3dCQUN0Qiw4QkFBOEI7d0JBQzlCLHdCQUF3Qjt3QkFDeEIseUJBQXlCO3dCQUN6QixpQkFBaUI7d0JBQ2pCLHVCQUF1Qjt3QkFDdkIsMEJBQTBCO3dCQUMxQixxQkFBcUI7d0JBQ3JCLG1DQUFtQzt3QkFDbkMscUJBQXFCO3dCQUNyQixtQkFBbUI7d0JBQ25CLGlCQUFpQjt3QkFDakIsbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLHdCQUF3Qjt3QkFDeEIsMEJBQTBCO3dCQUMxQix3QkFBd0I7d0JBQ3hCLG1DQUFtQztxQkFDdEM7b0JBQ0QsU0FBUyxFQUFDO3dCQUNOLEVBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBQyxpQkFBaUIsRUFBQztxQkFDdkQ7b0JBQ0QsZUFBZSxFQUFFLFNBQVM7aUJBQzdCLENBQUM7Z0JBQ0YsVUFBVSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxRQUFRLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBRXRILElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUMxQyxJQUFJLElBQUksSUFBSSxFQUFFLENBQUMsZUFBZSxFQUFFLENBQUM7b0JBQzdCLElBQUksT0FBTyxHQUFHLElBQUksR0FBRyxHQUFHLENBQUM7b0JBQ3pCLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSwwQkFBMEIsQ0FBQyxDQUFDO29CQUN6RCxrREFBa0Q7b0JBQ2xELElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLFlBQVk7d0JBQ3pFLGlFQUFpRTt3QkFDakUsMkRBQTJEO3dCQUMzRCxPQUFPLE9BQU8sR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztvQkFDN0QsQ0FBQyxDQUFDLENBQUM7b0JBRUgsVUFBVSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDOUQsQ0FBQztnQkFDRCxPQUFPLFVBQVUsQ0FBQTtZQUNyQixDQUFDO1lBQ0QsZ0JBQWdCLENBQUMsUUFBaUI7Z0JBQzlCLE9BQU87b0JBQ0gsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSwrQkFBK0IsRUFBRSxLQUFLLEVBQUUsaUNBQWlDLEVBQUU7b0JBQ3JHLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUU7b0JBQ3pGLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBRTtvQkFDdEUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFO29CQUNoRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsc0JBQXNCLEVBQUU7b0JBQ3BFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRTtpQkFDbkUsQ0FBQTtZQUNMLENBQUM7WUFBQSxDQUFDO1lBQ0YsYUFBYSxDQUFDLE9BQWdCOztnQkFDMUIsSUFBSSxhQUFhLEdBQW1CLENBQUMsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQTtnQkFDNUYsSUFBSSxNQUFBLE1BQUEsT0FBTyxDQUFDLEtBQUssMENBQUUsS0FBSywwQ0FBRSxNQUFNLEVBQUUsQ0FBQztvQkFDL0IsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUE7Z0JBQ2xILENBQUM7Z0JBQ0QsSUFBSSxNQUFBLE1BQUEsT0FBTyxDQUFDLEtBQUssMENBQUUsS0FBSywwQ0FBRSxXQUFXLEVBQUUsQ0FBQztvQkFDcEMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLHlCQUF5QixFQUFFLEtBQUssRUFBRSw4QkFBOEIsRUFBRSxDQUFDLENBQUM7b0JBQ2pILGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxrQ0FBa0MsRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO29CQUNoSCxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsK0JBQStCLEVBQUUsS0FBSyxFQUFFLCtCQUErQixFQUFFLENBQUMsQ0FBQztvQkFDeEgsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLCtCQUErQixFQUFFLEtBQUssRUFBRSx3Q0FBd0MsRUFBRSxDQUFDLENBQUM7b0JBQ2pJLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO29CQUM5RixhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsNEJBQTRCLEVBQUUsS0FBSyxFQUFFLGdDQUFnQyxFQUFFLENBQUMsQ0FBQztnQkFDMUgsQ0FBQztnQkFDRCxJQUFJLE1BQUEsTUFBQSxPQUFPLENBQUMsS0FBSywwQ0FBRSxTQUFTLDBDQUFFLFFBQVEsRUFBRSxDQUFDO29CQUNyQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsd0JBQXdCLEVBQUUsQ0FBQyxDQUFDO2dCQUM3RSxDQUFDO2dCQUNELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxDQUFBO1lBQzNFLENBQUM7WUFDRCxpQkFBaUIsQ0FBQyxPQUFnQjs7Z0JBQzlCLElBQUksbUJBQW1CLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLGFBQWEsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzNHLElBQUksaUJBQWlCLEdBQW1CLEVBQUUsQ0FBQztnQkFDM0MsSUFBSSxNQUFBLE1BQUEsT0FBTyxDQUFDLEtBQUssMENBQUUsS0FBSywwQ0FBRSxXQUFXLEVBQUUsQ0FBQztvQkFDcEMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSwwQkFBMEIsRUFBRSxDQUFDLENBQUM7Z0JBQ3RHLENBQUM7Z0JBQ0QsaUJBQWlCLENBQUMsSUFBSSxDQUNsQixFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxtQkFBbUIsRUFBRSxFQUFFLEVBQ2hILEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLG1CQUFtQixFQUFFLEVBQUUsRUFDL0csRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLDRCQUE0QixFQUFFLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLG1CQUFtQixFQUFFLEVBQUUsQ0FDdkosQ0FBQztnQkFDRixJQUFJLE1BQUEsTUFBQSxPQUFPLENBQUMsS0FBSywwQ0FBRSxLQUFLLDBDQUFFLFdBQVcsRUFBRSxDQUFDO29CQUNwQyxpQkFBaUIsQ0FBQyxJQUFJLENBQ2xCLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSw0QkFBNEIsRUFBRSxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxtQkFBbUIsRUFBRSxFQUFFLENBQ3RKLENBQUM7Z0JBQ04sQ0FBQztnQkFBQSxDQUFDO2dCQUNGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQTtZQUN4RyxDQUFDO1lBQ0QsZ0JBQWdCLENBQUMsT0FBZ0I7O2dCQUM3QixJQUFJLGdCQUFnQixHQUFtQixFQUFFLENBQUE7Z0JBQ3pDLGdCQUFnQixDQUFDLElBQUksQ0FDakIsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLHlCQUF5QixFQUFFLEVBQzVFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSx5QkFBeUIsRUFBRSxFQUM1RSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsQ0FDN0UsQ0FBQztnQkFDRixJQUFJLE1BQUEsTUFBQSxPQUFPLENBQUMsS0FBSywwQ0FBRSxLQUFLLDBDQUFFLFdBQVcsRUFBRSxDQUFDO29CQUNwQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQ2pCLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxFQUMxRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSw0QkFBNEIsRUFBRSxDQUN2RixDQUFDO2dCQUNOLENBQUM7Z0JBQ0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxDQUFBO1lBQ3JHLENBQUM7WUFFRCxZQUFZLENBQUMsT0FBZ0I7O2dCQUN6QixJQUFJLFlBQVksR0FBbUIsRUFBRSxDQUFBO2dCQUNyQyxJQUFJLE1BQUEsTUFBQSxPQUFPLENBQUMsS0FBSywwQ0FBRSxLQUFLLDBDQUFFLFdBQVcsRUFBRSxDQUFDO29CQUNwQyxZQUFZLENBQUMsSUFBSSxDQUNiLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsRUFDeEQsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxFQUN4RCxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLEVBQzlELEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFDdEQsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUM3RCxDQUFBO29CQUNELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLENBQUE7Z0JBQy9GLENBQUM7Z0JBQ0QsT0FBTyxJQUFJLENBQUE7WUFDZixDQUFDO1lBRUQsaUJBQWlCLENBQUMsT0FBZ0I7O2dCQUM5QixNQUFNLGNBQWMsR0FBbUIsRUFBRSxDQUFDO2dCQUUxQyxJQUFJLENBQUEsTUFBQSxNQUFBLE9BQU8sQ0FBQyxLQUFLLDBDQUFFLEtBQUssMENBQUUsV0FBVyxNQUFJLE1BQUEsTUFBQSxPQUFPLENBQUMsS0FBSywwQ0FBRSxTQUFTLDBDQUFFLFFBQVEsQ0FBQSxFQUFFLENBQUM7b0JBQzFFLE1BQU0sY0FBYyxHQUFtQjt3QkFDbkMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTt3QkFDaEQsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUU7d0JBQ3ZFLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO3dCQUN0QyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFO3FCQUNuRCxDQUFDO29CQUNGLGNBQWMsQ0FBQyxJQUFJLENBQUM7d0JBQ2hCLFFBQVEsRUFBRSxNQUFNO3dCQUNoQixJQUFJLEVBQUUsU0FBUzt3QkFDZixLQUFLLEVBQUUsU0FBUzt3QkFDaEIsV0FBVyxFQUFFLGNBQWM7cUJBQzlCLENBQUMsQ0FBQztnQkFDUCxDQUFDO2dCQUVELElBQUksTUFBQSxNQUFBLE9BQU8sQ0FBQyxLQUFLLDBDQUFFLGdCQUFnQiwwQ0FBRSxNQUFNLEVBQUUsQ0FBQztvQkFDMUMsY0FBYyxDQUFDLElBQUksQ0FBQzt3QkFDaEIsUUFBUSxFQUFFLE1BQU07d0JBQ2hCLElBQUksRUFBRSxXQUFXO3dCQUNqQixXQUFXLEVBQUU7NEJBQ1QsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUU7NEJBQ3pDLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBQztvQ0FDL0MsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUU7b0NBQ2xDLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO29DQUNyQyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtvQ0FDdEMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUU7aUNBQzVDLEVBQUM7NEJBQ0YsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLHdCQUF3QixFQUFFOzRCQUMzRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFOzRCQUN6RCxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFOzRCQUM5SCxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUU7NEJBQzlELEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBRTt5QkFDN0U7cUJBQ0osQ0FBQyxDQUFDO2dCQUNQLENBQUM7Z0JBRUQsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ3BCLGNBQWMsQ0FBQyxJQUFJLENBQ2Y7d0JBQ0ksUUFBUSxFQUFFLE1BQU07d0JBQ2hCLElBQUksRUFBRSx5QkFBeUI7d0JBQy9CLEtBQUssRUFBRSx5QkFBeUI7d0JBQ2hDLFdBQVcsRUFBRTs0QkFDVCxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTs0QkFDckMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7NEJBQ3RDLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFOzRCQUN2QyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFOzRCQUMvQyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFO3lCQUNqRDtxQkFDSixFQUNELEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsdUJBQXVCLEVBQUUsRUFDcEQsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsRUFDekMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FDMUMsQ0FBQztnQkFDTixDQUFDO2dCQUVELElBQUksQ0FBQSxNQUFBLE1BQUEsT0FBTyxDQUFDLEtBQUssMENBQUUsS0FBSywwQ0FBRSxXQUFXLE1BQUksTUFBQSxNQUFBLE9BQU8sQ0FBQyxLQUFLLDBDQUFFLFNBQVMsMENBQUUsUUFBUSxDQUFBLEVBQUUsQ0FBQztvQkFDMUUsY0FBYyxDQUFDLElBQUksQ0FBQzt3QkFDaEIsUUFBUSxFQUFFLE1BQU07d0JBQ2hCLElBQUksRUFBRSxVQUFVO3dCQUNoQixXQUFXLEVBQUU7NEJBQ1QsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFOzRCQUNoRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRTs0QkFDcEMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7NEJBQ3ZDLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7eUJBQ2hEO3FCQUNKLENBQUMsQ0FBQztnQkFDUCxDQUFDO2dCQUVELE9BQU8sY0FBYyxDQUFDO1lBQzFCLENBQUM7WUFFRCxtSEFBbUg7WUFDbkgsa0hBQWtIO1lBQ2xILG1HQUFtRztZQUNuRyxrSUFBa0k7WUFDbEksb0ZBQW9GO1lBQzNFLE9BQU8sQ0FBQyxPQUFpQjs7Z0JBQzlCLElBQUksT0FBTyxJQUFJLElBQUksRUFBRSxDQUFDO29CQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLDZFQUE2RSxDQUFDLENBQUM7Z0JBQ25HLENBQUM7Z0JBQ0QsSUFBSSxJQUFJLEdBQW1CLEVBQUUsQ0FBQztnQkFDOUIsSUFBSSxlQUFlLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxLQUFLLGNBQWMsRUFBRSxDQUFDO29CQUNqRCxJQUFJLE1BQUEsTUFBQSxPQUFPLENBQUMsS0FBSywwQ0FBRSxTQUFTLDBDQUFFLE9BQU8sRUFBRSxDQUFDO3dCQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFBO3dCQUNyRSxJQUFJLENBQUMsSUFBSSxDQUNMLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsRUFDbkQsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxDQUN4RCxDQUFDO29CQUNOLENBQUM7Z0JBQ0wsQ0FBQztxQkFBTSxDQUFDO29CQUNKLElBQUksTUFBQSxNQUFBLE9BQU8sQ0FBQyxLQUFLLDBDQUFFLEtBQUssMENBQUUsTUFBTSxFQUFFLENBQUM7d0JBQy9CLElBQUksQ0FBQyxJQUFJLENBQ0wsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxFQUMvQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQ2pDLENBQUM7d0JBQ0YsSUFBSSxNQUFBLE1BQUEsT0FBTyxDQUFDLEtBQUssMENBQUUsS0FBSywwQ0FBRSxXQUFXLEVBQUUsQ0FBQzs0QkFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFLEtBQUssRUFBRSxxQkFBcUIsRUFBRSxDQUFDLENBQUE7NEJBQzVGLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSwyQkFBMkIsRUFBRSxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFBO3dCQUNuRyxDQUFDO3dCQUNELElBQUksQ0FBQyxJQUFJLENBQ0w7NEJBQ0ksUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFO2dDQUN0RSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRTs2QkFDOUg7eUJBQ0osQ0FDSixDQUFBO29CQUNMLENBQUM7b0JBQ0QsSUFBSSxDQUFBLE1BQUEsTUFBQSxPQUFPLENBQUMsS0FBSywwQ0FBRSxLQUFLLDBDQUFFLE1BQU0sTUFBSSxNQUFBLE1BQUEsT0FBTyxDQUFDLEtBQUssMENBQUUsS0FBSywwQ0FBRSxXQUFXLENBQUEsS0FBSSxNQUFBLE1BQUEsT0FBTyxDQUFDLEtBQUssMENBQUUsU0FBUywwQ0FBRSxRQUFRLENBQUEsRUFBRSxDQUFDO3dCQUMxRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztvQkFDM0MsQ0FBQztvQkFDRCxJQUFJLENBQUEsTUFBQSxNQUFBLE9BQU8sQ0FBQyxLQUFLLDBDQUFFLEtBQUssMENBQUUsV0FBVyxNQUFJLE1BQUEsTUFBQSxPQUFPLENBQUMsS0FBSywwQ0FBRSxTQUFTLDBDQUFFLFFBQVEsQ0FBQSxFQUFFLENBQUM7d0JBQzFFLElBQUksQ0FBQyxJQUFJLENBQ0wsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7d0JBQ3hGLDRGQUE0RjtvQkFFaEcsQ0FBQztvQkFDRCxJQUFJLE1BQUEsTUFBQSxPQUFPLENBQUMsS0FBSywwQ0FBRSxTQUFTLDBDQUFFLFFBQVEsRUFBRSxDQUFDO3dCQUNyQyxJQUFJLENBQUMsSUFBSSxDQUNMOzRCQUNJLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUU7Z0NBQzdDLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dDQUN4QyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLHdCQUF3QixFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtnQ0FDM08sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUU7Z0NBQzVDLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsNEJBQTRCLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUU7Z0NBQ3JHLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUU7Z0NBQzlDLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO2dDQUMxQyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFO2dDQUNqRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLDBCQUEwQixFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUU7NkJBQzlFO3lCQUNKLENBQ0osQ0FBQztvQkFDTixDQUFDO29CQUNELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDdkQsSUFBSSxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUM7d0JBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7b0JBQ3JGLENBQUM7b0JBQ0QsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDN0MsSUFBSSxTQUFTLEVBQUUsQ0FBQzt3QkFDWixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUN6QixDQUFDO2dCQUNMLENBQUM7Z0JBQ0QsSUFBSSxJQUFBLHFCQUFhLEVBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDdkUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7Z0JBQ3BELENBQUM7Z0JBQ0QsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ3BCLENBQUM7WUFDUSxnQkFBZ0I7Z0JBQ3JCLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQztnQkFDZCxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxDQUFDLGtCQUFrQixHQUFHO29CQUN0QixHQUFHLElBQUksQ0FBQyxrQkFBa0I7b0JBQ3hCLEtBQUssRUFBTCxtQkFBSztvQkFDTCxRQUFRLEVBQVIseUJBQVE7b0JBQ1IsUUFBUSxFQUFSLHlCQUFRO29CQUNSLGNBQWMsRUFBZCxxQ0FBYztvQkFDZCx1QkFBdUIsRUFBdkIsNkNBQXVCO29CQUN2QixzQkFBc0IsRUFBdEIsNENBQXNCO29CQUN0Qix1QkFBdUIsRUFBdkIsNkNBQXVCO29CQUN2QixzQkFBc0IsRUFBdEIsNENBQXNCO29CQUN0QiwwQkFBMEIsRUFBMUIsZ0RBQTBCO29CQUMxQixpQkFBaUIsRUFBakIsMkNBQWlCO29CQUNqQixhQUFhLEVBQWIsbUNBQWE7b0JBQ2IsWUFBWSxFQUFaLGlDQUFZO29CQUNaLFlBQVksRUFBWixpQ0FBWTtvQkFDWixRQUFRLEVBQVIseUJBQVE7b0JBQ1IsY0FBYyxFQUFkLHFDQUFjO29CQUNkLGtCQUFrQixFQUFsQiw2Q0FBa0I7b0JBQ2xCLE1BQU0sRUFBTixxQkFBTTtvQkFDTixVQUFVLEVBQVYsNkJBQVU7b0JBQ1YsR0FBRyxFQUFILGVBQUc7b0JBQ0gsT0FBTyxFQUFQLHVCQUFPO29CQUNQLE9BQU8sRUFBUCx1QkFBTztvQkFDUCxPQUFPLEVBQVAsdUJBQU87b0JBQ1AsUUFBUSxFQUFSLHlCQUFRO29CQUNSLGdCQUFnQixFQUFoQix5Q0FBZ0I7b0JBQ2hCLGVBQWUsRUFBZix1Q0FBZTtvQkFDZixHQUFHLEVBQUgsZUFBRztvQkFDSCxhQUFhLEVBQWIsbUNBQWE7b0JBQ2IsUUFBUSxFQUFSLHlCQUFRO29CQUNSLFVBQVUsRUFBViw2QkFBVTtvQkFDVixXQUFXLEVBQVgsK0JBQVc7b0JBQ1gsT0FBTyxFQUFQLHVCQUFPO29CQUNQLEtBQUssRUFBTCxtQkFBSztvQkFDTCxnQkFBZ0IsRUFBaEIseUNBQWdCO29CQUNoQixNQUFNLEVBQU4scUJBQU07b0JBQ04sVUFBVSxFQUFWLDZCQUFVO29CQUNWLDBCQUEwQixFQUExQiw2Q0FBMEI7b0JBQzFCLDBCQUEwQixFQUExQiw2Q0FBMEI7b0JBQzFCLDBCQUEwQixFQUExQiw2Q0FBMEI7b0JBQzFCLDBCQUEwQixFQUExQiw2Q0FBMEI7b0JBQzFCLFlBQVksRUFBWixpQ0FBWTtvQkFDWix3QkFBd0IsRUFBeEIseURBQXdCO29CQUN4QixnQkFBZ0IsRUFBaEIseUNBQWdCO29CQUNoQixZQUFZLEVBQVosaUNBQVk7b0JBQ1osWUFBWSxFQUFaLGlDQUFZO29CQUNaLFlBQVksRUFBWixpQ0FBWTtvQkFDWixZQUFZLEVBQVosaUNBQVk7b0JBQ1osVUFBVSxFQUFWLDZCQUFVO29CQUNWLGNBQWMsRUFBZCxxQ0FBYztvQkFDZCxvQkFBb0IsRUFBcEIsaURBQW9CO29CQUNwQixrQkFBa0IsRUFBbEIsNkNBQWtCO29CQUNsQixvQkFBb0IsRUFBcEIsaURBQW9CO29CQUNwQix3QkFBd0IsRUFBeEIseURBQXdCO29CQUN4Qix5QkFBeUIsRUFBekIsMkRBQXlCO29CQUN6QixnQkFBZ0IsRUFBaEIseUNBQWdCO29CQUNoQixhQUFhLEVBQWIsbUNBQWE7b0JBQ2IsZUFBZSxFQUFmLHVDQUFlO29CQUNmLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBQSxtQ0FBYSxFQUFDLE9BQU8sRUFDbEQsRUFBRSxNQUFNLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFFLG1DQUFtQyxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLENBQ3BPO29CQUNDLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBQSxtQ0FBYSxFQUFDLE9BQU8sRUFDcEQsRUFBRSxNQUFNLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFFLHFDQUFxQyxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsQ0FDL1E7b0JBQ0Msa0JBQWtCLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFBLG1DQUFhLEVBQUMsT0FBTyxFQUNsRCxFQUFFLE1BQU0sRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUNuVztvQkFDQywyQkFBMkIsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUEsbUNBQWEsRUFBQyxPQUFPLEVBQzNELEVBQUUsTUFBTSxFQUFFLHNCQUFzQixFQUFFLEtBQUssRUFBRSwrQkFBK0IsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FDak47b0JBQ0MscUJBQXFCLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFBLG1DQUFhLEVBQUMsT0FBTyxFQUNyRCxFQUFFLE1BQU0sRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQUUseUJBQXlCLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQ3RNO29CQUNDLGtCQUFrQixFQUFsQiw2Q0FBa0I7b0JBQ2xCLFNBQVMsRUFBVCwyQkFBUztvQkFDVCxPQUFPLEVBQVAsdUJBQU87b0JBQ1AsT0FBTyxFQUFQLHVCQUFPO29CQUNQLFFBQVEsRUFBUix5QkFBUTtvQkFDUixXQUFXLEVBQVgsK0JBQVc7b0JBQ1gsV0FBVyxFQUFYLCtCQUFXO29CQUNYLFlBQVksRUFBWixpQ0FBWTtvQkFDWixXQUFXLEVBQVgsK0JBQVc7b0JBQ1gsTUFBTSxFQUFOLHFCQUFNO29CQUNOLE1BQU0sRUFBTixxQkFBTTtvQkFDTixpQ0FBaUMsRUFBakMsMkVBQWlDO29CQUNqQyxZQUFZLEVBQVosaUNBQVk7b0JBQ1osT0FBTyxFQUFQLHVCQUFPO29CQUNQLFVBQVUsRUFBViw2QkFBVTtvQkFDVixNQUFNLEVBQU4scUJBQU07b0JBQ04sUUFBUSxFQUFSLHlCQUFRO29CQUNSLGlCQUFpQixFQUFqQiwyQ0FBaUI7aUJBQ3RCLENBQUE7Z0JBQ0QsRUFBRSxDQUFDLHVCQUF1QixDQUFDLGVBQWUsRUFBRSxVQUFVLFFBQVEsRUFBRSxPQUFPOztvQkFDbkUsUUFBUSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsUUFBUSxLQUFJLE1BQUEsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsS0FBSywwQ0FBRSxTQUFTLDBDQUFFLFFBQVEsQ0FBQSxDQUFDO29CQUM3RSxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEtBQUs7d0JBQ25DLElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxtQkFBbUIsRUFBRSxDQUFDOzRCQUNwQyxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQ0FDaEIsT0FBTyxDQUFDLEtBQUssQ0FBQywwREFBMEQsQ0FBQyxDQUFDOzRCQUM5RSxDQUFDOzRCQUNELEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO3dCQUN6QixDQUFDO29CQUNMLENBQUMsQ0FBQyxDQUFBO2dCQUNOLENBQUMsQ0FBQyxDQUFBO2dCQUNGLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxpQkFBaUIsRUFBRSxVQUFVLFFBQVEsRUFBRSxPQUFPOztvQkFDckUsUUFBUSxDQUFDLEdBQUcsR0FBRyxFQUFFLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7b0JBQ2xELFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQ3ZCLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFDdkQsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUN0RCxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQ3hELEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FDMUQsQ0FBQztvQkFDRixRQUFRLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLEtBQUksTUFBQSxNQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxLQUFLLDBDQUFFLFNBQVMsMENBQUUsVUFBVSxDQUFBLENBQUM7b0JBQy9FLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsS0FBSzs7d0JBQ25DLElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxjQUFjLEVBQUUsQ0FBQzs0QkFDL0IsS0FBSyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7d0JBQzFCLENBQUM7d0JBQ0QsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLGVBQWUsRUFBRSxDQUFDOzRCQUNoQyxLQUFLLENBQUMsUUFBUSxHQUFHLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLE9BQU8sTUFBSSxNQUFBLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLEtBQUssMENBQUUsU0FBUywwQ0FBRSxVQUFVLENBQUEsQ0FBQzt3QkFDL0UsQ0FBQztvQkFDTCxDQUFDLENBQUMsQ0FBQTtvQkFDRixRQUFRLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsY0FBYyxFQUFFLGdCQUFnQixDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFO3dCQUNqRixPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFBO29CQUMxRSxDQUFDLENBQUMsQ0FBQyxDQUFBO29CQUNILDJCQUEyQjtvQkFDM0IsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLE1BQU0sQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO29CQUNwRSxRQUFRLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO29CQUUvRSxJQUFJLFdBQVcsR0FBRyxRQUFRLENBQUMsR0FBSSxDQUFDLElBQUksQ0FBQTtvQkFDcEMsUUFBUSxDQUFDLEdBQUksQ0FBQyxJQUFJLEdBQUc7O3lCQUVaLFdBQVc7Ozs7Ozs7Ozs7O2FBV3ZCLENBQUE7Z0JBQ0QsQ0FBQyxDQUFDLENBQUE7Z0JBQ0YsRUFBRSxDQUFDLHVCQUF1QixDQUFDLFlBQVksRUFBRSxVQUFVLFFBQVEsRUFBRSxPQUFPO29CQUNoRSxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO3dCQUN6QixJQUFJLEVBQUUsZUFBZTt3QkFDckIsUUFBUSxFQUFFLE9BQU87d0JBQ2pCLFFBQVEsRUFBRSxLQUFLO3FCQUNsQixFQUFFO3dCQUNDLElBQUksRUFBRSwrQkFBK0I7d0JBQ3JDLFFBQVEsRUFBRSxPQUFPO3dCQUNqQixRQUFRLEVBQUUsS0FBSztxQkFDbEIsRUFBRTt3QkFDQyxJQUFJLEVBQUUsaUJBQWlCO3dCQUN2QixRQUFRLEVBQUUsU0FBUzt3QkFDbkIsWUFBWSxFQUFFLEtBQUs7d0JBQ25CLFFBQVEsRUFBRSxDQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxPQUFPLEtBQUksT0FBTyxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztxQkFDMUcsRUFBRTt3QkFDQyxJQUFJLEVBQUUsZUFBZTt3QkFDckIsUUFBUSxFQUFFLFNBQVM7d0JBQ25CLFFBQVEsRUFBRSxLQUFLO3dCQUNmLGNBQWMsRUFBRSxNQUFNO3FCQUN6QixFQUFFO3dCQUNDLElBQUksRUFBRSx5QkFBeUI7d0JBQy9CLFFBQVEsRUFBRSxTQUFTO3dCQUNuQixRQUFRLEVBQUUsS0FBSzt3QkFDZixjQUFjLEVBQUUsT0FBTztxQkFDMUIsQ0FBQyxDQUFDO2dCQUNQLENBQUMsQ0FBQyxDQUFBO2dCQUNGLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxXQUFXLEVBQUUsVUFBVSxRQUFRLEVBQUUsT0FBTzs7b0JBQy9ELElBQUksT0FBTyxHQUFHLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLElBQUksQ0FBQyxHQUFHLE1BQUssT0FBTyxDQUFDO29CQUM1QyxRQUFRLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLEtBQUksTUFBQSxNQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxLQUFLLDBDQUFFLFNBQVMsMENBQUUsUUFBUSxDQUFBLENBQUM7b0JBQzdFLFFBQVEsQ0FBQyxLQUFLLEdBQUcsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7Z0JBQ3pDLENBQUMsQ0FBQyxDQUFBO2dCQUNGLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyx1QkFBdUIsRUFBRSxVQUFVLFFBQVEsRUFBRSxRQUFRO29CQUM1RSxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDaEIsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLENBQ25GLENBQUE7Z0JBQ0wsQ0FBQyxDQUFDLENBQUE7Z0JBRUYsRUFBRSxDQUFDLHVCQUF1QixDQUFDLFlBQVksRUFBRSxVQUFVLFFBQVE7b0JBQ3ZELFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNoQixFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLENBQzNHLENBQUM7b0JBQ0YsUUFBUSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQztvQkFDbEQsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQ3JCLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUN6RixDQUFDO2dCQUNOLENBQUMsQ0FBQyxDQUFBO1lBQ04sQ0FBQztTQUNKLENBQUE7SUFDTCxDQUFDO0lBRVUsUUFBQSxTQUFTLEdBQUcsZUFBZSxDQUFDLElBQUEsc0NBQXNCLEVBQUMsSUFBQSxzQ0FBc0IsRUFBQyxJQUFBLCtCQUFlLEVBQUMsSUFBQSxpQ0FBaUIsRUFBQyxJQUFBLG1DQUFtQixFQUFDLDBCQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcclxuXHJcbmltcG9ydCAqIGFzIHByb2Nlc2FtaWVudG8gZnJvbSBcInByb2Nlc2FtaWVudG9cIjtcclxuaW1wb3J0IHsgZW1lcmdlQXBwUHJvY2VzYW1pZW50bywgZW1lcmdlQXBwQ29uc2lzdGVuY2lhcywgZW1lcmdlQXBwVmFyQ2FsLCBlbWVyZ2VBcHBEYXRvc0V4dCwgZW1lcmdlQXBwT3BlcmF0aXZvcywgQXBwQmFja2VuZCwgQ2xpZW50TW9kdWxlRGVmaW5pdGlvbiwgT3B0c0NsaWVudFBhZ2UgfSBmcm9tIFwicHJvY2VzYW1pZW50b1wiO1xyXG5pbXBvcnQgeyBwYXNhckVuY3Vlc3Rhc0FQcm9pZSwgUHJvY2VkdXJlc0RtRW5jdSB9IGZyb20gXCIuL3Byb2NlZHVyZXMtZG1lbmN1XCI7XHJcbmltcG9ydCB7IGNhcmdhckF5dWRhLCBjYXJwZXRhRGVsUGFxdWV0ZSwgcHJvYmxlbWFzRGVBeXVkYSwgUXVpZW5Db25zdWx0YUF5dWRhLCBydXRhc0RlbE1lbnUsIHRlbWFzVmlzaWJsZXMgfSBmcm9tIFwiLi9heXVkYVwiO1xyXG5cclxuaW1wb3J0ICogYXMgcGcgZnJvbSBcInBnLXByb21pc2Utc3RyaWN0XCI7XHJcbmltcG9ydCAqIGFzIG1pbmlUb29scyBmcm9tIFwibWluaS10b29sc1wiO1xyXG5pbXBvcnQge1xyXG4gICAgQXl1ZGFGdWVudGUsXHJcbiAgICBDbGllbnQsIENvbnRleHQsIENvcmVGdW5jdGlvblBhcmFtZXRlcnMsXHJcbiAgICBNZW51SW5mb0Jhc2UsXHJcbiAgICBQdWVkZSxcclxuICAgIFJlcXVlc3QsIFJlc3BvbnNlLFxyXG4gICAgU3VmaWpvc0FtYmllbnRlLFxyXG59IGZyb20gXCIuL3R5cGVzLWRtZW5jdVwiO1xyXG5cclxuaW1wb3J0IHsgZXhwZWN0ZWQsIHVuZXhwZWN0ZWQgfSBmcm9tIFwiY2FzdC1lcnJvclwiO1xyXG5cclxuaW1wb3J0ICogYXMgeWF6bCBmcm9tIFwieWF6bFwiO1xyXG5pbXBvcnQgeyBOZXh0RnVuY3Rpb24gfSBmcm9tIFwiZXhwcmVzcy1zZXJ2ZS1zdGF0aWMtY29yZVwiO1xyXG5pbXBvcnQgKiBhcyBleHByZXNzIGZyb20gXCJleHByZXNzXCI7XHJcblxyXG5pbXBvcnQgeyBwcm9taXNlcyBhcyBmcyB9IGZyb20gXCJmc1wiO1xyXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XHJcblxyXG5pbXBvcnQgeyByb2xlcyB9IGZyb20gXCIuL3RhYmxlLXJvbGVzXCI7XHJcbmltcG9ydCB7IHBlcnNvbmFsIH0gZnJvbSBcIi4vdGFibGUtcGVyc29uYWxcIjtcclxuaW1wb3J0IHsgcmVjZXBjaW9uaXN0YXMgfSBmcm9tIFwiLi90YWJsZS1yZWNlcGNpb25pc3Rhc1wiO1xyXG5pbXBvcnQgeyBlbmN1ZXN0YWRvcmVzX2FzaWduYWRvcywgaW5ncmVzYWRvcmVzX2FzaWduYWRvcyB9IGZyb20gXCIuL3RhYmxlLWVuY3Vlc3RhZG9yZXNcIjtcclxuaW1wb3J0IHsgcmVjdXBlcmFkb3Jlc19hc2lnbmFkb3MgfSBmcm9tIFwiLi90YWJsZS1lbmN1ZXN0YWRvcmVzXCI7XHJcbmltcG9ydCB7IHN1cGVydmlzb3Jlc19hc2lnbmFkb3MgfSBmcm9tIFwiLi90YWJsZS1lbmN1ZXN0YWRvcmVzXCI7XHJcbmltcG9ydCB7IG1pc19zdXBlcnZpc29yZXNfYXNpZ25hZG9zIH0gZnJvbSBcIi4vdGFibGUtZW5jdWVzdGFkb3Jlc1wiO1xyXG5pbXBvcnQgeyBtaXNfZW5jdWVzdGFkb3JlcyB9IGZyb20gXCIuL3RhYmxlLW1pc19lbmN1ZXN0YWRvcmVzXCI7XHJcbmltcG9ydCB7IHJlY3VwZXJhZG9yZXMgfSBmcm9tIFwiLi90YWJsZS1yZWN1cGVyYWRvcmVzXCI7XHJcbmltcG9ydCB7IHN1cGVydmlzb3JlcyB9IGZyb20gXCIuL3RhYmxlLXN1cGVydmlzb3Jlc1wiO1xyXG5pbXBvcnQgeyBwZXJzb25hbF9yb2wgfSBmcm9tIFwiLi90YWJsZS1wZXJzb25hbF9yb2xcIjtcclxuaW1wb3J0IHsgcGVybWlzb3MgfSBmcm9tIFwiLi90YWJsZS1wZXJtaXNvc1wiO1xyXG5pbXBvcnQgeyByb2xlc19wZXJtaXNvcyB9IGZyb20gXCIuL3RhYmxlLXJvbGVzX3Blcm1pc29zXCI7XHJcbmltcG9ydCB7IG1vZG9zX2RtIH0gZnJvbSBcIi4vdGFibGUtbW9kb3NfZG1cIjtcclxuaW1wb3J0IHsgcGFyYW1ldHJvcyB9IGZyb20gXCIuL3RhYmxlLXBhcmFtZXRyb3NcIjtcclxuaW1wb3J0IHsgcm9sZXNfc3Vib3JkaW5hZG9zIH0gZnJvbSBcIi4vdGFibGUtcm9sZXNfc3Vib3JkaW5hZG9zXCI7XHJcblxyXG5pbXBvcnQgeyBub19yZWEgfSBmcm9tIFwiLi90YWJsZS1ub19yZWFcIjtcclxuaW1wb3J0IHsgbm9fcmVhX3N1cCB9IGZyb20gXCIuL3RhYmxlLW5vX3JlYV9zdXBcIjtcclxuaW1wb3J0IHsgcmVhIH0gZnJvbSBcIi4vdGFibGUtcmVhXCI7XHJcbmltcG9ydCB7IHJlYV9zdXAgfSBmcm9tIFwiLi90YWJsZS1yZWFfc3VwXCI7XHJcbmltcG9ydCB7IHRlbSB9IGZyb20gXCIuL3RhYmxlLXRlbVwiO1xyXG5pbXBvcnQgeyBzZW1hbmFzIH0gZnJvbSBcIi4vdGFibGUtc2VtYW5hc1wiO1xyXG5pbXBvcnQgeyB1c3VhcmlvcyB9IGZyb20gJy4vdGFibGUtdXN1YXJpb3MnO1xyXG5pbXBvcnQgeyBvcGVyYWNpb25lcyB9IGZyb20gJy4vdGFibGUtb3BlcmFjaW9uZXMnO1xyXG5pbXBvcnQgeyBjb211bmFzIH0gZnJvbSAnLi90YWJsZS1jb211bmFzJztcclxuaW1wb3J0IHsgYXJlYXMgfSBmcm9tICcuL3RhYmxlLWFyZWFzJztcclxuaW1wb3J0IHsgc2luY3Jvbml6YWNpb25lcyB9IGZyb20gJy4vdGFibGUtc2luY3Jvbml6YWNpb25lcyc7XHJcbmltcG9ydCB7IHRhcmVhcyB9IGZyb20gJy4vdGFibGUtdGFyZWFzJztcclxuaW1wb3J0IHtcclxuICAgIHRhcmVhc190ZW0sXHJcbiAgICB0YXJlYXNfdGVtX2FzaWduYWNpb25fZW5jdSxcclxuICAgIHRhcmVhc190ZW1fYXNpZ25hY2lvbl9yZWN1LFxyXG4gICAgdGFyZWFzX3RlbV9hc2lnbmFjaW9uX3N1cGUsXHJcbiAgICB0YXJlYXNfdGVtX2FzaWduYWNpb25faW5nclxyXG59IGZyb20gJy4vdGFibGUtdGFyZWFzX3RlbSc7XHJcbmltcG9ydCB7IHRhcmVhc19hcmVhcyB9IGZyb20gJy4vdGFibGUtdGFyZWFzX2FyZWFzJztcclxuaW1wb3J0IHsgYXJlYXNfYXNpZ25hY2lvbl9nZW5lcmFsIH0gZnJvbSAnLi90YWJsZS1hcmVhc19hc2lnbmFjaW9uX2dlbmVyYWwnO1xyXG5pbXBvcnQgeyBncmlsbGFfaG9qYV9ydXRhIH0gZnJvbSAnLi90YWJsZS1ncmlsbGFfaG9qYV9ydXRhJztcclxuaW1wb3J0IHsgdF9lbmN1X2FyZWFzIH0gZnJvbSAnLi90YWJsZS10YXJlYXNfYXJlYXMnO1xyXG5pbXBvcnQgeyB0X3JlY3VfYXJlYXMgfSBmcm9tICcuL3RhYmxlLXRhcmVhc19hcmVhcyc7XHJcbmltcG9ydCB7IHRfc3VwZV9hcmVhcyB9IGZyb20gJy4vdGFibGUtdGFyZWFzX2FyZWFzJztcclxuaW1wb3J0IHsgdF9pbmdyX2FyZWFzIH0gZnJvbSAnLi90YWJsZS10YXJlYXNfYXJlYXMnO1xyXG5pbXBvcnQgeyBtaXNfdGFyZWFzIH0gZnJvbSAnLi90YWJsZS1taXNfdGFyZWFzJztcclxuaW1wb3J0IHsgdGVtX2FzaWduYWNpb24gfSBmcm9tICcuL3RhYmxlLXRlbV9hc2lnbmFjaW9uJztcclxuaW1wb3J0IHsgdGFyZWFzX3RlbV9yZWNlcGNpb24gfSBmcm9tICcuL3RhYmxlLXRhcmVhc190ZW1fcmVjZXBjaW9uJztcclxuaW1wb3J0IHsgdGFyZWFzX3RlbV9pbmdyZXNvIH0gZnJvbSAnLi90YWJsZS10YXJlYXNfdGVtX2luZ3Jlc28nO1xyXG5pbXBvcnQgeyB0YXJlYXNfdGVtX2Zpbl9jYW1wbyB9IGZyb20gJy4vdGFibGUtdGFyZWFzX3RlbV9maW5fY2FtcG8nO1xyXG5pbXBvcnQgeyB0YXJlYXNfdGVtX3Byb2Nlc2FtaWVudG8gfSBmcm9tICcuL3RhYmxlLXRhcmVhc190ZW1fcHJvY2VzYW1pZW50byc7XHJcbmltcG9ydCB7IHRhcmVhc190ZW1fYW5hbGlzaXNfY2FtcG8gfSBmcm9tICcuL3RhYmxlLXRhcmVhc190ZW1fYW5hbGlzaXNfY2FtcG8nO1xyXG5pbXBvcnQgeyBtaXNfdGFyZWFzX2FyZWFzIH0gZnJvbSAnLi90YWJsZS1taXNfdGFyZWFzX2FyZWFzJztcclxuaW1wb3J0IHsgY29udHJvbF9jYW1wbyB9IGZyb20gJy4vdGFibGUtY29udHJvbF9jYW1wbyc7XHJcbmltcG9ydCB7IGNvbnRyb2xfcmVzdW1lbiB9IGZyb20gJy4vdGFibGUtY29udHJvbF9yZXN1bWVuJztcclxuaW1wb3J0IHsgY29udHJvbF9kaWFzX2NhcmdhIH0gZnJvbSAnLi90YWJsZS1jb250cm9sX2RpYXNfY2FyZ2EnO1xyXG5pbXBvcnQgeyB2aXZpZW5kYXMgfSBmcm9tICcuL3RhYmxlLXZpdmllbmRhcyc7XHJcbmltcG9ydCB7IHZpc2l0YXMgfSBmcm9tICcuL3RhYmxlLXZpc2l0YXMnO1xyXG5pbXBvcnQgeyBob2dhcmVzIH0gZnJvbSAnLi90YWJsZS1ob2dhcmVzJztcclxuaW1wb3J0IHsgcGVyc29uYXMgfSBmcm9tICcuL3RhYmxlLXBlcnNvbmFzJztcclxuaW1wb3J0IHsgdmlzaXRhc19zdXAgfSBmcm9tICcuL3RhYmxlLXZpc2l0YXNfc3VwJztcclxuaW1wb3J0IHsgaG9nYXJlc19zdXAgfSBmcm9tICcuL3RhYmxlLWhvZ2FyZXNfc3VwJztcclxuaW1wb3J0IHsgcGVyc29uYXNfc3VwIH0gZnJvbSAnLi90YWJsZS1wZXJzb25hc19zdXAnO1xyXG5pbXBvcnQgeyBkaWNjaW9uYXJpbyB9IGZyb20gJy4vdGFibGUtZGljY2lvbmFyaW8nO1xyXG5pbXBvcnQgeyBkaWN0cmEgfSBmcm9tICcuL3RhYmxlLWRpY3RyYSc7XHJcbmltcG9ydCB7IGRpY3ZhciB9IGZyb20gJy4vdGFibGUtZGljdmFyJztcclxuXHJcbmltcG9ydCB7IGVzdGFkb3MgfSBmcm9tICcuL3RhYmxlLWVzdGFkb3MnO1xyXG5pbXBvcnQgeyBhY2Npb25lcyB9IGZyb20gJy4vdGFibGUtYWNjaW9uZXMnO1xyXG5pbXBvcnQgeyBlc3RhZG9zX2FjY2lvbmVzIH0gZnJvbSAnLi90YWJsZS1lc3RhZG9zX2FjY2lvbmVzJztcclxuaW1wb3J0IHsgdGFyZWFzX3Byb3hpbWFzIH0gZnJvbSAnLi90YWJsZS10YXJlYXNfcHJveGltYXMnO1xyXG5pbXBvcnQgeyBoaXN0b3JpYWxfdGVtIH0gZnJvbSAnLi90YWJsZS1oaXN0b3JpYWxfdGVtJztcclxuaW1wb3J0IHsgaW5jb25zaXN0ZW5jaWFzX2N1bXBsZW5fY29uZGljaW9uIH0gZnJvbSAnLi90YWJsZS1pbmNvbnNpc3RlbmNpYXNfY3VtcGxlbl9jb25kaWNpb24nO1xyXG5pbXBvcnQgeyB0ZW1fYm9ycmFkYXMgfSBmcm9tICcuL3RhYmxlLXRlbV9ib3JyYWRhcyc7XHJcbmltcG9ydCB7IGJhcnJpb3MgfSBmcm9tIFwiLi90YWJsZS1iYXJyaW9zXCI7XHJcbmltcG9ydCB7IGZyYWNjaW9uZXMgfSBmcm9tIFwiLi90YWJsZS1mcmFjY2lvbmVzXCI7XHJcbmltcG9ydCB7IHJhZGlvcyB9IGZyb20gXCIuL3RhYmxlLXJhZGlvc1wiO1xyXG5pbXBvcnQgeyBtYW56YW5hcyB9IGZyb20gXCIuL3RhYmxlLW1hbnphbmFzXCI7XHJcbmltcG9ydCB7IGFyZWFfZW5jX3Byb3hpbWFzIH0gZnJvbSBcIi4vdGFibGUtYXJlYV9lbmNfcHJveGltYXNcIjtcclxuXHJcbmV4cG9ydCAqIGZyb20gXCIuL3R5cGVzLWRtZW5jdVwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9heXVkYVwiO1xyXG5pbXBvcnQgeyBkZWZDb25maWcgfSBmcm9tIFwiLi9kZWYtY29uZmlnXCJcclxuaW1wb3J0IHsgUHJvY2VkdXJlRGVmIH0gZnJvbSBcImJhY2tlbmQtcGx1c1wiO1xyXG5pbXBvcnQgeyB0YWJsZSB9IGZyb20gXCJjb25zb2xlXCI7XHJcblxyXG5pbXBvcnQgeyBkYXRldGltZSB9IGZyb20gXCJiZXN0LWdsb2JhbHNcIjtcclxuaW1wb3J0IHsgUHJvY2VkdXJlQ29udGV4dCB9IGZyb20gXCJiYWNrZW5kLXBsdXNcIjtcclxuXHJcblxyXG5jb25zdCBBUFBfRE1fVkVSU0lPTiA9IFwiIzIyLTEyLTE1XCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0TW9kb0J5UG9saWN5KGJlOiBBcHBCYWNrZW5kKSB7XHJcbiAgICByZXR1cm4gYmUuY29uZmlnLnNlcnZlci5wb2xpY3kgPT0gJ3dlYicgPyAnUkVMRVZBTUlFTlRPJyA6ICdHQUJJTkVURSc7XHJcbn1cclxuXHJcbi8vIHBlcm1pc29zIHF1ZSBnZXRDb250ZXh0IGFncmVnYSBhbCBjb250ZXh0byBzZWfDum4gZWwgdXN1YXJpbyBsb2d1ZWFkbyAobyBsYSBmYWx0YSBkZSB1c3VhcmlvKVxyXG5leHBvcnQgZnVuY3Rpb24gcGVybWlzb3NTZWd1blVzdWFyaW8oXHJcbiAgICBjYWNoZXM6IFBpY2s8QXBwQmFja2VuZFsnY2FjaGVzJ10sICdwZXJtaXNvc1JvbCcgfCAncGVybWlzb3NTdXBlcnVzZXInIHwgJ3Blcm1pc29zUGFyYU5hZGllJz4sXHJcbiAgICB1c2VyOiBDb250ZXh0Wyd1c2VyJ10gfCB1bmRlZmluZWRcclxuKTogeyBzdXBlcnVzZXI/OiB0cnVlLCBwdWVkZT86IFB1ZWRlIH0ge1xyXG4gICAgaWYgKHVzZXIgPT0gbnVsbCkge1xyXG4gICAgICAgIHJldHVybiB7IHB1ZWRlOiBjYWNoZXMucGVybWlzb3NQYXJhTmFkaWUgfTtcclxuICAgIH1cclxuICAgIHZhciByb2wgPSB1c2VyLnJvbDtcclxuICAgIHZhciBwZXJtaXNvc0RlbFJvbCA9IHJvbCAhPSBudWxsID8gY2FjaGVzLnBlcm1pc29zUm9sW3JvbF0gOiB1bmRlZmluZWQ7XHJcbiAgICBpZiAocGVybWlzb3NEZWxSb2w/LnN1cGVydXNlcikge1xyXG4gICAgICAgIHJldHVybiB7IHN1cGVydXNlcjogdHJ1ZSwgcHVlZGU6IGNhY2hlcy5wZXJtaXNvc1N1cGVydXNlciB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgcHVlZGU6IHBlcm1pc29zRGVsUm9sPy5wdWVkZSB9O1xyXG59XHJcblxyXG4vLyBsbyBxdWUgZGVjaWRlIHF1w6kgdGVtYXMgZGUgYXl1ZGEgdmUgZWwgdXN1YXJpbzogc3Ugcm9sLCBzdXMgcGVybWlzb3MgeSBlbCBtb2RvIGRlIGxhIGluc3RhbmNpYVxyXG5leHBvcnQgZnVuY3Rpb24gcXVpZW5Db25zdWx0YUF5dWRhKGNvbnRleHQ6IENvbnRleHQpOiBRdWllbkNvbnN1bHRhQXl1ZGEge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICByb2w6IGNvbnRleHQudXNlcj8ucm9sID8/IG51bGwsXHJcbiAgICAgICAgc3VwZXJ1c2VyOiAhIWNvbnRleHQuc3VwZXJ1c2VyLFxyXG4gICAgICAgIHB1ZWRlOiBjb250ZXh0LnB1ZWRlLFxyXG4gICAgICAgIG1vZG86IGdldE1vZG9CeVBvbGljeShjb250ZXh0LmJlKSxcclxuICAgIH07XHJcbn1cclxuXHJcbi8vIGxvIHF1ZSB1c2FuIHJlZnJlc2hDYWNoZXMgeSByZWZyZXNjYXJFc3RydWN0dXJhQWxNb2RpZmljYXJUYWJsYSBkZWwgY2xpZW50ZSBkZSBiYXNlIChlbCBDbGllbnQgZGUgcGctcHJvbWlzZS1zdHJpY3QgbG8gY3VtcGxlKVxyXG5leHBvcnQgdHlwZSBDb25zdWx0YURiID0ge1xyXG4gICAgZmV0Y2hBbGwoKTogUHJvbWlzZTxwZy5SZXN1bHRSb3dzPlxyXG4gICAgZmV0Y2hVbmlxdWVSb3coKTogUHJvbWlzZTxwZy5SZXN1bHRPbmVSb3c+XHJcbn1cclxuZXhwb3J0IHR5cGUgQ2xpZW50ZURiID0ge1xyXG4gICAgcXVlcnkoc3FsOiBzdHJpbmcpOiBDb25zdWx0YURiXHJcbn1cclxuXHJcbi8vIHRhYmxhcyBjdXlhIG1vZGlmaWNhY2nDs24gY2FtYmlhIGxhIGVzdHJ1Y3R1cmEgcXVlIHNlIG1hbmRhIGEgbG9zIGRpc3Bvc2l0aXZvcyAodmVyIG9wZXJhdGl2b19lc3RydWN0dXJhX2NvbXBsZXRhKVxyXG5leHBvcnQgY29uc3QgVEFCTEFTX0VTVFJVQ1RVUkEgPSBbJ2Nhc2lsbGVyb3MnLCAnc2VtYW5hcyddO1xyXG4vLyB0YWJsYXMgZGUgcmVhL25vIHJlYSwgcXVlIGFkZW3DoXMgc2UgZ3VhcmRhbiBlbiBiZS5jYWNoZXMudGFibGVDb250ZW50ICh2ZXIgcmVmcmVzaENhY2hlcylcclxuZXhwb3J0IGNvbnN0IFRBQkxBU19SRUFfTk9fUkVBID0gWydyZWEnLCAnbm9fcmVhJywgJ3JlYV9zdXAnLCAnbm9fcmVhX3N1cCddO1xyXG5cclxuZXhwb3J0IHR5cGUgUmVmcmVzY2Fkb3JFc3RydWN0dXJhID0ge1xyXG4gICAgY2FjaGVzOiB7IHRpbWVzdGFtcEVzdHJ1Y3R1cmE6IG51bWJlciB9XHJcbiAgICByZWZyZXNoQ2FjaGVzKGNsaWVudDogQ2xpZW50ZURiKTogUHJvbWlzZTx2b2lkPlxyXG59XHJcblxyXG4vLyBlbnZ1ZWx2ZSB0YWJsZV9yZWNvcmRfc2F2ZS90YWJsZV9yZWNvcmRfZGVsZXRlIHBhcmEgcXVlIGFsIG1vZGlmaWNhciBlc2FzIHRhYmxhcyBsb3MgZGlzcG9zaXRpdm9zXHJcbi8vIHJlY2liYW4gbGEgZXN0cnVjdHVyYSBudWV2YSAodGltZXN0YW1wRXN0cnVjdHVyYSkgeSwgc2kgc29uIGRlIHJlYS9ubyByZWEsIHNlIHJlY2FyZ3VlbiBsYXMgY2FjaGVzXHJcbi8vIGNvbiBlbCBtaXNtbyBjbGllbnRlIChkZW50cm8gZGUgbGEgbWlzbWEgdHJhbnNhY2Npw7NuKVxyXG5leHBvcnQgZnVuY3Rpb24gcmVmcmVzY2FyRXN0cnVjdHVyYUFsTW9kaWZpY2FyVGFibGE8QyBleHRlbmRzIHsgY2xpZW50OiBDbGllbnRlRGIgfSwgUCBleHRlbmRzIHsgdGFibGU6IHN0cmluZyB9LCBSLCBSZXN0byBleHRlbmRzIChvYmplY3QgfCB1bmRlZmluZWQpW10+KFxyXG4gICAgYmU6IFJlZnJlc2NhZG9yRXN0cnVjdHVyYSxcclxuICAgIGNvcmVGdW5jdGlvbjogKGNvbnRleHQ6IEMsIHBhcmFtZXRlcnM6IFAsIC4uLnJlc3RvOiBSZXN0bykgPT4gUHJvbWlzZTxSPlxyXG4pOiAoY29udGV4dDogQywgcGFyYW1ldGVyczogUCwgLi4ucmVzdG86IFJlc3RvKSA9PiBQcm9taXNlPFI+IHtcclxuICAgIHJldHVybiBhc3luYyBmdW5jdGlvbiAoY29udGV4dDogQywgcGFyYW1ldGVyczogUCwgLi4ucmVzdG86IFJlc3RvKSB7XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IGF3YWl0IGNvcmVGdW5jdGlvbihjb250ZXh0LCBwYXJhbWV0ZXJzLCAuLi5yZXN0byk7XHJcbiAgICAgICAgaWYgKFRBQkxBU19FU1RSVUNUVVJBLmluY2x1ZGVzKHBhcmFtZXRlcnMudGFibGUpKSB7XHJcbiAgICAgICAgICAgIGJlLmNhY2hlcy50aW1lc3RhbXBFc3RydWN0dXJhID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdzZSB0b2PDsyBsYSBlc3RydWN0dXJhJywgYmUuY2FjaGVzLnRpbWVzdGFtcEVzdHJ1Y3R1cmEpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChUQUJMQVNfUkVBX05PX1JFQS5pbmNsdWRlcyhwYXJhbWV0ZXJzLnRhYmxlKSkge1xyXG4gICAgICAgICAgICBiZS5jYWNoZXMudGltZXN0YW1wRXN0cnVjdHVyYSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICBhd2FpdCBiZS5yZWZyZXNoQ2FjaGVzKGNvbnRleHQuY2xpZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxufVxyXG5cclxuY29uc3QgcmVnaXN0cmFyQ3JvbkpvYlBhc2FyQVByb2llID0gYXN5bmMgKGJlOiBBcHBCYWNrZW5kKSA9PiB7XHJcbiAgICBjb25zdCBlamVjdXRhclBhc2FqZSA9IGFzeW5jICgpID0+IHtcclxuICAgICAgICBjb25zdCBsb2cgPSAobXNnOiBzdHJpbmcsIGRhdGE6IGFueSA9ICcnKSA9PlxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgJHtkYXRldGltZS5ub3coKS50b1ltZEhtcygpfSBbQ1JPTjpQUk9JRV0gJHttc2d9YCwgZGF0YSk7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgbG9nKCfwn5qAIGluaWNpYSBjcm9uIHBhc2FqZSBhIHByb2llJyk7XHJcblxyXG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gYXdhaXQgYmUuaW5UcmFuc2FjdGlvbihudWxsLCBhc3luYyAoY2xpZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgcGFzYXJFbmN1ZXN0YXNBUHJvaWUoY2xpZW50KTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICBsb2coJ+KchSByZXN1bHQgcHJvYyBwYXNhamUgYSBwcm9pZTonLCByZXN1bHQpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICB2YXIgZXJyb3IgPSB1bmV4cGVjdGVkKGVycik7XHJcbiAgICAgICAgICAgIGxvZyhg4p2MIGVycm9yIHBhc2FqZSBhIHByb2llOiAke2Vycm9yLm1lc3NhZ2V9YCk7XHJcbiAgICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICAgICAgbG9nKCfwn4+BIHRlcm1pbmEgY3JvbiBwcm9pZScpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBhd2FpdCBlamVjdXRhclBhc2FqZSgpO1xyXG4gICAgY29uc3QgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbChlamVjdXRhclBhc2FqZSwgMTAwMCAqIDYwICogNjApXHJcbiAgICBiZS5zaHV0ZG93bkNhbGxiYWNrTGlzdEFkZCh7XHJcbiAgICAgICAgbWVzc2FnZTogJ2FwYWdhIGNyb24gcGFzYXIgYSBwcm9pZScsXHJcbiAgICAgICAgZnVuOiBhc3luYyBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xyXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbn1cclxuXHJcbmNvbnN0IGdldE1hbmlmZXN0SW1hZ2VJY29ucyA9IChBUFBfTkFNRTogc3RyaW5nLCBzdWZpam86IHN0cmluZykgPT4gW1xyXG4gICAge1xyXG4gICAgICAgIFwic3JjXCI6IGAuLi9pbWcvJHtBUFBfTkFNRX0tbG9nby1kbS0zMiR7c3VmaWpvfS5wbmdgLFxyXG4gICAgICAgIFwic2l6ZXNcIjogXCIzMngzMlwiLFxyXG4gICAgICAgIFwidHlwZVwiOiBcImltYWdlL3BuZ1wiXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIFwic3JjXCI6IGAuLi9pbWcvJHtBUFBfTkFNRX0tbG9nby1kbS00OCR7c3VmaWpvfS5wbmdgLFxyXG4gICAgICAgIFwic2l6ZXNcIjogXCI0OHg0OFwiLFxyXG4gICAgICAgIFwidHlwZVwiOiBcImltYWdlL3BuZ1wiXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIFwic3JjXCI6IGAuLi9pbWcvJHtBUFBfTkFNRX0tbG9nby1kbS02NCR7c3VmaWpvfS5wbmdgLFxyXG4gICAgICAgIFwic2l6ZXNcIjogXCI2NHg2NFwiLFxyXG4gICAgICAgIFwidHlwZVwiOiBcImltYWdlL3BuZ1wiXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIFwic3JjXCI6IGAuLi9pbWcvJHtBUFBfTkFNRX0tbG9nby1kbS03MiR7c3VmaWpvfS5wbmdgLFxyXG4gICAgICAgIFwic2l6ZXNcIjogXCI3Mng3MlwiLFxyXG4gICAgICAgIFwidHlwZVwiOiBcImltYWdlL3BuZ1wiXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIFwic3JjXCI6IGAuLi9pbWcvJHtBUFBfTkFNRX0tbG9nby1kbS0xOTIke3N1Zmlqb30ucG5nYCxcclxuICAgICAgICBcInNpemVzXCI6IFwiMTkyeDE5MlwiLFxyXG4gICAgICAgIFwidHlwZVwiOiBcImltYWdlL3BuZ1wiXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIFwic3JjXCI6IGAuLi9pbWcvJHtBUFBfTkFNRX0tbG9nby1kbS01MTIke3N1Zmlqb30ucG5nYCxcclxuICAgICAgICBcInNpemVzXCI6IFwiNTEyeDUxMlwiLFxyXG4gICAgICAgIFwidHlwZVwiOiBcImltYWdlL3BuZ1wiXHJcbiAgICB9XHJcbl07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZW1lcmdlQXBwRG1FbmN1PFQgZXh0ZW5kcyBwcm9jZXNhbWllbnRvLkNvbnN0cnVjdG9yPHByb2Nlc2FtaWVudG8uQXBwUHJvY2VzYW1pZW50b1R5cGU+PihCYXNlOiBUKSB7XHJcbiAgICByZXR1cm4gY2xhc3MgQXBwRG1FbmN1IGV4dGVuZHMgQmFzZSB7XHJcbiAgICAgICAgY29uc3RydWN0b3IoLi4uYXJnczogYW55W10pIHtcclxuICAgICAgICAgICAgc3VwZXIoYXJncyk7XHJcbiAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudCA9IHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudCB8fCB7fTtcclxuICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYSA9IFtdXHJcbiAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWFfZ3JvdXBzID0gW11cclxuICAgICAgICAgICAgdGhpcy5jYWNoZXMubWV0YUVuY0luY2x1aXJDYXNpbGxlcm9zU2FsdG9SRUwgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jYWNoZXMudGltZXN0YW1wRXN0cnVjdHVyYSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQuY29uUmVhSG9nYXIgPSB7fTtcclxuICAgICAgICAgICAgdGhpcy5jYWNoZXMuYXl1ZGEgPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZ2V0U3VmaWpvRnJvbWJhc2VVcmwgPSAoYmFzZVVybDogc3RyaW5nKSA9PlxyXG4gICAgICAgICAgICBiYXNlVXJsLmluY2x1ZGVzKCd0ZXN0JykgfHwgYmFzZVVybC5pbmNsdWRlcygnL3ByJykgPyAnX3Rlc3QnIDpcclxuICAgICAgICAgICAgICAgIGJhc2VVcmwuaW5jbHVkZXMoJ2NhcGEnKSA/ICdfY2FwYScgOiAnJztcclxuXHJcbiAgICAgICAgZ2V0QXBwTmFtZSA9IGFzeW5jICgpID0+IHtcclxuICAgICAgICAgICAgdmFyIGJlID0gdGhpcztcclxuICAgICAgICAgICAgcmV0dXJuICgoYXdhaXQgYmUuaW5UcmFuc2FjdGlvbihudWxsLCAoY2xpZW50OiBwZy5DbGllbnQpID0+XHJcbiAgICAgICAgICAgICAgICBjbGllbnQucXVlcnkoXCJzZWxlY3Qgb3BlcmF0aXZvIGZyb20gcGFyYW1ldHJvcyB3aGVyZSB1bmljb19yZWdpc3Ryb1wiKS5mZXRjaFVuaXF1ZVZhbHVlKClcclxuICAgICAgICAgICAgKSkudmFsdWUgYXMgc3RyaW5nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGJhY2tlbmQtcGx1cyBsbyBkZWNsYXJhIHNpbiBwYXLDoW1ldHJvcyBwZXJvIGxvIGxsYW1hIGNvbiAoY29udGV4dCwgdXN1YXJpbyksIHBvciBlc28gc29uIG9wY2lvbmFsZXNcclxuICAgICAgICBvdmVycmlkZSBhc3luYyBjYW5DaGFuZ2VQYXNzKHJlcU9yQ29udGV4dD86IFJlcXVlc3QgfCBDb250ZXh0LCB1c2VyVG9DaGFuZ2VQYXNzPzogc3RyaW5nIHwgbnVsbCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgICAgICB2YXIgYmUgPSB0aGlzO1xyXG4gICAgICAgICAgICB2YXIgdXN1YXJpb0xvZ3VlYWRvID0gcmVxT3JDb250ZXh0Py51c2VyO1xyXG4gICAgICAgICAgICBpZiAocmVxT3JDb250ZXh0ID09IG51bGwgfHwgdXN1YXJpb0xvZ3VlYWRvID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB2YXIgcm9sID0gdXN1YXJpb0xvZ3VlYWRvLnJvbDtcclxuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGF3YWl0IGJlLmluRGJDbGllbnQobnVsbCwgYXN5bmMgKGNsaWVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdmFyIHEgPSBiZS5kYi5xdW90ZUxpdGVyYWw7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKGF3YWl0IGNsaWVudC5xdWVyeShgXHJcbiAgICAgICAgICAgICAgICBzZWxlY3QgKiBcclxuICAgICAgICAgICAgICAgICAgZnJvbSB1c3VhcmlvcyBcclxuICAgICAgICAgICAgICAgICAgd2hlcmUgcm9sIGluIChzZWxlY3Qgcm9sX3N1Ym9yZGluYWRvIGZyb20gcm9sZXNfc3Vib3JkaW5hZG9zIHdoZXJlIHJvbCA9ICR7cShyb2wpfSlgKS5mZXRjaEFsbCgpKS5yb3dzO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB2YXIgcHVlZGUgPSAhIXJlc3VsdC5maW5kKCh1c2VyKSA9PiB1c2VyLnVzdWFyaW8gPT0gdXNlclRvQ2hhbmdlUGFzcyk7XHJcbiAgICAgICAgICAgIHZhciBpc0FkbWluID0gYmUuaXNBZG1pbihyZXFPckNvbnRleHQpO1xyXG4gICAgICAgICAgICByZXR1cm4gaXNBZG1pbiB8fCBwdWVkZVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgb3ZlcnJpZGUgYXN5bmMgZ2V0UHJvY2VkdXJlcygpIHtcclxuICAgICAgICAgICAgdmFyIGJlID0gdGhpcztcclxuICAgICAgICAgICAgdmFyIHByb2NlZGltaWVudG9BUmVlbXBsYXphciA9IFtcImNhc29fZ3VhcmRhclwiLCBcImNhc29fdHJhZXJcIl07XHJcbiAgICAgICAgICAgIHZhciBwYXJlbnRQcm9jID0gYXdhaXQgc3VwZXIuZ2V0UHJvY2VkdXJlcygpO1xyXG4gICAgICAgICAgICBwYXJlbnRQcm9jID0gcGFyZW50UHJvYy5maWx0ZXIoKHByb2NlZHVyZTogYW55KSA9PiAhcHJvY2VkaW1pZW50b0FSZWVtcGxhemFyLmluY2x1ZGVzKHByb2NlZHVyZS5hY3Rpb24pKTtcclxuICAgICAgICAgICAgcGFyZW50UHJvYyA9IHBhcmVudFByb2MubWFwKHByb2NEZWYgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHByb2NEZWYuYWN0aW9uID09ICd0YWJsZV9yZWNvcmRfc2F2ZScgfHwgcHJvY0RlZi5hY3Rpb24gPT0gJ3RhYmxlX3JlY29yZF9kZWxldGUnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvY0RlZi5jb3JlRnVuY3Rpb24gPSByZWZyZXNjYXJFc3RydWN0dXJhQWxNb2RpZmljYXJUYWJsYShiZSwgcHJvY0RlZi5jb3JlRnVuY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb2NEZWY7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIHJldHVybiBwYXJlbnRQcm9jLmNvbmNhdChQcm9jZWR1cmVzRG1FbmN1KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgb3ZlcnJpZGUgYXN5bmMgY2hlY2tEYXRhYmFzZVN0cnVjdHVyZShfY2xpZW50OiBDbGllbnQpIHtcclxuICAgICAgICB9XHJcbiAgICAgICAgb3ZlcnJpZGUgYWRkU2NocsO2ZGluZ2VyU2VydmljZXMobWFpbkFwcDogcHJvY2VzYW1pZW50by5FeHByZXNzLCBiYXNlVXJsOiBzdHJpbmcpIHtcclxuICAgICAgICAgICAgbGV0IGJlID0gdGhpcztcclxuICAgICAgICAgICAgc3VwZXIuYWRkU2NocsO2ZGluZ2VyU2VydmljZXMobWFpbkFwcCwgYmFzZVVybCk7XHJcbiAgICAgICAgICAgIC8vcGVybWl0byBsZXZhbnRhciBtaXMgaW1hZ2VuZXMgZW4gYXBsaWNhY2lvbmVzIGRlcGVuZGllbnRlc1xyXG4gICAgICAgICAgICBiZS5hcHAudXNlKCcvaW1nJywgZXhwcmVzcy5zdGF0aWMoJ25vZGVfbW9kdWxlcy9kbWVuY3UvZGlzdC91bmxvZ2dlZC91bmxvZ2dlZC9pbWcnKSlcclxuICAgICAgICAgICAgbWFpbkFwcC51c2UoZnVuY3Rpb24gKHJlcTogUmVxdWVzdCwgX3JlczogUmVzcG9uc2UsIG5leHQ6IE5leHRGdW5jdGlvbikge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlcS5zZXNzaW9uICYmICFyZXEuc2Vzc2lvbi5pbnN0YWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVxLnNlc3Npb24uaW5zdGFsbCA9IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoKS5yZXBsYWNlKCcuJywgJycpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbmV4dCgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgbWFpbkFwcC5nZXQoYmFzZVVybCArICcvc2FsdmFyJywgZnVuY3Rpb24gKHJlcSwgcmVzLCBfbmV4dCkge1xyXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSBzw6kgcXVlIHZveSBhIHJlY2liaXIgdXNlcmFnZW50IHBvciBsb3MgbWlkZGxld2FyZXMgZGUgQmFja2VuZC1wbHVzXHJcbiAgICAgICAgICAgICAgICB2YXIgeyB1c2VyYWdlbnQgfSA9IHJlcTtcclxuICAgICAgICAgICAgICAgIHZhciBodG1sTWFpbiA9IGJlLm1haW5QYWdlKHsgdXNlcmFnZW50IH0sIGZhbHNlLCB7IHNraXBNZW51OiB0cnVlLCBvZmZsaW5lRmlsZTogdHJ1ZSB9KS50b0h0bWxEb2MoKTtcclxuICAgICAgICAgICAgICAgIG1pbmlUb29scy5zZXJ2ZVRleHQoaHRtbE1haW4sICdodG1sJykocmVxLCByZXMpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgbWFpbkFwcC5nZXQoYmFzZVVybCArICcvY2FtcG8nLCBmdW5jdGlvbiAocmVxLCByZXMsIF9uZXh0KSB7XHJcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlIHPDqSBxdWUgdm95IGEgcmVjaWJpciB1c2VyYWdlbnQgcG9yIGxvcyBtaWRkbGV3YXJlcyBkZSBCYWNrZW5kLXBsdXNcclxuICAgICAgICAgICAgICAgIHZhciB7IHVzZXJhZ2VudCwgdXNlciB9ID0gcmVxO1xyXG4gICAgICAgICAgICAgICAgaWYgKHVzZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAvKiogQHR5cGUge3t0eXBlOidqcycsIHNyYzpzdHJpbmd9W119ICovXHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHdlYk1hbmlmZXN0UGF0aCA9ICdjYXJnYS1kbS93ZWItbWFuaWZlc3Qud2VibWFuaWZlc3QnO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBodG1sTWFpbiA9IGJlLm1haW5QYWdlKHsgdXNlcmFnZW50LCB1c2VyIH0sIGZhbHNlLCB7IHNraXBNZW51OiB0cnVlLCB3ZWJNYW5pZmVzdFBhdGgsIG9mZmxpbmVGaWxlOiB0cnVlIH0pLnRvSHRtbERvYygpO1xyXG4gICAgICAgICAgICAgICAgICAgIG1pbmlUb29scy5zZXJ2ZVRleHQoaHRtbE1haW4sICdodG1sJykocmVxLCByZXMpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZXMucmVkaXJlY3QoNDAxLCBiYXNlVXJsICsgJy9sb2dpbiN3PXBhdGgmcGF0aD0vY2FtcG8nKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgbWFpbkFwcC5nZXQoYmFzZVVybCArICcvZmFsbGJhY2stc2luY3JvJywgZnVuY3Rpb24gKHJlcSwgcmVzLCBuZXh0KSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBqc29uRmFsbGJhY2sgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb2s6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdObyBzZSBsb2dyw7MgZXN0YWJsZWNlciBsYSBjb25leGlvbiBjb24gZWwgc2Vydmlkb3IsIGNvbXBydWViZSBzdSBjb25leGlvbiBkZSBpbnRlcm5ldCAocmVzcHVlc3RhIGRlc2RlIGZhbGxiYWNrKSdcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlSnNvbihqc29uRmFsbGJhY2spKHJlcSwgcmVzLCBuZXh0KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHZhciBjcmVhdGVTZXJ2aWNlV29ya2VyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHN3ID0gYXdhaXQgZnMucmVhZEZpbGUoJ25vZGVfbW9kdWxlcy9zZXJ2aWNlLXdvcmtlci1hZG1pbi9kaXN0L3NlcnZpY2Utd29ya2VyLXdvLW1hbmlmZXN0LmpzJywgJ3V0ZjgnKTtcclxuICAgICAgICAgICAgICAgIHZhciBtYW5pZmVzdCA9IGF3YWl0IGJlLmNyZWF0ZVJlc291cmNlc0ZvckNhY2hlSnNvbigpO1xyXG4gICAgICAgICAgICAgICAgdmFyIHN3TWFuaWZlc3QgPSBzd1xyXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKFwiJy8qdmVyc2lvbiovJ1wiLCBKU09OLnN0cmluZ2lmeShtYW5pZmVzdC52ZXJzaW9uKSlcclxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShcIicvKmFwcE5hbWUqLydcIiwgSlNPTi5zdHJpbmdpZnkobWFuaWZlc3QuYXBwTmFtZSkpXHJcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcW1xccypcXC9cXCp1cmxzVG9DYWNoZVxcKlxcL1xccypcXF0vLCBKU09OLnN0cmluZ2lmeShtYW5pZmVzdC5jYWNoZSkpXHJcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcW1xccypcXC9cXCpmYWxsYmFja3NcXCpcXC9cXHMqXFxdLywgSlNPTi5zdHJpbmdpZnkobWFuaWZlc3QuZmFsbGJhY2tzIHx8IFtdKSlcclxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShcIicvKmRlZmF1bHRGYWxsYmFjayovJ1wiLCBKU09OLnN0cmluZ2lmeShtYW5pZmVzdC5kZWZhdWx0RmFsbGJhY2spKTtcclxuICAgICAgICAgICAgICAgIC8vLnJlcGxhY2UoXCIvI0NBQ0hFJC9cIiwgXCIvKGFcXFxcZCttXFxcXGQrcFxcXFxkK3RcXFxcZCtfZXN0cnVjdHVyYS5qcyl8KGFcXFxcZCttXFxcXGQrcFxcXFxkK3RcXFxcZCtfaGRyLmpzb24pL1wiKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBzd01hbmlmZXN0XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbWFpbkFwcC5nZXQoYmFzZVVybCArIGAvc3ctbWFuaWZlc3QuanNgLCBhc3luYyBmdW5jdGlvbiAocmVxLCByZXMsIG5leHQpIHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlVGV4dChhd2FpdCBjcmVhdGVTZXJ2aWNlV29ya2VyKCksICdhcHBsaWNhdGlvbi9qYXZhc2NyaXB0JykocmVxLCByZXMpO1xyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlRXJyKHJlcSwgcmVzLCBuZXh0KSh1bmV4cGVjdGVkKGVycikpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgbWFpbkFwcC5nZXQoYmFzZVVybCArIGAvY2FyZ2EtZG0vd2ViLW1hbmlmZXN0LndlYm1hbmlmZXN0YCwgYXN5bmMgZnVuY3Rpb24gKHJlcSwgcmVzLCBuZXh0KSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBBUFBfTkFNRSA9IGF3YWl0IGJlLmdldEFwcE5hbWUoKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHN1ZmlqbyA9IGJlLmdldFN1Zmlqb0Zyb21iYXNlVXJsKGJhc2VVcmwpO1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50ID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIm5hbWVcIjogYCR7QVBQX05BTUV9JHtzdWZpam99IFByb2dyZXNzaXZlIFdlYiBBcHBgLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcInNob3J0X25hbWVcIjogYCR7QVBQX05BTUV9JHtzdWZpam99IFBXQWAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogYFByb2dyZXNzaXZlIFdlYiBBcHAgZm9yICR7QVBQX05BTUV9JHtzdWZpam99LmAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaWNvbnNcIjogZ2V0TWFuaWZlc3RJbWFnZUljb25zKEFQUF9OQU1FLCBzdWZpam8pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5iZS5nZXRDb2xvcnNKc29uKHN1ZmlqbyBhcyBTdWZpam9zQW1iaWVudGUpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIG1pbmlUb29scy5zZXJ2ZVRleHQoSlNPTi5zdHJpbmdpZnkoY29udGVudCksICdhcHBsaWNhdGlvbi9qc29uJykocmVxLCByZXMpO1xyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlRXJyKHJlcSwgcmVzLCBuZXh0KSh1bmV4cGVjdGVkKGVycikpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZ2V0Q29sb3JzSnNvbihfc3VmaWpvOiBTdWZpam9zQW1iaWVudGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIFwic3RhcnRfdXJsXCI6IFwiLi4vY2FtcG9cIixcclxuICAgICAgICAgICAgICAgIFwiZGlzcGxheVwiOiBcInN0YW5kYWxvbmVcIixcclxuICAgICAgICAgICAgICAgIFwidGhlbWVfY29sb3JcIjogXCIjM0Y1MUI1XCIsXHJcbiAgICAgICAgICAgICAgICBcImJhY2tncm91bmRfY29sb3JcIjogXCIjNmQ2MGVkXCJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBvdmVycmlkZSBhZGRMb2dnZWRTZXJ2aWNlcygpIHtcclxuICAgICAgICAgICAgdmFyIGJlID0gdGhpcztcclxuICAgICAgICAgICAgc3VwZXIuYWRkTG9nZ2VkU2VydmljZXMoKTtcclxuICAgICAgICAgICAgYmUuYXBwLmdldCgnL21hbmlmZXN0Lm1hbmlmZXN0JywgYXN5bmMgZnVuY3Rpb24gKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSwgX25leHQ6IE5leHRGdW5jdGlvbikge1xyXG4gICAgICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlRmlsZSgnc3JjL2NsaWVudC9tYW5pZmVzdC5tYW5pZmVzdCcsIHt9KShyZXEsIHJlcyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmFwcC5nZXQoJy9maWxlJywgYXN5bmMgZnVuY3Rpb24gKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGJlLmluVHJhbnNhY3Rpb24ocmVxLFxyXG4gICAgICAgICAgICAgICAgICAgIChjbGllbnQ6IHBnLkNsaWVudCkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50LnF1ZXJ5KFwic2VsZWN0IHJ1dGEgZnJvbSBhZGp1bnRvcyB3aGVyZSBpZF9hZGp1bnRvID0gJDFcIiwgW3JlcS5xdWVyeS5pZF9hZGp1bnRvXSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mZXRjaFVuaXF1ZVZhbHVlKClcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB2YXIgZmlsZVBhdGggPSByZXN1bHQudmFsdWU7XHJcbiAgICAgICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVGaWxlKGZpbGVQYXRoLCB7fSkocmVxLCByZXMpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5hcHAuZ2V0KCcvaW1hZ2VuZXMnLCBhc3luYyBmdW5jdGlvbiAocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVGaWxlKCdsb2NhbC1pbWFnZXMvJyArIHJlcS5xdWVyeS5wZGYsIHt9KShyZXEsIHJlcyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmFwcC5nZXQoJy9kb3dubG9hZC9hbGwnLCBhc3luYyBmdW5jdGlvbiAocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlLCBuZXh0OiAoKSA9PiB2b2lkKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVxLnVzZXIgPT0gbnVsbCB8fCByZXEudXNlci5yb2wgIT0gJ2FkbWluJykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdubyBlc3TDoSBhdXRvcml6YWRvIGEgYmFqYXJzZSB0b2RvJywgcmVxLnVzZXIpXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5leHQoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGxldCB6aXAgPSBuZXcgeWF6bC5aaXBGaWxlKCk7XHJcbiAgICAgICAgICAgICAgICB6aXAub3V0cHV0U3RyZWFtLnBpcGUocmVzKTtcclxuICAgICAgICAgICAgICAgIGxldCBiYXNlID0gJ2xvY2FsLWF0dGFjaG1lbnRzJ1xyXG4gICAgICAgICAgICAgICAgbGV0IGZpbGVzID0gYXdhaXQgZnMucmVhZGRpcihiYXNlKTtcclxuICAgICAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKGZpbGVzLm1hcChhc3luYyBmdW5jdGlvbiAoZmlsZU5hbWU6IHN0cmluZykge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBmaWxlUGF0aCA9IGJhc2UgKyAnLycgKyBmaWxlTmFtZTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdCA9IGF3YWl0IGZzLnN0YXQoZmlsZVBhdGgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGF0LmlzRmlsZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHppcC5hZGRGaWxlKGZpbGVQYXRoLCBmaWxlTmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgICAgICAgemlwLmVuZCgpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgICBvdmVycmlkZSBhc3luYyBwb3N0Q29uZmlnKCkge1xyXG4gICAgICAgICAgICBhd2FpdCBzdXBlci5wb3N0Q29uZmlnKCk7XHJcbiAgICAgICAgICAgIHZhciBiZSA9IHRoaXM7XHJcbiAgICAgICAgICAgIGJlLmNhY2hlcy5tZXRhRW5jSW5jbHVpckNhc2lsbGVyb3NTYWx0b1JFTCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBhd2FpdCBiZS5pblRyYW5zYWN0aW9uKG51bGwsIGFzeW5jIGZ1bmN0aW9uIChjbGllbnQ6IHBnLkNsaWVudCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHFQZXJtaXNvcyA9IGBcclxuICAgICAgICAgICAgU0VMRUNUIGpzb25iX29iamVjdF9hZ2coci5yb2wsanNvbmJfYnVpbGRfb2JqZWN0KCdzdXBlcnVzZXInLHIuc3VwZXJ1c2VyLCdwdWVkZScsKFxyXG4gICAgICAgICAgICAgICAgICBTRUxFQ1QganNvbmJfb2JqZWN0X2FnZyhycC5wZXJtaXNvLChcclxuICAgICAgICAgICAgICAgICAgICAgICAgU0VMRUNUIGpzb25iX29iamVjdF9hZ2cocnBhLmFjY2lvbixycGEuaGFiaWxpdGFkbylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBGUk9NIHJvbGVzX3Blcm1pc29zIHJwYVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFdIRVJFIHJwYS5yb2w9cnAucm9sIEFORCBycGEucGVybWlzbz1ycC5wZXJtaXNvXHJcbiAgICAgICAgICAgICAgICAgICAgKSlcclxuICAgICAgICAgICAgICAgICAgICBGUk9NIHJvbGVzX3Blcm1pc29zIHJwXHJcbiAgICAgICAgICAgICAgICAgICAgV0hFUkUgcnAucm9sPXIucm9sICNjb25kSGFiaWxpdGFkbyNcclxuICAgICAgICAgICAgICApKSlcclxuICAgICAgICAgICAgICBGUk9NIHJvbGVzIHJcclxuICAgICAgICAgICAgYDtcclxuICAgICAgICAgICAgICAgIHZhciByZXN1bHRzID0gW1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGNsaWVudC5xdWVyeShxUGVybWlzb3MucmVwbGFjZSgnI2NvbmRIYWJpbGl0YWRvIycsICcnKSkuZmV0Y2hVbmlxdWVWYWx1ZSgpLFxyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGNsaWVudC5xdWVyeShxUGVybWlzb3MucmVwbGFjZSgnI2NvbmRIYWJpbGl0YWRvIycsIGAgYW5kIHJwLiR7cGcucXVvdGVJZGVudCgnaGFiaWxpdGFkbycpfWApKS5mZXRjaFVuaXF1ZVZhbHVlKCksXHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgY2xpZW50LnF1ZXJ5KGBcclxuICAgICAgICAgICAgICAgICAgICBTRUxFQ1QganNvbmJfb2JqZWN0X2FnZyhwZXJtaXNvLChcclxuICAgICAgICAgICAgICAgICAgICAgICAgU0VMRUNUIGpzb25iX29iamVjdF9hZ2coYWNjaW9uLHRydWUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgRlJPTSBwZXJtaXNvcyBwYVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFdIRVJFIHBhLnBlcm1pc289cC5wZXJtaXNvXHJcbiAgICAgICAgICAgICAgICAgICAgICApKVxyXG4gICAgICAgICAgICAgICAgICAgICAgRlJPTSBwZXJtaXNvcyBwXHJcbiAgICAgICAgICAgICAgICBgKS5mZXRjaFVuaXF1ZVZhbHVlKCksXHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgY2xpZW50LnF1ZXJ5KGBcclxuICAgICAgICAgICAgICAgICAgICBTRUxFQ1QganNvbmJfb2JqZWN0X2FnZyhwZXJtaXNvLChcclxuICAgICAgICAgICAgICAgICAgICAgICAgU0VMRUNUIGpzb25iX29iamVjdF9hZ2coYWNjaW9uLGZhbHNlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEZST00gcGVybWlzb3MgcGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBXSEVSRSBwYS5wZXJtaXNvPXAucGVybWlzb1xyXG4gICAgICAgICAgICAgICAgICAgICAgKSlcclxuICAgICAgICAgICAgICAgICAgICAgIEZST00gcGVybWlzb3MgcFxyXG4gICAgICAgICAgICAgICAgYCkuZmV0Y2hVbmlxdWVWYWx1ZSgpXHJcbiAgICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICAgICAgYmUuY2FjaGVzLnBlcm1pc29zUm9sID0gcmVzdWx0c1swXS52YWx1ZTtcclxuICAgICAgICAgICAgICAgIGJlLmNhY2hlcy5wZXJtaXNvc1JvbFNvbG9UcnVlID0gcmVzdWx0c1sxXS52YWx1ZTtcclxuICAgICAgICAgICAgICAgIGJlLmNhY2hlcy5wZXJtaXNvc1N1cGVydXNlciA9IHJlc3VsdHNbMl0udmFsdWU7XHJcbiAgICAgICAgICAgICAgICBiZS5jYWNoZXMucGVybWlzb3NQYXJhTmFkaWUgPSByZXN1bHRzWzNdLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmRpcihiZS5jYWNoZXMucGVybWlzb3NSb2xTb2xvVHJ1ZSx7ZGVwdGg6OX0pO1xyXG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmRpcihiZS5jYWNoZXMucGVybWlzb3NTdXBlcnVzZXIse2RlcHRoOjl9KTtcclxuICAgICAgICAgICAgICAgIC8vY29uc29sZS5kaXIoYmUuY2FjaGVzLnBlcm1pc29zUGFyYU5hZGllLHtkZXB0aDo5fSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBiZS5jYWNoZXMuYXl1ZGEgPSBjYXJnYXJBeXVkYShiZS5nZXRBeXVkYUZ1ZW50ZXMoKSk7XHJcbiAgICAgICAgICAgIGJlLnByb2JsZW1hc0RlQXl1ZGEoKS5mb3JFYWNoKHByb2JsZW1hID0+IGNvbnNvbGUuZXJyb3IocHJvYmxlbWEpKTtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoQ2FjaGVzKCk7XHJcbiAgICAgICAgICAgIGF3YWl0IHJlZ2lzdHJhckNyb25Kb2JQYXNhckFQcm9pZShiZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNhcnBldGFzIGNvbiBsYSBheXVkYSBwYXJhIHVzdWFyaW9zLCBlbiBvcmRlbjogdW4gdGVtYSBkZSB1bmEgZnVlbnRlIHBvc3RlcmlvciByZWVtcGxhemEgdSBvY3VsdGFcclxuICAgICAgICAvLyBhbCBkZSB1bmEgYW50ZXJpb3IgY29uIGVsIG1pc21vIGlkLiBMYXMgYXBwcyBmaW5hbGVzIGFncmVnYW4gbGEgc3V5YSAodmVyIGRvY3MvYXl1ZGEtb25saW5lLm1kKVxyXG4gICAgICAgIGdldEF5dWRhRnVlbnRlcygpOiBBeXVkYUZ1ZW50ZVtdIHtcclxuICAgICAgICAgICAgcmV0dXJuIFt7IG9yaWdlbjogJ2RtZW5jdScsIGNhcnBldGE6IHBhdGguam9pbihjYXJwZXRhRGVsUGFxdWV0ZShfX2Rpcm5hbWUpLCAnYXl1ZGEnKSB9XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gdGVtYXMgZGUgYXl1ZGEgZGVsIG1vZG8gYWN0dWFsIGNvbiBwZXJtaXNvcywgcm9sZXMgdSBvcGNpb25lcyBkZSBtZW7DuiBxdWUgbm8gZXhpc3RlblxyXG4gICAgICAgIHByb2JsZW1hc0RlQXl1ZGEoKTogc3RyaW5nW10ge1xyXG4gICAgICAgICAgICB2YXIgYmUgPSB0aGlzO1xyXG4gICAgICAgICAgICB2YXIgbW9kbyA9IGdldE1vZG9CeVBvbGljeShiZSk7XHJcbiAgICAgICAgICAgIHZhciBydXRhczogc3RyaW5nW10gPSBbXTtcclxuICAgICAgICAgICAgT2JqZWN0LmtleXMoYmUuY2FjaGVzLnBlcm1pc29zUm9sKS5mb3JFYWNoKHJvbCA9PiB7XHJcbiAgICAgICAgICAgICAgICB2YXIgdXNlciA9IHsgcm9sLCBpZHBlcjogJycsIHVzdWFyaW86ICcnIH07XHJcbiAgICAgICAgICAgICAgICB2YXIgY29udGV4dDogQ29udGV4dCA9IHsgLi4ucGVybWlzb3NTZWd1blVzdWFyaW8oYmUuY2FjaGVzLCB1c2VyKSwgYmUsIHVzZXIsIHNlc3Npb246IHt9LCB1c2VybmFtZTogJycsIG1hY2hpbmVJZDogJycsIG5hdmlnYXRvcjogJycgfTtcclxuICAgICAgICAgICAgICAgIHJ1dGFzID0gcnV0YXMuY29uY2F0KHJ1dGFzRGVsTWVudShiZS5nZXRNZW51KGNvbnRleHQpLm1lbnUpKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiBwcm9ibGVtYXNEZUF5dWRhKFxyXG4gICAgICAgICAgICAgICAgYmUuY2FjaGVzLmF5dWRhLmZpbHRlcih0ZW1hID0+IHRlbWEubW9kbyA9PSBudWxsIHx8IHRlbWEubW9kbyA9PSBtb2RvKSxcclxuICAgICAgICAgICAgICAgIGJlLmNhY2hlcy5wZXJtaXNvc1N1cGVydXNlcixcclxuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGJlLmNhY2hlcy5wZXJtaXNvc1JvbCksXHJcbiAgICAgICAgICAgICAgICBydXRhc1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBvdmVycmlkZSBjb25maWdTdGF0aWNDb25maWcoKSB7XHJcbiAgICAgICAgICAgIHN1cGVyLmNvbmZpZ1N0YXRpY0NvbmZpZygpO1xyXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRpY0NvbmZpZyhkZWZDb25maWcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBvdmVycmlkZSBjbGllbnRJbmNsdWRlcyhyZXE6IFJlcXVlc3QsIG9wdHM6IE9wdHNDbGllbnRQYWdlKTogQ2xpZW50TW9kdWxlRGVmaW5pdGlvbltdIHtcclxuICAgICAgICAgICAgdmFyIGJlID0gdGhpcztcclxuICAgICAgICAgICAgdmFyIHVubG9nZ2VkID0gb3B0cyAmJiBvcHRzLm9mZmxpbmVGaWxlO1xyXG4gICAgICAgICAgICB2YXIgbWVudWVkUmVzb3VyY2VzOiBDbGllbnRNb2R1bGVEZWZpbml0aW9uW10gPSB1bmxvZ2dlZCA/IFtcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkJywgZmlsZTogJ3VubG9nZ2VkLmpzJywgcGF0aDogJ2RtZW5jdScgfSxcclxuICAgICAgICAgICAgXSA6IFtcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL2NsaWVudC9jbGllbnQnLCBmaWxlOiAnY2xpZW50LmpzJywgcGF0aDogJ2RtZW5jdScgfSxcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy5leHRyYUZpbGVzKSB7XHJcbiAgICAgICAgICAgICAgICBtZW51ZWRSZXNvdXJjZXMgPSBtZW51ZWRSZXNvdXJjZXMuY29uY2F0KG9wdHMuZXh0cmFGaWxlcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IGV4dGVybmFsUmVzb3VyY2VzOiBDbGllbnRNb2R1bGVEZWZpbml0aW9uW10gPSBbXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ3JlYWN0JywgbW9kUGF0aDogJ3VtZCcsIGZpbGU6ICdyZWFjdC5wcm9kdWN0aW9uLm1pbi5qcycgfSxcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAncmVhY3QtZG9tJywgbW9kUGF0aDogJ3VtZCcsIGZpbGU6ICdyZWFjdC1kb20ucHJvZHVjdGlvbi5taW4uanMnIH0sXHJcbiAgICAgICAgICAgICAgICAvL3sgdHlwZTogJ2pzJywgbW9kdWxlOiAnQG1hdGVyaWFsLXVpL2NvcmUnLCBtb2RQYXRoOiAndW1kJywgZmlsZURldmVsb3BtZW50OidtYXRlcmlhbC11aS5kZXZlbG9wbWVudC5qcycsIGZpbGU6J21hdGVyaWFsLXVpLnByb2R1Y3Rpb24ubWluLmpzJyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdAbXVpL21hdGVyaWFsJywgbW9kUGF0aDogJy4uL3VtZCcsIGZpbGU6ICdtYXRlcmlhbC11aS5wcm9kdWN0aW9uLm1pbi5qcycgfSxcclxuXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ3JlZHV4JywgbW9kUGF0aDogJy4uL2Rpc3QnLCBmaWxlOiAncmVkdXgubWluLmpzJyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdyZWFjdC1yZWR1eCcsIG1vZFBhdGg6ICcuLi9kaXN0JywgZmlsZTogJ3JlYWN0LXJlZHV4Lm1pbi5qcycgfSxcclxuICAgICAgICAgICAgICAgIC8veyB0eXBlOiAnanMnLCBtb2R1bGU6ICdxcmNvZGUnLCBtb2RQYXRoOiAnLi4vYnVpbGQnLCBmaWxlOiAncXJjb2RlLmpzJ30sXHJcbiAgICAgICAgICAgICAgICAuLi5zdXBlci5jbGllbnRJbmNsdWRlcyhyZXEsIG9wdHMpLmZpbHRlcihtID0+IG0uZmlsZSAhPSAnZm9ybXVsYXJpb3MuY3NzJylcclxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKG0gPT4gIXVubG9nZ2VkIHx8IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgbS5maWxlICE9ICd2YXItY2FsLmpzJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiBtLmZpbGUgIT0gJ3Zhci1jYWwuanMnXHJcbiAgICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnc2VydmljZS13b3JrZXItYWRtaW4nLCBmaWxlOiAnc2VydmljZS13b3JrZXItYWRtaW4uanMnIH0sXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ3JlZHV4LXR5cGVkLXJlZHVjZXInLCBtb2RQYXRoOiAnLi4vZGlzdCcsIGZpbGU6ICdyZWR1eC10eXBlZC1yZWR1Y2VyLmpzJyB9XHJcbiAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgIHZhciByZXNvdXJjZXM6IENsaWVudE1vZHVsZURlZmluaXRpb25bXSA9IFtcclxuICAgICAgICAgICAgICAgIC4uLmV4dGVybmFsUmVzb3VyY2VzLFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAnYWRhcHQuanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAndGlwb3MuanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAnaGVscGVycy1mb3JtdWxhcmlvLmpzJywgcGF0aDogJ2RtZW5jdScgfSxcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkJywgZmlsZTogJ2NhbGN1bG9zLWVuY3Vlc3RhLmpzJywgcGF0aDogJ2RtZW5jdScgfSxcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkJywgZmlsZTogJ3JlbmRlci1jb25maWcuanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAncmVuZGVyLWluaXQuanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAncmVkdXgtZm9ybXVsYXJpby5qcycsIHBhdGg6ICdkbWVuY3UnIH0sXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICdoZWxwZXJzLWNhc2lsbGVyb3MuanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAnYnlwYXNzLWZvcm11bGFyaW8uanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAncmVuZGVyLWdlbmVyYWwuanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAncmVuZGVyLWZvcm11bGFyaW8uanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAnYWJyaXItZm9ybXVsYXJpby5qcycsIHBhdGg6ICdkbWVuY3UnIH0sXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdjc3MnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQvY3NzJywgZmlsZTogJ2Zvcm11bGFyaW8tcmVhY3QuY3NzJywgcGF0aDogJ2NzcycgfSxcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2NzcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZC9jc3MnLCBmaWxlOiAnYm9vdHN0cmFwLm1pbi5jc3MnLCBwYXRoOiAnY3NzJyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAndHRmJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkL2NzcycsIGZpbGU6ICdSb2JvdG8tUmVndWxhci50dGYnLCBwYXRoOiAnY3NzJyB9LFxyXG4gICAgICAgICAgICAgICAgLi4ubWVudWVkUmVzb3VyY2VzLFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnY3NzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL2NsaWVudC9jbGllbnQvY3NzJywgZmlsZTogJ21lbnUuY3NzJywgcGF0aDogJ2NzcycgfSxcclxuICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICByZXR1cm4gcmVzb3VyY2VzXHJcbiAgICAgICAgICAgIC8vIC5tYXAobT0+KHsuLi5tLCBmaWxlOm0uZmlsZURldmVsb3BtZW50fHxtLmZpbGV9KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIGFzeW5jIHJlZnJlc2hDYWNoZXMoY2xpZW50OiBDbGllbnRlRGIgfCBudWxsID0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQgPSB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQgfHwge307XHJcblxyXG4gICAgICAgICAgICAvLyBGdW5jacOzbiBhdXhpbGlhciBwYXJhIGVqZWN1dGFyIGxhcyBxdWVyaWVzIGNvbiBlbCBjbGllbnRlIHByb3Zpc3RvIG8gdW5vIG51ZXZvXHJcbiAgICAgICAgICAgIGNvbnN0IGV4ZWN1dGVRdWVyaWVzID0gYXN5bmMgKGRiQ2xpZW50OkNsaWVudGVEYikgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYSA9IChhd2FpdCBkYkNsaWVudC5xdWVyeShgc2VsZWN0ICogZnJvbSBub19yZWEgb3JkZXIgYnkgb3BlcmF0aXZvLCBvcmRlbiwgbm9fcmVhYCkuZmV0Y2hBbGwoKSkucm93cztcclxuICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5yZWEgPSAoYXdhaXQgZGJDbGllbnQucXVlcnkoYHNlbGVjdCAqIGZyb20gcmVhIG9yZGVyIGJ5IG9wZXJhdGl2bywgb3JkZW4sIHJlYWApLmZldGNoQWxsKCkpLnJvd3M7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYV9ncm91cHMgPSAoYXdhaXQgZGJDbGllbnQucXVlcnkoYFxyXG4gICAgICAgICAgICBzZWxlY3QgZ3J1cG8sIGpzb25iX2FnZyh0b19qc29uKHIuKikpIGFzIGNvZGlnb3MgZnJvbSBub19yZWEgciBncm91cCBieSBncnVwbyBvcmRlciBieSAxXHJcbiAgICAgICAgYCkuZmV0Y2hBbGwoKSkucm93cztcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhX2dyb3VwczAgPSAoYXdhaXQgZGJDbGllbnQucXVlcnkoYFxyXG4gICAgICAgICAgICBzZWxlY3QgZ3J1cG8wIGFzIGdydXBvLCBqc29uYl9hZ2codG9fanNvbihyLiopKSBhcyBjb2RpZ29zIGZyb20gbm9fcmVhIHIgZ3JvdXAgYnkgZ3J1cG8wIG9yZGVyIGJ5IDFcclxuICAgICAgICBgKS5mZXRjaEFsbCgpKS5yb3dzO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWFfc3VwID0gKGF3YWl0IGRiQ2xpZW50LnF1ZXJ5KGBzZWxlY3QgKiBmcm9tIG5vX3JlYV9zdXAgb3JkZXIgYnkgb3BlcmF0aXZvLCBvcmRlbiwgbm9fcmVhX3N1cGApLmZldGNoQWxsKCkpLnJvd3M7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQucmVhX3N1cCA9IChhd2FpdCBkYkNsaWVudC5xdWVyeShgc2VsZWN0ICogZnJvbSByZWFfc3VwIG9yZGVyIGJ5IG9wZXJhdGl2bywgb3JkZW4sIHJlYV9zdXBgKS5mZXRjaEFsbCgpKS5yb3dzO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWFfc3VwX2dyb3VwcyA9IChhd2FpdCBkYkNsaWVudC5xdWVyeShgXHJcbiAgICAgICAgICAgIHNlbGVjdCBncnVwb19zdXAsIGpzb25iX2FnZyh0b19qc29uKHIuKikpIGFzIGNvZGlnb3MgZnJvbSBub19yZWFfc3VwIHIgZ3JvdXAgYnkgZ3J1cG9fc3VwIG9yZGVyIGJ5IDFcclxuICAgICAgICBgKS5mZXRjaEFsbCgpKS5yb3dzO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWFfc3VwX2dyb3VwczAgPSAoYXdhaXQgZGJDbGllbnQucXVlcnkoYFxyXG4gICAgICAgICAgICBzZWxlY3QgZ3J1cG8wX3N1cCBhcyBncnVwbywganNvbmJfYWdnKHRvX2pzb24oci4qKSkgYXMgY29kaWdvcyBmcm9tIG5vX3JlYV9zdXAgciBncm91cCBieSBncnVwbzBfc3VwIG9yZGVyIGJ5IDFcclxuICAgICAgICBgKS5mZXRjaEFsbCgpKS5yb3dzO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5jb25SZWFIb2dhciA9IChhd2FpdCBkYkNsaWVudC5xdWVyeShgXHJcbiAgICAgICAgICAgIHNlbGVjdCBjb25fcmVhX2hvZ2FyLCBvcGVyYXRpdm8sIGNvbmZpZ19zb3J0ZW8gZnJvbSBvcGVyYXRpdm9zIGpvaW4gcGFyYW1ldHJvcyB1c2luZyAob3BlcmF0aXZvKSB3aGVyZSB1bmljb19yZWdpc3Ryb1xyXG4gICAgICAgIGApLmZldGNoVW5pcXVlUm93KCkpLnJvdztcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIGlmIChjbGllbnQpIHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IGV4ZWN1dGVRdWVyaWVzKGNsaWVudCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmluRGJDbGllbnQobnVsbCwgYXN5bmMgKGRiQ2xpZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgZXhlY3V0ZVF1ZXJpZXMoZGJDbGllbnQpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ2NhY2hlcycsIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudClcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ2NhY2hlcyBvaycpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvL3NxbE5vcmVhQ2FzZShjYW1wb05lY2VzYXJpbzpzdHJpbmcpe1xyXG4gICAgICAgIC8vICAgIHZhciBiZT10aGlzO1xyXG4gICAgICAgIC8vICAgIHJldHVybiBgQ0FTRSAke2JlLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhLm1hcCh4PT5cclxuICAgICAgICAvLyAgICAgICAgYCBXSEVOIG5vcmVhICA9ICR7YmUuZGIucXVvdGVMaXRlcmFsKHgubm9fcmVhKX06OmludGVnZXIgVEhFTiAke2JlLmRiLnF1b3RlTGl0ZXJhbCh4W2NhbXBvTmVjZXNhcmlvXSl9YFxyXG4gICAgICAgIC8vICAgICkuam9pbignJyl9IFdIRU4gVFJVRSBUSEVOIE5VTEwgRU5EYFxyXG4gICAgICAgIC8vfSAgICBcclxuICAgICAgICBvdmVycmlkZSBnZXRDb250ZXh0KHJlcTogUmVxdWVzdCk6IENvbnRleHQge1xyXG4gICAgICAgICAgICB2YXIgZmF0aGVyQ29udGV4dCA9IHN1cGVyLmdldENvbnRleHQocmVxKTtcclxuICAgICAgICAgICAgcmV0dXJuIHsgLi4ucGVybWlzb3NTZWd1blVzdWFyaW8odGhpcy5jYWNoZXMsIGZhdGhlckNvbnRleHQudXNlciksIC4uLmZhdGhlckNvbnRleHQgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgb3ZlcnJpZGUgZ2V0Q29udGV4dEZvckR1bXAoKTogQ29udGV4dCB7XHJcbiAgICAgICAgICAgIHZhciBmYXRoZXJDb250ZXh0ID0gc3VwZXIuZ2V0Q29udGV4dEZvckR1bXAoKTtcclxuICAgICAgICAgICAgcmV0dXJuIHsgc3VwZXJ1c2VyOiB0cnVlLCBwdWVkZTogdGhpcy5jYWNoZXMucGVybWlzb3NTdXBlcnVzZXIsIC4uLmZhdGhlckNvbnRleHQgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgb3ZlcnJpZGUgYXN5bmMgZ2V0Q2xpZW50U2V0dXBGb3JTZW5kVG9Gcm9udEVuZChyZXE6IFJlcXVlc3QpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLihhd2FpdCBzdXBlci5nZXRDbGllbnRTZXR1cEZvclNlbmRUb0Zyb250RW5kKHJlcSkpLFxyXG4gICAgICAgICAgICAgICAgaWRwZXI6IHJlcS51c2VyPy5pZHBlclxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGFzeW5jIGNyZWF0ZVJlc291cmNlc0ZvckNhY2hlSnNvbigpIHtcclxuICAgICAgICAgICAgdmFyIGJlID0gdGhpcztcclxuICAgICAgICAgICAgY29uc3QgQVBQX05BTUUgPSBhd2FpdCBiZS5nZXRBcHBOYW1lKClcclxuICAgICAgICAgICAgY29uc3Qgc3VmaWpvID0gYmUuZ2V0U3VmaWpvRnJvbWJhc2VVcmwoYmUuY29uZmlnLnNlcnZlclsnYmFzZS11cmwnXSk7XHJcblxyXG4gICAgICAgICAgICB2YXIganNvblJlc3VsdCA9IHtcclxuICAgICAgICAgICAgICAgIHZlcnNpb246IEFQUF9ETV9WRVJTSU9OLFxyXG4gICAgICAgICAgICAgICAgYXBwTmFtZTogJ2RtZW5jdScsXHJcbiAgICAgICAgICAgICAgICBjYWNoZTogW1xyXG4gICAgICAgICAgICAgICAgICAgIFwiY2FtcG9cIixcclxuICAgICAgICAgICAgICAgICAgICBcIm9mZmxpbmVcIixcclxuICAgICAgICAgICAgICAgICAgICBcImZhbGxiYWNrLXNpbmNyb1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL3JlYWN0LnByb2R1Y3Rpb24ubWluLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvcmVhY3QtZG9tLnByb2R1Y3Rpb24ubWluLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvbWF0ZXJpYWwtdWkucHJvZHVjdGlvbi5taW4uanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9yZWR1eC5taW4uanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9yZWFjdC1yZWR1eC5taW4uanNcIixcclxuICAgICAgICAgICAgICAgICAgICAvL1wibGliL3FyY29kZS5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL3JlcXVpcmUtYnJvLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvY2FzdC1lcnJvci5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL2xpa2UtYXIuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9iZXN0LWdsb2JhbHMuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9qc29uNGFsbC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL2pzLXRvLWh0bWwuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9yZWR1eC10eXBlZC1yZWR1Y2VyLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJkbWVuY3UvYWRhcHQuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImRtZW5jdS91bmxvZ2dlZC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL2pzLXlhbWwudW1kLm1pbi5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL3hsc3gtbm93LnVtZC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL3hsc3gtbm93LWJyb3dzZXIudW1kLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvbGF6eS1zb21lLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvc3FsLXRvb2xzLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJkaWFsb2ctcHJvbWlzZS9kaWFsb2ctcHJvbWlzZS5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibW9tZW50L21pbi9tb21lbnQuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcInBpa2FkYXkvcGlrYWRheS5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL3BvbHlmaWxscy1icm8uanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9iaWcuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi90eXBlLXN0b3JlLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvdHlwZWQtY29udHJvbHMuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9hamF4LWJlc3QtcHJvbWlzZS5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibXktYWpheC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibXktc3RhcnQuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9teS1sb2NhbGRiLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvbXktd2Vic3FsZGIuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9teS1sb2NhbGRiLmpzLm1hcFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL215LXdlYnNxbGRiLmpzLm1hcFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL215LXRoaW5ncy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL215LXRhYmxlcy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL215LWluZm9ybS1uZXQtc3RhdHVzLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvbXktbWVudS5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL215LXNraW4uanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9jbGllbnRlLWVuLWNhc3RlbGxhbm8uanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9zZXJ2aWNlLXdvcmtlci1hZG1pbi5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL3JlZHV4LXR5cGVkLXJlZHVjZXIuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImNsaWVudF9tb2R1bGVzL29wZXJhdGl2b3MuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImNsaWVudF9tb2R1bGVzL3ZhcmNhbC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiY2xpZW50X21vZHVsZXMvZm9ybS1zdHJ1Y3R1cmUuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImNsaWVudF9tb2R1bGVzL21ldGEtZW5jLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJjbGllbnRfbW9kdWxlcy9kYXRvcy1leHQuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImNsaWVudF9tb2R1bGVzL2NvbnNpc3RlbmNpYXMuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImNsaWVudF9tb2R1bGVzL3Byb2Nlc2FtaWVudG8uanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImRtZW5jdS90aXBvcy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiZG1lbmN1L3JlbmRlci1jb25maWcuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImRtZW5jdS9yZW5kZXItaW5pdC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiZG1lbmN1L2hlbHBlcnMtY2FzaWxsZXJvcy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiZG1lbmN1L2hlbHBlcnMtZm9ybXVsYXJpby5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiZG1lbmN1L2NhbGN1bG9zLWVuY3Vlc3RhLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJkbWVuY3UvYnlwYXNzLWZvcm11bGFyaW8uanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImRtZW5jdS9yZWR1eC1mb3JtdWxhcmlvLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJkbWVuY3UvcmVuZGVyLWdlbmVyYWwuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImRtZW5jdS9yZW5kZXItZm9ybXVsYXJpby5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiZG1lbmN1L2FicmlyLWZvcm11bGFyaW8uanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImNsaWVudF9tb2R1bGVzL3Jvdy12YWxpZGF0b3IuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImNsaWVudC9tZW51LmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJpbWcvbG9nby5wbmdcIixcclxuICAgICAgICAgICAgICAgICAgICAvL1wiaW1nL2xvZ28tZG0ucG5nXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJpbWcvbG9nby0xMjgucG5nXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJpbWcvbWFpbi1sb2FkaW5nLmdpZlwiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiaW1nL2JvcnJhci12YWxvci5wbmdcIixcclxuICAgICAgICAgICAgICAgICAgICBcImltZy9mb25kby1zYWx0ZWFkby1lcnJvci5wbmdcIixcclxuICAgICAgICAgICAgICAgICAgICBcImltZy9mb25kby1zYWx0ZWFkby5wbmdcIixcclxuICAgICAgICAgICAgICAgICAgICBcImltZy9iYWNrZ3JvdW5kLXRlc3QucG5nXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgLy9cImNsaWVudC1zZXR1cFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiY3NzL2Jvb3RzdHJhcC5taW4uY3NzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJjc3MvZm9ybXVsYXJpby1yZWFjdC5jc3NcIixcclxuICAgICAgICAgICAgICAgICAgICBcInBpa2FkYXkvcGlrYWRheS5jc3NcIixcclxuICAgICAgICAgICAgICAgICAgICBcImRpYWxvZy1wcm9taXNlL2RpYWxvZy1wcm9taXNlLmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwicmVsLWVuYy9lc3RhZG9zLmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiY3NzL215LXRhYmxlcy5jc3NcIixcclxuICAgICAgICAgICAgICAgICAgICBcImNzcy9teS1tZW51LmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiY3NzL215LXRoaW5ncy5jc3NcIixcclxuICAgICAgICAgICAgICAgICAgICBcImNzcy9tZW51LmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwicmVsLWVuYy9teS10aGluZ3MyLmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiY3NzL2Zvcm11bGFyaW8tcmVhY3QuY3NzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJjc3MvUm9ib3RvLVJlZ3VsYXIudHRmXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJjYXJnYS1kbS93ZWItbWFuaWZlc3Qud2VibWFuaWZlc3RcIixcclxuICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICBmYWxsYmFja3M6W1xyXG4gICAgICAgICAgICAgICAgICAgIHtwYXRoOiAnZG1fc2luY3Jvbml6YXInLCBmYWxsYmFjazonZmFsbGJhY2stc2luY3JvJ31cclxuICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0RmFsbGJhY2s6IFwib2ZmbGluZVwiXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGpzb25SZXN1bHQuY2FjaGUgPSBqc29uUmVzdWx0LmNhY2hlLmNvbmNhdChnZXRNYW5pZmVzdEltYWdlSWNvbnMoQVBQX05BTUUsIHN1ZmlqbykubWFwKChlbGVtKSA9PiBgbWVudS8ke2VsZW0uc3JjfWApKTtcclxuXHJcbiAgICAgICAgICAgIHZhciBza2luID0gYmUuY29uZmlnWydjbGllbnQtc2V0dXAnXS5za2luO1xyXG4gICAgICAgICAgICBpZiAoc2tpbiAmJiBiZS5hY3RpdmVTa2luRmlsZXMpIHtcclxuICAgICAgICAgICAgICAgIHZhciBza2luVXJsID0gc2tpbiArICcvJztcclxuICAgICAgICAgICAgICAgIGpzb25SZXN1bHQuY2FjaGUucHVzaChgJHtza2lufS9pbWcvYmFja2dyb3VuZC10ZXN0LnBuZ2ApO1xyXG4gICAgICAgICAgICAgICAgLy8gQ29udmVydGltb3MgZWwgU2V0IGEgQXJyYXkgeSBtYXBlYW1vcyBsYXMgcnV0YXNcclxuICAgICAgICAgICAgICAgIHZhciBza2luUmVzb3VyY2VzID0gQXJyYXkuZnJvbShiZS5hY3RpdmVTa2luRmlsZXMpLm1hcChmdW5jdGlvbiAocGF0aFJlbGF0aXZvKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gU2kgZXMgdW4gLnN0eWwsIGxvIHBlZGltb3MgY29tbyAuY3NzIHBvcnF1ZSBlbCBTZXJ2aWNlIFdvcmtlciBcclxuICAgICAgICAgICAgICAgICAgICAvLyBkZWJlIGNhY2hlYXIgZWwgcmVjdXJzbyBmaW5hbCBxdWUgZWwgbmF2ZWdhZG9yIHNvbGljaXRhLlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBza2luVXJsICsgcGF0aFJlbGF0aXZvLnJlcGxhY2UoL1xcLnN0eWwkLywgJy5jc3MnKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgIGpzb25SZXN1bHQuY2FjaGUgPSBqc29uUmVzdWx0LmNhY2hlLmNvbmNhdChza2luUmVzb3VyY2VzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4ganNvblJlc3VsdFxyXG4gICAgICAgIH1cclxuICAgICAgICBnZXRNZW51Q29udHJvbGVzKF9jb250ZXh0OiBDb250ZXh0KTogTWVudUluZm9CYXNlW10ge1xyXG4gICAgICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3Byb2MnLCBuYW1lOiAnZW5jdWVzdGFzX3Byb2Nlc2FtaWVudG9fcGFzYXInLCBsYWJlbDogJ3Bhc2FyIGVuY3Vlc3RhcyBhIHByb2Nlc2FtaWVudG8nIH0sXHJcbiAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAncmVzdW1lbicsIHRhYmxlOiAnY29udHJvbF9yZXN1bWVuJywgc2VsZWN0ZWRCeURlZmF1bHQ6IHRydWUgfSxcclxuICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdkb21pbmlvJywgdGFibGU6ICdjb250cm9sX2NhbXBvX2RvbWluaW8nIH0sXHJcbiAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnem9uYScsIHRhYmxlOiAnY29udHJvbF9jYW1wb196b25hJyB9LFxyXG4gICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2NvbXVuYScsIHRhYmxlOiAnY29udHJvbF9jYW1wb19jb211bmEnIH0sXHJcbiAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnw6FyZWEnLCB0YWJsZTogJ2NvbnRyb2xfY2FtcG9fYXJlYScgfSxcclxuICAgICAgICAgICAgXVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgZ2V0TWVudVZhcmlvcyhjb250ZXh0OiBDb250ZXh0KTogTWVudUluZm9CYXNlIHtcclxuICAgICAgICAgICAgbGV0IHN1Ym1lbnVWYXJpb3M6IE1lbnVJbmZvQmFzZVtdID0gW3sgbWVudVR5cGU6ICdhYnJpcl9lbmN1ZXN0YScsIG5hbWU6ICdhYnJpcl9lbmN1ZXN0YScgfV1cclxuICAgICAgICAgICAgaWYgKGNvbnRleHQucHVlZGU/LmNhbXBvPy5lZGl0YXIpIHtcclxuICAgICAgICAgICAgICAgIHN1Ym1lbnVWYXJpb3MucHVzaCh7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnaG9qYV9ydXRhJywgdGFibGU6ICdncmlsbGFfaG9qYV9ydXRhJywgbGFiZWw6ICdob2phIGRlIHJ1dGEnIH0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGNvbnRleHQucHVlZGU/LmNhbXBvPy5hZG1pbmlzdHJhcikge1xyXG4gICAgICAgICAgICAgICAgc3VibWVudVZhcmlvcy5wdXNoKHsgbWVudVR5cGU6ICdwcm9jJywgbmFtZTogJ2VuY3Vlc3RhZG9yX2Rtc19tb3N0cmFyJywgbGFiZWw6ICdmb3J6YXIgZGVzY2FyZ2EgZW5jdWVzdGFzIERNJyB9KTtcclxuICAgICAgICAgICAgICAgIHN1Ym1lbnVWYXJpb3MucHVzaCh7IG1lbnVUeXBlOiAncHJvYycsIG5hbWU6ICdlbmN1ZXN0YV9ibGFucXVlYXJfcHJldmlzdWFsaXphcicsIGxhYmVsOiAnYmxhbnF1ZWFyIGVuY3Vlc3RhJyB9KTtcclxuICAgICAgICAgICAgICAgIHN1Ym1lbnVWYXJpb3MucHVzaCh7IG1lbnVUeXBlOiAncHJvYycsIG5hbWU6ICdlbmN1ZXN0YV9ib3JyYXJfcHJldmlzdWFsaXphcicsIGxhYmVsOiAncXVpdGFyIGVuY3Vlc3RhIGRlIGxhIG11ZXN0cmEnIH0pO1xyXG4gICAgICAgICAgICAgICAgc3VibWVudVZhcmlvcy5wdXNoKHsgbWVudVR5cGU6ICdwcm9jJywgbmFtZTogJ2VuY3Vlc3Rhc19jYXBhY2l0YWNpb25fYm9ycmFyJywgbGFiZWw6ICdxdWl0YXIgZW5jdWVzdGFzIGRlIGNhcGEgZGUgbGEgbXVlc3RyYScgfSk7XHJcbiAgICAgICAgICAgICAgICBzdWJtZW51VmFyaW9zLnB1c2goeyBtZW51VHlwZTogJ3Byb2MnLCBuYW1lOiAnb3BlcmF0aXZvX21pZ3JhcicsIGxhYmVsOiAnbWlncmFyIG9wZXJhdGl2bycgfSk7XHJcbiAgICAgICAgICAgICAgICBzdWJtZW51VmFyaW9zLnB1c2goeyBtZW51VHlwZTogJ3Byb2MnLCBuYW1lOiAnZW5jdWVzdGFfY2FwYV9hX3Byb2RfcGFzYXInLCBsYWJlbDogJ3Bhc2FyIGVuY3Vlc3RhcyBkZSBjYXBhIGEgcHJvZCcgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGNvbnRleHQucHVlZGU/LmVuY3Vlc3Rhcz8ucHJvY2VzYXIpIHtcclxuICAgICAgICAgICAgICAgIHN1Ym1lbnVWYXJpb3MucHVzaCh7IG1lbnVUeXBlOiAncHJvYycsIG5hbWU6ICdpbnRlcmNhbWJpYXJfZW5jdWVzdGFzJyB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4geyBtZW51VHlwZTogJ21lbnUnLCBuYW1lOiAndmFyaW9zJywgbWVudUNvbnRlbnQ6IHN1Ym1lbnVWYXJpb3MgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBnZXRNZW51QXNpZ25hY2lvbihjb250ZXh0OiBDb250ZXh0KTogTWVudUluZm9CYXNlIHtcclxuICAgICAgICAgICAgbGV0IGZpbHRyb1JlY2VwY2lvbmlzdGEgPSBjb250ZXh0LnVzZXIucm9sID09ICdyZWNlcGNpb25pc3RhJyA/IHsgcmVjZXBjaW9uaXN0YTogY29udGV4dC51c2VyLmlkcGVyIH0gOiB7fTtcclxuICAgICAgICAgICAgbGV0IHN1Ym1lbnVBc2lnbmFjaW9uOiBNZW51SW5mb0Jhc2VbXSA9IFtdO1xyXG4gICAgICAgICAgICBpZiAoY29udGV4dC5wdWVkZT8uY2FtcG8/LmFkbWluaXN0cmFyKSB7XHJcbiAgICAgICAgICAgICAgICBzdWJtZW51QXNpZ25hY2lvbi5wdXNoKHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdnZW5lcmFsJywgdGFibGU6ICdhcmVhc19hc2lnbmFjaW9uX2dlbmVyYWwnIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHN1Ym1lbnVBc2lnbmFjaW9uLnB1c2goXHJcbiAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnZW5jdWVzdGFkb3InLCB0YWJsZTogJ3RfZW5jdV9hcmVhcycsIGZmOiB7IHRhcmVhOiAnZW5jdScsIC4uLmZpbHRyb1JlY2VwY2lvbmlzdGEgfSB9LFxyXG4gICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2luZ3Jlc2Fkb3InLCB0YWJsZTogJ3RfaW5ncl9hcmVhcycsIGZmOiB7IHRhcmVhOiAnaW5ncicsIC4uLmZpbHRyb1JlY2VwY2lvbmlzdGEgfSB9LFxyXG4gICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3JlY3VwZXJhZG9yJywgdGFibGU6ICd0YXJlYXNfdGVtX2FzaWduYWNpb25fcmVjdScsIGZmOiB7IHRhcmVhX2FjdHVhbDogJ3JlY3UnLCB0YXJlYTogJ3JlY3UnLCAuLi5maWx0cm9SZWNlcGNpb25pc3RhIH0gfSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKGNvbnRleHQucHVlZGU/LmNhbXBvPy5hZG1pbmlzdHJhcikge1xyXG4gICAgICAgICAgICAgICAgc3VibWVudUFzaWduYWNpb24ucHVzaChcclxuICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnc3VwZXJ2aXNvcicsIHRhYmxlOiAndGFyZWFzX3RlbV9hc2lnbmFjaW9uX3N1cGUnLCBmZjogeyB0YXJlYV9hY3R1YWw6ICdzdXBlJywgdGFyZWE6ICdzdXBlJywgLi4uZmlsdHJvUmVjZXBjaW9uaXN0YSB9IH0sXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICByZXR1cm4geyBtZW51VHlwZTogJ21lbnUnLCBuYW1lOiAnYXNpZ25hY2lvbicsIGxhYmVsOiAnYXNpZ25hY2nDs24nLCBtZW51Q29udGVudDogc3VibWVudUFzaWduYWNpb24gfVxyXG4gICAgICAgIH1cclxuICAgICAgICBnZXRNZW51UmVjZXBjaW9uKGNvbnRleHQ6IENvbnRleHQpOiBNZW51SW5mb0Jhc2Uge1xyXG4gICAgICAgICAgICBsZXQgc3VibWVudVJlY2VwY2lvbjogTWVudUluZm9CYXNlW10gPSBbXVxyXG4gICAgICAgICAgICBzdWJtZW51UmVjZXBjaW9uLnB1c2goXHJcbiAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnZW5jdWVzdGFkb3InLCB0YWJsZTogJ2VuY3Vlc3RhZG9yZXNfYXNpZ25hZG9zJyB9LFxyXG4gICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3JlY3VwZXJhZG9yJywgdGFibGU6ICdyZWN1cGVyYWRvcmVzX2FzaWduYWRvcycgfSxcclxuICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdpbmdyZXNhZG9yJywgdGFibGU6ICdpbmdyZXNhZG9yZXNfYXNpZ25hZG9zJyB9LFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAoY29udGV4dC5wdWVkZT8uY2FtcG8/LmFkbWluaXN0cmFyKSB7XHJcbiAgICAgICAgICAgICAgICBzdWJtZW51UmVjZXBjaW9uLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3N1cGVydmlzb3InLCB0YWJsZTogJ3N1cGVydmlzb3Jlc19hc2lnbmFkb3MnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ21pc19zdXBlcnZpc29yZXMnLCB0YWJsZTogJ21pc19zdXBlcnZpc29yZXNfYXNpZ25hZG9zJyB9XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB7IG1lbnVUeXBlOiAnbWVudScsIG5hbWU6ICdyZWNlcGNpb24nLCBsYWJlbDogJ3JlY2VwY2nDs24nLCBtZW51Q29udGVudDogc3VibWVudVJlY2VwY2lvbiB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBnZXRNZW51Q2FydG8oY29udGV4dDogQ29udGV4dCk6IE1lbnVJbmZvQmFzZSB8IG51bGwge1xyXG4gICAgICAgICAgICBsZXQgc3VibWVudUNhcnRvOiBNZW51SW5mb0Jhc2VbXSA9IFtdXHJcbiAgICAgICAgICAgIGlmIChjb250ZXh0LnB1ZWRlPy5jYW1wbz8uYWRtaW5pc3RyYXIpIHtcclxuICAgICAgICAgICAgICAgIHN1Ym1lbnVDYXJ0by5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdjb211bmFzJywgdGFibGU6ICdjb211bmFzJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdiYXJyaW9zJywgdGFibGU6ICdiYXJyaW9zJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdmcmFjY2lvbmVzJywgdGFibGU6ICdmcmFjY2lvbmVzJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdyYWRpb3MnLCB0YWJsZTogJ3JhZGlvcycgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnbWFuemFuYXMnLCB0YWJsZTogJ21hbnphbmFzJyB9LFxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgbWVudVR5cGU6ICdtZW51JywgbmFtZTogJ2NhcnRvJywgbGFiZWw6ICdjYXJ0b2dyYWbDrWEnLCBtZW51Q29udGVudDogc3VibWVudUNhcnRvIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbFxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZ2V0TWVudUNvbmZpZ3VyYXIoY29udGV4dDogQ29udGV4dCk6IE1lbnVJbmZvQmFzZVtdIHtcclxuICAgICAgICAgICAgY29uc3QgbWVudUNvbmZpZ3VyYXI6IE1lbnVJbmZvQmFzZVtdID0gW107XHJcblxyXG4gICAgICAgICAgICBpZiAoY29udGV4dC5wdWVkZT8uY2FtcG8/LmFkbWluaXN0cmFyIHx8IGNvbnRleHQucHVlZGU/LmVuY3Vlc3Rhcz8ucHJvY2VzYXIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHN1Ym1lbnVNdWVzdHJhOiBNZW51SW5mb0Jhc2VbXSA9IFtcclxuICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAndGVtJywgbGFiZWw6ICdURU0nIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3Byb2MnLCBuYW1lOiAnbXVlc3RyYV9nZW5lcmFyJywgbGFiZWw6ICdnZW5lcmFyIG11ZXN0cmEnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3NlbWFuYXMnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2FyZWFfZW5jX3Byb3hpbWFzJyB9LFxyXG4gICAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgICAgIG1lbnVDb25maWd1cmFyLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgIG1lbnVUeXBlOiAnbWVudScsXHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ211ZXN0cmEnLFxyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnbXVlc3RyYScsXHJcbiAgICAgICAgICAgICAgICAgICAgbWVudUNvbnRlbnQ6IHN1Ym1lbnVNdWVzdHJhXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGNvbnRleHQucHVlZGU/LmNhc2lsbGVyb3NfdGV4dG8/LmVkaXRhcikge1xyXG4gICAgICAgICAgICAgICAgbWVudUNvbmZpZ3VyYXIucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVudVR5cGU6ICdtZW51JyxcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnbWV0YWRhdG9zJyxcclxuICAgICAgICAgICAgICAgICAgICBtZW51Q29udGVudDogW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnb3BlcmF0aXZvcycgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ21lbnUnLCBuYW1lOiAncmVhL25vcmVhJywgbWVudUNvbnRlbnQ6W1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3JlYScgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdub19yZWEnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAncmVhX3N1cCcgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdub19yZWFfc3VwJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBdfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2Zvcm11bGFyaW9zJywgdGFibGU6ICdjYXNpbGxlcm9zX3ByaW5jaXBhbGVzJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAncGxhbm8nLCB0YWJsZTogJ2Nhc2lsbGVyb3MnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICd2YXJpYWJsZXMnLCB0YWJsZTogJ2Nhc2lsbGVyb3MnLCBmYzogW3sgY29sdW1uOiAndmFyX25hbWUnLCBvcGVyYXRvcjogJyE9XFx1MjIwNScsIHZhbHVlOiBudWxsIH1dIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICd0aXBvYycsIGxhYmVsOiAndGlwb3MgZGUgY2VsZGFzJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAndGlwb2NfdGlwb2MnLCBsYWJlbDogJ2luY2x1c2lvbmVzIGRlIGNlbGRhcycgfSxcclxuICAgICAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGNvbnRleHQuc3VwZXJ1c2VyKSB7XHJcbiAgICAgICAgICAgICAgICBtZW51Q29uZmlndXJhci5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVudVR5cGU6ICdtZW51JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2VzdGFkb3NfYWNjaW9uZXNfdGFyZWFzJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdlc3RhZG9zL2FjY2lvbmVzL3RhcmVhcycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lbnVDb250ZW50OiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAndGFyZWFzJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2VzdGFkb3MnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnYWNjaW9uZXMnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnZXN0YWRvc19hY2Npb25lcycgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICd0YXJlYXNfcHJveGltYXMnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdtb21lbnRvc19jb25zaXN0ZW5jaWEnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3BhcmFtZXRyb3MnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ21vZG9zX2RtJyB9LFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGNvbnRleHQucHVlZGU/LmNhbXBvPy5hZG1pbmlzdHJhciB8fCBjb250ZXh0LnB1ZWRlPy5lbmN1ZXN0YXM/LnByb2Nlc2FyKSB7XHJcbiAgICAgICAgICAgICAgICBtZW51Q29uZmlndXJhci5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICBtZW51VHlwZTogJ21lbnUnLFxyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICd1c3VhcmlvcycsXHJcbiAgICAgICAgICAgICAgICAgICAgbWVudUNvbnRlbnQ6IFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3VzdWFyaW9zJywgc2VsZWN0ZWRCeURlZmF1bHQ6IHRydWUgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3JvbGVzJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAncGVybWlzb3MnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdyb2xlc19wZXJtaXNvcycgfSxcclxuICAgICAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuIG1lbnVDb25maWd1cmFyO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gbG9zIG1peGlucyAobWV0YS1lbmMsIHByb2Nlc2FtaWVudG8pIGxvIGRlY2xhcmFuIHNpbiBwYXLDoW1ldHJvcywgcGVybyBiYWNrZW5kLXBsdXMgc2llbXByZSBsbyBsbGFtYSBjb24gY29udGV4dC5cclxuICAgICAgICAvLyBFbCB0aXBvIGRlIHJldG9ybm8gcXVlIGRlY2xhcmEgb3BlcmF0aXZvcyAoTWVudUluZm9bXSkgbm8gYWRtaXRlIGZvcm1hcyBxdWUgYmFja2VuZC1wbHVzIHPDrSBhY2VwdGEgeSBkbWVuY3UgdXNhXHJcbiAgICAgICAgLy8gKGZmIGNvbW8gb2JqZXRvLCBmYyBjb24gY29sdW1uKTsgc2UgZGV2dWVsdmUgTWVudUluZm9CYXNlW10sIHF1ZSBlcyBsbyBxdWUgZGVjbGFyYSBiYWNrZW5kLXBsdXMuXHJcbiAgICAgICAgLy8gUXVpdGFyIGVzdGEgbMOtbmVhIGN1YW5kbyBzZSBjb3JyaWphbiBsb3MgdGlwb3MgZGUgbWVuw7ogZW4gb3BlcmF0aXZvcy9iYWNrZW5kLXBsdXMgKGVsIGNvbXBpbGFkb3IgYXZpc2Egc2kgZGVqYSBkZSBoYWNlciBmYWx0YSkuXHJcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBNZW51RGVmaW5pdGlvbiBkZSBvcGVyYXRpdm9zIG3DoXMgZXN0cmljdG8gcXVlIGVsIGRlIGJhY2tlbmQtcGx1c1xyXG4gICAgICAgIG92ZXJyaWRlIGdldE1lbnUoY29udGV4dD86IENvbnRleHQpIHtcclxuICAgICAgICAgICAgaWYgKGNvbnRleHQgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdnZXRNZW51IGRlIGRtZW5jdSByZXF1aWVyZSBlbCBjb250ZXh0IHBhcmEgYXJtYXIgZWwgbWVuw7ogc2Vnw7puIGxvcyBwZXJtaXNvcycpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCBtZW51OiBNZW51SW5mb0Jhc2VbXSA9IFtdO1xyXG4gICAgICAgICAgICBpZiAoZ2V0TW9kb0J5UG9saWN5KGNvbnRleHQuYmUpID09PSAnUkVMRVZBTUlFTlRPJykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQucHVlZGU/LmVuY3Vlc3Rhcz8ucmVsZXZhcikge1xyXG4gICAgICAgICAgICAgICAgICAgIG1lbnUucHVzaCh7IG1lbnVUeXBlOiAncGF0aCcsIG5hbWU6ICdyZWxldmFtaWVudG8nLCBwYXRoOiAnL2NhbXBvJyB9KVxyXG4gICAgICAgICAgICAgICAgICAgIG1lbnUucHVzaChcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3NpbmNyb25pemFyX2RtJywgbmFtZTogJ3NpbmNyb25pemFyJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAnY2FtYmlhcl9tb2RvX2RtJywgbmFtZTogJ2NhbWJpYXJfbW9kbycgfSxcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQucHVlZGU/LmNhbXBvPy5lZGl0YXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBtZW51LnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0TWVudUFzaWduYWNpb24oY29udGV4dCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0TWVudVJlY2VwY2lvbihjb250ZXh0KVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQucHVlZGU/LmNhbXBvPy5hZG1pbmlzdHJhcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZW51LnB1c2goeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3RhcmVhc190ZW1fZmluX2NhbXBvJywgbGFiZWw6ICdlc3BlcmEgZmluIGRlIGNhbXBvJyB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZW51LnB1c2goeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3RhcmVhc190ZW1fYW5hbGlzaXNfY2FtcG8nLCBsYWJlbDogJ2Fuw6FsaXNpcyBkZSBjYW1wbycgfSlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgbWVudS5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW51VHlwZTogJ21lbnUnLCBuYW1lOiAnc3VwZXJ2aXNpb24nLCBsYWJlbDogJ3N1cGVydmlzacOzbicsIG1lbnVDb250ZW50OiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3N1cGVydmlzYXInLCB0YWJsZTogJ3RhcmVhc190ZW1faW5ncmVzbycsIGZmOiB7IHRhcmVhOiAnc3VwZScsIGFzaWduYWRvOiBjb250ZXh0LnVzZXIuaWRwZXIgfSB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoY29udGV4dC5wdWVkZT8uY2FtcG8/LmVkaXRhciB8fCBjb250ZXh0LnB1ZWRlPy5jYW1wbz8uYWRtaW5pc3RyYXIgfHwgY29udGV4dC5wdWVkZT8uZW5jdWVzdGFzPy5wcm9jZXNhcikge1xyXG4gICAgICAgICAgICAgICAgICAgIG1lbnUucHVzaCh0aGlzLmdldE1lbnVWYXJpb3MoY29udGV4dCkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQucHVlZGU/LmNhbXBvPy5hZG1pbmlzdHJhciB8fCBjb250ZXh0LnB1ZWRlPy5lbmN1ZXN0YXM/LnByb2Nlc2FyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVudS5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAnbWVudScsIG5hbWU6ICdjb250cm9sJywgbWVudUNvbnRlbnQ6IHRoaXMuZ2V0TWVudUNvbnRyb2xlcyhjb250ZXh0KSB9KTtcclxuICAgICAgICAgICAgICAgICAgICAvKnttZW51VHlwZTondGFibGUnLCBuYW1lOidwYXJ0aWNpcGFjaW9uJyAgICAgICAgLCB0YWJsZTonY29udHJvbF9jYW1wb19wYXJ0aWNpcGFjaW9uJyAgfSwqL1xyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LnB1ZWRlPy5lbmN1ZXN0YXM/LnByb2Nlc2FyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVudS5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW51VHlwZTogJ21lbnUnLCBuYW1lOiAncHJvY2VzYXInLCBtZW51Q29udGVudDogW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICd2YXJpYWJsZXMnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3ZhcmlhYmxlc19jdWVzdGlvbmFyaW8nLCB0YWJsZTogJ2Nhc2lsbGVyb3MnLCB0ZDogeyBlZGl0YWJsZTogZmFsc2UsIGFsbG93OiB7IHVwZGF0ZTogZmFsc2UsIGltcG9ydDogZmFsc2UsIGRlbGV0ZTogZmFsc2UsIGluc2VydDogZmFsc2UgfSB9LCBmYzogW3sgY29sdW1uOiAndmFyX25hbWUnLCBvcGVyYXRvcjogJyE9XFx1MjIwNScsIHZhbHVlOiBudWxsIH1dIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2NvbnNpc3RlbmNpYXMnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2NvbnNpc3RlbmNpYXNfY3Vlc3Rpb25hcmlvJywgdGFibGU6ICdjYXNpbGxlcm9zJywgZmY6IHsgdGlwb2M6ICdDT05TJyB9IH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2luY29uc2lzdGVuY2lhcycgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAndGFibGFfZGF0b3MnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2RpY2Npb25hcmlvJywgbGFiZWw6ICdkaWNjaW9uYXJpb3MnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3RhcmVhc190ZW1fcHJvY2VzYW1pZW50bycsIGxhYmVsOiAnZW5jdWVzdGFzJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdCBtZW51Q29uZmlndXJhciA9IHRoaXMuZ2V0TWVudUNvbmZpZ3VyYXIoY29udGV4dCk7XHJcbiAgICAgICAgICAgICAgICBpZiAobWVudUNvbmZpZ3VyYXIubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVudS5wdXNoKHsgbWVudVR5cGU6ICdtZW51JywgbmFtZTogJ2NvbmZpZ3VyYXInLCBtZW51Q29udGVudDogbWVudUNvbmZpZ3VyYXIgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdCBtZW51Q2FydG8gPSB0aGlzLmdldE1lbnVDYXJ0byhjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgIGlmIChtZW51Q2FydG8pIHtcclxuICAgICAgICAgICAgICAgICAgICBtZW51LnB1c2gobWVudUNhcnRvKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGVtYXNWaXNpYmxlcyh0aGlzLmNhY2hlcy5heXVkYSwgcXVpZW5Db25zdWx0YUF5dWRhKGNvbnRleHQpKS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIG1lbnUucHVzaCh7IG1lbnVUeXBlOiAnYXl1ZGEnLCBuYW1lOiAnYXl1ZGEnIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB7IG1lbnUgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgb3ZlcnJpZGUgcHJlcGFyZUdldFRhYmxlcygpIHtcclxuICAgICAgICAgICAgdmFyIGJlID0gdGhpcztcclxuICAgICAgICAgICAgc3VwZXIucHJlcGFyZUdldFRhYmxlcygpO1xyXG4gICAgICAgICAgICB0aGlzLmdldFRhYmxlRGVmaW5pdGlvbiA9IHtcclxuICAgICAgICAgICAgICAgIC4uLnRoaXMuZ2V0VGFibGVEZWZpbml0aW9uXHJcbiAgICAgICAgICAgICAgICAsIHJvbGVzXHJcbiAgICAgICAgICAgICAgICAsIHVzdWFyaW9zXHJcbiAgICAgICAgICAgICAgICAsIHBlcnNvbmFsXHJcbiAgICAgICAgICAgICAgICAsIHJlY2VwY2lvbmlzdGFzXHJcbiAgICAgICAgICAgICAgICAsIGVuY3Vlc3RhZG9yZXNfYXNpZ25hZG9zXHJcbiAgICAgICAgICAgICAgICAsIGluZ3Jlc2Fkb3Jlc19hc2lnbmFkb3NcclxuICAgICAgICAgICAgICAgICwgcmVjdXBlcmFkb3Jlc19hc2lnbmFkb3NcclxuICAgICAgICAgICAgICAgICwgc3VwZXJ2aXNvcmVzX2FzaWduYWRvc1xyXG4gICAgICAgICAgICAgICAgLCBtaXNfc3VwZXJ2aXNvcmVzX2FzaWduYWRvc1xyXG4gICAgICAgICAgICAgICAgLCBtaXNfZW5jdWVzdGFkb3Jlc1xyXG4gICAgICAgICAgICAgICAgLCByZWN1cGVyYWRvcmVzXHJcbiAgICAgICAgICAgICAgICAsIHN1cGVydmlzb3Jlc1xyXG4gICAgICAgICAgICAgICAgLCBwZXJzb25hbF9yb2xcclxuICAgICAgICAgICAgICAgICwgcGVybWlzb3NcclxuICAgICAgICAgICAgICAgICwgcm9sZXNfcGVybWlzb3NcclxuICAgICAgICAgICAgICAgICwgcm9sZXNfc3Vib3JkaW5hZG9zXHJcbiAgICAgICAgICAgICAgICAsIG5vX3JlYVxyXG4gICAgICAgICAgICAgICAgLCBub19yZWFfc3VwXHJcbiAgICAgICAgICAgICAgICAsIHJlYVxyXG4gICAgICAgICAgICAgICAgLCByZWFfc3VwXHJcbiAgICAgICAgICAgICAgICAsIHNlbWFuYXNcclxuICAgICAgICAgICAgICAgICwgZXN0YWRvc1xyXG4gICAgICAgICAgICAgICAgLCBhY2Npb25lc1xyXG4gICAgICAgICAgICAgICAgLCBlc3RhZG9zX2FjY2lvbmVzXHJcbiAgICAgICAgICAgICAgICAsIHRhcmVhc19wcm94aW1hc1xyXG4gICAgICAgICAgICAgICAgLCB0ZW1cclxuICAgICAgICAgICAgICAgICwgaGlzdG9yaWFsX3RlbVxyXG4gICAgICAgICAgICAgICAgLCBtb2Rvc19kbVxyXG4gICAgICAgICAgICAgICAgLCBwYXJhbWV0cm9zXHJcbiAgICAgICAgICAgICAgICAsIG9wZXJhY2lvbmVzXHJcbiAgICAgICAgICAgICAgICAsIGNvbXVuYXNcclxuICAgICAgICAgICAgICAgICwgYXJlYXNcclxuICAgICAgICAgICAgICAgICwgc2luY3Jvbml6YWNpb25lc1xyXG4gICAgICAgICAgICAgICAgLCB0YXJlYXNcclxuICAgICAgICAgICAgICAgICwgdGFyZWFzX3RlbVxyXG4gICAgICAgICAgICAgICAgLCB0YXJlYXNfdGVtX2FzaWduYWNpb25fZW5jdVxyXG4gICAgICAgICAgICAgICAgLCB0YXJlYXNfdGVtX2FzaWduYWNpb25fcmVjdVxyXG4gICAgICAgICAgICAgICAgLCB0YXJlYXNfdGVtX2FzaWduYWNpb25fc3VwZVxyXG4gICAgICAgICAgICAgICAgLCB0YXJlYXNfdGVtX2FzaWduYWNpb25faW5nclxyXG4gICAgICAgICAgICAgICAgLCB0YXJlYXNfYXJlYXNcclxuICAgICAgICAgICAgICAgICwgYXJlYXNfYXNpZ25hY2lvbl9nZW5lcmFsXHJcbiAgICAgICAgICAgICAgICAsIGdyaWxsYV9ob2phX3J1dGFcclxuICAgICAgICAgICAgICAgICwgdF9lbmN1X2FyZWFzXHJcbiAgICAgICAgICAgICAgICAsIHRfcmVjdV9hcmVhc1xyXG4gICAgICAgICAgICAgICAgLCB0X3N1cGVfYXJlYXNcclxuICAgICAgICAgICAgICAgICwgdF9pbmdyX2FyZWFzXHJcbiAgICAgICAgICAgICAgICAsIG1pc190YXJlYXNcclxuICAgICAgICAgICAgICAgICwgdGVtX2FzaWduYWNpb25cclxuICAgICAgICAgICAgICAgICwgdGFyZWFzX3RlbV9yZWNlcGNpb25cclxuICAgICAgICAgICAgICAgICwgdGFyZWFzX3RlbV9pbmdyZXNvXHJcbiAgICAgICAgICAgICAgICAsIHRhcmVhc190ZW1fZmluX2NhbXBvXHJcbiAgICAgICAgICAgICAgICAsIHRhcmVhc190ZW1fcHJvY2VzYW1pZW50b1xyXG4gICAgICAgICAgICAgICAgLCB0YXJlYXNfdGVtX2FuYWxpc2lzX2NhbXBvXHJcbiAgICAgICAgICAgICAgICAsIG1pc190YXJlYXNfYXJlYXNcclxuICAgICAgICAgICAgICAgICwgY29udHJvbF9jYW1wb1xyXG4gICAgICAgICAgICAgICAgLCBjb250cm9sX3Jlc3VtZW5cclxuICAgICAgICAgICAgICAgICwgY29udHJvbF9jYW1wb196b25hOiBjb250ZXh0ID0+IGNvbnRyb2xfY2FtcG8oY29udGV4dCxcclxuICAgICAgICAgICAgICAgICAgICB7IG5vbWJyZTogJ2NvbnRyb2xfY2FtcG9fY29tdW5hJywgdGl0bGU6ICdjb250cm9sIGNhbXBvIHggem9uYSBzb2xvIGNlbWVudG8nLCBjYW1wb3NDb3J0ZTogW3sgbmFtZTogJ3pvbmEnLCB0eXBlTmFtZTogJ3RleHQnIH1dLCBzaW5ob2dmaW46ICFjb250ZXh0LmJlLmNhY2hlcy50YWJsZUNvbnRlbnQuY29uUmVhSG9nYXIuY29uX3JlYV9ob2dhciwgZmlsdHJvV2hlcmU6ICdkb21pbmlvPTMnIH1cclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICwgY29udHJvbF9jYW1wb19jb211bmE6IGNvbnRleHQgPT4gY29udHJvbF9jYW1wbyhjb250ZXh0LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbm9tYnJlOiAnY29udHJvbF9jYW1wb19jb211bmEnLCB0aXRsZTogJ2NvbnRyb2wgY2FtcG8geCBjb211bmEgc29sbyBjZW1lbnRvJywgY2FtcG9zQ29ydGU6IFt7IG5hbWU6ICd6b25hJywgdHlwZU5hbWU6ICd0ZXh0JyB9LCB7IG5hbWU6ICducm9jb211bmEnLCB0eXBlTmFtZTogJ3RleHQnIH1dLCBzaW5ob2dmaW46ICFjb250ZXh0LmJlLmNhY2hlcy50YWJsZUNvbnRlbnQuY29uUmVhSG9nYXIuY29uX3JlYV9ob2dhciwgZmlsdHJvV2hlcmU6ICdkb21pbmlvPTMnIH1cclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICwgY29udHJvbF9jYW1wb19hcmVhOiBjb250ZXh0ID0+IGNvbnRyb2xfY2FtcG8oY29udGV4dCxcclxuICAgICAgICAgICAgICAgICAgICB7IG5vbWJyZTogJ2NvbnRyb2xfY2FtcG9fY29tdW5hJywgdGl0bGU6ICdjb250cm9sIGNhbXBvIHggYXJlYScsIGNhbXBvc0NvcnRlOiBbeyBuYW1lOiAnem9uYScsIHR5cGVOYW1lOiAndGV4dCcgfSwgeyBuYW1lOiAnbnJvY29tdW5hJywgdHlwZU5hbWU6ICd0ZXh0JyB9LCB7IG5hbWU6ICdhcmVhJywgdHlwZU5hbWU6ICdpbnRlZ2VyJyB9LCB7IG5hbWU6ICdwYXJ0aWNpcGFjaW9uX2EnLCB0eXBlTmFtZTogJ3RleHQnIH0sIHsgbmFtZTogJ2NsYXNlX2EnLCB0eXBlTmFtZTogJ3RleHQnIH1dLCBzaW5ob2dmaW46ICFjb250ZXh0LmJlLmNhY2hlcy50YWJsZUNvbnRlbnQuY29uUmVhSG9nYXIuY29uX3JlYV9ob2dhciB9XHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAsIGNvbnRyb2xfY2FtcG9fcGFydGljaXBhY2lvbjogY29udGV4dCA9PiBjb250cm9sX2NhbXBvKGNvbnRleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgeyBub21icmU6ICdjb250cm9sX2NhbXBvX2NvbXVuYScsIHRpdGxlOiAnY29udHJvbCBjYW1wbyB4IHBhcnRpY2lwYWNpb24nLCBjYW1wb3NDb3J0ZTogW3sgbmFtZTogJ3BhcnRpY2lwYWNpb24nLCB0eXBlTmFtZTogJ2JpZ2ludCcgfV0sIHNpbmhvZ2ZpbjogIWNvbnRleHQuYmUuY2FjaGVzLnRhYmxlQ29udGVudC5jb25SZWFIb2dhci5jb25fcmVhX2hvZ2FyIH1cclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICwgY29udHJvbF9jYW1wb19kb21pbmlvOiBjb250ZXh0ID0+IGNvbnRyb2xfY2FtcG8oY29udGV4dCxcclxuICAgICAgICAgICAgICAgICAgICB7IG5vbWJyZTogJ2NvbnRyb2xfY2FtcG9fY29tdW5hJywgdGl0bGU6ICdjb250cm9sIGNhbXBvIHggZG9taW5pbycsIGNhbXBvc0NvcnRlOiBbeyBuYW1lOiAnZG9taW5pbycsIHR5cGVOYW1lOiAnaW50ZWdlcicgfV0sIHNpbmhvZ2ZpbjogIWNvbnRleHQuYmUuY2FjaGVzLnRhYmxlQ29udGVudC5jb25SZWFIb2dhci5jb25fcmVhX2hvZ2FyIH1cclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICwgY29udHJvbF9kaWFzX2NhcmdhXHJcbiAgICAgICAgICAgICAgICAsIHZpdmllbmRhc1xyXG4gICAgICAgICAgICAgICAgLCB2aXNpdGFzXHJcbiAgICAgICAgICAgICAgICAsIGhvZ2FyZXNcclxuICAgICAgICAgICAgICAgICwgcGVyc29uYXNcclxuICAgICAgICAgICAgICAgICwgdmlzaXRhc19zdXBcclxuICAgICAgICAgICAgICAgICwgaG9nYXJlc19zdXBcclxuICAgICAgICAgICAgICAgICwgcGVyc29uYXNfc3VwXHJcbiAgICAgICAgICAgICAgICAsIGRpY2Npb25hcmlvXHJcbiAgICAgICAgICAgICAgICAsIGRpY3ZhclxyXG4gICAgICAgICAgICAgICAgLCBkaWN0cmFcclxuICAgICAgICAgICAgICAgICwgaW5jb25zaXN0ZW5jaWFzX2N1bXBsZW5fY29uZGljaW9uXHJcbiAgICAgICAgICAgICAgICAsIHRlbV9ib3JyYWRhc1xyXG4gICAgICAgICAgICAgICAgLCBiYXJyaW9zXHJcbiAgICAgICAgICAgICAgICAsIGZyYWNjaW9uZXNcclxuICAgICAgICAgICAgICAgICwgcmFkaW9zXHJcbiAgICAgICAgICAgICAgICAsIG1hbnphbmFzXHJcbiAgICAgICAgICAgICAgICAsIGFyZWFfZW5jX3Byb3hpbWFzXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYmUuYXBwZW5kVG9UYWJsZURlZmluaXRpb24oJ2NvbnNpc3RlbmNpYXMnLCBmdW5jdGlvbiAodGFibGVEZWYsIGNvbnRleHQpIHtcclxuICAgICAgICAgICAgICAgIHRhYmxlRGVmLmVkaXRhYmxlID0gdGFibGVEZWYuZWRpdGFibGUgfHwgY29udGV4dD8ucHVlZGU/LmVuY3Vlc3Rhcz8ucHJvY2VzYXI7XHJcbiAgICAgICAgICAgICAgICB0YWJsZURlZi5maWVsZHMuZm9yRWFjaChmdW5jdGlvbiAoZmllbGQpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGQubmFtZSA9PSAnZXJyb3JfY29tcGlsYWNpb24nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZC52aXNpYmxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCcqKioqKioqKioqKiogUVVJVEFSIEVTVE8gZXJyb3JfY29tcGlsYWNpb24geWEgZXMgdmlzaWJsZScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLnZpc2libGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIGJlLmFwcGVuZFRvVGFibGVEZWZpbml0aW9uKCdpbmNvbnNpc3RlbmNpYXMnLCBmdW5jdGlvbiAodGFibGVEZWYsIGNvbnRleHQpIHtcclxuICAgICAgICAgICAgICAgIHRhYmxlRGVmLnNxbCA9IHsgLi4udGFibGVEZWYuc3FsLCBpc1RhYmxlOiB0cnVlIH07XHJcbiAgICAgICAgICAgICAgICB0YWJsZURlZi5maWVsZHMuc3BsaWNlKDIsIDAsXHJcbiAgICAgICAgICAgICAgICAgICAgeyBuYW1lOiAndml2aWVuZGEnLCB0eXBlTmFtZTogJ3RleHQnLCBlZGl0YWJsZTogZmFsc2UgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IG5hbWU6ICdob2dhcicsIHR5cGVOYW1lOiAnYmlnaW50JywgZWRpdGFibGU6IGZhbHNlIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBuYW1lOiAncGVyc29uYScsIHR5cGVOYW1lOiAnYmlnaW50JywgZWRpdGFibGU6IGZhbHNlIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBuYW1lOiAndmlzaXRhJywgdHlwZU5hbWU6ICdiaWdpbnQnLCBlZGl0YWJsZTogZmFsc2UgfSxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB0YWJsZURlZi5lZGl0YWJsZSA9IHRhYmxlRGVmLmVkaXRhYmxlIHx8IGNvbnRleHQ/LnB1ZWRlPy5lbmN1ZXN0YXM/Lmp1c3RpZmljYXI7XHJcbiAgICAgICAgICAgICAgICB0YWJsZURlZi5maWVsZHMuZm9yRWFjaChmdW5jdGlvbiAoZmllbGQpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGQubmFtZSA9PSAncGtfaW50ZWdyYWRhJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC52aXNpYmxlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZC5uYW1lID09ICdqdXN0aWZpY2FjaW9uJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5lZGl0YWJsZSA9IGNvbnRleHQ/LmZvckR1bXAgfHwgY29udGV4dD8ucHVlZGU/LmVuY3Vlc3Rhcz8uanVzdGlmaWNhcjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgdGFibGVEZWYuZmllbGRzID0gdGFibGVEZWYuZmllbGRzLmNvbmNhdChbJ3RhcmVhX2FjdHVhbCcsICd0YXJlYV9hbnRlcmlvciddLm1hcChmbiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgbmFtZTogZm4sIHR5cGVOYW1lOiAndGV4dCcsIGVkaXRhYmxlOiBmYWxzZSwgaW5UYWJsZTogZmFsc2UgfVxyXG4gICAgICAgICAgICAgICAgfSkpXHJcbiAgICAgICAgICAgICAgICAvL3NhY2FyIGNhbXBvcyBkZSB2aXRhbGVzISBcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlZ0V4cEZpZWxkc1ZpdGEgPSBuZXcgUmVnRXhwKCdeKGNvbXB8aW5mZXxjb2RfY2F1c2F8ZG9taSkkJyk7XHJcbiAgICAgICAgICAgICAgICB0YWJsZURlZi5maWVsZHMgPSB0YWJsZURlZi5maWVsZHMuZmlsdGVyKGYgPT4gIShyZWdFeHBGaWVsZHNWaXRhLnRlc3QoZi5uYW1lKSkpXHJcblxyXG4gICAgICAgICAgICAgICAgdmFyIHFfaW5jb25zaXN0ID0gdGFibGVEZWYuc3FsIS5mcm9tXHJcbiAgICAgICAgICAgICAgICB0YWJsZURlZi5zcWwhLmZyb20gPSBgXHJcbiAgICAgICAgICAgICAgICAoc2VsZWN0IGkuKiwgdC50YXJlYV9hY3R1YWwsIHRhcmVhX2FudGVyaW9yXHJcbiAgICAgICAgICAgICAgICAgIGZyb20gJHtxX2luY29uc2lzdH0gaSBcclxuICAgICAgICAgICAgICAgICAgam9pbiB0ZW0gdCBvbiBpLnZpdmllbmRhPXQuZW5jIGFuZCBpLm9wZXJhdGl2bz10Lm9wZXJhdGl2byBcclxuICAgICAgICAgICAgICAgICAgbGVmdCBqb2luIHRhcmVhc190ZW0gdHQgb24gdC5vcGVyYXRpdm89dHQub3BlcmF0aXZvIGFuZCB0LmVuYz10dC5lbmMgYW5kIHQudGFyZWFfYWN0dWFsPXR0LnRhcmVhIFxyXG4gICAgICAgICAgICAgICAgICBsZWZ0IGpvaW4gbGF0ZXJhbCAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdCB0YXJlYSBhcyB0YXJlYV9hbnRlcmlvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSBoaXN0b3JpYWxfdGVtIGh0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVyZSB0Lm9wZXJhdGl2byA9IGh0Lm9wZXJhdGl2byBhbmQgdC5lbmMgPSBodC5lbmNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyIGJ5IHRzX3NhbGlkYSBkZXNjXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdCAxXHJcbiAgICAgICAgICAgICAgICAgICAgKSBhcyB0YSBvbiB0cnVlXHJcbiAgICAgICAgICAgICAgICApICAgXHJcbiAgICAgICAgICAgIGBcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgYmUuYXBwZW5kVG9UYWJsZURlZmluaXRpb24oJ29wZXJhdGl2b3MnLCBmdW5jdGlvbiAodGFibGVEZWYsIGNvbnRleHQpIHtcclxuICAgICAgICAgICAgICAgIHRhYmxlRGVmLmZpZWxkcy5zcGxpY2UoMiwgMCwge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdjb25maWdfc29ydGVvJyxcclxuICAgICAgICAgICAgICAgICAgICB0eXBlTmFtZTogJ2pzb25iJyxcclxuICAgICAgICAgICAgICAgICAgICBlZGl0YWJsZTogZmFsc2VcclxuICAgICAgICAgICAgICAgIH0sIHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnaGFiaWxpdGFjaW9uX2JvdG9uX2Zvcm11bGFyaW8nLFxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGVOYW1lOiAnanNvbmInLFxyXG4gICAgICAgICAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgfSwge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdkaXNmb3JtX2NlcnJhZG8nLFxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGVOYW1lOiAnYm9vbGVhbicsXHJcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICBlZGl0YWJsZTogY29udGV4dD8uZm9yRHVtcCB8fCBjb250ZXh0ICE9IG51bGwgJiYgWydhZG1pbicsICdkaXNfY29uY2VwdHVhbCddLmluY2x1ZGVzKGNvbnRleHQudXNlci5yb2wpXHJcbiAgICAgICAgICAgICAgICB9LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2Nvbl9yZWFfaG9nYXInLFxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGVOYW1lOiAnYm9vbGVhbicsXHJcbiAgICAgICAgICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHREYlZhbHVlOiAndHJ1ZSdcclxuICAgICAgICAgICAgICAgIH0sIHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAncGVybWl0ZV9nZW5lcmFyX211ZXN0cmEnLFxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGVOYW1lOiAnYm9vbGVhbicsXHJcbiAgICAgICAgICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHREYlZhbHVlOiAnZmFsc2UnXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgYmUuYXBwZW5kVG9UYWJsZURlZmluaXRpb24oJ3ZhcmlhYmxlcycsIGZ1bmN0aW9uICh0YWJsZURlZiwgY29udGV4dCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGVzQWRtaW4gPSBjb250ZXh0Py51c2VyLnJvbCA9PT0gJ2FkbWluJztcclxuICAgICAgICAgICAgICAgIHRhYmxlRGVmLmVkaXRhYmxlID0gdGFibGVEZWYuZWRpdGFibGUgfHwgY29udGV4dD8ucHVlZGU/LmVuY3Vlc3Rhcz8ucHJvY2VzYXI7XHJcbiAgICAgICAgICAgICAgICB0YWJsZURlZi5hbGxvdyA9IHsgZGVsZXRlOiBlc0FkbWluIH07XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIGJlLmFwcGVuZFRvVGFibGVEZWZpbml0aW9uKCdtb21lbnRvc19jb25zaXN0ZW5jaWEnLCBmdW5jdGlvbiAodGFibGVEZWYsIF9jb250ZXh0KSB7XHJcbiAgICAgICAgICAgICAgICB0YWJsZURlZi5maWVsZHMucHVzaChcclxuICAgICAgICAgICAgICAgICAgICB7IG5hbWU6ICdjb25kaWNpb24nLCB0eXBlTmFtZTogJ3RleHQnLCBudWxsYWJsZTogZmFsc2UsIGRlZmF1bHREYlZhbHVlOiAndHJ1ZScgfSxcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICAgIGJlLmFwcGVuZFRvVGFibGVEZWZpbml0aW9uKCdwYXJhbWV0cm9zJywgZnVuY3Rpb24gKHRhYmxlRGVmKSB7XHJcbiAgICAgICAgICAgICAgICB0YWJsZURlZi5maWVsZHMucHVzaChcclxuICAgICAgICAgICAgICAgICAgICB7IG5hbWU6ICdtb2RvX2RtX2RlZmVjdG8nLCB0eXBlTmFtZTogJ3RleHQnLCBlZGl0YWJsZTogdHJ1ZSwgbnVsbGFibGU6IGZhbHNlLCBkZWZhdWx0RGJWYWx1ZTogXCInY2FwYSdcIiB9LFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHRhYmxlRGVmLmZvcmVpZ25LZXlzID0gdGFibGVEZWYuZm9yZWlnbktleXMgfHwgW107XHJcbiAgICAgICAgICAgICAgICB0YWJsZURlZi5mb3JlaWduS2V5cy5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgIHsgcmVmZXJlbmNlczogJ21vZG9zX2RtJywgZmllbGRzOiBbeyBzb3VyY2U6ICdtb2RvX2RtX2RlZmVjdG8nLCB0YXJnZXQ6ICdtb2RvX2RtJyB9XSB9XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IHZhciBBcHBEbUVuY3UgPSBlbWVyZ2VBcHBEbUVuY3UoZW1lcmdlQXBwUHJvY2VzYW1pZW50byhlbWVyZ2VBcHBDb25zaXN0ZW5jaWFzKGVtZXJnZUFwcFZhckNhbChlbWVyZ2VBcHBEYXRvc0V4dChlbWVyZ2VBcHBPcGVyYXRpdm9zKEFwcEJhY2tlbmQpKSkpKSk7XHJcbmV4cG9ydCB0eXBlIEFwcEFwcERtRW5jdVR5cGUgPSBJbnN0YW5jZVR5cGU8dHlwZW9mIEFwcERtRW5jdT47Il19
1058
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWRtZW5jdS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2ZXIvYXBwLWRtZW5jdS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBLFlBQVksQ0FBQzs7O0lBc0hiLDBDQUVDO0lBR0Qsb0RBYUM7SUFHRCxnREFPQztJQXdCRCxrRkFnQkM7SUFpRUQsMENBNjRCQztJQXJvQ0QsaURBQTRMO0lBQzVMLDJEQUE2RTtJQUM3RSxtQ0FBNEg7SUFFNUgsd0NBQXdDO0lBQ3hDLHdDQUF3QztJQVV4QywyQ0FBa0Q7SUFFbEQsNkJBQTZCO0lBRTdCLG1DQUFtQztJQUVuQywyQkFBb0M7SUFDcEMsNkJBQTZCO0lBRTdCLCtDQUFzQztJQUN0QyxxREFBNEM7SUFDNUMsaUVBQXdEO0lBQ3hELCtEQUF3RjtJQUN4RiwrREFBZ0U7SUFDaEUsK0RBQStEO0lBQy9ELCtEQUFtRTtJQUNuRSx1RUFBOEQ7SUFDOUQsK0RBQXNEO0lBQ3RELDZEQUFvRDtJQUNwRCw2REFBb0Q7SUFDcEQscURBQTRDO0lBQzVDLGlFQUF3RDtJQUN4RCxxREFBNEM7SUFDNUMseURBQWdEO0lBQ2hELHlFQUFnRTtJQUVoRSxpREFBd0M7SUFDeEMseURBQWdEO0lBQ2hELDJDQUFrQztJQUNsQyxtREFBMEM7SUFDMUMsMkNBQWtDO0lBQ2xDLG1EQUEwQztJQUMxQyxxREFBNEM7SUFDNUMsMkRBQWtEO0lBQ2xELG1EQUEwQztJQUMxQywrQ0FBc0M7SUFDdEMscUVBQTREO0lBQzVELGlEQUF3QztJQUN4Qyx5REFNNEI7SUFDNUIsNkRBQW9EO0lBQ3BELHFGQUE0RTtJQUM1RSxxRUFBNEQ7SUFDNUQsNkRBQW9EO0lBQ3BELDZEQUFvRDtJQUNwRCw2REFBb0Q7SUFDcEQsNkRBQW9EO0lBQ3BELHlEQUFnRDtJQUNoRCxpRUFBd0Q7SUFDeEQsMkRBQWtEO0lBQ2xELDZFQUFvRTtJQUNwRSx5RUFBZ0U7SUFDaEUsNkVBQW9F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QUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsQ0FDM0csQ0FBQztvQkFDRixRQUFRLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO29CQUNsRCxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FDckIsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQ3pGLENBQUM7Z0JBQ04sQ0FBQyxDQUFDLENBQUE7WUFDTixDQUFDO1NBQ0osQ0FBQTtJQUNMLENBQUM7SUFFVSxRQUFBLFNBQVMsR0FBRyxlQUFlLENBQUMsSUFBQSxzQ0FBc0IsRUFBQyxJQUFBLHNDQUFzQixFQUFDLElBQUEsK0JBQWUsRUFBQyxJQUFBLGlDQUFpQixFQUFDLElBQUEsbUNBQW1CLEVBQUMsMEJBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xyXG5cclxuaW1wb3J0ICogYXMgcHJvY2VzYW1pZW50byBmcm9tIFwicHJvY2VzYW1pZW50b1wiO1xyXG5pbXBvcnQgeyBlbWVyZ2VBcHBQcm9jZXNhbWllbnRvLCBlbWVyZ2VBcHBDb25zaXN0ZW5jaWFzLCBlbWVyZ2VBcHBWYXJDYWwsIGVtZXJnZUFwcERhdG9zRXh0LCBlbWVyZ2VBcHBPcGVyYXRpdm9zLCBBcHBCYWNrZW5kLCBDbGllbnRNb2R1bGVEZWZpbml0aW9uLCBPcHRzQ2xpZW50UGFnZSB9IGZyb20gXCJwcm9jZXNhbWllbnRvXCI7XHJcbmltcG9ydCB7IHBhc2FyRW5jdWVzdGFzQVByb2llLCBQcm9jZWR1cmVzRG1FbmN1IH0gZnJvbSBcIi4vcHJvY2VkdXJlcy1kbWVuY3VcIjtcclxuaW1wb3J0IHsgY2FyZ2FyQXl1ZGEsIGNhcnBldGFEZWxQYXF1ZXRlLCBwcm9ibGVtYXNEZUF5dWRhLCBRdWllbkNvbnN1bHRhQXl1ZGEsIHJ1dGFzRGVsTWVudSwgdGVtYXNWaXNpYmxlcyB9IGZyb20gXCIuL2F5dWRhXCI7XHJcblxyXG5pbXBvcnQgKiBhcyBwZyBmcm9tIFwicGctcHJvbWlzZS1zdHJpY3RcIjtcclxuaW1wb3J0ICogYXMgbWluaVRvb2xzIGZyb20gXCJtaW5pLXRvb2xzXCI7XHJcbmltcG9ydCB7XHJcbiAgICBBeXVkYUZ1ZW50ZSxcclxuICAgIENsaWVudCwgQ29udGV4dCwgQ29yZUZ1bmN0aW9uUGFyYW1ldGVycyxcclxuICAgIE1lbnVJbmZvQmFzZSxcclxuICAgIFB1ZWRlLFxyXG4gICAgUmVxdWVzdCwgUmVzcG9uc2UsXHJcbiAgICBTdWZpam9zQW1iaWVudGUsXHJcbn0gZnJvbSBcIi4vdHlwZXMtZG1lbmN1XCI7XHJcblxyXG5pbXBvcnQgeyBleHBlY3RlZCwgdW5leHBlY3RlZCB9IGZyb20gXCJjYXN0LWVycm9yXCI7XHJcblxyXG5pbXBvcnQgKiBhcyB5YXpsIGZyb20gXCJ5YXpsXCI7XHJcbmltcG9ydCB7IE5leHRGdW5jdGlvbiB9IGZyb20gXCJleHByZXNzLXNlcnZlLXN0YXRpYy1jb3JlXCI7XHJcbmltcG9ydCAqIGFzIGV4cHJlc3MgZnJvbSBcImV4cHJlc3NcIjtcclxuXHJcbmltcG9ydCB7IHByb21pc2VzIGFzIGZzIH0gZnJvbSBcImZzXCI7XHJcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcclxuXHJcbmltcG9ydCB7IHJvbGVzIH0gZnJvbSBcIi4vdGFibGUtcm9sZXNcIjtcclxuaW1wb3J0IHsgcGVyc29uYWwgfSBmcm9tIFwiLi90YWJsZS1wZXJzb25hbFwiO1xyXG5pbXBvcnQgeyByZWNlcGNpb25pc3RhcyB9IGZyb20gXCIuL3RhYmxlLXJlY2VwY2lvbmlzdGFzXCI7XHJcbmltcG9ydCB7IGVuY3Vlc3RhZG9yZXNfYXNpZ25hZG9zLCBpbmdyZXNhZG9yZXNfYXNpZ25hZG9zIH0gZnJvbSBcIi4vdGFibGUtZW5jdWVzdGFkb3Jlc1wiO1xyXG5pbXBvcnQgeyByZWN1cGVyYWRvcmVzX2FzaWduYWRvcyB9IGZyb20gXCIuL3RhYmxlLWVuY3Vlc3RhZG9yZXNcIjtcclxuaW1wb3J0IHsgc3VwZXJ2aXNvcmVzX2FzaWduYWRvcyB9IGZyb20gXCIuL3RhYmxlLWVuY3Vlc3RhZG9yZXNcIjtcclxuaW1wb3J0IHsgbWlzX3N1cGVydmlzb3Jlc19hc2lnbmFkb3MgfSBmcm9tIFwiLi90YWJsZS1lbmN1ZXN0YWRvcmVzXCI7XHJcbmltcG9ydCB7IG1pc19lbmN1ZXN0YWRvcmVzIH0gZnJvbSBcIi4vdGFibGUtbWlzX2VuY3Vlc3RhZG9yZXNcIjtcclxuaW1wb3J0IHsgcmVjdXBlcmFkb3JlcyB9IGZyb20gXCIuL3RhYmxlLXJlY3VwZXJhZG9yZXNcIjtcclxuaW1wb3J0IHsgc3VwZXJ2aXNvcmVzIH0gZnJvbSBcIi4vdGFibGUtc3VwZXJ2aXNvcmVzXCI7XHJcbmltcG9ydCB7IHBlcnNvbmFsX3JvbCB9IGZyb20gXCIuL3RhYmxlLXBlcnNvbmFsX3JvbFwiO1xyXG5pbXBvcnQgeyBwZXJtaXNvcyB9IGZyb20gXCIuL3RhYmxlLXBlcm1pc29zXCI7XHJcbmltcG9ydCB7IHJvbGVzX3Blcm1pc29zIH0gZnJvbSBcIi4vdGFibGUtcm9sZXNfcGVybWlzb3NcIjtcclxuaW1wb3J0IHsgbW9kb3NfZG0gfSBmcm9tIFwiLi90YWJsZS1tb2Rvc19kbVwiO1xyXG5pbXBvcnQgeyBwYXJhbWV0cm9zIH0gZnJvbSBcIi4vdGFibGUtcGFyYW1ldHJvc1wiO1xyXG5pbXBvcnQgeyByb2xlc19zdWJvcmRpbmFkb3MgfSBmcm9tIFwiLi90YWJsZS1yb2xlc19zdWJvcmRpbmFkb3NcIjtcclxuXHJcbmltcG9ydCB7IG5vX3JlYSB9IGZyb20gXCIuL3RhYmxlLW5vX3JlYVwiO1xyXG5pbXBvcnQgeyBub19yZWFfc3VwIH0gZnJvbSBcIi4vdGFibGUtbm9fcmVhX3N1cFwiO1xyXG5pbXBvcnQgeyByZWEgfSBmcm9tIFwiLi90YWJsZS1yZWFcIjtcclxuaW1wb3J0IHsgcmVhX3N1cCB9IGZyb20gXCIuL3RhYmxlLXJlYV9zdXBcIjtcclxuaW1wb3J0IHsgdGVtIH0gZnJvbSBcIi4vdGFibGUtdGVtXCI7XHJcbmltcG9ydCB7IHNlbWFuYXMgfSBmcm9tIFwiLi90YWJsZS1zZW1hbmFzXCI7XHJcbmltcG9ydCB7IHVzdWFyaW9zIH0gZnJvbSAnLi90YWJsZS11c3Vhcmlvcyc7XHJcbmltcG9ydCB7IG9wZXJhY2lvbmVzIH0gZnJvbSAnLi90YWJsZS1vcGVyYWNpb25lcyc7XHJcbmltcG9ydCB7IGNvbXVuYXMgfSBmcm9tICcuL3RhYmxlLWNvbXVuYXMnO1xyXG5pbXBvcnQgeyBhcmVhcyB9IGZyb20gJy4vdGFibGUtYXJlYXMnO1xyXG5pbXBvcnQgeyBzaW5jcm9uaXphY2lvbmVzIH0gZnJvbSAnLi90YWJsZS1zaW5jcm9uaXphY2lvbmVzJztcclxuaW1wb3J0IHsgdGFyZWFzIH0gZnJvbSAnLi90YWJsZS10YXJlYXMnO1xyXG5pbXBvcnQge1xyXG4gICAgdGFyZWFzX3RlbSxcclxuICAgIHRhcmVhc190ZW1fYXNpZ25hY2lvbl9lbmN1LFxyXG4gICAgdGFyZWFzX3RlbV9hc2lnbmFjaW9uX3JlY3UsXHJcbiAgICB0YXJlYXNfdGVtX2FzaWduYWNpb25fc3VwZSxcclxuICAgIHRhcmVhc190ZW1fYXNpZ25hY2lvbl9pbmdyXHJcbn0gZnJvbSAnLi90YWJsZS10YXJlYXNfdGVtJztcclxuaW1wb3J0IHsgdGFyZWFzX2FyZWFzIH0gZnJvbSAnLi90YWJsZS10YXJlYXNfYXJlYXMnO1xyXG5pbXBvcnQgeyBhcmVhc19hc2lnbmFjaW9uX2dlbmVyYWwgfSBmcm9tICcuL3RhYmxlLWFyZWFzX2FzaWduYWNpb25fZ2VuZXJhbCc7XHJcbmltcG9ydCB7IGdyaWxsYV9ob2phX3J1dGEgfSBmcm9tICcuL3RhYmxlLWdyaWxsYV9ob2phX3J1dGEnO1xyXG5pbXBvcnQgeyB0X2VuY3VfYXJlYXMgfSBmcm9tICcuL3RhYmxlLXRhcmVhc19hcmVhcyc7XHJcbmltcG9ydCB7IHRfcmVjdV9hcmVhcyB9IGZyb20gJy4vdGFibGUtdGFyZWFzX2FyZWFzJztcclxuaW1wb3J0IHsgdF9zdXBlX2FyZWFzIH0gZnJvbSAnLi90YWJsZS10YXJlYXNfYXJlYXMnO1xyXG5pbXBvcnQgeyB0X2luZ3JfYXJlYXMgfSBmcm9tICcuL3RhYmxlLXRhcmVhc19hcmVhcyc7XHJcbmltcG9ydCB7IG1pc190YXJlYXMgfSBmcm9tICcuL3RhYmxlLW1pc190YXJlYXMnO1xyXG5pbXBvcnQgeyB0ZW1fYXNpZ25hY2lvbiB9IGZyb20gJy4vdGFibGUtdGVtX2FzaWduYWNpb24nO1xyXG5pbXBvcnQgeyB0ZW1fZWRpY2lvbiB9IGZyb20gJy4vdGFibGUtdGVtX2VkaWNpb24nO1xyXG5pbXBvcnQgeyB0YXJlYXNfdGVtX3JlY2VwY2lvbiB9IGZyb20gJy4vdGFibGUtdGFyZWFzX3RlbV9yZWNlcGNpb24nO1xyXG5pbXBvcnQgeyB0YXJlYXNfdGVtX2luZ3Jlc28gfSBmcm9tICcuL3RhYmxlLXRhcmVhc190ZW1faW5ncmVzbyc7XHJcbmltcG9ydCB7IHRhcmVhc190ZW1fZmluX2NhbXBvIH0gZnJvbSAnLi90YWJsZS10YXJlYXNfdGVtX2Zpbl9jYW1wbyc7XHJcbmltcG9ydCB7IHRhcmVhc190ZW1fcHJvY2VzYW1pZW50byB9IGZyb20gJy4vdGFibGUtdGFyZWFzX3RlbV9wcm9jZXNhbWllbnRvJztcclxuaW1wb3J0IHsgdGFyZWFzX3RlbV9hbmFsaXNpc19jYW1wbyB9IGZyb20gJy4vdGFibGUtdGFyZWFzX3RlbV9hbmFsaXNpc19jYW1wbyc7XHJcbmltcG9ydCB7IG1pc190YXJlYXNfYXJlYXMgfSBmcm9tICcuL3RhYmxlLW1pc190YXJlYXNfYXJlYXMnO1xyXG5pbXBvcnQgeyBjb250cm9sX2NhbXBvIH0gZnJvbSAnLi90YWJsZS1jb250cm9sX2NhbXBvJztcclxuaW1wb3J0IHsgY29udHJvbF9yZXN1bWVuIH0gZnJvbSAnLi90YWJsZS1jb250cm9sX3Jlc3VtZW4nO1xyXG5pbXBvcnQgeyBjb250cm9sX2RpYXNfY2FyZ2EgfSBmcm9tICcuL3RhYmxlLWNvbnRyb2xfZGlhc19jYXJnYSc7XHJcbmltcG9ydCB7IHZpdmllbmRhcyB9IGZyb20gJy4vdGFibGUtdml2aWVuZGFzJztcclxuaW1wb3J0IHsgdmlzaXRhcyB9IGZyb20gJy4vdGFibGUtdmlzaXRhcyc7XHJcbmltcG9ydCB7IGhvZ2FyZXMgfSBmcm9tICcuL3RhYmxlLWhvZ2FyZXMnO1xyXG5pbXBvcnQgeyBwZXJzb25hcyB9IGZyb20gJy4vdGFibGUtcGVyc29uYXMnO1xyXG5pbXBvcnQgeyB2aXNpdGFzX3N1cCB9IGZyb20gJy4vdGFibGUtdmlzaXRhc19zdXAnO1xyXG5pbXBvcnQgeyBob2dhcmVzX3N1cCB9IGZyb20gJy4vdGFibGUtaG9nYXJlc19zdXAnO1xyXG5pbXBvcnQgeyBwZXJzb25hc19zdXAgfSBmcm9tICcuL3RhYmxlLXBlcnNvbmFzX3N1cCc7XHJcbmltcG9ydCB7IGRpY2Npb25hcmlvIH0gZnJvbSAnLi90YWJsZS1kaWNjaW9uYXJpbyc7XHJcbmltcG9ydCB7IGRpY3RyYSB9IGZyb20gJy4vdGFibGUtZGljdHJhJztcclxuaW1wb3J0IHsgZGljdmFyIH0gZnJvbSAnLi90YWJsZS1kaWN2YXInO1xyXG5cclxuaW1wb3J0IHsgZXN0YWRvcyB9IGZyb20gJy4vdGFibGUtZXN0YWRvcyc7XHJcbmltcG9ydCB7IGFjY2lvbmVzIH0gZnJvbSAnLi90YWJsZS1hY2Npb25lcyc7XHJcbmltcG9ydCB7IGVzdGFkb3NfYWNjaW9uZXMgfSBmcm9tICcuL3RhYmxlLWVzdGFkb3NfYWNjaW9uZXMnO1xyXG5pbXBvcnQgeyB0YXJlYXNfcHJveGltYXMgfSBmcm9tICcuL3RhYmxlLXRhcmVhc19wcm94aW1hcyc7XHJcbmltcG9ydCB7IGhpc3RvcmlhbF90ZW0gfSBmcm9tICcuL3RhYmxlLWhpc3RvcmlhbF90ZW0nO1xyXG5pbXBvcnQgeyBpbmNvbnNpc3RlbmNpYXNfY3VtcGxlbl9jb25kaWNpb24gfSBmcm9tICcuL3RhYmxlLWluY29uc2lzdGVuY2lhc19jdW1wbGVuX2NvbmRpY2lvbic7XHJcbmltcG9ydCB7IHRlbV9ib3JyYWRhcyB9IGZyb20gJy4vdGFibGUtdGVtX2JvcnJhZGFzJztcclxuaW1wb3J0IHsgYmFycmlvcyB9IGZyb20gXCIuL3RhYmxlLWJhcnJpb3NcIjtcclxuaW1wb3J0IHsgZnJhY2Npb25lcyB9IGZyb20gXCIuL3RhYmxlLWZyYWNjaW9uZXNcIjtcclxuaW1wb3J0IHsgcmFkaW9zIH0gZnJvbSBcIi4vdGFibGUtcmFkaW9zXCI7XHJcbmltcG9ydCB7IG1hbnphbmFzIH0gZnJvbSBcIi4vdGFibGUtbWFuemFuYXNcIjtcclxuaW1wb3J0IHsgYXJlYV9lbmNfcHJveGltYXMgfSBmcm9tIFwiLi90YWJsZS1hcmVhX2VuY19wcm94aW1hc1wiO1xyXG5cclxuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXMtZG1lbmN1XCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2F5dWRhXCI7XHJcbmltcG9ydCB7IGRlZkNvbmZpZyB9IGZyb20gXCIuL2RlZi1jb25maWdcIlxyXG5pbXBvcnQgeyBQcm9jZWR1cmVEZWYgfSBmcm9tIFwiYmFja2VuZC1wbHVzXCI7XHJcbmltcG9ydCB7IHRhYmxlIH0gZnJvbSBcImNvbnNvbGVcIjtcclxuXHJcbmltcG9ydCB7IGRhdGV0aW1lIH0gZnJvbSBcImJlc3QtZ2xvYmFsc1wiO1xyXG5pbXBvcnQgeyBQcm9jZWR1cmVDb250ZXh0IH0gZnJvbSBcImJhY2tlbmQtcGx1c1wiO1xyXG5cclxuXHJcbmNvbnN0IEFQUF9ETV9WRVJTSU9OID0gXCIjMjItMTItMTVcIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRNb2RvQnlQb2xpY3koYmU6IEFwcEJhY2tlbmQpIHtcclxuICAgIHJldHVybiBiZS5jb25maWcuc2VydmVyLnBvbGljeSA9PSAnd2ViJyA/ICdSRUxFVkFNSUVOVE8nIDogJ0dBQklORVRFJztcclxufVxyXG5cclxuLy8gcGVybWlzb3MgcXVlIGdldENvbnRleHQgYWdyZWdhIGFsIGNvbnRleHRvIHNlZ8O6biBlbCB1c3VhcmlvIGxvZ3VlYWRvIChvIGxhIGZhbHRhIGRlIHVzdWFyaW8pXHJcbmV4cG9ydCBmdW5jdGlvbiBwZXJtaXNvc1NlZ3VuVXN1YXJpbyhcclxuICAgIGNhY2hlczogUGljazxBcHBCYWNrZW5kWydjYWNoZXMnXSwgJ3Blcm1pc29zUm9sJyB8ICdwZXJtaXNvc1N1cGVydXNlcicgfCAncGVybWlzb3NQYXJhTmFkaWUnPixcclxuICAgIHVzZXI6IENvbnRleHRbJ3VzZXInXSB8IHVuZGVmaW5lZFxyXG4pOiB7IHN1cGVydXNlcj86IHRydWUsIHB1ZWRlPzogUHVlZGUgfSB7XHJcbiAgICBpZiAodXNlciA9PSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIHsgcHVlZGU6IGNhY2hlcy5wZXJtaXNvc1BhcmFOYWRpZSB9O1xyXG4gICAgfVxyXG4gICAgdmFyIHJvbCA9IHVzZXIucm9sO1xyXG4gICAgdmFyIHBlcm1pc29zRGVsUm9sID0gcm9sICE9IG51bGwgPyBjYWNoZXMucGVybWlzb3NSb2xbcm9sXSA6IHVuZGVmaW5lZDtcclxuICAgIGlmIChwZXJtaXNvc0RlbFJvbD8uc3VwZXJ1c2VyKSB7XHJcbiAgICAgICAgcmV0dXJuIHsgc3VwZXJ1c2VyOiB0cnVlLCBwdWVkZTogY2FjaGVzLnBlcm1pc29zU3VwZXJ1c2VyIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4geyBwdWVkZTogcGVybWlzb3NEZWxSb2w/LnB1ZWRlIH07XHJcbn1cclxuXHJcbi8vIGxvIHF1ZSBkZWNpZGUgcXXDqSB0ZW1hcyBkZSBheXVkYSB2ZSBlbCB1c3VhcmlvOiBzdSByb2wsIHN1cyBwZXJtaXNvcyB5IGVsIG1vZG8gZGUgbGEgaW5zdGFuY2lhXHJcbmV4cG9ydCBmdW5jdGlvbiBxdWllbkNvbnN1bHRhQXl1ZGEoY29udGV4dDogQ29udGV4dCk6IFF1aWVuQ29uc3VsdGFBeXVkYSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHJvbDogY29udGV4dC51c2VyPy5yb2wgPz8gbnVsbCxcclxuICAgICAgICBzdXBlcnVzZXI6ICEhY29udGV4dC5zdXBlcnVzZXIsXHJcbiAgICAgICAgcHVlZGU6IGNvbnRleHQucHVlZGUsXHJcbiAgICAgICAgbW9kbzogZ2V0TW9kb0J5UG9saWN5KGNvbnRleHQuYmUpLFxyXG4gICAgfTtcclxufVxyXG5cclxuLy8gbG8gcXVlIHVzYW4gcmVmcmVzaENhY2hlcyB5IHJlZnJlc2NhckVzdHJ1Y3R1cmFBbE1vZGlmaWNhclRhYmxhIGRlbCBjbGllbnRlIGRlIGJhc2UgKGVsIENsaWVudCBkZSBwZy1wcm9taXNlLXN0cmljdCBsbyBjdW1wbGUpXHJcbmV4cG9ydCB0eXBlIENvbnN1bHRhRGIgPSB7XHJcbiAgICBmZXRjaEFsbCgpOiBQcm9taXNlPHBnLlJlc3VsdFJvd3M+XHJcbiAgICBmZXRjaFVuaXF1ZVJvdygpOiBQcm9taXNlPHBnLlJlc3VsdE9uZVJvdz5cclxufVxyXG5leHBvcnQgdHlwZSBDbGllbnRlRGIgPSB7XHJcbiAgICBxdWVyeShzcWw6IHN0cmluZyk6IENvbnN1bHRhRGJcclxufVxyXG5cclxuLy8gdGFibGFzIGN1eWEgbW9kaWZpY2FjacOzbiBjYW1iaWEgbGEgZXN0cnVjdHVyYSBxdWUgc2UgbWFuZGEgYSBsb3MgZGlzcG9zaXRpdm9zICh2ZXIgb3BlcmF0aXZvX2VzdHJ1Y3R1cmFfY29tcGxldGEpXHJcbmV4cG9ydCBjb25zdCBUQUJMQVNfRVNUUlVDVFVSQSA9IFsnY2FzaWxsZXJvcycsICdzZW1hbmFzJ107XHJcbi8vIHRhYmxhcyBkZSByZWEvbm8gcmVhLCBxdWUgYWRlbcOhcyBzZSBndWFyZGFuIGVuIGJlLmNhY2hlcy50YWJsZUNvbnRlbnQgKHZlciByZWZyZXNoQ2FjaGVzKVxyXG5leHBvcnQgY29uc3QgVEFCTEFTX1JFQV9OT19SRUEgPSBbJ3JlYScsICdub19yZWEnLCAncmVhX3N1cCcsICdub19yZWFfc3VwJ107XHJcblxyXG5leHBvcnQgdHlwZSBSZWZyZXNjYWRvckVzdHJ1Y3R1cmEgPSB7XHJcbiAgICBjYWNoZXM6IHsgdGltZXN0YW1wRXN0cnVjdHVyYTogbnVtYmVyIH1cclxuICAgIHJlZnJlc2hDYWNoZXMoY2xpZW50OiBDbGllbnRlRGIpOiBQcm9taXNlPHZvaWQ+XHJcbn1cclxuXHJcbi8vIGVudnVlbHZlIHRhYmxlX3JlY29yZF9zYXZlL3RhYmxlX3JlY29yZF9kZWxldGUgcGFyYSBxdWUgYWwgbW9kaWZpY2FyIGVzYXMgdGFibGFzIGxvcyBkaXNwb3NpdGl2b3NcclxuLy8gcmVjaWJhbiBsYSBlc3RydWN0dXJhIG51ZXZhICh0aW1lc3RhbXBFc3RydWN0dXJhKSB5LCBzaSBzb24gZGUgcmVhL25vIHJlYSwgc2UgcmVjYXJndWVuIGxhcyBjYWNoZXNcclxuLy8gY29uIGVsIG1pc21vIGNsaWVudGUgKGRlbnRybyBkZSBsYSBtaXNtYSB0cmFuc2FjY2nDs24pXHJcbmV4cG9ydCBmdW5jdGlvbiByZWZyZXNjYXJFc3RydWN0dXJhQWxNb2RpZmljYXJUYWJsYTxDIGV4dGVuZHMgeyBjbGllbnQ6IENsaWVudGVEYiB9LCBQIGV4dGVuZHMgeyB0YWJsZTogc3RyaW5nIH0sIFIsIFJlc3RvIGV4dGVuZHMgKG9iamVjdCB8IHVuZGVmaW5lZClbXT4oXHJcbiAgICBiZTogUmVmcmVzY2Fkb3JFc3RydWN0dXJhLFxyXG4gICAgY29yZUZ1bmN0aW9uOiAoY29udGV4dDogQywgcGFyYW1ldGVyczogUCwgLi4ucmVzdG86IFJlc3RvKSA9PiBQcm9taXNlPFI+XHJcbik6IChjb250ZXh0OiBDLCBwYXJhbWV0ZXJzOiBQLCAuLi5yZXN0bzogUmVzdG8pID0+IFByb21pc2U8Uj4ge1xyXG4gICAgcmV0dXJuIGFzeW5jIGZ1bmN0aW9uIChjb250ZXh0OiBDLCBwYXJhbWV0ZXJzOiBQLCAuLi5yZXN0bzogUmVzdG8pIHtcclxuICAgICAgICB2YXIgcmVzdWx0ID0gYXdhaXQgY29yZUZ1bmN0aW9uKGNvbnRleHQsIHBhcmFtZXRlcnMsIC4uLnJlc3RvKTtcclxuICAgICAgICBpZiAoVEFCTEFTX0VTVFJVQ1RVUkEuaW5jbHVkZXMocGFyYW1ldGVycy50YWJsZSkpIHtcclxuICAgICAgICAgICAgYmUuY2FjaGVzLnRpbWVzdGFtcEVzdHJ1Y3R1cmEgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ3NlIHRvY8OzIGxhIGVzdHJ1Y3R1cmEnLCBiZS5jYWNoZXMudGltZXN0YW1wRXN0cnVjdHVyYSlcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKFRBQkxBU19SRUFfTk9fUkVBLmluY2x1ZGVzKHBhcmFtZXRlcnMudGFibGUpKSB7XHJcbiAgICAgICAgICAgIGJlLmNhY2hlcy50aW1lc3RhbXBFc3RydWN0dXJhID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIGF3YWl0IGJlLnJlZnJlc2hDYWNoZXMoY29udGV4dC5jbGllbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG59XHJcblxyXG5jb25zdCByZWdpc3RyYXJDcm9uSm9iUGFzYXJBUHJvaWUgPSBhc3luYyAoYmU6IEFwcEJhY2tlbmQpID0+IHtcclxuICAgIGNvbnN0IGVqZWN1dGFyUGFzYWplID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGxvZyA9IChtc2c6IHN0cmluZywgZGF0YTogYW55ID0gJycpID0+XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGAke2RhdGV0aW1lLm5vdygpLnRvWW1kSG1zKCl9IFtDUk9OOlBST0lFXSAke21zZ31gLCBkYXRhKTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBsb2coJ/CfmoAgaW5pY2lhIGNyb24gcGFzYWplIGEgcHJvaWUnKTtcclxuXHJcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBhd2FpdCBiZS5pblRyYW5zYWN0aW9uKG51bGwsIGFzeW5jIChjbGllbnQpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCBwYXNhckVuY3Vlc3Rhc0FQcm9pZShjbGllbnQpO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIGxvZygn4pyFIHJlc3VsdCBwcm9jIHBhc2FqZSBhIHByb2llOicsIHJlc3VsdCk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgIHZhciBlcnJvciA9IHVuZXhwZWN0ZWQoZXJyKTtcclxuICAgICAgICAgICAgbG9nKGDinYwgZXJyb3IgcGFzYWplIGEgcHJvaWU6ICR7ZXJyb3IubWVzc2FnZX1gKTtcclxuICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICBsb2coJ/Cfj4EgdGVybWluYSBjcm9uIHByb2llJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIGF3YWl0IGVqZWN1dGFyUGFzYWplKCk7XHJcbiAgICBjb25zdCBpbnRlcnZhbCA9IHNldEludGVydmFsKGVqZWN1dGFyUGFzYWplLCAxMDAwICogNjAgKiA2MClcclxuICAgIGJlLnNodXRkb3duQ2FsbGJhY2tMaXN0QWRkKHtcclxuICAgICAgICBtZXNzYWdlOiAnYXBhZ2EgY3JvbiBwYXNhciBhIHByb2llJyxcclxuICAgICAgICBmdW46IGFzeW5jIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxufVxyXG5cclxuY29uc3QgZ2V0TWFuaWZlc3RJbWFnZUljb25zID0gKEFQUF9OQU1FOiBzdHJpbmcsIHN1Zmlqbzogc3RyaW5nKSA9PiBbXHJcbiAgICB7XHJcbiAgICAgICAgXCJzcmNcIjogYC4uL2ltZy8ke0FQUF9OQU1FfS1sb2dvLWRtLTMyJHtzdWZpam99LnBuZ2AsXHJcbiAgICAgICAgXCJzaXplc1wiOiBcIjMyeDMyXCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2UvcG5nXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgXCJzcmNcIjogYC4uL2ltZy8ke0FQUF9OQU1FfS1sb2dvLWRtLTQ4JHtzdWZpam99LnBuZ2AsXHJcbiAgICAgICAgXCJzaXplc1wiOiBcIjQ4eDQ4XCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2UvcG5nXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgXCJzcmNcIjogYC4uL2ltZy8ke0FQUF9OQU1FfS1sb2dvLWRtLTY0JHtzdWZpam99LnBuZ2AsXHJcbiAgICAgICAgXCJzaXplc1wiOiBcIjY0eDY0XCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2UvcG5nXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgXCJzcmNcIjogYC4uL2ltZy8ke0FQUF9OQU1FfS1sb2dvLWRtLTcyJHtzdWZpam99LnBuZ2AsXHJcbiAgICAgICAgXCJzaXplc1wiOiBcIjcyeDcyXCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2UvcG5nXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgXCJzcmNcIjogYC4uL2ltZy8ke0FQUF9OQU1FfS1sb2dvLWRtLTE5MiR7c3VmaWpvfS5wbmdgLFxyXG4gICAgICAgIFwic2l6ZXNcIjogXCIxOTJ4MTkyXCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2UvcG5nXCJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgICAgXCJzcmNcIjogYC4uL2ltZy8ke0FQUF9OQU1FfS1sb2dvLWRtLTUxMiR7c3VmaWpvfS5wbmdgLFxyXG4gICAgICAgIFwic2l6ZXNcIjogXCI1MTJ4NTEyXCIsXHJcbiAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2UvcG5nXCJcclxuICAgIH1cclxuXTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBlbWVyZ2VBcHBEbUVuY3U8VCBleHRlbmRzIHByb2Nlc2FtaWVudG8uQ29uc3RydWN0b3I8cHJvY2VzYW1pZW50by5BcHBQcm9jZXNhbWllbnRvVHlwZT4+KEJhc2U6IFQpIHtcclxuICAgIHJldHVybiBjbGFzcyBBcHBEbUVuY3UgZXh0ZW5kcyBCYXNlIHtcclxuICAgICAgICBjb25zdHJ1Y3RvciguLi5hcmdzOiBhbnlbXSkge1xyXG4gICAgICAgICAgICBzdXBlcihhcmdzKTtcclxuICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50ID0gdGhpcy5jYWNoZXMudGFibGVDb250ZW50IHx8IHt9O1xyXG4gICAgICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhID0gW11cclxuICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYV9ncm91cHMgPSBbXVxyXG4gICAgICAgICAgICB0aGlzLmNhY2hlcy5tZXRhRW5jSW5jbHVpckNhc2lsbGVyb3NTYWx0b1JFTCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNhY2hlcy50aW1lc3RhbXBFc3RydWN0dXJhID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5jb25SZWFIb2dhciA9IHt9O1xyXG4gICAgICAgICAgICB0aGlzLmNhY2hlcy5heXVkYSA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBnZXRTdWZpam9Gcm9tYmFzZVVybCA9IChiYXNlVXJsOiBzdHJpbmcpID0+XHJcbiAgICAgICAgICAgIGJhc2VVcmwuaW5jbHVkZXMoJ3Rlc3QnKSB8fCBiYXNlVXJsLmluY2x1ZGVzKCcvcHInKSA/ICdfdGVzdCcgOlxyXG4gICAgICAgICAgICAgICAgYmFzZVVybC5pbmNsdWRlcygnY2FwYScpID8gJ19jYXBhJyA6ICcnO1xyXG5cclxuICAgICAgICBnZXRBcHBOYW1lID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICB2YXIgYmUgPSB0aGlzO1xyXG4gICAgICAgICAgICByZXR1cm4gKChhd2FpdCBiZS5pblRyYW5zYWN0aW9uKG51bGwsIChjbGllbnQ6IHBnLkNsaWVudCkgPT5cclxuICAgICAgICAgICAgICAgIGNsaWVudC5xdWVyeShcInNlbGVjdCBvcGVyYXRpdm8gZnJvbSBwYXJhbWV0cm9zIHdoZXJlIHVuaWNvX3JlZ2lzdHJvXCIpLmZldGNoVW5pcXVlVmFsdWUoKVxyXG4gICAgICAgICAgICApKS52YWx1ZSBhcyBzdHJpbmcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gYmFja2VuZC1wbHVzIGxvIGRlY2xhcmEgc2luIHBhcsOhbWV0cm9zIHBlcm8gbG8gbGxhbWEgY29uIChjb250ZXh0LCB1c3VhcmlvKSwgcG9yIGVzbyBzb24gb3BjaW9uYWxlc1xyXG4gICAgICAgIG92ZXJyaWRlIGFzeW5jIGNhbkNoYW5nZVBhc3MocmVxT3JDb250ZXh0PzogUmVxdWVzdCB8IENvbnRleHQsIHVzZXJUb0NoYW5nZVBhc3M/OiBzdHJpbmcgfCBudWxsKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAgICAgICAgIHZhciBiZSA9IHRoaXM7XHJcbiAgICAgICAgICAgIHZhciB1c3VhcmlvTG9ndWVhZG8gPSByZXFPckNvbnRleHQ/LnVzZXI7XHJcbiAgICAgICAgICAgIGlmIChyZXFPckNvbnRleHQgPT0gbnVsbCB8fCB1c3VhcmlvTG9ndWVhZG8gPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHZhciByb2wgPSB1c3VhcmlvTG9ndWVhZG8ucm9sO1xyXG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gYXdhaXQgYmUuaW5EYkNsaWVudChudWxsLCBhc3luYyAoY2xpZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcSA9IGJlLmRiLnF1b3RlTGl0ZXJhbDtcclxuICAgICAgICAgICAgICAgIHJldHVybiAoYXdhaXQgY2xpZW50LnF1ZXJ5KGBcclxuICAgICAgICAgICAgICAgIHNlbGVjdCAqIFxyXG4gICAgICAgICAgICAgICAgICBmcm9tIHVzdWFyaW9zIFxyXG4gICAgICAgICAgICAgICAgICB3aGVyZSByb2wgaW4gKHNlbGVjdCByb2xfc3Vib3JkaW5hZG8gZnJvbSByb2xlc19zdWJvcmRpbmFkb3Mgd2hlcmUgcm9sID0gJHtxKHJvbCl9KWApLmZldGNoQWxsKCkpLnJvd3M7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIHZhciBwdWVkZSA9ICEhcmVzdWx0LmZpbmQoKHVzZXIpID0+IHVzZXIudXN1YXJpbyA9PSB1c2VyVG9DaGFuZ2VQYXNzKTtcclxuICAgICAgICAgICAgdmFyIGlzQWRtaW4gPSBiZS5pc0FkbWluKHJlcU9yQ29udGV4dCk7XHJcbiAgICAgICAgICAgIHJldHVybiBpc0FkbWluIHx8IHB1ZWRlXHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBvdmVycmlkZSBhc3luYyBnZXRQcm9jZWR1cmVzKCkge1xyXG4gICAgICAgICAgICB2YXIgYmUgPSB0aGlzO1xyXG4gICAgICAgICAgICB2YXIgcHJvY2VkaW1pZW50b0FSZWVtcGxhemFyID0gW1wiY2Fzb19ndWFyZGFyXCIsIFwiY2Fzb190cmFlclwiXTtcclxuICAgICAgICAgICAgdmFyIHBhcmVudFByb2MgPSBhd2FpdCBzdXBlci5nZXRQcm9jZWR1cmVzKCk7XHJcbiAgICAgICAgICAgIHBhcmVudFByb2MgPSBwYXJlbnRQcm9jLmZpbHRlcigocHJvY2VkdXJlOiBhbnkpID0+ICFwcm9jZWRpbWllbnRvQVJlZW1wbGF6YXIuaW5jbHVkZXMocHJvY2VkdXJlLmFjdGlvbikpO1xyXG4gICAgICAgICAgICBwYXJlbnRQcm9jID0gcGFyZW50UHJvYy5tYXAocHJvY0RlZiA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocHJvY0RlZi5hY3Rpb24gPT0gJ3RhYmxlX3JlY29yZF9zYXZlJyB8fCBwcm9jRGVmLmFjdGlvbiA9PSAndGFibGVfcmVjb3JkX2RlbGV0ZScpIHtcclxuICAgICAgICAgICAgICAgICAgICBwcm9jRGVmLmNvcmVGdW5jdGlvbiA9IHJlZnJlc2NhckVzdHJ1Y3R1cmFBbE1vZGlmaWNhclRhYmxhKGJlLCBwcm9jRGVmLmNvcmVGdW5jdGlvbik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvY0RlZjtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgcmV0dXJuIHBhcmVudFByb2MuY29uY2F0KFByb2NlZHVyZXNEbUVuY3UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBvdmVycmlkZSBhc3luYyBjaGVja0RhdGFiYXNlU3RydWN0dXJlKF9jbGllbnQ6IENsaWVudCkge1xyXG4gICAgICAgIH1cclxuICAgICAgICBvdmVycmlkZSBhZGRTY2hyw7ZkaW5nZXJTZXJ2aWNlcyhtYWluQXBwOiBwcm9jZXNhbWllbnRvLkV4cHJlc3MsIGJhc2VVcmw6IHN0cmluZykge1xyXG4gICAgICAgICAgICBsZXQgYmUgPSB0aGlzO1xyXG4gICAgICAgICAgICBzdXBlci5hZGRTY2hyw7ZkaW5nZXJTZXJ2aWNlcyhtYWluQXBwLCBiYXNlVXJsKTtcclxuICAgICAgICAgICAgLy9wZXJtaXRvIGxldmFudGFyIG1pcyBpbWFnZW5lcyBlbiBhcGxpY2FjaW9uZXMgZGVwZW5kaWVudGVzXHJcbiAgICAgICAgICAgIGJlLmFwcC51c2UoJy9pbWcnLCBleHByZXNzLnN0YXRpYygnbm9kZV9tb2R1bGVzL2RtZW5jdS9kaXN0L3VubG9nZ2VkL3VubG9nZ2VkL2ltZycpKVxyXG4gICAgICAgICAgICBtYWluQXBwLnVzZShmdW5jdGlvbiAocmVxOiBSZXF1ZXN0LCBfcmVzOiBSZXNwb25zZSwgbmV4dDogTmV4dEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVxLnNlc3Npb24gJiYgIXJlcS5zZXNzaW9uLmluc3RhbGwpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXEuc2Vzc2lvbi5pbnN0YWxsID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygpLnJlcGxhY2UoJy4nLCAnJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBuZXh0KCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBtYWluQXBwLmdldChiYXNlVXJsICsgJy9zYWx2YXInLCBmdW5jdGlvbiAocmVxLCByZXMsIF9uZXh0KSB7XHJcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlIHPDqSBxdWUgdm95IGEgcmVjaWJpciB1c2VyYWdlbnQgcG9yIGxvcyBtaWRkbGV3YXJlcyBkZSBCYWNrZW5kLXBsdXNcclxuICAgICAgICAgICAgICAgIHZhciB7IHVzZXJhZ2VudCB9ID0gcmVxO1xyXG4gICAgICAgICAgICAgICAgdmFyIGh0bWxNYWluID0gYmUubWFpblBhZ2UoeyB1c2VyYWdlbnQgfSwgZmFsc2UsIHsgc2tpcE1lbnU6IHRydWUsIG9mZmxpbmVGaWxlOiB0cnVlIH0pLnRvSHRtbERvYygpO1xyXG4gICAgICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlVGV4dChodG1sTWFpbiwgJ2h0bWwnKShyZXEsIHJlcyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBtYWluQXBwLmdldChiYXNlVXJsICsgJy9jYW1wbycsIGZ1bmN0aW9uIChyZXEsIHJlcywgX25leHQpIHtcclxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgc8OpIHF1ZSB2b3kgYSByZWNpYmlyIHVzZXJhZ2VudCBwb3IgbG9zIG1pZGRsZXdhcmVzIGRlIEJhY2tlbmQtcGx1c1xyXG4gICAgICAgICAgICAgICAgdmFyIHsgdXNlcmFnZW50LCB1c2VyIH0gPSByZXE7XHJcbiAgICAgICAgICAgICAgICBpZiAodXNlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7e3R5cGU6J2pzJywgc3JjOnN0cmluZ31bXX0gKi9cclxuICAgICAgICAgICAgICAgICAgICB2YXIgd2ViTWFuaWZlc3RQYXRoID0gJ2NhcmdhLWRtL3dlYi1tYW5pZmVzdC53ZWJtYW5pZmVzdCc7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGh0bWxNYWluID0gYmUubWFpblBhZ2UoeyB1c2VyYWdlbnQsIHVzZXIgfSwgZmFsc2UsIHsgc2tpcE1lbnU6IHRydWUsIHdlYk1hbmlmZXN0UGF0aCwgb2ZmbGluZUZpbGU6IHRydWUgfSkudG9IdG1sRG9jKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlVGV4dChodG1sTWFpbiwgJ2h0bWwnKShyZXEsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5yZWRpcmVjdCg0MDEsIGJhc2VVcmwgKyAnL2xvZ2luI3c9cGF0aCZwYXRoPS9jYW1wbycpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBtYWluQXBwLmdldChiYXNlVXJsICsgJy9mYWxsYmFjay1zaW5jcm8nLCBmdW5jdGlvbiAocmVxLCByZXMsIG5leHQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGpzb25GYWxsYmFjayA9IHtcclxuICAgICAgICAgICAgICAgICAgICBvazogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ05vIHNlIGxvZ3LDsyBlc3RhYmxlY2VyIGxhIGNvbmV4aW9uIGNvbiBlbCBzZXJ2aWRvciwgY29tcHJ1ZWJlIHN1IGNvbmV4aW9uIGRlIGludGVybmV0IChyZXNwdWVzdGEgZGVzZGUgZmFsbGJhY2spJ1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVKc29uKGpzb25GYWxsYmFjaykocmVxLCByZXMsIG5leHQpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdmFyIGNyZWF0ZVNlcnZpY2VXb3JrZXIgPSBhc3luYyBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgc3cgPSBhd2FpdCBmcy5yZWFkRmlsZSgnbm9kZV9tb2R1bGVzL3NlcnZpY2Utd29ya2VyLWFkbWluL2Rpc3Qvc2VydmljZS13b3JrZXItd28tbWFuaWZlc3QuanMnLCAndXRmOCcpO1xyXG4gICAgICAgICAgICAgICAgdmFyIG1hbmlmZXN0ID0gYXdhaXQgYmUuY3JlYXRlUmVzb3VyY2VzRm9yQ2FjaGVKc29uKCk7XHJcbiAgICAgICAgICAgICAgICB2YXIgc3dNYW5pZmVzdCA9IHN3XHJcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoXCInLyp2ZXJzaW9uKi8nXCIsIEpTT04uc3RyaW5naWZ5KG1hbmlmZXN0LnZlcnNpb24pKVxyXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKFwiJy8qYXBwTmFtZSovJ1wiLCBKU09OLnN0cmluZ2lmeShtYW5pZmVzdC5hcHBOYW1lKSlcclxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxbXFxzKlxcL1xcKnVybHNUb0NhY2hlXFwqXFwvXFxzKlxcXS8sIEpTT04uc3RyaW5naWZ5KG1hbmlmZXN0LmNhY2hlKSlcclxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxbXFxzKlxcL1xcKmZhbGxiYWNrc1xcKlxcL1xccypcXF0vLCBKU09OLnN0cmluZ2lmeShtYW5pZmVzdC5mYWxsYmFja3MgfHwgW10pKVxyXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKFwiJy8qZGVmYXVsdEZhbGxiYWNrKi8nXCIsIEpTT04uc3RyaW5naWZ5KG1hbmlmZXN0LmRlZmF1bHRGYWxsYmFjaykpO1xyXG4gICAgICAgICAgICAgICAgLy8ucmVwbGFjZShcIi8jQ0FDSEUkL1wiLCBcIi8oYVxcXFxkK21cXFxcZCtwXFxcXGQrdFxcXFxkK19lc3RydWN0dXJhLmpzKXwoYVxcXFxkK21cXFxcZCtwXFxcXGQrdFxcXFxkK19oZHIuanNvbikvXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHN3TWFuaWZlc3RcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBtYWluQXBwLmdldChiYXNlVXJsICsgYC9zdy1tYW5pZmVzdC5qc2AsIGFzeW5jIGZ1bmN0aW9uIChyZXEsIHJlcywgbmV4dCkge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVUZXh0KGF3YWl0IGNyZWF0ZVNlcnZpY2VXb3JrZXIoKSwgJ2FwcGxpY2F0aW9uL2phdmFzY3JpcHQnKShyZXEsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVFcnIocmVxLCByZXMsIG5leHQpKHVuZXhwZWN0ZWQoZXJyKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBtYWluQXBwLmdldChiYXNlVXJsICsgYC9jYXJnYS1kbS93ZWItbWFuaWZlc3Qud2VibWFuaWZlc3RgLCBhc3luYyBmdW5jdGlvbiAocmVxLCByZXMsIG5leHQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IEFQUF9OQU1FID0gYXdhaXQgYmUuZ2V0QXBwTmFtZSgpO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3VmaWpvID0gYmUuZ2V0U3VmaWpvRnJvbWJhc2VVcmwoYmFzZVVybCk7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibmFtZVwiOiBgJHtBUFBfTkFNRX0ke3N1Zmlqb30gUHJvZ3Jlc3NpdmUgV2ViIEFwcGAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic2hvcnRfbmFtZVwiOiBgJHtBUFBfTkFNRX0ke3N1Zmlqb30gUFdBYCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBgUHJvZ3Jlc3NpdmUgV2ViIEFwcCBmb3IgJHtBUFBfTkFNRX0ke3N1Zmlqb30uYCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJpY29uc1wiOiBnZXRNYW5pZmVzdEltYWdlSWNvbnMoQVBQX05BTUUsIHN1ZmlqbyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmJlLmdldENvbG9yc0pzb24oc3VmaWpvIGFzIFN1Zmlqb3NBbWJpZW50ZSlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlVGV4dChKU09OLnN0cmluZ2lmeShjb250ZW50KSwgJ2FwcGxpY2F0aW9uL2pzb24nKShyZXEsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVFcnIocmVxLCByZXMsIG5leHQpKHVuZXhwZWN0ZWQoZXJyKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBnZXRDb2xvcnNKc29uKF9zdWZpam86IFN1Zmlqb3NBbWJpZW50ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgXCJzdGFydF91cmxcIjogXCIuLi9jYW1wb1wiLFxyXG4gICAgICAgICAgICAgICAgXCJkaXNwbGF5XCI6IFwic3RhbmRhbG9uZVwiLFxyXG4gICAgICAgICAgICAgICAgXCJ0aGVtZV9jb2xvclwiOiBcIiMzRjUxQjVcIixcclxuICAgICAgICAgICAgICAgIFwiYmFja2dyb3VuZF9jb2xvclwiOiBcIiM2ZDYwZWRcIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG92ZXJyaWRlIGFkZExvZ2dlZFNlcnZpY2VzKCkge1xyXG4gICAgICAgICAgICB2YXIgYmUgPSB0aGlzO1xyXG4gICAgICAgICAgICBzdXBlci5hZGRMb2dnZWRTZXJ2aWNlcygpO1xyXG4gICAgICAgICAgICBiZS5hcHAuZ2V0KCcvbWFuaWZlc3QubWFuaWZlc3QnLCBhc3luYyBmdW5jdGlvbiAocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlLCBfbmV4dDogTmV4dEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVGaWxlKCdzcmMvY2xpZW50L21hbmlmZXN0Lm1hbmlmZXN0Jywge30pKHJlcSwgcmVzKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwLmdldCgnL2ZpbGUnLCBhc3luYyBmdW5jdGlvbiAocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgYmUuaW5UcmFuc2FjdGlvbihyZXEsXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWVudDogcGcuQ2xpZW50KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGllbnQucXVlcnkoXCJzZWxlY3QgcnV0YSBmcm9tIGFkanVudG9zIHdoZXJlIGlkX2FkanVudG8gPSAkMVwiLCBbcmVxLnF1ZXJ5LmlkX2FkanVudG9dKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZldGNoVW5pcXVlVmFsdWUoKVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHZhciBmaWxlUGF0aCA9IHJlc3VsdC52YWx1ZTtcclxuICAgICAgICAgICAgICAgIG1pbmlUb29scy5zZXJ2ZUZpbGUoZmlsZVBhdGgsIHt9KShyZXEsIHJlcyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmFwcC5nZXQoJy9pbWFnZW5lcycsIGFzeW5jIGZ1bmN0aW9uIChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgICAgIG1pbmlUb29scy5zZXJ2ZUZpbGUoJ2xvY2FsLWltYWdlcy8nICsgcmVxLnF1ZXJ5LnBkZiwge30pKHJlcSwgcmVzKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwLmdldCgnL2Rvd25sb2FkL2FsbCcsIGFzeW5jIGZ1bmN0aW9uIChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UsIG5leHQ6ICgpID0+IHZvaWQpIHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXEudXNlciA9PSBudWxsIHx8IHJlcS51c2VyLnJvbCAhPSAnYWRtaW4nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ25vIGVzdMOhIGF1dG9yaXphZG8gYSBiYWphcnNlIHRvZG8nLCByZXEudXNlcilcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV4dCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbGV0IHppcCA9IG5ldyB5YXpsLlppcEZpbGUoKTtcclxuICAgICAgICAgICAgICAgIHppcC5vdXRwdXRTdHJlYW0ucGlwZShyZXMpO1xyXG4gICAgICAgICAgICAgICAgbGV0IGJhc2UgPSAnbG9jYWwtYXR0YWNobWVudHMnXHJcbiAgICAgICAgICAgICAgICBsZXQgZmlsZXMgPSBhd2FpdCBmcy5yZWFkZGlyKGJhc2UpO1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoZmlsZXMubWFwKGFzeW5jIGZ1bmN0aW9uIChmaWxlTmFtZTogc3RyaW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGZpbGVQYXRoID0gYmFzZSArICcvJyArIGZpbGVOYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBzdGF0ID0gYXdhaXQgZnMuc3RhdChmaWxlUGF0aCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXQuaXNGaWxlKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgemlwLmFkZEZpbGUoZmlsZVBhdGgsIGZpbGVOYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgICAgICB6aXAuZW5kKCk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIG92ZXJyaWRlIGFzeW5jIHBvc3RDb25maWcoKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHN1cGVyLnBvc3RDb25maWcoKTtcclxuICAgICAgICAgICAgdmFyIGJlID0gdGhpcztcclxuICAgICAgICAgICAgYmUuY2FjaGVzLm1ldGFFbmNJbmNsdWlyQ2FzaWxsZXJvc1NhbHRvUkVMID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGF3YWl0IGJlLmluVHJhbnNhY3Rpb24obnVsbCwgYXN5bmMgZnVuY3Rpb24gKGNsaWVudDogcGcuQ2xpZW50KSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcVBlcm1pc29zID0gYFxyXG4gICAgICAgICAgICBTRUxFQ1QganNvbmJfb2JqZWN0X2FnZyhyLnJvbCxqc29uYl9idWlsZF9vYmplY3QoJ3N1cGVydXNlcicsci5zdXBlcnVzZXIsJ3B1ZWRlJywoXHJcbiAgICAgICAgICAgICAgICAgIFNFTEVDVCBqc29uYl9vYmplY3RfYWdnKHJwLnBlcm1pc28sKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBTRUxFQ1QganNvbmJfb2JqZWN0X2FnZyhycGEuYWNjaW9uLHJwYS5oYWJpbGl0YWRvKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEZST00gcm9sZXNfcGVybWlzb3MgcnBhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgV0hFUkUgcnBhLnJvbD1ycC5yb2wgQU5EIHJwYS5wZXJtaXNvPXJwLnBlcm1pc29cclxuICAgICAgICAgICAgICAgICAgICApKVxyXG4gICAgICAgICAgICAgICAgICAgIEZST00gcm9sZXNfcGVybWlzb3MgcnBcclxuICAgICAgICAgICAgICAgICAgICBXSEVSRSBycC5yb2w9ci5yb2wgI2NvbmRIYWJpbGl0YWRvI1xyXG4gICAgICAgICAgICAgICkpKVxyXG4gICAgICAgICAgICAgIEZST00gcm9sZXMgclxyXG4gICAgICAgICAgICBgO1xyXG4gICAgICAgICAgICAgICAgdmFyIHJlc3VsdHMgPSBbXHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgY2xpZW50LnF1ZXJ5KHFQZXJtaXNvcy5yZXBsYWNlKCcjY29uZEhhYmlsaXRhZG8jJywgJycpKS5mZXRjaFVuaXF1ZVZhbHVlKCksXHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgY2xpZW50LnF1ZXJ5KHFQZXJtaXNvcy5yZXBsYWNlKCcjY29uZEhhYmlsaXRhZG8jJywgYCBhbmQgcnAuJHtwZy5xdW90ZUlkZW50KCdoYWJpbGl0YWRvJyl9YCkpLmZldGNoVW5pcXVlVmFsdWUoKSxcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBjbGllbnQucXVlcnkoYFxyXG4gICAgICAgICAgICAgICAgICAgIFNFTEVDVCBqc29uYl9vYmplY3RfYWdnKHBlcm1pc28sKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBTRUxFQ1QganNvbmJfb2JqZWN0X2FnZyhhY2Npb24sdHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBGUk9NIHBlcm1pc29zIHBhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgV0hFUkUgcGEucGVybWlzbz1wLnBlcm1pc29cclxuICAgICAgICAgICAgICAgICAgICAgICkpXHJcbiAgICAgICAgICAgICAgICAgICAgICBGUk9NIHBlcm1pc29zIHBcclxuICAgICAgICAgICAgICAgIGApLmZldGNoVW5pcXVlVmFsdWUoKSxcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBjbGllbnQucXVlcnkoYFxyXG4gICAgICAgICAgICAgICAgICAgIFNFTEVDVCBqc29uYl9vYmplY3RfYWdnKHBlcm1pc28sKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBTRUxFQ1QganNvbmJfb2JqZWN0X2FnZyhhY2Npb24sZmFsc2UpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgRlJPTSBwZXJtaXNvcyBwYVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFdIRVJFIHBhLnBlcm1pc289cC5wZXJtaXNvXHJcbiAgICAgICAgICAgICAgICAgICAgICApKVxyXG4gICAgICAgICAgICAgICAgICAgICAgRlJPTSBwZXJtaXNvcyBwXHJcbiAgICAgICAgICAgICAgICBgKS5mZXRjaFVuaXF1ZVZhbHVlKClcclxuICAgICAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgICAgICBiZS5jYWNoZXMucGVybWlzb3NSb2wgPSByZXN1bHRzWzBdLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgYmUuY2FjaGVzLnBlcm1pc29zUm9sU29sb1RydWUgPSByZXN1bHRzWzFdLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgYmUuY2FjaGVzLnBlcm1pc29zU3VwZXJ1c2VyID0gcmVzdWx0c1syXS52YWx1ZTtcclxuICAgICAgICAgICAgICAgIGJlLmNhY2hlcy5wZXJtaXNvc1BhcmFOYWRpZSA9IHJlc3VsdHNbM10udmFsdWU7XHJcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUuZGlyKGJlLmNhY2hlcy5wZXJtaXNvc1JvbFNvbG9UcnVlLHtkZXB0aDo5fSk7XHJcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUuZGlyKGJlLmNhY2hlcy5wZXJtaXNvc1N1cGVydXNlcix7ZGVwdGg6OX0pO1xyXG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmRpcihiZS5jYWNoZXMucGVybWlzb3NQYXJhTmFkaWUse2RlcHRoOjl9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGJlLmNhY2hlcy5heXVkYSA9IGNhcmdhckF5dWRhKGJlLmdldEF5dWRhRnVlbnRlcygpKTtcclxuICAgICAgICAgICAgYmUucHJvYmxlbWFzRGVBeXVkYSgpLmZvckVhY2gocHJvYmxlbWEgPT4gY29uc29sZS5lcnJvcihwcm9ibGVtYSkpO1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnJlZnJlc2hDYWNoZXMoKTtcclxuICAgICAgICAgICAgYXdhaXQgcmVnaXN0cmFyQ3JvbkpvYlBhc2FyQVByb2llKGJlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY2FycGV0YXMgY29uIGxhIGF5dWRhIHBhcmEgdXN1YXJpb3MsIGVuIG9yZGVuOiB1biB0ZW1hIGRlIHVuYSBmdWVudGUgcG9zdGVyaW9yIHJlZW1wbGF6YSB1IG9jdWx0YVxyXG4gICAgICAgIC8vIGFsIGRlIHVuYSBhbnRlcmlvciBjb24gZWwgbWlzbW8gaWQuIExhcyBhcHBzIGZpbmFsZXMgYWdyZWdhbiBsYSBzdXlhICh2ZXIgZG9jcy9heXVkYS1vbmxpbmUubWQpXHJcbiAgICAgICAgZ2V0QXl1ZGFGdWVudGVzKCk6IEF5dWRhRnVlbnRlW10ge1xyXG4gICAgICAgICAgICByZXR1cm4gW3sgb3JpZ2VuOiAnZG1lbmN1JywgY2FycGV0YTogcGF0aC5qb2luKGNhcnBldGFEZWxQYXF1ZXRlKF9fZGlybmFtZSksICdheXVkYScpIH1dO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyB0ZW1hcyBkZSBheXVkYSBkZWwgbW9kbyBhY3R1YWwgY29uIHBlcm1pc29zLCByb2xlcyB1IG9wY2lvbmVzIGRlIG1lbsO6IHF1ZSBubyBleGlzdGVuXHJcbiAgICAgICAgcHJvYmxlbWFzRGVBeXVkYSgpOiBzdHJpbmdbXSB7XHJcbiAgICAgICAgICAgIHZhciBiZSA9IHRoaXM7XHJcbiAgICAgICAgICAgIHZhciBtb2RvID0gZ2V0TW9kb0J5UG9saWN5KGJlKTtcclxuICAgICAgICAgICAgdmFyIHJ1dGFzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhiZS5jYWNoZXMucGVybWlzb3NSb2wpLmZvckVhY2gocm9sID0+IHtcclxuICAgICAgICAgICAgICAgIHZhciB1c2VyID0geyByb2wsIGlkcGVyOiAnJywgdXN1YXJpbzogJycgfTtcclxuICAgICAgICAgICAgICAgIHZhciBjb250ZXh0OiBDb250ZXh0ID0geyAuLi5wZXJtaXNvc1NlZ3VuVXN1YXJpbyhiZS5jYWNoZXMsIHVzZXIpLCBiZSwgdXNlciwgc2Vzc2lvbjoge30sIHVzZXJuYW1lOiAnJywgbWFjaGluZUlkOiAnJywgbmF2aWdhdG9yOiAnJyB9O1xyXG4gICAgICAgICAgICAgICAgcnV0YXMgPSBydXRhcy5jb25jYXQocnV0YXNEZWxNZW51KGJlLmdldE1lbnUoY29udGV4dCkubWVudSkpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIHByb2JsZW1hc0RlQXl1ZGEoXHJcbiAgICAgICAgICAgICAgICBiZS5jYWNoZXMuYXl1ZGEuZmlsdGVyKHRlbWEgPT4gdGVtYS5tb2RvID09IG51bGwgfHwgdGVtYS5tb2RvID09IG1vZG8pLFxyXG4gICAgICAgICAgICAgICAgYmUuY2FjaGVzLnBlcm1pc29zU3VwZXJ1c2VyLFxyXG4gICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoYmUuY2FjaGVzLnBlcm1pc29zUm9sKSxcclxuICAgICAgICAgICAgICAgIHJ1dGFzXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG92ZXJyaWRlIGNvbmZpZ1N0YXRpY0NvbmZpZygpIHtcclxuICAgICAgICAgICAgc3VwZXIuY29uZmlnU3RhdGljQ29uZmlnKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGljQ29uZmlnKGRlZkNvbmZpZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG92ZXJyaWRlIGNsaWVudEluY2x1ZGVzKHJlcTogUmVxdWVzdCwgb3B0czogT3B0c0NsaWVudFBhZ2UpOiBDbGllbnRNb2R1bGVEZWZpbml0aW9uW10ge1xyXG4gICAgICAgICAgICB2YXIgYmUgPSB0aGlzO1xyXG4gICAgICAgICAgICB2YXIgdW5sb2dnZWQgPSBvcHRzICYmIG9wdHMub2ZmbGluZUZpbGU7XHJcbiAgICAgICAgICAgIHZhciBtZW51ZWRSZXNvdXJjZXM6IENsaWVudE1vZHVsZURlZmluaXRpb25bXSA9IHVubG9nZ2VkID8gW1xyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAndW5sb2dnZWQuanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICBdIDogW1xyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vY2xpZW50L2NsaWVudCcsIGZpbGU6ICdjbGllbnQuanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICBpZiAob3B0cyAmJiBvcHRzLmV4dHJhRmlsZXMpIHtcclxuICAgICAgICAgICAgICAgIG1lbnVlZFJlc291cmNlcyA9IG1lbnVlZFJlc291cmNlcy5jb25jYXQob3B0cy5leHRyYUZpbGVzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgZXh0ZXJuYWxSZXNvdXJjZXM6IENsaWVudE1vZHVsZURlZmluaXRpb25bXSA9IFtcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAncmVhY3QnLCBtb2RQYXRoOiAndW1kJywgZmlsZTogJ3JlYWN0LnByb2R1Y3Rpb24ubWluLmpzJyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdyZWFjdC1kb20nLCBtb2RQYXRoOiAndW1kJywgZmlsZTogJ3JlYWN0LWRvbS5wcm9kdWN0aW9uLm1pbi5qcycgfSxcclxuICAgICAgICAgICAgICAgIC8veyB0eXBlOiAnanMnLCBtb2R1bGU6ICdAbWF0ZXJpYWwtdWkvY29yZScsIG1vZFBhdGg6ICd1bWQnLCBmaWxlRGV2ZWxvcG1lbnQ6J21hdGVyaWFsLXVpLmRldmVsb3BtZW50LmpzJywgZmlsZTonbWF0ZXJpYWwtdWkucHJvZHVjdGlvbi5taW4uanMnIH0sXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ0BtdWkvbWF0ZXJpYWwnLCBtb2RQYXRoOiAnLi4vdW1kJywgZmlsZTogJ21hdGVyaWFsLXVpLnByb2R1Y3Rpb24ubWluLmpzJyB9LFxyXG5cclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAncmVkdXgnLCBtb2RQYXRoOiAnLi4vZGlzdCcsIGZpbGU6ICdyZWR1eC5taW4uanMnIH0sXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ3JlYWN0LXJlZHV4JywgbW9kUGF0aDogJy4uL2Rpc3QnLCBmaWxlOiAncmVhY3QtcmVkdXgubWluLmpzJyB9LFxyXG4gICAgICAgICAgICAgICAgLy97IHR5cGU6ICdqcycsIG1vZHVsZTogJ3FyY29kZScsIG1vZFBhdGg6ICcuLi9idWlsZCcsIGZpbGU6ICdxcmNvZGUuanMnfSxcclxuICAgICAgICAgICAgICAgIC4uLnN1cGVyLmNsaWVudEluY2x1ZGVzKHJlcSwgb3B0cykuZmlsdGVyKG0gPT4gbS5maWxlICE9ICdmb3JtdWxhcmlvcy5jc3MnKVxyXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIobSA9PiAhdW5sb2dnZWQgfHwgdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiBtLmZpbGUgIT0gJ3Zhci1jYWwuanMnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIG0uZmlsZSAhPSAndmFyLWNhbC5qcydcclxuICAgICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdzZXJ2aWNlLXdvcmtlci1hZG1pbicsIGZpbGU6ICdzZXJ2aWNlLXdvcmtlci1hZG1pbi5qcycgfSxcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAncmVkdXgtdHlwZWQtcmVkdWNlcicsIG1vZFBhdGg6ICcuLi9kaXN0JywgZmlsZTogJ3JlZHV4LXR5cGVkLXJlZHVjZXIuanMnIH1cclxuICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgdmFyIHJlc291cmNlczogQ2xpZW50TW9kdWxlRGVmaW5pdGlvbltdID0gW1xyXG4gICAgICAgICAgICAgICAgLi4uZXh0ZXJuYWxSZXNvdXJjZXMsXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICdhZGFwdC5qcycsIHBhdGg6ICdkbWVuY3UnIH0sXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICd0aXBvcy5qcycsIHBhdGg6ICdkbWVuY3UnIH0sXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICdoZWxwZXJzLWZvcm11bGFyaW8uanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAnY2FsY3Vsb3MtZW5jdWVzdGEuanMnLCBwYXRoOiAnZG1lbmN1JyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAncmVuZGVyLWNvbmZpZy5qcycsIHBhdGg6ICdkbWVuY3UnIH0sXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICdyZW5kZXItaW5pdC5qcycsIHBhdGg6ICdkbWVuY3UnIH0sXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICdyZWR1eC1mb3JtdWxhcmlvLmpzJywgcGF0aDogJ2RtZW5jdScgfSxcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkJywgZmlsZTogJ2hlbHBlcnMtY2FzaWxsZXJvcy5qcycsIHBhdGg6ICdkbWVuY3UnIH0sXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICdieXBhc3MtZm9ybXVsYXJpby5qcycsIHBhdGg6ICdkbWVuY3UnIH0sXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICdyZW5kZXItZ2VuZXJhbC5qcycsIHBhdGg6ICdkbWVuY3UnIH0sXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICdyZW5kZXItZm9ybXVsYXJpby5qcycsIHBhdGg6ICdkbWVuY3UnIH0sXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICdhYnJpci1mb3JtdWxhcmlvLmpzJywgcGF0aDogJ2RtZW5jdScgfSxcclxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ2NzcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZC9jc3MnLCBmaWxlOiAnZm9ybXVsYXJpby1yZWFjdC5jc3MnLCBwYXRoOiAnY3NzJyB9LFxyXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAnY3NzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkL2NzcycsIGZpbGU6ICdib290c3RyYXAubWluLmNzcycsIHBhdGg6ICdjc3MnIH0sXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICd0dGYnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQvY3NzJywgZmlsZTogJ1JvYm90by1SZWd1bGFyLnR0ZicsIHBhdGg6ICdjc3MnIH0sXHJcbiAgICAgICAgICAgICAgICAuLi5tZW51ZWRSZXNvdXJjZXMsXHJcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdjc3MnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vY2xpZW50L2NsaWVudC9jc3MnLCBmaWxlOiAnbWVudS5jc3MnLCBwYXRoOiAnY3NzJyB9LFxyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgICAgIHJldHVybiByZXNvdXJjZXNcclxuICAgICAgICAgICAgLy8gLm1hcChtPT4oey4uLm0sIGZpbGU6bS5maWxlRGV2ZWxvcG1lbnR8fG0uZmlsZX0pKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgYXN5bmMgcmVmcmVzaENhY2hlcyhjbGllbnQ6IENsaWVudGVEYiB8IG51bGwgPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudCA9IHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudCB8fCB7fTtcclxuXHJcbiAgICAgICAgICAgIC8vIEZ1bmNpw7NuIGF1eGlsaWFyIHBhcmEgZWplY3V0YXIgbGFzIHF1ZXJpZXMgY29uIGVsIGNsaWVudGUgcHJvdmlzdG8gbyB1bm8gbnVldm9cclxuICAgICAgICAgICAgY29uc3QgZXhlY3V0ZVF1ZXJpZXMgPSBhc3luYyAoZGJDbGllbnQ6Q2xpZW50ZURiKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhID0gKGF3YWl0IGRiQ2xpZW50LnF1ZXJ5KGBzZWxlY3QgKiBmcm9tIG5vX3JlYSBvcmRlciBieSBvcGVyYXRpdm8sIG9yZGVuLCBub19yZWFgKS5mZXRjaEFsbCgpKS5yb3dzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50LnJlYSA9IChhd2FpdCBkYkNsaWVudC5xdWVyeShgc2VsZWN0ICogZnJvbSByZWEgb3JkZXIgYnkgb3BlcmF0aXZvLCBvcmRlbiwgcmVhYCkuZmV0Y2hBbGwoKSkucm93cztcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhX2dyb3VwcyA9IChhd2FpdCBkYkNsaWVudC5xdWVyeShgXHJcbiAgICAgICAgICAgIHNlbGVjdCBncnVwbywganNvbmJfYWdnKHRvX2pzb24oci4qKSkgYXMgY29kaWdvcyBmcm9tIG5vX3JlYSByIGdyb3VwIGJ5IGdydXBvIG9yZGVyIGJ5IDFcclxuICAgICAgICBgKS5mZXRjaEFsbCgpKS5yb3dzO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWFfZ3JvdXBzMCA9IChhd2FpdCBkYkNsaWVudC5xdWVyeShgXHJcbiAgICAgICAgICAgIHNlbGVjdCBncnVwbzAgYXMgZ3J1cG8sIGpzb25iX2FnZyh0b19qc29uKHIuKikpIGFzIGNvZGlnb3MgZnJvbSBub19yZWEgciBncm91cCBieSBncnVwbzAgb3JkZXIgYnkgMVxyXG4gICAgICAgIGApLmZldGNoQWxsKCkpLnJvd3M7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYV9zdXAgPSAoYXdhaXQgZGJDbGllbnQucXVlcnkoYHNlbGVjdCAqIGZyb20gbm9fcmVhX3N1cCBvcmRlciBieSBvcGVyYXRpdm8sIG9yZGVuLCBub19yZWFfc3VwYCkuZmV0Y2hBbGwoKSkucm93cztcclxuICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5yZWFfc3VwID0gKGF3YWl0IGRiQ2xpZW50LnF1ZXJ5KGBzZWxlY3QgKiBmcm9tIHJlYV9zdXAgb3JkZXIgYnkgb3BlcmF0aXZvLCBvcmRlbiwgcmVhX3N1cGApLmZldGNoQWxsKCkpLnJvd3M7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYV9zdXBfZ3JvdXBzID0gKGF3YWl0IGRiQ2xpZW50LnF1ZXJ5KGBcclxuICAgICAgICAgICAgc2VsZWN0IGdydXBvX3N1cCwganNvbmJfYWdnKHRvX2pzb24oci4qKSkgYXMgY29kaWdvcyBmcm9tIG5vX3JlYV9zdXAgciBncm91cCBieSBncnVwb19zdXAgb3JkZXIgYnkgMVxyXG4gICAgICAgIGApLmZldGNoQWxsKCkpLnJvd3M7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYV9zdXBfZ3JvdXBzMCA9IChhd2FpdCBkYkNsaWVudC5xdWVyeShgXHJcbiAgICAgICAgICAgIHNlbGVjdCBncnVwbzBfc3VwIGFzIGdydXBvLCBqc29uYl9hZ2codG9fanNvbihyLiopKSBhcyBjb2RpZ29zIGZyb20gbm9fcmVhX3N1cCByIGdyb3VwIGJ5IGdydXBvMF9zdXAgb3JkZXIgYnkgMVxyXG4gICAgICAgIGApLmZldGNoQWxsKCkpLnJvd3M7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50LmNvblJlYUhvZ2FyID0gKGF3YWl0IGRiQ2xpZW50LnF1ZXJ5KGBcclxuICAgICAgICAgICAgc2VsZWN0IGNvbl9yZWFfaG9nYXIsIG9wZXJhdGl2bywgY29uZmlnX3NvcnRlbyBmcm9tIG9wZXJhdGl2b3Mgam9pbiBwYXJhbWV0cm9zIHVzaW5nIChvcGVyYXRpdm8pIHdoZXJlIHVuaWNvX3JlZ2lzdHJvXHJcbiAgICAgICAgYCkuZmV0Y2hVbmlxdWVSb3coKSkucm93O1xyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgaWYgKGNsaWVudCkge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgZXhlY3V0ZVF1ZXJpZXMoY2xpZW50KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuaW5EYkNsaWVudChudWxsLCBhc3luYyAoZGJDbGllbnQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBleGVjdXRlUXVlcmllcyhkYkNsaWVudCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnY2FjaGVzJywgdGhpcy5jYWNoZXMudGFibGVDb250ZW50KVxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnY2FjaGVzIG9rJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vc3FsTm9yZWFDYXNlKGNhbXBvTmVjZXNhcmlvOnN0cmluZyl7XHJcbiAgICAgICAgLy8gICAgdmFyIGJlPXRoaXM7XHJcbiAgICAgICAgLy8gICAgcmV0dXJuIGBDQVNFICR7YmUuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWEubWFwKHg9PlxyXG4gICAgICAgIC8vICAgICAgICBgIFdIRU4gbm9yZWEgID0gJHtiZS5kYi5xdW90ZUxpdGVyYWwoeC5ub19yZWEpfTo6aW50ZWdlciBUSEVOICR7YmUuZGIucXVvdGVMaXRlcmFsKHhbY2FtcG9OZWNlc2FyaW9dKX1gXHJcbiAgICAgICAgLy8gICAgKS5qb2luKCcnKX0gV0hFTiBUUlVFIFRIRU4gTlVMTCBFTkRgXHJcbiAgICAgICAgLy99ICAgIFxyXG4gICAgICAgIG92ZXJyaWRlIGdldENvbnRleHQocmVxOiBSZXF1ZXN0KTogQ29udGV4dCB7XHJcbiAgICAgICAgICAgIHZhciBmYXRoZXJDb250ZXh0ID0gc3VwZXIuZ2V0Q29udGV4dChyZXEpO1xyXG4gICAgICAgICAgICByZXR1cm4geyAuLi5wZXJtaXNvc1NlZ3VuVXN1YXJpbyh0aGlzLmNhY2hlcywgZmF0aGVyQ29udGV4dC51c2VyKSwgLi4uZmF0aGVyQ29udGV4dCB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBvdmVycmlkZSBnZXRDb250ZXh0Rm9yRHVtcCgpOiBDb250ZXh0IHtcclxuICAgICAgICAgICAgdmFyIGZhdGhlckNvbnRleHQgPSBzdXBlci5nZXRDb250ZXh0Rm9yRHVtcCgpO1xyXG4gICAgICAgICAgICByZXR1cm4geyBzdXBlcnVzZXI6IHRydWUsIHB1ZWRlOiB0aGlzLmNhY2hlcy5wZXJtaXNvc1N1cGVydXNlciwgLi4uZmF0aGVyQ29udGV4dCB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBvdmVycmlkZSBhc3luYyBnZXRDbGllbnRTZXR1cEZvclNlbmRUb0Zyb250RW5kKHJlcTogUmVxdWVzdCkge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLi4uKGF3YWl0IHN1cGVyLmdldENsaWVudFNldHVwRm9yU2VuZFRvRnJvbnRFbmQocmVxKSksXHJcbiAgICAgICAgICAgICAgICBpZHBlcjogcmVxLnVzZXI/LmlkcGVyXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgYXN5bmMgY3JlYXRlUmVzb3VyY2VzRm9yQ2FjaGVKc29uKCkge1xyXG4gICAgICAgICAgICB2YXIgYmUgPSB0aGlzO1xyXG4gICAgICAgICAgICBjb25zdCBBUFBfTkFNRSA9IGF3YWl0IGJlLmdldEFwcE5hbWUoKVxyXG4gICAgICAgICAgICBjb25zdCBzdWZpam8gPSBiZS5nZXRTdWZpam9Gcm9tYmFzZVVybChiZS5jb25maWcuc2VydmVyWydiYXNlLXVybCddKTtcclxuXHJcbiAgICAgICAgICAgIHZhciBqc29uUmVzdWx0ID0ge1xyXG4gICAgICAgICAgICAgICAgdmVyc2lvbjogQVBQX0RNX1ZFUlNJT04sXHJcbiAgICAgICAgICAgICAgICBhcHBOYW1lOiAnZG1lbmN1JyxcclxuICAgICAgICAgICAgICAgIGNhY2hlOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgXCJjYW1wb1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwib2ZmbGluZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiZmFsbGJhY2stc2luY3JvXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvcmVhY3QucHJvZHVjdGlvbi5taW4uanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9yZWFjdC1kb20ucHJvZHVjdGlvbi5taW4uanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9tYXRlcmlhbC11aS5wcm9kdWN0aW9uLm1pbi5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL3JlZHV4Lm1pbi5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL3JlYWN0LXJlZHV4Lm1pbi5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIC8vXCJsaWIvcXJjb2RlLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvcmVxdWlyZS1icm8uanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9jYXN0LWVycm9yLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvbGlrZS1hci5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL2Jlc3QtZ2xvYmFscy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL2pzb240YWxsLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvanMtdG8taHRtbC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL3JlZHV4LXR5cGVkLXJlZHVjZXIuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImRtZW5jdS9hZGFwdC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiZG1lbmN1L3VubG9nZ2VkLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvanMteWFtbC51bWQubWluLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIveGxzeC1ub3cudW1kLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIveGxzeC1ub3ctYnJvd3Nlci51bWQuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9sYXp5LXNvbWUuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9zcWwtdG9vbHMuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImRpYWxvZy1wcm9taXNlL2RpYWxvZy1wcm9taXNlLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJtb21lbnQvbWluL21vbWVudC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwicGlrYWRheS9waWthZGF5LmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvcG9seWZpbGxzLWJyby5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL2JpZy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL3R5cGUtc3RvcmUuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi90eXBlZC1jb250cm9scy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL2FqYXgtYmVzdC1wcm9taXNlLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJteS1hamF4LmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJteS1zdGFydC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL215LWxvY2FsZGIuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9teS13ZWJzcWxkYi5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL215LWxvY2FsZGIuanMubWFwXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvbXktd2Vic3FsZGIuanMubWFwXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvbXktdGhpbmdzLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvbXktdGFibGVzLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvbXktaW5mb3JtLW5ldC1zdGF0dXMuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImxpYi9teS1tZW51LmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvbXktc2tpbi5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL2NsaWVudGUtZW4tY2FzdGVsbGFuby5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwibGliL3NlcnZpY2Utd29ya2VyLWFkbWluLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJsaWIvcmVkdXgtdHlwZWQtcmVkdWNlci5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiY2xpZW50X21vZHVsZXMvb3BlcmF0aXZvcy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiY2xpZW50X21vZHVsZXMvdmFyY2FsLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJjbGllbnRfbW9kdWxlcy9mb3JtLXN0cnVjdHVyZS5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiY2xpZW50X21vZHVsZXMvbWV0YS1lbmMuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImNsaWVudF9tb2R1bGVzL2RhdG9zLWV4dC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiY2xpZW50X21vZHVsZXMvY29uc2lzdGVuY2lhcy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiY2xpZW50X21vZHVsZXMvcHJvY2VzYW1pZW50by5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiZG1lbmN1L3RpcG9zLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJkbWVuY3UvcmVuZGVyLWNvbmZpZy5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiZG1lbmN1L3JlbmRlci1pbml0LmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJkbWVuY3UvaGVscGVycy1jYXNpbGxlcm9zLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJkbWVuY3UvaGVscGVycy1mb3JtdWxhcmlvLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJkbWVuY3UvY2FsY3Vsb3MtZW5jdWVzdGEuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImRtZW5jdS9ieXBhc3MtZm9ybXVsYXJpby5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiZG1lbmN1L3JlZHV4LWZvcm11bGFyaW8uanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImRtZW5jdS9yZW5kZXItZ2VuZXJhbC5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiZG1lbmN1L3JlbmRlci1mb3JtdWxhcmlvLmpzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJkbWVuY3UvYWJyaXItZm9ybXVsYXJpby5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiY2xpZW50X21vZHVsZXMvcm93LXZhbGlkYXRvci5qc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiY2xpZW50L21lbnUuanNcIixcclxuICAgICAgICAgICAgICAgICAgICBcImltZy9sb2dvLnBuZ1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIC8vXCJpbWcvbG9nby1kbS5wbmdcIixcclxuICAgICAgICAgICAgICAgICAgICBcImltZy9sb2dvLTEyOC5wbmdcIixcclxuICAgICAgICAgICAgICAgICAgICBcImltZy9tYWluLWxvYWRpbmcuZ2lmXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJpbWcvYm9ycmFyLXZhbG9yLnBuZ1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiaW1nL2ZvbmRvLXNhbHRlYWRvLWVycm9yLnBuZ1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiaW1nL2ZvbmRvLXNhbHRlYWRvLnBuZ1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiaW1nL2JhY2tncm91bmQtdGVzdC5wbmdcIixcclxuICAgICAgICAgICAgICAgICAgICAvL1wiY2xpZW50LXNldHVwXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJjc3MvYm9vdHN0cmFwLm1pbi5jc3NcIixcclxuICAgICAgICAgICAgICAgICAgICBcImNzcy9mb3JtdWxhcmlvLXJlYWN0LmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwicGlrYWRheS9waWthZGF5LmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiZGlhbG9nLXByb21pc2UvZGlhbG9nLXByb21pc2UuY3NzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJyZWwtZW5jL2VzdGFkb3MuY3NzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJjc3MvbXktdGFibGVzLmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiY3NzL215LW1lbnUuY3NzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJjc3MvbXktdGhpbmdzLmNzc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiY3NzL21lbnUuY3NzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJyZWwtZW5jL215LXRoaW5nczIuY3NzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJjc3MvZm9ybXVsYXJpby1yZWFjdC5jc3NcIixcclxuICAgICAgICAgICAgICAgICAgICBcImNzcy9Sb2JvdG8tUmVndWxhci50dGZcIixcclxuICAgICAgICAgICAgICAgICAgICBcImNhcmdhLWRtL3dlYi1tYW5pZmVzdC53ZWJtYW5pZmVzdFwiLFxyXG4gICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgIGZhbGxiYWNrczpbXHJcbiAgICAgICAgICAgICAgICAgICAge3BhdGg6ICdkbV9zaW5jcm9uaXphcicsIGZhbGxiYWNrOidmYWxsYmFjay1zaW5jcm8nfVxyXG4gICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgIGRlZmF1bHRGYWxsYmFjazogXCJvZmZsaW5lXCJcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAganNvblJlc3VsdC5jYWNoZSA9IGpzb25SZXN1bHQuY2FjaGUuY29uY2F0KGdldE1hbmlmZXN0SW1hZ2VJY29ucyhBUFBfTkFNRSwgc3VmaWpvKS5tYXAoKGVsZW0pID0+IGBtZW51LyR7ZWxlbS5zcmN9YCkpO1xyXG5cclxuICAgICAgICAgICAgdmFyIHNraW4gPSBiZS5jb25maWdbJ2NsaWVudC1zZXR1cCddLnNraW47XHJcbiAgICAgICAgICAgIGlmIChza2luICYmIGJlLmFjdGl2ZVNraW5GaWxlcykge1xyXG4gICAgICAgICAgICAgICAgdmFyIHNraW5VcmwgPSBza2luICsgJy8nO1xyXG4gICAgICAgICAgICAgICAganNvblJlc3VsdC5jYWNoZS5wdXNoKGAke3NraW59L2ltZy9iYWNrZ3JvdW5kLXRlc3QucG5nYCk7XHJcbiAgICAgICAgICAgICAgICAvLyBDb252ZXJ0aW1vcyBlbCBTZXQgYSBBcnJheSB5IG1hcGVhbW9zIGxhcyBydXRhc1xyXG4gICAgICAgICAgICAgICAgdmFyIHNraW5SZXNvdXJjZXMgPSBBcnJheS5mcm9tKGJlLmFjdGl2ZVNraW5GaWxlcykubWFwKGZ1bmN0aW9uIChwYXRoUmVsYXRpdm8pIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBTaSBlcyB1biAuc3R5bCwgbG8gcGVkaW1vcyBjb21vIC5jc3MgcG9ycXVlIGVsIFNlcnZpY2UgV29ya2VyIFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGRlYmUgY2FjaGVhciBlbCByZWN1cnNvIGZpbmFsIHF1ZSBlbCBuYXZlZ2Fkb3Igc29saWNpdGEuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNraW5VcmwgKyBwYXRoUmVsYXRpdm8ucmVwbGFjZSgvXFwuc3R5bCQvLCAnLmNzcycpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAganNvblJlc3VsdC5jYWNoZSA9IGpzb25SZXN1bHQuY2FjaGUuY29uY2F0KHNraW5SZXNvdXJjZXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBqc29uUmVzdWx0XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGdldE1lbnVDb250cm9sZXMoX2NvbnRleHQ6IENvbnRleHQpOiBNZW51SW5mb0Jhc2VbXSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAncHJvYycsIG5hbWU6ICdlbmN1ZXN0YXNfcHJvY2VzYW1pZW50b19wYXNhcicsIGxhYmVsOiAncGFzYXIgZW5jdWVzdGFzIGEgcHJvY2VzYW1pZW50bycgfSxcclxuICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdyZXN1bWVuJywgdGFibGU6ICdjb250cm9sX3Jlc3VtZW4nLCBzZWxlY3RlZEJ5RGVmYXVsdDogdHJ1ZSB9LFxyXG4gICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2RvbWluaW8nLCB0YWJsZTogJ2NvbnRyb2xfY2FtcG9fZG9taW5pbycgfSxcclxuICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICd6b25hJywgdGFibGU6ICdjb250cm9sX2NhbXBvX3pvbmEnIH0sXHJcbiAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnY29tdW5hJywgdGFibGU6ICdjb250cm9sX2NhbXBvX2NvbXVuYScgfSxcclxuICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICfDoXJlYScsIHRhYmxlOiAnY29udHJvbF9jYW1wb19hcmVhJyB9LFxyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgfTtcclxuICAgICAgICBnZXRNZW51VmFyaW9zKGNvbnRleHQ6IENvbnRleHQpOiBNZW51SW5mb0Jhc2Uge1xyXG4gICAgICAgICAgICBsZXQgc3VibWVudVZhcmlvczogTWVudUluZm9CYXNlW10gPSBbeyBtZW51VHlwZTogJ2FicmlyX2VuY3Vlc3RhJywgbmFtZTogJ2FicmlyX2VuY3Vlc3RhJyB9XVxyXG4gICAgICAgICAgICBpZiAoY29udGV4dC5wdWVkZT8uY2FtcG8/LmVkaXRhcikge1xyXG4gICAgICAgICAgICAgICAgc3VibWVudVZhcmlvcy5wdXNoKHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdob2phX3J1dGEnLCB0YWJsZTogJ2dyaWxsYV9ob2phX3J1dGEnLCBsYWJlbDogJ2hvamEgZGUgcnV0YScgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoY29udGV4dC5wdWVkZT8uY2FtcG8/LmFkbWluaXN0cmFyKSB7XHJcbiAgICAgICAgICAgICAgICBzdWJtZW51VmFyaW9zLnB1c2goeyBtZW51VHlwZTogJ3Byb2MnLCBuYW1lOiAnZW5jdWVzdGFkb3JfZG1zX21vc3RyYXInLCBsYWJlbDogJ2ZvcnphciBkZXNjYXJnYSBlbmN1ZXN0YXMgRE0nIH0pO1xyXG4gICAgICAgICAgICAgICAgc3VibWVudVZhcmlvcy5wdXNoKHsgbWVudVR5cGU6ICdwcm9jJywgbmFtZTogJ2VuY3Vlc3RhX2JsYW5xdWVhcl9wcmV2aXN1YWxpemFyJywgbGFiZWw6ICdibGFucXVlYXIgZW5jdWVzdGEnIH0pO1xyXG4gICAgICAgICAgICAgICAgc3VibWVudVZhcmlvcy5wdXNoKHsgbWVudVR5cGU6ICdwcm9jJywgbmFtZTogJ2VuY3Vlc3RhX2JvcnJhcl9wcmV2aXN1YWxpemFyJywgbGFiZWw6ICdxdWl0YXIgZW5jdWVzdGEgZGUgbGEgbXVlc3RyYScgfSk7XHJcbiAgICAgICAgICAgICAgICBzdWJtZW51VmFyaW9zLnB1c2goeyBtZW51VHlwZTogJ3Byb2MnLCBuYW1lOiAnZW5jdWVzdGFzX2NhcGFjaXRhY2lvbl9ib3JyYXInLCBsYWJlbDogJ3F1aXRhciBlbmN1ZXN0YXMgZGUgY2FwYSBkZSBsYSBtdWVzdHJhJyB9KTtcclxuICAgICAgICAgICAgICAgIHN1Ym1lbnVWYXJpb3MucHVzaCh7IG1lbnVUeXBlOiAncHJvYycsIG5hbWU6ICdvcGVyYXRpdm9fbWlncmFyJywgbGFiZWw6ICdtaWdyYXIgb3BlcmF0aXZvJyB9KTtcclxuICAgICAgICAgICAgICAgIHN1Ym1lbnVWYXJpb3MucHVzaCh7IG1lbnVUeXBlOiAncHJvYycsIG5hbWU6ICdlbmN1ZXN0YV9jYXBhX2FfcHJvZF9wYXNhcicsIGxhYmVsOiAncGFzYXIgZW5jdWVzdGFzIGRlIGNhcGEgYSBwcm9kJyB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoY29udGV4dC5wdWVkZT8uZW5jdWVzdGFzPy5wcm9jZXNhcikge1xyXG4gICAgICAgICAgICAgICAgc3VibWVudVZhcmlvcy5wdXNoKHsgbWVudVR5cGU6ICdwcm9jJywgbmFtZTogJ2ludGVyY2FtYmlhcl9lbmN1ZXN0YXMnIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB7IG1lbnVUeXBlOiAnbWVudScsIG5hbWU6ICd2YXJpb3MnLCBtZW51Q29udGVudDogc3VibWVudVZhcmlvcyB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGdldE1lbnVBc2lnbmFjaW9uKGNvbnRleHQ6IENvbnRleHQpOiBNZW51SW5mb0Jhc2Uge1xyXG4gICAgICAgICAgICBsZXQgZmlsdHJvUmVjZXBjaW9uaXN0YSA9IGNvbnRleHQudXNlci5yb2wgPT0gJ3JlY2VwY2lvbmlzdGEnID8geyByZWNlcGNpb25pc3RhOiBjb250ZXh0LnVzZXIuaWRwZXIgfSA6IHt9O1xyXG4gICAgICAgICAgICBsZXQgc3VibWVudUFzaWduYWNpb246IE1lbnVJbmZvQmFzZVtdID0gW107XHJcbiAgICAgICAgICAgIGlmIChjb250ZXh0LnB1ZWRlPy5jYW1wbz8uYWRtaW5pc3RyYXIpIHtcclxuICAgICAgICAgICAgICAgIHN1Ym1lbnVBc2lnbmFjaW9uLnB1c2goeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2dlbmVyYWwnLCB0YWJsZTogJ2FyZWFzX2FzaWduYWNpb25fZ2VuZXJhbCcgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc3VibWVudUFzaWduYWNpb24ucHVzaChcclxuICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdlbmN1ZXN0YWRvcicsIHRhYmxlOiAndF9lbmN1X2FyZWFzJywgZmY6IHsgdGFyZWE6ICdlbmN1JywgLi4uZmlsdHJvUmVjZXBjaW9uaXN0YSB9IH0sXHJcbiAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnaW5ncmVzYWRvcicsIHRhYmxlOiAndF9pbmdyX2FyZWFzJywgZmY6IHsgdGFyZWE6ICdpbmdyJywgLi4uZmlsdHJvUmVjZXBjaW9uaXN0YSB9IH0sXHJcbiAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAncmVjdXBlcmFkb3InLCB0YWJsZTogJ3RhcmVhc190ZW1fYXNpZ25hY2lvbl9yZWN1JywgZmY6IHsgdGFyZWFfYWN0dWFsOiAncmVjdScsIHRhcmVhOiAncmVjdScsIC4uLmZpbHRyb1JlY2VwY2lvbmlzdGEgfSB9LFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAoY29udGV4dC5wdWVkZT8uY2FtcG8/LmFkbWluaXN0cmFyKSB7XHJcbiAgICAgICAgICAgICAgICBzdWJtZW51QXNpZ25hY2lvbi5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdzdXBlcnZpc29yJywgdGFibGU6ICd0YXJlYXNfdGVtX2FzaWduYWNpb25fc3VwZScsIGZmOiB7IHRhcmVhX2FjdHVhbDogJ3N1cGUnLCB0YXJlYTogJ3N1cGUnLCAuLi5maWx0cm9SZWNlcGNpb25pc3RhIH0gfSxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHJldHVybiB7IG1lbnVUeXBlOiAnbWVudScsIG5hbWU6ICdhc2lnbmFjaW9uJywgbGFiZWw6ICdhc2lnbmFjacOzbicsIG1lbnVDb250ZW50OiBzdWJtZW51QXNpZ25hY2lvbiB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGdldE1lbnVSZWNlcGNpb24oY29udGV4dDogQ29udGV4dCk6IE1lbnVJbmZvQmFzZSB7XHJcbiAgICAgICAgICAgIGxldCBzdWJtZW51UmVjZXBjaW9uOiBNZW51SW5mb0Jhc2VbXSA9IFtdXHJcbiAgICAgICAgICAgIHN1Ym1lbnVSZWNlcGNpb24ucHVzaChcclxuICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdlbmN1ZXN0YWRvcicsIHRhYmxlOiAnZW5jdWVzdGFkb3Jlc19hc2lnbmFkb3MnIH0sXHJcbiAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAncmVjdXBlcmFkb3InLCB0YWJsZTogJ3JlY3VwZXJhZG9yZXNfYXNpZ25hZG9zJyB9LFxyXG4gICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2luZ3Jlc2Fkb3InLCB0YWJsZTogJ2luZ3Jlc2Fkb3Jlc19hc2lnbmFkb3MnIH0sXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmIChjb250ZXh0LnB1ZWRlPy5jYW1wbz8uYWRtaW5pc3RyYXIpIHtcclxuICAgICAgICAgICAgICAgIHN1Ym1lbnVSZWNlcGNpb24ucHVzaChcclxuICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnc3VwZXJ2aXNvcicsIHRhYmxlOiAnc3VwZXJ2aXNvcmVzX2FzaWduYWRvcycgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnbWlzX3N1cGVydmlzb3JlcycsIHRhYmxlOiAnbWlzX3N1cGVydmlzb3Jlc19hc2lnbmFkb3MnIH1cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHsgbWVudVR5cGU6ICdtZW51JywgbmFtZTogJ3JlY2VwY2lvbicsIGxhYmVsOiAncmVjZXBjacOzbicsIG1lbnVDb250ZW50OiBzdWJtZW51UmVjZXBjaW9uIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGdldE1lbnVDYXJ0byhjb250ZXh0OiBDb250ZXh0KTogTWVudUluZm9CYXNlIHwgbnVsbCB7XHJcbiAgICAgICAgICAgIGxldCBzdWJtZW51Q2FydG86IE1lbnVJbmZvQmFzZVtdID0gW11cclxuICAgICAgICAgICAgaWYgKGNvbnRleHQucHVlZGU/LmNhbXBvPy5hZG1pbmlzdHJhcikge1xyXG4gICAgICAgICAgICAgICAgc3VibWVudUNhcnRvLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2NvbXVuYXMnLCB0YWJsZTogJ2NvbXVuYXMnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2JhcnJpb3MnLCB0YWJsZTogJ2JhcnJpb3MnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ2ZyYWNjaW9uZXMnLCB0YWJsZTogJ2ZyYWNjaW9uZXMnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3JhZGlvcycsIHRhYmxlOiAncmFkaW9zJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdtYW56YW5hcycsIHRhYmxlOiAnbWFuemFuYXMnIH0sXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICByZXR1cm4geyBtZW51VHlwZTogJ21lbnUnLCBuYW1lOiAnY2FydG8nLCBsYWJlbDogJ2NhcnRvZ3JhZsOtYScsIG1lbnVDb250ZW50OiBzdWJtZW51Q2FydG8gfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBnZXRNZW51Q29uZmlndXJhcihjb250ZXh0OiBDb250ZXh0KTogTWVudUluZm9CYXNlW10ge1xyXG4gICAgICAgICAgICBjb25zdCBtZW51Q29uZmlndXJhcjogTWVudUluZm9CYXNlW10gPSBbXTtcclxuXHJcbiAgICAgICAgICAgIGlmIChjb250ZXh0LnB1ZWRlPy5jYW1wbz8uYWRtaW5pc3RyYXIgfHwgY29udGV4dC5wdWVkZT8uZW5jdWVzdGFzPy5wcm9jZXNhcikge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3VibWVudU11ZXN0cmE6IE1lbnVJbmZvQmFzZVtdID0gW1xyXG4gICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICd0ZW0nLCBsYWJlbDogJ1RFTScgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAndGVtX2VkaWNpb24nLCBsYWJlbDogJ2VkaWNpw7NuIFRFTScgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAncHJvYycsIG5hbWU6ICdtdWVzdHJhX2dlbmVyYXInLCBsYWJlbDogJ2dlbmVyYXIgbXVlc3RyYScgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnc2VtYW5hcycgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnYXJlYV9lbmNfcHJveGltYXMnIH0sXHJcbiAgICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICAgICAgbWVudUNvbmZpZ3VyYXIucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVudVR5cGU6ICdtZW51JyxcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnbXVlc3RyYScsXHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdtdWVzdHJhJyxcclxuICAgICAgICAgICAgICAgICAgICBtZW51Q29udGVudDogc3VibWVudU11ZXN0cmFcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoY29udGV4dC5wdWVkZT8uY2FzaWxsZXJvc190ZXh0bz8uZWRpdGFyKSB7XHJcbiAgICAgICAgICAgICAgICBtZW51Q29uZmlndXJhci5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICBtZW51VHlwZTogJ21lbnUnLFxyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdtZXRhZGF0b3MnLFxyXG4gICAgICAgICAgICAgICAgICAgIG1lbnVDb250ZW50OiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdvcGVyYXRpdm9zJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAnbWVudScsIG5hbWU6ICdyZWEvbm9yZWEnLCBtZW51Q29udGVudDpbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAncmVhJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ25vX3JlYScgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdyZWFfc3VwJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ25vX3JlYV9zdXAnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF19LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnZm9ybXVsYXJpb3MnLCB0YWJsZTogJ2Nhc2lsbGVyb3NfcHJpbmNpcGFsZXMnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdwbGFubycsIHRhYmxlOiAnY2FzaWxsZXJvcycgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3ZhcmlhYmxlcycsIHRhYmxlOiAnY2FzaWxsZXJvcycsIGZjOiBbeyBjb2x1bW46ICd2YXJfbmFtZScsIG9wZXJhdG9yOiAnIT1cXHUyMjA1JywgdmFsdWU6IG51bGwgfV0gfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3RpcG9jJywgbGFiZWw6ICd0aXBvcyBkZSBjZWxkYXMnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICd0aXBvY190aXBvYycsIGxhYmVsOiAnaW5jbHVzaW9uZXMgZGUgY2VsZGFzJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoY29udGV4dC5zdXBlcnVzZXIpIHtcclxuICAgICAgICAgICAgICAgIG1lbnVDb25maWd1cmFyLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZW51VHlwZTogJ21lbnUnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnZXN0YWRvc19hY2Npb25lc190YXJlYXMnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ2VzdGFkb3MvYWNjaW9uZXMvdGFyZWFzJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVudUNvbnRlbnQ6IFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICd0YXJlYXMnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnZXN0YWRvcycgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdhY2Npb25lcycgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdlc3RhZG9zX2FjY2lvbmVzJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3RhcmVhc19wcm94aW1hcycgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ21vbWVudG9zX2NvbnNpc3RlbmNpYScgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAncGFyYW1ldHJvcycgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnbW9kb3NfZG0nIH0sXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoY29udGV4dC5wdWVkZT8uY2FtcG8/LmFkbWluaXN0cmFyIHx8IGNvbnRleHQucHVlZGU/LmVuY3Vlc3Rhcz8ucHJvY2VzYXIpIHtcclxuICAgICAgICAgICAgICAgIG1lbnVDb25maWd1cmFyLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgIG1lbnVUeXBlOiAnbWVudScsXHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3VzdWFyaW9zJyxcclxuICAgICAgICAgICAgICAgICAgICBtZW51Q29udGVudDogW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAndXN1YXJpb3MnLCBzZWxlY3RlZEJ5RGVmYXVsdDogdHJ1ZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAncm9sZXMnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICdwZXJtaXNvcycgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3JvbGVzX3Blcm1pc29zJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gbWVudUNvbmZpZ3VyYXI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBsb3MgbWl4aW5zIChtZXRhLWVuYywgcHJvY2VzYW1pZW50bykgbG8gZGVjbGFyYW4gc2luIHBhcsOhbWV0cm9zLCBwZXJvIGJhY2tlbmQtcGx1cyBzaWVtcHJlIGxvIGxsYW1hIGNvbiBjb250ZXh0LlxyXG4gICAgICAgIC8vIEVsIHRpcG8gZGUgcmV0b3JubyBxdWUgZGVjbGFyYSBvcGVyYXRpdm9zIChNZW51SW5mb1tdKSBubyBhZG1pdGUgZm9ybWFzIHF1ZSBiYWNrZW5kLXBsdXMgc8OtIGFjZXB0YSB5IGRtZW5jdSB1c2FcclxuICAgICAgICAvLyAoZmYgY29tbyBvYmpldG8sIGZjIGNvbiBjb2x1bW4pOyBzZSBkZXZ1ZWx2ZSBNZW51SW5mb0Jhc2VbXSwgcXVlIGVzIGxvIHF1ZSBkZWNsYXJhIGJhY2tlbmQtcGx1cy5cclxuICAgICAgICAvLyBRdWl0YXIgZXN0YSBsw61uZWEgY3VhbmRvIHNlIGNvcnJpamFuIGxvcyB0aXBvcyBkZSBtZW7DuiBlbiBvcGVyYXRpdm9zL2JhY2tlbmQtcGx1cyAoZWwgY29tcGlsYWRvciBhdmlzYSBzaSBkZWphIGRlIGhhY2VyIGZhbHRhKS5cclxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIE1lbnVEZWZpbml0aW9uIGRlIG9wZXJhdGl2b3MgbcOhcyBlc3RyaWN0byBxdWUgZWwgZGUgYmFja2VuZC1wbHVzXHJcbiAgICAgICAgb3ZlcnJpZGUgZ2V0TWVudShjb250ZXh0PzogQ29udGV4dCkge1xyXG4gICAgICAgICAgICBpZiAoY29udGV4dCA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldE1lbnUgZGUgZG1lbmN1IHJlcXVpZXJlIGVsIGNvbnRleHQgcGFyYSBhcm1hciBlbCBtZW7DuiBzZWfDum4gbG9zIHBlcm1pc29zJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IG1lbnU6IE1lbnVJbmZvQmFzZVtdID0gW107XHJcbiAgICAgICAgICAgIGlmIChnZXRNb2RvQnlQb2xpY3koY29udGV4dC5iZSkgPT09ICdSRUxFVkFNSUVOVE8nKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY29udGV4dC5wdWVkZT8uZW5jdWVzdGFzPy5yZWxldmFyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVudS5wdXNoKHsgbWVudVR5cGU6ICdwYXRoJywgbmFtZTogJ3JlbGV2YW1pZW50bycsIHBhdGg6ICcvY2FtcG8nIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgbWVudS5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAnc2luY3Jvbml6YXJfZG0nLCBuYW1lOiAnc2luY3Jvbml6YXInIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICdjYW1iaWFyX21vZG9fZG0nLCBuYW1lOiAnY2FtYmlhcl9tb2RvJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY29udGV4dC5wdWVkZT8uY2FtcG8/LmVkaXRhcikge1xyXG4gICAgICAgICAgICAgICAgICAgIG1lbnUucHVzaChcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRNZW51QXNpZ25hY2lvbihjb250ZXh0KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRNZW51UmVjZXBjaW9uKGNvbnRleHQpXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY29udGV4dC5wdWVkZT8uY2FtcG8/LmFkbWluaXN0cmFyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lbnUucHVzaCh7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAndGFyZWFzX3RlbV9maW5fY2FtcG8nLCBsYWJlbDogJ2VzcGVyYSBmaW4gZGUgY2FtcG8nIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lbnUucHVzaCh7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAndGFyZWFzX3RlbV9hbmFsaXNpc19jYW1wbycsIGxhYmVsOiAnYW7DoWxpc2lzIGRlIGNhbXBvJyB9KVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBtZW51LnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbnVUeXBlOiAnbWVudScsIG5hbWU6ICdzdXBlcnZpc2lvbicsIGxhYmVsOiAnc3VwZXJ2aXNpw7NuJywgbWVudUNvbnRlbnQ6IFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnc3VwZXJ2aXNhcicsIHRhYmxlOiAndGFyZWFzX3RlbV9pbmdyZXNvJywgZmY6IHsgdGFyZWE6ICdzdXBlJywgYXNpZ25hZG86IGNvbnRleHQudXNlci5pZHBlciB9IH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LnB1ZWRlPy5jYW1wbz8uZWRpdGFyIHx8IGNvbnRleHQucHVlZGU/LmNhbXBvPy5hZG1pbmlzdHJhciB8fCBjb250ZXh0LnB1ZWRlPy5lbmN1ZXN0YXM/LnByb2Nlc2FyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVudS5wdXNoKHRoaXMuZ2V0TWVudVZhcmlvcyhjb250ZXh0KSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoY29udGV4dC5wdWVkZT8uY2FtcG8/LmFkbWluaXN0cmFyIHx8IGNvbnRleHQucHVlZGU/LmVuY3Vlc3Rhcz8ucHJvY2VzYXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBtZW51LnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICdtZW51JywgbmFtZTogJ2NvbnRyb2wnLCBtZW51Q29udGVudDogdGhpcy5nZXRNZW51Q29udHJvbGVzKGNvbnRleHQpIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIC8qe21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3BhcnRpY2lwYWNpb24nICAgICAgICAsIHRhYmxlOidjb250cm9sX2NhbXBvX3BhcnRpY2lwYWNpb24nICB9LCovXHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQucHVlZGU/LmVuY3Vlc3Rhcz8ucHJvY2VzYXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBtZW51LnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbnVUeXBlOiAnbWVudScsIG5hbWU6ICdwcm9jZXNhcicsIG1lbnVDb250ZW50OiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtZW51VHlwZTogJ3RhYmxlJywgbmFtZTogJ3ZhcmlhYmxlcycgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAndmFyaWFibGVzX2N1ZXN0aW9uYXJpbycsIHRhYmxlOiAnY2FzaWxsZXJvcycsIHRkOiB7IGVkaXRhYmxlOiBmYWxzZSwgYWxsb3c6IHsgdXBkYXRlOiBmYWxzZSwgaW1wb3J0OiBmYWxzZSwgZGVsZXRlOiBmYWxzZSwgaW5zZXJ0OiBmYWxzZSB9IH0sIGZjOiBbeyBjb2x1bW46ICd2YXJfbmFtZScsIG9wZXJhdG9yOiAnIT1cXHUyMjA1JywgdmFsdWU6IG51bGwgfV0gfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnY29uc2lzdGVuY2lhcycgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnY29uc2lzdGVuY2lhc19jdWVzdGlvbmFyaW8nLCB0YWJsZTogJ2Nhc2lsbGVyb3MnLCBmZjogeyB0aXBvYzogJ0NPTlMnIH0gfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnaW5jb25zaXN0ZW5jaWFzJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbWVudVR5cGU6ICd0YWJsZScsIG5hbWU6ICd0YWJsYV9kYXRvcycgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAnZGljY2lvbmFyaW8nLCBsYWJlbDogJ2RpY2Npb25hcmlvcycgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1lbnVUeXBlOiAndGFibGUnLCBuYW1lOiAndGFyZWFzX3RlbV9wcm9jZXNhbWllbnRvJywgbGFiZWw6ICdlbmN1ZXN0YXMnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IG1lbnVDb25maWd1cmFyID0gdGhpcy5nZXRNZW51Q29uZmlndXJhcihjb250ZXh0KTtcclxuICAgICAgICAgICAgICAgIGlmIChtZW51Q29uZmlndXJhci5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICBtZW51LnB1c2goeyBtZW51VHlwZTogJ21lbnUnLCBuYW1lOiAnY29uZmlndXJhcicsIG1lbnVDb250ZW50OiBtZW51Q29uZmlndXJhciB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IG1lbnVDYXJ0byA9IHRoaXMuZ2V0TWVudUNhcnRvKGNvbnRleHQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKG1lbnVDYXJ0bykge1xyXG4gICAgICAgICAgICAgICAgICAgIG1lbnUucHVzaChtZW51Q2FydG8pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0ZW1hc1Zpc2libGVzKHRoaXMuY2FjaGVzLmF5dWRhLCBxdWllbkNvbnN1bHRhQXl1ZGEoY29udGV4dCkpLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgbWVudS5wdXNoKHsgbWVudVR5cGU6ICdheXVkYScsIG5hbWU6ICdheXVkYScgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHsgbWVudSB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBvdmVycmlkZSBwcmVwYXJlR2V0VGFibGVzKCkge1xyXG4gICAgICAgICAgICB2YXIgYmUgPSB0aGlzO1xyXG4gICAgICAgICAgICBzdXBlci5wcmVwYXJlR2V0VGFibGVzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0VGFibGVEZWZpbml0aW9uID0ge1xyXG4gICAgICAgICAgICAgICAgLi4udGhpcy5nZXRUYWJsZURlZmluaXRpb25cclxuICAgICAgICAgICAgICAgICwgcm9sZXNcclxuICAgICAgICAgICAgICAgICwgdXN1YXJpb3NcclxuICAgICAgICAgICAgICAgICwgcGVyc29uYWxcclxuICAgICAgICAgICAgICAgICwgcmVjZXBjaW9uaXN0YXNcclxuICAgICAgICAgICAgICAgICwgZW5jdWVzdGFkb3Jlc19hc2lnbmFkb3NcclxuICAgICAgICAgICAgICAgICwgaW5ncmVzYWRvcmVzX2FzaWduYWRvc1xyXG4gICAgICAgICAgICAgICAgLCByZWN1cGVyYWRvcmVzX2FzaWduYWRvc1xyXG4gICAgICAgICAgICAgICAgLCBzdXBlcnZpc29yZXNfYXNpZ25hZG9zXHJcbiAgICAgICAgICAgICAgICAsIG1pc19zdXBlcnZpc29yZXNfYXNpZ25hZG9zXHJcbiAgICAgICAgICAgICAgICAsIG1pc19lbmN1ZXN0YWRvcmVzXHJcbiAgICAgICAgICAgICAgICAsIHJlY3VwZXJhZG9yZXNcclxuICAgICAgICAgICAgICAgICwgc3VwZXJ2aXNvcmVzXHJcbiAgICAgICAgICAgICAgICAsIHBlcnNvbmFsX3JvbFxyXG4gICAgICAgICAgICAgICAgLCBwZXJtaXNvc1xyXG4gICAgICAgICAgICAgICAgLCByb2xlc19wZXJtaXNvc1xyXG4gICAgICAgICAgICAgICAgLCByb2xlc19zdWJvcmRpbmFkb3NcclxuICAgICAgICAgICAgICAgICwgbm9fcmVhXHJcbiAgICAgICAgICAgICAgICAsIG5vX3JlYV9zdXBcclxuICAgICAgICAgICAgICAgICwgcmVhXHJcbiAgICAgICAgICAgICAgICAsIHJlYV9zdXBcclxuICAgICAgICAgICAgICAgICwgc2VtYW5hc1xyXG4gICAgICAgICAgICAgICAgLCBlc3RhZG9zXHJcbiAgICAgICAgICAgICAgICAsIGFjY2lvbmVzXHJcbiAgICAgICAgICAgICAgICAsIGVzdGFkb3NfYWNjaW9uZXNcclxuICAgICAgICAgICAgICAgICwgdGFyZWFzX3Byb3hpbWFzXHJcbiAgICAgICAgICAgICAgICAsIHRlbVxyXG4gICAgICAgICAgICAgICAgLCB0ZW1fZWRpY2lvblxyXG4gICAgICAgICAgICAgICAgLCBoaXN0b3JpYWxfdGVtXHJcbiAgICAgICAgICAgICAgICAsIG1vZG9zX2RtXHJcbiAgICAgICAgICAgICAgICAsIHBhcmFtZXRyb3NcclxuICAgICAgICAgICAgICAgICwgb3BlcmFjaW9uZXNcclxuICAgICAgICAgICAgICAgICwgY29tdW5hc1xyXG4gICAgICAgICAgICAgICAgLCBhcmVhc1xyXG4gICAgICAgICAgICAgICAgLCBzaW5jcm9uaXphY2lvbmVzXHJcbiAgICAgICAgICAgICAgICAsIHRhcmVhc1xyXG4gICAgICAgICAgICAgICAgLCB0YXJlYXNfdGVtXHJcbiAgICAgICAgICAgICAgICAsIHRhcmVhc190ZW1fYXNpZ25hY2lvbl9lbmN1XHJcbiAgICAgICAgICAgICAgICAsIHRhcmVhc190ZW1fYXNpZ25hY2lvbl9yZWN1XHJcbiAgICAgICAgICAgICAgICAsIHRhcmVhc190ZW1fYXNpZ25hY2lvbl9zdXBlXHJcbiAgICAgICAgICAgICAgICAsIHRhcmVhc190ZW1fYXNpZ25hY2lvbl9pbmdyXHJcbiAgICAgICAgICAgICAgICAsIHRhcmVhc19hcmVhc1xyXG4gICAgICAgICAgICAgICAgLCBhcmVhc19hc2lnbmFjaW9uX2dlbmVyYWxcclxuICAgICAgICAgICAgICAgICwgZ3JpbGxhX2hvamFfcnV0YVxyXG4gICAgICAgICAgICAgICAgLCB0X2VuY3VfYXJlYXNcclxuICAgICAgICAgICAgICAgICwgdF9yZWN1X2FyZWFzXHJcbiAgICAgICAgICAgICAgICAsIHRfc3VwZV9hcmVhc1xyXG4gICAgICAgICAgICAgICAgLCB0X2luZ3JfYXJlYXNcclxuICAgICAgICAgICAgICAgICwgbWlzX3RhcmVhc1xyXG4gICAgICAgICAgICAgICAgLCB0ZW1fYXNpZ25hY2lvblxyXG4gICAgICAgICAgICAgICAgLCB0YXJlYXNfdGVtX3JlY2VwY2lvblxyXG4gICAgICAgICAgICAgICAgLCB0YXJlYXNfdGVtX2luZ3Jlc29cclxuICAgICAgICAgICAgICAgICwgdGFyZWFzX3RlbV9maW5fY2FtcG9cclxuICAgICAgICAgICAgICAgICwgdGFyZWFzX3RlbV9wcm9jZXNhbWllbnRvXHJcbiAgICAgICAgICAgICAgICAsIHRhcmVhc190ZW1fYW5hbGlzaXNfY2FtcG9cclxuICAgICAgICAgICAgICAgICwgbWlzX3RhcmVhc19hcmVhc1xyXG4gICAgICAgICAgICAgICAgLCBjb250cm9sX2NhbXBvXHJcbiAgICAgICAgICAgICAgICAsIGNvbnRyb2xfcmVzdW1lblxyXG4gICAgICAgICAgICAgICAgLCBjb250cm9sX2NhbXBvX3pvbmE6IGNvbnRleHQgPT4gY29udHJvbF9jYW1wbyhjb250ZXh0LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbm9tYnJlOiAnY29udHJvbF9jYW1wb19jb211bmEnLCB0aXRsZTogJ2NvbnRyb2wgY2FtcG8geCB6b25hIHNvbG8gY2VtZW50bycsIGNhbXBvc0NvcnRlOiBbeyBuYW1lOiAnem9uYScsIHR5cGVOYW1lOiAndGV4dCcgfV0sIHNpbmhvZ2ZpbjogIWNvbnRleHQuYmUuY2FjaGVzLnRhYmxlQ29udGVudC5jb25SZWFIb2dhci5jb25fcmVhX2hvZ2FyLCBmaWx0cm9XaGVyZTogJ2RvbWluaW89MycgfVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgLCBjb250cm9sX2NhbXBvX2NvbXVuYTogY29udGV4dCA9PiBjb250cm9sX2NhbXBvKGNvbnRleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgeyBub21icmU6ICdjb250cm9sX2NhbXBvX2NvbXVuYScsIHRpdGxlOiAnY29udHJvbCBjYW1wbyB4IGNvbXVuYSBzb2xvIGNlbWVudG8nLCBjYW1wb3NDb3J0ZTogW3sgbmFtZTogJ3pvbmEnLCB0eXBlTmFtZTogJ3RleHQnIH0sIHsgbmFtZTogJ25yb2NvbXVuYScsIHR5cGVOYW1lOiAndGV4dCcgfV0sIHNpbmhvZ2ZpbjogIWNvbnRleHQuYmUuY2FjaGVzLnRhYmxlQ29udGVudC5jb25SZWFIb2dhci5jb25fcmVhX2hvZ2FyLCBmaWx0cm9XaGVyZTogJ2RvbWluaW89MycgfVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgLCBjb250cm9sX2NhbXBvX2FyZWE6IGNvbnRleHQgPT4gY29udHJvbF9jYW1wbyhjb250ZXh0LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbm9tYnJlOiAnY29udHJvbF9jYW1wb19jb211bmEnLCB0aXRsZTogJ2NvbnRyb2wgY2FtcG8geCBhcmVhJywgY2FtcG9zQ29ydGU6IFt7IG5hbWU6ICd6b25hJywgdHlwZU5hbWU6ICd0ZXh0JyB9LCB7IG5hbWU6ICducm9jb211bmEnLCB0eXBlTmFtZTogJ3RleHQnIH0sIHsgbmFtZTogJ2FyZWEnLCB0eXBlTmFtZTogJ2ludGVnZXInIH0sIHsgbmFtZTogJ3BhcnRpY2lwYWNpb25fYScsIHR5cGVOYW1lOiAndGV4dCcgfSwgeyBuYW1lOiAnY2xhc2VfYScsIHR5cGVOYW1lOiAndGV4dCcgfV0sIHNpbmhvZ2ZpbjogIWNvbnRleHQuYmUuY2FjaGVzLnRhYmxlQ29udGVudC5jb25SZWFIb2dhci5jb25fcmVhX2hvZ2FyIH1cclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICwgY29udHJvbF9jYW1wb19wYXJ0aWNpcGFjaW9uOiBjb250ZXh0ID0+IGNvbnRyb2xfY2FtcG8oY29udGV4dCxcclxuICAgICAgICAgICAgICAgICAgICB7IG5vbWJyZTogJ2NvbnRyb2xfY2FtcG9fY29tdW5hJywgdGl0bGU6ICdjb250cm9sIGNhbXBvIHggcGFydGljaXBhY2lvbicsIGNhbXBvc0NvcnRlOiBbeyBuYW1lOiAncGFydGljaXBhY2lvbicsIHR5cGVOYW1lOiAnYmlnaW50JyB9XSwgc2luaG9nZmluOiAhY29udGV4dC5iZS5jYWNoZXMudGFibGVDb250ZW50LmNvblJlYUhvZ2FyLmNvbl9yZWFfaG9nYXIgfVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgLCBjb250cm9sX2NhbXBvX2RvbWluaW86IGNvbnRleHQgPT4gY29udHJvbF9jYW1wbyhjb250ZXh0LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbm9tYnJlOiAnY29udHJvbF9jYW1wb19jb211bmEnLCB0aXRsZTogJ2NvbnRyb2wgY2FtcG8geCBkb21pbmlvJywgY2FtcG9zQ29ydGU6IFt7IG5hbWU6ICdkb21pbmlvJywgdHlwZU5hbWU6ICdpbnRlZ2VyJyB9XSwgc2luaG9nZmluOiAhY29udGV4dC5iZS5jYWNoZXMudGFibGVDb250ZW50LmNvblJlYUhvZ2FyLmNvbl9yZWFfaG9nYXIgfVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgLCBjb250cm9sX2RpYXNfY2FyZ2FcclxuICAgICAgICAgICAgICAgICwgdml2aWVuZGFzXHJcbiAgICAgICAgICAgICAgICAsIHZpc2l0YXNcclxuICAgICAgICAgICAgICAgICwgaG9nYXJlc1xyXG4gICAgICAgICAgICAgICAgLCBwZXJzb25hc1xyXG4gICAgICAgICAgICAgICAgLCB2aXNpdGFzX3N1cFxyXG4gICAgICAgICAgICAgICAgLCBob2dhcmVzX3N1cFxyXG4gICAgICAgICAgICAgICAgLCBwZXJzb25hc19zdXBcclxuICAgICAgICAgICAgICAgICwgZGljY2lvbmFyaW9cclxuICAgICAgICAgICAgICAgICwgZGljdmFyXHJcbiAgICAgICAgICAgICAgICAsIGRpY3RyYVxyXG4gICAgICAgICAgICAgICAgLCBpbmNvbnNpc3RlbmNpYXNfY3VtcGxlbl9jb25kaWNpb25cclxuICAgICAgICAgICAgICAgICwgdGVtX2JvcnJhZGFzXHJcbiAgICAgICAgICAgICAgICAsIGJhcnJpb3NcclxuICAgICAgICAgICAgICAgICwgZnJhY2Npb25lc1xyXG4gICAgICAgICAgICAgICAgLCByYWRpb3NcclxuICAgICAgICAgICAgICAgICwgbWFuemFuYXNcclxuICAgICAgICAgICAgICAgICwgYXJlYV9lbmNfcHJveGltYXNcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBiZS5hcHBlbmRUb1RhYmxlRGVmaW5pdGlvbignY29uc2lzdGVuY2lhcycsIGZ1bmN0aW9uICh0YWJsZURlZiwgY29udGV4dCkge1xyXG4gICAgICAgICAgICAgICAgdGFibGVEZWYuZWRpdGFibGUgPSB0YWJsZURlZi5lZGl0YWJsZSB8fCBjb250ZXh0Py5wdWVkZT8uZW5jdWVzdGFzPy5wcm9jZXNhcjtcclxuICAgICAgICAgICAgICAgIHRhYmxlRGVmLmZpZWxkcy5mb3JFYWNoKGZ1bmN0aW9uIChmaWVsZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZC5uYW1lID09ICdlcnJvcl9jb21waWxhY2lvbicpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkLnZpc2libGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJyoqKioqKioqKioqKiBRVUlUQVIgRVNUTyBlcnJvcl9jb21waWxhY2lvbiB5YSBlcyB2aXNpYmxlJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQudmlzaWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgYmUuYXBwZW5kVG9UYWJsZURlZmluaXRpb24oJ2luY29uc2lzdGVuY2lhcycsIGZ1bmN0aW9uICh0YWJsZURlZiwgY29udGV4dCkge1xyXG4gICAgICAgICAgICAgICAgdGFibGVEZWYuc3FsID0geyAuLi50YWJsZURlZi5zcWwsIGlzVGFibGU6IHRydWUgfTtcclxuICAgICAgICAgICAgICAgIHRhYmxlRGVmLmZpZWxkcy5zcGxpY2UoMiwgMCxcclxuICAgICAgICAgICAgICAgICAgICB7IG5hbWU6ICd2aXZpZW5kYScsIHR5cGVOYW1lOiAndGV4dCcsIGVkaXRhYmxlOiBmYWxzZSB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbmFtZTogJ2hvZ2FyJywgdHlwZU5hbWU6ICdiaWdpbnQnLCBlZGl0YWJsZTogZmFsc2UgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IG5hbWU6ICdwZXJzb25hJywgdHlwZU5hbWU6ICdiaWdpbnQnLCBlZGl0YWJsZTogZmFsc2UgfSxcclxuICAgICAgICAgICAgICAgICAgICB7IG5hbWU6ICd2aXNpdGEnLCB0eXBlTmFtZTogJ2JpZ2ludCcsIGVkaXRhYmxlOiBmYWxzZSB9LFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHRhYmxlRGVmLmVkaXRhYmxlID0gdGFibGVEZWYuZWRpdGFibGUgfHwgY29udGV4dD8ucHVlZGU/LmVuY3Vlc3Rhcz8uanVzdGlmaWNhcjtcclxuICAgICAgICAgICAgICAgIHRhYmxlRGVmLmZpZWxkcy5mb3JFYWNoKGZ1bmN0aW9uIChmaWVsZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZC5uYW1lID09ICdwa19pbnRlZ3JhZGEnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLnZpc2libGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkLm5hbWUgPT0gJ2p1c3RpZmljYWNpb24nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLmVkaXRhYmxlID0gY29udGV4dD8uZm9yRHVtcCB8fCBjb250ZXh0Py5wdWVkZT8uZW5jdWVzdGFzPy5qdXN0aWZpY2FyO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICB0YWJsZURlZi5maWVsZHMgPSB0YWJsZURlZi5maWVsZHMuY29uY2F0KFsndGFyZWFfYWN0dWFsJywgJ3RhcmVhX2FudGVyaW9yJ10ubWFwKGZuID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBuYW1lOiBmbiwgdHlwZU5hbWU6ICd0ZXh0JywgZWRpdGFibGU6IGZhbHNlLCBpblRhYmxlOiBmYWxzZSB9XHJcbiAgICAgICAgICAgICAgICB9KSlcclxuICAgICAgICAgICAgICAgIC8vc2FjYXIgY2FtcG9zIGRlIHZpdGFsZXMhIFxyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVnRXhwRmllbGRzVml0YSA9IG5ldyBSZWdFeHAoJ14oY29tcHxpbmZlfGNvZF9jYXVzYXxkb21pKSQnKTtcclxuICAgICAgICAgICAgICAgIHRhYmxlRGVmLmZpZWxkcyA9IHRhYmxlRGVmLmZpZWxkcy5maWx0ZXIoZiA9PiAhKHJlZ0V4cEZpZWxkc1ZpdGEudGVzdChmLm5hbWUpKSlcclxuXHJcbiAgICAgICAgICAgICAgICB2YXIgcV9pbmNvbnNpc3QgPSB0YWJsZURlZi5zcWwhLmZyb21cclxuICAgICAgICAgICAgICAgIHRhYmxlRGVmLnNxbCEuZnJvbSA9IGBcclxuICAgICAgICAgICAgICAgIChzZWxlY3QgaS4qLCB0LnRhcmVhX2FjdHVhbCwgdGFyZWFfYW50ZXJpb3JcclxuICAgICAgICAgICAgICAgICAgZnJvbSAke3FfaW5jb25zaXN0fSBpIFxyXG4gICAgICAgICAgICAgICAgICBqb2luIHRlbSB0IG9uIGkudml2aWVuZGE9dC5lbmMgYW5kIGkub3BlcmF0aXZvPXQub3BlcmF0aXZvIFxyXG4gICAgICAgICAgICAgICAgICBsZWZ0IGpvaW4gdGFyZWFzX3RlbSB0dCBvbiB0Lm9wZXJhdGl2bz10dC5vcGVyYXRpdm8gYW5kIHQuZW5jPXR0LmVuYyBhbmQgdC50YXJlYV9hY3R1YWw9dHQudGFyZWEgXHJcbiAgICAgICAgICAgICAgICAgIGxlZnQgam9pbiBsYXRlcmFsIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0IHRhcmVhIGFzIHRhcmVhX2FudGVyaW9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIGhpc3RvcmlhbF90ZW0gaHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlIHQub3BlcmF0aXZvID0gaHQub3BlcmF0aXZvIGFuZCB0LmVuYyA9IGh0LmVuY1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXIgYnkgdHNfc2FsaWRhIGRlc2NcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0IDFcclxuICAgICAgICAgICAgICAgICAgICApIGFzIHRhIG9uIHRydWVcclxuICAgICAgICAgICAgICAgICkgICBcclxuICAgICAgICAgICAgYFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBiZS5hcHBlbmRUb1RhYmxlRGVmaW5pdGlvbignb3BlcmF0aXZvcycsIGZ1bmN0aW9uICh0YWJsZURlZiwgY29udGV4dCkge1xyXG4gICAgICAgICAgICAgICAgdGFibGVEZWYuZmllbGRzLnNwbGljZSgyLCAwLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2NvbmZpZ19zb3J0ZW8nLFxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGVOYW1lOiAnanNvbmInLFxyXG4gICAgICAgICAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgfSwge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdoYWJpbGl0YWNpb25fYm90b25fZm9ybXVsYXJpbycsXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZU5hbWU6ICdqc29uYicsXHJcbiAgICAgICAgICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICB9LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2Rpc2Zvcm1fY2VycmFkbycsXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZU5hbWU6ICdib29sZWFuJyxcclxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgIGVkaXRhYmxlOiBjb250ZXh0Py5mb3JEdW1wIHx8IGNvbnRleHQgIT0gbnVsbCAmJiBbJ2FkbWluJywgJ2Rpc19jb25jZXB0dWFsJ10uaW5jbHVkZXMoY29udGV4dC51c2VyLnJvbClcclxuICAgICAgICAgICAgICAgIH0sIHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnY29uX3JlYV9ob2dhcicsXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZU5hbWU6ICdib29sZWFuJyxcclxuICAgICAgICAgICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdERiVmFsdWU6ICd0cnVlJ1xyXG4gICAgICAgICAgICAgICAgfSwge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdwZXJtaXRlX2dlbmVyYXJfbXVlc3RyYScsXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZU5hbWU6ICdib29sZWFuJyxcclxuICAgICAgICAgICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdERiVmFsdWU6ICdmYWxzZSdcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBiZS5hcHBlbmRUb1RhYmxlRGVmaW5pdGlvbigndmFyaWFibGVzJywgZnVuY3Rpb24gKHRhYmxlRGVmLCBjb250ZXh0KSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZXNBZG1pbiA9IGNvbnRleHQ/LnVzZXIucm9sID09PSAnYWRtaW4nO1xyXG4gICAgICAgICAgICAgICAgdGFibGVEZWYuZWRpdGFibGUgPSB0YWJsZURlZi5lZGl0YWJsZSB8fCBjb250ZXh0Py5wdWVkZT8uZW5jdWVzdGFzPy5wcm9jZXNhcjtcclxuICAgICAgICAgICAgICAgIHRhYmxlRGVmLmFsbG93ID0geyBkZWxldGU6IGVzQWRtaW4gfTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgYmUuYXBwZW5kVG9UYWJsZURlZmluaXRpb24oJ21vbWVudG9zX2NvbnNpc3RlbmNpYScsIGZ1bmN0aW9uICh0YWJsZURlZiwgX2NvbnRleHQpIHtcclxuICAgICAgICAgICAgICAgIHRhYmxlRGVmLmZpZWxkcy5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbmFtZTogJ2NvbmRpY2lvbicsIHR5cGVOYW1lOiAndGV4dCcsIG51bGxhYmxlOiBmYWxzZSwgZGVmYXVsdERiVmFsdWU6ICd0cnVlJyB9LFxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgICAgYmUuYXBwZW5kVG9UYWJsZURlZmluaXRpb24oJ3BhcmFtZXRyb3MnLCBmdW5jdGlvbiAodGFibGVEZWYpIHtcclxuICAgICAgICAgICAgICAgIHRhYmxlRGVmLmZpZWxkcy5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgIHsgbmFtZTogJ21vZG9fZG1fZGVmZWN0bycsIHR5cGVOYW1lOiAndGV4dCcsIGVkaXRhYmxlOiB0cnVlLCBudWxsYWJsZTogZmFsc2UsIGRlZmF1bHREYlZhbHVlOiBcIidjYXBhJ1wiIH0sXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgdGFibGVEZWYuZm9yZWlnbktleXMgPSB0YWJsZURlZi5mb3JlaWduS2V5cyB8fCBbXTtcclxuICAgICAgICAgICAgICAgIHRhYmxlRGVmLmZvcmVpZ25LZXlzLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgeyByZWZlcmVuY2VzOiAnbW9kb3NfZG0nLCBmaWVsZHM6IFt7IHNvdXJjZTogJ21vZG9fZG1fZGVmZWN0bycsIHRhcmdldDogJ21vZG9fZG0nIH1dIH1cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgdmFyIEFwcERtRW5jdSA9IGVtZXJnZUFwcERtRW5jdShlbWVyZ2VBcHBQcm9jZXNhbWllbnRvKGVtZXJnZUFwcENvbnNpc3RlbmNpYXMoZW1lcmdlQXBwVmFyQ2FsKGVtZXJnZUFwcERhdG9zRXh0KGVtZXJnZUFwcE9wZXJhdGl2b3MoQXBwQmFja2VuZCkpKSkpKTtcclxuZXhwb3J0IHR5cGUgQXBwQXBwRG1FbmN1VHlwZSA9IEluc3RhbmNlVHlwZTx0eXBlb2YgQXBwRG1FbmN1PjsiXX0=