single-scripture-rcl 3.4.24 → 3.4.25
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.
|
@@ -58,10 +58,10 @@ import { BookObjectsType, ScriptureConfig, ScriptureReferenceType, ServerConfigT
|
|
|
58
58
|
import { getAlignments, getScriptureResourceSettings } from '../utils/ScriptureSettings';
|
|
59
59
|
import { ORIGINAL_SOURCE } from '../utils';
|
|
60
60
|
import { getVersesForRef } from './useScripture';
|
|
61
|
-
/**
|
|
62
|
-
* determines if alignment is complete based on target USFM and original language verse objects
|
|
63
|
-
* @param {string} targetVerseUSFM
|
|
64
|
-
* @param {VerseObjectsType} originalVerseObjects
|
|
61
|
+
/**
|
|
62
|
+
* determines if alignment is complete based on target USFM and original language verse objects
|
|
63
|
+
* @param {string} targetVerseUSFM
|
|
64
|
+
* @param {VerseObjectsType} originalVerseObjects
|
|
65
65
|
*/
|
|
66
66
|
function isUsfmAligned(targetVerseUSFM, originalVerseObjects) {
|
|
67
67
|
var _originalVerseObjects;
|
|
@@ -76,12 +76,12 @@ function isUsfmAligned(targetVerseUSFM, originalVerseObjects) {
|
|
|
76
76
|
return null;
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
-
/**
|
|
80
|
-
* get the updated USFM for target verse from the updated verse objects and latest text
|
|
81
|
-
* @param {VerseObjectsType} updatedVerseObjects
|
|
82
|
-
* @param {VerseObjectsType} initialVerseObjects
|
|
83
|
-
* @param {boolean} verseTextChanged
|
|
84
|
-
* @param {string} newVerseText
|
|
79
|
+
/**
|
|
80
|
+
* get the updated USFM for target verse from the updated verse objects and latest text
|
|
81
|
+
* @param {VerseObjectsType} updatedVerseObjects
|
|
82
|
+
* @param {VerseObjectsType} initialVerseObjects
|
|
83
|
+
* @param {boolean} verseTextChanged
|
|
84
|
+
* @param {string} newVerseText
|
|
85
85
|
*/
|
|
86
86
|
function getCurrentVerseUsfm(updatedVerseObjects, initialVerseObjects, verseTextChanged, newVerseText) {
|
|
87
87
|
var targetVerseUSFM = null;
|
|
@@ -96,9 +96,9 @@ function getCurrentVerseUsfm(updatedVerseObjects, initialVerseObjects, verseText
|
|
|
96
96
|
return targetVerseUSFM;
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
-
/**
|
|
100
|
-
* return true if only spaces in content
|
|
101
|
-
* @param {string} text
|
|
99
|
+
/**
|
|
100
|
+
* return true if only spaces in content
|
|
101
|
+
* @param {string} text
|
|
102
102
|
*/
|
|
103
103
|
function allSpaces(text) {
|
|
104
104
|
for (var i = 0; i < text.length; i++) {
|
|
@@ -109,12 +109,12 @@ function allSpaces(text) {
|
|
|
109
109
|
return true;
|
|
110
110
|
}
|
|
111
111
|
|
|
112
|
-
/**
|
|
113
|
-
* make sure there is a significant change to the text
|
|
114
|
-
* @param {string} newVerseText
|
|
115
|
-
* @param {string} initialVerseText
|
|
112
|
+
/**
|
|
113
|
+
* make sure there is a significant change to the text
|
|
114
|
+
* @param {string} newVerseText
|
|
115
|
+
* @param {string} initialVerseText
|
|
116
116
|
*/
|
|
117
|
-
function hasTextChangedSignificantly(newVerseText, initialVerseText) {
|
|
117
|
+
export function hasTextChangedSignificantly(newVerseText, initialVerseText) {
|
|
118
118
|
var changed = newVerseText !== initialVerseText;
|
|
119
119
|
if (changed && newVerseText) {
|
|
120
120
|
// make sure it's significant
|
|
@@ -244,9 +244,9 @@ export function useScriptureAlignmentEdit(_ref) {
|
|
|
244
244
|
return verseObjects;
|
|
245
245
|
}, [originalScriptureBookObjects, chapter, verse, bookId]);
|
|
246
246
|
|
|
247
|
-
/**
|
|
248
|
-
* get current verseObjects
|
|
249
|
-
* @param {VerseObjectsType} _updatedVerseObjects - optional overrides updatedVerseObjects
|
|
247
|
+
/**
|
|
248
|
+
* get current verseObjects
|
|
249
|
+
* @param {VerseObjectsType} _updatedVerseObjects - optional overrides updatedVerseObjects
|
|
250
250
|
*/
|
|
251
251
|
function getCurrentVerseObjects() {
|
|
252
252
|
var _updatedVerseObjects = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : updatedVerseObjects;
|
|
@@ -280,9 +280,9 @@ export function useScriptureAlignmentEdit(_ref) {
|
|
|
280
280
|
}
|
|
281
281
|
}, [initialVerseObjects, alignerData, newVerseText, initialVerseText, enableAlignment, originalVerseObjects]);
|
|
282
282
|
|
|
283
|
-
/**
|
|
284
|
-
* get changes for saving
|
|
285
|
-
* @param {object} newState - optionally pass in new state (to override state)
|
|
283
|
+
/**
|
|
284
|
+
* get changes for saving
|
|
285
|
+
* @param {object} newState - optionally pass in new state (to override state)
|
|
286
286
|
*/
|
|
287
287
|
function getChanges() {
|
|
288
288
|
var newState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
@@ -328,12 +328,12 @@ export function useScriptureAlignmentEdit(_ref) {
|
|
|
328
328
|
return {};
|
|
329
329
|
}
|
|
330
330
|
|
|
331
|
-
/**
|
|
332
|
-
* compare initial alignments with final to see if changed
|
|
333
|
-
* @param {string} prefix
|
|
334
|
-
* @param {VerseObjectsType} _updatedVerseObjects
|
|
335
|
-
* @param {VerseObjectsType} _initialVerseObjects
|
|
336
|
-
* @returns {boolean} true if changed
|
|
331
|
+
/**
|
|
332
|
+
* compare initial alignments with final to see if changed
|
|
333
|
+
* @param {string} prefix
|
|
334
|
+
* @param {VerseObjectsType} _updatedVerseObjects
|
|
335
|
+
* @param {VerseObjectsType} _initialVerseObjects
|
|
336
|
+
* @returns {boolean} true if changed
|
|
337
337
|
*/
|
|
338
338
|
function isMigrated(prefix) {
|
|
339
339
|
var _updatedVerseObjects = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : updatedVerseObjects;
|
|
@@ -361,10 +361,10 @@ export function useScriptureAlignmentEdit(_ref) {
|
|
|
361
361
|
return different;
|
|
362
362
|
}
|
|
363
363
|
|
|
364
|
-
/**
|
|
365
|
-
* do alignments migration
|
|
366
|
-
* @param {string} prefix
|
|
367
|
-
* @param {VerseObjectsType} updatedVerseObjects
|
|
364
|
+
/**
|
|
365
|
+
* do alignments migration
|
|
366
|
+
* @param {string} prefix
|
|
367
|
+
* @param {VerseObjectsType} updatedVerseObjects
|
|
368
368
|
*/
|
|
369
369
|
function migrateAlignments(prefix) {
|
|
370
370
|
var updatedVerseObjects = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
@@ -374,67 +374,50 @@ export function useScriptureAlignmentEdit(_ref) {
|
|
|
374
374
|
return _updatedVerseObjects;
|
|
375
375
|
}
|
|
376
376
|
|
|
377
|
-
/**
|
|
378
|
-
* callback for when user clicked on alignment button - will show if not already shown
|
|
377
|
+
/**
|
|
378
|
+
* callback for when user clicked on alignment button - will show if not already shown
|
|
379
379
|
*/
|
|
380
380
|
function handleAlignmentClick() {
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
while (1) switch (_context.prev = _context.next) {
|
|
392
|
-
case 0:
|
|
393
|
-
if (!enableAlignment) {
|
|
394
|
-
_context.next = 7;
|
|
395
|
-
break;
|
|
396
|
-
}
|
|
397
|
-
_alignerData = null;
|
|
398
|
-
_context.next = 4;
|
|
399
|
-
return startEditBranch();
|
|
400
|
-
case 4:
|
|
401
|
-
if (!alignerData) {
|
|
402
|
-
// if word aligner not shown
|
|
403
|
-
console.log("handleAlignmentClick - toggle ON alignment");
|
|
404
|
-
originalVerseUsfm = null;
|
|
405
|
-
_updatedVerseObjects = updatedVerseObjects;
|
|
406
|
-
if (originalVerseObjects) {
|
|
407
|
-
originalVerseUsfm = UsfmFileConversionHelpers.convertVerseDataToUSFM(originalVerseObjects);
|
|
408
|
-
_updatedVerseObjects = migrateAlignments('handleAlignmentClick()');
|
|
409
|
-
}
|
|
410
|
-
targetVerseUSFM = getCurrentVerseUsfm(_updatedVerseObjects, initialVerseObjects, verseTextChanged, newVerseText);
|
|
411
|
-
_AlignmentHelpers$par = AlignmentHelpers.parseUsfmToWordAlignerData(targetVerseUSFM, originalVerseUsfm), wordBank = _AlignmentHelpers$par.targetWords, alignments = _AlignmentHelpers$par.verseAlignments;
|
|
412
|
-
_alignerData = {
|
|
413
|
-
wordBank: wordBank,
|
|
414
|
-
alignments: alignments
|
|
415
|
-
};
|
|
416
|
-
if (!(alignments !== null && alignments !== void 0 && alignments.length)) {
|
|
417
|
-
_alignerData.errorMessage = 'There are no words to align in the Original language';
|
|
418
|
-
} else if (!(wordBank !== null && wordBank !== void 0 && wordBank.length)) {
|
|
419
|
-
_alignerData.errorMessage = 'There are no words to align in the Literal/Simplified Scripture Text';
|
|
420
|
-
}
|
|
421
|
-
} else {
|
|
422
|
-
// word aligner currently shown
|
|
423
|
-
console.log("handleAlignmentClick - alignment already shown");
|
|
424
|
-
_alignerData = alignerData;
|
|
425
|
-
}
|
|
426
|
-
setState({
|
|
427
|
-
alignerData: _alignerData
|
|
428
|
-
});
|
|
429
|
-
console.log(_alignerData);
|
|
430
|
-
case 7:
|
|
431
|
-
case "end":
|
|
432
|
-
return _context.stop();
|
|
381
|
+
if (enableAlignment) {
|
|
382
|
+
var _alignerData = null;
|
|
383
|
+
if (!alignerData) {
|
|
384
|
+
// if word aligner not shown
|
|
385
|
+
console.log("handleAlignmentClick - toggle ON alignment");
|
|
386
|
+
var originalVerseUsfm = null;
|
|
387
|
+
var _updatedVerseObjects = updatedVerseObjects;
|
|
388
|
+
if (originalVerseObjects) {
|
|
389
|
+
originalVerseUsfm = UsfmFileConversionHelpers.convertVerseDataToUSFM(originalVerseObjects);
|
|
390
|
+
_updatedVerseObjects = migrateAlignments('handleAlignmentClick()');
|
|
433
391
|
}
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
392
|
+
var targetVerseUSFM = getCurrentVerseUsfm(_updatedVerseObjects, initialVerseObjects, verseTextChanged, newVerseText);
|
|
393
|
+
var _AlignmentHelpers$par = AlignmentHelpers.parseUsfmToWordAlignerData(targetVerseUSFM, originalVerseUsfm),
|
|
394
|
+
wordBank = _AlignmentHelpers$par.targetWords,
|
|
395
|
+
alignments = _AlignmentHelpers$par.verseAlignments;
|
|
396
|
+
_alignerData = {
|
|
397
|
+
wordBank: wordBank,
|
|
398
|
+
alignments: alignments
|
|
399
|
+
};
|
|
400
|
+
if (!(alignments !== null && alignments !== void 0 && alignments.length)) {
|
|
401
|
+
_alignerData.errorMessage = 'There are no words to align in the Original language';
|
|
402
|
+
} else if (!(wordBank !== null && wordBank !== void 0 && wordBank.length)) {
|
|
403
|
+
_alignerData.errorMessage = 'There are no words to align in the Literal/Simplified Scripture Text';
|
|
404
|
+
}
|
|
405
|
+
} else {
|
|
406
|
+
// word aligner currently shown
|
|
407
|
+
console.log("handleAlignmentClick - alignment already shown");
|
|
408
|
+
_alignerData = alignerData;
|
|
409
|
+
}
|
|
410
|
+
setState({
|
|
411
|
+
alignerData: _alignerData
|
|
412
|
+
});
|
|
413
|
+
console.log(_alignerData);
|
|
414
|
+
}
|
|
437
415
|
}
|
|
416
|
+
|
|
417
|
+
/**
|
|
418
|
+
* get updated verse objects after alignments changed
|
|
419
|
+
* @param {AlignerResultsDataType} _newAlignments - results of aligner
|
|
420
|
+
*/
|
|
438
421
|
function updateVerseWithNewAlignments() {
|
|
439
422
|
var _newAlignments = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : newAlignments;
|
|
440
423
|
var currentVerseObjects_ = getCurrentVerseObjects();
|
|
@@ -447,9 +430,9 @@ export function useScriptureAlignmentEdit(_ref) {
|
|
|
447
430
|
return alignedVerseObjects;
|
|
448
431
|
}
|
|
449
432
|
|
|
450
|
-
/**
|
|
451
|
-
* callback for when user clicked on button to save current alignments in word aligner. Generates new verse content and saves in state. Closes aligner display
|
|
452
|
-
* @param {AlignerResultsDataType} _newAlignments - results of aligner
|
|
433
|
+
/**
|
|
434
|
+
* callback for when user clicked on button to save current alignments in word aligner. Generates new verse content and saves in state. Closes aligner display
|
|
435
|
+
* @param {AlignerResultsDataType} _newAlignments - results of aligner
|
|
453
436
|
*/
|
|
454
437
|
function saveAlignment() {
|
|
455
438
|
var _newAlignments = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : newAlignments;
|
|
@@ -474,8 +457,8 @@ export function useScriptureAlignmentEdit(_ref) {
|
|
|
474
457
|
}
|
|
475
458
|
}
|
|
476
459
|
|
|
477
|
-
/**
|
|
478
|
-
* callback for when user clicked on button to cancel work in word aligner. Calculates and displays current alignment valid state. Closes aligner display
|
|
460
|
+
/**
|
|
461
|
+
* callback for when user clicked on button to cancel work in word aligner. Calculates and displays current alignment valid state. Closes aligner display
|
|
479
462
|
*/
|
|
480
463
|
function cancelAlignment() {
|
|
481
464
|
console.log("cancelAlignment()");
|
|
@@ -487,23 +470,23 @@ export function useScriptureAlignmentEdit(_ref) {
|
|
|
487
470
|
});
|
|
488
471
|
}
|
|
489
472
|
|
|
490
|
-
/**
|
|
491
|
-
* callback for button to set editing state
|
|
492
|
-
* @param {boolean} editing_ - if true, editor is shown, otherwise editor is hidden
|
|
493
|
-
* @param {string} _newVerseText - optional verse text
|
|
473
|
+
/**
|
|
474
|
+
* callback for button to set editing state
|
|
475
|
+
* @param {boolean} editing_ - if true, editor is shown, otherwise editor is hidden
|
|
476
|
+
* @param {string} _newVerseText - optional verse text
|
|
494
477
|
*/
|
|
495
478
|
// eslint-disable-next-line require-await
|
|
496
479
|
function setEditing(_x) {
|
|
497
480
|
return _setEditing.apply(this, arguments);
|
|
498
481
|
}
|
|
499
|
-
/**
|
|
500
|
-
* callback from the edit onChange event to update edit state variables
|
|
501
|
-
* @param {boolean} changed - true if the newVerseText is different than the initialVerseText
|
|
502
|
-
* @param {string} newVerseText - current changed verse text
|
|
503
|
-
* @param {string} _initialVerseText - initial verse text
|
|
482
|
+
/**
|
|
483
|
+
* callback from the edit onChange event to update edit state variables
|
|
484
|
+
* @param {boolean} changed - true if the newVerseText is different than the initialVerseText
|
|
485
|
+
* @param {string} newVerseText - current changed verse text
|
|
486
|
+
* @param {string} _initialVerseText - initial verse text
|
|
504
487
|
*/
|
|
505
488
|
function _setEditing() {
|
|
506
|
-
_setEditing = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
489
|
+
_setEditing = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(editing_) {
|
|
507
490
|
var _newVerseText,
|
|
508
491
|
_updatedVerseObjects,
|
|
509
492
|
verseTextChangedFromLastEdit,
|
|
@@ -512,11 +495,11 @@ export function useScriptureAlignmentEdit(_ref) {
|
|
|
512
495
|
_AlignmentHelpers$upd4,
|
|
513
496
|
targetVerseObjects,
|
|
514
497
|
_alignmentsChanged,
|
|
515
|
-
|
|
516
|
-
return _regeneratorRuntime().wrap(function
|
|
517
|
-
while (1) switch (
|
|
498
|
+
_args = arguments;
|
|
499
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
500
|
+
while (1) switch (_context.prev = _context.next) {
|
|
518
501
|
case 0:
|
|
519
|
-
_newVerseText =
|
|
502
|
+
_newVerseText = _args.length > 1 && _args[1] !== undefined ? _args[1] : newVerseText;
|
|
520
503
|
if (enableEdit) {
|
|
521
504
|
if (editing_ !== editing) {
|
|
522
505
|
_newVerseText = _newVerseText || initialVerseText;
|
|
@@ -549,9 +532,9 @@ export function useScriptureAlignmentEdit(_ref) {
|
|
|
549
532
|
}
|
|
550
533
|
case 2:
|
|
551
534
|
case "end":
|
|
552
|
-
return
|
|
535
|
+
return _context.stop();
|
|
553
536
|
}
|
|
554
|
-
},
|
|
537
|
+
}, _callee);
|
|
555
538
|
}));
|
|
556
539
|
return _setEditing.apply(this, arguments);
|
|
557
540
|
}
|
|
@@ -582,10 +565,10 @@ export function useScriptureAlignmentEdit(_ref) {
|
|
|
582
565
|
return changed;
|
|
583
566
|
}, [updatedVerseObjects, initialVerseObjects, verseTextChanged]);
|
|
584
567
|
|
|
585
|
-
/**
|
|
586
|
-
* callback to scripture card to updated with latest state for saving
|
|
587
|
-
* @param {boolean} unsavedChanges_
|
|
588
|
-
* @param {object} newState
|
|
568
|
+
/**
|
|
569
|
+
* callback to scripture card to updated with latest state for saving
|
|
570
|
+
* @param {boolean} unsavedChanges_
|
|
571
|
+
* @param {object} newState
|
|
589
572
|
*/
|
|
590
573
|
function callSetSavedState(unsavedChanges_) {
|
|
591
574
|
var newState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
@@ -604,10 +587,10 @@ export function useScriptureAlignmentEdit(_ref) {
|
|
|
604
587
|
callSetSavedState(unsavedChanges_);
|
|
605
588
|
}, [unsavedChanges, alignerData]);
|
|
606
589
|
|
|
607
|
-
/**
|
|
608
|
-
* callback for when alignments are being changed
|
|
609
|
-
* @param {AlignerResultsDataType} results
|
|
610
|
-
* @return {boolean} true if alignment is complete
|
|
590
|
+
/**
|
|
591
|
+
* callback for when alignments are being changed
|
|
592
|
+
* @param {AlignerResultsDataType} results
|
|
593
|
+
* @return {boolean} true if alignment is complete
|
|
611
594
|
*/
|
|
612
595
|
function onAlignmentsChange(results) {
|
|
613
596
|
console.log("onAlignmentsChange() - alignment changed, results", results); // merge alignments into target verse and convert to USFM
|
|
@@ -651,4 +634,4 @@ export function useScriptureAlignmentEdit(_ref) {
|
|
|
651
634
|
}
|
|
652
635
|
};
|
|
653
636
|
}
|
|
654
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVnZW5lcmF0b3JSdW50aW1lIiwiZSIsInQiLCJyIiwiT2JqZWN0IiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiU3ltYm9sIiwiYSIsIml0ZXJhdG9yIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiZ2VuIiwicmVqZWN0IiwiX25leHQiLCJfdGhyb3ciLCJrZXkiLCJpbmZvIiwiZXJyb3IiLCJfYXN5bmNUb0dlbmVyYXRvciIsImZuIiwic2VsZiIsImFyZ3MiLCJhcmd1bWVudHMiLCJhcHBseSIsImVyciIsInVuZGVmaW5lZCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiYWxsb3dBcnJheUxpa2UiLCJpdCIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIkYiLCJfZSIsIm5vcm1hbENvbXBsZXRpb24iLCJkaWRFcnIiLCJzdGVwIiwiX2UyIiwib3duS2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIl9vYmplY3RTcHJlYWQiLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIm9iaiIsIl90b1Byb3BlcnR5S2V5IiwiX3RvUHJpbWl0aXZlIiwiU3RyaW5nIiwiaW5wdXQiLCJoaW50IiwicHJpbSIsInRvUHJpbWl0aXZlIiwicmVzIiwiTnVtYmVyIiwiX3NsaWNlZFRvQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfbm9uSXRlcmFibGVSZXN0IiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsImZyb20iLCJ0ZXN0IiwibGVuIiwiYXJyMiIsIlJlYWN0IiwiQWxpZ25tZW50SGVscGVycyIsIm1pZ3JhdGVPcmlnaW5hbExhbmd1YWdlSGVscGVycyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJ1c2ZtSGVscGVycyIsImlzRXF1YWwiLCJCb29rT2JqZWN0c1R5cGUiLCJTY3JpcHR1cmVDb25maWciLCJTY3JpcHR1cmVSZWZlcmVuY2VUeXBlIiwiU2VydmVyQ29uZmlnVHlwZSIsIlZlcnNlT2JqZWN0c1R5cGUiLCJnZXRBbGlnbm1lbnRzIiwiZ2V0U2NyaXB0dXJlUmVzb3VyY2VTZXR0aW5ncyIsIk9SSUdJTkFMX1NPVVJDRSIsImdldFZlcnNlc0ZvclJlZiIsImlzVXNmbUFsaWduZWQiLCJ0YXJnZXRWZXJzZVVTRk0iLCJvcmlnaW5hbFZlcnNlT2JqZWN0cyIsIl9vcmlnaW5hbFZlcnNlT2JqZWN0cyIsIl9BbGlnbm1lbnRIZWxwZXJzJGV4dCIsImV4dHJhY3RBbGlnbm1lbnRzRnJvbVRhcmdldFZlcnNlIiwiYWxpZ25tZW50cyIsIndvcmRCYW5rIiwiYXJlQWxnbm1lbnRzQ29tcGxldGUiLCJnZXRDdXJyZW50VmVyc2VVc2ZtIiwidXBkYXRlZFZlcnNlT2JqZWN0cyIsImluaXRpYWxWZXJzZU9iamVjdHMiLCJ2ZXJzZVRleHRDaGFuZ2VkIiwibmV3VmVyc2VUZXh0IiwiY3VycmVudFZlcnNlT2JqZWN0c18iLCJfQWxpZ25tZW50SGVscGVycyR1cGQiLCJ1cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSIsInRhcmdldFZlcnNlVGV4dCIsImNvbnZlcnRWZXJzZURhdGFUb1VTRk0iLCJhbGxTcGFjZXMiLCJ0ZXh0IiwiaGFzVGV4dENoYW5nZWRTaWduaWZpY2FudGx5IiwiaW5pdGlhbFZlcnNlVGV4dCIsImNoYW5nZWQiLCJsZW5ndGhEaWZmZXJlbmNlIiwiZmlyc3RQYXJ0T2ZJbml0aWFsIiwic3Vic3RyaW5nIiwibGFzdENoYXJzIiwicG9zIiwibGFzdEluZGV4T2YiLCJsYXN0VXNmbVRhZyIsImVuZHNXaXRoUXVvdGUiLCJ1c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0IiwiX3JlZiIsImN1cnJlbnRJbmRleCIsImVuYWJsZUVkaXQiLCJlbmFibGVBbGlnbm1lbnQiLCJodHRwQ29uZmlnIiwiaXNOZXdUZXN0YW1lbnQiLCJvcmlnaW5hbExhbmd1YWdlT3duZXIiLCJvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzIiwib3JpZ2luYWxSZXBvVXJsIiwicmVmZXJlbmNlIiwic2NyaXB0dXJlQ29uZmlnIiwic2NyaXB0dXJlU2V0dGluZ3MiLCJzZXRTYXZlZENoYW5nZXMiLCJzb3VyY2VMYW5ndWFnZSIsInN0YXJ0RWRpdEJyYW5jaCIsInRhcmdldExhbmd1YWdlIiwidGl0bGUiLCJ3b3JraW5nUmVzb3VyY2VCcmFuY2giLCJfUmVhY3QkdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsImFsaWduZWQiLCJhbGlnbmVyRGF0YSIsImVkaXRpbmciLCJuZXdBbGlnbm1lbnRzIiwiX1JlYWN0JHVzZVN0YXRlMiIsInN0YXRlIiwic2V0U3RhdGVfIiwiX3N0YXRlIiwiY2hhcHRlciIsInZlcnNlIiwiYm9va0lkIiwiYmFzaWNSZWZlcmVuY2UiLCJzZXRTdGF0ZSIsIm5ld1N0YXRlIiwicHJldlN0YXRlIiwiY2xlYXJDaGFuZ2VzIiwiY29uc29sZSIsImxvZyIsImNvbmNhdCIsIkpTT04iLCJzdHJpbmdpZnkiLCJjbGVhclN0YXRlIiwib3JpZ2luYWxTY3JpcHR1cmVTZXR0aW5nc18iLCJyZXNvdXJjZUlkIiwib3JpZ2luYWxTY3JpcHR1cmVTZXR0aW5ncyIsInJlc291cmNlTGluayIsInVzZU1lbW8iLCJ2ZXJzZU9iamVjdHMiLCJ2ZXJzZXMiLCJsYW5ndWFnZUlkIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJfdmVyc2VSZWZlcmVuY2UkdmVyc2UiLCJ2ZXJzZVJlZmVyZW5jZSIsIm9yaWdWZXJzZU9iamVjdHMiLCJ2ZXJzZURhdGEiLCJnZXRDdXJyZW50VmVyc2VPYmplY3RzIiwiX3VwZGF0ZWRWZXJzZU9iamVjdHMiLCJ1c2VFZmZlY3QiLCJub3RFbXB0eSIsImFsaWduZWRfIiwicmVzdWx0cyIsImdldENoYW5nZXMiLCJfbmV3U3RhdGUiLCJ1cGRhdGVkVmVyc2VPYmplY3RzXyIsInVwZGF0ZVZlcnNlV2l0aE5ld0FsaWdubWVudHMiLCJfQWxpZ25tZW50SGVscGVycyR1cGQyIiwidGFyZ2V0VmVyc2VPYmplY3RzIiwiX3NjcmlwdHVyZUNvbmZpZyR2ZXJzIiwicmVmIiwidmVyc2VzRm9yUmVmIiwiaXNNaWdyYXRlZCIsInByZWZpeCIsIl9pbml0aWFsVmVyc2VPYmplY3RzIiwidXBkYXRlZEFsaWdubWVudHMiLCJpbml0aWFsQWxpZ25tZW50cyIsInNhbWUiLCJmaXJzdERpZmYiLCJ1cGRhdGVkQWxpZ25tZW50IiwiaW5pdGlhbEFsaWdubWVudCIsImRpZmZlcmVudCIsIm1pZ3JhdGVBbGlnbm1lbnRzIiwibWlncmF0ZVRhcmdldEFsaWdubWVudHNUb09yaWdpbmFsIiwiaGFuZGxlQWxpZ25tZW50Q2xpY2siLCJfaGFuZGxlQWxpZ25tZW50Q2xpY2siLCJfY2FsbGVlIiwiX2FsaWduZXJEYXRhIiwib3JpZ2luYWxWZXJzZVVzZm0iLCJfQWxpZ25tZW50SGVscGVycyRwYXIiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwicGFyc2VVc2ZtVG9Xb3JkQWxpZ25lckRhdGEiLCJ0YXJnZXRXb3JkcyIsInZlcnNlQWxpZ25tZW50cyIsImVycm9yTWVzc2FnZSIsIl9uZXdBbGlnbm1lbnRzIiwidmVyc2VVc2ZtIiwiYWRkQWxpZ25tZW50c1RvVmVyc2VVU0ZNIiwiYWxpZ25lZFZlcnNlT2JqZWN0cyIsInVzZm1WZXJzZVRvSnNvbiIsInNhdmVBbGlnbm1lbnQiLCJjYWxsU2V0U2F2ZWRTdGF0ZSIsImNhbmNlbEFsaWdubWVudCIsInNldEVkaXRpbmciLCJfeCIsIl9zZXRFZGl0aW5nIiwiX2NhbGxlZTIiLCJlZGl0aW5nXyIsIl9uZXdWZXJzZVRleHQiLCJ2ZXJzZVRleHRDaGFuZ2VkRnJvbUxhc3RFZGl0IiwidmVyc2VUZXh0Q2hhbmdlZEZyb21Jbml0aWFsIiwiX0FsaWdubWVudEhlbHBlcnMkdXBkNCIsIl9hbGlnbm1lbnRzQ2hhbmdlZCIsIl9hcmdzMiIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiIsImN1cnJlbnRWZXJzZU9iamVjdHMiLCJzZXRWZXJzZUNoYW5nZWQiLCJfaW5pdGlhbFZlcnNlVGV4dCIsIl90YXJnZXRWZXJzZU9iamVjdHMiLCJfQWxpZ25tZW50SGVscGVycyR1cGQzIiwidW5zYXZlZENoYW5nZXMiLCJ1bnNhdmVkQ2hhbmdlc18iLCJvbkFsaWdubWVudHNDaGFuZ2UiLCJhbGlnbm1lbnRDb21wbGV0ZSIsImFjdGlvbnMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlU2NyaXB0dXJlQWxpZ25tZW50RWRpdC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWlnbm9yZVxyXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcclxuaW1wb3J0IHtcclxuICBBbGlnbm1lbnRIZWxwZXJzLFxyXG4gIG1pZ3JhdGVPcmlnaW5hbExhbmd1YWdlSGVscGVycyxcclxuICBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLFxyXG4gIHVzZm1IZWxwZXJzLFxyXG59IGZyb20gJ3dvcmQtYWxpZ25lci1yY2wnXHJcbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tICdAcmVhY3QtaG9va3ovZGVlcC1lcXVhbCdcclxuaW1wb3J0IHtcclxuICBCb29rT2JqZWN0c1R5cGUsXHJcbiAgU2NyaXB0dXJlQ29uZmlnLFxyXG4gIFNjcmlwdHVyZVJlZmVyZW5jZVR5cGUsXHJcbiAgU2VydmVyQ29uZmlnVHlwZSxcclxuICBWZXJzZU9iamVjdHNUeXBlLFxyXG59IGZyb20gJy4uL3R5cGVzJ1xyXG5pbXBvcnQgeyBnZXRBbGlnbm1lbnRzLCBnZXRTY3JpcHR1cmVSZXNvdXJjZVNldHRpbmdzIH0gZnJvbSAnLi4vdXRpbHMvU2NyaXB0dXJlU2V0dGluZ3MnXHJcbmltcG9ydCB7IE9SSUdJTkFMX1NPVVJDRSB9IGZyb20gJy4uL3V0aWxzJ1xyXG5pbXBvcnQgeyBnZXRWZXJzZXNGb3JSZWYgfSBmcm9tICcuL3VzZVNjcmlwdHVyZSdcclxuXHJcbmludGVyZmFjZSBTdGFydEVkaXQge1xyXG4gICgpOiBQcm9taXNlPHN0cmluZz47XHJcbn1cclxuXHJcbnR5cGUgTGFuZ3VhZ2VUeXBlID0ge1xyXG4gIGxhbmd1YWdlSWQ6IHN0cmluZywgLy8gc2hvcnQgbGFuZ3VhZ2UgY29kZSBzdWNoIGFzIFwiZW5cIlxyXG4gIGRpcmVjdGlvbjogc3RyaW5nLCAvLyBsYW5ndWFnZSBkaXJlY3Rpb24gXCJsdHJcIiBvciBcInJ0bFwiXHJcbn07XHJcblxyXG5pbnRlcmZhY2UgQWxpZ25lckRhdGFUeXBlIHtcclxuICAgIHdvcmRCYW5rPzogT2JqZWN0W10sIC8vIGxpc3Qgb2Ygd29yZGJhbmsgd29yZCAodGFyZ2V0IGxhbmd1YWdlIHdvcmRzKSBpbiBmb3JtYXQgbmVlZGVkIGJ5IHdvcmQtYWxpZ25lci1yY2xcclxuICAgIGFsaWdubWVudHM/OiBPYmplY3RbXSwgLy8gbGlzdCBvZiB3b3JkIGFsaWdubWVudHMgaW4gZm9ybWF0IG5lZWRlZCBieSB3b3JkLWFsaWduZXItcmNsXHJcbiAgICBlcnJvck1lc3NhZ2U/OiBzdHJpbmcsIC8vIGlmIHByZXNlbnQgdGhlbiB3ZSBkb24ndCBoYXZlIG5lY2Vzc2FyeSBkYXRhIHRvIGRvIGFsaWdubWVudFxyXG59XHJcblxyXG5pbnRlcmZhY2UgQWxpZ25lclJlc3VsdHNEYXRhVHlwZSB7XHJcbiAgICB0YXJnZXRXb3Jkcz86IE9iamVjdFtdLCAvLyBsaXN0IG9mIHRhcmdldCBsYW5ndWFnZSB3b3JkcyBpbiBmb3JtYXQgdXNlZCBpbiB3b3JkLWFsaWduZXItcmNsXHJcbiAgICB2ZXJzZUFsaWdubWVudHM/OiBPYmplY3RbXSwgLy8gbGlzdCBvZiB3b3JkIGFsaWdubWVudHMgaW4gZm9ybWF0IHVzZWQgYnkgd29yZC1hbGlnbmVyLXJjbFxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNjcmlwdHVyZUFMaWdubWVudEVkaXRQcm9wcyB7XHJcbiAgLy8gaW5kZXggdG8gdXNlIGZvciBib29rIChlLmcuIGAwMWAgZm9yIGBHRU5gKVxyXG4gIGJvb2tJbmRleDogc3RyaW5nLFxyXG4gIC8vIGN1cnJlbnQgdmVyc2Ugc2VsZWN0ZWQgZnJvbSBpbml0aWFsVmVyc2VPYmplY3RzW11cclxuICBjdXJyZW50SW5kZXg6IG51bWJlcixcclxuICAvLyByZWZlcmVuY2UgZm9yIHZlcnNlIHNlbGVjdGVkIGZvciBhbGlnbm1lbnRcclxuICBjdXJyZW50VmVyc2VSZWY6IFNjcmlwdHVyZVJlZmVyZW5jZVR5cGUsXHJcbiAgLy8gaWYgdHJ1ZSB0aGVuIGVkaXRpbmcgaXMgYWxsb3dlZFxyXG4gIGVuYWJsZUVkaXQ6IGJvb2xlYW4sXHJcbiAgLy8gaWYgdHJ1ZSB0aGVuIGFsaWdubWVudCBpcyBhbGxvd2VkXHJcbiAgZW5hYmxlQWxpZ25tZW50OiBib29sZWFuLFxyXG4gIC8vIGNvbmZpZ3VyYXRpb24gdG8gdXNlIGZvciBodHRwIGNvbW11bmljYXRpb25cclxuICBodHRwQ29uZmlnOiBTZXJ2ZXJDb25maWdUeXBlLFxyXG4gIC8vIGFycmF5IG9mIHRoZSBpbml0aWFsIHZlcnNlT2JqZWN0cyBmb3IgY3VycmVudCByZWZlcmVuY2VcclxuICBpbml0aWFsVmVyc2VPYmplY3RzOiBWZXJzZU9iamVjdHNUeXBlLFxyXG4gIC8vIGluaXRpYWwgdGV4dCBmb3IgdmVyc2VcclxuICBpbml0aWFsVmVyc2VUZXh0OiBzdHJpbmcsXHJcbiAgLy8gZmxhZyB0aGF0IHdlIGFyZSB3b3JraW5nIG9uIE5UIGJvb2tcclxuICBpc05ld1Rlc3RhbWVudDogYm9vbGVhbixcclxuICAvLyB1c2VyIG5hbWUgb2YgbG9nZ2VkIGluIHVzZXJcclxuICBsb2dnZWRJblVzZXI6IHN0cmluZyxcclxuICAvLyBvd25lciB0byB1c2Ugd2hlbiBmZXRjaGluZyBvcmlnaW5hbCBsYW5ndWFnZSByZXNvdXJjZXNcclxuICBvcmlnaW5hbExhbmd1YWdlT3duZXI6IHN0cmluZyxcclxuICAvLyB1cmwgZm9yIHRoZSBvcmlnaW5hbCBsYW5ndWFnZSByZXBvXHJcbiAgb3JpZ2luYWxSZXBvVXJsOiBzdHJpbmcsXHJcbiAgLy8gb3JpZ2luYWwgc2NyaXB0dXJlIGJvb2tPYmplY3RzIGZvciBjdXJyZW50IGJvb2tcclxuICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzOiBCb29rT2JqZWN0c1R5cGUsXHJcbiAgLyoqIGN1cnJlbnQgcmVmZXJlbmNlICoqL1xyXG4gIHJlZmVyZW5jZTogU2NyaXB0dXJlUmVmZXJlbmNlVHlwZTtcclxuICAvLyBkZXRhaWxzIGFib3V0IHRoZSBjdXJyZW50IHNjcmlwdHVyZSBsb2FkZWRcclxuICBzY3JpcHR1cmVDb25maWc6IFNjcmlwdHVyZUNvbmZpZyxcclxuICAvLyBzZXR0aW5ncyB0byBiZSB1c2VkIGZvciBzY3JpcHR1cmVcclxuICBzY3JpcHR1cmVTZXR0aW5nczogeyB9LFxyXG4gIC8vIGNhbGxiYWNrIHRvIHNhdmUgY3VycmVudCB2ZXJzZSBlZGl0IGFuZCBhbGlnbm1lbnQgY2hhbmdlc1xyXG4gIHNldFNhdmVkQ2hhbmdlczogRnVuY3Rpb24sXHJcbiAgLy8gc291cmNlIGxhbmd1YWdlIGNvZGUgc3VjaCBhcyBgaGJvYFxyXG4gIHNvdXJjZUxhbmd1YWdlOiBzdHJpbmcsXHJcbiAgLy8gY2FsbGJhY2sgdG8gY3JlYXRlIGEgdXNlciBicmFuY2ggZm9yIHNhdmluZyBlZGl0IGRhdGFcclxuICBzdGFydEVkaXRCcmFuY2g6IFN0YXJ0RWRpdCxcclxuICAvLyBjdXJyZW50IHRhcmdldCBsYW5ndWFnZVxyXG4gIHRhcmdldExhbmd1YWdlOiBMYW5ndWFnZVR5cGUsXHJcbiAgLy8gdGl0bGUgdG8gc2hvdyBpbiBhbGlnbm1lbnRcclxuICB0aXRsZTogc3RyaW5nLFxyXG4gICAvLyBicmFuY2ggbmFtZSBjdXJyZW50bHkgYmVpbmcgdXNlZCAoZS5nLiBgbWFzdGVyYCBvciB1c2VyIGJyYW5jaClcclxuICB3b3JraW5nUmVzb3VyY2VCcmFuY2g6IHN0cmluZyxcclxufVxyXG5cclxuLyoqXHJcbiAqIGRldGVybWluZXMgaWYgYWxpZ25tZW50IGlzIGNvbXBsZXRlIGJhc2VkIG9uIHRhcmdldCBVU0ZNIGFuZCBvcmlnaW5hbCBsYW5ndWFnZSB2ZXJzZSBvYmplY3RzXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSB0YXJnZXRWZXJzZVVTRk1cclxuICogQHBhcmFtIHtWZXJzZU9iamVjdHNUeXBlfSBvcmlnaW5hbFZlcnNlT2JqZWN0c1xyXG4gKi9cclxuZnVuY3Rpb24gaXNVc2ZtQWxpZ25lZCh0YXJnZXRWZXJzZVVTRk06c3RyaW5nLCBvcmlnaW5hbFZlcnNlT2JqZWN0czpWZXJzZU9iamVjdHNUeXBlKTpib29sZWFuIHtcclxuICBvcmlnaW5hbFZlcnNlT2JqZWN0cyA9IG9yaWdpbmFsVmVyc2VPYmplY3RzPy5sZW5ndGggPyBvcmlnaW5hbFZlcnNlT2JqZWN0cyA6IG51bGwgLy8gbWFrZSBzdXJlIG5vdCBwYXNzaW5nIGVtcHR5IEFycmF5XHJcblxyXG4gIGlmICggdGFyZ2V0VmVyc2VVU0ZNICYmIG9yaWdpbmFsVmVyc2VPYmplY3RzKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGFsaWdubWVudHMsXHJcbiAgICAgIHdvcmRCYW5rLFxyXG4gICAgfSA9IEFsaWdubWVudEhlbHBlcnMuZXh0cmFjdEFsaWdubWVudHNGcm9tVGFyZ2V0VmVyc2UodGFyZ2V0VmVyc2VVU0ZNLCBvcmlnaW5hbFZlcnNlT2JqZWN0cylcclxuICAgIHJldHVybiBBbGlnbm1lbnRIZWxwZXJzLmFyZUFsZ25tZW50c0NvbXBsZXRlKHdvcmRCYW5rLCBhbGlnbm1lbnRzKVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIG51bGxcclxufVxyXG5cclxuLyoqXHJcbiAqIGdldCB0aGUgdXBkYXRlZCBVU0ZNIGZvciB0YXJnZXQgdmVyc2UgZnJvbSB0aGUgdXBkYXRlZCB2ZXJzZSBvYmplY3RzIGFuZCBsYXRlc3QgdGV4dFxyXG4gKiBAcGFyYW0ge1ZlcnNlT2JqZWN0c1R5cGV9IHVwZGF0ZWRWZXJzZU9iamVjdHNcclxuICogQHBhcmFtIHtWZXJzZU9iamVjdHNUeXBlfSBpbml0aWFsVmVyc2VPYmplY3RzXHJcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gdmVyc2VUZXh0Q2hhbmdlZFxyXG4gKiBAcGFyYW0ge3N0cmluZ30gbmV3VmVyc2VUZXh0XHJcbiAqL1xyXG5mdW5jdGlvbiBnZXRDdXJyZW50VmVyc2VVc2ZtKHVwZGF0ZWRWZXJzZU9iamVjdHM6VmVyc2VPYmplY3RzVHlwZSwgaW5pdGlhbFZlcnNlT2JqZWN0czpWZXJzZU9iamVjdHNUeXBlLCB2ZXJzZVRleHRDaGFuZ2VkOiBib29sZWFuLCBuZXdWZXJzZVRleHQ6c3RyaW5nKTpzdHJpbmcge1xyXG4gIGxldCB0YXJnZXRWZXJzZVVTRk0gPSBudWxsXHJcbiAgY29uc3QgY3VycmVudFZlcnNlT2JqZWN0c18gPSB1cGRhdGVkVmVyc2VPYmplY3RzIHx8IGluaXRpYWxWZXJzZU9iamVjdHNcclxuXHJcbiAgaWYgKHZlcnNlVGV4dENoYW5nZWQgJiYgbmV3VmVyc2VUZXh0KSB7XHJcbiAgICBjb25zdCB7IHRhcmdldFZlcnNlVGV4dCB9ID0gQWxpZ25tZW50SGVscGVycy51cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZShjdXJyZW50VmVyc2VPYmplY3RzXywgbmV3VmVyc2VUZXh0KVxyXG4gICAgdGFyZ2V0VmVyc2VVU0ZNID0gdGFyZ2V0VmVyc2VUZXh0XHJcbiAgfSBlbHNlIHtcclxuICAgIHRhcmdldFZlcnNlVVNGTSA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuY29udmVydFZlcnNlRGF0YVRvVVNGTShjdXJyZW50VmVyc2VPYmplY3RzXylcclxuICB9XHJcbiAgcmV0dXJuIHRhcmdldFZlcnNlVVNGTVxyXG59XHJcblxyXG4vKipcclxuICogcmV0dXJuIHRydWUgaWYgb25seSBzcGFjZXMgaW4gY29udGVudFxyXG4gKiBAcGFyYW0ge3N0cmluZ30gdGV4dFxyXG4gKi9cclxuZnVuY3Rpb24gYWxsU3BhY2VzKHRleHQ6c3RyaW5nKTpib29sZWFuIHtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHRleHQubGVuZ3RoOyBpKyspIHtcclxuICAgIGlmICh0ZXh0W2ldICE9PSAnICcpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiB0cnVlXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBtYWtlIHN1cmUgdGhlcmUgaXMgYSBzaWduaWZpY2FudCBjaGFuZ2UgdG8gdGhlIHRleHRcclxuICogQHBhcmFtIHtzdHJpbmd9IG5ld1ZlcnNlVGV4dFxyXG4gKiBAcGFyYW0ge3N0cmluZ30gaW5pdGlhbFZlcnNlVGV4dFxyXG4gKi9cclxuZnVuY3Rpb24gaGFzVGV4dENoYW5nZWRTaWduaWZpY2FudGx5KG5ld1ZlcnNlVGV4dDpzdHJpbmcsIGluaXRpYWxWZXJzZVRleHQ6c3RyaW5nKTpib29sZWFuIHtcclxuICBsZXQgY2hhbmdlZCA9IG5ld1ZlcnNlVGV4dCAhPT0gaW5pdGlhbFZlcnNlVGV4dFxyXG5cclxuICBpZiAoY2hhbmdlZCAmJiBuZXdWZXJzZVRleHQpIHsgLy8gbWFrZSBzdXJlIGl0J3Mgc2lnbmlmaWNhbnRcclxuICAgIGNvbnN0IGxlbmd0aERpZmZlcmVuY2UgPSBuZXdWZXJzZVRleHQubGVuZ3RoIC0gaW5pdGlhbFZlcnNlVGV4dD8ubGVuZ3RoXHJcbiAgICBjb25zdCBmaXJzdFBhcnRPZkluaXRpYWwgPSBuZXdWZXJzZVRleHQuc3Vic3RyaW5nKDAsIGluaXRpYWxWZXJzZVRleHQubGVuZ3RoKVxyXG5cclxuICAgIGlmICgobGVuZ3RoRGlmZmVyZW5jZSA+IDApICYmIChpbml0aWFsVmVyc2VUZXh0ID09PSBmaXJzdFBhcnRPZkluaXRpYWwpKSB7IC8vIGlmIGluaXRpYWwgcGFydHMgbWF0Y2hcclxuICAgICAgLy8gYWRkIGV4ZW1wdGlvbiBpZiB0aGUgdXNmbSBlbmRzIHdpdGggYSBxdW90ZSB0YWdcclxuICAgICAgY29uc3QgbGFzdENoYXJzID0gbmV3VmVyc2VUZXh0LnN1YnN0cmluZyhuZXdWZXJzZVRleHQubGVuZ3RoIC0gbGVuZ3RoRGlmZmVyZW5jZSlcclxuICAgICAgY29uc3QgcG9zID0gbmV3VmVyc2VUZXh0Lmxhc3RJbmRleE9mKCdcXFxcJylcclxuICAgICAgY29uc3QgbGFzdFVzZm1UYWcgPSBuZXdWZXJzZVRleHRbcG9zICsgMV1cclxuICAgICAgY29uc3QgZW5kc1dpdGhRdW90ZSA9IChwb3MgPiAwKSAmJiAobGFzdFVzZm1UYWcgPT09ICdxJylcclxuXHJcbiAgICAgIGlmIChlbmRzV2l0aFF1b3RlICYmIGFsbFNwYWNlcyhsYXN0Q2hhcnMpKSB7XHJcbiAgICAgICAgY2hhbmdlZCA9IGZhbHNlXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIGNoYW5nZWRcclxufVxyXG5cclxuLy8gbWFuYWdlIHZlcnNlIGVkaXQgYW5kIGFsaWdubWVudCBzdGF0ZXNcclxuZXhwb3J0IGZ1bmN0aW9uIHVzZVNjcmlwdHVyZUFsaWdubWVudEVkaXQoe1xyXG4gIGN1cnJlbnRJbmRleCxcclxuICBlbmFibGVFZGl0LFxyXG4gIGVuYWJsZUFsaWdubWVudCxcclxuICBodHRwQ29uZmlnLFxyXG4gIGluaXRpYWxWZXJzZU9iamVjdHMsXHJcbiAgaW5pdGlhbFZlcnNlVGV4dCxcclxuICBpc05ld1Rlc3RhbWVudCxcclxuICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXHJcbiAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyxcclxuICBvcmlnaW5hbFJlcG9VcmwsXHJcbiAgcmVmZXJlbmNlLFxyXG4gIHNjcmlwdHVyZUNvbmZpZyxcclxuICBzY3JpcHR1cmVTZXR0aW5ncyxcclxuICBzZXRTYXZlZENoYW5nZXMsXHJcbiAgc291cmNlTGFuZ3VhZ2UsXHJcbiAgc3RhcnRFZGl0QnJhbmNoLFxyXG4gIHRhcmdldExhbmd1YWdlLFxyXG4gIHRpdGxlLFxyXG4gIHdvcmtpbmdSZXNvdXJjZUJyYW5jaCxcclxufSA6IFNjcmlwdHVyZUFMaWdubWVudEVkaXRQcm9wcykge1xyXG4gIHR5cGUgU3RhdGVUeXBlcyA9IHtcclxuICAgIGFsaWduZWQ6IGJvb2xlYW4sXHJcbiAgICBhbGlnbmVyRGF0YTogQWxpZ25lckRhdGFUeXBlLFxyXG4gICAgZWRpdGluZzogYm9vbGVhbixcclxuICAgIG5ld0FsaWdubWVudHM6IEFsaWduZXJSZXN1bHRzRGF0YVR5cGUsXHJcbiAgICBuZXdWZXJzZVRleHQ6IHN0cmluZyxcclxuICAgIHVwZGF0ZWRWZXJzZU9iamVjdHM6IFZlcnNlT2JqZWN0c1R5cGUsXHJcbiAgICB2ZXJzZVRleHRDaGFuZ2VkOiBib29sZWFuLFxyXG4gIH1cclxuXHJcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV9dID0gUmVhY3QudXNlU3RhdGUoe1xyXG4gICAgYWxpZ25lZDogZmFsc2UsXHJcbiAgICBhbGlnbmVyRGF0YTogbnVsbCxcclxuICAgIGVkaXRpbmc6IGZhbHNlLFxyXG4gICAgbmV3QWxpZ25tZW50czogbnVsbCxcclxuICAgIG5ld1ZlcnNlVGV4dDogbnVsbCxcclxuICAgIHVwZGF0ZWRWZXJzZU9iamVjdHM6IG51bGwsXHJcbiAgICB2ZXJzZVRleHRDaGFuZ2VkOiBmYWxzZSxcclxuICB9KVxyXG5cclxuICBjb25zdCBfc3RhdGU6IFN0YXRlVHlwZXMgPSBzdGF0ZSAvLyBUcmlja3k6IHdvcmstYXJvdW5kIGZvciBidWcgdGhhdCBzdGFuZGFyZCB0eXBlc2NyaXB0IHR5cGUgY2FzdGluZyBkb2VzIG5vdCB3b3JrIGluIC50c3ggZmlsZXNcclxuICBjb25zdCB7XHJcbiAgICBhbGlnbmVkLFxyXG4gICAgYWxpZ25lckRhdGEsXHJcbiAgICBlZGl0aW5nLFxyXG4gICAgbmV3QWxpZ25tZW50cyxcclxuICAgIG5ld1ZlcnNlVGV4dCxcclxuICAgIHVwZGF0ZWRWZXJzZU9iamVjdHMsXHJcbiAgICB2ZXJzZVRleHRDaGFuZ2VkLFxyXG4gIH0gPSBfc3RhdGVcclxuICBjb25zdCBjaGFwdGVyID0gcmVmZXJlbmNlPy5jaGFwdGVyXHJcbiAgY29uc3QgdmVyc2UgPSByZWZlcmVuY2U/LnZlcnNlXHJcbiAgY29uc3QgYm9va0lkID0gcmVmZXJlbmNlPy5ib29rSWRcclxuICBjb25zdCBiYXNpY1JlZmVyZW5jZSA9IHsgLy8gb25seSBoYXMgdGhlIHRocmVlIGJhc2ljIGZpZWxkc1xyXG4gICAgY2hhcHRlcixcclxuICAgIHZlcnNlLFxyXG4gICAgYm9va0lkLFxyXG4gIH1cclxuXHJcbiAgZnVuY3Rpb24gc2V0U3RhdGUobmV3U3RhdGUpIHtcclxuICAgIHNldFN0YXRlXyhwcmV2U3RhdGUgPT4gKHsgLi4ucHJldlN0YXRlLCAuLi5uZXdTdGF0ZSB9KSlcclxuICB9XHJcblxyXG4gIGZ1bmN0aW9uIGNsZWFyQ2hhbmdlcygpIHtcclxuICAgIGNvbnNvbGUubG9nKGBjbGVhckNoYW5nZXMoKSAtICR7SlNPTi5zdHJpbmdpZnkoYmFzaWNSZWZlcmVuY2UpfWApXHJcbiAgICBjb25zdCBjbGVhclN0YXRlID0ge1xyXG4gICAgICAuLi5zdGF0ZSxcclxuICAgICAgYWxpZ25lckRhdGE6IG51bGwsXHJcbiAgICAgIGVkaXRpbmc6IGZhbHNlLFxyXG4gICAgICBuZXdBbGlnbm1lbnRzOiBudWxsLFxyXG4gICAgICBuZXdWZXJzZVRleHQ6IG51bGwsXHJcbiAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHM6IG51bGwsXHJcbiAgICAgIHZlcnNlVGV4dENoYW5nZWQ6IGZhbHNlLFxyXG4gICAgfVxyXG5cclxuICAgIGlmICghaXNFcXVhbChzdGF0ZSwgY2xlYXJTdGF0ZSkpIHtcclxuICAgICAgY29uc29sZS5sb2coYGNsZWFyQ2hhbmdlcygpIC0gcmVmZXJlbmNlIGNoYW5nZWQsIHJlc2V0IGVkaXQvYWxpZ25tZW50IHN0YXRlIHZhcmlhYmxlc2ApXHJcbiAgICAgIHNldFN0YXRlKGNsZWFyU3RhdGUpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdCBvcmlnaW5hbFNjcmlwdHVyZVNldHRpbmdzXyA9IHtcclxuICAgIC4uLnNjcmlwdHVyZVNldHRpbmdzLFxyXG4gICAgcmVzb3VyY2VJZDogT1JJR0lOQUxfU09VUkNFLFxyXG4gIH1cclxuXHJcbiAgLy8gQHRzLWlnbm9yZVxyXG4gIGh0dHBDb25maWcgPSBodHRwQ29uZmlnIHx8IHt9XHJcbiAgY29uc3Qgb3JpZ2luYWxTY3JpcHR1cmVTZXR0aW5ncyA9IGdldFNjcmlwdHVyZVJlc291cmNlU2V0dGluZ3MoXHJcbiAgICBib29rSWQsIG9yaWdpbmFsU2NyaXB0dXJlU2V0dGluZ3NfLCBpc05ld1Rlc3RhbWVudCwgb3JpZ2luYWxSZXBvVXJsLFxyXG4gIClcclxuXHJcbiAgaWYgKCFlbmFibGVBbGlnbm1lbnQpIHsgLy8gaWYgbm90IGVuYWJsZWQsIHRoZW4gd2UgZG9uJ3QgZmV0Y2ggcmVzb3VyY2VcclxuICAgIG9yaWdpbmFsU2NyaXB0dXJlU2V0dGluZ3MucmVzb3VyY2VMaW5rID0gbnVsbFxyXG4gIH1cclxuXHJcbiAgY29uc3Qgb3JpZ2luYWxWZXJzZU9iamVjdHMgPSBSZWFjdC51c2VNZW1vKCgpID0+IHsgLy8gZ2V0IHRoZSBvcmlnaW5hbCBsYW5ndWFnZSB2ZXJzZU9iamVjdHNcclxuICAgIGNvbnN0IHZlcnNlT2JqZWN0cyA9IFtdXHJcblxyXG4gICAgaWYgKG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMpIHtcclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICBjb25zdCB2ZXJzZXMgPSBnZXRWZXJzZXNGb3JSZWYoYmFzaWNSZWZlcmVuY2UsIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMsIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM/Lmxhbmd1YWdlSWQpXHJcblxyXG4gICAgICBpZiAodmVyc2VzPy5sZW5ndGgpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IHZlcnNlUmVmZXJlbmNlIG9mIHZlcnNlcykge1xyXG4gICAgICAgICAgY29uc3Qgb3JpZ1ZlcnNlT2JqZWN0cyA9IHZlcnNlUmVmZXJlbmNlPy52ZXJzZURhdGE/LnZlcnNlT2JqZWN0c1xyXG5cclxuICAgICAgICAgIGlmIChvcmlnVmVyc2VPYmplY3RzKSB7XHJcbiAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KHZlcnNlT2JqZWN0cywgb3JpZ1ZlcnNlT2JqZWN0cylcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB2ZXJzZU9iamVjdHNcclxuICB9LCBbb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cywgY2hhcHRlciwgdmVyc2UsIGJvb2tJZF0pXHJcblxyXG4gIC8qKlxyXG4gICAqIGdldCBjdXJyZW50IHZlcnNlT2JqZWN0c1xyXG4gICAqIEBwYXJhbSB7VmVyc2VPYmplY3RzVHlwZX0gX3VwZGF0ZWRWZXJzZU9iamVjdHMgLSBvcHRpb25hbCBvdmVycmlkZXMgdXBkYXRlZFZlcnNlT2JqZWN0c1xyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIGdldEN1cnJlbnRWZXJzZU9iamVjdHMoX3VwZGF0ZWRWZXJzZU9iamVjdHM6IFZlcnNlT2JqZWN0c1R5cGUgPSB1cGRhdGVkVmVyc2VPYmplY3RzKSB7XHJcbiAgICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzXyA9IF91cGRhdGVkVmVyc2VPYmplY3RzIHx8IGluaXRpYWxWZXJzZU9iamVjdHNcclxuICAgIHJldHVybiBjdXJyZW50VmVyc2VPYmplY3RzX1xyXG4gIH1cclxuXHJcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gdXBkYXRlIGFsaWdubWVudCBzdGF0dXMgd2hlbiBhbGlnbmVyIGlzIGhpZGRlblxyXG4gICAgY29uc3Qgbm90RW1wdHkgPSAhIWluaXRpYWxWZXJzZU9iamVjdHNcclxuICAgIGxldCBhbGlnbmVkXyA9IGZhbHNlXHJcblxyXG4gICAgaWYgKCFhbGlnbmVyRGF0YSkgeyAvLyBza2lwIGlmIGFsaWduZXIgaXMgYmVpbmcgc2hvd25cclxuICAgICAgaWYgKG5vdEVtcHR5KSB7IC8vIHNraXAgaWYgZW1wdHlcclxuICAgICAgICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzXyA9IGdldEN1cnJlbnRWZXJzZU9iamVjdHMoKVxyXG5cclxuICAgICAgICBpZiAoIWVuYWJsZUFsaWdubWVudCkge1xyXG4gICAgICAgICAgYWxpZ25lZF8gPSB0cnVlXHJcbiAgICAgICAgfSBlbHNlIGlmIChuZXdWZXJzZVRleHQgJiYgKG5ld1ZlcnNlVGV4dCAhPT0gaW5pdGlhbFZlcnNlVGV4dCkpIHtcclxuICAgICAgICAgIGNvbnN0IHJlc3VsdHMgPSBBbGlnbm1lbnRIZWxwZXJzLnVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlKGN1cnJlbnRWZXJzZU9iamVjdHNfLCBuZXdWZXJzZVRleHQpXHJcbiAgICAgICAgICBhbGlnbmVkXyA9IGlzVXNmbUFsaWduZWQocmVzdWx0cz8udGFyZ2V0VmVyc2VUZXh0LCBvcmlnaW5hbFZlcnNlT2JqZWN0cylcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgdGFyZ2V0VmVyc2VVU0ZNID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5jb252ZXJ0VmVyc2VEYXRhVG9VU0ZNKGN1cnJlbnRWZXJzZU9iamVjdHNfKVxyXG4gICAgICAgICAgYWxpZ25lZF8gPSBpc1VzZm1BbGlnbmVkKHRhcmdldFZlcnNlVVNGTSwgb3JpZ2luYWxWZXJzZU9iamVjdHMpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoYWxpZ25lZCAhPT0gYWxpZ25lZF8pIHtcclxuICAgICAgICBzZXRTdGF0ZSh7IGFsaWduZWQ6IGFsaWduZWRfIH0pXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9LCBbaW5pdGlhbFZlcnNlT2JqZWN0cywgYWxpZ25lckRhdGEsIG5ld1ZlcnNlVGV4dCwgaW5pdGlhbFZlcnNlVGV4dCwgZW5hYmxlQWxpZ25tZW50LCBvcmlnaW5hbFZlcnNlT2JqZWN0c10pXHJcblxyXG4gIC8qKlxyXG4gICAqIGdldCBjaGFuZ2VzIGZvciBzYXZpbmdcclxuICAgKiBAcGFyYW0ge29iamVjdH0gbmV3U3RhdGUgLSBvcHRpb25hbGx5IHBhc3MgaW4gbmV3IHN0YXRlICh0byBvdmVycmlkZSBzdGF0ZSlcclxuICAgKi9cclxuICBmdW5jdGlvbiBnZXRDaGFuZ2VzKG5ld1N0YXRlID0ge30pIHtcclxuICAgIGNvbnNvbGUubG9nKGBnZXRDaGFuZ2VzIC0gc3RhcnRlZCAke2N1cnJlbnRJbmRleH0gLSBwYXNzZWQgc3RhdGVgLCBuZXdTdGF0ZSlcclxuICAgIGNvbnN0IF9uZXdTdGF0ZSA9IHtcclxuICAgICAgc3RhdGUsXHJcbiAgICAgIC4uLm5ld1N0YXRlLFxyXG4gICAgfVxyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgY29uc3Qge1xyXG4gICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgIG5ld0FsaWdubWVudHMsXHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgbmV3VmVyc2VUZXh0LFxyXG4gICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHMsXHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgdmVyc2VUZXh0Q2hhbmdlZCxcclxuICAgIH0gPSBfbmV3U3RhdGVcclxuICAgIGxldCB1cGRhdGVkVmVyc2VPYmplY3RzXyA9IHVwZGF0ZWRWZXJzZU9iamVjdHNcclxuXHJcbiAgICBpZiAobmV3QWxpZ25tZW50cykgeyAvLyBpZiB1bnNhdmVkIGFsaWdubWVudCBjaGFuZ2VzLCBhcHBseSB0aGVtXHJcbiAgICAgIGNvbnNvbGUubG9nKGBnZXRDaGFuZ2VzIC0gYXBwbHlpbmcgdW5zYXZlZCBhbGlnbm1lbnRzfWApXHJcbiAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHNfID0gdXBkYXRlVmVyc2VXaXRoTmV3QWxpZ25tZW50cygpXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHZlcnNlVGV4dENoYW5nZWQgJiYgbmV3VmVyc2VUZXh0KSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGBnZXRDaGFuZ2VzIC0gYXBwbHlpbmcgbmV3IHRleHQ6YCwgbmV3VmVyc2VUZXh0KVxyXG4gICAgICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzXyA9IGdldEN1cnJlbnRWZXJzZU9iamVjdHModXBkYXRlZFZlcnNlT2JqZWN0c18pXHJcbiAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHNfICYmIGNvbnNvbGUubG9nKGBnZXRDaGFuZ2VzIC0gYXBwbHlpbmcgdXBkYXRlZCBhbGlnbm1lbnRzYClcclxuICAgICAgY29uc3QgeyB0YXJnZXRWZXJzZU9iamVjdHMgfSA9IEFsaWdubWVudEhlbHBlcnMudXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UoY3VycmVudFZlcnNlT2JqZWN0c18sIG5ld1ZlcnNlVGV4dClcclxuICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0c18gPSB0YXJnZXRWZXJzZU9iamVjdHNcclxuICAgIH0gZWxzZSB7IC8vIG9ubHkgYWxpZ25tZW50IGNoYW5nZXMgdG8gdXBsb2FkXHJcbiAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHNfICYmIGNvbnNvbGUubG9nKGBnZXRDaGFuZ2VzIC0gYXBwbHlpbmcgdXBkYXRlZCBhbGlnbm1lbnRzYCwgeyBuZXdWZXJzZVRleHQsIHVwZGF0ZWRWZXJzZU9iamVjdHNfIH0pXHJcbiAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHNfID0gdXBkYXRlZFZlcnNlT2JqZWN0c18gfHwgaW5pdGlhbFZlcnNlT2JqZWN0c1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh1cGRhdGVkVmVyc2VPYmplY3RzXykge1xyXG4gICAgICBjb25zdCByZWYgPSBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZj8uW2N1cnJlbnRJbmRleF1cclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBuZXdWZXJzZVRleHQsXHJcbiAgICAgICAgcmVmLFxyXG4gICAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHM6IHVwZGF0ZWRWZXJzZU9iamVjdHNfLFxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHt9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBjb21wYXJlIGluaXRpYWwgYWxpZ25tZW50cyB3aXRoIGZpbmFsIHRvIHNlZSBpZiBjaGFuZ2VkXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHByZWZpeFxyXG4gICAqIEBwYXJhbSB7VmVyc2VPYmplY3RzVHlwZX0gX3VwZGF0ZWRWZXJzZU9iamVjdHNcclxuICAgKiBAcGFyYW0ge1ZlcnNlT2JqZWN0c1R5cGV9IF9pbml0aWFsVmVyc2VPYmplY3RzXHJcbiAgICogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgY2hhbmdlZFxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIGlzTWlncmF0ZWQocHJlZml4OnN0cmluZywgX3VwZGF0ZWRWZXJzZU9iamVjdHM6VmVyc2VPYmplY3RzVHlwZSA9IHVwZGF0ZWRWZXJzZU9iamVjdHMsIF9pbml0aWFsVmVyc2VPYmplY3RzOlZlcnNlT2JqZWN0c1R5cGUgPSBpbml0aWFsVmVyc2VPYmplY3RzKTpib29sZWFuIHtcclxuICAgIGNvbnN0IHVwZGF0ZWRBbGlnbm1lbnRzID0gZ2V0QWxpZ25tZW50cyhfdXBkYXRlZFZlcnNlT2JqZWN0cylcclxuICAgIGNvbnN0IGluaXRpYWxBbGlnbm1lbnRzID0gZ2V0QWxpZ25tZW50cyhfaW5pdGlhbFZlcnNlT2JqZWN0cylcclxuICAgIGxldCBzYW1lID0gdXBkYXRlZEFsaWdubWVudHMubGVuZ3RoID09PSBpbml0aWFsQWxpZ25tZW50cy5sZW5ndGggLy8gZmlyc3QgbWFrZSBzdXJlIGxlbmd0aHMgYXJlIHRoZSBzYW1lXHJcbiAgICBsZXQgZmlyc3REaWZmXHJcblxyXG4gICAgaWYgKHNhbWUpIHsgLy8gZXZlbiBpZiBsZW5ndGhzIGFyZSB0aGUgc2FtZSBkb3VibGUgY2hlY2sgZWFjaCBhbGlnbm1lbnRcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB1cGRhdGVkQWxpZ25tZW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IHVwZGF0ZWRBbGlnbm1lbnQgPSB1cGRhdGVkQWxpZ25tZW50c1tpXVxyXG4gICAgICAgIGNvbnN0IGluaXRpYWxBbGlnbm1lbnQgPSBpbml0aWFsQWxpZ25tZW50c1tpXVxyXG5cclxuICAgICAgICBpZiAoIWlzRXF1YWwodXBkYXRlZEFsaWdubWVudCwgaW5pdGlhbEFsaWdubWVudCkpIHtcclxuICAgICAgICAgIGZpcnN0RGlmZiA9IGlcclxuICAgICAgICAgIHNhbWUgPSBmYWxzZVxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBkaWZmZXJlbnQgPSAhc2FtZVxyXG5cclxuICAgIGlmIChkaWZmZXJlbnQpIHtcclxuICAgICAgY29uc29sZS5sb2coYCR7cHJlZml4fSAtIHRhcmdldCB2ZXJzZSBhbGlnbm1lbnRzIG1pZ3JhdGVkIHRvIG1hdGNoIG9yaWdpbmFsIGxhbmd1YWdlLCBmaXJzdCBkaWZmZXJlbmNlIGlzIGF0ICR7Zmlyc3REaWZmfWAsIHVwZGF0ZWRWZXJzZU9iamVjdHMsIGluaXRpYWxWZXJzZU9iamVjdHMpXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGRpZmZlcmVudFxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogZG8gYWxpZ25tZW50cyBtaWdyYXRpb25cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHJlZml4XHJcbiAgICogQHBhcmFtIHtWZXJzZU9iamVjdHNUeXBlfSB1cGRhdGVkVmVyc2VPYmplY3RzXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gbWlncmF0ZUFsaWdubWVudHMocHJlZml4OiBzdHJpbmcsIHVwZGF0ZWRWZXJzZU9iamVjdHM6IFZlcnNlT2JqZWN0c1R5cGUgPSBudWxsKTogVmVyc2VPYmplY3RzVHlwZSB7XHJcbiAgICB1cGRhdGVkVmVyc2VPYmplY3RzID0gdXBkYXRlZFZlcnNlT2JqZWN0cyB8fCBnZXRDdXJyZW50VmVyc2VPYmplY3RzKClcclxuICAgIGNvbnN0IF91cGRhdGVkVmVyc2VPYmplY3RzID0gbWlncmF0ZU9yaWdpbmFsTGFuZ3VhZ2VIZWxwZXJzLm1pZ3JhdGVUYXJnZXRBbGlnbm1lbnRzVG9PcmlnaW5hbCh1cGRhdGVkVmVyc2VPYmplY3RzLCBvcmlnaW5hbFZlcnNlT2JqZWN0cylcclxuICAgIGlzTWlncmF0ZWQocHJlZml4LCBfdXBkYXRlZFZlcnNlT2JqZWN0cywgdXBkYXRlZFZlcnNlT2JqZWN0cylcclxuICAgIHJldHVybiBfdXBkYXRlZFZlcnNlT2JqZWN0c1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogY2FsbGJhY2sgZm9yIHdoZW4gdXNlciBjbGlja2VkIG9uIGFsaWdubWVudCBidXR0b24gLSB3aWxsIHNob3cgaWYgbm90IGFscmVhZHkgc2hvd25cclxuICAgKi9cclxuICBhc3luYyBmdW5jdGlvbiBoYW5kbGVBbGlnbm1lbnRDbGljaygpIHtcclxuICAgIGlmIChlbmFibGVBbGlnbm1lbnQpIHtcclxuICAgICAgbGV0IF9hbGlnbmVyRGF0YTogQWxpZ25lckRhdGFUeXBlID0gbnVsbFxyXG4gICAgICBhd2FpdCBzdGFydEVkaXRCcmFuY2goKVxyXG5cclxuICAgICAgaWYgKCFhbGlnbmVyRGF0YSkgeyAvLyBpZiB3b3JkIGFsaWduZXIgbm90IHNob3duXHJcbiAgICAgICAgY29uc29sZS5sb2coYGhhbmRsZUFsaWdubWVudENsaWNrIC0gdG9nZ2xlIE9OIGFsaWdubWVudGApXHJcbiAgICAgICAgbGV0IG9yaWdpbmFsVmVyc2VVc2ZtID0gbnVsbFxyXG4gICAgICAgIGxldCBfdXBkYXRlZFZlcnNlT2JqZWN0cyA9IHVwZGF0ZWRWZXJzZU9iamVjdHNcclxuXHJcbiAgICAgICAgaWYgKG9yaWdpbmFsVmVyc2VPYmplY3RzKSB7XHJcbiAgICAgICAgICBvcmlnaW5hbFZlcnNlVXNmbSA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuY29udmVydFZlcnNlRGF0YVRvVVNGTShvcmlnaW5hbFZlcnNlT2JqZWN0cylcclxuICAgICAgICAgIF91cGRhdGVkVmVyc2VPYmplY3RzID0gbWlncmF0ZUFsaWdubWVudHMoJ2hhbmRsZUFsaWdubWVudENsaWNrKCknKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgdGFyZ2V0VmVyc2VVU0ZNID0gZ2V0Q3VycmVudFZlcnNlVXNmbShfdXBkYXRlZFZlcnNlT2JqZWN0cywgaW5pdGlhbFZlcnNlT2JqZWN0cywgdmVyc2VUZXh0Q2hhbmdlZCwgbmV3VmVyc2VUZXh0KVxyXG5cclxuICAgICAgICBjb25zdCB7XHJcbiAgICAgICAgICB0YXJnZXRXb3Jkczogd29yZEJhbmssXHJcbiAgICAgICAgICB2ZXJzZUFsaWdubWVudHM6IGFsaWdubWVudHMsXHJcbiAgICAgICAgfSA9IEFsaWdubWVudEhlbHBlcnMucGFyc2VVc2ZtVG9Xb3JkQWxpZ25lckRhdGEodGFyZ2V0VmVyc2VVU0ZNLCBvcmlnaW5hbFZlcnNlVXNmbSlcclxuICAgICAgICBfYWxpZ25lckRhdGEgPSB7IHdvcmRCYW5rLCBhbGlnbm1lbnRzIH1cclxuXHJcbiAgICAgICAgaWYgKCFhbGlnbm1lbnRzPy5sZW5ndGgpIHtcclxuICAgICAgICAgIF9hbGlnbmVyRGF0YS5lcnJvck1lc3NhZ2UgPSAnVGhlcmUgYXJlIG5vIHdvcmRzIHRvIGFsaWduIGluIHRoZSBPcmlnaW5hbCBsYW5ndWFnZSdcclxuICAgICAgICB9IGVsc2UgaWYgKCF3b3JkQmFuaz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICBfYWxpZ25lckRhdGEuZXJyb3JNZXNzYWdlID0gJ1RoZXJlIGFyZSBubyB3b3JkcyB0byBhbGlnbiBpbiB0aGUgTGl0ZXJhbC9TaW1wbGlmaWVkIFNjcmlwdHVyZSBUZXh0J1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHsgLy8gd29yZCBhbGlnbmVyIGN1cnJlbnRseSBzaG93blxyXG4gICAgICAgIGNvbnNvbGUubG9nKGBoYW5kbGVBbGlnbm1lbnRDbGljayAtIGFsaWdubWVudCBhbHJlYWR5IHNob3duYClcclxuICAgICAgICBfYWxpZ25lckRhdGEgPSBhbGlnbmVyRGF0YVxyXG4gICAgICB9XHJcbiAgICAgIHNldFN0YXRlKHsgYWxpZ25lckRhdGE6IF9hbGlnbmVyRGF0YSB9KVxyXG4gICAgICBjb25zb2xlLmxvZyhfYWxpZ25lckRhdGEpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBnZXQgdXBkYXRlZCB2ZXJzZSBvYmplY3RzIGFmdGVyIGFsaWdubWVudHMgY2hhbmdlZFxyXG4gICAqIEBwYXJhbSB7QWxpZ25lclJlc3VsdHNEYXRhVHlwZX0gX25ld0FsaWdubWVudHMgLSByZXN1bHRzIG9mIGFsaWduZXJcclxuICAgKi9cclxuICBmdW5jdGlvbiB1cGRhdGVWZXJzZVdpdGhOZXdBbGlnbm1lbnRzKF9uZXdBbGlnbm1lbnRzOiBBbGlnbmVyUmVzdWx0c0RhdGFUeXBlID0gbmV3QWxpZ25tZW50cyk6VmVyc2VPYmplY3RzVHlwZSB7XHJcbiAgICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzXyA9IGdldEN1cnJlbnRWZXJzZU9iamVjdHMoKVxyXG4gICAgY29uc3QgdGFyZ2V0VmVyc2VUZXh0ID0gbmV3VmVyc2VUZXh0IHx8IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuY29udmVydFZlcnNlRGF0YVRvVVNGTShjdXJyZW50VmVyc2VPYmplY3RzXylcclxuICAgIGNvbnN0IHZlcnNlVXNmbSA9IEFsaWdubWVudEhlbHBlcnMuYWRkQWxpZ25tZW50c1RvVmVyc2VVU0ZNKF9uZXdBbGlnbm1lbnRzLnRhcmdldFdvcmRzLCBfbmV3QWxpZ25tZW50cy52ZXJzZUFsaWdubWVudHMsIHRhcmdldFZlcnNlVGV4dClcclxuXHJcbiAgICBpZiAoIXZlcnNlVXNmbSkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGB1cGRhdGVWZXJzZVdpdGhOZXdBbGlnbm1lbnRzKCkgLSBlcnJvciBtZXJnaW5nIGFsaWdubWVudHNgKVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGFsaWduZWRWZXJzZU9iamVjdHMgPSB1c2ZtSGVscGVycy51c2ZtVmVyc2VUb0pzb24odmVyc2VVc2ZtKVxyXG4gICAgcmV0dXJuIGFsaWduZWRWZXJzZU9iamVjdHNcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGNhbGxiYWNrIGZvciB3aGVuIHVzZXIgY2xpY2tlZCBvbiBidXR0b24gdG8gc2F2ZSBjdXJyZW50IGFsaWdubWVudHMgaW4gd29yZCBhbGlnbmVyLiAgR2VuZXJhdGVzIG5ldyB2ZXJzZSBjb250ZW50IGFuZCBzYXZlcyBpbiBzdGF0ZS4gQ2xvc2VzIGFsaWduZXIgZGlzcGxheVxyXG4gICAqIEBwYXJhbSB7QWxpZ25lclJlc3VsdHNEYXRhVHlwZX0gX25ld0FsaWdubWVudHMgLSByZXN1bHRzIG9mIGFsaWduZXJcclxuICAgKi9cclxuICBmdW5jdGlvbiBzYXZlQWxpZ25tZW50KF9uZXdBbGlnbm1lbnRzOiBBbGlnbmVyUmVzdWx0c0RhdGFUeXBlID0gbmV3QWxpZ25tZW50cykge1xyXG4gICAgY29uc29sZS5sb2coYHNhdmVBbGlnbm1lbnQoKSAtIG5ld0FsaWdubWVudHNgLCBfbmV3QWxpZ25tZW50cylcclxuXHJcbiAgICBpZiAoX25ld0FsaWdubWVudHMpIHtcclxuICAgICAgY29uc3QgYWxpZ25lZFZlcnNlT2JqZWN0cyA9IHVwZGF0ZVZlcnNlV2l0aE5ld0FsaWdubWVudHMoX25ld0FsaWdubWVudHMpXHJcbiAgICAgIGNvbnNvbGUubG9nKGBzYXZlQWxpZ25tZW50KCkgLSBhbGlnbmVkVmVyc2VPYmplY3RzYCwgYWxpZ25lZFZlcnNlT2JqZWN0cylcclxuICAgICAgY29uc3QgbmV3U3RhdGUgPSB7XHJcbiAgICAgICAgYWxpZ25lckRhdGE6IG51bGwsXHJcbiAgICAgICAgZWRpdGluZzogZmFsc2UsXHJcbiAgICAgICAgbmV3QWxpZ25tZW50czogbnVsbCxcclxuICAgICAgICB1cGRhdGVkVmVyc2VPYmplY3RzOiBhbGlnbmVkVmVyc2VPYmplY3RzLFxyXG4gICAgICB9XHJcbiAgICAgIHNldFN0YXRlKG5ld1N0YXRlKVxyXG4gICAgICBjYWxsU2V0U2F2ZWRTdGF0ZSh0cnVlLCBuZXdTdGF0ZSApXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmxvZyhgc2F2ZUFsaWdubWVudCgpIC0gbm8gYWxpZ25tZW50IGNoYW5nZXNgKVxyXG4gICAgICBzZXRTdGF0ZSh7XHJcbiAgICAgICAgYWxpZ25lckRhdGE6IG51bGwsXHJcbiAgICAgICAgZWRpdGluZzogZmFsc2UsXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBjYWxsYmFjayBmb3Igd2hlbiB1c2VyIGNsaWNrZWQgb24gYnV0dG9uIHRvIGNhbmNlbCB3b3JrIGluIHdvcmQgYWxpZ25lci4gIENhbGN1bGF0ZXMgYW5kIGRpc3BsYXlzIGN1cnJlbnQgYWxpZ25tZW50IHZhbGlkIHN0YXRlLiBDbG9zZXMgYWxpZ25lciBkaXNwbGF5XHJcbiAgICovXHJcbiAgZnVuY3Rpb24gY2FuY2VsQWxpZ25tZW50KCkge1xyXG4gICAgY29uc29sZS5sb2coYGNhbmNlbEFsaWdubWVudCgpYClcclxuICAgIGNvbnN0IHRhcmdldFZlcnNlVVNGTSA9IGdldEN1cnJlbnRWZXJzZVVzZm0odXBkYXRlZFZlcnNlT2JqZWN0cywgaW5pdGlhbFZlcnNlT2JqZWN0cywgdmVyc2VUZXh0Q2hhbmdlZCwgbmV3VmVyc2VUZXh0KVxyXG4gICAgY29uc3QgYWxpZ25lZCA9IGlzVXNmbUFsaWduZWQodGFyZ2V0VmVyc2VVU0ZNLCBvcmlnaW5hbFZlcnNlT2JqZWN0cylcclxuICAgIHNldFN0YXRlKHsgYWxpZ25lckRhdGE6IG51bGwsIGFsaWduZWQgfSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGNhbGxiYWNrIGZvciBidXR0b24gdG8gc2V0IGVkaXRpbmcgc3RhdGVcclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGVkaXRpbmdfIC0gaWYgdHJ1ZSwgZWRpdG9yIGlzIHNob3duLCBvdGhlcndpc2UgZWRpdG9yIGlzIGhpZGRlblxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBfbmV3VmVyc2VUZXh0IC0gb3B0aW9uYWwgdmVyc2UgdGV4dFxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZXF1aXJlLWF3YWl0XHJcbiAgYXN5bmMgZnVuY3Rpb24gc2V0RWRpdGluZyhlZGl0aW5nXzogYm9vbGVhbiwgX25ld1ZlcnNlVGV4dDogc3RyaW5nID0gbmV3VmVyc2VUZXh0KSB7XHJcbiAgICBpZiAoZW5hYmxlRWRpdCkge1xyXG4gICAgICBpZiAoZWRpdGluZ18gIT09IGVkaXRpbmcpIHtcclxuICAgICAgICBfbmV3VmVyc2VUZXh0ID0gX25ld1ZlcnNlVGV4dCB8fCBpbml0aWFsVmVyc2VUZXh0XHJcbiAgICAgICAgbGV0IF91cGRhdGVkVmVyc2VPYmplY3RzID0gbnVsbFxyXG4gICAgICAgIGNvbnN0IHZlcnNlVGV4dENoYW5nZWRGcm9tTGFzdEVkaXQgPSBfbmV3VmVyc2VUZXh0ICE9PSBuZXdWZXJzZVRleHRcclxuICAgICAgICBjb25zdCB2ZXJzZVRleHRDaGFuZ2VkRnJvbUluaXRpYWwgPSBfbmV3VmVyc2VUZXh0ICE9PSBpbml0aWFsVmVyc2VUZXh0XHJcbiAgICAgICAgY29uc3QgbmV3U3RhdGUgPSB7XHJcbiAgICAgICAgICBlZGl0aW5nOiBlZGl0aW5nXyxcclxuICAgICAgICAgIG5ld1ZlcnNlVGV4dDogX25ld1ZlcnNlVGV4dCxcclxuICAgICAgICAgIHZlcnNlVGV4dENoYW5nZWQ6IHZlcnNlVGV4dENoYW5nZWRGcm9tSW5pdGlhbCxcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghZWRpdGluZ18gJiYgdmVyc2VUZXh0Q2hhbmdlZEZyb21MYXN0RWRpdCkgeyAvLyBpZiBkb25lIGVkaXRpbmcgYW5kIHZlcnNlIGhhcyBjaGFuZ2VkLCB1cGRhdGUgdGhlIHZlcnNlIG9iamVjdHNcclxuICAgICAgICAgIF91cGRhdGVkVmVyc2VPYmplY3RzID0gdXBkYXRlZFZlcnNlT2JqZWN0cyB8fCBjdXJyZW50VmVyc2VPYmplY3RzXHJcblxyXG4gICAgICAgICAgaWYgKHZlcnNlVGV4dENoYW5nZWRGcm9tSW5pdGlhbCkgeyAvLyBpZiB2ZXJzZSBoYXMgY2hhbmdlZCBmcm9tIGluaXRpYWwsIG1pZ3JhdGUgYWxpZ25tZW50cyBpbiB0aGUgdmVyc2Ugb2JqZWN0c1xyXG4gICAgICAgICAgICAvLyBkbyBtaWdyYXRpb24gb2YgYWxpZ25tZW50cyB0byBtYXRjaCBsYXRlc3Qgb3JpZ2luYWwgbGFuZ3VhZ2VcclxuICAgICAgICAgICAgX3VwZGF0ZWRWZXJzZU9iamVjdHMgPSBtaWdyYXRlQWxpZ25tZW50cygnc2V0RWRpdGluZygpJywgX3VwZGF0ZWRWZXJzZU9iamVjdHMpXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gYXBwbHkgYWxpZ25tZW50cyBmcm9tIHVwZGF0ZWQgdmVyc2VPYmplY3RzIHRvIGVkaXRlZCB2ZXJzZSB0ZXh0IGFuZCBnZW5lcmF0ZSBuZXcgdmVyc2Ugb2JqZWN0c1xyXG4gICAgICAgICAgY29uc3QgeyB0YXJnZXRWZXJzZU9iamVjdHMgfSA9IEFsaWdubWVudEhlbHBlcnMudXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UoX3VwZGF0ZWRWZXJzZU9iamVjdHMsIF9uZXdWZXJzZVRleHQpXHJcbiAgICAgICAgICBfdXBkYXRlZFZlcnNlT2JqZWN0cyA9IHRhcmdldFZlcnNlT2JqZWN0cyAvLyB1cGRhdGUgdmVyc2VPYmplY3RzIHRvIG1hdGNoIGN1cnJlbnQgdGV4dFxyXG4gICAgICAgICAgbmV3U3RhdGVbJ3VwZGF0ZWRWZXJzZU9iamVjdHMnXSA9IF91cGRhdGVkVmVyc2VPYmplY3RzXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzZXRTdGF0ZShuZXdTdGF0ZSlcclxuICAgICAgICBjb25zdCBfYWxpZ25tZW50c0NoYW5nZWQgPSAoX3VwZGF0ZWRWZXJzZU9iamVjdHMgJiYgIWlzRXF1YWwoaW5pdGlhbFZlcnNlT2JqZWN0cywgX3VwZGF0ZWRWZXJzZU9iamVjdHMpKVxyXG4gICAgICAgIGNhbGxTZXRTYXZlZFN0YXRlKHZlcnNlVGV4dENoYW5nZWRGcm9tSW5pdGlhbCB8fCBfYWxpZ25tZW50c0NoYW5nZWQsIG5ld1N0YXRlIClcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogY2FsbGJhY2sgZnJvbSB0aGUgZWRpdCBvbkNoYW5nZSBldmVudCB0byB1cGRhdGUgZWRpdCBzdGF0ZSB2YXJpYWJsZXNcclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGNoYW5nZWQgLSB0cnVlIGlmIHRoZSBuZXdWZXJzZVRleHQgaXMgZGlmZmVyZW50IHRoYW4gdGhlIGluaXRpYWxWZXJzZVRleHRcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmV3VmVyc2VUZXh0IC0gY3VycmVudCBjaGFuZ2VkIHZlcnNlIHRleHRcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gX2luaXRpYWxWZXJzZVRleHQgLSBpbml0aWFsIHZlcnNlIHRleHRcclxuICAgKi9cclxuICBmdW5jdGlvbiBzZXRWZXJzZUNoYW5nZWQoY2hhbmdlZDogYm9vbGVhbiwgbmV3VmVyc2VUZXh0OiBzdHJpbmcsIF9pbml0aWFsVmVyc2VUZXh0OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IF90YXJnZXRWZXJzZU9iamVjdHMgPSBjdXJyZW50VmVyc2VPYmplY3RzIHx8IGluaXRpYWxWZXJzZU9iamVjdHNcclxuICAgIGNvbnN0IHsgdGFyZ2V0VmVyc2VUZXh0IH0gPSBBbGlnbm1lbnRIZWxwZXJzLnVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlKF90YXJnZXRWZXJzZU9iamVjdHMsIG5ld1ZlcnNlVGV4dClcclxuICAgIGNvbnN0IGFsaWduZWQgPSBpc1VzZm1BbGlnbmVkKHRhcmdldFZlcnNlVGV4dCwgb3JpZ2luYWxWZXJzZU9iamVjdHMpXHJcbiAgICBjb25zdCB2ZXJzZVRleHRDaGFuZ2VkID0gbmV3VmVyc2VUZXh0ICE9PSBpbml0aWFsVmVyc2VUZXh0XHJcblxyXG4gICAgc2V0U3RhdGUoe1xyXG4gICAgICB2ZXJzZVRleHRDaGFuZ2VkLFxyXG4gICAgICBuZXdWZXJzZVRleHQsXHJcbiAgICAgIGFsaWduZWQsXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgY29uc3QgY3VycmVudFZlcnNlT2JqZWN0cyA9IFJlYWN0LnVzZU1lbW8oICgpID0+IHsgLy8gaWYgdmVyc2UgaGFzIGJlZW4gZWRpdGVkIG9yIGFsaWdubWVudCBjaGFuZ2VkLCB0aGVuIGdlbmVyYXRlIG5ldyB2ZXJzZU9iamVjdHMgdG8gZGlzcGxheSBpbiBTY3JpcHR1cmVQYW5lXHJcbiAgICBpZiAoaW5pdGlhbFZlcnNlT2JqZWN0cykge1xyXG4gICAgICBjb25zdCB0YXJnZXRWZXJzZVVTRk0gPSBnZXRDdXJyZW50VmVyc2VVc2ZtKHVwZGF0ZWRWZXJzZU9iamVjdHMsIGluaXRpYWxWZXJzZU9iamVjdHMsIHZlcnNlVGV4dENoYW5nZWQsIG5ld1ZlcnNlVGV4dClcclxuICAgICAgY29uc3QgY3VycmVudFZlcnNlT2JqZWN0c18gPSB1c2ZtSGVscGVycy51c2ZtVmVyc2VUb0pzb24odGFyZ2V0VmVyc2VVU0ZNKVxyXG4gICAgICByZXR1cm4gY3VycmVudFZlcnNlT2JqZWN0c19cclxuICAgIH1cclxuICAgIHJldHVybiBpbml0aWFsVmVyc2VPYmplY3RzXHJcbiAgfSwgW3VwZGF0ZWRWZXJzZU9iamVjdHMsIGluaXRpYWxWZXJzZU9iamVjdHMsIHZlcnNlVGV4dENoYW5nZWQsIG5ld1ZlcnNlVGV4dF0pXHJcblxyXG4gIGNvbnN0IHVuc2F2ZWRDaGFuZ2VzOmJvb2xlYW4gPSBSZWFjdC51c2VNZW1vKCAoKSA9PiB7IC8vIGlmIHZlcnNlIGhhcyBiZWVuIGVkaXRlZCBvciBhbGlnbm1lbnQgY2hhbmdlZCwgdGhlbiBpbmRpY2F0ZSB3ZSBoYXZlIHVuc2F2ZWQgY2hhbmdlc1xyXG4gICAgY29uc3QgY2hhbmdlZCA9IHZlcnNlVGV4dENoYW5nZWQgfHwgKHVwZGF0ZWRWZXJzZU9iamVjdHMgJiYgIWlzRXF1YWwoaW5pdGlhbFZlcnNlT2JqZWN0cywgdXBkYXRlZFZlcnNlT2JqZWN0cykpXHJcbiAgICByZXR1cm4gY2hhbmdlZFxyXG4gIH0sIFt1cGRhdGVkVmVyc2VPYmplY3RzLCBpbml0aWFsVmVyc2VPYmplY3RzLCB2ZXJzZVRleHRDaGFuZ2VkXSlcclxuXHJcbiAgLyoqXHJcbiAgICogY2FsbGJhY2sgdG8gc2NyaXB0dXJlIGNhcmQgdG8gdXBkYXRlZCB3aXRoIGxhdGVzdCBzdGF0ZSBmb3Igc2F2aW5nXHJcbiAgICogQHBhcmFtIHtib29sZWFufSB1bnNhdmVkQ2hhbmdlc19cclxuICAgKiBAcGFyYW0ge29iamVjdH0gbmV3U3RhdGVcclxuICAgKi9cclxuICBmdW5jdGlvbiBjYWxsU2V0U2F2ZWRTdGF0ZSh1bnNhdmVkQ2hhbmdlc186IGJvb2xlYW4sIG5ld1N0YXRlOiB7fSA9IHsgfSApIHtcclxuICAgIGNvbnN0IF9uZXdTdGF0ZSA9IHtcclxuICAgICAgLi4uc3RhdGUsXHJcbiAgICAgIC4uLm5ld1N0YXRlLFxyXG4gICAgfVxyXG5cclxuICAgIC8vIGNvbnNvbGUubG9nKGBjYWxsU2V0U2F2ZWRTdGF0ZSAtIG5ldyBzdGF0ZWAsIF9uZXdTdGF0ZSlcclxuICAgIHNldFNhdmVkQ2hhbmdlcyAmJiBzZXRTYXZlZENoYW5nZXMoY3VycmVudEluZGV4LCAhdW5zYXZlZENoYW5nZXNfLCB7XHJcbiAgICAgIGdldENoYW5nZXMsXHJcbiAgICAgIGNsZWFyQ2hhbmdlcyxcclxuICAgICAgc3RhdGU6IF9uZXdTdGF0ZSxcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBzZXQgc2F2ZWQgY2hhbmdlcyB3aGVuZXZlciB1c2VyIGVkaXRzIHZlcnNlIHRleHQgb3IgYWxpZ25tZW50cyBvciBpZiBhbGlnbm1lbnRzIGFyZSBvcGVuXHJcbiAgICBjb25zdCB1bnNhdmVkQ2hhbmdlc18gPSB1bnNhdmVkQ2hhbmdlcyB8fCAhIWFsaWduZXJEYXRhXHJcbiAgICBjYWxsU2V0U2F2ZWRTdGF0ZSh1bnNhdmVkQ2hhbmdlc18pXHJcbiAgfSwgW3Vuc2F2ZWRDaGFuZ2VzLCBhbGlnbmVyRGF0YV0pXHJcblxyXG4gIC8qKlxyXG4gICAqIGNhbGxiYWNrIGZvciB3aGVuIGFsaWdubWVudHMgYXJlIGJlaW5nIGNoYW5nZWRcclxuICAgKiBAcGFyYW0ge0FsaWduZXJSZXN1bHRzRGF0YVR5cGV9IHJlc3VsdHNcclxuICAgKiBAcmV0dXJuIHtib29sZWFufSB0cnVlIGlmIGFsaWdubWVudCBpcyBjb21wbGV0ZVxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIG9uQWxpZ25tZW50c0NoYW5nZShyZXN1bHRzOiBBbGlnbmVyUmVzdWx0c0RhdGFUeXBlKTpib29sZWFuIHtcclxuICAgIGNvbnNvbGUubG9nKGBvbkFsaWdubWVudHNDaGFuZ2UoKSAtIGFsaWdubWVudCBjaGFuZ2VkLCByZXN1bHRzYCwgcmVzdWx0cykgLy8gbWVyZ2UgYWxpZ25tZW50cyBpbnRvIHRhcmdldCB2ZXJzZSBhbmQgY29udmVydCB0byBVU0ZNXHJcbiAgICBjb25zdCB7IHRhcmdldFdvcmRzLCB2ZXJzZUFsaWdubWVudHMgfSA9IHJlc3VsdHNcclxuICAgIGNvbnN0IGFsaWdubWVudENvbXBsZXRlID0gQWxpZ25tZW50SGVscGVycy5hcmVBbGdubWVudHNDb21wbGV0ZSh0YXJnZXRXb3JkcywgdmVyc2VBbGlnbm1lbnRzKVxyXG4gICAgY29uc29sZS5sb2coYEFsaWdubWVudHMgYXJlICR7YWxpZ25tZW50Q29tcGxldGUgPyAnQ09NUExFVEUhJyA6ICdpbmNvbXBsZXRlJ31gKVxyXG4gICAgc2V0U3RhdGUoeyBuZXdBbGlnbm1lbnRzOiByZXN1bHRzLCBhbGlnbmVkOiBhbGlnbm1lbnRDb21wbGV0ZSB9KVxyXG4gICAgcmV0dXJuIGFsaWdubWVudENvbXBsZXRlXHJcbiAgfVxyXG5cclxuICByZXR1cm4ge1xyXG4gICAgYWN0aW9uczoge1xyXG4gICAgICBjYW5jZWxBbGlnbm1lbnQsXHJcbiAgICAgIGNsZWFyQ2hhbmdlcyxcclxuICAgICAgZ2V0Q2hhbmdlcyxcclxuICAgICAgaGFuZGxlQWxpZ25tZW50Q2xpY2ssXHJcbiAgICAgIG9uQWxpZ25tZW50c0NoYW5nZSxcclxuICAgICAgc2F2ZUFsaWdubWVudCxcclxuICAgICAgc2V0RWRpdGluZyxcclxuICAgICAgc2V0VmVyc2VDaGFuZ2VkLFxyXG4gICAgfSxcclxuICAgIHN0YXRlOiB7XHJcbiAgICAgIGFsaWduZWQsXHJcbiAgICAgIGFsaWduZXJEYXRhLFxyXG4gICAgICBjdXJyZW50VmVyc2VPYmplY3RzLFxyXG4gICAgICBlZGl0aW5nLFxyXG4gICAgICBlbmFibGVFZGl0LFxyXG4gICAgICBlbmFibGVBbGlnbm1lbnQsXHJcbiAgICAgIGluaXRpYWxWZXJzZVRleHQsXHJcbiAgICAgIGluaXRpYWxWZXJzZU9iamVjdHMsXHJcbiAgICAgIG5ld1ZlcnNlVGV4dCxcclxuICAgICAgcmVmZXJlbmNlOiBiYXNpY1JlZmVyZW5jZSxcclxuICAgICAgc291cmNlTGFuZ3VhZ2UsXHJcbiAgICAgIHRhcmdldExhbmd1YWdlLFxyXG4gICAgICB0aXRsZSxcclxuICAgICAgdW5zYXZlZENoYW5nZXMsXHJcbiAgICAgIHZlcnNlVGV4dENoYW5nZWQsXHJcbiAgICB9LFxyXG4gIH1cclxufVxyXG4iXSwibWFwcGluZ3MiOiI7K0NBQ0EscUpBQUFBLG1CQUFBLFlBQUFBLG9CQUFBLFdBQUFDLENBQUEsU0FBQUMsQ0FBQSxFQUFBRCxDQUFBLE9BQUFFLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxTQUFBLEVBQUFDLENBQUEsR0FBQUgsQ0FBQSxDQUFBSSxjQUFBLEVBQUFDLENBQUEsR0FBQUosTUFBQSxDQUFBSyxjQUFBLGNBQUFQLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLElBQUFELENBQUEsQ0FBQUQsQ0FBQSxJQUFBRSxDQUFBLENBQUFPLEtBQUEsS0FBQUMsQ0FBQSx3QkFBQUMsTUFBQSxHQUFBQSxNQUFBLE9BQUFDLENBQUEsR0FBQUYsQ0FBQSxDQUFBRyxRQUFBLGtCQUFBQyxDQUFBLEdBQUFKLENBQUEsQ0FBQUssYUFBQSx1QkFBQUMsQ0FBQSxHQUFBTixDQUFBLENBQUFPLFdBQUEsOEJBQUFDLE9BQUFqQixDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxXQUFBQyxNQUFBLENBQUFLLGNBQUEsQ0FBQVAsQ0FBQSxFQUFBRCxDQUFBLElBQUFTLEtBQUEsRUFBQVAsQ0FBQSxFQUFBaUIsVUFBQSxNQUFBQyxZQUFBLE1BQUFDLFFBQUEsU0FBQXBCLENBQUEsQ0FBQUQsQ0FBQSxXQUFBa0IsTUFBQSxtQkFBQWpCLENBQUEsSUFBQWlCLE1BQUEsWUFBQUEsT0FBQWpCLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLFdBQUFELENBQUEsQ0FBQUQsQ0FBQSxJQUFBRSxDQUFBLGdCQUFBb0IsS0FBQXJCLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLEVBQUFHLENBQUEsUUFBQUssQ0FBQSxHQUFBVixDQUFBLElBQUFBLENBQUEsQ0FBQUksU0FBQSxZQUFBbUIsU0FBQSxHQUFBdkIsQ0FBQSxHQUFBdUIsU0FBQSxFQUFBWCxDQUFBLEdBQUFULE1BQUEsQ0FBQXFCLE1BQUEsQ0FBQWQsQ0FBQSxDQUFBTixTQUFBLEdBQUFVLENBQUEsT0FBQVcsT0FBQSxDQUFBcEIsQ0FBQSxnQkFBQUUsQ0FBQSxDQUFBSyxDQUFBLGVBQUFILEtBQUEsRUFBQWlCLGdCQUFBLENBQUF6QixDQUFBLEVBQUFDLENBQUEsRUFBQVksQ0FBQSxNQUFBRixDQUFBLGFBQUFlLFNBQUExQixDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxtQkFBQTBCLElBQUEsWUFBQUMsR0FBQSxFQUFBNUIsQ0FBQSxDQUFBNkIsSUFBQSxDQUFBOUIsQ0FBQSxFQUFBRSxDQUFBLGNBQUFELENBQUEsYUFBQTJCLElBQUEsV0FBQUMsR0FBQSxFQUFBNUIsQ0FBQSxRQUFBRCxDQUFBLENBQUFzQixJQUFBLEdBQUFBLElBQUEsTUFBQVMsQ0FBQSxxQkFBQUMsQ0FBQSxxQkFBQUMsQ0FBQSxnQkFBQUMsQ0FBQSxnQkFBQUMsQ0FBQSxnQkFBQVosVUFBQSxjQUFBYSxrQkFBQSxjQUFBQywyQkFBQSxTQUFBQyxDQUFBLE9BQUFwQixNQUFBLENBQUFvQixDQUFBLEVBQUExQixDQUFBLHFDQUFBMkIsQ0FBQSxHQUFBcEMsTUFBQSxDQUFBcUMsY0FBQSxFQUFBQyxDQUFBLEdBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBQSxDQUFBLENBQUFHLE1BQUEsUUFBQUQsQ0FBQSxJQUFBQSxDQUFBLEtBQUF2QyxDQUFBLElBQUFHLENBQUEsQ0FBQXlCLElBQUEsQ0FBQVcsQ0FBQSxFQUFBN0IsQ0FBQSxNQUFBMEIsQ0FBQSxHQUFBRyxDQUFBLE9BQUFFLENBQUEsR0FBQU4sMEJBQUEsQ0FBQWpDLFNBQUEsR0FBQW1CLFNBQUEsQ0FBQW5CLFNBQUEsR0FBQUQsTUFBQSxDQUFBcUIsTUFBQSxDQUFBYyxDQUFBLFlBQUFNLHNCQUFBM0MsQ0FBQSxnQ0FBQTRDLE9BQUEsV0FBQTdDLENBQUEsSUFBQWtCLE1BQUEsQ0FBQWpCLENBQUEsRUFBQUQsQ0FBQSxZQUFBQyxDQUFBLGdCQUFBNkMsT0FBQSxDQUFBOUMsQ0FBQSxFQUFBQyxDQUFBLHNCQUFBOEMsY0FBQTlDLENBQUEsRUFBQUQsQ0FBQSxhQUFBZ0QsT0FBQTlDLENBQUEsRUFBQUssQ0FBQSxFQUFBRyxDQUFBLEVBQUFFLENBQUEsUUFBQUUsQ0FBQSxHQUFBYSxRQUFBLENBQUExQixDQUFBLENBQUFDLENBQUEsR0FBQUQsQ0FBQSxFQUFBTSxDQUFBLG1CQUFBTyxDQUFBLENBQUFjLElBQUEsUUFBQVosQ0FBQSxHQUFBRixDQUFBLENBQUFlLEdBQUEsRUFBQUUsQ0FBQSxHQUFBZixDQUFBLENBQUFQLEtBQUEsU0FBQXNCLENBQUEsZ0JBQUFrQixPQUFBLENBQUFsQixDQUFBLEtBQUExQixDQUFBLENBQUF5QixJQUFBLENBQUFDLENBQUEsZUFBQS9CLENBQUEsQ0FBQWtELE9BQUEsQ0FBQW5CLENBQUEsQ0FBQW9CLE9BQUEsRUFBQUMsSUFBQSxXQUFBbkQsQ0FBQSxJQUFBK0MsTUFBQSxTQUFBL0MsQ0FBQSxFQUFBUyxDQUFBLEVBQUFFLENBQUEsZ0JBQUFYLENBQUEsSUFBQStDLE1BQUEsVUFBQS9DLENBQUEsRUFBQVMsQ0FBQSxFQUFBRSxDQUFBLFFBQUFaLENBQUEsQ0FBQWtELE9BQUEsQ0FBQW5CLENBQUEsRUFBQXFCLElBQUEsV0FBQW5ELENBQUEsSUFBQWUsQ0FBQSxDQUFBUCxLQUFBLEdBQUFSLENBQUEsRUFBQVMsQ0FBQSxDQUFBTSxDQUFBLGdCQUFBZixDQUFBLFdBQUErQyxNQUFBLFVBQUEvQyxDQUFBLEVBQUFTLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLENBQUFFLENBQUEsQ0FBQWUsR0FBQSxTQUFBM0IsQ0FBQSxFQUFBSyxDQUFBLG9CQUFBRSxLQUFBLFdBQUFBLE1BQUFSLENBQUEsRUFBQUksQ0FBQSxhQUFBZ0QsMkJBQUEsZUFBQXJELENBQUEsV0FBQUEsQ0FBQSxFQUFBRSxDQUFBLElBQUE4QyxNQUFBLENBQUEvQyxDQUFBLEVBQUFJLENBQUEsRUFBQUwsQ0FBQSxFQUFBRSxDQUFBLGdCQUFBQSxDQUFBLEdBQUFBLENBQUEsR0FBQUEsQ0FBQSxDQUFBa0QsSUFBQSxDQUFBQywwQkFBQSxFQUFBQSwwQkFBQSxJQUFBQSwwQkFBQSxxQkFBQTNCLGlCQUFBMUIsQ0FBQSxFQUFBRSxDQUFBLEVBQUFHLENBQUEsUUFBQUUsQ0FBQSxHQUFBd0IsQ0FBQSxtQkFBQXJCLENBQUEsRUFBQUUsQ0FBQSxRQUFBTCxDQUFBLEtBQUEwQixDQUFBLFlBQUFxQixLQUFBLHNDQUFBL0MsQ0FBQSxLQUFBMkIsQ0FBQSxvQkFBQXhCLENBQUEsUUFBQUUsQ0FBQSxXQUFBSCxLQUFBLEVBQUFSLENBQUEsRUFBQXNELElBQUEsZUFBQWxELENBQUEsQ0FBQW1ELE1BQUEsR0FBQTlDLENBQUEsRUFBQUwsQ0FBQSxDQUFBd0IsR0FBQSxHQUFBakIsQ0FBQSxVQUFBRSxDQUFBLEdBQUFULENBQUEsQ0FBQW9ELFFBQUEsTUFBQTNDLENBQUEsUUFBQUUsQ0FBQSxHQUFBMEMsbUJBQUEsQ0FBQTVDLENBQUEsRUFBQVQsQ0FBQSxPQUFBVyxDQUFBLFFBQUFBLENBQUEsS0FBQW1CLENBQUEsbUJBQUFuQixDQUFBLHFCQUFBWCxDQUFBLENBQUFtRCxNQUFBLEVBQUFuRCxDQUFBLENBQUFzRCxJQUFBLEdBQUF0RCxDQUFBLENBQUF1RCxLQUFBLEdBQUF2RCxDQUFBLENBQUF3QixHQUFBLHNCQUFBeEIsQ0FBQSxDQUFBbUQsTUFBQSxRQUFBakQsQ0FBQSxLQUFBd0IsQ0FBQSxRQUFBeEIsQ0FBQSxHQUFBMkIsQ0FBQSxFQUFBN0IsQ0FBQSxDQUFBd0IsR0FBQSxFQUFBeEIsQ0FBQSxDQUFBd0QsaUJBQUEsQ0FBQXhELENBQUEsQ0FBQXdCLEdBQUEsdUJBQUF4QixDQUFBLENBQUFtRCxNQUFBLElBQUFuRCxDQUFBLENBQUF5RCxNQUFBLFdBQUF6RCxDQUFBLENBQUF3QixHQUFBLEdBQUF0QixDQUFBLEdBQUEwQixDQUFBLE1BQUFLLENBQUEsR0FBQVgsUUFBQSxDQUFBM0IsQ0FBQSxFQUFBRSxDQUFBLEVBQUFHLENBQUEsb0JBQUFpQyxDQUFBLENBQUFWLElBQUEsUUFBQXJCLENBQUEsR0FBQUYsQ0FBQSxDQUFBa0QsSUFBQSxHQUFBckIsQ0FBQSxHQUFBRixDQUFBLEVBQUFNLENBQUEsQ0FBQVQsR0FBQSxLQUFBTSxDQUFBLHFCQUFBMUIsS0FBQSxFQUFBNkIsQ0FBQSxDQUFBVCxHQUFBLEVBQUEwQixJQUFBLEVBQUFsRCxDQUFBLENBQUFrRCxJQUFBLGtCQUFBakIsQ0FBQSxDQUFBVixJQUFBLEtBQUFyQixDQUFBLEdBQUEyQixDQUFBLEVBQUE3QixDQUFBLENBQUFtRCxNQUFBLFlBQUFuRCxDQUFBLENBQUF3QixHQUFBLEdBQUFTLENBQUEsQ0FBQVQsR0FBQSxtQkFBQTZCLG9CQUFBMUQsQ0FBQSxFQUFBRSxDQUFBLFFBQUFHLENBQUEsR0FBQUgsQ0FBQSxDQUFBc0QsTUFBQSxFQUFBakQsQ0FBQSxHQUFBUCxDQUFBLENBQUFhLFFBQUEsQ0FBQVIsQ0FBQSxPQUFBRSxDQUFBLEtBQUFOLENBQUEsU0FBQUMsQ0FBQSxDQUFBdUQsUUFBQSxxQkFBQXBELENBQUEsSUFBQUwsQ0FBQSxDQUFBYSxRQUFBLGVBQUFYLENBQUEsQ0FBQXNELE1BQUEsYUFBQXRELENBQUEsQ0FBQTJCLEdBQUEsR0FBQTVCLENBQUEsRUFBQXlELG1CQUFBLENBQUExRCxDQUFBLEVBQUFFLENBQUEsZUFBQUEsQ0FBQSxDQUFBc0QsTUFBQSxrQkFBQW5ELENBQUEsS0FBQUgsQ0FBQSxDQUFBc0QsTUFBQSxZQUFBdEQsQ0FBQSxDQUFBMkIsR0FBQSxPQUFBa0MsU0FBQSx1Q0FBQTFELENBQUEsaUJBQUE4QixDQUFBLE1BQUF6QixDQUFBLEdBQUFpQixRQUFBLENBQUFwQixDQUFBLEVBQUFQLENBQUEsQ0FBQWEsUUFBQSxFQUFBWCxDQUFBLENBQUEyQixHQUFBLG1CQUFBbkIsQ0FBQSxDQUFBa0IsSUFBQSxTQUFBMUIsQ0FBQSxDQUFBc0QsTUFBQSxZQUFBdEQsQ0FBQSxDQUFBMkIsR0FBQSxHQUFBbkIsQ0FBQSxDQUFBbUIsR0FBQSxFQUFBM0IsQ0FBQSxDQUFBdUQsUUFBQSxTQUFBdEIsQ0FBQSxNQUFBdkIsQ0FBQSxHQUFBRixDQUFBLENBQUFtQixHQUFBLFNBQUFqQixDQUFBLEdBQUFBLENBQUEsQ0FBQTJDLElBQUEsSUFBQXJELENBQUEsQ0FBQUYsQ0FBQSxDQUFBZ0UsVUFBQSxJQUFBcEQsQ0FBQSxDQUFBSCxLQUFBLEVBQUFQLENBQUEsQ0FBQStELElBQUEsR0FBQWpFLENBQUEsQ0FBQWtFLE9BQUEsZUFBQWhFLENBQUEsQ0FBQXNELE1BQUEsS0FBQXRELENBQUEsQ0FBQXNELE1BQUEsV0FBQXRELENBQUEsQ0FBQTJCLEdBQUEsR0FBQTVCLENBQUEsR0FBQUMsQ0FBQSxDQUFBdUQsUUFBQSxTQUFBdEIsQ0FBQSxJQUFBdkIsQ0FBQSxJQUFBVixDQUFBLENBQUFzRCxNQUFBLFlBQUF0RCxDQUFBLENBQUEyQixHQUFBLE9BQUFrQyxTQUFBLHNDQUFBN0QsQ0FBQSxDQUFBdUQsUUFBQSxTQUFBdEIsQ0FBQSxjQUFBZ0MsYUFBQWxFLENBQUEsUUFBQUQsQ0FBQSxLQUFBb0UsTUFBQSxFQUFBbkUsQ0FBQSxZQUFBQSxDQUFBLEtBQUFELENBQUEsQ0FBQXFFLFFBQUEsR0FBQXBFLENBQUEsV0FBQUEsQ0FBQSxLQUFBRCxDQUFBLENBQUFzRSxVQUFBLEdBQUFyRSxDQUFBLEtBQUFELENBQUEsQ0FBQXVFLFFBQUEsR0FBQXRFLENBQUEsV0FBQXVFLFVBQUEsQ0FBQUMsSUFBQSxDQUFBekUsQ0FBQSxjQUFBMEUsY0FBQXpFLENBQUEsUUFBQUQsQ0FBQSxHQUFBQyxDQUFBLENBQUEwRSxVQUFBLFFBQUEzRSxDQUFBLENBQUE0QixJQUFBLG9CQUFBNUIsQ0FBQSxDQUFBNkIsR0FBQSxFQUFBNUIsQ0FBQSxDQUFBMEUsVUFBQSxHQUFBM0UsQ0FBQSxhQUFBeUIsUUFBQXhCLENBQUEsU0FBQXVFLFVBQUEsTUFBQUosTUFBQSxhQUFBbkUsQ0FBQSxDQUFBNEMsT0FBQSxDQUFBc0IsWUFBQSxjQUFBUyxLQUFBLGlCQUFBbEMsT0FBQTFDLENBQUEsUUFBQUEsQ0FBQSxXQUFBQSxDQUFBLFFBQUFFLENBQUEsR0FBQUYsQ0FBQSxDQUFBWSxDQUFBLE9BQUFWLENBQUEsU0FBQUEsQ0FBQSxDQUFBNEIsSUFBQSxDQUFBOUIsQ0FBQSw0QkFBQUEsQ0FBQSxDQUFBaUUsSUFBQSxTQUFBakUsQ0FBQSxPQUFBNkUsS0FBQSxDQUFBN0UsQ0FBQSxDQUFBOEUsTUFBQSxTQUFBdkUsQ0FBQSxPQUFBRyxDQUFBLFlBQUF1RCxLQUFBLGFBQUExRCxDQUFBLEdBQUFQLENBQUEsQ0FBQThFLE1BQUEsT0FBQXpFLENBQUEsQ0FBQXlCLElBQUEsQ0FBQTlCLENBQUEsRUFBQU8sQ0FBQSxVQUFBMEQsSUFBQSxDQUFBeEQsS0FBQSxHQUFBVCxDQUFBLENBQUFPLENBQUEsR0FBQTBELElBQUEsQ0FBQVYsSUFBQSxPQUFBVSxJQUFBLFNBQUFBLElBQUEsQ0FBQXhELEtBQUEsR0FBQVIsQ0FBQSxFQUFBZ0UsSUFBQSxDQUFBVixJQUFBLE9BQUFVLElBQUEsWUFBQXZELENBQUEsQ0FBQXVELElBQUEsR0FBQXZELENBQUEsZ0JBQUFxRCxTQUFBLENBQUFkLE9BQUEsQ0FBQWpELENBQUEsa0NBQUFvQyxpQkFBQSxDQUFBaEMsU0FBQSxHQUFBaUMsMEJBQUEsRUFBQTlCLENBQUEsQ0FBQW9DLENBQUEsbUJBQUFsQyxLQUFBLEVBQUE0QiwwQkFBQSxFQUFBakIsWUFBQSxTQUFBYixDQUFBLENBQUE4QiwwQkFBQSxtQkFBQTVCLEtBQUEsRUFBQTJCLGlCQUFBLEVBQUFoQixZQUFBLFNBQUFnQixpQkFBQSxDQUFBMkMsV0FBQSxHQUFBN0QsTUFBQSxDQUFBbUIsMEJBQUEsRUFBQXJCLENBQUEsd0JBQUFoQixDQUFBLENBQUFnRixtQkFBQSxhQUFBL0UsQ0FBQSxRQUFBRCxDQUFBLHdCQUFBQyxDQUFBLElBQUFBLENBQUEsQ0FBQWdGLFdBQUEsV0FBQWpGLENBQUEsS0FBQUEsQ0FBQSxLQUFBb0MsaUJBQUEsNkJBQUFwQyxDQUFBLENBQUErRSxXQUFBLElBQUEvRSxDQUFBLENBQUFrRixJQUFBLE9BQUFsRixDQUFBLENBQUFtRixJQUFBLGFBQUFsRixDQUFBLFdBQUFFLE1BQUEsQ0FBQWlGLGNBQUEsR0FBQWpGLE1BQUEsQ0FBQWlGLGNBQUEsQ0FBQW5GLENBQUEsRUFBQW9DLDBCQUFBLEtBQUFwQyxDQUFBLENBQUFvRixTQUFBLEdBQUFoRCwwQkFBQSxFQUFBbkIsTUFBQSxDQUFBakIsQ0FBQSxFQUFBZSxDQUFBLHlCQUFBZixDQUFBLENBQUFHLFNBQUEsR0FBQUQsTUFBQSxDQUFBcUIsTUFBQSxDQUFBbUIsQ0FBQSxHQUFBMUMsQ0FBQSxLQUFBRCxDQUFBLENBQUFzRixLQUFBLGFBQUFyRixDQUFBLGFBQUFrRCxPQUFBLEVBQUFsRCxDQUFBLE9BQUEyQyxxQkFBQSxDQUFBRyxhQUFBLENBQUEzQyxTQUFBLEdBQUFjLE1BQUEsQ0FBQTZCLGFBQUEsQ0FBQTNDLFNBQUEsRUFBQVUsQ0FBQSxpQ0FBQWQsQ0FBQSxDQUFBK0MsYUFBQSxHQUFBQSxhQUFBLEVBQUEvQyxDQUFBLENBQUF1RixLQUFBLGFBQUF0RixDQUFBLEVBQUFDLENBQUEsRUFBQUcsQ0FBQSxFQUFBRSxDQUFBLEVBQUFHLENBQUEsZUFBQUEsQ0FBQSxLQUFBQSxDQUFBLEdBQUE4RSxPQUFBLE9BQUE1RSxDQUFBLE9BQUFtQyxhQUFBLENBQUF6QixJQUFBLENBQUFyQixDQUFBLEVBQUFDLENBQUEsRUFBQUcsQ0FBQSxFQUFBRSxDQUFBLEdBQUFHLENBQUEsVUFBQVYsQ0FBQSxDQUFBZ0YsbUJBQUEsQ0FBQTlFLENBQUEsSUFBQVUsQ0FBQSxHQUFBQSxDQUFBLENBQUFxRCxJQUFBLEdBQUFiLElBQUEsV0FBQW5ELENBQUEsV0FBQUEsQ0FBQSxDQUFBc0QsSUFBQSxHQUFBdEQsQ0FBQSxDQUFBUSxLQUFBLEdBQUFHLENBQUEsQ0FBQXFELElBQUEsV0FBQXJCLHFCQUFBLENBQUFELENBQUEsR0FBQXpCLE1BQUEsQ0FBQXlCLENBQUEsRUFBQTNCLENBQUEsZ0JBQUFFLE1BQUEsQ0FBQXlCLENBQUEsRUFBQS9CLENBQUEsaUNBQUFNLE1BQUEsQ0FBQXlCLENBQUEsNkRBQUEzQyxDQUFBLENBQUF5RixJQUFBLGFBQUF4RixDQUFBLFFBQUFELENBQUEsR0FBQUcsTUFBQSxDQUFBRixDQUFBLEdBQUFDLENBQUEsZ0JBQUFHLENBQUEsSUFBQUwsQ0FBQSxFQUFBRSxDQUFBLENBQUF1RSxJQUFBLENBQUFwRSxDQUFBLFVBQUFILENBQUEsQ0FBQXdGLE9BQUEsYUFBQXpCLEtBQUEsV0FBQS9ELENBQUEsQ0FBQTRFLE1BQUEsU0FBQTdFLENBQUEsR0FBQUMsQ0FBQSxDQUFBeUYsR0FBQSxRQUFBMUYsQ0FBQSxJQUFBRCxDQUFBLFNBQUFpRSxJQUFBLENBQUF4RCxLQUFBLEdBQUFSLENBQUEsRUFBQWdFLElBQUEsQ0FBQVYsSUFBQSxPQUFBVSxJQUFBLFdBQUFBLElBQUEsQ0FBQVYsSUFBQSxPQUFBVSxJQUFBLFFBQUFqRSxDQUFBLENBQUEwQyxNQUFBLEdBQUFBLE1BQUEsRUFBQWpCLE9BQUEsQ0FBQXJCLFNBQUEsS0FBQTZFLFdBQUEsRUFBQXhELE9BQUEsRUFBQW1ELEtBQUEsV0FBQUEsTUFBQTVFLENBQUEsYUFBQTRGLElBQUEsV0FBQTNCLElBQUEsV0FBQU4sSUFBQSxRQUFBQyxLQUFBLEdBQUEzRCxDQUFBLE9BQUFzRCxJQUFBLFlBQUFFLFFBQUEsY0FBQUQsTUFBQSxnQkFBQTNCLEdBQUEsR0FBQTVCLENBQUEsT0FBQXVFLFVBQUEsQ0FBQTNCLE9BQUEsQ0FBQTZCLGFBQUEsSUFBQTFFLENBQUEsV0FBQUUsQ0FBQSxrQkFBQUEsQ0FBQSxDQUFBMkYsTUFBQSxPQUFBeEYsQ0FBQSxDQUFBeUIsSUFBQSxPQUFBNUIsQ0FBQSxNQUFBMkUsS0FBQSxFQUFBM0UsQ0FBQSxDQUFBNEYsS0FBQSxjQUFBNUYsQ0FBQSxJQUFBRCxDQUFBLE1BQUE4RixJQUFBLFdBQUFBLEtBQUEsU0FBQXhDLElBQUEsV0FBQXRELENBQUEsUUFBQXVFLFVBQUEsSUFBQUcsVUFBQSxrQkFBQTFFLENBQUEsQ0FBQTJCLElBQUEsUUFBQTNCLENBQUEsQ0FBQTRCLEdBQUEsY0FBQW1FLElBQUEsS0FBQW5DLGlCQUFBLFdBQUFBLGtCQUFBN0QsQ0FBQSxhQUFBdUQsSUFBQSxRQUFBdkQsQ0FBQSxNQUFBRSxDQUFBLGtCQUFBK0YsT0FBQTVGLENBQUEsRUFBQUUsQ0FBQSxXQUFBSyxDQUFBLENBQUFnQixJQUFBLFlBQUFoQixDQUFBLENBQUFpQixHQUFBLEdBQUE3QixDQUFBLEVBQUFFLENBQUEsQ0FBQStELElBQUEsR0FBQTVELENBQUEsRUFBQUUsQ0FBQSxLQUFBTCxDQUFBLENBQUFzRCxNQUFBLFdBQUF0RCxDQUFBLENBQUEyQixHQUFBLEdBQUE1QixDQUFBLEtBQUFNLENBQUEsYUFBQUEsQ0FBQSxRQUFBaUUsVUFBQSxDQUFBTSxNQUFBLE1BQUF2RSxDQUFBLFNBQUFBLENBQUEsUUFBQUcsQ0FBQSxRQUFBOEQsVUFBQSxDQUFBakUsQ0FBQSxHQUFBSyxDQUFBLEdBQUFGLENBQUEsQ0FBQWlFLFVBQUEsaUJBQUFqRSxDQUFBLENBQUEwRCxNQUFBLFNBQUE2QixNQUFBLGFBQUF2RixDQUFBLENBQUEwRCxNQUFBLFNBQUF3QixJQUFBLFFBQUE5RSxDQUFBLEdBQUFULENBQUEsQ0FBQXlCLElBQUEsQ0FBQXBCLENBQUEsZUFBQU0sQ0FBQSxHQUFBWCxDQUFBLENBQUF5QixJQUFBLENBQUFwQixDQUFBLHFCQUFBSSxDQUFBLElBQUFFLENBQUEsYUFBQTRFLElBQUEsR0FBQWxGLENBQUEsQ0FBQTJELFFBQUEsU0FBQTRCLE1BQUEsQ0FBQXZGLENBQUEsQ0FBQTJELFFBQUEsZ0JBQUF1QixJQUFBLEdBQUFsRixDQUFBLENBQUE0RCxVQUFBLFNBQUEyQixNQUFBLENBQUF2RixDQUFBLENBQUE0RCxVQUFBLGNBQUF4RCxDQUFBLGFBQUE4RSxJQUFBLEdBQUFsRixDQUFBLENBQUEyRCxRQUFBLFNBQUE0QixNQUFBLENBQUF2RixDQUFBLENBQUEyRCxRQUFBLHFCQUFBckQsQ0FBQSxZQUFBc0MsS0FBQSxxREFBQXNDLElBQUEsR0FBQWxGLENBQUEsQ0FBQTRELFVBQUEsU0FBQTJCLE1BQUEsQ0FBQXZGLENBQUEsQ0FBQTRELFVBQUEsWUFBQVIsTUFBQSxXQUFBQSxPQUFBN0QsQ0FBQSxFQUFBRCxDQUFBLGFBQUFFLENBQUEsUUFBQXNFLFVBQUEsQ0FBQU0sTUFBQSxNQUFBNUUsQ0FBQSxTQUFBQSxDQUFBLFFBQUFLLENBQUEsUUFBQWlFLFVBQUEsQ0FBQXRFLENBQUEsT0FBQUssQ0FBQSxDQUFBNkQsTUFBQSxTQUFBd0IsSUFBQSxJQUFBdkYsQ0FBQSxDQUFBeUIsSUFBQSxDQUFBdkIsQ0FBQSx3QkFBQXFGLElBQUEsR0FBQXJGLENBQUEsQ0FBQStELFVBQUEsUUFBQTVELENBQUEsR0FBQUgsQ0FBQSxhQUFBRyxDQUFBLGlCQUFBVCxDQUFBLG1CQUFBQSxDQUFBLEtBQUFTLENBQUEsQ0FBQTBELE1BQUEsSUFBQXBFLENBQUEsSUFBQUEsQ0FBQSxJQUFBVSxDQUFBLENBQUE0RCxVQUFBLEtBQUE1RCxDQUFBLGNBQUFFLENBQUEsR0FBQUYsQ0FBQSxHQUFBQSxDQUFBLENBQUFpRSxVQUFBLGNBQUEvRCxDQUFBLENBQUFnQixJQUFBLEdBQUEzQixDQUFBLEVBQUFXLENBQUEsQ0FBQWlCLEdBQUEsR0FBQTdCLENBQUEsRUFBQVUsQ0FBQSxTQUFBOEMsTUFBQSxnQkFBQVMsSUFBQSxHQUFBdkQsQ0FBQSxDQUFBNEQsVUFBQSxFQUFBbkMsQ0FBQSxTQUFBK0QsUUFBQSxDQUFBdEYsQ0FBQSxNQUFBc0YsUUFBQSxXQUFBQSxTQUFBakcsQ0FBQSxFQUFBRCxDQUFBLG9CQUFBQyxDQUFBLENBQUEyQixJQUFBLFFBQUEzQixDQUFBLENBQUE0QixHQUFBLHFCQUFBNUIsQ0FBQSxDQUFBMkIsSUFBQSxtQkFBQTNCLENBQUEsQ0FBQTJCLElBQUEsUUFBQXFDLElBQUEsR0FBQWhFLENBQUEsQ0FBQTRCLEdBQUEsZ0JBQUE1QixDQUFBLENBQUEyQixJQUFBLFNBQUFvRSxJQUFBLFFBQUFuRSxHQUFBLEdBQUE1QixDQUFBLENBQUE0QixHQUFBLE9BQUEyQixNQUFBLGtCQUFBUyxJQUFBLHlCQUFBaEUsQ0FBQSxDQUFBMkIsSUFBQSxJQUFBNUIsQ0FBQSxVQUFBaUUsSUFBQSxHQUFBakUsQ0FBQSxHQUFBbUMsQ0FBQSxLQUFBZ0UsTUFBQSxXQUFBQSxPQUFBbEcsQ0FBQSxhQUFBRCxDQUFBLFFBQUF3RSxVQUFBLENBQUFNLE1BQUEsTUFBQTlFLENBQUEsU0FBQUEsQ0FBQSxRQUFBRSxDQUFBLFFBQUFzRSxVQUFBLENBQUF4RSxDQUFBLE9BQUFFLENBQUEsQ0FBQW9FLFVBQUEsS0FBQXJFLENBQUEsY0FBQWlHLFFBQUEsQ0FBQWhHLENBQUEsQ0FBQXlFLFVBQUEsRUFBQXpFLENBQUEsQ0FBQXFFLFFBQUEsR0FBQUcsYUFBQSxDQUFBeEUsQ0FBQSxHQUFBaUMsQ0FBQSx5QkFBQWlFLE9BQUFuRyxDQUFBLGFBQUFELENBQUEsUUFBQXdFLFVBQUEsQ0FBQU0sTUFBQSxNQUFBOUUsQ0FBQSxTQUFBQSxDQUFBLFFBQUFFLENBQUEsUUFBQXNFLFVBQUEsQ0FBQXhFLENBQUEsT0FBQUUsQ0FBQSxDQUFBa0UsTUFBQSxLQUFBbkUsQ0FBQSxRQUFBSSxDQUFBLEdBQUFILENBQUEsQ0FBQXlFLFVBQUEsa0JBQUF0RSxDQUFBLENBQUF1QixJQUFBLFFBQUFyQixDQUFBLEdBQUFGLENBQUEsQ0FBQXdCLEdBQUEsRUFBQTZDLGFBQUEsQ0FBQXhFLENBQUEsWUFBQUssQ0FBQSxnQkFBQStDLEtBQUEsOEJBQUErQyxhQUFBLFdBQUFBLGNBQUFyRyxDQUFBLEVBQUFFLENBQUEsRUFBQUcsQ0FBQSxnQkFBQW9ELFFBQUEsS0FBQTVDLFFBQUEsRUFBQTZCLE1BQUEsQ0FBQTFDLENBQUEsR0FBQWdFLFVBQUEsRUFBQTlELENBQUEsRUFBQWdFLE9BQUEsRUFBQTdELENBQUEsb0JBQUFtRCxNQUFBLFVBQUEzQixHQUFBLEdBQUE1QixDQUFBLEdBQUFrQyxDQUFBLE9BQUFuQyxDQUFBO0FBQUEsU0FBQXNHLG1CQUFBQyxHQUFBLEVBQUFyRCxPQUFBLEVBQUFzRCxNQUFBLEVBQUFDLEtBQUEsRUFBQUMsTUFBQSxFQUFBQyxHQUFBLEVBQUE5RSxHQUFBLGNBQUErRSxJQUFBLEdBQUFMLEdBQUEsQ0FBQUksR0FBQSxFQUFBOUUsR0FBQSxPQUFBcEIsS0FBQSxHQUFBbUcsSUFBQSxDQUFBbkcsS0FBQSxXQUFBb0csS0FBQSxJQUFBTCxNQUFBLENBQUFLLEtBQUEsaUJBQUFELElBQUEsQ0FBQXJELElBQUEsSUFBQUwsT0FBQSxDQUFBekMsS0FBQSxZQUFBK0UsT0FBQSxDQUFBdEMsT0FBQSxDQUFBekMsS0FBQSxFQUFBMkMsSUFBQSxDQUFBcUQsS0FBQSxFQUFBQyxNQUFBO0FBQUEsU0FBQUksa0JBQUFDLEVBQUEsNkJBQUFDLElBQUEsU0FBQUMsSUFBQSxHQUFBQyxTQUFBLGFBQUExQixPQUFBLFdBQUF0QyxPQUFBLEVBQUFzRCxNQUFBLFFBQUFELEdBQUEsR0FBQVEsRUFBQSxDQUFBSSxLQUFBLENBQUFILElBQUEsRUFBQUMsSUFBQSxZQUFBUixNQUFBaEcsS0FBQSxJQUFBNkYsa0JBQUEsQ0FBQUMsR0FBQSxFQUFBckQsT0FBQSxFQUFBc0QsTUFBQSxFQUFBQyxLQUFBLEVBQUFDLE1BQUEsVUFBQWpHLEtBQUEsY0FBQWlHLE9BQUFVLEdBQUEsSUFBQWQsa0JBQUEsQ0FBQUMsR0FBQSxFQUFBckQsT0FBQSxFQUFBc0QsTUFBQSxFQUFBQyxLQUFBLEVBQUFDLE1BQUEsV0FBQVUsR0FBQSxLQUFBWCxLQUFBLENBQUFZLFNBQUE7QUFBQSxTQUFBQywyQkFBQS9HLENBQUEsRUFBQWdILGNBQUEsUUFBQUMsRUFBQSxVQUFBN0csTUFBQSxvQkFBQUosQ0FBQSxDQUFBSSxNQUFBLENBQUFFLFFBQUEsS0FBQU4sQ0FBQSxxQkFBQWlILEVBQUEsUUFBQUMsS0FBQSxDQUFBQyxPQUFBLENBQUFuSCxDQUFBLE1BQUFpSCxFQUFBLEdBQUFHLDJCQUFBLENBQUFwSCxDQUFBLE1BQUFnSCxjQUFBLElBQUFoSCxDQUFBLFdBQUFBLENBQUEsQ0FBQXVFLE1BQUEscUJBQUEwQyxFQUFBLEVBQUFqSCxDQUFBLEdBQUFpSCxFQUFBLE1BQUE5RyxDQUFBLFVBQUFrSCxDQUFBLFlBQUFBLEVBQUEsZUFBQTFGLENBQUEsRUFBQTBGLENBQUEsRUFBQXZILENBQUEsV0FBQUEsRUFBQSxRQUFBSyxDQUFBLElBQUFILENBQUEsQ0FBQXVFLE1BQUEsV0FBQXZCLElBQUEsbUJBQUFBLElBQUEsU0FBQTlDLEtBQUEsRUFBQUYsQ0FBQSxDQUFBRyxDQUFBLFVBQUFWLENBQUEsV0FBQUEsRUFBQTZILEVBQUEsVUFBQUEsRUFBQSxLQUFBNUYsQ0FBQSxFQUFBMkYsQ0FBQSxnQkFBQTdELFNBQUEsaUpBQUErRCxnQkFBQSxTQUFBQyxNQUFBLFVBQUFYLEdBQUEsV0FBQWxGLENBQUEsV0FBQUEsRUFBQSxJQUFBc0YsRUFBQSxHQUFBQSxFQUFBLENBQUExRixJQUFBLENBQUF2QixDQUFBLE1BQUFGLENBQUEsV0FBQUEsRUFBQSxRQUFBMkgsSUFBQSxHQUFBUixFQUFBLENBQUF2RCxJQUFBLElBQUE2RCxnQkFBQSxHQUFBRSxJQUFBLENBQUF6RSxJQUFBLFNBQUF5RSxJQUFBLEtBQUFoSSxDQUFBLFdBQUFBLEVBQUFpSSxHQUFBLElBQUFGLE1BQUEsU0FBQVgsR0FBQSxHQUFBYSxHQUFBLEtBQUFoRyxDQUFBLFdBQUFBLEVBQUEsZUFBQTZGLGdCQUFBLElBQUFOLEVBQUEsb0JBQUFBLEVBQUEsOEJBQUFPLE1BQUEsUUFBQVgsR0FBQTtBQUFBLFNBQUFjLFFBQUFsSSxDQUFBLEVBQUFFLENBQUEsUUFBQUQsQ0FBQSxHQUFBRSxNQUFBLENBQUFzRixJQUFBLENBQUF6RixDQUFBLE9BQUFHLE1BQUEsQ0FBQWdJLHFCQUFBLFFBQUE1SCxDQUFBLEdBQUFKLE1BQUEsQ0FBQWdJLHFCQUFBLENBQUFuSSxDQUFBLEdBQUFFLENBQUEsS0FBQUssQ0FBQSxHQUFBQSxDQUFBLENBQUE2SCxNQUFBLFdBQUFsSSxDQUFBLFdBQUFDLE1BQUEsQ0FBQWtJLHdCQUFBLENBQUFySSxDQUFBLEVBQUFFLENBQUEsRUFBQWlCLFVBQUEsT0FBQWxCLENBQUEsQ0FBQXdFLElBQUEsQ0FBQTBDLEtBQUEsQ0FBQWxILENBQUEsRUFBQU0sQ0FBQSxZQUFBTixDQUFBO0FBQUEsU0FBQXFJLGNBQUF0SSxDQUFBLGFBQUFFLENBQUEsTUFBQUEsQ0FBQSxHQUFBZ0gsU0FBQSxDQUFBcEMsTUFBQSxFQUFBNUUsQ0FBQSxVQUFBRCxDQUFBLFdBQUFpSCxTQUFBLENBQUFoSCxDQUFBLElBQUFnSCxTQUFBLENBQUFoSCxDQUFBLFFBQUFBLENBQUEsT0FBQWdJLE9BQUEsQ0FBQS9ILE1BQUEsQ0FBQUYsQ0FBQSxPQUFBNEMsT0FBQSxXQUFBM0MsQ0FBQSxJQUFBcUksZUFBQSxDQUFBdkksQ0FBQSxFQUFBRSxDQUFBLEVBQUFELENBQUEsQ0FBQUMsQ0FBQSxTQUFBQyxNQUFBLENBQUFxSSx5QkFBQSxHQUFBckksTUFBQSxDQUFBc0ksZ0JBQUEsQ0FBQXpJLENBQUEsRUFBQUcsTUFBQSxDQUFBcUkseUJBQUEsQ0FBQXZJLENBQUEsS0FBQWlJLE9BQUEsQ0FBQS9ILE1BQUEsQ0FBQUYsQ0FBQSxHQUFBNEMsT0FBQSxXQUFBM0MsQ0FBQSxJQUFBQyxNQUFBLENBQUFLLGNBQUEsQ0FBQVIsQ0FBQSxFQUFBRSxDQUFBLEVBQUFDLE1BQUEsQ0FBQWtJLHdCQUFBLENBQUFwSSxDQUFBLEVBQUFDLENBQUEsaUJBQUFGLENBQUE7QUFBQSxTQUFBdUksZ0JBQUFHLEdBQUEsRUFBQS9CLEdBQUEsRUFBQWxHLEtBQUEsSUFBQWtHLEdBQUEsR0FBQWdDLGNBQUEsQ0FBQWhDLEdBQUEsT0FBQUEsR0FBQSxJQUFBK0IsR0FBQSxJQUFBdkksTUFBQSxDQUFBSyxjQUFBLENBQUFrSSxHQUFBLEVBQUEvQixHQUFBLElBQUFsRyxLQUFBLEVBQUFBLEtBQUEsRUFBQVUsVUFBQSxRQUFBQyxZQUFBLFFBQUFDLFFBQUEsb0JBQUFxSCxHQUFBLENBQUEvQixHQUFBLElBQUFsRyxLQUFBLFdBQUFpSSxHQUFBO0FBQUEsU0FBQUMsZUFBQTlHLEdBQUEsUUFBQThFLEdBQUEsR0FBQWlDLFlBQUEsQ0FBQS9HLEdBQUEsb0JBQUFvQixPQUFBLENBQUEwRCxHQUFBLGlCQUFBQSxHQUFBLEdBQUFrQyxNQUFBLENBQUFsQyxHQUFBO0FBQUEsU0FBQWlDLGFBQUFFLEtBQUEsRUFBQUMsSUFBQSxRQUFBOUYsT0FBQSxDQUFBNkYsS0FBQSxrQkFBQUEsS0FBQSxrQkFBQUEsS0FBQSxNQUFBRSxJQUFBLEdBQUFGLEtBQUEsQ0FBQW5JLE1BQUEsQ0FBQXNJLFdBQUEsT0FBQUQsSUFBQSxLQUFBM0IsU0FBQSxRQUFBNkIsR0FBQSxHQUFBRixJQUFBLENBQUFsSCxJQUFBLENBQUFnSCxLQUFBLEVBQUFDLElBQUEsb0JBQUE5RixPQUFBLENBQUFpRyxHQUFBLHVCQUFBQSxHQUFBLFlBQUFuRixTQUFBLDREQUFBZ0YsSUFBQSxnQkFBQUYsTUFBQSxHQUFBTSxNQUFBLEVBQUFMLEtBQUE7QUFBQSxTQUFBTSxlQUFBQyxHQUFBLEVBQUEzSSxDQUFBLFdBQUE0SSxlQUFBLENBQUFELEdBQUEsS0FBQUUscUJBQUEsQ0FBQUYsR0FBQSxFQUFBM0ksQ0FBQSxLQUFBaUgsMkJBQUEsQ0FBQTBCLEdBQUEsRUFBQTNJLENBQUEsS0FBQThJLGdCQUFBO0FBQUEsU0FBQUEsaUJBQUEsY0FBQXpGLFNBQUE7QUFBQSxTQUFBNEQsNEJBQUFwSCxDQUFBLEVBQUFrSixNQUFBLFNBQUFsSixDQUFBLHFCQUFBQSxDQUFBLHNCQUFBbUosaUJBQUEsQ0FBQW5KLENBQUEsRUFBQWtKLE1BQUEsT0FBQXBKLENBQUEsR0FBQUYsTUFBQSxDQUFBQyxTQUFBLENBQUF1SixRQUFBLENBQUE3SCxJQUFBLENBQUF2QixDQUFBLEVBQUF1RixLQUFBLGFBQUF6RixDQUFBLGlCQUFBRSxDQUFBLENBQUEwRSxXQUFBLEVBQUE1RSxDQUFBLEdBQUFFLENBQUEsQ0FBQTBFLFdBQUEsQ0FBQUMsSUFBQSxNQUFBN0UsQ0FBQSxjQUFBQSxDQUFBLG1CQUFBb0gsS0FBQSxDQUFBbUMsSUFBQSxDQUFBckosQ0FBQSxPQUFBRixDQUFBLCtEQUFBd0osSUFBQSxDQUFBeEosQ0FBQSxVQUFBcUosaUJBQUEsQ0FBQW5KLENBQUEsRUFBQWtKLE1BQUE7QUFBQSxTQUFBQyxrQkFBQUwsR0FBQSxFQUFBUyxHQUFBLFFBQUFBLEdBQUEsWUFBQUEsR0FBQSxHQUFBVCxHQUFBLENBQUF2RSxNQUFBLEVBQUFnRixHQUFBLEdBQUFULEdBQUEsQ0FBQXZFLE1BQUEsV0FBQXBFLENBQUEsTUFBQXFKLElBQUEsT0FBQXRDLEtBQUEsQ0FBQXFDLEdBQUEsR0FBQXBKLENBQUEsR0FBQW9KLEdBQUEsRUFBQXBKLENBQUEsSUFBQXFKLElBQUEsQ0FBQXJKLENBQUEsSUFBQTJJLEdBQUEsQ0FBQTNJLENBQUEsVUFBQXFKLElBQUE7QUFBQSxTQUFBUixzQkFBQXJKLENBQUEsRUFBQThCLENBQUEsUUFBQS9CLENBQUEsV0FBQUMsQ0FBQSxnQ0FBQVMsTUFBQSxJQUFBVCxDQUFBLENBQUFTLE1BQUEsQ0FBQUUsUUFBQSxLQUFBWCxDQUFBLDRCQUFBRCxDQUFBLFFBQUFELENBQUEsRUFBQUssQ0FBQSxFQUFBSyxDQUFBLEVBQUFNLENBQUEsRUFBQUosQ0FBQSxPQUFBcUIsQ0FBQSxPQUFBMUIsQ0FBQSxpQkFBQUcsQ0FBQSxJQUFBVCxDQUFBLEdBQUFBLENBQUEsQ0FBQTZCLElBQUEsQ0FBQTVCLENBQUEsR0FBQStELElBQUEsUUFBQWpDLENBQUEsUUFBQTdCLE1BQUEsQ0FBQUYsQ0FBQSxNQUFBQSxDQUFBLFVBQUFnQyxDQUFBLHVCQUFBQSxDQUFBLElBQUFqQyxDQUFBLEdBQUFVLENBQUEsQ0FBQW9CLElBQUEsQ0FBQTdCLENBQUEsR0FBQXNELElBQUEsTUFBQTNDLENBQUEsQ0FBQTZELElBQUEsQ0FBQXpFLENBQUEsQ0FBQVMsS0FBQSxHQUFBRyxDQUFBLENBQUFrRSxNQUFBLEtBQUE5QyxDQUFBLEdBQUFDLENBQUEsaUJBQUEvQixDQUFBLElBQUFLLENBQUEsT0FBQUYsQ0FBQSxHQUFBSCxDQUFBLHlCQUFBK0IsQ0FBQSxZQUFBaEMsQ0FBQSxlQUFBZSxDQUFBLEdBQUFmLENBQUEsY0FBQUUsTUFBQSxDQUFBYSxDQUFBLE1BQUFBLENBQUEsMkJBQUFULENBQUEsUUFBQUYsQ0FBQSxhQUFBTyxDQUFBO0FBQUEsU0FBQTBJLGdCQUFBRCxHQUFBLFFBQUE1QixLQUFBLENBQUFDLE9BQUEsQ0FBQTJCLEdBQUEsVUFBQUEsR0FBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQURBO0FBQ0EsT0FBTyxLQUFLVyxLQUFLLE1BQU0sT0FBTztBQUM5QixTQUNFQyxnQkFBZ0IsRUFDaEJDLDhCQUE4QixFQUM5QkMseUJBQXlCLEVBQ3pCQyxXQUFXLFFBQ04sa0JBQWtCO0FBQ3pCLFNBQVNDLE9BQU8sUUFBUSx5QkFBeUI7QUFDakQsU0FDRUMsZUFBZSxFQUNmQyxlQUFlLEVBQ2ZDLHNCQUFzQixFQUN0QkMsZ0JBQWdCLEVBQ2hCQyxnQkFBZ0IsUUFDWCxVQUFVO0FBQ2pCLFNBQVNDLGFBQWEsRUFBRUMsNEJBQTRCLFFBQVEsNEJBQTRCO0FBQ3hGLFNBQVNDLGVBQWUsUUFBUSxVQUFVO0FBQzFDLFNBQVNDLGVBQWUsUUFBUSxnQkFBZ0I7QUFxRWhEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQyxhQUFhQSxDQUFDQyxlQUFzQixFQUFFQyxvQkFBcUMsRUFBVTtFQUFBLElBQUFDLHFCQUFBO0VBQzVGRCxvQkFBb0IsR0FBRyxDQUFBQyxxQkFBQSxHQUFBRCxvQkFBb0IsY0FBQUMscUJBQUEsZUFBcEJBLHFCQUFBLENBQXNCcEcsTUFBTSxHQUFHbUcsb0JBQW9CLEdBQUcsSUFBSSxFQUFDOztFQUVsRixJQUFLRCxlQUFlLElBQUlDLG9CQUFvQixFQUFFO0lBQzVDLElBQUFFLHFCQUFBLEdBR0lsQixnQkFBZ0IsQ0FBQ21CLGdDQUFnQyxDQUFDSixlQUFlLEVBQUVDLG9CQUFvQixDQUFDO01BRjFGSSxVQUFVLEdBQUFGLHFCQUFBLENBQVZFLFVBQVU7TUFDVkMsUUFBUSxHQUFBSCxxQkFBQSxDQUFSRyxRQUFRO0lBRVYsT0FBT3JCLGdCQUFnQixDQUFDc0Isb0JBQW9CLENBQUNELFFBQVEsRUFBRUQsVUFBVSxDQUFDO0VBQ3BFO0VBRUEsT0FBTyxJQUFJO0FBQ2I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTRyxtQkFBbUJBLENBQUNDLG1CQUFvQyxFQUFFQyxtQkFBb0MsRUFBRUMsZ0JBQXlCLEVBQUVDLFlBQW1CLEVBQVM7RUFDOUosSUFBSVosZUFBZSxHQUFHLElBQUk7RUFDMUIsSUFBTWEsb0JBQW9CLEdBQUdKLG1CQUFtQixJQUFJQyxtQkFBbUI7RUFFdkUsSUFBSUMsZ0JBQWdCLElBQUlDLFlBQVksRUFBRTtJQUNwQyxJQUFBRSxxQkFBQSxHQUE0QjdCLGdCQUFnQixDQUFDOEIsNkJBQTZCLENBQUNGLG9CQUFvQixFQUFFRCxZQUFZLENBQUM7TUFBdEdJLGVBQWUsR0FBQUYscUJBQUEsQ0FBZkUsZUFBZTtJQUN2QmhCLGVBQWUsR0FBR2dCLGVBQWU7RUFDbkMsQ0FBQyxNQUFNO0lBQ0xoQixlQUFlLEdBQUdiLHlCQUF5QixDQUFDOEIsc0JBQXNCLENBQUNKLG9CQUFvQixDQUFDO0VBQzFGO0VBQ0EsT0FBT2IsZUFBZTtBQUN4Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNrQixTQUFTQSxDQUFDQyxJQUFXLEVBQVU7RUFDdEMsS0FBSyxJQUFJekwsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHeUwsSUFBSSxDQUFDckgsTUFBTSxFQUFFcEUsQ0FBQyxFQUFFLEVBQUU7SUFDcEMsSUFBSXlMLElBQUksQ0FBQ3pMLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRTtNQUNuQixPQUFPLEtBQUs7SUFDZDtFQUNGO0VBQ0EsT0FBTyxJQUFJO0FBQ2I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMwTCwyQkFBMkJBLENBQUNSLFlBQW1CLEVBQUVTLGdCQUF1QixFQUFVO0VBQ3pGLElBQUlDLE9BQU8sR0FBR1YsWUFBWSxLQUFLUyxnQkFBZ0I7RUFFL0MsSUFBSUMsT0FBTyxJQUFJVixZQUFZLEVBQUU7SUFBRTtJQUM3QixJQUFNVyxnQkFBZ0IsR0FBR1gsWUFBWSxDQUFDOUcsTUFBTSxJQUFHdUgsZ0JBQWdCLGFBQWhCQSxnQkFBZ0IsdUJBQWhCQSxnQkFBZ0IsQ0FBRXZILE1BQU07SUFDdkUsSUFBTTBILGtCQUFrQixHQUFHWixZQUFZLENBQUNhLFNBQVMsQ0FBQyxDQUFDLEVBQUVKLGdCQUFnQixDQUFDdkgsTUFBTSxDQUFDO0lBRTdFLElBQUt5SCxnQkFBZ0IsR0FBRyxDQUFDLElBQU1GLGdCQUFnQixLQUFLRyxrQkFBbUIsRUFBRTtNQUFFO01BQ3pFO01BQ0EsSUFBTUUsU0FBUyxHQUFHZCxZQUFZLENBQUNhLFNBQVMsQ0FBQ2IsWUFBWSxDQUFDOUcsTUFBTSxHQUFHeUgsZ0JBQWdCLENBQUM7TUFDaEYsSUFBTUksR0FBRyxHQUFHZixZQUFZLENBQUNnQixXQUFXLENBQUMsSUFBSSxDQUFDO01BQzFDLElBQU1DLFdBQVcsR0FBR2pCLFlBQVksQ0FBQ2UsR0FBRyxHQUFHLENBQUMsQ0FBQztNQUN6QyxJQUFNRyxhQUFhLEdBQUlILEdBQUcsR0FBRyxDQUFDLElBQU1FLFdBQVcsS0FBSyxHQUFJO01BRXhELElBQUlDLGFBQWEsSUFBSVosU0FBUyxDQUFDUSxTQUFTLENBQUMsRUFBRTtRQUN6Q0osT0FBTyxHQUFHLEtBQUs7TUFDakI7SUFDRjtFQUNGO0VBQ0EsT0FBT0EsT0FBTztBQUNoQjs7QUFFQTtBQUNBLE9BQU8sU0FBU1MseUJBQXlCQSxDQUFBQyxJQUFBLEVBb0JSO0VBQUEsSUFuQi9CQyxZQUFZLEdBQUFELElBQUEsQ0FBWkMsWUFBWTtJQUNaQyxVQUFVLEdBQUFGLElBQUEsQ0FBVkUsVUFBVTtJQUNWQyxlQUFlLEdBQUFILElBQUEsQ0FBZkcsZUFBZTtJQUNmQyxVQUFVLEdBQUFKLElBQUEsQ0FBVkksVUFBVTtJQUNWMUIsbUJBQW1CLEdBQUFzQixJQUFBLENBQW5CdEIsbUJBQW1CO0lBQ25CVyxnQkFBZ0IsR0FBQVcsSUFBQSxDQUFoQlgsZ0JBQWdCO0lBQ2hCZ0IsY0FBYyxHQUFBTCxJQUFBLENBQWRLLGNBQWM7SUFDZEMscUJBQXFCLEdBQUFOLElBQUEsQ0FBckJNLHFCQUFxQjtJQUNyQkMsNEJBQTRCLEdBQUFQLElBQUEsQ0FBNUJPLDRCQUE0QjtJQUM1QkMsZUFBZSxHQUFBUixJQUFBLENBQWZRLGVBQWU7SUFDZkMsU0FBUyxHQUFBVCxJQUFBLENBQVRTLFNBQVM7SUFDVEMsZUFBZSxHQUFBVixJQUFBLENBQWZVLGVBQWU7SUFDZkMsaUJBQWlCLEdBQUFYLElBQUEsQ0FBakJXLGlCQUFpQjtJQUNqQkMsZUFBZSxHQUFBWixJQUFBLENBQWZZLGVBQWU7SUFDZkMsY0FBYyxHQUFBYixJQUFBLENBQWRhLGNBQWM7SUFDZEMsZUFBZSxHQUFBZCxJQUFBLENBQWZjLGVBQWU7SUFDZkMsY0FBYyxHQUFBZixJQUFBLENBQWRlLGNBQWM7SUFDZEMsS0FBSyxHQUFBaEIsSUFBQSxDQUFMZ0IsS0FBSztJQUNMQyxxQkFBcUIsR0FBQWpCLElBQUEsQ0FBckJpQixxQkFBcUI7RUFZckIsSUFBQUMsZUFBQSxHQUEyQmxFLEtBQUssQ0FBQ21FLFFBQVEsQ0FBQztNQUN4Q0MsT0FBTyxFQUFFLEtBQUs7TUFDZEMsV0FBVyxFQUFFLElBQUk7TUFDakJDLE9BQU8sRUFBRSxLQUFLO01BQ2RDLGFBQWEsRUFBRSxJQUFJO01BQ25CM0MsWUFBWSxFQUFFLElBQUk7TUFDbEJILG1CQUFtQixFQUFFLElBQUk7TUFDekJFLGdCQUFnQixFQUFFO0lBQ3BCLENBQUMsQ0FBQztJQUFBNkMsZ0JBQUEsR0FBQXBGLGNBQUEsQ0FBQThFLGVBQUE7SUFSS08sS0FBSyxHQUFBRCxnQkFBQTtJQUFFRSxTQUFTLEdBQUFGLGdCQUFBO0VBVXZCLElBQU1HLE1BQWtCLEdBQUdGLEtBQUssRUFBQztFQUNqQyxJQUNFTCxPQUFPLEdBT0xPLE1BQU0sQ0FQUlAsT0FBTztJQUNQQyxXQUFXLEdBTVRNLE1BQU0sQ0FOUk4sV0FBVztJQUNYQyxPQUFPLEdBS0xLLE1BQU0sQ0FMUkwsT0FBTztJQUNQQyxhQUFhLEdBSVhJLE1BQU0sQ0FKUkosYUFBYTtJQUNiM0MsWUFBWSxHQUdWK0MsTUFBTSxDQUhSL0MsWUFBWTtJQUNaSCxtQkFBbUIsR0FFakJrRCxNQUFNLENBRlJsRCxtQkFBbUI7SUFDbkJFLGdCQUFnQixHQUNkZ0QsTUFBTSxDQURSaEQsZ0JBQWdCO0VBRWxCLElBQU1pRCxPQUFPLEdBQUduQixTQUFTLGFBQVRBLFNBQVMsdUJBQVRBLFNBQVMsQ0FBRW1CLE9BQU87RUFDbEMsSUFBTUMsS0FBSyxHQUFHcEIsU0FBUyxhQUFUQSxTQUFTLHVCQUFUQSxTQUFTLENBQUVvQixLQUFLO0VBQzlCLElBQU1DLE1BQU0sR0FBR3JCLFNBQVMsYUFBVEEsU0FBUyx1QkFBVEEsU0FBUyxDQUFFcUIsTUFBTTtFQUNoQyxJQUFNQyxjQUFjLEdBQUc7SUFBRTtJQUN2QkgsT0FBTyxFQUFQQSxPQUFPO0lBQ1BDLEtBQUssRUFBTEEsS0FBSztJQUNMQyxNQUFNLEVBQU5BO0VBQ0YsQ0FBQztFQUVELFNBQVNFLFFBQVFBLENBQUNDLFFBQVEsRUFBRTtJQUMxQlAsU0FBUyxDQUFDLFVBQUFRLFNBQVM7TUFBQSxPQUFBNUcsYUFBQSxDQUFBQSxhQUFBLEtBQVU0RyxTQUFTLEdBQUtELFFBQVE7SUFBQSxDQUFHLENBQUM7RUFDekQ7RUFFQSxTQUFTRSxZQUFZQSxDQUFBLEVBQUc7SUFDdEJDLE9BQU8sQ0FBQ0MsR0FBRyxxQkFBQUMsTUFBQSxDQUFxQkMsSUFBSSxDQUFDQyxTQUFTLENBQUNULGNBQWMsQ0FBQyxDQUFFLENBQUM7SUFDakUsSUFBTVUsVUFBVSxHQUFBbkgsYUFBQSxDQUFBQSxhQUFBLEtBQ1htRyxLQUFLO01BQ1JKLFdBQVcsRUFBRSxJQUFJO01BQ2pCQyxPQUFPLEVBQUUsS0FBSztNQUNkQyxhQUFhLEVBQUUsSUFBSTtNQUNuQjNDLFlBQVksRUFBRSxJQUFJO01BQ2xCSCxtQkFBbUIsRUFBRSxJQUFJO01BQ3pCRSxnQkFBZ0IsRUFBRTtJQUFLLEVBQ3hCO0lBRUQsSUFBSSxDQUFDdEIsT0FBTyxDQUFDb0UsS0FBSyxFQUFFZ0IsVUFBVSxDQUFDLEVBQUU7TUFDL0JMLE9BQU8sQ0FBQ0MsR0FBRywyRUFBMkUsQ0FBQztNQUN2RkwsUUFBUSxDQUFDUyxVQUFVLENBQUM7SUFDdEI7RUFDRjtFQUVBLElBQU1DLDBCQUEwQixHQUFBcEgsYUFBQSxDQUFBQSxhQUFBLEtBQzNCcUYsaUJBQWlCO0lBQ3BCZ0MsVUFBVSxFQUFFOUU7RUFBZSxFQUM1Qjs7RUFFRDtFQUNBdUMsVUFBVSxHQUFHQSxVQUFVLElBQUksQ0FBQyxDQUFDO0VBQzdCLElBQU13Qyx5QkFBeUIsR0FBR2hGLDRCQUE0QixDQUM1RGtFLE1BQU0sRUFBRVksMEJBQTBCLEVBQUVyQyxjQUFjLEVBQUVHLGVBQ3RELENBQUM7RUFFRCxJQUFJLENBQUNMLGVBQWUsRUFBRTtJQUFFO0lBQ3RCeUMseUJBQXlCLENBQUNDLFlBQVksR0FBRyxJQUFJO0VBQy9DO0VBRUEsSUFBTTVFLG9CQUFvQixHQUFHakIsS0FBSyxDQUFDOEYsT0FBTyxDQUFDLFlBQU07SUFBRTtJQUNqRCxJQUFNQyxZQUFZLEdBQUcsRUFBRTtJQUV2QixJQUFJeEMsNEJBQTRCLEVBQUU7TUFDaEM7TUFDQSxJQUFNeUMsTUFBTSxHQUFHbEYsZUFBZSxDQUFDaUUsY0FBYyxFQUFFeEIsNEJBQTRCLEVBQUVBLDRCQUE0QixhQUE1QkEsNEJBQTRCLHVCQUE1QkEsNEJBQTRCLENBQUUwQyxVQUFVLENBQUM7TUFFdEgsSUFBSUQsTUFBTSxhQUFOQSxNQUFNLGVBQU5BLE1BQU0sQ0FBRWxMLE1BQU0sRUFBRTtRQUFBLElBQUFvTCxTQUFBLEdBQUE1SSwwQkFBQSxDQUNXMEksTUFBTTtVQUFBRyxLQUFBO1FBQUE7VUFBbkMsS0FBQUQsU0FBQSxDQUFBaE8sQ0FBQSxNQUFBaU8sS0FBQSxHQUFBRCxTQUFBLENBQUE3UCxDQUFBLElBQUFrRCxJQUFBLEdBQXFDO1lBQUEsSUFBQTZNLHFCQUFBO1lBQUEsSUFBMUJDLGNBQWMsR0FBQUYsS0FBQSxDQUFBMVAsS0FBQTtZQUN2QixJQUFNNlAsZ0JBQWdCLEdBQUdELGNBQWMsYUFBZEEsY0FBYyxnQkFBQUQscUJBQUEsR0FBZEMsY0FBYyxDQUFFRSxTQUFTLGNBQUFILHFCQUFBLHVCQUF6QkEscUJBQUEsQ0FBMkJMLFlBQVk7WUFFaEUsSUFBSU8sZ0JBQWdCLEVBQUU7Y0FDcEI3SSxLQUFLLENBQUNySCxTQUFTLENBQUNxRSxJQUFJLENBQUMwQyxLQUFLLENBQUM0SSxZQUFZLEVBQUVPLGdCQUFnQixDQUFDO1lBQzVEO1VBQ0Y7UUFBQyxTQUFBbEosR0FBQTtVQUFBOEksU0FBQSxDQUFBbFEsQ0FBQSxDQUFBb0gsR0FBQTtRQUFBO1VBQUE4SSxTQUFBLENBQUFqTyxDQUFBO1FBQUE7TUFDSDtJQUNGO0lBQ0EsT0FBTzhOLFlBQVk7RUFDckIsQ0FBQyxFQUFFLENBQUN4Qyw0QkFBNEIsRUFBRXFCLE9BQU8sRUFBRUMsS0FBSyxFQUFFQyxNQUFNLENBQUMsQ0FBQzs7RUFFMUQ7QUFDRjtBQUNBO0FBQ0E7RUFDRSxTQUFTMEIsc0JBQXNCQSxDQUFBLEVBQStEO0lBQUEsSUFBOURDLG9CQUFzQyxHQUFBdkosU0FBQSxDQUFBcEMsTUFBQSxRQUFBb0MsU0FBQSxRQUFBRyxTQUFBLEdBQUFILFNBQUEsTUFBR3VFLG1CQUFtQjtJQUMxRixJQUFNSSxvQkFBb0IsR0FBRzRFLG9CQUFvQixJQUFJL0UsbUJBQW1CO0lBQ3hFLE9BQU9HLG9CQUFvQjtFQUM3QjtFQUVBN0IsS0FBSyxDQUFDMEcsU0FBUyxDQUFDLFlBQU07SUFBRTtJQUN0QixJQUFNQyxRQUFRLEdBQUcsQ0FBQyxDQUFDakYsbUJBQW1CO0lBQ3RDLElBQUlrRixRQUFRLEdBQUcsS0FBSztJQUVwQixJQUFJLENBQUN2QyxXQUFXLEVBQUU7TUFBRTtNQUNsQixJQUFJc0MsUUFBUSxFQUFFO1FBQUU7UUFDZCxJQUFNOUUsb0JBQW9CLEdBQUcyRSxzQkFBc0IsQ0FBQyxDQUFDO1FBRXJELElBQUksQ0FBQ3JELGVBQWUsRUFBRTtVQUNwQnlELFFBQVEsR0FBRyxJQUFJO1FBQ2pCLENBQUMsTUFBTSxJQUFJaEYsWUFBWSxJQUFLQSxZQUFZLEtBQUtTLGdCQUFpQixFQUFFO1VBQzlELElBQU13RSxPQUFPLEdBQUc1RyxnQkFBZ0IsQ0FBQzhCLDZCQUE2QixDQUFDRixvQkFBb0IsRUFBRUQsWUFBWSxDQUFDO1VBQ2xHZ0YsUUFBUSxHQUFHN0YsYUFBYSxDQUFDOEYsT0FBTyxhQUFQQSxPQUFPLHVCQUFQQSxPQUFPLENBQUU3RSxlQUFlLEVBQUVmLG9CQUFvQixDQUFDO1FBQzFFLENBQUMsTUFBTTtVQUNMLElBQU1ELGVBQWUsR0FBR2IseUJBQXlCLENBQUM4QixzQkFBc0IsQ0FBQ0osb0JBQW9CLENBQUM7VUFDOUYrRSxRQUFRLEdBQUc3RixhQUFhLENBQUNDLGVBQWUsRUFBRUMsb0JBQW9CLENBQUM7UUFDakU7TUFDRjtNQUVBLElBQUltRCxPQUFPLEtBQUt3QyxRQUFRLEVBQUU7UUFDeEI1QixRQUFRLENBQUM7VUFBRVosT0FBTyxFQUFFd0M7UUFBUyxDQUFDLENBQUM7TUFDakM7SUFDRjtFQUNGLENBQUMsRUFBRSxDQUFDbEYsbUJBQW1CLEVBQUUyQyxXQUFXLEVBQUV6QyxZQUFZLEVBQUVTLGdCQUFnQixFQUFFYyxlQUFlLEVBQUVsQyxvQkFBb0IsQ0FBQyxDQUFDOztFQUU3RztBQUNGO0FBQ0E7QUFDQTtFQUNFLFNBQVM2RixVQUFVQSxDQUFBLEVBQWdCO0lBQUEsSUFBZjdCLFFBQVEsR0FBQS9ILFNBQUEsQ0FBQXBDLE1BQUEsUUFBQW9DLFNBQUEsUUFBQUcsU0FBQSxHQUFBSCxTQUFBLE1BQUcsQ0FBQyxDQUFDO0lBQy9Ca0ksT0FBTyxDQUFDQyxHQUFHLHlCQUFBQyxNQUFBLENBQXlCckMsWUFBWSxzQkFBbUJnQyxRQUFRLENBQUM7SUFDNUUsSUFBTThCLFNBQVMsR0FBQXpJLGFBQUE7TUFDYm1HLEtBQUssRUFBTEE7SUFBSyxHQUNGUSxRQUFRLENBQ1o7SUFDRDtJQUNBLElBRUVWLGFBQWEsR0FPWHdDLFNBQVMsQ0FQWHhDLGFBQWE7TUFFYjNDLFlBQVksR0FLVm1GLFNBQVMsQ0FMWG5GLFlBQVk7TUFFWkgsbUJBQW1CLEdBR2pCc0YsU0FBUyxDQUhYdEYsbUJBQW1CO01BRW5CRSxnQkFBZ0IsR0FDZG9GLFNBQVMsQ0FEWHBGLGdCQUFnQjtJQUVsQixJQUFJcUYsb0JBQW9CLEdBQUd2RixtQkFBbUI7SUFFOUMsSUFBSThDLGFBQWEsRUFBRTtNQUFFO01BQ25CYSxPQUFPLENBQUNDLEdBQUcsNENBQTRDLENBQUM7TUFDeEQyQixvQkFBb0IsR0FBR0MsNEJBQTRCLENBQUMsQ0FBQztJQUN2RDtJQUVBLElBQUl0RixnQkFBZ0IsSUFBSUMsWUFBWSxFQUFFO01BQ3BDd0QsT0FBTyxDQUFDQyxHQUFHLG9DQUFvQ3pELFlBQVksQ0FBQztNQUM1RCxJQUFNQyxvQkFBb0IsR0FBRzJFLHNCQUFzQixDQUFDUSxvQkFBb0IsQ0FBQztNQUN6RUEsb0JBQW9CLElBQUk1QixPQUFPLENBQUNDLEdBQUcsMkNBQTJDLENBQUM7TUFDL0UsSUFBQTZCLHNCQUFBLEdBQStCakgsZ0JBQWdCLENBQUM4Qiw2QkFBNkIsQ0FBQ0Ysb0JBQW9CLEVBQUVELFlBQVksQ0FBQztRQUF6R3VGLGtCQUFrQixHQUFBRCxzQkFBQSxDQUFsQkMsa0JBQWtCO01BQzFCSCxvQkFBb0IsR0FBR0csa0JBQWtCO0lBQzNDLENBQUMsTUFBTTtNQUFFO01BQ1BILG9CQUFvQixJQUFJNUIsT0FBTyxDQUFDQyxHQUFHLDZDQUE2QztRQUFFekQsWUFBWSxFQUFaQSxZQUFZO1FBQUVvRixvQkFBb0IsRUFBcEJBO01BQXFCLENBQUMsQ0FBQztNQUN2SEEsb0JBQW9CLEdBQUdBLG9CQUFvQixJQUFJdEYsbUJBQW1CO0lBQ3BFO0lBRUEsSUFBSXNGLG9CQUFvQixFQUFFO01BQUEsSUFBQUkscUJBQUE7TUFDeEIsSUFBTUMsR0FBRyxHQUFHM0QsZUFBZSxhQUFmQSxlQUFlLGdCQUFBMEQscUJBQUEsR0FBZjFELGVBQWUsQ0FBRTRELFlBQVksY0FBQUYscUJBQUEsdUJBQTdCQSxxQkFBQSxDQUFnQ25FLFlBQVksQ0FBQztNQUN6RCxPQUFPO1FBQ0xyQixZQUFZLEVBQVpBLFlBQVk7UUFDWnlGLEdBQUcsRUFBSEEsR0FBRztRQUNINUYsbUJBQW1CLEVBQUV1RjtNQUN2QixDQUFDO0lBQ0g7SUFFQSxPQUFPLENBQUMsQ0FBQztFQUNYOztFQUVBO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0UsU0FBU08sVUFBVUEsQ0FBQ0MsTUFBYSxFQUFvSTtJQUFBLElBQWxJZixvQkFBcUMsR0FBQXZKLFNBQUEsQ0FBQXBDLE1BQUEsUUFBQW9DLFNBQUEsUUFBQUcsU0FBQSxHQUFBSCxTQUFBLE1BQUd1RSxtQkFBbUI7SUFBQSxJQUFFZ0csb0JBQXFDLEdBQUF2SyxTQUFBLENBQUFwQyxNQUFBLFFBQUFvQyxTQUFBLFFBQUFHLFNBQUEsR0FBQUgsU0FBQSxNQUFHd0UsbUJBQW1CO0lBQ3pKLElBQU1nRyxpQkFBaUIsR0FBRy9HLGFBQWEsQ0FBQzhGLG9CQUFvQixDQUFDO0lBQzdELElBQU1rQixpQkFBaUIsR0FBR2hILGFBQWEsQ0FBQzhHLG9CQUFvQixDQUFDO0lBQzdELElBQUlHLElBQUksR0FBR0YsaUJBQWlCLENBQUM1TSxNQUFNLEtBQUs2TSxpQkFBaUIsQ0FBQzdNLE1BQU0sRUFBQztJQUNqRSxJQUFJK00sU0FBUztJQUViLElBQUlELElBQUksRUFBRTtNQUFFO01BQ1YsS0FBSyxJQUFJbFIsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHZ1IsaUJBQWlCLENBQUM1TSxNQUFNLEVBQUVwRSxDQUFDLEVBQUUsRUFBRTtRQUNqRCxJQUFNb1IsZ0JBQWdCLEdBQUdKLGlCQUFpQixDQUFDaFIsQ0FBQyxDQUFDO1FBQzdDLElBQU1xUixnQkFBZ0IsR0FBR0osaUJBQWlCLENBQUNqUixDQUFDLENBQUM7UUFFN0MsSUFBSSxDQUFDMkosT0FBTyxDQUFDeUgsZ0JBQWdCLEVBQUVDLGdCQUFnQixDQUFDLEVBQUU7VUFDaERGLFNBQVMsR0FBR25SLENBQUM7VUFDYmtSLElBQUksR0FBRyxLQUFLO1VBQ1o7UUFDRjtNQUNGO0lBQ0Y7SUFFQSxJQUFNSSxTQUFTLEdBQUcsQ0FBQ0osSUFBSTtJQUV2QixJQUFJSSxTQUFTLEVBQUU7TUFDYjVDLE9BQU8sQ0FBQ0MsR0FBRyxJQUFBQyxNQUFBLENBQUlrQyxNQUFNLDZGQUFBbEMsTUFBQSxDQUEwRnVDLFNBQVMsR0FBSXBHLG1CQUFtQixFQUFFQyxtQkFBbUIsQ0FBQztJQUN2SztJQUVBLE9BQU9zRyxTQUFTO0VBQ2xCOztFQUVBO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7RUFDRSxTQUFTQyxpQkFBaUJBLENBQUNULE1BQWMsRUFBa0U7SUFBQSxJQUFoRS9GLG1CQUFxQyxHQUFBdkUsU0FBQSxDQUFBcEMsTUFBQSxRQUFBb0MsU0FBQSxRQUFBRyxTQUFBLEdBQUFILFNBQUEsTUFBRyxJQUFJO0lBQ3JGdUUsbUJBQW1CLEdBQUdBLG1CQUFtQixJQUFJK0Usc0JBQXNCLENBQUMsQ0FBQztJQUNyRSxJQUFNQyxvQkFBb0IsR0FBR3ZHLDhCQUE4QixDQUFDZ0ksaUNBQWlDLENBQUN6RyxtQkFBbUIsRUFBRVIsb0JBQW9CLENBQUM7SUFDeElzRyxVQUFVLENBQUNDLE1BQU0sRUFBRWYsb0JBQW9CLEVBQUVoRixtQkFBbUIsQ0FBQztJQUM3RCxPQUFPZ0Ysb0JBQW9CO0VBQzdCOztFQUVBO0FBQ0Y7QUFDQTtFQUZFLFNBR2UwQixvQkFBb0JBLENBQUE7SUFBQSxPQUFBQyxxQkFBQSxDQUFBakwsS0FBQSxPQUFBRCxTQUFBO0VBQUE7RUFxQ25DO0FBQ0Y7QUFDQTtBQUNBO0VBSEUsU0FBQWtMLHNCQUFBO0lBQUFBLHFCQUFBLEdBQUF0TCxpQkFBQSxlQUFBL0csbUJBQUEsR0FBQW9GLElBQUEsQ0FyQ0EsU0FBQWtOLFFBQUE7TUFBQSxJQUFBQyxZQUFBLEVBQUFDLGlCQUFBLEVBQUE5QixvQkFBQSxFQUFBekYsZUFBQSxFQUFBd0gscUJBQUEsRUFBQWxILFFBQUEsRUFBQUQsVUFBQTtNQUFBLE9BQUF0TCxtQkFBQSxHQUFBdUIsSUFBQSxVQUFBbVIsU0FBQUMsUUFBQTtRQUFBLGtCQUFBQSxRQUFBLENBQUE5TSxJQUFBLEdBQUE4TSxRQUFBLENBQUF6TyxJQUFBO1VBQUE7WUFBQSxLQUNNa0osZUFBZTtjQUFBdUYsUUFBQSxDQUFBek8sSUFBQTtjQUFBO1lBQUE7WUFDYnFPLFlBQTZCLEdBQUcsSUFBSTtZQUFBSSxRQUFBLENBQUF6TyxJQUFBO1lBQUEsT0FDbEM2SixlQUFlLENBQUMsQ0FBQztVQUFBO1lBRXZCLElBQUksQ0FBQ08sV0FBVyxFQUFFO2NBQUU7Y0FDbEJlLE9BQU8sQ0FBQ0MsR0FBRyw2Q0FBNkMsQ0FBQztjQUNyRGtELGlCQUFpQixHQUFHLElBQUk7Y0FDeEI5QixvQkFBb0IsR0FBR2hGLG1CQUFtQjtjQUU5QyxJQUFJUixvQkFBb0IsRUFBRTtnQkFDeEJzSCxpQkFBaUIsR0FBR3BJLHlCQUF5QixDQUFDOEIsc0JBQXNCLENBQUNoQixvQkFBb0IsQ0FBQztnQkFDMUZ3RixvQkFBb0IsR0FBR3dCLGlCQUFpQixDQUFDLHdCQUF3QixDQUFDO2NBQ3BFO2NBRU1qSCxlQUFlLEdBQUdRLG1CQUFtQixDQUFDaUYsb0JBQW9CLEVBQUUvRSxtQkFBbUIsRUFBRUMsZ0JBQWdCLEVBQUVDLFlBQVksQ0FBQztjQUFBNEcscUJBQUEsR0FLbEh2SSxnQkFBZ0IsQ0FBQzBJLDBCQUEwQixDQUFDM0gsZUFBZSxFQUFFdUgsaUJBQWlCLENBQUMsRUFGcEVqSCxRQUFRLEdBQUFrSCxxQkFBQSxDQUFyQkksV0FBVyxFQUNNdkgsVUFBVSxHQUFBbUgscUJBQUEsQ0FBM0JLLGVBQWU7Y0FFakJQLFlBQVksR0FBRztnQkFBRWhILFFBQVEsRUFBUkEsUUFBUTtnQkFBRUQsVUFBVSxFQUFWQTtjQUFXLENBQUM7Y0FFdkMsSUFBSSxFQUFDQSxVQUFVLGFBQVZBLFVBQVUsZUFBVkEsVUFBVSxDQUFFdkcsTUFBTSxHQUFFO2dCQUN2QndOLFlBQVksQ0FBQ1EsWUFBWSxHQUFHLHNEQUFzRDtjQUNwRixDQUFDLE1BQU0sSUFBSSxFQUFDeEgsUUFBUSxhQUFSQSxRQUFRLGVBQVJBLFFBQVEsQ0FBRXhHLE1BQU0sR0FBRTtnQkFDNUJ3TixZQUFZLENBQUNRLFlBQVksR0FBRyxzRUFBc0U7Y0FDcEc7WUFDRixDQUFDLE1BQU07Y0FBRTtjQUNQMUQsT0FBTyxDQUFDQyxHQUFHLGlEQUFpRCxDQUFDO2NBQzdEaUQsWUFBWSxHQUFHakUsV0FBVztZQUM1QjtZQUNBVyxRQUFRLENBQUM7Y0FBRVgsV0FBVyxFQUFFaUU7WUFBYSxDQUFDLENBQUM7WUFDdkNsRCxPQUFPLENBQUNDLEdBQUcsQ0FBQ2lELFlBQVksQ0FBQztVQUFBO1VBQUE7WUFBQSxPQUFBSSxRQUFBLENBQUEzTSxJQUFBO1FBQUE7TUFBQSxHQUFBc00sT0FBQTtJQUFBLENBRTVCO0lBQUEsT0FBQUQscUJBQUEsQ0FBQWpMLEtBQUEsT0FBQUQsU0FBQTtFQUFBO0VBTUQsU0FBUytKLDRCQUE0QkEsQ0FBQSxFQUEwRTtJQUFBLElBQXpFOEIsY0FBc0MsR0FBQTdMLFNBQUEsQ0FBQXBDLE1BQUEsUUFBQW9DLFNBQUEsUUFBQUcsU0FBQSxHQUFBSCxTQUFBLE1BQUdxSCxhQUFhO0lBQzFGLElBQU0xQyxvQkFBb0IsR0FBRzJFLHNCQUFzQixDQUFDLENBQUM7SUFDckQsSUFBTXhFLGVBQWUsR0FBR0osWUFBWSxJQUFJekIseUJBQXlCLENBQUM4QixzQkFBc0IsQ0FBQ0osb0JBQW9CLENBQUM7SUFDOUcsSUFBTW1ILFNBQVMsR0FBRy9JLGdCQUFnQixDQUFDZ0osd0JBQXdCLENBQUNGLGNBQWMsQ0FBQ0gsV0FBVyxFQUFFRyxjQUFjLENBQUNGLGVBQWUsRUFBRTdHLGVBQWUsQ0FBQztJQUV4SSxJQUFJLENBQUNnSCxTQUFTLEVBQUU7TUFDZDVELE9BQU8sQ0FBQ3ZJLEtBQUssNERBQTRELENBQUM7SUFDNUU7SUFFQSxJQUFNcU0sbUJBQW1CLEdBQUc5SSxXQUFXLENBQUMrSSxlQUFlLENBQUNILFNBQVMsQ0FBQztJQUNsRSxPQUFPRSxtQkFBbUI7RUFDNUI7O0VBRUE7QUFDRjtBQUNBO0FBQ0E7RUFDRSxTQUFTRSxhQUFhQSxDQUFBLEVBQXlEO0lBQUEsSUFBeERMLGNBQXNDLEdBQUE3TCxTQUFBLENBQUFwQyxNQUFBLFFBQUFvQyxTQUFBLFFBQUFHLFNBQUEsR0FBQUgsU0FBQSxNQUFHcUgsYUFBYTtJQUMzRWEsT0FBTyxDQUFDQyxHQUFHLG9DQUFvQzBELGNBQWMsQ0FBQztJQUU5RCxJQUFJQSxjQUFjLEVBQUU7TUFDbEIsSUFBTUcsbUJBQW1CLEdBQUdqQyw0QkFBNEIsQ0FBQzhCLGNBQWMsQ0FBQztNQUN4RTNELE9BQU8sQ0FBQ0MsR0FBRywwQ0FBMEM2RCxtQkFBbUIsQ0FBQztNQUN6RSxJQUFNakUsUUFBUSxHQUFHO1FBQ2ZaLFdBQVcsRUFBRSxJQUFJO1FBQ2pCQyxPQUFPLEVBQUUsS0FBSztRQUNkQyxhQUFhLEVBQUUsSUFBSTtRQUNuQjlDLG1CQUFtQixFQUFFeUg7TUFDdkIsQ0FBQztNQUNEbEUsUUFBUSxDQUFDQyxRQUFRLENBQUM7TUFDbEJvRSxpQkFBaUIsQ0FBQyxJQUFJLEVBQUVwRSxRQUFTLENBQUM7SUFDcEMsQ0FBQyxNQUFNO01BQ0xHLE9BQU8sQ0FBQ0MsR0FBRyx5Q0FBeUMsQ0FBQztNQUNyREwsUUFBUSxDQUFDO1FBQ1BYLFdBQVcsRUFBRSxJQUFJO1FBQ2pCQyxPQUFPLEVBQUU7TUFDWCxDQUFDLENBQUM7SUFDSjtFQUNGOztFQUVBO0FBQ0Y7QUFDQTtFQUNFLFNBQVNnRixlQUFlQSxDQUFBLEVBQUc7SUFDekJsRSxPQUFPLENBQUNDLEdBQUcsb0JBQW9CLENBQUM7SUFDaEMsSUFBTXJFLGVBQWUsR0FBR1EsbUJBQW1CLENBQUNDLG1CQUFtQixFQUFFQyxtQkFBbUIsRUFBRUMsZ0JBQWdCLEVBQUVDLFlBQVksQ0FBQztJQUNySCxJQUFNd0MsT0FBTyxHQUFHckQsYUFBYSxDQUFDQyxlQUFlLEVBQUVDLG9CQUFvQixDQUFDO0lBQ3BFK0QsUUFBUSxDQUFDO01BQUVYLFdBQVcsRUFBRSxJQUFJO01BQUVELE9BQU8sRUFBUEE7SUFBUSxDQUFDLENBQUM7RUFDMUM7O0VBRUE7QUFDRjtBQUNBO0FBQ0E7QUFDQTtFQUNFO0VBQUEsU0FDZW1GLFVBQVVBLENBQUFDLEVBQUE7SUFBQSxPQUFBQyxXQUFBLENBQUF0TSxLQUFBLE9BQUFELFNBQUE7RUFBQTtFQWtDekI7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBTEUsU0FBQXVNLFlBQUE7SUFBQUEsV0FBQSxHQUFBM00saUJBQUEsZUFBQS9HLG1CQUFBLEdBQUFvRixJQUFBLENBbENBLFNBQUF1TyxTQUEwQkMsUUFBaUI7TUFBQSxJQUFBQyxhQUFBO1FBQUFuRCxvQkFBQTtRQUFBb0QsNEJBQUE7UUFBQUMsMkJBQUE7UUFBQTdFLFFBQUE7UUFBQThFLHNCQUFBO1FBQUE1QyxrQkFBQTtRQUFBNkMsa0JBQUE7UUFBQUMsTUFBQSxHQUFBL00sU0FBQTtNQUFBLE9BQUFuSCxtQkFBQSxHQUFBdUIsSUFBQSxVQUFBNFMsVUFBQUMsU0FBQTtRQUFBLGtCQUFBQSxTQUFBLENBQUF2TyxJQUFBLEdBQUF1TyxTQUFBLENBQUFsUSxJQUFBO1VBQUE7WUFBRTJQLGFBQXFCLEdBQUFLLE1BQUEsQ0FBQW5QLE1BQUEsUUFBQW1QLE1BQUEsUUFBQTVNLFNBQUEsR0FBQTRNLE1BQUEsTUFBR3JJLFlBQVk7WUFDL0UsSUFBSXNCLFVBQVUsRUFBRTtjQUNkLElBQUl5RyxRQUFRLEtBQUtyRixPQUFPLEVBQUU7Z0JBQ3hCc0YsYUFBYSxHQUFHQSxhQUFhLElBQUl2SCxnQkFBZ0I7Z0JBQzdDb0Usb0JBQW9CLEdBQUcsSUFBSTtnQkFDekJvRCw0QkFBNEIsR0FBR0QsYUFBYSxLQUFLaEksWUFBWTtnQkFDN0RrSSwyQkFBMkIsR0FBR0YsYUFBYSxLQUFLdkgsZ0JBQWdCO2dCQUNoRTRDLFFBQVEsR0FBRztrQkFDZlgsT0FBTyxFQUFFcUYsUUFBUTtrQkFDakIvSCxZQUFZLEVBQUVnSSxhQUFhO2tCQUMzQmpJLGdCQUFnQixFQUFFbUk7Z0JBQ3BCLENBQUM7Z0JBRUQsSUFBSSxDQUFDSCxRQUFRLElBQUlFLDRCQUE0QixFQUFFO2tCQUFFO2tCQUMvQ3BELG9CQUFvQixHQUFHaEYsbUJBQW1CLElBQUkySSxtQkFBbUI7a0JBRWpFLElBQUlOLDJCQUEyQixFQUFFO29CQUFFO29CQUNqQztvQkFDQXJELG9CQUFvQixHQUFHd0IsaUJBQWlCLENBQUMsY0FBYyxFQUFFeEIsb0JBQW9CLENBQUM7a0JBQ2hGOztrQkFFQTtrQkFBQXNELHNCQUFBLEdBQytCOUosZ0JBQWdCLENBQUM4Qiw2QkFBNkIsQ0FBQzBFLG9CQUFvQixFQUFFbUQsYUFBYSxDQUFDLEVBQTFHekMsa0JBQWtCLEdBQUE0QyxzQkFBQSxDQUFsQjVDLGtCQUFrQjtrQkFDMUJWLG9CQUFvQixHQUFHVSxrQkFBa0IsRUFBQztrQkFDMUNsQyxRQUFRLENBQUMscUJBQXFCLENBQUMsR0FBR3dCLG9CQUFvQjtnQkFDeEQ7Z0JBRUF6QixRQUFRLENBQUNDLFFBQVEsQ0FBQztnQkFDWitFLGtCQUFrQixHQUFJdkQsb0JBQW9CLElBQUksQ0FBQ3BHLE9BQU8sQ0FBQ3FCLG1CQUFtQixFQUFFK0Usb0JBQW9CLENBQUM7Z0JBQ3ZHNEMsaUJBQWlCLENBQUNTLDJCQUEyQixJQUFJRSxrQkFBa0IsRUFBRS9FLFFBQVMsQ0FBQztjQUNqRjtZQUNGO1VBQUM7VUFBQTtZQUFBLE9BQUFrRixTQUFBLENBQUFwTyxJQUFBO1FBQUE7TUFBQSxHQUFBMk4sUUFBQTtJQUFBLENBQ0Y7SUFBQSxPQUFBRCxXQUFBLENBQUF0TSxLQUFBLE9BQUFELFNBQUE7RUFBQTtFQVFELFNBQVNtTixlQUFlQSxDQUFDL0gsT0FBZ0IsRUFBRVYsWUFBb0IsRUFBRTBJLGlCQUF5QixFQUFFO0lBQzFGLElBQU1DLG1CQUFtQixHQUFHSCxtQkFBbUIsSUFBSTFJLG1CQUFtQjtJQUN0RSxJQUFBOEksc0JBQUEsR0FBNEJ2SyxnQkFBZ0IsQ0FBQzhCLDZCQUE2QixDQUFDd0ksbUJBQW1CLEVBQUUzSSxZQUFZLENBQUM7TUFBckdJLGVBQWUsR0FBQXdJLHNCQUFBLENBQWZ4SSxlQUFlO0lBQ3ZCLElBQU1vQyxPQUFPLEdBQUdyRCxhQUFhLENBQUNpQixlQUFlLEVBQUVmLG9CQUFvQixDQUFDO0lBQ3BFLElBQU1VLGdCQUFnQixHQUFHQyxZQUFZLEtBQUtTLGdCQUFnQjtJQUUxRDJDLFFBQVEsQ0FBQztNQUNQckQsZ0JBQWdCLEVBQWhCQSxnQkFBZ0I7TUFDaEJDLFlBQVksRUFBWkEsWUFBWTtNQUNad0MsT0FBTyxFQUFQQTtJQUNGLENBQUMsQ0FBQztFQUNKO0VBRUEsSUFBTWdHLG1CQUFtQixHQUFHcEssS0FBSyxDQUFDOEYsT0FBTyxDQUFFLFlBQU07SUFBRTtJQUNqRCxJQUFJcEUsbUJBQW1CLEVBQUU7TUFDdkIsSUFBTVYsZUFBZSxHQUFHUSxtQkFBbUIsQ0FBQ0MsbUJBQW1CLEVBQUVDLG1CQUFtQixFQUFFQyxnQkFBZ0IsRUFBRUMsWUFBWSxDQUFDO01BQ3JILElBQU1DLG9CQUFvQixHQUFHekIsV0FBVyxDQUFDK0ksZUFBZSxDQUFDbkksZUFBZSxDQUFDO01BQ3pFLE9BQU9hLG9CQUFvQjtJQUM3QjtJQUNBLE9BQU9ILG1CQUFtQjtFQUM1QixDQUFDLEVBQUUsQ0FBQ0QsbUJBQW1CLEVBQUVDLG1CQUFtQixFQUFFQyxnQkFBZ0IsRUFBRUMsWUFBWSxDQUFDLENBQUM7RUFFOUUsSUFBTTZJLGNBQXNCLEdBQUd6SyxLQUFLLENBQUM4RixPQUFPLENBQUUsWUFBTTtJQUFFO0lBQ3BELElBQU14RCxPQUFPLEdBQUdYLGdCQUFnQixJQUFLRixtQkFBbUIsSUFBSSxDQUFDcEIsT0FBTyxDQUFDcUIsbUJBQW1CLEVBQUVELG1CQUFtQixDQUFFO0lBQy9HLE9BQU9hLE9BQU87RUFDaEIsQ0FBQyxFQUFFLENBQUNiLG1CQUFtQixFQUFFQyxtQkFBbUIsRUFBRUMsZ0JBQWdCLENBQUMsQ0FBQzs7RUFFaEU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtFQUNFLFNBQVMwSCxpQkFBaUJBLENBQUNxQixlQUF3QixFQUF1QjtJQUFBLElBQXJCekYsUUFBWSxHQUFBL0gsU0FBQSxDQUFBcEMsTUFBQSxRQUFBb0MsU0FBQSxRQUFBRyxTQUFBLEdBQUFILFNBQUEsTUFBRyxDQUFFLENBQUM7SUFDckUsSUFBTTZKLFNBQVMsR0FBQXpJLGFBQUEsQ0FBQUEsYUFBQSxLQUNWbUcsS0FBSyxHQUNMUSxRQUFRLENBQ1o7O0lBRUQ7SUFDQXJCLGVBQWUsSUFBSUEsZUFBZSxDQUFDWCxZQUFZLEVBQUUsQ0FBQ3lILGVBQWUsRUFBRTtNQUNqRTVELFVBQVUsRUFBVkEsVUFBVTtNQUNWM0IsWUFBWSxFQUFaQSxZQUFZO01BQ1pWLEtBQUssRUFBRXNDO0lBQ1QsQ0FBQyxDQUFDO0VBQ0o7RUFFQS9HLEtBQUssQ0FBQzBHLFNBQVMsQ0FBQyxZQUFNO0lBQUU7SUFDdEIsSUFBTWdFLGVBQWUsR0FBR0QsY0FBYyxJQUFJLENBQUMsQ0FBQ3BHLFdBQVc7SUFDdkRnRixpQkFBaUIsQ0FBQ3FCLGVBQWUsQ0FBQztFQUNwQyxDQUFDLEVBQUUsQ0FBQ0QsY0FBYyxFQUFFcEcsV0FBVyxDQUFDLENBQUM7O0VBRWpDO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7RUFDRSxTQUFTc0csa0JBQWtCQSxDQUFDOUQsT0FBK0IsRUFBVTtJQUNuRXpCLE9BQU8sQ0FBQ0MsR0FBRyxzREFBc0R3QixPQUFPLENBQUMsRUFBQztJQUMxRSxJQUFRK0IsV0FBVyxHQUFzQi9CLE9BQU8sQ0FBeEMrQixXQUFXO01BQUVDLGVBQWUsR0FBS2hDLE9BQU8sQ0FBM0JnQyxlQUFlO0lBQ3BDLElBQU0rQixpQkFBaUIsR0FBRzNLLGdCQUFnQixDQUFDc0Isb0JBQW9CLENBQUNxSCxXQUFXLEVBQUVDLGVBQWUsQ0FBQztJQUM3RnpELE9BQU8sQ0FBQ0MsR0FBRyxtQkFBQUMsTUFBQSxDQUFtQnNGLGlCQUFpQixHQUFHLFdBQVcsR0FBRyxZQUFZLENBQUUsQ0FBQztJQUMvRTVGLFFBQVEsQ0FBQztNQUFFVCxhQUFhLEVBQUVzQyxPQUFPO01BQUV6QyxPQUFPLEVBQUV3RztJQUFrQixDQUFDLENBQUM7SUFDaEUsT0FBT0EsaUJBQWlCO0VBQzFCO0VBRUEsT0FBTztJQUNMQyxPQUFPLEVBQUU7TUFDUHZCLGVBQWUsRUFBZkEsZUFBZTtNQUNmbkUsWUFBWSxFQUFaQSxZQUFZO01BQ1oyQixVQUFVLEVBQVZBLFVBQVU7TUFDVnFCLG9CQUFvQixFQUFwQkEsb0JBQW9CO01BQ3BCd0Msa0JBQWtCLEVBQWxCQSxrQkFBa0I7TUFDbEJ2QixhQUFhLEVBQWJBLGFBQWE7TUFDYkcsVUFBVSxFQUFWQSxVQUFVO01BQ1ZjLGVBQWUsRUFBZkE7SUFDRixDQUFDO0lBQ0Q1RixLQUFLLEVBQUU7TUFDTEwsT0FBTyxFQUFQQSxPQUFPO01BQ1BDLFdBQVcsRUFBWEEsV0FBVztNQUNYK0YsbUJBQW1CLEVBQW5CQSxtQkFBbUI7TUFDbkI5RixPQUFPLEVBQVBBLE9BQU87TUFDUHBCLFVBQVUsRUFBVkEsVUFBVTtNQUNWQyxlQUFlLEVBQWZBLGVBQWU7TUFDZmQsZ0JBQWdCLEVBQWhCQSxnQkFBZ0I7TUFDaEJYLG1CQUFtQixFQUFuQkEsbUJBQW1CO01BQ25CRSxZQUFZLEVBQVpBLFlBQVk7TUFDWjZCLFNBQVMsRUFBRXNCLGNBQWM7TUFDekJsQixjQUFjLEVBQWRBLGNBQWM7TUFDZEUsY0FBYyxFQUFkQSxjQUFjO01BQ2RDLEtBQUssRUFBTEEsS0FBSztNQUNMeUcsY0FBYyxFQUFkQSxjQUFjO01BQ2Q5SSxnQkFBZ0IsRUFBaEJBO0lBQ0Y7RUFDRixDQUFDO0FBQ0gifQ==
|
|
637
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVnZW5lcmF0b3JSdW50aW1lIiwiZSIsInQiLCJyIiwiT2JqZWN0IiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiU3ltYm9sIiwiYSIsIml0ZXJhdG9yIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiZ2VuIiwicmVqZWN0IiwiX25leHQiLCJfdGhyb3ciLCJrZXkiLCJpbmZvIiwiZXJyb3IiLCJfYXN5bmNUb0dlbmVyYXRvciIsImZuIiwic2VsZiIsImFyZ3MiLCJhcmd1bWVudHMiLCJhcHBseSIsImVyciIsInVuZGVmaW5lZCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiYWxsb3dBcnJheUxpa2UiLCJpdCIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIkYiLCJfZSIsIm5vcm1hbENvbXBsZXRpb24iLCJkaWRFcnIiLCJzdGVwIiwiX2UyIiwib3duS2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIl9vYmplY3RTcHJlYWQiLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIm9iaiIsIl90b1Byb3BlcnR5S2V5IiwiX3RvUHJpbWl0aXZlIiwiU3RyaW5nIiwiaW5wdXQiLCJoaW50IiwicHJpbSIsInRvUHJpbWl0aXZlIiwicmVzIiwiTnVtYmVyIiwiX3NsaWNlZFRvQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfbm9uSXRlcmFibGVSZXN0IiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsImZyb20iLCJ0ZXN0IiwibGVuIiwiYXJyMiIsIlJlYWN0IiwiQWxpZ25tZW50SGVscGVycyIsIm1pZ3JhdGVPcmlnaW5hbExhbmd1YWdlSGVscGVycyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJ1c2ZtSGVscGVycyIsImlzRXF1YWwiLCJCb29rT2JqZWN0c1R5cGUiLCJTY3JpcHR1cmVDb25maWciLCJTY3JpcHR1cmVSZWZlcmVuY2VUeXBlIiwiU2VydmVyQ29uZmlnVHlwZSIsIlZlcnNlT2JqZWN0c1R5cGUiLCJnZXRBbGlnbm1lbnRzIiwiZ2V0U2NyaXB0dXJlUmVzb3VyY2VTZXR0aW5ncyIsIk9SSUdJTkFMX1NPVVJDRSIsImdldFZlcnNlc0ZvclJlZiIsImlzVXNmbUFsaWduZWQiLCJ0YXJnZXRWZXJzZVVTRk0iLCJvcmlnaW5hbFZlcnNlT2JqZWN0cyIsIl9vcmlnaW5hbFZlcnNlT2JqZWN0cyIsIl9BbGlnbm1lbnRIZWxwZXJzJGV4dCIsImV4dHJhY3RBbGlnbm1lbnRzRnJvbVRhcmdldFZlcnNlIiwiYWxpZ25tZW50cyIsIndvcmRCYW5rIiwiYXJlQWxnbm1lbnRzQ29tcGxldGUiLCJnZXRDdXJyZW50VmVyc2VVc2ZtIiwidXBkYXRlZFZlcnNlT2JqZWN0cyIsImluaXRpYWxWZXJzZU9iamVjdHMiLCJ2ZXJzZVRleHRDaGFuZ2VkIiwibmV3VmVyc2VUZXh0IiwiY3VycmVudFZlcnNlT2JqZWN0c18iLCJfQWxpZ25tZW50SGVscGVycyR1cGQiLCJ1cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSIsInRhcmdldFZlcnNlVGV4dCIsImNvbnZlcnRWZXJzZURhdGFUb1VTRk0iLCJhbGxTcGFjZXMiLCJ0ZXh0IiwiaGFzVGV4dENoYW5nZWRTaWduaWZpY2FudGx5IiwiaW5pdGlhbFZlcnNlVGV4dCIsImNoYW5nZWQiLCJsZW5ndGhEaWZmZXJlbmNlIiwiZmlyc3RQYXJ0T2ZJbml0aWFsIiwic3Vic3RyaW5nIiwibGFzdENoYXJzIiwicG9zIiwibGFzdEluZGV4T2YiLCJsYXN0VXNmbVRhZyIsImVuZHNXaXRoUXVvdGUiLCJ1c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0IiwiX3JlZiIsImN1cnJlbnRJbmRleCIsImVuYWJsZUVkaXQiLCJlbmFibGVBbGlnbm1lbnQiLCJodHRwQ29uZmlnIiwiaXNOZXdUZXN0YW1lbnQiLCJvcmlnaW5hbExhbmd1YWdlT3duZXIiLCJvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzIiwib3JpZ2luYWxSZXBvVXJsIiwicmVmZXJlbmNlIiwic2NyaXB0dXJlQ29uZmlnIiwic2NyaXB0dXJlU2V0dGluZ3MiLCJzZXRTYXZlZENoYW5nZXMiLCJzb3VyY2VMYW5ndWFnZSIsInN0YXJ0RWRpdEJyYW5jaCIsInRhcmdldExhbmd1YWdlIiwidGl0bGUiLCJ3b3JraW5nUmVzb3VyY2VCcmFuY2giLCJfUmVhY3QkdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsImFsaWduZWQiLCJhbGlnbmVyRGF0YSIsImVkaXRpbmciLCJuZXdBbGlnbm1lbnRzIiwiX1JlYWN0JHVzZVN0YXRlMiIsInN0YXRlIiwic2V0U3RhdGVfIiwiX3N0YXRlIiwiY2hhcHRlciIsInZlcnNlIiwiYm9va0lkIiwiYmFzaWNSZWZlcmVuY2UiLCJzZXRTdGF0ZSIsIm5ld1N0YXRlIiwicHJldlN0YXRlIiwiY2xlYXJDaGFuZ2VzIiwiY29uc29sZSIsImxvZyIsImNvbmNhdCIsIkpTT04iLCJzdHJpbmdpZnkiLCJjbGVhclN0YXRlIiwib3JpZ2luYWxTY3JpcHR1cmVTZXR0aW5nc18iLCJyZXNvdXJjZUlkIiwib3JpZ2luYWxTY3JpcHR1cmVTZXR0aW5ncyIsInJlc291cmNlTGluayIsInVzZU1lbW8iLCJ2ZXJzZU9iamVjdHMiLCJ2ZXJzZXMiLCJsYW5ndWFnZUlkIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJfdmVyc2VSZWZlcmVuY2UkdmVyc2UiLCJ2ZXJzZVJlZmVyZW5jZSIsIm9yaWdWZXJzZU9iamVjdHMiLCJ2ZXJzZURhdGEiLCJnZXRDdXJyZW50VmVyc2VPYmplY3RzIiwiX3VwZGF0ZWRWZXJzZU9iamVjdHMiLCJ1c2VFZmZlY3QiLCJub3RFbXB0eSIsImFsaWduZWRfIiwicmVzdWx0cyIsImdldENoYW5nZXMiLCJfbmV3U3RhdGUiLCJ1cGRhdGVkVmVyc2VPYmplY3RzXyIsInVwZGF0ZVZlcnNlV2l0aE5ld0FsaWdubWVudHMiLCJfQWxpZ25tZW50SGVscGVycyR1cGQyIiwidGFyZ2V0VmVyc2VPYmplY3RzIiwiX3NjcmlwdHVyZUNvbmZpZyR2ZXJzIiwicmVmIiwidmVyc2VzRm9yUmVmIiwiaXNNaWdyYXRlZCIsInByZWZpeCIsIl9pbml0aWFsVmVyc2VPYmplY3RzIiwidXBkYXRlZEFsaWdubWVudHMiLCJpbml0aWFsQWxpZ25tZW50cyIsInNhbWUiLCJmaXJzdERpZmYiLCJ1cGRhdGVkQWxpZ25tZW50IiwiaW5pdGlhbEFsaWdubWVudCIsImRpZmZlcmVudCIsIm1pZ3JhdGVBbGlnbm1lbnRzIiwibWlncmF0ZVRhcmdldEFsaWdubWVudHNUb09yaWdpbmFsIiwiaGFuZGxlQWxpZ25tZW50Q2xpY2siLCJfYWxpZ25lckRhdGEiLCJvcmlnaW5hbFZlcnNlVXNmbSIsIl9BbGlnbm1lbnRIZWxwZXJzJHBhciIsInBhcnNlVXNmbVRvV29yZEFsaWduZXJEYXRhIiwidGFyZ2V0V29yZHMiLCJ2ZXJzZUFsaWdubWVudHMiLCJlcnJvck1lc3NhZ2UiLCJfbmV3QWxpZ25tZW50cyIsInZlcnNlVXNmbSIsImFkZEFsaWdubWVudHNUb1ZlcnNlVVNGTSIsImFsaWduZWRWZXJzZU9iamVjdHMiLCJ1c2ZtVmVyc2VUb0pzb24iLCJzYXZlQWxpZ25tZW50IiwiY2FsbFNldFNhdmVkU3RhdGUiLCJjYW5jZWxBbGlnbm1lbnQiLCJzZXRFZGl0aW5nIiwiX3giLCJfc2V0RWRpdGluZyIsIl9jYWxsZWUiLCJlZGl0aW5nXyIsIl9uZXdWZXJzZVRleHQiLCJ2ZXJzZVRleHRDaGFuZ2VkRnJvbUxhc3RFZGl0IiwidmVyc2VUZXh0Q2hhbmdlZEZyb21Jbml0aWFsIiwiX0FsaWdubWVudEhlbHBlcnMkdXBkNCIsIl9hbGlnbm1lbnRzQ2hhbmdlZCIsIl9hcmdzIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsImN1cnJlbnRWZXJzZU9iamVjdHMiLCJzZXRWZXJzZUNoYW5nZWQiLCJfaW5pdGlhbFZlcnNlVGV4dCIsIl90YXJnZXRWZXJzZU9iamVjdHMiLCJfQWxpZ25tZW50SGVscGVycyR1cGQzIiwidW5zYXZlZENoYW5nZXMiLCJ1bnNhdmVkQ2hhbmdlc18iLCJvbkFsaWdubWVudHNDaGFuZ2UiLCJhbGlnbm1lbnRDb21wbGV0ZSIsImFjdGlvbnMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlU2NyaXB0dXJlQWxpZ25tZW50RWRpdC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWlnbm9yZVxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQge1xuICBBbGlnbm1lbnRIZWxwZXJzLFxuICBtaWdyYXRlT3JpZ2luYWxMYW5ndWFnZUhlbHBlcnMsXG4gIFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMsXG4gIHVzZm1IZWxwZXJzLFxufSBmcm9tICd3b3JkLWFsaWduZXItcmNsJ1xuaW1wb3J0IHsgaXNFcXVhbCB9IGZyb20gJ0ByZWFjdC1ob29rei9kZWVwLWVxdWFsJ1xuaW1wb3J0IHtcbiAgQm9va09iamVjdHNUeXBlLFxuICBTY3JpcHR1cmVDb25maWcsXG4gIFNjcmlwdHVyZVJlZmVyZW5jZVR5cGUsXG4gIFNlcnZlckNvbmZpZ1R5cGUsXG4gIFZlcnNlT2JqZWN0c1R5cGUsXG59IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgZ2V0QWxpZ25tZW50cywgZ2V0U2NyaXB0dXJlUmVzb3VyY2VTZXR0aW5ncyB9IGZyb20gJy4uL3V0aWxzL1NjcmlwdHVyZVNldHRpbmdzJ1xuaW1wb3J0IHsgT1JJR0lOQUxfU09VUkNFIH0gZnJvbSAnLi4vdXRpbHMnXG5pbXBvcnQgeyBnZXRWZXJzZXNGb3JSZWYgfSBmcm9tICcuL3VzZVNjcmlwdHVyZSdcblxuaW50ZXJmYWNlIFN0YXJ0RWRpdCB7XG4gICgpOiBQcm9taXNlPHN0cmluZz47XG59XG5cbnR5cGUgTGFuZ3VhZ2VUeXBlID0ge1xuICBsYW5ndWFnZUlkOiBzdHJpbmcsIC8vIHNob3J0IGxhbmd1YWdlIGNvZGUgc3VjaCBhcyBcImVuXCJcbiAgZGlyZWN0aW9uOiBzdHJpbmcsIC8vIGxhbmd1YWdlIGRpcmVjdGlvbiBcImx0clwiIG9yIFwicnRsXCJcbn07XG5cbmludGVyZmFjZSBBbGlnbmVyRGF0YVR5cGUge1xuICAgIHdvcmRCYW5rPzogT2JqZWN0W10sIC8vIGxpc3Qgb2Ygd29yZGJhbmsgd29yZCAodGFyZ2V0IGxhbmd1YWdlIHdvcmRzKSBpbiBmb3JtYXQgbmVlZGVkIGJ5IHdvcmQtYWxpZ25lci1yY2xcbiAgICBhbGlnbm1lbnRzPzogT2JqZWN0W10sIC8vIGxpc3Qgb2Ygd29yZCBhbGlnbm1lbnRzIGluIGZvcm1hdCBuZWVkZWQgYnkgd29yZC1hbGlnbmVyLXJjbFxuICAgIGVycm9yTWVzc2FnZT86IHN0cmluZywgLy8gaWYgcHJlc2VudCB0aGVuIHdlIGRvbid0IGhhdmUgbmVjZXNzYXJ5IGRhdGEgdG8gZG8gYWxpZ25tZW50XG59XG5cbmludGVyZmFjZSBBbGlnbmVyUmVzdWx0c0RhdGFUeXBlIHtcbiAgICB0YXJnZXRXb3Jkcz86IE9iamVjdFtdLCAvLyBsaXN0IG9mIHRhcmdldCBsYW5ndWFnZSB3b3JkcyBpbiBmb3JtYXQgdXNlZCBpbiB3b3JkLWFsaWduZXItcmNsXG4gICAgdmVyc2VBbGlnbm1lbnRzPzogT2JqZWN0W10sIC8vIGxpc3Qgb2Ygd29yZCBhbGlnbm1lbnRzIGluIGZvcm1hdCB1c2VkIGJ5IHdvcmQtYWxpZ25lci1yY2xcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY3JpcHR1cmVBTGlnbm1lbnRFZGl0UHJvcHMge1xuICAvLyBpbmRleCB0byB1c2UgZm9yIGJvb2sgKGUuZy4gYDAxYCBmb3IgYEdFTmApXG4gIGJvb2tJbmRleDogc3RyaW5nLFxuICAvLyBjdXJyZW50IHZlcnNlIHNlbGVjdGVkIGZyb20gaW5pdGlhbFZlcnNlT2JqZWN0c1tdXG4gIGN1cnJlbnRJbmRleDogbnVtYmVyLFxuICAvLyByZWZlcmVuY2UgZm9yIHZlcnNlIHNlbGVjdGVkIGZvciBhbGlnbm1lbnRcbiAgY3VycmVudFZlcnNlUmVmOiBTY3JpcHR1cmVSZWZlcmVuY2VUeXBlLFxuICAvLyBpZiB0cnVlIHRoZW4gZWRpdGluZyBpcyBhbGxvd2VkXG4gIGVuYWJsZUVkaXQ6IGJvb2xlYW4sXG4gIC8vIGlmIHRydWUgdGhlbiBhbGlnbm1lbnQgaXMgYWxsb3dlZFxuICBlbmFibGVBbGlnbm1lbnQ6IGJvb2xlYW4sXG4gIC8vIGNvbmZpZ3VyYXRpb24gdG8gdXNlIGZvciBodHRwIGNvbW11bmljYXRpb25cbiAgaHR0cENvbmZpZzogU2VydmVyQ29uZmlnVHlwZSxcbiAgLy8gYXJyYXkgb2YgdGhlIGluaXRpYWwgdmVyc2VPYmplY3RzIGZvciBjdXJyZW50IHJlZmVyZW5jZVxuICBpbml0aWFsVmVyc2VPYmplY3RzOiBWZXJzZU9iamVjdHNUeXBlLFxuICAvLyBpbml0aWFsIHRleHQgZm9yIHZlcnNlXG4gIGluaXRpYWxWZXJzZVRleHQ6IHN0cmluZyxcbiAgLy8gZmxhZyB0aGF0IHdlIGFyZSB3b3JraW5nIG9uIE5UIGJvb2tcbiAgaXNOZXdUZXN0YW1lbnQ6IGJvb2xlYW4sXG4gIC8vIHVzZXIgbmFtZSBvZiBsb2dnZWQgaW4gdXNlclxuICBsb2dnZWRJblVzZXI6IHN0cmluZyxcbiAgLy8gb3duZXIgdG8gdXNlIHdoZW4gZmV0Y2hpbmcgb3JpZ2luYWwgbGFuZ3VhZ2UgcmVzb3VyY2VzXG4gIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcjogc3RyaW5nLFxuICAvLyB1cmwgZm9yIHRoZSBvcmlnaW5hbCBsYW5ndWFnZSByZXBvXG4gIG9yaWdpbmFsUmVwb1VybDogc3RyaW5nLFxuICAvLyBvcmlnaW5hbCBzY3JpcHR1cmUgYm9va09iamVjdHMgZm9yIGN1cnJlbnQgYm9va1xuICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzOiBCb29rT2JqZWN0c1R5cGUsXG4gIC8qKiBjdXJyZW50IHJlZmVyZW5jZSAqKi9cbiAgcmVmZXJlbmNlOiBTY3JpcHR1cmVSZWZlcmVuY2VUeXBlO1xuICAvLyBkZXRhaWxzIGFib3V0IHRoZSBjdXJyZW50IHNjcmlwdHVyZSBsb2FkZWRcbiAgc2NyaXB0dXJlQ29uZmlnOiBTY3JpcHR1cmVDb25maWcsXG4gIC8vIHNldHRpbmdzIHRvIGJlIHVzZWQgZm9yIHNjcmlwdHVyZVxuICBzY3JpcHR1cmVTZXR0aW5nczogeyB9LFxuICAvLyBjYWxsYmFjayB0byBzYXZlIGN1cnJlbnQgdmVyc2UgZWRpdCBhbmQgYWxpZ25tZW50IGNoYW5nZXNcbiAgc2V0U2F2ZWRDaGFuZ2VzOiBGdW5jdGlvbixcbiAgLy8gc291cmNlIGxhbmd1YWdlIGNvZGUgc3VjaCBhcyBgaGJvYFxuICBzb3VyY2VMYW5ndWFnZTogc3RyaW5nLFxuICAvLyBjYWxsYmFjayB0byBjcmVhdGUgYSB1c2VyIGJyYW5jaCBmb3Igc2F2aW5nIGVkaXQgZGF0YVxuICBzdGFydEVkaXRCcmFuY2g6IFN0YXJ0RWRpdCxcbiAgLy8gY3VycmVudCB0YXJnZXQgbGFuZ3VhZ2VcbiAgdGFyZ2V0TGFuZ3VhZ2U6IExhbmd1YWdlVHlwZSxcbiAgLy8gdGl0bGUgdG8gc2hvdyBpbiBhbGlnbm1lbnRcbiAgdGl0bGU6IHN0cmluZyxcbiAgIC8vIGJyYW5jaCBuYW1lIGN1cnJlbnRseSBiZWluZyB1c2VkIChlLmcuIGBtYXN0ZXJgIG9yIHVzZXIgYnJhbmNoKVxuICB3b3JraW5nUmVzb3VyY2VCcmFuY2g6IHN0cmluZyxcbn1cblxuLyoqXG4gKiBkZXRlcm1pbmVzIGlmIGFsaWdubWVudCBpcyBjb21wbGV0ZSBiYXNlZCBvbiB0YXJnZXQgVVNGTSBhbmQgb3JpZ2luYWwgbGFuZ3VhZ2UgdmVyc2Ugb2JqZWN0c1xuICogQHBhcmFtIHtzdHJpbmd9IHRhcmdldFZlcnNlVVNGTVxuICogQHBhcmFtIHtWZXJzZU9iamVjdHNUeXBlfSBvcmlnaW5hbFZlcnNlT2JqZWN0c1xuICovXG5mdW5jdGlvbiBpc1VzZm1BbGlnbmVkKHRhcmdldFZlcnNlVVNGTTpzdHJpbmcsIG9yaWdpbmFsVmVyc2VPYmplY3RzOlZlcnNlT2JqZWN0c1R5cGUpOmJvb2xlYW4ge1xuICBvcmlnaW5hbFZlcnNlT2JqZWN0cyA9IG9yaWdpbmFsVmVyc2VPYmplY3RzPy5sZW5ndGggPyBvcmlnaW5hbFZlcnNlT2JqZWN0cyA6IG51bGwgLy8gbWFrZSBzdXJlIG5vdCBwYXNzaW5nIGVtcHR5IEFycmF5XG5cbiAgaWYgKCB0YXJnZXRWZXJzZVVTRk0gJiYgb3JpZ2luYWxWZXJzZU9iamVjdHMpIHtcbiAgICBjb25zdCB7XG4gICAgICBhbGlnbm1lbnRzLFxuICAgICAgd29yZEJhbmssXG4gICAgfSA9IEFsaWdubWVudEhlbHBlcnMuZXh0cmFjdEFsaWdubWVudHNGcm9tVGFyZ2V0VmVyc2UodGFyZ2V0VmVyc2VVU0ZNLCBvcmlnaW5hbFZlcnNlT2JqZWN0cylcbiAgICByZXR1cm4gQWxpZ25tZW50SGVscGVycy5hcmVBbGdubWVudHNDb21wbGV0ZSh3b3JkQmFuaywgYWxpZ25tZW50cylcbiAgfVxuXG4gIHJldHVybiBudWxsXG59XG5cbi8qKlxuICogZ2V0IHRoZSB1cGRhdGVkIFVTRk0gZm9yIHRhcmdldCB2ZXJzZSBmcm9tIHRoZSB1cGRhdGVkIHZlcnNlIG9iamVjdHMgYW5kIGxhdGVzdCB0ZXh0XG4gKiBAcGFyYW0ge1ZlcnNlT2JqZWN0c1R5cGV9IHVwZGF0ZWRWZXJzZU9iamVjdHNcbiAqIEBwYXJhbSB7VmVyc2VPYmplY3RzVHlwZX0gaW5pdGlhbFZlcnNlT2JqZWN0c1xuICogQHBhcmFtIHtib29sZWFufSB2ZXJzZVRleHRDaGFuZ2VkXG4gKiBAcGFyYW0ge3N0cmluZ30gbmV3VmVyc2VUZXh0XG4gKi9cbmZ1bmN0aW9uIGdldEN1cnJlbnRWZXJzZVVzZm0odXBkYXRlZFZlcnNlT2JqZWN0czpWZXJzZU9iamVjdHNUeXBlLCBpbml0aWFsVmVyc2VPYmplY3RzOlZlcnNlT2JqZWN0c1R5cGUsIHZlcnNlVGV4dENoYW5nZWQ6IGJvb2xlYW4sIG5ld1ZlcnNlVGV4dDpzdHJpbmcpOnN0cmluZyB7XG4gIGxldCB0YXJnZXRWZXJzZVVTRk0gPSBudWxsXG4gIGNvbnN0IGN1cnJlbnRWZXJzZU9iamVjdHNfID0gdXBkYXRlZFZlcnNlT2JqZWN0cyB8fCBpbml0aWFsVmVyc2VPYmplY3RzXG5cbiAgaWYgKHZlcnNlVGV4dENoYW5nZWQgJiYgbmV3VmVyc2VUZXh0KSB7XG4gICAgY29uc3QgeyB0YXJnZXRWZXJzZVRleHQgfSA9IEFsaWdubWVudEhlbHBlcnMudXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UoY3VycmVudFZlcnNlT2JqZWN0c18sIG5ld1ZlcnNlVGV4dClcbiAgICB0YXJnZXRWZXJzZVVTRk0gPSB0YXJnZXRWZXJzZVRleHRcbiAgfSBlbHNlIHtcbiAgICB0YXJnZXRWZXJzZVVTRk0gPSBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLmNvbnZlcnRWZXJzZURhdGFUb1VTRk0oY3VycmVudFZlcnNlT2JqZWN0c18pXG4gIH1cbiAgcmV0dXJuIHRhcmdldFZlcnNlVVNGTVxufVxuXG4vKipcbiAqIHJldHVybiB0cnVlIGlmIG9ubHkgc3BhY2VzIGluIGNvbnRlbnRcbiAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0XG4gKi9cbmZ1bmN0aW9uIGFsbFNwYWNlcyh0ZXh0OnN0cmluZyk6Ym9vbGVhbiB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdGV4dC5sZW5ndGg7IGkrKykge1xuICAgIGlmICh0ZXh0W2ldICE9PSAnICcpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZVxufVxuXG4vKipcbiAqIG1ha2Ugc3VyZSB0aGVyZSBpcyBhIHNpZ25pZmljYW50IGNoYW5nZSB0byB0aGUgdGV4dFxuICogQHBhcmFtIHtzdHJpbmd9IG5ld1ZlcnNlVGV4dFxuICogQHBhcmFtIHtzdHJpbmd9IGluaXRpYWxWZXJzZVRleHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc1RleHRDaGFuZ2VkU2lnbmlmaWNhbnRseShuZXdWZXJzZVRleHQ6c3RyaW5nLCBpbml0aWFsVmVyc2VUZXh0OnN0cmluZyk6Ym9vbGVhbiB7XG4gIGxldCBjaGFuZ2VkID0gbmV3VmVyc2VUZXh0ICE9PSBpbml0aWFsVmVyc2VUZXh0XG5cbiAgaWYgKGNoYW5nZWQgJiYgbmV3VmVyc2VUZXh0KSB7IC8vIG1ha2Ugc3VyZSBpdCdzIHNpZ25pZmljYW50XG4gICAgY29uc3QgbGVuZ3RoRGlmZmVyZW5jZSA9IG5ld1ZlcnNlVGV4dC5sZW5ndGggLSBpbml0aWFsVmVyc2VUZXh0Py5sZW5ndGhcbiAgICBjb25zdCBmaXJzdFBhcnRPZkluaXRpYWwgPSBuZXdWZXJzZVRleHQuc3Vic3RyaW5nKDAsIGluaXRpYWxWZXJzZVRleHQubGVuZ3RoKVxuXG4gICAgaWYgKChsZW5ndGhEaWZmZXJlbmNlID4gMCkgJiYgKGluaXRpYWxWZXJzZVRleHQgPT09IGZpcnN0UGFydE9mSW5pdGlhbCkpIHsgLy8gaWYgaW5pdGlhbCBwYXJ0cyBtYXRjaFxuICAgICAgLy8gYWRkIGV4ZW1wdGlvbiBpZiB0aGUgdXNmbSBlbmRzIHdpdGggYSBxdW90ZSB0YWdcbiAgICAgIGNvbnN0IGxhc3RDaGFycyA9IG5ld1ZlcnNlVGV4dC5zdWJzdHJpbmcobmV3VmVyc2VUZXh0Lmxlbmd0aCAtIGxlbmd0aERpZmZlcmVuY2UpXG4gICAgICBjb25zdCBwb3MgPSBuZXdWZXJzZVRleHQubGFzdEluZGV4T2YoJ1xcXFwnKVxuICAgICAgY29uc3QgbGFzdFVzZm1UYWcgPSBuZXdWZXJzZVRleHRbcG9zICsgMV1cbiAgICAgIGNvbnN0IGVuZHNXaXRoUXVvdGUgPSAocG9zID4gMCkgJiYgKGxhc3RVc2ZtVGFnID09PSAncScpXG5cbiAgICAgIGlmIChlbmRzV2l0aFF1b3RlICYmIGFsbFNwYWNlcyhsYXN0Q2hhcnMpKSB7XG4gICAgICAgIGNoYW5nZWQgPSBmYWxzZVxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gY2hhbmdlZFxufVxuXG4vLyBtYW5hZ2UgdmVyc2UgZWRpdCBhbmQgYWxpZ25tZW50IHN0YXRlc1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVNjcmlwdHVyZUFsaWdubWVudEVkaXQoe1xuICBjdXJyZW50SW5kZXgsXG4gIGVuYWJsZUVkaXQsXG4gIGVuYWJsZUFsaWdubWVudCxcbiAgaHR0cENvbmZpZyxcbiAgaW5pdGlhbFZlcnNlT2JqZWN0cyxcbiAgaW5pdGlhbFZlcnNlVGV4dCxcbiAgaXNOZXdUZXN0YW1lbnQsXG4gIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcixcbiAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyxcbiAgb3JpZ2luYWxSZXBvVXJsLFxuICByZWZlcmVuY2UsXG4gIHNjcmlwdHVyZUNvbmZpZyxcbiAgc2NyaXB0dXJlU2V0dGluZ3MsXG4gIHNldFNhdmVkQ2hhbmdlcyxcbiAgc291cmNlTGFuZ3VhZ2UsXG4gIHN0YXJ0RWRpdEJyYW5jaCxcbiAgdGFyZ2V0TGFuZ3VhZ2UsXG4gIHRpdGxlLFxuICB3b3JraW5nUmVzb3VyY2VCcmFuY2gsXG59IDogU2NyaXB0dXJlQUxpZ25tZW50RWRpdFByb3BzKSB7XG4gIHR5cGUgU3RhdGVUeXBlcyA9IHtcbiAgICBhbGlnbmVkOiBib29sZWFuLFxuICAgIGFsaWduZXJEYXRhOiBBbGlnbmVyRGF0YVR5cGUsXG4gICAgZWRpdGluZzogYm9vbGVhbixcbiAgICBuZXdBbGlnbm1lbnRzOiBBbGlnbmVyUmVzdWx0c0RhdGFUeXBlLFxuICAgIG5ld1ZlcnNlVGV4dDogc3RyaW5nLFxuICAgIHVwZGF0ZWRWZXJzZU9iamVjdHM6IFZlcnNlT2JqZWN0c1R5cGUsXG4gICAgdmVyc2VUZXh0Q2hhbmdlZDogYm9vbGVhbixcbiAgfVxuXG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVfXSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICBhbGlnbmVkOiBmYWxzZSxcbiAgICBhbGlnbmVyRGF0YTogbnVsbCxcbiAgICBlZGl0aW5nOiBmYWxzZSxcbiAgICBuZXdBbGlnbm1lbnRzOiBudWxsLFxuICAgIG5ld1ZlcnNlVGV4dDogbnVsbCxcbiAgICB1cGRhdGVkVmVyc2VPYmplY3RzOiBudWxsLFxuICAgIHZlcnNlVGV4dENoYW5nZWQ6IGZhbHNlLFxuICB9KVxuXG4gIGNvbnN0IF9zdGF0ZTogU3RhdGVUeXBlcyA9IHN0YXRlIC8vIFRyaWNreTogd29yay1hcm91bmQgZm9yIGJ1ZyB0aGF0IHN0YW5kYXJkIHR5cGVzY3JpcHQgdHlwZSBjYXN0aW5nIGRvZXMgbm90IHdvcmsgaW4gLnRzeCBmaWxlc1xuICBjb25zdCB7XG4gICAgYWxpZ25lZCxcbiAgICBhbGlnbmVyRGF0YSxcbiAgICBlZGl0aW5nLFxuICAgIG5ld0FsaWdubWVudHMsXG4gICAgbmV3VmVyc2VUZXh0LFxuICAgIHVwZGF0ZWRWZXJzZU9iamVjdHMsXG4gICAgdmVyc2VUZXh0Q2hhbmdlZCxcbiAgfSA9IF9zdGF0ZVxuICBjb25zdCBjaGFwdGVyID0gcmVmZXJlbmNlPy5jaGFwdGVyXG4gIGNvbnN0IHZlcnNlID0gcmVmZXJlbmNlPy52ZXJzZVxuICBjb25zdCBib29rSWQgPSByZWZlcmVuY2U/LmJvb2tJZFxuICBjb25zdCBiYXNpY1JlZmVyZW5jZSA9IHsgLy8gb25seSBoYXMgdGhlIHRocmVlIGJhc2ljIGZpZWxkc1xuICAgIGNoYXB0ZXIsXG4gICAgdmVyc2UsXG4gICAgYm9va0lkLFxuICB9XG5cbiAgZnVuY3Rpb24gc2V0U3RhdGUobmV3U3RhdGUpIHtcbiAgICBzZXRTdGF0ZV8ocHJldlN0YXRlID0+ICh7IC4uLnByZXZTdGF0ZSwgLi4ubmV3U3RhdGUgfSkpXG4gIH1cblxuICBmdW5jdGlvbiBjbGVhckNoYW5nZXMoKSB7XG4gICAgY29uc29sZS5sb2coYGNsZWFyQ2hhbmdlcygpIC0gJHtKU09OLnN0cmluZ2lmeShiYXNpY1JlZmVyZW5jZSl9YClcbiAgICBjb25zdCBjbGVhclN0YXRlID0ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBhbGlnbmVyRGF0YTogbnVsbCxcbiAgICAgIGVkaXRpbmc6IGZhbHNlLFxuICAgICAgbmV3QWxpZ25tZW50czogbnVsbCxcbiAgICAgIG5ld1ZlcnNlVGV4dDogbnVsbCxcbiAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHM6IG51bGwsXG4gICAgICB2ZXJzZVRleHRDaGFuZ2VkOiBmYWxzZSxcbiAgICB9XG5cbiAgICBpZiAoIWlzRXF1YWwoc3RhdGUsIGNsZWFyU3RhdGUpKSB7XG4gICAgICBjb25zb2xlLmxvZyhgY2xlYXJDaGFuZ2VzKCkgLSByZWZlcmVuY2UgY2hhbmdlZCwgcmVzZXQgZWRpdC9hbGlnbm1lbnQgc3RhdGUgdmFyaWFibGVzYClcbiAgICAgIHNldFN0YXRlKGNsZWFyU3RhdGUpXG4gICAgfVxuICB9XG5cbiAgY29uc3Qgb3JpZ2luYWxTY3JpcHR1cmVTZXR0aW5nc18gPSB7XG4gICAgLi4uc2NyaXB0dXJlU2V0dGluZ3MsXG4gICAgcmVzb3VyY2VJZDogT1JJR0lOQUxfU09VUkNFLFxuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBodHRwQ29uZmlnID0gaHR0cENvbmZpZyB8fCB7fVxuICBjb25zdCBvcmlnaW5hbFNjcmlwdHVyZVNldHRpbmdzID0gZ2V0U2NyaXB0dXJlUmVzb3VyY2VTZXR0aW5ncyhcbiAgICBib29rSWQsIG9yaWdpbmFsU2NyaXB0dXJlU2V0dGluZ3NfLCBpc05ld1Rlc3RhbWVudCwgb3JpZ2luYWxSZXBvVXJsLFxuICApXG5cbiAgaWYgKCFlbmFibGVBbGlnbm1lbnQpIHsgLy8gaWYgbm90IGVuYWJsZWQsIHRoZW4gd2UgZG9uJ3QgZmV0Y2ggcmVzb3VyY2VcbiAgICBvcmlnaW5hbFNjcmlwdHVyZVNldHRpbmdzLnJlc291cmNlTGluayA9IG51bGxcbiAgfVxuXG4gIGNvbnN0IG9yaWdpbmFsVmVyc2VPYmplY3RzID0gUmVhY3QudXNlTWVtbygoKSA9PiB7IC8vIGdldCB0aGUgb3JpZ2luYWwgbGFuZ3VhZ2UgdmVyc2VPYmplY3RzXG4gICAgY29uc3QgdmVyc2VPYmplY3RzID0gW11cblxuICAgIGlmIChvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCB2ZXJzZXMgPSBnZXRWZXJzZXNGb3JSZWYoYmFzaWNSZWZlcmVuY2UsIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMsIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM/Lmxhbmd1YWdlSWQpXG5cbiAgICAgIGlmICh2ZXJzZXM/Lmxlbmd0aCkge1xuICAgICAgICBmb3IgKGNvbnN0IHZlcnNlUmVmZXJlbmNlIG9mIHZlcnNlcykge1xuICAgICAgICAgIGNvbnN0IG9yaWdWZXJzZU9iamVjdHMgPSB2ZXJzZVJlZmVyZW5jZT8udmVyc2VEYXRhPy52ZXJzZU9iamVjdHNcblxuICAgICAgICAgIGlmIChvcmlnVmVyc2VPYmplY3RzKSB7XG4gICAgICAgICAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseSh2ZXJzZU9iamVjdHMsIG9yaWdWZXJzZU9iamVjdHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2ZXJzZU9iamVjdHNcbiAgfSwgW29yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMsIGNoYXB0ZXIsIHZlcnNlLCBib29rSWRdKVxuXG4gIC8qKlxuICAgKiBnZXQgY3VycmVudCB2ZXJzZU9iamVjdHNcbiAgICogQHBhcmFtIHtWZXJzZU9iamVjdHNUeXBlfSBfdXBkYXRlZFZlcnNlT2JqZWN0cyAtIG9wdGlvbmFsIG92ZXJyaWRlcyB1cGRhdGVkVmVyc2VPYmplY3RzXG4gICAqL1xuICBmdW5jdGlvbiBnZXRDdXJyZW50VmVyc2VPYmplY3RzKF91cGRhdGVkVmVyc2VPYmplY3RzOiBWZXJzZU9iamVjdHNUeXBlID0gdXBkYXRlZFZlcnNlT2JqZWN0cykge1xuICAgIGNvbnN0IGN1cnJlbnRWZXJzZU9iamVjdHNfID0gX3VwZGF0ZWRWZXJzZU9iamVjdHMgfHwgaW5pdGlhbFZlcnNlT2JqZWN0c1xuICAgIHJldHVybiBjdXJyZW50VmVyc2VPYmplY3RzX1xuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gdXBkYXRlIGFsaWdubWVudCBzdGF0dXMgd2hlbiBhbGlnbmVyIGlzIGhpZGRlblxuICAgIGNvbnN0IG5vdEVtcHR5ID0gISFpbml0aWFsVmVyc2VPYmplY3RzXG4gICAgbGV0IGFsaWduZWRfID0gZmFsc2VcblxuICAgIGlmICghYWxpZ25lckRhdGEpIHsgLy8gc2tpcCBpZiBhbGlnbmVyIGlzIGJlaW5nIHNob3duXG4gICAgICBpZiAobm90RW1wdHkpIHsgLy8gc2tpcCBpZiBlbXB0eVxuICAgICAgICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzXyA9IGdldEN1cnJlbnRWZXJzZU9iamVjdHMoKVxuXG4gICAgICAgIGlmICghZW5hYmxlQWxpZ25tZW50KSB7XG4gICAgICAgICAgYWxpZ25lZF8gPSB0cnVlXG4gICAgICAgIH0gZWxzZSBpZiAobmV3VmVyc2VUZXh0ICYmIChuZXdWZXJzZVRleHQgIT09IGluaXRpYWxWZXJzZVRleHQpKSB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0cyA9IEFsaWdubWVudEhlbHBlcnMudXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UoY3VycmVudFZlcnNlT2JqZWN0c18sIG5ld1ZlcnNlVGV4dClcbiAgICAgICAgICBhbGlnbmVkXyA9IGlzVXNmbUFsaWduZWQocmVzdWx0cz8udGFyZ2V0VmVyc2VUZXh0LCBvcmlnaW5hbFZlcnNlT2JqZWN0cylcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCB0YXJnZXRWZXJzZVVTRk0gPSBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLmNvbnZlcnRWZXJzZURhdGFUb1VTRk0oY3VycmVudFZlcnNlT2JqZWN0c18pXG4gICAgICAgICAgYWxpZ25lZF8gPSBpc1VzZm1BbGlnbmVkKHRhcmdldFZlcnNlVVNGTSwgb3JpZ2luYWxWZXJzZU9iamVjdHMpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGFsaWduZWQgIT09IGFsaWduZWRfKSB7XG4gICAgICAgIHNldFN0YXRlKHsgYWxpZ25lZDogYWxpZ25lZF8gfSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtpbml0aWFsVmVyc2VPYmplY3RzLCBhbGlnbmVyRGF0YSwgbmV3VmVyc2VUZXh0LCBpbml0aWFsVmVyc2VUZXh0LCBlbmFibGVBbGlnbm1lbnQsIG9yaWdpbmFsVmVyc2VPYmplY3RzXSlcblxuICAvKipcbiAgICogZ2V0IGNoYW5nZXMgZm9yIHNhdmluZ1xuICAgKiBAcGFyYW0ge29iamVjdH0gbmV3U3RhdGUgLSBvcHRpb25hbGx5IHBhc3MgaW4gbmV3IHN0YXRlICh0byBvdmVycmlkZSBzdGF0ZSlcbiAgICovXG4gIGZ1bmN0aW9uIGdldENoYW5nZXMobmV3U3RhdGUgPSB7fSkge1xuICAgIGNvbnNvbGUubG9nKGBnZXRDaGFuZ2VzIC0gc3RhcnRlZCAke2N1cnJlbnRJbmRleH0gLSBwYXNzZWQgc3RhdGVgLCBuZXdTdGF0ZSlcbiAgICBjb25zdCBfbmV3U3RhdGUgPSB7XG4gICAgICBzdGF0ZSxcbiAgICAgIC4uLm5ld1N0YXRlLFxuICAgIH1cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3Qge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgbmV3QWxpZ25tZW50cyxcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIG5ld1ZlcnNlVGV4dCxcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHMsXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB2ZXJzZVRleHRDaGFuZ2VkLFxuICAgIH0gPSBfbmV3U3RhdGVcbiAgICBsZXQgdXBkYXRlZFZlcnNlT2JqZWN0c18gPSB1cGRhdGVkVmVyc2VPYmplY3RzXG5cbiAgICBpZiAobmV3QWxpZ25tZW50cykgeyAvLyBpZiB1bnNhdmVkIGFsaWdubWVudCBjaGFuZ2VzLCBhcHBseSB0aGVtXG4gICAgICBjb25zb2xlLmxvZyhgZ2V0Q2hhbmdlcyAtIGFwcGx5aW5nIHVuc2F2ZWQgYWxpZ25tZW50c31gKVxuICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0c18gPSB1cGRhdGVWZXJzZVdpdGhOZXdBbGlnbm1lbnRzKClcbiAgICB9XG5cbiAgICBpZiAodmVyc2VUZXh0Q2hhbmdlZCAmJiBuZXdWZXJzZVRleHQpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBnZXRDaGFuZ2VzIC0gYXBwbHlpbmcgbmV3IHRleHQ6YCwgbmV3VmVyc2VUZXh0KVxuICAgICAgY29uc3QgY3VycmVudFZlcnNlT2JqZWN0c18gPSBnZXRDdXJyZW50VmVyc2VPYmplY3RzKHVwZGF0ZWRWZXJzZU9iamVjdHNfKVxuICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0c18gJiYgY29uc29sZS5sb2coYGdldENoYW5nZXMgLSBhcHBseWluZyB1cGRhdGVkIGFsaWdubWVudHNgKVxuICAgICAgY29uc3QgeyB0YXJnZXRWZXJzZU9iamVjdHMgfSA9IEFsaWdubWVudEhlbHBlcnMudXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UoY3VycmVudFZlcnNlT2JqZWN0c18sIG5ld1ZlcnNlVGV4dClcbiAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHNfID0gdGFyZ2V0VmVyc2VPYmplY3RzXG4gICAgfSBlbHNlIHsgLy8gb25seSBhbGlnbm1lbnQgY2hhbmdlcyB0byB1cGxvYWRcbiAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHNfICYmIGNvbnNvbGUubG9nKGBnZXRDaGFuZ2VzIC0gYXBwbHlpbmcgdXBkYXRlZCBhbGlnbm1lbnRzYCwgeyBuZXdWZXJzZVRleHQsIHVwZGF0ZWRWZXJzZU9iamVjdHNfIH0pXG4gICAgICB1cGRhdGVkVmVyc2VPYmplY3RzXyA9IHVwZGF0ZWRWZXJzZU9iamVjdHNfIHx8IGluaXRpYWxWZXJzZU9iamVjdHNcbiAgICB9XG5cbiAgICBpZiAodXBkYXRlZFZlcnNlT2JqZWN0c18pIHtcbiAgICAgIGNvbnN0IHJlZiA9IHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmPy5bY3VycmVudEluZGV4XVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmV3VmVyc2VUZXh0LFxuICAgICAgICByZWYsXG4gICAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHM6IHVwZGF0ZWRWZXJzZU9iamVjdHNfLFxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7fVxuICB9XG5cbiAgLyoqXG4gICAqIGNvbXBhcmUgaW5pdGlhbCBhbGlnbm1lbnRzIHdpdGggZmluYWwgdG8gc2VlIGlmIGNoYW5nZWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IHByZWZpeFxuICAgKiBAcGFyYW0ge1ZlcnNlT2JqZWN0c1R5cGV9IF91cGRhdGVkVmVyc2VPYmplY3RzXG4gICAqIEBwYXJhbSB7VmVyc2VPYmplY3RzVHlwZX0gX2luaXRpYWxWZXJzZU9iamVjdHNcbiAgICogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgY2hhbmdlZFxuICAgKi9cbiAgZnVuY3Rpb24gaXNNaWdyYXRlZChwcmVmaXg6c3RyaW5nLCBfdXBkYXRlZFZlcnNlT2JqZWN0czpWZXJzZU9iamVjdHNUeXBlID0gdXBkYXRlZFZlcnNlT2JqZWN0cywgX2luaXRpYWxWZXJzZU9iamVjdHM6VmVyc2VPYmplY3RzVHlwZSA9IGluaXRpYWxWZXJzZU9iamVjdHMpOmJvb2xlYW4ge1xuICAgIGNvbnN0IHVwZGF0ZWRBbGlnbm1lbnRzID0gZ2V0QWxpZ25tZW50cyhfdXBkYXRlZFZlcnNlT2JqZWN0cylcbiAgICBjb25zdCBpbml0aWFsQWxpZ25tZW50cyA9IGdldEFsaWdubWVudHMoX2luaXRpYWxWZXJzZU9iamVjdHMpXG4gICAgbGV0IHNhbWUgPSB1cGRhdGVkQWxpZ25tZW50cy5sZW5ndGggPT09IGluaXRpYWxBbGlnbm1lbnRzLmxlbmd0aCAvLyBmaXJzdCBtYWtlIHN1cmUgbGVuZ3RocyBhcmUgdGhlIHNhbWVcbiAgICBsZXQgZmlyc3REaWZmXG5cbiAgICBpZiAoc2FtZSkgeyAvLyBldmVuIGlmIGxlbmd0aHMgYXJlIHRoZSBzYW1lIGRvdWJsZSBjaGVjayBlYWNoIGFsaWdubWVudFxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB1cGRhdGVkQWxpZ25tZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCB1cGRhdGVkQWxpZ25tZW50ID0gdXBkYXRlZEFsaWdubWVudHNbaV1cbiAgICAgICAgY29uc3QgaW5pdGlhbEFsaWdubWVudCA9IGluaXRpYWxBbGlnbm1lbnRzW2ldXG5cbiAgICAgICAgaWYgKCFpc0VxdWFsKHVwZGF0ZWRBbGlnbm1lbnQsIGluaXRpYWxBbGlnbm1lbnQpKSB7XG4gICAgICAgICAgZmlyc3REaWZmID0gaVxuICAgICAgICAgIHNhbWUgPSBmYWxzZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBkaWZmZXJlbnQgPSAhc2FtZVxuXG4gICAgaWYgKGRpZmZlcmVudCkge1xuICAgICAgY29uc29sZS5sb2coYCR7cHJlZml4fSAtIHRhcmdldCB2ZXJzZSBhbGlnbm1lbnRzIG1pZ3JhdGVkIHRvIG1hdGNoIG9yaWdpbmFsIGxhbmd1YWdlLCBmaXJzdCBkaWZmZXJlbmNlIGlzIGF0ICR7Zmlyc3REaWZmfWAsIHVwZGF0ZWRWZXJzZU9iamVjdHMsIGluaXRpYWxWZXJzZU9iamVjdHMpXG4gICAgfVxuXG4gICAgcmV0dXJuIGRpZmZlcmVudFxuICB9XG5cbiAgLyoqXG4gICAqIGRvIGFsaWdubWVudHMgbWlncmF0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwcmVmaXhcbiAgICogQHBhcmFtIHtWZXJzZU9iamVjdHNUeXBlfSB1cGRhdGVkVmVyc2VPYmplY3RzXG4gICAqL1xuICBmdW5jdGlvbiBtaWdyYXRlQWxpZ25tZW50cyhwcmVmaXg6IHN0cmluZywgdXBkYXRlZFZlcnNlT2JqZWN0czogVmVyc2VPYmplY3RzVHlwZSA9IG51bGwpOiBWZXJzZU9iamVjdHNUeXBlIHtcbiAgICB1cGRhdGVkVmVyc2VPYmplY3RzID0gdXBkYXRlZFZlcnNlT2JqZWN0cyB8fCBnZXRDdXJyZW50VmVyc2VPYmplY3RzKClcbiAgICBjb25zdCBfdXBkYXRlZFZlcnNlT2JqZWN0cyA9IG1pZ3JhdGVPcmlnaW5hbExhbmd1YWdlSGVscGVycy5taWdyYXRlVGFyZ2V0QWxpZ25tZW50c1RvT3JpZ2luYWwodXBkYXRlZFZlcnNlT2JqZWN0cywgb3JpZ2luYWxWZXJzZU9iamVjdHMpXG4gICAgaXNNaWdyYXRlZChwcmVmaXgsIF91cGRhdGVkVmVyc2VPYmplY3RzLCB1cGRhdGVkVmVyc2VPYmplY3RzKVxuICAgIHJldHVybiBfdXBkYXRlZFZlcnNlT2JqZWN0c1xuICB9XG5cbiAgLyoqXG4gICAqIGNhbGxiYWNrIGZvciB3aGVuIHVzZXIgY2xpY2tlZCBvbiBhbGlnbm1lbnQgYnV0dG9uIC0gd2lsbCBzaG93IGlmIG5vdCBhbHJlYWR5IHNob3duXG4gICAqL1xuICBmdW5jdGlvbiBoYW5kbGVBbGlnbm1lbnRDbGljaygpIHtcbiAgICBpZiAoZW5hYmxlQWxpZ25tZW50KSB7XG4gICAgICBsZXQgX2FsaWduZXJEYXRhOiBBbGlnbmVyRGF0YVR5cGUgPSBudWxsXG5cbiAgICAgIGlmICghYWxpZ25lckRhdGEpIHsgLy8gaWYgd29yZCBhbGlnbmVyIG5vdCBzaG93blxuICAgICAgICBjb25zb2xlLmxvZyhgaGFuZGxlQWxpZ25tZW50Q2xpY2sgLSB0b2dnbGUgT04gYWxpZ25tZW50YClcbiAgICAgICAgbGV0IG9yaWdpbmFsVmVyc2VVc2ZtID0gbnVsbFxuICAgICAgICBsZXQgX3VwZGF0ZWRWZXJzZU9iamVjdHMgPSB1cGRhdGVkVmVyc2VPYmplY3RzXG5cbiAgICAgICAgaWYgKG9yaWdpbmFsVmVyc2VPYmplY3RzKSB7XG4gICAgICAgICAgb3JpZ2luYWxWZXJzZVVzZm0gPSBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLmNvbnZlcnRWZXJzZURhdGFUb1VTRk0ob3JpZ2luYWxWZXJzZU9iamVjdHMpXG4gICAgICAgICAgX3VwZGF0ZWRWZXJzZU9iamVjdHMgPSBtaWdyYXRlQWxpZ25tZW50cygnaGFuZGxlQWxpZ25tZW50Q2xpY2soKScpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0YXJnZXRWZXJzZVVTRk0gPSBnZXRDdXJyZW50VmVyc2VVc2ZtKF91cGRhdGVkVmVyc2VPYmplY3RzLCBpbml0aWFsVmVyc2VPYmplY3RzLCB2ZXJzZVRleHRDaGFuZ2VkLCBuZXdWZXJzZVRleHQpXG5cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIHRhcmdldFdvcmRzOiB3b3JkQmFuayxcbiAgICAgICAgICB2ZXJzZUFsaWdubWVudHM6IGFsaWdubWVudHMsXG4gICAgICAgIH0gPSBBbGlnbm1lbnRIZWxwZXJzLnBhcnNlVXNmbVRvV29yZEFsaWduZXJEYXRhKHRhcmdldFZlcnNlVVNGTSwgb3JpZ2luYWxWZXJzZVVzZm0pXG4gICAgICAgIF9hbGlnbmVyRGF0YSA9IHsgd29yZEJhbmssIGFsaWdubWVudHMgfVxuXG4gICAgICAgIGlmICghYWxpZ25tZW50cz8ubGVuZ3RoKSB7XG4gICAgICAgICAgX2FsaWduZXJEYXRhLmVycm9yTWVzc2FnZSA9ICdUaGVyZSBhcmUgbm8gd29yZHMgdG8gYWxpZ24gaW4gdGhlIE9yaWdpbmFsIGxhbmd1YWdlJ1xuICAgICAgICB9IGVsc2UgaWYgKCF3b3JkQmFuaz8ubGVuZ3RoKSB7XG4gICAgICAgICAgX2FsaWduZXJEYXRhLmVycm9yTWVzc2FnZSA9ICdUaGVyZSBhcmUgbm8gd29yZHMgdG8gYWxpZ24gaW4gdGhlIExpdGVyYWwvU2ltcGxpZmllZCBTY3JpcHR1cmUgVGV4dCdcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHsgLy8gd29yZCBhbGlnbmVyIGN1cnJlbnRseSBzaG93blxuICAgICAgICBjb25zb2xlLmxvZyhgaGFuZGxlQWxpZ25tZW50Q2xpY2sgLSBhbGlnbm1lbnQgYWxyZWFkeSBzaG93bmApXG4gICAgICAgIF9hbGlnbmVyRGF0YSA9IGFsaWduZXJEYXRhXG4gICAgICB9XG4gICAgICBzZXRTdGF0ZSh7IGFsaWduZXJEYXRhOiBfYWxpZ25lckRhdGEgfSlcbiAgICAgIGNvbnNvbGUubG9nKF9hbGlnbmVyRGF0YSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogZ2V0IHVwZGF0ZWQgdmVyc2Ugb2JqZWN0cyBhZnRlciBhbGlnbm1lbnRzIGNoYW5nZWRcbiAgICogQHBhcmFtIHtBbGlnbmVyUmVzdWx0c0RhdGFUeXBlfSBfbmV3QWxpZ25tZW50cyAtIHJlc3VsdHMgb2YgYWxpZ25lclxuICAgKi9cbiAgZnVuY3Rpb24gdXBkYXRlVmVyc2VXaXRoTmV3QWxpZ25tZW50cyhfbmV3QWxpZ25tZW50czogQWxpZ25lclJlc3VsdHNEYXRhVHlwZSA9IG5ld0FsaWdubWVudHMpOlZlcnNlT2JqZWN0c1R5cGUge1xuICAgIGNvbnN0IGN1cnJlbnRWZXJzZU9iamVjdHNfID0gZ2V0Q3VycmVudFZlcnNlT2JqZWN0cygpXG4gICAgY29uc3QgdGFyZ2V0VmVyc2VUZXh0ID0gbmV3VmVyc2VUZXh0IHx8IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuY29udmVydFZlcnNlRGF0YVRvVVNGTShjdXJyZW50VmVyc2VPYmplY3RzXylcbiAgICBjb25zdCB2ZXJzZVVzZm0gPSBBbGlnbm1lbnRIZWxwZXJzLmFkZEFsaWdubWVudHNUb1ZlcnNlVVNGTShfbmV3QWxpZ25tZW50cy50YXJnZXRXb3JkcywgX25ld0FsaWdubWVudHMudmVyc2VBbGlnbm1lbnRzLCB0YXJnZXRWZXJzZVRleHQpXG5cbiAgICBpZiAoIXZlcnNlVXNmbSkge1xuICAgICAgY29uc29sZS5lcnJvcihgdXBkYXRlVmVyc2VXaXRoTmV3QWxpZ25tZW50cygpIC0gZXJyb3IgbWVyZ2luZyBhbGlnbm1lbnRzYClcbiAgICB9XG5cbiAgICBjb25zdCBhbGlnbmVkVmVyc2VPYmplY3RzID0gdXNmbUhlbHBlcnMudXNmbVZlcnNlVG9Kc29uKHZlcnNlVXNmbSlcbiAgICByZXR1cm4gYWxpZ25lZFZlcnNlT2JqZWN0c1xuICB9XG5cbiAgLyoqXG4gICAqIGNhbGxiYWNrIGZvciB3aGVuIHVzZXIgY2xpY2tlZCBvbiBidXR0b24gdG8gc2F2ZSBjdXJyZW50IGFsaWdubWVudHMgaW4gd29yZCBhbGlnbmVyLiAgR2VuZXJhdGVzIG5ldyB2ZXJzZSBjb250ZW50IGFuZCBzYXZlcyBpbiBzdGF0ZS4gQ2xvc2VzIGFsaWduZXIgZGlzcGxheVxuICAgKiBAcGFyYW0ge0FsaWduZXJSZXN1bHRzRGF0YVR5cGV9IF9uZXdBbGlnbm1lbnRzIC0gcmVzdWx0cyBvZiBhbGlnbmVyXG4gICAqL1xuICBmdW5jdGlvbiBzYXZlQWxpZ25tZW50KF9uZXdBbGlnbm1lbnRzOiBBbGlnbmVyUmVzdWx0c0RhdGFUeXBlID0gbmV3QWxpZ25tZW50cykge1xuICAgIGNvbnNvbGUubG9nKGBzYXZlQWxpZ25tZW50KCkgLSBuZXdBbGlnbm1lbnRzYCwgX25ld0FsaWdubWVudHMpXG5cbiAgICBpZiAoX25ld0FsaWdubWVudHMpIHtcbiAgICAgIGNvbnN0IGFsaWduZWRWZXJzZU9iamVjdHMgPSB1cGRhdGVWZXJzZVdpdGhOZXdBbGlnbm1lbnRzKF9uZXdBbGlnbm1lbnRzKVxuICAgICAgY29uc29sZS5sb2coYHNhdmVBbGlnbm1lbnQoKSAtIGFsaWduZWRWZXJzZU9iamVjdHNgLCBhbGlnbmVkVmVyc2VPYmplY3RzKVxuICAgICAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgICAgIGFsaWduZXJEYXRhOiBudWxsLFxuICAgICAgICBlZGl0aW5nOiBmYWxzZSxcbiAgICAgICAgbmV3QWxpZ25tZW50czogbnVsbCxcbiAgICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0czogYWxpZ25lZFZlcnNlT2JqZWN0cyxcbiAgICAgIH1cbiAgICAgIHNldFN0YXRlKG5ld1N0YXRlKVxuICAgICAgY2FsbFNldFNhdmVkU3RhdGUodHJ1ZSwgbmV3U3RhdGUgKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZyhgc2F2ZUFsaWdubWVudCgpIC0gbm8gYWxpZ25tZW50IGNoYW5nZXNgKVxuICAgICAgc2V0U3RhdGUoe1xuICAgICAgICBhbGlnbmVyRGF0YTogbnVsbCxcbiAgICAgICAgZWRpdGluZzogZmFsc2UsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBjYWxsYmFjayBmb3Igd2hlbiB1c2VyIGNsaWNrZWQgb24gYnV0dG9uIHRvIGNhbmNlbCB3b3JrIGluIHdvcmQgYWxpZ25lci4gIENhbGN1bGF0ZXMgYW5kIGRpc3BsYXlzIGN1cnJlbnQgYWxpZ25tZW50IHZhbGlkIHN0YXRlLiBDbG9zZXMgYWxpZ25lciBkaXNwbGF5XG4gICAqL1xuICBmdW5jdGlvbiBjYW5jZWxBbGlnbm1lbnQoKSB7XG4gICAgY29uc29sZS5sb2coYGNhbmNlbEFsaWdubWVudCgpYClcbiAgICBjb25zdCB0YXJnZXRWZXJzZVVTRk0gPSBnZXRDdXJyZW50VmVyc2VVc2ZtKHVwZGF0ZWRWZXJzZU9iamVjdHMsIGluaXRpYWxWZXJzZU9iamVjdHMsIHZlcnNlVGV4dENoYW5nZWQsIG5ld1ZlcnNlVGV4dClcbiAgICBjb25zdCBhbGlnbmVkID0gaXNVc2ZtQWxpZ25lZCh0YXJnZXRWZXJzZVVTRk0sIG9yaWdpbmFsVmVyc2VPYmplY3RzKVxuICAgIHNldFN0YXRlKHsgYWxpZ25lckRhdGE6IG51bGwsIGFsaWduZWQgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBjYWxsYmFjayBmb3IgYnV0dG9uIHRvIHNldCBlZGl0aW5nIHN0YXRlXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZWRpdGluZ18gLSBpZiB0cnVlLCBlZGl0b3IgaXMgc2hvd24sIG90aGVyd2lzZSBlZGl0b3IgaXMgaGlkZGVuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBfbmV3VmVyc2VUZXh0IC0gb3B0aW9uYWwgdmVyc2UgdGV4dFxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlcXVpcmUtYXdhaXRcbiAgYXN5bmMgZnVuY3Rpb24gc2V0RWRpdGluZyhlZGl0aW5nXzogYm9vbGVhbiwgX25ld1ZlcnNlVGV4dDogc3RyaW5nID0gbmV3VmVyc2VUZXh0KSB7XG4gICAgaWYgKGVuYWJsZUVkaXQpIHtcbiAgICAgIGlmIChlZGl0aW5nXyAhPT0gZWRpdGluZykge1xuICAgICAgICBfbmV3VmVyc2VUZXh0ID0gX25ld1ZlcnNlVGV4dCB8fCBpbml0aWFsVmVyc2VUZXh0XG4gICAgICAgIGxldCBfdXBkYXRlZFZlcnNlT2JqZWN0cyA9IG51bGxcbiAgICAgICAgY29uc3QgdmVyc2VUZXh0Q2hhbmdlZEZyb21MYXN0RWRpdCA9IF9uZXdWZXJzZVRleHQgIT09IG5ld1ZlcnNlVGV4dFxuICAgICAgICBjb25zdCB2ZXJzZVRleHRDaGFuZ2VkRnJvbUluaXRpYWwgPSBfbmV3VmVyc2VUZXh0ICE9PSBpbml0aWFsVmVyc2VUZXh0XG4gICAgICAgIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgICAgICAgIGVkaXRpbmc6IGVkaXRpbmdfLFxuICAgICAgICAgIG5ld1ZlcnNlVGV4dDogX25ld1ZlcnNlVGV4dCxcbiAgICAgICAgICB2ZXJzZVRleHRDaGFuZ2VkOiB2ZXJzZVRleHRDaGFuZ2VkRnJvbUluaXRpYWwsXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWVkaXRpbmdfICYmIHZlcnNlVGV4dENoYW5nZWRGcm9tTGFzdEVkaXQpIHsgLy8gaWYgZG9uZSBlZGl0aW5nIGFuZCB2ZXJzZSBoYXMgY2hhbmdlZCwgdXBkYXRlIHRoZSB2ZXJzZSBvYmplY3RzXG4gICAgICAgICAgX3VwZGF0ZWRWZXJzZU9iamVjdHMgPSB1cGRhdGVkVmVyc2VPYmplY3RzIHx8IGN1cnJlbnRWZXJzZU9iamVjdHNcblxuICAgICAgICAgIGlmICh2ZXJzZVRleHRDaGFuZ2VkRnJvbUluaXRpYWwpIHsgLy8gaWYgdmVyc2UgaGFzIGNoYW5nZWQgZnJvbSBpbml0aWFsLCBtaWdyYXRlIGFsaWdubWVudHMgaW4gdGhlIHZlcnNlIG9iamVjdHNcbiAgICAgICAgICAgIC8vIGRvIG1pZ3JhdGlvbiBvZiBhbGlnbm1lbnRzIHRvIG1hdGNoIGxhdGVzdCBvcmlnaW5hbCBsYW5ndWFnZVxuICAgICAgICAgICAgX3VwZGF0ZWRWZXJzZU9iamVjdHMgPSBtaWdyYXRlQWxpZ25tZW50cygnc2V0RWRpdGluZygpJywgX3VwZGF0ZWRWZXJzZU9iamVjdHMpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gYXBwbHkgYWxpZ25tZW50cyBmcm9tIHVwZGF0ZWQgdmVyc2VPYmplY3RzIHRvIGVkaXRlZCB2ZXJzZSB0ZXh0IGFuZCBnZW5lcmF0ZSBuZXcgdmVyc2Ugb2JqZWN0c1xuICAgICAgICAgIGNvbnN0IHsgdGFyZ2V0VmVyc2VPYmplY3RzIH0gPSBBbGlnbm1lbnRIZWxwZXJzLnVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlKF91cGRhdGVkVmVyc2VPYmplY3RzLCBfbmV3VmVyc2VUZXh0KVxuICAgICAgICAgIF91cGRhdGVkVmVyc2VPYmplY3RzID0gdGFyZ2V0VmVyc2VPYmplY3RzIC8vIHVwZGF0ZSB2ZXJzZU9iamVjdHMgdG8gbWF0Y2ggY3VycmVudCB0ZXh0XG4gICAgICAgICAgbmV3U3RhdGVbJ3VwZGF0ZWRWZXJzZU9iamVjdHMnXSA9IF91cGRhdGVkVmVyc2VPYmplY3RzXG4gICAgICAgIH1cblxuICAgICAgICBzZXRTdGF0ZShuZXdTdGF0ZSlcbiAgICAgICAgY29uc3QgX2FsaWdubWVudHNDaGFuZ2VkID0gKF91cGRhdGVkVmVyc2VPYmplY3RzICYmICFpc0VxdWFsKGluaXRpYWxWZXJzZU9iamVjdHMsIF91cGRhdGVkVmVyc2VPYmplY3RzKSlcbiAgICAgICAgY2FsbFNldFNhdmVkU3RhdGUodmVyc2VUZXh0Q2hhbmdlZEZyb21Jbml0aWFsIHx8IF9hbGlnbm1lbnRzQ2hhbmdlZCwgbmV3U3RhdGUgKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBjYWxsYmFjayBmcm9tIHRoZSBlZGl0IG9uQ2hhbmdlIGV2ZW50IHRvIHVwZGF0ZSBlZGl0IHN0YXRlIHZhcmlhYmxlc1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGNoYW5nZWQgLSB0cnVlIGlmIHRoZSBuZXdWZXJzZVRleHQgaXMgZGlmZmVyZW50IHRoYW4gdGhlIGluaXRpYWxWZXJzZVRleHRcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5ld1ZlcnNlVGV4dCAtIGN1cnJlbnQgY2hhbmdlZCB2ZXJzZSB0ZXh0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBfaW5pdGlhbFZlcnNlVGV4dCAtIGluaXRpYWwgdmVyc2UgdGV4dFxuICAgKi9cbiAgZnVuY3Rpb24gc2V0VmVyc2VDaGFuZ2VkKGNoYW5nZWQ6IGJvb2xlYW4sIG5ld1ZlcnNlVGV4dDogc3RyaW5nLCBfaW5pdGlhbFZlcnNlVGV4dDogc3RyaW5nKSB7XG4gICAgY29uc3QgX3RhcmdldFZlcnNlT2JqZWN0cyA9IGN1cnJlbnRWZXJzZU9iamVjdHMgfHwgaW5pdGlhbFZlcnNlT2JqZWN0c1xuICAgIGNvbnN0IHsgdGFyZ2V0VmVyc2VUZXh0IH0gPSBBbGlnbm1lbnRIZWxwZXJzLnVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlKF90YXJnZXRWZXJzZU9iamVjdHMsIG5ld1ZlcnNlVGV4dClcbiAgICBjb25zdCBhbGlnbmVkID0gaXNVc2ZtQWxpZ25lZCh0YXJnZXRWZXJzZVRleHQsIG9yaWdpbmFsVmVyc2VPYmplY3RzKVxuICAgIGNvbnN0IHZlcnNlVGV4dENoYW5nZWQgPSBuZXdWZXJzZVRleHQgIT09IGluaXRpYWxWZXJzZVRleHRcblxuICAgIHNldFN0YXRlKHtcbiAgICAgIHZlcnNlVGV4dENoYW5nZWQsXG4gICAgICBuZXdWZXJzZVRleHQsXG4gICAgICBhbGlnbmVkLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzID0gUmVhY3QudXNlTWVtbyggKCkgPT4geyAvLyBpZiB2ZXJzZSBoYXMgYmVlbiBlZGl0ZWQgb3IgYWxpZ25tZW50IGNoYW5nZWQsIHRoZW4gZ2VuZXJhdGUgbmV3IHZlcnNlT2JqZWN0cyB0byBkaXNwbGF5IGluIFNjcmlwdHVyZVBhbmVcbiAgICBpZiAoaW5pdGlhbFZlcnNlT2JqZWN0cykge1xuICAgICAgY29uc3QgdGFyZ2V0VmVyc2VVU0ZNID0gZ2V0Q3VycmVudFZlcnNlVXNmbSh1cGRhdGVkVmVyc2VPYmplY3RzLCBpbml0aWFsVmVyc2VPYmplY3RzLCB2ZXJzZVRleHRDaGFuZ2VkLCBuZXdWZXJzZVRleHQpXG4gICAgICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzXyA9IHVzZm1IZWxwZXJzLnVzZm1WZXJzZVRvSnNvbih0YXJnZXRWZXJzZVVTRk0pXG4gICAgICByZXR1cm4gY3VycmVudFZlcnNlT2JqZWN0c19cbiAgICB9XG4gICAgcmV0dXJuIGluaXRpYWxWZXJzZU9iamVjdHNcbiAgfSwgW3VwZGF0ZWRWZXJzZU9iamVjdHMsIGluaXRpYWxWZXJzZU9iamVjdHMsIHZlcnNlVGV4dENoYW5nZWQsIG5ld1ZlcnNlVGV4dF0pXG5cbiAgY29uc3QgdW5zYXZlZENoYW5nZXM6Ym9vbGVhbiA9IFJlYWN0LnVzZU1lbW8oICgpID0+IHsgLy8gaWYgdmVyc2UgaGFzIGJlZW4gZWRpdGVkIG9yIGFsaWdubWVudCBjaGFuZ2VkLCB0aGVuIGluZGljYXRlIHdlIGhhdmUgdW5zYXZlZCBjaGFuZ2VzXG4gICAgY29uc3QgY2hhbmdlZCA9IHZlcnNlVGV4dENoYW5nZWQgfHwgKHVwZGF0ZWRWZXJzZU9iamVjdHMgJiYgIWlzRXF1YWwoaW5pdGlhbFZlcnNlT2JqZWN0cywgdXBkYXRlZFZlcnNlT2JqZWN0cykpXG4gICAgcmV0dXJuIGNoYW5nZWRcbiAgfSwgW3VwZGF0ZWRWZXJzZU9iamVjdHMsIGluaXRpYWxWZXJzZU9iamVjdHMsIHZlcnNlVGV4dENoYW5nZWRdKVxuXG4gIC8qKlxuICAgKiBjYWxsYmFjayB0byBzY3JpcHR1cmUgY2FyZCB0byB1cGRhdGVkIHdpdGggbGF0ZXN0IHN0YXRlIGZvciBzYXZpbmdcbiAgICogQHBhcmFtIHtib29sZWFufSB1bnNhdmVkQ2hhbmdlc19cbiAgICogQHBhcmFtIHtvYmplY3R9IG5ld1N0YXRlXG4gICAqL1xuICBmdW5jdGlvbiBjYWxsU2V0U2F2ZWRTdGF0ZSh1bnNhdmVkQ2hhbmdlc186IGJvb2xlYW4sIG5ld1N0YXRlOiB7fSA9IHsgfSApIHtcbiAgICBjb25zdCBfbmV3U3RhdGUgPSB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIC4uLm5ld1N0YXRlLFxuICAgIH1cblxuICAgIC8vIGNvbnNvbGUubG9nKGBjYWxsU2V0U2F2ZWRTdGF0ZSAtIG5ldyBzdGF0ZWAsIF9uZXdTdGF0ZSlcbiAgICBzZXRTYXZlZENoYW5nZXMgJiYgc2V0U2F2ZWRDaGFuZ2VzKGN1cnJlbnRJbmRleCwgIXVuc2F2ZWRDaGFuZ2VzXywge1xuICAgICAgZ2V0Q2hhbmdlcyxcbiAgICAgIGNsZWFyQ2hhbmdlcyxcbiAgICAgIHN0YXRlOiBfbmV3U3RhdGUsXG4gICAgfSlcbiAgfVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHNldCBzYXZlZCBjaGFuZ2VzIHdoZW5ldmVyIHVzZXIgZWRpdHMgdmVyc2UgdGV4dCBvciBhbGlnbm1lbnRzIG9yIGlmIGFsaWdubWVudHMgYXJlIG9wZW5cbiAgICBjb25zdCB1bnNhdmVkQ2hhbmdlc18gPSB1bnNhdmVkQ2hhbmdlcyB8fCAhIWFsaWduZXJEYXRhXG4gICAgY2FsbFNldFNhdmVkU3RhdGUodW5zYXZlZENoYW5nZXNfKVxuICB9LCBbdW5zYXZlZENoYW5nZXMsIGFsaWduZXJEYXRhXSlcblxuICAvKipcbiAgICogY2FsbGJhY2sgZm9yIHdoZW4gYWxpZ25tZW50cyBhcmUgYmVpbmcgY2hhbmdlZFxuICAgKiBAcGFyYW0ge0FsaWduZXJSZXN1bHRzRGF0YVR5cGV9IHJlc3VsdHNcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gdHJ1ZSBpZiBhbGlnbm1lbnQgaXMgY29tcGxldGVcbiAgICovXG4gIGZ1bmN0aW9uIG9uQWxpZ25tZW50c0NoYW5nZShyZXN1bHRzOiBBbGlnbmVyUmVzdWx0c0RhdGFUeXBlKTpib29sZWFuIHtcbiAgICBjb25zb2xlLmxvZyhgb25BbGlnbm1lbnRzQ2hhbmdlKCkgLSBhbGlnbm1lbnQgY2hhbmdlZCwgcmVzdWx0c2AsIHJlc3VsdHMpIC8vIG1lcmdlIGFsaWdubWVudHMgaW50byB0YXJnZXQgdmVyc2UgYW5kIGNvbnZlcnQgdG8gVVNGTVxuICAgIGNvbnN0IHsgdGFyZ2V0V29yZHMsIHZlcnNlQWxpZ25tZW50cyB9ID0gcmVzdWx0c1xuICAgIGNvbnN0IGFsaWdubWVudENvbXBsZXRlID0gQWxpZ25tZW50SGVscGVycy5hcmVBbGdubWVudHNDb21wbGV0ZSh0YXJnZXRXb3JkcywgdmVyc2VBbGlnbm1lbnRzKVxuICAgIGNvbnNvbGUubG9nKGBBbGlnbm1lbnRzIGFyZSAke2FsaWdubWVudENvbXBsZXRlID8gJ0NPTVBMRVRFIScgOiAnaW5jb21wbGV0ZSd9YClcbiAgICBzZXRTdGF0ZSh7IG5ld0FsaWdubWVudHM6IHJlc3VsdHMsIGFsaWduZWQ6IGFsaWdubWVudENvbXBsZXRlIH0pXG4gICAgcmV0dXJuIGFsaWdubWVudENvbXBsZXRlXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFjdGlvbnM6IHtcbiAgICAgIGNhbmNlbEFsaWdubWVudCxcbiAgICAgIGNsZWFyQ2hhbmdlcyxcbiAgICAgIGdldENoYW5nZXMsXG4gICAgICBoYW5kbGVBbGlnbm1lbnRDbGljayxcbiAgICAgIG9uQWxpZ25tZW50c0NoYW5nZSxcbiAgICAgIHNhdmVBbGlnbm1lbnQsXG4gICAgICBzZXRFZGl0aW5nLFxuICAgICAgc2V0VmVyc2VDaGFuZ2VkLFxuICAgIH0sXG4gICAgc3RhdGU6IHtcbiAgICAgIGFsaWduZWQsXG4gICAgICBhbGlnbmVyRGF0YSxcbiAgICAgIGN1cnJlbnRWZXJzZU9iamVjdHMsXG4gICAgICBlZGl0aW5nLFxuICAgICAgZW5hYmxlRWRpdCxcbiAgICAgIGVuYWJsZUFsaWdubWVudCxcbiAgICAgIGluaXRpYWxWZXJzZVRleHQsXG4gICAgICBpbml0aWFsVmVyc2VPYmplY3RzLFxuICAgICAgbmV3VmVyc2VUZXh0LFxuICAgICAgcmVmZXJlbmNlOiBiYXNpY1JlZmVyZW5jZSxcbiAgICAgIHNvdXJjZUxhbmd1YWdlLFxuICAgICAgdGFyZ2V0TGFuZ3VhZ2UsXG4gICAgICB0aXRsZSxcbiAgICAgIHVuc2F2ZWRDaGFuZ2VzLFxuICAgICAgdmVy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
|