@projectcor/maia-components 2.11.32-2 → 2.11.32-3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/atoms/FeedbackButton/FeedbackButton.styles.js +2 -2
- package/lib/components/atoms/icons/MaiaChatLayoutMenuIcon.js +33 -0
- package/lib/components/atoms/icons/index.js +2 -2
- package/lib/components/molecules/ChatAIClientSelector/ChatAIClientSelector.js +10 -41
- package/lib/components/molecules/ChatAIContent/ChatAIContent.js +7 -8
- package/lib/components/molecules/ChatAIHistory/ChatAIHistory.js +3 -16
- package/lib/components/molecules/ChatAIHome/ChatAIHome.js +6 -2
- package/lib/components/molecules/ChatAIHome/styles.js +14 -7
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +178 -165
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +254 -347
- package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +28 -15
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +81 -16
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.styles.js +17 -2
- package/lib/components/molecules/ChatAIModal/floatingPanelMotion/FloatingPanelMotion.js +16 -0
- package/lib/components/molecules/ChatAIModal/floatingPanelMotion/FloatingPanelMotion.styles.js +12 -0
- package/lib/components/molecules/ChatAIModal/floatingPanelMotion/constants.js +13 -0
- package/lib/components/molecules/ChatAIModal/floatingPanelMotion/index.js +3 -0
- package/lib/components/molecules/ChatAIModal/floatingPanelMotion/useFloatingPanelDragTilt.js +57 -0
- package/lib/components/molecules/ChatAIModal/layout.js +35 -0
- package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.js +9 -10
- package/lib/components/molecules/ChatAIProjectSelector/ChatAIProjectSelector.js +6 -37
- package/lib/components/molecules/Sidebar/Sidebar.js +323 -269
- package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +22 -17
- package/lib/components/molecules/Sidebar/Sidebar.styles.js +37 -54
- package/lib/dev/Providers.js +2 -2
- package/lib/hooks/useChatManager/useChatManager.js +121 -65
- package/lib/hooks/useChats/useChats.js +4 -12
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +145 -73
- package/lib/hooks/useProjectSearch.js +11 -4
- package/lib/hooks/useSmoothStreamText/index.js +2 -0
- package/lib/hooks/useSmoothStreamText/useSmoothStreamText.js +189 -0
- package/lib/hooks/useStreamingMessage/index.js +3 -0
- package/lib/hooks/useStreamingMessage/streamingStore.js +69 -0
- package/lib/hooks/useStreamingMessage/useStreamingMessage.js +22 -0
- package/lib/lang/br/index.js +6 -11
- package/lib/lang/en/index.js +6 -11
- package/lib/lang/es/index.js +6 -11
- package/lib/lang/fr/index.js +6 -11
- package/lib/mocks/mockChats.js +395 -0
- package/lib/mocks/mockedUser.js +169 -0
- package/lib/services/maia/Chats/getChatsByUserId.js +8 -14
- package/lib/services/maia/Chats/index.js +1 -7
- package/lib/services/maia/Orchestrator/orchestrator.js +6 -4
- package/lib/services/maia/RecentProjects/getRecentProjects.js +2 -2
- package/lib/services/maia/client.js +9 -44
- package/lib/services/query/projectSearchByValueQuery.js +2 -2
- package/lib/store/chatsStore.types.js +2 -10
- package/lib/store/useChatsStore.js +37 -75
- package/lib/types/Chat.js +1 -3
- package/lib/types/Project.js +1 -1
- package/package.json +1 -1
- package/lib/components/atoms/icons/ChatConversation.js +0 -40
- package/lib/components/molecules/Sidebar/SidebarChats.styles.js +0 -73
- package/lib/components/molecules/Sidebar/SidebarChatsSection.js +0 -69
- package/lib/components/molecules/Sidebar/SidebarChatsSectionModal.js +0 -150
- package/lib/components/molecules/Sidebar/SidebarHistoryChat.js +0 -238
- package/lib/components/molecules/Sidebar/sidebarChats.helpers.js +0 -70
- package/lib/components/molecules/Sidebar/sidebarChats.types.js +0 -14
- package/lib/dev/fixtures/devUser.js +0 -173
- package/lib/dev/fixtures/mockedUser.js +0 -169
- package/lib/services/maia/Chats/getChatMessagesV2.js +0 -114
- package/lib/services/maia/Chats/getSessionByAgent.js +0 -66
- package/lib/services/maia/Chats/getSessionsGroupedV2.js +0 -70
|
@@ -0,0 +1,395 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
5
|
+
export var MOCK_TIME_SLEEP_RESPONSE = 1000; // milliseconds
|
|
6
|
+
|
|
7
|
+
export var MOCK_CHATS_RESPONSE = {
|
|
8
|
+
items: [{
|
|
9
|
+
chat_id: 'bfcad520-dbf7-4d99-ba9b-0eed93424459',
|
|
10
|
+
chat_status: 'active',
|
|
11
|
+
last_question: 'What is the profitability of this project?',
|
|
12
|
+
last_question_date: '2025-05-14T17:48:08Z',
|
|
13
|
+
message_id: uuidv4(),
|
|
14
|
+
q_answers: 1,
|
|
15
|
+
general_rating: 5,
|
|
16
|
+
user_id: '47138',
|
|
17
|
+
agent_id: '123'
|
|
18
|
+
}, {
|
|
19
|
+
chat_id: 'e5711ca1-00f5-4e35-afc8-22f1a230ca25',
|
|
20
|
+
chat_status: 'active',
|
|
21
|
+
last_question: 'What are the upcoming tasks due?',
|
|
22
|
+
last_question_date: '2025-05-14T15:16:06Z',
|
|
23
|
+
message_id: uuidv4(),
|
|
24
|
+
q_answers: 1,
|
|
25
|
+
general_rating: 5,
|
|
26
|
+
user_id: '47138',
|
|
27
|
+
agent_id: '123'
|
|
28
|
+
}, {
|
|
29
|
+
chat_id: '415bc2ff-6061-461a-b867-039ee905c118',
|
|
30
|
+
chat_status: 'active',
|
|
31
|
+
last_question: 'What is the progress of this project?',
|
|
32
|
+
last_question_date: '2025-05-14T15:16:03Z',
|
|
33
|
+
message_id: uuidv4(),
|
|
34
|
+
q_answers: 1,
|
|
35
|
+
general_rating: 5,
|
|
36
|
+
user_id: '47138',
|
|
37
|
+
agent_id: '123'
|
|
38
|
+
}, {
|
|
39
|
+
chat_id: '9c4699b3-0e7f-4540-9fad-4cfb7ef6242a',
|
|
40
|
+
chat_status: 'active',
|
|
41
|
+
last_question: 'What is the progress of this project?',
|
|
42
|
+
last_question_date: '2025-05-14T15:16:00Z',
|
|
43
|
+
message_id: uuidv4(),
|
|
44
|
+
q_answers: 1,
|
|
45
|
+
general_rating: 5,
|
|
46
|
+
user_id: '47138',
|
|
47
|
+
agent_id: '123'
|
|
48
|
+
}, {
|
|
49
|
+
chat_id: '51b67392-5ea7-4f2e-ac44-83f4c825767c',
|
|
50
|
+
chat_status: 'active',
|
|
51
|
+
last_question: 'What is the profitability of this project?',
|
|
52
|
+
last_question_date: '2025-05-14T15:15:59Z',
|
|
53
|
+
message_id: uuidv4(),
|
|
54
|
+
q_answers: 1,
|
|
55
|
+
general_rating: 5,
|
|
56
|
+
user_id: '47138',
|
|
57
|
+
agent_id: '123'
|
|
58
|
+
}, {
|
|
59
|
+
chat_id: '3e9ba276-c688-45a8-8fe1-c491629bbba3',
|
|
60
|
+
chat_status: 'active',
|
|
61
|
+
last_question: 'What are the upcoming tasks due?',
|
|
62
|
+
last_question_date: '2025-05-14T15:15:55Z',
|
|
63
|
+
message_id: uuidv4(),
|
|
64
|
+
q_answers: 1,
|
|
65
|
+
general_rating: 5,
|
|
66
|
+
user_id: '47138',
|
|
67
|
+
agent_id: '123'
|
|
68
|
+
}, {
|
|
69
|
+
chat_id: '04ff2f62-b07b-4c3b-b224-39f2d50e0734',
|
|
70
|
+
chat_status: 'active',
|
|
71
|
+
last_question: 'What is the progress of this project?',
|
|
72
|
+
last_question_date: '2025-05-14T15:15:53Z',
|
|
73
|
+
message_id: uuidv4(),
|
|
74
|
+
q_answers: 1,
|
|
75
|
+
general_rating: 5,
|
|
76
|
+
user_id: '47138',
|
|
77
|
+
agent_id: '123'
|
|
78
|
+
}, {
|
|
79
|
+
chat_id: '4b286566-8bf3-4f84-bd04-6f79f5575dbf',
|
|
80
|
+
chat_status: 'active',
|
|
81
|
+
last_question: 'What is the profitability of this project?',
|
|
82
|
+
last_question_date: '2025-05-14T15:15:51Z',
|
|
83
|
+
message_id: uuidv4(),
|
|
84
|
+
q_answers: 1,
|
|
85
|
+
general_rating: 5,
|
|
86
|
+
user_id: '47138',
|
|
87
|
+
agent_id: '123'
|
|
88
|
+
}, {
|
|
89
|
+
chat_id: 'cc6b91ea-f8ed-4862-acf3-e4ecb454f547',
|
|
90
|
+
chat_status: 'active',
|
|
91
|
+
last_question: 'What are the upcoming tasks due?',
|
|
92
|
+
last_question_date: '2025-05-14T15:15:35Z',
|
|
93
|
+
message_id: uuidv4(),
|
|
94
|
+
q_answers: 1,
|
|
95
|
+
general_rating: 5,
|
|
96
|
+
user_id: '47138',
|
|
97
|
+
agent_id: '123'
|
|
98
|
+
}, {
|
|
99
|
+
chat_id: '5d9eb5fa-733d-4e7c-aea8-0d599a8b01af',
|
|
100
|
+
chat_status: 'active',
|
|
101
|
+
last_question: 'What is the profitability of this project?',
|
|
102
|
+
last_question_date: '2025-05-14T15:15:30Z',
|
|
103
|
+
message_id: uuidv4(),
|
|
104
|
+
q_answers: 1,
|
|
105
|
+
general_rating: 5,
|
|
106
|
+
user_id: '47138',
|
|
107
|
+
agent_id: '123'
|
|
108
|
+
}],
|
|
109
|
+
last_evaluated_key: '%7B%22index%22%3A%2010%7D'
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
// Base de datos de preguntas y respuestas por tipo de chat
|
|
113
|
+
var CHAT_MESSAGES_DATABASE = {
|
|
114
|
+
'bfcad520-dbf7-4d99-ba9b-0eed93424459': [{
|
|
115
|
+
question: '¿Cuál es la rentabilidad esperada del proyecto?',
|
|
116
|
+
answer: 'La rentabilidad proyectada del proyecto es del 28% anual. Los principales indicadores son:\n- ROI esperado: 2.8x\n- Margen de beneficio: 35%\n- Período de recuperación: 18 meses\n\nEstos números están basados en las proyecciones actuales y el análisis de mercado realizado en Q1 2025.',
|
|
117
|
+
project_id: 40532
|
|
118
|
+
}, {
|
|
119
|
+
question: '¿Cuáles son los costos operativos mensuales?',
|
|
120
|
+
answer: 'Los costos operativos mensuales ascienden a $45,000 distribuidos de la siguiente manera:\n- Infraestructura y hosting: $12,000\n- Licencias de software: $8,000\n- Recursos humanos: $20,000\n- Marketing y publicidad: $5,000\n\nEstos costos están dentro del presupuesto proyectado.',
|
|
121
|
+
project_id: 40532
|
|
122
|
+
}, {
|
|
123
|
+
question: '¿Cuál es el margen de contribución actual?',
|
|
124
|
+
answer: 'El margen de contribución actual es del 65%. Esto significa que por cada $100 de ingresos, $65 contribuyen directamente a cubrir los costos fijos y generar utilidades. Este margen está por encima del objetivo del 60%.',
|
|
125
|
+
project_id: 40532
|
|
126
|
+
}],
|
|
127
|
+
'e5711ca1-00f5-4e35-afc8-22f1a230ca25': [{
|
|
128
|
+
question: '¿Cuáles son las próximas tareas pendientes?',
|
|
129
|
+
answer: 'Las próximas tareas prioritarias son:\n1. Finalizar la integración con el sistema de pagos (Fecha límite: 2025-05-20)\n2. Implementar el nuevo módulo de reportes (Fecha límite: 2025-05-25)\n3. Realizar pruebas de carga del sistema (Fecha límite: 2025-05-28)\n4. Preparar la documentación para el lanzamiento (Fecha límite: 2025-06-01)',
|
|
130
|
+
project_id: 40532
|
|
131
|
+
}, {
|
|
132
|
+
question: '¿Quién está asignado a la tarea de integración?',
|
|
133
|
+
answer: 'La tarea de integración está asignada al equipo de desarrollo backend:\n- Líder técnico: María González\n- Desarrolladores: Carlos Ruiz, Ana López\n- QA: Pedro Martínez\n\nEl equipo está trabajando en modalidad híbrida con reuniones diarias de seguimiento.',
|
|
134
|
+
project_id: 40532
|
|
135
|
+
}, {
|
|
136
|
+
question: '¿Cuál es el estado de las tareas críticas?',
|
|
137
|
+
answer: 'Estado de las tareas críticas:\n- ✅ Integración API: 85% completado\n- 🔄 Módulo de reportes: 60% completado\n- ⏳ Pruebas de carga: 30% completado\n- 📋 Documentación: 20% completado\n\nTodas las tareas están en camino de cumplir sus fechas límite.',
|
|
138
|
+
project_id: 40532
|
|
139
|
+
}],
|
|
140
|
+
'415bc2ff-6061-461a-b867-039ee905c118': [{
|
|
141
|
+
question: '¿Cuál es el estado actual del proyecto?',
|
|
142
|
+
answer: 'El proyecto actualmente tiene un progreso del 75%. Los hitos principales completados incluyen la fase de diseño (100%), desarrollo del backend (90%), y la interfaz de usuario (60%). El sprint actual está enfocado en la implementación de nuevas características y la optimización del rendimiento.',
|
|
143
|
+
project_id: 40532
|
|
144
|
+
}, {
|
|
145
|
+
question: '¿Cuáles son los hitos alcanzados este mes?',
|
|
146
|
+
answer: 'Hitos alcanzados en mayo 2025:\n- ✅ Lanzamiento de la versión beta\n- ✅ Integración completa con sistemas externos\n- ✅ Implementación del sistema de autenticación\n- ✅ Optimización del rendimiento en un 40%\n- 🔄 Migración a la nueva infraestructura (80% completado)',
|
|
147
|
+
project_id: 40532
|
|
148
|
+
}, {
|
|
149
|
+
question: '¿Cómo se compara el progreso con el plan original?',
|
|
150
|
+
answer: 'El progreso actual está 5% adelantado respecto al plan original:\n- Plan original: 70% completado\n- Progreso actual: 75% completado\n- Adelanto: +5%\n\nEste adelanto se debe principalmente a la eficiencia del equipo y la optimización de procesos.',
|
|
151
|
+
project_id: 40532
|
|
152
|
+
}],
|
|
153
|
+
'9c4699b3-0e7f-4540-9fad-4cfb7ef6242a': [{
|
|
154
|
+
question: '¿Cuál es el progreso del desarrollo frontend?',
|
|
155
|
+
answer: 'El desarrollo frontend está al 60% completado:\n- Componentes principales: 90%\n- Integración con APIs: 75%\n- Responsive design: 85%\n- Testing: 40%\n- Optimización: 30%\n\nEl equipo frontend está trabajando en paralelo con el backend.',
|
|
156
|
+
project_id: 40531
|
|
157
|
+
}, {
|
|
158
|
+
question: '¿Cuándo estará lista la versión beta?',
|
|
159
|
+
answer: 'La versión beta estará lista para el 25 de mayo de 2025. El cronograma detallado es:\n- Semana 1: Finalización de funcionalidades core\n- Semana 2: Testing y corrección de bugs\n- Semana 3: Preparación de documentación\n- Semana 4: Lanzamiento beta con usuarios selectos',
|
|
160
|
+
project_id: 40531
|
|
161
|
+
}, {
|
|
162
|
+
question: '¿Cuáles son los principales desafíos técnicos?',
|
|
163
|
+
answer: 'Los principales desafíos técnicos identificados son:\n1. Optimización de consultas de base de datos\n2. Implementación de cache distribuido\n3. Manejo de concurrencia en tiempo real\n4. Integración con sistemas legacy\n\nSe están aplicando soluciones escalables para cada desafío.',
|
|
164
|
+
project_id: 40531
|
|
165
|
+
}],
|
|
166
|
+
'51b67392-5ea7-4f2e-ac44-83f4c825767c': [{
|
|
167
|
+
question: '¿Cuál es el ROI esperado del proyecto?',
|
|
168
|
+
answer: 'El ROI esperado del proyecto es de 2.8x en un período de 18 meses. Desglose:\n- Inversión inicial: $500,000\n- Ingresos proyectados: $1,400,000\n- ROI: 180%\n- Período de recuperación: 18 meses\n\nEstas proyecciones están basadas en análisis de mercado y tendencias actuales.',
|
|
169
|
+
project_id: 155671
|
|
170
|
+
}, {
|
|
171
|
+
question: '¿Cuáles son las fuentes de ingresos principales?',
|
|
172
|
+
answer: 'Las fuentes de ingresos principales son:\n1. Suscripciones premium: 45% ($630,000)\n2. Licencias empresariales: 35% ($490,000)\n3. Servicios de consultoría: 15% ($210,000)\n4. Integraciones personalizadas: 5% ($70,000)\n\nLa estrategia se enfoca en diversificar las fuentes de ingresos.',
|
|
173
|
+
project_id: 155671
|
|
174
|
+
}, {
|
|
175
|
+
question: '¿Cómo se compara con la competencia?',
|
|
176
|
+
answer: 'Comparación con la competencia:\n- Nuestro margen: 35%\n- Competencia promedio: 25%\n- Ventaja competitiva: +10%\n\nEsta ventaja se debe a nuestra tecnología propietaria y eficiencia operativa.',
|
|
177
|
+
project_id: 155671
|
|
178
|
+
}],
|
|
179
|
+
'3e9ba276-c688-45a8-8fe1-c491629bbba3': [{
|
|
180
|
+
question: '¿Cuáles son las tareas del sprint actual?',
|
|
181
|
+
answer: 'Tareas del sprint actual (Sprint 12):\n1. Implementar filtros avanzados (8 puntos)\n2. Optimizar consultas de base de datos (5 puntos)\n3. Agregar exportación a PDF (3 puntos)\n4. Corregir bugs de UI (2 puntos)\n5. Actualizar documentación (1 punto)\n\nTotal: 19 puntos - 85% completado',
|
|
182
|
+
project_id: 40532
|
|
183
|
+
}, {
|
|
184
|
+
question: '¿Quién está disponible para nuevas tareas?',
|
|
185
|
+
answer: 'Disponibilidad del equipo:\n- María (Frontend): Disponible desde 2025-05-20\n- Carlos (Backend): Ocupado hasta 2025-05-25\n- Ana (QA): Disponible desde 2025-05-18\n- Pedro (DevOps): Ocupado hasta 2025-05-30\n\nRecomendación: Asignar tareas frontend a María y Ana.',
|
|
186
|
+
project_id: 40532
|
|
187
|
+
}, {
|
|
188
|
+
question: '¿Cuál es la velocidad del equipo?',
|
|
189
|
+
answer: 'La velocidad promedio del equipo es de 45 puntos por sprint:\n- Sprint 10: 42 puntos\n- Sprint 11: 48 puntos\n- Sprint 12 (actual): 38 puntos (proyectado)\n- Promedio: 45 puntos\n\nEl equipo está estable y consistente en su rendimiento.',
|
|
190
|
+
project_id: 40532
|
|
191
|
+
}],
|
|
192
|
+
'04ff2f62-b07b-4c3b-b224-39f2d50e0734': [{
|
|
193
|
+
question: '¿Cuál es el progreso de la fase de testing?',
|
|
194
|
+
answer: 'Progreso de la fase de testing:\n- Tests unitarios: 95% completado\n- Tests de integración: 80% completado\n- Tests de aceptación: 70% completado\n- Tests de rendimiento: 60% completado\n- Tests de seguridad: 85% completado\n\nCobertura total: 78% - Objetivo: 85%',
|
|
195
|
+
project_id: 40532
|
|
196
|
+
}, {
|
|
197
|
+
question: '¿Cuántos bugs críticos quedan por resolver?',
|
|
198
|
+
answer: 'Estado de bugs por prioridad:\n- Críticos: 2 bugs (ambos en proceso)\n- Altos: 8 bugs (5 resueltos)\n- Medios: 15 bugs (12 resueltos)\n- Bajos: 25 bugs (20 resueltos)\n\nLos bugs críticos están programados para resolución antes del 2025-05-20.',
|
|
199
|
+
project_id: 40532
|
|
200
|
+
}, {
|
|
201
|
+
question: '¿Cuándo estará lista la versión de producción?',
|
|
202
|
+
answer: 'La versión de producción estará lista el 15 de junio de 2025:\n- Semana 1: Finalización de testing\n- Semana 2: Corrección de bugs críticos\n- Semana 3: Preparación de despliegue\n- Semana 4: Lanzamiento gradual\n\nEl cronograma está alineado con los objetivos del proyecto.',
|
|
203
|
+
project_id: 40532
|
|
204
|
+
}],
|
|
205
|
+
'4b286566-8bf3-4f84-bd04-6f79f5575dbf': [{
|
|
206
|
+
question: '¿Cuál es el análisis de rentabilidad por segmento?',
|
|
207
|
+
answer: 'Análisis de rentabilidad por segmento:\n- Segmento SMB: 25% margen, $200K ingresos\n- Segmento Enterprise: 40% margen, $800K ingresos\n- Segmento Gobierno: 30% margen, $400K ingresos\n\nEl segmento Enterprise es el más rentable y representa el 57% de los ingresos.',
|
|
208
|
+
project_id: 155671
|
|
209
|
+
}, {
|
|
210
|
+
question: '¿Cuáles son las proyecciones para el próximo trimestre?',
|
|
211
|
+
answer: 'Proyecciones Q2 2025:\n- Ingresos totales: $450,000 (+15% vs Q1)\n- Nuevos clientes: 25 (+20% vs Q1)\n- Churn rate: 5% (objetivo: <8%)\n- LTV promedio: $18,000 (+10% vs Q1)\n\nLas proyecciones están basadas en el pipeline actual y tendencias de mercado.',
|
|
212
|
+
project_id: 155671
|
|
213
|
+
}, {
|
|
214
|
+
question: '¿Cómo afecta la inflación a la rentabilidad?',
|
|
215
|
+
answer: 'Impacto de la inflación en la rentabilidad:\n- Costos operativos: +8% (vs 5% proyectado)\n- Precios: +12% (ajuste implementado)\n- Margen neto: +2% (beneficio del ajuste de precios)\n\nLa estrategia de precios ha compensado el aumento de costos.',
|
|
216
|
+
project_id: 155671
|
|
217
|
+
}],
|
|
218
|
+
'cc6b91ea-f8ed-4862-acf3-e4ecb454f547': [{
|
|
219
|
+
question: '¿Cuáles son las tareas bloqueadas actualmente?',
|
|
220
|
+
answer: 'Tareas bloqueadas:\n1. Integración con sistema de pagos (bloqueada por dependencia externa)\n2. Implementación de notificaciones push (bloqueada por aprobación de seguridad)\n3. Migración de datos (bloqueada por mantenimiento de BD)\n\nSe están coordinando con los equipos externos para resolver los bloqueos.',
|
|
221
|
+
project_id: 40532
|
|
222
|
+
}, {
|
|
223
|
+
question: '¿Quién puede ayudar con las tareas bloqueadas?',
|
|
224
|
+
answer: 'Recursos disponibles para desbloquear tareas:\n- Juan (Arquitecto): Puede ayudar con dependencias técnicas\n- Laura (Product Manager): Puede coordinar con stakeholders externos\n- Roberto (DevOps): Puede resolver problemas de infraestructura\n\nSe ha asignado un coordinador para cada tarea bloqueada.',
|
|
225
|
+
project_id: 40532
|
|
226
|
+
}, {
|
|
227
|
+
question: '¿Cuál es el plan de contingencia?',
|
|
228
|
+
answer: 'Plan de contingencia para tareas bloqueadas:\n- Alternativa 1: Usar sistema de pagos alternativo (implementación: 3 días)\n- Alternativa 2: Implementar notificaciones por email (implementación: 1 día)\n- Alternativa 3: Migración incremental de datos (implementación: 5 días)\n\nSe activará el plan de contingencia si los bloqueos persisten más de 48 horas.',
|
|
229
|
+
project_id: 40532
|
|
230
|
+
}],
|
|
231
|
+
'5d9eb5fa-733d-4e7c-aea8-0d599a8b01af': [{
|
|
232
|
+
question: '¿Cuál es el análisis de costos vs beneficios?',
|
|
233
|
+
answer: 'Análisis costo-beneficio:\n- Costos totales: $350,000\n- Beneficios proyectados: $1,200,000\n- Ratio beneficio/costo: 3.4:1\n- Valor presente neto: $750,000\n- Tasa interna de retorno: 45%\n\nEl proyecto es altamente rentable y supera todos los criterios de inversión.',
|
|
234
|
+
project_id: 155671
|
|
235
|
+
}, {
|
|
236
|
+
question: '¿Cuáles son los riesgos financieros?',
|
|
237
|
+
answer: 'Riesgos financieros identificados:\n1. Fluctuación de divisas (Probabilidad: Media, Impacto: Alto)\n2. Cambios regulatorios (Probabilidad: Baja, Impacto: Alto)\n3. Competencia agresiva (Probabilidad: Alta, Impacto: Medio)\n4. Recesión económica (Probabilidad: Baja, Impacto: Alto)\n\nSe han implementado estrategias de mitigación para cada riesgo.',
|
|
238
|
+
project_id: 155671
|
|
239
|
+
}, {
|
|
240
|
+
question: '¿Cómo se distribuye el presupuesto?',
|
|
241
|
+
answer: 'Distribución del presupuesto:\n- Desarrollo: 40% ($140,000)\n- Infraestructura: 25% ($87,500)\n- Marketing: 20% ($70,000)\n- Operaciones: 10% ($35,000)\n- Contingencia: 5% ($17,500)\n\nEl presupuesto está alineado con las mejores prácticas del sector.',
|
|
242
|
+
project_id: 155671
|
|
243
|
+
}]
|
|
244
|
+
};
|
|
245
|
+
|
|
246
|
+
// Función para generar mensajes aleatorios basados en el chatId
|
|
247
|
+
export var generateMockChatMessages = function generateMockChatMessages(chatId) {
|
|
248
|
+
var messagesForChat = CHAT_MESSAGES_DATABASE[chatId] || CHAT_MESSAGES_DATABASE['bfcad520-dbf7-4d99-ba9b-0eed93424459'];
|
|
249
|
+
|
|
250
|
+
// Generar entre 3 y 6 mensajes aleatorios
|
|
251
|
+
var numMessages = Math.floor(Math.random() * 4) + 3;
|
|
252
|
+
var selectedMessages = [];
|
|
253
|
+
for (var i = 0; i < numMessages; i += 1) {
|
|
254
|
+
var randomIndex = Math.floor(Math.random() * messagesForChat.length);
|
|
255
|
+
var message = messagesForChat[randomIndex];
|
|
256
|
+
|
|
257
|
+
// Generar fecha aleatoria en los últimos 7 días
|
|
258
|
+
var randomDate = new Date();
|
|
259
|
+
randomDate.setDate(randomDate.getDate() - Math.floor(Math.random() * 7));
|
|
260
|
+
randomDate.setHours(Math.floor(Math.random() * 24));
|
|
261
|
+
randomDate.setMinutes(Math.floor(Math.random() * 60));
|
|
262
|
+
selectedMessages.push(_objectSpread(_objectSpread({}, message), {}, {
|
|
263
|
+
date: randomDate.toISOString(),
|
|
264
|
+
message_id: "msg_".concat(Date.now(), "_").concat(i),
|
|
265
|
+
user_id: '15',
|
|
266
|
+
was_helpful: Math.random() > 0.3 ? 1 : 0
|
|
267
|
+
}));
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
// Ordenar por fecha
|
|
271
|
+
selectedMessages.sort(function (a, b) {
|
|
272
|
+
return new Date(a.date).getTime() - new Date(b.date).getTime();
|
|
273
|
+
});
|
|
274
|
+
return {
|
|
275
|
+
items: selectedMessages,
|
|
276
|
+
last_evaluated_key: "%7B%22PK%22%3A%20%22staging%23CHATID%23".concat(chatId, "%23PROJECT%23pm_agent%22%2C%20%22SK%22%3A%20").concat(Date.now(), "%7D")
|
|
277
|
+
};
|
|
278
|
+
};
|
|
279
|
+
|
|
280
|
+
// Mock original para compatibilidad
|
|
281
|
+
export var MOCK_CHAT_MESSAGES_RESPONSE = {
|
|
282
|
+
items: [{
|
|
283
|
+
answer: 'El proyecto actualmente tiene un progreso del 75%. Los hitos principales completados incluyen la fase de diseño (100%), desarrollo del backend (90%), y la interfaz de usuario (60%). El sprint actual está enfocado en la implementación de nuevas características y la optimización del rendimiento.',
|
|
284
|
+
date: '2025-05-14T17:52:44.117485',
|
|
285
|
+
message_id: 'msg_20250514_001',
|
|
286
|
+
question: '¿Cuál es el estado actual del proyecto?',
|
|
287
|
+
user_id: '15',
|
|
288
|
+
was_helpful: true,
|
|
289
|
+
project_id: 40532,
|
|
290
|
+
agent_id: '123',
|
|
291
|
+
timestamp: '',
|
|
292
|
+
memory_session_id: ''
|
|
293
|
+
}, {
|
|
294
|
+
answer: 'La rentabilidad proyectada del proyecto es del 28% anual. Los principales indicadores son:\n- ROI esperado: 2.8x\n- Margen de beneficio: 35%\n- Período de recuperación: 18 meses\n\nEstos números están basados en las proyecciones actuales y el análisis de mercado realizado en Q1 2025.',
|
|
295
|
+
date: '2025-05-14T17:52:46.543980',
|
|
296
|
+
message_id: 'msg_20250514_002',
|
|
297
|
+
question: '¿Cuál es la rentabilidad esperada del proyecto?',
|
|
298
|
+
user_id: '15',
|
|
299
|
+
was_helpful: true,
|
|
300
|
+
project_id: 40532,
|
|
301
|
+
agent_id: '123',
|
|
302
|
+
timestamp: '',
|
|
303
|
+
memory_session_id: ''
|
|
304
|
+
}, {
|
|
305
|
+
answer: 'Las próximas tareas prioritarias son:\n1. Finalizar la integración con el sistema de pagos (Fecha límite: 2025-05-20)\n2. Implementar el nuevo módulo de reportes (Fecha límite: 2025-05-25)\n3. Realizar pruebas de carga del sistema (Fecha límite: 2025-05-28)\n4. Preparar la documentación para el lanzamiento (Fecha límite: 2025-06-01)',
|
|
306
|
+
date: '2025-05-14T17:52:48.786884',
|
|
307
|
+
message_id: 'msg_20250514_003',
|
|
308
|
+
question: '¿Cuáles son las próximas tareas pendientes?',
|
|
309
|
+
user_id: '15',
|
|
310
|
+
was_helpful: true,
|
|
311
|
+
project_id: 40532,
|
|
312
|
+
agent_id: '123',
|
|
313
|
+
timestamp: '',
|
|
314
|
+
memory_session_id: ''
|
|
315
|
+
}, {
|
|
316
|
+
answer: 'El equipo actual está compuesto por:\n- 3 desarrolladores backend\n- 2 desarrolladores frontend\n- 1 diseñador UX/UI\n- 1 Project Manager\n- 1 QA Engineer\n\nTodos los miembros están asignados al 100% al proyecto y trabajan en modalidad híbrida.',
|
|
317
|
+
date: '2025-05-14T17:52:50.657815',
|
|
318
|
+
message_id: 'msg_20250514_004',
|
|
319
|
+
question: '¿Cómo está conformado el equipo del proyecto?',
|
|
320
|
+
user_id: '15',
|
|
321
|
+
was_helpful: true,
|
|
322
|
+
project_id: 40531,
|
|
323
|
+
agent_id: '123',
|
|
324
|
+
timestamp: '',
|
|
325
|
+
memory_session_id: ''
|
|
326
|
+
}, {
|
|
327
|
+
answer: 'Los principales riesgos identificados son:\n1. Dependencias de terceros (Probabilidad: Media, Impacto: Alto)\n2. Escalabilidad del sistema (Probabilidad: Baja, Impacto: Alto)\n3. Cumplimiento regulatorio (Probabilidad: Media, Impacto: Medio)\n\nSe están implementando planes de mitigación para cada uno de estos riesgos.',
|
|
328
|
+
date: '2025-05-14T17:52:53.271657',
|
|
329
|
+
message_id: 'msg_20250514_005',
|
|
330
|
+
question: '¿Cuáles son los principales riesgos del proyecto?',
|
|
331
|
+
user_id: '15',
|
|
332
|
+
was_helpful: true,
|
|
333
|
+
project_id: 40532,
|
|
334
|
+
agent_id: '123',
|
|
335
|
+
timestamp: '',
|
|
336
|
+
memory_session_id: ''
|
|
337
|
+
}, {
|
|
338
|
+
answer: 'El presupuesto actual del proyecto es de $450,000. Hasta la fecha, se han gastado $320,000 (71% del presupuesto). Los principales gastos han sido en desarrollo (45%), infraestructura (25%), y recursos humanos (30%). El presupuesto está alineado con las proyecciones iniciales.',
|
|
339
|
+
date: '2025-05-14T17:52:54.872512',
|
|
340
|
+
message_id: 'msg_20250514_006',
|
|
341
|
+
question: '¿Cuál es el estado del presupuesto del proyecto?',
|
|
342
|
+
user_id: '15',
|
|
343
|
+
was_helpful: true,
|
|
344
|
+
project_id: 155671,
|
|
345
|
+
agent_id: '123',
|
|
346
|
+
timestamp: '',
|
|
347
|
+
memory_session_id: ''
|
|
348
|
+
}, {
|
|
349
|
+
answer: 'Las métricas clave (KPIs) del proyecto son:\n- Velocidad del equipo: 45 puntos por sprint\n- Calidad del código: 98% de cobertura de pruebas\n- Satisfacción del cliente: 4.8/5\n- Tiempo de respuesta a incidencias: < 2 horas\n\nTodas las métricas están dentro de los rangos objetivos establecidos.',
|
|
350
|
+
date: '2025-05-14T17:53:11.677306',
|
|
351
|
+
message_id: 'msg_20250514_007',
|
|
352
|
+
question: '¿Cuáles son las métricas actuales del proyecto?',
|
|
353
|
+
user_id: '15',
|
|
354
|
+
was_helpful: true,
|
|
355
|
+
project_id: 40532,
|
|
356
|
+
agent_id: '123',
|
|
357
|
+
timestamp: '',
|
|
358
|
+
memory_session_id: ''
|
|
359
|
+
}, {
|
|
360
|
+
answer: 'El cronograma actual indica que el proyecto está en la Fase 3 de 5. Las fechas clave son:\n- Fase 3 (Actual): 2025-05-01 a 2025-06-15\n- Fase 4: 2025-06-16 a 2025-07-31\n- Fase 5 (Final): 2025-08-01 a 2025-08-31\n\nEl proyecto está avanzando según lo planificado.',
|
|
361
|
+
date: '2025-05-14T17:53:12.618905',
|
|
362
|
+
message_id: 'msg_20250514_008',
|
|
363
|
+
question: '¿Cuál es el cronograma actual del proyecto?',
|
|
364
|
+
user_id: '15',
|
|
365
|
+
was_helpful: true,
|
|
366
|
+
project_id: 40532,
|
|
367
|
+
agent_id: '123',
|
|
368
|
+
timestamp: '',
|
|
369
|
+
memory_session_id: ''
|
|
370
|
+
}, {
|
|
371
|
+
answer: 'Los stakeholders principales son:\n1. Cliente final: Empresa XYZ\n2. Patrocinador: Director de Innovación\n3. Usuarios finales: Equipo de Operaciones\n4. Proveedores: Cloud Services Inc.\n\nSe realizan reuniones semanales con los stakeholders para mantenerlos informados del progreso.',
|
|
372
|
+
date: '2025-05-14T17:53:15.706412',
|
|
373
|
+
message_id: 'msg_20250514_009',
|
|
374
|
+
question: '¿Quiénes son los stakeholders del proyecto?',
|
|
375
|
+
user_id: '15',
|
|
376
|
+
was_helpful: true,
|
|
377
|
+
project_id: 40532,
|
|
378
|
+
agent_id: '123',
|
|
379
|
+
timestamp: '',
|
|
380
|
+
memory_session_id: ''
|
|
381
|
+
}, {
|
|
382
|
+
answer: 'Los entregables pendientes para este trimestre son:\n\n| Título de la Tarea | Estado |\n|--------------------|--------|\n| Propuesta creativa | Nueva |\n| Aplicaciones de marca | Nueva |\n| Brainstorming Conceptos visuales | Nueva |\n| Brainstorming Naming | Nueva |\n| Consolidación de Brief | Nueva |\n| Análisis de la Marca | Nueva |\n| tarea de Prueba | Nueva |\n| Presentación de propuesta (1) | Nueva |\n| Manual de marca | Nueva |\n| Ajustes de Diseño Propuesta 1 | Nueva |\n| tarea al medio | Nueva |\n| La tarea para refrescar | Nueva |\n\nTodos los entregables tienen sus fechas de entrega definidas y están siendo monitoreados activamente.',
|
|
383
|
+
date: '2025-05-14T17:53:16.918493',
|
|
384
|
+
message_id: 'msg_20250514_010',
|
|
385
|
+
question: '¿Cuáles son los entregables pendientes?',
|
|
386
|
+
user_id: '15',
|
|
387
|
+
was_helpful: true,
|
|
388
|
+
project_id: 40532,
|
|
389
|
+
agent_id: '123',
|
|
390
|
+
timestamp: '',
|
|
391
|
+
memory_session_id: ''
|
|
392
|
+
}],
|
|
393
|
+
last_evaluated_key: '%7B%22PK%22%3A%20%22staging%23CHATID%2390491d3c-058a-4149-b87e-f37f00681839%23PROJECT%23pm_agent%22%2C%20%22SK%22%3A%201747245164%7D'
|
|
394
|
+
};
|
|
395
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ2NCIsInV1aWR2NCIsIk1PQ0tfVElNRV9TTEVFUF9SRVNQT05TRSIsIk1PQ0tfQ0hBVFNfUkVTUE9OU0UiLCJpdGVtcyIsImNoYXRfaWQiLCJjaGF0X3N0YXR1cyIsImxhc3RfcXVlc3Rpb24iLCJsYXN0X3F1ZXN0aW9uX2RhdGUiLCJtZXNzYWdlX2lkIiwicV9hbnN3ZXJzIiwiZ2VuZXJhbF9yYXRpbmciLCJ1c2VyX2lkIiwiYWdlbnRfaWQiLCJsYXN0X2V2YWx1YXRlZF9rZXkiLCJDSEFUX01FU1NBR0VTX0RBVEFCQVNFIiwicXVlc3Rpb24iLCJhbnN3ZXIiLCJwcm9qZWN0X2lkIiwiZ2VuZXJhdGVNb2NrQ2hhdE1lc3NhZ2VzIiwiY2hhdElkIiwibWVzc2FnZXNGb3JDaGF0IiwibnVtTWVzc2FnZXMiLCJNYXRoIiwiZmxvb3IiLCJyYW5kb20iLCJzZWxlY3RlZE1lc3NhZ2VzIiwiaSIsInJhbmRvbUluZGV4IiwibGVuZ3RoIiwibWVzc2FnZSIsInJhbmRvbURhdGUiLCJEYXRlIiwic2V0RGF0ZSIsImdldERhdGUiLCJzZXRIb3VycyIsInNldE1pbnV0ZXMiLCJwdXNoIiwiX29iamVjdFNwcmVhZCIsImRhdGUiLCJ0b0lTT1N0cmluZyIsImNvbmNhdCIsIm5vdyIsIndhc19oZWxwZnVsIiwic29ydCIsImEiLCJiIiwiZ2V0VGltZSIsIk1PQ0tfQ0hBVF9NRVNTQUdFU19SRVNQT05TRSIsInRpbWVzdGFtcCIsIm1lbW9yeV9zZXNzaW9uX2lkIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vY2tzL21vY2tDaGF0cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJ1xuaW1wb3J0IHsgQ2hhdE1lc3NhZ2VzUmVzcG9uc2VTY2hlbWEsIENoYXRNZXNzYWdlSXRlbVJlc3BvbnNlIH0gZnJvbSAnLi4vdHlwZXMvQ2hhdCdcblxuZXhwb3J0IGNvbnN0IE1PQ0tfVElNRV9TTEVFUF9SRVNQT05TRSA9IDEwMDAgLy8gbWlsbGlzZWNvbmRzXG5cbmV4cG9ydCBjb25zdCBNT0NLX0NIQVRTX1JFU1BPTlNFID0ge1xuICBpdGVtczogW1xuICAgIHtcbiAgICAgIGNoYXRfaWQ6ICdiZmNhZDUyMC1kYmY3LTRkOTktYmE5Yi0wZWVkOTM0MjQ0NTknLFxuICAgICAgY2hhdF9zdGF0dXM6ICdhY3RpdmUnLFxuICAgICAgbGFzdF9xdWVzdGlvbjogJ1doYXQgaXMgdGhlIHByb2ZpdGFiaWxpdHkgb2YgdGhpcyBwcm9qZWN0PycsXG4gICAgICBsYXN0X3F1ZXN0aW9uX2RhdGU6ICcyMDI1LTA1LTE0VDE3OjQ4OjA4WicsXG4gICAgICBtZXNzYWdlX2lkOiB1dWlkdjQoKSxcbiAgICAgIHFfYW5zd2VyczogMSxcbiAgICAgIGdlbmVyYWxfcmF0aW5nOiA1LFxuICAgICAgdXNlcl9pZDogJzQ3MTM4JyxcbiAgICAgIGFnZW50X2lkOiAnMTIzJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGNoYXRfaWQ6ICdlNTcxMWNhMS0wMGY1LTRlMzUtYWZjOC0yMmYxYTIzMGNhMjUnLFxuICAgICAgY2hhdF9zdGF0dXM6ICdhY3RpdmUnLFxuICAgICAgbGFzdF9xdWVzdGlvbjogJ1doYXQgYXJlIHRoZSB1cGNvbWluZyB0YXNrcyBkdWU/JyxcbiAgICAgIGxhc3RfcXVlc3Rpb25fZGF0ZTogJzIwMjUtMDUtMTRUMTU6MTY6MDZaJyxcbiAgICAgIG1lc3NhZ2VfaWQ6IHV1aWR2NCgpLFxuICAgICAgcV9hbnN3ZXJzOiAxLFxuICAgICAgZ2VuZXJhbF9yYXRpbmc6IDUsXG4gICAgICB1c2VyX2lkOiAnNDcxMzgnLFxuICAgICAgYWdlbnRfaWQ6ICcxMjMnLFxuICAgIH0sXG4gICAge1xuICAgICAgY2hhdF9pZDogJzQxNWJjMmZmLTYwNjEtNDYxYS1iODY3LTAzOWVlOTA1YzExOCcsXG4gICAgICBjaGF0X3N0YXR1czogJ2FjdGl2ZScsXG4gICAgICBsYXN0X3F1ZXN0aW9uOiAnV2hhdCBpcyB0aGUgcHJvZ3Jlc3Mgb2YgdGhpcyBwcm9qZWN0PycsXG4gICAgICBsYXN0X3F1ZXN0aW9uX2RhdGU6ICcyMDI1LTA1LTE0VDE1OjE2OjAzWicsXG4gICAgICBtZXNzYWdlX2lkOiB1dWlkdjQoKSxcbiAgICAgIHFfYW5zd2VyczogMSxcbiAgICAgIGdlbmVyYWxfcmF0aW5nOiA1LFxuICAgICAgdXNlcl9pZDogJzQ3MTM4JyxcbiAgICAgIGFnZW50X2lkOiAnMTIzJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGNoYXRfaWQ6ICc5YzQ2OTliMy0wZTdmLTQ1NDAtOWZhZC00Y2ZiN2VmNjI0MmEnLFxuICAgICAgY2hhdF9zdGF0dXM6ICdhY3RpdmUnLFxuICAgICAgbGFzdF9xdWVzdGlvbjogJ1doYXQgaXMgdGhlIHByb2dyZXNzIG9mIHRoaXMgcHJvamVjdD8nLFxuICAgICAgbGFzdF9xdWVzdGlvbl9kYXRlOiAnMjAyNS0wNS0xNFQxNToxNjowMFonLFxuICAgICAgbWVzc2FnZV9pZDogdXVpZHY0KCksXG4gICAgICBxX2Fuc3dlcnM6IDEsXG4gICAgICBnZW5lcmFsX3JhdGluZzogNSxcbiAgICAgIHVzZXJfaWQ6ICc0NzEzOCcsXG4gICAgICBhZ2VudF9pZDogJzEyMycsXG4gICAgfSxcbiAgICB7XG4gICAgICBjaGF0X2lkOiAnNTFiNjczOTItNWVhNy00ZjJlLWFjNDQtODNmNGM4MjU3NjdjJyxcbiAgICAgIGNoYXRfc3RhdHVzOiAnYWN0aXZlJyxcbiAgICAgIGxhc3RfcXVlc3Rpb246ICdXaGF0IGlzIHRoZSBwcm9maXRhYmlsaXR5IG9mIHRoaXMgcHJvamVjdD8nLFxuICAgICAgbGFzdF9xdWVzdGlvbl9kYXRlOiAnMjAyNS0wNS0xNFQxNToxNTo1OVonLFxuICAgICAgbWVzc2FnZV9pZDogdXVpZHY0KCksXG4gICAgICBxX2Fuc3dlcnM6IDEsXG4gICAgICBnZW5lcmFsX3JhdGluZzogNSxcbiAgICAgIHVzZXJfaWQ6ICc0NzEzOCcsXG4gICAgICBhZ2VudF9pZDogJzEyMycsXG4gICAgfSxcbiAgICB7XG4gICAgICBjaGF0X2lkOiAnM2U5YmEyNzYtYzY4OC00NWE4LThmZTEtYzQ5MTYyOWJiYmEzJyxcbiAgICAgIGNoYXRfc3RhdHVzOiAnYWN0aXZlJyxcbiAgICAgIGxhc3RfcXVlc3Rpb246ICdXaGF0IGFyZSB0aGUgdXBjb21pbmcgdGFza3MgZHVlPycsXG4gICAgICBsYXN0X3F1ZXN0aW9uX2RhdGU6ICcyMDI1LTA1LTE0VDE1OjE1OjU1WicsXG4gICAgICBtZXNzYWdlX2lkOiB1dWlkdjQoKSxcbiAgICAgIHFfYW5zd2VyczogMSxcbiAgICAgIGdlbmVyYWxfcmF0aW5nOiA1LFxuICAgICAgdXNlcl9pZDogJzQ3MTM4JyxcbiAgICAgIGFnZW50X2lkOiAnMTIzJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGNoYXRfaWQ6ICcwNGZmMmY2Mi1iMDdiLTRjM2ItYjIyNC0zOWYyZDUwZTA3MzQnLFxuICAgICAgY2hhdF9zdGF0dXM6ICdhY3RpdmUnLFxuICAgICAgbGFzdF9xdWVzdGlvbjogJ1doYXQgaXMgdGhlIHByb2dyZXNzIG9mIHRoaXMgcHJvamVjdD8nLFxuICAgICAgbGFzdF9xdWVzdGlvbl9kYXRlOiAnMjAyNS0wNS0xNFQxNToxNTo1M1onLFxuICAgICAgbWVzc2FnZV9pZDogdXVpZHY0KCksXG4gICAgICBxX2Fuc3dlcnM6IDEsXG4gICAgICBnZW5lcmFsX3JhdGluZzogNSxcbiAgICAgIHVzZXJfaWQ6ICc0NzEzOCcsXG4gICAgICBhZ2VudF9pZDogJzEyMycsXG4gICAgfSxcbiAgICB7XG4gICAgICBjaGF0X2lkOiAnNGIyODY1NjYtOGJmMy00Zjg0LWJkMDQtNmY3OWY1NTc1ZGJmJyxcbiAgICAgIGNoYXRfc3RhdHVzOiAnYWN0aXZlJyxcbiAgICAgIGxhc3RfcXVlc3Rpb246ICdXaGF0IGlzIHRoZSBwcm9maXRhYmlsaXR5IG9mIHRoaXMgcHJvamVjdD8nLFxuICAgICAgbGFzdF9xdWVzdGlvbl9kYXRlOiAnMjAyNS0wNS0xNFQxNToxNTo1MVonLFxuICAgICAgbWVzc2FnZV9pZDogdXVpZHY0KCksXG4gICAgICBxX2Fuc3dlcnM6IDEsXG4gICAgICBnZW5lcmFsX3JhdGluZzogNSxcbiAgICAgIHVzZXJfaWQ6ICc0NzEzOCcsXG4gICAgICBhZ2VudF9pZDogJzEyMycsXG4gICAgfSxcbiAgICB7XG4gICAgICBjaGF0X2lkOiAnY2M2YjkxZWEtZjhlZC00ODYyLWFjZjMtZTRlY2I0NTRmNTQ3JyxcbiAgICAgIGNoYXRfc3RhdHVzOiAnYWN0aXZlJyxcbiAgICAgIGxhc3RfcXVlc3Rpb246ICdXaGF0IGFyZSB0aGUgdXBjb21pbmcgdGFza3MgZHVlPycsXG4gICAgICBsYXN0X3F1ZXN0aW9uX2RhdGU6ICcyMDI1LTA1LTE0VDE1OjE1OjM1WicsXG4gICAgICBtZXNzYWdlX2lkOiB1dWlkdjQoKSxcbiAgICAgIHFfYW5zd2VyczogMSxcbiAgICAgIGdlbmVyYWxfcmF0aW5nOiA1LFxuICAgICAgdXNlcl9pZDogJzQ3MTM4JyxcbiAgICAgIGFnZW50X2lkOiAnMTIzJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGNoYXRfaWQ6ICc1ZDllYjVmYS03MzNkLTRlN2MtYWVhOC0wZDU5OWE4YjAxYWYnLFxuICAgICAgY2hhdF9zdGF0dXM6ICdhY3RpdmUnLFxuICAgICAgbGFzdF9xdWVzdGlvbjogJ1doYXQgaXMgdGhlIHByb2ZpdGFiaWxpdHkgb2YgdGhpcyBwcm9qZWN0PycsXG4gICAgICBsYXN0X3F1ZXN0aW9uX2RhdGU6ICcyMDI1LTA1LTE0VDE1OjE1OjMwWicsXG4gICAgICBtZXNzYWdlX2lkOiB1dWlkdjQoKSxcbiAgICAgIHFfYW5zd2VyczogMSxcbiAgICAgIGdlbmVyYWxfcmF0aW5nOiA1LFxuICAgICAgdXNlcl9pZDogJzQ3MTM4JyxcbiAgICAgIGFnZW50X2lkOiAnMTIzJyxcbiAgICB9LFxuICBdLFxuICBsYXN0X2V2YWx1YXRlZF9rZXk6ICclN0IlMjJpbmRleCUyMiUzQSUyMDEwJTdEJyxcbn1cblxuLy8gQmFzZSBkZSBkYXRvcyBkZSBwcmVndW50YXMgeSByZXNwdWVzdGFzIHBvciB0aXBvIGRlIGNoYXRcbmNvbnN0IENIQVRfTUVTU0FHRVNfREFUQUJBU0UgPSB7XG4gICdiZmNhZDUyMC1kYmY3LTRkOTktYmE5Yi0wZWVkOTM0MjQ0NTknOiBbXG4gICAge1xuICAgICAgcXVlc3Rpb246ICfCv0N1w6FsIGVzIGxhIHJlbnRhYmlsaWRhZCBlc3BlcmFkYSBkZWwgcHJveWVjdG8/JyxcbiAgICAgIGFuc3dlcjpcbiAgICAgICAgJ0xhIHJlbnRhYmlsaWRhZCBwcm95ZWN0YWRhIGRlbCBwcm95ZWN0byBlcyBkZWwgMjglIGFudWFsLiBMb3MgcHJpbmNpcGFsZXMgaW5kaWNhZG9yZXMgc29uOlxcbi0gUk9JIGVzcGVyYWRvOiAyLjh4XFxuLSBNYXJnZW4gZGUgYmVuZWZpY2lvOiAzNSVcXG4tIFBlcsOtb2RvIGRlIHJlY3VwZXJhY2nDs246IDE4IG1lc2VzXFxuXFxuRXN0b3MgbsO6bWVyb3MgZXN0w6FuIGJhc2Fkb3MgZW4gbGFzIHByb3llY2Npb25lcyBhY3R1YWxlcyB5IGVsIGFuw6FsaXNpcyBkZSBtZXJjYWRvIHJlYWxpemFkbyBlbiBRMSAyMDI1LicsXG4gICAgICBwcm9qZWN0X2lkOiA0MDUzMixcbiAgICB9LFxuICAgIHtcbiAgICAgIHF1ZXN0aW9uOiAnwr9DdcOhbGVzIHNvbiBsb3MgY29zdG9zIG9wZXJhdGl2b3MgbWVuc3VhbGVzPycsXG4gICAgICBhbnN3ZXI6XG4gICAgICAgICdMb3MgY29zdG9zIG9wZXJhdGl2b3MgbWVuc3VhbGVzIGFzY2llbmRlbiBhICQ0NSwwMDAgZGlzdHJpYnVpZG9zIGRlIGxhIHNpZ3VpZW50ZSBtYW5lcmE6XFxuLSBJbmZyYWVzdHJ1Y3R1cmEgeSBob3N0aW5nOiAkMTIsMDAwXFxuLSBMaWNlbmNpYXMgZGUgc29mdHdhcmU6ICQ4LDAwMFxcbi0gUmVjdXJzb3MgaHVtYW5vczogJDIwLDAwMFxcbi0gTWFya2V0aW5nIHkgcHVibGljaWRhZDogJDUsMDAwXFxuXFxuRXN0b3MgY29zdG9zIGVzdMOhbiBkZW50cm8gZGVsIHByZXN1cHVlc3RvIHByb3llY3RhZG8uJyxcbiAgICAgIHByb2plY3RfaWQ6IDQwNTMyLFxuICAgIH0sXG4gICAge1xuICAgICAgcXVlc3Rpb246ICfCv0N1w6FsIGVzIGVsIG1hcmdlbiBkZSBjb250cmlidWNpw7NuIGFjdHVhbD8nLFxuICAgICAgYW5zd2VyOlxuICAgICAgICAnRWwgbWFyZ2VuIGRlIGNvbnRyaWJ1Y2nDs24gYWN0dWFsIGVzIGRlbCA2NSUuIEVzdG8gc2lnbmlmaWNhIHF1ZSBwb3IgY2FkYSAkMTAwIGRlIGluZ3Jlc29zLCAkNjUgY29udHJpYnV5ZW4gZGlyZWN0YW1lbnRlIGEgY3VicmlyIGxvcyBjb3N0b3MgZmlqb3MgeSBnZW5lcmFyIHV0aWxpZGFkZXMuIEVzdGUgbWFyZ2VuIGVzdMOhIHBvciBlbmNpbWEgZGVsIG9iamV0aXZvIGRlbCA2MCUuJyxcbiAgICAgIHByb2plY3RfaWQ6IDQwNTMyLFxuICAgIH0sXG4gIF0sXG4gICdlNTcxMWNhMS0wMGY1LTRlMzUtYWZjOC0yMmYxYTIzMGNhMjUnOiBbXG4gICAge1xuICAgICAgcXVlc3Rpb246ICfCv0N1w6FsZXMgc29uIGxhcyBwcsOzeGltYXMgdGFyZWFzIHBlbmRpZW50ZXM/JyxcbiAgICAgIGFuc3dlcjpcbiAgICAgICAgJ0xhcyBwcsOzeGltYXMgdGFyZWFzIHByaW9yaXRhcmlhcyBzb246XFxuMS4gRmluYWxpemFyIGxhIGludGVncmFjacOzbiBjb24gZWwgc2lzdGVtYSBkZSBwYWdvcyAoRmVjaGEgbMOtbWl0ZTogMjAyNS0wNS0yMClcXG4yLiBJbXBsZW1lbnRhciBlbCBudWV2byBtw7NkdWxvIGRlIHJlcG9ydGVzIChGZWNoYSBsw61taXRlOiAyMDI1LTA1LTI1KVxcbjMuIFJlYWxpemFyIHBydWViYXMgZGUgY2FyZ2EgZGVsIHNpc3RlbWEgKEZlY2hhIGzDrW1pdGU6IDIwMjUtMDUtMjgpXFxuNC4gUHJlcGFyYXIgbGEgZG9jdW1lbnRhY2nDs24gcGFyYSBlbCBsYW56YW1pZW50byAoRmVjaGEgbMOtbWl0ZTogMjAyNS0wNi0wMSknLFxuICAgICAgcHJvamVjdF9pZDogNDA1MzIsXG4gICAgfSxcbiAgICB7XG4gICAgICBxdWVzdGlvbjogJ8K/UXVpw6luIGVzdMOhIGFzaWduYWRvIGEgbGEgdGFyZWEgZGUgaW50ZWdyYWNpw7NuPycsXG4gICAgICBhbnN3ZXI6XG4gICAgICAgICdMYSB0YXJlYSBkZSBpbnRlZ3JhY2nDs24gZXN0w6EgYXNpZ25hZGEgYWwgZXF1aXBvIGRlIGRlc2Fycm9sbG8gYmFja2VuZDpcXG4tIEzDrWRlciB0w6ljbmljbzogTWFyw61hIEdvbnrDoWxlelxcbi0gRGVzYXJyb2xsYWRvcmVzOiBDYXJsb3MgUnVpeiwgQW5hIEzDs3Blelxcbi0gUUE6IFBlZHJvIE1hcnTDrW5lelxcblxcbkVsIGVxdWlwbyBlc3TDoSB0cmFiYWphbmRvIGVuIG1vZGFsaWRhZCBow61icmlkYSBjb24gcmV1bmlvbmVzIGRpYXJpYXMgZGUgc2VndWltaWVudG8uJyxcbiAgICAgIHByb2plY3RfaWQ6IDQwNTMyLFxuICAgIH0sXG4gICAge1xuICAgICAgcXVlc3Rpb246ICfCv0N1w6FsIGVzIGVsIGVzdGFkbyBkZSBsYXMgdGFyZWFzIGNyw610aWNhcz8nLFxuICAgICAgYW5zd2VyOlxuICAgICAgICAnRXN0YWRvIGRlIGxhcyB0YXJlYXMgY3LDrXRpY2FzOlxcbi0g4pyFIEludGVncmFjacOzbiBBUEk6IDg1JSBjb21wbGV0YWRvXFxuLSDwn5SEIE3Ds2R1bG8gZGUgcmVwb3J0ZXM6IDYwJSBjb21wbGV0YWRvXFxuLSDij7MgUHJ1ZWJhcyBkZSBjYXJnYTogMzAlIGNvbXBsZXRhZG9cXG4tIPCfk4sgRG9jdW1lbnRhY2nDs246IDIwJSBjb21wbGV0YWRvXFxuXFxuVG9kYXMgbGFzIHRhcmVhcyBlc3TDoW4gZW4gY2FtaW5vIGRlIGN1bXBsaXIgc3VzIGZlY2hhcyBsw61taXRlLicsXG4gICAgICBwcm9qZWN0X2lkOiA0MDUzMixcbiAgICB9LFxuICBdLFxuICAnNDE1YmMyZmYtNjA2MS00NjFhLWI4NjctMDM5ZWU5MDVjMTE4JzogW1xuICAgIHtcbiAgICAgIHF1ZXN0aW9uOiAnwr9DdcOhbCBlcyBlbCBlc3RhZG8gYWN0dWFsIGRlbCBwcm95ZWN0bz8nLFxuICAgICAgYW5zd2VyOlxuICAgICAgICAnRWwgcHJveWVjdG8gYWN0dWFsbWVudGUgdGllbmUgdW4gcHJvZ3Jlc28gZGVsIDc1JS4gTG9zIGhpdG9zIHByaW5jaXBhbGVzIGNvbXBsZXRhZG9zIGluY2x1eWVuIGxhIGZhc2UgZGUgZGlzZcOxbyAoMTAwJSksIGRlc2Fycm9sbG8gZGVsIGJhY2tlbmQgKDkwJSksIHkgbGEgaW50ZXJmYXogZGUgdXN1YXJpbyAoNjAlKS4gRWwgc3ByaW50IGFjdHVhbCBlc3TDoSBlbmZvY2FkbyBlbiBsYSBpbXBsZW1lbnRhY2nDs24gZGUgbnVldmFzIGNhcmFjdGVyw61zdGljYXMgeSBsYSBvcHRpbWl6YWNpw7NuIGRlbCByZW5kaW1pZW50by4nLFxuICAgICAgcHJvamVjdF9pZDogNDA1MzIsXG4gICAgfSxcbiAgICB7XG4gICAgICBxdWVzdGlvbjogJ8K/Q3XDoWxlcyBzb24gbG9zIGhpdG9zIGFsY2FuemFkb3MgZXN0ZSBtZXM/JyxcbiAgICAgIGFuc3dlcjpcbiAgICAgICAgJ0hpdG9zIGFsY2FuemFkb3MgZW4gbWF5byAyMDI1Olxcbi0g4pyFIExhbnphbWllbnRvIGRlIGxhIHZlcnNpw7NuIGJldGFcXG4tIOKchSBJbnRlZ3JhY2nDs24gY29tcGxldGEgY29uIHNpc3RlbWFzIGV4dGVybm9zXFxuLSDinIUgSW1wbGVtZW50YWNpw7NuIGRlbCBzaXN0ZW1hIGRlIGF1dGVudGljYWNpw7NuXFxuLSDinIUgT3B0aW1pemFjacOzbiBkZWwgcmVuZGltaWVudG8gZW4gdW4gNDAlXFxuLSDwn5SEIE1pZ3JhY2nDs24gYSBsYSBudWV2YSBpbmZyYWVzdHJ1Y3R1cmEgKDgwJSBjb21wbGV0YWRvKScsXG4gICAgICBwcm9qZWN0X2lkOiA0MDUzMixcbiAgICB9LFxuICAgIHtcbiAgICAgIHF1ZXN0aW9uOiAnwr9Dw7NtbyBzZSBjb21wYXJhIGVsIHByb2dyZXNvIGNvbiBlbCBwbGFuIG9yaWdpbmFsPycsXG4gICAgICBhbnN3ZXI6XG4gICAgICAgICdFbCBwcm9ncmVzbyBhY3R1YWwgZXN0w6EgNSUgYWRlbGFudGFkbyByZXNwZWN0byBhbCBwbGFuIG9yaWdpbmFsOlxcbi0gUGxhbiBvcmlnaW5hbDogNzAlIGNvbXBsZXRhZG9cXG4tIFByb2dyZXNvIGFjdHVhbDogNzUlIGNvbXBsZXRhZG9cXG4tIEFkZWxhbnRvOiArNSVcXG5cXG5Fc3RlIGFkZWxhbnRvIHNlIGRlYmUgcHJpbmNpcGFsbWVudGUgYSBsYSBlZmljaWVuY2lhIGRlbCBlcXVpcG8geSBsYSBvcHRpbWl6YWNpw7NuIGRlIHByb2Nlc29zLicsXG4gICAgICBwcm9qZWN0X2lkOiA0MDUzMixcbiAgICB9LFxuICBdLFxuICAnOWM0Njk5YjMtMGU3Zi00NTQwLTlmYWQtNGNmYjdlZjYyNDJhJzogW1xuICAgIHtcbiAgICAgIHF1ZXN0aW9uOiAnwr9DdcOhbCBlcyBlbCBwcm9ncmVzbyBkZWwgZGVzYXJyb2xsbyBmcm9udGVuZD8nLFxuICAgICAgYW5zd2VyOlxuICAgICAgICAnRWwgZGVzYXJyb2xsbyBmcm9udGVuZCBlc3TDoSBhbCA2MCUgY29tcGxldGFkbzpcXG4tIENvbXBvbmVudGVzIHByaW5jaXBhbGVzOiA5MCVcXG4tIEludGVncmFjacOzbiBjb24gQVBJczogNzUlXFxuLSBSZXNwb25zaXZlIGRlc2lnbjogODUlXFxuLSBUZXN0aW5nOiA0MCVcXG4tIE9wdGltaXphY2nDs246IDMwJVxcblxcbkVsIGVxdWlwbyBmcm9udGVuZCBlc3TDoSB0cmFiYWphbmRvIGVuIHBhcmFsZWxvIGNvbiBlbCBiYWNrZW5kLicsXG4gICAgICBwcm9qZWN0X2lkOiA0MDUzMSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHF1ZXN0aW9uOiAnwr9DdcOhbmRvIGVzdGFyw6EgbGlzdGEgbGEgdmVyc2nDs24gYmV0YT8nLFxuICAgICAgYW5zd2VyOlxuICAgICAgICAnTGEgdmVyc2nDs24gYmV0YSBlc3RhcsOhIGxpc3RhIHBhcmEgZWwgMjUgZGUgbWF5byBkZSAyMDI1LiBFbCBjcm9ub2dyYW1hIGRldGFsbGFkbyBlczpcXG4tIFNlbWFuYSAxOiBGaW5hbGl6YWNpw7NuIGRlIGZ1bmNpb25hbGlkYWRlcyBjb3JlXFxuLSBTZW1hbmEgMjogVGVzdGluZyB5IGNvcnJlY2Npw7NuIGRlIGJ1Z3NcXG4tIFNlbWFuYSAzOiBQcmVwYXJhY2nDs24gZGUgZG9jdW1lbnRhY2nDs25cXG4tIFNlbWFuYSA0OiBMYW56YW1pZW50byBiZXRhIGNvbiB1c3VhcmlvcyBzZWxlY3RvcycsXG4gICAgICBwcm9qZWN0X2lkOiA0MDUzMSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHF1ZXN0aW9uOiAnwr9DdcOhbGVzIHNvbiBsb3MgcHJpbmNpcGFsZXMgZGVzYWbDrW9zIHTDqWNuaWNvcz8nLFxuICAgICAgYW5zd2VyOlxuICAgICAgICAnTG9zIHByaW5jaXBhbGVzIGRlc2Fmw61vcyB0w6ljbmljb3MgaWRlbnRpZmljYWRvcyBzb246XFxuMS4gT3B0aW1pemFjacOzbiBkZSBjb25zdWx0YXMgZGUgYmFzZSBkZSBkYXRvc1xcbjIuIEltcGxlbWVudGFjacOzbiBkZSBjYWNoZSBkaXN0cmlidWlkb1xcbjMuIE1hbmVqbyBkZSBjb25jdXJyZW5jaWEgZW4gdGllbXBvIHJlYWxcXG40LiBJbnRlZ3JhY2nDs24gY29uIHNpc3RlbWFzIGxlZ2FjeVxcblxcblNlIGVzdMOhbiBhcGxpY2FuZG8gc29sdWNpb25lcyBlc2NhbGFibGVzIHBhcmEgY2FkYSBkZXNhZsOtby4nLFxuICAgICAgcHJvamVjdF9pZDogNDA1MzEsXG4gICAgfSxcbiAgXSxcbiAgJzUxYjY3MzkyLTVlYTctNGYyZS1hYzQ0LTgzZjRjODI1NzY3Yyc6IFtcbiAgICB7XG4gICAgICBxdWVzdGlvbjogJ8K/Q3XDoWwgZXMgZWwgUk9JIGVzcGVyYWRvIGRlbCBwcm95ZWN0bz8nLFxuICAgICAgYW5zd2VyOlxuICAgICAgICAnRWwgUk9JIGVzcGVyYWRvIGRlbCBwcm95ZWN0byBlcyBkZSAyLjh4IGVuIHVuIHBlcsOtb2RvIGRlIDE4IG1lc2VzLiBEZXNnbG9zZTpcXG4tIEludmVyc2nDs24gaW5pY2lhbDogJDUwMCwwMDBcXG4tIEluZ3Jlc29zIHByb3llY3RhZG9zOiAkMSw0MDAsMDAwXFxuLSBST0k6IDE4MCVcXG4tIFBlcsOtb2RvIGRlIHJlY3VwZXJhY2nDs246IDE4IG1lc2VzXFxuXFxuRXN0YXMgcHJveWVjY2lvbmVzIGVzdMOhbiBiYXNhZGFzIGVuIGFuw6FsaXNpcyBkZSBtZXJjYWRvIHkgdGVuZGVuY2lhcyBhY3R1YWxlcy4nLFxuICAgICAgcHJvamVjdF9pZDogMTU1NjcxLFxuICAgIH0sXG4gICAge1xuICAgICAgcXVlc3Rpb246ICfCv0N1w6FsZXMgc29uIGxhcyBmdWVudGVzIGRlIGluZ3Jlc29zIHByaW5jaXBhbGVzPycsXG4gICAgICBhbnN3ZXI6XG4gICAgICAgICdMYXMgZnVlbnRlcyBkZSBpbmdyZXNvcyBwcmluY2lwYWxlcyBzb246XFxuMS4gU3VzY3JpcGNpb25lcyBwcmVtaXVtOiA0NSUgKCQ2MzAsMDAwKVxcbjIuIExpY2VuY2lhcyBlbXByZXNhcmlhbGVzOiAzNSUgKCQ0OTAsMDAwKVxcbjMuIFNlcnZpY2lvcyBkZSBjb25zdWx0b3LDrWE6IDE1JSAoJDIxMCwwMDApXFxuNC4gSW50ZWdyYWNpb25lcyBwZXJzb25hbGl6YWRhczogNSUgKCQ3MCwwMDApXFxuXFxuTGEgZXN0cmF0ZWdpYSBzZSBlbmZvY2EgZW4gZGl2ZXJzaWZpY2FyIGxhcyBmdWVudGVzIGRlIGluZ3Jlc29zLicsXG4gICAgICBwcm9qZWN0X2lkOiAxNTU2NzEsXG4gICAgfSxcbiAgICB7XG4gICAgICBxdWVzdGlvbjogJ8K/Q8OzbW8gc2UgY29tcGFyYSBjb24gbGEgY29tcGV0ZW5jaWE/JyxcbiAgICAgIGFuc3dlcjpcbiAgICAgICAgJ0NvbXBhcmFjacOzbiBjb24gbGEgY29tcGV0ZW5jaWE6XFxuLSBOdWVzdHJvIG1hcmdlbjogMzUlXFxuLSBDb21wZXRlbmNpYSBwcm9tZWRpbzogMjUlXFxuLSBWZW50YWphIGNvbXBldGl0aXZhOiArMTAlXFxuXFxuRXN0YSB2ZW50YWphIHNlIGRlYmUgYSBudWVzdHJhIHRlY25vbG9nw61hIHByb3BpZXRhcmlhIHkgZWZpY2llbmNpYSBvcGVyYXRpdmEuJyxcbiAgICAgIHByb2plY3RfaWQ6IDE1NTY3MSxcbiAgICB9LFxuICBdLFxuICAnM2U5YmEyNzYtYzY4OC00NWE4LThmZTEtYzQ5MTYyOWJiYmEzJzogW1xuICAgIHtcbiAgICAgIHF1ZXN0aW9uOiAnwr9DdcOhbGVzIHNvbiBsYXMgdGFyZWFzIGRlbCBzcHJpbnQgYWN0dWFsPycsXG4gICAgICBhbnN3ZXI6XG4gICAgICAgICdUYXJlYXMgZGVsIHNwcmludCBhY3R1YWwgKFNwcmludCAxMik6XFxuMS4gSW1wbGVtZW50YXIgZmlsdHJvcyBhdmFuemFkb3MgKDggcHVudG9zKVxcbjIuIE9wdGltaXphciBjb25zdWx0YXMgZGUgYmFzZSBkZSBkYXRvcyAoNSBwdW50b3MpXFxuMy4gQWdyZWdhciBleHBvcnRhY2nDs24gYSBQREYgKDMgcHVudG9zKVxcbjQuIENvcnJlZ2lyIGJ1Z3MgZGUgVUkgKDIgcHVudG9zKVxcbjUuIEFjdHVhbGl6YXIgZG9jdW1lbnRhY2nDs24gKDEgcHVudG8pXFxuXFxuVG90YWw6IDE5IHB1bnRvcyAtIDg1JSBjb21wbGV0YWRvJyxcbiAgICAgIHByb2plY3RfaWQ6IDQwNTMyLFxuICAgIH0sXG4gICAge1xuICAgICAgcXVlc3Rpb246ICfCv1F1acOpbiBlc3TDoSBkaXNwb25pYmxlIHBhcmEgbnVldmFzIHRhcmVhcz8nLFxuICAgICAgYW5zd2VyOlxuICAgICAgICAnRGlzcG9uaWJpbGlkYWQgZGVsIGVxdWlwbzpcXG4tIE1hcsOtYSAoRnJvbnRlbmQpOiBEaXNwb25pYmxlIGRlc2RlIDIwMjUtMDUtMjBcXG4tIENhcmxvcyAoQmFja2VuZCk6IE9jdXBhZG8gaGFzdGEgMjAyNS0wNS0yNVxcbi0gQW5hIChRQSk6IERpc3BvbmlibGUgZGVzZGUgMjAyNS0wNS0xOFxcbi0gUGVkcm8gKERldk9wcyk6IE9jdXBhZG8gaGFzdGEgMjAyNS0wNS0zMFxcblxcblJlY29tZW5kYWNpw7NuOiBBc2lnbmFyIHRhcmVhcyBmcm9udGVuZCBhIE1hcsOtYSB5IEFuYS4nLFxuICAgICAgcHJvamVjdF9pZDogNDA1MzIsXG4gICAgfSxcbiAgICB7XG4gICAgICBxdWVzdGlvbjogJ8K/Q3XDoWwgZXMgbGEgdmVsb2NpZGFkIGRlbCBlcXVpcG8/JyxcbiAgICAgIGFuc3dlcjpcbiAgICAgICAgJ0xhIHZlbG9jaWRhZCBwcm9tZWRpbyBkZWwgZXF1aXBvIGVzIGRlIDQ1IHB1bnRvcyBwb3Igc3ByaW50Olxcbi0gU3ByaW50IDEwOiA0MiBwdW50b3NcXG4tIFNwcmludCAxMTogNDggcHVudG9zXFxuLSBTcHJpbnQgMTIgKGFjdHVhbCk6IDM4IHB1bnRvcyAocHJveWVjdGFkbylcXG4tIFByb21lZGlvOiA0NSBwdW50b3NcXG5cXG5FbCBlcXVpcG8gZXN0w6EgZXN0YWJsZSB5IGNvbnNpc3RlbnRlIGVuIHN1IHJlbmRpbWllbnRvLicsXG4gICAgICBwcm9qZWN0X2lkOiA0MDUzMixcbiAgICB9LFxuICBdLFxuICAnMDRmZjJmNjItYjA3Yi00YzNiLWIyMjQtMzlmMmQ1MGUwNzM0JzogW1xuICAgIHtcbiAgICAgIHF1ZXN0aW9uOiAnwr9DdcOhbCBlcyBlbCBwcm9ncmVzbyBkZSBsYSBmYXNlIGRlIHRlc3Rpbmc/JyxcbiAgICAgIGFuc3dlcjpcbiAgICAgICAgJ1Byb2dyZXNvIGRlIGxhIGZhc2UgZGUgdGVzdGluZzpcXG4tIFRlc3RzIHVuaXRhcmlvczogOTUlIGNvbXBsZXRhZG9cXG4tIFRlc3RzIGRlIGludGVncmFjacOzbjogODAlIGNvbXBsZXRhZG9cXG4tIFRlc3RzIGRlIGFjZXB0YWNpw7NuOiA3MCUgY29tcGxldGFkb1xcbi0gVGVzdHMgZGUgcmVuZGltaWVudG86IDYwJSBjb21wbGV0YWRvXFxuLSBUZXN0cyBkZSBzZWd1cmlkYWQ6IDg1JSBjb21wbGV0YWRvXFxuXFxuQ29iZXJ0dXJhIHRvdGFsOiA3OCUgLSBPYmpldGl2bzogODUlJyxcbiAgICAgIHByb2plY3RfaWQ6IDQwNTMyLFxuICAgIH0sXG4gICAge1xuICAgICAgcXVlc3Rpb246ICfCv0N1w6FudG9zIGJ1Z3MgY3LDrXRpY29zIHF1ZWRhbiBwb3IgcmVzb2x2ZXI/JyxcbiAgICAgIGFuc3dlcjpcbiAgICAgICAgJ0VzdGFkbyBkZSBidWdzIHBvciBwcmlvcmlkYWQ6XFxuLSBDcsOtdGljb3M6IDIgYnVncyAoYW1ib3MgZW4gcHJvY2VzbylcXG4tIEFsdG9zOiA4IGJ1Z3MgKDUgcmVzdWVsdG9zKVxcbi0gTWVkaW9zOiAxNSBidWdzICgxMiByZXN1ZWx0b3MpXFxuLSBCYWpvczogMjUgYnVncyAoMjAgcmVzdWVsdG9zKVxcblxcbkxvcyBidWdzIGNyw610aWNvcyBlc3TDoW4gcHJvZ3JhbWFkb3MgcGFyYSByZXNvbHVjacOzbiBhbnRlcyBkZWwgMjAyNS0wNS0yMC4nLFxuICAgICAgcHJvamVjdF9pZDogNDA1MzIsXG4gICAgfSxcbiAgICB7XG4gICAgICBxdWVzdGlvbjogJ8K/Q3XDoW5kbyBlc3RhcsOhIGxpc3RhIGxhIHZlcnNpw7NuIGRlIHByb2R1Y2Npw7NuPycsXG4gICAgICBhbnN3ZXI6XG4gICAgICAgICdMYSB2ZXJzacOzbiBkZSBwcm9kdWNjacOzbiBlc3RhcsOhIGxpc3RhIGVsIDE1IGRlIGp1bmlvIGRlIDIwMjU6XFxuLSBTZW1hbmEgMTogRmluYWxpemFjacOzbiBkZSB0ZXN0aW5nXFxuLSBTZW1hbmEgMjogQ29ycmVjY2nDs24gZGUgYnVncyBjcsOtdGljb3NcXG4tIFNlbWFuYSAzOiBQcmVwYXJhY2nDs24gZGUgZGVzcGxpZWd1ZVxcbi0gU2VtYW5hIDQ6IExhbnphbWllbnRvIGdyYWR1YWxcXG5cXG5FbCBjcm9ub2dyYW1hIGVzdMOhIGFsaW5lYWRvIGNvbiBsb3Mgb2JqZXRpdm9zIGRlbCBwcm95ZWN0by4nLFxuICAgICAgcHJvamVjdF9pZDogNDA1MzIsXG4gICAgfSxcbiAgXSxcbiAgJzRiMjg2NTY2LThiZjMtNGY4NC1iZDA0LTZmNzlmNTU3NWRiZic6IFtcbiAgICB7XG4gICAgICBxdWVzdGlvbjogJ8K/Q3XDoWwgZXMgZWwgYW7DoWxpc2lzIGRlIHJlbnRhYmlsaWRhZCBwb3Igc2VnbWVudG8/JyxcbiAgICAgIGFuc3dlcjpcbiAgICAgICAgJ0Fuw6FsaXNpcyBkZSByZW50YWJpbGlkYWQgcG9yIHNlZ21lbnRvOlxcbi0gU2VnbWVudG8gU01COiAyNSUgbWFyZ2VuLCAkMjAwSyBpbmdyZXNvc1xcbi0gU2VnbWVudG8gRW50ZXJwcmlzZTogNDAlIG1hcmdlbiwgJDgwMEsgaW5ncmVzb3NcXG4tIFNlZ21lbnRvIEdvYmllcm5vOiAzMCUgbWFyZ2VuLCAkNDAwSyBpbmdyZXNvc1xcblxcbkVsIHNlZ21lbnRvIEVudGVycHJpc2UgZXMgZWwgbcOhcyByZW50YWJsZSB5IHJlcHJlc2VudGEgZWwgNTclIGRlIGxvcyBpbmdyZXNvcy4nLFxuICAgICAgcHJvamVjdF9pZDogMTU1NjcxLFxuICAgIH0sXG4gICAge1xuICAgICAgcXVlc3Rpb246ICfCv0N1w6FsZXMgc29uIGxhcyBwcm95ZWNjaW9uZXMgcGFyYSBlbCBwcsOzeGltbyB0cmltZXN0cmU/JyxcbiAgICAgIGFuc3dlcjpcbiAgICAgICAgJ1Byb3llY2Npb25lcyBRMiAyMDI1Olxcbi0gSW5ncmVzb3MgdG90YWxlczogJDQ1MCwwMDAgKCsxNSUgdnMgUTEpXFxuLSBOdWV2b3MgY2xpZW50ZXM6IDI1ICgrMjAlIHZzIFExKVxcbi0gQ2h1cm4gcmF0ZTogNSUgKG9iamV0aXZvOiA8OCUpXFxuLSBMVFYgcHJvbWVkaW86ICQxOCwwMDAgKCsxMCUgdnMgUTEpXFxuXFxuTGFzIHByb3llY2Npb25lcyBlc3TDoW4gYmFzYWRhcyBlbiBlbCBwaXBlbGluZSBhY3R1YWwgeSB0ZW5kZW5jaWFzIGRlIG1lcmNhZG8uJyxcbiAgICAgIHByb2plY3RfaWQ6IDE1NTY3MSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHF1ZXN0aW9uOiAnwr9Dw7NtbyBhZmVjdGEgbGEgaW5mbGFjacOzbiBhIGxhIHJlbnRhYmlsaWRhZD8nLFxuICAgICAgYW5zd2VyOlxuICAgICAgICAnSW1wYWN0byBkZSBsYSBpbmZsYWNpw7NuIGVuIGxhIHJlbnRhYmlsaWRhZDpcXG4tIENvc3RvcyBvcGVyYXRpdm9zOiArOCUgKHZzIDUlIHByb3llY3RhZG8pXFxuLSBQcmVjaW9zOiArMTIlIChhanVzdGUgaW1wbGVtZW50YWRvKVxcbi0gTWFyZ2VuIG5ldG86ICsyJSAoYmVuZWZpY2lvIGRlbCBhanVzdGUgZGUgcHJlY2lvcylcXG5cXG5MYSBlc3RyYXRlZ2lhIGRlIHByZWNpb3MgaGEgY29tcGVuc2FkbyBlbCBhdW1lbnRvIGRlIGNvc3Rvcy4nLFxuICAgICAgcHJvamVjdF9pZDogMTU1NjcxLFxuICAgIH0sXG4gIF0sXG4gICdjYzZiOTFlYS1mOGVkLTQ4NjItYWNmMy1lNGVjYjQ1NGY1NDcnOiBbXG4gICAge1xuICAgICAgcXVlc3Rpb246ICfCv0N1w6FsZXMgc29uIGxhcyB0YXJlYXMgYmxvcXVlYWRhcyBhY3R1YWxtZW50ZT8nLFxuICAgICAgYW5zd2VyOlxuICAgICAgICAnVGFyZWFzIGJsb3F1ZWFkYXM6XFxuMS4gSW50ZWdyYWNpw7NuIGNvbiBzaXN0ZW1hIGRlIHBhZ29zIChibG9xdWVhZGEgcG9yIGRlcGVuZGVuY2lhIGV4dGVybmEpXFxuMi4gSW1wbGVtZW50YWNpw7NuIGRlIG5vdGlmaWNhY2lvbmVzIHB1c2ggKGJsb3F1ZWFkYSBwb3IgYXByb2JhY2nDs24gZGUgc2VndXJpZGFkKVxcbjMuIE1pZ3JhY2nDs24gZGUgZGF0b3MgKGJsb3F1ZWFkYSBwb3IgbWFudGVuaW1pZW50byBkZSBCRClcXG5cXG5TZSBlc3TDoW4gY29vcmRpbmFuZG8gY29uIGxvcyBlcXVpcG9zIGV4dGVybm9zIHBhcmEgcmVzb2x2ZXIgbG9zIGJsb3F1ZW9zLicsXG4gICAgICBwcm9qZWN0X2lkOiA0MDUzMixcbiAgICB9LFxuICAgIHtcbiAgICAgIHF1ZXN0aW9uOiAnwr9RdWnDqW4gcHVlZGUgYXl1ZGFyIGNvbiBsYXMgdGFyZWFzIGJsb3F1ZWFkYXM/JyxcbiAgICAgIGFuc3dlcjpcbiAgICAgICAgJ1JlY3Vyc29zIGRpc3BvbmlibGVzIHBhcmEgZGVzYmxvcXVlYXIgdGFyZWFzOlxcbi0gSnVhbiAoQXJxdWl0ZWN0byk6IFB1ZWRlIGF5dWRhciBjb24gZGVwZW5kZW5jaWFzIHTDqWNuaWNhc1xcbi0gTGF1cmEgKFByb2R1Y3QgTWFuYWdlcik6IFB1ZWRlIGNvb3JkaW5hciBjb24gc3Rha2Vob2xkZXJzIGV4dGVybm9zXFxuLSBSb2JlcnRvIChEZXZPcHMpOiBQdWVkZSByZXNvbHZlciBwcm9ibGVtYXMgZGUgaW5mcmFlc3RydWN0dXJhXFxuXFxuU2UgaGEgYXNpZ25hZG8gdW4gY29vcmRpbmFkb3IgcGFyYSBjYWRhIHRhcmVhIGJsb3F1ZWFkYS4nLFxuICAgICAgcHJvamVjdF9pZDogNDA1MzIsXG4gICAgfSxcbiAgICB7XG4gICAgICBxdWVzdGlvbjogJ8K/Q3XDoWwgZXMgZWwgcGxhbiBkZSBjb250aW5nZW5jaWE/JyxcbiAgICAgIGFuc3dlcjpcbiAgICAgICAgJ1BsYW4gZGUgY29udGluZ2VuY2lhIHBhcmEgdGFyZWFzIGJsb3F1ZWFkYXM6XFxuLSBBbHRlcm5hdGl2YSAxOiBVc2FyIHNpc3RlbWEgZGUgcGFnb3MgYWx0ZXJuYXRpdm8gKGltcGxlbWVudGFjacOzbjogMyBkw61hcylcXG4tIEFsdGVybmF0aXZhIDI6IEltcGxlbWVudGFyIG5vdGlmaWNhY2lvbmVzIHBvciBlbWFpbCAoaW1wbGVtZW50YWNpw7NuOiAxIGTDrWEpXFxuLSBBbHRlcm5hdGl2YSAzOiBNaWdyYWNpw7NuIGluY3JlbWVudGFsIGRlIGRhdG9zIChpbXBsZW1lbnRhY2nDs246IDUgZMOtYXMpXFxuXFxuU2UgYWN0aXZhcsOhIGVsIHBsYW4gZGUgY29udGluZ2VuY2lhIHNpIGxvcyBibG9xdWVvcyBwZXJzaXN0ZW4gbcOhcyBkZSA0OCBob3Jhcy4nLFxuICAgICAgcHJvamVjdF9pZDogNDA1MzIsXG4gICAgfSxcbiAgXSxcbiAgJzVkOWViNWZhLTczM2QtNGU3Yy1hZWE4LTBkNTk5YThiMDFhZic6IFtcbiAgICB7XG4gICAgICBxdWVzdGlvbjogJ8K/Q3XDoWwgZXMgZWwgYW7DoWxpc2lzIGRlIGNvc3RvcyB2cyBiZW5lZmljaW9zPycsXG4gICAgICBhbnN3ZXI6XG4gICAgICAgICdBbsOhbGlzaXMgY29zdG8tYmVuZWZpY2lvOlxcbi0gQ29zdG9zIHRvdGFsZXM6ICQzNTAsMDAwXFxuLSBCZW5lZmljaW9zIHByb3llY3RhZG9zOiAkMSwyMDAsMDAwXFxuLSBSYXRpbyBiZW5lZmljaW8vY29zdG86IDMuNDoxXFxuLSBWYWxvciBwcmVzZW50ZSBuZXRvOiAkNzUwLDAwMFxcbi0gVGFzYSBpbnRlcm5hIGRlIHJldG9ybm86IDQ1JVxcblxcbkVsIHByb3llY3RvIGVzIGFsdGFtZW50ZSByZW50YWJsZSB5IHN1cGVyYSB0b2RvcyBsb3MgY3JpdGVyaW9zIGRlIGludmVyc2nDs24uJyxcbiAgICAgIHByb2plY3RfaWQ6IDE1NTY3MSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHF1ZXN0aW9uOiAnwr9DdcOhbGVzIHNvbiBsb3Mgcmllc2dvcyBmaW5hbmNpZXJvcz8nLFxuICAgICAgYW5zd2VyOlxuICAgICAgICAnUmllc2dvcyBmaW5hbmNpZXJvcyBpZGVudGlmaWNhZG9zOlxcbjEuIEZsdWN0dWFjacOzbiBkZSBkaXZpc2FzIChQcm9iYWJpbGlkYWQ6IE1lZGlhLCBJbXBhY3RvOiBBbHRvKVxcbjIuIENhbWJpb3MgcmVndWxhdG9yaW9zIChQcm9iYWJpbGlkYWQ6IEJhamEsIEltcGFjdG86IEFsdG8pXFxuMy4gQ29tcGV0ZW5jaWEgYWdyZXNpdmEgKFByb2JhYmlsaWRhZDogQWx0YSwgSW1wYWN0bzogTWVkaW8pXFxuNC4gUmVjZXNpw7NuIGVjb27Ds21pY2EgKFByb2JhYmlsaWRhZDogQmFqYSwgSW1wYWN0bzogQWx0bylcXG5cXG5TZSBoYW4gaW1wbGVtZW50YWRvIGVzdHJhdGVnaWFzIGRlIG1pdGlnYWNpw7NuIHBhcmEgY2FkYSByaWVzZ28uJyxcbiAgICAgIHByb2plY3RfaWQ6IDE1NTY3MSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHF1ZXN0aW9uOiAnwr9Dw7NtbyBzZSBkaXN0cmlidXllIGVsIHByZXN1cHVlc3RvPycsXG4gICAgICBhbnN3ZXI6XG4gICAgICAgICdEaXN0cmlidWNpw7NuIGRlbCBwcmVzdXB1ZXN0bzpcXG4tIERlc2Fycm9sbG86IDQwJSAoJDE0MCwwMDApXFxuLSBJbmZyYWVzdHJ1Y3R1cmE6IDI1JSAoJDg3LDUwMClcXG4tIE1hcmtldGluZzogMjAlICgkNzAsMDAwKVxcbi0gT3BlcmFjaW9uZXM6IDEwJSAoJDM1LDAwMClcXG4tIENvbnRpbmdlbmNpYTogNSUgKCQxNyw1MDApXFxuXFxuRWwgcHJlc3VwdWVzdG8gZXN0w6EgYWxpbmVhZG8gY29uIGxhcyBtZWpvcmVzIHByw6FjdGljYXMgZGVsIHNlY3Rvci4nLFxuICAgICAgcHJvamVjdF9pZDogMTU1NjcxLFxuICAgIH0sXG4gIF0sXG59XG5cbi8vIEZ1bmNpw7NuIHBhcmEgZ2VuZXJhciBtZW5zYWplcyBhbGVhdG9yaW9zIGJhc2Fkb3MgZW4gZWwgY2hhdElkXG5leHBvcnQgY29uc3QgZ2VuZXJhdGVNb2NrQ2hhdE1lc3NhZ2VzID0gKGNoYXRJZDogc3RyaW5nKTogQ2hhdE1lc3NhZ2VzUmVzcG9uc2VTY2hlbWEgPT4ge1xuICBjb25zdCBtZXNzYWdlc0ZvckNoYXQgPVxuICAgIENIQVRfTUVTU0FHRVNfREFUQUJBU0VbY2hhdElkXSB8fCBDSEFUX01FU1NBR0VTX0RBVEFCQVNFWydiZmNhZDUyMC1kYmY3LTRkOTktYmE5Yi0wZWVkOTM0MjQ0NTknXVxuXG4gIC8vIEdlbmVyYXIgZW50cmUgMyB5IDYgbWVuc2FqZXMgYWxlYXRvcmlvc1xuICBjb25zdCBudW1NZXNzYWdlcyA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDQpICsgM1xuICBjb25zdCBzZWxlY3RlZE1lc3NhZ2VzOiBDaGF0TWVzc2FnZUl0ZW1SZXNwb25zZVtdID0gW11cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IG51bU1lc3NhZ2VzOyBpICs9IDEpIHtcbiAgICBjb25zdCByYW5kb21JbmRleCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIG1lc3NhZ2VzRm9yQ2hhdC5sZW5ndGgpXG4gICAgY29uc3QgbWVzc2FnZSA9IG1lc3NhZ2VzRm9yQ2hhdFtyYW5kb21JbmRleF1cblxuICAgIC8vIEdlbmVyYXIgZmVjaGEgYWxlYXRvcmlhIGVuIGxvcyDDumx0aW1vcyA3IGTDrWFzXG4gICAgY29uc3QgcmFuZG9tRGF0ZSA9IG5ldyBEYXRlKClcbiAgICByYW5kb21EYXRlLnNldERhdGUocmFuZG9tRGF0ZS5nZXREYXRlKCkgLSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiA3KSlcbiAgICByYW5kb21EYXRlLnNldEhvdXJzKE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDI0KSlcbiAgICByYW5kb21EYXRlLnNldE1pbnV0ZXMoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogNjApKVxuXG4gICAgc2VsZWN0ZWRNZXNzYWdlcy5wdXNoKHtcbiAgICAgIC4uLm1lc3NhZ2UsXG4gICAgICBkYXRlOiByYW5kb21EYXRlLnRvSVNPU3RyaW5nKCksXG4gICAgICBtZXNzYWdlX2lkOiBgbXNnXyR7RGF0ZS5ub3coKX1fJHtpfWAsXG4gICAgICB1c2VyX2lkOiAnMTUnLFxuICAgICAgd2FzX2hlbHBmdWw6IE1hdGgucmFuZG9tKCkgPiAwLjMgPyAxIDogMCxcbiAgICB9KVxuICB9XG5cbiAgLy8gT3JkZW5hciBwb3IgZmVjaGFcbiAgc2VsZWN0ZWRNZXNzYWdlcy5zb3J0KChhLCBiKSA9PiBuZXcgRGF0ZShhLmRhdGUpLmdldFRpbWUoKSAtIG5ldyBEYXRlKGIuZGF0ZSkuZ2V0VGltZSgpKVxuXG4gIHJldHVybiB7XG4gICAgaXRlbXM6IHNlbGVjdGVkTWVzc2FnZXMsXG4gICAgbGFzdF9ldmFsdWF0ZWRfa2V5OiBgJTdCJTIyUEslMjIlM0ElMjAlMjJzdGFnaW5nJTIzQ0hBVElEJTIzJHtjaGF0SWR9JTIzUFJPSkVDVCUyM3BtX2FnZW50JTIyJTJDJTIwJTIyU0slMjIlM0ElMjAke0RhdGUubm93KCl9JTdEYCxcbiAgfVxufVxuXG4vLyBNb2NrIG9yaWdpbmFsIHBhcmEgY29tcGF0aWJpbGlkYWRcbmV4cG9ydCBjb25zdCBNT0NLX0NIQVRfTUVTU0FHRVNfUkVTUE9OU0U6IENoYXRNZXNzYWdlc1Jlc3BvbnNlU2NoZW1hID0ge1xuICBpdGVtczogW1xuICAgIHtcbiAgICAgIGFuc3dlcjpcbiAgICAgICAgJ0VsIHByb3llY3RvIGFjdHVhbG1lbnRlIHRpZW5lIHVuIHByb2dyZXNvIGRlbCA3NSUuIExvcyBoaXRvcyBwcmluY2lwYWxlcyBjb21wbGV0YWRvcyBpbmNsdXllbiBsYSBmYXNlIGRlIGRpc2XDsW8gKDEwMCUpLCBkZXNhcnJvbGxvIGRlbCBiYWNrZW5kICg5MCUpLCB5IGxhIGludGVyZmF6IGRlIHVzdWFyaW8gKDYwJSkuIEVsIHNwcmludCBhY3R1YWwgZXN0w6EgZW5mb2NhZG8gZW4gbGEgaW1wbGVtZW50YWNpw7NuIGRlIG51ZXZhcyBjYXJhY3RlcsOtc3RpY2FzIHkgbGEgb3B0aW1pemFjacOzbiBkZWwgcmVuZGltaWVudG8uJyxcbiAgICAgIGRhdGU6ICcyMDI1LTA1LTE0VDE3OjUyOjQ0LjExNzQ4NScsXG4gICAgICBtZXNzYWdlX2lkOiAnbXNnXzIwMjUwNTE0XzAwMScsXG4gICAgICBxdWVzdGlvbjogJ8K/Q3XDoWwgZXMgZWwgZXN0YWRvIGFjdHVhbCBkZWwgcHJveWVjdG8/JyxcbiAgICAgIHVzZXJfaWQ6ICcxNScsXG4gICAgICB3YXNfaGVscGZ1bDogdHJ1ZSxcbiAgICAgIHByb2plY3RfaWQ6IDQwNTMyLFxuICAgICAgYWdlbnRfaWQ6ICcxMjMnLFxuICAgICAgdGltZXN0YW1wOiAnJyxcbiAgICAgIG1lbW9yeV9zZXNzaW9uX2lkOiAnJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGFuc3dlcjpcbiAgICAgICAgJ0xhIHJlbnRhYmlsaWRhZCBwcm95ZWN0YWRhIGRlbCBwcm95ZWN0byBlcyBkZWwgMjglIGFudWFsLiBMb3MgcHJpbmNpcGFsZXMgaW5kaWNhZG9yZXMgc29uOlxcbi0gUk9JIGVzcGVyYWRvOiAyLjh4XFxuLSBNYXJnZW4gZGUgYmVuZWZpY2lvOiAzNSVcXG4tIFBlcsOtb2RvIGRlIHJlY3VwZXJhY2nDs246IDE4IG1lc2VzXFxuXFxuRXN0b3MgbsO6bWVyb3MgZXN0w6FuIGJhc2Fkb3MgZW4gbGFzIHByb3llY2Npb25lcyBhY3R1YWxlcyB5IGVsIGFuw6FsaXNpcyBkZSBtZXJjYWRvIHJlYWxpemFkbyBlbiBRMSAyMDI1LicsXG4gICAgICBkYXRlOiAnMjAyNS0wNS0xNFQxNzo1Mjo0Ni41NDM5ODAnLFxuICAgICAgbWVzc2FnZV9pZDogJ21zZ18yMDI1MDUxNF8wMDInLFxuICAgICAgcXVlc3Rpb246ICfCv0N1w6FsIGVzIGxhIHJlbnRhYmlsaWRhZCBlc3BlcmFkYSBkZWwgcHJveWVjdG8/JyxcbiAgICAgIHVzZXJfaWQ6ICcxNScsXG4gICAgICB3YXNfaGVscGZ1bDogdHJ1ZSxcbiAgICAgIHByb2plY3RfaWQ6IDQwNTMyLFxuICAgICAgYWdlbnRfaWQ6ICcxMjMnLFxuICAgICAgdGltZXN0YW1wOiAnJyxcbiAgICAgIG1lbW9yeV9zZXNzaW9uX2lkOiAnJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGFuc3dlcjpcbiAgICAgICAgJ0xhcyBwcsOzeGltYXMgdGFyZWFzIHByaW9yaXRhcmlhcyBzb246XFxuMS4gRmluYWxpemFyIGxhIGludGVncmFjacOzbiBjb24gZWwgc2lzdGVtYSBkZSBwYWdvcyAoRmVjaGEgbMOtbWl0ZTogMjAyNS0wNS0yMClcXG4yLiBJbXBsZW1lbnRhciBlbCBudWV2byBtw7NkdWxvIGRlIHJlcG9ydGVzIChGZWNoYSBsw61taXRlOiAyMDI1LTA1LTI1KVxcbjMuIFJlYWxpemFyIHBydWViYXMgZGUgY2FyZ2EgZGVsIHNpc3RlbWEgKEZlY2hhIGzDrW1pdGU6IDIwMjUtMDUtMjgpXFxuNC4gUHJlcGFyYXIgbGEgZG9jdW1lbnRhY2nDs24gcGFyYSBlbCBsYW56YW1pZW50byAoRmVjaGEgbMOtbWl0ZTogMjAyNS0wNi0wMSknLFxuICAgICAgZGF0ZTogJzIwMjUtMDUtMTRUMTc6NTI6NDguNzg2ODg0JyxcbiAgICAgIG1lc3NhZ2VfaWQ6ICdtc2dfMjAyNTA1MTRfMDAzJyxcbiAgICAgIHF1ZXN0aW9uOiAnwr9DdcOhbGVzIHNvbiBsYXMgcHLDs3hpbWFzIHRhcmVhcyBwZW5kaWVudGVzPycsXG4gICAgICB1c2VyX2lkOiAnMTUnLFxuICAgICAgd2FzX2hlbHBmdWw6IHRydWUsXG4gICAgICBwcm9qZWN0X2lkOiA0MDUzMixcbiAgICAgIGFnZW50X2lkOiAnMTIzJyxcbiAgICAgIHRpbWVzdGFtcDogJycsXG4gICAgICBtZW1vcnlfc2Vzc2lvbl9pZDogJycsXG4gICAgfSxcbiAgICB7XG4gICAgICBhbnN3ZXI6XG4gICAgICAgICdFbCBlcXVpcG8gYWN0dWFsIGVzdMOhIGNvbXB1ZXN0byBwb3I6XFxuLSAzIGRlc2Fycm9sbGFkb3JlcyBiYWNrZW5kXFxuLSAyIGRlc2Fycm9sbGFkb3JlcyBmcm9udGVuZFxcbi0gMSBkaXNlw7FhZG9yIFVYL1VJXFxuLSAxIFByb2plY3QgTWFuYWdlclxcbi0gMSBRQSBFbmdpbmVlclxcblxcblRvZG9zIGxvcyBtaWVtYnJvcyBlc3TDoW4gYXNpZ25hZG9zIGFsIDEwMCUgYWwgcHJveWVjdG8geSB0cmFiYWphbiBlbiBtb2RhbGlkYWQgaMOtYnJpZGEuJyxcbiAgICAgIGRhdGU6ICcyMDI1LTA1LTE0VDE3OjUyOjUwLjY1NzgxNScsXG4gICAgICBtZXNzYWdlX2lkOiAnbXNnXzIwMjUwNTE0XzAwNCcsXG4gICAgICBxdWVzdGlvbjogJ8K/Q8OzbW8gZXN0w6EgY29uZm9ybWFkbyBlbCBlcXVpcG8gZGVsIHByb3llY3RvPycsXG4gICAgICB1c2VyX2lkOiAnMTUnLFxuICAgICAgd2FzX2hlbHBmdWw6IHRydWUsXG4gICAgICBwcm9qZWN0X2lkOiA0MDUzMSxcbiAgICAgIGFnZW50X2lkOiAnMTIzJyxcbiAgICAgIHRpbWVzdGFtcDogJycsXG4gICAgICBtZW1vcnlfc2Vzc2lvbl9pZDogJycsXG4gICAgfSxcbiAgICB7XG4gICAgICBhbnN3ZXI6XG4gICAgICAgICdMb3MgcHJpbmNpcGFsZXMgcmllc2dvcyBpZGVudGlmaWNhZG9zIHNvbjpcXG4xLiBEZXBlbmRlbmNpYXMgZGUgdGVyY2Vyb3MgKFByb2JhYmlsaWRhZDogTWVkaWEsIEltcGFjdG86IEFsdG8pXFxuMi4gRXNjYWxhYmlsaWRhZCBkZWwgc2lzdGVtYSAoUHJvYmFiaWxpZGFkOiBCYWphLCBJbXBhY3RvOiBBbHRvKVxcbjMuIEN1bXBsaW1pZW50byByZWd1bGF0b3JpbyAoUHJvYmFiaWxpZGFkOiBNZWRpYSwgSW1wYWN0bzogTWVkaW8pXFxuXFxuU2UgZXN0w6FuIGltcGxlbWVudGFuZG8gcGxhbmVzIGRlIG1pdGlnYWNpw7NuIHBhcmEgY2FkYSB1bm8gZGUgZXN0b3Mgcmllc2dvcy4nLFxuICAgICAgZGF0ZTogJzIwMjUtMDUtMTRUMTc6NTI6NTMuMjcxNjU3JyxcbiAgICAgIG1lc3NhZ2VfaWQ6ICdtc2dfMjAyNTA1MTRfMDA1JyxcbiAgICAgIHF1ZXN0aW9uOiAnwr9DdcOhbGVzIHNvbiBsb3MgcHJpbmNpcGFsZXMgcmllc2dvcyBkZWwgcHJveWVjdG8/JyxcbiAgICAgIHVzZXJfaWQ6ICcxNScsXG4gICAgICB3YXNfaGVscGZ1bDogdHJ1ZSxcbiAgICAgIHByb2plY3RfaWQ6IDQwNTMyLFxuICAgICAgYWdlbnRfaWQ6ICcxMjMnLFxuICAgICAgdGltZXN0YW1wOiAnJyxcbiAgICAgIG1lbW9yeV9zZXNzaW9uX2lkOiAnJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGFuc3dlcjpcbiAgICAgICAgJ0VsIHByZXN1cHVlc3RvIGFjdHVhbCBkZWwgcHJveWVjdG8gZXMgZGUgJDQ1MCwwMDAuIEhhc3RhIGxhIGZlY2hhLCBzZSBoYW4gZ2FzdGFkbyAkMzIwLDAwMCAoNzElIGRlbCBwcmVzdXB1ZXN0bykuIExvcyBwcmluY2lwYWxlcyBnYXN0b3MgaGFuIHNpZG8gZW4gZGVzYXJyb2xsbyAoNDUlKSwgaW5mcmFlc3RydWN0dXJhICgyNSUpLCB5IHJlY3Vyc29zIGh1bWFub3MgKDMwJSkuIEVsIHByZXN1cHVlc3RvIGVzdMOhIGFsaW5lYWRvIGNvbiBsYXMgcHJveWVjY2lvbmVzIGluaWNpYWxlcy4nLFxuICAgICAgZGF0ZTogJzIwMjUtMDUtMTRUMTc6NTI6NTQuODcyNTEyJyxcbiAgICAgIG1lc3NhZ2VfaWQ6ICdtc2dfMjAyNTA1MTRfMDA2JyxcbiAgICAgIHF1ZXN0aW9uOiAnwr9DdcOhbCBlcyBlbCBlc3RhZG8gZGVsIHByZXN1cHVlc3RvIGRlbCBwcm95ZWN0bz8nLFxuICAgICAgdXNlcl9pZDogJzE1JyxcbiAgICAgIHdhc19oZWxwZnVsOiB0cnVlLFxuICAgICAgcHJvamVjdF9pZDogMTU1NjcxLFxuICAgICAgYWdlbnRfaWQ6ICcxMjMnLFxuICAgICAgdGltZXN0YW1wOiAnJyxcbiAgICAgIG1lbW9yeV9zZXNzaW9uX2lkOiAnJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGFuc3dlcjpcbiAgICAgICAgJ0xhcyBtw6l0cmljYXMgY2xhdmUgKEtQSXMpIGRlbCBwcm95ZWN0byBzb246XFxuLSBWZWxvY2lkYWQgZGVsIGVxdWlwbzogNDUgcHVudG9zIHBvciBzcHJpbnRcXG4tIENhbGlkYWQgZGVsIGPDs2RpZ286IDk4JSBkZSBjb2JlcnR1cmEgZGUgcHJ1ZWJhc1xcbi0gU2F0aXNmYWNjacOzbiBkZWwgY2xpZW50ZTogNC44LzVcXG4tIFRpZW1wbyBkZSByZXNwdWVzdGEgYSBpbmNpZGVuY2lhczogPCAyIGhvcmFzXFxuXFxuVG9kYXMgbGFzIG3DqXRyaWNhcyBlc3TDoW4gZGVudHJvIGRlIGxvcyByYW5nb3Mgb2JqZXRpdm9zIGVzdGFibGVjaWRvcy4nLFxuICAgICAgZGF0ZTogJzIwMjUtMDUtMTRUMTc6NTM6MTEuNjc3MzA2JyxcbiAgICAgIG1lc3NhZ2VfaWQ6ICdtc2dfMjAyNTA1MTRfMDA3JyxcbiAgICAgIHF1ZXN0aW9uOiAnwr9DdcOhbGVzIHNvbiBsYXMgbcOpdHJpY2FzIGFjdHVhbGVzIGRlbCBwcm95ZWN0bz8nLFxuICAgICAgdXNlcl9pZDogJzE1JyxcbiAgICAgIHdhc19oZWxwZnVsOiB0cnVlLFxuICAgICAgcHJvamVjdF9pZDogNDA1MzIsXG4gICAgICBhZ2VudF9pZDogJzEyMycsXG4gICAgICB0aW1lc3RhbXA6ICcnLFxuICAgICAgbWVtb3J5X3Nlc3Npb25faWQ6ICcnLFxuICAgIH0sXG4gICAge1xuICAgICAgYW5zd2VyOlxuICAgICAgICAnRWwgY3Jvbm9ncmFtYSBhY3R1YWwgaW5kaWNhIHF1ZSBlbCBwcm95ZWN0byBlc3TDoSBlbiBsYSBGYXNlIDMgZGUgNS4gTGFzIGZlY2hhcyBjbGF2ZSBzb246XFxuLSBGYXNlIDMgKEFjdHVhbCk6IDIwMjUtMDUtMDEgYSAyMDI1LTA2LTE1XFxuLSBGYXNlIDQ6IDIwMjUtMDYtMTYgYSAyMDI1LTA3LTMxXFxuLSBGYXNlIDUgKEZpbmFsKTogMjAyNS0wOC0wMSBhIDIwMjUtMDgtMzFcXG5cXG5FbCBwcm95ZWN0byBlc3TDoSBhdmFuemFuZG8gc2Vnw7puIGxvIHBsYW5pZmljYWRvLicsXG4gICAgICBkYXRlOiAnMjAyNS0wNS0xNFQxNzo1MzoxMi42MTg5MDUnLFxuICAgICAgbWVzc2FnZV9pZDogJ21zZ18yMDI1MDUxNF8wMDgnLFxuICAgICAgcXVlc3Rpb246ICfCv0N1w6FsIGVzIGVsIGNyb25vZ3JhbWEgYWN0dWFsIGRlbCBwcm95ZWN0bz8nLFxuICAgICAgdXNlcl9pZDogJzE1JyxcbiAgICAgIHdhc19oZWxwZnVsOiB0cnVlLFxuICAgICAgcHJvamVjdF9pZDogNDA1MzIsXG4gICAgICBhZ2VudF9pZDogJzEyMycsXG4gICAgICB0aW1lc3RhbXA6ICcnLFxuICAgICAgbWVtb3J5X3Nlc3Npb25faWQ6ICcnLFxuICAgIH0sXG4gICAge1xuICAgICAgYW5zd2VyOlxuICAgICAgICAnTG9zIHN0YWtlaG9sZGVycyBwcmluY2lwYWxlcyBzb246XFxuMS4gQ2xpZW50ZSBmaW5hbDogRW1wcmVzYSBYWVpcXG4yLiBQYXRyb2NpbmFkb3I6IERpcmVjdG9yIGRlIElubm92YWNpw7NuXFxuMy4gVXN1YXJpb3MgZmluYWxlczogRXF1aXBvIGRlIE9wZXJhY2lvbmVzXFxuNC4gUHJvdmVlZG9yZXM6IENsb3VkIFNlcnZpY2VzIEluYy5cXG5cXG5TZSByZWFsaXphbiByZXVuaW9uZXMgc2VtYW5hbGVzIGNvbiBsb3Mgc3Rha2Vob2xkZXJzIHBhcmEgbWFudGVuZXJsb3MgaW5mb3JtYWRvcyBkZWwgcHJvZ3Jlc28uJyxcbiAgICAgIGRhdGU6ICcyMDI1LTA1LTE0VDE3OjUzOjE1LjcwNjQxMicsXG4gICAgICBtZXNzYWdlX2lkOiAnbXNnXzIwMjUwNTE0XzAwOScsXG4gICAgICBxdWVzdGlvbjogJ8K/UXVpw6luZXMgc29uIGxvcyBzdGFrZWhvbGRlcnMgZGVsIHByb3llY3RvPycsXG4gICAgICB1c2VyX2lkOiAnMTUnLFxuICAgICAgd2FzX2hlbHBmdWw6IHRydWUsXG4gICAgICBwcm9qZWN0X2lkOiA0MDUzMixcbiAgICAgIGFnZW50X2lkOiAnMTIzJyxcbiAgICAgIHRpbWVzdGFtcDogJycsXG4gICAgICBtZW1vcnlfc2Vzc2lvbl9pZDogJycsXG4gICAgfSxcbiAgICB7XG4gICAgICBhbnN3ZXI6XG4gICAgICAgICdMb3MgZW50cmVnYWJsZXMgcGVuZGllbnRlcyBwYXJhIGVzdGUgdHJpbWVzdHJlIHNvbjpcXG5cXG58IFTDrXR1bG8gZGUgbGEgVGFyZWEgfCBFc3RhZG8gfFxcbnwtLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLXxcXG58IFByb3B1ZXN0YSBjcmVhdGl2YSB8IE51ZXZhIHxcXG58IEFwbGljYWNpb25lcyBkZSBtYXJjYSB8IE51ZXZhIHxcXG58IEJyYWluc3Rvcm1pbmcgQ29uY2VwdG9zIHZpc3VhbGVzIHwgTnVldmEgfFxcbnwgQnJhaW5zdG9ybWluZyBOYW1pbmcgfCBOdWV2YSB8XFxufCBDb25zb2xpZGFjacOzbiBkZSBCcmllZiB8IE51ZXZhIHxcXG58IEFuw6FsaXNpcyBkZSBsYSBNYXJjYSB8IE51ZXZhIHxcXG58IHRhcmVhIGRlIFBydWViYSB8IE51ZXZhIHxcXG58IFByZXNlbnRhY2nDs24gZGUgcHJvcHVlc3RhICgxKSB8IE51ZXZhIHxcXG58IE1hbnVhbCBkZSBtYXJjYSB8IE51ZXZhIHxcXG58IEFqdXN0ZXMgZGUgRGlzZcOxbyBQcm9wdWVzdGEgMSB8IE51ZXZhIHxcXG58IHRhcmVhIGFsIG1lZGlvIHwgTnVldmEgfFxcbnwgTGEgdGFyZWEgcGFyYSByZWZyZXNjYXIgfCBOdWV2YSB8XFxuXFxuVG9kb3MgbG9zIGVudHJlZ2FibGVzIHRpZW5lbiBzdXMgZmVjaGFzIGRlIGVudHJlZ2EgZGVmaW5pZGFzIHkgZXN0w6FuIHNpZW5kbyBtb25pdG9yZWFkb3MgYWN0aXZhbWVudGUuJyxcbiAgICAgIGRhdGU6ICcyMDI1LTA1LTE0VDE3OjUzOjE2LjkxODQ5MycsXG4gICAgICBtZXNzYWdlX2lkOiAnbXNnXzIwMjUwNTE0XzAxMCcsXG4gICAgICBxdWVzdGlvbjogJ8K/Q3XDoWxlcyBzb24gbG9zIGVudHJlZ2FibGVzIHBlbmRpZW50ZXM/JyxcbiAgICAgIHVzZXJfaWQ6ICcxNScsXG4gICAgICB3YXNfaGVscGZ1bDogdHJ1ZSxcbiAgICAgIHByb2plY3RfaWQ6IDQwNTMyLFxuICAgICAgYWdlbnRfaWQ6ICcxMjMnLFxuICAgICAgdGltZXN0YW1wOiAnJyxcbiAgICAgIG1lbW9yeV9zZXNzaW9uX2lkOiAnJyxcbiAgICB9LFxuICBdLFxuICBsYXN0X2V2YWx1YXRlZF9rZXk6XG4gICAgJyU3QiUyMlBLJTIyJTNBJTIwJTIyc3RhZ2luZyUyM0NIQVRJRCUyMzkwNDkxZDNjLTA1OGEtNDE0OS1iODdlLWYzN2YwMDY4MTgzOSUyM1BST0pFQ1QlMjNwbV9hZ2VudCUyMiUyQyUyMCUyMlNLJTIyJTNBJTIwMTc0NzI0NTE2NCU3RCcsXG59XG4iXSwibWFwcGluZ3MiOiI7OztBQUFBLFNBQVNBLEVBQUUsSUFBSUMsTUFBTSxRQUFRLE1BQU07QUFH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
|