@rushstack/rush-http-build-cache-plugin 5.97.1-pr3481.18 → 5.98.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.heft/build-cache/jest-cache/haste-map-bae913f9b9aa720eb4deeae0a60a4b27-22ae7f4ce9de4306889d8c05e5cc39b9-f6b1af01a3130057bdfe3d86807211f9 +0 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/{42/Import_42731f0220476b7d949a2d8f3a6f3333 → 12/Import_12af6d2ca109ffba883fc5079062e0e8} +157 -14
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/{c7/commons_c77bee95093c1098b4a591f2dadf398d → 2e/commons_2e52897dfe4222d991674613f5b35882} +1007 -2581
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/{26/package_263c59db6933ba9581588638fb19da5c → 2f/package_2f923ac6ad9bbd4966f8472750ef7770} +2 -2
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/34/PrefixProxyTerminalProvider_34b4603b9c4455de1c3cc05820149fdd +65 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/{58/index_58c57a8f2a96bf6fdf5db35a2e44baa7 → 46/index_46761981528d09d1a0e438f06cd2c548} +7 -2
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/{06/ConfigurationFile_06d7f35feb0bd944d9b9a2a4d9e112c8 → 57/ConfigurationFile_57c950e8ef4673e11bff94304a50823c} +10 -4
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/{fa/rushlib_fa830331d24a41292b5cb91040384188 → 69/rushlib_695f6e29167e91482e2906a8d09b3a5a} +17 -28
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/8a/HttpBuildCacheProvidertest_8a1598e1f1b42d6933964acfb7612893 +116 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/8a/HttpBuildCacheProvidertest_8a1598e1f1b42d6933964acfb7612893.map +1 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/a3/RushHttpBuildCachePlugin_a3e8a9bb172ff361907e770dcf3268be +1551 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/a3/RushHttpBuildCachePlugin_a3e8a9bb172ff361907e770dcf3268be.map +1 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/{c2/Async_c2ea5cc2edc0a460dcf394ef8277e88e → b4/Async_b43c9d64ab6a035dbce65b9f1a28e166} +78 -2
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/ba/TerminalWritable_ba71b4b7bfe6a26c85f4fd0245057a0a +54 -0
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/ce/index_ce3464019fb882539ee9a6f3e36e615a +2 -2
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/ce/index_ce3464019fb882539ee9a6f3e36e615a.map +1 -1
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/{5d/Text_5da85b5db9a2f06bbe29cdcd91e6fbca → df/Text_df57ddd200e4237e617fc183dcb5fe67} +7 -1
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/{e5/HttpBuildCacheProvider_e53bd002cf44ae62693f20b8c4682941 → ec/HttpBuildCacheProvider_ecceab34e8340fa24dde11b618ffa8a4} +1210 -909
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/ec/HttpBuildCacheProvider_ecceab34e8340fa24dde11b618ffa8a4.map +1 -0
- package/.heft/build-cache/jest-cache/perf-cache-bae913f9b9aa720eb4deeae0a60a4b27-da39a3ee5e6b4b0d3255bfef95601890 +1 -1
- package/.rush/temp/operation/_phase_build/state.json +1 -1
- package/.rush/temp/operation/_phase_test/all.log +29 -0
- package/.rush/temp/operation/_phase_test/state.json +1 -1
- package/.rush/temp/package-deps__phase_build.json +5 -5
- package/.rush/temp/package-deps__phase_test.json +5 -5
- package/.rush/temp/rushstack+rush-http-build-cache-plugin-_phase_build-08118e08afc6d454e5623f20498fd64b5e3e9051.log +10 -0
- package/.rush/temp/shrinkwrap-deps.json +10 -10
- package/lib/HttpBuildCacheProvider.d.ts +2 -0
- package/lib/HttpBuildCacheProvider.d.ts.map +1 -1
- package/lib/HttpBuildCacheProvider.js +26 -7
- package/lib/HttpBuildCacheProvider.js.map +1 -1
- package/lib/RushHttpBuildCachePlugin.d.ts.map +1 -1
- package/lib/RushHttpBuildCachePlugin.js +28 -4
- package/lib/RushHttpBuildCachePlugin.js.map +1 -1
- package/lib/test/HttpBuildCacheProvider.test.d.ts.map +1 -0
- package/lib/{HttpBuildCacheProvider.test.js → test/HttpBuildCacheProvider.test.js} +46 -3
- package/lib/test/HttpBuildCacheProvider.test.js.map +1 -0
- package/package.json +6 -6
- package/rush-logs/rush-http-build-cache-plugin._phase_build.log +4 -23
- package/rush-logs/rush-http-build-cache-plugin._phase_test.log +16 -16
- package/src/HttpBuildCacheProvider.ts +36 -7
- package/src/RushHttpBuildCachePlugin.ts +23 -28
- package/src/test/HttpBuildCacheProvider.test.ts +115 -0
- package/temp/coverage/clover.xml +117 -109
- package/temp/coverage/coverage-final.json +2 -2
- package/temp/coverage/lcov-report/HttpBuildCacheProvider.ts.html +166 -79
- package/temp/coverage/lcov-report/RushHttpBuildCachePlugin.ts.html +29 -44
- package/temp/coverage/lcov-report/index.html +24 -24
- package/temp/coverage/lcov-report/index.ts.html +1 -1
- package/temp/coverage/lcov.info +236 -218
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/e5/HttpBuildCacheProvider_e53bd002cf44ae62693f20b8c4682941.map +0 -1
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/e6/RushHttpBuildCachePlugin_e69b4b7cd4f95aa49455690c88f00247 +0 -362
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/e6/RushHttpBuildCachePlugin_e69b4b7cd4f95aa49455690c88f00247.map +0 -1
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/f7/HttpBuildCacheProvidertest_f710af633835df558cad54cb165c14fa +0 -73
- package/.heft/build-cache/jest-cache/jest-transform-cache-bae913f9b9aa720eb4deeae0a60a4b27-474488b31a4a940a3990e9eaf06f1647/f7/HttpBuildCacheProvidertest_f710af633835df558cad54cb165c14fa.map +0 -1
- package/.rush/temp/rushstack+rush-http-build-cache-plugin-_phase_build-5e3cfa01506c2ac77af487ee9732b935a5bbe122.log +0 -27
- package/lib/HttpBuildCacheProvider.test.d.ts.map +0 -1
- package/lib/HttpBuildCacheProvider.test.js.map +0 -1
- package/src/HttpBuildCacheProvider.test.ts +0 -58
- /package/lib/{HttpBuildCacheProvider.test.d.ts → test/HttpBuildCacheProvider.test.d.ts} +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
1f6fe130d2f5ce096048c0a4ef878ac2
|
|
2
2
|
"use strict";
|
|
3
3
|
|
|
4
4
|
/* istanbul ignore next */
|
|
5
5
|
function cov_ms2xfswbr() {
|
|
6
6
|
var path = "/home/vsts/work/1/s/rush-plugins/rush-http-build-cache-plugin/src/HttpBuildCacheProvider.ts";
|
|
7
|
-
var hash = "
|
|
7
|
+
var hash = "f39662f2cf6af1c0d874c48f29702c0c9cefda13";
|
|
8
8
|
var global = new Function("return this")();
|
|
9
9
|
var gcv = "__coverage__";
|
|
10
10
|
var coverageData = {
|
|
@@ -182,22 +182,22 @@ function cov_ms2xfswbr() {
|
|
|
182
182
|
},
|
|
183
183
|
"17": {
|
|
184
184
|
start: {
|
|
185
|
-
line:
|
|
186
|
-
column:
|
|
185
|
+
line: 24,
|
|
186
|
+
column: 32
|
|
187
187
|
},
|
|
188
188
|
end: {
|
|
189
|
-
line:
|
|
190
|
-
column:
|
|
189
|
+
line: 24,
|
|
190
|
+
column: 33
|
|
191
191
|
}
|
|
192
192
|
},
|
|
193
193
|
"18": {
|
|
194
194
|
start: {
|
|
195
|
-
line:
|
|
196
|
-
column:
|
|
195
|
+
line: 25,
|
|
196
|
+
column: 40
|
|
197
197
|
},
|
|
198
198
|
end: {
|
|
199
|
-
line:
|
|
200
|
-
column:
|
|
199
|
+
line: 25,
|
|
200
|
+
column: 44
|
|
201
201
|
}
|
|
202
202
|
},
|
|
203
203
|
"19": {
|
|
@@ -207,7 +207,7 @@ function cov_ms2xfswbr() {
|
|
|
207
207
|
},
|
|
208
208
|
end: {
|
|
209
209
|
line: 29,
|
|
210
|
-
column:
|
|
210
|
+
column: 46
|
|
211
211
|
}
|
|
212
212
|
},
|
|
213
213
|
"20": {
|
|
@@ -217,7 +217,7 @@ function cov_ms2xfswbr() {
|
|
|
217
217
|
},
|
|
218
218
|
end: {
|
|
219
219
|
line: 30,
|
|
220
|
-
column:
|
|
220
|
+
column: 40
|
|
221
221
|
}
|
|
222
222
|
},
|
|
223
223
|
"21": {
|
|
@@ -227,7 +227,7 @@ function cov_ms2xfswbr() {
|
|
|
227
227
|
},
|
|
228
228
|
end: {
|
|
229
229
|
line: 31,
|
|
230
|
-
column:
|
|
230
|
+
column: 56
|
|
231
231
|
}
|
|
232
232
|
},
|
|
233
233
|
"22": {
|
|
@@ -237,7 +237,7 @@ function cov_ms2xfswbr() {
|
|
|
237
237
|
},
|
|
238
238
|
end: {
|
|
239
239
|
line: 32,
|
|
240
|
-
column:
|
|
240
|
+
column: 95
|
|
241
241
|
}
|
|
242
242
|
},
|
|
243
243
|
"23": {
|
|
@@ -247,7 +247,7 @@ function cov_ms2xfswbr() {
|
|
|
247
247
|
},
|
|
248
248
|
end: {
|
|
249
249
|
line: 33,
|
|
250
|
-
column:
|
|
250
|
+
column: 79
|
|
251
251
|
}
|
|
252
252
|
},
|
|
253
253
|
"24": {
|
|
@@ -257,7 +257,7 @@ function cov_ms2xfswbr() {
|
|
|
257
257
|
},
|
|
258
258
|
end: {
|
|
259
259
|
line: 34,
|
|
260
|
-
column:
|
|
260
|
+
column: 89
|
|
261
261
|
}
|
|
262
262
|
},
|
|
263
263
|
"25": {
|
|
@@ -267,7 +267,7 @@ function cov_ms2xfswbr() {
|
|
|
267
267
|
},
|
|
268
268
|
end: {
|
|
269
269
|
line: 35,
|
|
270
|
-
column:
|
|
270
|
+
column: 96
|
|
271
271
|
}
|
|
272
272
|
},
|
|
273
273
|
"26": {
|
|
@@ -277,956 +277,1046 @@ function cov_ms2xfswbr() {
|
|
|
277
277
|
},
|
|
278
278
|
end: {
|
|
279
279
|
line: 36,
|
|
280
|
-
column:
|
|
280
|
+
column: 83
|
|
281
281
|
}
|
|
282
282
|
},
|
|
283
283
|
"27": {
|
|
284
284
|
start: {
|
|
285
|
-
line:
|
|
285
|
+
line: 37,
|
|
286
286
|
column: 8
|
|
287
287
|
},
|
|
288
288
|
end: {
|
|
289
|
-
line:
|
|
290
|
-
column:
|
|
289
|
+
line: 37,
|
|
290
|
+
column: 50
|
|
291
291
|
}
|
|
292
292
|
},
|
|
293
293
|
"28": {
|
|
294
|
+
start: {
|
|
295
|
+
line: 38,
|
|
296
|
+
column: 8
|
|
297
|
+
},
|
|
298
|
+
end: {
|
|
299
|
+
line: 38,
|
|
300
|
+
column: 97
|
|
301
|
+
}
|
|
302
|
+
},
|
|
303
|
+
"29": {
|
|
304
|
+
start: {
|
|
305
|
+
line: 39,
|
|
306
|
+
column: 8
|
|
307
|
+
},
|
|
308
|
+
end: {
|
|
309
|
+
line: 39,
|
|
310
|
+
column: 136
|
|
311
|
+
}
|
|
312
|
+
},
|
|
313
|
+
"30": {
|
|
294
314
|
start: {
|
|
295
315
|
line: 43,
|
|
296
316
|
column: 8
|
|
297
317
|
},
|
|
298
318
|
end: {
|
|
299
|
-
line:
|
|
319
|
+
line: 43,
|
|
320
|
+
column: 155
|
|
321
|
+
}
|
|
322
|
+
},
|
|
323
|
+
"31": {
|
|
324
|
+
start: {
|
|
325
|
+
line: 46,
|
|
326
|
+
column: 8
|
|
327
|
+
},
|
|
328
|
+
end: {
|
|
329
|
+
line: 61,
|
|
300
330
|
column: 9
|
|
301
331
|
}
|
|
302
332
|
},
|
|
303
|
-
"
|
|
333
|
+
"32": {
|
|
304
334
|
start: {
|
|
305
|
-
line:
|
|
335
|
+
line: 47,
|
|
306
336
|
column: 27
|
|
307
337
|
},
|
|
308
338
|
end: {
|
|
309
|
-
line:
|
|
339
|
+
line: 55,
|
|
310
340
|
column: 14
|
|
311
341
|
}
|
|
312
342
|
},
|
|
313
|
-
"
|
|
343
|
+
"33": {
|
|
314
344
|
start: {
|
|
315
|
-
line:
|
|
345
|
+
line: 56,
|
|
316
346
|
column: 12
|
|
317
347
|
},
|
|
318
348
|
end: {
|
|
319
|
-
line:
|
|
349
|
+
line: 56,
|
|
320
350
|
column: 64
|
|
321
351
|
}
|
|
322
352
|
},
|
|
323
|
-
"
|
|
353
|
+
"34": {
|
|
324
354
|
start: {
|
|
325
|
-
line:
|
|
355
|
+
line: 59,
|
|
326
356
|
column: 12
|
|
327
357
|
},
|
|
328
358
|
end: {
|
|
329
|
-
line:
|
|
359
|
+
line: 59,
|
|
330
360
|
column: 73
|
|
331
361
|
}
|
|
332
362
|
},
|
|
333
|
-
"
|
|
363
|
+
"35": {
|
|
334
364
|
start: {
|
|
335
|
-
line:
|
|
365
|
+
line: 60,
|
|
336
366
|
column: 12
|
|
337
367
|
},
|
|
338
368
|
end: {
|
|
339
|
-
line:
|
|
369
|
+
line: 60,
|
|
340
370
|
column: 29
|
|
341
371
|
}
|
|
342
372
|
},
|
|
343
|
-
"
|
|
373
|
+
"36": {
|
|
344
374
|
start: {
|
|
345
|
-
line:
|
|
375
|
+
line: 64,
|
|
346
376
|
column: 8
|
|
347
377
|
},
|
|
348
378
|
end: {
|
|
349
|
-
line:
|
|
379
|
+
line: 67,
|
|
350
380
|
column: 9
|
|
351
381
|
}
|
|
352
382
|
},
|
|
353
|
-
"
|
|
383
|
+
"37": {
|
|
354
384
|
start: {
|
|
355
|
-
line:
|
|
385
|
+
line: 65,
|
|
356
386
|
column: 12
|
|
357
387
|
},
|
|
358
388
|
end: {
|
|
359
|
-
line:
|
|
389
|
+
line: 65,
|
|
360
390
|
column: 101
|
|
361
391
|
}
|
|
362
392
|
},
|
|
363
|
-
"
|
|
393
|
+
"38": {
|
|
364
394
|
start: {
|
|
365
|
-
line:
|
|
395
|
+
line: 66,
|
|
366
396
|
column: 12
|
|
367
397
|
},
|
|
368
398
|
end: {
|
|
369
|
-
line:
|
|
399
|
+
line: 66,
|
|
370
400
|
column: 25
|
|
371
401
|
}
|
|
372
402
|
},
|
|
373
|
-
"
|
|
403
|
+
"39": {
|
|
374
404
|
start: {
|
|
375
|
-
line:
|
|
405
|
+
line: 68,
|
|
376
406
|
column: 8
|
|
377
407
|
},
|
|
378
408
|
end: {
|
|
379
|
-
line:
|
|
409
|
+
line: 68,
|
|
380
410
|
column: 76
|
|
381
411
|
}
|
|
382
412
|
},
|
|
383
|
-
"
|
|
413
|
+
"40": {
|
|
384
414
|
start: {
|
|
385
|
-
line:
|
|
415
|
+
line: 69,
|
|
386
416
|
column: 8
|
|
387
417
|
},
|
|
388
418
|
end: {
|
|
389
|
-
line:
|
|
419
|
+
line: 84,
|
|
390
420
|
column: 9
|
|
391
421
|
}
|
|
392
422
|
},
|
|
393
|
-
"
|
|
423
|
+
"41": {
|
|
394
424
|
start: {
|
|
395
|
-
line:
|
|
425
|
+
line: 70,
|
|
396
426
|
column: 27
|
|
397
427
|
},
|
|
398
428
|
end: {
|
|
399
|
-
line:
|
|
429
|
+
line: 78,
|
|
400
430
|
column: 14
|
|
401
431
|
}
|
|
402
432
|
},
|
|
403
|
-
"
|
|
433
|
+
"42": {
|
|
404
434
|
start: {
|
|
405
|
-
line:
|
|
435
|
+
line: 79,
|
|
406
436
|
column: 12
|
|
407
437
|
},
|
|
408
438
|
end: {
|
|
409
|
-
line:
|
|
439
|
+
line: 79,
|
|
410
440
|
column: 36
|
|
411
441
|
}
|
|
412
442
|
},
|
|
413
|
-
"
|
|
443
|
+
"43": {
|
|
414
444
|
start: {
|
|
415
|
-
line:
|
|
445
|
+
line: 82,
|
|
416
446
|
column: 12
|
|
417
447
|
},
|
|
418
448
|
end: {
|
|
419
|
-
line:
|
|
449
|
+
line: 82,
|
|
420
450
|
column: 75
|
|
421
451
|
}
|
|
422
452
|
},
|
|
423
|
-
"
|
|
453
|
+
"44": {
|
|
424
454
|
start: {
|
|
425
|
-
line:
|
|
455
|
+
line: 83,
|
|
426
456
|
column: 12
|
|
427
457
|
},
|
|
428
458
|
end: {
|
|
429
|
-
line:
|
|
459
|
+
line: 83,
|
|
430
460
|
column: 25
|
|
431
461
|
}
|
|
432
462
|
},
|
|
433
|
-
"
|
|
463
|
+
"45": {
|
|
434
464
|
start: {
|
|
435
|
-
line:
|
|
465
|
+
line: 87,
|
|
436
466
|
column: 8
|
|
437
467
|
},
|
|
438
468
|
end: {
|
|
439
|
-
line:
|
|
469
|
+
line: 94,
|
|
440
470
|
column: 11
|
|
441
471
|
}
|
|
442
472
|
},
|
|
443
|
-
"
|
|
473
|
+
"46": {
|
|
444
474
|
start: {
|
|
445
|
-
line:
|
|
475
|
+
line: 90,
|
|
446
476
|
column: 12
|
|
447
477
|
},
|
|
448
478
|
end: {
|
|
449
|
-
line:
|
|
479
|
+
line: 92,
|
|
450
480
|
column: 15
|
|
451
481
|
}
|
|
452
482
|
},
|
|
453
|
-
"
|
|
483
|
+
"47": {
|
|
454
484
|
start: {
|
|
455
|
-
line:
|
|
485
|
+
line: 93,
|
|
456
486
|
column: 12
|
|
457
487
|
},
|
|
458
488
|
end: {
|
|
459
|
-
line:
|
|
489
|
+
line: 93,
|
|
460
490
|
column: 57
|
|
461
491
|
}
|
|
462
492
|
},
|
|
463
|
-
"
|
|
493
|
+
"48": {
|
|
464
494
|
start: {
|
|
465
|
-
line:
|
|
495
|
+
line: 97,
|
|
466
496
|
column: 8
|
|
467
497
|
},
|
|
468
498
|
end: {
|
|
469
|
-
line:
|
|
499
|
+
line: 102,
|
|
470
500
|
column: 9
|
|
471
501
|
}
|
|
472
502
|
},
|
|
473
|
-
"
|
|
503
|
+
"49": {
|
|
474
504
|
start: {
|
|
475
|
-
line:
|
|
505
|
+
line: 98,
|
|
476
506
|
column: 12
|
|
477
507
|
},
|
|
478
508
|
end: {
|
|
479
|
-
line:
|
|
509
|
+
line: 101,
|
|
480
510
|
column: 72
|
|
481
511
|
}
|
|
482
512
|
},
|
|
483
|
-
"
|
|
513
|
+
"50": {
|
|
484
514
|
start: {
|
|
485
|
-
line:
|
|
515
|
+
line: 103,
|
|
486
516
|
column: 20
|
|
487
517
|
},
|
|
488
518
|
end: {
|
|
489
|
-
line:
|
|
519
|
+
line: 103,
|
|
490
520
|
column: 93
|
|
491
521
|
}
|
|
492
522
|
},
|
|
493
|
-
"
|
|
523
|
+
"51": {
|
|
494
524
|
start: {
|
|
495
|
-
line:
|
|
525
|
+
line: 104,
|
|
496
526
|
column: 8
|
|
497
527
|
},
|
|
498
528
|
end: {
|
|
499
|
-
line:
|
|
529
|
+
line: 104,
|
|
500
530
|
column: 73
|
|
501
531
|
}
|
|
502
532
|
},
|
|
503
|
-
"
|
|
533
|
+
"52": {
|
|
504
534
|
start: {
|
|
505
|
-
line:
|
|
535
|
+
line: 105,
|
|
506
536
|
column: 23
|
|
507
537
|
},
|
|
508
538
|
end: {
|
|
509
|
-
line:
|
|
539
|
+
line: 105,
|
|
510
540
|
column: 119
|
|
511
541
|
}
|
|
512
542
|
},
|
|
513
|
-
"
|
|
543
|
+
"53": {
|
|
514
544
|
start: {
|
|
515
|
-
line:
|
|
545
|
+
line: 106,
|
|
516
546
|
column: 8
|
|
517
547
|
},
|
|
518
548
|
end: {
|
|
519
|
-
line:
|
|
549
|
+
line: 106,
|
|
520
550
|
column: 47
|
|
521
551
|
}
|
|
522
552
|
},
|
|
523
|
-
"
|
|
553
|
+
"54": {
|
|
524
554
|
start: {
|
|
525
|
-
line:
|
|
555
|
+
line: 107,
|
|
526
556
|
column: 8
|
|
527
557
|
},
|
|
528
558
|
end: {
|
|
529
|
-
line:
|
|
559
|
+
line: 109,
|
|
530
560
|
column: 9
|
|
531
561
|
}
|
|
532
562
|
},
|
|
533
|
-
"
|
|
563
|
+
"55": {
|
|
534
564
|
start: {
|
|
535
|
-
line:
|
|
565
|
+
line: 108,
|
|
536
566
|
column: 12
|
|
537
567
|
},
|
|
538
568
|
end: {
|
|
539
|
-
line:
|
|
569
|
+
line: 108,
|
|
540
570
|
column: 90
|
|
541
571
|
}
|
|
542
572
|
},
|
|
543
|
-
"
|
|
573
|
+
"56": {
|
|
544
574
|
start: {
|
|
545
|
-
line:
|
|
575
|
+
line: 110,
|
|
546
576
|
column: 27
|
|
547
577
|
},
|
|
548
578
|
end: {
|
|
549
|
-
line:
|
|
579
|
+
line: 110,
|
|
550
580
|
column: 47
|
|
551
581
|
}
|
|
552
582
|
},
|
|
553
|
-
"
|
|
583
|
+
"57": {
|
|
554
584
|
start: {
|
|
555
|
-
line:
|
|
585
|
+
line: 111,
|
|
556
586
|
column: 8
|
|
557
587
|
},
|
|
558
588
|
end: {
|
|
559
|
-
line:
|
|
589
|
+
line: 111,
|
|
560
590
|
column: 53
|
|
561
591
|
}
|
|
562
592
|
},
|
|
563
|
-
"
|
|
593
|
+
"58": {
|
|
564
594
|
start: {
|
|
565
|
-
line:
|
|
595
|
+
line: 112,
|
|
566
596
|
column: 8
|
|
567
597
|
},
|
|
568
598
|
end: {
|
|
569
|
-
line:
|
|
599
|
+
line: 112,
|
|
570
600
|
column: 69
|
|
571
601
|
}
|
|
572
602
|
},
|
|
573
|
-
"
|
|
603
|
+
"59": {
|
|
574
604
|
start: {
|
|
575
|
-
line:
|
|
605
|
+
line: 113,
|
|
576
606
|
column: 8
|
|
577
607
|
},
|
|
578
608
|
end: {
|
|
579
|
-
line:
|
|
609
|
+
line: 113,
|
|
580
610
|
column: 56
|
|
581
611
|
}
|
|
582
612
|
},
|
|
583
|
-
"
|
|
613
|
+
"60": {
|
|
584
614
|
start: {
|
|
585
|
-
line:
|
|
615
|
+
line: 116,
|
|
586
616
|
column: 8
|
|
587
617
|
},
|
|
588
618
|
end: {
|
|
589
|
-
line:
|
|
619
|
+
line: 121,
|
|
590
620
|
column: 11
|
|
591
621
|
}
|
|
592
622
|
},
|
|
593
|
-
"
|
|
623
|
+
"61": {
|
|
594
624
|
start: {
|
|
595
|
-
line:
|
|
625
|
+
line: 119,
|
|
596
626
|
column: 12
|
|
597
627
|
},
|
|
598
628
|
end: {
|
|
599
|
-
line:
|
|
629
|
+
line: 119,
|
|
600
630
|
column: 71
|
|
601
631
|
}
|
|
602
632
|
},
|
|
603
|
-
"
|
|
633
|
+
"62": {
|
|
604
634
|
start: {
|
|
605
|
-
line:
|
|
635
|
+
line: 120,
|
|
606
636
|
column: 12
|
|
607
637
|
},
|
|
608
638
|
end: {
|
|
609
|
-
line:
|
|
639
|
+
line: 120,
|
|
610
640
|
column: 57
|
|
611
641
|
}
|
|
612
642
|
},
|
|
613
|
-
"
|
|
643
|
+
"63": {
|
|
614
644
|
start: {
|
|
615
|
-
line:
|
|
645
|
+
line: 124,
|
|
616
646
|
column: 8
|
|
617
647
|
},
|
|
618
648
|
end: {
|
|
619
|
-
line:
|
|
649
|
+
line: 130,
|
|
620
650
|
column: 9
|
|
621
651
|
}
|
|
622
652
|
},
|
|
623
|
-
"
|
|
653
|
+
"64": {
|
|
624
654
|
start: {
|
|
625
|
-
line:
|
|
655
|
+
line: 125,
|
|
626
656
|
column: 33
|
|
627
657
|
},
|
|
628
658
|
end: {
|
|
629
|
-
line:
|
|
659
|
+
line: 125,
|
|
630
660
|
column: 49
|
|
631
661
|
}
|
|
632
662
|
},
|
|
633
|
-
"
|
|
663
|
+
"65": {
|
|
634
664
|
start: {
|
|
635
|
-
line:
|
|
665
|
+
line: 126,
|
|
636
666
|
column: 12
|
|
637
667
|
},
|
|
638
668
|
end: {
|
|
639
|
-
line:
|
|
669
|
+
line: 128,
|
|
640
670
|
column: 13
|
|
641
671
|
}
|
|
642
672
|
},
|
|
643
|
-
"
|
|
673
|
+
"66": {
|
|
644
674
|
start: {
|
|
645
|
-
line:
|
|
675
|
+
line: 127,
|
|
646
676
|
column: 16
|
|
647
677
|
},
|
|
648
678
|
end: {
|
|
649
|
-
line:
|
|
679
|
+
line: 127,
|
|
650
680
|
column: 55
|
|
651
681
|
}
|
|
652
682
|
},
|
|
653
|
-
"
|
|
683
|
+
"67": {
|
|
654
684
|
start: {
|
|
655
|
-
line:
|
|
685
|
+
line: 129,
|
|
656
686
|
column: 12
|
|
657
687
|
},
|
|
658
688
|
end: {
|
|
659
|
-
line:
|
|
689
|
+
line: 129,
|
|
660
690
|
column: 62
|
|
661
691
|
}
|
|
662
692
|
},
|
|
663
|
-
"
|
|
693
|
+
"68": {
|
|
664
694
|
start: {
|
|
665
|
-
line:
|
|
695
|
+
line: 131,
|
|
666
696
|
column: 8
|
|
667
697
|
},
|
|
668
698
|
end: {
|
|
669
|
-
line:
|
|
699
|
+
line: 131,
|
|
670
700
|
column: 40
|
|
671
701
|
}
|
|
672
702
|
},
|
|
673
|
-
"
|
|
703
|
+
"69": {
|
|
674
704
|
start: {
|
|
675
|
-
line:
|
|
705
|
+
line: 134,
|
|
676
706
|
column: 93
|
|
677
707
|
},
|
|
678
708
|
end: {
|
|
679
|
-
line:
|
|
709
|
+
line: 134,
|
|
680
710
|
column: 100
|
|
681
711
|
}
|
|
682
712
|
},
|
|
683
|
-
"
|
|
713
|
+
"70": {
|
|
684
714
|
start: {
|
|
685
|
-
line:
|
|
715
|
+
line: 135,
|
|
686
716
|
column: 38
|
|
687
717
|
},
|
|
688
718
|
end: {
|
|
689
|
-
line:
|
|
719
|
+
line: 135,
|
|
690
720
|
column: 146
|
|
691
721
|
}
|
|
692
722
|
},
|
|
693
|
-
"
|
|
723
|
+
"71": {
|
|
694
724
|
start: {
|
|
695
|
-
line:
|
|
725
|
+
line: 136,
|
|
696
726
|
column: 28
|
|
697
727
|
},
|
|
698
728
|
end: {
|
|
699
|
-
line:
|
|
729
|
+
line: 136,
|
|
700
730
|
column: 80
|
|
701
731
|
}
|
|
702
732
|
},
|
|
703
|
-
"
|
|
733
|
+
"72": {
|
|
704
734
|
start: {
|
|
705
|
-
line:
|
|
735
|
+
line: 137,
|
|
706
736
|
column: 20
|
|
707
737
|
},
|
|
708
738
|
end: {
|
|
709
|
-
line:
|
|
739
|
+
line: 137,
|
|
710
740
|
column: 51
|
|
711
741
|
}
|
|
712
742
|
},
|
|
713
|
-
"
|
|
743
|
+
"73": {
|
|
714
744
|
start: {
|
|
715
|
-
line:
|
|
745
|
+
line: 138,
|
|
716
746
|
column: 24
|
|
717
747
|
},
|
|
718
748
|
end: {
|
|
719
|
-
line:
|
|
749
|
+
line: 138,
|
|
720
750
|
column: 26
|
|
721
751
|
}
|
|
722
752
|
},
|
|
723
|
-
"
|
|
753
|
+
"74": {
|
|
724
754
|
start: {
|
|
725
|
-
line:
|
|
755
|
+
line: 139,
|
|
726
756
|
column: 8
|
|
727
757
|
},
|
|
728
758
|
end: {
|
|
729
|
-
line:
|
|
759
|
+
line: 141,
|
|
730
760
|
column: 9
|
|
731
761
|
}
|
|
732
762
|
},
|
|
733
|
-
"
|
|
763
|
+
"75": {
|
|
734
764
|
start: {
|
|
735
|
-
line:
|
|
765
|
+
line: 140,
|
|
736
766
|
column: 12
|
|
737
767
|
},
|
|
738
768
|
end: {
|
|
739
|
-
line:
|
|
769
|
+
line: 140,
|
|
740
770
|
column: 48
|
|
741
771
|
}
|
|
742
772
|
},
|
|
743
|
-
"
|
|
773
|
+
"76": {
|
|
744
774
|
start: {
|
|
745
|
-
line:
|
|
775
|
+
line: 142,
|
|
746
776
|
column: 8
|
|
747
777
|
},
|
|
748
778
|
end: {
|
|
749
|
-
line:
|
|
779
|
+
line: 146,
|
|
750
780
|
column: 9
|
|
751
781
|
}
|
|
752
782
|
},
|
|
753
|
-
"
|
|
783
|
+
"77": {
|
|
754
784
|
start: {
|
|
755
|
-
line:
|
|
785
|
+
line: 143,
|
|
756
786
|
column: 12
|
|
757
787
|
},
|
|
758
788
|
end: {
|
|
759
|
-
line:
|
|
789
|
+
line: 145,
|
|
760
790
|
column: 13
|
|
761
791
|
}
|
|
762
792
|
},
|
|
763
|
-
"
|
|
793
|
+
"78": {
|
|
764
794
|
start: {
|
|
765
|
-
line:
|
|
795
|
+
line: 144,
|
|
766
796
|
column: 16
|
|
767
797
|
},
|
|
768
798
|
end: {
|
|
769
|
-
line:
|
|
799
|
+
line: 144,
|
|
770
800
|
column: 37
|
|
771
801
|
}
|
|
772
802
|
},
|
|
773
|
-
"
|
|
803
|
+
"79": {
|
|
774
804
|
start: {
|
|
775
|
-
line:
|
|
805
|
+
line: 147,
|
|
776
806
|
column: 27
|
|
777
807
|
},
|
|
778
808
|
end: {
|
|
779
|
-
line:
|
|
809
|
+
line: 147,
|
|
780
810
|
column: 97
|
|
781
811
|
}
|
|
782
812
|
},
|
|
783
|
-
"
|
|
813
|
+
"80": {
|
|
784
814
|
start: {
|
|
785
|
-
line:
|
|
815
|
+
line: 148,
|
|
786
816
|
column: 8
|
|
787
817
|
},
|
|
788
818
|
end: {
|
|
789
|
-
line:
|
|
819
|
+
line: 148,
|
|
790
820
|
column: 100
|
|
791
821
|
}
|
|
792
822
|
},
|
|
793
|
-
"
|
|
823
|
+
"81": {
|
|
794
824
|
start: {
|
|
795
|
-
line:
|
|
825
|
+
line: 149,
|
|
796
826
|
column: 25
|
|
797
827
|
},
|
|
798
828
|
end: {
|
|
799
|
-
line:
|
|
829
|
+
line: 154,
|
|
800
830
|
column: 10
|
|
801
831
|
}
|
|
802
832
|
},
|
|
803
|
-
"
|
|
833
|
+
"82": {
|
|
804
834
|
start: {
|
|
805
|
-
line:
|
|
835
|
+
line: 155,
|
|
806
836
|
column: 8
|
|
807
837
|
},
|
|
808
838
|
end: {
|
|
809
|
-
line:
|
|
839
|
+
line: 178,
|
|
810
840
|
column: 9
|
|
811
841
|
}
|
|
812
842
|
},
|
|
813
|
-
"
|
|
843
|
+
"83": {
|
|
814
844
|
start: {
|
|
815
|
-
line:
|
|
816
|
-
column:
|
|
845
|
+
line: 156,
|
|
846
|
+
column: 44
|
|
817
847
|
},
|
|
818
848
|
end: {
|
|
819
849
|
line: 156,
|
|
850
|
+
column: 91
|
|
851
|
+
}
|
|
852
|
+
},
|
|
853
|
+
"84": {
|
|
854
|
+
start: {
|
|
855
|
+
line: 157,
|
|
856
|
+
column: 12
|
|
857
|
+
},
|
|
858
|
+
end: {
|
|
859
|
+
line: 166,
|
|
820
860
|
column: 13
|
|
821
861
|
}
|
|
822
862
|
},
|
|
823
|
-
"
|
|
863
|
+
"85": {
|
|
824
864
|
start: {
|
|
825
|
-
line:
|
|
865
|
+
line: 165,
|
|
826
866
|
column: 16
|
|
827
867
|
},
|
|
828
868
|
end: {
|
|
829
|
-
line:
|
|
869
|
+
line: 165,
|
|
830
870
|
column: 135
|
|
831
871
|
}
|
|
832
872
|
},
|
|
833
|
-
"
|
|
873
|
+
"86": {
|
|
834
874
|
start: {
|
|
835
|
-
line:
|
|
875
|
+
line: 167,
|
|
836
876
|
column: 12
|
|
837
877
|
},
|
|
838
878
|
end: {
|
|
839
|
-
line:
|
|
879
|
+
line: 175,
|
|
880
|
+
column: 13
|
|
881
|
+
}
|
|
882
|
+
},
|
|
883
|
+
"87": {
|
|
884
|
+
start: {
|
|
885
|
+
line: 171,
|
|
886
|
+
column: 31
|
|
887
|
+
},
|
|
888
|
+
end: {
|
|
889
|
+
line: 171,
|
|
890
|
+
column: 50
|
|
891
|
+
}
|
|
892
|
+
},
|
|
893
|
+
"88": {
|
|
894
|
+
start: {
|
|
895
|
+
line: 172,
|
|
896
|
+
column: 35
|
|
897
|
+
},
|
|
898
|
+
end: {
|
|
899
|
+
line: 172,
|
|
900
|
+
column: 81
|
|
901
|
+
}
|
|
902
|
+
},
|
|
903
|
+
"89": {
|
|
904
|
+
start: {
|
|
905
|
+
line: 173,
|
|
906
|
+
column: 16
|
|
907
|
+
},
|
|
908
|
+
end: {
|
|
909
|
+
line: 173,
|
|
910
|
+
column: 66
|
|
911
|
+
}
|
|
912
|
+
},
|
|
913
|
+
"90": {
|
|
914
|
+
start: {
|
|
915
|
+
line: 174,
|
|
916
|
+
column: 16
|
|
917
|
+
},
|
|
918
|
+
end: {
|
|
919
|
+
line: 174,
|
|
920
|
+
column: 125
|
|
921
|
+
}
|
|
922
|
+
},
|
|
923
|
+
"91": {
|
|
924
|
+
start: {
|
|
925
|
+
line: 176,
|
|
926
|
+
column: 12
|
|
927
|
+
},
|
|
928
|
+
end: {
|
|
929
|
+
line: 176,
|
|
840
930
|
column: 80
|
|
841
931
|
}
|
|
842
932
|
},
|
|
843
|
-
"
|
|
933
|
+
"92": {
|
|
844
934
|
start: {
|
|
845
|
-
line:
|
|
935
|
+
line: 177,
|
|
846
936
|
column: 12
|
|
847
937
|
},
|
|
848
938
|
end: {
|
|
849
|
-
line:
|
|
939
|
+
line: 177,
|
|
850
940
|
column: 25
|
|
851
941
|
}
|
|
852
942
|
},
|
|
853
|
-
"
|
|
943
|
+
"93": {
|
|
854
944
|
start: {
|
|
855
|
-
line:
|
|
945
|
+
line: 179,
|
|
856
946
|
column: 23
|
|
857
947
|
},
|
|
858
948
|
end: {
|
|
859
|
-
line:
|
|
949
|
+
line: 179,
|
|
860
950
|
column: 82
|
|
861
951
|
}
|
|
862
952
|
},
|
|
863
|
-
"
|
|
953
|
+
"94": {
|
|
864
954
|
start: {
|
|
865
|
-
line:
|
|
955
|
+
line: 180,
|
|
866
956
|
column: 8
|
|
867
957
|
},
|
|
868
958
|
end: {
|
|
869
|
-
line:
|
|
959
|
+
line: 180,
|
|
870
960
|
column: 147
|
|
871
961
|
}
|
|
872
962
|
},
|
|
873
|
-
"
|
|
963
|
+
"95": {
|
|
874
964
|
start: {
|
|
875
|
-
line:
|
|
965
|
+
line: 181,
|
|
876
966
|
column: 8
|
|
877
967
|
},
|
|
878
968
|
end: {
|
|
879
|
-
line:
|
|
969
|
+
line: 181,
|
|
880
970
|
column: 22
|
|
881
971
|
}
|
|
882
972
|
},
|
|
883
|
-
"
|
|
973
|
+
"96": {
|
|
884
974
|
start: {
|
|
885
|
-
line:
|
|
975
|
+
line: 184,
|
|
886
976
|
column: 8
|
|
887
977
|
},
|
|
888
978
|
end: {
|
|
889
|
-
line:
|
|
979
|
+
line: 186,
|
|
890
980
|
column: 9
|
|
891
981
|
}
|
|
892
982
|
},
|
|
893
|
-
"
|
|
983
|
+
"97": {
|
|
894
984
|
start: {
|
|
895
|
-
line:
|
|
985
|
+
line: 185,
|
|
896
986
|
column: 12
|
|
897
987
|
},
|
|
898
988
|
end: {
|
|
899
|
-
line:
|
|
989
|
+
line: 185,
|
|
900
990
|
column: 19
|
|
901
991
|
}
|
|
902
992
|
},
|
|
903
|
-
"
|
|
993
|
+
"98": {
|
|
904
994
|
start: {
|
|
905
|
-
line:
|
|
995
|
+
line: 187,
|
|
906
996
|
column: 26
|
|
907
997
|
},
|
|
908
998
|
end: {
|
|
909
|
-
line:
|
|
999
|
+
line: 187,
|
|
910
1000
|
column: 53
|
|
911
1001
|
}
|
|
912
1002
|
},
|
|
913
|
-
"
|
|
1003
|
+
"99": {
|
|
914
1004
|
start: {
|
|
915
|
-
line:
|
|
1005
|
+
line: 188,
|
|
916
1006
|
column: 8
|
|
917
1007
|
},
|
|
918
1008
|
end: {
|
|
919
|
-
line:
|
|
1009
|
+
line: 190,
|
|
920
1010
|
column: 9
|
|
921
1011
|
}
|
|
922
1012
|
},
|
|
923
|
-
"
|
|
1013
|
+
"100": {
|
|
924
1014
|
start: {
|
|
925
|
-
line:
|
|
1015
|
+
line: 189,
|
|
926
1016
|
column: 12
|
|
927
1017
|
},
|
|
928
1018
|
end: {
|
|
929
|
-
line:
|
|
1019
|
+
line: 189,
|
|
930
1020
|
column: 67
|
|
931
1021
|
}
|
|
932
1022
|
},
|
|
933
|
-
"
|
|
1023
|
+
"101": {
|
|
934
1024
|
start: {
|
|
935
|
-
line:
|
|
1025
|
+
line: 191,
|
|
936
1026
|
column: 8
|
|
937
1027
|
},
|
|
938
1028
|
end: {
|
|
939
|
-
line:
|
|
1029
|
+
line: 201,
|
|
940
1030
|
column: 9
|
|
941
1031
|
}
|
|
942
1032
|
},
|
|
943
|
-
"
|
|
1033
|
+
"102": {
|
|
944
1034
|
start: {
|
|
945
|
-
line:
|
|
1035
|
+
line: 192,
|
|
946
1036
|
column: 12
|
|
947
1037
|
},
|
|
948
1038
|
end: {
|
|
949
|
-
line:
|
|
1039
|
+
line: 200,
|
|
950
1040
|
column: 26
|
|
951
1041
|
}
|
|
952
1042
|
},
|
|
953
|
-
"
|
|
1043
|
+
"103": {
|
|
954
1044
|
start: {
|
|
955
|
-
line:
|
|
1045
|
+
line: 202,
|
|
956
1046
|
column: 8
|
|
957
1047
|
},
|
|
958
1048
|
end: {
|
|
959
|
-
line:
|
|
1049
|
+
line: 202,
|
|
960
1050
|
column: 27
|
|
961
1051
|
}
|
|
962
1052
|
},
|
|
963
|
-
"
|
|
1053
|
+
"104": {
|
|
964
1054
|
start: {
|
|
965
|
-
line:
|
|
1055
|
+
line: 207,
|
|
966
1056
|
column: 8
|
|
967
1057
|
},
|
|
968
1058
|
end: {
|
|
969
|
-
line:
|
|
1059
|
+
line: 211,
|
|
970
1060
|
column: 11
|
|
971
1061
|
}
|
|
972
1062
|
},
|
|
973
|
-
"
|
|
1063
|
+
"105": {
|
|
974
1064
|
start: {
|
|
975
|
-
line:
|
|
1065
|
+
line: 210,
|
|
976
1066
|
column: 12
|
|
977
1067
|
},
|
|
978
1068
|
end: {
|
|
979
|
-
line:
|
|
1069
|
+
line: 210,
|
|
980
1070
|
column: 84
|
|
981
1071
|
}
|
|
982
1072
|
},
|
|
983
|
-
"
|
|
1073
|
+
"106": {
|
|
984
1074
|
start: {
|
|
985
|
-
line:
|
|
1075
|
+
line: 212,
|
|
986
1076
|
column: 8
|
|
987
1077
|
},
|
|
988
1078
|
end: {
|
|
989
|
-
line:
|
|
1079
|
+
line: 217,
|
|
990
1080
|
column: 9
|
|
991
1081
|
}
|
|
992
1082
|
},
|
|
993
|
-
"
|
|
1083
|
+
"107": {
|
|
994
1084
|
start: {
|
|
995
|
-
line:
|
|
1085
|
+
line: 213,
|
|
996
1086
|
column: 35
|
|
997
1087
|
},
|
|
998
1088
|
end: {
|
|
999
|
-
line:
|
|
1089
|
+
line: 213,
|
|
1000
1090
|
column: 110
|
|
1001
1091
|
}
|
|
1002
1092
|
},
|
|
1003
|
-
"
|
|
1093
|
+
"108": {
|
|
1004
1094
|
start: {
|
|
1005
|
-
line:
|
|
1095
|
+
line: 214,
|
|
1006
1096
|
column: 12
|
|
1007
1097
|
},
|
|
1008
1098
|
end: {
|
|
1009
|
-
line:
|
|
1099
|
+
line: 216,
|
|
1010
1100
|
column: 13
|
|
1011
1101
|
}
|
|
1012
1102
|
},
|
|
1013
|
-
"
|
|
1103
|
+
"109": {
|
|
1014
1104
|
start: {
|
|
1015
|
-
line:
|
|
1105
|
+
line: 215,
|
|
1016
1106
|
column: 16
|
|
1017
1107
|
},
|
|
1018
1108
|
end: {
|
|
1019
|
-
line:
|
|
1109
|
+
line: 215,
|
|
1020
1110
|
column: 45
|
|
1021
1111
|
}
|
|
1022
1112
|
},
|
|
1023
|
-
"
|
|
1113
|
+
"110": {
|
|
1024
1114
|
start: {
|
|
1025
|
-
line:
|
|
1115
|
+
line: 220,
|
|
1026
1116
|
column: 8
|
|
1027
1117
|
},
|
|
1028
1118
|
end: {
|
|
1029
|
-
line:
|
|
1119
|
+
line: 222,
|
|
1030
1120
|
column: 9
|
|
1031
1121
|
}
|
|
1032
1122
|
},
|
|
1033
|
-
"
|
|
1123
|
+
"111": {
|
|
1034
1124
|
start: {
|
|
1035
|
-
line:
|
|
1125
|
+
line: 221,
|
|
1036
1126
|
column: 12
|
|
1037
1127
|
},
|
|
1038
1128
|
end: {
|
|
1039
|
-
line:
|
|
1129
|
+
line: 221,
|
|
1040
1130
|
column: 36
|
|
1041
1131
|
}
|
|
1042
1132
|
},
|
|
1043
|
-
"
|
|
1133
|
+
"112": {
|
|
1044
1134
|
start: {
|
|
1045
|
-
line:
|
|
1135
|
+
line: 223,
|
|
1046
1136
|
column: 8
|
|
1047
1137
|
},
|
|
1048
1138
|
end: {
|
|
1049
|
-
line:
|
|
1139
|
+
line: 255,
|
|
1050
1140
|
column: 9
|
|
1051
1141
|
}
|
|
1052
1142
|
},
|
|
1053
|
-
"
|
|
1143
|
+
"113": {
|
|
1054
1144
|
start: {
|
|
1055
|
-
line:
|
|
1145
|
+
line: 232,
|
|
1056
1146
|
column: 16
|
|
1057
1147
|
},
|
|
1058
1148
|
end: {
|
|
1059
|
-
line:
|
|
1149
|
+
line: 232,
|
|
1060
1150
|
column: 49
|
|
1061
1151
|
}
|
|
1062
1152
|
},
|
|
1063
|
-
"
|
|
1153
|
+
"114": {
|
|
1064
1154
|
start: {
|
|
1065
|
-
line:
|
|
1155
|
+
line: 237,
|
|
1066
1156
|
column: 16
|
|
1067
1157
|
},
|
|
1068
1158
|
end: {
|
|
1069
|
-
line:
|
|
1159
|
+
line: 246,
|
|
1070
1160
|
column: 17
|
|
1071
1161
|
}
|
|
1072
1162
|
},
|
|
1073
|
-
"
|
|
1163
|
+
"115": {
|
|
1074
1164
|
start: {
|
|
1075
|
-
line:
|
|
1165
|
+
line: 245,
|
|
1076
1166
|
column: 20
|
|
1077
1167
|
},
|
|
1078
1168
|
end: {
|
|
1079
|
-
line:
|
|
1169
|
+
line: 245,
|
|
1080
1170
|
column: 44
|
|
1081
1171
|
}
|
|
1082
1172
|
},
|
|
1083
|
-
"
|
|
1173
|
+
"116": {
|
|
1084
1174
|
start: {
|
|
1085
|
-
line:
|
|
1175
|
+
line: 247,
|
|
1086
1176
|
column: 16
|
|
1087
1177
|
},
|
|
1088
1178
|
end: {
|
|
1089
|
-
line:
|
|
1179
|
+
line: 247,
|
|
1090
1180
|
column: 50
|
|
1091
1181
|
}
|
|
1092
1182
|
},
|
|
1093
|
-
"
|
|
1183
|
+
"117": {
|
|
1094
1184
|
start: {
|
|
1095
|
-
line:
|
|
1185
|
+
line: 250,
|
|
1096
1186
|
column: 16
|
|
1097
1187
|
},
|
|
1098
1188
|
end: {
|
|
1099
|
-
line:
|
|
1189
|
+
line: 253,
|
|
1100
1190
|
column: 17
|
|
1101
1191
|
}
|
|
1102
1192
|
},
|
|
1103
|
-
"
|
|
1193
|
+
"118": {
|
|
1104
1194
|
start: {
|
|
1105
|
-
line:
|
|
1195
|
+
line: 252,
|
|
1106
1196
|
column: 20
|
|
1107
1197
|
},
|
|
1108
1198
|
end: {
|
|
1109
|
-
line:
|
|
1199
|
+
line: 252,
|
|
1110
1200
|
column: 44
|
|
1111
1201
|
}
|
|
1112
1202
|
},
|
|
1113
|
-
"
|
|
1203
|
+
"119": {
|
|
1114
1204
|
start: {
|
|
1115
|
-
line:
|
|
1205
|
+
line: 257,
|
|
1116
1206
|
column: 8
|
|
1117
1207
|
},
|
|
1118
1208
|
end: {
|
|
1119
|
-
line:
|
|
1209
|
+
line: 257,
|
|
1120
1210
|
column: 35
|
|
1121
1211
|
}
|
|
1122
1212
|
},
|
|
1123
|
-
"
|
|
1213
|
+
"120": {
|
|
1124
1214
|
start: {
|
|
1125
|
-
line:
|
|
1215
|
+
line: 260,
|
|
1126
1216
|
column: 8
|
|
1127
1217
|
},
|
|
1128
1218
|
end: {
|
|
1129
|
-
line:
|
|
1219
|
+
line: 289,
|
|
1130
1220
|
column: 9
|
|
1131
1221
|
}
|
|
1132
1222
|
},
|
|
1133
|
-
"
|
|
1223
|
+
"121": {
|
|
1134
1224
|
start: {
|
|
1135
|
-
line:
|
|
1225
|
+
line: 262,
|
|
1136
1226
|
column: 16
|
|
1137
1227
|
},
|
|
1138
1228
|
end: {
|
|
1139
|
-
line:
|
|
1229
|
+
line: 262,
|
|
1140
1230
|
column: 103
|
|
1141
1231
|
}
|
|
1142
1232
|
},
|
|
1143
|
-
"
|
|
1233
|
+
"122": {
|
|
1144
1234
|
start: {
|
|
1145
|
-
line:
|
|
1235
|
+
line: 263,
|
|
1146
1236
|
column: 16
|
|
1147
1237
|
},
|
|
1148
1238
|
end: {
|
|
1149
|
-
line:
|
|
1239
|
+
line: 263,
|
|
1150
1240
|
column: 22
|
|
1151
1241
|
}
|
|
1152
1242
|
},
|
|
1153
|
-
"
|
|
1243
|
+
"123": {
|
|
1154
1244
|
start: {
|
|
1155
|
-
line:
|
|
1245
|
+
line: 266,
|
|
1156
1246
|
column: 16
|
|
1157
1247
|
},
|
|
1158
1248
|
end: {
|
|
1159
|
-
line:
|
|
1249
|
+
line: 266,
|
|
1160
1250
|
column: 105
|
|
1161
1251
|
}
|
|
1162
1252
|
},
|
|
1163
|
-
"
|
|
1253
|
+
"124": {
|
|
1164
1254
|
start: {
|
|
1165
|
-
line:
|
|
1255
|
+
line: 267,
|
|
1166
1256
|
column: 16
|
|
1167
1257
|
},
|
|
1168
1258
|
end: {
|
|
1169
|
-
line:
|
|
1259
|
+
line: 267,
|
|
1170
1260
|
column: 22
|
|
1171
1261
|
}
|
|
1172
1262
|
},
|
|
1173
|
-
"
|
|
1263
|
+
"125": {
|
|
1174
1264
|
start: {
|
|
1175
|
-
line:
|
|
1265
|
+
line: 270,
|
|
1176
1266
|
column: 16
|
|
1177
1267
|
},
|
|
1178
1268
|
end: {
|
|
1179
|
-
line:
|
|
1269
|
+
line: 270,
|
|
1180
1270
|
column: 98
|
|
1181
1271
|
}
|
|
1182
1272
|
},
|
|
1183
|
-
"
|
|
1273
|
+
"126": {
|
|
1184
1274
|
start: {
|
|
1185
|
-
line:
|
|
1275
|
+
line: 271,
|
|
1186
1276
|
column: 16
|
|
1187
1277
|
},
|
|
1188
1278
|
end: {
|
|
1189
|
-
line:
|
|
1279
|
+
line: 271,
|
|
1190
1280
|
column: 22
|
|
1191
1281
|
}
|
|
1192
1282
|
},
|
|
1193
|
-
"
|
|
1283
|
+
"127": {
|
|
1194
1284
|
start: {
|
|
1195
|
-
line:
|
|
1285
|
+
line: 274,
|
|
1196
1286
|
column: 16
|
|
1197
1287
|
},
|
|
1198
1288
|
end: {
|
|
1199
|
-
line:
|
|
1289
|
+
line: 274,
|
|
1200
1290
|
column: 103
|
|
1201
1291
|
}
|
|
1202
1292
|
},
|
|
1203
|
-
"
|
|
1293
|
+
"128": {
|
|
1204
1294
|
start: {
|
|
1205
|
-
line:
|
|
1295
|
+
line: 275,
|
|
1206
1296
|
column: 16
|
|
1207
1297
|
},
|
|
1208
1298
|
end: {
|
|
1209
|
-
line:
|
|
1299
|
+
line: 275,
|
|
1210
1300
|
column: 22
|
|
1211
1301
|
}
|
|
1212
1302
|
},
|
|
1213
|
-
"
|
|
1303
|
+
"129": {
|
|
1214
1304
|
start: {
|
|
1215
|
-
line:
|
|
1305
|
+
line: 278,
|
|
1216
1306
|
column: 16
|
|
1217
1307
|
},
|
|
1218
1308
|
end: {
|
|
1219
|
-
line:
|
|
1309
|
+
line: 287,
|
|
1220
1310
|
column: 30
|
|
1221
1311
|
}
|
|
1222
1312
|
},
|
|
1223
|
-
"
|
|
1313
|
+
"130": {
|
|
1224
1314
|
start: {
|
|
1225
|
-
line:
|
|
1315
|
+
line: 292,
|
|
1226
1316
|
column: 0
|
|
1227
1317
|
},
|
|
1228
1318
|
end: {
|
|
1229
|
-
line:
|
|
1319
|
+
line: 292,
|
|
1230
1320
|
column: 56
|
|
1231
1321
|
}
|
|
1232
1322
|
}
|
|
@@ -1308,385 +1398,385 @@ function cov_ms2xfswbr() {
|
|
|
1308
1398
|
name: "(anonymous_3)",
|
|
1309
1399
|
decl: {
|
|
1310
1400
|
start: {
|
|
1311
|
-
line:
|
|
1401
|
+
line: 27,
|
|
1312
1402
|
column: 4
|
|
1313
1403
|
},
|
|
1314
1404
|
end: {
|
|
1315
|
-
line:
|
|
1405
|
+
line: 27,
|
|
1316
1406
|
column: 5
|
|
1317
1407
|
}
|
|
1318
1408
|
},
|
|
1319
1409
|
loc: {
|
|
1320
1410
|
start: {
|
|
1321
|
-
line:
|
|
1411
|
+
line: 27,
|
|
1322
1412
|
column: 38
|
|
1323
1413
|
},
|
|
1324
1414
|
end: {
|
|
1325
|
-
line:
|
|
1415
|
+
line: 40,
|
|
1326
1416
|
column: 5
|
|
1327
1417
|
}
|
|
1328
1418
|
},
|
|
1329
|
-
line:
|
|
1419
|
+
line: 27
|
|
1330
1420
|
},
|
|
1331
1421
|
"4": {
|
|
1332
1422
|
name: "(anonymous_4)",
|
|
1333
1423
|
decl: {
|
|
1334
1424
|
start: {
|
|
1335
|
-
line:
|
|
1425
|
+
line: 41,
|
|
1336
1426
|
column: 4
|
|
1337
1427
|
},
|
|
1338
1428
|
end: {
|
|
1339
|
-
line:
|
|
1429
|
+
line: 41,
|
|
1340
1430
|
column: 5
|
|
1341
1431
|
}
|
|
1342
1432
|
},
|
|
1343
1433
|
loc: {
|
|
1344
1434
|
start: {
|
|
1345
|
-
line:
|
|
1435
|
+
line: 41,
|
|
1346
1436
|
column: 30
|
|
1347
1437
|
},
|
|
1348
1438
|
end: {
|
|
1349
|
-
line:
|
|
1439
|
+
line: 44,
|
|
1350
1440
|
column: 5
|
|
1351
1441
|
}
|
|
1352
1442
|
},
|
|
1353
|
-
line:
|
|
1443
|
+
line: 41
|
|
1354
1444
|
},
|
|
1355
1445
|
"5": {
|
|
1356
1446
|
name: "(anonymous_5)",
|
|
1357
1447
|
decl: {
|
|
1358
1448
|
start: {
|
|
1359
|
-
line:
|
|
1449
|
+
line: 45,
|
|
1360
1450
|
column: 4
|
|
1361
1451
|
},
|
|
1362
1452
|
end: {
|
|
1363
|
-
line:
|
|
1453
|
+
line: 45,
|
|
1364
1454
|
column: 5
|
|
1365
1455
|
}
|
|
1366
1456
|
},
|
|
1367
1457
|
loc: {
|
|
1368
1458
|
start: {
|
|
1369
|
-
line:
|
|
1459
|
+
line: 45,
|
|
1370
1460
|
column: 61
|
|
1371
1461
|
},
|
|
1372
1462
|
end: {
|
|
1373
|
-
line:
|
|
1463
|
+
line: 62,
|
|
1374
1464
|
column: 5
|
|
1375
1465
|
}
|
|
1376
1466
|
},
|
|
1377
|
-
line:
|
|
1467
|
+
line: 45
|
|
1378
1468
|
},
|
|
1379
1469
|
"6": {
|
|
1380
1470
|
name: "(anonymous_6)",
|
|
1381
1471
|
decl: {
|
|
1382
1472
|
start: {
|
|
1383
|
-
line:
|
|
1473
|
+
line: 63,
|
|
1384
1474
|
column: 4
|
|
1385
1475
|
},
|
|
1386
1476
|
end: {
|
|
1387
|
-
line:
|
|
1477
|
+
line: 63,
|
|
1388
1478
|
column: 5
|
|
1389
1479
|
}
|
|
1390
1480
|
},
|
|
1391
1481
|
loc: {
|
|
1392
1482
|
start: {
|
|
1393
|
-
line:
|
|
1483
|
+
line: 63,
|
|
1394
1484
|
column: 71
|
|
1395
1485
|
},
|
|
1396
1486
|
end: {
|
|
1397
|
-
line:
|
|
1487
|
+
line: 85,
|
|
1398
1488
|
column: 5
|
|
1399
1489
|
}
|
|
1400
1490
|
},
|
|
1401
|
-
line:
|
|
1491
|
+
line: 63
|
|
1402
1492
|
},
|
|
1403
1493
|
"7": {
|
|
1404
1494
|
name: "(anonymous_7)",
|
|
1405
1495
|
decl: {
|
|
1406
1496
|
start: {
|
|
1407
|
-
line:
|
|
1497
|
+
line: 86,
|
|
1408
1498
|
column: 4
|
|
1409
1499
|
},
|
|
1410
1500
|
end: {
|
|
1411
|
-
line:
|
|
1501
|
+
line: 86,
|
|
1412
1502
|
column: 5
|
|
1413
1503
|
}
|
|
1414
1504
|
},
|
|
1415
1505
|
loc: {
|
|
1416
1506
|
start: {
|
|
1417
|
-
line:
|
|
1507
|
+
line: 86,
|
|
1418
1508
|
column: 60
|
|
1419
1509
|
},
|
|
1420
1510
|
end: {
|
|
1421
|
-
line:
|
|
1511
|
+
line: 95,
|
|
1422
1512
|
column: 5
|
|
1423
1513
|
}
|
|
1424
1514
|
},
|
|
1425
|
-
line:
|
|
1515
|
+
line: 86
|
|
1426
1516
|
},
|
|
1427
1517
|
"8": {
|
|
1428
1518
|
name: "(anonymous_8)",
|
|
1429
1519
|
decl: {
|
|
1430
1520
|
start: {
|
|
1431
|
-
line:
|
|
1521
|
+
line: 89,
|
|
1432
1522
|
column: 11
|
|
1433
1523
|
},
|
|
1434
1524
|
end: {
|
|
1435
|
-
line:
|
|
1525
|
+
line: 89,
|
|
1436
1526
|
column: 12
|
|
1437
1527
|
}
|
|
1438
1528
|
},
|
|
1439
1529
|
loc: {
|
|
1440
1530
|
start: {
|
|
1441
|
-
line:
|
|
1531
|
+
line: 89,
|
|
1442
1532
|
column: 39
|
|
1443
1533
|
},
|
|
1444
1534
|
end: {
|
|
1445
|
-
line:
|
|
1535
|
+
line: 94,
|
|
1446
1536
|
column: 9
|
|
1447
1537
|
}
|
|
1448
1538
|
},
|
|
1449
|
-
line:
|
|
1539
|
+
line: 89
|
|
1450
1540
|
},
|
|
1451
1541
|
"9": {
|
|
1452
1542
|
name: "(anonymous_9)",
|
|
1453
1543
|
decl: {
|
|
1454
1544
|
start: {
|
|
1455
|
-
line:
|
|
1545
|
+
line: 96,
|
|
1456
1546
|
column: 4
|
|
1457
1547
|
},
|
|
1458
1548
|
end: {
|
|
1459
|
-
line:
|
|
1549
|
+
line: 96,
|
|
1460
1550
|
column: 5
|
|
1461
1551
|
}
|
|
1462
1552
|
},
|
|
1463
1553
|
loc: {
|
|
1464
1554
|
start: {
|
|
1465
|
-
line:
|
|
1555
|
+
line: 96,
|
|
1466
1556
|
column: 59
|
|
1467
1557
|
},
|
|
1468
1558
|
end: {
|
|
1469
|
-
line:
|
|
1559
|
+
line: 114,
|
|
1470
1560
|
column: 5
|
|
1471
1561
|
}
|
|
1472
1562
|
},
|
|
1473
|
-
line:
|
|
1563
|
+
line: 96
|
|
1474
1564
|
},
|
|
1475
1565
|
"10": {
|
|
1476
1566
|
name: "(anonymous_10)",
|
|
1477
1567
|
decl: {
|
|
1478
1568
|
start: {
|
|
1479
|
-
line:
|
|
1569
|
+
line: 115,
|
|
1480
1570
|
column: 4
|
|
1481
1571
|
},
|
|
1482
1572
|
end: {
|
|
1483
|
-
line:
|
|
1573
|
+
line: 115,
|
|
1484
1574
|
column: 5
|
|
1485
1575
|
}
|
|
1486
1576
|
},
|
|
1487
1577
|
loc: {
|
|
1488
1578
|
start: {
|
|
1489
|
-
line:
|
|
1579
|
+
line: 115,
|
|
1490
1580
|
column: 49
|
|
1491
1581
|
},
|
|
1492
1582
|
end: {
|
|
1493
|
-
line:
|
|
1583
|
+
line: 122,
|
|
1494
1584
|
column: 5
|
|
1495
1585
|
}
|
|
1496
1586
|
},
|
|
1497
|
-
line:
|
|
1587
|
+
line: 115
|
|
1498
1588
|
},
|
|
1499
1589
|
"11": {
|
|
1500
1590
|
name: "(anonymous_11)",
|
|
1501
1591
|
decl: {
|
|
1502
1592
|
start: {
|
|
1503
|
-
line:
|
|
1593
|
+
line: 118,
|
|
1504
1594
|
column: 11
|
|
1505
1595
|
},
|
|
1506
1596
|
end: {
|
|
1507
|
-
line:
|
|
1597
|
+
line: 118,
|
|
1508
1598
|
column: 12
|
|
1509
1599
|
}
|
|
1510
1600
|
},
|
|
1511
1601
|
loc: {
|
|
1512
1602
|
start: {
|
|
1513
|
-
line:
|
|
1603
|
+
line: 118,
|
|
1514
1604
|
column: 39
|
|
1515
1605
|
},
|
|
1516
1606
|
end: {
|
|
1517
|
-
line:
|
|
1607
|
+
line: 121,
|
|
1518
1608
|
column: 9
|
|
1519
1609
|
}
|
|
1520
1610
|
},
|
|
1521
|
-
line:
|
|
1611
|
+
line: 118
|
|
1522
1612
|
},
|
|
1523
1613
|
"12": {
|
|
1524
1614
|
name: "(anonymous_12)",
|
|
1525
1615
|
decl: {
|
|
1526
1616
|
start: {
|
|
1527
|
-
line:
|
|
1617
|
+
line: 123,
|
|
1528
1618
|
column: 4
|
|
1529
1619
|
},
|
|
1530
1620
|
end: {
|
|
1531
|
-
line:
|
|
1621
|
+
line: 123,
|
|
1532
1622
|
column: 5
|
|
1533
1623
|
}
|
|
1534
1624
|
},
|
|
1535
1625
|
loc: {
|
|
1536
1626
|
start: {
|
|
1537
|
-
line:
|
|
1627
|
+
line: 123,
|
|
1538
1628
|
column: 29
|
|
1539
1629
|
},
|
|
1540
1630
|
end: {
|
|
1541
|
-
line:
|
|
1631
|
+
line: 132,
|
|
1542
1632
|
column: 5
|
|
1543
1633
|
}
|
|
1544
1634
|
},
|
|
1545
|
-
line:
|
|
1635
|
+
line: 123
|
|
1546
1636
|
},
|
|
1547
1637
|
"13": {
|
|
1548
1638
|
name: "(anonymous_13)",
|
|
1549
1639
|
decl: {
|
|
1550
1640
|
start: {
|
|
1551
|
-
line:
|
|
1641
|
+
line: 133,
|
|
1552
1642
|
column: 4
|
|
1553
1643
|
},
|
|
1554
1644
|
end: {
|
|
1555
|
-
line:
|
|
1645
|
+
line: 133,
|
|
1556
1646
|
column: 5
|
|
1557
1647
|
}
|
|
1558
1648
|
},
|
|
1559
1649
|
loc: {
|
|
1560
1650
|
start: {
|
|
1561
|
-
line:
|
|
1651
|
+
line: 133,
|
|
1562
1652
|
column: 25
|
|
1563
1653
|
},
|
|
1564
1654
|
end: {
|
|
1565
|
-
line:
|
|
1655
|
+
line: 182,
|
|
1566
1656
|
column: 5
|
|
1567
1657
|
}
|
|
1568
1658
|
},
|
|
1569
|
-
line:
|
|
1659
|
+
line: 133
|
|
1570
1660
|
},
|
|
1571
1661
|
"14": {
|
|
1572
1662
|
name: "(anonymous_14)",
|
|
1573
1663
|
decl: {
|
|
1574
1664
|
start: {
|
|
1575
|
-
line:
|
|
1665
|
+
line: 183,
|
|
1576
1666
|
column: 4
|
|
1577
1667
|
},
|
|
1578
1668
|
end: {
|
|
1579
|
-
line:
|
|
1669
|
+
line: 183,
|
|
1580
1670
|
column: 5
|
|
1581
1671
|
}
|
|
1582
1672
|
},
|
|
1583
1673
|
loc: {
|
|
1584
1674
|
start: {
|
|
1585
|
-
line:
|
|
1675
|
+
line: 183,
|
|
1586
1676
|
column: 38
|
|
1587
1677
|
},
|
|
1588
1678
|
end: {
|
|
1589
|
-
line:
|
|
1679
|
+
line: 203,
|
|
1590
1680
|
column: 5
|
|
1591
1681
|
}
|
|
1592
1682
|
},
|
|
1593
|
-
line:
|
|
1683
|
+
line: 183
|
|
1594
1684
|
},
|
|
1595
1685
|
"15": {
|
|
1596
1686
|
name: "(anonymous_15)",
|
|
1597
1687
|
decl: {
|
|
1598
1688
|
start: {
|
|
1599
|
-
line:
|
|
1689
|
+
line: 204,
|
|
1600
1690
|
column: 4
|
|
1601
1691
|
},
|
|
1602
1692
|
end: {
|
|
1603
|
-
line:
|
|
1693
|
+
line: 204,
|
|
1604
1694
|
column: 5
|
|
1605
1695
|
}
|
|
1606
1696
|
},
|
|
1607
1697
|
loc: {
|
|
1608
1698
|
start: {
|
|
1609
|
-
line:
|
|
1699
|
+
line: 204,
|
|
1610
1700
|
column: 40
|
|
1611
1701
|
},
|
|
1612
1702
|
end: {
|
|
1613
|
-
line:
|
|
1703
|
+
line: 218,
|
|
1614
1704
|
column: 5
|
|
1615
1705
|
}
|
|
1616
1706
|
},
|
|
1617
|
-
line:
|
|
1707
|
+
line: 204
|
|
1618
1708
|
},
|
|
1619
1709
|
"16": {
|
|
1620
1710
|
name: "(anonymous_16)",
|
|
1621
1711
|
decl: {
|
|
1622
1712
|
start: {
|
|
1623
|
-
line:
|
|
1713
|
+
line: 209,
|
|
1624
1714
|
column: 11
|
|
1625
1715
|
},
|
|
1626
1716
|
end: {
|
|
1627
|
-
line:
|
|
1717
|
+
line: 209,
|
|
1628
1718
|
column: 12
|
|
1629
1719
|
}
|
|
1630
1720
|
},
|
|
1631
1721
|
loc: {
|
|
1632
1722
|
start: {
|
|
1633
|
-
line:
|
|
1723
|
+
line: 209,
|
|
1634
1724
|
column: 33
|
|
1635
1725
|
},
|
|
1636
1726
|
end: {
|
|
1637
|
-
line:
|
|
1727
|
+
line: 211,
|
|
1638
1728
|
column: 9
|
|
1639
1729
|
}
|
|
1640
1730
|
},
|
|
1641
|
-
line:
|
|
1731
|
+
line: 209
|
|
1642
1732
|
},
|
|
1643
1733
|
"17": {
|
|
1644
1734
|
name: "(anonymous_17)",
|
|
1645
1735
|
decl: {
|
|
1646
1736
|
start: {
|
|
1647
|
-
line:
|
|
1737
|
+
line: 219,
|
|
1648
1738
|
column: 4
|
|
1649
1739
|
},
|
|
1650
1740
|
end: {
|
|
1651
|
-
line:
|
|
1741
|
+
line: 219,
|
|
1652
1742
|
column: 5
|
|
1653
1743
|
}
|
|
1654
1744
|
},
|
|
1655
1745
|
loc: {
|
|
1656
1746
|
start: {
|
|
1657
|
-
line:
|
|
1747
|
+
line: 219,
|
|
1658
1748
|
column: 57
|
|
1659
1749
|
},
|
|
1660
1750
|
end: {
|
|
1661
|
-
line:
|
|
1751
|
+
line: 258,
|
|
1662
1752
|
column: 5
|
|
1663
1753
|
}
|
|
1664
1754
|
},
|
|
1665
|
-
line:
|
|
1755
|
+
line: 219
|
|
1666
1756
|
},
|
|
1667
1757
|
"18": {
|
|
1668
1758
|
name: "(anonymous_18)",
|
|
1669
1759
|
decl: {
|
|
1670
1760
|
start: {
|
|
1671
|
-
line:
|
|
1761
|
+
line: 259,
|
|
1672
1762
|
column: 4
|
|
1673
1763
|
},
|
|
1674
1764
|
end: {
|
|
1675
|
-
line:
|
|
1765
|
+
line: 259,
|
|
1676
1766
|
column: 5
|
|
1677
1767
|
}
|
|
1678
1768
|
},
|
|
1679
1769
|
loc: {
|
|
1680
1770
|
start: {
|
|
1681
|
-
line:
|
|
1771
|
+
line: 259,
|
|
1682
1772
|
column: 75
|
|
1683
1773
|
},
|
|
1684
1774
|
end: {
|
|
1685
|
-
line:
|
|
1775
|
+
line: 290,
|
|
1686
1776
|
column: 5
|
|
1687
1777
|
}
|
|
1688
1778
|
},
|
|
1689
|
-
line:
|
|
1779
|
+
line: 259
|
|
1690
1780
|
}
|
|
1691
1781
|
},
|
|
1692
1782
|
branchMap: {
|
|
@@ -1867,352 +1957,418 @@ function cov_ms2xfswbr() {
|
|
|
1867
1957
|
"5": {
|
|
1868
1958
|
loc: {
|
|
1869
1959
|
start: {
|
|
1870
|
-
line:
|
|
1960
|
+
line: 34,
|
|
1871
1961
|
column: 28
|
|
1872
1962
|
},
|
|
1873
1963
|
end: {
|
|
1874
|
-
line:
|
|
1964
|
+
line: 34,
|
|
1875
1965
|
column: 87
|
|
1876
1966
|
}
|
|
1877
1967
|
},
|
|
1878
1968
|
type: "cond-expr",
|
|
1879
1969
|
locations: [{
|
|
1880
1970
|
start: {
|
|
1881
|
-
line:
|
|
1971
|
+
line: 34,
|
|
1882
1972
|
column: 56
|
|
1883
1973
|
},
|
|
1884
1974
|
end: {
|
|
1885
|
-
line:
|
|
1975
|
+
line: 34,
|
|
1886
1976
|
column: 67
|
|
1887
1977
|
}
|
|
1888
1978
|
}, {
|
|
1889
1979
|
start: {
|
|
1890
|
-
line:
|
|
1980
|
+
line: 34,
|
|
1891
1981
|
column: 70
|
|
1892
1982
|
},
|
|
1893
1983
|
end: {
|
|
1894
|
-
line:
|
|
1984
|
+
line: 34,
|
|
1895
1985
|
column: 87
|
|
1896
1986
|
}
|
|
1897
1987
|
}],
|
|
1898
|
-
line:
|
|
1988
|
+
line: 34
|
|
1899
1989
|
},
|
|
1900
1990
|
"6": {
|
|
1901
1991
|
loc: {
|
|
1902
1992
|
start: {
|
|
1903
|
-
line:
|
|
1993
|
+
line: 35,
|
|
1904
1994
|
column: 29
|
|
1905
1995
|
},
|
|
1906
1996
|
end: {
|
|
1907
|
-
line:
|
|
1997
|
+
line: 35,
|
|
1908
1998
|
column: 95
|
|
1909
1999
|
}
|
|
1910
2000
|
},
|
|
1911
2001
|
type: "cond-expr",
|
|
1912
2002
|
locations: [{
|
|
1913
2003
|
start: {
|
|
1914
|
-
line:
|
|
2004
|
+
line: 35,
|
|
1915
2005
|
column: 85
|
|
1916
2006
|
},
|
|
1917
2007
|
end: {
|
|
1918
|
-
line:
|
|
2008
|
+
line: 35,
|
|
1919
2009
|
column: 87
|
|
1920
2010
|
}
|
|
1921
2011
|
}, {
|
|
1922
2012
|
start: {
|
|
1923
|
-
line:
|
|
2013
|
+
line: 35,
|
|
1924
2014
|
column: 90
|
|
1925
2015
|
},
|
|
1926
2016
|
end: {
|
|
1927
|
-
line:
|
|
2017
|
+
line: 35,
|
|
1928
2018
|
column: 95
|
|
1929
2019
|
}
|
|
1930
2020
|
}],
|
|
1931
|
-
line:
|
|
2021
|
+
line: 35
|
|
1932
2022
|
},
|
|
1933
2023
|
"7": {
|
|
1934
2024
|
loc: {
|
|
1935
2025
|
start: {
|
|
1936
|
-
line:
|
|
2026
|
+
line: 35,
|
|
1937
2027
|
column: 29
|
|
1938
2028
|
},
|
|
1939
2029
|
end: {
|
|
1940
|
-
line:
|
|
2030
|
+
line: 35,
|
|
1941
2031
|
column: 82
|
|
1942
2032
|
}
|
|
1943
2033
|
},
|
|
1944
2034
|
type: "binary-expr",
|
|
1945
2035
|
locations: [{
|
|
1946
2036
|
start: {
|
|
1947
|
-
line:
|
|
2037
|
+
line: 35,
|
|
1948
2038
|
column: 29
|
|
1949
2039
|
},
|
|
1950
2040
|
end: {
|
|
1951
|
-
line:
|
|
2041
|
+
line: 35,
|
|
1952
2042
|
column: 65
|
|
1953
2043
|
}
|
|
1954
2044
|
}, {
|
|
1955
2045
|
start: {
|
|
1956
|
-
line:
|
|
2046
|
+
line: 35,
|
|
1957
2047
|
column: 69
|
|
1958
2048
|
},
|
|
1959
2049
|
end: {
|
|
1960
|
-
line:
|
|
2050
|
+
line: 35,
|
|
1961
2051
|
column: 82
|
|
1962
2052
|
}
|
|
1963
2053
|
}],
|
|
1964
|
-
line:
|
|
2054
|
+
line: 35
|
|
1965
2055
|
},
|
|
1966
2056
|
"8": {
|
|
1967
2057
|
loc: {
|
|
1968
2058
|
start: {
|
|
1969
|
-
line:
|
|
2059
|
+
line: 36,
|
|
1970
2060
|
column: 24
|
|
1971
2061
|
},
|
|
1972
2062
|
end: {
|
|
1973
|
-
line:
|
|
2063
|
+
line: 36,
|
|
1974
2064
|
column: 82
|
|
1975
2065
|
}
|
|
1976
2066
|
},
|
|
1977
2067
|
type: "cond-expr",
|
|
1978
2068
|
locations: [{
|
|
1979
2069
|
start: {
|
|
1980
|
-
line:
|
|
2070
|
+
line: 36,
|
|
1981
2071
|
column: 75
|
|
1982
2072
|
},
|
|
1983
2073
|
end: {
|
|
1984
|
-
line:
|
|
2074
|
+
line: 36,
|
|
1985
2075
|
column: 77
|
|
1986
2076
|
}
|
|
1987
2077
|
}, {
|
|
1988
2078
|
start: {
|
|
1989
|
-
line:
|
|
2079
|
+
line: 36,
|
|
1990
2080
|
column: 80
|
|
1991
2081
|
},
|
|
1992
2082
|
end: {
|
|
1993
|
-
line:
|
|
2083
|
+
line: 36,
|
|
1994
2084
|
column: 82
|
|
1995
2085
|
}
|
|
1996
2086
|
}],
|
|
1997
|
-
line:
|
|
2087
|
+
line: 36
|
|
1998
2088
|
},
|
|
1999
2089
|
"9": {
|
|
2000
2090
|
loc: {
|
|
2001
2091
|
start: {
|
|
2002
|
-
line:
|
|
2092
|
+
line: 36,
|
|
2003
2093
|
column: 24
|
|
2004
2094
|
},
|
|
2005
2095
|
end: {
|
|
2006
|
-
line:
|
|
2096
|
+
line: 36,
|
|
2007
2097
|
column: 72
|
|
2008
2098
|
}
|
|
2009
2099
|
},
|
|
2010
2100
|
type: "binary-expr",
|
|
2011
2101
|
locations: [{
|
|
2012
2102
|
start: {
|
|
2013
|
-
line:
|
|
2103
|
+
line: 36,
|
|
2014
2104
|
column: 24
|
|
2015
2105
|
},
|
|
2016
2106
|
end: {
|
|
2017
|
-
line:
|
|
2107
|
+
line: 36,
|
|
2018
2108
|
column: 55
|
|
2019
2109
|
}
|
|
2020
2110
|
}, {
|
|
2021
2111
|
start: {
|
|
2022
|
-
line:
|
|
2112
|
+
line: 36,
|
|
2023
2113
|
column: 59
|
|
2024
2114
|
},
|
|
2025
2115
|
end: {
|
|
2026
|
-
line:
|
|
2116
|
+
line: 36,
|
|
2027
2117
|
column: 72
|
|
2028
2118
|
}
|
|
2029
2119
|
}],
|
|
2030
|
-
line:
|
|
2120
|
+
line: 36
|
|
2031
2121
|
},
|
|
2032
2122
|
"10": {
|
|
2033
2123
|
loc: {
|
|
2034
2124
|
start: {
|
|
2035
|
-
line:
|
|
2125
|
+
line: 38,
|
|
2036
2126
|
column: 31
|
|
2037
2127
|
},
|
|
2038
2128
|
end: {
|
|
2039
|
-
line:
|
|
2129
|
+
line: 38,
|
|
2040
2130
|
column: 96
|
|
2041
2131
|
}
|
|
2042
2132
|
},
|
|
2043
2133
|
type: "cond-expr",
|
|
2044
2134
|
locations: [{
|
|
2045
2135
|
start: {
|
|
2046
|
-
line:
|
|
2136
|
+
line: 38,
|
|
2047
2137
|
column: 89
|
|
2048
2138
|
},
|
|
2049
2139
|
end: {
|
|
2050
|
-
line:
|
|
2140
|
+
line: 38,
|
|
2051
2141
|
column: 91
|
|
2052
2142
|
}
|
|
2053
2143
|
}, {
|
|
2054
2144
|
start: {
|
|
2055
|
-
line:
|
|
2145
|
+
line: 38,
|
|
2056
2146
|
column: 94
|
|
2057
2147
|
},
|
|
2058
2148
|
end: {
|
|
2059
|
-
line:
|
|
2149
|
+
line: 38,
|
|
2060
2150
|
column: 96
|
|
2061
2151
|
}
|
|
2062
2152
|
}],
|
|
2063
|
-
line:
|
|
2153
|
+
line: 38
|
|
2064
2154
|
},
|
|
2065
2155
|
"11": {
|
|
2066
2156
|
loc: {
|
|
2067
2157
|
start: {
|
|
2068
|
-
line:
|
|
2158
|
+
line: 38,
|
|
2069
2159
|
column: 31
|
|
2070
2160
|
},
|
|
2071
2161
|
end: {
|
|
2072
|
-
line:
|
|
2162
|
+
line: 38,
|
|
2073
2163
|
column: 86
|
|
2074
2164
|
}
|
|
2075
2165
|
},
|
|
2076
2166
|
type: "binary-expr",
|
|
2077
2167
|
locations: [{
|
|
2078
2168
|
start: {
|
|
2079
|
-
line:
|
|
2169
|
+
line: 38,
|
|
2080
2170
|
column: 31
|
|
2081
2171
|
},
|
|
2082
2172
|
end: {
|
|
2083
|
-
line:
|
|
2173
|
+
line: 38,
|
|
2084
2174
|
column: 69
|
|
2085
2175
|
}
|
|
2086
2176
|
}, {
|
|
2087
2177
|
start: {
|
|
2088
|
-
line:
|
|
2178
|
+
line: 38,
|
|
2089
2179
|
column: 73
|
|
2090
2180
|
},
|
|
2091
2181
|
end: {
|
|
2092
|
-
line:
|
|
2182
|
+
line: 38,
|
|
2093
2183
|
column: 86
|
|
2094
2184
|
}
|
|
2095
2185
|
}],
|
|
2096
|
-
line:
|
|
2186
|
+
line: 38
|
|
2097
2187
|
},
|
|
2098
2188
|
"12": {
|
|
2099
2189
|
loc: {
|
|
2100
2190
|
start: {
|
|
2101
|
-
line:
|
|
2191
|
+
line: 39,
|
|
2192
|
+
column: 36
|
|
2193
|
+
},
|
|
2194
|
+
end: {
|
|
2195
|
+
line: 39,
|
|
2196
|
+
column: 135
|
|
2197
|
+
}
|
|
2198
|
+
},
|
|
2199
|
+
type: "cond-expr",
|
|
2200
|
+
locations: [{
|
|
2201
|
+
start: {
|
|
2202
|
+
line: 39,
|
|
2203
|
+
column: 99
|
|
2204
|
+
},
|
|
2205
|
+
end: {
|
|
2206
|
+
line: 39,
|
|
2207
|
+
column: 101
|
|
2208
|
+
}
|
|
2209
|
+
}, {
|
|
2210
|
+
start: {
|
|
2211
|
+
line: 39,
|
|
2212
|
+
column: 104
|
|
2213
|
+
},
|
|
2214
|
+
end: {
|
|
2215
|
+
line: 39,
|
|
2216
|
+
column: 135
|
|
2217
|
+
}
|
|
2218
|
+
}],
|
|
2219
|
+
line: 39
|
|
2220
|
+
},
|
|
2221
|
+
"13": {
|
|
2222
|
+
loc: {
|
|
2223
|
+
start: {
|
|
2224
|
+
line: 39,
|
|
2225
|
+
column: 36
|
|
2226
|
+
},
|
|
2227
|
+
end: {
|
|
2228
|
+
line: 39,
|
|
2229
|
+
column: 96
|
|
2230
|
+
}
|
|
2231
|
+
},
|
|
2232
|
+
type: "binary-expr",
|
|
2233
|
+
locations: [{
|
|
2234
|
+
start: {
|
|
2235
|
+
line: 39,
|
|
2236
|
+
column: 36
|
|
2237
|
+
},
|
|
2238
|
+
end: {
|
|
2239
|
+
line: 39,
|
|
2240
|
+
column: 79
|
|
2241
|
+
}
|
|
2242
|
+
}, {
|
|
2243
|
+
start: {
|
|
2244
|
+
line: 39,
|
|
2245
|
+
column: 83
|
|
2246
|
+
},
|
|
2247
|
+
end: {
|
|
2248
|
+
line: 39,
|
|
2249
|
+
column: 96
|
|
2250
|
+
}
|
|
2251
|
+
}],
|
|
2252
|
+
line: 39
|
|
2253
|
+
},
|
|
2254
|
+
"14": {
|
|
2255
|
+
loc: {
|
|
2256
|
+
start: {
|
|
2257
|
+
line: 43,
|
|
2102
2258
|
column: 15
|
|
2103
2259
|
},
|
|
2104
2260
|
end: {
|
|
2105
|
-
line:
|
|
2261
|
+
line: 43,
|
|
2106
2262
|
column: 154
|
|
2107
2263
|
}
|
|
2108
2264
|
},
|
|
2109
2265
|
type: "cond-expr",
|
|
2110
2266
|
locations: [{
|
|
2111
2267
|
start: {
|
|
2112
|
-
line:
|
|
2268
|
+
line: 43,
|
|
2113
2269
|
column: 109
|
|
2114
2270
|
},
|
|
2115
2271
|
end: {
|
|
2116
|
-
line:
|
|
2272
|
+
line: 43,
|
|
2117
2273
|
column: 111
|
|
2118
2274
|
}
|
|
2119
2275
|
}, {
|
|
2120
2276
|
start: {
|
|
2121
|
-
line:
|
|
2277
|
+
line: 43,
|
|
2122
2278
|
column: 114
|
|
2123
2279
|
},
|
|
2124
2280
|
end: {
|
|
2125
|
-
line:
|
|
2281
|
+
line: 43,
|
|
2126
2282
|
column: 154
|
|
2127
2283
|
}
|
|
2128
2284
|
}],
|
|
2129
|
-
line:
|
|
2285
|
+
line: 43
|
|
2130
2286
|
},
|
|
2131
|
-
"
|
|
2287
|
+
"15": {
|
|
2132
2288
|
loc: {
|
|
2133
2289
|
start: {
|
|
2134
|
-
line:
|
|
2290
|
+
line: 43,
|
|
2135
2291
|
column: 15
|
|
2136
2292
|
},
|
|
2137
2293
|
end: {
|
|
2138
|
-
line:
|
|
2294
|
+
line: 43,
|
|
2139
2295
|
column: 106
|
|
2140
2296
|
}
|
|
2141
2297
|
},
|
|
2142
2298
|
type: "binary-expr",
|
|
2143
2299
|
locations: [{
|
|
2144
2300
|
start: {
|
|
2145
|
-
line:
|
|
2301
|
+
line: 43,
|
|
2146
2302
|
column: 15
|
|
2147
2303
|
},
|
|
2148
2304
|
end: {
|
|
2149
|
-
line:
|
|
2305
|
+
line: 43,
|
|
2150
2306
|
column: 89
|
|
2151
2307
|
}
|
|
2152
2308
|
}, {
|
|
2153
2309
|
start: {
|
|
2154
|
-
line:
|
|
2310
|
+
line: 43,
|
|
2155
2311
|
column: 93
|
|
2156
2312
|
},
|
|
2157
2313
|
end: {
|
|
2158
|
-
line:
|
|
2314
|
+
line: 43,
|
|
2159
2315
|
column: 106
|
|
2160
2316
|
}
|
|
2161
2317
|
}],
|
|
2162
|
-
line:
|
|
2318
|
+
line: 43
|
|
2163
2319
|
},
|
|
2164
|
-
"
|
|
2320
|
+
"16": {
|
|
2165
2321
|
loc: {
|
|
2166
2322
|
start: {
|
|
2167
|
-
line:
|
|
2323
|
+
line: 56,
|
|
2168
2324
|
column: 19
|
|
2169
2325
|
},
|
|
2170
2326
|
end: {
|
|
2171
|
-
line:
|
|
2327
|
+
line: 56,
|
|
2172
2328
|
column: 63
|
|
2173
2329
|
}
|
|
2174
2330
|
},
|
|
2175
2331
|
type: "cond-expr",
|
|
2176
2332
|
locations: [{
|
|
2177
2333
|
start: {
|
|
2178
|
-
line:
|
|
2334
|
+
line: 56,
|
|
2179
2335
|
column: 45
|
|
2180
2336
|
},
|
|
2181
2337
|
end: {
|
|
2182
|
-
line:
|
|
2338
|
+
line: 56,
|
|
2183
2339
|
column: 51
|
|
2184
2340
|
}
|
|
2185
2341
|
}, {
|
|
2186
2342
|
start: {
|
|
2187
|
-
line:
|
|
2343
|
+
line: 56,
|
|
2188
2344
|
column: 54
|
|
2189
2345
|
},
|
|
2190
2346
|
end: {
|
|
2191
|
-
line:
|
|
2347
|
+
line: 56,
|
|
2192
2348
|
column: 63
|
|
2193
2349
|
}
|
|
2194
2350
|
}],
|
|
2195
|
-
line:
|
|
2351
|
+
line: 56
|
|
2196
2352
|
},
|
|
2197
|
-
"
|
|
2353
|
+
"17": {
|
|
2198
2354
|
loc: {
|
|
2199
2355
|
start: {
|
|
2200
|
-
line:
|
|
2356
|
+
line: 64,
|
|
2201
2357
|
column: 8
|
|
2202
2358
|
},
|
|
2203
2359
|
end: {
|
|
2204
|
-
line:
|
|
2360
|
+
line: 67,
|
|
2205
2361
|
column: 9
|
|
2206
2362
|
}
|
|
2207
2363
|
},
|
|
2208
2364
|
type: "if",
|
|
2209
2365
|
locations: [{
|
|
2210
2366
|
start: {
|
|
2211
|
-
line:
|
|
2367
|
+
line: 64,
|
|
2212
2368
|
column: 8
|
|
2213
2369
|
},
|
|
2214
2370
|
end: {
|
|
2215
|
-
line:
|
|
2371
|
+
line: 67,
|
|
2216
2372
|
column: 9
|
|
2217
2373
|
}
|
|
2218
2374
|
}, {
|
|
@@ -2225,27 +2381,27 @@ function cov_ms2xfswbr() {
|
|
|
2225
2381
|
column: undefined
|
|
2226
2382
|
}
|
|
2227
2383
|
}],
|
|
2228
|
-
line:
|
|
2384
|
+
line: 64
|
|
2229
2385
|
},
|
|
2230
|
-
"
|
|
2386
|
+
"18": {
|
|
2231
2387
|
loc: {
|
|
2232
2388
|
start: {
|
|
2233
|
-
line:
|
|
2389
|
+
line: 97,
|
|
2234
2390
|
column: 8
|
|
2235
2391
|
},
|
|
2236
2392
|
end: {
|
|
2237
|
-
line:
|
|
2393
|
+
line: 102,
|
|
2238
2394
|
column: 9
|
|
2239
2395
|
}
|
|
2240
2396
|
},
|
|
2241
2397
|
type: "if",
|
|
2242
2398
|
locations: [{
|
|
2243
2399
|
start: {
|
|
2244
|
-
line:
|
|
2400
|
+
line: 97,
|
|
2245
2401
|
column: 8
|
|
2246
2402
|
},
|
|
2247
2403
|
end: {
|
|
2248
|
-
line:
|
|
2404
|
+
line: 102,
|
|
2249
2405
|
column: 9
|
|
2250
2406
|
}
|
|
2251
2407
|
}, {
|
|
@@ -2258,93 +2414,93 @@ function cov_ms2xfswbr() {
|
|
|
2258
2414
|
column: undefined
|
|
2259
2415
|
}
|
|
2260
2416
|
}],
|
|
2261
|
-
line:
|
|
2417
|
+
line: 97
|
|
2262
2418
|
},
|
|
2263
|
-
"
|
|
2419
|
+
"19": {
|
|
2264
2420
|
loc: {
|
|
2265
2421
|
start: {
|
|
2266
|
-
line:
|
|
2422
|
+
line: 103,
|
|
2267
2423
|
column: 51
|
|
2268
2424
|
},
|
|
2269
2425
|
end: {
|
|
2270
|
-
line:
|
|
2426
|
+
line: 103,
|
|
2271
2427
|
column: 80
|
|
2272
2428
|
}
|
|
2273
2429
|
},
|
|
2274
2430
|
type: "binary-expr",
|
|
2275
2431
|
locations: [{
|
|
2276
2432
|
start: {
|
|
2277
|
-
line:
|
|
2433
|
+
line: 103,
|
|
2278
2434
|
column: 51
|
|
2279
2435
|
},
|
|
2280
2436
|
end: {
|
|
2281
|
-
line:
|
|
2437
|
+
line: 103,
|
|
2282
2438
|
column: 74
|
|
2283
2439
|
}
|
|
2284
2440
|
}, {
|
|
2285
2441
|
start: {
|
|
2286
|
-
line:
|
|
2442
|
+
line: 103,
|
|
2287
2443
|
column: 78
|
|
2288
2444
|
},
|
|
2289
2445
|
end: {
|
|
2290
|
-
line:
|
|
2446
|
+
line: 103,
|
|
2291
2447
|
column: 80
|
|
2292
2448
|
}
|
|
2293
2449
|
}],
|
|
2294
|
-
line:
|
|
2450
|
+
line: 103
|
|
2295
2451
|
},
|
|
2296
|
-
"
|
|
2452
|
+
"20": {
|
|
2297
2453
|
loc: {
|
|
2298
2454
|
start: {
|
|
2299
|
-
line:
|
|
2455
|
+
line: 105,
|
|
2300
2456
|
column: 89
|
|
2301
2457
|
},
|
|
2302
2458
|
end: {
|
|
2303
|
-
line:
|
|
2459
|
+
line: 105,
|
|
2304
2460
|
column: 118
|
|
2305
2461
|
}
|
|
2306
2462
|
},
|
|
2307
2463
|
type: "binary-expr",
|
|
2308
2464
|
locations: [{
|
|
2309
2465
|
start: {
|
|
2310
|
-
line:
|
|
2466
|
+
line: 105,
|
|
2311
2467
|
column: 89
|
|
2312
2468
|
},
|
|
2313
2469
|
end: {
|
|
2314
|
-
line:
|
|
2470
|
+
line: 105,
|
|
2315
2471
|
column: 112
|
|
2316
2472
|
}
|
|
2317
2473
|
}, {
|
|
2318
2474
|
start: {
|
|
2319
|
-
line:
|
|
2475
|
+
line: 105,
|
|
2320
2476
|
column: 116
|
|
2321
2477
|
},
|
|
2322
2478
|
end: {
|
|
2323
|
-
line:
|
|
2479
|
+
line: 105,
|
|
2324
2480
|
column: 118
|
|
2325
2481
|
}
|
|
2326
2482
|
}],
|
|
2327
|
-
line:
|
|
2483
|
+
line: 105
|
|
2328
2484
|
},
|
|
2329
|
-
"
|
|
2485
|
+
"21": {
|
|
2330
2486
|
loc: {
|
|
2331
2487
|
start: {
|
|
2332
|
-
line:
|
|
2488
|
+
line: 107,
|
|
2333
2489
|
column: 8
|
|
2334
2490
|
},
|
|
2335
2491
|
end: {
|
|
2336
|
-
line:
|
|
2492
|
+
line: 109,
|
|
2337
2493
|
column: 9
|
|
2338
2494
|
}
|
|
2339
2495
|
},
|
|
2340
2496
|
type: "if",
|
|
2341
2497
|
locations: [{
|
|
2342
2498
|
start: {
|
|
2343
|
-
line:
|
|
2499
|
+
line: 107,
|
|
2344
2500
|
column: 8
|
|
2345
2501
|
},
|
|
2346
2502
|
end: {
|
|
2347
|
-
line:
|
|
2503
|
+
line: 109,
|
|
2348
2504
|
column: 9
|
|
2349
2505
|
}
|
|
2350
2506
|
}, {
|
|
@@ -2357,27 +2513,27 @@ function cov_ms2xfswbr() {
|
|
|
2357
2513
|
column: undefined
|
|
2358
2514
|
}
|
|
2359
2515
|
}],
|
|
2360
|
-
line:
|
|
2516
|
+
line: 107
|
|
2361
2517
|
},
|
|
2362
|
-
"
|
|
2518
|
+
"22": {
|
|
2363
2519
|
loc: {
|
|
2364
2520
|
start: {
|
|
2365
|
-
line:
|
|
2521
|
+
line: 124,
|
|
2366
2522
|
column: 8
|
|
2367
2523
|
},
|
|
2368
2524
|
end: {
|
|
2369
|
-
line:
|
|
2525
|
+
line: 130,
|
|
2370
2526
|
column: 9
|
|
2371
2527
|
}
|
|
2372
2528
|
},
|
|
2373
2529
|
type: "if",
|
|
2374
2530
|
locations: [{
|
|
2375
2531
|
start: {
|
|
2376
|
-
line:
|
|
2532
|
+
line: 124,
|
|
2377
2533
|
column: 8
|
|
2378
2534
|
},
|
|
2379
2535
|
end: {
|
|
2380
|
-
line:
|
|
2536
|
+
line: 130,
|
|
2381
2537
|
column: 9
|
|
2382
2538
|
}
|
|
2383
2539
|
}, {
|
|
@@ -2390,27 +2546,27 @@ function cov_ms2xfswbr() {
|
|
|
2390
2546
|
column: undefined
|
|
2391
2547
|
}
|
|
2392
2548
|
}],
|
|
2393
|
-
line:
|
|
2549
|
+
line: 124
|
|
2394
2550
|
},
|
|
2395
|
-
"
|
|
2551
|
+
"23": {
|
|
2396
2552
|
loc: {
|
|
2397
2553
|
start: {
|
|
2398
|
-
line:
|
|
2554
|
+
line: 126,
|
|
2399
2555
|
column: 12
|
|
2400
2556
|
},
|
|
2401
2557
|
end: {
|
|
2402
|
-
line:
|
|
2558
|
+
line: 128,
|
|
2403
2559
|
column: 13
|
|
2404
2560
|
}
|
|
2405
2561
|
},
|
|
2406
2562
|
type: "if",
|
|
2407
2563
|
locations: [{
|
|
2408
2564
|
start: {
|
|
2409
|
-
line:
|
|
2565
|
+
line: 126,
|
|
2410
2566
|
column: 12
|
|
2411
2567
|
},
|
|
2412
2568
|
end: {
|
|
2413
|
-
line:
|
|
2569
|
+
line: 128,
|
|
2414
2570
|
column: 13
|
|
2415
2571
|
}
|
|
2416
2572
|
}, {
|
|
@@ -2423,93 +2579,93 @@ function cov_ms2xfswbr() {
|
|
|
2423
2579
|
column: undefined
|
|
2424
2580
|
}
|
|
2425
2581
|
}],
|
|
2426
|
-
line:
|
|
2582
|
+
line: 126
|
|
2427
2583
|
},
|
|
2428
|
-
"
|
|
2584
|
+
"24": {
|
|
2429
2585
|
loc: {
|
|
2430
2586
|
start: {
|
|
2431
|
-
line:
|
|
2587
|
+
line: 135,
|
|
2432
2588
|
column: 38
|
|
2433
2589
|
},
|
|
2434
2590
|
end: {
|
|
2435
|
-
line:
|
|
2591
|
+
line: 135,
|
|
2436
2592
|
column: 146
|
|
2437
2593
|
}
|
|
2438
2594
|
},
|
|
2439
2595
|
type: "cond-expr",
|
|
2440
2596
|
locations: [{
|
|
2441
2597
|
start: {
|
|
2442
|
-
line:
|
|
2598
|
+
line: 135,
|
|
2443
2599
|
column: 99
|
|
2444
2600
|
},
|
|
2445
2601
|
end: {
|
|
2446
|
-
line:
|
|
2602
|
+
line: 135,
|
|
2447
2603
|
column: 116
|
|
2448
2604
|
}
|
|
2449
2605
|
}, {
|
|
2450
2606
|
start: {
|
|
2451
|
-
line:
|
|
2607
|
+
line: 135,
|
|
2452
2608
|
column: 119
|
|
2453
2609
|
},
|
|
2454
2610
|
end: {
|
|
2455
|
-
line:
|
|
2611
|
+
line: 135,
|
|
2456
2612
|
column: 146
|
|
2457
2613
|
}
|
|
2458
2614
|
}],
|
|
2459
|
-
line:
|
|
2615
|
+
line: 135
|
|
2460
2616
|
},
|
|
2461
|
-
"
|
|
2617
|
+
"25": {
|
|
2462
2618
|
loc: {
|
|
2463
2619
|
start: {
|
|
2464
|
-
line:
|
|
2620
|
+
line: 135,
|
|
2465
2621
|
column: 38
|
|
2466
2622
|
},
|
|
2467
2623
|
end: {
|
|
2468
|
-
line:
|
|
2624
|
+
line: 135,
|
|
2469
2625
|
column: 96
|
|
2470
2626
|
}
|
|
2471
2627
|
},
|
|
2472
2628
|
type: "binary-expr",
|
|
2473
2629
|
locations: [{
|
|
2474
2630
|
start: {
|
|
2475
|
-
line:
|
|
2631
|
+
line: 135,
|
|
2476
2632
|
column: 38
|
|
2477
2633
|
},
|
|
2478
2634
|
end: {
|
|
2479
|
-
line:
|
|
2635
|
+
line: 135,
|
|
2480
2636
|
column: 64
|
|
2481
2637
|
}
|
|
2482
2638
|
}, {
|
|
2483
2639
|
start: {
|
|
2484
|
-
line:
|
|
2640
|
+
line: 135,
|
|
2485
2641
|
column: 68
|
|
2486
2642
|
},
|
|
2487
2643
|
end: {
|
|
2488
|
-
line:
|
|
2644
|
+
line: 135,
|
|
2489
2645
|
column: 96
|
|
2490
2646
|
}
|
|
2491
2647
|
}],
|
|
2492
|
-
line:
|
|
2648
|
+
line: 135
|
|
2493
2649
|
},
|
|
2494
|
-
"
|
|
2650
|
+
"26": {
|
|
2495
2651
|
loc: {
|
|
2496
2652
|
start: {
|
|
2497
|
-
line:
|
|
2653
|
+
line: 139,
|
|
2498
2654
|
column: 8
|
|
2499
2655
|
},
|
|
2500
2656
|
end: {
|
|
2501
|
-
line:
|
|
2657
|
+
line: 141,
|
|
2502
2658
|
column: 9
|
|
2503
2659
|
}
|
|
2504
2660
|
},
|
|
2505
2661
|
type: "if",
|
|
2506
2662
|
locations: [{
|
|
2507
2663
|
start: {
|
|
2508
|
-
line:
|
|
2664
|
+
line: 139,
|
|
2509
2665
|
column: 8
|
|
2510
2666
|
},
|
|
2511
2667
|
end: {
|
|
2512
|
-
line:
|
|
2668
|
+
line: 141,
|
|
2513
2669
|
column: 9
|
|
2514
2670
|
}
|
|
2515
2671
|
}, {
|
|
@@ -2522,27 +2678,27 @@ function cov_ms2xfswbr() {
|
|
|
2522
2678
|
column: undefined
|
|
2523
2679
|
}
|
|
2524
2680
|
}],
|
|
2525
|
-
line:
|
|
2681
|
+
line: 139
|
|
2526
2682
|
},
|
|
2527
|
-
"
|
|
2683
|
+
"27": {
|
|
2528
2684
|
loc: {
|
|
2529
2685
|
start: {
|
|
2530
|
-
line:
|
|
2686
|
+
line: 143,
|
|
2531
2687
|
column: 12
|
|
2532
2688
|
},
|
|
2533
2689
|
end: {
|
|
2534
|
-
line:
|
|
2690
|
+
line: 145,
|
|
2535
2691
|
column: 13
|
|
2536
2692
|
}
|
|
2537
2693
|
},
|
|
2538
2694
|
type: "if",
|
|
2539
2695
|
locations: [{
|
|
2540
2696
|
start: {
|
|
2541
|
-
line:
|
|
2697
|
+
line: 143,
|
|
2542
2698
|
column: 12
|
|
2543
2699
|
},
|
|
2544
2700
|
end: {
|
|
2545
|
-
line:
|
|
2701
|
+
line: 145,
|
|
2546
2702
|
column: 13
|
|
2547
2703
|
}
|
|
2548
2704
|
}, {
|
|
@@ -2555,126 +2711,126 @@ function cov_ms2xfswbr() {
|
|
|
2555
2711
|
column: undefined
|
|
2556
2712
|
}
|
|
2557
2713
|
}],
|
|
2558
|
-
line:
|
|
2714
|
+
line: 143
|
|
2559
2715
|
},
|
|
2560
|
-
"
|
|
2716
|
+
"28": {
|
|
2561
2717
|
loc: {
|
|
2562
2718
|
start: {
|
|
2563
|
-
line:
|
|
2719
|
+
line: 147,
|
|
2564
2720
|
column: 27
|
|
2565
2721
|
},
|
|
2566
2722
|
end: {
|
|
2567
|
-
line:
|
|
2723
|
+
line: 147,
|
|
2568
2724
|
column: 97
|
|
2569
2725
|
}
|
|
2570
2726
|
},
|
|
2571
2727
|
type: "binary-expr",
|
|
2572
2728
|
locations: [{
|
|
2573
2729
|
start: {
|
|
2574
|
-
line:
|
|
2730
|
+
line: 147,
|
|
2575
2731
|
column: 28
|
|
2576
2732
|
},
|
|
2577
2733
|
end: {
|
|
2578
|
-
line:
|
|
2734
|
+
line: 147,
|
|
2579
2735
|
column: 83
|
|
2580
2736
|
}
|
|
2581
2737
|
}, {
|
|
2582
2738
|
start: {
|
|
2583
|
-
line:
|
|
2739
|
+
line: 147,
|
|
2584
2740
|
column: 88
|
|
2585
2741
|
},
|
|
2586
2742
|
end: {
|
|
2587
|
-
line:
|
|
2743
|
+
line: 147,
|
|
2588
2744
|
column: 97
|
|
2589
2745
|
}
|
|
2590
2746
|
}],
|
|
2591
|
-
line:
|
|
2747
|
+
line: 147
|
|
2592
2748
|
},
|
|
2593
|
-
"
|
|
2749
|
+
"29": {
|
|
2594
2750
|
loc: {
|
|
2595
2751
|
start: {
|
|
2596
|
-
line:
|
|
2752
|
+
line: 147,
|
|
2597
2753
|
column: 28
|
|
2598
2754
|
},
|
|
2599
2755
|
end: {
|
|
2600
|
-
line:
|
|
2756
|
+
line: 147,
|
|
2601
2757
|
column: 83
|
|
2602
2758
|
}
|
|
2603
2759
|
},
|
|
2604
2760
|
type: "cond-expr",
|
|
2605
2761
|
locations: [{
|
|
2606
2762
|
start: {
|
|
2607
|
-
line:
|
|
2763
|
+
line: 147,
|
|
2608
2764
|
column: 63
|
|
2609
2765
|
},
|
|
2610
2766
|
end: {
|
|
2611
|
-
line:
|
|
2767
|
+
line: 147,
|
|
2612
2768
|
column: 69
|
|
2613
2769
|
}
|
|
2614
2770
|
}, {
|
|
2615
2771
|
start: {
|
|
2616
|
-
line:
|
|
2772
|
+
line: 147,
|
|
2617
2773
|
column: 72
|
|
2618
2774
|
},
|
|
2619
2775
|
end: {
|
|
2620
|
-
line:
|
|
2776
|
+
line: 147,
|
|
2621
2777
|
column: 83
|
|
2622
2778
|
}
|
|
2623
2779
|
}],
|
|
2624
|
-
line:
|
|
2780
|
+
line: 147
|
|
2625
2781
|
},
|
|
2626
|
-
"
|
|
2782
|
+
"30": {
|
|
2627
2783
|
loc: {
|
|
2628
2784
|
start: {
|
|
2629
|
-
line:
|
|
2785
|
+
line: 147,
|
|
2630
2786
|
column: 28
|
|
2631
2787
|
},
|
|
2632
2788
|
end: {
|
|
2633
|
-
line:
|
|
2789
|
+
line: 147,
|
|
2634
2790
|
column: 60
|
|
2635
2791
|
}
|
|
2636
2792
|
},
|
|
2637
2793
|
type: "binary-expr",
|
|
2638
2794
|
locations: [{
|
|
2639
2795
|
start: {
|
|
2640
|
-
line:
|
|
2796
|
+
line: 147,
|
|
2641
2797
|
column: 28
|
|
2642
2798
|
},
|
|
2643
2799
|
end: {
|
|
2644
|
-
line:
|
|
2800
|
+
line: 147,
|
|
2645
2801
|
column: 41
|
|
2646
2802
|
}
|
|
2647
2803
|
}, {
|
|
2648
2804
|
start: {
|
|
2649
|
-
line:
|
|
2805
|
+
line: 147,
|
|
2650
2806
|
column: 45
|
|
2651
2807
|
},
|
|
2652
2808
|
end: {
|
|
2653
|
-
line:
|
|
2809
|
+
line: 147,
|
|
2654
2810
|
column: 60
|
|
2655
2811
|
}
|
|
2656
2812
|
}],
|
|
2657
|
-
line:
|
|
2813
|
+
line: 147
|
|
2658
2814
|
},
|
|
2659
|
-
"
|
|
2815
|
+
"31": {
|
|
2660
2816
|
loc: {
|
|
2661
2817
|
start: {
|
|
2662
|
-
line:
|
|
2818
|
+
line: 155,
|
|
2663
2819
|
column: 8
|
|
2664
2820
|
},
|
|
2665
2821
|
end: {
|
|
2666
|
-
line:
|
|
2822
|
+
line: 178,
|
|
2667
2823
|
column: 9
|
|
2668
2824
|
}
|
|
2669
2825
|
},
|
|
2670
2826
|
type: "if",
|
|
2671
2827
|
locations: [{
|
|
2672
2828
|
start: {
|
|
2673
|
-
line:
|
|
2829
|
+
line: 155,
|
|
2674
2830
|
column: 8
|
|
2675
2831
|
},
|
|
2676
2832
|
end: {
|
|
2677
|
-
line:
|
|
2833
|
+
line: 178,
|
|
2678
2834
|
column: 9
|
|
2679
2835
|
}
|
|
2680
2836
|
}, {
|
|
@@ -2687,27 +2843,60 @@ function cov_ms2xfswbr() {
|
|
|
2687
2843
|
column: undefined
|
|
2688
2844
|
}
|
|
2689
2845
|
}],
|
|
2690
|
-
line:
|
|
2846
|
+
line: 155
|
|
2691
2847
|
},
|
|
2692
|
-
"
|
|
2848
|
+
"32": {
|
|
2849
|
+
loc: {
|
|
2850
|
+
start: {
|
|
2851
|
+
line: 156,
|
|
2852
|
+
column: 44
|
|
2853
|
+
},
|
|
2854
|
+
end: {
|
|
2855
|
+
line: 156,
|
|
2856
|
+
column: 91
|
|
2857
|
+
}
|
|
2858
|
+
},
|
|
2859
|
+
type: "binary-expr",
|
|
2860
|
+
locations: [{
|
|
2861
|
+
start: {
|
|
2862
|
+
line: 156,
|
|
2863
|
+
column: 44
|
|
2864
|
+
},
|
|
2865
|
+
end: {
|
|
2866
|
+
line: 156,
|
|
2867
|
+
column: 66
|
|
2868
|
+
}
|
|
2869
|
+
}, {
|
|
2870
|
+
start: {
|
|
2871
|
+
line: 156,
|
|
2872
|
+
column: 70
|
|
2873
|
+
},
|
|
2874
|
+
end: {
|
|
2875
|
+
line: 156,
|
|
2876
|
+
column: 91
|
|
2877
|
+
}
|
|
2878
|
+
}],
|
|
2879
|
+
line: 156
|
|
2880
|
+
},
|
|
2881
|
+
"33": {
|
|
2693
2882
|
loc: {
|
|
2694
2883
|
start: {
|
|
2695
|
-
line:
|
|
2884
|
+
line: 157,
|
|
2696
2885
|
column: 12
|
|
2697
2886
|
},
|
|
2698
2887
|
end: {
|
|
2699
|
-
line:
|
|
2888
|
+
line: 166,
|
|
2700
2889
|
column: 13
|
|
2701
2890
|
}
|
|
2702
2891
|
},
|
|
2703
2892
|
type: "if",
|
|
2704
2893
|
locations: [{
|
|
2705
2894
|
start: {
|
|
2706
|
-
line:
|
|
2895
|
+
line: 157,
|
|
2707
2896
|
column: 12
|
|
2708
2897
|
},
|
|
2709
2898
|
end: {
|
|
2710
|
-
line:
|
|
2899
|
+
line: 166,
|
|
2711
2900
|
column: 13
|
|
2712
2901
|
}
|
|
2713
2902
|
}, {
|
|
@@ -2720,126 +2909,168 @@ function cov_ms2xfswbr() {
|
|
|
2720
2909
|
column: undefined
|
|
2721
2910
|
}
|
|
2722
2911
|
}],
|
|
2723
|
-
line:
|
|
2912
|
+
line: 157
|
|
2724
2913
|
},
|
|
2725
|
-
"
|
|
2914
|
+
"34": {
|
|
2726
2915
|
loc: {
|
|
2727
2916
|
start: {
|
|
2728
|
-
line:
|
|
2917
|
+
line: 157,
|
|
2729
2918
|
column: 16
|
|
2730
2919
|
},
|
|
2731
2920
|
end: {
|
|
2732
|
-
line:
|
|
2733
|
-
column:
|
|
2921
|
+
line: 159,
|
|
2922
|
+
column: 69
|
|
2734
2923
|
}
|
|
2735
2924
|
},
|
|
2736
2925
|
type: "binary-expr",
|
|
2737
2926
|
locations: [{
|
|
2738
2927
|
start: {
|
|
2739
|
-
line:
|
|
2928
|
+
line: 157,
|
|
2929
|
+
column: 16
|
|
2930
|
+
},
|
|
2931
|
+
end: {
|
|
2932
|
+
line: 157,
|
|
2933
|
+
column: 40
|
|
2934
|
+
}
|
|
2935
|
+
}, {
|
|
2936
|
+
start: {
|
|
2937
|
+
line: 158,
|
|
2740
2938
|
column: 16
|
|
2741
2939
|
},
|
|
2742
2940
|
end: {
|
|
2743
|
-
line:
|
|
2941
|
+
line: 158,
|
|
2744
2942
|
column: 47
|
|
2745
2943
|
}
|
|
2746
2944
|
}, {
|
|
2747
2945
|
start: {
|
|
2748
|
-
line:
|
|
2749
|
-
column:
|
|
2946
|
+
line: 159,
|
|
2947
|
+
column: 16
|
|
2750
2948
|
},
|
|
2751
2949
|
end: {
|
|
2752
|
-
line:
|
|
2753
|
-
column:
|
|
2950
|
+
line: 159,
|
|
2951
|
+
column: 69
|
|
2754
2952
|
}
|
|
2755
2953
|
}],
|
|
2756
|
-
line:
|
|
2954
|
+
line: 157
|
|
2757
2955
|
},
|
|
2758
|
-
"
|
|
2956
|
+
"35": {
|
|
2957
|
+
loc: {
|
|
2958
|
+
start: {
|
|
2959
|
+
line: 167,
|
|
2960
|
+
column: 12
|
|
2961
|
+
},
|
|
2962
|
+
end: {
|
|
2963
|
+
line: 175,
|
|
2964
|
+
column: 13
|
|
2965
|
+
}
|
|
2966
|
+
},
|
|
2967
|
+
type: "if",
|
|
2968
|
+
locations: [{
|
|
2969
|
+
start: {
|
|
2970
|
+
line: 167,
|
|
2971
|
+
column: 12
|
|
2972
|
+
},
|
|
2973
|
+
end: {
|
|
2974
|
+
line: 175,
|
|
2975
|
+
column: 13
|
|
2976
|
+
}
|
|
2977
|
+
}, {
|
|
2978
|
+
start: {
|
|
2979
|
+
line: undefined,
|
|
2980
|
+
column: undefined
|
|
2981
|
+
},
|
|
2982
|
+
end: {
|
|
2983
|
+
line: undefined,
|
|
2984
|
+
column: undefined
|
|
2985
|
+
}
|
|
2986
|
+
}],
|
|
2987
|
+
line: 167
|
|
2988
|
+
},
|
|
2989
|
+
"36": {
|
|
2759
2990
|
loc: {
|
|
2760
2991
|
start: {
|
|
2761
|
-
line:
|
|
2992
|
+
line: 179,
|
|
2762
2993
|
column: 23
|
|
2763
2994
|
},
|
|
2764
2995
|
end: {
|
|
2765
|
-
line:
|
|
2996
|
+
line: 179,
|
|
2766
2997
|
column: 82
|
|
2767
2998
|
}
|
|
2768
2999
|
},
|
|
2769
3000
|
type: "cond-expr",
|
|
2770
3001
|
locations: [{
|
|
2771
3002
|
start: {
|
|
2772
|
-
line:
|
|
3003
|
+
line: 179,
|
|
2773
3004
|
column: 34
|
|
2774
3005
|
},
|
|
2775
3006
|
end: {
|
|
2776
|
-
line:
|
|
3007
|
+
line: 179,
|
|
2777
3008
|
column: 75
|
|
2778
3009
|
}
|
|
2779
3010
|
}, {
|
|
2780
3011
|
start: {
|
|
2781
|
-
line:
|
|
3012
|
+
line: 179,
|
|
2782
3013
|
column: 78
|
|
2783
3014
|
},
|
|
2784
3015
|
end: {
|
|
2785
|
-
line:
|
|
3016
|
+
line: 179,
|
|
2786
3017
|
column: 82
|
|
2787
3018
|
}
|
|
2788
3019
|
}],
|
|
2789
|
-
line:
|
|
3020
|
+
line: 179
|
|
2790
3021
|
},
|
|
2791
|
-
"
|
|
3022
|
+
"37": {
|
|
2792
3023
|
loc: {
|
|
2793
3024
|
start: {
|
|
2794
|
-
line:
|
|
3025
|
+
line: 180,
|
|
2795
3026
|
column: 97
|
|
2796
3027
|
},
|
|
2797
3028
|
end: {
|
|
2798
|
-
line:
|
|
3029
|
+
line: 180,
|
|
2799
3030
|
column: 137
|
|
2800
3031
|
}
|
|
2801
3032
|
},
|
|
2802
3033
|
type: "cond-expr",
|
|
2803
3034
|
locations: [{
|
|
2804
3035
|
start: {
|
|
2805
|
-
line:
|
|
3036
|
+
line: 180,
|
|
2806
3037
|
column: 115
|
|
2807
3038
|
},
|
|
2808
3039
|
end: {
|
|
2809
|
-
line:
|
|
3040
|
+
line: 180,
|
|
2810
3041
|
column: 121
|
|
2811
3042
|
}
|
|
2812
3043
|
}, {
|
|
2813
3044
|
start: {
|
|
2814
|
-
line:
|
|
3045
|
+
line: 180,
|
|
2815
3046
|
column: 124
|
|
2816
3047
|
},
|
|
2817
3048
|
end: {
|
|
2818
|
-
line:
|
|
3049
|
+
line: 180,
|
|
2819
3050
|
column: 137
|
|
2820
3051
|
}
|
|
2821
3052
|
}],
|
|
2822
|
-
line:
|
|
3053
|
+
line: 180
|
|
2823
3054
|
},
|
|
2824
|
-
"
|
|
3055
|
+
"38": {
|
|
2825
3056
|
loc: {
|
|
2826
3057
|
start: {
|
|
2827
|
-
line:
|
|
3058
|
+
line: 184,
|
|
2828
3059
|
column: 8
|
|
2829
3060
|
},
|
|
2830
3061
|
end: {
|
|
2831
|
-
line:
|
|
3062
|
+
line: 186,
|
|
2832
3063
|
column: 9
|
|
2833
3064
|
}
|
|
2834
3065
|
},
|
|
2835
3066
|
type: "if",
|
|
2836
3067
|
locations: [{
|
|
2837
3068
|
start: {
|
|
2838
|
-
line:
|
|
3069
|
+
line: 184,
|
|
2839
3070
|
column: 8
|
|
2840
3071
|
},
|
|
2841
3072
|
end: {
|
|
2842
|
-
line:
|
|
3073
|
+
line: 186,
|
|
2843
3074
|
column: 9
|
|
2844
3075
|
}
|
|
2845
3076
|
}, {
|
|
@@ -2852,27 +3083,27 @@ function cov_ms2xfswbr() {
|
|
|
2852
3083
|
column: undefined
|
|
2853
3084
|
}
|
|
2854
3085
|
}],
|
|
2855
|
-
line:
|
|
3086
|
+
line: 184
|
|
2856
3087
|
},
|
|
2857
|
-
"
|
|
3088
|
+
"39": {
|
|
2858
3089
|
loc: {
|
|
2859
3090
|
start: {
|
|
2860
|
-
line:
|
|
3091
|
+
line: 188,
|
|
2861
3092
|
column: 8
|
|
2862
3093
|
},
|
|
2863
3094
|
end: {
|
|
2864
|
-
line:
|
|
3095
|
+
line: 190,
|
|
2865
3096
|
column: 9
|
|
2866
3097
|
}
|
|
2867
3098
|
},
|
|
2868
3099
|
type: "if",
|
|
2869
3100
|
locations: [{
|
|
2870
3101
|
start: {
|
|
2871
|
-
line:
|
|
3102
|
+
line: 188,
|
|
2872
3103
|
column: 8
|
|
2873
3104
|
},
|
|
2874
3105
|
end: {
|
|
2875
|
-
line:
|
|
3106
|
+
line: 190,
|
|
2876
3107
|
column: 9
|
|
2877
3108
|
}
|
|
2878
3109
|
}, {
|
|
@@ -2885,27 +3116,27 @@ function cov_ms2xfswbr() {
|
|
|
2885
3116
|
column: undefined
|
|
2886
3117
|
}
|
|
2887
3118
|
}],
|
|
2888
|
-
line:
|
|
3119
|
+
line: 188
|
|
2889
3120
|
},
|
|
2890
|
-
"
|
|
3121
|
+
"40": {
|
|
2891
3122
|
loc: {
|
|
2892
3123
|
start: {
|
|
2893
|
-
line:
|
|
3124
|
+
line: 191,
|
|
2894
3125
|
column: 8
|
|
2895
3126
|
},
|
|
2896
3127
|
end: {
|
|
2897
|
-
line:
|
|
3128
|
+
line: 201,
|
|
2898
3129
|
column: 9
|
|
2899
3130
|
}
|
|
2900
3131
|
},
|
|
2901
3132
|
type: "if",
|
|
2902
3133
|
locations: [{
|
|
2903
3134
|
start: {
|
|
2904
|
-
line:
|
|
3135
|
+
line: 191,
|
|
2905
3136
|
column: 8
|
|
2906
3137
|
},
|
|
2907
3138
|
end: {
|
|
2908
|
-
line:
|
|
3139
|
+
line: 201,
|
|
2909
3140
|
column: 9
|
|
2910
3141
|
}
|
|
2911
3142
|
}, {
|
|
@@ -2918,60 +3149,60 @@ function cov_ms2xfswbr() {
|
|
|
2918
3149
|
column: undefined
|
|
2919
3150
|
}
|
|
2920
3151
|
}],
|
|
2921
|
-
line:
|
|
3152
|
+
line: 191
|
|
2922
3153
|
},
|
|
2923
|
-
"
|
|
3154
|
+
"41": {
|
|
2924
3155
|
loc: {
|
|
2925
3156
|
start: {
|
|
2926
|
-
line:
|
|
3157
|
+
line: 191,
|
|
2927
3158
|
column: 12
|
|
2928
3159
|
},
|
|
2929
3160
|
end: {
|
|
2930
|
-
line:
|
|
3161
|
+
line: 191,
|
|
2931
3162
|
column: 86
|
|
2932
3163
|
}
|
|
2933
3164
|
},
|
|
2934
3165
|
type: "binary-expr",
|
|
2935
3166
|
locations: [{
|
|
2936
3167
|
start: {
|
|
2937
|
-
line:
|
|
3168
|
+
line: 191,
|
|
2938
3169
|
column: 12
|
|
2939
3170
|
},
|
|
2940
3171
|
end: {
|
|
2941
|
-
line:
|
|
3172
|
+
line: 191,
|
|
2942
3173
|
column: 43
|
|
2943
3174
|
}
|
|
2944
3175
|
}, {
|
|
2945
3176
|
start: {
|
|
2946
|
-
line:
|
|
3177
|
+
line: 191,
|
|
2947
3178
|
column: 47
|
|
2948
3179
|
},
|
|
2949
3180
|
end: {
|
|
2950
|
-
line:
|
|
3181
|
+
line: 191,
|
|
2951
3182
|
column: 86
|
|
2952
3183
|
}
|
|
2953
3184
|
}],
|
|
2954
|
-
line:
|
|
3185
|
+
line: 191
|
|
2955
3186
|
},
|
|
2956
|
-
"
|
|
3187
|
+
"42": {
|
|
2957
3188
|
loc: {
|
|
2958
3189
|
start: {
|
|
2959
|
-
line:
|
|
3190
|
+
line: 212,
|
|
2960
3191
|
column: 8
|
|
2961
3192
|
},
|
|
2962
3193
|
end: {
|
|
2963
|
-
line:
|
|
3194
|
+
line: 217,
|
|
2964
3195
|
column: 9
|
|
2965
3196
|
}
|
|
2966
3197
|
},
|
|
2967
3198
|
type: "if",
|
|
2968
3199
|
locations: [{
|
|
2969
3200
|
start: {
|
|
2970
|
-
line:
|
|
3201
|
+
line: 212,
|
|
2971
3202
|
column: 8
|
|
2972
3203
|
},
|
|
2973
3204
|
end: {
|
|
2974
|
-
line:
|
|
3205
|
+
line: 217,
|
|
2975
3206
|
column: 9
|
|
2976
3207
|
}
|
|
2977
3208
|
}, {
|
|
@@ -2984,93 +3215,93 @@ function cov_ms2xfswbr() {
|
|
|
2984
3215
|
column: undefined
|
|
2985
3216
|
}
|
|
2986
3217
|
}],
|
|
2987
|
-
line:
|
|
3218
|
+
line: 212
|
|
2988
3219
|
},
|
|
2989
|
-
"
|
|
3220
|
+
"43": {
|
|
2990
3221
|
loc: {
|
|
2991
3222
|
start: {
|
|
2992
|
-
line:
|
|
3223
|
+
line: 213,
|
|
2993
3224
|
column: 35
|
|
2994
3225
|
},
|
|
2995
3226
|
end: {
|
|
2996
|
-
line:
|
|
3227
|
+
line: 213,
|
|
2997
3228
|
column: 110
|
|
2998
3229
|
}
|
|
2999
3230
|
},
|
|
3000
3231
|
type: "cond-expr",
|
|
3001
3232
|
locations: [{
|
|
3002
3233
|
start: {
|
|
3003
|
-
line:
|
|
3234
|
+
line: 213,
|
|
3004
3235
|
column: 89
|
|
3005
3236
|
},
|
|
3006
3237
|
end: {
|
|
3007
|
-
line:
|
|
3238
|
+
line: 213,
|
|
3008
3239
|
column: 95
|
|
3009
3240
|
}
|
|
3010
3241
|
}, {
|
|
3011
3242
|
start: {
|
|
3012
|
-
line:
|
|
3243
|
+
line: 213,
|
|
3013
3244
|
column: 98
|
|
3014
3245
|
},
|
|
3015
3246
|
end: {
|
|
3016
|
-
line:
|
|
3247
|
+
line: 213,
|
|
3017
3248
|
column: 110
|
|
3018
3249
|
}
|
|
3019
3250
|
}],
|
|
3020
|
-
line:
|
|
3251
|
+
line: 213
|
|
3021
3252
|
},
|
|
3022
|
-
"
|
|
3253
|
+
"44": {
|
|
3023
3254
|
loc: {
|
|
3024
3255
|
start: {
|
|
3025
|
-
line:
|
|
3256
|
+
line: 213,
|
|
3026
3257
|
column: 35
|
|
3027
3258
|
},
|
|
3028
3259
|
end: {
|
|
3029
|
-
line:
|
|
3260
|
+
line: 213,
|
|
3030
3261
|
column: 86
|
|
3031
3262
|
}
|
|
3032
3263
|
},
|
|
3033
3264
|
type: "binary-expr",
|
|
3034
3265
|
locations: [{
|
|
3035
3266
|
start: {
|
|
3036
|
-
line:
|
|
3267
|
+
line: 213,
|
|
3037
3268
|
column: 35
|
|
3038
3269
|
},
|
|
3039
3270
|
end: {
|
|
3040
|
-
line:
|
|
3271
|
+
line: 213,
|
|
3041
3272
|
column: 69
|
|
3042
3273
|
}
|
|
3043
3274
|
}, {
|
|
3044
3275
|
start: {
|
|
3045
|
-
line:
|
|
3276
|
+
line: 213,
|
|
3046
3277
|
column: 73
|
|
3047
3278
|
},
|
|
3048
3279
|
end: {
|
|
3049
|
-
line:
|
|
3280
|
+
line: 213,
|
|
3050
3281
|
column: 86
|
|
3051
3282
|
}
|
|
3052
3283
|
}],
|
|
3053
|
-
line:
|
|
3284
|
+
line: 213
|
|
3054
3285
|
},
|
|
3055
|
-
"
|
|
3286
|
+
"45": {
|
|
3056
3287
|
loc: {
|
|
3057
3288
|
start: {
|
|
3058
|
-
line:
|
|
3289
|
+
line: 214,
|
|
3059
3290
|
column: 12
|
|
3060
3291
|
},
|
|
3061
3292
|
end: {
|
|
3062
|
-
line:
|
|
3293
|
+
line: 216,
|
|
3063
3294
|
column: 13
|
|
3064
3295
|
}
|
|
3065
3296
|
},
|
|
3066
3297
|
type: "if",
|
|
3067
3298
|
locations: [{
|
|
3068
3299
|
start: {
|
|
3069
|
-
line:
|
|
3300
|
+
line: 214,
|
|
3070
3301
|
column: 12
|
|
3071
3302
|
},
|
|
3072
3303
|
end: {
|
|
3073
|
-
line:
|
|
3304
|
+
line: 216,
|
|
3074
3305
|
column: 13
|
|
3075
3306
|
}
|
|
3076
3307
|
}, {
|
|
@@ -3083,60 +3314,60 @@ function cov_ms2xfswbr() {
|
|
|
3083
3314
|
column: undefined
|
|
3084
3315
|
}
|
|
3085
3316
|
}],
|
|
3086
|
-
line:
|
|
3317
|
+
line: 214
|
|
3087
3318
|
},
|
|
3088
|
-
"
|
|
3319
|
+
"46": {
|
|
3089
3320
|
loc: {
|
|
3090
3321
|
start: {
|
|
3091
|
-
line:
|
|
3322
|
+
line: 214,
|
|
3092
3323
|
column: 16
|
|
3093
3324
|
},
|
|
3094
3325
|
end: {
|
|
3095
|
-
line:
|
|
3326
|
+
line: 214,
|
|
3096
3327
|
column: 63
|
|
3097
3328
|
}
|
|
3098
3329
|
},
|
|
3099
3330
|
type: "binary-expr",
|
|
3100
3331
|
locations: [{
|
|
3101
3332
|
start: {
|
|
3102
|
-
line:
|
|
3333
|
+
line: 214,
|
|
3103
3334
|
column: 16
|
|
3104
3335
|
},
|
|
3105
3336
|
end: {
|
|
3106
|
-
line:
|
|
3337
|
+
line: 214,
|
|
3107
3338
|
column: 31
|
|
3108
3339
|
}
|
|
3109
3340
|
}, {
|
|
3110
3341
|
start: {
|
|
3111
|
-
line:
|
|
3342
|
+
line: 214,
|
|
3112
3343
|
column: 35
|
|
3113
3344
|
},
|
|
3114
3345
|
end: {
|
|
3115
|
-
line:
|
|
3346
|
+
line: 214,
|
|
3116
3347
|
column: 63
|
|
3117
3348
|
}
|
|
3118
3349
|
}],
|
|
3119
|
-
line:
|
|
3350
|
+
line: 214
|
|
3120
3351
|
},
|
|
3121
|
-
"
|
|
3352
|
+
"47": {
|
|
3122
3353
|
loc: {
|
|
3123
3354
|
start: {
|
|
3124
|
-
line:
|
|
3355
|
+
line: 220,
|
|
3125
3356
|
column: 8
|
|
3126
3357
|
},
|
|
3127
3358
|
end: {
|
|
3128
|
-
line:
|
|
3359
|
+
line: 222,
|
|
3129
3360
|
column: 9
|
|
3130
3361
|
}
|
|
3131
3362
|
},
|
|
3132
3363
|
type: "if",
|
|
3133
3364
|
locations: [{
|
|
3134
3365
|
start: {
|
|
3135
|
-
line:
|
|
3366
|
+
line: 220,
|
|
3136
3367
|
column: 8
|
|
3137
3368
|
},
|
|
3138
3369
|
end: {
|
|
3139
|
-
line:
|
|
3370
|
+
line: 222,
|
|
3140
3371
|
column: 9
|
|
3141
3372
|
}
|
|
3142
3373
|
}, {
|
|
@@ -3149,87 +3380,87 @@ function cov_ms2xfswbr() {
|
|
|
3149
3380
|
column: undefined
|
|
3150
3381
|
}
|
|
3151
3382
|
}],
|
|
3152
|
-
line:
|
|
3383
|
+
line: 220
|
|
3153
3384
|
},
|
|
3154
|
-
"
|
|
3385
|
+
"48": {
|
|
3155
3386
|
loc: {
|
|
3156
3387
|
start: {
|
|
3157
|
-
line:
|
|
3388
|
+
line: 223,
|
|
3158
3389
|
column: 8
|
|
3159
3390
|
},
|
|
3160
3391
|
end: {
|
|
3161
|
-
line:
|
|
3392
|
+
line: 255,
|
|
3162
3393
|
column: 9
|
|
3163
3394
|
}
|
|
3164
3395
|
},
|
|
3165
3396
|
type: "switch",
|
|
3166
3397
|
locations: [{
|
|
3167
3398
|
start: {
|
|
3168
|
-
line:
|
|
3399
|
+
line: 224,
|
|
3169
3400
|
column: 12
|
|
3170
3401
|
},
|
|
3171
3402
|
end: {
|
|
3172
|
-
line:
|
|
3403
|
+
line: 233,
|
|
3173
3404
|
column: 13
|
|
3174
3405
|
}
|
|
3175
3406
|
}, {
|
|
3176
3407
|
start: {
|
|
3177
|
-
line:
|
|
3408
|
+
line: 234,
|
|
3178
3409
|
column: 12
|
|
3179
3410
|
},
|
|
3180
3411
|
end: {
|
|
3181
|
-
line:
|
|
3412
|
+
line: 234,
|
|
3182
3413
|
column: 21
|
|
3183
3414
|
}
|
|
3184
3415
|
}, {
|
|
3185
3416
|
start: {
|
|
3186
|
-
line:
|
|
3417
|
+
line: 235,
|
|
3187
3418
|
column: 12
|
|
3188
3419
|
},
|
|
3189
3420
|
end: {
|
|
3190
|
-
line:
|
|
3421
|
+
line: 235,
|
|
3191
3422
|
column: 21
|
|
3192
3423
|
}
|
|
3193
3424
|
}, {
|
|
3194
3425
|
start: {
|
|
3195
|
-
line:
|
|
3426
|
+
line: 236,
|
|
3196
3427
|
column: 12
|
|
3197
3428
|
},
|
|
3198
3429
|
end: {
|
|
3199
|
-
line:
|
|
3430
|
+
line: 248,
|
|
3200
3431
|
column: 13
|
|
3201
3432
|
}
|
|
3202
3433
|
}, {
|
|
3203
3434
|
start: {
|
|
3204
|
-
line:
|
|
3435
|
+
line: 249,
|
|
3205
3436
|
column: 12
|
|
3206
3437
|
},
|
|
3207
3438
|
end: {
|
|
3208
|
-
line:
|
|
3439
|
+
line: 254,
|
|
3209
3440
|
column: 13
|
|
3210
3441
|
}
|
|
3211
3442
|
}],
|
|
3212
|
-
line:
|
|
3443
|
+
line: 223
|
|
3213
3444
|
},
|
|
3214
|
-
"
|
|
3445
|
+
"49": {
|
|
3215
3446
|
loc: {
|
|
3216
3447
|
start: {
|
|
3217
|
-
line:
|
|
3448
|
+
line: 237,
|
|
3218
3449
|
column: 16
|
|
3219
3450
|
},
|
|
3220
3451
|
end: {
|
|
3221
|
-
line:
|
|
3452
|
+
line: 246,
|
|
3222
3453
|
column: 17
|
|
3223
3454
|
}
|
|
3224
3455
|
},
|
|
3225
3456
|
type: "if",
|
|
3226
3457
|
locations: [{
|
|
3227
3458
|
start: {
|
|
3228
|
-
line:
|
|
3459
|
+
line: 237,
|
|
3229
3460
|
column: 16
|
|
3230
3461
|
},
|
|
3231
3462
|
end: {
|
|
3232
|
-
line:
|
|
3463
|
+
line: 246,
|
|
3233
3464
|
column: 17
|
|
3234
3465
|
}
|
|
3235
3466
|
}, {
|
|
@@ -3242,69 +3473,69 @@ function cov_ms2xfswbr() {
|
|
|
3242
3473
|
column: undefined
|
|
3243
3474
|
}
|
|
3244
3475
|
}],
|
|
3245
|
-
line:
|
|
3476
|
+
line: 237
|
|
3246
3477
|
},
|
|
3247
|
-
"
|
|
3478
|
+
"50": {
|
|
3248
3479
|
loc: {
|
|
3249
3480
|
start: {
|
|
3250
|
-
line:
|
|
3481
|
+
line: 237,
|
|
3251
3482
|
column: 20
|
|
3252
3483
|
},
|
|
3253
3484
|
end: {
|
|
3254
|
-
line:
|
|
3485
|
+
line: 237,
|
|
3255
3486
|
column: 82
|
|
3256
3487
|
}
|
|
3257
3488
|
},
|
|
3258
3489
|
type: "binary-expr",
|
|
3259
3490
|
locations: [{
|
|
3260
3491
|
start: {
|
|
3261
|
-
line:
|
|
3492
|
+
line: 237,
|
|
3262
3493
|
column: 20
|
|
3263
3494
|
},
|
|
3264
3495
|
end: {
|
|
3265
|
-
line:
|
|
3496
|
+
line: 237,
|
|
3266
3497
|
column: 43
|
|
3267
3498
|
}
|
|
3268
3499
|
}, {
|
|
3269
3500
|
start: {
|
|
3270
|
-
line:
|
|
3501
|
+
line: 237,
|
|
3271
3502
|
column: 48
|
|
3272
3503
|
},
|
|
3273
3504
|
end: {
|
|
3274
|
-
line:
|
|
3505
|
+
line: 237,
|
|
3275
3506
|
column: 58
|
|
3276
3507
|
}
|
|
3277
3508
|
}, {
|
|
3278
3509
|
start: {
|
|
3279
|
-
line:
|
|
3510
|
+
line: 237,
|
|
3280
3511
|
column: 62
|
|
3281
3512
|
},
|
|
3282
3513
|
end: {
|
|
3283
|
-
line:
|
|
3514
|
+
line: 237,
|
|
3284
3515
|
column: 81
|
|
3285
3516
|
}
|
|
3286
3517
|
}],
|
|
3287
|
-
line:
|
|
3518
|
+
line: 237
|
|
3288
3519
|
},
|
|
3289
|
-
"
|
|
3520
|
+
"51": {
|
|
3290
3521
|
loc: {
|
|
3291
3522
|
start: {
|
|
3292
|
-
line:
|
|
3523
|
+
line: 250,
|
|
3293
3524
|
column: 16
|
|
3294
3525
|
},
|
|
3295
3526
|
end: {
|
|
3296
|
-
line:
|
|
3527
|
+
line: 253,
|
|
3297
3528
|
column: 17
|
|
3298
3529
|
}
|
|
3299
3530
|
},
|
|
3300
3531
|
type: "if",
|
|
3301
3532
|
locations: [{
|
|
3302
3533
|
start: {
|
|
3303
|
-
line:
|
|
3534
|
+
line: 250,
|
|
3304
3535
|
column: 16
|
|
3305
3536
|
},
|
|
3306
3537
|
end: {
|
|
3307
|
-
line:
|
|
3538
|
+
line: 253,
|
|
3308
3539
|
column: 17
|
|
3309
3540
|
}
|
|
3310
3541
|
}, {
|
|
@@ -3317,67 +3548,67 @@ function cov_ms2xfswbr() {
|
|
|
3317
3548
|
column: undefined
|
|
3318
3549
|
}
|
|
3319
3550
|
}],
|
|
3320
|
-
line:
|
|
3551
|
+
line: 250
|
|
3321
3552
|
},
|
|
3322
|
-
"
|
|
3553
|
+
"52": {
|
|
3323
3554
|
loc: {
|
|
3324
3555
|
start: {
|
|
3325
|
-
line:
|
|
3556
|
+
line: 260,
|
|
3326
3557
|
column: 8
|
|
3327
3558
|
},
|
|
3328
3559
|
end: {
|
|
3329
|
-
line:
|
|
3560
|
+
line: 289,
|
|
3330
3561
|
column: 9
|
|
3331
3562
|
}
|
|
3332
3563
|
},
|
|
3333
3564
|
type: "switch",
|
|
3334
3565
|
locations: [{
|
|
3335
3566
|
start: {
|
|
3336
|
-
line:
|
|
3567
|
+
line: 261,
|
|
3337
3568
|
column: 12
|
|
3338
3569
|
},
|
|
3339
3570
|
end: {
|
|
3340
|
-
line:
|
|
3571
|
+
line: 264,
|
|
3341
3572
|
column: 13
|
|
3342
3573
|
}
|
|
3343
3574
|
}, {
|
|
3344
3575
|
start: {
|
|
3345
|
-
line:
|
|
3576
|
+
line: 265,
|
|
3346
3577
|
column: 12
|
|
3347
3578
|
},
|
|
3348
3579
|
end: {
|
|
3349
|
-
line:
|
|
3580
|
+
line: 268,
|
|
3350
3581
|
column: 13
|
|
3351
3582
|
}
|
|
3352
3583
|
}, {
|
|
3353
3584
|
start: {
|
|
3354
|
-
line:
|
|
3585
|
+
line: 269,
|
|
3355
3586
|
column: 12
|
|
3356
3587
|
},
|
|
3357
3588
|
end: {
|
|
3358
|
-
line:
|
|
3589
|
+
line: 272,
|
|
3359
3590
|
column: 13
|
|
3360
3591
|
}
|
|
3361
3592
|
}, {
|
|
3362
3593
|
start: {
|
|
3363
|
-
line:
|
|
3594
|
+
line: 273,
|
|
3364
3595
|
column: 12
|
|
3365
3596
|
},
|
|
3366
3597
|
end: {
|
|
3367
|
-
line:
|
|
3598
|
+
line: 276,
|
|
3368
3599
|
column: 13
|
|
3369
3600
|
}
|
|
3370
3601
|
}, {
|
|
3371
3602
|
start: {
|
|
3372
|
-
line:
|
|
3603
|
+
line: 277,
|
|
3373
3604
|
column: 12
|
|
3374
3605
|
},
|
|
3375
3606
|
end: {
|
|
3376
|
-
line:
|
|
3607
|
+
line: 288,
|
|
3377
3608
|
column: 13
|
|
3378
3609
|
}
|
|
3379
3610
|
}],
|
|
3380
|
-
line:
|
|
3611
|
+
line: 260
|
|
3381
3612
|
}
|
|
3382
3613
|
},
|
|
3383
3614
|
s: {
|
|
@@ -3502,7 +3733,16 @@ function cov_ms2xfswbr() {
|
|
|
3502
3733
|
"118": 0,
|
|
3503
3734
|
"119": 0,
|
|
3504
3735
|
"120": 0,
|
|
3505
|
-
"121": 0
|
|
3736
|
+
"121": 0,
|
|
3737
|
+
"122": 0,
|
|
3738
|
+
"123": 0,
|
|
3739
|
+
"124": 0,
|
|
3740
|
+
"125": 0,
|
|
3741
|
+
"126": 0,
|
|
3742
|
+
"127": 0,
|
|
3743
|
+
"128": 0,
|
|
3744
|
+
"129": 0,
|
|
3745
|
+
"130": 0
|
|
3506
3746
|
},
|
|
3507
3747
|
f: {
|
|
3508
3748
|
"0": 0,
|
|
@@ -3560,7 +3800,7 @@ function cov_ms2xfswbr() {
|
|
|
3560
3800
|
"31": [0, 0],
|
|
3561
3801
|
"32": [0, 0],
|
|
3562
3802
|
"33": [0, 0],
|
|
3563
|
-
"34": [0, 0],
|
|
3803
|
+
"34": [0, 0, 0],
|
|
3564
3804
|
"35": [0, 0],
|
|
3565
3805
|
"36": [0, 0],
|
|
3566
3806
|
"37": [0, 0],
|
|
@@ -3570,22 +3810,26 @@ function cov_ms2xfswbr() {
|
|
|
3570
3810
|
"41": [0, 0],
|
|
3571
3811
|
"42": [0, 0],
|
|
3572
3812
|
"43": [0, 0],
|
|
3573
|
-
"44": [0, 0
|
|
3813
|
+
"44": [0, 0],
|
|
3574
3814
|
"45": [0, 0],
|
|
3575
|
-
"46": [0, 0
|
|
3815
|
+
"46": [0, 0],
|
|
3576
3816
|
"47": [0, 0],
|
|
3577
|
-
"48": [0, 0, 0, 0, 0]
|
|
3817
|
+
"48": [0, 0, 0, 0, 0],
|
|
3818
|
+
"49": [0, 0],
|
|
3819
|
+
"50": [0, 0, 0],
|
|
3820
|
+
"51": [0, 0],
|
|
3821
|
+
"52": [0, 0, 0, 0, 0]
|
|
3578
3822
|
},
|
|
3579
3823
|
inputSourceMap: {
|
|
3580
3824
|
version: 3,
|
|
3581
3825
|
file: "/home/vsts/work/1/s/rush-plugins/rush-http-build-cache-plugin/src/HttpBuildCacheProvider.ts",
|
|
3582
3826
|
sources: ["/home/vsts/work/1/s/rush-plugins/rush-http-build-cache-plugin/src/HttpBuildCacheProvider.ts"],
|
|
3583
3827
|
names: [],
|
|
3584
|
-
mappings: ";;;;;;AAAA,
|
|
3585
|
-
sourcesContent: ["import { ITerminal, Executable } from '@rushstack/node-core-library';\nimport {\n ICloudBuildCacheProvider,\n ICredentialCacheEntry,\n CredentialCache,\n RushSession,\n EnvironmentConfiguration\n} from '@rushstack/rush-sdk';\nimport fetch, { BodyInit, Response } from 'node-fetch';\n\nenum CredentialsOptions {\n Optional,\n Required,\n Omit\n}\n\nenum FailureType {\n None,\n Informational,\n Warning,\n Error,\n Authentication\n}\n\nexport interface IHttpBuildCacheTokenHandler {\n exec: string;\n args?: string[];\n}\n\n/**\n * @public\n */\nexport interface IHttpBuildCacheProviderOptions {\n url: string;\n tokenHandler?: IHttpBuildCacheTokenHandler;\n uploadMethod?: string;\n headers?: Record<string, string>;\n cacheKeyPrefix?: string;\n isCacheWriteAllowed: boolean;\n pluginName: string;\n rushProjectRoot: string;\n}\n\nexport class HttpBuildCacheProvider implements ICloudBuildCacheProvider {\n private readonly _pluginName: string;\n private readonly _rushSession: RushSession;\n private readonly _rushProjectRoot: string;\n private readonly _environmentCredential: string | undefined;\n private readonly _isCacheWriteAllowedByConfiguration: boolean;\n private readonly _url: URL;\n private readonly _uploadMethod: string;\n private readonly _headers: Record<string, string>;\n private readonly _cacheKeyPrefix: string;\n private readonly _tokenHandler: IHttpBuildCacheTokenHandler | undefined;\n private __credentialCacheId: string | undefined;\n\n public get isCacheWriteAllowed(): boolean {\n return EnvironmentConfiguration.buildCacheWriteAllowed ?? this._isCacheWriteAllowedByConfiguration;\n }\n\n public constructor(options: IHttpBuildCacheProviderOptions, rushSession: RushSession) {\n this._pluginName = options.pluginName;\n this._rushSession = rushSession;\n this._rushProjectRoot = options.rushProjectRoot;\n\n this._environmentCredential = EnvironmentConfiguration.buildCacheCredential;\n this._isCacheWriteAllowedByConfiguration = options.isCacheWriteAllowed;\n this._url = new URL(options.url.endsWith('/') ? options.url : options.url + '/');\n this._uploadMethod = options.uploadMethod ?? 'PUT';\n this._headers = options.headers ?? {};\n this._tokenHandler = options.tokenHandler;\n this._cacheKeyPrefix = options.cacheKeyPrefix ?? '';\n }\n\n public async tryGetCacheEntryBufferByIdAsync(\n terminal: ITerminal,\n cacheId: string\n ): Promise<Buffer | undefined> {\n try {\n const result = await this._http({\n terminal: terminal,\n relUrl: `${this._cacheKeyPrefix}${cacheId}`,\n method: 'GET',\n body: undefined,\n warningText: 'Could not get cache entry',\n readBody: true\n });\n\n return Buffer.isBuffer(result) ? result : undefined;\n } catch (e) {\n terminal.writeWarningLine(`Error getting cache entry: ${e}`);\n return undefined;\n }\n }\n\n public async trySetCacheEntryBufferAsync(\n terminal: ITerminal,\n cacheId: string,\n objectBuffer: Buffer\n ): Promise<boolean> {\n if (!this.isCacheWriteAllowed) {\n terminal.writeErrorLine('Writing to cache is not allowed in the current configuration.');\n return false;\n }\n\n terminal.writeDebugLine('Uploading object with cacheId: ', cacheId);\n\n try {\n const result = await this._http({\n terminal: terminal,\n relUrl: `${this._cacheKeyPrefix}${cacheId}`,\n method: this._uploadMethod,\n body: objectBuffer,\n warningText: 'Could not write cache entry',\n readBody: false\n });\n\n return result !== false;\n } catch (e) {\n terminal.writeWarningLine(`Error uploading cache entry: ${e}`);\n return false;\n }\n }\n\n public async updateCachedCredentialAsync(terminal: ITerminal, credential: string): Promise<void> {\n await CredentialCache.usingAsync(\n {\n supportEditing: true\n },\n async (credentialsCache: CredentialCache) => {\n credentialsCache.setCacheEntry(this._credentialCacheId, {\n credential: credential\n });\n await credentialsCache.saveIfModifiedAsync();\n }\n );\n }\n\n public async updateCachedCredentialInteractiveAsync(terminal: ITerminal): Promise<void> {\n if (!this._tokenHandler) {\n throw new Error(\n `The interactive cloud credentials flow is not configured.\\n` +\n `Set the 'tokenHandler' setting in 'common/config/rush-plugins/${this._pluginName}.json' to a command that writes your credentials to standard output and exits with code 0 ` +\n `or provide your credentials to rush using the --credential flag instead. Credentials must be the ` +\n `'Authorization' header expected by ${this._url.href}`\n );\n }\n\n const cmd: string = `${this._tokenHandler.exec} ${(this._tokenHandler.args || []).join(' ')}`;\n terminal.writeVerboseLine(`Running '${cmd}' to get credentials`);\n const result = Executable.spawnSync(this._tokenHandler.exec, this._tokenHandler.args || []);\n\n terminal.writeErrorLine(result.stderr);\n\n if (result.error) {\n throw new Error(`Could not obtain credentials. The command '${cmd}' failed.`);\n }\n\n const credential = result.stdout.trim();\n terminal.writeVerboseLine('Got credentials');\n\n await this.updateCachedCredentialAsync(terminal, credential);\n\n terminal.writeLine('Updated credentials cache');\n }\n\n public async deleteCachedCredentialsAsync(terminal: ITerminal): Promise<void> {\n await CredentialCache.usingAsync(\n {\n supportEditing: true\n },\n async (credentialsCache: CredentialCache) => {\n credentialsCache.deleteCacheEntry(this._credentialCacheId);\n await credentialsCache.saveIfModifiedAsync();\n }\n );\n }\n\n private get _credentialCacheId(): string {\n if (!this.__credentialCacheId) {\n const cacheIdParts: string[] = [this._url.href];\n\n if (this._isCacheWriteAllowedByConfiguration) {\n cacheIdParts.push('cacheWriteAllowed');\n }\n\n this.__credentialCacheId = cacheIdParts.join('|');\n }\n\n return this.__credentialCacheId;\n }\n\n private async _http(options: {\n terminal: ITerminal;\n relUrl: string;\n method: string;\n body: BodyInit | undefined;\n warningText: string;\n readBody: boolean;\n credentialOptions?: CredentialsOptions;\n }): Promise<Buffer | boolean> {\n const { terminal, relUrl, method, body, warningText, readBody, credentialOptions } = options;\n const safeCredentialOptions = credentialOptions ?? CredentialsOptions.Optional;\n const credentials = await this._tryGetCredentials(safeCredentialOptions);\n const url = new URL(relUrl, this._url).href;\n\n const headers: Record<string, string> = {};\n if (typeof credentials === 'string') {\n headers.Authorization = credentials;\n }\n\n for (const [key, value] of Object.entries(this._headers)) {\n if (typeof value === 'string') {\n headers[key] = value;\n }\n }\n\n const bodyLength = (body as { length: number })?.length || 'unknown';\n\n terminal.writeDebugLine(`[http-build-cache] request: ${method} ${url} ${bodyLength} bytes`);\n\n const response = await fetch(url, {\n method: method,\n headers: headers,\n body: body,\n redirect: 'follow'\n });\n\n if (!response.ok) {\n if (typeof credentials !== 'string' && safeCredentialOptions === CredentialsOptions.Optional) {\n // We tried fetching the resource without credentials and that did not work out\n // Try again but require credentials this time\n // This will trigger the provider to request credentials\n return await this._http({ ...options, credentialOptions: CredentialsOptions.Required });\n }\n\n this._reportFailure(terminal, method, response, false, warningText);\n return false;\n }\n\n const result: Buffer | boolean = readBody ? Buffer.from(await response.arrayBuffer()) : true;\n\n terminal.writeDebugLine(\n `[http-build-cache] actual response: ${response.status} ${url} ${\n result === true ? 'true' : result.length\n } bytes`\n );\n\n return result;\n }\n\n private async _tryGetCredentials(options: CredentialsOptions.Required): Promise<string>;\n private async _tryGetCredentials(options: CredentialsOptions.Optional): Promise<string | undefined>;\n private async _tryGetCredentials(options: CredentialsOptions.Omit): Promise<undefined>;\n private async _tryGetCredentials(options: CredentialsOptions): Promise<string | undefined>;\n private async _tryGetCredentials(options: CredentialsOptions): Promise<string | undefined> {\n if (options === CredentialsOptions.Omit) {\n return;\n }\n\n let credentials: string | undefined = this._environmentCredential;\n\n if (credentials === undefined) {\n credentials = await this._tryGetCredentialsFromCache();\n }\n\n if (typeof credentials !== 'string' && options === CredentialsOptions.Required) {\n throw new Error(\n [\n `Credentials for ${this._url.href} have not been provided.`,\n `In CI, verify that RUSH_BUILD_CACHE_CREDENTIAL contains a valid Authorization header value.`,\n ``,\n `For local developers, run:`,\n ``,\n ` rush update-cloud-credentials --interactive`,\n ``\n ].join('\\n')\n );\n }\n\n return credentials;\n }\n\n private async _tryGetCredentialsFromCache(): Promise<string | undefined> {\n let cacheEntry: ICredentialCacheEntry | undefined;\n\n await CredentialCache.usingAsync(\n {\n supportEditing: false\n },\n (credentialsCache: CredentialCache) => {\n cacheEntry = credentialsCache.tryGetCacheEntry(this._credentialCacheId);\n }\n );\n\n if (cacheEntry) {\n const expirationTime: number | undefined = cacheEntry.expires?.getTime();\n if (!expirationTime || expirationTime >= Date.now()) {\n return cacheEntry.credential;\n }\n }\n }\n\n private _getFailureType(requestMethod: string, response: Response, isRedirect: boolean): FailureType {\n if (response.ok) {\n return FailureType.None;\n }\n\n switch (response.status) {\n case 503: {\n // We select 503 specifically because this represents \"service unavailable\" and\n // \"rate limit throttle\" errors, which are transient issues.\n //\n // There are other 5xx errors, such as 501, that can occur if the request is\n // malformed, so as a general rule we want to let through other 5xx errors\n // so the user can troubleshoot.\n\n // Don't fail production builds with warnings for transient issues\n return FailureType.Informational;\n }\n\n case 401:\n case 403:\n case 407: {\n if (requestMethod === 'GET' && (isRedirect || response.redirected)) {\n // Cache misses for GET requests are not errors\n // This is a workaround behavior where a server can issue a redirect and we fail to authenticate at the new location.\n // We do not want to signal this as an authentication failure because the authorization header is not passed on to redirects.\n // i.e The authentication header was accepted for the first request and therefore subsequent failures\n // where it was not present should not be attributed to the header.\n // This scenario usually comes up with services that redirect to pre-signed URLS that don't actually exist.\n // Those services then usually treat the 404 as a 403 to prevent leaking information.\n return FailureType.None;\n }\n\n return FailureType.Authentication;\n }\n\n case 404: {\n if (requestMethod === 'GET') {\n // Cache misses for GET requests are not errors\n return FailureType.None;\n }\n }\n }\n\n // Let dev builds succeed, let Prod builds fail\n return FailureType.Warning;\n }\n\n private _reportFailure(\n terminal: ITerminal,\n requestMethod: string,\n response: Response,\n isRedirect: boolean,\n message: string\n ): void {\n switch (this._getFailureType(requestMethod, response, isRedirect)) {\n default: {\n terminal.writeErrorLine(`${message}: HTTP ${response.status}: ${response.statusText}`);\n break;\n }\n\n case FailureType.Warning: {\n terminal.writeWarningLine(`${message}: HTTP ${response.status}: ${response.statusText}`);\n break;\n }\n\n case FailureType.Informational: {\n terminal.writeLine(`${message}: HTTP ${response.status}: ${response.statusText}`);\n break;\n }\n\n case FailureType.None: {\n terminal.writeDebugLine(`${message}: HTTP ${response.status}: ${response.statusText}`);\n break;\n }\n\n case FailureType.Authentication: {\n throw new Error(\n [\n `${this._url.href} responded with ${response.status}: ${response.statusText}.`,\n `Credentials may be misconfigured or have expired.`,\n `In CI, verify that RUSH_BUILD_CACHE_CREDENTIAL contains a valid Authorization header value.`,\n ``,\n `For local developers, run:`,\n ``,\n ` rush update-cloud-credentials --interactive`,\n ``\n ].join('\\n')\n );\n }\n }\n }\n}\n"]
|
|
3828
|
+
mappings: "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",
|
|
3829
|
+
sourcesContent: ["import { ITerminal, Executable, Async } from '@rushstack/node-core-library';\nimport {\n ICloudBuildCacheProvider,\n ICredentialCacheEntry,\n CredentialCache,\n RushSession,\n EnvironmentConfiguration\n} from '@rushstack/rush-sdk';\nimport fetch, { BodyInit, Response } from 'node-fetch';\n\nenum CredentialsOptions {\n Optional,\n Required,\n Omit\n}\n\nenum FailureType {\n None,\n Informational,\n Warning,\n Error,\n Authentication\n}\n\nexport interface IHttpBuildCacheTokenHandler {\n exec: string;\n args?: string[];\n}\n\n/**\n * @public\n */\nexport interface IHttpBuildCacheProviderOptions {\n url: string;\n tokenHandler?: IHttpBuildCacheTokenHandler;\n uploadMethod?: string;\n minHttpRetryDelayMs?: number;\n headers?: Record<string, string>;\n cacheKeyPrefix?: string;\n isCacheWriteAllowed: boolean;\n pluginName: string;\n rushProjectRoot: string;\n}\n\nconst MAX_HTTP_CACHE_ATTEMPTS: number = 3;\nconst DEFAULT_MIN_HTTP_RETRY_DELAY_MS = 2500;\n\nexport class HttpBuildCacheProvider implements ICloudBuildCacheProvider {\n private readonly _pluginName: string;\n private readonly _rushSession: RushSession;\n private readonly _rushProjectRoot: string;\n private readonly _environmentCredential: string | undefined;\n private readonly _isCacheWriteAllowedByConfiguration: boolean;\n private readonly _url: URL;\n private readonly _uploadMethod: string;\n private readonly _headers: Record<string, string>;\n private readonly _cacheKeyPrefix: string;\n private readonly _tokenHandler: IHttpBuildCacheTokenHandler | undefined;\n private readonly _minHttpRetryDelayMs: number;\n private __credentialCacheId: string | undefined;\n\n public get isCacheWriteAllowed(): boolean {\n return EnvironmentConfiguration.buildCacheWriteAllowed ?? this._isCacheWriteAllowedByConfiguration;\n }\n\n public constructor(options: IHttpBuildCacheProviderOptions, rushSession: RushSession) {\n this._pluginName = options.pluginName;\n this._rushSession = rushSession;\n this._rushProjectRoot = options.rushProjectRoot;\n\n this._environmentCredential = EnvironmentConfiguration.buildCacheCredential;\n this._isCacheWriteAllowedByConfiguration = options.isCacheWriteAllowed;\n this._url = new URL(options.url.endsWith('/') ? options.url : options.url + '/');\n this._uploadMethod = options.uploadMethod ?? 'PUT';\n this._headers = options.headers ?? {};\n this._tokenHandler = options.tokenHandler;\n this._cacheKeyPrefix = options.cacheKeyPrefix ?? '';\n this._minHttpRetryDelayMs = options.minHttpRetryDelayMs ?? DEFAULT_MIN_HTTP_RETRY_DELAY_MS;\n }\n\n public async tryGetCacheEntryBufferByIdAsync(\n terminal: ITerminal,\n cacheId: string\n ): Promise<Buffer | undefined> {\n try {\n const result = await this._http({\n terminal: terminal,\n relUrl: `${this._cacheKeyPrefix}${cacheId}`,\n method: 'GET',\n body: undefined,\n warningText: 'Could not get cache entry',\n readBody: true,\n maxAttempts: MAX_HTTP_CACHE_ATTEMPTS\n });\n\n return Buffer.isBuffer(result) ? result : undefined;\n } catch (e) {\n terminal.writeWarningLine(`Error getting cache entry: ${e}`);\n return undefined;\n }\n }\n\n public async trySetCacheEntryBufferAsync(\n terminal: ITerminal,\n cacheId: string,\n objectBuffer: Buffer\n ): Promise<boolean> {\n if (!this.isCacheWriteAllowed) {\n terminal.writeErrorLine('Writing to cache is not allowed in the current configuration.');\n return false;\n }\n\n terminal.writeDebugLine('Uploading object with cacheId: ', cacheId);\n\n try {\n const result = await this._http({\n terminal: terminal,\n relUrl: `${this._cacheKeyPrefix}${cacheId}`,\n method: this._uploadMethod,\n body: objectBuffer,\n warningText: 'Could not write cache entry',\n readBody: false,\n maxAttempts: MAX_HTTP_CACHE_ATTEMPTS\n });\n\n return result !== false;\n } catch (e) {\n terminal.writeWarningLine(`Error uploading cache entry: ${e}`);\n return false;\n }\n }\n\n public async updateCachedCredentialAsync(terminal: ITerminal, credential: string): Promise<void> {\n await CredentialCache.usingAsync(\n {\n supportEditing: true\n },\n async (credentialsCache: CredentialCache) => {\n credentialsCache.setCacheEntry(this._credentialCacheId, {\n credential: credential\n });\n await credentialsCache.saveIfModifiedAsync();\n }\n );\n }\n\n public async updateCachedCredentialInteractiveAsync(terminal: ITerminal): Promise<void> {\n if (!this._tokenHandler) {\n throw new Error(\n `The interactive cloud credentials flow is not configured.\\n` +\n `Set the 'tokenHandler' setting in 'common/config/rush-plugins/${this._pluginName}.json' to a command that writes your credentials to standard output and exits with code 0 ` +\n `or provide your credentials to rush using the --credential flag instead. Credentials must be the ` +\n `'Authorization' header expected by ${this._url.href}`\n );\n }\n\n const cmd: string = `${this._tokenHandler.exec} ${(this._tokenHandler.args || []).join(' ')}`;\n terminal.writeVerboseLine(`Running '${cmd}' to get credentials`);\n const result = Executable.spawnSync(this._tokenHandler.exec, this._tokenHandler.args || []);\n\n terminal.writeErrorLine(result.stderr);\n\n if (result.error) {\n throw new Error(`Could not obtain credentials. The command '${cmd}' failed.`);\n }\n\n const credential = result.stdout.trim();\n terminal.writeVerboseLine('Got credentials');\n\n await this.updateCachedCredentialAsync(terminal, credential);\n\n terminal.writeLine('Updated credentials cache');\n }\n\n public async deleteCachedCredentialsAsync(terminal: ITerminal): Promise<void> {\n await CredentialCache.usingAsync(\n {\n supportEditing: true\n },\n async (credentialsCache: CredentialCache) => {\n credentialsCache.deleteCacheEntry(this._credentialCacheId);\n await credentialsCache.saveIfModifiedAsync();\n }\n );\n }\n\n private get _credentialCacheId(): string {\n if (!this.__credentialCacheId) {\n const cacheIdParts: string[] = [this._url.href];\n\n if (this._isCacheWriteAllowedByConfiguration) {\n cacheIdParts.push('cacheWriteAllowed');\n }\n\n this.__credentialCacheId = cacheIdParts.join('|');\n }\n\n return this.__credentialCacheId;\n }\n\n private async _http(options: {\n terminal: ITerminal;\n relUrl: string;\n method: string;\n body: BodyInit | undefined;\n warningText: string;\n readBody: boolean;\n maxAttempts: number;\n credentialOptions?: CredentialsOptions;\n }): Promise<Buffer | boolean> {\n const { terminal, relUrl, method, body, warningText, readBody, credentialOptions } = options;\n const safeCredentialOptions = credentialOptions ?? CredentialsOptions.Optional;\n const credentials = await this._tryGetCredentials(safeCredentialOptions);\n const url = new URL(relUrl, this._url).href;\n\n const headers: Record<string, string> = {};\n if (typeof credentials === 'string') {\n headers.Authorization = credentials;\n }\n\n for (const [key, value] of Object.entries(this._headers)) {\n if (typeof value === 'string') {\n headers[key] = value;\n }\n }\n\n const bodyLength = (body as { length: number })?.length || 'unknown';\n\n terminal.writeDebugLine(`[http-build-cache] request: ${method} ${url} ${bodyLength} bytes`);\n\n const response = await fetch(url, {\n method: method,\n headers: headers,\n body: body,\n redirect: 'follow'\n });\n\n if (!response.ok) {\n const isNonCredentialResponse = response.status >= 500 && response.status < 600;\n\n if (\n !isNonCredentialResponse &&\n typeof credentials !== 'string' &&\n safeCredentialOptions === CredentialsOptions.Optional\n ) {\n // If we don't already have credentials yet, and we got a response from the server\n // that is a \"normal\" failure (4xx), then we assume that credentials are probably\n // required. Re-attempt the request, requiring credentials this time.\n //\n // This counts as part of the \"first attempt\", so it is not included in the max attempts\n return await this._http({ ...options, credentialOptions: CredentialsOptions.Required });\n }\n\n if (options.maxAttempts > 1) {\n // Pause a bit before retrying in case the server is busy\n // Add some random jitter to the retry so we can spread out load on the remote service\n // A proper solution might add exponential back off in case the retry count is high (10 or more)\n const factor = 1.0 + Math.random(); // A random number between 1.0 and 2.0\n const retryDelay = Math.floor(factor * this._minHttpRetryDelayMs);\n\n await Async.sleep(retryDelay);\n\n return await this._http({ ...options, maxAttempts: options.maxAttempts - 1 });\n }\n\n this._reportFailure(terminal, method, response, false, warningText);\n return false;\n }\n\n const result: Buffer | boolean = readBody ? Buffer.from(await response.arrayBuffer()) : true;\n\n terminal.writeDebugLine(\n `[http-build-cache] actual response: ${response.status} ${url} ${\n result === true ? 'true' : result.length\n } bytes`\n );\n\n return result;\n }\n\n private async _tryGetCredentials(options: CredentialsOptions.Required): Promise<string>;\n private async _tryGetCredentials(options: CredentialsOptions.Optional): Promise<string | undefined>;\n private async _tryGetCredentials(options: CredentialsOptions.Omit): Promise<undefined>;\n private async _tryGetCredentials(options: CredentialsOptions): Promise<string | undefined>;\n private async _tryGetCredentials(options: CredentialsOptions): Promise<string | undefined> {\n if (options === CredentialsOptions.Omit) {\n return;\n }\n\n let credentials: string | undefined = this._environmentCredential;\n\n if (credentials === undefined) {\n credentials = await this._tryGetCredentialsFromCache();\n }\n\n if (typeof credentials !== 'string' && options === CredentialsOptions.Required) {\n throw new Error(\n [\n `Credentials for ${this._url.href} have not been provided.`,\n `In CI, verify that RUSH_BUILD_CACHE_CREDENTIAL contains a valid Authorization header value.`,\n ``,\n `For local developers, run:`,\n ``,\n ` rush update-cloud-credentials --interactive`,\n ``\n ].join('\\n')\n );\n }\n\n return credentials;\n }\n\n private async _tryGetCredentialsFromCache(): Promise<string | undefined> {\n let cacheEntry: ICredentialCacheEntry | undefined;\n\n await CredentialCache.usingAsync(\n {\n supportEditing: false\n },\n (credentialsCache: CredentialCache) => {\n cacheEntry = credentialsCache.tryGetCacheEntry(this._credentialCacheId);\n }\n );\n\n if (cacheEntry) {\n const expirationTime: number | undefined = cacheEntry.expires?.getTime();\n if (!expirationTime || expirationTime >= Date.now()) {\n return cacheEntry.credential;\n }\n }\n }\n\n private _getFailureType(requestMethod: string, response: Response, isRedirect: boolean): FailureType {\n if (response.ok) {\n return FailureType.None;\n }\n\n switch (response.status) {\n case 503: {\n // We select 503 specifically because this represents \"service unavailable\" and\n // \"rate limit throttle\" errors, which are transient issues.\n //\n // There are other 5xx errors, such as 501, that can occur if the request is\n // malformed, so as a general rule we want to let through other 5xx errors\n // so the user can troubleshoot.\n\n // Don't fail production builds with warnings for transient issues\n return FailureType.Informational;\n }\n\n case 401:\n case 403:\n case 407: {\n if (requestMethod === 'GET' && (isRedirect || response.redirected)) {\n // Cache misses for GET requests are not errors\n // This is a workaround behavior where a server can issue a redirect and we fail to authenticate at the new location.\n // We do not want to signal this as an authentication failure because the authorization header is not passed on to redirects.\n // i.e The authentication header was accepted for the first request and therefore subsequent failures\n // where it was not present should not be attributed to the header.\n // This scenario usually comes up with services that redirect to pre-signed URLS that don't actually exist.\n // Those services then usually treat the 404 as a 403 to prevent leaking information.\n return FailureType.None;\n }\n\n return FailureType.Authentication;\n }\n\n case 404: {\n if (requestMethod === 'GET') {\n // Cache misses for GET requests are not errors\n return FailureType.None;\n }\n }\n }\n\n // Let dev builds succeed, let Prod builds fail\n return FailureType.Warning;\n }\n\n private _reportFailure(\n terminal: ITerminal,\n requestMethod: string,\n response: Response,\n isRedirect: boolean,\n message: string\n ): void {\n switch (this._getFailureType(requestMethod, response, isRedirect)) {\n default: {\n terminal.writeErrorLine(`${message}: HTTP ${response.status}: ${response.statusText}`);\n break;\n }\n\n case FailureType.Warning: {\n terminal.writeWarningLine(`${message}: HTTP ${response.status}: ${response.statusText}`);\n break;\n }\n\n case FailureType.Informational: {\n terminal.writeLine(`${message}: HTTP ${response.status}: ${response.statusText}`);\n break;\n }\n\n case FailureType.None: {\n terminal.writeDebugLine(`${message}: HTTP ${response.status}: ${response.statusText}`);\n break;\n }\n\n case FailureType.Authentication: {\n throw new Error(\n [\n `${this._url.href} responded with ${response.status}: ${response.statusText}.`,\n `Credentials may be misconfigured or have expired.`,\n `In CI, verify that RUSH_BUILD_CACHE_CREDENTIAL contains a valid Authorization header value.`,\n ``,\n `For local developers, run:`,\n ``,\n ` rush update-cloud-credentials --interactive`,\n ``\n ].join('\\n')\n );\n }\n }\n }\n}\n"]
|
|
3586
3830
|
},
|
|
3587
3831
|
_coverageSchema: "1a1c01bbd47fc00a2c39e90264f33305004495a9",
|
|
3588
|
-
hash: "
|
|
3832
|
+
hash: "f39662f2cf6af1c0d874c48f29702c0c9cefda13"
|
|
3589
3833
|
};
|
|
3590
3834
|
var coverage = global[gcv] || (global[gcv] = {});
|
|
3591
3835
|
if (!coverage[path] || coverage[path].hash !== hash) {
|
|
@@ -3687,35 +3931,41 @@ cov_ms2xfswbr().s[11]++;
|
|
|
3687
3931
|
(cov_ms2xfswbr().b[4][0]++, FailureType) ||
|
|
3688
3932
|
/* istanbul ignore next */
|
|
3689
3933
|
(cov_ms2xfswbr().b[4][1]++, FailureType = {}));
|
|
3934
|
+
const MAX_HTTP_CACHE_ATTEMPTS =
|
|
3935
|
+
/* istanbul ignore next */
|
|
3936
|
+
(cov_ms2xfswbr().s[17]++, 3);
|
|
3937
|
+
const DEFAULT_MIN_HTTP_RETRY_DELAY_MS =
|
|
3938
|
+
/* istanbul ignore next */
|
|
3939
|
+
(cov_ms2xfswbr().s[18]++, 2500);
|
|
3690
3940
|
class HttpBuildCacheProvider {
|
|
3691
3941
|
constructor(options, rushSession) {
|
|
3692
3942
|
/* istanbul ignore next */
|
|
3693
3943
|
cov_ms2xfswbr().f[3]++;
|
|
3694
|
-
var _a, _b, _c;
|
|
3944
|
+
var _a, _b, _c, _d;
|
|
3695
3945
|
/* istanbul ignore next */
|
|
3696
|
-
cov_ms2xfswbr().s[
|
|
3946
|
+
cov_ms2xfswbr().s[19]++;
|
|
3697
3947
|
this._pluginName = options.pluginName;
|
|
3698
3948
|
/* istanbul ignore next */
|
|
3699
|
-
cov_ms2xfswbr().s[
|
|
3949
|
+
cov_ms2xfswbr().s[20]++;
|
|
3700
3950
|
this._rushSession = rushSession;
|
|
3701
3951
|
/* istanbul ignore next */
|
|
3702
|
-
cov_ms2xfswbr().s[
|
|
3952
|
+
cov_ms2xfswbr().s[21]++;
|
|
3703
3953
|
this._rushProjectRoot = options.rushProjectRoot;
|
|
3704
3954
|
/* istanbul ignore next */
|
|
3705
|
-
cov_ms2xfswbr().s[
|
|
3955
|
+
cov_ms2xfswbr().s[22]++;
|
|
3706
3956
|
this._environmentCredential = rush_sdk_1.EnvironmentConfiguration.buildCacheCredential;
|
|
3707
3957
|
/* istanbul ignore next */
|
|
3708
|
-
cov_ms2xfswbr().s[
|
|
3958
|
+
cov_ms2xfswbr().s[23]++;
|
|
3709
3959
|
this._isCacheWriteAllowedByConfiguration = options.isCacheWriteAllowed;
|
|
3710
3960
|
/* istanbul ignore next */
|
|
3711
|
-
cov_ms2xfswbr().s[
|
|
3961
|
+
cov_ms2xfswbr().s[24]++;
|
|
3712
3962
|
this._url = new URL(options.url.endsWith('/') ?
|
|
3713
3963
|
/* istanbul ignore next */
|
|
3714
3964
|
(cov_ms2xfswbr().b[5][0]++, options.url) :
|
|
3715
3965
|
/* istanbul ignore next */
|
|
3716
3966
|
(cov_ms2xfswbr().b[5][1]++, options.url + '/'));
|
|
3717
3967
|
/* istanbul ignore next */
|
|
3718
|
-
cov_ms2xfswbr().s[
|
|
3968
|
+
cov_ms2xfswbr().s[25]++;
|
|
3719
3969
|
this._uploadMethod =
|
|
3720
3970
|
/* istanbul ignore next */
|
|
3721
3971
|
(cov_ms2xfswbr().b[7][0]++, (_a = options.uploadMethod) !== null) &&
|
|
@@ -3726,7 +3976,7 @@ class HttpBuildCacheProvider {
|
|
|
3726
3976
|
/* istanbul ignore next */
|
|
3727
3977
|
(cov_ms2xfswbr().b[6][1]++, 'PUT');
|
|
3728
3978
|
/* istanbul ignore next */
|
|
3729
|
-
cov_ms2xfswbr().s[
|
|
3979
|
+
cov_ms2xfswbr().s[26]++;
|
|
3730
3980
|
this._headers =
|
|
3731
3981
|
/* istanbul ignore next */
|
|
3732
3982
|
(cov_ms2xfswbr().b[9][0]++, (_b = options.headers) !== null) &&
|
|
@@ -3737,10 +3987,10 @@ class HttpBuildCacheProvider {
|
|
|
3737
3987
|
/* istanbul ignore next */
|
|
3738
3988
|
(cov_ms2xfswbr().b[8][1]++, {});
|
|
3739
3989
|
/* istanbul ignore next */
|
|
3740
|
-
cov_ms2xfswbr().s[
|
|
3990
|
+
cov_ms2xfswbr().s[27]++;
|
|
3741
3991
|
this._tokenHandler = options.tokenHandler;
|
|
3742
3992
|
/* istanbul ignore next */
|
|
3743
|
-
cov_ms2xfswbr().s[
|
|
3993
|
+
cov_ms2xfswbr().s[28]++;
|
|
3744
3994
|
this._cacheKeyPrefix =
|
|
3745
3995
|
/* istanbul ignore next */
|
|
3746
3996
|
(cov_ms2xfswbr().b[11][0]++, (_c = options.cacheKeyPrefix) !== null) &&
|
|
@@ -3750,222 +4000,235 @@ class HttpBuildCacheProvider {
|
|
|
3750
4000
|
(cov_ms2xfswbr().b[10][0]++, _c) :
|
|
3751
4001
|
/* istanbul ignore next */
|
|
3752
4002
|
(cov_ms2xfswbr().b[10][1]++, '');
|
|
4003
|
+
/* istanbul ignore next */
|
|
4004
|
+
cov_ms2xfswbr().s[29]++;
|
|
4005
|
+
this._minHttpRetryDelayMs =
|
|
4006
|
+
/* istanbul ignore next */
|
|
4007
|
+
(cov_ms2xfswbr().b[13][0]++, (_d = options.minHttpRetryDelayMs) !== null) &&
|
|
4008
|
+
/* istanbul ignore next */
|
|
4009
|
+
(cov_ms2xfswbr().b[13][1]++, _d !== void 0) ?
|
|
4010
|
+
/* istanbul ignore next */
|
|
4011
|
+
(cov_ms2xfswbr().b[12][0]++, _d) :
|
|
4012
|
+
/* istanbul ignore next */
|
|
4013
|
+
(cov_ms2xfswbr().b[12][1]++, DEFAULT_MIN_HTTP_RETRY_DELAY_MS);
|
|
3753
4014
|
}
|
|
3754
4015
|
get isCacheWriteAllowed() {
|
|
3755
4016
|
/* istanbul ignore next */
|
|
3756
4017
|
cov_ms2xfswbr().f[4]++;
|
|
3757
4018
|
var _a;
|
|
3758
4019
|
/* istanbul ignore next */
|
|
3759
|
-
cov_ms2xfswbr().s[
|
|
4020
|
+
cov_ms2xfswbr().s[30]++;
|
|
3760
4021
|
return (
|
|
3761
4022
|
/* istanbul ignore next */
|
|
3762
|
-
(cov_ms2xfswbr().b[
|
|
4023
|
+
(cov_ms2xfswbr().b[15][0]++, (_a = rush_sdk_1.EnvironmentConfiguration.buildCacheWriteAllowed) !== null) &&
|
|
3763
4024
|
/* istanbul ignore next */
|
|
3764
|
-
(cov_ms2xfswbr().b[
|
|
4025
|
+
(cov_ms2xfswbr().b[15][1]++, _a !== void 0) ?
|
|
3765
4026
|
/* istanbul ignore next */
|
|
3766
|
-
(cov_ms2xfswbr().b[
|
|
4027
|
+
(cov_ms2xfswbr().b[14][0]++, _a) :
|
|
3767
4028
|
/* istanbul ignore next */
|
|
3768
|
-
(cov_ms2xfswbr().b[
|
|
4029
|
+
(cov_ms2xfswbr().b[14][1]++, this._isCacheWriteAllowedByConfiguration)
|
|
3769
4030
|
);
|
|
3770
4031
|
}
|
|
3771
4032
|
async tryGetCacheEntryBufferByIdAsync(terminal, cacheId) {
|
|
3772
4033
|
/* istanbul ignore next */
|
|
3773
4034
|
cov_ms2xfswbr().f[5]++;
|
|
3774
|
-
cov_ms2xfswbr().s[
|
|
4035
|
+
cov_ms2xfswbr().s[31]++;
|
|
3775
4036
|
try {
|
|
3776
4037
|
const result =
|
|
3777
4038
|
/* istanbul ignore next */
|
|
3778
|
-
(cov_ms2xfswbr().s[
|
|
4039
|
+
(cov_ms2xfswbr().s[32]++, await this._http({
|
|
3779
4040
|
terminal: terminal,
|
|
3780
4041
|
relUrl: `${this._cacheKeyPrefix}${cacheId}`,
|
|
3781
4042
|
method: 'GET',
|
|
3782
4043
|
body: undefined,
|
|
3783
4044
|
warningText: 'Could not get cache entry',
|
|
3784
|
-
readBody: true
|
|
4045
|
+
readBody: true,
|
|
4046
|
+
maxAttempts: MAX_HTTP_CACHE_ATTEMPTS
|
|
3785
4047
|
}));
|
|
3786
4048
|
/* istanbul ignore next */
|
|
3787
|
-
cov_ms2xfswbr().s[
|
|
4049
|
+
cov_ms2xfswbr().s[33]++;
|
|
3788
4050
|
return Buffer.isBuffer(result) ?
|
|
3789
4051
|
/* istanbul ignore next */
|
|
3790
|
-
(cov_ms2xfswbr().b[
|
|
4052
|
+
(cov_ms2xfswbr().b[16][0]++, result) :
|
|
3791
4053
|
/* istanbul ignore next */
|
|
3792
|
-
(cov_ms2xfswbr().b[
|
|
4054
|
+
(cov_ms2xfswbr().b[16][1]++, undefined);
|
|
3793
4055
|
} catch (e) {
|
|
3794
4056
|
/* istanbul ignore next */
|
|
3795
|
-
cov_ms2xfswbr().s[
|
|
4057
|
+
cov_ms2xfswbr().s[34]++;
|
|
3796
4058
|
terminal.writeWarningLine(`Error getting cache entry: ${e}`);
|
|
3797
4059
|
/* istanbul ignore next */
|
|
3798
|
-
cov_ms2xfswbr().s[
|
|
4060
|
+
cov_ms2xfswbr().s[35]++;
|
|
3799
4061
|
return undefined;
|
|
3800
4062
|
}
|
|
3801
4063
|
}
|
|
3802
4064
|
async trySetCacheEntryBufferAsync(terminal, cacheId, objectBuffer) {
|
|
3803
4065
|
/* istanbul ignore next */
|
|
3804
4066
|
cov_ms2xfswbr().f[6]++;
|
|
3805
|
-
cov_ms2xfswbr().s[
|
|
4067
|
+
cov_ms2xfswbr().s[36]++;
|
|
3806
4068
|
if (!this.isCacheWriteAllowed) {
|
|
3807
4069
|
/* istanbul ignore next */
|
|
3808
|
-
cov_ms2xfswbr().b[
|
|
3809
|
-
cov_ms2xfswbr().s[
|
|
4070
|
+
cov_ms2xfswbr().b[17][0]++;
|
|
4071
|
+
cov_ms2xfswbr().s[37]++;
|
|
3810
4072
|
terminal.writeErrorLine('Writing to cache is not allowed in the current configuration.');
|
|
3811
4073
|
/* istanbul ignore next */
|
|
3812
|
-
cov_ms2xfswbr().s[
|
|
4074
|
+
cov_ms2xfswbr().s[38]++;
|
|
3813
4075
|
return false;
|
|
3814
4076
|
} else
|
|
3815
4077
|
/* istanbul ignore next */
|
|
3816
4078
|
{
|
|
3817
|
-
cov_ms2xfswbr().b[
|
|
4079
|
+
cov_ms2xfswbr().b[17][1]++;
|
|
3818
4080
|
}
|
|
3819
|
-
cov_ms2xfswbr().s[
|
|
4081
|
+
cov_ms2xfswbr().s[39]++;
|
|
3820
4082
|
terminal.writeDebugLine('Uploading object with cacheId: ', cacheId);
|
|
3821
4083
|
/* istanbul ignore next */
|
|
3822
|
-
cov_ms2xfswbr().s[
|
|
4084
|
+
cov_ms2xfswbr().s[40]++;
|
|
3823
4085
|
try {
|
|
3824
4086
|
const result =
|
|
3825
4087
|
/* istanbul ignore next */
|
|
3826
|
-
(cov_ms2xfswbr().s[
|
|
4088
|
+
(cov_ms2xfswbr().s[41]++, await this._http({
|
|
3827
4089
|
terminal: terminal,
|
|
3828
4090
|
relUrl: `${this._cacheKeyPrefix}${cacheId}`,
|
|
3829
4091
|
method: this._uploadMethod,
|
|
3830
4092
|
body: objectBuffer,
|
|
3831
4093
|
warningText: 'Could not write cache entry',
|
|
3832
|
-
readBody: false
|
|
4094
|
+
readBody: false,
|
|
4095
|
+
maxAttempts: MAX_HTTP_CACHE_ATTEMPTS
|
|
3833
4096
|
}));
|
|
3834
4097
|
/* istanbul ignore next */
|
|
3835
|
-
cov_ms2xfswbr().s[
|
|
4098
|
+
cov_ms2xfswbr().s[42]++;
|
|
3836
4099
|
return result !== false;
|
|
3837
4100
|
} catch (e) {
|
|
3838
4101
|
/* istanbul ignore next */
|
|
3839
|
-
cov_ms2xfswbr().s[
|
|
4102
|
+
cov_ms2xfswbr().s[43]++;
|
|
3840
4103
|
terminal.writeWarningLine(`Error uploading cache entry: ${e}`);
|
|
3841
4104
|
/* istanbul ignore next */
|
|
3842
|
-
cov_ms2xfswbr().s[
|
|
4105
|
+
cov_ms2xfswbr().s[44]++;
|
|
3843
4106
|
return false;
|
|
3844
4107
|
}
|
|
3845
4108
|
}
|
|
3846
4109
|
async updateCachedCredentialAsync(terminal, credential) {
|
|
3847
4110
|
/* istanbul ignore next */
|
|
3848
4111
|
cov_ms2xfswbr().f[7]++;
|
|
3849
|
-
cov_ms2xfswbr().s[
|
|
4112
|
+
cov_ms2xfswbr().s[45]++;
|
|
3850
4113
|
await rush_sdk_1.CredentialCache.usingAsync({
|
|
3851
4114
|
supportEditing: true
|
|
3852
4115
|
}, async credentialsCache => {
|
|
3853
4116
|
/* istanbul ignore next */
|
|
3854
4117
|
cov_ms2xfswbr().f[8]++;
|
|
3855
|
-
cov_ms2xfswbr().s[
|
|
4118
|
+
cov_ms2xfswbr().s[46]++;
|
|
3856
4119
|
credentialsCache.setCacheEntry(this._credentialCacheId, {
|
|
3857
4120
|
credential: credential
|
|
3858
4121
|
});
|
|
3859
4122
|
/* istanbul ignore next */
|
|
3860
|
-
cov_ms2xfswbr().s[
|
|
4123
|
+
cov_ms2xfswbr().s[47]++;
|
|
3861
4124
|
await credentialsCache.saveIfModifiedAsync();
|
|
3862
4125
|
});
|
|
3863
4126
|
}
|
|
3864
4127
|
async updateCachedCredentialInteractiveAsync(terminal) {
|
|
3865
4128
|
/* istanbul ignore next */
|
|
3866
4129
|
cov_ms2xfswbr().f[9]++;
|
|
3867
|
-
cov_ms2xfswbr().s[
|
|
4130
|
+
cov_ms2xfswbr().s[48]++;
|
|
3868
4131
|
if (!this._tokenHandler) {
|
|
3869
4132
|
/* istanbul ignore next */
|
|
3870
|
-
cov_ms2xfswbr().b[
|
|
3871
|
-
cov_ms2xfswbr().s[
|
|
4133
|
+
cov_ms2xfswbr().b[18][0]++;
|
|
4134
|
+
cov_ms2xfswbr().s[49]++;
|
|
3872
4135
|
throw new Error(`The interactive cloud credentials flow is not configured.\n` + `Set the 'tokenHandler' setting in 'common/config/rush-plugins/${this._pluginName}.json' to a command that writes your credentials to standard output and exits with code 0 ` + `or provide your credentials to rush using the --credential flag instead. Credentials must be the ` + `'Authorization' header expected by ${this._url.href}`);
|
|
3873
4136
|
} else
|
|
3874
4137
|
/* istanbul ignore next */
|
|
3875
4138
|
{
|
|
3876
|
-
cov_ms2xfswbr().b[
|
|
4139
|
+
cov_ms2xfswbr().b[18][1]++;
|
|
3877
4140
|
}
|
|
3878
4141
|
const cmd =
|
|
3879
4142
|
/* istanbul ignore next */
|
|
3880
|
-
(cov_ms2xfswbr().s[
|
|
4143
|
+
(cov_ms2xfswbr().s[50]++, `${this._tokenHandler.exec} ${(
|
|
3881
4144
|
/* istanbul ignore next */
|
|
3882
|
-
(cov_ms2xfswbr().b[
|
|
4145
|
+
(cov_ms2xfswbr().b[19][0]++, this._tokenHandler.args) ||
|
|
3883
4146
|
/* istanbul ignore next */
|
|
3884
|
-
(cov_ms2xfswbr().b[
|
|
4147
|
+
(cov_ms2xfswbr().b[19][1]++, [])).join(' ')}`);
|
|
3885
4148
|
/* istanbul ignore next */
|
|
3886
|
-
cov_ms2xfswbr().s[
|
|
4149
|
+
cov_ms2xfswbr().s[51]++;
|
|
3887
4150
|
terminal.writeVerboseLine(`Running '${cmd}' to get credentials`);
|
|
3888
4151
|
const result =
|
|
3889
4152
|
/* istanbul ignore next */
|
|
3890
|
-
(cov_ms2xfswbr().s[
|
|
4153
|
+
(cov_ms2xfswbr().s[52]++, node_core_library_1.Executable.spawnSync(this._tokenHandler.exec,
|
|
3891
4154
|
/* istanbul ignore next */
|
|
3892
|
-
(cov_ms2xfswbr().b[
|
|
4155
|
+
(cov_ms2xfswbr().b[20][0]++, this._tokenHandler.args) ||
|
|
3893
4156
|
/* istanbul ignore next */
|
|
3894
|
-
(cov_ms2xfswbr().b[
|
|
4157
|
+
(cov_ms2xfswbr().b[20][1]++, [])));
|
|
3895
4158
|
/* istanbul ignore next */
|
|
3896
|
-
cov_ms2xfswbr().s[
|
|
4159
|
+
cov_ms2xfswbr().s[53]++;
|
|
3897
4160
|
terminal.writeErrorLine(result.stderr);
|
|
3898
4161
|
/* istanbul ignore next */
|
|
3899
|
-
cov_ms2xfswbr().s[
|
|
4162
|
+
cov_ms2xfswbr().s[54]++;
|
|
3900
4163
|
if (result.error) {
|
|
3901
4164
|
/* istanbul ignore next */
|
|
3902
|
-
cov_ms2xfswbr().b[
|
|
3903
|
-
cov_ms2xfswbr().s[
|
|
4165
|
+
cov_ms2xfswbr().b[21][0]++;
|
|
4166
|
+
cov_ms2xfswbr().s[55]++;
|
|
3904
4167
|
throw new Error(`Could not obtain credentials. The command '${cmd}' failed.`);
|
|
3905
4168
|
} else
|
|
3906
4169
|
/* istanbul ignore next */
|
|
3907
4170
|
{
|
|
3908
|
-
cov_ms2xfswbr().b[
|
|
4171
|
+
cov_ms2xfswbr().b[21][1]++;
|
|
3909
4172
|
}
|
|
3910
4173
|
const credential =
|
|
3911
4174
|
/* istanbul ignore next */
|
|
3912
|
-
(cov_ms2xfswbr().s[
|
|
4175
|
+
(cov_ms2xfswbr().s[56]++, result.stdout.trim());
|
|
3913
4176
|
/* istanbul ignore next */
|
|
3914
|
-
cov_ms2xfswbr().s[
|
|
4177
|
+
cov_ms2xfswbr().s[57]++;
|
|
3915
4178
|
terminal.writeVerboseLine('Got credentials');
|
|
3916
4179
|
/* istanbul ignore next */
|
|
3917
|
-
cov_ms2xfswbr().s[
|
|
4180
|
+
cov_ms2xfswbr().s[58]++;
|
|
3918
4181
|
await this.updateCachedCredentialAsync(terminal, credential);
|
|
3919
4182
|
/* istanbul ignore next */
|
|
3920
|
-
cov_ms2xfswbr().s[
|
|
4183
|
+
cov_ms2xfswbr().s[59]++;
|
|
3921
4184
|
terminal.writeLine('Updated credentials cache');
|
|
3922
4185
|
}
|
|
3923
4186
|
async deleteCachedCredentialsAsync(terminal) {
|
|
3924
4187
|
/* istanbul ignore next */
|
|
3925
4188
|
cov_ms2xfswbr().f[10]++;
|
|
3926
|
-
cov_ms2xfswbr().s[
|
|
4189
|
+
cov_ms2xfswbr().s[60]++;
|
|
3927
4190
|
await rush_sdk_1.CredentialCache.usingAsync({
|
|
3928
4191
|
supportEditing: true
|
|
3929
4192
|
}, async credentialsCache => {
|
|
3930
4193
|
/* istanbul ignore next */
|
|
3931
4194
|
cov_ms2xfswbr().f[11]++;
|
|
3932
|
-
cov_ms2xfswbr().s[
|
|
4195
|
+
cov_ms2xfswbr().s[61]++;
|
|
3933
4196
|
credentialsCache.deleteCacheEntry(this._credentialCacheId);
|
|
3934
4197
|
/* istanbul ignore next */
|
|
3935
|
-
cov_ms2xfswbr().s[
|
|
4198
|
+
cov_ms2xfswbr().s[62]++;
|
|
3936
4199
|
await credentialsCache.saveIfModifiedAsync();
|
|
3937
4200
|
});
|
|
3938
4201
|
}
|
|
3939
4202
|
get _credentialCacheId() {
|
|
3940
4203
|
/* istanbul ignore next */
|
|
3941
4204
|
cov_ms2xfswbr().f[12]++;
|
|
3942
|
-
cov_ms2xfswbr().s[
|
|
4205
|
+
cov_ms2xfswbr().s[63]++;
|
|
3943
4206
|
if (!this.__credentialCacheId) {
|
|
3944
4207
|
/* istanbul ignore next */
|
|
3945
|
-
cov_ms2xfswbr().b[
|
|
4208
|
+
cov_ms2xfswbr().b[22][0]++;
|
|
3946
4209
|
const cacheIdParts =
|
|
3947
4210
|
/* istanbul ignore next */
|
|
3948
|
-
(cov_ms2xfswbr().s[
|
|
4211
|
+
(cov_ms2xfswbr().s[64]++, [this._url.href]);
|
|
3949
4212
|
/* istanbul ignore next */
|
|
3950
|
-
cov_ms2xfswbr().s[
|
|
4213
|
+
cov_ms2xfswbr().s[65]++;
|
|
3951
4214
|
if (this._isCacheWriteAllowedByConfiguration) {
|
|
3952
4215
|
/* istanbul ignore next */
|
|
3953
|
-
cov_ms2xfswbr().b[
|
|
3954
|
-
cov_ms2xfswbr().s[
|
|
4216
|
+
cov_ms2xfswbr().b[23][0]++;
|
|
4217
|
+
cov_ms2xfswbr().s[66]++;
|
|
3955
4218
|
cacheIdParts.push('cacheWriteAllowed');
|
|
3956
4219
|
} else
|
|
3957
4220
|
/* istanbul ignore next */
|
|
3958
4221
|
{
|
|
3959
|
-
cov_ms2xfswbr().b[
|
|
4222
|
+
cov_ms2xfswbr().b[23][1]++;
|
|
3960
4223
|
}
|
|
3961
|
-
cov_ms2xfswbr().s[
|
|
4224
|
+
cov_ms2xfswbr().s[67]++;
|
|
3962
4225
|
this.__credentialCacheId = cacheIdParts.join('|');
|
|
3963
4226
|
} else
|
|
3964
4227
|
/* istanbul ignore next */
|
|
3965
4228
|
{
|
|
3966
|
-
cov_ms2xfswbr().b[
|
|
4229
|
+
cov_ms2xfswbr().b[22][1]++;
|
|
3967
4230
|
}
|
|
3968
|
-
cov_ms2xfswbr().s[
|
|
4231
|
+
cov_ms2xfswbr().s[68]++;
|
|
3969
4232
|
return this.__credentialCacheId;
|
|
3970
4233
|
}
|
|
3971
4234
|
async _http(options) {
|
|
@@ -3981,178 +4244,216 @@ class HttpBuildCacheProvider {
|
|
|
3981
4244
|
credentialOptions
|
|
3982
4245
|
} =
|
|
3983
4246
|
/* istanbul ignore next */
|
|
3984
|
-
(cov_ms2xfswbr().s[
|
|
4247
|
+
(cov_ms2xfswbr().s[69]++, options);
|
|
3985
4248
|
const safeCredentialOptions =
|
|
3986
4249
|
/* istanbul ignore next */
|
|
3987
|
-
(cov_ms2xfswbr().s[
|
|
4250
|
+
(cov_ms2xfswbr().s[70]++,
|
|
3988
4251
|
/* istanbul ignore next */
|
|
3989
|
-
(cov_ms2xfswbr().b[
|
|
4252
|
+
(cov_ms2xfswbr().b[25][0]++, credentialOptions !== null) &&
|
|
3990
4253
|
/* istanbul ignore next */
|
|
3991
|
-
(cov_ms2xfswbr().b[
|
|
4254
|
+
(cov_ms2xfswbr().b[25][1]++, credentialOptions !== void 0) ?
|
|
3992
4255
|
/* istanbul ignore next */
|
|
3993
|
-
(cov_ms2xfswbr().b[
|
|
4256
|
+
(cov_ms2xfswbr().b[24][0]++, credentialOptions) :
|
|
3994
4257
|
/* istanbul ignore next */
|
|
3995
|
-
(cov_ms2xfswbr().b[
|
|
4258
|
+
(cov_ms2xfswbr().b[24][1]++, CredentialsOptions.Optional));
|
|
3996
4259
|
const credentials =
|
|
3997
4260
|
/* istanbul ignore next */
|
|
3998
|
-
(cov_ms2xfswbr().s[
|
|
4261
|
+
(cov_ms2xfswbr().s[71]++, await this._tryGetCredentials(safeCredentialOptions));
|
|
3999
4262
|
const url =
|
|
4000
4263
|
/* istanbul ignore next */
|
|
4001
|
-
(cov_ms2xfswbr().s[
|
|
4264
|
+
(cov_ms2xfswbr().s[72]++, new URL(relUrl, this._url).href);
|
|
4002
4265
|
const headers =
|
|
4003
4266
|
/* istanbul ignore next */
|
|
4004
|
-
(cov_ms2xfswbr().s[
|
|
4267
|
+
(cov_ms2xfswbr().s[73]++, {});
|
|
4005
4268
|
/* istanbul ignore next */
|
|
4006
|
-
cov_ms2xfswbr().s[
|
|
4269
|
+
cov_ms2xfswbr().s[74]++;
|
|
4007
4270
|
if (typeof credentials === 'string') {
|
|
4008
4271
|
/* istanbul ignore next */
|
|
4009
|
-
cov_ms2xfswbr().b[
|
|
4010
|
-
cov_ms2xfswbr().s[
|
|
4272
|
+
cov_ms2xfswbr().b[26][0]++;
|
|
4273
|
+
cov_ms2xfswbr().s[75]++;
|
|
4011
4274
|
headers.Authorization = credentials;
|
|
4012
4275
|
} else
|
|
4013
4276
|
/* istanbul ignore next */
|
|
4014
4277
|
{
|
|
4015
|
-
cov_ms2xfswbr().b[
|
|
4278
|
+
cov_ms2xfswbr().b[26][1]++;
|
|
4016
4279
|
}
|
|
4017
|
-
cov_ms2xfswbr().s[
|
|
4280
|
+
cov_ms2xfswbr().s[76]++;
|
|
4018
4281
|
for (const [key, value] of Object.entries(this._headers)) {
|
|
4019
4282
|
/* istanbul ignore next */
|
|
4020
|
-
cov_ms2xfswbr().s[
|
|
4283
|
+
cov_ms2xfswbr().s[77]++;
|
|
4021
4284
|
if (typeof value === 'string') {
|
|
4022
4285
|
/* istanbul ignore next */
|
|
4023
|
-
cov_ms2xfswbr().b[
|
|
4024
|
-
cov_ms2xfswbr().s[
|
|
4286
|
+
cov_ms2xfswbr().b[27][0]++;
|
|
4287
|
+
cov_ms2xfswbr().s[78]++;
|
|
4025
4288
|
headers[key] = value;
|
|
4026
4289
|
} else
|
|
4027
4290
|
/* istanbul ignore next */
|
|
4028
4291
|
{
|
|
4029
|
-
cov_ms2xfswbr().b[
|
|
4292
|
+
cov_ms2xfswbr().b[27][1]++;
|
|
4030
4293
|
}
|
|
4031
4294
|
}
|
|
4032
4295
|
const bodyLength =
|
|
4033
4296
|
/* istanbul ignore next */
|
|
4034
|
-
(cov_ms2xfswbr().s[
|
|
4297
|
+
(cov_ms2xfswbr().s[79]++,
|
|
4035
4298
|
/* istanbul ignore next */
|
|
4036
|
-
(cov_ms2xfswbr().b[
|
|
4299
|
+
(cov_ms2xfswbr().b[28][0]++,
|
|
4037
4300
|
/* istanbul ignore next */
|
|
4038
|
-
(cov_ms2xfswbr().b[
|
|
4301
|
+
(cov_ms2xfswbr().b[30][0]++, body === null) ||
|
|
4039
4302
|
/* istanbul ignore next */
|
|
4040
|
-
(cov_ms2xfswbr().b[
|
|
4303
|
+
(cov_ms2xfswbr().b[30][1]++, body === void 0) ?
|
|
4041
4304
|
/* istanbul ignore next */
|
|
4042
|
-
(cov_ms2xfswbr().b[
|
|
4305
|
+
(cov_ms2xfswbr().b[29][0]++, void 0) :
|
|
4043
4306
|
/* istanbul ignore next */
|
|
4044
|
-
(cov_ms2xfswbr().b[
|
|
4307
|
+
(cov_ms2xfswbr().b[29][1]++, body.length)) ||
|
|
4045
4308
|
/* istanbul ignore next */
|
|
4046
|
-
(cov_ms2xfswbr().b[
|
|
4309
|
+
(cov_ms2xfswbr().b[28][1]++, 'unknown'));
|
|
4047
4310
|
/* istanbul ignore next */
|
|
4048
|
-
cov_ms2xfswbr().s[
|
|
4311
|
+
cov_ms2xfswbr().s[80]++;
|
|
4049
4312
|
terminal.writeDebugLine(`[http-build-cache] request: ${method} ${url} ${bodyLength} bytes`);
|
|
4050
4313
|
const response =
|
|
4051
4314
|
/* istanbul ignore next */
|
|
4052
|
-
(cov_ms2xfswbr().s[
|
|
4315
|
+
(cov_ms2xfswbr().s[81]++, await (0, node_fetch_1.default)(url, {
|
|
4053
4316
|
method: method,
|
|
4054
4317
|
headers: headers,
|
|
4055
4318
|
body: body,
|
|
4056
4319
|
redirect: 'follow'
|
|
4057
4320
|
}));
|
|
4058
4321
|
/* istanbul ignore next */
|
|
4059
|
-
cov_ms2xfswbr().s[
|
|
4322
|
+
cov_ms2xfswbr().s[82]++;
|
|
4060
4323
|
if (!response.ok) {
|
|
4061
4324
|
/* istanbul ignore next */
|
|
4062
|
-
cov_ms2xfswbr().b[
|
|
4063
|
-
|
|
4325
|
+
cov_ms2xfswbr().b[31][0]++;
|
|
4326
|
+
const isNonCredentialResponse =
|
|
4327
|
+
/* istanbul ignore next */
|
|
4328
|
+
(cov_ms2xfswbr().s[83]++,
|
|
4329
|
+
/* istanbul ignore next */
|
|
4330
|
+
(cov_ms2xfswbr().b[32][0]++, response.status >= 500) &&
|
|
4331
|
+
/* istanbul ignore next */
|
|
4332
|
+
(cov_ms2xfswbr().b[32][1]++, response.status < 600));
|
|
4333
|
+
/* istanbul ignore next */
|
|
4334
|
+
cov_ms2xfswbr().s[84]++;
|
|
4064
4335
|
if (
|
|
4065
4336
|
/* istanbul ignore next */
|
|
4066
|
-
(cov_ms2xfswbr().b[
|
|
4337
|
+
(cov_ms2xfswbr().b[34][0]++, !isNonCredentialResponse) &&
|
|
4067
4338
|
/* istanbul ignore next */
|
|
4068
|
-
(cov_ms2xfswbr().b[
|
|
4339
|
+
(cov_ms2xfswbr().b[34][1]++, typeof credentials !== 'string') &&
|
|
4340
|
+
/* istanbul ignore next */
|
|
4341
|
+
(cov_ms2xfswbr().b[34][2]++, safeCredentialOptions === CredentialsOptions.Optional)) {
|
|
4069
4342
|
/* istanbul ignore next */
|
|
4070
|
-
cov_ms2xfswbr().b[
|
|
4071
|
-
cov_ms2xfswbr().s[
|
|
4072
|
-
//
|
|
4073
|
-
//
|
|
4074
|
-
//
|
|
4343
|
+
cov_ms2xfswbr().b[33][0]++;
|
|
4344
|
+
cov_ms2xfswbr().s[85]++;
|
|
4345
|
+
// If we don't already have credentials yet, and we got a response from the server
|
|
4346
|
+
// that is a "normal" failure (4xx), then we assume that credentials are probably
|
|
4347
|
+
// required. Re-attempt the request, requiring credentials this time.
|
|
4348
|
+
//
|
|
4349
|
+
// This counts as part of the "first attempt", so it is not included in the max attempts
|
|
4075
4350
|
return await this._http(Object.assign(Object.assign({}, options), {
|
|
4076
4351
|
credentialOptions: CredentialsOptions.Required
|
|
4077
4352
|
}));
|
|
4078
4353
|
} else
|
|
4079
4354
|
/* istanbul ignore next */
|
|
4080
4355
|
{
|
|
4081
|
-
cov_ms2xfswbr().b[
|
|
4356
|
+
cov_ms2xfswbr().b[33][1]++;
|
|
4357
|
+
}
|
|
4358
|
+
cov_ms2xfswbr().s[86]++;
|
|
4359
|
+
if (options.maxAttempts > 1) {
|
|
4360
|
+
/* istanbul ignore next */
|
|
4361
|
+
cov_ms2xfswbr().b[35][0]++;
|
|
4362
|
+
// Pause a bit before retrying in case the server is busy
|
|
4363
|
+
// Add some random jitter to the retry so we can spread out load on the remote service
|
|
4364
|
+
// A proper solution might add exponential back off in case the retry count is high (10 or more)
|
|
4365
|
+
const factor =
|
|
4366
|
+
/* istanbul ignore next */
|
|
4367
|
+
(cov_ms2xfswbr().s[87]++, 1.0 + Math.random()); // A random number between 1.0 and 2.0
|
|
4368
|
+
const retryDelay =
|
|
4369
|
+
/* istanbul ignore next */
|
|
4370
|
+
(cov_ms2xfswbr().s[88]++, Math.floor(factor * this._minHttpRetryDelayMs));
|
|
4371
|
+
/* istanbul ignore next */
|
|
4372
|
+
cov_ms2xfswbr().s[89]++;
|
|
4373
|
+
await node_core_library_1.Async.sleep(retryDelay);
|
|
4374
|
+
/* istanbul ignore next */
|
|
4375
|
+
cov_ms2xfswbr().s[90]++;
|
|
4376
|
+
return await this._http(Object.assign(Object.assign({}, options), {
|
|
4377
|
+
maxAttempts: options.maxAttempts - 1
|
|
4378
|
+
}));
|
|
4379
|
+
} else
|
|
4380
|
+
/* istanbul ignore next */
|
|
4381
|
+
{
|
|
4382
|
+
cov_ms2xfswbr().b[35][1]++;
|
|
4082
4383
|
}
|
|
4083
|
-
cov_ms2xfswbr().s[
|
|
4384
|
+
cov_ms2xfswbr().s[91]++;
|
|
4084
4385
|
this._reportFailure(terminal, method, response, false, warningText);
|
|
4085
4386
|
/* istanbul ignore next */
|
|
4086
|
-
cov_ms2xfswbr().s[
|
|
4387
|
+
cov_ms2xfswbr().s[92]++;
|
|
4087
4388
|
return false;
|
|
4088
4389
|
} else
|
|
4089
4390
|
/* istanbul ignore next */
|
|
4090
4391
|
{
|
|
4091
|
-
cov_ms2xfswbr().b[
|
|
4392
|
+
cov_ms2xfswbr().b[31][1]++;
|
|
4092
4393
|
}
|
|
4093
4394
|
const result =
|
|
4094
4395
|
/* istanbul ignore next */
|
|
4095
|
-
(cov_ms2xfswbr().s[
|
|
4396
|
+
(cov_ms2xfswbr().s[93]++, readBody ?
|
|
4096
4397
|
/* istanbul ignore next */
|
|
4097
|
-
(cov_ms2xfswbr().b[
|
|
4398
|
+
(cov_ms2xfswbr().b[36][0]++, Buffer.from(await response.arrayBuffer())) :
|
|
4098
4399
|
/* istanbul ignore next */
|
|
4099
|
-
(cov_ms2xfswbr().b[
|
|
4400
|
+
(cov_ms2xfswbr().b[36][1]++, true));
|
|
4100
4401
|
/* istanbul ignore next */
|
|
4101
|
-
cov_ms2xfswbr().s[
|
|
4402
|
+
cov_ms2xfswbr().s[94]++;
|
|
4102
4403
|
terminal.writeDebugLine(`[http-build-cache] actual response: ${response.status} ${url} ${result === true ?
|
|
4103
4404
|
/* istanbul ignore next */
|
|
4104
|
-
(cov_ms2xfswbr().b[
|
|
4405
|
+
(cov_ms2xfswbr().b[37][0]++, 'true') :
|
|
4105
4406
|
/* istanbul ignore next */
|
|
4106
|
-
(cov_ms2xfswbr().b[
|
|
4407
|
+
(cov_ms2xfswbr().b[37][1]++, result.length)} bytes`);
|
|
4107
4408
|
/* istanbul ignore next */
|
|
4108
|
-
cov_ms2xfswbr().s[
|
|
4409
|
+
cov_ms2xfswbr().s[95]++;
|
|
4109
4410
|
return result;
|
|
4110
4411
|
}
|
|
4111
4412
|
async _tryGetCredentials(options) {
|
|
4112
4413
|
/* istanbul ignore next */
|
|
4113
4414
|
cov_ms2xfswbr().f[14]++;
|
|
4114
|
-
cov_ms2xfswbr().s[
|
|
4415
|
+
cov_ms2xfswbr().s[96]++;
|
|
4115
4416
|
if (options === CredentialsOptions.Omit) {
|
|
4116
4417
|
/* istanbul ignore next */
|
|
4117
|
-
cov_ms2xfswbr().b[
|
|
4118
|
-
cov_ms2xfswbr().s[
|
|
4418
|
+
cov_ms2xfswbr().b[38][0]++;
|
|
4419
|
+
cov_ms2xfswbr().s[97]++;
|
|
4119
4420
|
return;
|
|
4120
4421
|
} else
|
|
4121
4422
|
/* istanbul ignore next */
|
|
4122
4423
|
{
|
|
4123
|
-
cov_ms2xfswbr().b[
|
|
4424
|
+
cov_ms2xfswbr().b[38][1]++;
|
|
4124
4425
|
}
|
|
4125
4426
|
let credentials =
|
|
4126
4427
|
/* istanbul ignore next */
|
|
4127
|
-
(cov_ms2xfswbr().s[
|
|
4428
|
+
(cov_ms2xfswbr().s[98]++, this._environmentCredential);
|
|
4128
4429
|
/* istanbul ignore next */
|
|
4129
|
-
cov_ms2xfswbr().s[
|
|
4430
|
+
cov_ms2xfswbr().s[99]++;
|
|
4130
4431
|
if (credentials === undefined) {
|
|
4131
4432
|
/* istanbul ignore next */
|
|
4132
|
-
cov_ms2xfswbr().b[
|
|
4133
|
-
cov_ms2xfswbr().s[
|
|
4433
|
+
cov_ms2xfswbr().b[39][0]++;
|
|
4434
|
+
cov_ms2xfswbr().s[100]++;
|
|
4134
4435
|
credentials = await this._tryGetCredentialsFromCache();
|
|
4135
4436
|
} else
|
|
4136
4437
|
/* istanbul ignore next */
|
|
4137
4438
|
{
|
|
4138
|
-
cov_ms2xfswbr().b[
|
|
4439
|
+
cov_ms2xfswbr().b[39][1]++;
|
|
4139
4440
|
}
|
|
4140
|
-
cov_ms2xfswbr().s[
|
|
4441
|
+
cov_ms2xfswbr().s[101]++;
|
|
4141
4442
|
if (
|
|
4142
4443
|
/* istanbul ignore next */
|
|
4143
|
-
(cov_ms2xfswbr().b[
|
|
4444
|
+
(cov_ms2xfswbr().b[41][0]++, typeof credentials !== 'string') &&
|
|
4144
4445
|
/* istanbul ignore next */
|
|
4145
|
-
(cov_ms2xfswbr().b[
|
|
4446
|
+
(cov_ms2xfswbr().b[41][1]++, options === CredentialsOptions.Required)) {
|
|
4146
4447
|
/* istanbul ignore next */
|
|
4147
|
-
cov_ms2xfswbr().b[
|
|
4148
|
-
cov_ms2xfswbr().s[
|
|
4448
|
+
cov_ms2xfswbr().b[40][0]++;
|
|
4449
|
+
cov_ms2xfswbr().s[102]++;
|
|
4149
4450
|
throw new Error([`Credentials for ${this._url.href} have not been provided.`, `In CI, verify that RUSH_BUILD_CACHE_CREDENTIAL contains a valid Authorization header value.`, ``, `For local developers, run:`, ``, ` rush update-cloud-credentials --interactive`, ``].join('\n'));
|
|
4150
4451
|
} else
|
|
4151
4452
|
/* istanbul ignore next */
|
|
4152
4453
|
{
|
|
4153
|
-
cov_ms2xfswbr().b[
|
|
4454
|
+
cov_ms2xfswbr().b[40][1]++;
|
|
4154
4455
|
}
|
|
4155
|
-
cov_ms2xfswbr().s[
|
|
4456
|
+
cov_ms2xfswbr().s[103]++;
|
|
4156
4457
|
return credentials;
|
|
4157
4458
|
}
|
|
4158
4459
|
async _tryGetCredentialsFromCache() {
|
|
@@ -4161,75 +4462,75 @@ class HttpBuildCacheProvider {
|
|
|
4161
4462
|
var _a;
|
|
4162
4463
|
let cacheEntry;
|
|
4163
4464
|
/* istanbul ignore next */
|
|
4164
|
-
cov_ms2xfswbr().s[
|
|
4465
|
+
cov_ms2xfswbr().s[104]++;
|
|
4165
4466
|
await rush_sdk_1.CredentialCache.usingAsync({
|
|
4166
4467
|
supportEditing: false
|
|
4167
4468
|
}, credentialsCache => {
|
|
4168
4469
|
/* istanbul ignore next */
|
|
4169
4470
|
cov_ms2xfswbr().f[16]++;
|
|
4170
|
-
cov_ms2xfswbr().s[
|
|
4471
|
+
cov_ms2xfswbr().s[105]++;
|
|
4171
4472
|
cacheEntry = credentialsCache.tryGetCacheEntry(this._credentialCacheId);
|
|
4172
4473
|
});
|
|
4173
4474
|
/* istanbul ignore next */
|
|
4174
|
-
cov_ms2xfswbr().s[
|
|
4475
|
+
cov_ms2xfswbr().s[106]++;
|
|
4175
4476
|
if (cacheEntry) {
|
|
4176
4477
|
/* istanbul ignore next */
|
|
4177
|
-
cov_ms2xfswbr().b[
|
|
4478
|
+
cov_ms2xfswbr().b[42][0]++;
|
|
4178
4479
|
const expirationTime =
|
|
4179
4480
|
/* istanbul ignore next */
|
|
4180
|
-
(cov_ms2xfswbr().s[
|
|
4481
|
+
(cov_ms2xfswbr().s[107]++,
|
|
4181
4482
|
/* istanbul ignore next */
|
|
4182
|
-
(cov_ms2xfswbr().b[
|
|
4483
|
+
(cov_ms2xfswbr().b[44][0]++, (_a = cacheEntry.expires) === null) ||
|
|
4183
4484
|
/* istanbul ignore next */
|
|
4184
|
-
(cov_ms2xfswbr().b[
|
|
4485
|
+
(cov_ms2xfswbr().b[44][1]++, _a === void 0) ?
|
|
4185
4486
|
/* istanbul ignore next */
|
|
4186
|
-
(cov_ms2xfswbr().b[
|
|
4487
|
+
(cov_ms2xfswbr().b[43][0]++, void 0) :
|
|
4187
4488
|
/* istanbul ignore next */
|
|
4188
|
-
(cov_ms2xfswbr().b[
|
|
4489
|
+
(cov_ms2xfswbr().b[43][1]++, _a.getTime()));
|
|
4189
4490
|
/* istanbul ignore next */
|
|
4190
|
-
cov_ms2xfswbr().s[
|
|
4491
|
+
cov_ms2xfswbr().s[108]++;
|
|
4191
4492
|
if (
|
|
4192
4493
|
/* istanbul ignore next */
|
|
4193
|
-
(cov_ms2xfswbr().b[
|
|
4494
|
+
(cov_ms2xfswbr().b[46][0]++, !expirationTime) ||
|
|
4194
4495
|
/* istanbul ignore next */
|
|
4195
|
-
(cov_ms2xfswbr().b[
|
|
4496
|
+
(cov_ms2xfswbr().b[46][1]++, expirationTime >= Date.now())) {
|
|
4196
4497
|
/* istanbul ignore next */
|
|
4197
|
-
cov_ms2xfswbr().b[
|
|
4198
|
-
cov_ms2xfswbr().s[
|
|
4498
|
+
cov_ms2xfswbr().b[45][0]++;
|
|
4499
|
+
cov_ms2xfswbr().s[109]++;
|
|
4199
4500
|
return cacheEntry.credential;
|
|
4200
4501
|
} else
|
|
4201
4502
|
/* istanbul ignore next */
|
|
4202
4503
|
{
|
|
4203
|
-
cov_ms2xfswbr().b[
|
|
4504
|
+
cov_ms2xfswbr().b[45][1]++;
|
|
4204
4505
|
}
|
|
4205
4506
|
} else
|
|
4206
4507
|
/* istanbul ignore next */
|
|
4207
4508
|
{
|
|
4208
|
-
cov_ms2xfswbr().b[
|
|
4509
|
+
cov_ms2xfswbr().b[42][1]++;
|
|
4209
4510
|
}
|
|
4210
4511
|
}
|
|
4211
4512
|
_getFailureType(requestMethod, response, isRedirect) {
|
|
4212
4513
|
/* istanbul ignore next */
|
|
4213
4514
|
cov_ms2xfswbr().f[17]++;
|
|
4214
|
-
cov_ms2xfswbr().s[
|
|
4515
|
+
cov_ms2xfswbr().s[110]++;
|
|
4215
4516
|
if (response.ok) {
|
|
4216
4517
|
/* istanbul ignore next */
|
|
4217
|
-
cov_ms2xfswbr().b[
|
|
4218
|
-
cov_ms2xfswbr().s[
|
|
4518
|
+
cov_ms2xfswbr().b[47][0]++;
|
|
4519
|
+
cov_ms2xfswbr().s[111]++;
|
|
4219
4520
|
return FailureType.None;
|
|
4220
4521
|
} else
|
|
4221
4522
|
/* istanbul ignore next */
|
|
4222
4523
|
{
|
|
4223
|
-
cov_ms2xfswbr().b[
|
|
4524
|
+
cov_ms2xfswbr().b[47][1]++;
|
|
4224
4525
|
}
|
|
4225
|
-
cov_ms2xfswbr().s[
|
|
4526
|
+
cov_ms2xfswbr().s[112]++;
|
|
4226
4527
|
switch (response.status) {
|
|
4227
4528
|
case 503:
|
|
4228
4529
|
/* istanbul ignore next */
|
|
4229
|
-
cov_ms2xfswbr().b[
|
|
4530
|
+
cov_ms2xfswbr().b[48][0]++;
|
|
4230
4531
|
{
|
|
4231
4532
|
/* istanbul ignore next */
|
|
4232
|
-
cov_ms2xfswbr().s[
|
|
4533
|
+
cov_ms2xfswbr().s[113]++;
|
|
4233
4534
|
// We select 503 specifically because this represents "service unavailable" and
|
|
4234
4535
|
// "rate limit throttle" errors, which are transient issues.
|
|
4235
4536
|
//
|
|
@@ -4241,26 +4542,26 @@ class HttpBuildCacheProvider {
|
|
|
4241
4542
|
}
|
|
4242
4543
|
case 401:
|
|
4243
4544
|
/* istanbul ignore next */
|
|
4244
|
-
cov_ms2xfswbr().b[
|
|
4545
|
+
cov_ms2xfswbr().b[48][1]++;
|
|
4245
4546
|
case 403:
|
|
4246
4547
|
/* istanbul ignore next */
|
|
4247
|
-
cov_ms2xfswbr().b[
|
|
4548
|
+
cov_ms2xfswbr().b[48][2]++;
|
|
4248
4549
|
case 407:
|
|
4249
4550
|
/* istanbul ignore next */
|
|
4250
|
-
cov_ms2xfswbr().b[
|
|
4551
|
+
cov_ms2xfswbr().b[48][3]++;
|
|
4251
4552
|
{
|
|
4252
4553
|
/* istanbul ignore next */
|
|
4253
|
-
cov_ms2xfswbr().s[
|
|
4554
|
+
cov_ms2xfswbr().s[114]++;
|
|
4254
4555
|
if (
|
|
4255
4556
|
/* istanbul ignore next */
|
|
4256
|
-
(cov_ms2xfswbr().b[
|
|
4557
|
+
(cov_ms2xfswbr().b[50][0]++, requestMethod === 'GET') && (
|
|
4257
4558
|
/* istanbul ignore next */
|
|
4258
|
-
(cov_ms2xfswbr().b[
|
|
4559
|
+
(cov_ms2xfswbr().b[50][1]++, isRedirect) ||
|
|
4259
4560
|
/* istanbul ignore next */
|
|
4260
|
-
(cov_ms2xfswbr().b[
|
|
4561
|
+
(cov_ms2xfswbr().b[50][2]++, response.redirected))) {
|
|
4261
4562
|
/* istanbul ignore next */
|
|
4262
|
-
cov_ms2xfswbr().b[
|
|
4263
|
-
cov_ms2xfswbr().s[
|
|
4563
|
+
cov_ms2xfswbr().b[49][0]++;
|
|
4564
|
+
cov_ms2xfswbr().s[115]++;
|
|
4264
4565
|
// Cache misses for GET requests are not errors
|
|
4265
4566
|
// This is a workaround behavior where a server can issue a redirect and we fail to authenticate at the new location.
|
|
4266
4567
|
// We do not want to signal this as an authentication failure because the authorization header is not passed on to redirects.
|
|
@@ -4272,96 +4573,96 @@ class HttpBuildCacheProvider {
|
|
|
4272
4573
|
} else
|
|
4273
4574
|
/* istanbul ignore next */
|
|
4274
4575
|
{
|
|
4275
|
-
cov_ms2xfswbr().b[
|
|
4576
|
+
cov_ms2xfswbr().b[49][1]++;
|
|
4276
4577
|
}
|
|
4277
|
-
cov_ms2xfswbr().s[
|
|
4578
|
+
cov_ms2xfswbr().s[116]++;
|
|
4278
4579
|
return FailureType.Authentication;
|
|
4279
4580
|
}
|
|
4280
4581
|
case 404:
|
|
4281
4582
|
/* istanbul ignore next */
|
|
4282
|
-
cov_ms2xfswbr().b[
|
|
4583
|
+
cov_ms2xfswbr().b[48][4]++;
|
|
4283
4584
|
{
|
|
4284
4585
|
/* istanbul ignore next */
|
|
4285
|
-
cov_ms2xfswbr().s[
|
|
4586
|
+
cov_ms2xfswbr().s[117]++;
|
|
4286
4587
|
if (requestMethod === 'GET') {
|
|
4287
4588
|
/* istanbul ignore next */
|
|
4288
|
-
cov_ms2xfswbr().b[
|
|
4289
|
-
cov_ms2xfswbr().s[
|
|
4589
|
+
cov_ms2xfswbr().b[51][0]++;
|
|
4590
|
+
cov_ms2xfswbr().s[118]++;
|
|
4290
4591
|
// Cache misses for GET requests are not errors
|
|
4291
4592
|
return FailureType.None;
|
|
4292
4593
|
} else
|
|
4293
4594
|
/* istanbul ignore next */
|
|
4294
4595
|
{
|
|
4295
|
-
cov_ms2xfswbr().b[
|
|
4596
|
+
cov_ms2xfswbr().b[51][1]++;
|
|
4296
4597
|
}
|
|
4297
4598
|
}
|
|
4298
4599
|
}
|
|
4299
4600
|
// Let dev builds succeed, let Prod builds fail
|
|
4300
4601
|
/* istanbul ignore next */
|
|
4301
|
-
cov_ms2xfswbr().s[
|
|
4602
|
+
cov_ms2xfswbr().s[119]++;
|
|
4302
4603
|
return FailureType.Warning;
|
|
4303
4604
|
}
|
|
4304
4605
|
_reportFailure(terminal, requestMethod, response, isRedirect, message) {
|
|
4305
4606
|
/* istanbul ignore next */
|
|
4306
4607
|
cov_ms2xfswbr().f[18]++;
|
|
4307
|
-
cov_ms2xfswbr().s[
|
|
4608
|
+
cov_ms2xfswbr().s[120]++;
|
|
4308
4609
|
switch (this._getFailureType(requestMethod, response, isRedirect)) {
|
|
4309
4610
|
default:
|
|
4310
4611
|
/* istanbul ignore next */
|
|
4311
|
-
cov_ms2xfswbr().b[
|
|
4612
|
+
cov_ms2xfswbr().b[52][0]++;
|
|
4312
4613
|
{
|
|
4313
4614
|
/* istanbul ignore next */
|
|
4314
|
-
cov_ms2xfswbr().s[
|
|
4615
|
+
cov_ms2xfswbr().s[121]++;
|
|
4315
4616
|
terminal.writeErrorLine(`${message}: HTTP ${response.status}: ${response.statusText}`);
|
|
4316
4617
|
/* istanbul ignore next */
|
|
4317
|
-
cov_ms2xfswbr().s[
|
|
4618
|
+
cov_ms2xfswbr().s[122]++;
|
|
4318
4619
|
break;
|
|
4319
4620
|
}
|
|
4320
4621
|
case FailureType.Warning:
|
|
4321
4622
|
/* istanbul ignore next */
|
|
4322
|
-
cov_ms2xfswbr().b[
|
|
4623
|
+
cov_ms2xfswbr().b[52][1]++;
|
|
4323
4624
|
{
|
|
4324
4625
|
/* istanbul ignore next */
|
|
4325
|
-
cov_ms2xfswbr().s[
|
|
4626
|
+
cov_ms2xfswbr().s[123]++;
|
|
4326
4627
|
terminal.writeWarningLine(`${message}: HTTP ${response.status}: ${response.statusText}`);
|
|
4327
4628
|
/* istanbul ignore next */
|
|
4328
|
-
cov_ms2xfswbr().s[
|
|
4629
|
+
cov_ms2xfswbr().s[124]++;
|
|
4329
4630
|
break;
|
|
4330
4631
|
}
|
|
4331
4632
|
case FailureType.Informational:
|
|
4332
4633
|
/* istanbul ignore next */
|
|
4333
|
-
cov_ms2xfswbr().b[
|
|
4634
|
+
cov_ms2xfswbr().b[52][2]++;
|
|
4334
4635
|
{
|
|
4335
4636
|
/* istanbul ignore next */
|
|
4336
|
-
cov_ms2xfswbr().s[
|
|
4637
|
+
cov_ms2xfswbr().s[125]++;
|
|
4337
4638
|
terminal.writeLine(`${message}: HTTP ${response.status}: ${response.statusText}`);
|
|
4338
4639
|
/* istanbul ignore next */
|
|
4339
|
-
cov_ms2xfswbr().s[
|
|
4640
|
+
cov_ms2xfswbr().s[126]++;
|
|
4340
4641
|
break;
|
|
4341
4642
|
}
|
|
4342
4643
|
case FailureType.None:
|
|
4343
4644
|
/* istanbul ignore next */
|
|
4344
|
-
cov_ms2xfswbr().b[
|
|
4645
|
+
cov_ms2xfswbr().b[52][3]++;
|
|
4345
4646
|
{
|
|
4346
4647
|
/* istanbul ignore next */
|
|
4347
|
-
cov_ms2xfswbr().s[
|
|
4648
|
+
cov_ms2xfswbr().s[127]++;
|
|
4348
4649
|
terminal.writeDebugLine(`${message}: HTTP ${response.status}: ${response.statusText}`);
|
|
4349
4650
|
/* istanbul ignore next */
|
|
4350
|
-
cov_ms2xfswbr().s[
|
|
4651
|
+
cov_ms2xfswbr().s[128]++;
|
|
4351
4652
|
break;
|
|
4352
4653
|
}
|
|
4353
4654
|
case FailureType.Authentication:
|
|
4354
4655
|
/* istanbul ignore next */
|
|
4355
|
-
cov_ms2xfswbr().b[
|
|
4656
|
+
cov_ms2xfswbr().b[52][4]++;
|
|
4356
4657
|
{
|
|
4357
4658
|
/* istanbul ignore next */
|
|
4358
|
-
cov_ms2xfswbr().s[
|
|
4659
|
+
cov_ms2xfswbr().s[129]++;
|
|
4359
4660
|
throw new Error([`${this._url.href} responded with ${response.status}: ${response.statusText}.`, `Credentials may be misconfigured or have expired.`, `In CI, verify that RUSH_BUILD_CACHE_CREDENTIAL contains a valid Authorization header value.`, ``, `For local developers, run:`, ``, ` rush update-cloud-credentials --interactive`, ``].join('\n'));
|
|
4360
4661
|
}
|
|
4361
4662
|
}
|
|
4362
4663
|
}
|
|
4363
4664
|
}
|
|
4364
4665
|
/* istanbul ignore next */
|
|
4365
|
-
cov_ms2xfswbr().s[
|
|
4666
|
+
cov_ms2xfswbr().s[130]++;
|
|
4366
4667
|
exports.HttpBuildCacheProvider = HttpBuildCacheProvider;
|
|
4367
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QWMsQ0FBQyxHQUFHa0UsT0FBTyxVQUFVekIsUUFBUSxDQUFDTyxNQUFNLEtBQUtQLFFBQVEsQ0FBQzBCLFVBQVUsRUFBRSxDQUFDO1VBQUM7VUFBQW5IO1VBQ3ZGOztNQUdGLEtBQUtFLFdBQVcsQ0FBQzhHLGNBQWM7UUFBQTtRQUFBaEg7UUFBRTtVQUFBO1VBQUFBO1VBQy9CLE1BQU0sSUFBSTBELEtBQUssQ0FDYixDQUNFLEdBQUcsSUFBSSxDQUFDekMsSUFBSSxDQUFDMEMsSUFBSSxtQkFBbUI4QixRQUFRLENBQUNPLE1BQU0sS0FBS1AsUUFBUSxDQUFDMEIsVUFBVSxHQUFHLEVBQzlFLG1EQUFtRCxFQUNuRCw2RkFBNkYsRUFDN0YsRUFBRSxFQUNGLDRCQUE0QixFQUM1QixFQUFFLEVBQ0YsaURBQWlELEVBQ2pELEVBQUUsQ0FDSCxDQUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUNiOztJQUNGO0VBRUw7O0FBQ0Q7QUFBQS9EO0FBL1ZEb0giLCJuYW1lcyI6WyJjb3ZfbXMyeGZzd2JyIiwiQ3JlZGVudGlhbHNPcHRpb25zIiwiRmFpbHVyZVR5cGUiLCJIdHRwQnVpbGRDYWNoZVByb3ZpZGVyIiwiY29uc3RydWN0b3IiLCJvcHRpb25zIiwicnVzaFNlc3Npb24iLCJfcGx1Z2luTmFtZSIsInBsdWdpbk5hbWUiLCJfcnVzaFNlc3Npb24iLCJfcnVzaFByb2plY3RSb290IiwicnVzaFByb2plY3RSb290IiwiX2Vudmlyb25tZW50Q3JlZGVudGlhbCIsInJ1c2hfc2RrXzEiLCJidWlsZENhY2hlQ3JlZGVudGlhbCIsIl9pc0NhY2hlV3JpdGVBbGxvd2VkQnlDb25maWd1cmF0aW9uIiwiaXNDYWNoZVdyaXRlQWxsb3dlZCIsIl91cmwiLCJVUkwiLCJ1cmwiLCJlbmRzV2l0aCIsIl91cGxvYWRNZXRob2QiLCJ1cGxvYWRNZXRob2QiLCJfaGVhZGVycyIsImhlYWRlcnMiLCJfdG9rZW5IYW5kbGVyIiwidG9rZW5IYW5kbGVyIiwiX2NhY2hlS2V5UHJlZml4IiwiY2FjaGVLZXlQcmVmaXgiLCJidWlsZENhY2hlV3JpdGVBbGxvd2VkIiwidHJ5R2V0Q2FjaGVFbnRyeUJ1ZmZlckJ5SWRBc3luYyIsInRlcm1pbmFsIiwiY2FjaGVJZCIsInJlc3VsdCIsIl9odHRwIiwicmVsVXJsIiwibWV0aG9kIiwiYm9keSIsInVuZGVmaW5lZCIsIndhcm5pbmdUZXh0IiwicmVhZEJvZHkiLCJCdWZmZXIiLCJpc0J1ZmZlciIsImUiLCJ3cml0ZVdhcm5pbmdMaW5lIiwidHJ5U2V0Q2FjaGVFbnRyeUJ1ZmZlckFzeW5jIiwib2JqZWN0QnVmZmVyIiwid3JpdGVFcnJvckxpbmUiLCJ3cml0ZURlYnVnTGluZSIsInVwZGF0ZUNhY2hlZENyZWRlbnRpYWxBc3luYyIsImNyZWRlbnRpYWwiLCJ1c2luZ0FzeW5jIiwic3VwcG9ydEVkaXRpbmciLCJjcmVkZW50aWFsc0NhY2hlIiwic2V0Q2FjaGVFbnRyeSIsIl9jcmVkZW50aWFsQ2FjaGVJZCIsInNhdmVJZk1vZGlmaWVkQXN5bmMiLCJ1cGRhdGVDYWNoZWRDcmVkZW50aWFsSW50ZXJhY3RpdmVBc3luYyIsIkVycm9yIiwiaHJlZiIsImNtZCIsImV4ZWMiLCJhcmdzIiwiam9pbiIsIndyaXRlVmVyYm9zZUxpbmUiLCJub2RlX2NvcmVfbGlicmFyeV8xIiwic3Bhd25TeW5jIiwic3RkZXJyIiwiZXJyb3IiLCJzdGRvdXQiLCJ0cmltIiwid3JpdGVMaW5lIiwiZGVsZXRlQ2FjaGVkQ3JlZGVudGlhbHNBc3luYyIsImRlbGV0ZUNhY2hlRW50cnkiLCJfX2NyZWRlbnRpYWxDYWNoZUlkIiwiY2FjaGVJZFBhcnRzIiwicHVzaCIsImNyZWRlbnRpYWxPcHRpb25zIiwic2FmZUNyZWRlbnRpYWxPcHRpb25zIiwiT3B0aW9uYWwiLCJjcmVkZW50aWFscyIsIl90cnlHZXRDcmVkZW50aWFscyIsIkF1dGhvcml6YXRpb24iLCJrZXkiLCJ2YWx1ZSIsIk9iamVjdCIsImVudHJpZXMiLCJib2R5TGVuZ3RoIiwibGVuZ3RoIiwicmVzcG9uc2UiLCJyZWRpcmVjdCIsIm9rIiwiUmVxdWlyZWQiLCJfcmVwb3J0RmFpbHVyZSIsImZyb20iLCJhcnJheUJ1ZmZlciIsInN0YXR1cyIsIk9taXQiLCJfdHJ5R2V0Q3JlZGVudGlhbHNGcm9tQ2FjaGUiLCJjYWNoZUVudHJ5IiwidHJ5R2V0Q2FjaGVFbnRyeSIsImV4cGlyYXRpb25UaW1lIiwiZXhwaXJlcyIsImdldFRpbWUiLCJEYXRlIiwibm93IiwiX2dldEZhaWx1cmVUeXBlIiwicmVxdWVzdE1ldGhvZCIsImlzUmVkaXJlY3QiLCJOb25lIiwiSW5mb3JtYXRpb25hbCIsInJlZGlyZWN0ZWQiLCJBdXRoZW50aWNhdGlvbiIsIldhcm5pbmciLCJtZXNzYWdlIiwic3RhdHVzVGV4dCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIvaG9tZS92c3RzL3dvcmsvMS9zL3J1c2gtcGx1Z2lucy9ydXNoLWh0dHAtYnVpbGQtY2FjaGUtcGx1Z2luL3NyYy9IdHRwQnVpbGRDYWNoZVByb3ZpZGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElUZXJtaW5hbCwgRXhlY3V0YWJsZSB9IGZyb20gJ0BydXNoc3RhY2svbm9kZS1jb3JlLWxpYnJhcnknO1xuaW1wb3J0IHtcbiAgSUNsb3VkQnVpbGRDYWNoZVByb3ZpZGVyLFxuICBJQ3JlZGVudGlhbENhY2hlRW50cnksXG4gIENyZWRlbnRpYWxDYWNoZSxcbiAgUnVzaFNlc3Npb24sXG4gIEVudmlyb25tZW50Q29uZmlndXJhdGlvblxufSBmcm9tICdAcnVzaHN0YWNrL3J1c2gtc2RrJztcbmltcG9ydCBmZXRjaCwgeyBCb2R5SW5pdCwgUmVzcG9uc2UgfSBmcm9tICdub2RlLWZldGNoJztcblxuZW51bSBDcmVkZW50aWFsc09wdGlvbnMge1xuICBPcHRpb25hbCxcbiAgUmVxdWlyZWQsXG4gIE9taXRcbn1cblxuZW51bSBGYWlsdXJlVHlwZSB7XG4gIE5vbmUsXG4gIEluZm9ybWF0aW9uYWwsXG4gIFdhcm5pbmcsXG4gIEVycm9yLFxuICBBdXRoZW50aWNhdGlvblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElIdHRwQnVpbGRDYWNoZVRva2VuSGFuZGxlciB7XG4gIGV4ZWM6IHN0cmluZztcbiAgYXJncz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJSHR0cEJ1aWxkQ2FjaGVQcm92aWRlck9wdGlvbnMge1xuICB1cmw6IHN0cmluZztcbiAgdG9rZW5IYW5kbGVyPzogSUh0dHBCdWlsZENhY2hlVG9rZW5IYW5kbGVyO1xuICB1cGxvYWRNZXRob2Q/OiBzdHJpbmc7XG4gIGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBjYWNoZUtleVByZWZpeD86IHN0cmluZztcbiAgaXNDYWNoZVdyaXRlQWxsb3dlZDogYm9vbGVhbjtcbiAgcGx1Z2luTmFtZTogc3RyaW5nO1xuICBydXNoUHJvamVjdFJvb3Q6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEh0dHBCdWlsZENhY2hlUHJvdmlkZXIgaW1wbGVtZW50cyBJQ2xvdWRCdWlsZENhY2hlUHJvdmlkZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF9wbHVnaW5OYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3J1c2hTZXNzaW9uOiBSdXNoU2Vzc2lvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcnVzaFByb2plY3RSb290OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Vudmlyb25tZW50Q3JlZGVudGlhbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc0NhY2hlV3JpdGVBbGxvd2VkQnlDb25maWd1cmF0aW9uOiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IF91cmw6IFVSTDtcbiAgcHJpdmF0ZSByZWFkb25seSBfdXBsb2FkTWV0aG9kOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2hlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NhY2hlS2V5UHJlZml4OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Rva2VuSGFuZGxlcjogSUh0dHBCdWlsZENhY2hlVG9rZW5IYW5kbGVyIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF9fY3JlZGVudGlhbENhY2hlSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgZ2V0IGlzQ2FjaGVXcml0ZUFsbG93ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEVudmlyb25tZW50Q29uZmlndXJhdGlvbi5idWlsZENhY2hlV3JpdGVBbGxvd2VkID8/IHRoaXMuX2lzQ2FjaGVXcml0ZUFsbG93ZWRCeUNvbmZpZ3VyYXRpb247XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3Iob3B0aW9uczogSUh0dHBCdWlsZENhY2hlUHJvdmlkZXJPcHRpb25zLCBydXNoU2Vzc2lvbjogUnVzaFNlc3Npb24pIHtcbiAgICB0aGlzLl9wbHVnaW5OYW1lID0gb3B0aW9ucy5wbHVnaW5OYW1lO1xuICAgIHRoaXMuX3J1c2hTZXNzaW9uID0gcnVzaFNlc3Npb247XG4gICAgdGhpcy5fcnVzaFByb2plY3RSb290ID0gb3B0aW9ucy5ydXNoUHJvamVjdFJvb3Q7XG5cbiAgICB0aGlzLl9lbnZpcm9ubWVudENyZWRlbnRpYWwgPSBFbnZpcm9ubWVudENvbmZpZ3VyYXRpb24uYnVpbGRDYWNoZUNyZWRlbnRpYWw7XG4gICAgdGhpcy5faXNDYWNoZVdyaXRlQWxsb3dlZEJ5Q29uZmlndXJhdGlvbiA9IG9wdGlvbnMuaXNDYWNoZVdyaXRlQWxsb3dlZDtcbiAgICB0aGlzLl91cmwgPSBuZXcgVVJMKG9wdGlvbnMudXJsLmVuZHNXaXRoKCcvJykgPyBvcHRpb25zLnVybCA6IG9wdGlvbnMudXJsICsgJy8nKTtcbiAgICB0aGlzLl91cGxvYWRNZXRob2QgPSBvcHRpb25zLnVwbG9hZE1ldGhvZCA/PyAnUFVUJztcbiAgICB0aGlzLl9oZWFkZXJzID0gb3B0aW9ucy5oZWFkZXJzID8/IHt9O1xuICAgIHRoaXMuX3Rva2VuSGFuZGxlciA9IG9wdGlvbnMudG9rZW5IYW5kbGVyO1xuICAgIHRoaXMuX2NhY2hlS2V5UHJlZml4ID0gb3B0aW9ucy5jYWNoZUtleVByZWZpeCA/PyAnJztcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB0cnlHZXRDYWNoZUVudHJ5QnVmZmVyQnlJZEFzeW5jKFxuICAgIHRlcm1pbmFsOiBJVGVybWluYWwsXG4gICAgY2FjaGVJZDogc3RyaW5nXG4gICk6IFByb21pc2U8QnVmZmVyIHwgdW5kZWZpbmVkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuX2h0dHAoe1xuICAgICAgICB0ZXJtaW5hbDogdGVybWluYWwsXG4gICAgICAgIHJlbFVybDogYCR7dGhpcy5fY2FjaGVLZXlQcmVmaXh9JHtjYWNoZUlkfWAsXG4gICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgIGJvZHk6IHVuZGVmaW5lZCxcbiAgICAgICAgd2FybmluZ1RleHQ6ICdDb3VsZCBub3QgZ2V0IGNhY2hlIGVudHJ5JyxcbiAgICAgICAgcmVhZEJvZHk6IHRydWVcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gQnVmZmVyLmlzQnVmZmVyKHJlc3VsdCkgPyByZXN1bHQgOiB1bmRlZmluZWQ7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGVybWluYWwud3JpdGVXYXJuaW5nTGluZShgRXJyb3IgZ2V0dGluZyBjYWNoZSBlbnRyeTogJHtlfWApO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdHJ5U2V0Q2FjaGVFbnRyeUJ1ZmZlckFzeW5jKFxuICAgIHRlcm1pbmFsOiBJVGVybWluYWwsXG4gICAgY2FjaGVJZDogc3RyaW5nLFxuICAgIG9iamVjdEJ1ZmZlcjogQnVmZmVyXG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICghdGhpcy5pc0NhY2hlV3JpdGVBbGxvd2VkKSB7XG4gICAgICB0ZXJtaW5hbC53cml0ZUVycm9yTGluZSgnV3JpdGluZyB0byBjYWNoZSBpcyBub3QgYWxsb3dlZCBpbiB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLicpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHRlcm1pbmFsLndyaXRlRGVidWdMaW5lKCdVcGxvYWRpbmcgb2JqZWN0IHdpdGggY2FjaGVJZDogJywgY2FjaGVJZCk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5faHR0cCh7XG4gICAgICAgIHRlcm1pbmFsOiB0ZXJtaW5hbCxcbiAgICAgICAgcmVsVXJsOiBgJHt0aGlzLl9jYWNoZUtleVByZWZpeH0ke2NhY2hlSWR9YCxcbiAgICAgICAgbWV0aG9kOiB0aGlzLl91cGxvYWRNZXRob2QsXG4gICAgICAgIGJvZHk6IG9iamVjdEJ1ZmZlcixcbiAgICAgICAgd2FybmluZ1RleHQ6ICdDb3VsZCBub3Qgd3JpdGUgY2FjaGUgZW50cnknLFxuICAgICAgICByZWFkQm9keTogZmFsc2VcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcmVzdWx0ICE9PSBmYWxzZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0ZXJtaW5hbC53cml0ZVdhcm5pbmdMaW5lKGBFcnJvciB1cGxvYWRpbmcgY2FjaGUgZW50cnk6ICR7ZX1gKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdXBkYXRlQ2FjaGVkQ3JlZGVudGlhbEFzeW5jKHRlcm1pbmFsOiBJVGVybWluYWwsIGNyZWRlbnRpYWw6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IENyZWRlbnRpYWxDYWNoZS51c2luZ0FzeW5jKFxuICAgICAge1xuICAgICAgICBzdXBwb3J0RWRpdGluZzogdHJ1ZVxuICAgICAgfSxcbiAgICAgIGFzeW5jIChjcmVkZW50aWFsc0NhY2hlOiBDcmVkZW50aWFsQ2FjaGUpID0+IHtcbiAgICAgICAgY3JlZGVudGlhbHNDYWNoZS5zZXRDYWNoZUVudHJ5KHRoaXMuX2NyZWRlbnRpYWxDYWNoZUlkLCB7XG4gICAgICAgICAgY3JlZGVudGlhbDogY3JlZGVudGlhbFxuICAgICAgICB9KTtcbiAgICAgICAgYXdhaXQgY3JlZGVudGlhbHNDYWNoZS5zYXZlSWZNb2RpZmllZEFzeW5jKCk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB1cGRhdGVDYWNoZWRDcmVkZW50aWFsSW50ZXJhY3RpdmVBc3luYyh0ZXJtaW5hbDogSVRlcm1pbmFsKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLl90b2tlbkhhbmRsZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFRoZSBpbnRlcmFjdGl2ZSBjbG91ZCBjcmVkZW50aWFscyBmbG93IGlzIG5vdCBjb25maWd1cmVkLlxcbmAgK1xuICAgICAgICAgIGBTZXQgdGhlICd0b2tlbkhhbmRsZXInIHNldHRpbmcgaW4gJ2NvbW1vbi9jb25maWcvcnVzaC1wbHVnaW5zLyR7dGhpcy5fcGx1Z2luTmFtZX0uanNvbicgdG8gYSBjb21tYW5kIHRoYXQgd3JpdGVzIHlvdXIgY3JlZGVudGlhbHMgdG8gc3RhbmRhcmQgb3V0cHV0IGFuZCBleGl0cyB3aXRoIGNvZGUgMCBgICtcbiAgICAgICAgICBgb3IgcHJvdmlkZSB5b3VyIGNyZWRlbnRpYWxzIHRvIHJ1c2ggdXNpbmcgdGhlIC0tY3JlZGVudGlhbCBmbGFnIGluc3RlYWQuIENyZWRlbnRpYWxzIG11c3QgYmUgdGhlIGAgK1xuICAgICAgICAgIGAnQXV0aG9yaXphdGlvbicgaGVhZGVyIGV4cGVjdGVkIGJ5ICR7dGhpcy5fdXJsLmhyZWZ9YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBjbWQ6IHN0cmluZyA9IGAke3RoaXMuX3Rva2VuSGFuZGxlci5leGVjfSAkeyh0aGlzLl90b2tlbkhhbmRsZXIuYXJncyB8fCBbXSkuam9pbignICcpfWA7XG4gICAgdGVybWluYWwud3JpdGVWZXJib3NlTGluZShgUnVubmluZyAnJHtjbWR9JyB0byBnZXQgY3JlZGVudGlhbHNgKTtcbiAgICBjb25zdCByZXN1bHQgPSBFeGVjdXRhYmxlLnNwYXduU3luYyh0aGlzLl90b2tlbkhhbmRsZXIuZXhlYywgdGhpcy5fdG9rZW5IYW5kbGVyLmFyZ3MgfHwgW10pO1xuXG4gICAgdGVybWluYWwud3JpdGVFcnJvckxpbmUocmVzdWx0LnN0ZGVycik7XG5cbiAgICBpZiAocmVzdWx0LmVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBvYnRhaW4gY3JlZGVudGlhbHMuIFRoZSBjb21tYW5kICcke2NtZH0nIGZhaWxlZC5gKTtcbiAgICB9XG5cbiAgICBjb25zdCBjcmVkZW50aWFsID0gcmVzdWx0LnN0ZG91dC50cmltKCk7XG4gICAgdGVybWluYWwud3JpdGVWZXJib3NlTGluZSgnR290IGNyZWRlbnRpYWxzJyk7XG5cbiAgICBhd2FpdCB0aGlzLnVwZGF0ZUNhY2hlZENyZWRlbnRpYWxBc3luYyh0ZXJtaW5hbCwgY3JlZGVudGlhbCk7XG5cbiAgICB0ZXJtaW5hbC53cml0ZUxpbmUoJ1VwZGF0ZWQgY3JlZGVudGlhbHMgY2FjaGUnKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkZWxldGVDYWNoZWRDcmVkZW50aWFsc0FzeW5jKHRlcm1pbmFsOiBJVGVybWluYWwpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBDcmVkZW50aWFsQ2FjaGUudXNpbmdBc3luYyhcbiAgICAgIHtcbiAgICAgICAgc3VwcG9ydEVkaXRpbmc6IHRydWVcbiAgICAgIH0sXG4gICAgICBhc3luYyAoY3JlZGVudGlhbHNDYWNoZTogQ3JlZGVudGlhbENhY2hlKSA9PiB7XG4gICAgICAgIGNyZWRlbnRpYWxzQ2FjaGUuZGVsZXRlQ2FjaGVFbnRyeSh0aGlzLl9jcmVkZW50aWFsQ2FjaGVJZCk7XG4gICAgICAgIGF3YWl0IGNyZWRlbnRpYWxzQ2FjaGUuc2F2ZUlmTW9kaWZpZWRBc3luYygpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldCBfY3JlZGVudGlhbENhY2hlSWQoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuX19jcmVkZW50aWFsQ2FjaGVJZCkge1xuICAgICAgY29uc3QgY2FjaGVJZFBhcnRzOiBzdHJpbmdbXSA9IFt0aGlzLl91cmwuaHJlZl07XG5cbiAgICAgIGlmICh0aGlzLl9pc0NhY2hlV3JpdGVBbGxvd2VkQnlDb25maWd1cmF0aW9uKSB7XG4gICAgICAgIGNhY2hlSWRQYXJ0cy5wdXNoKCdjYWNoZVdyaXRlQWxsb3dlZCcpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9fY3JlZGVudGlhbENhY2hlSWQgPSBjYWNoZUlkUGFydHMuam9pbignfCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9fY3JlZGVudGlhbENhY2hlSWQ7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9odHRwKG9wdGlvbnM6IHtcbiAgICB0ZXJtaW5hbDogSVRlcm1pbmFsO1xuICAgIHJlbFVybDogc3RyaW5nO1xuICAgIG1ldGhvZDogc3RyaW5nO1xuICAgIGJvZHk6IEJvZHlJbml0IHwgdW5kZWZpbmVkO1xuICAgIHdhcm5pbmdUZXh0OiBzdHJpbmc7XG4gICAgcmVhZEJvZHk6IGJvb2xlYW47XG4gICAgY3JlZGVudGlhbE9wdGlvbnM/OiBDcmVkZW50aWFsc09wdGlvbnM7XG4gIH0pOiBQcm9taXNlPEJ1ZmZlciB8IGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IHRlcm1pbmFsLCByZWxVcmwsIG1ldGhvZCwgYm9keSwgd2FybmluZ1RleHQsIHJlYWRCb2R5LCBjcmVkZW50aWFsT3B0aW9ucyB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBzYWZlQ3JlZGVudGlhbE9wdGlvbnMgPSBjcmVkZW50aWFsT3B0aW9ucyA/PyBDcmVkZW50aWFsc09wdGlvbnMuT3B0aW9uYWw7XG4gICAgY29uc3QgY3JlZGVudGlhbHMgPSBhd2FpdCB0aGlzLl90cnlHZXRDcmVkZW50aWFscyhzYWZlQ3JlZGVudGlhbE9wdGlvbnMpO1xuICAgIGNvbnN0IHVybCA9IG5ldyBVUkwocmVsVXJsLCB0aGlzLl91cmwpLmhyZWY7XG5cbiAgICBjb25zdCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gICAgaWYgKHR5cGVvZiBjcmVkZW50aWFscyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGhlYWRlcnMuQXV0aG9yaXphdGlvbiA9IGNyZWRlbnRpYWxzO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuX2hlYWRlcnMpKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICBoZWFkZXJzW2tleV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBib2R5TGVuZ3RoID0gKGJvZHkgYXMgeyBsZW5ndGg6IG51bWJlciB9KT8ubGVuZ3RoIHx8ICd1bmtub3duJztcblxuICAgIHRlcm1pbmFsLndyaXRlRGVidWdMaW5lKGBbaHR0cC1idWlsZC1jYWNoZV0gcmVxdWVzdDogJHttZXRob2R9ICR7dXJsfSAke2JvZHlMZW5ndGh9IGJ5dGVzYCk7XG5cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCwge1xuICAgICAgbWV0aG9kOiBtZXRob2QsXG4gICAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgICAgYm9keTogYm9keSxcbiAgICAgIHJlZGlyZWN0OiAnZm9sbG93J1xuICAgIH0pO1xuXG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgaWYgKHR5cGVvZiBjcmVkZW50aWFscyAhPT0gJ3N0cmluZycgJiYgc2FmZUNyZWRlbnRpYWxPcHRpb25zID09PSBDcmVkZW50aWFsc09wdGlvbnMuT3B0aW9uYWwpIHtcbiAgICAgICAgLy8gV2UgdHJpZWQgZmV0Y2hpbmcgdGhlIHJlc291cmNlIHdpdGhvdXQgY3JlZGVudGlhbHMgYW5kIHRoYXQgZGlkIG5vdCB3b3JrIG91dFxuICAgICAgICAvLyBUcnkgYWdhaW4gYnV0IHJlcXVpcmUgY3JlZGVudGlhbHMgdGhpcyB0aW1lXG4gICAgICAgIC8vIFRoaXMgd2lsbCB0cmlnZ2VyIHRoZSBwcm92aWRlciB0byByZXF1ZXN0IGNyZWRlbnRpYWxzXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLl9odHRwKHsgLi4ub3B0aW9ucywgY3JlZGVudGlhbE9wdGlvbnM6IENyZWRlbnRpYWxzT3B0aW9ucy5SZXF1aXJlZCB9KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fcmVwb3J0RmFpbHVyZSh0ZXJtaW5hbCwgbWV0aG9kLCByZXNwb25zZSwgZmFsc2UsIHdhcm5pbmdUZXh0KTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQ6IEJ1ZmZlciB8IGJvb2xlYW4gPSByZWFkQm9keSA/IEJ1ZmZlci5mcm9tKGF3YWl0IHJlc3BvbnNlLmFycmF5QnVmZmVyKCkpIDogdHJ1ZTtcblxuICAgIHRlcm1pbmFsLndyaXRlRGVidWdMaW5lKFxuICAgICAgYFtodHRwLWJ1aWxkLWNhY2hlXSBhY3R1YWwgcmVzcG9uc2U6ICR7cmVzcG9uc2Uuc3RhdHVzfSAke3VybH0gJHtcbiAgICAgICAgcmVzdWx0ID09PSB0cnVlID8gJ3RydWUnIDogcmVzdWx0Lmxlbmd0aFxuICAgICAgfSBieXRlc2BcbiAgICApO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX3RyeUdldENyZWRlbnRpYWxzKG9wdGlvbnM6IENyZWRlbnRpYWxzT3B0aW9ucy5SZXF1aXJlZCk6IFByb21pc2U8c3RyaW5nPjtcbiAgcHJpdmF0ZSBhc3luYyBfdHJ5R2V0Q3JlZGVudGlhbHMob3B0aW9uczogQ3JlZGVudGlhbHNPcHRpb25zLk9wdGlvbmFsKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+O1xuICBwcml2YXRlIGFzeW5jIF90cnlHZXRDcmVkZW50aWFscyhvcHRpb25zOiBDcmVkZW50aWFsc09wdGlvbnMuT21pdCk6IFByb21pc2U8dW5kZWZpbmVkPjtcbiAgcHJpdmF0ZSBhc3luYyBfdHJ5R2V0Q3JlZGVudGlhbHMob3B0aW9uczogQ3JlZGVudGlhbHNPcHRpb25zKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+O1xuICBwcml2YXRlIGFzeW5jIF90cnlHZXRDcmVkZW50aWFscyhvcHRpb25zOiBDcmVkZW50aWFsc09wdGlvbnMpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIGlmIChvcHRpb25zID09PSBDcmVkZW50aWFsc09wdGlvbnMuT21pdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjcmVkZW50aWFsczogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGhpcy5fZW52aXJvbm1lbnRDcmVkZW50aWFsO1xuXG4gICAgaWYgKGNyZWRlbnRpYWxzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNyZWRlbnRpYWxzID0gYXdhaXQgdGhpcy5fdHJ5R2V0Q3JlZGVudGlhbHNGcm9tQ2FjaGUoKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGNyZWRlbnRpYWxzICE9PSAnc3RyaW5nJyAmJiBvcHRpb25zID09PSBDcmVkZW50aWFsc09wdGlvbnMuUmVxdWlyZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgW1xuICAgICAgICAgIGBDcmVkZW50aWFscyBmb3IgJHt0aGlzLl91cmwuaHJlZn0gaGF2ZSBub3QgYmVlbiBwcm92aWRlZC5gLFxuICAgICAgICAgIGBJbiBDSSwgdmVyaWZ5IHRoYXQgUlVTSF9CVUlMRF9DQUNIRV9DUkVERU5USUFMIGNvbnRhaW5zIGEgdmFsaWQgQXV0aG9yaXphdGlvbiBoZWFkZXIgdmFsdWUuYCxcbiAgICAgICAgICBgYCxcbiAgICAgICAgICBgRm9yIGxvY2FsIGRldmVsb3BlcnMsIHJ1bjpgLFxuICAgICAgICAgIGBgLFxuICAgICAgICAgIGAgICAgcnVzaCB1cGRhdGUtY2xvdWQtY3JlZGVudGlhbHMgLS1pbnRlcmFjdGl2ZWAsXG4gICAgICAgICAgYGBcbiAgICAgICAgXS5qb2luKCdcXG4nKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY3JlZGVudGlhbHM7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF90cnlHZXRDcmVkZW50aWFsc0Zyb21DYWNoZSgpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIGxldCBjYWNoZUVudHJ5OiBJQ3JlZGVudGlhbENhY2hlRW50cnkgfCB1bmRlZmluZWQ7XG5cbiAgICBhd2FpdCBDcmVkZW50aWFsQ2FjaGUudXNpbmdBc3luYyhcbiAgICAgIHtcbiAgICAgICAgc3VwcG9ydEVkaXRpbmc6IGZhbHNlXG4gICAgICB9LFxuICAgICAgKGNyZWRlbnRpYWxzQ2FjaGU6IENyZWRlbnRpYWxDYWNoZSkgPT4ge1xuICAgICAgICBjYWNoZUVudHJ5ID0gY3JlZGVudGlhbHNDYWNoZS50cnlHZXRDYWNoZUVudHJ5KHRoaXMuX2NyZWRlbnRpYWxDYWNoZUlkKTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgaWYgKGNhY2hlRW50cnkpIHtcbiAgICAgIGNvbnN0IGV4cGlyYXRpb25UaW1lOiBudW1iZXIgfCB1bmRlZmluZWQgPSBjYWNoZUVudHJ5LmV4cGlyZXM/LmdldFRpbWUoKTtcbiAgICAgIGlmICghZXhwaXJhdGlvblRpbWUgfHwgZXhwaXJhdGlvblRpbWUgPj0gRGF0ZS5ub3coKSkge1xuICAgICAgICByZXR1cm4gY2FjaGVFbnRyeS5jcmVkZW50aWFsO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2dldEZhaWx1cmVUeXBlKHJlcXVlc3RNZXRob2Q6IHN0cmluZywgcmVzcG9uc2U6IFJlc3BvbnNlLCBpc1JlZGlyZWN0OiBib29sZWFuKTogRmFpbHVyZVR5cGUge1xuICAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgcmV0dXJuIEZhaWx1cmVUeXBlLk5vbmU7XG4gICAgfVxuXG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgNTAzOiB7XG4gICAgICAgIC8vIFdlIHNlbGVjdCA1MDMgc3BlY2lmaWNhbGx5IGJlY2F1c2UgdGhpcyByZXByZXNlbnRzIFwic2VydmljZSB1bmF2YWlsYWJsZVwiIGFuZFxuICAgICAgICAvLyBcInJhdGUgbGltaXQgdGhyb3R0bGVcIiBlcnJvcnMsIHdoaWNoIGFyZSB0cmFuc2llbnQgaXNzdWVzLlxuICAgICAgICAvL1xuICAgICAgICAvLyBUaGVyZSBhcmUgb3RoZXIgNXh4IGVycm9ycywgc3VjaCBhcyA1MDEsIHRoYXQgY2FuIG9jY3VyIGlmIHRoZSByZXF1ZXN0IGlzXG4gICAgICAgIC8vIG1hbGZvcm1lZCwgc28gYXMgYSBnZW5lcmFsIHJ1bGUgd2Ugd2FudCB0byBsZXQgdGhyb3VnaCBvdGhlciA1eHggZXJyb3JzXG4gICAgICAgIC8vIHNvIHRoZSB1c2VyIGNhbiB0cm91Ymxlc2hvb3QuXG5cbiAgICAgICAgLy8gRG9uJ3QgZmFpbCBwcm9kdWN0aW9uIGJ1aWxkcyB3aXRoIHdhcm5pbmdzIGZvciB0cmFuc2llbnQgaXNzdWVzXG4gICAgICAgIHJldHVybiBGYWlsdXJlVHlwZS5JbmZvcm1hdGlvbmFsO1xuICAgICAgfVxuXG4gICAgICBjYXNlIDQwMTpcbiAgICAgIGNhc2UgNDAzOlxuICAgICAgY2FzZSA0MDc6IHtcbiAgICAgICAgaWYgKHJlcXVlc3RNZXRob2QgPT09ICdHRVQnICYmIChpc1JlZGlyZWN0IHx8IHJlc3BvbnNlLnJlZGlyZWN0ZWQpKSB7XG4gICAgICAgICAgLy8gQ2FjaGUgbWlzc2VzIGZvciBHRVQgcmVxdWVzdHMgYXJlIG5vdCBlcnJvcnNcbiAgICAgICAgICAvLyBUaGlzIGlzIGEgd29ya2Fyb3VuZCBiZWhhdmlvciB3aGVyZSBhIHNlcnZlciBjYW4gaXNzdWUgYSByZWRpcmVjdCBhbmQgd2UgZmFpbCB0byBhdXRoZW50aWNhdGUgYXQgdGhlIG5ldyBsb2NhdGlvbi5cbiAgICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBzaWduYWwgdGhpcyBhcyBhbiBhdXRoZW50aWNhdGlvbiBmYWlsdXJlIGJlY2F1c2UgdGhlIGF1dGhvcml6YXRpb24gaGVhZGVyIGlzIG5vdCBwYXNzZWQgb24gdG8gcmVkaXJlY3RzLlxuICAgICAgICAgIC8vIGkuZSBUaGUgYXV0aGVudGljYXRpb24gaGVhZGVyIHdhcyBhY2NlcHRlZCBmb3IgdGhlIGZpcnN0IHJlcXVlc3QgYW5kIHRoZXJlZm9yZSBzdWJzZXF1ZW50IGZhaWx1cmVzXG4gICAgICAgICAgLy8gd2hlcmUgaXQgd2FzIG5vdCBwcmVzZW50IHNob3VsZCBub3QgYmUgYXR0cmlidXRlZCB0byB0aGUgaGVhZGVyLlxuICAgICAgICAgIC8vIFRoaXMgc2NlbmFyaW8gdXN1YWxseSBjb21lcyB1cCB3aXRoIHNlcnZpY2VzIHRoYXQgcmVkaXJlY3QgdG8gcHJlLXNpZ25lZCBVUkxTIHRoYXQgZG9uJ3QgYWN0dWFsbHkgZXhpc3QuXG4gICAgICAgICAgLy8gVGhvc2Ugc2VydmljZXMgdGhlbiB1c3VhbGx5IHRyZWF0IHRoZSA0MDQgYXMgYSA0MDMgdG8gcHJldmVudCBsZWFraW5nIGluZm9ybWF0aW9uLlxuICAgICAgICAgIHJldHVybiBGYWlsdXJlVHlwZS5Ob25lO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIEZhaWx1cmVUeXBlLkF1dGhlbnRpY2F0aW9uO1xuICAgICAgfVxuXG4gICAgICBjYXNlIDQwNDoge1xuICAgICAgICBpZiAocmVxdWVzdE1ldGhvZCA9PT0gJ0dFVCcpIHtcbiAgICAgICAgICAvLyBDYWNoZSBtaXNzZXMgZm9yIEdFVCByZXF1ZXN0cyBhcmUgbm90IGVycm9yc1xuICAgICAgICAgIHJldHVybiBGYWlsdXJlVHlwZS5Ob25lO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTGV0IGRldiBidWlsZHMgc3VjY2VlZCwgbGV0IFByb2QgYnVpbGRzIGZhaWxcbiAgICByZXR1cm4gRmFpbHVyZVR5cGUuV2FybmluZztcbiAgfVxuXG4gIHByaXZhdGUgX3JlcG9ydEZhaWx1cmUoXG4gICAgdGVybWluYWw6IElUZXJtaW5hbCxcbiAgICByZXF1ZXN0TWV0aG9kOiBzdHJpbmcsXG4gICAgcmVzcG9uc2U6IFJlc3BvbnNlLFxuICAgIGlzUmVkaXJlY3Q6IGJvb2xlYW4sXG4gICAgbWVzc2FnZTogc3RyaW5nXG4gICk6IHZvaWQge1xuICAgIHN3aXRjaCAodGhpcy5fZ2V0RmFpbHVyZVR5cGUocmVxdWVzdE1ldGhvZCwgcmVzcG9uc2UsIGlzUmVkaXJlY3QpKSB7XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHRlcm1pbmFsLndyaXRlRXJyb3JMaW5lKGAke21lc3NhZ2V9OiBIVFRQICR7cmVzcG9uc2Uuc3RhdHVzfTogJHtyZXNwb25zZS5zdGF0dXNUZXh0fWApO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSBGYWlsdXJlVHlwZS5XYXJuaW5nOiB7XG4gICAgICAgIHRlcm1pbmFsLndyaXRlV2FybmluZ0xpbmUoYCR7bWVzc2FnZX06IEhUVFAgJHtyZXNwb25zZS5zdGF0dXN9OiAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIEZhaWx1cmVUeXBlLkluZm9ybWF0aW9uYWw6IHtcbiAgICAgICAgdGVybWluYWwud3JpdGVMaW5lKGAke21lc3NhZ2V9OiBIVFRQICR7cmVzcG9uc2Uuc3RhdHVzfTogJHtyZXNwb25zZS5zdGF0dXNUZXh0fWApO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSBGYWlsdXJlVHlwZS5Ob25lOiB7XG4gICAgICAgIHRlcm1pbmFsLndyaXRlRGVidWdMaW5lKGAke21lc3NhZ2V9OiBIVFRQICR7cmVzcG9uc2Uuc3RhdHVzfTogJHtyZXNwb25zZS5zdGF0dXNUZXh0fWApO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSBGYWlsdXJlVHlwZS5BdXRoZW50aWNhdGlvbjoge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgW1xuICAgICAgICAgICAgYCR7dGhpcy5fdXJsLmhyZWZ9IHJlc3BvbmRlZCB3aXRoICR7cmVzcG9uc2Uuc3RhdHVzfTogJHtyZXNwb25zZS5zdGF0dXNUZXh0fS5gLFxuICAgICAgICAgICAgYENyZWRlbnRpYWxzIG1heSBiZSBtaXNjb25maWd1cmVkIG9yIGhhdmUgZXhwaXJlZC5gLFxuICAgICAgICAgICAgYEluIENJLCB2ZXJpZnkgdGhhdCBSVVNIX0JVSUxEX0NBQ0hFX0NSRURFTlRJQUwgY29udGFpbnMgYSB2YWxpZCBBdXRob3JpemF0aW9uIGhlYWRlciB2YWx1ZS5gLFxuICAgICAgICAgICAgYGAsXG4gICAgICAgICAgICBgRm9yIGxvY2FsIGRldmVsb3BlcnMsIHJ1bjpgLFxuICAgICAgICAgICAgYGAsXG4gICAgICAgICAgICBgICAgIHJ1c2ggdXBkYXRlLWNsb3VkLWNyZWRlbnRpYWxzIC0taW50ZXJhY3RpdmVgLFxuICAgICAgICAgICAgYGBcbiAgICAgICAgICBdLmpvaW4oJ1xcbicpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
4668
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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VyxDQUFDMEgsY0FBYztRQUFBO1FBQUE7UUFBRTtVQUFBO1VBQUE7VUFDL0IsTUFBTSxJQUFJN0QsS0FBSyxDQUNiLENBQ0UsR0FBRyxJQUFJLENBQUM1QyxJQUFJLENBQUM2QyxJQUFJLG1CQUFtQjhCLFFBQVEsQ0FBQ0ksTUFBTSxLQUFLSixRQUFRLENBQUNpQyxVQUFVLEdBQUcsRUFDOUUsbURBQW1ELEVBQ25ELDZGQUE2RixFQUM3RixFQUFFLEVBQ0YsNEJBQTRCLEVBQzVCLEVBQUUsRUFDRixpREFBaUQsRUFDakQsRUFBRSxDQUNILENBQUMzRCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQ2I7O0lBQ0Y7RUFFTDs7QUFDRDtBQUFBO0FBeFhENEQiLCJuYW1lcyI6WyJDcmVkZW50aWFsc09wdGlvbnMiLCJGYWlsdXJlVHlwZSIsIk1BWF9IVFRQX0NBQ0hFX0FUVEVNUFRTIiwiREVGQVVMVF9NSU5fSFRUUF9SRVRSWV9ERUxBWV9NUyIsIkh0dHBCdWlsZENhY2hlUHJvdmlkZXIiLCJjb25zdHJ1Y3RvciIsIm9wdGlvbnMiLCJydXNoU2Vzc2lvbiIsIl9wbHVnaW5OYW1lIiwicGx1Z2luTmFtZSIsIl9ydXNoU2Vzc2lvbiIsIl9ydXNoUHJvamVjdFJvb3QiLCJydXNoUHJvamVjdFJvb3QiLCJfZW52aXJvbm1lbnRDcmVkZW50aWFsIiwicnVzaF9zZGtfMSIsImJ1aWxkQ2FjaGVDcmVkZW50aWFsIiwiX2lzQ2FjaGVXcml0ZUFsbG93ZWRCeUNvbmZpZ3VyYXRpb24iLCJpc0NhY2hlV3JpdGVBbGxvd2VkIiwiX3VybCIsIlVSTCIsInVybCIsImVuZHNXaXRoIiwiX3VwbG9hZE1ldGhvZCIsInVwbG9hZE1ldGhvZCIsIl9oZWFkZXJzIiwiaGVhZGVycyIsIl90b2tlbkhhbmRsZXIiLCJ0b2tlbkhhbmRsZXIiLCJfY2FjaGVLZXlQcmVmaXgiLCJjYWNoZUtleVByZWZpeCIsIl9taW5IdHRwUmV0cnlEZWxheU1zIiwibWluSHR0cFJldHJ5RGVsYXlNcyIsImJ1aWxkQ2FjaGVXcml0ZUFsbG93ZWQiLCJ0cnlHZXRDYWNoZUVudHJ5QnVmZmVyQnlJZEFzeW5jIiwidGVybWluYWwiLCJjYWNoZUlkIiwicmVzdWx0IiwiX2h0dHAiLCJyZWxVcmwiLCJtZXRob2QiLCJib2R5IiwidW5kZWZpbmVkIiwid2FybmluZ1RleHQiLCJyZWFkQm9keSIsIm1heEF0dGVtcHRzIiwiQnVmZmVyIiwiaXNCdWZmZXIiLCJlIiwid3JpdGVXYXJuaW5nTGluZSIsInRyeVNldENhY2hlRW50cnlCdWZmZXJBc3luYyIsIm9iamVjdEJ1ZmZlciIsIndyaXRlRXJyb3JMaW5lIiwid3JpdGVEZWJ1Z0xpbmUiLCJ1cGRhdGVDYWNoZWRDcmVkZW50aWFsQXN5bmMiLCJjcmVkZW50aWFsIiwidXNpbmdBc3luYyIsInN1cHBvcnRFZGl0aW5nIiwiY3JlZGVudGlhbHNDYWNoZSIsInNldENhY2hlRW50cnkiLCJfY3JlZGVudGlhbENhY2hlSWQiLCJzYXZlSWZNb2RpZmllZEFzeW5jIiwidXBkYXRlQ2FjaGVkQ3JlZGVudGlhbEludGVyYWN0aXZlQXN5bmMiLCJFcnJvciIsImhyZWYiLCJjbWQiLCJleGVjIiwiYXJncyIsImpvaW4iLCJ3cml0ZVZlcmJvc2VMaW5lIiwibm9kZV9jb3JlX2xpYnJhcnlfMSIsInNwYXduU3luYyIsInN0ZGVyciIsImVycm9yIiwic3Rkb3V0IiwidHJpbSIsIndyaXRlTGluZSIsImRlbGV0ZUNhY2hlZENyZWRlbnRpYWxzQXN5bmMiLCJkZWxldGVDYWNoZUVudHJ5IiwiX19jcmVkZW50aWFsQ2FjaGVJZCIsImNhY2hlSWRQYXJ0cyIsInB1c2giLCJjcmVkZW50aWFsT3B0aW9ucyIsInNhZmVDcmVkZW50aWFsT3B0aW9ucyIsIk9wdGlvbmFsIiwiY3JlZGVudGlhbHMiLCJfdHJ5R2V0Q3JlZGVudGlhbHMiLCJBdXRob3JpemF0aW9uIiwia2V5IiwidmFsdWUiLCJPYmplY3QiLCJlbnRyaWVzIiwiYm9keUxlbmd0aCIsImxlbmd0aCIsInJlc3BvbnNlIiwicmVkaXJlY3QiLCJvayIsImlzTm9uQ3JlZGVudGlhbFJlc3BvbnNlIiwic3RhdHVzIiwiUmVxdWlyZWQiLCJmYWN0b3IiLCJNYXRoIiwicmFuZG9tIiwicmV0cnlEZWxheSIsImZsb29yIiwic2xlZXAiLCJfcmVwb3J0RmFpbHVyZSIsImZyb20iLCJhcnJheUJ1ZmZlciIsIk9taXQiLCJfdHJ5R2V0Q3JlZGVudGlhbHNGcm9tQ2FjaGUiLCJjYWNoZUVudHJ5IiwidHJ5R2V0Q2FjaGVFbnRyeSIsImV4cGlyYXRpb25UaW1lIiwiZXhwaXJlcyIsImdldFRpbWUiLCJEYXRlIiwibm93IiwiX2dldEZhaWx1cmVUeXBlIiwicmVxdWVzdE1ldGhvZCIsImlzUmVkaXJlY3QiLCJOb25lIiwiSW5mb3JtYXRpb25hbCIsInJlZGlyZWN0ZWQiLCJBdXRoZW50aWNhdGlvbiIsIldhcm5pbmciLCJtZXNzYWdlIiwic3RhdHVzVGV4dCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIvaG9tZS92c3RzL3dvcmsvMS9zL3J1c2gtcGx1Z2lucy9ydXNoLWh0dHAtYnVpbGQtY2FjaGUtcGx1Z2luL3NyYy9IdHRwQnVpbGRDYWNoZVByb3ZpZGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElUZXJtaW5hbCwgRXhlY3V0YWJsZSwgQXN5bmMgfSBmcm9tICdAcnVzaHN0YWNrL25vZGUtY29yZS1saWJyYXJ5JztcbmltcG9ydCB7XG4gIElDbG91ZEJ1aWxkQ2FjaGVQcm92aWRlcixcbiAgSUNyZWRlbnRpYWxDYWNoZUVudHJ5LFxuICBDcmVkZW50aWFsQ2FjaGUsXG4gIFJ1c2hTZXNzaW9uLFxuICBFbnZpcm9ubWVudENvbmZpZ3VyYXRpb25cbn0gZnJvbSAnQHJ1c2hzdGFjay9ydXNoLXNkayc7XG5pbXBvcnQgZmV0Y2gsIHsgQm9keUluaXQsIFJlc3BvbnNlIH0gZnJvbSAnbm9kZS1mZXRjaCc7XG5cbmVudW0gQ3JlZGVudGlhbHNPcHRpb25zIHtcbiAgT3B0aW9uYWwsXG4gIFJlcXVpcmVkLFxuICBPbWl0XG59XG5cbmVudW0gRmFpbHVyZVR5cGUge1xuICBOb25lLFxuICBJbmZvcm1hdGlvbmFsLFxuICBXYXJuaW5nLFxuICBFcnJvcixcbiAgQXV0aGVudGljYXRpb25cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJSHR0cEJ1aWxkQ2FjaGVUb2tlbkhhbmRsZXIge1xuICBleGVjOiBzdHJpbmc7XG4gIGFyZ3M/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUh0dHBCdWlsZENhY2hlUHJvdmlkZXJPcHRpb25zIHtcbiAgdXJsOiBzdHJpbmc7XG4gIHRva2VuSGFuZGxlcj86IElIdHRwQnVpbGRDYWNoZVRva2VuSGFuZGxlcjtcbiAgdXBsb2FkTWV0aG9kPzogc3RyaW5nO1xuICBtaW5IdHRwUmV0cnlEZWxheU1zPzogbnVtYmVyO1xuICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgY2FjaGVLZXlQcmVmaXg/OiBzdHJpbmc7XG4gIGlzQ2FjaGVXcml0ZUFsbG93ZWQ6IGJvb2xlYW47XG4gIHBsdWdpbk5hbWU6IHN0cmluZztcbiAgcnVzaFByb2plY3RSb290OiBzdHJpbmc7XG59XG5cbmNvbnN0IE1BWF9IVFRQX0NBQ0hFX0FUVEVNUFRTOiBudW1iZXIgPSAzO1xuY29uc3QgREVGQVVMVF9NSU5fSFRUUF9SRVRSWV9ERUxBWV9NUyA9IDI1MDA7XG5cbmV4cG9ydCBjbGFzcyBIdHRwQnVpbGRDYWNoZVByb3ZpZGVyIGltcGxlbWVudHMgSUNsb3VkQnVpbGRDYWNoZVByb3ZpZGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGx1Z2luTmFtZTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9ydXNoU2Vzc2lvbjogUnVzaFNlc3Npb247XG4gIHByaXZhdGUgcmVhZG9ubHkgX3J1c2hQcm9qZWN0Um9vdDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lbnZpcm9ubWVudENyZWRlbnRpYWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNDYWNoZVdyaXRlQWxsb3dlZEJ5Q29uZmlndXJhdGlvbjogYm9vbGVhbjtcbiAgcHJpdmF0ZSByZWFkb25seSBfdXJsOiBVUkw7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3VwbG9hZE1ldGhvZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9oZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9jYWNoZUtleVByZWZpeDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF90b2tlbkhhbmRsZXI6IElIdHRwQnVpbGRDYWNoZVRva2VuSGFuZGxlciB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWluSHR0cFJldHJ5RGVsYXlNczogbnVtYmVyO1xuICBwcml2YXRlIF9fY3JlZGVudGlhbENhY2hlSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgZ2V0IGlzQ2FjaGVXcml0ZUFsbG93ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEVudmlyb25tZW50Q29uZmlndXJhdGlvbi5idWlsZENhY2hlV3JpdGVBbGxvd2VkID8/IHRoaXMuX2lzQ2FjaGVXcml0ZUFsbG93ZWRCeUNvbmZpZ3VyYXRpb247XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3Iob3B0aW9uczogSUh0dHBCdWlsZENhY2hlUHJvdmlkZXJPcHRpb25zLCBydXNoU2Vzc2lvbjogUnVzaFNlc3Npb24pIHtcbiAgICB0aGlzLl9wbHVnaW5OYW1lID0gb3B0aW9ucy5wbHVnaW5OYW1lO1xuICAgIHRoaXMuX3J1c2hTZXNzaW9uID0gcnVzaFNlc3Npb247XG4gICAgdGhpcy5fcnVzaFByb2plY3RSb290ID0gb3B0aW9ucy5ydXNoUHJvamVjdFJvb3Q7XG5cbiAgICB0aGlzLl9lbnZpcm9ubWVudENyZWRlbnRpYWwgPSBFbnZpcm9ubWVudENvbmZpZ3VyYXRpb24uYnVpbGRDYWNoZUNyZWRlbnRpYWw7XG4gICAgdGhpcy5faXNDYWNoZVdyaXRlQWxsb3dlZEJ5Q29uZmlndXJhdGlvbiA9IG9wdGlvbnMuaXNDYWNoZVdyaXRlQWxsb3dlZDtcbiAgICB0aGlzLl91cmwgPSBuZXcgVVJMKG9wdGlvbnMudXJsLmVuZHNXaXRoKCcvJykgPyBvcHRpb25zLnVybCA6IG9wdGlvbnMudXJsICsgJy8nKTtcbiAgICB0aGlzLl91cGxvYWRNZXRob2QgPSBvcHRpb25zLnVwbG9hZE1ldGhvZCA/PyAnUFVUJztcbiAgICB0aGlzLl9oZWFkZXJzID0gb3B0aW9ucy5oZWFkZXJzID8/IHt9O1xuICAgIHRoaXMuX3Rva2VuSGFuZGxlciA9IG9wdGlvbnMudG9rZW5IYW5kbGVyO1xuICAgIHRoaXMuX2NhY2hlS2V5UHJlZml4ID0gb3B0aW9ucy5jYWNoZUtleVByZWZpeCA/PyAnJztcbiAgICB0aGlzLl9taW5IdHRwUmV0cnlEZWxheU1zID0gb3B0aW9ucy5taW5IdHRwUmV0cnlEZWxheU1zID8/IERFRkFVTFRfTUlOX0hUVFBfUkVUUllfREVMQVlfTVM7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdHJ5R2V0Q2FjaGVFbnRyeUJ1ZmZlckJ5SWRBc3luYyhcbiAgICB0ZXJtaW5hbDogSVRlcm1pbmFsLFxuICAgIGNhY2hlSWQ6IHN0cmluZ1xuICApOiBQcm9taXNlPEJ1ZmZlciB8IHVuZGVmaW5lZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLl9odHRwKHtcbiAgICAgICAgdGVybWluYWw6IHRlcm1pbmFsLFxuICAgICAgICByZWxVcmw6IGAke3RoaXMuX2NhY2hlS2V5UHJlZml4fSR7Y2FjaGVJZH1gLFxuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICBib2R5OiB1bmRlZmluZWQsXG4gICAgICAgIHdhcm5pbmdUZXh0OiAnQ291bGQgbm90IGdldCBjYWNoZSBlbnRyeScsXG4gICAgICAgIHJlYWRCb2R5OiB0cnVlLFxuICAgICAgICBtYXhBdHRlbXB0czogTUFYX0hUVFBfQ0FDSEVfQVRURU1QVFNcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gQnVmZmVyLmlzQnVmZmVyKHJlc3VsdCkgPyByZXN1bHQgOiB1bmRlZmluZWQ7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGVybWluYWwud3JpdGVXYXJuaW5nTGluZShgRXJyb3IgZ2V0dGluZyBjYWNoZSBlbnRyeTogJHtlfWApO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdHJ5U2V0Q2FjaGVFbnRyeUJ1ZmZlckFzeW5jKFxuICAgIHRlcm1pbmFsOiBJVGVybWluYWwsXG4gICAgY2FjaGVJZDogc3RyaW5nLFxuICAgIG9iamVjdEJ1ZmZlcjogQnVmZmVyXG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICghdGhpcy5pc0NhY2hlV3JpdGVBbGxvd2VkKSB7XG4gICAgICB0ZXJtaW5hbC53cml0ZUVycm9yTGluZSgnV3JpdGluZyB0byBjYWNoZSBpcyBub3QgYWxsb3dlZCBpbiB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLicpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHRlcm1pbmFsLndyaXRlRGVidWdMaW5lKCdVcGxvYWRpbmcgb2JqZWN0IHdpdGggY2FjaGVJZDogJywgY2FjaGVJZCk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5faHR0cCh7XG4gICAgICAgIHRlcm1pbmFsOiB0ZXJtaW5hbCxcbiAgICAgICAgcmVsVXJsOiBgJHt0aGlzLl9jYWNoZUtleVByZWZpeH0ke2NhY2hlSWR9YCxcbiAgICAgICAgbWV0aG9kOiB0aGlzLl91cGxvYWRNZXRob2QsXG4gICAgICAgIGJvZHk6IG9iamVjdEJ1ZmZlcixcbiAgICAgICAgd2FybmluZ1RleHQ6ICdDb3VsZCBub3Qgd3JpdGUgY2FjaGUgZW50cnknLFxuICAgICAgICByZWFkQm9keTogZmFsc2UsXG4gICAgICAgIG1heEF0dGVtcHRzOiBNQVhfSFRUUF9DQUNIRV9BVFRFTVBUU1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiByZXN1bHQgIT09IGZhbHNlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRlcm1pbmFsLndyaXRlV2FybmluZ0xpbmUoYEVycm9yIHVwbG9hZGluZyBjYWNoZSBlbnRyeTogJHtlfWApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB1cGRhdGVDYWNoZWRDcmVkZW50aWFsQXN5bmModGVybWluYWw6IElUZXJtaW5hbCwgY3JlZGVudGlhbDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgQ3JlZGVudGlhbENhY2hlLnVzaW5nQXN5bmMoXG4gICAgICB7XG4gICAgICAgIHN1cHBvcnRFZGl0aW5nOiB0cnVlXG4gICAgICB9LFxuICAgICAgYXN5bmMgKGNyZWRlbnRpYWxzQ2FjaGU6IENyZWRlbnRpYWxDYWNoZSkgPT4ge1xuICAgICAgICBjcmVkZW50aWFsc0NhY2hlLnNldENhY2hlRW50cnkodGhpcy5fY3JlZGVudGlhbENhY2hlSWQsIHtcbiAgICAgICAgICBjcmVkZW50aWFsOiBjcmVkZW50aWFsXG4gICAgICAgIH0pO1xuICAgICAgICBhd2FpdCBjcmVkZW50aWFsc0NhY2hlLnNhdmVJZk1vZGlmaWVkQXN5bmMoKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVwZGF0ZUNhY2hlZENyZWRlbnRpYWxJbnRlcmFjdGl2ZUFzeW5jKHRlcm1pbmFsOiBJVGVybWluYWwpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuX3Rva2VuSGFuZGxlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgVGhlIGludGVyYWN0aXZlIGNsb3VkIGNyZWRlbnRpYWxzIGZsb3cgaXMgbm90IGNvbmZpZ3VyZWQuXFxuYCArXG4gICAgICAgICAgYFNldCB0aGUgJ3Rva2VuSGFuZGxlcicgc2V0dGluZyBpbiAnY29tbW9uL2NvbmZpZy9ydXNoLXBsdWdpbnMvJHt0aGlzLl9wbHVnaW5OYW1lfS5qc29uJyB0byBhIGNvbW1hbmQgdGhhdCB3cml0ZXMgeW91ciBjcmVkZW50aWFscyB0byBzdGFuZGFyZCBvdXRwdXQgYW5kIGV4aXRzIHdpdGggY29kZSAwIGAgK1xuICAgICAgICAgIGBvciBwcm92aWRlIHlvdXIgY3JlZGVudGlhbHMgdG8gcnVzaCB1c2luZyB0aGUgLS1jcmVkZW50aWFsIGZsYWcgaW5zdGVhZC4gQ3JlZGVudGlhbHMgbXVzdCBiZSB0aGUgYCArXG4gICAgICAgICAgYCdBdXRob3JpemF0aW9uJyBoZWFkZXIgZXhwZWN0ZWQgYnkgJHt0aGlzLl91cmwuaHJlZn1gXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGNtZDogc3RyaW5nID0gYCR7dGhpcy5fdG9rZW5IYW5kbGVyLmV4ZWN9ICR7KHRoaXMuX3Rva2VuSGFuZGxlci5hcmdzIHx8IFtdKS5qb2luKCcgJyl9YDtcbiAgICB0ZXJtaW5hbC53cml0ZVZlcmJvc2VMaW5lKGBSdW5uaW5nICcke2NtZH0nIHRvIGdldCBjcmVkZW50aWFsc2ApO1xuICAgIGNvbnN0IHJlc3VsdCA9IEV4ZWN1dGFibGUuc3Bhd25TeW5jKHRoaXMuX3Rva2VuSGFuZGxlci5leGVjLCB0aGlzLl90b2tlbkhhbmRsZXIuYXJncyB8fCBbXSk7XG5cbiAgICB0ZXJtaW5hbC53cml0ZUVycm9yTGluZShyZXN1bHQuc3RkZXJyKTtcblxuICAgIGlmIChyZXN1bHQuZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IG9idGFpbiBjcmVkZW50aWFscy4gVGhlIGNvbW1hbmQgJyR7Y21kfScgZmFpbGVkLmApO1xuICAgIH1cblxuICAgIGNvbnN0IGNyZWRlbnRpYWwgPSByZXN1bHQuc3Rkb3V0LnRyaW0oKTtcbiAgICB0ZXJtaW5hbC53cml0ZVZlcmJvc2VMaW5lKCdHb3QgY3JlZGVudGlhbHMnKTtcblxuICAgIGF3YWl0IHRoaXMudXBkYXRlQ2FjaGVkQ3JlZGVudGlhbEFzeW5jKHRlcm1pbmFsLCBjcmVkZW50aWFsKTtcblxuICAgIHRlcm1pbmFsLndyaXRlTGluZSgnVXBkYXRlZCBjcmVkZW50aWFscyBjYWNoZScpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlbGV0ZUNhY2hlZENyZWRlbnRpYWxzQXN5bmModGVybWluYWw6IElUZXJtaW5hbCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IENyZWRlbnRpYWxDYWNoZS51c2luZ0FzeW5jKFxuICAgICAge1xuICAgICAgICBzdXBwb3J0RWRpdGluZzogdHJ1ZVxuICAgICAgfSxcbiAgICAgIGFzeW5jIChjcmVkZW50aWFsc0NhY2hlOiBDcmVkZW50aWFsQ2FjaGUpID0+IHtcbiAgICAgICAgY3JlZGVudGlhbHNDYWNoZS5kZWxldGVDYWNoZUVudHJ5KHRoaXMuX2NyZWRlbnRpYWxDYWNoZUlkKTtcbiAgICAgICAgYXdhaXQgY3JlZGVudGlhbHNDYWNoZS5zYXZlSWZNb2RpZmllZEFzeW5jKCk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IF9jcmVkZW50aWFsQ2FjaGVJZCgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5fX2NyZWRlbnRpYWxDYWNoZUlkKSB7XG4gICAgICBjb25zdCBjYWNoZUlkUGFydHM6IHN0cmluZ1tdID0gW3RoaXMuX3VybC5ocmVmXTtcblxuICAgICAgaWYgKHRoaXMuX2lzQ2FjaGVXcml0ZUFsbG93ZWRCeUNvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgY2FjaGVJZFBhcnRzLnB1c2goJ2NhY2hlV3JpdGVBbGxvd2VkJyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX19jcmVkZW50aWFsQ2FjaGVJZCA9IGNhY2hlSWRQYXJ0cy5qb2luKCd8Jyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX19jcmVkZW50aWFsQ2FjaGVJZDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX2h0dHAob3B0aW9uczoge1xuICAgIHRlcm1pbmFsOiBJVGVybWluYWw7XG4gICAgcmVsVXJsOiBzdHJpbmc7XG4gICAgbWV0aG9kOiBzdHJpbmc7XG4gICAgYm9keTogQm9keUluaXQgfCB1bmRlZmluZWQ7XG4gICAgd2FybmluZ1RleHQ6IHN0cmluZztcbiAgICByZWFkQm9keTogYm9vbGVhbjtcbiAgICBtYXhBdHRlbXB0czogbnVtYmVyO1xuICAgIGNyZWRlbnRpYWxPcHRpb25zPzogQ3JlZGVudGlhbHNPcHRpb25zO1xuICB9KTogUHJvbWlzZTxCdWZmZXIgfCBib29sZWFuPiB7XG4gICAgY29uc3QgeyB0ZXJtaW5hbCwgcmVsVXJsLCBtZXRob2QsIGJvZHksIHdhcm5pbmdUZXh0LCByZWFkQm9keSwgY3JlZGVudGlhbE9wdGlvbnMgfSA9IG9wdGlvbnM7XG4gICAgY29uc3Qgc2FmZUNyZWRlbnRpYWxPcHRpb25zID0gY3JlZGVudGlhbE9wdGlvbnMgPz8gQ3JlZGVudGlhbHNPcHRpb25zLk9wdGlvbmFsO1xuICAgIGNvbnN0IGNyZWRlbnRpYWxzID0gYXdhaXQgdGhpcy5fdHJ5R2V0Q3JlZGVudGlhbHMoc2FmZUNyZWRlbnRpYWxPcHRpb25zKTtcbiAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHJlbFVybCwgdGhpcy5fdXJsKS5ocmVmO1xuXG4gICAgY29uc3QgaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICAgIGlmICh0eXBlb2YgY3JlZGVudGlhbHMgPT09ICdzdHJpbmcnKSB7XG4gICAgICBoZWFkZXJzLkF1dGhvcml6YXRpb24gPSBjcmVkZW50aWFscztcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLl9oZWFkZXJzKSkge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgaGVhZGVyc1trZXldID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgYm9keUxlbmd0aCA9IChib2R5IGFzIHsgbGVuZ3RoOiBudW1iZXIgfSk/Lmxlbmd0aCB8fCAndW5rbm93bic7XG5cbiAgICB0ZXJtaW5hbC53cml0ZURlYnVnTGluZShgW2h0dHAtYnVpbGQtY2FjaGVdIHJlcXVlc3Q6ICR7bWV0aG9kfSAke3VybH0gJHtib2R5TGVuZ3RofSBieXRlc2ApO1xuXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwsIHtcbiAgICAgIG1ldGhvZDogbWV0aG9kLFxuICAgICAgaGVhZGVyczogaGVhZGVycyxcbiAgICAgIGJvZHk6IGJvZHksXG4gICAgICByZWRpcmVjdDogJ2ZvbGxvdydcbiAgICB9KTtcblxuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIGNvbnN0IGlzTm9uQ3JlZGVudGlhbFJlc3BvbnNlID0gcmVzcG9uc2Uuc3RhdHVzID49IDUwMCAmJiByZXNwb25zZS5zdGF0dXMgPCA2MDA7XG5cbiAgICAgIGlmIChcbiAgICAgICAgIWlzTm9uQ3JlZGVudGlhbFJlc3BvbnNlICYmXG4gICAgICAgIHR5cGVvZiBjcmVkZW50aWFscyAhPT0gJ3N0cmluZycgJiZcbiAgICAgICAgc2FmZUNyZWRlbnRpYWxPcHRpb25zID09PSBDcmVkZW50aWFsc09wdGlvbnMuT3B0aW9uYWxcbiAgICAgICkge1xuICAgICAgICAvLyBJZiB3ZSBkb24ndCBhbHJlYWR5IGhhdmUgY3JlZGVudGlhbHMgeWV0LCBhbmQgd2UgZ290IGEgcmVzcG9uc2UgZnJvbSB0aGUgc2VydmVyXG4gICAgICAgIC8vIHRoYXQgaXMgYSBcIm5vcm1hbFwiIGZhaWx1cmUgKDR4eCksIHRoZW4gd2UgYXNzdW1lIHRoYXQgY3JlZGVudGlhbHMgYXJlIHByb2JhYmx5XG4gICAgICAgIC8vIHJlcXVpcmVkLiBSZS1hdHRlbXB0IHRoZSByZXF1ZXN0LCByZXF1aXJpbmcgY3JlZGVudGlhbHMgdGhpcyB0aW1lLlxuICAgICAgICAvL1xuICAgICAgICAvLyBUaGlzIGNvdW50cyBhcyBwYXJ0IG9mIHRoZSBcImZpcnN0IGF0dGVtcHRcIiwgc28gaXQgaXMgbm90IGluY2x1ZGVkIGluIHRoZSBtYXggYXR0ZW1wdHNcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX2h0dHAoeyAuLi5vcHRpb25zLCBjcmVkZW50aWFsT3B0aW9uczogQ3JlZGVudGlhbHNPcHRpb25zLlJlcXVpcmVkIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5tYXhBdHRlbXB0cyA+IDEpIHtcbiAgICAgICAgLy8gUGF1c2UgYSBiaXQgYmVmb3JlIHJldHJ5aW5nIGluIGNhc2UgdGhlIHNlcnZlciBpcyBidXN5XG4gICAgICAgIC8vIEFkZCBzb21lIHJhbmRvbSBqaXR0ZXIgdG8gdGhlIHJldHJ5IHNvIHdlIGNhbiBzcHJlYWQgb3V0IGxvYWQgb24gdGhlIHJlbW90ZSBzZXJ2aWNlXG4gICAgICAgIC8vIEEgcHJvcGVyIHNvbHV0aW9uIG1pZ2h0IGFkZCBleHBvbmVudGlhbCBiYWNrIG9mZiBpbiBjYXNlIHRoZSByZXRyeSBjb3VudCBpcyBoaWdoICgxMCBvciBtb3JlKVxuICAgICAgICBjb25zdCBmYWN0b3IgPSAxLjAgKyBNYXRoLnJhbmRvbSgpOyAvLyBBIHJhbmRvbSBudW1iZXIgYmV0d2VlbiAxLjAgYW5kIDIuMFxuICAgICAgICBjb25zdCByZXRyeURlbGF5ID0gTWF0aC5mbG9vcihmYWN0b3IgKiB0aGlzLl9taW5IdHRwUmV0cnlEZWxheU1zKTtcblxuICAgICAgICBhd2FpdCBBc3luYy5zbGVlcChyZXRyeURlbGF5KTtcblxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5faHR0cCh7IC4uLm9wdGlvbnMsIG1heEF0dGVtcHRzOiBvcHRpb25zLm1heEF0dGVtcHRzIC0gMSB9KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fcmVwb3J0RmFpbHVyZSh0ZXJtaW5hbCwgbWV0aG9kLCByZXNwb25zZSwgZmFsc2UsIHdhcm5pbmdUZXh0KTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQ6IEJ1ZmZlciB8IGJvb2xlYW4gPSByZWFkQm9keSA/IEJ1ZmZlci5mcm9tKGF3YWl0IHJlc3BvbnNlLmFycmF5QnVmZmVyKCkpIDogdHJ1ZTtcblxuICAgIHRlcm1pbmFsLndyaXRlRGVidWdMaW5lKFxuICAgICAgYFtodHRwLWJ1aWxkLWNhY2hlXSBhY3R1YWwgcmVzcG9uc2U6ICR7cmVzcG9uc2Uuc3RhdHVzfSAke3VybH0gJHtcbiAgICAgICAgcmVzdWx0ID09PSB0cnVlID8gJ3RydWUnIDogcmVzdWx0Lmxlbmd0aFxuICAgICAgfSBieXRlc2BcbiAgICApO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX3RyeUdldENyZWRlbnRpYWxzKG9wdGlvbnM6IENyZWRlbnRpYWxzT3B0aW9ucy5SZXF1aXJlZCk6IFByb21pc2U8c3RyaW5nPjtcbiAgcHJpdmF0ZSBhc3luYyBfdHJ5R2V0Q3JlZGVudGlhbHMob3B0aW9uczogQ3JlZGVudGlhbHNPcHRpb25zLk9wdGlvbmFsKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+O1xuICBwcml2YXRlIGFzeW5jIF90cnlHZXRDcmVkZW50aWFscyhvcHRpb25zOiBDcmVkZW50aWFsc09wdGlvbnMuT21pdCk6IFByb21pc2U8dW5kZWZpbmVkPjtcbiAgcHJpdmF0ZSBhc3luYyBfdHJ5R2V0Q3JlZGVudGlhbHMob3B0aW9uczogQ3JlZGVudGlhbHNPcHRpb25zKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+O1xuICBwcml2YXRlIGFzeW5jIF90cnlHZXRDcmVkZW50aWFscyhvcHRpb25zOiBDcmVkZW50aWFsc09wdGlvbnMpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIGlmIChvcHRpb25zID09PSBDcmVkZW50aWFsc09wdGlvbnMuT21pdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjcmVkZW50aWFsczogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGhpcy5fZW52aXJvbm1lbnRDcmVkZW50aWFsO1xuXG4gICAgaWYgKGNyZWRlbnRpYWxzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNyZWRlbnRpYWxzID0gYXdhaXQgdGhpcy5fdHJ5R2V0Q3JlZGVudGlhbHNGcm9tQ2FjaGUoKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGNyZWRlbnRpYWxzICE9PSAnc3RyaW5nJyAmJiBvcHRpb25zID09PSBDcmVkZW50aWFsc09wdGlvbnMuUmVxdWlyZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgW1xuICAgICAgICAgIGBDcmVkZW50aWFscyBmb3IgJHt0aGlzLl91cmwuaHJlZn0gaGF2ZSBub3QgYmVlbiBwcm92aWRlZC5gLFxuICAgICAgICAgIGBJbiBDSSwgdmVyaWZ5IHRoYXQgUlVTSF9CVUlMRF9DQUNIRV9DUkVERU5USUFMIGNvbnRhaW5zIGEgdmFsaWQgQXV0aG9yaXphdGlvbiBoZWFkZXIgdmFsdWUuYCxcbiAgICAgICAgICBgYCxcbiAgICAgICAgICBgRm9yIGxvY2FsIGRldmVsb3BlcnMsIHJ1bjpgLFxuICAgICAgICAgIGBgLFxuICAgICAgICAgIGAgICAgcnVzaCB1cGRhdGUtY2xvdWQtY3JlZGVudGlhbHMgLS1pbnRlcmFjdGl2ZWAsXG4gICAgICAgICAgYGBcbiAgICAgICAgXS5qb2luKCdcXG4nKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY3JlZGVudGlhbHM7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF90cnlHZXRDcmVkZW50aWFsc0Zyb21DYWNoZSgpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIGxldCBjYWNoZUVudHJ5OiBJQ3JlZGVudGlhbENhY2hlRW50cnkgfCB1bmRlZmluZWQ7XG5cbiAgICBhd2FpdCBDcmVkZW50aWFsQ2FjaGUudXNpbmdBc3luYyhcbiAgICAgIHtcbiAgICAgICAgc3VwcG9ydEVkaXRpbmc6IGZhbHNlXG4gICAgICB9LFxuICAgICAgKGNyZWRlbnRpYWxzQ2FjaGU6IENyZWRlbnRpYWxDYWNoZSkgPT4ge1xuICAgICAgICBjYWNoZUVudHJ5ID0gY3JlZGVudGlhbHNDYWNoZS50cnlHZXRDYWNoZUVudHJ5KHRoaXMuX2NyZWRlbnRpYWxDYWNoZUlkKTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgaWYgKGNhY2hlRW50cnkpIHtcbiAgICAgIGNvbnN0IGV4cGlyYXRpb25UaW1lOiBudW1iZXIgfCB1bmRlZmluZWQgPSBjYWNoZUVudHJ5LmV4cGlyZXM/LmdldFRpbWUoKTtcbiAgICAgIGlmICghZXhwaXJhdGlvblRpbWUgfHwgZXhwaXJhdGlvblRpbWUgPj0gRGF0ZS5ub3coKSkge1xuICAgICAgICByZXR1cm4gY2FjaGVFbnRyeS5jcmVkZW50aWFsO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2dldEZhaWx1cmVUeXBlKHJlcXVlc3RNZXRob2Q6IHN0cmluZywgcmVzcG9uc2U6IFJlc3BvbnNlLCBpc1JlZGlyZWN0OiBib29sZWFuKTogRmFpbHVyZVR5cGUge1xuICAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgcmV0dXJuIEZhaWx1cmVUeXBlLk5vbmU7XG4gICAgfVxuXG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgNTAzOiB7XG4gICAgICAgIC8vIFdlIHNlbGVjdCA1MDMgc3BlY2lmaWNhbGx5IGJlY2F1c2UgdGhpcyByZXByZXNlbnRzIFwic2VydmljZSB1bmF2YWlsYWJsZVwiIGFuZFxuICAgICAgICAvLyBcInJhdGUgbGltaXQgdGhyb3R0bGVcIiBlcnJvcnMsIHdoaWNoIGFyZSB0cmFuc2llbnQgaXNzdWVzLlxuICAgICAgICAvL1xuICAgICAgICAvLyBUaGVyZSBhcmUgb3RoZXIgNXh4IGVycm9ycywgc3VjaCBhcyA1MDEsIHRoYXQgY2FuIG9jY3VyIGlmIHRoZSByZXF1ZXN0IGlzXG4gICAgICAgIC8vIG1hbGZvcm1lZCwgc28gYXMgYSBnZW5lcmFsIHJ1bGUgd2Ugd2FudCB0byBsZXQgdGhyb3VnaCBvdGhlciA1eHggZXJyb3JzXG4gICAgICAgIC8vIHNvIHRoZSB1c2VyIGNhbiB0cm91Ymxlc2hvb3QuXG5cbiAgICAgICAgLy8gRG9uJ3QgZmFpbCBwcm9kdWN0aW9uIGJ1aWxkcyB3aXRoIHdhcm5pbmdzIGZvciB0cmFuc2llbnQgaXNzdWVzXG4gICAgICAgIHJldHVybiBGYWlsdXJlVHlwZS5JbmZvcm1hdGlvbmFsO1xuICAgICAgfVxuXG4gICAgICBjYXNlIDQwMTpcbiAgICAgIGNhc2UgNDAzOlxuICAgICAgY2FzZSA0MDc6IHtcbiAgICAgICAgaWYgKHJlcXVlc3RNZXRob2QgPT09ICdHRVQnICYmIChpc1JlZGlyZWN0IHx8IHJlc3BvbnNlLnJlZGlyZWN0ZWQpKSB7XG4gICAgICAgICAgLy8gQ2FjaGUgbWlzc2VzIGZvciBHRVQgcmVxdWVzdHMgYXJlIG5vdCBlcnJvcnNcbiAgICAgICAgICAvLyBUaGlzIGlzIGEgd29ya2Fyb3VuZCBiZWhhdmlvciB3aGVyZSBhIHNlcnZlciBjYW4gaXNzdWUgYSByZWRpcmVjdCBhbmQgd2UgZmFpbCB0byBhdXRoZW50aWNhdGUgYXQgdGhlIG5ldyBsb2NhdGlvbi5cbiAgICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBzaWduYWwgdGhpcyBhcyBhbiBhdXRoZW50aWNhdGlvbiBmYWlsdXJlIGJlY2F1c2UgdGhlIGF1dGhvcml6YXRpb24gaGVhZGVyIGlzIG5vdCBwYXNzZWQgb24gdG8gcmVkaXJlY3RzLlxuICAgICAgICAgIC8vIGkuZSBUaGUgYXV0aGVudGljYXRpb24gaGVhZGVyIHdhcyBhY2NlcHRlZCBmb3IgdGhlIGZpcnN0IHJlcXVlc3QgYW5kIHRoZXJlZm9yZSBzdWJzZXF1ZW50IGZhaWx1cmVzXG4gICAgICAgICAgLy8gd2hlcmUgaXQgd2FzIG5vdCBwcmVzZW50IHNob3VsZCBub3QgYmUgYXR0cmlidXRlZCB0byB0aGUgaGVhZGVyLlxuICAgICAgICAgIC8vIFRoaXMgc2NlbmFyaW8gdXN1YWxseSBjb21lcyB1cCB3aXRoIHNlcnZpY2VzIHRoYXQgcmVkaXJlY3QgdG8gcHJlLXNpZ25lZCBVUkxTIHRoYXQgZG9uJ3QgYWN0dWFsbHkgZXhpc3QuXG4gICAgICAgICAgLy8gVGhvc2Ugc2VydmljZXMgdGhlbiB1c3VhbGx5IHRyZWF0IHRoZSA0MDQgYXMgYSA0MDMgdG8gcHJldmVudCBsZWFraW5nIGluZm9ybWF0aW9uLlxuICAgICAgICAgIHJldHVybiBGYWlsdXJlVHlwZS5Ob25lO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIEZhaWx1cmVUeXBlLkF1dGhlbnRpY2F0aW9uO1xuICAgICAgfVxuXG4gICAgICBjYXNlIDQwNDoge1xuICAgICAgICBpZiAocmVxdWVzdE1ldGhvZCA9PT0gJ0dFVCcpIHtcbiAgICAgICAgICAvLyBDYWNoZSBtaXNzZXMgZm9yIEdFVCByZXF1ZXN0cyBhcmUgbm90IGVycm9yc1xuICAgICAgICAgIHJldHVybiBGYWlsdXJlVHlwZS5Ob25lO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTGV0IGRldiBidWlsZHMgc3VjY2VlZCwgbGV0IFByb2QgYnVpbGRzIGZhaWxcbiAgICByZXR1cm4gRmFpbHVyZVR5cGUuV2FybmluZztcbiAgfVxuXG4gIHByaXZhdGUgX3JlcG9ydEZhaWx1cmUoXG4gICAgdGVybWluYWw6IElUZXJtaW5hbCxcbiAgICByZXF1ZXN0TWV0aG9kOiBzdHJpbmcsXG4gICAgcmVzcG9uc2U6IFJlc3BvbnNlLFxuICAgIGlzUmVkaXJlY3Q6IGJvb2xlYW4sXG4gICAgbWVzc2FnZTogc3RyaW5nXG4gICk6IHZvaWQge1xuICAgIHN3aXRjaCAodGhpcy5fZ2V0RmFpbHVyZVR5cGUocmVxdWVzdE1ldGhvZCwgcmVzcG9uc2UsIGlzUmVkaXJlY3QpKSB7XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHRlcm1pbmFsLndyaXRlRXJyb3JMaW5lKGAke21lc3NhZ2V9OiBIVFRQICR7cmVzcG9uc2Uuc3RhdHVzfTogJHtyZXNwb25zZS5zdGF0dXNUZXh0fWApO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSBGYWlsdXJlVHlwZS5XYXJuaW5nOiB7XG4gICAgICAgIHRlcm1pbmFsLndyaXRlV2FybmluZ0xpbmUoYCR7bWVzc2FnZX06IEhUVFAgJHtyZXNwb25zZS5zdGF0dXN9OiAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIEZhaWx1cmVUeXBlLkluZm9ybWF0aW9uYWw6IHtcbiAgICAgICAgdGVybWluYWwud3JpdGVMaW5lKGAke21lc3NhZ2V9OiBIVFRQICR7cmVzcG9uc2Uuc3RhdHVzfTogJHtyZXNwb25zZS5zdGF0dXNUZXh0fWApO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSBGYWlsdXJlVHlwZS5Ob25lOiB7XG4gICAgICAgIHRlcm1pbmFsLndyaXRlRGVidWdMaW5lKGAke21lc3NhZ2V9OiBIVFRQICR7cmVzcG9uc2Uuc3RhdHVzfTogJHtyZXNwb25zZS5zdGF0dXNUZXh0fWApO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSBGYWlsdXJlVHlwZS5BdXRoZW50aWNhdGlvbjoge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgW1xuICAgICAgICAgICAgYCR7dGhpcy5fdXJsLmhyZWZ9IHJlc3BvbmRlZCB3aXRoICR7cmVzcG9uc2Uuc3RhdHVzfTogJHtyZXNwb25zZS5zdGF0dXNUZXh0fS5gLFxuICAgICAgICAgICAgYENyZWRlbnRpYWxzIG1heSBiZSBtaXNjb25maWd1cmVkIG9yIGhhdmUgZXhwaXJlZC5gLFxuICAgICAgICAgICAgYEluIENJLCB2ZXJpZnkgdGhhdCBSVVNIX0JVSUxEX0NBQ0hFX0NSRURFTlRJQUwgY29udGFpbnMgYSB2YWxpZCBBdXRob3JpemF0aW9uIGhlYWRlciB2YWx1ZS5gLFxuICAgICAgICAgICAgYGAsXG4gICAgICAgICAgICBgRm9yIGxvY2FsIGRldmVsb3BlcnMsIHJ1bjpgLFxuICAgICAgICAgICAgYGAsXG4gICAgICAgICAgICBgICAgIHJ1c2ggdXBkYXRlLWNsb3VkLWNyZWRlbnRpYWxzIC0taW50ZXJhY3RpdmVgLFxuICAgICAgICAgICAgYGBcbiAgICAgICAgICBdLmpvaW4oJ1xcbicpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
|