dcdx 1.3.0-next.37 → 1.3.0-next.39

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.
@@ -68,576 +68,576 @@ const ActionHandler = async (program, { action, errorHandler }, options) => {
68
68
  };
69
69
 
70
70
  var jira = [
71
- "9.15.0-jdk17",
71
+ "9.12.4-ubuntu-jdk17",
72
+ "9.15.0",
72
73
  "9.15.0-ubuntu-jdk17",
73
- "10.0.0-ubuntu-jdk17",
74
+ "9.15.0-jdk17",
75
+ "9.12.3-jdk17",
76
+ "9.12.3",
77
+ "9.12.3-ubuntu-jdk17",
74
78
  "10.0.0",
79
+ "10.0.0-ubuntu-jdk17",
75
80
  "10.0.0-jdk17",
76
- "9.15.0",
77
- "10.0.1-ubuntu-jdk17",
78
- "10.0-ubuntu-jdk17",
79
- "10.0-jdk17",
80
- "10.0",
81
- "10.0.1-jdk17",
82
- "10.0.1",
83
81
  "9.15.1-jdk17",
84
- "9.15.1",
85
82
  "9.15.1-ubuntu-jdk17",
86
- "9.11",
87
- "9.11-ubuntu-jdk17",
83
+ "9.15.1",
88
84
  "9.11.3-ubuntu-jdk17",
89
85
  "9.11.3",
86
+ "9.12.4",
87
+ "9.12.4-jdk17",
88
+ "10.0-ubuntu-jdk17",
89
+ "10.0.1",
90
+ "10.0-jdk17",
91
+ "10.0.1-jdk17",
90
92
  "9.11-jdk17",
93
+ "9.11",
91
94
  "9.11.3-jdk17",
92
- "9.12.3",
93
- "9.12.3-jdk17",
94
- "9.12.3-ubuntu-jdk17",
95
- "9.15.2",
96
- "9.15",
97
- "9.15-ubuntu-jdk17",
98
- "9.15.2-jdk17",
95
+ "9.11-ubuntu-jdk17",
96
+ "10.0",
97
+ "10.0.1-ubuntu-jdk17",
99
98
  "9.15.2-ubuntu-jdk17",
100
99
  "9.15-jdk17",
101
- "9.12.4-jdk17",
102
- "9.12.4-ubuntu-jdk17",
103
- "9.12.4",
104
- "9.12.0",
100
+ "9.15.2",
101
+ "9.15.2-jdk17",
102
+ "9.15-ubuntu-jdk17",
103
+ "9.15",
104
+ "9.12.5-jdk17",
105
+ "9.12.5-ubuntu-jdk17",
106
+ "9.12.5",
105
107
  "9.12.0-ubuntu-jdk17",
106
- "10.1.1-ubuntu-jdk17",
107
108
  "9.12.0-jdk17",
108
- "10.1.1",
109
+ "9.12.0",
110
+ "10.1.1-ubuntu-jdk17",
109
111
  "10.1.1-jdk17",
110
- "9.12.5-jdk17",
111
- "9.12.5",
112
- "9.12.5-ubuntu-jdk17",
113
- "9.16.0",
114
- "9.16.0-ubuntu-jdk17",
115
- "9.16.0-jdk17",
116
- "9.7.1-jdk11",
117
- "9.7.1",
118
- "9.7.1-ubuntu-jdk11",
112
+ "10.1.1",
113
+ "9.12.6-jdk17",
114
+ "9.12.6",
115
+ "9.12.6-ubuntu-jdk17",
116
+ "9.12.1-ubuntu-jdk17",
119
117
  "9.12.1-jdk17",
120
118
  "9.12.1",
121
- "9.12.1-ubuntu-jdk17",
122
- "10.1.2-ubuntu-jdk17",
119
+ "9.16.0",
120
+ "9.16.0-jdk17",
121
+ "9.16.0-ubuntu-jdk17",
122
+ "9.12.7",
123
+ "9.12.7-ubuntu-jdk17",
124
+ "9.12.7-jdk17",
123
125
  "10.1-jdk17",
126
+ "10.1.2-ubuntu-jdk17",
124
127
  "10.1.2",
125
- "10.1-ubuntu-jdk17",
126
- "10.1",
127
128
  "10.1.2-jdk17",
128
- "9.12.6-jdk17",
129
- "9.12.6-ubuntu-jdk17",
130
- "9.12.6",
131
- "9.4.6",
132
- "9.4.6-jdk11",
133
- "9.4.6-ubuntu-jdk11",
134
- "9.7",
135
- "9.16.1",
136
- "9.16-ubuntu-jdk17",
137
- "9.7.2-ubuntu-jdk11",
138
- "9.7-jdk11",
139
- "9.7.2-jdk11",
140
- "9.7.2",
141
- "9.7-ubuntu-jdk11",
142
- "9.12.10",
143
- "9.12.10-ubuntu-jdk17",
129
+ "10.1",
130
+ "10.1-ubuntu-jdk17",
144
131
  "9.12.10-jdk17",
132
+ "9.12.10-ubuntu-jdk17",
133
+ "9.12.10",
134
+ "9.16-ubuntu-jdk17",
145
135
  "9.16-jdk17",
136
+ "9.16.1",
146
137
  "9.16.1-ubuntu-jdk17",
147
- "9.16",
148
- "9.16.1-jdk17",
149
138
  "9.14-jdk11",
139
+ "9.14.1-jdk11",
150
140
  "9.14.1-ubuntu-jdk11",
151
141
  "9.14-ubuntu-jdk11",
152
- "9.14.1-jdk11",
153
- "9.12.7-ubuntu-jdk17",
154
- "9.12.7-jdk17",
155
- "9.12.7",
156
- "9.4.7-jdk11",
157
- "9.4.7",
158
- "9.4.7-ubuntu-jdk11",
159
- "9.12.11-jdk17",
142
+ "9.16",
143
+ "9.16.1-jdk17",
144
+ "9.12.8-ubuntu-jdk17",
145
+ "9.12.8",
146
+ "9.12.8-jdk17",
160
147
  "9.12.11-ubuntu-jdk17",
161
148
  "9.12.11",
162
- "10.2.0",
149
+ "9.12.11-jdk17",
163
150
  "10.2.0-jdk17",
164
151
  "10.2.0-ubuntu-jdk17",
165
- "9.4.26-jdk11",
166
- "9.10.0-jdk11",
167
- "9.10.0",
168
152
  "10.0.0-ubi9-jdk17",
169
- "9.10.0-ubuntu-jdk11",
170
153
  "10.0.0-ubi9",
171
- "9.12.8-ubuntu-jdk17",
172
154
  "9.4.26",
155
+ "9.4.26-jdk11",
156
+ "9.10.0-ubuntu-jdk11",
173
157
  "9.4.26-ubuntu-jdk11",
158
+ "9.10.0",
159
+ "9.10.0-jdk11",
160
+ "10.2.0",
161
+ "9.17.0-jdk11",
162
+ "9.12.9-ubuntu-jdk17",
163
+ "9.12.9-jdk17",
164
+ "9.4.6-jdk11",
165
+ "9.15.0-ubuntu-jdk11",
166
+ "9.17.0-ubuntu-jdk11",
167
+ "9.12.9",
168
+ "10.0.1-ubi9-jdk17",
174
169
  "9.17.2-ubi9",
175
- "9.17.2-ubi9-jdk17",
176
- "9.8.0-ubuntu-jdk11",
177
- "9.8.0-jdk11",
178
- "9.12.8-jdk17",
179
- "9.8.0",
180
- "9.12.8",
181
- "9.17.0-jdk17",
170
+ "9.4.6",
171
+ "9.10.1-jdk11",
172
+ "9.4.27-jdk11",
173
+ "9.4.6-ubuntu-jdk11",
174
+ "9.7.1-jdk11",
175
+ "9.7.1-ubuntu-jdk11",
176
+ "9.7.1",
177
+ "9.15.0-jdk11",
178
+ "9.4.27-ubuntu-jdk11",
179
+ "9.10.1-ubuntu-jdk11",
180
+ "9.4.2-jdk11",
182
181
  "9.17.0",
183
- "9.17.0-ubuntu-jdk11",
184
- "9.17.0-ubuntu-jdk17",
185
- "9.17.0-jdk11",
186
- "9.4.8-jdk11",
187
- "9.4.8",
188
- "9.4.8-ubuntu-jdk11",
189
- "9.11.0-ubuntu-jdk11",
190
- "9.12.7-jdk11",
191
- "9.7.1-ubi9-jdk17",
182
+ "9.12.12-ubuntu-jdk17",
192
183
  "9.12.7-ubuntu-jdk11",
193
- "9.7.1-ubi9",
184
+ "9.12.12-jdk17",
185
+ "9.12.12",
186
+ "9.12.7-jdk11",
187
+ "9.17.0-ubuntu-jdk17",
188
+ "9.17.0-jdk17",
189
+ "9.17.2-ubi9-jdk17",
190
+ "9.15.0-ubi9",
191
+ "9.15.0-ubi9-jdk17",
192
+ "9.4.27",
193
+ "9.10.1",
194
194
  "9.4.2",
195
- "9.12.16-jdk11",
196
- "9.12-jdk11",
197
195
  "9.4.2-ubuntu-jdk11",
198
- "9.4.2-jdk11",
199
- "9.4.12",
200
- "9.12-ubuntu-jdk11",
201
- "9.12.16-ubuntu-jdk11",
202
- "9.4.12-jdk11",
203
- "9.12.12-ubuntu-jdk17",
204
- "9.4.12-ubuntu-jdk11",
205
- "9.12.12",
206
- "9.12.12-jdk17",
207
- "9.17.3-ubi9",
196
+ "9.11.0-ubuntu-jdk11",
208
197
  "9.11.0-jdk11",
209
- "9.17.3-ubi9-jdk17",
210
- "9.4.27-ubuntu-jdk11",
211
- "9.15.0-jdk11",
212
- "9.15.0-ubuntu-jdk11",
213
- "10.2-jdk17",
214
- "9.15.0-ubi9",
215
198
  "10.2.1-ubuntu-jdk17",
216
- "10.2.1-jdk17",
217
199
  "10.2-ubuntu-jdk17",
218
- "10.2.1",
219
- "9.15.0-ubi9-jdk17",
220
- "9.8.1",
221
- "10.2",
222
- "9.4.27",
223
200
  "10.0.1-ubi9",
224
- "9.12.9",
225
- "9.10.1-ubuntu-jdk11",
226
- "10.0.1-ubi9-jdk17",
227
- "9.10.1-jdk11",
228
- "9.4.27-jdk11",
229
- "9.10.1",
230
201
  "9.17.1-ubuntu-jdk11",
231
- "9.17.1",
232
- "9.12.10-jdk11",
233
- "9.8.1-ubuntu-jdk11",
234
- "9.8.1-jdk11",
202
+ "9.7",
203
+ "9.7.2-ubuntu-jdk11",
204
+ "9.13.0-jdk17",
205
+ "10.2.1-jdk17",
206
+ "10.2.1",
207
+ "10.2-jdk17",
208
+ "10.2",
209
+ "9.12.8-jdk11",
210
+ "9.4.7-jdk11",
211
+ "9.7-ubuntu-jdk11",
212
+ "9.4.7",
213
+ "9.7.2",
214
+ "9.4.7-ubuntu-jdk11",
215
+ "9.7-jdk11",
235
216
  "9.17.1-jdk11",
236
- "9.12.9-jdk17",
237
- "9.7.2-ubi9-jdk17",
238
- "9.7.2-ubi9",
239
- "9.12.9-ubuntu-jdk17",
240
- "9.12.8-ubuntu-jdk11",
241
- "9.12.13-jdk17",
242
- "9.4.9",
243
- "9.12.10-ubuntu-jdk11",
217
+ "9.7.2-jdk11",
244
218
  "9.15.1-jdk11",
245
- "9.17.1-ubuntu-jdk17",
246
- "9.17.1-jdk17",
247
- "9.4.9-jdk11",
248
- "9.11.1-ubuntu-jdk11",
249
- "9.4.9-ubuntu-jdk11",
219
+ "9.12.10-jdk11",
220
+ "9.12.13",
221
+ "9.13.0",
250
222
  "9.4.20-jdk11",
251
- "9.4.20",
252
- "9.4.14",
253
- "9.12.7-ubi9",
254
- "9.12.7-ubi9-jdk17",
255
- "9.12.8-jdk11",
223
+ "9.12.10-ubuntu-jdk11",
224
+ "9.10",
225
+ "9.10.2-jdk11",
226
+ "9.4.28-jdk11",
227
+ "9.13.0-ubuntu-jdk17",
256
228
  "9.4.20-ubuntu-jdk11",
257
- "9.4.14-jdk11",
258
- "9.4.14-ubuntu-jdk11",
259
- "9.11.1-jdk11",
260
- "9.12.13",
261
229
  "9.15.1-ubuntu-jdk11",
262
- "9.12.15-ubi9-jdk17",
263
230
  "9.12.13-ubuntu-jdk17",
264
- "9.4.28",
265
- "9.10.2-ubuntu-jdk11",
266
- "9.12.15-ubi9",
267
- "9.15.1-ubi9",
268
- "9.10",
269
- "9.15.1-ubi9-jdk17",
231
+ "9.12.7-ubi9",
232
+ "9.12.8-ubuntu-jdk11",
233
+ "9.12.7-ubi9-jdk17",
234
+ "9.12.13-jdk17",
235
+ "9.17.1-jdk17",
236
+ "9.17.1-ubuntu-jdk17",
237
+ "9.12.16-ubuntu-jdk11",
238
+ "9.17.1",
239
+ "9.4.28",
270
240
  "9.10-ubuntu-jdk11",
271
- "latest",
272
- "9.4.28-jdk11",
273
241
  "9.10.2",
274
- "9.4.28-ubuntu-jdk11",
275
242
  "9.10-jdk11",
276
- "9.5.0-jdk11",
277
- "9.10.2-jdk11",
278
- "9.8.2-jdk11",
279
- "9.8.2-ubuntu-jdk11",
280
- "9.8-jdk11",
281
- "9.8-ubuntu-jdk11",
282
- "9.8.2",
283
- "9.5.0",
284
- "9.13.0-ubuntu-jdk17",
285
- "9.5.0-ubuntu-jdk11",
286
- "9.17.2-ubuntu-jdk17",
287
- "9.8-ubuntu-jdk17",
288
- "9.10.0-ubi9-jdk17",
243
+ "9.12-ubuntu-jdk11",
244
+ "9.12-jdk11",
245
+ "9.4.28-ubuntu-jdk11",
246
+ "9.10.2-ubuntu-jdk11",
247
+ "9.12.16-jdk11",
248
+ "9.4.20",
249
+ "9.11.1-jdk11",
250
+ "9.17.3-ubi9-jdk17",
251
+ "9.15.1-ubi9",
252
+ "9.11.1-ubuntu-jdk11",
253
+ "9.17.3-ubi9",
254
+ "9.15.1-ubi9-jdk17",
255
+ "9.12.15-ubi9",
256
+ "9.4.8-ubuntu-jdk11",
257
+ "9.12.9-ubuntu-jdk11",
258
+ "9.12.15-ubi9-jdk17",
259
+ "9.17.2-jdk17",
260
+ "9.4.8-jdk11",
261
+ "9.4.8",
289
262
  "9.17.2-jdk11",
290
- "9.17.4-ubi9-jdk17",
291
263
  "9.17.2-ubuntu-jdk11",
292
- "9.17.4-ubi9",
293
- "9.8.2-jdk17",
294
- "9.8.2-ubuntu-jdk17",
295
- "9.12.8-ubi9",
296
- "10.3",
297
- "jdk17",
298
- "9.13.0-jdk17",
299
- "9.13.0",
300
- "9.4.21",
301
- "9.4.21-ubuntu-jdk11",
302
- "9.4.21-jdk11",
303
- "9.8",
304
- "10.1.1-ubi9",
305
- "9.10.0-ubi9",
306
- "9.12.8-ubi9-jdk17",
307
264
  "9.12.11-ubuntu-jdk11",
308
265
  "9.12.11-jdk11",
309
- "ubuntu-jdk17",
310
- "9.15.2-ubi9-jdk17",
311
- "9.17.2-jdk17",
312
- "9.12.14-ubuntu-jdk17",
313
- "9.8-jdk17",
314
- "9.5.0-jdk17",
266
+ "9.17.2-ubuntu-jdk17",
267
+ "9.10.0-ubi9-jdk17",
268
+ "9.10.0-ubi9",
269
+ "9.12.8-ubi9-jdk17",
270
+ "9.8.0-jdk11",
271
+ "latest",
272
+ "9.4.21-ubuntu-jdk11",
273
+ "9.4.29-ubuntu-jdk11",
274
+ "9.4.21-jdk11",
275
+ "9.4.12-ubuntu-jdk11",
276
+ "9.7.1-ubi9-jdk17",
277
+ "9.4",
278
+ "9.4.21",
279
+ "9.4-jdk11",
280
+ "9.17.4-ubi9-jdk17",
281
+ "9.7.1-ubi9",
282
+ "9.4.12",
283
+ "9.11.2-jdk11",
284
+ "9.8-ubuntu-jdk17",
285
+ "9.12.9-jdk11",
315
286
  "9.15.2-jdk11",
287
+ "9.15-jdk11",
288
+ "9.12.14-jdk17",
289
+ "9.15-ubuntu-jdk11",
316
290
  "9.15.2-ubuntu-jdk11",
291
+ "10.1.1-ubi9-jdk17",
292
+ "10.1.1-ubi9",
317
293
  "9.17.2",
318
- "10",
319
- "10-jdk17",
320
- "10.3-jdk17",
321
- "10.3-ubuntu-jdk17",
322
- "9.4-jdk11",
294
+ "9.12.14-ubuntu-jdk17",
295
+ "9.12.14",
296
+ "9.12.8-ubi9",
297
+ "9.8.0",
298
+ "9.4.12-jdk11",
299
+ "9.13",
300
+ "9.15.2-ubi9",
301
+ "9.8.0-ubuntu-jdk11",
302
+ "9.17.4-ubi9",
303
+ "9.8.2-jdk17",
323
304
  "9.4.29-jdk11",
324
- "9.4.15-jdk11",
325
- "9.12.2-jdk11",
326
- "9.12.2-ubuntu-jdk11",
327
- "10.1.1-ubi9-jdk17",
328
- "9.12.9-jdk11",
329
- "9.12.9-ubuntu-jdk11",
330
- "10.3.0-jdk17",
331
- "10.3.0-ubuntu-jdk17",
305
+ "9.4-ubuntu-jdk11",
306
+ "9.11.2-ubuntu-jdk11",
307
+ "9.8-jdk17",
308
+ "9.8.2-ubuntu-jdk17",
309
+ "9.4.29",
310
+ "10",
311
+ "10.3",
332
312
  "10.3.0",
333
- "9.4.15",
313
+ "9.12.16-ubi9",
314
+ "9.13.1",
315
+ "10.3.0-ubuntu-jdk17",
316
+ "9.7.2-ubi9-jdk17",
334
317
  "9.12.0-ubi9-jdk17",
335
- "9.4.15-ubuntu-jdk11",
336
- "9.15-ubuntu-jdk11",
337
318
  "9.12.0-ubi9",
338
- "9.11.2-ubuntu-jdk11",
319
+ "10.3-ubuntu-jdk17",
320
+ "9.7.2-ubi9",
339
321
  "10-ubuntu-jdk17",
340
- "9.12.14-jdk17",
341
- "9.4-ubuntu-jdk11",
342
- "9.8.0-ubi9-jdk17",
343
- "9.12.14",
344
- "9.8.0-ubi9",
345
- "9.11.2-jdk11",
346
- "9.17.5-ubi9-jdk17",
347
- "9.15.2-ubi9",
348
- "9.4",
349
- "9.5",
350
- "9.5-ubuntu-jdk11",
351
- "9.12.16-ubi9-jdk17",
322
+ "9.15.2-ubi9-jdk17",
323
+ "ubuntu-jdk17",
324
+ "10.3.0-jdk17",
325
+ "jdk17",
326
+ "9.13-ubuntu-jdk17",
352
327
  "9.13-jdk17",
353
- "9.15-jdk11",
354
- "9.17.3-jdk11",
328
+ "10.3-jdk17",
329
+ "10-jdk17",
330
+ "9.13.1-ubuntu-jdk17",
331
+ "9.13.1-jdk17",
355
332
  "9.17.3-ubuntu-jdk11",
356
- "9.5.0-ubuntu-jdk17",
357
- "9.12.16-ubi9",
358
- "9.17.5-ubi9",
359
- "9.7.1-jdk17",
360
- "9.7.1-ubuntu-jdk17",
361
- "9.4.29-ubuntu-jdk11",
362
- "9.4.29",
363
- "9.12.12-jdk11",
364
- "9.5.1-ubuntu-jdk11",
365
- "9.4.22-ubuntu-jdk11",
366
- "9.4.22-jdk11",
333
+ "9.12.16-ubi9-jdk17",
334
+ "9.4.9-jdk11",
335
+ "9.4.9-ubuntu-jdk11",
336
+ "9.4.9",
337
+ "9.10.1-ubi9-jdk17",
338
+ "9.17.3-ubuntu-jdk17",
367
339
  "9.10.1-ubi9",
368
- "9.5-jdk11",
340
+ "9.17.5-ubi9-jdk17",
341
+ "9.8.1",
342
+ "9.17.3",
343
+ "9.17.3-jdk17",
344
+ "9.17.5-ubi9",
345
+ "9.8.1-ubuntu-jdk11",
346
+ "9.12.2-jdk11",
347
+ "9.8.1-jdk11",
369
348
  "9.11.3-jdk11",
370
- "9.13.1",
371
- "9.13.1-jdk17",
372
- "9.5.1",
373
- "9.5.1-jdk11",
374
- "9.8.1-ubi9-jdk17",
375
349
  "9.11-ubuntu-jdk11",
376
- "9.13.1-ubuntu-jdk17",
350
+ "9.12.1-ubi9-jdk17",
351
+ "9.5.0",
352
+ "9.17.3-jdk11",
353
+ "9.12.12-jdk11",
377
354
  "9.4.22",
378
- "9.9.0",
379
- "9.9.0-ubuntu-jdk11",
380
- "9.10.1-ubi9-jdk17",
381
- "9.12.1-ubi9",
382
- "9.12.9-ubi9-jdk17",
383
- "9.13-ubuntu-jdk17",
384
- "9.17.3",
385
- "9.13",
386
- "9.12.3-ubuntu-jdk11",
387
- "9.12.12-ubuntu-jdk11",
388
- "9.4.0-jdk11",
389
- "9.11.3-ubuntu-jdk11",
355
+ "9.4.22-ubuntu-jdk11",
356
+ "9.4.14",
390
357
  "9.12.9-ubi9",
391
- "9.13.0-ubuntu-jdk11",
392
- "9.17.3-jdk17",
393
- "9.12.3-jdk11",
394
- "9.17.3-ubuntu-jdk17",
395
- "10.1.2-ubi9-jdk17",
358
+ "9.12.12-ubuntu-jdk11",
359
+ "9.12.9-ubi9-jdk17",
396
360
  "10.1.2-ubi9",
361
+ "9.12.2-ubuntu-jdk11",
362
+ "9.8.2-ubuntu-jdk11",
363
+ "9.13.0-jdk11",
364
+ "9.4.14-ubuntu-jdk11",
365
+ "9.4.14-jdk11",
366
+ "9.4.22-jdk11",
367
+ "9.4.0-jdk11",
368
+ "9.4.0",
397
369
  "9.11-jdk11",
398
- "9.4.16-jdk11",
399
- "9.10.2-ubi9",
400
- "9.9.0-jdk17",
401
- "9.9.0-ubuntu-jdk17",
402
- "9.8.1-ubi9",
403
- "9.5.1-ubuntu-jdk17",
370
+ "10.1.2-ubi9-jdk17",
404
371
  "9.12.15-ubuntu-jdk17",
405
- "9.5-jdk17",
406
- "9.13.0-ubi9-jdk17",
407
- "9.4.16",
408
- "9.4.16-ubuntu-jdk11",
409
- "9.13.0-jdk11",
410
- "9.5.1-jdk17",
411
- "9.5-ubuntu-jdk17",
412
- "9.12.1-ubi9-jdk17",
413
- "9.9.0-jdk11",
372
+ "9.5.0-ubuntu-jdk11",
373
+ "9.5.0-jdk11",
374
+ "9.11.3-ubuntu-jdk11",
375
+ "9.4.0-ubuntu-jdk11",
376
+ "9.13.0-ubuntu-jdk11",
414
377
  "9.12.15",
378
+ "9.16.0-ubuntu-jdk11",
379
+ "9.8",
380
+ "9.8.2",
381
+ "9.8-jdk11",
382
+ "9.12.10-ubi9",
383
+ "9.8.2-jdk11",
415
384
  "9.12.15-jdk17",
416
- "9.4.23-ubuntu-jdk11",
417
- "9.7.2-jdk17",
418
- "9.4.17-ubuntu-jdk11",
419
- "9.12.4-jdk11",
420
- "9.11.0",
421
- "9.4.17-jdk11",
422
- "9.11.0-ubuntu-jdk17",
423
- "9.4.0",
424
- "9.4.0-ubuntu-jdk11",
425
- "9.12.13-ubuntu-jdk11",
426
- "9.8.2-ubi9",
427
- "9.13.1-ubuntu-jdk11",
385
+ "9.12.10-ubi9-jdk17",
386
+ "9.5.0-ubuntu-jdk17",
428
387
  "9.10.2-ubi9-jdk17",
429
- "9.11.0-jdk17",
430
- "9.13.0-ubi9",
431
- "9.7-ubuntu-jdk17",
432
- "9.7.2-ubuntu-jdk17",
433
- "9.4.3-ubuntu-jdk11",
434
- "9.4.3",
435
- "9.7-jdk17",
436
- "9.12.13-jdk11",
437
- "9.10.0-jdk17",
438
- "9.10.0-ubuntu-jdk17",
439
- "9.14.0-ubuntu-jdk17",
440
- "9.12.4-ubuntu-jdk11",
441
- "9.4.3-jdk11",
442
- "9.9.1-jdk17",
443
- "9.6-ubuntu-jdk11",
444
- "9.13-jdk11",
445
- "9.17.4-ubuntu-jdk11",
388
+ "9.13-ubuntu-jdk11",
389
+ "9.9.0-jdk17",
390
+ "9.17.4-ubuntu-jdk17",
391
+ "9.10.2-ubi9",
392
+ "9.4.1-ubuntu-jdk11",
446
393
  "9.13.1-jdk11",
447
- "9.4.23",
394
+ "9.7.1-ubuntu-jdk17",
395
+ "9.12.2-ubi9",
448
396
  "9.4.23-jdk11",
449
- "9.13-ubuntu-jdk11",
450
- "9.12.16",
397
+ "9.5.1",
398
+ "9.8-ubuntu-jdk11",
451
399
  "9.17.4-jdk11",
452
- "9.5.0-ubi9",
453
- "9.5.0-ubi9-jdk17",
454
- "9.8.2-ubi9-jdk17",
400
+ "9.12",
401
+ "9.12-ubuntu-jdk17",
402
+ "9.4.15",
403
+ "9.4.15-jdk11",
404
+ "9.5.1-ubuntu-jdk17",
405
+ "9.5-ubuntu-jdk17",
406
+ "9.12.1-ubi9",
407
+ "9.8.0-ubi9",
408
+ "9.12.3-jdk11",
409
+ "9.9.0-ubuntu-jdk17",
410
+ "9.16.0-ubi9",
411
+ "10.2.0-ubi9-jdk17",
412
+ "9.5.0-jdk17",
455
413
  "9.16.0-jdk11",
456
- "9.4.17",
457
- "9.16.0-ubuntu-jdk11",
458
- "9.12.2-ubi9-jdk17",
459
- "9.17.4-ubuntu-jdk17",
414
+ "9.13.0-ubi9-jdk17",
415
+ "9.12.3-ubuntu-jdk11",
416
+ "9.7.1-jdk17",
417
+ "9.13.0-ubi9",
418
+ "9.8.0-ubi9-jdk17",
419
+ "9.17.4-ubuntu-jdk11",
460
420
  "9.14.0-jdk17",
461
- "9.12.2-ubi9",
421
+ "9.13-jdk11",
422
+ "9.13.1-ubuntu-jdk11",
423
+ "9.4.1",
424
+ "9.11.0-ubi9",
425
+ "9.13.1-ubi9-jdk17",
426
+ "9.12.13-ubuntu-jdk11",
427
+ "9.16.0-ubi9-jdk17",
428
+ "9.4.3-ubuntu-jdk11",
429
+ "9.13.1-ubi9",
430
+ "9.5.1-ubuntu-jdk11",
431
+ "9.4.23",
462
432
  "9.17.4-jdk17",
463
- "9.12",
464
- "9.9.1",
433
+ "9.4.15-ubuntu-jdk11",
434
+ "9.7.2-ubuntu-jdk17",
435
+ "9.12.0-jdk11",
436
+ "9.4.3-jdk11",
437
+ "9.5-ubuntu-jdk11",
438
+ "9.5-jdk11",
439
+ "9.4.23-ubuntu-jdk11",
440
+ "9.12.13-jdk11",
441
+ "9.12.2-ubi9-jdk17",
442
+ "9.12.16-ubuntu-jdk17",
465
443
  "9.17.4",
466
- "9.6.0-jdk11",
467
- "9.14.0",
468
- "9.4.1",
469
- "9.9.1-ubuntu-jdk11",
470
- "9.12.10-ubi9",
471
- "9.12.10-ubi9-jdk17",
472
444
  "9.4.1-jdk11",
473
- "9.12.16-jdk17",
474
- "9.4.24-ubuntu-jdk11",
475
- "9.4.24",
476
- "9.12.16-ubuntu-jdk17",
477
- "9.6",
445
+ "9.4.3",
446
+ "9.12.14-jdk11",
447
+ "9.12.4-jdk11",
448
+ "9.11.0-ubi9-jdk17",
449
+ "9.4.16",
450
+ "9.5.1-jdk11",
451
+ "9.8.1-ubi9",
452
+ "9.12.16",
453
+ "9.16.1-ubi9-jdk17",
454
+ "9.16.1-ubi9",
455
+ "10.2.0-ubi9",
478
456
  "9.12-jdk17",
479
- "9.6-jdk11",
480
- "9.11.1-ubuntu-jdk17",
481
- "10.2.0-ubi9-jdk17",
482
- "9.12.5-jdk11",
483
- "9.4.18",
484
- "9.9.1-jdk11",
485
- "9.12-ubuntu-jdk17",
486
- "9.4.1-ubuntu-jdk11",
487
- "9.16.0-ubi9",
488
- "9.6.0",
457
+ "9.12.3-ubi9",
458
+ "9.12.16-jdk17",
459
+ "9.17-ubuntu-jdk11",
489
460
  "9.17.5-ubuntu-jdk11",
490
- "9.12.3-ubi9-jdk17",
461
+ "9.14.0",
462
+ "9.17",
463
+ "9-jdk17",
464
+ "9.4.4-jdk11",
465
+ "9.16-jdk11",
466
+ "9.5-jdk17",
467
+ "9.17-ubuntu-jdk17",
468
+ "9.5.1-jdk17",
469
+ "9.14.0-ubuntu-jdk17",
491
470
  "9.9.1-ubuntu-jdk17",
492
- "9.6.0-ubuntu-jdk11",
493
- "9.16.0-ubi9-jdk17",
494
- "9.10.1-ubuntu-jdk17",
495
- "9.6-ubuntu-jdk17",
496
- "9.12.0-jdk11",
497
- "9.6.0-ubuntu-jdk17",
498
- "9.6.0-jdk17",
499
- "9.6-jdk17",
500
- "9.10.1-jdk17",
501
- "9.12.5-ubuntu-jdk11",
502
- "9.12.14-jdk11",
503
- "9.12.0-ubuntu-jdk11",
504
- "9.13.1-ubi9",
505
- "9.13.1-ubi9-jdk17",
506
- "9.12.14-ubuntu-jdk11",
507
- "9.9.2-jdk11",
508
- "9.9.2-ubuntu-jdk11",
509
- "10.2.0-ubi9",
510
- "9.9",
471
+ "9.16-ubuntu-jdk11",
472
+ "9.4.10-ubuntu-jdk11",
473
+ "9.12.4-ubuntu-jdk11",
474
+ "9.16.1-jdk11",
475
+ "9.9.1-jdk17",
476
+ "9.9.2-jdk17",
477
+ "9.9-jdk17",
478
+ "9.16.1-ubuntu-jdk11",
479
+ "9.11.0-ubuntu-jdk17",
480
+ "9.4.16-jdk11",
481
+ "9.4.16-ubuntu-jdk11",
482
+ "9.11.0-jdk17",
511
483
  "9.4.10",
512
- "9.9-jdk11",
513
- "9.17.5-jdk11",
514
- "9.11.1",
515
- "9.11.0-ubi9",
516
- "9.11.1-jdk17",
517
- "9.11.0-ubi9-jdk17",
518
- "9.4.24-jdk11",
519
- "9.8.0-jdk17",
520
- "9.12.11-ubi9",
484
+ "9.11.0",
485
+ "9.5",
486
+ "9.8.1-ubi9-jdk17",
521
487
  "9-ubuntu-jdk17",
522
- "9.8.0-ubuntu-jdk17",
523
- "9.17-jdk17",
524
- "9.16-jdk11",
525
- "9.4.18-jdk11",
526
- "9.12.3-ubi9",
488
+ "9.12.11-ubi9",
489
+ "9.7-jdk17",
490
+ "9.12.0-ubuntu-jdk11",
491
+ "9.7.2-jdk17",
492
+ "9.7-ubuntu-jdk17",
493
+ "9.14-ubuntu-jdk17",
494
+ "9.14",
495
+ "9.14.1",
496
+ "9.5.0-ubi9",
497
+ "9.12.14-ubuntu-jdk11",
498
+ "9.4.17",
499
+ "9.17-jdk11",
527
500
  "9-jdk11",
528
- "9.17-ubuntu-jdk11",
529
- "9.16.1-ubuntu-jdk11",
530
- "9.16.1-jdk11",
531
- "9.9-ubuntu-jdk11",
532
- "9-ubuntu-jdk11",
533
- "9.16-ubuntu-jdk11",
534
- "9.4.18-ubuntu-jdk11",
535
- "9.17.5-jdk17",
536
- "9.4.4-jdk11",
537
501
  "9.4.10-jdk11",
502
+ "9.10.0-ubuntu-jdk17",
503
+ "9.9.2-ubuntu-jdk17",
504
+ "9.12.3-ubi9-jdk17",
505
+ "9-ubuntu-jdk11",
506
+ "9.17.5-jdk11",
507
+ "9.5.0-ubi9-jdk17",
508
+ "9.10.0-jdk17",
509
+ "9.6-jdk11",
510
+ "9.6.0-ubuntu-jdk11",
511
+ "9.4.24-ubuntu-jdk11",
538
512
  "9.17.5-ubuntu-jdk17",
539
- "9.9.2",
540
- "9.16.1-ubi9-jdk17",
541
- "9.5.1-ubi9-jdk17",
542
- "9.4.4-ubuntu-jdk11",
543
- "9.9-jdk17",
544
- "9-jdk17",
513
+ "9.17.5-jdk17",
514
+ "9.12.11-ubi9-jdk17",
545
515
  "9.4.4",
546
- "9.4.10-ubuntu-jdk11",
547
- "9.5.1-ubi9",
548
- "9.17.5",
549
- "9.17-jdk11",
550
- "9.17",
551
- "9.14",
552
516
  "9",
553
- "9.16.1-ubi9",
554
- "9.17-ubuntu-jdk17",
517
+ "9.17-jdk17",
518
+ "9.4.17-ubuntu-jdk11",
519
+ "9.6.0-jdk17",
520
+ "9.17.5",
521
+ "9.6-jdk17",
522
+ "9.9-ubuntu-jdk17",
523
+ "9.9.0",
524
+ "9.9.0-ubuntu-jdk11",
525
+ "9.11.1-ubi9-jdk17",
526
+ "9.9.0-jdk11",
527
+ "9.11.1",
528
+ "9.12.2-ubuntu-jdk17",
529
+ "9.12.2",
530
+ "9.4.17-jdk11",
531
+ "9.4.24",
532
+ "9.4.24-jdk11",
533
+ "9.4.4-ubuntu-jdk11",
555
534
  "9.14-jdk17",
556
- "9.9.2-ubuntu-jdk17",
535
+ "9.11.1-ubi9",
536
+ "9.12.1-jdk11",
537
+ "9.8.2-ubi9-jdk17",
538
+ "9.8.2-ubi9",
557
539
  "9.14.1-ubuntu-jdk17",
540
+ "9.4.11-jdk11",
541
+ "9.9.1-ubuntu-jdk11",
542
+ "9.6.0-jdk11",
543
+ "9.11.1-ubuntu-jdk17",
544
+ "9.12.12-ubi9",
545
+ "9.12.4-ubi9",
546
+ "9.4.11",
547
+ "9.6-ubuntu-jdk11",
548
+ "9.9.1",
549
+ "9.6.0-ubuntu-jdk17",
550
+ "9.6-ubuntu-jdk17",
551
+ "9.6.0",
552
+ "9.4.11-ubuntu-jdk11",
553
+ "9.6",
554
+ "9.12.1-ubuntu-jdk11",
555
+ "9.10.1-jdk17",
556
+ "9.10.1-ubuntu-jdk17",
557
+ "9.11.1-jdk17",
558
+ "9.14.0-ubi9-jdk17",
559
+ "9.4.5-jdk11",
558
560
  "9.14.1-jdk17",
559
- "10.2.1-ubi9",
560
- "9.9.2-jdk17",
561
- "9.14-ubuntu-jdk17",
562
- "9.9-ubuntu-jdk17",
563
- "9.14.1",
564
- "9.12.11-ubi9-jdk17",
565
- "9.9.0-ubi9",
566
- "9.9.0-ubi9-jdk17",
567
- "9.10.2-ubuntu-jdk17",
568
- "10.2.1-ubi9-jdk17",
569
- "9.10.2-jdk17",
570
- "9.10-jdk17",
571
- "9.11.1-ubi9",
572
- "9.10-ubuntu-jdk17",
573
- "9.12.2",
574
- "9.11.1-ubi9-jdk17",
575
- "9.11.2-jdk17",
576
- "9.11.2",
577
- "9.4.25-ubuntu-jdk11",
578
- "9.4.19-jdk11",
579
- "9.12.2-jdk17",
561
+ "9.4.18-ubuntu-jdk11",
562
+ "9.12.4-ubi9-jdk17",
563
+ "9.12.15-jdk11",
564
+ "9.9.1-jdk11",
580
565
  "9.4.25",
581
- "9.14.0-ubuntu-jdk11",
566
+ "9.12.2-jdk17",
567
+ "10.2.1-ubi9-jdk17",
568
+ "10.2.1-ubi9",
582
569
  "9.14.0-jdk11",
583
- "9.12.15-jdk11",
570
+ "9.14.0-ubuntu-jdk11",
571
+ "9.4.25-ubuntu-jdk11",
572
+ "9.4.25-jdk11",
573
+ "9.5.1-ubi9",
584
574
  "9.12.12-ubi9-jdk17",
585
575
  "9.12.15-ubuntu-jdk11",
586
- "9.12.2-ubuntu-jdk17",
587
- "9.7.0-ubuntu-jdk17",
588
- "9.8.1-jdk17",
589
- "9.11.2-ubuntu-jdk17",
590
- "9.11.2-ubi9",
591
- "9.4.25-jdk11",
576
+ "9.12.5-jdk11",
577
+ "9.5.1-ubi9-jdk17",
592
578
  "9.14.0-ubi9",
593
- "9.12.12-ubi9",
594
- "9.4.5-jdk11",
595
- "9.12.4-ubi9",
596
- "9.12.4-ubi9-jdk17",
597
- "9.14.0-ubi9-jdk17",
598
- "9.7.0-jdk17",
599
- "9.4.19-ubuntu-jdk11",
600
- "9.4.11-ubuntu-jdk11",
601
- "9.12.1-ubuntu-jdk11",
602
- "9.12.6-ubuntu-jdk11",
579
+ "9.4.5",
580
+ "9.8.0-ubuntu-jdk17",
581
+ "9.11.2-ubi9-jdk17",
582
+ "9.12.5-ubuntu-jdk11",
583
+ "9.4.18",
584
+ "9.4.18-jdk11",
585
+ "9.4.5-ubuntu-jdk11",
586
+ "9.11.2-ubi9",
587
+ "9.17.0-ubi9-jdk17",
588
+ "9.9",
589
+ "9.9.2-ubuntu-jdk11",
590
+ "9.9-jdk11",
591
+ "9.9-ubuntu-jdk11",
592
+ "9.9.2-jdk11",
593
+ "9.9.2",
594
+ "9.8.0-jdk17",
595
+ "9.9.0-ubi9",
596
+ "9.10.2-ubuntu-jdk17",
603
597
  "9.12.6-jdk11",
604
- "9.9.1-ubi9",
605
- "9.11.2-ubi9-jdk17",
606
- "9.7.0-jdk11",
607
- "9.4.11-jdk11",
608
- "9.4.19",
609
- "9.4.11",
598
+ "9.12.6-ubuntu-jdk11",
599
+ "9.11.2-ubuntu-jdk17",
600
+ "9.11.2",
601
+ "9.9.0-ubi9-jdk17",
602
+ "9.11.2-jdk17",
603
+ "9.7.0",
610
604
  "9.12.5-ubi9",
611
- "9.12.1-jdk11",
612
605
  "9.12.5-ubi9-jdk17",
606
+ "9.10.2-jdk17",
607
+ "9.17.0-ubi9",
608
+ "9.8.1-jdk17",
609
+ "9.14.1-ubi9",
613
610
  "9.8.1-ubuntu-jdk17",
611
+ "9.14.1-ubi9-jdk17",
612
+ "10.3.0-ubi9-jdk17",
614
613
  "9.7.0-ubuntu-jdk11",
615
- "9.6.0-ubi9-jdk17",
616
- "9.4.5-ubuntu-jdk11",
617
- "9.7.0",
618
- "9.4.5",
619
- "9.17.0-ubi9",
620
- "9.6.0-ubi9",
621
- "9.17.0-ubi9-jdk17",
614
+ "9.7.0-jdk11",
615
+ "9.10-jdk17",
616
+ "9.10-ubuntu-jdk17",
617
+ "9.7.0-jdk17",
622
618
  "9.12.13-ubi9-jdk17",
623
- "9.9.1-ubi9-jdk17",
619
+ "9.6.0-ubi9",
624
620
  "10.3.0-ubi9",
625
- "10.3.0-ubi9-jdk17",
626
- "ubi9",
627
- "ubi9-jdk17",
628
- "9.14.1-ubi9-jdk17",
629
- "9.14.1-ubi9",
630
621
  "9.12.13-ubi9",
631
- "9.9.2-ubi9-jdk17",
632
- "9.11.3-ubi9",
633
- "9.9.2-ubi9",
622
+ "ubi9-jdk17",
634
623
  "9.11.3-ubi9-jdk17",
635
- "9.12.6-ubi9-jdk17",
624
+ "9.4.19-jdk11",
625
+ "9.4.19-ubuntu-jdk11",
626
+ "9.4.19",
627
+ "ubi9",
628
+ "9.11.3-ubi9",
629
+ "9.7.0-ubuntu-jdk17",
636
630
  "9.17.1-ubi9",
631
+ "9.6.0-ubi9-jdk17",
632
+ "9.9.1-ubi9-jdk17",
633
+ "9.9.1-ubi9",
637
634
  "9.17.1-ubi9-jdk17",
638
635
  "9.12.14-ubi9",
636
+ "9.12.6-ubi9-jdk17",
639
637
  "9.12.6-ubi9",
640
638
  "9.12.14-ubi9-jdk17",
639
+ "9.9.2-ubi9",
640
+ "9.9.2-ubi9-jdk17",
641
641
  "9.7.0-ubi9",
642
642
  "9.7.0-ubi9-jdk17",
643
643
  "10.3.0-RC-ubuntu-jdk17",
@@ -2088,590 +2088,594 @@ var jira = [
2088
2088
  "8.8.0-RC02"
2089
2089
  ];
2090
2090
  var confluence = [
2091
- "latest",
2092
- "9.2.0-ubi9",
2093
- "ubi9-jdk21",
2094
- "9.2.0-ubi9-jdk21",
2095
- "ubi9",
2096
- "9-ubuntu-jdk21",
2097
- "9-jdk21",
2098
- "9.2-jdk21",
2099
- "9.2.0-jdk21",
2100
- "ubuntu-jdk21",
2101
- "9.2.0",
2102
- "9.2.0-ubuntu-jdk21",
2103
- "9.2-ubuntu-jdk21",
2104
- "9",
2105
- "9.2",
2106
- "jdk21",
2107
- "9.2.0-ubi9-jdk17",
2108
- "ubi9-jdk17",
2109
- "8.9.0",
2110
- "8.9.0-jdk17",
2111
- "8.9.0-ubuntu-jdk17",
2112
- "8.6.1-jdk17",
2113
- "8.6.1",
2114
- "8.6.1-ubuntu-jdk17",
2115
- "8.9.7",
2116
- "8.9.7-ubuntu-jdk17",
2117
- "8.9.7-jdk17",
2118
2091
  "8.4.1",
2119
2092
  "8.4.1-jdk17",
2120
2093
  "8.4.1-ubuntu-jdk17",
2094
+ "8",
2095
+ "8-ubuntu-jdk17",
2096
+ "8.6.1-ubuntu-jdk17",
2097
+ "8.6.1",
2098
+ "8.6.1-jdk17",
2099
+ "8.9.8-ubuntu-jdk17",
2100
+ "8-jdk17",
2101
+ "8.9-jdk17",
2102
+ "8.9.8-jdk17",
2103
+ "8.9.8",
2104
+ "8.9-ubuntu-jdk17",
2105
+ "8.9",
2106
+ "8.4.2",
2107
+ "8.4.2-ubuntu-jdk17",
2108
+ "8.4.2-jdk17",
2121
2109
  "8.5.16",
2122
- "8.5.16-ubuntu-jdk17",
2123
2110
  "8.5.16-jdk17",
2111
+ "8.5.16-ubuntu-jdk17",
2112
+ "8.9.1",
2113
+ "8.6.2",
2114
+ "8.7-ubuntu-jdk11",
2115
+ "8.9.1-jdk17",
2124
2116
  "8.9.1-ubuntu-jdk17",
2117
+ "8.6-jdk17",
2125
2118
  "8.6",
2126
- "8.9.1-jdk17",
2127
- "8.6.2",
2119
+ "8.6-ubuntu-jdk17",
2128
2120
  "8.6.2-jdk17",
2129
- "8.9.1",
2130
2121
  "8.6.2-ubuntu-jdk17",
2131
- "8.6-ubuntu-jdk17",
2132
- "8.6-jdk17",
2133
- "8.5.5-jdk17",
2134
- "8.3.0-jdk17",
2135
- "8.5.5-ubuntu-jdk17",
2136
- "8.5.5",
2137
- "8.3.0-ubuntu-jdk17",
2138
- "8.3.0",
2139
- "8",
2140
- "8.9",
2141
- "8-jdk17",
2142
- "8.7-ubuntu-jdk11",
2143
- "8.9.8-ubuntu-jdk17",
2144
- "8.9-ubuntu-jdk17",
2145
- "8.9.8-jdk17",
2146
- "8.7.2-ubuntu-jdk11",
2147
- "8-ubuntu-jdk17",
2148
- "8.9-jdk17",
2149
- "8.9.8",
2150
2122
  "8.7-jdk11",
2123
+ "8.7.2-ubuntu-jdk11",
2151
2124
  "8.7.2-jdk11",
2152
- "8.5.1",
2153
- "8.5.1-ubuntu-jdk17",
2154
- "8.5.1-jdk17",
2155
- "8.5.8-ubuntu-jdk11",
2156
- "8.9.2",
2157
- "8.9.3-jdk11",
2158
- "8.4.2-jdk17",
2159
- "8.9.3-ubuntu-jdk11",
2160
- "8.5.17-jdk17",
2161
- "8.4.2",
2162
- "8.5.10-ubuntu-jdk17",
2125
+ "9.0.1-ubuntu-jdk17",
2163
2126
  "8.5.17-ubuntu-jdk17",
2164
- "8.4.2-ubuntu-jdk17",
2165
- "8.5.17",
2166
- "8.1.3",
2167
- "8.1.3-ubuntu-jdk11",
2168
- "8.1.3-jdk11",
2169
- "8.5.8-jdk11",
2127
+ "8.3.0",
2128
+ "8.5.5-ubuntu-jdk17",
2129
+ "9.0.1-jdk17",
2130
+ "9.0.1",
2170
2131
  "8.9.2-ubuntu-jdk17",
2132
+ "8.4.3-jdk17",
2133
+ "8.4.3-ubuntu-jdk17",
2134
+ "8.4.3",
2135
+ "8.3.0-jdk17",
2136
+ "8.3.0-ubuntu-jdk17",
2137
+ "8.5.8-jdk11",
2138
+ "7.19-ubuntu-jdk11",
2139
+ "7.19-jdk11",
2140
+ "8.5.8-ubuntu-jdk11",
2141
+ "8.5.17",
2142
+ "7.19.30-ubuntu-jdk11",
2143
+ "8.5.5-jdk17",
2144
+ "8.5.5",
2145
+ "8.5.17-jdk17",
2171
2146
  "8.9.2-jdk17",
2172
- "8.5.6-ubuntu-jdk17",
2173
- "8.5.6",
2174
- "8.5.12-jdk11",
2175
- "8.3.1-jdk17",
2176
- "8.5.12-ubuntu-jdk11",
2177
- "8.5.6-jdk17",
2178
- "8.3.1-ubuntu-jdk17",
2179
- "8.3.1",
2147
+ "8.9.2",
2148
+ "8.7.1",
2149
+ "8.7.1-jdk17",
2180
2150
  "7.19",
2181
- "7.19.14-jdk11",
2182
- "7.19.30",
2151
+ "8.9.3-ubuntu-jdk11",
2183
2152
  "7.19.30-jdk11",
2184
- "7.19.30-ubuntu-jdk11",
2185
- "7.19-ubuntu-jdk11",
2186
- "7.19-jdk11",
2187
- "7.19.14-ubuntu-jdk11",
2188
- "8.5.2-jdk11",
2189
- "7.19.14",
2190
- "8.5.2-ubuntu-jdk11",
2191
- "8.5.10",
2153
+ "7.19.30",
2154
+ "8.9.3-jdk11",
2155
+ "8.5.1",
2156
+ "8.4.4",
2157
+ "8.5.12-jdk11",
2158
+ "8.5.1-ubuntu-jdk17",
2159
+ "8.1.3",
2160
+ "9.0.2",
2161
+ "7.19.14-jdk11",
2162
+ "7.19.25",
2163
+ "8.3.1-ubuntu-jdk17",
2192
2164
  "7.19.25-jdk11",
2193
- "8.7.1-ubuntu-jdk17",
2165
+ "8.5.1-jdk17",
2194
2166
  "7.19.25-ubuntu-jdk11",
2167
+ "8.8.0-ubuntu-jdk11",
2168
+ "8.4.4-jdk17",
2169
+ "8.5.12-ubuntu-jdk11",
2170
+ "8.1.3-jdk11",
2171
+ "8.4.5-ubuntu-jdk11",
2172
+ "8.4.5-jdk11",
2173
+ "8.4-jdk11",
2174
+ "8.4-ubuntu-jdk11",
2195
2175
  "7.19.9",
2196
- "7.19.9-ubuntu-jdk11",
2176
+ "8.7.1-ubuntu-jdk17",
2197
2177
  "7.19.9-jdk11",
2198
- "8.9.4-jdk11",
2178
+ "8.1.3-ubuntu-jdk11",
2179
+ "8.5-ubuntu-jdk17",
2180
+ "9.0.2-ubuntu-jdk17",
2181
+ "9.0.2-jdk17",
2182
+ "7.19.14-ubuntu-jdk11",
2183
+ "8.3.1",
2184
+ "8.4.4-ubuntu-jdk17",
2185
+ "7.19.14",
2186
+ "8.9.3-ubuntu-jdk17",
2187
+ "8.3.1-jdk17",
2188
+ "8.5.10",
2199
2189
  "8.5.10-jdk17",
2200
- "8.9.4-ubuntu-jdk11",
2201
- "7.19.2-ubuntu-jdk11",
2202
- "8.7.1",
2203
- "7.19.25",
2204
- "8.7.1-jdk17",
2205
- "7.19.2-jdk11",
2206
- "7.19.2",
2207
- "8.4.3-jdk17",
2208
- "8.1-ubuntu-jdk11",
2209
- "8.4.5-ubuntu-jdk11",
2210
- "8.1",
2211
- "8.0.1",
2212
- "8.0.1-jdk11",
2213
- "8.0.1-ubuntu-jdk11",
2214
- "9.0.1-jdk17",
2215
- "9.0.1-ubuntu-jdk17",
2216
- "9.0.1",
2217
2190
  "8.8.0-jdk11",
2218
- "8.8.0-ubuntu-jdk11",
2219
- "8.3.2-ubuntu-jdk17",
2220
- "8.5-ubuntu-jdk17",
2221
- "8.5.18-jdk17",
2222
- "8.4.3-ubuntu-jdk17",
2223
- "8.5-jdk17",
2224
- "9.0.1-ubi9",
2225
- "8.4.3",
2226
- "8.5.9-jdk11",
2227
- "8.4-jdk11",
2228
- "8.5.18-ubuntu-jdk17",
2229
- "8.5.9-ubuntu-jdk11",
2230
- "8.1.4",
2231
- "9.0.1-ubi9-jdk17",
2232
- "8.4.5-jdk11",
2191
+ "8.5.6-jdk17",
2192
+ "7.19.2",
2193
+ "7.19.2-jdk11",
2194
+ "7.19.9-ubuntu-jdk11",
2233
2195
  "8.5.18",
2234
- "7.19.15",
2196
+ "8.5.9-jdk11",
2235
2197
  "8.5",
2236
- "8.1-jdk11",
2237
- "8.4-ubuntu-jdk11",
2238
- "8.1.4-jdk11",
2239
- "8.1.4-ubuntu-jdk11",
2198
+ "8.5.2-ubuntu-jdk11",
2199
+ "8.5.9-ubuntu-jdk11",
2200
+ "7.19.2-ubuntu-jdk11",
2201
+ "8.5.6",
2202
+ "8.5.6-ubuntu-jdk17",
2203
+ "8.5.18-ubuntu-jdk17",
2204
+ "8.5.18-jdk17",
2205
+ "8.5-jdk17",
2206
+ "8.0.1-ubuntu-jdk11",
2207
+ "8.0.1",
2208
+ "8.5.2-jdk11",
2209
+ "8.0.1-jdk11",
2210
+ "7.19.26-jdk11",
2211
+ "8.7-ubuntu-jdk17",
2212
+ "8.1-ubuntu-jdk11",
2213
+ "8.3.0-jdk11",
2240
2214
  "8.9.3",
2241
- "8.5.7-jdk17",
2242
- "8.7.2-jdk17",
2215
+ "9.0.1-ubuntu-jdk21",
2216
+ "8.9.5-ubi9-jdk17",
2217
+ "8.9.5-ubi9",
2243
2218
  "8.9.3-jdk17",
2244
- "8.9.3-ubuntu-jdk17",
2245
- "7.20.0-jdk11",
2246
- "8.3.2",
2247
- "8.3.0-jdk11",
2248
- "8.3.2-jdk17",
2249
- "8.5.14-ubuntu-jdk11",
2219
+ "8.9.4-jdk11",
2220
+ "9.0.2-ubi9",
2221
+ "8.9.4-ubuntu-jdk11",
2222
+ "8.4.0-jdk11",
2223
+ "8.4.0-ubuntu-jdk11",
2224
+ "7.19.0-jdk11",
2225
+ "9.0.2-ubi9-jdk17",
2226
+ "8.5.10-ubuntu-jdk17",
2227
+ "7.19.15",
2250
2228
  "7.19.15-ubuntu-jdk11",
2251
- "7.19.0",
2252
- "8.5.7-ubuntu-jdk17",
2253
- "8.5.7",
2254
- "8.5.11-jdk17",
2229
+ "8.1.4-jdk11",
2230
+ "7.19.26",
2231
+ "7.19.26-ubuntu-jdk11",
2232
+ "8.1-jdk11",
2233
+ "7.19.20",
2234
+ "8.1.4-ubuntu-jdk11",
2255
2235
  "7.19.20-jdk11",
2236
+ "8.1.4",
2237
+ "8.1",
2238
+ "7.20.0",
2239
+ "7.20.0-ubuntu-jdk11",
2256
2240
  "8.5.14-jdk11",
2257
- "7.19.15-jdk11",
2241
+ "7.20.0-jdk11",
2242
+ "8.7",
2243
+ "8.5.14-ubuntu-jdk11",
2258
2244
  "8.3.0-ubuntu-jdk11",
2259
- "7.19.20-ubuntu-jdk11",
2260
- "8.5.11",
2261
- "8.5.11-ubuntu-jdk17",
2262
- "7.19.4-ubuntu-jdk11",
2263
- "7.20.0-ubuntu-jdk11",
2264
- "7.19.0-ubuntu-jdk11",
2265
2245
  "8.7.2",
2266
- "7.19.20",
2267
- "8.0.2",
2268
- "9.0.2-ubi9-jdk17",
2246
+ "8.6.0-jdk11",
2247
+ "8.7.2-jdk17",
2269
2248
  "8.9.5-ubuntu-jdk11",
2270
- "7.20.0",
2271
- "8.9.5-jdk11",
2272
2249
  "8.7-jdk17",
2273
- "7.19.0-jdk11",
2274
2250
  "8.7.2-ubuntu-jdk17",
2275
- "7.19.26-ubuntu-jdk11",
2276
- "8.5.3-jdk11",
2277
- "7.19.26",
2278
- "8.0.2-ubuntu-jdk11",
2279
- "8.7",
2280
- "8.5.3-ubuntu-jdk11",
2281
- "7.19.26-jdk11",
2282
- "8.7-ubuntu-jdk17",
2283
- "8.0.2-jdk11",
2284
- "9.0.2-jdk17",
2285
- "8.4.4-ubuntu-jdk17",
2286
- "9.0.2",
2251
+ "9.0-ubuntu-jdk17",
2252
+ "9.0.3",
2253
+ "7.19.4-ubuntu-jdk11",
2254
+ "8.3.2-jdk17",
2255
+ "8.3.2",
2256
+ "7.19.0",
2257
+ "8.5.7",
2258
+ "7.19.0-ubuntu-jdk11",
2259
+ "9.0-jdk17",
2260
+ "9.0",
2261
+ "9.0.3-ubuntu-jdk17",
2262
+ "8.3.2-ubuntu-jdk17",
2263
+ "8.4.5",
2264
+ "9.0.3-jdk17",
2265
+ "7.19.4-jdk11",
2287
2266
  "7.19.4",
2267
+ "8.8-ubuntu-jdk11",
2288
2268
  "8.6.0-ubuntu-jdk11",
2289
- "8.7.2-ubi9-jdk17",
2269
+ "8.3.1-ubuntu-jdk11",
2270
+ "9.1.0-jdk17",
2271
+ "9.0.1-jdk21",
2272
+ "8.5.7-jdk17",
2273
+ "8.5.2-ubuntu-jdk17",
2274
+ "7.19.15-jdk11",
2275
+ "8.0.2",
2276
+ "8.4-jdk17",
2277
+ "8.4.5-jdk17",
2278
+ "8.4.5-ubuntu-jdk17",
2290
2279
  "8.8.1-jdk11",
2291
- "8.8-ubuntu-jdk11",
2292
- "9.0.2-ubuntu-jdk17",
2293
- "7.19.4-jdk11",
2294
- "8.9.1-ubi9",
2295
- "8.9.1-ubi9-jdk17",
2296
- "8.4.0-jdk11",
2297
- "8.4.0-ubuntu-jdk11",
2298
- "8.4.4",
2299
- "8.6.0-jdk11",
2300
- "8.5.8",
2301
- "8.8-jdk11",
2280
+ "7.19.5-ubuntu-jdk11",
2281
+ "8.4-ubuntu-jdk17",
2302
2282
  "8.8.1-ubuntu-jdk11",
2303
- "8.5.2-ubuntu-jdk17",
2304
- "8.5.2-jdk17",
2305
- "8.3.1-jdk11",
2306
- "8.4.4-jdk17",
2283
+ "7.19.20-ubuntu-jdk11",
2284
+ "9.1-ubuntu-jdk21",
2285
+ "8.8-jdk11",
2286
+ "8.9.1-ubi9-jdk17",
2287
+ "8.3.3-jdk17",
2288
+ "8.9.1-ubi9",
2289
+ "8.3.3-ubuntu-jdk17",
2307
2290
  "8.9.4",
2308
- "7.19.21-ubuntu-jdk11",
2309
- "8.5.2",
2310
- "8.3.3",
2311
- "9.0.2-ubi9",
2312
- "8.9.4-ubuntu-jdk17",
2291
+ "7.19.27",
2292
+ "9.0.3-ubi9",
2293
+ "9.0.3-ubi9-jdk17",
2313
2294
  "8.9.4-jdk17",
2314
- "9.0.1-ubuntu-jdk21",
2315
- "8.5.12-ubuntu-jdk17",
2316
- "8.5.12-jdk17",
2317
- "8.5.15-ubuntu-jdk11",
2318
- "8.5.12",
2319
- "8.7.2-ubi9",
2320
- "8.5.15-jdk11",
2321
2295
  "8.5.0-jdk11",
2322
- "8.3.3-jdk17",
2323
- "8.2.0-ubuntu-jdk11",
2324
- "8.3.3-ubuntu-jdk17",
2325
- "8.3.1-ubuntu-jdk11",
2326
- "8.5.8-jdk17",
2327
- "8.2.0",
2328
- "8.2.0-jdk11",
2329
- "8.9.5-ubi9-jdk17",
2330
- "7.19.16-ubuntu-jdk11",
2331
- "7.19.21",
2332
- "8.9.5-ubi9",
2333
- "8.5.8-ubuntu-jdk17",
2334
- "7.19.16",
2335
- "7.19.16-jdk11",
2336
- "8.5.4-ubuntu-jdk11",
2296
+ "8.5.11-jdk17",
2297
+ "8.7.2-ubi9-jdk17",
2298
+ "7.19.27-jdk11",
2299
+ "8.0.2-ubuntu-jdk11",
2300
+ "8.5.15-ubuntu-jdk11",
2301
+ "8.3.3",
2302
+ "8.5.7-ubuntu-jdk17",
2303
+ "8.9.5-jdk11",
2304
+ "8.5.3-ubuntu-jdk11",
2305
+ "8.0.2-jdk11",
2306
+ "8.5.3-jdk11",
2307
+ "7.19.27-ubuntu-jdk11",
2308
+ "8.4",
2337
2309
  "8.5.0-ubuntu-jdk11",
2338
- "9.0.1-jdk21",
2339
- "7.20.1",
2340
- "7.20.1-ubuntu-jdk11",
2310
+ "8.3.1-jdk11",
2311
+ "8.5.15-jdk11",
2312
+ "7.19.5",
2341
2313
  "7.19.1-ubuntu-jdk11",
2342
- "8.6.0-ubi9-jdk17",
2343
- "8.0.3",
2344
- "7.19.21-jdk11",
2345
- "8.0.3-jdk11",
2346
- "7.19.27",
2314
+ "8.5.4-ubuntu-jdk11",
2315
+ "8.9.4-ubuntu-jdk17",
2316
+ "8.5.4-jdk11",
2317
+ "9.1.1",
2318
+ "9.1.1-ubuntu-jdk21",
2319
+ "9.1.0",
2320
+ "8.8.0-jdk17",
2321
+ "8.4.1-ubuntu-jdk11",
2322
+ "8.5.10-ubi9-jdk17",
2347
2323
  "7.20.1-jdk11",
2324
+ "9.1-jdk21",
2348
2325
  "8.0.3-ubuntu-jdk11",
2349
2326
  "8.5.15-ubi9",
2327
+ "8.5.2-jdk17",
2328
+ "8.9.6-ubi9-jdk17",
2329
+ "9.1.0-ubuntu-jdk17",
2330
+ "8.5.11-ubuntu-jdk17",
2331
+ "9.1",
2332
+ "8.5.2",
2350
2333
  "8.5.15-ubi9-jdk17",
2351
- "9.0.3-ubi9-jdk21",
2352
- "8.4.1-ubuntu-jdk11",
2353
- "8.6.1-ubuntu-jdk11",
2354
- "8.5.4-jdk11",
2355
- "7.19.1",
2356
- "7.19.5-ubuntu-jdk11",
2357
- "8.8.0-jdk17",
2358
- "7.19.27-jdk11",
2359
- "7.19.27-ubuntu-jdk11",
2360
- "9.0",
2361
- "9.0.3-jdk17",
2362
- "7.19.1-jdk11",
2363
- "8.4.5-ubuntu-jdk17",
2364
- "7.19.5",
2365
- "9.0-ubuntu-jdk17",
2366
- "8.3.2-ubuntu-jdk11",
2367
- "8.2.1",
2368
- "9.0.3-ubuntu-jdk17",
2369
2334
  "8.4.1-jdk11",
2370
- "8.9.6-ubuntu-jdk11",
2371
- "9.0-jdk17",
2372
- "9.0.3",
2335
+ "8.0.3",
2336
+ "8.0.3-jdk11",
2337
+ "7.19.1-jdk11",
2338
+ "9.1.1-jdk21",
2339
+ "8.5.11",
2340
+ "8.6.0-ubi9",
2341
+ "9.1.0-ubi9-jdk21",
2342
+ "8.9.6-ubi9",
2373
2343
  "7.19.5-jdk11",
2374
- "8.9.0-jdk11",
2375
- "8.9.0-ubuntu-jdk11",
2344
+ "8.7.2-ubi9",
2345
+ "7.19.1",
2346
+ "8.8.0",
2347
+ "8.2.0",
2348
+ "8.6.1-ubuntu-jdk11",
2349
+ "7.19.16-jdk11",
2350
+ "8.5.12-ubuntu-jdk17",
2351
+ "9.0.2-ubuntu-jdk21",
2376
2352
  "8.6.1-jdk11",
2377
- "8.6.0-ubi9",
2378
- "8.5.16-ubuntu-jdk11",
2379
- "8.9.6-ubi9-jdk17",
2380
- "8.9.6-jdk11",
2353
+ "8.5.10-ubi9",
2354
+ "7.20.1",
2355
+ "8.2.0-jdk11",
2356
+ "8.8.0-ubuntu-jdk17",
2357
+ "7.19.16",
2358
+ "8.2.0-ubuntu-jdk11",
2359
+ "7.20.1-ubuntu-jdk11",
2360
+ "9.0.2-jdk21",
2361
+ "7.19.16-ubuntu-jdk11",
2362
+ "8.6.0-ubi9-jdk17",
2363
+ "8.3.2-ubuntu-jdk11",
2364
+ "8.5.1-jdk11",
2381
2365
  "8.3.4",
2382
- "8.5.5-jdk11",
2383
- "8.5.10-ubi9",
2384
- "8.4-jdk17",
2385
- "8.2.1-jdk11",
2386
- "8.5.10-ubi9-jdk17",
2387
- "8.4.5",
2388
- "8.4",
2389
- "8.4.5-jdk17",
2366
+ "8.9.0-ubuntu-jdk11",
2367
+ "8.3",
2368
+ "8.9.5-ubuntu-jdk17",
2390
2369
  "8.9.5",
2391
- "8.0.4-jdk11",
2392
- "8.0-ubuntu-jdk11",
2393
- "8.8.0",
2370
+ "8.5.3",
2371
+ "7.19.21-ubuntu-jdk11",
2372
+ "8.5.8-jdk17",
2394
2373
  "8.5.3-jdk17",
2395
- "7.20.2",
2396
- "7.19.17-ubuntu-jdk11",
2397
- "8.5.5-ubuntu-jdk11",
2398
- "9.0.2-ubuntu-jdk21",
2399
- "8.9.6-ubi9",
2374
+ "7.19.21",
2375
+ "7.19.10-ubuntu-jdk11",
2376
+ "7.19.28-jdk11",
2377
+ "7.19.21-jdk11",
2400
2378
  "8.3-ubuntu-jdk17",
2401
- "9.0.3-ubi9-jdk17",
2402
- "8.5.6-ubi9",
2403
- "8.8.0-ubuntu-jdk17",
2404
- "8.4-ubuntu-jdk17",
2405
- "8.3-jdk17",
2406
- "8.5.6-ubi9-jdk17",
2407
- "8.2.1-ubuntu-jdk11",
2408
- "8.3.2-jdk11",
2409
- "8.3.4-ubuntu-jdk17",
2410
- "8.5.16-jdk11",
2411
- "8.8.0-ubi9",
2412
2379
  "8.3.4-jdk17",
2413
- "7.19.6-ubuntu-jdk11",
2414
- "8.3",
2415
- "8.9.5-jdk17",
2416
- "8.9.2-ubi9",
2417
- "9.0.3-ubi9",
2418
- "9.0.2-jdk21",
2419
- "7.19.28-ubuntu-jdk11",
2420
- "8.5.14-jdk17",
2380
+ "7.19.6",
2421
2381
  "8.4.2-jdk11",
2382
+ "8.4.2-ubuntu-jdk11",
2383
+ "8.9.5-jdk17",
2384
+ "8.2.1-jdk11",
2385
+ "8.0-ubuntu-jdk11",
2386
+ "8.9.6-ubuntu-jdk11",
2387
+ "8.9.6-jdk11",
2388
+ "8.2.1",
2389
+ "8.5.12-jdk17",
2390
+ "8.0",
2391
+ "latest",
2422
2392
  "8.9.2-ubi9-jdk17",
2423
- "8.6.1-ubi9-jdk17",
2393
+ "7.20.2",
2394
+ "8.3.2-jdk11",
2395
+ "7.19.17-ubuntu-jdk11",
2396
+ "8.5.8-ubuntu-jdk17",
2397
+ "8.5.8",
2398
+ "8.5.12",
2399
+ "7.19.28-ubuntu-jdk11",
2400
+ "9.0.1-ubi9",
2401
+ "8.5.16-jdk11",
2402
+ "8.5.16-ubuntu-jdk11",
2403
+ "7.19.17",
2404
+ "8.5.16-ubi9-jdk17",
2405
+ "8.3-jdk17",
2406
+ "8.3.4-ubuntu-jdk17",
2407
+ "8.5.3-ubuntu-jdk17",
2408
+ "7.19.22-jdk11",
2409
+ "9.2.0-ubuntu-jdk21",
2410
+ "9.2",
2411
+ "9.1.1-ubuntu-jdk17",
2412
+ "8.5.16-ubi9",
2413
+ "7.19.10-jdk11",
2414
+ "9.0.1-ubi9-jdk21",
2415
+ "8.9.0-jdk11",
2424
2416
  "8.5.1-ubuntu-jdk11",
2425
- "8.9.5-ubuntu-jdk17",
2426
- "8.8-jdk17",
2427
- "8.5.14-ubuntu-jdk17",
2417
+ "8.8.1",
2428
2418
  "7.19.10",
2429
- "8.5.1-jdk11",
2430
- "8.0",
2431
- "8.0-jdk11",
2432
- "7.20.2-jdk11",
2433
- "8.0.4",
2434
- "8.0.4-ubuntu-jdk11",
2435
- "7.20.2-ubuntu-jdk11",
2436
- "7.19.17-jdk11",
2437
- "8.4.2-ubuntu-jdk11",
2438
- "8.5.14",
2439
- "7.19.10-jdk11",
2440
- "8.6.1-ubi9",
2441
- "7.19.6",
2442
- "8.5.9-ubuntu-jdk17",
2443
- "7.19.17",
2444
- "8.5.9",
2419
+ "9.0-jdk21",
2420
+ "9.0-ubuntu-jdk21",
2421
+ "9.2-ubuntu-jdk21",
2422
+ "9.1.0-ubi9",
2445
2423
  "8.5.9-jdk17",
2446
- "7.19.10-ubuntu-jdk11",
2447
- "8.5.3",
2448
- "7.19.22",
2449
- "7.19.22-jdk11",
2450
- "8.6.2-ubuntu-jdk11",
2451
- "7.19.6-jdk11",
2424
+ "8.5.0-ubuntu-jdk17",
2425
+ "8.5.0-jdk17",
2426
+ "8.4.3-jdk11",
2427
+ "8.8-ubuntu-jdk17",
2428
+ "8.2.2-ubuntu-jdk17",
2452
2429
  "8.6-ubuntu-jdk11",
2453
- "7.19.28-jdk11",
2430
+ "9.1.0-ubi9-jdk17",
2431
+ "8.5.0",
2432
+ "8.2.1-ubuntu-jdk11",
2433
+ "8.5.5-jdk11",
2434
+ "8.9.2-ubi9",
2435
+ "9.1-ubuntu-jdk17",
2436
+ "9.0.3-jdk21",
2454
2437
  "7.19.28",
2455
- "8.5.16-ubi9-jdk17",
2456
- "8.5.3-ubuntu-jdk17",
2457
- "8.9.7-jdk11",
2458
- "8.8.0-ubi9-jdk17",
2438
+ "8.5.5-ubuntu-jdk11",
2439
+ "9.0.3-ubuntu-jdk21",
2440
+ "8.8.0-ubi9",
2441
+ "7.19.17-jdk11",
2442
+ "9.2-jdk21",
2443
+ "9.2.0",
2444
+ "8.5.6-ubi9",
2445
+ "8.5.9",
2446
+ "8.0.4-ubuntu-jdk11",
2447
+ "8.0-jdk11",
2448
+ "7.19.6-ubuntu-jdk11",
2449
+ "7.19.22",
2450
+ "8.5.6-ubi9-jdk17",
2459
2451
  "7.19.22-ubuntu-jdk11",
2460
- "8.5.16-ubi9",
2461
- "8.5.11-ubi9",
2452
+ "8.0.4-jdk11",
2453
+ "9-jdk21",
2454
+ "8.5.9-ubuntu-jdk17",
2455
+ "9.2.0-jdk21",
2456
+ "7.20.2-jdk11",
2457
+ "jdk21",
2458
+ "9",
2459
+ "7.19.6-jdk11",
2460
+ "8.8",
2462
2461
  "8.6-jdk11",
2463
- "8.9.7-ubuntu-jdk11",
2464
- "8.6.2-jdk11",
2465
- "8.8.1-ubuntu-jdk17",
2466
- "8.8-ubuntu-jdk17",
2467
- "8.8.1",
2462
+ "9.1-jdk17",
2463
+ "9.1.1-jdk17",
2464
+ "9.0.2-ubi9-jdk21",
2465
+ "8.2.2-jdk17",
2466
+ "9-ubuntu-jdk21",
2467
+ "8.5.10-jdk11",
2468
+ "ubuntu-jdk21",
2469
+ "8.3.3-jdk11",
2470
+ "8.9.1-jdk11",
2471
+ "8.9.7-ubi9",
2468
2472
  "8.5.11-ubi9-jdk17",
2473
+ "8.5.10-ubuntu-jdk11",
2474
+ "8.4.3-ubuntu-jdk11",
2475
+ "8.6.2-ubuntu-jdk11",
2476
+ "8.0.4",
2477
+ "7.20.2-ubuntu-jdk11",
2478
+ "8.9.7-jdk11",
2479
+ "8.9.7-ubi9-jdk17",
2469
2480
  "8.8.1-jdk17",
2470
- "8.8",
2471
- "9.1.0-ubuntu-jdk17",
2472
- "8.9.6",
2473
- "8.9.6-ubuntu-jdk17",
2474
- "8.1.3-ubuntu-jdk17",
2475
- "9.1-jdk21",
2481
+ "8.5.11-ubi9",
2482
+ "8.6.1-ubi9-jdk17",
2483
+ "8.9.3-ubi9",
2476
2484
  "8.5.17-jdk11",
2477
- "8.5.7-ubi9-jdk17",
2478
- "8.5.7-ubi9",
2479
- "7",
2480
- "8.5.10-ubuntu-jdk11",
2481
- "8.2.2",
2482
- "8.5.15-ubuntu-jdk17",
2483
- "8.2.2-ubuntu-jdk11",
2484
- "8.5.15-jdk17",
2485
- "9.1.1-ubuntu-jdk21",
2486
- "7-ubuntu-jdk11",
2487
- "9.1.0-jdk17",
2488
- "8.2.2-jdk11",
2489
- "8.1.3-jdk17",
2490
- "8.3.3-ubuntu-jdk11",
2491
- "8.9.1-jdk11",
2492
- "8.5.17-ubuntu-jdk11",
2493
- "8.3.3-jdk11",
2494
- "7.19.7-jdk11",
2495
- "9.1.1-jdk21",
2496
- "9.1-ubuntu-jdk21",
2497
- "9.1",
2498
2485
  "8.9.1-ubuntu-jdk11",
2499
- "8.0.3-jdk17",
2500
- "8.5.15",
2486
+ "8.8-jdk17",
2487
+ "8.9.6-ubuntu-jdk17",
2488
+ "8.1.3-ubuntu-jdk17",
2489
+ "9.1.1-ubi9-jdk21",
2501
2490
  "9.1.0-jdk21",
2502
- "8.2.2-ubuntu-jdk17",
2503
- "8.9.6-jdk17",
2504
- "8.2.2-jdk17",
2491
+ "8.9.6",
2492
+ "8.8.0-ubi9-jdk17",
2493
+ "8.1.3-jdk17",
2494
+ "8.5.7-ubi9-jdk17",
2495
+ "8.9.3-ubi9-jdk17",
2505
2496
  "7.20-ubuntu-jdk11",
2506
- "8.0.3-ubuntu-jdk17",
2507
- "9.1.1",
2508
- "7.20.3-ubuntu-jdk11",
2509
- "7-jdk11",
2510
- "7.20.3",
2497
+ "8.5.4",
2511
2498
  "7.20-jdk11",
2512
- "7.20.3-jdk11",
2513
- "7.19.7",
2514
- "8.6.0",
2515
- "9.0-jdk21",
2516
- "7.20",
2517
- "8.6.2-ubi9-jdk17",
2518
- "9.0.3-ubuntu-jdk21",
2519
- "9.0-ubuntu-jdk21",
2520
- "8.5.10-jdk11",
2521
- "9.1.0-ubuntu-jdk21",
2522
- "9.1.0",
2523
- "8.6.0-ubuntu-jdk17",
2524
- "8.4.3-ubuntu-jdk11",
2525
- "7.19.29-jdk11",
2526
- "8.2.0-jdk17",
2527
- "7.19.11-ubuntu-jdk11",
2528
- "8.4.0",
2529
- "8.5.6-jdk11",
2530
- "8.5.6-ubuntu-jdk11",
2531
- "8.5.0-jdk17",
2532
- "8.4.3-jdk11",
2533
- "8.1.0-jdk17",
2499
+ "8.5.4-ubuntu-jdk17",
2500
+ "8.5.17-ubi9",
2501
+ "8.8.1-ubuntu-jdk17",
2502
+ "8.6.2-jdk11",
2503
+ "8.3.3-ubuntu-jdk11",
2504
+ "7.20.3-ubuntu-jdk11",
2505
+ "8.9.7-ubuntu-jdk11",
2506
+ "7.19.29",
2534
2507
  "8.2.0-ubuntu-jdk17",
2535
- "8.5.0-ubuntu-jdk17",
2536
- "9.0.3-jdk21",
2537
- "8.6.0-jdk17",
2538
- "7.19.11",
2508
+ "8.6.1-ubi9",
2509
+ "8.9.6-jdk17",
2510
+ "9.1.0-ubuntu-jdk21",
2511
+ "8.9.8-ubi9",
2539
2512
  "8.4.0-ubuntu-jdk17",
2540
- "7.19.11-jdk11",
2541
- "8.5.4",
2542
- "7.19.23-jdk11",
2513
+ "8.2.2-ubuntu-jdk11",
2514
+ "7.19.29-ubuntu-jdk11",
2515
+ "8.5.17-ubuntu-jdk11",
2516
+ "7.19.29-jdk11",
2517
+ "8.4.0",
2518
+ "7",
2519
+ "8.2.2-jdk11",
2520
+ "8.5.7-ubi9",
2521
+ "8.1.0-ubuntu-jdk17",
2522
+ "7.19.18-jdk11",
2523
+ "7.19.18",
2524
+ "9.1.1-ubi9",
2525
+ "9.1.1-ubi9-jdk17",
2543
2526
  "7.19.18-ubuntu-jdk11",
2544
- "8.5.4-ubuntu-jdk17",
2545
- "8.9.7-ubi9-jdk17",
2527
+ "8.2.0-jdk17",
2528
+ "8.5.14",
2529
+ "8.5.4-jdk17",
2530
+ "7.19.11",
2531
+ "7.19.7-jdk11",
2532
+ "8.2.2",
2533
+ "8.1.0-jdk17",
2534
+ "7.20.3-jdk11",
2535
+ "8.5.14-jdk17",
2536
+ "7.20.3",
2537
+ "7.20",
2538
+ "8.0.3-ubuntu-jdk17",
2539
+ "7-ubuntu-jdk11",
2540
+ "8.5.12-ubi9-jdk17",
2541
+ "7-jdk11",
2542
+ "8.5.14-ubuntu-jdk17",
2543
+ "8.9-ubuntu-jdk11",
2544
+ "8.9.8-ubi9-jdk17",
2545
+ "8.5.6-jdk11",
2546
2546
  "8.4.0-jdk17",
2547
+ "7.19.23-jdk11",
2547
2548
  "7.19.7-ubuntu-jdk11",
2548
- "7.19.18-jdk11",
2549
+ "7.19.11-jdk11",
2550
+ "8.5.6-ubuntu-jdk11",
2551
+ "8.5.17-ubi9-jdk17",
2552
+ "8.8.1-ubi9",
2549
2553
  "7.19.23-ubuntu-jdk11",
2550
- "8.1.0-ubuntu-jdk11",
2551
- "8.5.0",
2552
- "7.19.18",
2553
- "8.1-jdk17",
2554
- "8.1.0-ubuntu-jdk17",
2555
- "8.9.3-ubi9-jdk17",
2556
2554
  "7.19.23",
2557
- "9.1.0-ubi9-jdk17",
2558
- "8.9.3-ubi9",
2559
- "8.5.4-jdk17",
2560
- "9.1.0-ubi9",
2561
- "8.6.2-ubi9",
2562
- "8.9.7-ubi9",
2563
- "9.1.0-ubi9-jdk21",
2564
- "8.0.0-ubuntu-jdk17",
2565
- "8.0.0-jdk17",
2566
- "7.19.29-ubuntu-jdk11",
2567
- "8.1.0-jdk11",
2568
- "7.19.29",
2569
- "8.1.0",
2570
- "8.2-jdk17",
2571
- "8.5.17-ubi9",
2555
+ "8.5.12-ubi9",
2556
+ "8.1-jdk17",
2572
2557
  "8.1-ubuntu-jdk17",
2573
- "9.0.1-ubi9-jdk21",
2574
- "8.8.1-ubi9",
2575
- "8.9.8-jdk11",
2558
+ "7.19.11-ubuntu-jdk11",
2559
+ "7.19.7",
2560
+ "8.9.8-ubuntu-jdk11",
2561
+ "8.9-jdk11",
2562
+ "8.0.3-jdk17",
2576
2563
  "8-ubuntu-jdk11",
2577
- "8.8.1-ubi9-jdk17",
2578
- "8.5.8-ubi9-jdk17",
2579
- "8.2.3-ubuntu-jdk17",
2564
+ "8.7.1-jdk11",
2580
2565
  "8.1.4-ubuntu-jdk17",
2581
2566
  "8.1.4-jdk17",
2582
- "8.5.11-ubuntu-jdk11",
2583
- "9.1.1-ubuntu-jdk17",
2584
- "8.2-ubuntu-jdk11",
2585
- "8.9-jdk11",
2586
- "8-jdk11",
2587
- "8.2.3-jdk11",
2588
- "8.2.3",
2589
- "8.2",
2567
+ "8.1.0-ubuntu-jdk11",
2568
+ "8.5.18-ubi9-jdk17",
2569
+ "8.5.15",
2570
+ "8.5.11-jdk11",
2571
+ "8.6.2-ubi9",
2590
2572
  "8.2-ubuntu-jdk17",
2591
- "8.5-ubuntu-jdk11",
2592
- "8.0-ubuntu-jdk17",
2593
- "7.19.19-ubuntu-jdk11",
2594
- "8.5.18-jdk11",
2595
- "8.9.8-ubuntu-jdk11",
2596
- "8.2.3-jdk17",
2597
- "8.9-ubuntu-jdk11",
2598
- "8.5.17-ubi9-jdk17",
2599
- "8.0.4-ubuntu-jdk17",
2600
- "7.19.24-jdk11",
2601
2573
  "8.4.4-ubuntu-jdk11",
2602
- "8.9.2-ubuntu-jdk11",
2603
- "9.1.1-jdk17",
2604
- "8.0.4-jdk17",
2605
- "7.19.19-jdk11",
2574
+ "8.9.8-jdk11",
2575
+ "8.1.0",
2576
+ "7.19.12-ubuntu-jdk11",
2577
+ "8.6.0-ubuntu-jdk17",
2578
+ "8.6.0-jdk17",
2579
+ "8-jdk11",
2580
+ "9.2.0-jdk17",
2581
+ "8.1.0-jdk11",
2582
+ "8.7.1-ubuntu-jdk11",
2583
+ "8.2-jdk11",
2584
+ "8.6.0",
2585
+ "8.2-jdk17",
2586
+ "8.6.2-ubi9-jdk17",
2587
+ "8.2.3-ubuntu-jdk17",
2588
+ "8.8.1-ubi9-jdk17",
2589
+ "8.5.15-ubuntu-jdk17",
2590
+ "8.9.0",
2591
+ "9.2-jdk17",
2606
2592
  "8.2.3-ubuntu-jdk11",
2593
+ "8.5.11-ubuntu-jdk11",
2594
+ "ubi9",
2595
+ "8.5.18-jdk11",
2596
+ "9.2-ubuntu-jdk17",
2607
2597
  "9-jdk17",
2608
- "8.5-jdk11",
2609
- "8.3-jdk11",
2598
+ "8.9.7-ubuntu-jdk17",
2599
+ "8.5.15-jdk17",
2610
2600
  "8.9.2-jdk11",
2611
- "8.0.2-ubuntu-jdk17",
2612
- "8.0.1-jdk17",
2613
- "9-ubuntu-jdk17",
2614
- "8.5.12-ubi9-jdk17",
2615
- "8.7.1-jdk11",
2616
- "9.1-ubuntu-jdk17",
2617
- "8.5.12-ubi9",
2618
- "7.19.12-ubuntu-jdk11",
2619
- "7.19.24",
2620
- "ubuntu-jdk17",
2621
- "8.2.1-ubuntu-jdk17",
2622
2601
  "8.4.4-jdk11",
2623
- "jdk17",
2624
- "9.1-jdk17",
2625
- "8.5.8-ubi9",
2626
- "8.0.2-jdk17",
2627
- "8.1.1-jdk11",
2628
- "8.3.4-ubuntu-jdk11",
2629
- "7.19.8",
2630
- "7.19.24-ubuntu-jdk11",
2631
- "8.2-jdk11",
2632
2602
  "7.19.12",
2603
+ "7.19.8-jdk11",
2604
+ "8.2",
2605
+ "8.2.3-jdk11",
2606
+ "8.2.3-jdk17",
2607
+ "jdk17",
2633
2608
  "8.3.4-jdk11",
2634
- "8.9.4-ubi9-jdk17",
2635
- "8.5.11-jdk11",
2636
- "8.1.1",
2637
- "7.19.3-ubuntu-jdk11",
2609
+ "9.2.0-ubi9-jdk21",
2610
+ "9.2.0-ubuntu-jdk17",
2611
+ "9-ubuntu-jdk17",
2612
+ "8.5-jdk11",
2638
2613
  "8.3-ubuntu-jdk11",
2614
+ "8.3-jdk11",
2615
+ "8.0.2-jdk17",
2639
2616
  "8.5.18-ubuntu-jdk11",
2640
- "8.2.1-jdk17",
2641
- "8.7.1-ubuntu-jdk11",
2617
+ "7.19.3",
2618
+ "8.0.0-ubuntu-jdk17",
2619
+ "7.19.8-ubuntu-jdk11",
2620
+ "8.2-ubuntu-jdk11",
2621
+ "ubuntu-jdk17",
2622
+ "8.5.18-ubi9",
2623
+ "ubi9-jdk21",
2624
+ "8.2.3",
2625
+ "8.9.7-jdk17",
2626
+ "7.19.12-jdk11",
2627
+ "8.0-ubuntu-jdk17",
2628
+ "8.9.0-jdk17",
2629
+ "8.9.7",
2630
+ "8.9.0-ubuntu-jdk17",
2631
+ "8.3.4-ubuntu-jdk11",
2632
+ "8.5-ubuntu-jdk11",
2633
+ "8.0.4-ubuntu-jdk17",
2634
+ "7.19.19-ubuntu-jdk11",
2635
+ "7.19.3-jdk11",
2636
+ "7.19.3-ubuntu-jdk11",
2642
2637
  "8.0-jdk17",
2638
+ "8.5.7-ubuntu-jdk11",
2643
2639
  "7.19.19",
2644
- "8.9.4-ubi9",
2640
+ "9.0.3-ubi9-jdk21",
2641
+ "7.19.19-jdk11",
2642
+ "8.5.8-ubi9",
2645
2643
  "8.0.1-ubuntu-jdk17",
2646
- "8.9.8-ubi9",
2647
- "8.0.0-jdk11",
2648
- "8.1.1-ubuntu-jdk17",
2649
- "9.1.1-ubi9",
2650
- "8.5.7-ubuntu-jdk11",
2651
- "8.0.0-ubuntu-jdk11",
2652
- "7.19.8-jdk11",
2653
- "8.9.8-ubi9-jdk17",
2654
- "7.19.12-jdk11",
2655
- "9.1.1-ubi9-jdk21",
2656
- "9.1.1-ubi9-jdk17",
2657
- "7.19.8-ubuntu-jdk11",
2658
- "8.1.1-ubuntu-jdk11",
2644
+ "8.5.8-ubi9-jdk17",
2645
+ "8.0.1-jdk17",
2646
+ "8.2.1-jdk17",
2647
+ "8.2.1-ubuntu-jdk17",
2659
2648
  "8.5.7-jdk11",
2660
- "8.0.0",
2661
- "7.19.3",
2662
- "7.19.3-jdk11",
2649
+ "8.9.4-ubi9-jdk17",
2650
+ "9.2.0-ubi9",
2651
+ "8.0.4-jdk17",
2652
+ "8.0.0-jdk17",
2653
+ "7.19.8",
2654
+ "8.0.2-ubuntu-jdk17",
2655
+ "8.9.2-ubuntu-jdk11",
2656
+ "7.19.24-ubuntu-jdk11",
2657
+ "7.19.24",
2658
+ "7.19.24-jdk11",
2659
+ "8.9.4-ubi9",
2660
+ "8.5.14-ubi9-jdk17",
2663
2661
  "8.1.1-jdk17",
2664
- "9.0.2-ubi9-jdk21",
2662
+ "8.5.14-ubi9",
2663
+ "8.1.1-ubuntu-jdk11",
2664
+ "8.0.0-ubuntu-jdk11",
2665
+ "8.1.1-ubuntu-jdk17",
2666
+ "8.0.0-jdk11",
2667
+ "8.1.1-jdk11",
2668
+ "8.1.1",
2669
+ "8.0.0",
2670
+ "ubi9-jdk17",
2671
+ "9.2.0-ubi9-jdk17",
2672
+ "9.0.1-ubi9-jdk17",
2673
+ "8.9.0-ubi9-jdk17",
2674
+ "8.9.0-ubi9",
2675
+ "8.5.9-ubi9",
2665
2676
  "8.7.1-ubi9",
2666
2677
  "8.7.1-ubi9-jdk17",
2667
- "8.5.9-ubi9",
2668
- "8.5.14-ubi9-jdk17",
2669
2678
  "8.5.9-ubi9-jdk17",
2670
- "8.9.0-ubi9-jdk17",
2671
- "8.9.0-ubi9",
2672
- "8.5.14-ubi9",
2673
- "8.5.18-ubi9",
2674
- "8.5.18-ubi9-jdk17",
2675
2679
  "9.2.0-rc1-jdk21",
2676
2680
  "9.2.0-rc1-ubuntu-jdk21",
2677
2681
  "9.2.0-rc1",
@@ -10230,4 +10234,4 @@ process.on('SIGINT', () => {
10230
10234
  console.log(`Received term signal, trying to stop gracefully 💪`);
10231
10235
  gracefulExit();
10232
10236
  });
10233
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzZXQuanMiLCJzb3VyY2VzIjpbIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvQWN0aW9uSGFuZGxlci5qcyIsIi4uLy4uL2Rpc3Qvc3JjL3R5cGVzL0RhdGFiYXNlLmpzIiwiLi4vLi4vZGlzdC9zcmMvdHlwZXMvQXBwbGljYXRpb24uanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2FtcHMuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2xpY2VuY2VzLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy90b0Fic29sdXRlUGF0aC5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvbmV0d29yay5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2RhdGFiYXNlcy9iYXNlLmpzIiwiLi4vLi4vZGlzdC9zcmMvZGF0YWJhc2VzL21zc3FsLmpzIiwiLi4vLi4vZGlzdC9zcmMvZGF0YWJhc2VzL215c3FsLmpzIiwiLi4vLi4vZGlzdC9zcmMvZGF0YWJhc2VzL3Bvc3RncmVzLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9nZXREYXRhYmFzZUVuZ2luZS5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvZ2V0Wm9kRGVmYXVsdHMuanMiLCIuLi8uLi9kaXN0L3NyYy9hcHBsaWNhdGlvbnMvYmFzZS5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2FwcGxpY2F0aW9ucy9iYW1ib28uanMiLCIuLi8uLi9kaXN0L3NyYy9hcHBsaWNhdGlvbnMvYml0YnVja2V0LmpzIiwiLi4vLi4vZGlzdC9zcmMvYXBwbGljYXRpb25zL2NvbmZsdWVuY2UuanMiLCIuLi8uLi9kaXN0L3NyYy9hcHBsaWNhdGlvbnMvamlyYS5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvZ2V0QXBwbGljYXRpb24uanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2dldFZlcnNpb25zLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9zaG93SGVscFdpdGhEZWZhdWx0Q29tbWFuZE9wdGlvbnMuanMiLCIuLi8uLi9kaXN0L3NyYy9jb21tYW5kcy9yZXNldC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhc3luY0V4aXRIb29rLCBncmFjZWZ1bEV4aXQgfSBmcm9tICdleGl0LWhvb2snO1xuaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7XG5leHBvcnQgY29uc3QgQWN0aW9uSGFuZGxlciA9IGFzeW5jIChwcm9ncmFtLCB7IGFjdGlvbiwgZXJyb3JIYW5kbGVyIH0sIG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCBvcHMgPSBvcHRpb25zIHx8IHByb2dyYW0ub3B0cygpO1xuICAgIGF3YWl0IG5ldyBQcm9taXNlKChfLCByZWplY3QpID0+IHtcbiAgICAgICAgbGV0IGVycm9yTWVzc2FnZSA9ICcnO1xuICAgICAgICBhc3luY0V4aXRIb29rKGFzeW5jIChjb2RlKSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChjb2RlICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGVycm9ySGFuZGxlcihvcHMpLmNhdGNoKCgpID0+IG51bGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZXJyb3JNZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvck1lc3NhZ2UudHJpbSgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFdlIGFyZSByZWplY3RpbmcgdGhlIHByb21pc2UgdG8gYXZvaWQgdGhlXG4gICAgICAgICAgICAgICAgICAgIC8vIFwiQ2FsbGluZyBwcm9jZXNzLmV4aXRcIiBsb2cgbWVzc2FnZSBmcm9tIGV4aXQtaG9va1xuICAgICAgICAgICAgICAgICAgICByZWplY3QobnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogZXJyO1xuICAgICAgICAgICAgICAgIHJlamVjdChtZXNzYWdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgd2FpdDogNjAgKiAxICogMTAwMFxuICAgICAgICB9KTtcbiAgICAgICAgYWN0aW9uKG9wcykudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBncmFjZWZ1bEV4aXQoMCk7XG4gICAgICAgIH0pLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2Ygei5ab2RFcnJvcikge1xuICAgICAgICAgICAgICAgIGVyci5pc3N1ZXMuZm9yRWFjaChpc3N1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSArPSBgVW5hYmxlIHRvIHBhcnNlIG9wdGlvbiAke2lzc3VlLnBhdGguam9pbignLCcpfTogJHtpc3N1ZS5tZXNzYWdlfVxcbmA7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvciB8fCB0eXBlb2YgZXJyID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGVyci50b1N0cmluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZ3JhY2VmdWxFeGl0KDEpO1xuICAgICAgICB9KTtcbiAgICB9KS5jYXRjaChtZXNzYWdlID0+IHtcbiAgICAgICAgaWYgKG1lc3NhZ2UgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHByb2dyYW0uZXJyb3IobWVzc2FnZSk7XG4gICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBlcnJvciBtZXNzYWdlLFxuICAgICAgICAgICAgLy8gd2UgY2FuIGFzc3VtZSBhIGNsZWFuIGV4aXRcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICAgICAgfVxuICAgIH0pO1xufTtcbiIsImltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xuaW1wb3J0IHZlcnNpb25zIGZyb20gJy4uLy4uL2Fzc2V0cy92ZXJzaW9ucy5qc29uJztcbmV4cG9ydCBjb25zdCBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMgPSB6LmVudW0oW1xuICAgICdwb3N0Z3Jlc3FsJyxcbiAgICAnbXlzcWwnLFxuICAgICdtc3NxbCdcbl0pO1xuZXhwb3J0IGNvbnN0IFN1cHBvcnRlZE1TU1FMRWRpdGlvbnMgPSB6LmVudW0oW1xuICAgICdEZXZlbG9wZXInLFxuICAgICdFeHByZXNzJyxcbiAgICAnU3RhbmRhcmQnLFxuICAgICdFbnRlcnByaXNlJyxcbiAgICAnRW50ZXJwcmlzZUNvcmUnXG5dKTtcbmV4cG9ydCBjb25zdCBEYXRhYmFzZU9wdGlvbnMgPSB6Lm9iamVjdCh7XG4gICAgbmFtZTogU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLFxuICAgIHBvcnQ6IHoubnVtYmVyKCkub3Ioei5zdHJpbmcoKS50cmFuc2Zvcm0oTnVtYmVyKS5yZWZpbmUoaXRlbSA9PiAhaXNOYU4oaXRlbSkpKSxcbiAgICBkYXRhYmFzZTogei5zdHJpbmcoKS5kZWZhdWx0KCdkY2R4JyksXG4gICAgdXNlcm5hbWU6IHouc3RyaW5nKCkuZGVmYXVsdCgnZGNkeCcpLFxuICAgIHBhc3N3b3JkOiB6LnN0cmluZygpLmRlZmF1bHQoJ2RjZHgnKSxcbiAgICBjbGVhbjogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgcHJ1bmU6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIHZlcmJvc2U6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIGRyaXZlcjogei5zdHJpbmcoKVxufSk7XG5leHBvcnQgY29uc3QgUG9zdGdyZVNRTE9wdGlvbnMgPSBEYXRhYmFzZU9wdGlvbnMuZXh0ZW5kKHtcbiAgICBuYW1lOiBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsKS5kZWZhdWx0KFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbCksXG4gICAgdGFnOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IHZlcnNpb25zW1N1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbF0uaW5jbHVkZXMoaXRlbSkpLmRlZmF1bHQoJ2xhdGVzdCcpLFxuICAgIHBvcnQ6IHoubnVtYmVyKCkub3Ioei5zdHJpbmcoKS50cmFuc2Zvcm0oTnVtYmVyKS5yZWZpbmUoaXRlbSA9PiAhaXNOYU4oaXRlbSkpKS5kZWZhdWx0KDU0MzIpLFxuICAgIGRyaXZlcjogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSAnb3JnLnBvc3RncmVzcWwuRHJpdmVyJykuZGVmYXVsdCgnb3JnLnBvc3RncmVzcWwuRHJpdmVyJylcbn0pO1xuZXhwb3J0IGNvbnN0IE15U1FMT3B0aW9ucyA9IERhdGFiYXNlT3B0aW9ucy5leHRlbmQoe1xuICAgIG5hbWU6IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm15c3FsKS5kZWZhdWx0KFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXlzcWwpLFxuICAgIHRhZzogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiB2ZXJzaW9uc1tTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm15c3FsXS5pbmNsdWRlcyhpdGVtKSkuZGVmYXVsdCgnbGF0ZXN0JyksXG4gICAgcG9ydDogei5udW1iZXIoKS5vcih6LnN0cmluZygpLnRyYW5zZm9ybShOdW1iZXIpLnJlZmluZShpdGVtID0+ICFpc05hTihpdGVtKSkpLmRlZmF1bHQoMzMwNiksXG4gICAgZHJpdmVyOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IGl0ZW0gPT09ICdjb20ubXlzcWwuamRiYy5Ecml2ZXInKS5kZWZhdWx0KCdjb20ubXlzcWwuamRiYy5Ecml2ZXInKVxufSk7XG5leHBvcnQgY29uc3QgTVNTUUxPcHRpb25zID0gRGF0YWJhc2VPcHRpb25zLmV4dGVuZCh7XG4gICAgbmFtZTogU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLnJlZmluZShpdGVtID0+IGl0ZW0gPT09IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXNzcWwpLmRlZmF1bHQoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5tc3NxbCksXG4gICAgdGFnOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IHZlcnNpb25zW1N1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXNzcWxdLmluY2x1ZGVzKGl0ZW0pKS5kZWZhdWx0KCdsYXRlc3QnKSxcbiAgICBlZGl0aW9uOiBTdXBwb3J0ZWRNU1NRTEVkaXRpb25zLmRlZmF1bHQoJ0RldmVsb3BlcicpLFxuICAgIHBvcnQ6IHoubnVtYmVyKCkub3Ioei5zdHJpbmcoKS50cmFuc2Zvcm0oTnVtYmVyKS5yZWZpbmUoaXRlbSA9PiAhaXNOYU4oaXRlbSkpKS5kZWZhdWx0KDE0MzMpLFxuICAgIHVzZXJuYW1lOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IGl0ZW0gPT09ICdzYScpLmRlZmF1bHQoJ3NhJyksXG4gICAgcGFzc3dvcmQ6IHouc3RyaW5nKCkuZGVmYXVsdCgnRGF0YUNlbnRlckRYIScpLFxuICAgIGRyaXZlcjogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSAnY29tLm1pY3Jvc29mdC5zcWxzZXJ2ZXIuamRiYy5TUUxTZXJ2ZXJEcml2ZXInKS5kZWZhdWx0KCdjb20ubWljcm9zb2Z0LnNxbHNlcnZlci5qZGJjLlNRTFNlcnZlckRyaXZlcicpXG59KTtcbiIsImltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xuaW1wb3J0IHsgU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzIH0gZnJvbSAnLi9EYXRhYmFzZSc7XG5leHBvcnQgY29uc3QgU3VwcG9ydGVkQXBwbGljYXRpb25zID0gei5lbnVtKFtcbiAgICAnamlyYScsXG4gICAgJ2NvbmZsdWVuY2UnLFxuICAgICdiaXRidWNrZXQnLFxuICAgICdiYW1ib28nXG5dKTtcbmV4cG9ydCBjb25zdCBBcHBsaWNhdGlvbk9wdGlvbnMgPSB6Lm9iamVjdCh7XG4gICAgbmFtZTogU3VwcG9ydGVkQXBwbGljYXRpb25zLFxuICAgIHRhZzogei5zdHJpbmcoKS5kZWZhdWx0KCdsYXRlc3QnKSxcbiAgICBkYXRhYmFzZTogU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLmRlZmF1bHQoJ3Bvc3RncmVzcWwnKSxcbiAgICBkYXRhYmFzZVRhZzogei5zdHJpbmcoKS5kZWZhdWx0KCdsYXRlc3QnKSxcbiAgICBwb3J0OiB6LnN0cmluZygpLnRyYW5zZm9ybShOdW1iZXIpLnJlZmluZShpdGVtID0+ICFpc05hTihpdGVtKSkuZGVmYXVsdCgnODAnKSxcbiAgICBjb250ZXh0UGF0aDogei5zdHJpbmcoKSxcbiAgICB4bXM6IHouc3RyaW5nKCkuZGVmYXVsdCgnMTAyNG0nKSxcbiAgICB4bXg6IHouc3RyaW5nKCkuZGVmYXVsdCgnMTAyNG0nKSxcbiAgICB3YXRjaDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgZXh0OiB6LmFycmF5KHouc3RyaW5nKCkpLFxuICAgIGluc3RhbGw6IHouYm9vbGVhbigpLFxuICAgIG91dHB1dERpcmVjdG9yeTogei5zdHJpbmcoKSxcbiAgICBhY3RpdmF0ZVByb2ZpbGVzOiB6LnN0cmluZygpLFxuICAgIGNsZWFuOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgICBwcnVuZTogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgZGVidWc6IHouYm9vbGVhbigpLmRlZmF1bHQodHJ1ZSksXG4gICAgY3dkOiB6LnN0cmluZygpXG59KS5wYXJ0aWFsKHtcbiAgICBjb250ZXh0UGF0aDogdHJ1ZSxcbiAgICBleHQ6IHRydWUsXG4gICAgaW5zdGFsbDogdHJ1ZSxcbiAgICBvdXRwdXREaXJlY3Rvcnk6IHRydWUsXG4gICAgYWN0aXZhdGVQcm9maWxlczogdHJ1ZSxcbiAgICBjd2Q6IHRydWVcbn0pO1xuIiwiaW1wb3J0IHsgRE9NUGFyc2VyLCBYTUxTZXJpYWxpemVyIH0gZnJvbSAnQHhtbGRvbS94bWxkb20nO1xuaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB7IFhNTFBhcnNlciB9IGZyb20gJ2Zhc3QteG1sLXBhcnNlcic7XG5pbXBvcnQgeyBleGlzdHNTeW5jLCByZWFkRmlsZVN5bmMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBjd2QgfSBmcm9tICdwcm9jZXNzJztcbmltcG9ydCB4cGF0aCBmcm9tICd4cGF0aCc7XG5pbXBvcnQgeyBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMgfSBmcm9tICcuLi90eXBlcy9BcHBsaWNhdGlvbic7XG5leHBvcnQgY2xhc3MgQU1QUyB7XG4gICAgb3B0aW9ucztcbiAgICBtYXZlbiA9IG51bGw7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9yXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucyA9IHtcbiAgICAgICAgcHJvZmlsZXM6IFtdXG4gICAgfSkge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHVibGljIE1ldGhvZHNcbiAgICBzdG9wKCkge1xuICAgICAgICBpZiAodGhpcy5tYXZlbikge1xuICAgICAgICAgICAgY29uc3Qga2lsbGVkID0gdGhpcy5tYXZlbi5raWxsKDApO1xuICAgICAgICAgICAgaWYgKCFraWxsZWQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byB0ZXJtaW5hdGUgZXhpc3RpbmcgTWF2ZW4gcHJvY2VzcycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGJ1aWxkKGFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLm1hdmVuKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qga2lsbGVkID0gdGhpcy5tYXZlbi5raWxsKDApO1xuICAgICAgICAgICAgICAgIGlmICgha2lsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ0ZhaWxlZCB0byB0ZXJtaW5hdGUgZXhpc3RpbmcgTWF2ZW4gcHJvY2VzcycpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm1hdmVuID0gc3Bhd24oJ212bicsIFsncGFja2FnZScsIC4uLmFyZ3NdLCB7IGN3ZDogdGhpcy5vcHRpb25zPy5jd2QgfHwgY3dkKCksIHN0ZGlvOiAnaW5oZXJpdCcgfSk7XG4gICAgICAgICAgICB0aGlzLm1hdmVuLm9uKCdleGl0JywgKGNvZGUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm1hdmVuID0gbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAoY29kZSA9PT0gMCB8fCBjb2RlID09PSAxMzApIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgTWF2ZW4gZXhpdGVkIHdpdGggY29kZSAke2NvZGV9YCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgaXNBdGxhc3NpYW5QbHVnaW4gPSAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBub2RlcyA9IHRoaXMuZ2V0Tm9kZXMoJy8vKltsb2NhbC1uYW1lKCk9XFwncGFja2FnaW5nXFwnXScpO1xuICAgICAgICAgICAgcmV0dXJuIG5vZGVzLnNvbWUoaXRlbSA9PiBpdGVtLnRleHRDb250ZW50ID09PSAnYXRsYXNzaWFuLXBsdWdpbicpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgZ2V0QXBwbGljYXRpb25WZXJzaW9uKCkge1xuICAgICAgICBjb25zdCBhcHBsaWNhdGlvbnMgPSB0aGlzLmdldEFwcGxpY2F0aW9ucygpO1xuICAgICAgICBpZiAoYXBwbGljYXRpb25zLnNpemUgPT09IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IFssIHZlcnNpb25dID0gQXJyYXkuZnJvbShhcHBsaWNhdGlvbnMpWzBdO1xuICAgICAgICAgICAgcmV0dXJuIHZlcnNpb247XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoYXBwbGljYXRpb25zLnNpemUgPiAxKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBBdGxhc3NpYW4gUGx1Z2luIHByb2plY3QgY29udGFpbnMgbXVsdGlwbGUgQU1QUyBjb25maWd1cmF0aW9uLCB1bmFibGUgdG8gZGVjaWRlIHdoaWNoIHByb2R1Y3QgdG8gdXNlIPCfmLAnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBnZXRBcHBsaWNhdGlvbigpIHtcbiAgICAgICAgY29uc3QgYXBwbGljYXRpb25zID0gdGhpcy5nZXRBcHBsaWNhdGlvbnMoKTtcbiAgICAgICAgaWYgKGFwcGxpY2F0aW9ucy5zaXplID09PSAxKSB7XG4gICAgICAgICAgICBjb25zdCBbbmFtZV0gPSBBcnJheS5mcm9tKGFwcGxpY2F0aW9ucylbMF07XG4gICAgICAgICAgICByZXR1cm4gbmFtZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChhcHBsaWNhdGlvbnMuc2l6ZSA+IDEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIEF0bGFzc2lhbiBQbHVnaW4gcHJvamVjdCBjb250YWlucyBtdWx0aXBsZSBBTVBTIGNvbmZpZ3VyYXRpb24sIHVuYWJsZSB0byBkZWNpZGUgd2hpY2ggcHJvZHVjdCB0byB1c2Ug8J+YsCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBnZXRBcHBsaWNhdGlvbnMoKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBNYXAoKTtcbiAgICAgICAgY29uc3Qgbm9kZXMgPSB0aGlzLmdldE5vZGVzKCcvLypbbG9jYWwtbmFtZSgpPVxcJ2dyb3VwSWRcXCcgYW5kIHRleHQoKT1cXCdjb20uYXRsYXNzaWFuLm1hdmVuLnBsdWdpbnNcXCddJyk7XG4gICAgICAgIGNvbnN0IG5vZGVzV2l0aEFjdGl2ZVByb2ZpbGUgPSBub2Rlcy5maWx0ZXIobm9kZSA9PiB0aGlzLmlzQWN0aXZhdGVkUHJvZmlsZShub2RlKSk7XG4gICAgICAgIG5vZGVzV2l0aEFjdGl2ZVByb2ZpbGUuZm9yRWFjaChub2RlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSBub2RlLnBhcmVudE5vZGU7XG4gICAgICAgICAgICBpZiAocGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgcGx1Z2luIH0gPSB0aGlzLnRvT2JqZWN0KHBhcmVudE5vZGUpO1xuICAgICAgICAgICAgICAgIGlmICgnYW1wcy1tYXZlbi1wbHVnaW4nID09PSBwbHVnaW4/LmFydGlmYWN0SWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBjb25maWd1cmF0aW9uIH0gPSBwbHVnaW4gfHwge307XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb25maWd1cmF0aW9uPy5wcm9kdWN0cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29uZmlndXJhdGlvbj8ucHJvZHVjdHMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi5wcm9kdWN0cy5mb3JFYWNoKChwcm9kdWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1cHBvcnRlZEFwcGxpY2F0aW9uID0gdGhpcy5nZXRTdXBwb3J0ZWRBcHBsaWNhdGlvbihwcm9kdWN0LmlkKSB8fCB0aGlzLmdldFN1cHBvcnRlZEFwcGxpY2F0aW9uKHByb2R1Y3QuaW5zdGFuY2VJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdXBwb3J0ZWRBcHBsaWNhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVyc2lvbiA9IHRoaXMuZG9Qcm9wZXJ0eVJlcGxhY2VtZW50KHByb2R1Y3QudmVyc2lvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyc2lvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zZXQoc3VwcG9ydGVkQXBwbGljYXRpb24sIHZlcnNpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHByb2R1Y3QgfSA9IGNvbmZpZ3VyYXRpb24/LnByb2R1Y3RzIHx8IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9kdWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1cHBvcnRlZEFwcGxpY2F0aW9uID0gdGhpcy5nZXRTdXBwb3J0ZWRBcHBsaWNhdGlvbihwcm9kdWN0LmlkKSB8fCB0aGlzLmdldFN1cHBvcnRlZEFwcGxpY2F0aW9uKHByb2R1Y3QuaW5zdGFuY2VJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdXBwb3J0ZWRBcHBsaWNhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVyc2lvbiA9IHRoaXMuZG9Qcm9wZXJ0eVJlcGxhY2VtZW50KHByb2R1Y3QudmVyc2lvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyc2lvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zZXQoc3VwcG9ydGVkQXBwbGljYXRpb24sIHZlcnNpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdXBwb3J0ZWRBcHBsaWNhdGlvbiA9IHRoaXMuZ2V0U3VwcG9ydGVkQXBwbGljYXRpb24ocGx1Z2luPy5hcnRpZmFjdElkKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVyc2lvbiA9IHRoaXMuZ2V0VmVyc2lvbihub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRlZEFwcGxpY2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuc2V0KHN1cHBvcnRlZEFwcGxpY2F0aW9uLCB2ZXJzaW9uKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcml2YXRlIE1ldGhvZHNcbiAgICBnZXRTdXBwb3J0ZWRBcHBsaWNhdGlvbih2YWx1ZSkge1xuICAgICAgICBpZiAodmFsdWU/LmluY2x1ZGVzKFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuamlyYSkpIHtcbiAgICAgICAgICAgIHJldHVybiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmppcmE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodmFsdWU/LmluY2x1ZGVzKFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuY29uZmx1ZW5jZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmNvbmZsdWVuY2U7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodmFsdWU/LmluY2x1ZGVzKFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYmFtYm9vKSkge1xuICAgICAgICAgICAgcmV0dXJuIFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYmFtYm9vO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHZhbHVlPy5pbmNsdWRlcyhTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJpdGJ1Y2tldCkpIHtcbiAgICAgICAgICAgIHJldHVybiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJpdGJ1Y2tldDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZ2V0VmVyc2lvbihub2RlKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSBub2RlLnBhcmVudE5vZGU7XG4gICAgICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICAgICAgICBjb25zdCB7IHBsdWdpbiB9ID0gdGhpcy50b09iamVjdChwYXJlbnROb2RlKTtcbiAgICAgICAgICAgIGNvbnN0IHsgY29uZmlndXJhdGlvbiB9ID0gcGx1Z2luIHx8IHt9O1xuICAgICAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24/LnByb2R1Y3RWZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG9Qcm9wZXJ0eVJlcGxhY2VtZW50KHBsdWdpbi5jb25maWd1cmF0aW9uLnByb2R1Y3RWZXJzaW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNvbmZpZ3VyYXRpb24/LnByb2R1Y3RzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJvZHVjdCA9IEFycmF5LmlzQXJyYXkoY29uZmlndXJhdGlvbj8ucHJvZHVjdHMpID8gY29uZmlndXJhdGlvbj8ucHJvZHVjdHNbMF0gOiBjb25maWd1cmF0aW9uLnByb2R1Y3RzLnByb2R1Y3Q7XG4gICAgICAgICAgICAgICAgaWYgKHByb2R1Y3QgJiYgcHJvZHVjdC52ZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRvUHJvcGVydHlSZXBsYWNlbWVudChwcm9kdWN0LnZlcnNpb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBkb1Byb3BlcnR5UmVwbGFjZW1lbnQodmFsdWUpIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IHZhbHVlO1xuICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIHByb2ZpbGUsIHJlcGxhY2UgcHJvZmlsZSBwcm9wZXJ0aWVzIGZpcnN0IGFzIHRoZXkgdGFrZSBwcmVjZWRlbmNlXG4gICAgICAgIGNvbnN0IHByb2ZpbGVQcm9wZXJ0aWVzID0gdGhpcy5nZXRQcm9wZXJ0aWVzKCk7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHByb2ZpbGVQcm9wZXJ0aWVzKS5mb3JFYWNoKChbcHJvcGVydHlLZXksIHByb3BlcnR5VmFsdWVdKSA9PiB7XG4gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZUFsbChgJFxceyR7cHJvcGVydHlLZXl9fWAsIHByb3BlcnR5VmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcHJvcGVydGllcyA9IHRoaXMuZ2V0UHJvcGVydGllcygpO1xuICAgICAgICBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzKS5mb3JFYWNoKChbcHJvcGVydHlLZXksIHByb3BlcnR5VmFsdWVdKSA9PiB7XG4gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZUFsbChgJFxceyR7cHJvcGVydHlLZXl9fWAsIHByb3BlcnR5VmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgZ2V0UHJvcGVydGllcygpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgICAgIGNvbnN0IG5vZGVzID0gdGhpcy5nZXROb2RlcygnLy8qW2xvY2FsLW5hbWUoKT1cXCdwcm9wZXJ0aWVzXFwnXScpO1xuICAgICAgICBjb25zdCBub2Rlc1dpdGhBY3RpdmVQcm9maWxlID0gbm9kZXMuZmlsdGVyKG5vZGUgPT4gdGhpcy5pc0FjdGl2YXRlZFByb2ZpbGUobm9kZSkpO1xuICAgICAgICBub2Rlc1dpdGhBY3RpdmVQcm9maWxlLmZvckVhY2gobm9kZSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHByb3BlcnRpZXMgfSA9IHRoaXMudG9PYmplY3Qobm9kZSk7XG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHJlc3VsdFtrZXldID0gdmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgZ2V0Tm9kZXMoZXhwcmVzc2lvbiwgc2luZ2xlKSB7XG4gICAgICAgIGNvbnN0IHBvbUZpbGVQYXRoID0gam9pbih0aGlzLm9wdGlvbnM/LmN3ZCB8fCBjd2QoKSwgJy4vcG9tLnhtbCcpO1xuICAgICAgICBjb25zdCBoYXNQb21GaWxlID0gZXhpc3RzU3luYyhwb21GaWxlUGF0aCk7XG4gICAgICAgIGlmIChoYXNQb21GaWxlKSB7XG4gICAgICAgICAgICBjb25zdCB4bWwgPSByZWFkRmlsZVN5bmMocG9tRmlsZVBhdGgsICd1dGY4Jyk7XG4gICAgICAgICAgICBjb25zdCBkb2MgPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKHhtbCwgJ3RleHQveG1sJyk7XG4gICAgICAgICAgICBjb25zdCBub2RlcyA9IHNpbmdsZSA/IHhwYXRoLnNlbGVjdChleHByZXNzaW9uLCBkb2MsIHRydWUpIDogeHBhdGguc2VsZWN0KGV4cHJlc3Npb24sIGRvYywgZmFsc2UpO1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobm9kZXMpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoc2luZ2xlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgdG9PYmplY3Qobm9kZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcGFyc2VyID0gbmV3IFhNTFBhcnNlcigpO1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlci5wYXJzZShuZXcgWE1MU2VyaWFsaXplcigpLnNlcmlhbGl6ZVRvU3RyaW5nKG5vZGUpKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmaW5kUGFyZW50Tm9kZUJ5VGFnTmFtZSh0YWdOYW1lLCBub2RlKSB7XG4gICAgICAgIGNvbnN0IHsgcGFyZW50Tm9kZSB9ID0gbm9kZTtcbiAgICAgICAgaWYgKHBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIGlmIChwYXJlbnROb2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IHRhZ05hbWUudG9Mb3dlckNhc2UoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXJlbnROb2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmluZFBhcmVudE5vZGVCeVRhZ05hbWUodGFnTmFtZSwgcGFyZW50Tm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlzQWN0aXZhdGVkUHJvZmlsZShub2RlKSB7XG4gICAgICAgIGNvbnN0IHByb2ZpbGVQYXJlbnROb2RlID0gdGhpcy5maW5kUGFyZW50Tm9kZUJ5VGFnTmFtZSgncHJvZmlsZScsIG5vZGUpO1xuICAgICAgICBjb25zdCBwcm9maWxlTm9kZSA9IHByb2ZpbGVQYXJlbnROb2RlID8gdGhpcy50b09iamVjdChwcm9maWxlUGFyZW50Tm9kZSkgOiBudWxsO1xuICAgICAgICBpZiAoIXByb2ZpbGVOb2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChwcm9maWxlTm9kZSAmJiAocHJvZmlsZU5vZGUuYWN0aXZlQnlEZWZhdWx0ID09PSAndHJ1ZScgfHwgdGhpcy5vcHRpb25zLnByb2ZpbGVzLmluY2x1ZGVzKHByb2ZpbGVOb2RlLnByb2ZpbGUuaWQpKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJleHBvcnQgY29uc3QgdGltZWJvbWIgPSB7XG4gICAgJ2ppcmEnOiAnQUFBQ0JBME9EQW9QZU5wOWtsMXYyakFVaHUveks0NjBPeVFIU0x1VklrVWFUYndOVkJLVWhFbmJ1Z3NURHVBMnNTUGJnYkZmUHhPQzFpKzR5RVhPNSt2blBSK3lHaUdTVy9DdW9YYzd2Qm9NdlQ0RU5BT3Y1L1djdFVJVUcxbFZxTng3bnFQUVNKZmNjQ2w4R21VMG1TWGpsRHBSWFM1UXhhdTVScVY5MG5jQ0tRekxUY1JLOUV1OTQ0SXAvY1EvTTFNd3JUa1RiaTVMWjFhcmZNTTBoc3lnNy9YNkE5THZFODl6MmozWnZzSm1RQkJQcHpRSnhxUDdVNHIrcWJqYU4zMnpHKy9iYVIyZE1sNmMzNWVpMnFJYWgvNGR2YUhrT3Z6cGtVL3g1SVo4dmJvZE9JOWNNYmRTY2xubnhqMzhFQzFYWnNjVXVuWXkzNkp2VkkzT3hHWm1iWlhkendJVTVsVkpXaTkwcm5qVlFHb2k3MEI4NzNHTmhQT1FPNTFPRkdma1M1eVFXUktIOHlBYnh4R1pwOVFtL0VDaHBiR0V4UjdNQnFHZEFsVGtjb2tLN01NZU1UZndhMk5NOVREc2R0ZlNmUUduV3h3N0NCNDdmcnNRU2hEU3dKSnJvL2lpTm1nbmN3MUdRbDVySTB0cnRldFk0c0tnWUNKL1k0cVZGU1IwbE5HUTNQMDRhRHhyVEt2V09qTVhUMEx1eENVMzN0eGFTaVBmZnVSanIzZnNPL21DNm9nL1Ztc211R1lOMElqOTNURlljVlh1blFhYURiNCt3SmJGZDd2ZzBPSTVJZjUzTkVOdG9LMkFsVlF3R1NjalNGdDVscmpkV3ltdThXRUlnU3d0cHB5ekFzTGd4Ums4UDVoRzlQTUEzYktpUHNwZHNVTGpKUndYN3VrZjUvTlg3VEF0QWhVQWhRU0h6OURneWNPWDd3Y3dFUk1KYjNUTEdiNENGR2tCL3hVV1NSSzNCWkxyUEY5Um42Wm1yVXFKWDAyb2MnLFxuICAgICdjb25mbHVlbmNlJzogJ0FBQUN6ZzBPREFvUGVOcDlWTzl2MmpBUS9aNi93dEsrSVlXR3NFS0hGR21RbUphdS9HZ0ltOWlZSmhNT1lwcllrZTFBNGErZlNjaEdLdHFQUHZ2ZXZYdjN6cC82Z3FMSExFYjJIYktzVHZOenA5bEM5OE1BMlpiZE5LWWdkaUFHbnRQRFEyejY4OEhjZEgvYU03UDVvMmtaVHpRRUppRTRwREFpQ1RnQm5nYUQwYjBSQ3I1ZjFTOXVIZmNVV1hTUUJ6dUllUXJDQ0RsYjEwbW82QTRjSlRMUVNWbElsekZVZ2dwSThpY2tNYkFWRWJJK3lwSWxpUEc2UjVJbDV6NGtYRUYzQTB4SnAxR3l3YThwRlFlUEtIQW1EZHQ2K0E5Y0pWUUVLNXlXbWhNVjhIR1pMUldrd3JGOFBaTWdwR1BmR2g3SVVOQlVVYzZjQUtSQ2NWRVlyYmxBYVp4dEtFT3JzcWo4Vi9VUzg1enhYZCtmVUd3RDcwaWNrUnd5ZjdBUkFDemlxVVlvKzhJcm10L2pVWUQ5aVQrWVltTklLRlBBQ0F1dnlISWFRRVVTSFlnejBHOHJvcmdDOHJwNXF2YUVaVnAzcHQwdThzdmUzVGlUQ3NTSXIwQTZsbEdyMVZ3ZmR3UHNtYjI1UGpqYlZ3cTJFY1pjbTZuUzZES1grSTNpVDF5UC9DeTQyVEJlNEZBSzBXaFpWdHU2YXpZYlplWmxCMFUyd3JwbmtRb3FxNDBVeXN0NjdScUI5elU4azY0b2xZZXFLbkdtTkN6V2lzZU9Vb0t3aExMb0sxRXhrWklTVmc5NWNyM1pOL1lxZHVlU1lXNjQ5L21kcmZKQVpPUU0zYjNiOTZEUnVoVmszMjYxa2tGdmV4d2U0MVVRdEpOMTJ1NUd6NkdjUFQ3UG43MUg3MHQ2OUNQY2J4L2E5cmNqM3JEdXdsazR4cHJLQ0E1Vk4rb0pqc2FCMlIvNzVzUWZlek0zR0l4SDVteUtUNlBOL1FFcnREd2dGUUU2RTlWRENMVVp0TjhGMzBLbzBLOUlxWFRSdWJuWjhIcEZsWnR6QXlZVUdiL3J5T09JY1lWV1ZDcEJsNWtDalV3bFVoeUYybVk4MFdhb1h4ZHpFaE9XZTJZc05vUlJXV3hNdDZ4WC9oSDZQNXV4RjhiM3JMSklsejFMcFFXOTVwUVB2cWZMcTBrbXdvaEllTHMybDlQTXpmUTQ4THZ2V1RiZk1ZMUFYRGc5S0pETENWMkM5SFVNSCtDYUpmT2Z1ZGkvdjBrSUdWc3dMQUlVRU1ROVg3N2dxR0JkZkgwSEl6QmFWOE5hZFBVQ0ZCbitSaVVBNEQrSXFWUXBUVG91TFZZNjZhQ0dYMDIxMjEnLFxuICAgICdiaXRidWNrZXQnOiAnQUFBQm1nME9EQW9QZU5wOVVsMXYwekFVZmMrdnNNUmJKYWRKdGpHcFVpUzJKSlJPTk9sYUI0U0FCOWU5VzB4VHU3SnZDdjMzZUltRE9vUjR2ZWZlNC9QaE41OWhSNWJja1BpV1JOZXpLSjVGQ1prdkdVbWlKQTR5clpBTExQa0JVckhYb3RFbnU1ZUJSVzZiOEtNVW9DeXc4eEg2QlZaczJLS2NlM1RKcFVKUVhBa29maDJsT2VjY0lWMWRmUmhKQzdmUlhySnV3SnpBTFBMMC9xRitwSTlYR2FQeit1R0dzcHZia2RSeDhBd2NyMG5SZE9DbmxYbm1TbHFPVXF2MERsdHVyZVRLZzZ2T2lJWmI2SjlQb3ZpYVJtOXBISHMwTTlDZi9SdjFEdi9TUDVsTXlvclI5OVdhcnRaVlhtZHNVWlcwM2hRT1NIdENGK24yVExBQjRobElvWVRlZ1NGSG8zK0FRUEsxUVR4K20wMm56enJrbytKUTZNTzBIUzRvREJmZlE1SnJvalNTbmJSbzVMWkRjTXpTRXRSRWRCYjFBWXdOUnpzWGZmMEpnakN3TGpHLzRtQjVnaUUrSnpoYkYzZXN5T245bHhmMUYyMTQ1YTZPV3UyVi9xbUMvMmRWZG9jdG1PcXB0azVQR2lkK1hKeDQydzNOUFBIV1F1RDlmWEpiTDhQa3RmTGhVMkF2K04ycllNWTZ1VUVGcG5jWS9BWUNnZkZBTUN3Q0ZIemtCbGtHSC92UmRUZWVCU2ZVTXpVRGI0VzJBaFF5TTg5M1dQZzJROG9RQVlSZEJTeUtlVlVkb2c9PVgwMmpyJyxcbiAgICAnYmFtYm9vJzogJ0FBQUIzdzBPREFvUGVOcDlVbHRyMnpBWWZmZXZFT3d0b01SMTBxWUxHSmJZV3NubzdHQTdnOTBlWlBscm90V1dqQ1Nuelg3OUZGOElZV2tmRFBKM09lZHd6dmNoMnpkb1dTdmt6cEY3djVqZExyd3BDa2lhSWMvMVBPZVJNeEFhc21NTkVhM0F6MnhuSFQwNGdRSnF1QlFoTmVCNzd2UUd1elBzM2prNXJYSXB4NVFaZmdEZnFBYUdVdFJVT2FqNGFkWCtQa3BHeStVT2hORSt2bkdHNWxhRGFnczlMM210dVRvT0pGNVBramE1Wm9yWEp3RVhIRytwSlFkYU52Uy9jWXRMQXlzQlZGZnUxOWVodnhYUFFyNElKd1YxQUdVTEt6SW5lQmIrOFBCZC9HV09INllmNzUxTm85aWVhdWpsZVlNSEtZbDgrK0ZiMTNWR28xRVVaL2h6bk9CTkVvZmJJRnZIRWQ2bXhEYjgxa1FvVUg1RVpnK29wMGRFTUZtQVFyV1NmNEFaOUhOdlRQMXJNWm5zckxHbXBGcHpLc1pNVnBPeTI4RFFiZndlbzFBaUlRMHF1RGFLNTQwQmk4dzFNaEt4Umh0WldYdkhUZ2huK3pMUUJ2VTQ2RWxhMXJMWmNZRUtPRUFwYXp2dmZLWGNlaVNvWUcva2NUWGhUVWxGRytYVmJnS1ZOSEErZ0Y3Qk44dDNVdVU1c2RwUndYVVhHbm1sVlYwQ0NtUlZVM0c4RXZmNU1LVXc5dnFJRlYzNnRYN21vTmpmbzdDUFR4ZmVuWklKRXJMTVNJaFgzMDlwdkRkOFNVZ0szc21LTXBKc2tuVktCdHIyNnQ0RCtnZDNBQzVxTUN3Q0ZIT2FUV2ZGdkxDTEpQZnQzcWt0Vm8zRmFmbVpBaFJvamI5SUF4ajhLRXFQRFF5MHN0b3MzOTRTUVE9PVgwMm1xJ1xufTtcbmV4cG9ydCBjb25zdCBhcHAzaG91ciA9ICdBQUFCQ0EwT0RBb1BlTnBkajAxUHdrQVVSZmZ6S3laeFoxSXlVekFSa2xsUTI0Z1JhUU10R25hUDhWRW10alBOZkZUNTl5SlZGeXpmdWJrbjc5NlV4MEJ6NlNtYlVNNW5iRHpqOTdSSVN4b3pIcE1VbmJTcTg4cG9VYUx6dEZFU3RVTjZNSloyVGFpVnB1L1lZMk02dEk2c1FydEhteDhxZDc0RVorVEJJdnlVVS9Bb1lzN2ppRTBqemtuV1F4TXVpZkEySUJsVWJuUTdBdWxWandOOUFhVTlhdEFTczY5TzJkTkZVNHdYSkxjMWFPVUd3OXczNEp3Q1RUWm9lN1JQcVVnZXAyWDBWbTBuMGZOdXQ0Z1N4bC9KY25qOW5GYjZRNXRQL1VldTNMKzBQSFc0Z2haRm1tMnpaVjVrNi85NUNiUjdZOWJZR28vekdyVjNJcjRqUmJEeUNBNnZ0MzRETzhwM1NEQXNBaFFuSmpMRDVrOUZyM3VhSXprWEtmODNvNXZEZFFJVWU0WGVxdU5DQzNEKzlodDlaWWhOWkZLbW5oYz1YMDJkaCc7XG4iLCJpbXBvcnQgeyByZWFscGF0aFN5bmMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luIH0gZnJvbSAncGF0aCc7XG5leHBvcnQgY29uc3QgdG9BYnNvbHV0ZVBhdGggPSAocmVsYXRpdmVQYXRoKSA9PiB7XG4gICAgY29uc3QgWywgZmlsZVBhdGhdID0gcHJvY2Vzcy5hcmd2O1xuICAgIGNvbnN0IGV4ZWN1dGFibGVGaWxlRGlyID0gZGlybmFtZShyZWFscGF0aFN5bmMoZmlsZVBhdGgpKTtcbiAgICBjb25zdCBiYXNlZGlyID0gZXhlY3V0YWJsZUZpbGVEaXIuc3Vic3RyaW5nKDAsIGV4ZWN1dGFibGVGaWxlRGlyLmluZGV4T2YoJ2RjZHgnKSArIDQpO1xuICAgIHJldHVybiBqb2luKGJhc2VkaXIsIHJlbGF0aXZlUGF0aC5yZXBsYWNlQWxsKCcuLi8nLCAnJykpO1xufTtcbiIsImV4cG9ydCBjb25zdCBuZXR3b3JrID0ge1xuICAgIG5hbWU6ICdzaGFyZWQnLFxuICAgIGRyaXZlcjogJ2JyaWRnZSdcbn07XG4iLCJpbXBvcnQgeyBzcGF3biB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHsgZG93bkFsbCwgcHMsIHN0b3AsIHVwQWxsIH0gZnJvbSAnZG9ja2VyLWNvbXBvc2UvZGlzdC92Mi5qcyc7XG5pbXBvcnQgeyBncmFjZWZ1bEV4aXQgfSBmcm9tICdleGl0LWhvb2snO1xuaW1wb3J0IHsgZHVtcCB9IGZyb20gJ2pzLXlhbWwnO1xuaW1wb3J0IHsgY3dkIH0gZnJvbSAncHJvY2Vzcyc7XG5pbXBvcnQgeyBDb25uZWN0aW9uQWNxdWlyZVRpbWVvdXRFcnJvciwgQ29ubmVjdGlvbkVycm9yLCBDb25uZWN0aW9uUmVmdXNlZEVycm9yLCBDb25uZWN0aW9uVGltZWRPdXRFcnJvciwgU2VxdWVsaXplLCBUaW1lb3V0RXJyb3IgfSBmcm9tICdzZXF1ZWxpemUnO1xuaW1wb3J0IHsgbmV0d29yayB9IGZyb20gJy4uL2hlbHBlcnMvbmV0d29yayc7XG5leHBvcnQgY2xhc3MgQmFzZSB7XG4gICAgb3B0aW9ucztcbiAgICBzZXF1ZWxpemU7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9yXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICAvLyBXZSBuZWVkIHRvIHVzZSAnbWFzdGVyJyBmb3IgbXNzcWwgYmVjYXVzZSBpdCBkb2VzIG5vdCBpbml0aWFsaXplIHRoZSBkYXRhYmFzZSBvbiBzdGFydFxuICAgICAgICBjb25zdCBkYXRhYmFzZSA9IHRoaXMub3B0aW9ucy5uYW1lID09PSAnbXNzcWwnID8gJ21hc3RlcicgOiB0aGlzLm9wdGlvbnMuZGF0YWJhc2U7XG4gICAgICAgIHRoaXMuc2VxdWVsaXplID0gbmV3IFNlcXVlbGl6ZShkYXRhYmFzZSwgdGhpcy5vcHRpb25zLnVzZXJuYW1lLCB0aGlzLm9wdGlvbnMucGFzc3dvcmQsIHtcbiAgICAgICAgICAgIGhvc3Q6ICdsb2NhbGhvc3QnLFxuICAgICAgICAgICAgcG9ydDogdGhpcy5vcHRpb25zLnBvcnQsXG4gICAgICAgICAgICBkaWFsZWN0OiB0aGlzLm9wdGlvbnMubmFtZS5yZXBsYWNlKCdwb3N0Z3Jlc3FsJywgJ3Bvc3RncmVzJyksXG4gICAgICAgICAgICByZXRyeToge1xuICAgICAgICAgICAgICAgIG1heDogMzAsXG4gICAgICAgICAgICAgICAgbWF0Y2g6IFtDb25uZWN0aW9uRXJyb3IsIFRpbWVvdXRFcnJvciwgQ29ubmVjdGlvblRpbWVkT3V0RXJyb3IsIENvbm5lY3Rpb25SZWZ1c2VkRXJyb3IsIENvbm5lY3Rpb25BY3F1aXJlVGltZW91dEVycm9yXSxcbiAgICAgICAgICAgICAgICBiYWNrb2ZmQmFzZTogMTAwMCxcbiAgICAgICAgICAgICAgICBiYWNrb2ZmRXhwb25lbnQ6IDFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsb2dnaW5nOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFB1YmxpYyBNZXRob2RzXG4gICAgYXN5bmMgcnVuKHNxbCwgbG9nZ2luZykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXF1ZWxpemUucXVlcnkoc3FsLCB7IGxvZ2dpbmcgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgdHJ5aW5nIHRvIHJ1biB0aGUgZm9sbG93aW5nIFNRTCBxdWVyeTonLCBzcWwsIGVycik7XG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgc3RhcnQoY2xlYW4gPSB0aGlzLm9wdGlvbnMuY2xlYW4pIHtcbiAgICAgICAgY29uc29sZS5sb2coYFN0YXJ0aW5nIGluc3RhbmNlIG9mICR7dGhpcy5vcHRpb25zLm5hbWV9Li4uIPCfkoNgKTtcbiAgICAgICAgaWYgKGNsZWFuKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmRvd24oKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLnVwKCk7XG4gICAgICAgIGNvbnN0IGlzQXZhaWxhYmxlID0gYXdhaXQgdGhpcy53YWl0VW50aWxSZWFkeSgpO1xuICAgICAgICBpZiAoIWlzQXZhaWxhYmxlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgRmFpbGVkIHRvIHZlcmlmeSBzdGF0dXMgb2YgJHt0aGlzLm9wdGlvbnMubmFtZX0g4puUYCk7XG4gICAgICAgICAgICBncmFjZWZ1bEV4aXQoMSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgRGF0YWJhc2UgaXMgcmVhZHkgYW5kIGFjY2VwdGluZyBjb25uZWN0aW9ucyBvbiBsb2NhbGhvc3Q6JHt0aGlzLm9wdGlvbnMucG9ydH0g8J+XhO+4j2ApO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLm9uRGF0YWJhc2VSZWFkeSgpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZXJ2aWNlID0gYXdhaXQgdGhpcy5nZXRTZXJ2aWNlU3RhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlcnZpY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc2hvd0RvY2tlckxvZ3Moc2VydmljZS5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICBncmFjZWZ1bEV4aXQoMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgc3RvcChwcnVuZSA9IHRoaXMub3B0aW9ucy5wcnVuZSkge1xuICAgICAgICBpZiAocHJ1bmUpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZG93bigpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgY29uZmlnQXNTdHJpbmcgPSBkdW1wKHRoaXMuZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpKTtcbiAgICAgICAgICAgIGF3YWl0IHN0b3Aoe1xuICAgICAgICAgICAgICAgIGN3ZDogY3dkKCksXG4gICAgICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICAgICAgbG9nOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBvbkRhdGFiYXNlUmVhZHkoKSB7IH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJpdmF0ZSBNZXRob2RzXG4gICAgZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNlcnZpY2VzOiB7XG4gICAgICAgICAgICAgICAgJ2RiJzogdGhpcy5nZXRTZXJ2aWNlKClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXR3b3Jrczoge1xuICAgICAgICAgICAgICAgICdzaGFyZWQnOiBuZXR3b3JrXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuICAgIGFzeW5jIHVwKCkge1xuICAgICAgICBjb25zdCBjb25maWdBc1N0cmluZyA9IGR1bXAodGhpcy5nZXREb2NrZXJDb21wb3NlQ29uZmlnKCkpO1xuICAgICAgICByZXR1cm4gdXBBbGwoe1xuICAgICAgICAgICAgY3dkOiBjd2QoKSxcbiAgICAgICAgICAgIGNvbmZpZ0FzU3RyaW5nLFxuICAgICAgICAgICAgbG9nOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyBkb3duKCkge1xuICAgICAgICBjb25zdCBjb25maWdBc1N0cmluZyA9IGR1bXAodGhpcy5nZXREb2NrZXJDb21wb3NlQ29uZmlnKCkpO1xuICAgICAgICByZXR1cm4gZG93bkFsbCh7XG4gICAgICAgICAgICBjd2Q6IGN3ZCgpLFxuICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICBjb21tYW5kT3B0aW9uczogWyctdicsICctLXJlbW92ZS1vcnBoYW5zJywgJy0tcm1pJywgJ2xvY2FsJ10sXG4gICAgICAgICAgICBsb2c6IHRydWVcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIHdhaXRVbnRpbFJlYWR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXF1ZWxpemUuYXV0aGVudGljYXRlKCkudGhlbigoKSA9PiB0cnVlKS5jYXRjaCgoKSA9PiBmYWxzZSk7XG4gICAgfVxuICAgIGFzeW5jIGdldFNlcnZpY2VTdGF0ZSgpIHtcbiAgICAgICAgY29uc3QgY29uZmlnQXNTdHJpbmcgPSBkdW1wKHRoaXMuZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcHMoe1xuICAgICAgICAgICAgY3dkOiBjd2QoKSxcbiAgICAgICAgICAgIGNvbmZpZ0FzU3RyaW5nLFxuICAgICAgICAgICAgY29tbWFuZE9wdGlvbnM6IFsnLS1hbGwnXSxcbiAgICAgICAgICAgIGxvZzogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQuZGF0YS5zZXJ2aWNlcy5maW5kKGl0ZW0gPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFydHMgPSBpdGVtLm5hbWUuc3BsaXQoJy0nKTtcbiAgICAgICAgICAgIGNvbnN0IHNlcnZpY2UgPSBwYXJ0c1twYXJ0cy5sZW5ndGggLSAyXTtcbiAgICAgICAgICAgIHJldHVybiBzZXJ2aWNlID09PSB0aGlzLm9wdGlvbnMubmFtZTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIHNob3dEb2NrZXJMb2dzKHNlcnZpY2UpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRvY2tlciA9IHNwYXduKCdkb2NrZXInLCBbJ2xvZ3MnLCAnLWYnLCAnLW4nLCAnNTAwMCcsIHNlcnZpY2VdLCB7IHN0ZGlvOiAnaW5oZXJpdCcgfSk7XG4gICAgICAgICAgICBkb2NrZXIub24oJ2V4aXQnLCAoY29kZSkgPT4gKGNvZGUgPT09IDApID8gcmVzb2x2ZSgpIDogcmVqZWN0KG5ldyBFcnJvcihgRG9ja2VyIGV4aXRlZCB3aXRoIGNvZGUgJHtjb2RlfWApKSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsImltcG9ydCB7IE1TU1FMT3B0aW9ucyB9IGZyb20gJy4uL3R5cGVzL0RhdGFiYXNlJztcbmltcG9ydCB7IEJhc2UgfSBmcm9tICcuL2Jhc2UnO1xuZXhwb3J0IGNsYXNzIE1TU1FMIGV4dGVuZHMgQmFzZSB7XG4gICAgb3B0aW9ucztcbiAgICBnZXQgdXJsKCkge1xuICAgICAgICByZXR1cm4gYGpkYmM6c3Fsc2VydmVyOi8vZGI6JHt0aGlzLm9wdGlvbnMucG9ydH07ZGF0YWJhc2VOYW1lPSR7dGhpcy5vcHRpb25zLmRhdGFiYXNlfTt0cnVzdFNlcnZlckNlcnRpZmljYXRlPXRydWVgO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zID0gTVNTUUxPcHRpb25zLnBhcnNlKHt9KSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3RlY3RlZCBNZXRob2RzXG4gICAgYXN5bmMgb25EYXRhYmFzZVJlYWR5KCkge1xuICAgICAgICBhd2FpdCB0aGlzLnJ1bihgQ1JFQVRFIERBVEFCQVNFICR7dGhpcy5vcHRpb25zLmRhdGFiYXNlfWApO1xuICAgICAgICBhd2FpdCB0aGlzLnJ1bihgQUxURVIgREFUQUJBU0UgJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9IENPTExBVEUgU1FMX0xhdGluMV9HZW5lcmFsX0NQMV9DU19BU2ApO1xuICAgICAgICBhd2FpdCB0aGlzLnJ1bihgQUxURVIgREFUQUJBU0UgJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9IFNFVCBSRUFEX0NPTU1JVFRFRF9TTkFQU0hPVCBPTiBXSVRIIFJPTExCQUNLIElNTUVESUFURTtgKTtcbiAgICB9XG4gICAgZ2V0U2VydmljZSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGltYWdlOiBgbWNyLm1pY3Jvc29mdC5jb20vbXNzcWwvc2VydmVyOiR7dGhpcy5vcHRpb25zLnRhZ31gLFxuICAgICAgICAgICAgcG9ydHM6IFtgJHt0aGlzLm9wdGlvbnMucG9ydCB8fCAxNDMzfToxNDMzYF0sXG4gICAgICAgICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAgICAgICAgIEFDQ0VQVF9FVUxBOiAneScsXG4gICAgICAgICAgICAgICAgTVNTUUxfU0FfUEFTU1dPUkQ6IHRoaXMub3B0aW9ucy5wYXNzd29yZCB8fCAnZGNkeCcsXG4gICAgICAgICAgICAgICAgTVNTUUxfUElEOiB0aGlzLm9wdGlvbnMuZWRpdGlvblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5ldHdvcmtzOiB7XG4gICAgICAgICAgICAgICAgJ3NoYXJlZCc6IHtcbiAgICAgICAgICAgICAgICAgICAgYWxpYXNlczogWydkYicsICdkYXRhYmFzZSddXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG59XG4iLCJpbXBvcnQgeyBNeVNRTE9wdGlvbnMgfSBmcm9tICcuLi90eXBlcy9EYXRhYmFzZSc7XG5pbXBvcnQgeyBCYXNlIH0gZnJvbSAnLi9iYXNlJztcbmV4cG9ydCBjbGFzcyBNeVNRTCBleHRlbmRzIEJhc2Uge1xuICAgIG9wdGlvbnM7XG4gICAgZ2V0IHVybCgpIHtcbiAgICAgICAgcmV0dXJuIGBqZGJjOm15c3FsOi8vZGI6JHt0aGlzLm9wdGlvbnMucG9ydH0vJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9P3Nlc3Npb25WYXJpYWJsZXM9dHJhbnNhY3Rpb25faXNvbGF0aW9uPSdSRUFELUNPTU1JVFRFRCdgO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zID0gTXlTUUxPcHRpb25zLnBhcnNlKHt9KSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3RlY3RlZCBNZXRob2RzXG4gICAgYXN5bmMgb25EYXRhYmFzZVJlYWR5KCkge1xuICAgICAgICBhd2FpdCB0aGlzLnJ1bihgQUxURVIgREFUQUJBU0UgJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9IENIQVJBQ1RFUiBTRVQgJ3V0ZjhtYjQnIENPTExBVEUgdXRmOG1iNF9iaW5gKTtcbiAgICB9XG4gICAgZ2V0U2VydmljZSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGltYWdlOiBgbXlzcWw6JHt0aGlzLm9wdGlvbnMudGFnfWAsXG4gICAgICAgICAgICBwb3J0czogW2Ake3RoaXMub3B0aW9ucy5wb3J0IHx8IDMzMDZ9OjMzMDZgXSxcbiAgICAgICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgICAgICAgTVlTUUxfUk9PVF9QQVNTV09SRDogdGhpcy5vcHRpb25zLnBhc3N3b3JkIHx8ICdkY2R4JyxcbiAgICAgICAgICAgICAgICBNWVNRTF9VU0VSOiB0aGlzLm9wdGlvbnMudXNlcm5hbWUgfHwgJ2RjZHgnLFxuICAgICAgICAgICAgICAgIE1ZU1FMX1BBU1NXT1JEOiB0aGlzLm9wdGlvbnMucGFzc3dvcmQgfHwgJ2RjZHgnLFxuICAgICAgICAgICAgICAgIE1ZU1FMX0RBVEFCQVNFOiB0aGlzLm9wdGlvbnMuZGF0YWJhc2UgfHwgJ2RjZHgnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29tbWFuZDogWyctLWxvZ19iaW5fdHJ1c3RfZnVuY3Rpb25fY3JlYXRvcnM9MSddLFxuICAgICAgICAgICAgbmV0d29ya3M6IHtcbiAgICAgICAgICAgICAgICAnc2hhcmVkJzoge1xuICAgICAgICAgICAgICAgICAgICBhbGlhc2VzOiBbJ2RiJywgJ2RhdGFiYXNlJ11cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfTtcbn1cbiIsImltcG9ydCB7IFBvc3RncmVTUUxPcHRpb25zIH0gZnJvbSAnLi4vdHlwZXMvRGF0YWJhc2UnO1xuaW1wb3J0IHsgQmFzZSB9IGZyb20gJy4vYmFzZSc7XG5leHBvcnQgY2xhc3MgUG9zdGdyZXMgZXh0ZW5kcyBCYXNlIHtcbiAgICBvcHRpb25zO1xuICAgIGdldCB1cmwoKSB7XG4gICAgICAgIHJldHVybiBgamRiYzpwb3N0Z3Jlc3FsOi8vZGI6JHt0aGlzLm9wdGlvbnMucG9ydH0vJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9YDtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9yXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucyA9IFBvc3RncmVTUUxPcHRpb25zLnBhcnNlKHt9KSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3RlY3RlZCBNZXRob2RzXG4gICAgZ2V0U2VydmljZSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGltYWdlOiBgcG9zdGdyZXM6JHt0aGlzLm9wdGlvbnMudGFnfWAsXG4gICAgICAgICAgICBwb3J0czogW2Ake3RoaXMub3B0aW9ucy5wb3J0IHx8IDU0MzJ9OjU0MzJgXSxcbiAgICAgICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgICAgICAgUE9TVEdSRVNfVVNFUjogdGhpcy5vcHRpb25zLnVzZXJuYW1lIHx8ICdkY2R4JyxcbiAgICAgICAgICAgICAgICBQT1NUR1JFU19QQVNTV09SRDogdGhpcy5vcHRpb25zLnBhc3N3b3JkIHx8ICdkY2R4JyxcbiAgICAgICAgICAgICAgICBQT1NUR1JFU19EQjogdGhpcy5vcHRpb25zLmRhdGFiYXNlIHx8ICdkY2R4JyxcbiAgICAgICAgICAgICAgICBQT1NUR1JFU19IT1NUX0FVVEhfTUVUSE9EOiAnbWQ1JyxcbiAgICAgICAgICAgICAgICBQT1NUR1JFU19JTklUREJfQVJHUzogJy0tZW5jb2Rpbmc9VVRGLTggLS1sYy1jb2xsYXRlPUMgLS1sYy1jdHlwZT1DJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5ldHdvcmtzOiB7XG4gICAgICAgICAgICAgICAgJ3NoYXJlZCc6IHtcbiAgICAgICAgICAgICAgICAgICAgYWxpYXNlczogWydkYicsICdkYXRhYmFzZSddXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG59XG4iLCJpbXBvcnQgeyBNU1NRTCB9IGZyb20gJy4uL2RhdGFiYXNlcy9tc3NxbCc7XG5pbXBvcnQgeyBNeVNRTCB9IGZyb20gJy4uL2RhdGFiYXNlcy9teXNxbCc7XG5pbXBvcnQgeyBQb3N0Z3JlcyB9IGZyb20gJy4uL2RhdGFiYXNlcy9wb3N0Z3Jlcyc7XG5pbXBvcnQgeyBNU1NRTE9wdGlvbnMsIE15U1FMT3B0aW9ucywgUG9zdGdyZVNRTE9wdGlvbnMsIFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcyB9IGZyb20gJy4uL3R5cGVzL0RhdGFiYXNlJztcbmV4cG9ydCBjb25zdCBnZXREYXRhYmFzZUVuZ2luZSA9IChvcHRpb25zLCB0YWcpID0+IHtcbiAgICBzd2l0Y2ggKG9wdGlvbnMubmFtZSkge1xuICAgICAgICBjYXNlIFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbDpcbiAgICAgICAgICAgIHJldHVybiBuZXcgUG9zdGdyZXMoUG9zdGdyZVNRTE9wdGlvbnMucGFyc2UoeyAuLi5vcHRpb25zLCB0YWcgfSkpO1xuICAgICAgICBjYXNlIFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXlzcWw6XG4gICAgICAgICAgICByZXR1cm4gbmV3IE15U1FMKE15U1FMT3B0aW9ucy5wYXJzZSh7IC4uLm9wdGlvbnMsIHRhZyB9KSk7XG4gICAgICAgIGNhc2UgU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5tc3NxbDpcbiAgICAgICAgICAgIHJldHVybiBuZXcgTVNTUUwoTVNTUUxPcHRpb25zLnBhcnNlKHsgLi4ub3B0aW9ucywgdGFnIH0pKTtcbiAgICB9XG59O1xuIiwiaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7XG5leHBvcnQgY29uc3QgZ2V0Wm9kRGVmYXVsdCA9IChzY2hlbWEsIGtleSkgPT4ge1xuICAgIGNvbnN0IGRlZmF1bHRzID0gZ2V0Wm9kRGVmYXVsdHMoc2NoZW1hKTtcbiAgICByZXR1cm4gZGVmYXVsdHNba2V5XTtcbn07XG4vLyBDb2RlIHNuaXBwZXQgYnkgSmFjb2IgV2Vpc2VuYnVyZ2VyIChodHRwczovL2dpdGh1Yi5jb20vSmFjb2JXZWlzZW5idXJnZXIpXG4vLyBUYWtlbiBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9jb2xpbmhhY2tzL3pvZC9kaXNjdXNzaW9ucy8xOTUzI2Rpc2N1c3Npb25jb21tZW50LTQ4MTE1ODhcbmV4cG9ydCBjb25zdCBnZXRab2REZWZhdWx0cyA9IChzY2hlbWEpID0+IHtcbiAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHNjaGVtYS5zaGFwZSkuZmlsdGVyKChbLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2Ygei5ab2REZWZhdWx0KSB7XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSB2YWx1ZS5fZGVmLmRlZmF1bHRWYWx1ZSgpO1xuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgZGVmYXVsdFZhbHVlICE9PSAndW5kZWZpbmVkJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSkubWFwKChba2V5LCB2YWx1ZV0pID0+IChba2V5LCB2YWx1ZS5fZGVmLmRlZmF1bHRWYWx1ZSgpXSkpKTtcbn07XG4iLCJpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB7IGRvd25BbGwsIGxvZ3MsIHBzLCBzdG9wLCB1cEFsbCB9IGZyb20gJ2RvY2tlci1jb21wb3NlL2Rpc3QvdjIuanMnO1xuaW1wb3J0IHsgZ3JhY2VmdWxFeGl0IH0gZnJvbSAnZXhpdC1ob29rJztcbmltcG9ydCB7IGV4aXN0c1N5bmMsIG1rZGlyU3luYyB9IGZyb20gJ2ZzJztcbmltcG9ydCB7IGR1bXAgfSBmcm9tICdqcy15YW1sJztcbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tICdvcyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBhcmNoLCBjd2QgfSBmcm9tICdwcm9jZXNzJztcbmltcG9ydCBzZW12ZXIgZnJvbSAnc2VtdmVyJztcbmltcG9ydCBzaW1wbGVHaXQgZnJvbSAnc2ltcGxlLWdpdCc7XG5pbXBvcnQgeyBnZXREYXRhYmFzZUVuZ2luZSB9IGZyb20gJy4uL2hlbHBlcnMvZ2V0RGF0YWJhc2VFbmdpbmUnO1xuaW1wb3J0IHsgZ2V0Wm9kRGVmYXVsdHMgfSBmcm9tICcuLi9oZWxwZXJzL2dldFpvZERlZmF1bHRzJztcbmltcG9ydCB7IG5ldHdvcmsgfSBmcm9tICcuLi9oZWxwZXJzL25ldHdvcmsnO1xuaW1wb3J0IHsgRGF0YWJhc2VPcHRpb25zLCBNU1NRTE9wdGlvbnMsIE15U1FMT3B0aW9ucywgUG9zdGdyZVNRTE9wdGlvbnMsIFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcyB9IGZyb20gJy4uL3R5cGVzL0RhdGFiYXNlJztcbmNvbnN0IGJhc2VkaXIgPSBqb2luKGhvbWVkaXIoKSwgJy5kY2R4Jyk7XG5leHBvcnQgY2xhc3MgQmFzZSB7XG4gICAgb3B0aW9ucztcbiAgICBkYXRhYmFzZTtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgICAgIHRoaXMuZGF0YWJhc2UgPSB0aGlzLmdldERhdGFiYXNlRW5naW5lKG9wdGlvbnMuZGF0YWJhc2UsIG9wdGlvbnMuZGF0YWJhc2VUYWcpO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJvcGVydGllc1xuICAgIGdldCBiYXNlVXJsKCkge1xuICAgICAgICBsZXQgYmFzZVVybCA9IGBodHRwOi8vbG9jYWxob3N0YDtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5wb3J0KSB7XG4gICAgICAgICAgICBiYXNlVXJsICs9IGA6JHt0aGlzLm9wdGlvbnMucG9ydH1gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuY29udGV4dFBhdGggPyBgJHtiYXNlVXJsfS8ke3RoaXMub3B0aW9ucy5jb250ZXh0UGF0aH1gIDogYmFzZVVybDtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFB1YmxpYyBNZXRob2RzXG4gICAgYXN5bmMgc3RhcnQoKSB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuY2xlYW4pIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZG93bigpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzQnVpZFJlcXVpcmVkKCkpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuYnVpbGQodGhpcy5vcHRpb25zLnRhZyk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5kYXRhYmFzZS5zdGFydCh0aGlzLm9wdGlvbnMuY2xlYW4pO1xuICAgICAgICBhd2FpdCB0aGlzLnVwKCk7XG4gICAgfVxuICAgIGFzeW5jIHN0b3AoKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuZGF0YWJhc2Uuc3RvcCh0aGlzLm9wdGlvbnMucHJ1bmUpO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnBydW5lKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmRvd24oKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZ0FzU3RyaW5nID0gZHVtcCh0aGlzLmdldERvY2tlckNvbXBvc2VDb25maWcoKSk7XG4gICAgICAgICAgICBhd2FpdCBzdG9wKHtcbiAgICAgICAgICAgICAgICBjd2Q6IHRoaXMub3B0aW9ucy5jd2QgfHwgY3dkKCksXG4gICAgICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICAgICAgbG9nOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyByZXNldCgpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5kYXRhYmFzZS5zdG9wKHRydWUpO1xuICAgICAgICBhd2FpdCB0aGlzLmRvd24oKTtcbiAgICB9XG4gICAgZ2V0SlZNQXJncygpIHtcbiAgICAgICAgY29uc3QgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUyA9IFtdO1xuICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1EdXBtLnBsdWdpbi51cGxvYWQuZW5hYmxlZD10cnVlJyk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGVidWcpIHtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLURqaXJhLmRldi5tb2RlPXRydWUnKTtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLURhdGxhc3NpYW4uZGV2Lm1vZGU9dHJ1ZScpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMud2F0Y2gpIHtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLURxdWlja3JlbG9hZC5kaXJzPS9vcHQvcXVpY2tyZWxvYWQnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUztcbiAgICB9XG4gICAgYXN5bmMgaXNBcHBsaWNhdGlvblJlYWR5KCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5nZXQoYCR7dGhpcy5iYXNlVXJsfS9zdGF0dXNgLCB7IHZhbGlkYXRlU3RhdHVzOiAoKSA9PiB0cnVlIH0pO1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnN0YXRlID09PSAnRklSU1RfUlVOJyB8fCBkYXRhLnN0YXRlID09PSAnUlVOTklORycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBUaGUgYXBwbGljYXRpb24gJHt0aGlzLm5hbWV9IGlzIHJlYWR5IG9uICR7dGhpcy5iYXNlVXJsfSDwn46JYCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0RGF0YWJhc2VFbmdpbmUobmFtZSwgdGFnKSB7XG4gICAgICAgIHJldHVybiBnZXREYXRhYmFzZUVuZ2luZShEYXRhYmFzZU9wdGlvbnMucGFyc2Uoe1xuICAgICAgICAgICAgLi4udGhpcy5nZXREZWZhdWx0T3B0aW9ucyhuYW1lKSxcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICBjd2Q6IHRoaXMub3B0aW9ucy5jd2RcbiAgICAgICAgfSksIHRhZyk7XG4gICAgfVxuICAgIGdldERvY2tlckJhc2VUYWcoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzQnVpZFJlcXVpcmVkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBgZGNkeC8ke3RoaXMubmFtZX06JHt0aGlzLm9wdGlvbnMudGFnfWA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5uYW1lID09PSAnamlyYScpIHtcbiAgICAgICAgICAgIHJldHVybiBgYXRsYXNzaWFuL2ppcmEtc29mdHdhcmU6JHt0aGlzLm9wdGlvbnMudGFnfWA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYGF0bGFzc2lhbi8ke3RoaXMubmFtZX06JHt0aGlzLm9wdGlvbnMudGFnfWA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByaXZhdGUgTWV0aG9kc1xuICAgIGdldERvY2tlckNvbXBvc2VDb25maWcoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzZXJ2aWNlczoge1xuICAgICAgICAgICAgICAgIFt0aGlzLm5hbWVdOiB0aGlzLmdldFNlcnZpY2UoKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5ldHdvcmtzOiB7XG4gICAgICAgICAgICAgICAgJ3NoYXJlZCc6IG5ldHdvcmtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG4gICAgYXN5bmMgdXAoKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpO1xuICAgICAgICBjb25zdCBjb25maWdBc1N0cmluZyA9IGR1bXAoY29uZmlnKTtcbiAgICAgICAgYXdhaXQgdXBBbGwoe1xuICAgICAgICAgICAgY3dkOiB0aGlzLm9wdGlvbnMuY3dkIHx8IGN3ZCgpLFxuICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICBsb2c6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBpc0F2YWlsYWJsZSA9IGF3YWl0IHRoaXMud2FpdFVudGlsUmVhZHkoKTtcbiAgICAgICAgaWYgKCFpc0F2YWlsYWJsZSkge1xuICAgICAgICAgICAgY29uc3Qgc2VydmljZSA9IGF3YWl0IHRoaXMuZ2V0U2VydmljZVN0YXRlKCk7XG4gICAgICAgICAgICBjb25zdCBpc1J1bm5pbmcgPSBzZXJ2aWNlICYmIHNlcnZpY2Uuc3RhdGUudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCd1cCcpO1xuICAgICAgICAgICAgaWYgKCFpc1J1bm5pbmcpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgRmFpbGVkIHRvIHN0YXJ0ICR7dGhpcy5uYW1lfSDim5RgKTtcbiAgICAgICAgICAgICAgICBhd2FpdCBsb2dzKE9iamVjdC5rZXlzKGNvbmZpZy5zZXJ2aWNlcyksIHtcbiAgICAgICAgICAgICAgICAgICAgY3dkOiB0aGlzLm9wdGlvbnMuY3dkIHx8IGN3ZCgpLFxuICAgICAgICAgICAgICAgICAgICBjb25maWdBc1N0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgbG9nOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgQ291bGQgbm90IGNvbmZpcm0gc3RhdGUgb2YgJHt0aGlzLm5hbWV9LCBidXQgdGhlIGNvbnRhaW5lciBpcyBydW5uaW5nLiBQbGVhc2UgY29uc3VsdCB0aGUgYXBwbGljYXRpb24gbG9ncyDwn5GHYCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy50YWlsQXBwbGljYXRpb25Mb2dzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnRhaWxBcHBsaWNhdGlvbkxvZ3MoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBXZSBhcmUgZXhpdGluZyB3aXRoIGFuIGVycm9yIGNvZGVcbiAgICAgICAgLy8gVGhpcyBpcyB0byB0cmlnZ2VyIGEgZ3JhY2VmdWwgc2h1dCBkb3duIG9mIHRoZSBhcHBsaWNhdGlvblxuICAgICAgICBncmFjZWZ1bEV4aXQoMSk7XG4gICAgfVxuICAgIGFzeW5jIGRvd24oKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ0FzU3RyaW5nID0gZHVtcCh0aGlzLmdldERvY2tlckNvbXBvc2VDb25maWcoKSk7XG4gICAgICAgIGF3YWl0IGRvd25BbGwoe1xuICAgICAgICAgICAgY3dkOiB0aGlzLm9wdGlvbnMuY3dkIHx8IGN3ZCgpLFxuICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICBjb21tYW5kT3B0aW9uczogWyctdicsICctLXJlbW92ZS1vcnBoYW5zJywgJy0tcm1pJywgJ2xvY2FsJ10sXG4gICAgICAgICAgICBsb2c6IHRydWVcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIGdldFNlcnZpY2VTdGF0ZSgpIHtcbiAgICAgICAgY29uc3QgY29uZmlnQXNTdHJpbmcgPSBkdW1wKHRoaXMuZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcHMoe1xuICAgICAgICAgICAgY3dkOiB0aGlzLm9wdGlvbnMuY3dkIHx8IGN3ZCgpLFxuICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICBjb21tYW5kT3B0aW9uczogWyctLWFsbCddLFxuICAgICAgICAgICAgbG9nOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdC5kYXRhLnNlcnZpY2VzLmZpbmQoaXRlbSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYXJ0cyA9IGl0ZW0ubmFtZS5zcGxpdCgnLScpO1xuICAgICAgICAgICAgY29uc3Qgc2VydmljZSA9IHBhcnRzW3BhcnRzLmxlbmd0aCAtIDJdO1xuICAgICAgICAgICAgcmV0dXJuIHNlcnZpY2UgPT09IHRoaXMubmFtZTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIHdhaXRVbnRpbFJlYWR5KGNvdW50ID0gMCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgV2FpdGluZyBmb3IgJHt0aGlzLm5hbWV9IHRvIGJlY29tZSBhdmFpbGFibGUuLi4gJHtjb3VudH1zYCk7XG4gICAgICAgIGNvbnN0IHNlcnZpY2UgPSBhd2FpdCB0aGlzLmdldFNlcnZpY2VTdGF0ZSgpO1xuICAgICAgICBpZiAoc2VydmljZSkge1xuICAgICAgICAgICAgY29uc3QgaXNSdW5uaW5nID0gc2VydmljZSAmJiBzZXJ2aWNlLnN0YXRlLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgndXAnKTtcbiAgICAgICAgICAgIGNvbnN0IGlzUmVhZHkgPSBpc1J1bm5pbmcgJiYgYXdhaXQgdGhpcy5pc0FwcGxpY2F0aW9uUmVhZHkoKTtcbiAgICAgICAgICAgIGlmIChpc1JlYWR5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjb3VudCA+PSAxMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMTAwMCkpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMud2FpdFVudGlsUmVhZHkoY291bnQgKyAxKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjb3VudCA8IDEwKSB7XG4gICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMTAwMCkpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMud2FpdFVudGlsUmVhZHkoY291bnQgKyAxKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpc0J1aWRSZXF1aXJlZCgpIHtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy50YWcudG9Mb3dlckNhc2UoKSA9PT0gJ2xhdGVzdCcpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXJjaCA9PT0gJ2FybScgfHwgYXJjaCA9PT0gJ2FybTY0Jykge1xuICAgICAgICAgICAgY29uc3QgdmVyc2lvbiA9IHRoaXMub3B0aW9ucy50YWcuaW5jbHVkZXMoJy0nKVxuICAgICAgICAgICAgICAgID8gdGhpcy5vcHRpb25zLnRhZy5zbGljZSgwLCB0aGlzLm9wdGlvbnMudGFnLmluZGV4T2YoJy0nKSlcbiAgICAgICAgICAgICAgICA6IHRoaXMub3B0aW9ucy50YWc7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbVZlclZlcnNpb24gPSBzZW12ZXIuY29lcmNlKHZlcnNpb24pO1xuICAgICAgICAgICAgICAgIGlmIChzZW1WZXJWZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgPT09ICdqaXJhJyB8fCB0aGlzLm5hbWUgPT09ICdiYW1ib28nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VtdmVyLmx0KHNlbVZlclZlcnNpb24sICc5LjAuMCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubmFtZSA9PT0gJ2NvbmZsdWVuY2UnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VtdmVyLmx0KHNlbVZlclZlcnNpb24sICc4LjAuMCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubmFtZSA9PT0gJ2JpdGJ1Y2tldCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZW12ZXIubHQoc2VtVmVyVmVyc2lvbiwgJzguMi4wJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGFzeW5jIGJ1aWxkKHZlcnNpb24pIHtcbiAgICAgICAgY29uc3QgcmVwb3NpdG9yeVVybCA9IHRoaXMuZ2V0RG9ja2VyUmVwb3NpdG9yeVVybCgpO1xuICAgICAgICBjb25zdCBjaGVja291dFBhdGggPSBqb2luKGJhc2VkaXIsIHRoaXMubmFtZSwgJ3NvdXJjZScpO1xuICAgICAgICBpZiAoIWV4aXN0c1N5bmMoY2hlY2tvdXRQYXRoKSkge1xuICAgICAgICAgICAgbWtkaXJTeW5jKGpvaW4oYmFzZWRpciwgdGhpcy5uYW1lKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICAgICAgICBhd2FpdCBzaW1wbGVHaXQoKS5jbG9uZShyZXBvc2l0b3J5VXJsLCBjaGVja291dFBhdGgsIHsgJy0tcmVjdXJzZS1zdWJtb2R1bGUnOiBudWxsIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgYXdhaXQgc2ltcGxlR2l0KHsgYmFzZURpcjogY2hlY2tvdXRQYXRoIH0pLnB1bGwoeyAnLS1yZWN1cnNlLXN1Ym1vZHVsZSc6IG51bGwgfSk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZG9ja2VyID0gc3Bhd24oJ2RvY2tlcicsIFsnYnVpbGQnLCAnLXQnLCBgZGNkeC8ke3RoaXMubmFtZX06JHt2ZXJzaW9ufWAsICctLWJ1aWxkLWFyZycsIGAke3RoaXMubmFtZS50b1VwcGVyQ2FzZSgpfV9WRVJTSU9OPSR7dmVyc2lvbn1gLCAnLiddLCB7IGN3ZDogY2hlY2tvdXRQYXRoLCBzdGRpbzogJ2luaGVyaXQnIH0pO1xuICAgICAgICAgICAgZG9ja2VyLm9uKCdleGl0JywgKGNvZGUpID0+IChjb2RlID09PSAwKSA/IHJlc29sdmUoKSA6IHJlamVjdChuZXcgRXJyb3IoYERvY2tlciBleGl0ZWQgd2l0aCBjb2RlICR7Y29kZX1gKSkpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZ2V0RG9ja2VyUmVwb3NpdG9yeVVybCgpIHtcbiAgICAgICAgY29uc3Qgc3VmZml4ID0gdGhpcy5uYW1lID09PSAnamlyYSdcbiAgICAgICAgICAgID8gJ2F0bGFzc2lhbi1qaXJhJ1xuICAgICAgICAgICAgOiB0aGlzLm5hbWUgPT09ICdiYW1ib28nXG4gICAgICAgICAgICAgICAgPyBgJHt0aGlzLm5hbWV9LXNlcnZlcmBcbiAgICAgICAgICAgICAgICA6IGBhdGxhc3NpYW4tJHt0aGlzLm5hbWV9LXNlcnZlcmA7XG4gICAgICAgIHJldHVybiBgaHR0cHM6Ly9iaXRidWNrZXQub3JnL2F0bGFzc2lhbi1kb2NrZXIvZG9ja2VyLSR7c3VmZml4fS5naXRgO1xuICAgIH1cbiAgICBhc3luYyB0YWlsQXBwbGljYXRpb25Mb2dzKCkge1xuICAgICAgICBjb25zdCBzZXJ2aWNlID0gYXdhaXQgdGhpcy5nZXRTZXJ2aWNlU3RhdGUoKTtcbiAgICAgICAgY29uc3QgaXNSdW5uaW5nID0gc2VydmljZSAmJiBzZXJ2aWNlLnN0YXRlLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgndXAnKTtcbiAgICAgICAgaWYgKGlzUnVubmluZykge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5zaG93QXBwbGljYXRpb25Mb2dzKHNlcnZpY2UubmFtZSkuY2F0Y2goKCkgPT4gbnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgc2hvd0FwcGxpY2F0aW9uTG9ncyhzZXJ2aWNlKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkb2NrZXIgPSBzcGF3bignZG9ja2VyJywgWydleGVjJywgJy1pJywgc2VydmljZSwgYHRhaWxgLCBgLUZgLCBgLW5gLCBgNTAwMGAsIHRoaXMubG9nRmlsZVBhdGhdLCB7IGN3ZDogdGhpcy5vcHRpb25zLmN3ZCB8fCBjd2QoKSwgc3RkaW86ICdpbmhlcml0JyB9KTtcbiAgICAgICAgICAgIGRvY2tlci5vbignZXhpdCcsIChjb2RlKSA9PiAoY29kZSA9PT0gMCkgPyByZXNvbHZlKCkgOiByZWplY3QobmV3IEVycm9yKGBEb2NrZXIgZXhpdGVkIHdpdGggY29kZSAke2NvZGV9YCkpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGdldERlZmF1bHRPcHRpb25zKG5hbWUpIHtcbiAgICAgICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICAgICAgICBjYXNlIFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbDpcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0Wm9kRGVmYXVsdHMoUG9zdGdyZVNRTE9wdGlvbnMpO1xuICAgICAgICAgICAgY2FzZSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm15c3FsOlxuICAgICAgICAgICAgICAgIHJldHVybiBnZXRab2REZWZhdWx0cyhNeVNRTE9wdGlvbnMpO1xuICAgICAgICAgICAgY2FzZSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm1zc3FsOlxuICAgICAgICAgICAgICAgIHJldHVybiBnZXRab2REZWZhdWx0cyhNU1NRTE9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IHRpbWVib21iIH0gZnJvbSAnLi4vaGVscGVycy9saWNlbmNlcyc7XG5pbXBvcnQgeyB0b0Fic29sdXRlUGF0aCB9IGZyb20gJy4uL2hlbHBlcnMvdG9BYnNvbHV0ZVBhdGgnO1xuaW1wb3J0IHsgU3VwcG9ydGVkQXBwbGljYXRpb25zIH0gZnJvbSAnLi4vdHlwZXMvQXBwbGljYXRpb24nO1xuaW1wb3J0IHsgQmFzZSB9IGZyb20gJy4vYmFzZSc7XG5leHBvcnQgY2xhc3MgQmFtYm9vIGV4dGVuZHMgQmFzZSB7XG4gICAgbmFtZSA9IFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYmFtYm9vO1xuICAgIGxvZ0ZpbGVQYXRoID0gJy92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYmFtYm9vL2xvZ3MvYXRsYXNzaWFuLWJhbWJvby5sb2cnO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm90ZWN0ZWQgTWV0aG9kc1xuICAgIGdldFNlcnZpY2UoKSB7XG4gICAgICAgIGNvbnN0IGVudmlyb25tZW50ID0gdGhpcy5nZXRFbnZpcm9ubWVudFZhcmlhYmxlcygpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnVpbGQ6IHtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB0b0Fic29sdXRlUGF0aCgnLi4vLi4vYXNzZXRzJyksXG4gICAgICAgICAgICAgICAgZG9ja2VyZmlsZV9pbmxpbmU6IGBcbkZST00gJHt0aGlzLmdldERvY2tlckJhc2VUYWcoKX1cbkNPUFkgLi9teXNxbC1jb25uZWN0b3Itai04LjMuMC5qYXIgL29wdC9hdGxhc3NpYW4vYmFtYm9vL2xpYi9teXNxbC1jb25uZWN0b3Itai04LjMuMC5qYXJcbkNPUFkgLi9xdWlja3JlbG9hZC01LjAuNC5qYXIgL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9iYW1ib28vc2hhcmVkL3BsdWdpbnMvcXVpY2tyZWxvYWQtNS4wLjQuamFyXG5SVU4gZWNobyBcIi9vcHQvcXVpY2tyZWxvYWRcIiA+IC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYmFtYm9vL3F1aWNrcmVsb2FkLnByb3BlcnRpZXM7IFxcXG4gICAgbWtkaXIgLXAgL29wdC9xdWlja3JlbG9hZDsgXFxcbiAgICBjaG93biAtUiBiYW1ib286YmFtYm9vIC9vcHQvcXVpY2tyZWxvYWQ7XG5cblJVTiBjaG93biAtUiBiYW1ib286YmFtYm9vIC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYmFtYm9vYFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBvcnRzOiBbXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5vcHRpb25zLnBvcnQgfHwgODB9OjgwODVgLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy5kZWJ1ZyA/IFsnNTAwNTo1MDA1J10gOiBbXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBlbnZpcm9ubWVudCxcbiAgICAgICAgICAgIG5ldHdvcmtzOiBbJ3NoYXJlZCddXG4gICAgICAgIH07XG4gICAgfVxuICAgIGdldEpWTUFyZ3MoKSB7XG4gICAgICAgIGNvbnN0IEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MgPSBzdXBlci5nZXRKVk1BcmdzKCk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGVidWcpIHtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLVhkZWJ1ZycpO1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctYWdlbnRsaWI6amR3cD10cmFuc3BvcnQ9ZHRfc29ja2V0LHNlcnZlcj15LHN1c3BlbmQ9bixhZGRyZXNzPTUwMDUnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUztcbiAgICB9XG4gICAgYXN5bmMgaXNBcHBsaWNhdGlvblJlYWR5KCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5nZXQoYCR7dGhpcy5iYXNlVXJsfS9zZXR1cC9zZXR1cEdlbmVyYWxDb25maWd1cmF0aW9uLmFjdGlvbmAsIHsgdmFsaWRhdGVTdGF0dXM6ICgpID0+IHRydWUgfSk7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2U/LnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFRoZSBhcHBsaWNhdGlvbiAke3RoaXMubmFtZX0gaXMgcmVhZHkgb24gJHt0aGlzLmJhc2VVcmx9IPCfjolgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByaXZhdGUgTWV0aG9kc1xuICAgIGdldEVudmlyb25tZW50VmFyaWFibGVzKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLmNvbnRleHRQYXRoID8geyAnQVRMX1RPTUNBVF9DT05URVhUUEFUSCc6IHRoaXMub3B0aW9ucy5jb250ZXh0UGF0aCB9IDogJycsXG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMueG1zID8geyAnSlZNX01JTklNVU1fTUVNT1JZJzogdGhpcy5vcHRpb25zLnhtcyB9IDogJycsXG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMueG14ID8geyAnSlZNX01BWElNVU1fTUVNT1JZJzogdGhpcy5vcHRpb25zLnhteCB9IDogJycsXG4gICAgICAgICAgICAnSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUyc6IHRoaXMuZ2V0SlZNQXJncygpLmpvaW4oJyAnKSxcbiAgICAgICAgICAgICdBVExfQkFNQk9PX0VOQUJMRV9VTkFUVEVOREVEX1NFVFVQJzogJ3RydWUnLFxuICAgICAgICAgICAgJ0FUTF9MSUNFTlNFJzogdGltZWJvbWIuYmFtYm9vLFxuICAgICAgICAgICAgJ0FUTF9KREJDX1VSTCc6IHRoaXMuZGF0YWJhc2UudXJsLFxuICAgICAgICAgICAgJ0FUTF9KREJDX1VTRVInOiB0aGlzLmRhdGFiYXNlLm9wdGlvbnMudXNlcm5hbWUsXG4gICAgICAgICAgICAnQVRMX0pEQkNfUEFTU1dPUkQnOiB0aGlzLmRhdGFiYXNlLm9wdGlvbnMucGFzc3dvcmQsXG4gICAgICAgICAgICAnQVRMX0RCX1RZUEUnOiBgJHt0aGlzLmRhdGFiYXNlLm9wdGlvbnMubmFtZX1gLFxuICAgICAgICB9O1xuICAgIH1cbiAgICA7XG59XG4iLCJpbXBvcnQgeyB0aW1lYm9tYiB9IGZyb20gJy4uL2hlbHBlcnMvbGljZW5jZXMnO1xuaW1wb3J0IHsgdG9BYnNvbHV0ZVBhdGggfSBmcm9tICcuLi9oZWxwZXJzL3RvQWJzb2x1dGVQYXRoJztcbmltcG9ydCB7IFN1cHBvcnRlZEFwcGxpY2F0aW9ucyB9IGZyb20gJy4uL3R5cGVzL0FwcGxpY2F0aW9uJztcbmltcG9ydCB7IEJhc2UgfSBmcm9tICcuL2Jhc2UnO1xuZXhwb3J0IGNsYXNzIEJpdGJ1Y2tldCBleHRlbmRzIEJhc2Uge1xuICAgIG5hbWUgPSBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJpdGJ1Y2tldDtcbiAgICBsb2dGaWxlUGF0aCA9ICcvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2JpdGJ1Y2tldC9sb2cvYXRsYXNzaWFuLWJpdGJ1Y2tldC5sb2cnO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm90ZWN0ZWQgTWV0aG9kc1xuICAgIGdldFNlcnZpY2UoKSB7XG4gICAgICAgIGNvbnN0IGVudmlyb25tZW50ID0gdGhpcy5nZXRFbnZpcm9ubWVudFZhcmlhYmxlcygpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnVpbGQ6IHtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB0b0Fic29sdXRlUGF0aCgnLi4vLi4vYXNzZXRzJyksXG4gICAgICAgICAgICAgICAgZG9ja2VyZmlsZV9pbmxpbmU6IGBcbkZST00gJHt0aGlzLmdldERvY2tlckJhc2VUYWcoKX1cbkNPUFkgLi9xdWlja3JlbG9hZC01LjAuNC5qYXIgL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9iaXRidWNrZXQvcGx1Z2lucy9pbnN0YWxsZWQtcGx1Z2lucy9xdWlja3JlbG9hZC01LjAuNC5qYXJcbkNPUFkgLi9teXNxbC1jb25uZWN0b3Itai04LjMuMC5qYXIgL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9iaXRidWNrZXQvbGliL215c3FsLWNvbm5lY3Rvci1qLTguMy4wLmphclxuUlVOIGVjaG8gXCIvb3B0L3F1aWNrcmVsb2FkXCIgPiAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2JpdGJ1Y2tldC9xdWlja3JlbG9hZC5wcm9wZXJ0aWVzOyBcXFxuICAgIG1rZGlyIC1wIC9vcHQvcXVpY2tyZWxvYWQ7IFxcXG4gICAgY2hvd24gLVIgYml0YnVja2V0OmJpdGJ1Y2tldCAvb3B0L3F1aWNrcmVsb2FkO1xuXG5SVU4gbWtkaXIgLXAgL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9iaXRidWNrZXQvc2hhcmVkOyBcXFxuICAgIHRvdWNoIC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYml0YnVja2V0L3NoYXJlZC9iaXRidWNrZXQucHJvcGVydGllczsgXFxcbiAgICBlY2hvIFwic2V0dXAubGljZW5zZT0ke3RpbWVib21iLmJpdGJ1Y2tldH1cIiA+PiAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2JpdGJ1Y2tldC9zaGFyZWQvYml0YnVja2V0LnByb3BlcnRpZXM7XG5cblJVTiBjaG93biAtUiBiaXRidWNrZXQ6Yml0YnVja2V0IC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYml0YnVja2V0YFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBvcnRzOiBbXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5vcHRpb25zLnBvcnQgfHwgODB9Ojc5OTBgLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy5kZWJ1ZyA/IFsnNTAwNTo1MDA1J10gOiBbXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBlbnZpcm9ubWVudCxcbiAgICAgICAgICAgIG5ldHdvcmtzOiBbJ3NoYXJlZCddXG4gICAgICAgIH07XG4gICAgfVxuICAgIGdldEpWTUFyZ3MoKSB7XG4gICAgICAgIGNvbnN0IEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MgPSBzdXBlci5nZXRKVk1BcmdzKCk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGVidWcpIHtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLVhkZWJ1ZycpO1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctYWdlbnRsaWI6amR3cD10cmFuc3BvcnQ9ZHRfc29ja2V0LHNlcnZlcj15LHN1c3BlbmQ9bixhZGRyZXNzPTUwMDUnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUztcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByaXZhdGUgTWV0aG9kc1xuICAgIGdldEVudmlyb25tZW50VmFyaWFibGVzKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLnhtcyA/IHsgJ0pWTV9NSU5JTVVNX01FTU9SWSc6IHRoaXMub3B0aW9ucy54bXMgfSA6ICcnLFxuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLnhteCA/IHsgJ0pWTV9NQVhJTVVNX01FTU9SWSc6IHRoaXMub3B0aW9ucy54bXggfSA6ICcnLFxuICAgICAgICAgICAgJ0pWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MnOiB0aGlzLmdldEpWTUFyZ3MoKS5qb2luKCcgJyksXG4gICAgICAgICAgICAnSkRCQ19VUkwnOiB0aGlzLmRhdGFiYXNlLnVybCxcbiAgICAgICAgICAgICdKREJDX1VTRVInOiB0aGlzLmRhdGFiYXNlLm9wdGlvbnMudXNlcm5hbWUsXG4gICAgICAgICAgICAnSkRCQ19QQVNTV09SRCc6IHRoaXMuZGF0YWJhc2Uub3B0aW9ucy5wYXNzd29yZCxcbiAgICAgICAgICAgICdKREJDX0RSSVZFUic6IGAke3RoaXMuZGF0YWJhc2Uub3B0aW9ucy5kcml2ZXJ9YCxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgO1xufVxuIiwiaW1wb3J0IHsgdGltZWJvbWIgfSBmcm9tICcuLi9oZWxwZXJzL2xpY2VuY2VzJztcbmltcG9ydCB7IHRvQWJzb2x1dGVQYXRoIH0gZnJvbSAnLi4vaGVscGVycy90b0Fic29sdXRlUGF0aCc7XG5pbXBvcnQgeyBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMgfSBmcm9tICcuLi90eXBlcy9BcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBCYXNlIH0gZnJvbSAnLi9iYXNlJztcbmV4cG9ydCBjbGFzcyBDb25mbHVlbmNlIGV4dGVuZHMgQmFzZSB7XG4gICAgbmFtZSA9IFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuY29uZmx1ZW5jZTtcbiAgICBsb2dGaWxlUGF0aCA9ICcvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2NvbmZsdWVuY2UvbG9ncy9hdGxhc3NpYW4tY29uZmx1ZW5jZS5sb2cnO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm90ZWN0ZWQgTWV0aG9kc1xuICAgIGdldFNlcnZpY2UoKSB7XG4gICAgICAgIGNvbnN0IGVudmlyb25tZW50ID0gdGhpcy5nZXRFbnZpcm9ubWVudFZhcmlhYmxlcygpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnVpbGQ6IHtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB0b0Fic29sdXRlUGF0aCgnLi4vLi4vYXNzZXRzJyksXG4gICAgICAgICAgICAgICAgZG9ja2VyZmlsZV9pbmxpbmU6IGBcbkZST00gJHt0aGlzLmdldERvY2tlckJhc2VUYWcoKX1cbkNPUFkgLi9teXNxbC1jb25uZWN0b3Itai04LjMuMC5qYXIgL29wdC9hdGxhc3NpYW4vY29uZmx1ZW5jZS9jb25mbHVlbmNlL1dFQi1JTkYvbGliL215c3FsLWNvbm5lY3Rvci1qLTguMy4wLmphclxuQ09QWSAuL3F1aWNrcmVsb2FkLTUuMC40LmphciAvb3B0L2F0bGFzc2lhbi9jb25mbHVlbmNlL2NvbmZsdWVuY2UvV0VCLUlORi9hdGxhc3NpYW4tYnVuZGxlZC1wbHVnaW5zL3F1aWNrcmVsb2FkLTUuMC40LmphclxuUlVOIGVjaG8gXCIvb3B0L3F1aWNrcmVsb2FkXCIgPiAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2NvbmZsdWVuY2UvcXVpY2tyZWxvYWQucHJvcGVydGllczsgXFxcbiAgICBta2RpciAtcCAvb3B0L3F1aWNrcmVsb2FkOyBcXFxuICAgIGNob3duIC1SIGNvbmZsdWVuY2U6Y29uZmx1ZW5jZSAvb3B0L3F1aWNrcmVsb2FkO1xuXG5SVU4gY2hvd24gLVIgY29uZmx1ZW5jZTpjb25mbHVlbmNlIC9vcHQvYXRsYXNzaWFuL2NvbmZsdWVuY2VgXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcG9ydHM6IFtcbiAgICAgICAgICAgICAgICBgJHt0aGlzLm9wdGlvbnMucG9ydCB8fCA4MH06ODA5MGAsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLmRlYnVnID8gWyc1MDA1OjUwMDUnXSA6IFtdLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGVudmlyb25tZW50LFxuICAgICAgICAgICAgbmV0d29ya3M6IFsnc2hhcmVkJ11cbiAgICAgICAgfTtcbiAgICB9XG4gICAgZ2V0SlZNQXJncygpIHtcbiAgICAgICAgY29uc3QgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUyA9IHN1cGVyLmdldEpWTUFyZ3MoKTtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5kZWJ1Zykge1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctWGRlYnVnJyk7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1YcnVuamR3cDp0cmFuc3BvcnQ9ZHRfc29ja2V0LGFkZHJlc3M9Kjo1MDA1LHNlcnZlcj15LHN1c3BlbmQ9bicpO1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctRGNvbS5zdW4ubWFuYWdlbWVudC5qbXhyZW1vdGUucG9ydD05OTk5Jyk7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1EY29tLnN1bi5tYW5hZ2VtZW50LmpteHJlbW90ZS5ybWkucG9ydD05OTk4Jyk7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1EY29tLnN1bi5tYW5hZ2VtZW50LmpteHJlbW90ZS5hdXRoZW50aWNhdGU9ZmFsc2UnKTtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLURjb20uc3VuLm1hbmFnZW1lbnQuam14cmVtb3RlLnNzbD1mYWxzZScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJpdmF0ZSBNZXRob2RzXG4gICAgZ2V0RW52aXJvbm1lbnRWYXJpYWJsZXMoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMuY29udGV4dFBhdGggPyB7ICdBVExfVE9NQ0FUX0NPTlRFWFRQQVRIJzogdGhpcy5vcHRpb25zLmNvbnRleHRQYXRoIH0gOiAnJyxcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy54bXMgPyB7ICdKVk1fTUlOSU1VTV9NRU1PUlknOiB0aGlzLm9wdGlvbnMueG1zIH0gOiAnJyxcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy54bXggPyB7ICdKVk1fTUFYSU1VTV9NRU1PUlknOiB0aGlzLm9wdGlvbnMueG14IH0gOiAnJyxcbiAgICAgICAgICAgICdKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTJzogdGhpcy5nZXRKVk1BcmdzKCkuam9pbignICcpLFxuICAgICAgICAgICAgJ0FUTF9MSUNFTlNFX0tFWSc6IHRpbWVib21iLmNvbmZsdWVuY2UsXG4gICAgICAgICAgICAnQVRMX0pEQkNfVVJMJzogdGhpcy5kYXRhYmFzZS51cmwsXG4gICAgICAgICAgICAnQVRMX0pEQkNfVVNFUic6IHRoaXMuZGF0YWJhc2Uub3B0aW9ucy51c2VybmFtZSxcbiAgICAgICAgICAgICdBVExfSkRCQ19QQVNTV09SRCc6IHRoaXMuZGF0YWJhc2Uub3B0aW9ucy5wYXNzd29yZCxcbiAgICAgICAgICAgICdBVExfREJfVFlQRSc6IGAke3RoaXMuZGF0YWJhc2Uub3B0aW9ucy5uYW1lfWAsXG4gICAgICAgIH07XG4gICAgfVxuICAgIDtcbn1cbiIsImltcG9ydCB7IHRpbWVib21iIH0gZnJvbSAnLi4vaGVscGVycy9saWNlbmNlcyc7XG5pbXBvcnQgeyB0b0Fic29sdXRlUGF0aCB9IGZyb20gJy4uL2hlbHBlcnMvdG9BYnNvbHV0ZVBhdGgnO1xuaW1wb3J0IHsgU3VwcG9ydGVkQXBwbGljYXRpb25zIH0gZnJvbSAnLi4vdHlwZXMvQXBwbGljYXRpb24nO1xuaW1wb3J0IHsgQmFzZSB9IGZyb20gJy4vYmFzZSc7XG5leHBvcnQgY2xhc3MgSmlyYSBleHRlbmRzIEJhc2Uge1xuICAgIG5hbWUgPSBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmppcmE7XG4gICAgbG9nRmlsZVBhdGggPSAnL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9qaXJhL2xvZy9hdGxhc3NpYW4tamlyYS5sb2cnO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm90ZWN0ZWQgTWV0aG9kc1xuICAgIGdldFNlcnZpY2UoKSB7XG4gICAgICAgIGNvbnN0IGVudmlyb25tZW50ID0gdGhpcy5nZXRFbnZpcm9ubWVudFZhcmlhYmxlcygpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnVpbGQ6IHtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB0b0Fic29sdXRlUGF0aCgnLi4vLi4vYXNzZXRzJyksXG4gICAgICAgICAgICAgICAgZG9ja2VyZmlsZV9pbmxpbmU6IGBcbkZST00gJHt0aGlzLmdldERvY2tlckJhc2VUYWcoKX1cbkNPUFkgLi9qaXJhLWRhdGEtZ2VuZXJhdG9yLTUuMC4wLmphciAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2ppcmEvcGx1Z2lucy9pbnN0YWxsZWQtcGx1Z2lucy9qaXJhLWRhdGEtZ2VuZXJhdG9yLTUuMC4wLmphclxuQ09QWSAuL215c3FsLWNvbm5lY3Rvci1qLTguMy4wLmphciAvb3B0L2F0bGFzc2lhbi9qaXJhL2xpYi9teXNxbC1jb25uZWN0b3Itai04LjMuMC5qYXJcbkNPUFkgLi9xdWlja3JlbG9hZC01LjAuNC5qYXIgL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9qaXJhL3BsdWdpbnMvaW5zdGFsbGVkLXBsdWdpbnMvcXVpY2tyZWxvYWQtNS4wLjQuamFyXG5SVU4gZWNobyBcIi9vcHQvcXVpY2tyZWxvYWRcIiA+IC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvamlyYS9xdWlja3JlbG9hZC5wcm9wZXJ0aWVzOyBcXFxuICAgIG1rZGlyIC1wIC9vcHQvcXVpY2tyZWxvYWQ7IFxcXG4gICAgY2hvd24gLVIgamlyYTpqaXJhIC9vcHQvcXVpY2tyZWxvYWQ7XG5cblJVTiBjaG93biAtUiBqaXJhOmppcmEgL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9qaXJhYFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBvcnRzOiBbXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5vcHRpb25zLnBvcnR9OjgwODBgLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy5kZWJ1ZyA/IFsnNTAwNTo1MDA1J10gOiBbXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBlbnZpcm9ubWVudCxcbiAgICAgICAgICAgIG5ldHdvcmtzOiBbJ3NoYXJlZCddXG4gICAgICAgIH07XG4gICAgfVxuICAgIGdldEpWTUFyZ3MoKSB7XG4gICAgICAgIGNvbnN0IEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MgPSBzdXBlci5nZXRKVk1BcmdzKCk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGVidWcpIHtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLVhkZWJ1ZycpO1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctYWdlbnRsaWI6amR3cD10cmFuc3BvcnQ9ZHRfc29ja2V0LHNlcnZlcj15LHN1c3BlbmQ9bixhZGRyZXNzPSo6NTAwNScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJpdmF0ZSBNZXRob2RzXG4gICAgZ2V0RW52aXJvbm1lbnRWYXJpYWJsZXMoKSB7XG4gICAgICAgIC8vIEZvciBzb21lIHJlYXNvbiwgSmlyYSB1c2VzIGEgZGlmZmVyZW50IHR5cGUgZm9yIHBvc3RncmVzXG4gICAgICAgIGNvbnN0IGRiVHlwZSA9IHRoaXMuZGF0YWJhc2Uub3B0aW9ucy5uYW1lID09PSAncG9zdGdyZXNxbCcgPyAncG9zdGdyZXM3MicgOiB0aGlzLmRhdGFiYXNlLm9wdGlvbnMubmFtZTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy5jb250ZXh0UGF0aCA/IHsgJ0FUTF9UT01DQVRfQ09OVEVYVFBBVEgnOiB0aGlzLm9wdGlvbnMuY29udGV4dFBhdGggfSA6ICcnLFxuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLnhtcyA/IHsgJ0pWTV9NSU5JTVVNX01FTU9SWSc6IHRoaXMub3B0aW9ucy54bXMgfSA6ICcnLFxuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLnhteCA/IHsgJ0pWTV9NQVhJTVVNX01FTU9SWSc6IHRoaXMub3B0aW9ucy54bXggfSA6ICcnLFxuICAgICAgICAgICAgJ0pWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MnOiB0aGlzLmdldEpWTUFyZ3MoKS5qb2luKCcgJyksXG4gICAgICAgICAgICAnQVRMX0xJQ0VOU0VfS0VZJzogdGltZWJvbWIuY29uZmx1ZW5jZSxcbiAgICAgICAgICAgICdBVExfSkRCQ19VUkwnOiB0aGlzLmRhdGFiYXNlLnVybCxcbiAgICAgICAgICAgICdBVExfSkRCQ19VU0VSJzogdGhpcy5kYXRhYmFzZS5vcHRpb25zLnVzZXJuYW1lLFxuICAgICAgICAgICAgJ0FUTF9KREJDX1BBU1NXT1JEJzogdGhpcy5kYXRhYmFzZS5vcHRpb25zLnBhc3N3b3JkLFxuICAgICAgICAgICAgJ0FUTF9EQl9EUklWRVInOiB0aGlzLmRhdGFiYXNlLm9wdGlvbnMuZHJpdmVyLFxuICAgICAgICAgICAgJ0FUTF9EQl9UWVBFJzogZGJUeXBlLFxuICAgICAgICAgICAgJ0pJUkFfU0VUVVBfTElDRU5TRSc6IHRpbWVib21iLmppcmFcbiAgICAgICAgfTtcbiAgICB9XG4gICAgO1xufVxuIiwiaW1wb3J0IHsgQmFtYm9vIH0gZnJvbSAnLi4vYXBwbGljYXRpb25zL2JhbWJvbyc7XG5pbXBvcnQgeyBCaXRidWNrZXQgfSBmcm9tICcuLi9hcHBsaWNhdGlvbnMvYml0YnVja2V0JztcbmltcG9ydCB7IENvbmZsdWVuY2UgfSBmcm9tICcuLi9hcHBsaWNhdGlvbnMvY29uZmx1ZW5jZSc7XG5pbXBvcnQgeyBKaXJhIH0gZnJvbSAnLi4vYXBwbGljYXRpb25zL2ppcmEnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25PcHRpb25zLCBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMgfSBmcm9tICcuLi90eXBlcy9BcHBsaWNhdGlvbic7XG5leHBvcnQgY29uc3QgZ2V0QXBwbGljYXRpb24gPSAob3B0aW9ucykgPT4ge1xuICAgIHN3aXRjaCAob3B0aW9ucy5uYW1lKSB7XG4gICAgICAgIGNhc2UgU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5qaXJhOiByZXR1cm4gbmV3IEppcmEoQXBwbGljYXRpb25PcHRpb25zLnBhcnNlKG9wdGlvbnMpKTtcbiAgICAgICAgY2FzZSBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmNvbmZsdWVuY2U6IHJldHVybiBuZXcgQ29uZmx1ZW5jZShBcHBsaWNhdGlvbk9wdGlvbnMucGFyc2Uob3B0aW9ucykpO1xuICAgICAgICBjYXNlIFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYmFtYm9vOiByZXR1cm4gbmV3IEJhbWJvbyhBcHBsaWNhdGlvbk9wdGlvbnMucGFyc2Uob3B0aW9ucykpO1xuICAgICAgICBjYXNlIFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYml0YnVja2V0OiByZXR1cm4gbmV3IEJpdGJ1Y2tldChBcHBsaWNhdGlvbk9wdGlvbnMucGFyc2Uob3B0aW9ucykpO1xuICAgIH1cbn07XG4iLCJpbXBvcnQgeyByZWFkRmlsZVN5bmMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyB0b0Fic29sdXRlUGF0aCB9IGZyb20gJy4vdG9BYnNvbHV0ZVBhdGgnO1xuZXhwb3J0IGNvbnN0IGdldFZlcnNpb25zID0gKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnQgPSByZWFkRmlsZVN5bmModG9BYnNvbHV0ZVBhdGgoJy4uLy4uL2Fzc2V0cy92ZXJzaW9ucy5qc29uJyksICd1dGYtOCcpO1xuICAgIGNvbnN0IHZlcnNpb25zID0gSlNPTi5wYXJzZShjb250ZW50KTtcbiAgICByZXR1cm4gdmVyc2lvbnM7XG59O1xuIiwiZXhwb3J0IGNvbnN0IHNob3dIZWxwV2l0aERlZmF1bHRDb21tYW5kT3B0aW9ucyA9IHtcbiAgICB2aXNpYmxlT3B0aW9uczogKGNtZCkgPT4ge1xuICAgICAgICBsZXQgb3B0aW9ucyA9IGNtZC5vcHRpb25zO1xuICAgICAgICBpZiAoIWNtZC5wYXJlbnQgJiYgb3B0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRDb21tYW5kTmFtZSA9IGNtZC5fZGVmYXVsdENvbW1hbmROYW1lO1xuICAgICAgICAgICAgaWYgKGRlZmF1bHRDb21tYW5kTmFtZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRDb21tYW5kID0gY21kLmNvbW1hbmRzLmZpbmQoaXRlbSA9PiBpdGVtLl9uYW1lID09PSBkZWZhdWx0Q29tbWFuZE5hbWUpO1xuICAgICAgICAgICAgICAgIGlmIChkZWZhdWx0Q29tbWFuZCkge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zID0gZGVmYXVsdENvbW1hbmQub3B0aW9ucztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20ob3B0aW9ucyk7XG4gICAgfVxufTtcbiIsIiMhL3Vzci9iaW4vZW52IG5vZGVcbmltcG9ydCB7IENvbW1hbmQgYXMgQ29tbWFuZGVyLCBJbnZhbGlkT3B0aW9uQXJndW1lbnRFcnJvciwgT3B0aW9uIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCB7IGdyYWNlZnVsRXhpdCB9IGZyb20gJ2V4aXQtaG9vayc7XG5pbXBvcnQgeyBBY3Rpb25IYW5kbGVyIH0gZnJvbSAnLi4vaGVscGVycy9BY3Rpb25IYW5kbGVyJztcbmltcG9ydCB7IEFNUFMgfSBmcm9tICcuLi9oZWxwZXJzL2FtcHMnO1xuaW1wb3J0IHsgZ2V0QXBwbGljYXRpb24gfSBmcm9tICcuLi9oZWxwZXJzL2dldEFwcGxpY2F0aW9uJztcbmltcG9ydCB7IGdldFZlcnNpb25zIH0gZnJvbSAnLi4vaGVscGVycy9nZXRWZXJzaW9ucyc7XG5pbXBvcnQgeyBzaG93SGVscFdpdGhEZWZhdWx0Q29tbWFuZE9wdGlvbnMgfSBmcm9tICcuLi9oZWxwZXJzL3Nob3dIZWxwV2l0aERlZmF1bHRDb21tYW5kT3B0aW9ucyc7XG5pbXBvcnQgeyBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMgfSBmcm9tICcuLi90eXBlcy9BcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMgfSBmcm9tICcuLi90eXBlcy9EYXRhYmFzZSc7XG5jb25zdCBwcm9ncmFtID0gbmV3IENvbW1hbmRlcigpO1xuY29uc3QgdmVyc2lvbnMgPSBnZXRWZXJzaW9ucygpO1xuY29uc3QgQ29tbWFuZCA9ICgpID0+IHtcbiAgICBsZXQgaW5zdGFuY2UgPSBudWxsO1xuICAgIHJldHVybiB7XG4gICAgICAgIGFjdGlvbjogYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFtcHMgPSBuZXcgQU1QUyh7XG4gICAgICAgICAgICAgICAgY3dkOiBvcHRpb25zLmN3ZCxcbiAgICAgICAgICAgICAgICBwcm9maWxlczogb3B0aW9ucy5hY3RpdmF0ZVByb2ZpbGVzPy5zcGxpdCgnLCcpIHx8IFtdXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLm5hbWUgJiYgb3B0aW9ucy50YWcgJiYgb3B0aW9ucy5hY3RpdmF0ZVByb2ZpbGVzKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcHRpb25Bcmd1bWVudEVycm9yKCdJbnZhbGlkIGFyZ3VtZW50IFwiLS1hY3RpdmF0ZS1wcm9maWxlc1wiJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChvcHRpb25zLm5hbWUgJiYgb3B0aW9ucy50YWcgJiYgb3B0aW9ucy5jd2QpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wdGlvbkFyZ3VtZW50RXJyb3IoJ0ludmFsaWQgYXJndW1lbnQgXCItLWN3ZFwiJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMubmFtZSAmJiAhYW1wcy5pc0F0bGFzc2lhblBsdWdpbigpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gZmluZCBhbiBBdGxhc3NpYW4gUGx1Z2luIHByb2plY3QgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IPCfpJQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wdGlvbnMubmFtZSA9IG9wdGlvbnMubmFtZSB8fCBhbXBzLmdldEFwcGxpY2F0aW9uKCk7XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMubmFtZSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIEF0bGFzc2lhbiBQbHVnaW4gcHJvamVjdCBkb2VzIG5vdCBjb250YWluIGFuIEFNUFMgY29uZmlndXJhdGlvbiwgdW5hYmxlIHRvIGRldGVjdCBwcm9kdWN0IPCfmLAnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghb3B0aW9ucy50YWcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2ZXJzaW9uID0gYW1wcy5nZXRBcHBsaWNhdGlvblZlcnNpb24oKTtcbiAgICAgICAgICAgICAgICBpZiAoIXZlcnNpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gZGV0ZXJtaW5lIHZlcnNpb24gZnJvbSBBTVBTIGFuZCBubyBwcm9kdWN0IHZlcnNpb24gcHJvdmlkZWQgKC0tdGFnKScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy50YWcgPSB2ZXJzaW9uO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdmVyc2lvbnNbb3B0aW9ucy5uYW1lXS5pbmNsdWRlcyhvcHRpb25zLnRhZykpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFByb2R1Y3QgdmVyc2lvbiAnJHtvcHRpb25zLnRhZ30nIGlzIGludmFsaWQuIEFsbG93ZWQgY2hvaWNlcyBhcmUgJHt2ZXJzaW9uc1tvcHRpb25zLm5hbWVdLmpvaW4oJywgJyl9LmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5zdGFuY2UgPSBnZXRBcHBsaWNhdGlvbihvcHRpb25zKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBSZW1vdmluZyAke29wdGlvbnMubmFtZX0gYW5kIGRlbGV0aW5nIGFsbCBkYXRhLi4uIPCfkpRgKTtcbiAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZS5yZXNldCgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBSZW1vdmVkICR7b3B0aW9ucy5uYW1lfSBhbmQgZGVsZXRlZCBhbGwgZGF0YSDwn5KqYCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3JIYW5kbGVyOiBhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgaWYgKGluc3RhbmNlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFJlbW92aW5nICR7b3B0aW9ucy5uYW1lfSBhbmQgZGVsZXRpbmcgYWxsIGRhdGEuLi4g8J+SlGApO1xuICAgICAgICAgICAgICAgIGF3YWl0IGluc3RhbmNlLnJlc2V0KCkuY2F0Y2goKCkgPT4gbnVsbCk7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFJlbW92ZWQgJHtvcHRpb25zLm5hbWV9IGFuZCBkZWxldGVkIGFsbCBkYXRhIPCfkqpgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG59O1xucHJvZ3JhbVxuICAgIC5uYW1lKCdkY2R4IHJlc2V0JylcbiAgICAuZGVzY3JpcHRpb24oYFJlc2V0IHRoZSBob3N0IGFwcGxpY2F0aW9uIGJhc2VkIG9uIHRoZSBBdGxhc3NpYW4gTWF2ZW4gUGx1Z2luIFN1aXRlIChBTVBTKSBjb25maWd1cmF0aW9uLlxuSWYgeW91IHdpc2ggdG8gcmVzZXQgYSBzcGVjaWZpYyBob3N0IGFwcGxpY2F0aW9uIHJ1bm5pbmcgc3RhbmRhbG9uZSwgY2FsbCB0aGlzIGNvbW1hbmQgd2l0aCAnZGNkeCByZXNldCA8bmFtZT4nXG5cbklNUE9SVEFOVDogVGhpcyB3aWxsIHJlbW92ZSBhbGwgZGF0YSBmcm9tIGhvc3QgYXBwbGljYXRpb24gYW5kIGRhdGFiYXNlIVxuSWYgeW91IHdpc2ggdG8gcHJlc2VydmUgdGhlIGRhdGEsIHBsZWFzZSB1c2UgdGhlICdkY2R4IHN0b3AnIGNvbW1hbmQgaW5zdGVhZGApXG4gICAgLmFkZEhlbHBUZXh0KCdhZnRlckFsbCcsICfigIsnKSAvLyB0aGVyZSBpcyBhIG5vbi16ZXJvIHdoaXRlIHNwYWNlIGJlY2F1c2UgdGhlIG9ubHkgcmVhc29uIHRvIGhhdmUgdGhpcyBpcyB0byBmb3JjZSBhIGxpbmUgYnJlYWtcbiAgICAuY29uZmlndXJlSGVscChzaG93SGVscFdpdGhEZWZhdWx0Q29tbWFuZE9wdGlvbnMpXG4gICAgLmFsbG93VW5rbm93bk9wdGlvbihmYWxzZSlcbiAgICAuYWxsb3dFeGNlc3NBcmd1bWVudHMoZmFsc2UpXG4gICAgLnNob3dIZWxwQWZ0ZXJFcnJvcih0cnVlKTtcbnByb2dyYW1cbiAgICAuY29tbWFuZCgnZnJvbUFNUFMnLCB7IGlzRGVmYXVsdDogdHJ1ZSwgaGlkZGVuOiB0cnVlIH0pXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctZCwgLS1kYXRhYmFzZSA8bmFtZT4nLCAnVGhlIGRhdGFiYXNlIGVuZ2luZSB0byByZXNldCcpLmNob2ljZXMoT2JqZWN0LnZhbHVlcyhTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzKSkuZGVmYXVsdChTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLnBvc3RncmVzcWwpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLVAsIC0tYWN0aXZhdGUtcHJvZmlsZXMgPGFyZz4nLCAnQ29tbWEtZGVsaW1pdGVkIGxpc3Qgb2YgcHJvZmlsZXMgdG8gYWN0aXZhdGUnKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tY3dkIDxkaXJlY3Rvcnk+JywgJ1NwZWNpZnkgdGhlIHdvcmtpbmcgZGlyZWN0b3J5JykpXG4gICAgLmFjdGlvbihvcHRpb25zID0+IEFjdGlvbkhhbmRsZXIocHJvZ3JhbSwgQ29tbWFuZCgpLCBvcHRpb25zKSk7XG5wcm9ncmFtXG4gICAgLmNvbW1hbmQoJ2JhbWJvbycpXG4gICAgLmRlc2NyaXB0aW9uKCdSZXNldCBBdGxhc3NpYW4gQmFtYm9vIChzdGFuZGFsb25lKScpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctdCwgLS10YWcgPHRhZz4nLCAnVGhlIERvY2tlciB0YWcgb2YgQXRsYXNzaWFuIEJhbWJvbycpLmNob2ljZXModmVyc2lvbnNbU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5iYW1ib29dKS5kZWZhdWx0KCdsYXRlc3QnKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1kLCAtLWRhdGFiYXNlIDxuYW1lPicsICdUaGUgZGF0YWJhc2UgZW5naW5lIHRvIHJlc2V0JykuY2hvaWNlcyhPYmplY3QudmFsdWVzKFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMpKS5kZWZhdWx0KFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbCkpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctUCwgLS1hY3RpdmF0ZS1wcm9maWxlcyA8YXJnPicsICdDb21tYS1kZWxpbWl0ZWQgbGlzdCBvZiBwcm9maWxlcyB0byBhY3RpdmF0ZSAob25seSBhdmFpbGFibGUgd2l0aG91dCAtLXRhZyknKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tY3dkIDxkaXJlY3Rvcnk+JywgJ1NwZWNpZnkgdGhlIHdvcmtpbmcgZGlyZWN0b3J5IChvbmx5IGF2YWlsYWJsZSB3aXRob3V0IC0tdGFnKScpKVxuICAgIC5hY3Rpb24ob3B0aW9ucyA9PiBBY3Rpb25IYW5kbGVyKHByb2dyYW0sIENvbW1hbmQoKSwgeyAuLi5vcHRpb25zLCBuYW1lOiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJhbWJvbyB9KSk7XG5wcm9ncmFtXG4gICAgLmNvbW1hbmQoJ2JpdGJ1Y2tldCcpXG4gICAgLmRlc2NyaXB0aW9uKCdSZXNldCBBdGxhc3NpYW4gQml0YnVja2V0IChzdGFuZGFsb25lKScpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctdCwgLS10YWcgPHRhZz4nLCAnVGhlIERvY2tlciB0YWcgb2YgQXRsYXNzaWFuIEJpdGJ1Y2tldCcpLmNob2ljZXModmVyc2lvbnNbU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5iaXRidWNrZXRdKS5kZWZhdWx0KCdsYXRlc3QnKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1kLCAtLWRhdGFiYXNlIDxuYW1lPicsICdUaGUgZGF0YWJhc2UgZW5naW5lIHRvIHJlc2V0JykuY2hvaWNlcyhPYmplY3QudmFsdWVzKFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMpKS5kZWZhdWx0KFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbCkpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctUCwgLS1hY3RpdmF0ZS1wcm9maWxlcyA8YXJnPicsICdDb21tYS1kZWxpbWl0ZWQgbGlzdCBvZiBwcm9maWxlcyB0byBhY3RpdmF0ZSAob25seSBhdmFpbGFibGUgd2l0aG91dCAtLXRhZyknKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tY3dkIDxkaXJlY3Rvcnk+JywgJ1NwZWNpZnkgdGhlIHdvcmtpbmcgZGlyZWN0b3J5IChvbmx5IGF2YWlsYWJsZSB3aXRob3V0IC0tdGFnKScpKVxuICAgIC5hY3Rpb24ob3B0aW9ucyA9PiBBY3Rpb25IYW5kbGVyKHByb2dyYW0sIENvbW1hbmQoKSwgeyAuLi5vcHRpb25zLCBuYW1lOiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJpdGJ1Y2tldCB9KSk7XG5wcm9ncmFtXG4gICAgLmNvbW1hbmQoJ2NvbmZsdWVuY2UnKVxuICAgIC5kZXNjcmlwdGlvbignUmVzZXQgQXRsYXNzaWFuIENvbmZsdWVuY2UgKHN0YW5kYWxvbmUpJylcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy10LCAtLXRhZyA8dGFnPicsICdUaGUgRG9ja2VyIHRhZyBvZiBBdGxhc3NpYW4gQ29uZmx1ZW5jZScpLmNob2ljZXModmVyc2lvbnNbU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5jb25mbHVlbmNlXSkuZGVmYXVsdCgnbGF0ZXN0JykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctZCwgLS1kYXRhYmFzZSA8bmFtZT4nLCAnVGhlIGRhdGFiYXNlIGVuZ2luZSB0byByZXNldCcpLmNob2ljZXMoT2JqZWN0LnZhbHVlcyhTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzKSkuZGVmYXVsdChTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLnBvc3RncmVzcWwpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLVAsIC0tYWN0aXZhdGUtcHJvZmlsZXMgPGFyZz4nLCAnQ29tbWEtZGVsaW1pdGVkIGxpc3Qgb2YgcHJvZmlsZXMgdG8gYWN0aXZhdGUgKG9ubHkgYXZhaWxhYmxlIHdpdGhvdXQgLS10YWcpJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWN3ZCA8ZGlyZWN0b3J5PicsICdTcGVjaWZ5IHRoZSB3b3JraW5nIGRpcmVjdG9yIChvbmx5IGF2YWlsYWJsZSB3aXRob3V0IC0tdGFnKScpKVxuICAgIC5hY3Rpb24ob3B0aW9ucyA9PiBBY3Rpb25IYW5kbGVyKHByb2dyYW0sIENvbW1hbmQoKSwgeyAuLi5vcHRpb25zLCBuYW1lOiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmNvbmZsdWVuY2UgfSkpO1xucHJvZ3JhbVxuICAgIC5jb21tYW5kKCdqaXJhJylcbiAgICAuZGVzY3JpcHRpb24oJ1Jlc2V0IEF0bGFzc2lhbiBKaXJhIChzdGFuZGFsb25lKScpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctdCwgLS10YWcgPHRhZz4nLCAnVGhlIERvY2tlciB0YWcgb2YgQXRsYXNzaWFuIEppcmEnKS5jaG9pY2VzKHZlcnNpb25zW1N1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuamlyYV0pLmRlZmF1bHQoJ2xhdGVzdCcpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLWQsIC0tZGF0YWJhc2UgPG5hbWU+JywgJ1RoZSBkYXRhYmFzZSBlbmdpbmUgdG8gcmVzZXQnKS5jaG9pY2VzKE9iamVjdC52YWx1ZXMoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcykpLmRlZmF1bHQoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1QLCAtLWFjdGl2YXRlLXByb2ZpbGVzIDxhcmc+JywgJ0NvbW1hLWRlbGltaXRlZCBsaXN0IG9mIHByb2ZpbGVzIHRvIGFjdGl2YXRlIChvbmx5IGF2YWlsYWJsZSB3aXRob3V0IC0tdGFnKScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1jd2QgPGRpcmVjdG9yeT4nLCAnU3BlY2lmeSB0aGUgd29ya2luZyBkaXJlY3RvcnkgKG9ubHkgYXZhaWxhYmxlIHdpdGhvdXQgLS10YWcpJykpXG4gICAgLmFjdGlvbihvcHRpb25zID0+IEFjdGlvbkhhbmRsZXIocHJvZ3JhbSwgQ29tbWFuZCgpLCB7IC4uLm9wdGlvbnMsIG5hbWU6IFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuamlyYSB9KSk7XG5wcm9ncmFtLnBhcnNlQXN5bmMocHJvY2Vzcy5hcmd2KS5jYXRjaCgoKSA9PiBncmFjZWZ1bEV4aXQoMSkpO1xucHJvY2Vzcy5vbignU0lHSU5UJywgKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGBSZWNlaXZlZCB0ZXJtIHNpZ25hbCwgdHJ5aW5nIHRvIHN0b3AgZ3JhY2VmdWxseSDwn5KqYCk7XG4gICAgZ3JhY2VmdWxFeGl0KCk7XG59KTtcbiJdLCJuYW1lcyI6WyJ2ZXJzaW9ucyIsIkJhc2UiLCJDb21tYW5kZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFTyxNQUFNLGFBQWEsR0FBRyxPQUFPLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsRUFBRSxPQUFPLEtBQUs7QUFDbkYsSUFBSSxNQUFNLEdBQUcsR0FBRyxPQUFPLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzFDLElBQUksTUFBTSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEtBQUs7QUFDckMsUUFBUSxJQUFJLFlBQVksR0FBRyxFQUFFLENBQUM7QUFDOUIsUUFBUSxhQUFhLENBQUMsT0FBTyxJQUFJLEtBQUs7QUFDdEMsWUFBWSxJQUFJO0FBQ2hCLGdCQUFnQixJQUFJLElBQUksS0FBSyxDQUFDLEVBQUU7QUFDaEMsb0JBQW9CLE1BQU0sWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO0FBQzlELGlCQUFpQjtBQUNqQixnQkFBZ0IsSUFBSSxZQUFZLEVBQUU7QUFDbEMsb0JBQW9CLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7QUFDekQsaUJBQWlCO0FBQ2pCLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0Esb0JBQW9CLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqQyxpQkFBaUI7QUFDakIsYUFBYTtBQUNiLFlBQVksT0FBTyxHQUFHLEVBQUU7QUFDeEIsZ0JBQWdCLE1BQU0sT0FBTyxHQUFHLEdBQUcsWUFBWSxLQUFLLEdBQUcsR0FBRyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7QUFDekUsZ0JBQWdCLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNoQyxhQUFhO0FBQ2IsU0FBUyxFQUFFO0FBQ1gsWUFBWSxJQUFJLEVBQUUsRUFBRSxHQUFHLENBQUMsR0FBRyxJQUFJO0FBQy9CLFNBQVMsQ0FBQyxDQUFDO0FBQ1gsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU07QUFDL0IsWUFBWSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUIsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSTtBQUN4QixZQUFZLElBQUksR0FBRyxZQUFZLENBQUMsQ0FBQyxRQUFRLEVBQUU7QUFDM0MsZ0JBQWdCLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSTtBQUM1QyxvQkFBb0IsWUFBWSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDekcsaUJBQWlCLENBQUMsQ0FBQztBQUNuQixhQUFhO0FBQ2IsaUJBQWlCLElBQUksR0FBRyxZQUFZLEtBQUssSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUU7QUFDdEUsZ0JBQWdCLFlBQVksR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDOUMsYUFBYTtBQUNiLFlBQVksWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVCLFNBQVMsQ0FBQyxDQUFDO0FBQ1gsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSTtBQUN4QixRQUFRLElBQUksT0FBTyxLQUFLLElBQUksRUFBRTtBQUM5QixZQUFZLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDbkM7QUFDQTtBQUNBLFNBQVM7QUFDVCxhQUFhO0FBQ2IsWUFBWSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVCLFNBQVM7QUFDVCxLQUFLLENBQUMsQ0FBQztBQUNQLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
10237
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzZXQuanMiLCJzb3VyY2VzIjpbIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvQWN0aW9uSGFuZGxlci5qcyIsIi4uLy4uL2Rpc3Qvc3JjL3R5cGVzL0RhdGFiYXNlLmpzIiwiLi4vLi4vZGlzdC9zcmMvdHlwZXMvQXBwbGljYXRpb24uanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2FtcHMuanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2xpY2VuY2VzLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy90b0Fic29sdXRlUGF0aC5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvbmV0d29yay5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2RhdGFiYXNlcy9iYXNlLmpzIiwiLi4vLi4vZGlzdC9zcmMvZGF0YWJhc2VzL21zc3FsLmpzIiwiLi4vLi4vZGlzdC9zcmMvZGF0YWJhc2VzL215c3FsLmpzIiwiLi4vLi4vZGlzdC9zcmMvZGF0YWJhc2VzL3Bvc3RncmVzLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9nZXREYXRhYmFzZUVuZ2luZS5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvZ2V0Wm9kRGVmYXVsdHMuanMiLCIuLi8uLi9kaXN0L3NyYy9hcHBsaWNhdGlvbnMvYmFzZS5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2FwcGxpY2F0aW9ucy9iYW1ib28uanMiLCIuLi8uLi9kaXN0L3NyYy9hcHBsaWNhdGlvbnMvYml0YnVja2V0LmpzIiwiLi4vLi4vZGlzdC9zcmMvYXBwbGljYXRpb25zL2NvbmZsdWVuY2UuanMiLCIuLi8uLi9kaXN0L3NyYy9hcHBsaWNhdGlvbnMvamlyYS5qcyIsIi4uLy4uL2Rpc3Qvc3JjL2hlbHBlcnMvZ2V0QXBwbGljYXRpb24uanMiLCIuLi8uLi9kaXN0L3NyYy9oZWxwZXJzL2dldFZlcnNpb25zLmpzIiwiLi4vLi4vZGlzdC9zcmMvaGVscGVycy9zaG93SGVscFdpdGhEZWZhdWx0Q29tbWFuZE9wdGlvbnMuanMiLCIuLi8uLi9kaXN0L3NyYy9jb21tYW5kcy9yZXNldC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhc3luY0V4aXRIb29rLCBncmFjZWZ1bEV4aXQgfSBmcm9tICdleGl0LWhvb2snO1xuaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7XG5leHBvcnQgY29uc3QgQWN0aW9uSGFuZGxlciA9IGFzeW5jIChwcm9ncmFtLCB7IGFjdGlvbiwgZXJyb3JIYW5kbGVyIH0sIG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCBvcHMgPSBvcHRpb25zIHx8IHByb2dyYW0ub3B0cygpO1xuICAgIGF3YWl0IG5ldyBQcm9taXNlKChfLCByZWplY3QpID0+IHtcbiAgICAgICAgbGV0IGVycm9yTWVzc2FnZSA9ICcnO1xuICAgICAgICBhc3luY0V4aXRIb29rKGFzeW5jIChjb2RlKSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChjb2RlICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGVycm9ySGFuZGxlcihvcHMpLmNhdGNoKCgpID0+IG51bGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZXJyb3JNZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvck1lc3NhZ2UudHJpbSgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFdlIGFyZSByZWplY3RpbmcgdGhlIHByb21pc2UgdG8gYXZvaWQgdGhlXG4gICAgICAgICAgICAgICAgICAgIC8vIFwiQ2FsbGluZyBwcm9jZXNzLmV4aXRcIiBsb2cgbWVzc2FnZSBmcm9tIGV4aXQtaG9va1xuICAgICAgICAgICAgICAgICAgICByZWplY3QobnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogZXJyO1xuICAgICAgICAgICAgICAgIHJlamVjdChtZXNzYWdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgd2FpdDogNjAgKiAxICogMTAwMFxuICAgICAgICB9KTtcbiAgICAgICAgYWN0aW9uKG9wcykudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBncmFjZWZ1bEV4aXQoMCk7XG4gICAgICAgIH0pLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2Ygei5ab2RFcnJvcikge1xuICAgICAgICAgICAgICAgIGVyci5pc3N1ZXMuZm9yRWFjaChpc3N1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSArPSBgVW5hYmxlIHRvIHBhcnNlIG9wdGlvbiAke2lzc3VlLnBhdGguam9pbignLCcpfTogJHtpc3N1ZS5tZXNzYWdlfVxcbmA7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvciB8fCB0eXBlb2YgZXJyID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGVyci50b1N0cmluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZ3JhY2VmdWxFeGl0KDEpO1xuICAgICAgICB9KTtcbiAgICB9KS5jYXRjaChtZXNzYWdlID0+IHtcbiAgICAgICAgaWYgKG1lc3NhZ2UgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHByb2dyYW0uZXJyb3IobWVzc2FnZSk7XG4gICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBlcnJvciBtZXNzYWdlLFxuICAgICAgICAgICAgLy8gd2UgY2FuIGFzc3VtZSBhIGNsZWFuIGV4aXRcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICAgICAgfVxuICAgIH0pO1xufTtcbiIsImltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xuaW1wb3J0IHZlcnNpb25zIGZyb20gJy4uLy4uL2Fzc2V0cy92ZXJzaW9ucy5qc29uJztcbmV4cG9ydCBjb25zdCBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMgPSB6LmVudW0oW1xuICAgICdwb3N0Z3Jlc3FsJyxcbiAgICAnbXlzcWwnLFxuICAgICdtc3NxbCdcbl0pO1xuZXhwb3J0IGNvbnN0IFN1cHBvcnRlZE1TU1FMRWRpdGlvbnMgPSB6LmVudW0oW1xuICAgICdEZXZlbG9wZXInLFxuICAgICdFeHByZXNzJyxcbiAgICAnU3RhbmRhcmQnLFxuICAgICdFbnRlcnByaXNlJyxcbiAgICAnRW50ZXJwcmlzZUNvcmUnXG5dKTtcbmV4cG9ydCBjb25zdCBEYXRhYmFzZU9wdGlvbnMgPSB6Lm9iamVjdCh7XG4gICAgbmFtZTogU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLFxuICAgIHBvcnQ6IHoubnVtYmVyKCkub3Ioei5zdHJpbmcoKS50cmFuc2Zvcm0oTnVtYmVyKS5yZWZpbmUoaXRlbSA9PiAhaXNOYU4oaXRlbSkpKSxcbiAgICBkYXRhYmFzZTogei5zdHJpbmcoKS5kZWZhdWx0KCdkY2R4JyksXG4gICAgdXNlcm5hbWU6IHouc3RyaW5nKCkuZGVmYXVsdCgnZGNkeCcpLFxuICAgIHBhc3N3b3JkOiB6LnN0cmluZygpLmRlZmF1bHQoJ2RjZHgnKSxcbiAgICBjbGVhbjogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgcHJ1bmU6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIHZlcmJvc2U6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxuICAgIGRyaXZlcjogei5zdHJpbmcoKVxufSk7XG5leHBvcnQgY29uc3QgUG9zdGdyZVNRTE9wdGlvbnMgPSBEYXRhYmFzZU9wdGlvbnMuZXh0ZW5kKHtcbiAgICBuYW1lOiBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMucmVmaW5lKGl0ZW0gPT4gaXRlbSA9PT0gU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsKS5kZWZhdWx0KFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbCksXG4gICAgdGFnOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IHZlcnNpb25zW1N1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbF0uaW5jbHVkZXMoaXRlbSkpLmRlZmF1bHQoJ2xhdGVzdCcpLFxuICAgIHBvcnQ6IHoubnVtYmVyKCkub3Ioei5zdHJpbmcoKS50cmFuc2Zvcm0oTnVtYmVyKS5yZWZpbmUoaXRlbSA9PiAhaXNOYU4oaXRlbSkpKS5kZWZhdWx0KDU0MzIpLFxuICAgIGRyaXZlcjogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSAnb3JnLnBvc3RncmVzcWwuRHJpdmVyJykuZGVmYXVsdCgnb3JnLnBvc3RncmVzcWwuRHJpdmVyJylcbn0pO1xuZXhwb3J0IGNvbnN0IE15U1FMT3B0aW9ucyA9IERhdGFiYXNlT3B0aW9ucy5leHRlbmQoe1xuICAgIG5hbWU6IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm15c3FsKS5kZWZhdWx0KFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXlzcWwpLFxuICAgIHRhZzogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiB2ZXJzaW9uc1tTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm15c3FsXS5pbmNsdWRlcyhpdGVtKSkuZGVmYXVsdCgnbGF0ZXN0JyksXG4gICAgcG9ydDogei5udW1iZXIoKS5vcih6LnN0cmluZygpLnRyYW5zZm9ybShOdW1iZXIpLnJlZmluZShpdGVtID0+ICFpc05hTihpdGVtKSkpLmRlZmF1bHQoMzMwNiksXG4gICAgZHJpdmVyOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IGl0ZW0gPT09ICdjb20ubXlzcWwuamRiYy5Ecml2ZXInKS5kZWZhdWx0KCdjb20ubXlzcWwuamRiYy5Ecml2ZXInKVxufSk7XG5leHBvcnQgY29uc3QgTVNTUUxPcHRpb25zID0gRGF0YWJhc2VPcHRpb25zLmV4dGVuZCh7XG4gICAgbmFtZTogU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLnJlZmluZShpdGVtID0+IGl0ZW0gPT09IFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXNzcWwpLmRlZmF1bHQoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5tc3NxbCksXG4gICAgdGFnOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IHZlcnNpb25zW1N1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXNzcWxdLmluY2x1ZGVzKGl0ZW0pKS5kZWZhdWx0KCdsYXRlc3QnKSxcbiAgICBlZGl0aW9uOiBTdXBwb3J0ZWRNU1NRTEVkaXRpb25zLmRlZmF1bHQoJ0RldmVsb3BlcicpLFxuICAgIHBvcnQ6IHoubnVtYmVyKCkub3Ioei5zdHJpbmcoKS50cmFuc2Zvcm0oTnVtYmVyKS5yZWZpbmUoaXRlbSA9PiAhaXNOYU4oaXRlbSkpKS5kZWZhdWx0KDE0MzMpLFxuICAgIHVzZXJuYW1lOiB6LnN0cmluZygpLnJlZmluZShpdGVtID0+IGl0ZW0gPT09ICdzYScpLmRlZmF1bHQoJ3NhJyksXG4gICAgcGFzc3dvcmQ6IHouc3RyaW5nKCkuZGVmYXVsdCgnRGF0YUNlbnRlckRYIScpLFxuICAgIGRyaXZlcjogei5zdHJpbmcoKS5yZWZpbmUoaXRlbSA9PiBpdGVtID09PSAnY29tLm1pY3Jvc29mdC5zcWxzZXJ2ZXIuamRiYy5TUUxTZXJ2ZXJEcml2ZXInKS5kZWZhdWx0KCdjb20ubWljcm9zb2Z0LnNxbHNlcnZlci5qZGJjLlNRTFNlcnZlckRyaXZlcicpXG59KTtcbiIsImltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xuaW1wb3J0IHsgU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzIH0gZnJvbSAnLi9EYXRhYmFzZSc7XG5leHBvcnQgY29uc3QgU3VwcG9ydGVkQXBwbGljYXRpb25zID0gei5lbnVtKFtcbiAgICAnamlyYScsXG4gICAgJ2NvbmZsdWVuY2UnLFxuICAgICdiaXRidWNrZXQnLFxuICAgICdiYW1ib28nXG5dKTtcbmV4cG9ydCBjb25zdCBBcHBsaWNhdGlvbk9wdGlvbnMgPSB6Lm9iamVjdCh7XG4gICAgbmFtZTogU3VwcG9ydGVkQXBwbGljYXRpb25zLFxuICAgIHRhZzogei5zdHJpbmcoKS5kZWZhdWx0KCdsYXRlc3QnKSxcbiAgICBkYXRhYmFzZTogU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLmRlZmF1bHQoJ3Bvc3RncmVzcWwnKSxcbiAgICBkYXRhYmFzZVRhZzogei5zdHJpbmcoKS5kZWZhdWx0KCdsYXRlc3QnKSxcbiAgICBwb3J0OiB6LnN0cmluZygpLnRyYW5zZm9ybShOdW1iZXIpLnJlZmluZShpdGVtID0+ICFpc05hTihpdGVtKSkuZGVmYXVsdCgnODAnKSxcbiAgICBjb250ZXh0UGF0aDogei5zdHJpbmcoKSxcbiAgICB4bXM6IHouc3RyaW5nKCkuZGVmYXVsdCgnMTAyNG0nKSxcbiAgICB4bXg6IHouc3RyaW5nKCkuZGVmYXVsdCgnMTAyNG0nKSxcbiAgICB3YXRjaDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgZXh0OiB6LmFycmF5KHouc3RyaW5nKCkpLFxuICAgIGluc3RhbGw6IHouYm9vbGVhbigpLFxuICAgIG91dHB1dERpcmVjdG9yeTogei5zdHJpbmcoKSxcbiAgICBhY3RpdmF0ZVByb2ZpbGVzOiB6LnN0cmluZygpLFxuICAgIGNsZWFuOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcbiAgICBwcnVuZTogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gICAgZGVidWc6IHouYm9vbGVhbigpLmRlZmF1bHQodHJ1ZSksXG4gICAgY3dkOiB6LnN0cmluZygpXG59KS5wYXJ0aWFsKHtcbiAgICBjb250ZXh0UGF0aDogdHJ1ZSxcbiAgICBleHQ6IHRydWUsXG4gICAgaW5zdGFsbDogdHJ1ZSxcbiAgICBvdXRwdXREaXJlY3Rvcnk6IHRydWUsXG4gICAgYWN0aXZhdGVQcm9maWxlczogdHJ1ZSxcbiAgICBjd2Q6IHRydWVcbn0pO1xuIiwiaW1wb3J0IHsgRE9NUGFyc2VyLCBYTUxTZXJpYWxpemVyIH0gZnJvbSAnQHhtbGRvbS94bWxkb20nO1xuaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB7IFhNTFBhcnNlciB9IGZyb20gJ2Zhc3QteG1sLXBhcnNlcic7XG5pbXBvcnQgeyBleGlzdHNTeW5jLCByZWFkRmlsZVN5bmMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBjd2QgfSBmcm9tICdwcm9jZXNzJztcbmltcG9ydCB4cGF0aCBmcm9tICd4cGF0aCc7XG5pbXBvcnQgeyBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMgfSBmcm9tICcuLi90eXBlcy9BcHBsaWNhdGlvbic7XG5leHBvcnQgY2xhc3MgQU1QUyB7XG4gICAgb3B0aW9ucztcbiAgICBtYXZlbiA9IG51bGw7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9yXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucyA9IHtcbiAgICAgICAgcHJvZmlsZXM6IFtdXG4gICAgfSkge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHVibGljIE1ldGhvZHNcbiAgICBzdG9wKCkge1xuICAgICAgICBpZiAodGhpcy5tYXZlbikge1xuICAgICAgICAgICAgY29uc3Qga2lsbGVkID0gdGhpcy5tYXZlbi5raWxsKDApO1xuICAgICAgICAgICAgaWYgKCFraWxsZWQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byB0ZXJtaW5hdGUgZXhpc3RpbmcgTWF2ZW4gcHJvY2VzcycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGJ1aWxkKGFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLm1hdmVuKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qga2lsbGVkID0gdGhpcy5tYXZlbi5raWxsKDApO1xuICAgICAgICAgICAgICAgIGlmICgha2lsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ0ZhaWxlZCB0byB0ZXJtaW5hdGUgZXhpc3RpbmcgTWF2ZW4gcHJvY2VzcycpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm1hdmVuID0gc3Bhd24oJ212bicsIFsncGFja2FnZScsIC4uLmFyZ3NdLCB7IGN3ZDogdGhpcy5vcHRpb25zPy5jd2QgfHwgY3dkKCksIHN0ZGlvOiAnaW5oZXJpdCcgfSk7XG4gICAgICAgICAgICB0aGlzLm1hdmVuLm9uKCdleGl0JywgKGNvZGUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm1hdmVuID0gbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAoY29kZSA9PT0gMCB8fCBjb2RlID09PSAxMzApIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgTWF2ZW4gZXhpdGVkIHdpdGggY29kZSAke2NvZGV9YCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgaXNBdGxhc3NpYW5QbHVnaW4gPSAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBub2RlcyA9IHRoaXMuZ2V0Tm9kZXMoJy8vKltsb2NhbC1uYW1lKCk9XFwncGFja2FnaW5nXFwnXScpO1xuICAgICAgICAgICAgcmV0dXJuIG5vZGVzLnNvbWUoaXRlbSA9PiBpdGVtLnRleHRDb250ZW50ID09PSAnYXRsYXNzaWFuLXBsdWdpbicpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgZ2V0QXBwbGljYXRpb25WZXJzaW9uKCkge1xuICAgICAgICBjb25zdCBhcHBsaWNhdGlvbnMgPSB0aGlzLmdldEFwcGxpY2F0aW9ucygpO1xuICAgICAgICBpZiAoYXBwbGljYXRpb25zLnNpemUgPT09IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IFssIHZlcnNpb25dID0gQXJyYXkuZnJvbShhcHBsaWNhdGlvbnMpWzBdO1xuICAgICAgICAgICAgcmV0dXJuIHZlcnNpb247XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoYXBwbGljYXRpb25zLnNpemUgPiAxKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBBdGxhc3NpYW4gUGx1Z2luIHByb2plY3QgY29udGFpbnMgbXVsdGlwbGUgQU1QUyBjb25maWd1cmF0aW9uLCB1bmFibGUgdG8gZGVjaWRlIHdoaWNoIHByb2R1Y3QgdG8gdXNlIPCfmLAnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBnZXRBcHBsaWNhdGlvbigpIHtcbiAgICAgICAgY29uc3QgYXBwbGljYXRpb25zID0gdGhpcy5nZXRBcHBsaWNhdGlvbnMoKTtcbiAgICAgICAgaWYgKGFwcGxpY2F0aW9ucy5zaXplID09PSAxKSB7XG4gICAgICAgICAgICBjb25zdCBbbmFtZV0gPSBBcnJheS5mcm9tKGFwcGxpY2F0aW9ucylbMF07XG4gICAgICAgICAgICByZXR1cm4gbmFtZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChhcHBsaWNhdGlvbnMuc2l6ZSA+IDEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIEF0bGFzc2lhbiBQbHVnaW4gcHJvamVjdCBjb250YWlucyBtdWx0aXBsZSBBTVBTIGNvbmZpZ3VyYXRpb24sIHVuYWJsZSB0byBkZWNpZGUgd2hpY2ggcHJvZHVjdCB0byB1c2Ug8J+YsCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBnZXRBcHBsaWNhdGlvbnMoKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBNYXAoKTtcbiAgICAgICAgY29uc3Qgbm9kZXMgPSB0aGlzLmdldE5vZGVzKCcvLypbbG9jYWwtbmFtZSgpPVxcJ2dyb3VwSWRcXCcgYW5kIHRleHQoKT1cXCdjb20uYXRsYXNzaWFuLm1hdmVuLnBsdWdpbnNcXCddJyk7XG4gICAgICAgIGNvbnN0IG5vZGVzV2l0aEFjdGl2ZVByb2ZpbGUgPSBub2Rlcy5maWx0ZXIobm9kZSA9PiB0aGlzLmlzQWN0aXZhdGVkUHJvZmlsZShub2RlKSk7XG4gICAgICAgIG5vZGVzV2l0aEFjdGl2ZVByb2ZpbGUuZm9yRWFjaChub2RlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSBub2RlLnBhcmVudE5vZGU7XG4gICAgICAgICAgICBpZiAocGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgcGx1Z2luIH0gPSB0aGlzLnRvT2JqZWN0KHBhcmVudE5vZGUpO1xuICAgICAgICAgICAgICAgIGlmICgnYW1wcy1tYXZlbi1wbHVnaW4nID09PSBwbHVnaW4/LmFydGlmYWN0SWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBjb25maWd1cmF0aW9uIH0gPSBwbHVnaW4gfHwge307XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb25maWd1cmF0aW9uPy5wcm9kdWN0cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29uZmlndXJhdGlvbj8ucHJvZHVjdHMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi5wcm9kdWN0cy5mb3JFYWNoKChwcm9kdWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1cHBvcnRlZEFwcGxpY2F0aW9uID0gdGhpcy5nZXRTdXBwb3J0ZWRBcHBsaWNhdGlvbihwcm9kdWN0LmlkKSB8fCB0aGlzLmdldFN1cHBvcnRlZEFwcGxpY2F0aW9uKHByb2R1Y3QuaW5zdGFuY2VJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdXBwb3J0ZWRBcHBsaWNhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVyc2lvbiA9IHRoaXMuZG9Qcm9wZXJ0eVJlcGxhY2VtZW50KHByb2R1Y3QudmVyc2lvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyc2lvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zZXQoc3VwcG9ydGVkQXBwbGljYXRpb24sIHZlcnNpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHByb2R1Y3QgfSA9IGNvbmZpZ3VyYXRpb24/LnByb2R1Y3RzIHx8IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcm9kdWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1cHBvcnRlZEFwcGxpY2F0aW9uID0gdGhpcy5nZXRTdXBwb3J0ZWRBcHBsaWNhdGlvbihwcm9kdWN0LmlkKSB8fCB0aGlzLmdldFN1cHBvcnRlZEFwcGxpY2F0aW9uKHByb2R1Y3QuaW5zdGFuY2VJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdXBwb3J0ZWRBcHBsaWNhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVyc2lvbiA9IHRoaXMuZG9Qcm9wZXJ0eVJlcGxhY2VtZW50KHByb2R1Y3QudmVyc2lvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyc2lvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zZXQoc3VwcG9ydGVkQXBwbGljYXRpb24sIHZlcnNpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdXBwb3J0ZWRBcHBsaWNhdGlvbiA9IHRoaXMuZ2V0U3VwcG9ydGVkQXBwbGljYXRpb24ocGx1Z2luPy5hcnRpZmFjdElkKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVyc2lvbiA9IHRoaXMuZ2V0VmVyc2lvbihub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRlZEFwcGxpY2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuc2V0KHN1cHBvcnRlZEFwcGxpY2F0aW9uLCB2ZXJzaW9uKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcml2YXRlIE1ldGhvZHNcbiAgICBnZXRTdXBwb3J0ZWRBcHBsaWNhdGlvbih2YWx1ZSkge1xuICAgICAgICBpZiAodmFsdWU/LmluY2x1ZGVzKFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuamlyYSkpIHtcbiAgICAgICAgICAgIHJldHVybiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmppcmE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodmFsdWU/LmluY2x1ZGVzKFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuY29uZmx1ZW5jZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmNvbmZsdWVuY2U7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodmFsdWU/LmluY2x1ZGVzKFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYmFtYm9vKSkge1xuICAgICAgICAgICAgcmV0dXJuIFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYmFtYm9vO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHZhbHVlPy5pbmNsdWRlcyhTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJpdGJ1Y2tldCkpIHtcbiAgICAgICAgICAgIHJldHVybiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJpdGJ1Y2tldDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZ2V0VmVyc2lvbihub2RlKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSBub2RlLnBhcmVudE5vZGU7XG4gICAgICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICAgICAgICBjb25zdCB7IHBsdWdpbiB9ID0gdGhpcy50b09iamVjdChwYXJlbnROb2RlKTtcbiAgICAgICAgICAgIGNvbnN0IHsgY29uZmlndXJhdGlvbiB9ID0gcGx1Z2luIHx8IHt9O1xuICAgICAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24/LnByb2R1Y3RWZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG9Qcm9wZXJ0eVJlcGxhY2VtZW50KHBsdWdpbi5jb25maWd1cmF0aW9uLnByb2R1Y3RWZXJzaW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNvbmZpZ3VyYXRpb24/LnByb2R1Y3RzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJvZHVjdCA9IEFycmF5LmlzQXJyYXkoY29uZmlndXJhdGlvbj8ucHJvZHVjdHMpID8gY29uZmlndXJhdGlvbj8ucHJvZHVjdHNbMF0gOiBjb25maWd1cmF0aW9uLnByb2R1Y3RzLnByb2R1Y3Q7XG4gICAgICAgICAgICAgICAgaWYgKHByb2R1Y3QgJiYgcHJvZHVjdC52ZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRvUHJvcGVydHlSZXBsYWNlbWVudChwcm9kdWN0LnZlcnNpb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBkb1Byb3BlcnR5UmVwbGFjZW1lbnQodmFsdWUpIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IHZhbHVlO1xuICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIHByb2ZpbGUsIHJlcGxhY2UgcHJvZmlsZSBwcm9wZXJ0aWVzIGZpcnN0IGFzIHRoZXkgdGFrZSBwcmVjZWRlbmNlXG4gICAgICAgIGNvbnN0IHByb2ZpbGVQcm9wZXJ0aWVzID0gdGhpcy5nZXRQcm9wZXJ0aWVzKCk7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHByb2ZpbGVQcm9wZXJ0aWVzKS5mb3JFYWNoKChbcHJvcGVydHlLZXksIHByb3BlcnR5VmFsdWVdKSA9PiB7XG4gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZUFsbChgJFxceyR7cHJvcGVydHlLZXl9fWAsIHByb3BlcnR5VmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcHJvcGVydGllcyA9IHRoaXMuZ2V0UHJvcGVydGllcygpO1xuICAgICAgICBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzKS5mb3JFYWNoKChbcHJvcGVydHlLZXksIHByb3BlcnR5VmFsdWVdKSA9PiB7XG4gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZUFsbChgJFxceyR7cHJvcGVydHlLZXl9fWAsIHByb3BlcnR5VmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgZ2V0UHJvcGVydGllcygpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgICAgIGNvbnN0IG5vZGVzID0gdGhpcy5nZXROb2RlcygnLy8qW2xvY2FsLW5hbWUoKT1cXCdwcm9wZXJ0aWVzXFwnXScpO1xuICAgICAgICBjb25zdCBub2Rlc1dpdGhBY3RpdmVQcm9maWxlID0gbm9kZXMuZmlsdGVyKG5vZGUgPT4gdGhpcy5pc0FjdGl2YXRlZFByb2ZpbGUobm9kZSkpO1xuICAgICAgICBub2Rlc1dpdGhBY3RpdmVQcm9maWxlLmZvckVhY2gobm9kZSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHByb3BlcnRpZXMgfSA9IHRoaXMudG9PYmplY3Qobm9kZSk7XG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHJlc3VsdFtrZXldID0gdmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgZ2V0Tm9kZXMoZXhwcmVzc2lvbiwgc2luZ2xlKSB7XG4gICAgICAgIGNvbnN0IHBvbUZpbGVQYXRoID0gam9pbih0aGlzLm9wdGlvbnM/LmN3ZCB8fCBjd2QoKSwgJy4vcG9tLnhtbCcpO1xuICAgICAgICBjb25zdCBoYXNQb21GaWxlID0gZXhpc3RzU3luYyhwb21GaWxlUGF0aCk7XG4gICAgICAgIGlmIChoYXNQb21GaWxlKSB7XG4gICAgICAgICAgICBjb25zdCB4bWwgPSByZWFkRmlsZVN5bmMocG9tRmlsZVBhdGgsICd1dGY4Jyk7XG4gICAgICAgICAgICBjb25zdCBkb2MgPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKHhtbCwgJ3RleHQveG1sJyk7XG4gICAgICAgICAgICBjb25zdCBub2RlcyA9IHNpbmdsZSA/IHhwYXRoLnNlbGVjdChleHByZXNzaW9uLCBkb2MsIHRydWUpIDogeHBhdGguc2VsZWN0KGV4cHJlc3Npb24sIGRvYywgZmFsc2UpO1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobm9kZXMpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoc2luZ2xlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgdG9PYmplY3Qobm9kZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcGFyc2VyID0gbmV3IFhNTFBhcnNlcigpO1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlci5wYXJzZShuZXcgWE1MU2VyaWFsaXplcigpLnNlcmlhbGl6ZVRvU3RyaW5nKG5vZGUpKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmaW5kUGFyZW50Tm9kZUJ5VGFnTmFtZSh0YWdOYW1lLCBub2RlKSB7XG4gICAgICAgIGNvbnN0IHsgcGFyZW50Tm9kZSB9ID0gbm9kZTtcbiAgICAgICAgaWYgKHBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIGlmIChwYXJlbnROb2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IHRhZ05hbWUudG9Mb3dlckNhc2UoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXJlbnROb2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmluZFBhcmVudE5vZGVCeVRhZ05hbWUodGFnTmFtZSwgcGFyZW50Tm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlzQWN0aXZhdGVkUHJvZmlsZShub2RlKSB7XG4gICAgICAgIGNvbnN0IHByb2ZpbGVQYXJlbnROb2RlID0gdGhpcy5maW5kUGFyZW50Tm9kZUJ5VGFnTmFtZSgncHJvZmlsZScsIG5vZGUpO1xuICAgICAgICBjb25zdCBwcm9maWxlTm9kZSA9IHByb2ZpbGVQYXJlbnROb2RlID8gdGhpcy50b09iamVjdChwcm9maWxlUGFyZW50Tm9kZSkgOiBudWxsO1xuICAgICAgICBpZiAoIXByb2ZpbGVOb2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChwcm9maWxlTm9kZSAmJiAocHJvZmlsZU5vZGUuYWN0aXZlQnlEZWZhdWx0ID09PSAndHJ1ZScgfHwgdGhpcy5vcHRpb25zLnByb2ZpbGVzLmluY2x1ZGVzKHByb2ZpbGVOb2RlLnByb2ZpbGUuaWQpKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJleHBvcnQgY29uc3QgdGltZWJvbWIgPSB7XG4gICAgJ2ppcmEnOiAnQUFBQ0JBME9EQW9QZU5wOWtsMXYyakFVaHUveks0NjBPeVFIU0x1VklrVWFUYndOVkJLVWhFbmJ1Z3NURHVBMnNTUGJnYkZmUHhPQzFpKzR5RVhPNSt2blBSK3lHaUdTVy9DdW9YYzd2Qm9NdlQ0RU5BT3Y1L1djdFVJVUcxbFZxTng3bnFQUVNKZmNjQ2w4R21VMG1TWGpsRHBSWFM1UXhhdTVScVY5MG5jQ0tRekxUY1JLOUV1OTQ0SXAvY1EvTTFNd3JUa1RiaTVMWjFhcmZNTTBoc3lnNy9YNkE5THZFODl6MmozWnZzSm1RQkJQcHpRSnhxUDdVNHIrcWJqYU4zMnpHKy9iYVIyZE1sNmMzNWVpMnFJYWgvNGR2YUhrT3Z6cGtVL3g1SVo4dmJvZE9JOWNNYmRTY2xubnhqMzhFQzFYWnNjVXVuWXkzNkp2VkkzT3hHWm1iWlhkendJVTVsVkpXaTkwcm5qVlFHb2k3MEI4NzNHTmhQT1FPNTFPRkdma1M1eVFXUktIOHlBYnh4R1pwOVFtL0VDaHBiR0V4UjdNQnFHZEFsVGtjb2tLN01NZU1UZndhMk5NOVREc2R0ZlNmUUduV3h3N0NCNDdmcnNRU2hEU3dKSnJvL2lpTm1nbmN3MUdRbDVySTB0cnRldFk0c0tnWUNKL1k0cVZGU1IwbE5HUTNQMDRhRHhyVEt2V09qTVhUMEx1eENVMzN0eGFTaVBmZnVSanIzZnNPL21DNm9nL1Ztc211R1lOMElqOTNURlljVlh1blFhYURiNCt3SmJGZDd2ZzBPSTVJZjUzTkVOdG9LMkFsVlF3R1NjalNGdDVscmpkV3ltdThXRUlnU3d0cHB5ekFzTGd4Ums4UDVoRzlQTUEzYktpUHNwZHNVTGpKUndYN3VrZjUvTlg3VEF0QWhVQWhRU0h6OURneWNPWDd3Y3dFUk1KYjNUTEdiNENGR2tCL3hVV1NSSzNCWkxyUEY5Um42Wm1yVXFKWDAyb2MnLFxuICAgICdjb25mbHVlbmNlJzogJ0FBQUN6ZzBPREFvUGVOcDlWTzl2MmpBUS9aNi93dEsrSVlXR3NFS0hGR21RbUphdS9HZ0ltOWlZSmhNT1lwcllrZTFBNGErZlNjaEdLdHFQUHZ2ZXZYdjN6cC82Z3FMSExFYjJIYktzVHZOenA5bEM5OE1BMlpiZE5LWWdkaUFHbnRQRFEyejY4OEhjZEgvYU03UDVvMmtaVHpRRUppRTRwREFpQ1RnQm5nYUQwYjBSQ3I1ZjFTOXVIZmNVV1hTUUJ6dUllUXJDQ0RsYjEwbW82QTRjSlRMUVNWbElsekZVZ2dwSThpY2tNYkFWRWJJK3lwSWxpUEc2UjVJbDV6NGtYRUYzQTB4SnAxR3l3YThwRlFlUEtIQW1EZHQ2K0E5Y0pWUUVLNXlXbWhNVjhIR1pMUldrd3JGOFBaTWdwR1BmR2g3SVVOQlVVYzZjQUtSQ2NWRVlyYmxBYVp4dEtFT3JzcWo4Vi9VUzg1enhYZCtmVUd3RDcwaWNrUnd5ZjdBUkFDemlxVVlvKzhJcm10L2pVWUQ5aVQrWVltTklLRlBBQ0F1dnlISWFRRVVTSFlnejBHOHJvcmdDOHJwNXF2YUVaVnAzcHQwdThzdmUzVGlUQ3NTSXIwQTZsbEdyMVZ3ZmR3UHNtYjI1UGpqYlZ3cTJFY1pjbTZuUzZES1grSTNpVDF5UC9DeTQyVEJlNEZBSzBXaFpWdHU2YXpZYlplWmxCMFUyd3JwbmtRb3FxNDBVeXN0NjdScUI5elU4azY0b2xZZXFLbkdtTkN6V2lzZU9Vb0t3aExMb0sxRXhrWklTVmc5NWNyM1pOL1lxZHVlU1lXNjQ5L21kcmZKQVpPUU0zYjNiOTZEUnVoVmszMjYxa2tGdmV4d2U0MVVRdEpOMTJ1NUd6NkdjUFQ3UG43MUg3MHQ2OUNQY2J4L2E5cmNqM3JEdXdsazR4cHJLQ0E1Vk4rb0pqc2FCMlIvNzVzUWZlek0zR0l4SDVteUtUNlBOL1FFcnREd2dGUUU2RTlWRENMVVp0TjhGMzBLbzBLOUlxWFRSdWJuWjhIcEZsWnR6QXlZVUdiL3J5T09JY1lWV1ZDcEJsNWtDalV3bFVoeUYybVk4MFdhb1h4ZHpFaE9XZTJZc05vUlJXV3hNdDZ4WC9oSDZQNXV4RjhiM3JMSklsejFMcFFXOTVwUVB2cWZMcTBrbXdvaEllTHMybDlQTXpmUTQ4THZ2V1RiZk1ZMUFYRGc5S0pETENWMkM5SFVNSCtDYUpmT2Z1ZGkvdjBrSUdWc3dMQUlVRU1ROVg3N2dxR0JkZkgwSEl6QmFWOE5hZFBVQ0ZCbitSaVVBNEQrSXFWUXBUVG91TFZZNjZhQ0dYMDIxMjEnLFxuICAgICdiaXRidWNrZXQnOiAnQUFBQm1nME9EQW9QZU5wOVVsMXYwekFVZmMrdnNNUmJKYWRKdGpHcFVpUzJKSlJPTk9sYUI0U0FCOWU5VzB4VHU3SnZDdjMzZUltRE9vUjR2ZWZlNC9QaE41OWhSNWJja1BpV1JOZXpLSjVGQ1prdkdVbWlKQTR5clpBTExQa0JVckhYb3RFbnU1ZUJSVzZiOEtNVW9DeXc4eEg2QlZaczJLS2NlM1RKcFVKUVhBa29maDJsT2VjY0lWMWRmUmhKQzdmUlhySnV3SnpBTFBMMC9xRitwSTlYR2FQeit1R0dzcHZia2RSeDhBd2NyMG5SZE9DbmxYbm1TbHFPVXF2MERsdHVyZVRLZzZ2T2lJWmI2SjlQb3ZpYVJtOXBISHMwTTlDZi9SdjFEdi9TUDVsTXlvclI5OVdhcnRaVlhtZHNVWlcwM2hRT1NIdENGK24yVExBQjRobElvWVRlZ1NGSG8zK0FRUEsxUVR4K20wMm56enJrbytKUTZNTzBIUzRvREJmZlE1SnJvalNTbmJSbzVMWkRjTXpTRXRSRWRCYjFBWXdOUnpzWGZmMEpnakN3TGpHLzRtQjVnaUUrSnpoYkYzZXN5T245bHhmMUYyMTQ1YTZPV3UyVi9xbUMvMmRWZG9jdG1PcXB0azVQR2lkK1hKeDQydzNOUFBIV1F1RDlmWEpiTDhQa3RmTGhVMkF2K04ycllNWTZ1VUVGcG5jWS9BWUNnZkZBTUN3Q0ZIemtCbGtHSC92UmRUZWVCU2ZVTXpVRGI0VzJBaFF5TTg5M1dQZzJROG9RQVlSZEJTeUtlVlVkb2c9PVgwMmpyJyxcbiAgICAnYmFtYm9vJzogJ0FBQUIzdzBPREFvUGVOcDlVbHRyMnpBWWZmZXZFT3d0b01SMTBxWUxHSmJZV3NubzdHQTdnOTBlWlBscm90V1dqQ1Nuelg3OUZGOElZV2tmRFBKM09lZHd6dmNoMnpkb1dTdmt6cEY3djVqZExyd3BDa2lhSWMvMVBPZVJNeEFhc21NTkVhM0F6MnhuSFQwNGdRSnF1QlFoTmVCNzd2UUd1elBzM2prNXJYSXB4NVFaZmdEZnFBYUdVdFJVT2FqNGFkWCtQa3BHeStVT2hORSt2bkdHNWxhRGFnczlMM210dVRvT0pGNVBramE1Wm9yWEp3RVhIRytwSlFkYU52Uy9jWXRMQXlzQlZGZnUxOWVodnhYUFFyNElKd1YxQUdVTEt6SW5lQmIrOFBCZC9HV09INllmNzUxTm85aWVhdWpsZVlNSEtZbDgrK0ZiMTNWR28xRVVaL2h6bk9CTkVvZmJJRnZIRWQ2bXhEYjgxa1FvVUg1RVpnK29wMGRFTUZtQVFyV1NmNEFaOUhOdlRQMXJNWm5zckxHbXBGcHpLc1pNVnBPeTI4RFFiZndlbzFBaUlRMHF1RGFLNTQwQmk4dzFNaEt4Umh0WldYdkhUZ2huK3pMUUJ2VTQ2RWxhMXJMWmNZRUtPRUFwYXp2dmZLWGNlaVNvWUcva2NUWGhUVWxGRytYVmJnS1ZOSEErZ0Y3Qk44dDNVdVU1c2RwUndYVVhHbm1sVlYwQ0NtUlZVM0c4RXZmNU1LVXc5dnFJRlYzNnRYN21vTmpmbzdDUFR4ZmVuWklKRXJMTVNJaFgzMDlwdkRkOFNVZ0szc21LTXBKc2tuVktCdHIyNnQ0RCtnZDNBQzVxTUN3Q0ZIT2FUV2ZGdkxDTEpQZnQzcWt0Vm8zRmFmbVpBaFJvamI5SUF4ajhLRXFQRFF5MHN0b3MzOTRTUVE9PVgwMm1xJ1xufTtcbmV4cG9ydCBjb25zdCBhcHAzaG91ciA9ICdBQUFCQ0EwT0RBb1BlTnBkajAxUHdrQVVSZmZ6S3laeFoxSXlVekFSa2xsUTI0Z1JhUU10R25hUDhWRW10alBOZkZUNTl5SlZGeXpmdWJrbjc5NlV4MEJ6NlNtYlVNNW5iRHpqOTdSSVN4b3pIcE1VbmJTcTg4cG9VYUx6dEZFU3RVTjZNSloyVGFpVnB1L1lZMk02dEk2c1FydEhteDhxZDc0RVorVEJJdnlVVS9Bb1lzN2ppRTBqemtuV1F4TXVpZkEySUJsVWJuUTdBdWxWandOOUFhVTlhdEFTczY5TzJkTkZVNHdYSkxjMWFPVUd3OXczNEp3Q1RUWm9lN1JQcVVnZXAyWDBWbTBuMGZOdXQ0Z1N4bC9KY25qOW5GYjZRNXRQL1VldTNMKzBQSFc0Z2haRm1tMnpaVjVrNi85NUNiUjdZOWJZR28vekdyVjNJcjRqUmJEeUNBNnZ0MzRETzhwM1NEQXNBaFFuSmpMRDVrOUZyM3VhSXprWEtmODNvNXZEZFFJVWU0WGVxdU5DQzNEKzlodDlaWWhOWkZLbW5oYz1YMDJkaCc7XG4iLCJpbXBvcnQgeyByZWFscGF0aFN5bmMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luIH0gZnJvbSAncGF0aCc7XG5leHBvcnQgY29uc3QgdG9BYnNvbHV0ZVBhdGggPSAocmVsYXRpdmVQYXRoKSA9PiB7XG4gICAgY29uc3QgWywgZmlsZVBhdGhdID0gcHJvY2Vzcy5hcmd2O1xuICAgIGNvbnN0IGV4ZWN1dGFibGVGaWxlRGlyID0gZGlybmFtZShyZWFscGF0aFN5bmMoZmlsZVBhdGgpKTtcbiAgICBjb25zdCBiYXNlZGlyID0gZXhlY3V0YWJsZUZpbGVEaXIuc3Vic3RyaW5nKDAsIGV4ZWN1dGFibGVGaWxlRGlyLmluZGV4T2YoJ2RjZHgnKSArIDQpO1xuICAgIHJldHVybiBqb2luKGJhc2VkaXIsIHJlbGF0aXZlUGF0aC5yZXBsYWNlQWxsKCcuLi8nLCAnJykpO1xufTtcbiIsImV4cG9ydCBjb25zdCBuZXR3b3JrID0ge1xuICAgIG5hbWU6ICdzaGFyZWQnLFxuICAgIGRyaXZlcjogJ2JyaWRnZSdcbn07XG4iLCJpbXBvcnQgeyBzcGF3biB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHsgZG93bkFsbCwgcHMsIHN0b3AsIHVwQWxsIH0gZnJvbSAnZG9ja2VyLWNvbXBvc2UvZGlzdC92Mi5qcyc7XG5pbXBvcnQgeyBncmFjZWZ1bEV4aXQgfSBmcm9tICdleGl0LWhvb2snO1xuaW1wb3J0IHsgZHVtcCB9IGZyb20gJ2pzLXlhbWwnO1xuaW1wb3J0IHsgY3dkIH0gZnJvbSAncHJvY2Vzcyc7XG5pbXBvcnQgeyBDb25uZWN0aW9uQWNxdWlyZVRpbWVvdXRFcnJvciwgQ29ubmVjdGlvbkVycm9yLCBDb25uZWN0aW9uUmVmdXNlZEVycm9yLCBDb25uZWN0aW9uVGltZWRPdXRFcnJvciwgU2VxdWVsaXplLCBUaW1lb3V0RXJyb3IgfSBmcm9tICdzZXF1ZWxpemUnO1xuaW1wb3J0IHsgbmV0d29yayB9IGZyb20gJy4uL2hlbHBlcnMvbmV0d29yayc7XG5leHBvcnQgY2xhc3MgQmFzZSB7XG4gICAgb3B0aW9ucztcbiAgICBzZXF1ZWxpemU7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9yXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICAvLyBXZSBuZWVkIHRvIHVzZSAnbWFzdGVyJyBmb3IgbXNzcWwgYmVjYXVzZSBpdCBkb2VzIG5vdCBpbml0aWFsaXplIHRoZSBkYXRhYmFzZSBvbiBzdGFydFxuICAgICAgICBjb25zdCBkYXRhYmFzZSA9IHRoaXMub3B0aW9ucy5uYW1lID09PSAnbXNzcWwnID8gJ21hc3RlcicgOiB0aGlzLm9wdGlvbnMuZGF0YWJhc2U7XG4gICAgICAgIHRoaXMuc2VxdWVsaXplID0gbmV3IFNlcXVlbGl6ZShkYXRhYmFzZSwgdGhpcy5vcHRpb25zLnVzZXJuYW1lLCB0aGlzLm9wdGlvbnMucGFzc3dvcmQsIHtcbiAgICAgICAgICAgIGhvc3Q6ICdsb2NhbGhvc3QnLFxuICAgICAgICAgICAgcG9ydDogdGhpcy5vcHRpb25zLnBvcnQsXG4gICAgICAgICAgICBkaWFsZWN0OiB0aGlzLm9wdGlvbnMubmFtZS5yZXBsYWNlKCdwb3N0Z3Jlc3FsJywgJ3Bvc3RncmVzJyksXG4gICAgICAgICAgICByZXRyeToge1xuICAgICAgICAgICAgICAgIG1heDogMzAsXG4gICAgICAgICAgICAgICAgbWF0Y2g6IFtDb25uZWN0aW9uRXJyb3IsIFRpbWVvdXRFcnJvciwgQ29ubmVjdGlvblRpbWVkT3V0RXJyb3IsIENvbm5lY3Rpb25SZWZ1c2VkRXJyb3IsIENvbm5lY3Rpb25BY3F1aXJlVGltZW91dEVycm9yXSxcbiAgICAgICAgICAgICAgICBiYWNrb2ZmQmFzZTogMTAwMCxcbiAgICAgICAgICAgICAgICBiYWNrb2ZmRXhwb25lbnQ6IDFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsb2dnaW5nOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFB1YmxpYyBNZXRob2RzXG4gICAgYXN5bmMgcnVuKHNxbCwgbG9nZ2luZykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXF1ZWxpemUucXVlcnkoc3FsLCB7IGxvZ2dpbmcgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgdHJ5aW5nIHRvIHJ1biB0aGUgZm9sbG93aW5nIFNRTCBxdWVyeTonLCBzcWwsIGVycik7XG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgc3RhcnQoY2xlYW4gPSB0aGlzLm9wdGlvbnMuY2xlYW4pIHtcbiAgICAgICAgY29uc29sZS5sb2coYFN0YXJ0aW5nIGluc3RhbmNlIG9mICR7dGhpcy5vcHRpb25zLm5hbWV9Li4uIPCfkoNgKTtcbiAgICAgICAgaWYgKGNsZWFuKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmRvd24oKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLnVwKCk7XG4gICAgICAgIGNvbnN0IGlzQXZhaWxhYmxlID0gYXdhaXQgdGhpcy53YWl0VW50aWxSZWFkeSgpO1xuICAgICAgICBpZiAoIWlzQXZhaWxhYmxlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgRmFpbGVkIHRvIHZlcmlmeSBzdGF0dXMgb2YgJHt0aGlzLm9wdGlvbnMubmFtZX0g4puUYCk7XG4gICAgICAgICAgICBncmFjZWZ1bEV4aXQoMSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgRGF0YWJhc2UgaXMgcmVhZHkgYW5kIGFjY2VwdGluZyBjb25uZWN0aW9ucyBvbiBsb2NhbGhvc3Q6JHt0aGlzLm9wdGlvbnMucG9ydH0g8J+XhO+4j2ApO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLm9uRGF0YWJhc2VSZWFkeSgpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZXJ2aWNlID0gYXdhaXQgdGhpcy5nZXRTZXJ2aWNlU3RhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlcnZpY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc2hvd0RvY2tlckxvZ3Moc2VydmljZS5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICBncmFjZWZ1bEV4aXQoMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgc3RvcChwcnVuZSA9IHRoaXMub3B0aW9ucy5wcnVuZSkge1xuICAgICAgICBpZiAocHJ1bmUpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZG93bigpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgY29uZmlnQXNTdHJpbmcgPSBkdW1wKHRoaXMuZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpKTtcbiAgICAgICAgICAgIGF3YWl0IHN0b3Aoe1xuICAgICAgICAgICAgICAgIGN3ZDogY3dkKCksXG4gICAgICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICAgICAgbG9nOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBvbkRhdGFiYXNlUmVhZHkoKSB7IH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJpdmF0ZSBNZXRob2RzXG4gICAgZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNlcnZpY2VzOiB7XG4gICAgICAgICAgICAgICAgJ2RiJzogdGhpcy5nZXRTZXJ2aWNlKClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuZXR3b3Jrczoge1xuICAgICAgICAgICAgICAgICdzaGFyZWQnOiBuZXR3b3JrXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuICAgIGFzeW5jIHVwKCkge1xuICAgICAgICBjb25zdCBjb25maWdBc1N0cmluZyA9IGR1bXAodGhpcy5nZXREb2NrZXJDb21wb3NlQ29uZmlnKCkpO1xuICAgICAgICByZXR1cm4gdXBBbGwoe1xuICAgICAgICAgICAgY3dkOiBjd2QoKSxcbiAgICAgICAgICAgIGNvbmZpZ0FzU3RyaW5nLFxuICAgICAgICAgICAgbG9nOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyBkb3duKCkge1xuICAgICAgICBjb25zdCBjb25maWdBc1N0cmluZyA9IGR1bXAodGhpcy5nZXREb2NrZXJDb21wb3NlQ29uZmlnKCkpO1xuICAgICAgICByZXR1cm4gZG93bkFsbCh7XG4gICAgICAgICAgICBjd2Q6IGN3ZCgpLFxuICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICBjb21tYW5kT3B0aW9uczogWyctdicsICctLXJlbW92ZS1vcnBoYW5zJywgJy0tcm1pJywgJ2xvY2FsJ10sXG4gICAgICAgICAgICBsb2c6IHRydWVcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIHdhaXRVbnRpbFJlYWR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXF1ZWxpemUuYXV0aGVudGljYXRlKCkudGhlbigoKSA9PiB0cnVlKS5jYXRjaCgoKSA9PiBmYWxzZSk7XG4gICAgfVxuICAgIGFzeW5jIGdldFNlcnZpY2VTdGF0ZSgpIHtcbiAgICAgICAgY29uc3QgY29uZmlnQXNTdHJpbmcgPSBkdW1wKHRoaXMuZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcHMoe1xuICAgICAgICAgICAgY3dkOiBjd2QoKSxcbiAgICAgICAgICAgIGNvbmZpZ0FzU3RyaW5nLFxuICAgICAgICAgICAgY29tbWFuZE9wdGlvbnM6IFsnLS1hbGwnXSxcbiAgICAgICAgICAgIGxvZzogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQuZGF0YS5zZXJ2aWNlcy5maW5kKGl0ZW0gPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFydHMgPSBpdGVtLm5hbWUuc3BsaXQoJy0nKTtcbiAgICAgICAgICAgIGNvbnN0IHNlcnZpY2UgPSBwYXJ0c1twYXJ0cy5sZW5ndGggLSAyXTtcbiAgICAgICAgICAgIHJldHVybiBzZXJ2aWNlID09PSB0aGlzLm9wdGlvbnMubmFtZTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIHNob3dEb2NrZXJMb2dzKHNlcnZpY2UpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRvY2tlciA9IHNwYXduKCdkb2NrZXInLCBbJ2xvZ3MnLCAnLWYnLCAnLW4nLCAnNTAwMCcsIHNlcnZpY2VdLCB7IHN0ZGlvOiAnaW5oZXJpdCcgfSk7XG4gICAgICAgICAgICBkb2NrZXIub24oJ2V4aXQnLCAoY29kZSkgPT4gKGNvZGUgPT09IDApID8gcmVzb2x2ZSgpIDogcmVqZWN0KG5ldyBFcnJvcihgRG9ja2VyIGV4aXRlZCB3aXRoIGNvZGUgJHtjb2RlfWApKSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsImltcG9ydCB7IE1TU1FMT3B0aW9ucyB9IGZyb20gJy4uL3R5cGVzL0RhdGFiYXNlJztcbmltcG9ydCB7IEJhc2UgfSBmcm9tICcuL2Jhc2UnO1xuZXhwb3J0IGNsYXNzIE1TU1FMIGV4dGVuZHMgQmFzZSB7XG4gICAgb3B0aW9ucztcbiAgICBnZXQgdXJsKCkge1xuICAgICAgICByZXR1cm4gYGpkYmM6c3Fsc2VydmVyOi8vZGI6JHt0aGlzLm9wdGlvbnMucG9ydH07ZGF0YWJhc2VOYW1lPSR7dGhpcy5vcHRpb25zLmRhdGFiYXNlfTt0cnVzdFNlcnZlckNlcnRpZmljYXRlPXRydWVgO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zID0gTVNTUUxPcHRpb25zLnBhcnNlKHt9KSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3RlY3RlZCBNZXRob2RzXG4gICAgYXN5bmMgb25EYXRhYmFzZVJlYWR5KCkge1xuICAgICAgICBhd2FpdCB0aGlzLnJ1bihgQ1JFQVRFIERBVEFCQVNFICR7dGhpcy5vcHRpb25zLmRhdGFiYXNlfWApO1xuICAgICAgICBhd2FpdCB0aGlzLnJ1bihgQUxURVIgREFUQUJBU0UgJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9IENPTExBVEUgU1FMX0xhdGluMV9HZW5lcmFsX0NQMV9DU19BU2ApO1xuICAgICAgICBhd2FpdCB0aGlzLnJ1bihgQUxURVIgREFUQUJBU0UgJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9IFNFVCBSRUFEX0NPTU1JVFRFRF9TTkFQU0hPVCBPTiBXSVRIIFJPTExCQUNLIElNTUVESUFURTtgKTtcbiAgICB9XG4gICAgZ2V0U2VydmljZSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGltYWdlOiBgbWNyLm1pY3Jvc29mdC5jb20vbXNzcWwvc2VydmVyOiR7dGhpcy5vcHRpb25zLnRhZ31gLFxuICAgICAgICAgICAgcG9ydHM6IFtgJHt0aGlzLm9wdGlvbnMucG9ydCB8fCAxNDMzfToxNDMzYF0sXG4gICAgICAgICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAgICAgICAgIEFDQ0VQVF9FVUxBOiAneScsXG4gICAgICAgICAgICAgICAgTVNTUUxfU0FfUEFTU1dPUkQ6IHRoaXMub3B0aW9ucy5wYXNzd29yZCB8fCAnZGNkeCcsXG4gICAgICAgICAgICAgICAgTVNTUUxfUElEOiB0aGlzLm9wdGlvbnMuZWRpdGlvblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5ldHdvcmtzOiB7XG4gICAgICAgICAgICAgICAgJ3NoYXJlZCc6IHtcbiAgICAgICAgICAgICAgICAgICAgYWxpYXNlczogWydkYicsICdkYXRhYmFzZSddXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG59XG4iLCJpbXBvcnQgeyBNeVNRTE9wdGlvbnMgfSBmcm9tICcuLi90eXBlcy9EYXRhYmFzZSc7XG5pbXBvcnQgeyBCYXNlIH0gZnJvbSAnLi9iYXNlJztcbmV4cG9ydCBjbGFzcyBNeVNRTCBleHRlbmRzIEJhc2Uge1xuICAgIG9wdGlvbnM7XG4gICAgZ2V0IHVybCgpIHtcbiAgICAgICAgcmV0dXJuIGBqZGJjOm15c3FsOi8vZGI6JHt0aGlzLm9wdGlvbnMucG9ydH0vJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9P3Nlc3Npb25WYXJpYWJsZXM9dHJhbnNhY3Rpb25faXNvbGF0aW9uPSdSRUFELUNPTU1JVFRFRCdgO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zID0gTXlTUUxPcHRpb25zLnBhcnNlKHt9KSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3RlY3RlZCBNZXRob2RzXG4gICAgYXN5bmMgb25EYXRhYmFzZVJlYWR5KCkge1xuICAgICAgICBhd2FpdCB0aGlzLnJ1bihgQUxURVIgREFUQUJBU0UgJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9IENIQVJBQ1RFUiBTRVQgJ3V0ZjhtYjQnIENPTExBVEUgdXRmOG1iNF9iaW5gKTtcbiAgICB9XG4gICAgZ2V0U2VydmljZSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGltYWdlOiBgbXlzcWw6JHt0aGlzLm9wdGlvbnMudGFnfWAsXG4gICAgICAgICAgICBwb3J0czogW2Ake3RoaXMub3B0aW9ucy5wb3J0IHx8IDMzMDZ9OjMzMDZgXSxcbiAgICAgICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgICAgICAgTVlTUUxfUk9PVF9QQVNTV09SRDogdGhpcy5vcHRpb25zLnBhc3N3b3JkIHx8ICdkY2R4JyxcbiAgICAgICAgICAgICAgICBNWVNRTF9VU0VSOiB0aGlzLm9wdGlvbnMudXNlcm5hbWUgfHwgJ2RjZHgnLFxuICAgICAgICAgICAgICAgIE1ZU1FMX1BBU1NXT1JEOiB0aGlzLm9wdGlvbnMucGFzc3dvcmQgfHwgJ2RjZHgnLFxuICAgICAgICAgICAgICAgIE1ZU1FMX0RBVEFCQVNFOiB0aGlzLm9wdGlvbnMuZGF0YWJhc2UgfHwgJ2RjZHgnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29tbWFuZDogWyctLWxvZ19iaW5fdHJ1c3RfZnVuY3Rpb25fY3JlYXRvcnM9MSddLFxuICAgICAgICAgICAgbmV0d29ya3M6IHtcbiAgICAgICAgICAgICAgICAnc2hhcmVkJzoge1xuICAgICAgICAgICAgICAgICAgICBhbGlhc2VzOiBbJ2RiJywgJ2RhdGFiYXNlJ11cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfTtcbn1cbiIsImltcG9ydCB7IFBvc3RncmVTUUxPcHRpb25zIH0gZnJvbSAnLi4vdHlwZXMvRGF0YWJhc2UnO1xuaW1wb3J0IHsgQmFzZSB9IGZyb20gJy4vYmFzZSc7XG5leHBvcnQgY2xhc3MgUG9zdGdyZXMgZXh0ZW5kcyBCYXNlIHtcbiAgICBvcHRpb25zO1xuICAgIGdldCB1cmwoKSB7XG4gICAgICAgIHJldHVybiBgamRiYzpwb3N0Z3Jlc3FsOi8vZGI6JHt0aGlzLm9wdGlvbnMucG9ydH0vJHt0aGlzLm9wdGlvbnMuZGF0YWJhc2V9YDtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0cnVjdG9yXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucyA9IFBvc3RncmVTUUxPcHRpb25zLnBhcnNlKHt9KSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3RlY3RlZCBNZXRob2RzXG4gICAgZ2V0U2VydmljZSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGltYWdlOiBgcG9zdGdyZXM6JHt0aGlzLm9wdGlvbnMudGFnfWAsXG4gICAgICAgICAgICBwb3J0czogW2Ake3RoaXMub3B0aW9ucy5wb3J0IHx8IDU0MzJ9OjU0MzJgXSxcbiAgICAgICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgICAgICAgUE9TVEdSRVNfVVNFUjogdGhpcy5vcHRpb25zLnVzZXJuYW1lIHx8ICdkY2R4JyxcbiAgICAgICAgICAgICAgICBQT1NUR1JFU19QQVNTV09SRDogdGhpcy5vcHRpb25zLnBhc3N3b3JkIHx8ICdkY2R4JyxcbiAgICAgICAgICAgICAgICBQT1NUR1JFU19EQjogdGhpcy5vcHRpb25zLmRhdGFiYXNlIHx8ICdkY2R4JyxcbiAgICAgICAgICAgICAgICBQT1NUR1JFU19IT1NUX0FVVEhfTUVUSE9EOiAnbWQ1JyxcbiAgICAgICAgICAgICAgICBQT1NUR1JFU19JTklUREJfQVJHUzogJy0tZW5jb2Rpbmc9VVRGLTggLS1sYy1jb2xsYXRlPUMgLS1sYy1jdHlwZT1DJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5ldHdvcmtzOiB7XG4gICAgICAgICAgICAgICAgJ3NoYXJlZCc6IHtcbiAgICAgICAgICAgICAgICAgICAgYWxpYXNlczogWydkYicsICdkYXRhYmFzZSddXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG59XG4iLCJpbXBvcnQgeyBNU1NRTCB9IGZyb20gJy4uL2RhdGFiYXNlcy9tc3NxbCc7XG5pbXBvcnQgeyBNeVNRTCB9IGZyb20gJy4uL2RhdGFiYXNlcy9teXNxbCc7XG5pbXBvcnQgeyBQb3N0Z3JlcyB9IGZyb20gJy4uL2RhdGFiYXNlcy9wb3N0Z3Jlcyc7XG5pbXBvcnQgeyBNU1NRTE9wdGlvbnMsIE15U1FMT3B0aW9ucywgUG9zdGdyZVNRTE9wdGlvbnMsIFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcyB9IGZyb20gJy4uL3R5cGVzL0RhdGFiYXNlJztcbmV4cG9ydCBjb25zdCBnZXREYXRhYmFzZUVuZ2luZSA9IChvcHRpb25zLCB0YWcpID0+IHtcbiAgICBzd2l0Y2ggKG9wdGlvbnMubmFtZSkge1xuICAgICAgICBjYXNlIFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbDpcbiAgICAgICAgICAgIHJldHVybiBuZXcgUG9zdGdyZXMoUG9zdGdyZVNRTE9wdGlvbnMucGFyc2UoeyAuLi5vcHRpb25zLCB0YWcgfSkpO1xuICAgICAgICBjYXNlIFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMubXlzcWw6XG4gICAgICAgICAgICByZXR1cm4gbmV3IE15U1FMKE15U1FMT3B0aW9ucy5wYXJzZSh7IC4uLm9wdGlvbnMsIHRhZyB9KSk7XG4gICAgICAgIGNhc2UgU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5tc3NxbDpcbiAgICAgICAgICAgIHJldHVybiBuZXcgTVNTUUwoTVNTUUxPcHRpb25zLnBhcnNlKHsgLi4ub3B0aW9ucywgdGFnIH0pKTtcbiAgICB9XG59O1xuIiwiaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7XG5leHBvcnQgY29uc3QgZ2V0Wm9kRGVmYXVsdCA9IChzY2hlbWEsIGtleSkgPT4ge1xuICAgIGNvbnN0IGRlZmF1bHRzID0gZ2V0Wm9kRGVmYXVsdHMoc2NoZW1hKTtcbiAgICByZXR1cm4gZGVmYXVsdHNba2V5XTtcbn07XG4vLyBDb2RlIHNuaXBwZXQgYnkgSmFjb2IgV2Vpc2VuYnVyZ2VyIChodHRwczovL2dpdGh1Yi5jb20vSmFjb2JXZWlzZW5idXJnZXIpXG4vLyBUYWtlbiBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9jb2xpbmhhY2tzL3pvZC9kaXNjdXNzaW9ucy8xOTUzI2Rpc2N1c3Npb25jb21tZW50LTQ4MTE1ODhcbmV4cG9ydCBjb25zdCBnZXRab2REZWZhdWx0cyA9IChzY2hlbWEpID0+IHtcbiAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHNjaGVtYS5zaGFwZSkuZmlsdGVyKChbLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2Ygei5ab2REZWZhdWx0KSB7XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSB2YWx1ZS5fZGVmLmRlZmF1bHRWYWx1ZSgpO1xuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgZGVmYXVsdFZhbHVlICE9PSAndW5kZWZpbmVkJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSkubWFwKChba2V5LCB2YWx1ZV0pID0+IChba2V5LCB2YWx1ZS5fZGVmLmRlZmF1bHRWYWx1ZSgpXSkpKTtcbn07XG4iLCJpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB7IGRvd25BbGwsIGxvZ3MsIHBzLCBzdG9wLCB1cEFsbCB9IGZyb20gJ2RvY2tlci1jb21wb3NlL2Rpc3QvdjIuanMnO1xuaW1wb3J0IHsgZ3JhY2VmdWxFeGl0IH0gZnJvbSAnZXhpdC1ob29rJztcbmltcG9ydCB7IGV4aXN0c1N5bmMsIG1rZGlyU3luYyB9IGZyb20gJ2ZzJztcbmltcG9ydCB7IGR1bXAgfSBmcm9tICdqcy15YW1sJztcbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tICdvcyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBhcmNoLCBjd2QgfSBmcm9tICdwcm9jZXNzJztcbmltcG9ydCBzZW12ZXIgZnJvbSAnc2VtdmVyJztcbmltcG9ydCBzaW1wbGVHaXQgZnJvbSAnc2ltcGxlLWdpdCc7XG5pbXBvcnQgeyBnZXREYXRhYmFzZUVuZ2luZSB9IGZyb20gJy4uL2hlbHBlcnMvZ2V0RGF0YWJhc2VFbmdpbmUnO1xuaW1wb3J0IHsgZ2V0Wm9kRGVmYXVsdHMgfSBmcm9tICcuLi9oZWxwZXJzL2dldFpvZERlZmF1bHRzJztcbmltcG9ydCB7IG5ldHdvcmsgfSBmcm9tICcuLi9oZWxwZXJzL25ldHdvcmsnO1xuaW1wb3J0IHsgRGF0YWJhc2VPcHRpb25zLCBNU1NRTE9wdGlvbnMsIE15U1FMT3B0aW9ucywgUG9zdGdyZVNRTE9wdGlvbnMsIFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcyB9IGZyb20gJy4uL3R5cGVzL0RhdGFiYXNlJztcbmNvbnN0IGJhc2VkaXIgPSBqb2luKGhvbWVkaXIoKSwgJy5kY2R4Jyk7XG5leHBvcnQgY2xhc3MgQmFzZSB7XG4gICAgb3B0aW9ucztcbiAgICBkYXRhYmFzZTtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uc3RydWN0b3JcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgICAgIHRoaXMuZGF0YWJhc2UgPSB0aGlzLmdldERhdGFiYXNlRW5naW5lKG9wdGlvbnMuZGF0YWJhc2UsIG9wdGlvbnMuZGF0YWJhc2VUYWcpO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJvcGVydGllc1xuICAgIGdldCBiYXNlVXJsKCkge1xuICAgICAgICBsZXQgYmFzZVVybCA9IGBodHRwOi8vbG9jYWxob3N0YDtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5wb3J0KSB7XG4gICAgICAgICAgICBiYXNlVXJsICs9IGA6JHt0aGlzLm9wdGlvbnMucG9ydH1gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuY29udGV4dFBhdGggPyBgJHtiYXNlVXJsfS8ke3RoaXMub3B0aW9ucy5jb250ZXh0UGF0aH1gIDogYmFzZVVybDtcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFB1YmxpYyBNZXRob2RzXG4gICAgYXN5bmMgc3RhcnQoKSB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuY2xlYW4pIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZG93bigpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzQnVpZFJlcXVpcmVkKCkpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuYnVpbGQodGhpcy5vcHRpb25zLnRhZyk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5kYXRhYmFzZS5zdGFydCh0aGlzLm9wdGlvbnMuY2xlYW4pO1xuICAgICAgICBhd2FpdCB0aGlzLnVwKCk7XG4gICAgfVxuICAgIGFzeW5jIHN0b3AoKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuZGF0YWJhc2Uuc3RvcCh0aGlzLm9wdGlvbnMucHJ1bmUpO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnBydW5lKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmRvd24oKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZ0FzU3RyaW5nID0gZHVtcCh0aGlzLmdldERvY2tlckNvbXBvc2VDb25maWcoKSk7XG4gICAgICAgICAgICBhd2FpdCBzdG9wKHtcbiAgICAgICAgICAgICAgICBjd2Q6IHRoaXMub3B0aW9ucy5jd2QgfHwgY3dkKCksXG4gICAgICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICAgICAgbG9nOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyByZXNldCgpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5kYXRhYmFzZS5zdG9wKHRydWUpO1xuICAgICAgICBhd2FpdCB0aGlzLmRvd24oKTtcbiAgICB9XG4gICAgZ2V0SlZNQXJncygpIHtcbiAgICAgICAgY29uc3QgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUyA9IFtdO1xuICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1EdXBtLnBsdWdpbi51cGxvYWQuZW5hYmxlZD10cnVlJyk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGVidWcpIHtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLURqaXJhLmRldi5tb2RlPXRydWUnKTtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLURhdGxhc3NpYW4uZGV2Lm1vZGU9dHJ1ZScpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMud2F0Y2gpIHtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLURxdWlja3JlbG9hZC5kaXJzPS9vcHQvcXVpY2tyZWxvYWQnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUztcbiAgICB9XG4gICAgYXN5bmMgaXNBcHBsaWNhdGlvblJlYWR5KCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5nZXQoYCR7dGhpcy5iYXNlVXJsfS9zdGF0dXNgLCB7IHZhbGlkYXRlU3RhdHVzOiAoKSA9PiB0cnVlIH0pO1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnN0YXRlID09PSAnRklSU1RfUlVOJyB8fCBkYXRhLnN0YXRlID09PSAnUlVOTklORycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBUaGUgYXBwbGljYXRpb24gJHt0aGlzLm5hbWV9IGlzIHJlYWR5IG9uICR7dGhpcy5iYXNlVXJsfSDwn46JYCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0RGF0YWJhc2VFbmdpbmUobmFtZSwgdGFnKSB7XG4gICAgICAgIHJldHVybiBnZXREYXRhYmFzZUVuZ2luZShEYXRhYmFzZU9wdGlvbnMucGFyc2Uoe1xuICAgICAgICAgICAgLi4udGhpcy5nZXREZWZhdWx0T3B0aW9ucyhuYW1lKSxcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICBjd2Q6IHRoaXMub3B0aW9ucy5jd2RcbiAgICAgICAgfSksIHRhZyk7XG4gICAgfVxuICAgIGdldERvY2tlckJhc2VUYWcoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzQnVpZFJlcXVpcmVkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBgZGNkeC8ke3RoaXMubmFtZX06JHt0aGlzLm9wdGlvbnMudGFnfWA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5uYW1lID09PSAnamlyYScpIHtcbiAgICAgICAgICAgIHJldHVybiBgYXRsYXNzaWFuL2ppcmEtc29mdHdhcmU6JHt0aGlzLm9wdGlvbnMudGFnfWA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYGF0bGFzc2lhbi8ke3RoaXMubmFtZX06JHt0aGlzLm9wdGlvbnMudGFnfWA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByaXZhdGUgTWV0aG9kc1xuICAgIGdldERvY2tlckNvbXBvc2VDb25maWcoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzZXJ2aWNlczoge1xuICAgICAgICAgICAgICAgIFt0aGlzLm5hbWVdOiB0aGlzLmdldFNlcnZpY2UoKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5ldHdvcmtzOiB7XG4gICAgICAgICAgICAgICAgJ3NoYXJlZCc6IG5ldHdvcmtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG4gICAgYXN5bmMgdXAoKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpO1xuICAgICAgICBjb25zdCBjb25maWdBc1N0cmluZyA9IGR1bXAoY29uZmlnKTtcbiAgICAgICAgYXdhaXQgdXBBbGwoe1xuICAgICAgICAgICAgY3dkOiB0aGlzLm9wdGlvbnMuY3dkIHx8IGN3ZCgpLFxuICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICBsb2c6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBpc0F2YWlsYWJsZSA9IGF3YWl0IHRoaXMud2FpdFVudGlsUmVhZHkoKTtcbiAgICAgICAgaWYgKCFpc0F2YWlsYWJsZSkge1xuICAgICAgICAgICAgY29uc3Qgc2VydmljZSA9IGF3YWl0IHRoaXMuZ2V0U2VydmljZVN0YXRlKCk7XG4gICAgICAgICAgICBjb25zdCBpc1J1bm5pbmcgPSBzZXJ2aWNlICYmIHNlcnZpY2Uuc3RhdGUudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCd1cCcpO1xuICAgICAgICAgICAgaWYgKCFpc1J1bm5pbmcpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgRmFpbGVkIHRvIHN0YXJ0ICR7dGhpcy5uYW1lfSDim5RgKTtcbiAgICAgICAgICAgICAgICBhd2FpdCBsb2dzKE9iamVjdC5rZXlzKGNvbmZpZy5zZXJ2aWNlcyksIHtcbiAgICAgICAgICAgICAgICAgICAgY3dkOiB0aGlzLm9wdGlvbnMuY3dkIHx8IGN3ZCgpLFxuICAgICAgICAgICAgICAgICAgICBjb25maWdBc1N0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgbG9nOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgQ291bGQgbm90IGNvbmZpcm0gc3RhdGUgb2YgJHt0aGlzLm5hbWV9LCBidXQgdGhlIGNvbnRhaW5lciBpcyBydW5uaW5nLiBQbGVhc2UgY29uc3VsdCB0aGUgYXBwbGljYXRpb24gbG9ncyDwn5GHYCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy50YWlsQXBwbGljYXRpb25Mb2dzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnRhaWxBcHBsaWNhdGlvbkxvZ3MoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBXZSBhcmUgZXhpdGluZyB3aXRoIGFuIGVycm9yIGNvZGVcbiAgICAgICAgLy8gVGhpcyBpcyB0byB0cmlnZ2VyIGEgZ3JhY2VmdWwgc2h1dCBkb3duIG9mIHRoZSBhcHBsaWNhdGlvblxuICAgICAgICBncmFjZWZ1bEV4aXQoMSk7XG4gICAgfVxuICAgIGFzeW5jIGRvd24oKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ0FzU3RyaW5nID0gZHVtcCh0aGlzLmdldERvY2tlckNvbXBvc2VDb25maWcoKSk7XG4gICAgICAgIGF3YWl0IGRvd25BbGwoe1xuICAgICAgICAgICAgY3dkOiB0aGlzLm9wdGlvbnMuY3dkIHx8IGN3ZCgpLFxuICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICBjb21tYW5kT3B0aW9uczogWyctdicsICctLXJlbW92ZS1vcnBoYW5zJywgJy0tcm1pJywgJ2xvY2FsJ10sXG4gICAgICAgICAgICBsb2c6IHRydWVcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIGdldFNlcnZpY2VTdGF0ZSgpIHtcbiAgICAgICAgY29uc3QgY29uZmlnQXNTdHJpbmcgPSBkdW1wKHRoaXMuZ2V0RG9ja2VyQ29tcG9zZUNvbmZpZygpKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcHMoe1xuICAgICAgICAgICAgY3dkOiB0aGlzLm9wdGlvbnMuY3dkIHx8IGN3ZCgpLFxuICAgICAgICAgICAgY29uZmlnQXNTdHJpbmcsXG4gICAgICAgICAgICBjb21tYW5kT3B0aW9uczogWyctLWFsbCddLFxuICAgICAgICAgICAgbG9nOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdC5kYXRhLnNlcnZpY2VzLmZpbmQoaXRlbSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYXJ0cyA9IGl0ZW0ubmFtZS5zcGxpdCgnLScpO1xuICAgICAgICAgICAgY29uc3Qgc2VydmljZSA9IHBhcnRzW3BhcnRzLmxlbmd0aCAtIDJdO1xuICAgICAgICAgICAgcmV0dXJuIHNlcnZpY2UgPT09IHRoaXMubmFtZTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIHdhaXRVbnRpbFJlYWR5KGNvdW50ID0gMCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgV2FpdGluZyBmb3IgJHt0aGlzLm5hbWV9IHRvIGJlY29tZSBhdmFpbGFibGUuLi4gJHtjb3VudH1zYCk7XG4gICAgICAgIGNvbnN0IHNlcnZpY2UgPSBhd2FpdCB0aGlzLmdldFNlcnZpY2VTdGF0ZSgpO1xuICAgICAgICBpZiAoc2VydmljZSkge1xuICAgICAgICAgICAgY29uc3QgaXNSdW5uaW5nID0gc2VydmljZSAmJiBzZXJ2aWNlLnN0YXRlLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgndXAnKTtcbiAgICAgICAgICAgIGNvbnN0IGlzUmVhZHkgPSBpc1J1bm5pbmcgJiYgYXdhaXQgdGhpcy5pc0FwcGxpY2F0aW9uUmVhZHkoKTtcbiAgICAgICAgICAgIGlmIChpc1JlYWR5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjb3VudCA+PSAxMjApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMTAwMCkpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMud2FpdFVudGlsUmVhZHkoY291bnQgKyAxKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjb3VudCA8IDEwKSB7XG4gICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMTAwMCkpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMud2FpdFVudGlsUmVhZHkoY291bnQgKyAxKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpc0J1aWRSZXF1aXJlZCgpIHtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy50YWcudG9Mb3dlckNhc2UoKSA9PT0gJ2xhdGVzdCcpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXJjaCA9PT0gJ2FybScgfHwgYXJjaCA9PT0gJ2FybTY0Jykge1xuICAgICAgICAgICAgY29uc3QgdmVyc2lvbiA9IHRoaXMub3B0aW9ucy50YWcuaW5jbHVkZXMoJy0nKVxuICAgICAgICAgICAgICAgID8gdGhpcy5vcHRpb25zLnRhZy5zbGljZSgwLCB0aGlzLm9wdGlvbnMudGFnLmluZGV4T2YoJy0nKSlcbiAgICAgICAgICAgICAgICA6IHRoaXMub3B0aW9ucy50YWc7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbVZlclZlcnNpb24gPSBzZW12ZXIuY29lcmNlKHZlcnNpb24pO1xuICAgICAgICAgICAgICAgIGlmIChzZW1WZXJWZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgPT09ICdqaXJhJyB8fCB0aGlzLm5hbWUgPT09ICdiYW1ib28nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VtdmVyLmx0KHNlbVZlclZlcnNpb24sICc5LjAuMCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubmFtZSA9PT0gJ2NvbmZsdWVuY2UnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VtdmVyLmx0KHNlbVZlclZlcnNpb24sICc4LjAuMCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubmFtZSA9PT0gJ2JpdGJ1Y2tldCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZW12ZXIubHQoc2VtVmVyVmVyc2lvbiwgJzguMi4wJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGFzeW5jIGJ1aWxkKHZlcnNpb24pIHtcbiAgICAgICAgY29uc3QgcmVwb3NpdG9yeVVybCA9IHRoaXMuZ2V0RG9ja2VyUmVwb3NpdG9yeVVybCgpO1xuICAgICAgICBjb25zdCBjaGVja291dFBhdGggPSBqb2luKGJhc2VkaXIsIHRoaXMubmFtZSwgJ3NvdXJjZScpO1xuICAgICAgICBpZiAoIWV4aXN0c1N5bmMoY2hlY2tvdXRQYXRoKSkge1xuICAgICAgICAgICAgbWtkaXJTeW5jKGpvaW4oYmFzZWRpciwgdGhpcy5uYW1lKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICAgICAgICBhd2FpdCBzaW1wbGVHaXQoKS5jbG9uZShyZXBvc2l0b3J5VXJsLCBjaGVja291dFBhdGgsIHsgJy0tcmVjdXJzZS1zdWJtb2R1bGUnOiBudWxsIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgYXdhaXQgc2ltcGxlR2l0KHsgYmFzZURpcjogY2hlY2tvdXRQYXRoIH0pLnB1bGwoeyAnLS1yZWN1cnNlLXN1Ym1vZHVsZSc6IG51bGwgfSk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZG9ja2VyID0gc3Bhd24oJ2RvY2tlcicsIFsnYnVpbGQnLCAnLXQnLCBgZGNkeC8ke3RoaXMubmFtZX06JHt2ZXJzaW9ufWAsICctLWJ1aWxkLWFyZycsIGAke3RoaXMubmFtZS50b1VwcGVyQ2FzZSgpfV9WRVJTSU9OPSR7dmVyc2lvbn1gLCAnLiddLCB7IGN3ZDogY2hlY2tvdXRQYXRoLCBzdGRpbzogJ2luaGVyaXQnIH0pO1xuICAgICAgICAgICAgZG9ja2VyLm9uKCdleGl0JywgKGNvZGUpID0+IChjb2RlID09PSAwKSA/IHJlc29sdmUoKSA6IHJlamVjdChuZXcgRXJyb3IoYERvY2tlciBleGl0ZWQgd2l0aCBjb2RlICR7Y29kZX1gKSkpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZ2V0RG9ja2VyUmVwb3NpdG9yeVVybCgpIHtcbiAgICAgICAgY29uc3Qgc3VmZml4ID0gdGhpcy5uYW1lID09PSAnamlyYSdcbiAgICAgICAgICAgID8gJ2F0bGFzc2lhbi1qaXJhJ1xuICAgICAgICAgICAgOiB0aGlzLm5hbWUgPT09ICdiYW1ib28nXG4gICAgICAgICAgICAgICAgPyBgJHt0aGlzLm5hbWV9LXNlcnZlcmBcbiAgICAgICAgICAgICAgICA6IGBhdGxhc3NpYW4tJHt0aGlzLm5hbWV9LXNlcnZlcmA7XG4gICAgICAgIHJldHVybiBgaHR0cHM6Ly9iaXRidWNrZXQub3JnL2F0bGFzc2lhbi1kb2NrZXIvZG9ja2VyLSR7c3VmZml4fS5naXRgO1xuICAgIH1cbiAgICBhc3luYyB0YWlsQXBwbGljYXRpb25Mb2dzKCkge1xuICAgICAgICBjb25zdCBzZXJ2aWNlID0gYXdhaXQgdGhpcy5nZXRTZXJ2aWNlU3RhdGUoKTtcbiAgICAgICAgY29uc3QgaXNSdW5uaW5nID0gc2VydmljZSAmJiBzZXJ2aWNlLnN0YXRlLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgndXAnKTtcbiAgICAgICAgaWYgKGlzUnVubmluZykge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5zaG93QXBwbGljYXRpb25Mb2dzKHNlcnZpY2UubmFtZSkuY2F0Y2goKCkgPT4gbnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgc2hvd0FwcGxpY2F0aW9uTG9ncyhzZXJ2aWNlKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkb2NrZXIgPSBzcGF3bignZG9ja2VyJywgWydleGVjJywgJy1pJywgc2VydmljZSwgYHRhaWxgLCBgLUZgLCBgLW5gLCBgNTAwMGAsIHRoaXMubG9nRmlsZVBhdGhdLCB7IGN3ZDogdGhpcy5vcHRpb25zLmN3ZCB8fCBjd2QoKSwgc3RkaW86ICdpbmhlcml0JyB9KTtcbiAgICAgICAgICAgIGRvY2tlci5vbignZXhpdCcsIChjb2RlKSA9PiAoY29kZSA9PT0gMCkgPyByZXNvbHZlKCkgOiByZWplY3QobmV3IEVycm9yKGBEb2NrZXIgZXhpdGVkIHdpdGggY29kZSAke2NvZGV9YCkpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGdldERlZmF1bHRPcHRpb25zKG5hbWUpIHtcbiAgICAgICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICAgICAgICBjYXNlIFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbDpcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0Wm9kRGVmYXVsdHMoUG9zdGdyZVNRTE9wdGlvbnMpO1xuICAgICAgICAgICAgY2FzZSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm15c3FsOlxuICAgICAgICAgICAgICAgIHJldHVybiBnZXRab2REZWZhdWx0cyhNeVNRTE9wdGlvbnMpO1xuICAgICAgICAgICAgY2FzZSBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLm1zc3FsOlxuICAgICAgICAgICAgICAgIHJldHVybiBnZXRab2REZWZhdWx0cyhNU1NRTE9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IHRpbWVib21iIH0gZnJvbSAnLi4vaGVscGVycy9saWNlbmNlcyc7XG5pbXBvcnQgeyB0b0Fic29sdXRlUGF0aCB9IGZyb20gJy4uL2hlbHBlcnMvdG9BYnNvbHV0ZVBhdGgnO1xuaW1wb3J0IHsgU3VwcG9ydGVkQXBwbGljYXRpb25zIH0gZnJvbSAnLi4vdHlwZXMvQXBwbGljYXRpb24nO1xuaW1wb3J0IHsgQmFzZSB9IGZyb20gJy4vYmFzZSc7XG5leHBvcnQgY2xhc3MgQmFtYm9vIGV4dGVuZHMgQmFzZSB7XG4gICAgbmFtZSA9IFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYmFtYm9vO1xuICAgIGxvZ0ZpbGVQYXRoID0gJy92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYmFtYm9vL2xvZ3MvYXRsYXNzaWFuLWJhbWJvby5sb2cnO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm90ZWN0ZWQgTWV0aG9kc1xuICAgIGdldFNlcnZpY2UoKSB7XG4gICAgICAgIGNvbnN0IGVudmlyb25tZW50ID0gdGhpcy5nZXRFbnZpcm9ubWVudFZhcmlhYmxlcygpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnVpbGQ6IHtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB0b0Fic29sdXRlUGF0aCgnLi4vLi4vYXNzZXRzJyksXG4gICAgICAgICAgICAgICAgZG9ja2VyZmlsZV9pbmxpbmU6IGBcbkZST00gJHt0aGlzLmdldERvY2tlckJhc2VUYWcoKX1cbkNPUFkgLi9teXNxbC1jb25uZWN0b3Itai04LjMuMC5qYXIgL29wdC9hdGxhc3NpYW4vYmFtYm9vL2xpYi9teXNxbC1jb25uZWN0b3Itai04LjMuMC5qYXJcbkNPUFkgLi9xdWlja3JlbG9hZC01LjAuNC5qYXIgL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9iYW1ib28vc2hhcmVkL3BsdWdpbnMvcXVpY2tyZWxvYWQtNS4wLjQuamFyXG5SVU4gZWNobyBcIi9vcHQvcXVpY2tyZWxvYWRcIiA+IC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYmFtYm9vL3F1aWNrcmVsb2FkLnByb3BlcnRpZXM7IFxcXG4gICAgbWtkaXIgLXAgL29wdC9xdWlja3JlbG9hZDsgXFxcbiAgICBjaG93biAtUiBiYW1ib286YmFtYm9vIC9vcHQvcXVpY2tyZWxvYWQ7XG5cblJVTiBjaG93biAtUiBiYW1ib286YmFtYm9vIC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYmFtYm9vYFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBvcnRzOiBbXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5vcHRpb25zLnBvcnQgfHwgODB9OjgwODVgLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy5kZWJ1ZyA/IFsnNTAwNTo1MDA1J10gOiBbXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBlbnZpcm9ubWVudCxcbiAgICAgICAgICAgIG5ldHdvcmtzOiBbJ3NoYXJlZCddXG4gICAgICAgIH07XG4gICAgfVxuICAgIGdldEpWTUFyZ3MoKSB7XG4gICAgICAgIGNvbnN0IEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MgPSBzdXBlci5nZXRKVk1BcmdzKCk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGVidWcpIHtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLVhkZWJ1ZycpO1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctYWdlbnRsaWI6amR3cD10cmFuc3BvcnQ9ZHRfc29ja2V0LHNlcnZlcj15LHN1c3BlbmQ9bixhZGRyZXNzPTUwMDUnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUztcbiAgICB9XG4gICAgYXN5bmMgaXNBcHBsaWNhdGlvblJlYWR5KCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5nZXQoYCR7dGhpcy5iYXNlVXJsfS9zZXR1cC9zZXR1cEdlbmVyYWxDb25maWd1cmF0aW9uLmFjdGlvbmAsIHsgdmFsaWRhdGVTdGF0dXM6ICgpID0+IHRydWUgfSk7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2U/LnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFRoZSBhcHBsaWNhdGlvbiAke3RoaXMubmFtZX0gaXMgcmVhZHkgb24gJHt0aGlzLmJhc2VVcmx9IPCfjolgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByaXZhdGUgTWV0aG9kc1xuICAgIGdldEVudmlyb25tZW50VmFyaWFibGVzKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLmNvbnRleHRQYXRoID8geyAnQVRMX1RPTUNBVF9DT05URVhUUEFUSCc6IHRoaXMub3B0aW9ucy5jb250ZXh0UGF0aCB9IDogJycsXG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMueG1zID8geyAnSlZNX01JTklNVU1fTUVNT1JZJzogdGhpcy5vcHRpb25zLnhtcyB9IDogJycsXG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMueG14ID8geyAnSlZNX01BWElNVU1fTUVNT1JZJzogdGhpcy5vcHRpb25zLnhteCB9IDogJycsXG4gICAgICAgICAgICAnSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUyc6IHRoaXMuZ2V0SlZNQXJncygpLmpvaW4oJyAnKSxcbiAgICAgICAgICAgICdBVExfQkFNQk9PX0VOQUJMRV9VTkFUVEVOREVEX1NFVFVQJzogJ3RydWUnLFxuICAgICAgICAgICAgJ0FUTF9MSUNFTlNFJzogdGltZWJvbWIuYmFtYm9vLFxuICAgICAgICAgICAgJ0FUTF9KREJDX1VSTCc6IHRoaXMuZGF0YWJhc2UudXJsLFxuICAgICAgICAgICAgJ0FUTF9KREJDX1VTRVInOiB0aGlzLmRhdGFiYXNlLm9wdGlvbnMudXNlcm5hbWUsXG4gICAgICAgICAgICAnQVRMX0pEQkNfUEFTU1dPUkQnOiB0aGlzLmRhdGFiYXNlLm9wdGlvbnMucGFzc3dvcmQsXG4gICAgICAgICAgICAnQVRMX0RCX1RZUEUnOiBgJHt0aGlzLmRhdGFiYXNlLm9wdGlvbnMubmFtZX1gLFxuICAgICAgICB9O1xuICAgIH1cbiAgICA7XG59XG4iLCJpbXBvcnQgeyB0aW1lYm9tYiB9IGZyb20gJy4uL2hlbHBlcnMvbGljZW5jZXMnO1xuaW1wb3J0IHsgdG9BYnNvbHV0ZVBhdGggfSBmcm9tICcuLi9oZWxwZXJzL3RvQWJzb2x1dGVQYXRoJztcbmltcG9ydCB7IFN1cHBvcnRlZEFwcGxpY2F0aW9ucyB9IGZyb20gJy4uL3R5cGVzL0FwcGxpY2F0aW9uJztcbmltcG9ydCB7IEJhc2UgfSBmcm9tICcuL2Jhc2UnO1xuZXhwb3J0IGNsYXNzIEJpdGJ1Y2tldCBleHRlbmRzIEJhc2Uge1xuICAgIG5hbWUgPSBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJpdGJ1Y2tldDtcbiAgICBsb2dGaWxlUGF0aCA9ICcvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2JpdGJ1Y2tldC9sb2cvYXRsYXNzaWFuLWJpdGJ1Y2tldC5sb2cnO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm90ZWN0ZWQgTWV0aG9kc1xuICAgIGdldFNlcnZpY2UoKSB7XG4gICAgICAgIGNvbnN0IGVudmlyb25tZW50ID0gdGhpcy5nZXRFbnZpcm9ubWVudFZhcmlhYmxlcygpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnVpbGQ6IHtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB0b0Fic29sdXRlUGF0aCgnLi4vLi4vYXNzZXRzJyksXG4gICAgICAgICAgICAgICAgZG9ja2VyZmlsZV9pbmxpbmU6IGBcbkZST00gJHt0aGlzLmdldERvY2tlckJhc2VUYWcoKX1cbkNPUFkgLi9xdWlja3JlbG9hZC01LjAuNC5qYXIgL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9iaXRidWNrZXQvcGx1Z2lucy9pbnN0YWxsZWQtcGx1Z2lucy9xdWlja3JlbG9hZC01LjAuNC5qYXJcbkNPUFkgLi9teXNxbC1jb25uZWN0b3Itai04LjMuMC5qYXIgL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9iaXRidWNrZXQvbGliL215c3FsLWNvbm5lY3Rvci1qLTguMy4wLmphclxuUlVOIGVjaG8gXCIvb3B0L3F1aWNrcmVsb2FkXCIgPiAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2JpdGJ1Y2tldC9xdWlja3JlbG9hZC5wcm9wZXJ0aWVzOyBcXFxuICAgIG1rZGlyIC1wIC9vcHQvcXVpY2tyZWxvYWQ7IFxcXG4gICAgY2hvd24gLVIgYml0YnVja2V0OmJpdGJ1Y2tldCAvb3B0L3F1aWNrcmVsb2FkO1xuXG5SVU4gbWtkaXIgLXAgL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9iaXRidWNrZXQvc2hhcmVkOyBcXFxuICAgIHRvdWNoIC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYml0YnVja2V0L3NoYXJlZC9iaXRidWNrZXQucHJvcGVydGllczsgXFxcbiAgICBlY2hvIFwic2V0dXAubGljZW5zZT0ke3RpbWVib21iLmJpdGJ1Y2tldH1cIiA+PiAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2JpdGJ1Y2tldC9zaGFyZWQvYml0YnVja2V0LnByb3BlcnRpZXM7XG5cblJVTiBjaG93biAtUiBiaXRidWNrZXQ6Yml0YnVja2V0IC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvYml0YnVja2V0YFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBvcnRzOiBbXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5vcHRpb25zLnBvcnQgfHwgODB9Ojc5OTBgLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy5kZWJ1ZyA/IFsnNTAwNTo1MDA1J10gOiBbXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBlbnZpcm9ubWVudCxcbiAgICAgICAgICAgIG5ldHdvcmtzOiBbJ3NoYXJlZCddXG4gICAgICAgIH07XG4gICAgfVxuICAgIGdldEpWTUFyZ3MoKSB7XG4gICAgICAgIGNvbnN0IEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MgPSBzdXBlci5nZXRKVk1BcmdzKCk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGVidWcpIHtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLVhkZWJ1ZycpO1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctYWdlbnRsaWI6amR3cD10cmFuc3BvcnQ9ZHRfc29ja2V0LHNlcnZlcj15LHN1c3BlbmQ9bixhZGRyZXNzPTUwMDUnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUztcbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByaXZhdGUgTWV0aG9kc1xuICAgIGdldEVudmlyb25tZW50VmFyaWFibGVzKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLnhtcyA/IHsgJ0pWTV9NSU5JTVVNX01FTU9SWSc6IHRoaXMub3B0aW9ucy54bXMgfSA6ICcnLFxuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLnhteCA/IHsgJ0pWTV9NQVhJTVVNX01FTU9SWSc6IHRoaXMub3B0aW9ucy54bXggfSA6ICcnLFxuICAgICAgICAgICAgJ0pWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MnOiB0aGlzLmdldEpWTUFyZ3MoKS5qb2luKCcgJyksXG4gICAgICAgICAgICAnSkRCQ19VUkwnOiB0aGlzLmRhdGFiYXNlLnVybCxcbiAgICAgICAgICAgICdKREJDX1VTRVInOiB0aGlzLmRhdGFiYXNlLm9wdGlvbnMudXNlcm5hbWUsXG4gICAgICAgICAgICAnSkRCQ19QQVNTV09SRCc6IHRoaXMuZGF0YWJhc2Uub3B0aW9ucy5wYXNzd29yZCxcbiAgICAgICAgICAgICdKREJDX0RSSVZFUic6IGAke3RoaXMuZGF0YWJhc2Uub3B0aW9ucy5kcml2ZXJ9YCxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgO1xufVxuIiwiaW1wb3J0IHsgdGltZWJvbWIgfSBmcm9tICcuLi9oZWxwZXJzL2xpY2VuY2VzJztcbmltcG9ydCB7IHRvQWJzb2x1dGVQYXRoIH0gZnJvbSAnLi4vaGVscGVycy90b0Fic29sdXRlUGF0aCc7XG5pbXBvcnQgeyBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMgfSBmcm9tICcuLi90eXBlcy9BcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBCYXNlIH0gZnJvbSAnLi9iYXNlJztcbmV4cG9ydCBjbGFzcyBDb25mbHVlbmNlIGV4dGVuZHMgQmFzZSB7XG4gICAgbmFtZSA9IFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuY29uZmx1ZW5jZTtcbiAgICBsb2dGaWxlUGF0aCA9ICcvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2NvbmZsdWVuY2UvbG9ncy9hdGxhc3NpYW4tY29uZmx1ZW5jZS5sb2cnO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm90ZWN0ZWQgTWV0aG9kc1xuICAgIGdldFNlcnZpY2UoKSB7XG4gICAgICAgIGNvbnN0IGVudmlyb25tZW50ID0gdGhpcy5nZXRFbnZpcm9ubWVudFZhcmlhYmxlcygpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnVpbGQ6IHtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB0b0Fic29sdXRlUGF0aCgnLi4vLi4vYXNzZXRzJyksXG4gICAgICAgICAgICAgICAgZG9ja2VyZmlsZV9pbmxpbmU6IGBcbkZST00gJHt0aGlzLmdldERvY2tlckJhc2VUYWcoKX1cbkNPUFkgLi9teXNxbC1jb25uZWN0b3Itai04LjMuMC5qYXIgL29wdC9hdGxhc3NpYW4vY29uZmx1ZW5jZS9jb25mbHVlbmNlL1dFQi1JTkYvbGliL215c3FsLWNvbm5lY3Rvci1qLTguMy4wLmphclxuQ09QWSAuL3F1aWNrcmVsb2FkLTUuMC40LmphciAvb3B0L2F0bGFzc2lhbi9jb25mbHVlbmNlL2NvbmZsdWVuY2UvV0VCLUlORi9hdGxhc3NpYW4tYnVuZGxlZC1wbHVnaW5zL3F1aWNrcmVsb2FkLTUuMC40LmphclxuUlVOIGVjaG8gXCIvb3B0L3F1aWNrcmVsb2FkXCIgPiAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2NvbmZsdWVuY2UvcXVpY2tyZWxvYWQucHJvcGVydGllczsgXFxcbiAgICBta2RpciAtcCAvb3B0L3F1aWNrcmVsb2FkOyBcXFxuICAgIGNob3duIC1SIGNvbmZsdWVuY2U6Y29uZmx1ZW5jZSAvb3B0L3F1aWNrcmVsb2FkO1xuXG5SVU4gY2hvd24gLVIgY29uZmx1ZW5jZTpjb25mbHVlbmNlIC9vcHQvYXRsYXNzaWFuL2NvbmZsdWVuY2VgXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcG9ydHM6IFtcbiAgICAgICAgICAgICAgICBgJHt0aGlzLm9wdGlvbnMucG9ydCB8fCA4MH06ODA5MGAsXG4gICAgICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLmRlYnVnID8gWyc1MDA1OjUwMDUnXSA6IFtdLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGVudmlyb25tZW50LFxuICAgICAgICAgICAgbmV0d29ya3M6IFsnc2hhcmVkJ11cbiAgICAgICAgfTtcbiAgICB9XG4gICAgZ2V0SlZNQXJncygpIHtcbiAgICAgICAgY29uc3QgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUyA9IHN1cGVyLmdldEpWTUFyZ3MoKTtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5kZWJ1Zykge1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctWGRlYnVnJyk7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1YcnVuamR3cDp0cmFuc3BvcnQ9ZHRfc29ja2V0LGFkZHJlc3M9Kjo1MDA1LHNlcnZlcj15LHN1c3BlbmQ9bicpO1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctRGNvbS5zdW4ubWFuYWdlbWVudC5qbXhyZW1vdGUucG9ydD05OTk5Jyk7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1EY29tLnN1bi5tYW5hZ2VtZW50LmpteHJlbW90ZS5ybWkucG9ydD05OTk4Jyk7XG4gICAgICAgICAgICBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTLnB1c2goJy1EY29tLnN1bi5tYW5hZ2VtZW50LmpteHJlbW90ZS5hdXRoZW50aWNhdGU9ZmFsc2UnKTtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLURjb20uc3VuLm1hbmFnZW1lbnQuam14cmVtb3RlLnNzbD1mYWxzZScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJpdmF0ZSBNZXRob2RzXG4gICAgZ2V0RW52aXJvbm1lbnRWYXJpYWJsZXMoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMuY29udGV4dFBhdGggPyB7ICdBVExfVE9NQ0FUX0NPTlRFWFRQQVRIJzogdGhpcy5vcHRpb25zLmNvbnRleHRQYXRoIH0gOiAnJyxcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy54bXMgPyB7ICdKVk1fTUlOSU1VTV9NRU1PUlknOiB0aGlzLm9wdGlvbnMueG1zIH0gOiAnJyxcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy54bXggPyB7ICdKVk1fTUFYSU1VTV9NRU1PUlknOiB0aGlzLm9wdGlvbnMueG14IH0gOiAnJyxcbiAgICAgICAgICAgICdKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTJzogdGhpcy5nZXRKVk1BcmdzKCkuam9pbignICcpLFxuICAgICAgICAgICAgJ0FUTF9MSUNFTlNFX0tFWSc6IHRpbWVib21iLmNvbmZsdWVuY2UsXG4gICAgICAgICAgICAnQVRMX0pEQkNfVVJMJzogdGhpcy5kYXRhYmFzZS51cmwsXG4gICAgICAgICAgICAnQVRMX0pEQkNfVVNFUic6IHRoaXMuZGF0YWJhc2Uub3B0aW9ucy51c2VybmFtZSxcbiAgICAgICAgICAgICdBVExfSkRCQ19QQVNTV09SRCc6IHRoaXMuZGF0YWJhc2Uub3B0aW9ucy5wYXNzd29yZCxcbiAgICAgICAgICAgICdBVExfREJfVFlQRSc6IGAke3RoaXMuZGF0YWJhc2Uub3B0aW9ucy5uYW1lfWAsXG4gICAgICAgIH07XG4gICAgfVxuICAgIDtcbn1cbiIsImltcG9ydCB7IHRpbWVib21iIH0gZnJvbSAnLi4vaGVscGVycy9saWNlbmNlcyc7XG5pbXBvcnQgeyB0b0Fic29sdXRlUGF0aCB9IGZyb20gJy4uL2hlbHBlcnMvdG9BYnNvbHV0ZVBhdGgnO1xuaW1wb3J0IHsgU3VwcG9ydGVkQXBwbGljYXRpb25zIH0gZnJvbSAnLi4vdHlwZXMvQXBwbGljYXRpb24nO1xuaW1wb3J0IHsgQmFzZSB9IGZyb20gJy4vYmFzZSc7XG5leHBvcnQgY2xhc3MgSmlyYSBleHRlbmRzIEJhc2Uge1xuICAgIG5hbWUgPSBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmppcmE7XG4gICAgbG9nRmlsZVBhdGggPSAnL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9qaXJhL2xvZy9hdGxhc3NpYW4tamlyYS5sb2cnO1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25zdHJ1Y3RvclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm90ZWN0ZWQgTWV0aG9kc1xuICAgIGdldFNlcnZpY2UoKSB7XG4gICAgICAgIGNvbnN0IGVudmlyb25tZW50ID0gdGhpcy5nZXRFbnZpcm9ubWVudFZhcmlhYmxlcygpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnVpbGQ6IHtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB0b0Fic29sdXRlUGF0aCgnLi4vLi4vYXNzZXRzJyksXG4gICAgICAgICAgICAgICAgZG9ja2VyZmlsZV9pbmxpbmU6IGBcbkZST00gJHt0aGlzLmdldERvY2tlckJhc2VUYWcoKX1cbkNPUFkgLi9qaXJhLWRhdGEtZ2VuZXJhdG9yLTUuMC4wLmphciAvdmFyL2F0bGFzc2lhbi9hcHBsaWNhdGlvbi1kYXRhL2ppcmEvcGx1Z2lucy9pbnN0YWxsZWQtcGx1Z2lucy9qaXJhLWRhdGEtZ2VuZXJhdG9yLTUuMC4wLmphclxuQ09QWSAuL215c3FsLWNvbm5lY3Rvci1qLTguMy4wLmphciAvb3B0L2F0bGFzc2lhbi9qaXJhL2xpYi9teXNxbC1jb25uZWN0b3Itai04LjMuMC5qYXJcbkNPUFkgLi9xdWlja3JlbG9hZC01LjAuNC5qYXIgL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9qaXJhL3BsdWdpbnMvaW5zdGFsbGVkLXBsdWdpbnMvcXVpY2tyZWxvYWQtNS4wLjQuamFyXG5SVU4gZWNobyBcIi9vcHQvcXVpY2tyZWxvYWRcIiA+IC92YXIvYXRsYXNzaWFuL2FwcGxpY2F0aW9uLWRhdGEvamlyYS9xdWlja3JlbG9hZC5wcm9wZXJ0aWVzOyBcXFxuICAgIG1rZGlyIC1wIC9vcHQvcXVpY2tyZWxvYWQ7IFxcXG4gICAgY2hvd24gLVIgamlyYTpqaXJhIC9vcHQvcXVpY2tyZWxvYWQ7XG5cblJVTiBjaG93biAtUiBqaXJhOmppcmEgL3Zhci9hdGxhc3NpYW4vYXBwbGljYXRpb24tZGF0YS9qaXJhYFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBvcnRzOiBbXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5vcHRpb25zLnBvcnR9OjgwODBgLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy5kZWJ1ZyA/IFsnNTAwNTo1MDA1J10gOiBbXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBlbnZpcm9ubWVudCxcbiAgICAgICAgICAgIG5ldHdvcmtzOiBbJ3NoYXJlZCddXG4gICAgICAgIH07XG4gICAgfVxuICAgIGdldEpWTUFyZ3MoKSB7XG4gICAgICAgIGNvbnN0IEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MgPSBzdXBlci5nZXRKVk1BcmdzKCk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGVidWcpIHtcbiAgICAgICAgICAgIEpWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MucHVzaCgnLVhkZWJ1ZycpO1xuICAgICAgICAgICAgSlZNX1NVUFBPUlRfUkVDT01NRU5ERURfQVJHUy5wdXNoKCctYWdlbnRsaWI6amR3cD10cmFuc3BvcnQ9ZHRfc29ja2V0LHNlcnZlcj15LHN1c3BlbmQ9bixhZGRyZXNzPSo6NTAwNScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBKVk1fU1VQUE9SVF9SRUNPTU1FTkRFRF9BUkdTO1xuICAgIH1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJpdmF0ZSBNZXRob2RzXG4gICAgZ2V0RW52aXJvbm1lbnRWYXJpYWJsZXMoKSB7XG4gICAgICAgIC8vIEZvciBzb21lIHJlYXNvbiwgSmlyYSB1c2VzIGEgZGlmZmVyZW50IHR5cGUgZm9yIHBvc3RncmVzXG4gICAgICAgIGNvbnN0IGRiVHlwZSA9IHRoaXMuZGF0YWJhc2Uub3B0aW9ucy5uYW1lID09PSAncG9zdGdyZXNxbCcgPyAncG9zdGdyZXM3MicgOiB0aGlzLmRhdGFiYXNlLm9wdGlvbnMubmFtZTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucy5jb250ZXh0UGF0aCA/IHsgJ0FUTF9UT01DQVRfQ09OVEVYVFBBVEgnOiB0aGlzLm9wdGlvbnMuY29udGV4dFBhdGggfSA6ICcnLFxuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLnhtcyA/IHsgJ0pWTV9NSU5JTVVNX01FTU9SWSc6IHRoaXMub3B0aW9ucy54bXMgfSA6ICcnLFxuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLnhteCA/IHsgJ0pWTV9NQVhJTVVNX01FTU9SWSc6IHRoaXMub3B0aW9ucy54bXggfSA6ICcnLFxuICAgICAgICAgICAgJ0pWTV9TVVBQT1JUX1JFQ09NTUVOREVEX0FSR1MnOiB0aGlzLmdldEpWTUFyZ3MoKS5qb2luKCcgJyksXG4gICAgICAgICAgICAnQVRMX0xJQ0VOU0VfS0VZJzogdGltZWJvbWIuY29uZmx1ZW5jZSxcbiAgICAgICAgICAgICdBVExfSkRCQ19VUkwnOiB0aGlzLmRhdGFiYXNlLnVybCxcbiAgICAgICAgICAgICdBVExfSkRCQ19VU0VSJzogdGhpcy5kYXRhYmFzZS5vcHRpb25zLnVzZXJuYW1lLFxuICAgICAgICAgICAgJ0FUTF9KREJDX1BBU1NXT1JEJzogdGhpcy5kYXRhYmFzZS5vcHRpb25zLnBhc3N3b3JkLFxuICAgICAgICAgICAgJ0FUTF9EQl9EUklWRVInOiB0aGlzLmRhdGFiYXNlLm9wdGlvbnMuZHJpdmVyLFxuICAgICAgICAgICAgJ0FUTF9EQl9UWVBFJzogZGJUeXBlLFxuICAgICAgICAgICAgJ0pJUkFfU0VUVVBfTElDRU5TRSc6IHRpbWVib21iLmppcmFcbiAgICAgICAgfTtcbiAgICB9XG4gICAgO1xufVxuIiwiaW1wb3J0IHsgQmFtYm9vIH0gZnJvbSAnLi4vYXBwbGljYXRpb25zL2JhbWJvbyc7XG5pbXBvcnQgeyBCaXRidWNrZXQgfSBmcm9tICcuLi9hcHBsaWNhdGlvbnMvYml0YnVja2V0JztcbmltcG9ydCB7IENvbmZsdWVuY2UgfSBmcm9tICcuLi9hcHBsaWNhdGlvbnMvY29uZmx1ZW5jZSc7XG5pbXBvcnQgeyBKaXJhIH0gZnJvbSAnLi4vYXBwbGljYXRpb25zL2ppcmEnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25PcHRpb25zLCBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMgfSBmcm9tICcuLi90eXBlcy9BcHBsaWNhdGlvbic7XG5leHBvcnQgY29uc3QgZ2V0QXBwbGljYXRpb24gPSAob3B0aW9ucykgPT4ge1xuICAgIHN3aXRjaCAob3B0aW9ucy5uYW1lKSB7XG4gICAgICAgIGNhc2UgU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5qaXJhOiByZXR1cm4gbmV3IEppcmEoQXBwbGljYXRpb25PcHRpb25zLnBhcnNlKG9wdGlvbnMpKTtcbiAgICAgICAgY2FzZSBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmNvbmZsdWVuY2U6IHJldHVybiBuZXcgQ29uZmx1ZW5jZShBcHBsaWNhdGlvbk9wdGlvbnMucGFyc2Uob3B0aW9ucykpO1xuICAgICAgICBjYXNlIFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYmFtYm9vOiByZXR1cm4gbmV3IEJhbWJvbyhBcHBsaWNhdGlvbk9wdGlvbnMucGFyc2Uob3B0aW9ucykpO1xuICAgICAgICBjYXNlIFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuYml0YnVja2V0OiByZXR1cm4gbmV3IEJpdGJ1Y2tldChBcHBsaWNhdGlvbk9wdGlvbnMucGFyc2Uob3B0aW9ucykpO1xuICAgIH1cbn07XG4iLCJpbXBvcnQgeyByZWFkRmlsZVN5bmMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyB0b0Fic29sdXRlUGF0aCB9IGZyb20gJy4vdG9BYnNvbHV0ZVBhdGgnO1xuZXhwb3J0IGNvbnN0IGdldFZlcnNpb25zID0gKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnQgPSByZWFkRmlsZVN5bmModG9BYnNvbHV0ZVBhdGgoJy4uLy4uL2Fzc2V0cy92ZXJzaW9ucy5qc29uJyksICd1dGYtOCcpO1xuICAgIGNvbnN0IHZlcnNpb25zID0gSlNPTi5wYXJzZShjb250ZW50KTtcbiAgICByZXR1cm4gdmVyc2lvbnM7XG59O1xuIiwiZXhwb3J0IGNvbnN0IHNob3dIZWxwV2l0aERlZmF1bHRDb21tYW5kT3B0aW9ucyA9IHtcbiAgICB2aXNpYmxlT3B0aW9uczogKGNtZCkgPT4ge1xuICAgICAgICBsZXQgb3B0aW9ucyA9IGNtZC5vcHRpb25zO1xuICAgICAgICBpZiAoIWNtZC5wYXJlbnQgJiYgb3B0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRDb21tYW5kTmFtZSA9IGNtZC5fZGVmYXVsdENvbW1hbmROYW1lO1xuICAgICAgICAgICAgaWYgKGRlZmF1bHRDb21tYW5kTmFtZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRDb21tYW5kID0gY21kLmNvbW1hbmRzLmZpbmQoaXRlbSA9PiBpdGVtLl9uYW1lID09PSBkZWZhdWx0Q29tbWFuZE5hbWUpO1xuICAgICAgICAgICAgICAgIGlmIChkZWZhdWx0Q29tbWFuZCkge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zID0gZGVmYXVsdENvbW1hbmQub3B0aW9ucztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20ob3B0aW9ucyk7XG4gICAgfVxufTtcbiIsIiMhL3Vzci9iaW4vZW52IG5vZGVcbmltcG9ydCB7IENvbW1hbmQgYXMgQ29tbWFuZGVyLCBJbnZhbGlkT3B0aW9uQXJndW1lbnRFcnJvciwgT3B0aW9uIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCB7IGdyYWNlZnVsRXhpdCB9IGZyb20gJ2V4aXQtaG9vayc7XG5pbXBvcnQgeyBBY3Rpb25IYW5kbGVyIH0gZnJvbSAnLi4vaGVscGVycy9BY3Rpb25IYW5kbGVyJztcbmltcG9ydCB7IEFNUFMgfSBmcm9tICcuLi9oZWxwZXJzL2FtcHMnO1xuaW1wb3J0IHsgZ2V0QXBwbGljYXRpb24gfSBmcm9tICcuLi9oZWxwZXJzL2dldEFwcGxpY2F0aW9uJztcbmltcG9ydCB7IGdldFZlcnNpb25zIH0gZnJvbSAnLi4vaGVscGVycy9nZXRWZXJzaW9ucyc7XG5pbXBvcnQgeyBzaG93SGVscFdpdGhEZWZhdWx0Q29tbWFuZE9wdGlvbnMgfSBmcm9tICcuLi9oZWxwZXJzL3Nob3dIZWxwV2l0aERlZmF1bHRDb21tYW5kT3B0aW9ucyc7XG5pbXBvcnQgeyBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMgfSBmcm9tICcuLi90eXBlcy9BcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMgfSBmcm9tICcuLi90eXBlcy9EYXRhYmFzZSc7XG5jb25zdCBwcm9ncmFtID0gbmV3IENvbW1hbmRlcigpO1xuY29uc3QgdmVyc2lvbnMgPSBnZXRWZXJzaW9ucygpO1xuY29uc3QgQ29tbWFuZCA9ICgpID0+IHtcbiAgICBsZXQgaW5zdGFuY2UgPSBudWxsO1xuICAgIHJldHVybiB7XG4gICAgICAgIGFjdGlvbjogYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFtcHMgPSBuZXcgQU1QUyh7XG4gICAgICAgICAgICAgICAgY3dkOiBvcHRpb25zLmN3ZCxcbiAgICAgICAgICAgICAgICBwcm9maWxlczogb3B0aW9ucy5hY3RpdmF0ZVByb2ZpbGVzPy5zcGxpdCgnLCcpIHx8IFtdXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLm5hbWUgJiYgb3B0aW9ucy50YWcgJiYgb3B0aW9ucy5hY3RpdmF0ZVByb2ZpbGVzKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcHRpb25Bcmd1bWVudEVycm9yKCdJbnZhbGlkIGFyZ3VtZW50IFwiLS1hY3RpdmF0ZS1wcm9maWxlc1wiJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChvcHRpb25zLm5hbWUgJiYgb3B0aW9ucy50YWcgJiYgb3B0aW9ucy5jd2QpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wdGlvbkFyZ3VtZW50RXJyb3IoJ0ludmFsaWQgYXJndW1lbnQgXCItLWN3ZFwiJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMubmFtZSAmJiAhYW1wcy5pc0F0bGFzc2lhblBsdWdpbigpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gZmluZCBhbiBBdGxhc3NpYW4gUGx1Z2luIHByb2plY3QgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IPCfpJQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wdGlvbnMubmFtZSA9IG9wdGlvbnMubmFtZSB8fCBhbXBzLmdldEFwcGxpY2F0aW9uKCk7XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMubmFtZSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIEF0bGFzc2lhbiBQbHVnaW4gcHJvamVjdCBkb2VzIG5vdCBjb250YWluIGFuIEFNUFMgY29uZmlndXJhdGlvbiwgdW5hYmxlIHRvIGRldGVjdCBwcm9kdWN0IPCfmLAnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghb3B0aW9ucy50YWcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2ZXJzaW9uID0gYW1wcy5nZXRBcHBsaWNhdGlvblZlcnNpb24oKTtcbiAgICAgICAgICAgICAgICBpZiAoIXZlcnNpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gZGV0ZXJtaW5lIHZlcnNpb24gZnJvbSBBTVBTIGFuZCBubyBwcm9kdWN0IHZlcnNpb24gcHJvdmlkZWQgKC0tdGFnKScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy50YWcgPSB2ZXJzaW9uO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdmVyc2lvbnNbb3B0aW9ucy5uYW1lXS5pbmNsdWRlcyhvcHRpb25zLnRhZykpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFByb2R1Y3QgdmVyc2lvbiAnJHtvcHRpb25zLnRhZ30nIGlzIGludmFsaWQuIEFsbG93ZWQgY2hvaWNlcyBhcmUgJHt2ZXJzaW9uc1tvcHRpb25zLm5hbWVdLmpvaW4oJywgJyl9LmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5zdGFuY2UgPSBnZXRBcHBsaWNhdGlvbihvcHRpb25zKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBSZW1vdmluZyAke29wdGlvbnMubmFtZX0gYW5kIGRlbGV0aW5nIGFsbCBkYXRhLi4uIPCfkpRgKTtcbiAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZS5yZXNldCgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBSZW1vdmVkICR7b3B0aW9ucy5uYW1lfSBhbmQgZGVsZXRlZCBhbGwgZGF0YSDwn5KqYCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3JIYW5kbGVyOiBhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgaWYgKGluc3RhbmNlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFJlbW92aW5nICR7b3B0aW9ucy5uYW1lfSBhbmQgZGVsZXRpbmcgYWxsIGRhdGEuLi4g8J+SlGApO1xuICAgICAgICAgICAgICAgIGF3YWl0IGluc3RhbmNlLnJlc2V0KCkuY2F0Y2goKCkgPT4gbnVsbCk7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFJlbW92ZWQgJHtvcHRpb25zLm5hbWV9IGFuZCBkZWxldGVkIGFsbCBkYXRhIPCfkqpgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG59O1xucHJvZ3JhbVxuICAgIC5uYW1lKCdkY2R4IHJlc2V0JylcbiAgICAuZGVzY3JpcHRpb24oYFJlc2V0IHRoZSBob3N0IGFwcGxpY2F0aW9uIGJhc2VkIG9uIHRoZSBBdGxhc3NpYW4gTWF2ZW4gUGx1Z2luIFN1aXRlIChBTVBTKSBjb25maWd1cmF0aW9uLlxuSWYgeW91IHdpc2ggdG8gcmVzZXQgYSBzcGVjaWZpYyBob3N0IGFwcGxpY2F0aW9uIHJ1bm5pbmcgc3RhbmRhbG9uZSwgY2FsbCB0aGlzIGNvbW1hbmQgd2l0aCAnZGNkeCByZXNldCA8bmFtZT4nXG5cbklNUE9SVEFOVDogVGhpcyB3aWxsIHJlbW92ZSBhbGwgZGF0YSBmcm9tIGhvc3QgYXBwbGljYXRpb24gYW5kIGRhdGFiYXNlIVxuSWYgeW91IHdpc2ggdG8gcHJlc2VydmUgdGhlIGRhdGEsIHBsZWFzZSB1c2UgdGhlICdkY2R4IHN0b3AnIGNvbW1hbmQgaW5zdGVhZGApXG4gICAgLmFkZEhlbHBUZXh0KCdhZnRlckFsbCcsICfigIsnKSAvLyB0aGVyZSBpcyBhIG5vbi16ZXJvIHdoaXRlIHNwYWNlIGJlY2F1c2UgdGhlIG9ubHkgcmVhc29uIHRvIGhhdmUgdGhpcyBpcyB0byBmb3JjZSBhIGxpbmUgYnJlYWtcbiAgICAuY29uZmlndXJlSGVscChzaG93SGVscFdpdGhEZWZhdWx0Q29tbWFuZE9wdGlvbnMpXG4gICAgLmFsbG93VW5rbm93bk9wdGlvbihmYWxzZSlcbiAgICAuYWxsb3dFeGNlc3NBcmd1bWVudHMoZmFsc2UpXG4gICAgLnNob3dIZWxwQWZ0ZXJFcnJvcih0cnVlKTtcbnByb2dyYW1cbiAgICAuY29tbWFuZCgnZnJvbUFNUFMnLCB7IGlzRGVmYXVsdDogdHJ1ZSwgaGlkZGVuOiB0cnVlIH0pXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctZCwgLS1kYXRhYmFzZSA8bmFtZT4nLCAnVGhlIGRhdGFiYXNlIGVuZ2luZSB0byByZXNldCcpLmNob2ljZXMoT2JqZWN0LnZhbHVlcyhTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzKSkuZGVmYXVsdChTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLnBvc3RncmVzcWwpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLVAsIC0tYWN0aXZhdGUtcHJvZmlsZXMgPGFyZz4nLCAnQ29tbWEtZGVsaW1pdGVkIGxpc3Qgb2YgcHJvZmlsZXMgdG8gYWN0aXZhdGUnKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tY3dkIDxkaXJlY3Rvcnk+JywgJ1NwZWNpZnkgdGhlIHdvcmtpbmcgZGlyZWN0b3J5JykpXG4gICAgLmFjdGlvbihvcHRpb25zID0+IEFjdGlvbkhhbmRsZXIocHJvZ3JhbSwgQ29tbWFuZCgpLCBvcHRpb25zKSk7XG5wcm9ncmFtXG4gICAgLmNvbW1hbmQoJ2JhbWJvbycpXG4gICAgLmRlc2NyaXB0aW9uKCdSZXNldCBBdGxhc3NpYW4gQmFtYm9vIChzdGFuZGFsb25lKScpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctdCwgLS10YWcgPHRhZz4nLCAnVGhlIERvY2tlciB0YWcgb2YgQXRsYXNzaWFuIEJhbWJvbycpLmNob2ljZXModmVyc2lvbnNbU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5iYW1ib29dKS5kZWZhdWx0KCdsYXRlc3QnKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1kLCAtLWRhdGFiYXNlIDxuYW1lPicsICdUaGUgZGF0YWJhc2UgZW5naW5lIHRvIHJlc2V0JykuY2hvaWNlcyhPYmplY3QudmFsdWVzKFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMpKS5kZWZhdWx0KFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbCkpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctUCwgLS1hY3RpdmF0ZS1wcm9maWxlcyA8YXJnPicsICdDb21tYS1kZWxpbWl0ZWQgbGlzdCBvZiBwcm9maWxlcyB0byBhY3RpdmF0ZSAob25seSBhdmFpbGFibGUgd2l0aG91dCAtLXRhZyknKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tY3dkIDxkaXJlY3Rvcnk+JywgJ1NwZWNpZnkgdGhlIHdvcmtpbmcgZGlyZWN0b3J5IChvbmx5IGF2YWlsYWJsZSB3aXRob3V0IC0tdGFnKScpKVxuICAgIC5hY3Rpb24ob3B0aW9ucyA9PiBBY3Rpb25IYW5kbGVyKHByb2dyYW0sIENvbW1hbmQoKSwgeyAuLi5vcHRpb25zLCBuYW1lOiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJhbWJvbyB9KSk7XG5wcm9ncmFtXG4gICAgLmNvbW1hbmQoJ2JpdGJ1Y2tldCcpXG4gICAgLmRlc2NyaXB0aW9uKCdSZXNldCBBdGxhc3NpYW4gQml0YnVja2V0IChzdGFuZGFsb25lKScpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctdCwgLS10YWcgPHRhZz4nLCAnVGhlIERvY2tlciB0YWcgb2YgQXRsYXNzaWFuIEJpdGJ1Y2tldCcpLmNob2ljZXModmVyc2lvbnNbU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5iaXRidWNrZXRdKS5kZWZhdWx0KCdsYXRlc3QnKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1kLCAtLWRhdGFiYXNlIDxuYW1lPicsICdUaGUgZGF0YWJhc2UgZW5naW5lIHRvIHJlc2V0JykuY2hvaWNlcyhPYmplY3QudmFsdWVzKFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMpKS5kZWZhdWx0KFN1cHBvcnRlZERhdGFiYXNlRW5naW5lcy5WYWx1ZXMucG9zdGdyZXNxbCkpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctUCwgLS1hY3RpdmF0ZS1wcm9maWxlcyA8YXJnPicsICdDb21tYS1kZWxpbWl0ZWQgbGlzdCBvZiBwcm9maWxlcyB0byBhY3RpdmF0ZSAob25seSBhdmFpbGFibGUgd2l0aG91dCAtLXRhZyknKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy0tY3dkIDxkaXJlY3Rvcnk+JywgJ1NwZWNpZnkgdGhlIHdvcmtpbmcgZGlyZWN0b3J5IChvbmx5IGF2YWlsYWJsZSB3aXRob3V0IC0tdGFnKScpKVxuICAgIC5hY3Rpb24ob3B0aW9ucyA9PiBBY3Rpb25IYW5kbGVyKHByb2dyYW0sIENvbW1hbmQoKSwgeyAuLi5vcHRpb25zLCBuYW1lOiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmJpdGJ1Y2tldCB9KSk7XG5wcm9ncmFtXG4gICAgLmNvbW1hbmQoJ2NvbmZsdWVuY2UnKVxuICAgIC5kZXNjcmlwdGlvbignUmVzZXQgQXRsYXNzaWFuIENvbmZsdWVuY2UgKHN0YW5kYWxvbmUpJylcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy10LCAtLXRhZyA8dGFnPicsICdUaGUgRG9ja2VyIHRhZyBvZiBBdGxhc3NpYW4gQ29uZmx1ZW5jZScpLmNob2ljZXModmVyc2lvbnNbU3VwcG9ydGVkQXBwbGljYXRpb25zLlZhbHVlcy5jb25mbHVlbmNlXSkuZGVmYXVsdCgnbGF0ZXN0JykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctZCwgLS1kYXRhYmFzZSA8bmFtZT4nLCAnVGhlIGRhdGFiYXNlIGVuZ2luZSB0byByZXNldCcpLmNob2ljZXMoT2JqZWN0LnZhbHVlcyhTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzKSkuZGVmYXVsdChTdXBwb3J0ZWREYXRhYmFzZUVuZ2luZXMuVmFsdWVzLnBvc3RncmVzcWwpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLVAsIC0tYWN0aXZhdGUtcHJvZmlsZXMgPGFyZz4nLCAnQ29tbWEtZGVsaW1pdGVkIGxpc3Qgb2YgcHJvZmlsZXMgdG8gYWN0aXZhdGUgKG9ubHkgYXZhaWxhYmxlIHdpdGhvdXQgLS10YWcpJykpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctLWN3ZCA8ZGlyZWN0b3J5PicsICdTcGVjaWZ5IHRoZSB3b3JraW5nIGRpcmVjdG9yIChvbmx5IGF2YWlsYWJsZSB3aXRob3V0IC0tdGFnKScpKVxuICAgIC5hY3Rpb24ob3B0aW9ucyA9PiBBY3Rpb25IYW5kbGVyKHByb2dyYW0sIENvbW1hbmQoKSwgeyAuLi5vcHRpb25zLCBuYW1lOiBTdXBwb3J0ZWRBcHBsaWNhdGlvbnMuVmFsdWVzLmNvbmZsdWVuY2UgfSkpO1xucHJvZ3JhbVxuICAgIC5jb21tYW5kKCdqaXJhJylcbiAgICAuZGVzY3JpcHRpb24oJ1Jlc2V0IEF0bGFzc2lhbiBKaXJhIChzdGFuZGFsb25lKScpXG4gICAgLmFkZE9wdGlvbihuZXcgT3B0aW9uKCctdCwgLS10YWcgPHRhZz4nLCAnVGhlIERvY2tlciB0YWcgb2YgQXRsYXNzaWFuIEppcmEnKS5jaG9pY2VzKHZlcnNpb25zW1N1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuamlyYV0pLmRlZmF1bHQoJ2xhdGVzdCcpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLWQsIC0tZGF0YWJhc2UgPG5hbWU+JywgJ1RoZSBkYXRhYmFzZSBlbmdpbmUgdG8gcmVzZXQnKS5jaG9pY2VzKE9iamVjdC52YWx1ZXMoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcykpLmRlZmF1bHQoU3VwcG9ydGVkRGF0YWJhc2VFbmdpbmVzLlZhbHVlcy5wb3N0Z3Jlc3FsKSlcbiAgICAuYWRkT3B0aW9uKG5ldyBPcHRpb24oJy1QLCAtLWFjdGl2YXRlLXByb2ZpbGVzIDxhcmc+JywgJ0NvbW1hLWRlbGltaXRlZCBsaXN0IG9mIHByb2ZpbGVzIHRvIGFjdGl2YXRlIChvbmx5IGF2YWlsYWJsZSB3aXRob3V0IC0tdGFnKScpKVxuICAgIC5hZGRPcHRpb24obmV3IE9wdGlvbignLS1jd2QgPGRpcmVjdG9yeT4nLCAnU3BlY2lmeSB0aGUgd29ya2luZyBkaXJlY3RvcnkgKG9ubHkgYXZhaWxhYmxlIHdpdGhvdXQgLS10YWcpJykpXG4gICAgLmFjdGlvbihvcHRpb25zID0+IEFjdGlvbkhhbmRsZXIocHJvZ3JhbSwgQ29tbWFuZCgpLCB7IC4uLm9wdGlvbnMsIG5hbWU6IFN1cHBvcnRlZEFwcGxpY2F0aW9ucy5WYWx1ZXMuamlyYSB9KSk7XG5wcm9ncmFtLnBhcnNlQXN5bmMocHJvY2Vzcy5hcmd2KS5jYXRjaCgoKSA9PiBncmFjZWZ1bEV4aXQoMSkpO1xucHJvY2Vzcy5vbignU0lHSU5UJywgKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGBSZWNlaXZlZCB0ZXJtIHNpZ25hbCwgdHJ5aW5nIHRvIHN0b3AgZ3JhY2VmdWxseSDwn5KqYCk7XG4gICAgZ3JhY2VmdWxFeGl0KCk7XG59KTtcbiJdLCJuYW1lcyI6WyJ2ZXJzaW9ucyIsIkJhc2UiLCJDb21tYW5kZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFTyxNQUFNLGFBQWEsR0FBRyxPQUFPLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsRUFBRSxPQUFPLEtBQUs7QUFDbkYsSUFBSSxNQUFNLEdBQUcsR0FBRyxPQUFPLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzFDLElBQUksTUFBTSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEtBQUs7QUFDckMsUUFBUSxJQUFJLFlBQVksR0FBRyxFQUFFLENBQUM7QUFDOUIsUUFBUSxhQUFhLENBQUMsT0FBTyxJQUFJLEtBQUs7QUFDdEMsWUFBWSxJQUFJO0FBQ2hCLGdCQUFnQixJQUFJLElBQUksS0FBSyxDQUFDLEVBQUU7QUFDaEMsb0JBQW9CLE1BQU0sWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO0FBQzlELGlCQUFpQjtBQUNqQixnQkFBZ0IsSUFBSSxZQUFZLEVBQUU7QUFDbEMsb0JBQW9CLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7QUFDekQsaUJBQWlCO0FBQ2pCLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0Esb0JBQW9CLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqQyxpQkFBaUI7QUFDakIsYUFBYTtBQUNiLFlBQVksT0FBTyxHQUFHLEVBQUU7QUFDeEIsZ0JBQWdCLE1BQU0sT0FBTyxHQUFHLEdBQUcsWUFBWSxLQUFLLEdBQUcsR0FBRyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7QUFDekUsZ0JBQWdCLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNoQyxhQUFhO0FBQ2IsU0FBUyxFQUFFO0FBQ1gsWUFBWSxJQUFJLEVBQUUsRUFBRSxHQUFHLENBQUMsR0FBRyxJQUFJO0FBQy9CLFNBQVMsQ0FBQyxDQUFDO0FBQ1gsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU07QUFDL0IsWUFBWSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUIsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSTtBQUN4QixZQUFZLElBQUksR0FBRyxZQUFZLENBQUMsQ0FBQyxRQUFRLEVBQUU7QUFDM0MsZ0JBQWdCLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSTtBQUM1QyxvQkFBb0IsWUFBWSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDekcsaUJBQWlCLENBQUMsQ0FBQztBQUNuQixhQUFhO0FBQ2IsaUJBQWlCLElBQUksR0FBRyxZQUFZLEtBQUssSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUU7QUFDdEUsZ0JBQWdCLFlBQVksR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDOUMsYUFBYTtBQUNiLFlBQVksWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVCLFNBQVMsQ0FBQyxDQUFDO0FBQ1gsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSTtBQUN4QixRQUFRLElBQUksT0FBTyxLQUFLLElBQUksRUFBRTtBQUM5QixZQUFZLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDbkM7QUFDQTtBQUNBLFNBQVM7QUFDVCxhQUFhO0FBQ2IsWUFBWSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVCLFNBQVM7QUFDVCxLQUFLLENBQUMsQ0FBQztBQUNQLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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