@kepler.gl/reducers 3.3.0-alpha.15 → 3.3.0-alpha.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/combined-updaters.js +166 -8
- package/dist/cjs/composers.js +4 -5
- package/dist/cjs/dataset-ops-updaters.js +289 -0
- package/dist/cjs/dataset-ops-updaters.spec.js +257 -0
- package/dist/cjs/interaction-utils.js +156 -4
- package/dist/cjs/layer-utils.js +133 -8
- package/dist/cjs/ui-state-updaters.js +86 -47
- package/dist/cjs/ui-state.js +2 -2
- package/dist/cjs/vis-state-merger.js +35 -4
- package/dist/cjs/vis-state-selectors.js +5 -4
- package/dist/cjs/vis-state-updaters.js +599 -182
- package/dist/cjs/vis-state.js +2 -2
- package/dist/combined-updaters.d.ts +21 -1
- package/dist/composers.d.ts +3 -0
- package/dist/dataset-ops-updaters.d.ts +18 -0
- package/dist/dataset-ops-updaters.spec.d.ts +1 -0
- package/dist/esm/combined-updaters.js +166 -8
- package/dist/esm/composers.js +3 -2
- package/dist/esm/dataset-ops-updaters.js +274 -0
- package/dist/esm/dataset-ops-updaters.spec.js +256 -0
- package/dist/esm/interaction-utils.js +150 -1
- package/dist/esm/layer-utils.js +131 -8
- package/dist/esm/ui-state-updaters.js +85 -46
- package/dist/esm/ui-state.js +2 -2
- package/dist/esm/vis-state-merger.js +35 -4
- package/dist/esm/vis-state-selectors.js +5 -4
- package/dist/esm/vis-state-updaters.js +557 -186
- package/dist/esm/vis-state.js +2 -2
- package/dist/interaction-utils.d.ts +21 -1
- package/dist/layer-utils.d.ts +16 -0
- package/dist/ui-state-updaters.d.ts +20 -0
- package/dist/vis-state-updaters.d.ts +32 -13
- package/dist/vis-state.d.ts +16 -0
- package/package.json +16 -16
|
@@ -179,9 +179,10 @@ export var DEFAULT_EXPORT_JSON = {
|
|
|
179
179
|
* @property JSON - Default: 'DEFAULT_EXPORT_JSON',
|
|
180
180
|
* @property format - Default: 'HTML',
|
|
181
181
|
* @property fileName Default: `''`,
|
|
182
|
+
* @property includeLayerApiKeys Default: `false`,
|
|
182
183
|
* @public
|
|
183
184
|
*/
|
|
184
|
-
export var DEFAULT_EXPORT_MAP = _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, EXPORT_MAP_FORMATS.HTML, DEFAULT_EXPORT_HTML), EXPORT_MAP_FORMATS.JSON, DEFAULT_EXPORT_JSON), "format", EXPORT_MAP_FORMATS.HTML), "fileName", '');
|
|
185
|
+
export var DEFAULT_EXPORT_MAP = _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, EXPORT_MAP_FORMATS.HTML, DEFAULT_EXPORT_HTML), EXPORT_MAP_FORMATS.JSON, DEFAULT_EXPORT_JSON), "format", EXPORT_MAP_FORMATS.HTML), "fileName", ''), "includeLayerApiKeys", false);
|
|
185
186
|
|
|
186
187
|
/**
|
|
187
188
|
* Default initial `exportVideo` settings
|
|
@@ -214,6 +215,7 @@ export var DEFAULT_EXPORT_VIDEO = {
|
|
|
214
215
|
* @property activeSidePanel Default: `'layer'`
|
|
215
216
|
* @property currentModal Default: `'addData'`
|
|
216
217
|
* @property datasetKeyToRemove Default: `null`
|
|
218
|
+
* @property datasetToReplaceId Default: `null`
|
|
217
219
|
* @property visibleDropdown Default: `null`
|
|
218
220
|
* @property exportImage Default: [`DEFAULT_EXPORT_IMAGE`](#default_export_image)
|
|
219
221
|
* @property exportData Default: [`DEFAULT_EXPORT_DATA`](#default_export_data)
|
|
@@ -232,6 +234,7 @@ export var INITIAL_UI_STATE = {
|
|
|
232
234
|
activeSidePanel: DEFAULT_ACTIVE_SIDE_PANEL,
|
|
233
235
|
currentModal: DEFAULT_MODAL,
|
|
234
236
|
datasetKeyToRemove: null,
|
|
237
|
+
datasetToReplaceId: null,
|
|
235
238
|
visibleDropdown: null,
|
|
236
239
|
// export image modal ui
|
|
237
240
|
exportImage: DEFAULT_EXPORT_IMAGE,
|
|
@@ -305,7 +308,10 @@ export var toggleSidePanelUpdater = function toggleSidePanelUpdater(state, _ref)
|
|
|
305
308
|
export var toggleModalUpdater = function toggleModalUpdater(state, _ref2) {
|
|
306
309
|
var id = _ref2.payload;
|
|
307
310
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
308
|
-
currentModal: id
|
|
311
|
+
currentModal: id,
|
|
312
|
+
// Add Data and every other modal open leave replace mode.
|
|
313
|
+
// Replace mode is entered only through openReplaceDatasetModal.
|
|
314
|
+
datasetToReplaceId: null
|
|
309
315
|
});
|
|
310
316
|
};
|
|
311
317
|
|
|
@@ -462,6 +468,23 @@ export var openDeleteModalUpdater = function openDeleteModalUpdater(state, _ref8
|
|
|
462
468
|
});
|
|
463
469
|
};
|
|
464
470
|
|
|
471
|
+
/**
|
|
472
|
+
* Open the add-data modal so the next confirmed upload replaces one dataset.
|
|
473
|
+
* @memberof uiStateUpdaters
|
|
474
|
+
* @param state `uiState`
|
|
475
|
+
* @param action
|
|
476
|
+
* @param action.payload dataset id
|
|
477
|
+
* @returns nextState
|
|
478
|
+
* @public
|
|
479
|
+
*/
|
|
480
|
+
export var openReplaceDatasetModalUpdater = function openReplaceDatasetModalUpdater(state, _ref9) {
|
|
481
|
+
var datasetToReplaceId = _ref9.payload;
|
|
482
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
483
|
+
currentModal: ADD_DATA_ID,
|
|
484
|
+
datasetToReplaceId: datasetToReplaceId
|
|
485
|
+
});
|
|
486
|
+
};
|
|
487
|
+
|
|
465
488
|
/**
|
|
466
489
|
* Set `exportImage` options such as `legend` and `charts` to `true` or `false`
|
|
467
490
|
* @memberof uiStateUpdaters
|
|
@@ -469,8 +492,8 @@ export var openDeleteModalUpdater = function openDeleteModalUpdater(state, _ref8
|
|
|
469
492
|
* @returns nextState
|
|
470
493
|
* @public
|
|
471
494
|
*/
|
|
472
|
-
export var setExportImageSettingUpdater = function setExportImageSettingUpdater(state,
|
|
473
|
-
var newSetting =
|
|
495
|
+
export var setExportImageSettingUpdater = function setExportImageSettingUpdater(state, _ref0) {
|
|
496
|
+
var newSetting = _ref0.payload;
|
|
474
497
|
var updated = _objectSpread(_objectSpread({}, state.exportImage), newSetting);
|
|
475
498
|
var imageSize = calculateExportImageSize(updated) || state.exportImage.imageSize;
|
|
476
499
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
@@ -489,8 +512,8 @@ export var setExportImageSettingUpdater = function setExportImageSettingUpdater(
|
|
|
489
512
|
* @returns nextState
|
|
490
513
|
* @public
|
|
491
514
|
*/
|
|
492
|
-
export var setExportImageDataUriUpdater = function setExportImageDataUriUpdater(state,
|
|
493
|
-
var dataUri =
|
|
515
|
+
export var setExportImageDataUriUpdater = function setExportImageDataUriUpdater(state, _ref1) {
|
|
516
|
+
var dataUri = _ref1.payload;
|
|
494
517
|
if (dataUri === state.exportImage.imageDataUri) {
|
|
495
518
|
return state;
|
|
496
519
|
}
|
|
@@ -506,8 +529,8 @@ export var setExportImageDataUriUpdater = function setExportImageDataUriUpdater(
|
|
|
506
529
|
* @memberof uiStateUpdaters
|
|
507
530
|
* @public
|
|
508
531
|
*/
|
|
509
|
-
export var setExportImageErrorUpdater = function setExportImageErrorUpdater(state,
|
|
510
|
-
var error =
|
|
532
|
+
export var setExportImageErrorUpdater = function setExportImageErrorUpdater(state, _ref10) {
|
|
533
|
+
var error = _ref10.payload;
|
|
511
534
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
512
535
|
exportImage: _objectSpread(_objectSpread({}, state.exportImage), {}, {
|
|
513
536
|
processing: false,
|
|
@@ -542,8 +565,8 @@ export var cleanupExportImageUpdater = function cleanupExportImageUpdater(state)
|
|
|
542
565
|
* @returns nextState
|
|
543
566
|
* @public
|
|
544
567
|
*/
|
|
545
|
-
export var setExportVideoSettingUpdater = function setExportVideoSettingUpdater(state,
|
|
546
|
-
var newSetting =
|
|
568
|
+
export var setExportVideoSettingUpdater = function setExportVideoSettingUpdater(state, _ref11) {
|
|
569
|
+
var newSetting = _ref11.payload;
|
|
547
570
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
548
571
|
exportVideo: _objectSpread(_objectSpread({}, state.exportVideo), newSetting)
|
|
549
572
|
});
|
|
@@ -557,9 +580,9 @@ export var setExportVideoSettingUpdater = function setExportVideoSettingUpdater(
|
|
|
557
580
|
* @returns {UiState}
|
|
558
581
|
* @public
|
|
559
582
|
*/
|
|
560
|
-
export var startExportingImageUpdater = function startExportingImageUpdater(state,
|
|
561
|
-
var
|
|
562
|
-
options =
|
|
583
|
+
export var startExportingImageUpdater = function startExportingImageUpdater(state, _ref12) {
|
|
584
|
+
var _ref12$payload = _ref12.payload,
|
|
585
|
+
options = _ref12$payload === void 0 ? {} : _ref12$payload;
|
|
563
586
|
var imageSettings = _objectSpread(_objectSpread({}, options), {}, {
|
|
564
587
|
exporting: true
|
|
565
588
|
});
|
|
@@ -575,8 +598,8 @@ export var startExportingImageUpdater = function startExportingImageUpdater(stat
|
|
|
575
598
|
* @returns nextState
|
|
576
599
|
* @public
|
|
577
600
|
*/
|
|
578
|
-
export var setExportSelectedDatasetUpdater = function setExportSelectedDatasetUpdater(state,
|
|
579
|
-
var dataset =
|
|
601
|
+
export var setExportSelectedDatasetUpdater = function setExportSelectedDatasetUpdater(state, _ref13) {
|
|
602
|
+
var dataset = _ref13.payload;
|
|
580
603
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
581
604
|
exportData: _objectSpread(_objectSpread({}, state.exportData), {}, {
|
|
582
605
|
selectedDataset: dataset
|
|
@@ -593,8 +616,8 @@ export var setExportSelectedDatasetUpdater = function setExportSelectedDatasetUp
|
|
|
593
616
|
* @returns nextState
|
|
594
617
|
* @public
|
|
595
618
|
*/
|
|
596
|
-
export var setExportDataTypeUpdater = function setExportDataTypeUpdater(state,
|
|
597
|
-
var dataType =
|
|
619
|
+
export var setExportDataTypeUpdater = function setExportDataTypeUpdater(state, _ref14) {
|
|
620
|
+
var dataType = _ref14.payload;
|
|
598
621
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
599
622
|
exportData: _objectSpread(_objectSpread({}, state.exportData), {}, {
|
|
600
623
|
dataType: dataType
|
|
@@ -611,8 +634,8 @@ export var setExportDataTypeUpdater = function setExportDataTypeUpdater(state, _
|
|
|
611
634
|
* @returns nextState
|
|
612
635
|
* @public
|
|
613
636
|
*/
|
|
614
|
-
export var setExportFilteredUpdater = function setExportFilteredUpdater(state,
|
|
615
|
-
var filtered =
|
|
637
|
+
export var setExportFilteredUpdater = function setExportFilteredUpdater(state, _ref15) {
|
|
638
|
+
var filtered = _ref15.payload;
|
|
616
639
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
617
640
|
exportData: _objectSpread(_objectSpread({}, state.exportData), {}, {
|
|
618
641
|
filtered: filtered
|
|
@@ -643,8 +666,8 @@ export var setExportDataUpdater = function setExportDataUpdater(state) {
|
|
|
643
666
|
* @returns nextState
|
|
644
667
|
* @public
|
|
645
668
|
*/
|
|
646
|
-
export var setUserMapboxAccessTokenUpdater = function setUserMapboxAccessTokenUpdater(state,
|
|
647
|
-
var userMapboxToken =
|
|
669
|
+
export var setUserMapboxAccessTokenUpdater = function setUserMapboxAccessTokenUpdater(state, _ref16) {
|
|
670
|
+
var userMapboxToken = _ref16.payload;
|
|
648
671
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
649
672
|
exportMap: _objectSpread(_objectSpread({}, state.exportMap), {}, _defineProperty({}, EXPORT_MAP_FORMATS.HTML, _objectSpread(_objectSpread({}, state.exportMap[EXPORT_MAP_FORMATS.HTML]), {}, {
|
|
650
673
|
userMapboxToken: userMapboxToken
|
|
@@ -659,8 +682,8 @@ export var setUserMapboxAccessTokenUpdater = function setUserMapboxAccessTokenUp
|
|
|
659
682
|
* @param action.payload format to use to export the map into
|
|
660
683
|
* @return nextState
|
|
661
684
|
*/
|
|
662
|
-
export var setExportMapFormatUpdater = function setExportMapFormatUpdater(state,
|
|
663
|
-
var format =
|
|
685
|
+
export var setExportMapFormatUpdater = function setExportMapFormatUpdater(state, _ref17) {
|
|
686
|
+
var format = _ref17.payload;
|
|
664
687
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
665
688
|
exportMap: _objectSpread(_objectSpread({}, state.exportMap), {}, {
|
|
666
689
|
// @ts-expect-error
|
|
@@ -678,8 +701,8 @@ export var setExportMapFormatUpdater = function setExportMapFormatUpdater(state,
|
|
|
678
701
|
* @returns nextState
|
|
679
702
|
* @public
|
|
680
703
|
*/
|
|
681
|
-
export var setExportMapFileNameUpdater = function setExportMapFileNameUpdater(state,
|
|
682
|
-
var fileName =
|
|
704
|
+
export var setExportMapFileNameUpdater = function setExportMapFileNameUpdater(state, _ref18) {
|
|
705
|
+
var fileName = _ref18.payload;
|
|
683
706
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
684
707
|
exportMap: _objectSpread(_objectSpread({}, state.exportMap), {}, {
|
|
685
708
|
fileName: fileName
|
|
@@ -694,8 +717,8 @@ export var setExportMapFileNameUpdater = function setExportMapFileNameUpdater(st
|
|
|
694
717
|
* @param action.payload to be set (available modes: EXPORT_HTML_MAP_MODES)
|
|
695
718
|
* @return nextState
|
|
696
719
|
*/
|
|
697
|
-
export var setExportMapHTMLModeUpdater = function setExportMapHTMLModeUpdater(state,
|
|
698
|
-
var mode =
|
|
720
|
+
export var setExportMapHTMLModeUpdater = function setExportMapHTMLModeUpdater(state, _ref19) {
|
|
721
|
+
var mode = _ref19.payload;
|
|
699
722
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
700
723
|
exportMap: _objectSpread(_objectSpread({}, state.exportMap), {}, _defineProperty({}, EXPORT_MAP_FORMATS.HTML, _objectSpread(_objectSpread({}, state.exportMap[EXPORT_MAP_FORMATS.HTML]), {}, {
|
|
701
724
|
mode: mode
|
|
@@ -703,6 +726,22 @@ export var setExportMapHTMLModeUpdater = function setExportMapHTMLModeUpdater(st
|
|
|
703
726
|
});
|
|
704
727
|
};
|
|
705
728
|
|
|
729
|
+
/**
|
|
730
|
+
* Whether to keep layer access tokens in exported HTML and JSON maps.
|
|
731
|
+
* @param state - `uiState`
|
|
732
|
+
* @param action
|
|
733
|
+
* @param action.payload - include layer API keys
|
|
734
|
+
* @return nextState
|
|
735
|
+
*/
|
|
736
|
+
export var setExportIncludeLayerApiKeysUpdater = function setExportIncludeLayerApiKeysUpdater(state, _ref20) {
|
|
737
|
+
var includeLayerApiKeys = _ref20.payload;
|
|
738
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
739
|
+
exportMap: _objectSpread(_objectSpread({}, state.exportMap), {}, {
|
|
740
|
+
includeLayerApiKeys: includeLayerApiKeys
|
|
741
|
+
})
|
|
742
|
+
});
|
|
743
|
+
};
|
|
744
|
+
|
|
706
745
|
/**
|
|
707
746
|
* Adds a new notification.
|
|
708
747
|
* Updates a notification in case of matching ids.
|
|
@@ -713,8 +752,8 @@ export var setExportMapHTMLModeUpdater = function setExportMapHTMLModeUpdater(st
|
|
|
713
752
|
* @returns nextState
|
|
714
753
|
* @public
|
|
715
754
|
*/
|
|
716
|
-
export var addNotificationUpdater = function addNotificationUpdater(state,
|
|
717
|
-
var payload =
|
|
755
|
+
export var addNotificationUpdater = function addNotificationUpdater(state, _ref21) {
|
|
756
|
+
var payload = _ref21.payload;
|
|
718
757
|
var oldNotifications = state.notifications || [];
|
|
719
758
|
// @ts-expect-error
|
|
720
759
|
var payloadId = payload === null || payload === void 0 ? void 0 : payload.id;
|
|
@@ -745,8 +784,8 @@ export var addNotificationUpdater = function addNotificationUpdater(state, _ref1
|
|
|
745
784
|
* @returns nextState
|
|
746
785
|
* @public
|
|
747
786
|
*/
|
|
748
|
-
export var removeNotificationUpdater = function removeNotificationUpdater(state,
|
|
749
|
-
var id =
|
|
787
|
+
export var removeNotificationUpdater = function removeNotificationUpdater(state, _ref22) {
|
|
788
|
+
var id = _ref22.payload;
|
|
750
789
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
751
790
|
notifications: state.notifications.filter(function (n) {
|
|
752
791
|
return n.id !== id;
|
|
@@ -792,8 +831,8 @@ export var loadFilesSuccessUpdater = function loadFilesSuccessUpdater(state) {
|
|
|
792
831
|
* @returns nextState
|
|
793
832
|
* @public
|
|
794
833
|
*/
|
|
795
|
-
export var loadFilesErrUpdater = function loadFilesErrUpdater(state,
|
|
796
|
-
var error =
|
|
834
|
+
export var loadFilesErrUpdater = function loadFilesErrUpdater(state, _ref23) {
|
|
835
|
+
var error = _ref23.error;
|
|
797
836
|
return addNotificationUpdater(_objectSpread(_objectSpread({}, state), {}, {
|
|
798
837
|
loadFiles: _objectSpread(_objectSpread({}, state.loadFiles), {}, {
|
|
799
838
|
fileLoading: false
|
|
@@ -846,8 +885,8 @@ export var showDatasetTableUpdater = function showDatasetTableUpdater(state) {
|
|
|
846
885
|
* @returns nextState
|
|
847
886
|
* @public
|
|
848
887
|
*/
|
|
849
|
-
export var setLocaleUpdater = function setLocaleUpdater(state,
|
|
850
|
-
var locale =
|
|
888
|
+
export var setLocaleUpdater = function setLocaleUpdater(state, _ref24) {
|
|
889
|
+
var locale = _ref24.payload.locale;
|
|
851
890
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
852
891
|
locale: locale
|
|
853
892
|
});
|
|
@@ -863,8 +902,8 @@ export var setLocaleUpdater = function setLocaleUpdater(state, _ref22) {
|
|
|
863
902
|
* @returns nextState
|
|
864
903
|
* @public
|
|
865
904
|
*/
|
|
866
|
-
export var setThemeUpdater = function setThemeUpdater(state,
|
|
867
|
-
var theme =
|
|
905
|
+
export var setThemeUpdater = function setThemeUpdater(state, _ref25) {
|
|
906
|
+
var theme = _ref25.payload.theme;
|
|
868
907
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
869
908
|
theme: theme
|
|
870
909
|
});
|
|
@@ -879,10 +918,10 @@ export var setThemeUpdater = function setThemeUpdater(state, _ref23) {
|
|
|
879
918
|
* @returns nextState
|
|
880
919
|
* @public
|
|
881
920
|
*/
|
|
882
|
-
export var togglePanelListViewUpdater = function togglePanelListViewUpdater(state,
|
|
883
|
-
var
|
|
884
|
-
panelId =
|
|
885
|
-
listView =
|
|
921
|
+
export var togglePanelListViewUpdater = function togglePanelListViewUpdater(state, _ref26) {
|
|
922
|
+
var _ref26$payload = _ref26.payload,
|
|
923
|
+
panelId = _ref26$payload.panelId,
|
|
924
|
+
listView = _ref26$payload.listView;
|
|
886
925
|
var stateProp = panelId === 'layer' ? 'layerPanelListView' : panelId === 'filter' ? 'filterPanelListView' : null;
|
|
887
926
|
if (!stateProp || state[stateProp] === listView) {
|
|
888
927
|
return state;
|
|
@@ -899,11 +938,11 @@ export var togglePanelListViewUpdater = function togglePanelListViewUpdater(stat
|
|
|
899
938
|
* @returns nextState
|
|
900
939
|
* @public
|
|
901
940
|
*/
|
|
902
|
-
export var receiveMapConfigUpdater = function receiveMapConfigUpdater(state,
|
|
941
|
+
export var receiveMapConfigUpdater = function receiveMapConfigUpdater(state, _ref27) {
|
|
903
942
|
var _uiState$mapControls, _uiState$mapControls2, _uiState$mapControls3;
|
|
904
|
-
var config =
|
|
905
|
-
var
|
|
906
|
-
uiState =
|
|
943
|
+
var config = _ref27.payload.config;
|
|
944
|
+
var _ref28 = config || {},
|
|
945
|
+
uiState = _ref28.uiState;
|
|
907
946
|
if (!uiState) {
|
|
908
947
|
return state;
|
|
909
948
|
}
|
|
@@ -958,4 +997,4 @@ export var receiveMapConfigUpdater = function receiveMapConfigUpdater(state, _re
|
|
|
958
997
|
}
|
|
959
998
|
return newState;
|
|
960
999
|
};
|
|
961
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBRERfREFUQV9JRCIsIkRBVEFfVEFCTEVfSUQiLCJERUZBVUxUX05PVElGSUNBVElPTl9UT1BJQ1MiLCJERUxFVEVfREFUQV9JRCIsIkVYUE9SVF9EQVRBX1RZUEUiLCJFWFBPUlRfSFRNTF9NQVBfTU9ERVMiLCJFWFBPUlRfSU1HX1JBVElPUyIsIkVYUE9SVF9NQVBfRk9STUFUUyIsIlJFU09MVVRJT05TIiwiTUFQX0NPTlRST0xTIiwiVEhFTUUiLCJMT0NBTEVfQ09ERVMiLCJjcmVhdGVOb3RpZmljYXRpb24iLCJlcnJvck5vdGlmaWNhdGlvbiIsImNhbGN1bGF0ZUV4cG9ydEltYWdlU2l6ZSIsImdldEFwcGxpY2F0aW9uQ29uZmlnIiwiZ2V0Q29uZmlndXJlZFRoZW1lcyIsImdldERlZmF1bHRVaVRoZW1lIiwicGF5bG9hZF8iLCJhcHBseV8iLCJjb21wb3NlXyIsIkRFRkFVTFRfQUNUSVZFX1NJREVfUEFORUwiLCJERUZBVUxUX01PREFMIiwidWlTdGF0ZVVwZGF0ZXJzIiwiREVGQVVMVF9NQVBfQ09OVFJPTFNfRkVBVFVSRVMiLCJzaG93IiwiYWN0aXZlIiwiZGlzYWJsZUNsb3NlIiwiYWN0aXZlTWFwSW5kZXgiLCJERUZBVUxUX01BUF9MRUdFTkRfQ09OVFJPTCIsIl9vYmplY3RTcHJlYWQiLCJkaXNhYmxlRWRpdCIsIkRFRkFVTFRfTUFQX0NPTlRST0xTIiwiT2JqZWN0Iiwia2V5cyIsInJlZHVjZSIsImZpbmFsIiwiY3VycmVudCIsIl9kZWZpbmVQcm9wZXJ0eSIsIm1hcExlZ2VuZCIsIkRFRkFVTFRfRVhQT1JUX0lNQUdFIiwicmF0aW8iLCJTQ1JFRU4iLCJyZXNvbHV0aW9uIiwiT05FX1giLCJsZWdlbmQiLCJjaGFydHMiLCJtYXBIIiwibWFwVyIsImltYWdlU2l6ZSIsInpvb21PZmZzZXQiLCJzY2FsZSIsImltYWdlVyIsImltYWdlSCIsImNlbnRlciIsImltYWdlRGF0YVVyaSIsImV4cG9ydGluZyIsInByb2Nlc3NpbmciLCJlcnJvciIsImVzY2FwZVhodG1sRm9yV2VicGFjayIsImZpbGVOYW1lIiwiREVGQVVMVF9MT0FEX0ZJTEVTIiwiZmlsZUxvYWRpbmciLCJERUZBVUxUX0VYUE9SVF9EQVRBIiwic2VsZWN0ZWREYXRhc2V0IiwiZGF0YVR5cGUiLCJDU1YiLCJmaWx0ZXJlZCIsIkRFRkFVTFRfTk9USUZJQ0FUSU9OUyIsIkRFRkFVTFRfRVhQT1JUX0hUTUwiLCJleHBvcnRNYXBib3hBY2Nlc3NUb2tlbiIsInVzZXJNYXBib3hUb2tlbiIsIm1vZGUiLCJSRUFEIiwiREVGQVVMVF9FWFBPUlRfSlNPTiIsImhhc0RhdGEiLCJERUZBVUxUX0VYUE9SVF9NQVAiLCJIVE1MIiwiSlNPTiIsIkRFRkFVTFRfRVhQT1JUX1ZJREVPIiwibWVkaWFUeXBlIiwiY2FtZXJhUHJlc2V0IiwiZHVyYXRpb25NcyIsInN3aXBlU3RhcnRQY3QiLCJzd2lwZUVuZFBjdCIsInN3aXBlRWFzaW5nIiwiSU5JVElBTF9VSV9TVEFURSIsInJlYWRPbmx5IiwiYWN0aXZlU2lkZVBhbmVsIiwiY3VycmVudE1vZGFsIiwiZGF0YXNldEtleVRvUmVtb3ZlIiwidmlzaWJsZURyb3Bkb3duIiwiZXhwb3J0SW1hZ2UiLCJleHBvcnREYXRhIiwiZXhwb3J0TWFwIiwiZXhwb3J0VmlkZW8iLCJtYXBDb250cm9scyIsIm5vdGlmaWNhdGlvbnMiLCJsb2FkRmlsZXMiLCJsb2NhbGUiLCJlbiIsInRoZW1lIiwiZGFyayIsImxheWVyUGFuZWxMaXN0VmlldyIsImZpbHRlclBhbmVsTGlzdFZpZXciLCJpc1NpZGVQYW5lbENsb3NlQnV0dG9uVmlzaWJsZSIsImluaXRVaVN0YXRlVXBkYXRlciIsInN0YXRlIiwiYWN0aW9uIiwiX2luaXRpYWxVaVN0YXRlJHRoZW1lIiwiaW5pdGlhbFVpU3RhdGUiLCJwYXlsb2FkIiwidGhlbWVzIiwicmVxdWVzdGVkIiwibGVuZ3RoIiwiaW5jbHVkZXMiLCJ0b2dnbGVTaWRlUGFuZWxVcGRhdGVyIiwiX3JlZiIsImlkIiwidG9nZ2xlTW9kYWxVcGRhdGVyIiwiX3JlZjIiLCJzaG93RXhwb3J0RHJvcGRvd25VcGRhdGVyIiwiX3JlZjMiLCJoaWRlRXhwb3J0RHJvcGRvd25VcGRhdGVyIiwidG9nZ2xlU2lkZVBhbmVsQ2xvc2VCdXR0b25VcGRhdGVyIiwiX3JlZjQiLCJNVVRVQUxMWV9FWENMVVNJVkVfTUFQX0NPTlRST0xTIiwic3BsaXRNYXAiLCJ0b2dnbGUzZCIsIm1hcERyYXciLCJtYXBMb2NhbGUiLCJ0b2dnbGVNYXBDb250cm9sVXBkYXRlciIsIl9yZWY1IiwiX3VwZGF0ZWRTdGF0ZSRtYXBDb250IiwiX3VwZGF0ZWRTdGF0ZSRtYXBDb250MiIsIl9yZWY1JHBheWxvYWQiLCJwYW5lbElkIiwiX3JlZjUkcGF5bG9hZCRpbmRleCIsImluZGV4IiwidXBkYXRlZFN0YXRlIiwiaXNPcGVuaW5nIiwibmV4dE1hcENvbnRyb2xzIiwiZGlkRGVhY3RpdmF0ZSIsImZvckVhY2giLCJjb250cm9sSWQiLCJfbmV4dE1hcENvbnRyb2xzJGNvbnQiLCJzZXRNYXBDb250cm9sVmlzaWJpbGl0eVVwZGF0ZXIiLCJfcmVmNiIsIl9zdGF0ZSRtYXBDb250cm9scyIsIl9yZWY2JHBheWxvYWQiLCJCb29sZWFuIiwic2V0TWFwQ29udHJvbFNldHRpbmdzVXBkYXRlciIsIl9yZWY3IiwiX3N0YXRlJG1hcENvbnRyb2xzMiIsIl9yZWY3JHBheWxvYWQiLCJzZXR0aW5ncyIsIm1hcENvbnRyb2wiLCJvcGVuRGVsZXRlTW9kYWxVcGRhdGVyIiwiX3JlZjgiLCJzZXRFeHBvcnRJbWFnZVNldHRpbmdVcGRhdGVyIiwiX3JlZjkiLCJuZXdTZXR0aW5nIiwidXBkYXRlZCIsInNldEV4cG9ydEltYWdlRGF0YVVyaVVwZGF0ZXIiLCJfcmVmMCIsImRhdGFVcmkiLCJzZXRFeHBvcnRJbWFnZUVycm9yVXBkYXRlciIsIl9yZWYxIiwiY2xlYW51cEV4cG9ydEltYWdlVXBkYXRlciIsInNldEV4cG9ydFZpZGVvU2V0dGluZ1VwZGF0ZXIiLCJfcmVmMTAiLCJzdGFydEV4cG9ydGluZ0ltYWdlVXBkYXRlciIsIl9yZWYxMSIsIl9yZWYxMSRwYXlsb2FkIiwib3B0aW9ucyIsImltYWdlU2V0dGluZ3MiLCJzZXRFeHBvcnRTZWxlY3RlZERhdGFzZXRVcGRhdGVyIiwiX3JlZjEyIiwiZGF0YXNldCIsInNldEV4cG9ydERhdGFUeXBlVXBkYXRlciIsIl9yZWYxMyIsInNldEV4cG9ydEZpbHRlcmVkVXBkYXRlciIsIl9yZWYxNCIsInNldEV4cG9ydERhdGFVcGRhdGVyIiwic2V0VXNlck1hcGJveEFjY2Vzc1Rva2VuVXBkYXRlciIsIl9yZWYxNSIsInNldEV4cG9ydE1hcEZvcm1hdFVwZGF0ZXIiLCJfcmVmMTYiLCJmb3JtYXQiLCJzZXRFeHBvcnRNYXBGaWxlTmFtZVVwZGF0ZXIiLCJfcmVmMTciLCJzZXRFeHBvcnRNYXBIVE1MTW9kZVVwZGF0ZXIiLCJfcmVmMTgiLCJhZGROb3RpZmljYXRpb25VcGRhdGVyIiwiX3JlZjE5Iiwib2xkTm90aWZpY2F0aW9ucyIsInBheWxvYWRJZCIsIm5vdGlmaWNhdGlvblRvVXBkYXRlIiwiZmluZCIsIm4iLCJtYXAiLCJjb3VudCIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheSIsInJlbW92ZU5vdGlmaWNhdGlvblVwZGF0ZXIiLCJfcmVmMjAiLCJmaWx0ZXIiLCJsb2FkRmlsZXNVcGRhdGVyIiwibG9hZEZpbGVzU3VjY2Vzc1VwZGF0ZXIiLCJsb2FkRmlsZXNFcnJVcGRhdGVyIiwiX3JlZjIxIiwibWVzc2FnZSIsInRvcGljIiwiZ2xvYmFsIiwidG9nZ2xlU3BsaXRNYXBVcGRhdGVyIiwiZW50cmllcyIsImFjYyIsImVudHJ5Iiwic2hvd0RhdGFzZXRUYWJsZVVwZGF0ZXIiLCJzZXRMb2NhbGVVcGRhdGVyIiwiX3JlZjIyIiwic2V0VGhlbWVVcGRhdGVyIiwiX3JlZjIzIiwidG9nZ2xlUGFuZWxMaXN0Vmlld1VwZGF0ZXIiLCJfcmVmMjQiLCJfcmVmMjQkcGF5bG9hZCIsImxpc3RWaWV3Iiwic3RhdGVQcm9wIiwicmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIiLCJfcmVmMjUiLCJfdWlTdGF0ZSRtYXBDb250cm9scyIsIl91aVN0YXRlJG1hcENvbnRyb2xzMiIsIl91aVN0YXRlJG1hcENvbnRyb2xzMyIsImNvbmZpZyIsIl9yZWYyNiIsInVpU3RhdGUiLCJuZXdTdGF0ZSIsImN1cnJlbnRMZWdlbmQiLCJjaGFydCIsImN1cnJlbnRDaGFydCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91aS1zdGF0ZS11cGRhdGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge1xuICBBRERfREFUQV9JRCxcbiAgREFUQV9UQUJMRV9JRCxcbiAgREVGQVVMVF9OT1RJRklDQVRJT05fVE9QSUNTLFxuICBERUxFVEVfREFUQV9JRCxcbiAgRVhQT1JUX0RBVEFfVFlQRSxcbiAgRVhQT1JUX0hUTUxfTUFQX01PREVTLFxuICBFWFBPUlRfSU1HX1JBVElPUyxcbiAgRVhQT1JUX01BUF9GT1JNQVRTLFxuICBSRVNPTFVUSU9OUyxcbiAgTUFQX0NPTlRST0xTLFxuICBUSEVNRVxufSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge0xPQ0FMRV9DT0RFU30gZnJvbSAnQGtlcGxlci5nbC9sb2NhbGl6YXRpb24nO1xuaW1wb3J0IHtcbiAgY3JlYXRlTm90aWZpY2F0aW9uLFxuICBlcnJvck5vdGlmaWNhdGlvbixcbiAgY2FsY3VsYXRlRXhwb3J0SW1hZ2VTaXplLFxuICBnZXRBcHBsaWNhdGlvbkNvbmZpZyxcbiAgZ2V0Q29uZmlndXJlZFRoZW1lcyxcbiAgZ2V0RGVmYXVsdFVpVGhlbWVcbn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge3BheWxvYWRfLCBhcHBseV8sIGNvbXBvc2VffSBmcm9tICcuL2NvbXBvc2VyLWhlbHBlcnMnO1xuXG5pbXBvcnQge1xuICBBY3Rpb25UeXBlcyxcbiAgS2VwbGVyR2xJbml0UGF5bG9hZCxcbiAgTG9hZEZpbGVzRXJyVXBkYXRlckFjdGlvbixcbiAgUmVjZWl2ZU1hcENvbmZpZ1BheWxvYWQsXG4gIFVJU3RhdGVBY3Rpb25zXG59IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQge1xuICBFeHBvcnREYXRhLFxuICBFeHBvcnRIdG1sLFxuICBFeHBvcnRKc29uLFxuICBFeHBvcnRNYXAsXG4gIEV4cG9ydEltYWdlLFxuICBFeHBvcnRWaWRlbyxcbiAgTWFwQ29udHJvbEl0ZW0sXG4gIE1hcENvbnRyb2xNYXBMZWdlbmQsXG4gIE1hcENvbnRyb2xzLFxuICBVaVN0YXRlXG59IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9BQ1RJVkVfU0lERV9QQU5FTCA9ICdsYXllcic7XG5leHBvcnQgY29uc3QgREVGQVVMVF9NT0RBTCA9IEFERF9EQVRBX0lEO1xuXG4vKipcbiAqIFVwZGF0ZXJzIGZvciBgdWlTdGF0ZWAgcmVkdWNlci4gQ2FuIGJlIHVzZWQgaW4geW91ciByb290IHJlZHVjZXIgdG8gZGlyZWN0bHkgbW9kaWZ5IGtlcGxlci5nbCdzIHN0YXRlLlxuICogUmVhZCBtb3JlIGFib3V0IFtVc2luZyB1cGRhdGVyc10oLi4vYWR2YW5jZWQtdXNhZ2UvdXNpbmctdXBkYXRlcnMubWQpXG4gKlxuICogQHB1YmxpY1xuICogQGV4YW1wbGVcbiAqXG4gKiBpbXBvcnQga2VwbGVyR2xSZWR1Y2VyLCB7dWlTdGF0ZVVwZGF0ZXJzfSBmcm9tICdAa2VwbGVyLmdsL3JlZHVjZXJzJztcbiAqIC8vIFJvb3QgUmVkdWNlclxuICogY29uc3QgcmVkdWNlcnMgPSBjb21iaW5lUmVkdWNlcnMoe1xuICogIGtlcGxlckdsOiBrZXBsZXJHbFJlZHVjZXIsXG4gKiAgYXBwOiBhcHBSZWR1Y2VyXG4gKiB9KTtcbiAqXG4gKiBjb25zdCBjb21wb3NlZFJlZHVjZXIgPSAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICogIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAqICAgIC8vIGNsaWNrIGJ1dHRvbiB0byBjbG9zZSBzaWRlIHBhbmVsXG4gKiAgICBjYXNlICdDTElDS19CVVRUT04nOlxuICogICAgICByZXR1cm4ge1xuICogICAgICAgIC4uLnN0YXRlLFxuICogICAgICAgIGtlcGxlckdsOiB7XG4gKiAgICAgICAgICAuLi5zdGF0ZS5rZXBsZXJHbCxcbiAqICAgICAgICAgIGZvbzoge1xuICogICAgICAgICAgICAgLi4uc3RhdGUua2VwbGVyR2wuZm9vLFxuICogICAgICAgICAgICAgdWlTdGF0ZTogdWlTdGF0ZVVwZGF0ZXJzLnRvZ2dsZVNpZGVQYW5lbFVwZGF0ZXIoXG4gKiAgICAgICAgICAgICAgIHVpU3RhdGUsIHtwYXlsb2FkOiBudWxsfVxuICogICAgICAgICAgICAgKVxuICogICAgICAgICAgfVxuICogICAgICAgIH1cbiAqICAgICAgfTtcbiAqICB9XG4gKiAgcmV0dXJuIHJlZHVjZXJzKHN0YXRlLCBhY3Rpb24pO1xuICogfTtcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCBjb21wb3NlZFJlZHVjZXI7XG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuLy8gQHRzLWlnbm9yZVxuY29uc3QgdWlTdGF0ZVVwZGF0ZXJzID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG5cbmNvbnN0IERFRkFVTFRfTUFQX0NPTlRST0xTX0ZFQVRVUkVTOiBNYXBDb250cm9sSXRlbSA9IHtcbiAgc2hvdzogdHJ1ZSxcbiAgYWN0aXZlOiBmYWxzZSxcbiAgZGlzYWJsZUNsb3NlOiBmYWxzZSxcbiAgLy8gZGVmaW5lcyB3aGljaCBtYXAgaW5kZXggdXNlcnMgYXJlIGludGVyYWN0aW5nIHdpdGggKHRocm91Z2ggbWFwIGNvbnRyb2xzKVxuICBhY3RpdmVNYXBJbmRleDogMFxufTtcblxuY29uc3QgREVGQVVMVF9NQVBfTEVHRU5EX0NPTlRST0wgPSB7XG4gIC4uLkRFRkFVTFRfTUFQX0NPTlRST0xTX0ZFQVRVUkVTLFxuICBkaXNhYmxlRWRpdDogZmFsc2Vcbn07XG4vKipcbiAqIEEgbGlzdCBvZiBtYXAgY29udHJvbCB2aXNpYmlsaXR5IGFuZCB3aGV0aGVyIGlzIGl0IGFjdGl2ZS5cbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBjb25zdGFudFxuICogQHByb3BlcnR5IHZpc2libGVMYXllcnMgRGVmYXVsdDogYHtzaG93OiB0cnVlLCBhY3RpdmU6IGZhbHNlfWBcbiAqIEBwcm9wZXJ0eSBtYXBMZWdlbmQgRGVmYXVsdDogYHtzaG93OiB0cnVlLCBhY3RpdmU6IGZhbHNlfWBcbiAqIEBwcm9wZXJ0eSB0b2dnbGUzZCBEZWZhdWx0OiBge3Nob3c6IHRydWV9YFxuICogQHByb3BlcnR5IHNwbGl0TWFwIERlZmF1bHQ6IGB7c2hvdzogdHJ1ZX1gXG4gKiBAcHJvcGVydHkgbWFwRHJhdyBEZWZhdWx0OiBge3Nob3c6IHRydWUsIGFjdGl2ZTogZmFsc2V9YFxuICogQHByb3BlcnR5IG1hcExvY2FsZSBEZWZhdWx0OiBge3Nob3c6IHRydWUsIGFjdGl2ZTogZmFsc2V9YFxuICogQHByb3BlcnR5IG1hcFRoZW1lIERlZmF1bHQ6IGB7c2hvdzogdHJ1ZSwgYWN0aXZlOiBmYWxzZX1gXG4gKiBAcHJvcGVydHkgdmlld3BvcnRKc29uIERlZmF1bHQ6IGB7c2hvdzogdHJ1ZSwgYWN0aXZlOiBmYWxzZX1gXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX01BUF9DT05UUk9MUzogTWFwQ29udHJvbHMgPSAoXG4gIE9iamVjdC5rZXlzKE1BUF9DT05UUk9MUykgYXMgQXJyYXk8a2V5b2YgdHlwZW9mIE1BUF9DT05UUk9MUz5cbikucmVkdWNlKFxuICAoZmluYWwsIGN1cnJlbnQpID0+ICh7XG4gICAgLi4uZmluYWwsXG4gICAgW2N1cnJlbnRdOlxuICAgICAgY3VycmVudCA9PT0gTUFQX0NPTlRST0xTLm1hcExlZ2VuZFxuICAgICAgICA/IERFRkFVTFRfTUFQX0xFR0VORF9DT05UUk9MXG4gICAgICAgIDogREVGQVVMVF9NQVBfQ09OVFJPTFNfRkVBVFVSRVNcbiAgfSksXG4gIHt9IGFzIE1hcENvbnRyb2xzXG4pO1xuXG4vKipcbiAqIERlZmF1bHQgaW1hZ2UgZXhwb3J0IGNvbmZpZ1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgcmF0aW8gRGVmYXVsdDogYCdTQ1JFRU4nYCxcbiAqIEBwcm9wZXJ0eSByZXNvbHV0aW9uIERlZmF1bHQ6IGAnT05FX1gnYCxcbiAqIEBwcm9wZXJ0eSBsZWdlbmQgRGVmYXVsdDogYGZhbHNlYCxcbiAqIEBwcm9wZXJ0eSBjaGFydHMgRGVmYXVsdDogYGZhbHNlYCxcbiAqIEBwcm9wZXJ0eSBtYXBIIERlZmF1bHQ6IDAsXG4gKiBAcHJvcGVydHkgbWFwVyBEZWZhdWx0OiAwLFxuICogQHByb3BlcnR5IGltYWdlU2l6ZSBEZWZhdWx0OiB7em9vbU9mZnNldDogMCwgc2NhbGU6IDEsIGltYWdlVzogMCwgaW1hZ2VIOiAwfSxcbiAqIEBwcm9wZXJ0eSBpbWFnZURhdGFVcmkgRGVmYXVsdDogYCcnYCxcbiAqIEBwcm9wZXJ0eSBleHBvcnRpbmcgRGVmYXVsdDogYGZhbHNlYFxuICogQHByb3BlcnR5IGVycm9yIERlZmF1bHQ6IGBmYWxzZWBcbiAqIEBwcm9wZXJ0eSBlc2NhcGVYaHRtbEZvcldlYnBhY2sgRGVmYXVsdDogZnJvbSBhcHBsaWNhdGlvbiBjb25maWcgKGF1dG8tZGV0ZWN0ZWQ6IGB0cnVlYCBmb3Igd2VicGFjaylcbiAqIEBwcm9wZXJ0eSBmaWxlTmFtZSBEZWZhdWx0OiBgJydgXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0VYUE9SVF9JTUFHRTogRXhwb3J0SW1hZ2UgPSB7XG4gIC8vIHVzZXIgb3B0aW9uc1xuICByYXRpbzogRVhQT1JUX0lNR19SQVRJT1MuU0NSRUVOLFxuICByZXNvbHV0aW9uOiBSRVNPTFVUSU9OUy5PTkVfWCxcbiAgbGVnZW5kOiBmYWxzZSxcbiAgY2hhcnRzOiBmYWxzZSxcbiAgbWFwSDogMCxcbiAgbWFwVzogMCxcbiAgaW1hZ2VTaXplOiB7XG4gICAgem9vbU9mZnNldDogMCxcbiAgICBzY2FsZTogMSxcbiAgICBpbWFnZVc6IDAsXG4gICAgaW1hZ2VIOiAwXG4gIH0sXG4gIC8vIHdoZW4gdGhpcyBpcyBzZXQgdG8gdHJ1ZSwgdGhlIG1vY2sgbWFwIHZpZXdwb3J0IHdpbGwgbW92ZSB0byB0aGUgY2VudGVyIG9mIGRhdGFcbiAgY2VudGVyOiBmYWxzZSxcbiAgLy8gZXhwb3J0aW5nIHN0YXRlXG4gIGltYWdlRGF0YVVyaTogJycsXG4gIC8vIGV4cG9ydGluZzogdXNlZCB0byBhdHRhY2ggcGxvdC1jb250YWluZXIgdG8gZG9tXG4gIGV4cG9ydGluZzogZmFsc2UsXG4gIC8vIHByb2Nlc3Npbmc6IHVzZWQgYXMgbG9hZGluZyBpbmRpY2F0b3Igd2hlbiBleHBvcnQgaW1hZ2UgaXMgYmVpbmcgcHJvZHVjZWRcbiAgcHJvY2Vzc2luZzogZmFsc2UsXG4gIGVycm9yOiBmYWxzZSxcbiAgLy8gd2hldGhlciB0byBhcHBseSBmaXggZm9yIHVnbGlmeSBlcnJvciBpbiBkb20tdG8taW1hZ2UgKGZyb20gYXBwbGljYXRpb24gY29uZmlnLCBhdXRvLWRldGVjdHMgYnVpbGQgdG9vbClcbiAgZXNjYXBlWGh0bWxGb3JXZWJwYWNrOiBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLmVzY2FwZVhodG1sRm9yV2VicGFjayxcbiAgZmlsZU5hbWU6ICcnXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MT0FEX0ZJTEVTID0ge1xuICBmaWxlTG9hZGluZzogZmFsc2Vcbn07XG5cbi8qKlxuICogRGVmYXVsdCBpbml0aWFsIGBleHBvcnREYXRhYCBzZXR0aW5nc1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgc2VsZWN0ZWREYXRhc2V0IERlZmF1bHQ6IGAnJ2AsXG4gKiBAcHJvcGVydHkgZGF0YVR5cGUgRGVmYXVsdDogYCdjc3YnYCxcbiAqIEBwcm9wZXJ0eSBmaWx0ZXJlZCBEZWZhdWx0OiBgdHJ1ZWAsXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0VYUE9SVF9EQVRBOiBFeHBvcnREYXRhID0ge1xuICBzZWxlY3RlZERhdGFzZXQ6ICcnLFxuICBkYXRhVHlwZTogRVhQT1JUX0RBVEFfVFlQRS5DU1YsXG4gIGZpbHRlcmVkOiB0cnVlXG59O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9OT1RJRklDQVRJT05TID0gW107XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgZXhwb3J0TWFwYm94QWNjZXNzVG9rZW4gLSBEZWZhdWx0OiBudWxsLCB0aGlzIGlzIHVzZWQgd2hlbiB3ZSBwcm92aWRlIGEgZGVmYXVsdCBtYXBib3ggdG9rZW4gZm9yIHVzZXJzIHRvIHRha2UgYWR2YW50YWdlIG9mXG4gKiBAcHJvcGVydHkgdXNlck1hcGJveFRva2VuIC0gRGVmYXVsdDogJycsIG1hcGJveCB0b2tlbiBwcm92aWRlZCBieSB1c2VyIHRocm91Z2ggaW5wdXQgZmllbGRcbiAqIEBwcm9wZXJ0eSBtb2RlIC0gRGVmYXVsdDogJ1JFQUQnLCByZWFkIG9ubHkgb3IgZWRpdGFibGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVhQT1JUX0hUTUw6IEV4cG9ydEh0bWwgPSB7XG4gIGV4cG9ydE1hcGJveEFjY2Vzc1Rva2VuOiBudWxsLFxuICB1c2VyTWFwYm94VG9rZW46ICcnLFxuICBtb2RlOiBFWFBPUlRfSFRNTF9NQVBfTU9ERVMuUkVBRFxufTtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBwcm9wZXJ0eSBoYXNEYXRhIC0gRGVmYXVsdDogJ3RydWUnLFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9FWFBPUlRfSlNPTjogRXhwb3J0SnNvbiA9IHtcbiAgaGFzRGF0YTogdHJ1ZVxufTtcblxuLyoqXG4gKiBFeHBvcnQgTWFwIENvbmZpZ1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgSFRNTCAtIERlZmF1bHQ6ICdERUZBVUxUX0VYUE9SVF9IVE1MJyxcbiAqIEBwcm9wZXJ0eSBKU09OIC0gRGVmYXVsdDogJ0RFRkFVTFRfRVhQT1JUX0pTT04nLFxuICogQHByb3BlcnR5IGZvcm1hdCAtIERlZmF1bHQ6ICdIVE1MJyxcbiAqIEBwcm9wZXJ0eSBmaWxlTmFtZSBEZWZhdWx0OiBgJydgLFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9FWFBPUlRfTUFQOiBFeHBvcnRNYXAgPSB7XG4gIFtFWFBPUlRfTUFQX0ZPUk1BVFMuSFRNTF06IERFRkFVTFRfRVhQT1JUX0hUTUwsXG4gIFtFWFBPUlRfTUFQX0ZPUk1BVFMuSlNPTl06IERFRkFVTFRfRVhQT1JUX0pTT04sXG4gIGZvcm1hdDogRVhQT1JUX01BUF9GT1JNQVRTLkhUTUwsXG4gIGZpbGVOYW1lOiAnJ1xufTtcblxuLyoqXG4gKiBEZWZhdWx0IGluaXRpYWwgYGV4cG9ydFZpZGVvYCBzZXR0aW5nc1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgbWVkaWFUeXBlIERlZmF1bHQ6IGAnd2VibSdgXG4gKiBAcHJvcGVydHkgY2FtZXJhUHJlc2V0IERlZmF1bHQ6IGAnTm9uZSdgXG4gKiBAcHJvcGVydHkgZmlsZU5hbWUgRGVmYXVsdDogYCdrZXBsZXIuZ2wnYFxuICogQHByb3BlcnR5IHJlc29sdXRpb24gRGVmYXVsdDogYCcxMjgweDcyMCdgXG4gKiBAcHJvcGVydHkgZHVyYXRpb25NcyBEZWZhdWx0OiBgMTAwMGBcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVhQT1JUX1ZJREVPOiBFeHBvcnRWaWRlbyA9IHtcbiAgbWVkaWFUeXBlOiAnd2VibScsIC8vIHVzZSB3ZWJtIGFzIGRlZmF1bHQgYXMgZ2lmIGV4cG9ydCB0ZW5kcyB0byBmcmVlemUgb24gbGFyZ2VyIHJlY29yZGluZ3NcbiAgY2FtZXJhUHJlc2V0OiAnTm9uZScsXG4gIGZpbGVOYW1lOiAna2VwbGVyLmdsJyxcbiAgcmVzb2x1dGlvbjogJzEyODB4NzIwJyxcbiAgZHVyYXRpb25NczogMTAwMCxcbiAgc3dpcGVTdGFydFBjdDogMCxcbiAgc3dpcGVFbmRQY3Q6IDEwMCxcbiAgc3dpcGVFYXNpbmc6ICdlYXNlLWluLW91dCdcbn07XG5cbi8qKlxuICogRGVmYXVsdCBpbml0aWFsIGB1aVN0YXRlYFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgcmVhZE9ubHkgRGVmYXVsdDogYGZhbHNlYFxuICogQHByb3BlcnR5IGFjdGl2ZVNpZGVQYW5lbCBEZWZhdWx0OiBgJ2xheWVyJ2BcbiAqIEBwcm9wZXJ0eSBjdXJyZW50TW9kYWwgRGVmYXVsdDogYCdhZGREYXRhJ2BcbiAqIEBwcm9wZXJ0eSBkYXRhc2V0S2V5VG9SZW1vdmUgRGVmYXVsdDogYG51bGxgXG4gKiBAcHJvcGVydHkgdmlzaWJsZURyb3Bkb3duIERlZmF1bHQ6IGBudWxsYFxuICogQHByb3BlcnR5IGV4cG9ydEltYWdlIERlZmF1bHQ6IFtgREVGQVVMVF9FWFBPUlRfSU1BR0VgXSgjZGVmYXVsdF9leHBvcnRfaW1hZ2UpXG4gKiBAcHJvcGVydHkgZXhwb3J0RGF0YSBEZWZhdWx0OiBbYERFRkFVTFRfRVhQT1JUX0RBVEFgXSgjZGVmYXVsdF9leHBvcnRfZGF0YSlcbiAqIEBwcm9wZXJ0eSBleHBvcnRNYXAgRGVmYXVsdDogW2BERUZBVUxUX0VYUE9SVF9NQVBgXSgjZGVmYXVsdF9leHBvcnRfbWFwKVxuICogQHByb3BlcnR5IG1hcENvbnRyb2xzIERlZmF1bHQ6IFtgREVGQVVMVF9NQVBfQ09OVFJPTFNgXSgjZGVmYXVsdF9tYXBfY29udHJvbHMpXG4gKiBAcHJvcGVydHkgbm90aWZpY2F0aW9ucyBEZWZhdWx0OiBgW11gXG4gKiBAcHJvcGVydHkgbm90aWZpY2F0aW9ucyBEZWZhdWx0OiBgW11gXG4gKiBAcHJvcGVydHkgbG9hZEZpbGVzXG4gKiBAcHJvcGVydHkgbG9jYWxlIERlZmF1bHQ6IGAnZW4nYFxuICogQHByb3BlcnR5IHRoZW1lIERlZmF1bHQ6IGAnZGFyaydgXG4gKiBAcHJvcGVydHkgaXNTaWRlUGFuZWxDbG9zZUJ1dHRvblZpc2libGUgRGVmYXVsdDogYHRydWVgXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBJTklUSUFMX1VJX1NUQVRFOiBVaVN0YXRlID0ge1xuICByZWFkT25seTogZmFsc2UsXG4gIGFjdGl2ZVNpZGVQYW5lbDogREVGQVVMVF9BQ1RJVkVfU0lERV9QQU5FTCxcbiAgY3VycmVudE1vZGFsOiBERUZBVUxUX01PREFMLFxuICBkYXRhc2V0S2V5VG9SZW1vdmU6IG51bGwsXG4gIHZpc2libGVEcm9wZG93bjogbnVsbCxcbiAgLy8gZXhwb3J0IGltYWdlIG1vZGFsIHVpXG4gIGV4cG9ydEltYWdlOiBERUZBVUxUX0VYUE9SVF9JTUFHRSxcbiAgLy8gZXhwb3J0IGRhdGEgbW9kYWwgdWlcbiAgZXhwb3J0RGF0YTogREVGQVVMVF9FWFBPUlRfREFUQSxcbiAgLy8gaHRtbCBleHBvcnRcbiAgZXhwb3J0TWFwOiBERUZBVUxUX0VYUE9SVF9NQVAsXG4gIC8vIGV4cG9ydCB2aWRlbyBtb2RhbCB1aVxuICBleHBvcnRWaWRlbzogREVGQVVMVF9FWFBPUlRfVklERU8sXG4gIC8vIG1hcCBjb250cm9sIHBhbmVsc1xuICBtYXBDb250cm9sczogREVGQVVMVF9NQVBfQ09OVFJPTFMsXG4gIC8vIHVpIG5vdGlmaWNhdGlvbnNcbiAgbm90aWZpY2F0aW9uczogREVGQVVMVF9OT1RJRklDQVRJT05TLFxuICAvLyBsb2FkIGZpbGVzXG4gIGxvYWRGaWxlczogREVGQVVMVF9MT0FEX0ZJTEVTLFxuICAvLyBMb2NhbGUgb2YgdGhlIFVJXG4gIGxvY2FsZTogTE9DQUxFX0NPREVTLmVuLFxuICAvLyBUaGVtZSBvZiB0aGUgVUkgKGBsaWdodGAgfCBgZGFya2AgfCBgc3BhY2VgKS4gRmlyc3Qgb2YgYHRoZW1lc2AgaXMgdGhlIGRlZmF1bHQgd2hlbiBzZXQuXG4gIHRoZW1lOiBUSEVNRS5kYXJrLFxuICBsYXllclBhbmVsTGlzdFZpZXc6ICdsaXN0JyxcbiAgZmlsdGVyUGFuZWxMaXN0VmlldzogJ2xpc3QnLFxuICBpc1NpZGVQYW5lbENsb3NlQnV0dG9uVmlzaWJsZTogdHJ1ZVxufTtcblxuLyogVXBkYXRlcnMgKi9cbi8qKlxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICovXG5leHBvcnQgY29uc3QgaW5pdFVpU3RhdGVVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAgYWN0aW9uOiB7XG4gICAgdHlwZT86ICh0eXBlb2YgQWN0aW9uVHlwZXMpWydJTklUJ107XG4gICAgcGF5bG9hZDogS2VwbGVyR2xJbml0UGF5bG9hZDtcbiAgfVxuKTogVWlTdGF0ZSA9PiB7XG4gIGNvbnN0IGluaXRpYWxVaVN0YXRlID0gKGFjdGlvbi5wYXlsb2FkIHx8IHt9KS5pbml0aWFsVWlTdGF0ZSB8fCB7fTtcbiAgY29uc3QgdGhlbWVzID0gZ2V0Q29uZmlndXJlZFRoZW1lcygpO1xuICBjb25zdCByZXF1ZXN0ZWQgPSBpbml0aWFsVWlTdGF0ZS50aGVtZSA/PyBzdGF0ZS50aGVtZTtcbiAgY29uc3QgdGhlbWUgPVxuICAgIHRoZW1lcy5sZW5ndGggPT09IDAgPyByZXF1ZXN0ZWQgOiB0aGVtZXMuaW5jbHVkZXMocmVxdWVzdGVkKSA/IHJlcXVlc3RlZCA6IGdldERlZmF1bHRVaVRoZW1lKCk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICAuLi5pbml0aWFsVWlTdGF0ZSxcbiAgICB0aGVtZVxuICB9O1xufTtcblxuLyoqXG4gKiBUb2dnbGUgYWN0aXZlIHNpZGUgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBpZCBvZiBzaWRlIHBhbmVsIHRvIGJlIHNob3duLCBvbmUgb2YgYGxheWVyYCwgYGZpbHRlcmAsIGBpbnRlcmFjdGlvbmAsIGBtYXBgLiBjbG9zZSBzaWRlIHBhbmVsIGlmIGBudWxsYFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVTaWRlUGFuZWxVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGlkfTogVUlTdGF0ZUFjdGlvbnMuVG9nZ2xlU2lkZVBhbmVsVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiB7XG4gIHJldHVybiBpZCA9PT0gc3RhdGUuYWN0aXZlU2lkZVBhbmVsXG4gICAgPyBzdGF0ZVxuICAgIDoge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgYWN0aXZlU2lkZVBhbmVsOiBpZFxuICAgICAgfTtcbn07XG5cbi8qKlxuICogU2hvdyBhbmQgaGlkZSBtb2RhbCBkaWFsb2dcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbWFjdGlvbi5wYXlsb2FkIGlkIG9mIG1vZGFsIHRvIGJlIHNob3duLCBudWxsIHRvIGhpZGUgbW9kYWxzLiBPbmUgb2Y6XG4gKiAgLSBbYERBVEFfVEFCTEVfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNkYXRhX3RhYmxlX2lkKVxuICogIC0gW2BERUxFVEVfREFUQV9JRGBdKC4uL2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzLm1kI2RlbGV0ZV9kYXRhX2lkKVxuICogIC0gW2BBRERfREFUQV9JRGBdKC4uL2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzLm1kI2FkZF9kYXRhX2lkKVxuICogIC0gW2BFWFBPUlRfSU1BR0VfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNleHBvcnRfaW1hZ2VfaWQpXG4gKiAgLSBbYEVYUE9SVF9EQVRBX0lEYF0oLi4vY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MubWQjZXhwb3J0X2RhdGFfaWQpXG4gKiAgLSBbYEFERF9NQVBfU1RZTEVfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNhZGRfbWFwX3N0eWxlX2lkKVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVNb2RhbFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogaWR9OiBVSVN0YXRlQWN0aW9ucy5Ub2dnbGVNb2RhbFVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGN1cnJlbnRNb2RhbDogaWRcbn0pO1xuXG4vKipcbiAqIEhpZGUgYW5kIHNob3cgc2lkZSBwYW5lbCBoZWFkZXIgZHJvcGRvd24sIGFjdGl2YXRlZCBieSBjbGlja2luZyB0aGUgc2hhcmUgbGluayBvbiB0b3Agb2YgdGhlIHNpZGUgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNob3dFeHBvcnREcm9wZG93blVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogaWR9OiBVSVN0YXRlQWN0aW9ucy5TaG93RXhwb3J0RHJvcGRvd25VcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICB2aXNpYmxlRHJvcGRvd246IGlkXG59KTtcblxuLyoqXG4gKiBIaWRlIHNpZGUgcGFuZWwgaGVhZGVyIGRyb3Bkb3duLCBhY3RpdmF0ZWQgYnkgY2xpY2tpbmcgdGhlIHNoYXJlIGxpbmsgb24gdG9wIG9mIHRoZSBzaWRlIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBoaWRlRXhwb3J0RHJvcGRvd25VcGRhdGVyID0gKHN0YXRlOiBVaVN0YXRlKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgdmlzaWJsZURyb3Bkb3duOiBudWxsXG59KTtcblxuLyoqXG4gKiBUb2dnbGUgc2lkZSBwYW5lbCBjbG9zZSBidXR0b24gb24gdG9wIGxlZnQgb2YgdGhlIHNpZGUgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVNpZGVQYW5lbENsb3NlQnV0dG9uVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7c2hvd319OiBVSVN0YXRlQWN0aW9ucy5Ub2dnbGVTaWRlUGFuZWxDbG9zZUJ1dHRvblVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGlzU2lkZVBhbmVsQ2xvc2VCdXR0b25WaXNpYmxlOiBzaG93XG59KTtcblxuLy8gTWFwIGNvbnRyb2wgZHJvcGRvd25zL21lbnVzIHRoYXQgb3ZlcmxhcCBlYWNoIG90aGVyIHZpc3VhbGx5IGFuZCB0aGVyZWZvcmVcbi8vIHNob3VsZCBiZSBtdXR1YWxseSBleGNsdXNpdmU6IG9wZW5pbmcgb25lIGNsb3NlcyBhbGwgdGhlIG90aGVycy5cbi8vIChzcGxpdC92aWV3LW1vZGUgbWVudSwgdG9wLzNkL2dsb2JlIG1lbnUsIHBvbHlnb24gZHJhdyB0b29sLCBsYW5ndWFnZSBtZW51KVxuZXhwb3J0IGNvbnN0IE1VVFVBTExZX0VYQ0xVU0lWRV9NQVBfQ09OVFJPTFM6IHN0cmluZ1tdID0gW1xuICBNQVBfQ09OVFJPTFMuc3BsaXRNYXAsXG4gIE1BUF9DT05UUk9MUy50b2dnbGUzZCxcbiAgTUFQX0NPTlRST0xTLm1hcERyYXcsXG4gIE1BUF9DT05UUk9MUy5tYXBMb2NhbGVcbl07XG5cbi8qKlxuICogVG9nZ2xlIGFjdGl2ZSBtYXAgY29udHJvbCBwYW5lbFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvbiBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBtYXAgY29udHJvbCBwYW5lbCBpZCwgb25lIG9mIHRoZSBrZXlzIG9mOiBbYERFRkFVTFRfTUFQX0NPTlRST0xTYF0oI2RlZmF1bHRfbWFwX2NvbnRyb2xzKVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVNYXBDb250cm9sVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7cGFuZWxJZCwgaW5kZXggPSAwfX06IFVJU3RhdGVBY3Rpb25zLlRvZ2dsZU1hcENvbnRyb2xVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgbGV0IHVwZGF0ZWRTdGF0ZSA9IHN0YXRlO1xuXG4gIC8vIFRoZSBvdmVybGFwcGluZyBtYXAgY29udHJvbCBtZW51cyBzaG91bGQgYmUgbXV0dWFsbHkgZXhjbHVzaXZlOiB3aGVuIG9uZSBvZlxuICAvLyB0aGVtIGlzIGJlaW5nIG9wZW5lZCwgZGVhY3RpdmF0ZSBldmVyeSBvdGhlciBvbmUgdGhhdCBpcyBjdXJyZW50bHkgYWN0aXZlXG4gIC8vIHNvIHRoZWlyIGRyb3Bkb3ducyBuZXZlciBvdmVybGFwIG9uIHNjcmVlbi5cbiAgY29uc3QgaXNPcGVuaW5nID0gIXVwZGF0ZWRTdGF0ZS5tYXBDb250cm9sc1twYW5lbElkXT8uYWN0aXZlO1xuICBpZiAoaXNPcGVuaW5nICYmIE1VVFVBTExZX0VYQ0xVU0lWRV9NQVBfQ09OVFJPTFMuaW5jbHVkZXMocGFuZWxJZCkpIHtcbiAgICBjb25zdCBuZXh0TWFwQ29udHJvbHMgPSB7Li4udXBkYXRlZFN0YXRlLm1hcENvbnRyb2xzfTtcbiAgICBsZXQgZGlkRGVhY3RpdmF0ZSA9IGZhbHNlO1xuICAgIE1VVFVBTExZX0VYQ0xVU0lWRV9NQVBfQ09OVFJPTFMuZm9yRWFjaChjb250cm9sSWQgPT4ge1xuICAgICAgaWYgKGNvbnRyb2xJZCAhPT0gcGFuZWxJZCAmJiBuZXh0TWFwQ29udHJvbHNbY29udHJvbElkXT8uYWN0aXZlKSB7XG4gICAgICAgIG5leHRNYXBDb250cm9sc1tjb250cm9sSWRdID0gey4uLm5leHRNYXBDb250cm9sc1tjb250cm9sSWRdLCBhY3RpdmU6IGZhbHNlfTtcbiAgICAgICAgZGlkRGVhY3RpdmF0ZSA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKGRpZERlYWN0aXZhdGUpIHtcbiAgICAgIHVwZGF0ZWRTdGF0ZSA9IHsuLi51cGRhdGVkU3RhdGUsIG1hcENvbnRyb2xzOiBuZXh0TWFwQ29udHJvbHN9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4udXBkYXRlZFN0YXRlLFxuICAgIG1hcENvbnRyb2xzOiB7XG4gICAgICAuLi51cGRhdGVkU3RhdGUubWFwQ29udHJvbHMsXG4gICAgICBbcGFuZWxJZF06IHtcbiAgICAgICAgLi4uKHVwZGF0ZWRTdGF0ZS5tYXBDb250cm9sc1twYW5lbElkXSBhcyBNYXBDb250cm9sSXRlbSksXG4gICAgICAgIGFjdGl2ZTogIXVwZGF0ZWRTdGF0ZS5tYXBDb250cm9sc1twYW5lbElkXT8uYWN0aXZlLFxuICAgICAgICBhY3RpdmVNYXBJbmRleDogaW5kZXhcbiAgICAgIH1cbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIFRvZ2dsZSBtYXAgY29udHJvbCB2aXNpYmlsaXR5XG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIG1hcCBjb250cm9sIHBhbmVsIGlkLCBvbmUgb2YgdGhlIGtleXMgb2Y6IFtgREVGQVVMVF9NQVBfQ09OVFJPTFNgXSgjZGVmYXVsdF9tYXBfY29udHJvbHMpXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldE1hcENvbnRyb2xWaXNpYmlsaXR5VXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7cGFuZWxJZCwgc2hvd319OiBVSVN0YXRlQWN0aW9ucy5zZXRNYXBDb250cm9sVmlzaWJpbGl0eVVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4ge1xuICBpZiAoIXN0YXRlLm1hcENvbnRyb2xzPy5bcGFuZWxJZF0pIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIG1hcENvbnRyb2xzOiB7XG4gICAgICAuLi5zdGF0ZS5tYXBDb250cm9scyxcbiAgICAgIFtwYW5lbElkXToge1xuICAgICAgICAuLi5zdGF0ZS5tYXBDb250cm9sc1twYW5lbElkXSxcbiAgICAgICAgc2hvdzogQm9vbGVhbihzaG93KVxuICAgICAgfVxuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogVG9nZ2xlIG1hcCBjb250cm9sIHNldHRpbmdzXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIG1hcCBjb250cm9sIHBhbmVsIGlkLCBvbmUgb2YgdGhlIGtleXMgb2Y6IFtgREVGQVVMVF9NQVBfQ09OVFJPTFNgXSgjZGVmYXVsdF9tYXBfY29udHJvbHMpXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldE1hcENvbnRyb2xTZXR0aW5nc1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDoge3BhbmVsSWQsIHNldHRpbmdzfX06IFVJU3RhdGVBY3Rpb25zLnNldE1hcENvbnRyb2xTZXR0aW5nc1VwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4ge1xuICBjb25zdCBtYXBDb250cm9sID0gc3RhdGUubWFwQ29udHJvbHM/LltwYW5lbElkXSBhcyBNYXBDb250cm9sTWFwTGVnZW5kIHwgdW5kZWZpbmVkO1xuICBpZiAoIW1hcENvbnRyb2wpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIG1hcENvbnRyb2xzOiB7XG4gICAgICAuLi5zdGF0ZS5tYXBDb250cm9scyxcbiAgICAgIFtwYW5lbElkXToge1xuICAgICAgICAuLi5tYXBDb250cm9sLFxuICAgICAgICBzZXR0aW5nczogey4uLm1hcENvbnRyb2wuc2V0dGluZ3MsIC4uLnNldHRpbmdzfVxuICAgICAgfSBhcyBNYXBDb250cm9sTWFwTGVnZW5kXG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBUb2dnbGUgYWN0aXZlIG1hcCBjb250cm9sIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgZGF0YXNldCBpZFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBvcGVuRGVsZXRlTW9kYWxVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGRhdGFzZXRLZXlUb1JlbW92ZX06IFVJU3RhdGVBY3Rpb25zLk9wZW5EZWxldGVNb2RhbFVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGN1cnJlbnRNb2RhbDogREVMRVRFX0RBVEFfSUQsXG4gIGRhdGFzZXRLZXlUb1JlbW92ZVxufSk7XG5cbi8qKlxuICogU2V0IGBleHBvcnRJbWFnZWAgb3B0aW9ucyBzdWNoIGFzIGBsZWdlbmRgIGFuZCBgY2hhcnRzYCB0byBgdHJ1ZWAgb3IgYGZhbHNlYFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRJbWFnZVNldHRpbmdVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IG5ld1NldHRpbmd9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRJbWFnZVNldHRpbmdVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgY29uc3QgdXBkYXRlZCA9IHsuLi5zdGF0ZS5leHBvcnRJbWFnZSwgLi4ubmV3U2V0dGluZ307XG4gIGNvbnN0IGltYWdlU2l6ZSA9IGNhbGN1bGF0ZUV4cG9ydEltYWdlU2l6ZSh1cGRhdGVkKSB8fCBzdGF0ZS5leHBvcnRJbWFnZS5pbWFnZVNpemU7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBleHBvcnRJbWFnZToge1xuICAgICAgLi4udXBkYXRlZCxcbiAgICAgIGltYWdlU2l6ZVxuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogU2V0IGBleHBvcnRJbWFnZS5zZXRFeHBvcnRJbWFnZURhdGFVcmlgIHRvIGEgaW1hZ2UgZGF0YVVyaVxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIGV4cG9ydCBpbWFnZSBkYXRhIHVyaVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRJbWFnZURhdGFVcmlVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGRhdGFVcml9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRJbWFnZURhdGFVcmlVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgaWYgKGRhdGFVcmkgPT09IHN0YXRlLmV4cG9ydEltYWdlLmltYWdlRGF0YVVyaSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGV4cG9ydEltYWdlOiB7XG4gICAgICAuLi5zdGF0ZS5leHBvcnRJbWFnZSxcbiAgICAgIHByb2Nlc3Npbmc6IGZhbHNlLFxuICAgICAgaW1hZ2VEYXRhVXJpOiBkYXRhVXJpXG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRJbWFnZUVycm9yVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBlcnJvcn06IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydEltYWdlRXJyb3JVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnRJbWFnZToge1xuICAgIC4uLnN0YXRlLmV4cG9ydEltYWdlLFxuICAgIHByb2Nlc3Npbmc6IGZhbHNlLFxuICAgIGVycm9yXG4gIH1cbn0pO1xuXG4vKipcbiAqIERlbGV0ZSBjYWNoZWQgZXhwb3J0IGltYWdlXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBjbGVhbnVwRXhwb3J0SW1hZ2VVcGRhdGVyID0gKHN0YXRlOiBVaVN0YXRlKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0SW1hZ2U6IHtcbiAgICAuLi5zdGF0ZS5leHBvcnRJbWFnZSxcbiAgICBleHBvcnRpbmc6IGZhbHNlLFxuICAgIGltYWdlRGF0YVVyaTogJycsXG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIHByb2Nlc3Npbmc6IGZhbHNlLFxuICAgIGNlbnRlcjogZmFsc2VcbiAgfVxufSk7XG5cbi8qKlxuICogU2V0IGBleHBvcnRWaWRlb2Agc2V0dGluZ3M6IG1lZGlhVHlwZSwgY2FtZXJhUHJlc2V0LCBmaWxlTmFtZSwgcmVzb2x1dGlvbiwgZHVyYXRpb25Nc1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIG5ldyB2aWRlbyBleHBvcnQgc2V0dGluZ3NcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0VmlkZW9TZXR0aW5nVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBuZXdTZXR0aW5nfTogVUlTdGF0ZUFjdGlvbnMuU2V0RXhwb3J0VmlkZW9TZXR0aW5nVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0VmlkZW86IHtcbiAgICAuLi5zdGF0ZS5leHBvcnRWaWRlbyxcbiAgICAuLi5uZXdTZXR0aW5nXG4gIH1cbn0pO1xuXG4vKipcbiAqIFN0YXJ0IGltYWdlIGV4cG9ydGluZyBmbG93XG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGVcbiAqIEBwYXJhbSBvcHRpb25zXG4gKiBAcmV0dXJucyB7VWlTdGF0ZX1cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHN0YXJ0RXhwb3J0aW5nSW1hZ2VVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IG9wdGlvbnMgPSB7fX06IHtwYXlsb2FkOiBQYXJ0aWFsPEV4cG9ydEltYWdlPn1cbik6IFVpU3RhdGUgPT4ge1xuICBjb25zdCBpbWFnZVNldHRpbmdzID0ge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgZXhwb3J0aW5nOiB0cnVlXG4gIH07XG5cbiAgcmV0dXJuIGNvbXBvc2VfKFtcbiAgICBjbGVhbnVwRXhwb3J0SW1hZ2VVcGRhdGVyLFxuICAgIGFwcGx5XyhzZXRFeHBvcnRJbWFnZVNldHRpbmdVcGRhdGVyLCBwYXlsb2FkXyhpbWFnZVNldHRpbmdzKSlcbiAgXSkoc3RhdGUpO1xufTtcblxuLyoqXG4gKiBTZXQgc2VsZWN0ZWQgZGF0YXNldCBmb3IgZXhwb3J0XG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgZGF0YXNldCBpZFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRTZWxlY3RlZERhdGFzZXRVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGRhdGFzZXR9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRTZWxlY3RlZERhdGFzZXRVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnREYXRhOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0RGF0YSxcbiAgICBzZWxlY3RlZERhdGFzZXQ6IGRhdGFzZXRcbiAgfVxufSk7XG5cbi8qKlxuICogU2V0IGRhdGEgZm9ybWF0IGZvciBleHBvcnRpbmcgZGF0YVxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIG9uZSBvZiBgJ3RleHQvY3N2J2BcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0RGF0YVR5cGVVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGRhdGFUeXBlfTogVUlTdGF0ZUFjdGlvbnMuU2V0RXhwb3J0RGF0YVR5cGVVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnREYXRhOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0RGF0YSxcbiAgICBkYXRhVHlwZVxuICB9XG59KTtcblxuLyoqXG4gKiBXaGV0aGVyIHRvIGV4cG9ydCBmaWx0ZXJlZCBkYXRhLCBgdHJ1ZWAgb3IgYGZhbHNlYFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydEZpbHRlcmVkVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBmaWx0ZXJlZH06IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydEZpbHRlcmVkVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0RGF0YToge1xuICAgIC4uLnN0YXRlLmV4cG9ydERhdGEsXG4gICAgZmlsdGVyZWRcbiAgfVxufSk7XG5cbi8qKlxuICogV2hldGhlciB0byBpbmNsdWRpbmcgZGF0YSBpbiBtYXAgY29uZmlnLCB0b2dnbGUgYmV0d2VlbiBgdHJ1ZWAgb3IgYGZhbHNlYFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnREYXRhVXBkYXRlciA9IChzdGF0ZTogVWlTdGF0ZSk6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydE1hcDoge1xuICAgIC4uLnN0YXRlLmV4cG9ydE1hcCxcbiAgICBbRVhQT1JUX01BUF9GT1JNQVRTLkpTT05dOiB7XG4gICAgICAuLi5zdGF0ZS5leHBvcnRNYXBbRVhQT1JUX01BUF9GT1JNQVRTLkpTT05dLFxuICAgICAgaGFzRGF0YTogIXN0YXRlLmV4cG9ydE1hcFtFWFBPUlRfTUFQX0ZPUk1BVFMuSlNPTl0uaGFzRGF0YVxuICAgIH1cbiAgfVxufSk7XG5cbi8qKlxuICogd2hldGhlciB0byBleHBvcnQgYSBtYXBib3ggYWNjZXNzIHRvIEhUTUwgc2luZ2xlIHBhZ2VcbiAqIEBwYXJhbSBzdGF0ZSAtIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldFVzZXJNYXBib3hBY2Nlc3NUb2tlblVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogdXNlck1hcGJveFRva2VufTogVUlTdGF0ZUFjdGlvbnMuU2V0VXNlck1hcGJveEFjY2Vzc1Rva2VuVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0TWFwOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0TWFwLFxuICAgIFtFWFBPUlRfTUFQX0ZPUk1BVFMuSFRNTF06IHtcbiAgICAgIC4uLnN0YXRlLmV4cG9ydE1hcFtFWFBPUlRfTUFQX0ZPUk1BVFMuSFRNTF0sXG4gICAgICB1c2VyTWFwYm94VG9rZW5cbiAgICB9XG4gIH1cbn0pO1xuXG4vKipcbiAqIFNldHMgdGhlIGV4cG9ydCBtYXAgZm9ybWF0XG4gKiBAcGFyYW0gc3RhdGUgLSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBmb3JtYXQgdG8gdXNlIHRvIGV4cG9ydCB0aGUgbWFwIGludG9cbiAqIEByZXR1cm4gbmV4dFN0YXRlXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRNYXBGb3JtYXRVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGZvcm1hdH06IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydE1hcEZvcm1hdFVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydE1hcDoge1xuICAgIC4uLnN0YXRlLmV4cG9ydE1hcCxcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgZm9ybWF0XG4gIH1cbn0pO1xuXG4vKipcbiAqIFNldCB0aGUgZmlsZW5hbWUgdXNlZCB3aGVuIGV4cG9ydGluZyBhbiBIVE1MIG9yIEpTT04gbWFwXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgZmlsZSBuYW1lIHdpdGhvdXQgZXh0ZW5zaW9uXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydE1hcEZpbGVOYW1lVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBmaWxlTmFtZX06IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydE1hcEZpbGVOYW1lVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0TWFwOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0TWFwLFxuICAgIGZpbGVOYW1lXG4gIH1cbn0pO1xuXG4vKipcbiAqIFNldCB0aGUgZXhwb3J0IGh0bWwgbWFwIG1vZGVcbiAqIEBwYXJhbSBzdGF0ZSAtIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIHRvIGJlIHNldCAoYXZhaWxhYmxlIG1vZGVzOiBFWFBPUlRfSFRNTF9NQVBfTU9ERVMpXG4gKiBAcmV0dXJuIG5leHRTdGF0ZVxuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0TWFwSFRNTE1vZGVVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IG1vZGV9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRIVE1MTWFwTW9kZVVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydE1hcDoge1xuICAgIC4uLnN0YXRlLmV4cG9ydE1hcCxcbiAgICBbRVhQT1JUX01BUF9GT1JNQVRTLkhUTUxdOiB7XG4gICAgICAuLi5zdGF0ZS5leHBvcnRNYXBbRVhQT1JUX01BUF9GT1JNQVRTLkhUTUxdLFxuICAgICAgbW9kZVxuICAgIH1cbiAgfVxufSk7XG5cbi8qKlxuICogQWRkcyBhIG5ldyBub3RpZmljYXRpb24uXG4gKiBVcGRhdGVzIGEgbm90aWZpY2F0aW9uIGluIGNhc2Ugb2YgbWF0Y2hpbmcgaWRzLlxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIFBhcmFtcyBvZiBhIG5vdGlmaWNhdGlvblxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBhZGROb3RpZmljYXRpb25VcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWR9OiBVSVN0YXRlQWN0aW9ucy5BZGROb3RpZmljYXRpb25VcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgY29uc3Qgb2xkTm90aWZpY2F0aW9ucyA9IHN0YXRlLm5vdGlmaWNhdGlvbnMgfHwgW107XG4gIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgY29uc3QgcGF5bG9hZElkID0gcGF5bG9hZD8uaWQ7XG4gIGNvbnN0IG5vdGlmaWNhdGlvblRvVXBkYXRlID0gcGF5bG9hZElkID8gb2xkTm90aWZpY2F0aW9ucy5maW5kKG4gPT4gbi5pZCA9PT0gcGF5bG9hZElkKSA6IG51bGw7XG5cbiAgbGV0IG5vdGlmaWNhdGlvbnM7XG4gIGlmIChub3RpZmljYXRpb25Ub1VwZGF0ZSkge1xuICAgIG5vdGlmaWNhdGlvbnMgPSBvbGROb3RpZmljYXRpb25zLm1hcChuID0+XG4gICAgICBuLmlkID09PSBwYXlsb2FkSWQgPyBjcmVhdGVOb3RpZmljYXRpb24oey4uLnBheWxvYWQsIGNvdW50OiBuLmNvdW50ICsgMX0pIDogblxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgbm90aWZpY2F0aW9ucyA9IFsuLi5vbGROb3RpZmljYXRpb25zLCBjcmVhdGVOb3RpZmljYXRpb24ocGF5bG9hZCldO1xuICB9XG5cbiAgcmV0dXJuIHsuLi5zdGF0ZSwgbm90aWZpY2F0aW9uc307XG59O1xuXG4vKipcbiAqIFJlbW92ZSBhIG5vdGlmaWNhdGlvblxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIGlkIG9mIHRoZSBub3RpZmljYXRpb24gdG8gYmUgcmVtb3ZlZFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCByZW1vdmVOb3RpZmljYXRpb25VcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGlkfTogVUlTdGF0ZUFjdGlvbnMuUmVtb3ZlTm90aWZpY2F0aW9uVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgbm90aWZpY2F0aW9uczogc3RhdGUubm90aWZpY2F0aW9ucy5maWx0ZXIobiA9PiBuLmlkICE9PSBpZClcbn0pO1xuXG4vKipcbiAqIEZpcmVkIHdoZW4gZmlsZSBsb2FkaW5nIGJlZ2luXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWRGaWxlc1VwZGF0ZXIgPSAoc3RhdGU6IFVpU3RhdGUpOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBsb2FkRmlsZXM6IHtcbiAgICAuLi5zdGF0ZS5sb2FkRmlsZXMsXG4gICAgZmlsZUxvYWRpbmc6IHRydWVcbiAgfVxufSk7XG5cbi8qKlxuICogSGFuZGxlcyBsb2FkaW5nIGZpbGUgc3VjY2VzcyBhbmQgc2V0IGZpbGVMb2FkaW5nIHByb3BlcnR5IHRvIGZhbHNlXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWRGaWxlc1N1Y2Nlc3NVcGRhdGVyID0gKHN0YXRlOiBVaVN0YXRlKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgbG9hZEZpbGVzOiB7XG4gICAgLi4uc3RhdGUubG9hZEZpbGVzLFxuICAgIGZpbGVMb2FkaW5nOiBmYWxzZVxuICB9XG59KTtcblxuLyoqXG4gKiBIYW5kbGVzIGxvYWQgZmlsZSBlcnJvciBhbmQgc2V0IGZpbGVMb2FkaW5nIHByb3BlcnR5IHRvIGZhbHNlXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGVcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24uZXJyb3JcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgbG9hZEZpbGVzRXJyVXBkYXRlciA9IChzdGF0ZTogVWlTdGF0ZSwge2Vycm9yfTogTG9hZEZpbGVzRXJyVXBkYXRlckFjdGlvbik6IFVpU3RhdGUgPT5cbiAgYWRkTm90aWZpY2F0aW9uVXBkYXRlcihcbiAgICB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGxvYWRGaWxlczoge1xuICAgICAgICAuLi5zdGF0ZS5sb2FkRmlsZXMsXG4gICAgICAgIGZpbGVMb2FkaW5nOiBmYWxzZVxuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgcGF5bG9hZDogZXJyb3JOb3RpZmljYXRpb24oe1xuICAgICAgICBtZXNzYWdlOiAoZXJyb3IgfHwge30pLm1lc3NhZ2UgfHwgJ0ZhaWxlZCB0byB1cGxvYWQgZmlsZXMnLFxuICAgICAgICB0b3BpYzogREVGQVVMVF9OT1RJRklDQVRJT05fVE9QSUNTLmdsb2JhbFxuICAgICAgfSlcbiAgICB9XG4gICk7XG5cbi8qKlxuICogSGFuZGxlcyB0b2dnbGUgbWFwIHNwbGl0IGFuZCByZXNldCBhbGwgbWFwIGNvbnRyb2wgaW5kZXggdG8gMFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVNwbGl0TWFwVXBkYXRlciA9IChzdGF0ZTogVWlTdGF0ZSk6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIG1hcENvbnRyb2xzOiBPYmplY3QuZW50cmllcyhzdGF0ZS5tYXBDb250cm9scykucmVkdWNlKFxuICAgIChhY2MsIGVudHJ5KSA9PiAoe1xuICAgICAgLi4uYWNjLFxuICAgICAgW2VudHJ5WzBdXToge1xuICAgICAgICAuLi4oZW50cnlbMV0gYXMgTWFwQ29udHJvbEl0ZW0pLFxuICAgICAgICBhY3RpdmVNYXBJbmRleDogMFxuICAgICAgfVxuICAgIH0pLFxuICAgIHt9IGFzIE1hcENvbnRyb2xzXG4gIClcbn0pO1xuXG4vKipcbiAqIFRvZ2dsZSBtb2RhbCBkYXRhXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGVcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2hvd0RhdGFzZXRUYWJsZVVwZGF0ZXIgPSAoc3RhdGU6IFVpU3RhdGUpOiBVaVN0YXRlID0+XG4gIHRvZ2dsZU1vZGFsVXBkYXRlcihzdGF0ZSwge3BheWxvYWQ6IERBVEFfVEFCTEVfSUR9KTtcblxuLyoqXG4gKiBTZXQgdGhlIGxvY2FsZSBvZiB0aGUgVUlcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZFxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkLmxvY2FsZSBsb2NhbGVcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0TG9jYWxlVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7bG9jYWxlfX06IFVJU3RhdGVBY3Rpb25zLlNldExvY2FsZVVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGxvY2FsZVxufSk7XG5cbi8qKlxuICogU2V0IHRoZSB0aGVtZSBvZiB0aGUgVUlcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZFxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkLnRoZW1lIHRoZW1lXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldFRoZW1lVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7dGhlbWV9fTogVUlTdGF0ZUFjdGlvbnMuU2V0VGhlbWVVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICB0aGVtZVxufSk7XG5cbi8qKlxuICogVG9nZ2xlIGxheWVyIHBhbmVsIGxpc3Qgdmlld1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIGxheWVyIHBhbmVsIGxpc3RWaWV3IHZhbHVlLiBDYW4gYmUgJ2xpc3QnIG9yICdzb3J0QnlEYXRhc2V0J1xuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVQYW5lbExpc3RWaWV3VXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7cGFuZWxJZCwgbGlzdFZpZXd9fTogVUlTdGF0ZUFjdGlvbnMuVG9nZ2xlUGFuZWxMaXN0Vmlld0FjdGlvblxuKTogVWlTdGF0ZSA9PiB7XG4gIGNvbnN0IHN0YXRlUHJvcCA9XG4gICAgcGFuZWxJZCA9PT0gJ2xheWVyJ1xuICAgICAgPyAnbGF5ZXJQYW5lbExpc3RWaWV3J1xuICAgICAgOiBwYW5lbElkID09PSAnZmlsdGVyJ1xuICAgICAgPyAnZmlsdGVyUGFuZWxMaXN0VmlldydcbiAgICAgIDogbnVsbDtcbiAgaWYgKCFzdGF0ZVByb3AgfHwgc3RhdGVbc3RhdGVQcm9wXSA9PT0gbGlzdFZpZXcpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBbc3RhdGVQcm9wXTogbGlzdFZpZXdcbiAgfTtcbn07XG5cbi8qKlxuICogTWVyZ2UgcmVjZWl2ZWQgdWkgc3RhdGUgY29uZmlnIHdoZW4gbG9hZGluZyBhIHNhdmVkIG1hcFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIHNhdmVkIG1hcCBjb25maWcgYHttYXBTdHlsZSwgdmlzU3RhdGUsIG1hcFN0YXRlLCB1aVN0YXRlfWBcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7XG4gICAgcGF5bG9hZDoge2NvbmZpZ31cbiAgfToge1xuICAgIHR5cGU/OiAodHlwZW9mIEFjdGlvblR5cGVzKVsnUkVDRUlWRV9NQVBfQ09ORklHJ107XG4gICAgcGF5bG9hZDogUmVjZWl2ZU1hcENvbmZpZ1BheWxvYWQ7XG4gIH1cbik6IFVpU3RhdGUgPT4ge1xuICBjb25zdCB7dWlTdGF0ZX0gPSBjb25maWcgfHwge307XG4gIGlmICghdWlTdGF0ZSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIGxldCBuZXdTdGF0ZSA9IHN0YXRlO1xuXG4gIGlmICh1aVN0YXRlLm1hcENvbnRyb2xzPy5tYXBMZWdlbmQ/LmFjdGl2ZSkge1xuICAgIGNvbnN0IGN1cnJlbnRMZWdlbmQgPSBuZXdTdGF0ZS5tYXBDb250cm9scy5tYXBMZWdlbmQ7XG4gICAgbmV3U3RhdGUgPSB7XG4gICAgICAuLi5uZXdTdGF0ZSxcbiAgICAgIG1hcENvbnRyb2xzOiB7XG4gICAgICAgIC4uLm5ld1N0YXRlLm1hcENvbnRyb2xzLFxuICAgICAgICBtYXBMZWdlbmQ6IHtcbiAgICAgICAgICBzaG93OiB0cnVlLFxuICAgICAgICAgIC4uLmN1cnJlbnRMZWdlbmQsXG4gICAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICAgIGFjdGl2ZU1hcEluZGV4OiAwXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgaWYgKHVpU3RhdGUubWFwQ29udHJvbHM/LmNoYXJ0Py5hY3RpdmUpIHtcbiAgICBjb25zdCBjdXJyZW50Q2hhcnQgPSBuZXdTdGF0ZS5tYXBDb250cm9scy5jaGFydDtcbiAgICBuZXdTdGF0ZSA9IHtcbiAgICAgIC4uLm5ld1N0YXRlLFxuICAgICAgbWFwQ29udHJvbHM6IHtcbiAgICAgICAgLi4ubmV3U3RhdGUubWFwQ29udHJvbHMsXG4gICAgICAgIGNoYXJ0OiB7XG4gICAgICAgICAgc2hvdzogdHJ1ZSxcbiAgICAgICAgICAuLi5jdXJyZW50Q2hhcnQsXG4gICAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICAgIGFjdGl2ZU1hcEluZGV4OiAwXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgaWYgKHVpU3RhdGUubWFwQ29udHJvbHM/Lm1hcExlZ2VuZD8uc2V0dGluZ3MpIHtcbiAgICBuZXdTdGF0ZSA9IHNldE1hcENvbnRyb2xTZXR0aW5nc1VwZGF0ZXIobmV3U3RhdGUsIHtcbiAgICAgIHBheWxvYWQ6IHtwYW5lbElkOiAnbWFwTGVnZW5kJywgc2V0dGluZ3M6IHVpU3RhdGUubWFwQ29udHJvbHMubWFwTGVnZW5kLnNldHRpbmdzfVxuICAgIH0gYXMgVUlTdGF0ZUFjdGlvbnMuc2V0TWFwQ29udHJvbFNldHRpbmdzVXBkYXRlckFjdGlvbik7XG4gIH1cblxuICBpZiAodWlTdGF0ZS5sb2NhbGUpIHtcbiAgICBuZXdTdGF0ZSA9IHNldExvY2FsZVVwZGF0ZXIobmV3U3RhdGUsIHtcbiAgICAgIHBheWxvYWQ6IHtsb2NhbGU6IHVpU3RhdGUubG9jYWxlfVxuICAgIH0gYXMgVUlTdGF0ZUFjdGlvbnMuU2V0TG9jYWxlVXBkYXRlckFjdGlvbik7XG4gIH1cblxuICBpZiAodWlTdGF0ZS50aGVtZSkge1xuICAgIG5ld1N0YXRlID0gc2V0VGhlbWVVcGRhdGVyKG5ld1N0YXRlLCB7XG4gICAgICBwYXlsb2FkOiB7dGhlbWU6IHVpU3RhdGUudGhlbWV9XG4gICAgfSBhcyBVSVN0YXRlQWN0aW9ucy5TZXRUaGVtZVVwZGF0ZXJBY3Rpb24pO1xuICB9XG5cbiAgcmV0dXJuIG5ld1N0YXRlO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7O0FBRUEsU0FDRUEsV0FBVyxFQUNYQyxhQUFhLEVBQ2JDLDJCQUEyQixFQUMzQkMsY0FBYyxFQUNkQyxnQkFBZ0IsRUFDaEJDLHFCQUFxQixFQUNyQkMsaUJBQWlCLEVBQ2pCQyxrQkFBa0IsRUFDbEJDLFdBQVcsRUFDWEMsWUFBWSxFQUNaQyxLQUFLLFFBQ0Esc0JBQXNCO0FBQzdCLFNBQVFDLFlBQVksUUFBTyx5QkFBeUI7QUFDcEQsU0FDRUMsa0JBQWtCLEVBQ2xCQyxpQkFBaUIsRUFDakJDLHdCQUF3QixFQUN4QkMsb0JBQW9CLEVBQ3BCQyxt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VUFDWkUsY0FBYyxFQUFFO1FBQUM7TUFDbEI7SUFDRixFQUNGO0VBQ0g7RUFFQSxLQUFBMk0scUJBQUEsR0FBSUksT0FBTyxDQUFDM0ksV0FBVyxjQUFBdUkscUJBQUEsZ0JBQUFBLHFCQUFBLEdBQW5CQSxxQkFBQSxDQUFxQk8sS0FBSyxjQUFBUCxxQkFBQSxlQUExQkEscUJBQUEsQ0FBNEI3TSxNQUFNLEVBQUU7SUFDdEMsSUFBTXFOLFlBQVksR0FBR0gsUUFBUSxDQUFDNUksV0FBVyxDQUFDOEksS0FBSztJQUMvQ0YsUUFBUSxHQUFBOU0sYUFBQSxDQUFBQSxhQUFBLEtBQ0g4TSxRQUFRO01BQ1g1SSxXQUFXLEVBQUFsRSxhQUFBLENBQUFBLGFBQUEsS0FDTjhNLFFBQVEsQ0FBQzVJLFdBQVc7UUFDdkI4SSxLQUFLLEVBQUFoTixhQUFBLENBQUFBLGFBQUE7VUFDSEwsSUFBSSxFQUFFO1FBQUksR0FDUHNOLFlBQVk7VUFDZnJOLE1BQU0sRUFBRSxJQUFJO1VBQ1pFLGNBQWMsRUFBRTtRQUFDO01BQ2xCO0lBQ0YsRUFDRjtFQUNIO0VBRUEsS0FBQTRNLHFCQUFBLEdBQUlHLE9BQU8sQ0FBQzNJLFdBQVcsY0FBQXdJLHFCQUFBLGdCQUFBQSxxQkFBQSxHQUFuQkEscUJBQUEsQ0FBcUJqTSxTQUFTLGNBQUFpTSxxQkFBQSxlQUE5QkEscUJBQUEsQ0FBZ0M3RSxRQUFRLEVBQUU7SUFDNUNpRixRQUFRLEdBQUdyRiw0QkFBNEIsQ0FBQ3FGLFFBQVEsRUFBRTtNQUNoRDdILE9BQU8sRUFBRTtRQUFDeUIsT0FBTyxFQUFFLFdBQVc7UUFBRW1CLFFBQVEsRUFBRWdGLE9BQU8sQ0FBQzNJLFdBQVcsQ0FBQ3pELFNBQVMsQ0FBQ29IO01BQVE7SUFDbEYsQ0FBc0QsQ0FBQztFQUN6RDtFQUVBLElBQUlnRixPQUFPLENBQUN4SSxNQUFNLEVBQUU7SUFDbEJ5SSxRQUFRLEdBQUdqQixnQkFBZ0IsQ0FBQ2lCLFFBQVEsRUFBRTtNQUNwQzdILE9BQU8sRUFBRTtRQUFDWixNQUFNLEVBQUV3SSxPQUFPLENBQUN4STtNQUFNO0lBQ2xDLENBQTBDLENBQUM7RUFDN0M7RUFFQSxJQUFJd0ksT0FBTyxDQUFDdEksS0FBSyxFQUFFO0lBQ2pCdUksUUFBUSxHQUFHZixlQUFlLENBQUNlLFFBQVEsRUFBRTtNQUNuQzdILE9BQU8sRUFBRTtRQUFDVixLQUFLLEVBQUVzSSxPQUFPLENBQUN0STtNQUFLO0lBQ2hDLENBQXlDLENBQUM7RUFDNUM7RUFFQSxPQUFPdUksUUFBUTtBQUNqQixDQUFDIiwiaWdub3JlTGlzdCI6W119
|
|
1000
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBRERfREFUQV9JRCIsIkRBVEFfVEFCTEVfSUQiLCJERUZBVUxUX05PVElGSUNBVElPTl9UT1BJQ1MiLCJERUxFVEVfREFUQV9JRCIsIkVYUE9SVF9EQVRBX1RZUEUiLCJFWFBPUlRfSFRNTF9NQVBfTU9ERVMiLCJFWFBPUlRfSU1HX1JBVElPUyIsIkVYUE9SVF9NQVBfRk9STUFUUyIsIlJFU09MVVRJT05TIiwiTUFQX0NPTlRST0xTIiwiVEhFTUUiLCJMT0NBTEVfQ09ERVMiLCJjcmVhdGVOb3RpZmljYXRpb24iLCJlcnJvck5vdGlmaWNhdGlvbiIsImNhbGN1bGF0ZUV4cG9ydEltYWdlU2l6ZSIsImdldEFwcGxpY2F0aW9uQ29uZmlnIiwiZ2V0Q29uZmlndXJlZFRoZW1lcyIsImdldERlZmF1bHRVaVRoZW1lIiwicGF5bG9hZF8iLCJhcHBseV8iLCJjb21wb3NlXyIsIkRFRkFVTFRfQUNUSVZFX1NJREVfUEFORUwiLCJERUZBVUxUX01PREFMIiwidWlTdGF0ZVVwZGF0ZXJzIiwiREVGQVVMVF9NQVBfQ09OVFJPTFNfRkVBVFVSRVMiLCJzaG93IiwiYWN0aXZlIiwiZGlzYWJsZUNsb3NlIiwiYWN0aXZlTWFwSW5kZXgiLCJERUZBVUxUX01BUF9MRUdFTkRfQ09OVFJPTCIsIl9vYmplY3RTcHJlYWQiLCJkaXNhYmxlRWRpdCIsIkRFRkFVTFRfTUFQX0NPTlRST0xTIiwiT2JqZWN0Iiwia2V5cyIsInJlZHVjZSIsImZpbmFsIiwiY3VycmVudCIsIl9kZWZpbmVQcm9wZXJ0eSIsIm1hcExlZ2VuZCIsIkRFRkFVTFRfRVhQT1JUX0lNQUdFIiwicmF0aW8iLCJTQ1JFRU4iLCJyZXNvbHV0aW9uIiwiT05FX1giLCJsZWdlbmQiLCJjaGFydHMiLCJtYXBIIiwibWFwVyIsImltYWdlU2l6ZSIsInpvb21PZmZzZXQiLCJzY2FsZSIsImltYWdlVyIsImltYWdlSCIsImNlbnRlciIsImltYWdlRGF0YVVyaSIsImV4cG9ydGluZyIsInByb2Nlc3NpbmciLCJlcnJvciIsImVzY2FwZVhodG1sRm9yV2VicGFjayIsImZpbGVOYW1lIiwiREVGQVVMVF9MT0FEX0ZJTEVTIiwiZmlsZUxvYWRpbmciLCJERUZBVUxUX0VYUE9SVF9EQVRBIiwic2VsZWN0ZWREYXRhc2V0IiwiZGF0YVR5cGUiLCJDU1YiLCJmaWx0ZXJlZCIsIkRFRkFVTFRfTk9USUZJQ0FUSU9OUyIsIkRFRkFVTFRfRVhQT1JUX0hUTUwiLCJleHBvcnRNYXBib3hBY2Nlc3NUb2tlbiIsInVzZXJNYXBib3hUb2tlbiIsIm1vZGUiLCJSRUFEIiwiREVGQVVMVF9FWFBPUlRfSlNPTiIsImhhc0RhdGEiLCJERUZBVUxUX0VYUE9SVF9NQVAiLCJIVE1MIiwiSlNPTiIsIkRFRkFVTFRfRVhQT1JUX1ZJREVPIiwibWVkaWFUeXBlIiwiY2FtZXJhUHJlc2V0IiwiZHVyYXRpb25NcyIsInN3aXBlU3RhcnRQY3QiLCJzd2lwZUVuZFBjdCIsInN3aXBlRWFzaW5nIiwiSU5JVElBTF9VSV9TVEFURSIsInJlYWRPbmx5IiwiYWN0aXZlU2lkZVBhbmVsIiwiY3VycmVudE1vZGFsIiwiZGF0YXNldEtleVRvUmVtb3ZlIiwiZGF0YXNldFRvUmVwbGFjZUlkIiwidmlzaWJsZURyb3Bkb3duIiwiZXhwb3J0SW1hZ2UiLCJleHBvcnREYXRhIiwiZXhwb3J0TWFwIiwiZXhwb3J0VmlkZW8iLCJtYXBDb250cm9scyIsIm5vdGlmaWNhdGlvbnMiLCJsb2FkRmlsZXMiLCJsb2NhbGUiLCJlbiIsInRoZW1lIiwiZGFyayIsImxheWVyUGFuZWxMaXN0VmlldyIsImZpbHRlclBhbmVsTGlzdFZpZXciLCJpc1NpZGVQYW5lbENsb3NlQnV0dG9uVmlzaWJsZSIsImluaXRVaVN0YXRlVXBkYXRlciIsInN0YXRlIiwiYWN0aW9uIiwiX2luaXRpYWxVaVN0YXRlJHRoZW1lIiwiaW5pdGlhbFVpU3RhdGUiLCJwYXlsb2FkIiwidGhlbWVzIiwicmVxdWVzdGVkIiwibGVuZ3RoIiwiaW5jbHVkZXMiLCJ0b2dnbGVTaWRlUGFuZWxVcGRhdGVyIiwiX3JlZiIsImlkIiwidG9nZ2xlTW9kYWxVcGRhdGVyIiwiX3JlZjIiLCJzaG93RXhwb3J0RHJvcGRvd25VcGRhdGVyIiwiX3JlZjMiLCJoaWRlRXhwb3J0RHJvcGRvd25VcGRhdGVyIiwidG9nZ2xlU2lkZVBhbmVsQ2xvc2VCdXR0b25VcGRhdGVyIiwiX3JlZjQiLCJNVVRVQUxMWV9FWENMVVNJVkVfTUFQX0NPTlRST0xTIiwic3BsaXRNYXAiLCJ0b2dnbGUzZCIsIm1hcERyYXciLCJtYXBMb2NhbGUiLCJ0b2dnbGVNYXBDb250cm9sVXBkYXRlciIsIl9yZWY1IiwiX3VwZGF0ZWRTdGF0ZSRtYXBDb250IiwiX3VwZGF0ZWRTdGF0ZSRtYXBDb250MiIsIl9yZWY1JHBheWxvYWQiLCJwYW5lbElkIiwiX3JlZjUkcGF5bG9hZCRpbmRleCIsImluZGV4IiwidXBkYXRlZFN0YXRlIiwiaXNPcGVuaW5nIiwibmV4dE1hcENvbnRyb2xzIiwiZGlkRGVhY3RpdmF0ZSIsImZvckVhY2giLCJjb250cm9sSWQiLCJfbmV4dE1hcENvbnRyb2xzJGNvbnQiLCJzZXRNYXBDb250cm9sVmlzaWJpbGl0eVVwZGF0ZXIiLCJfcmVmNiIsIl9zdGF0ZSRtYXBDb250cm9scyIsIl9yZWY2JHBheWxvYWQiLCJCb29sZWFuIiwic2V0TWFwQ29udHJvbFNldHRpbmdzVXBkYXRlciIsIl9yZWY3IiwiX3N0YXRlJG1hcENvbnRyb2xzMiIsIl9yZWY3JHBheWxvYWQiLCJzZXR0aW5ncyIsIm1hcENvbnRyb2wiLCJvcGVuRGVsZXRlTW9kYWxVcGRhdGVyIiwiX3JlZjgiLCJvcGVuUmVwbGFjZURhdGFzZXRNb2RhbFVwZGF0ZXIiLCJfcmVmOSIsInNldEV4cG9ydEltYWdlU2V0dGluZ1VwZGF0ZXIiLCJfcmVmMCIsIm5ld1NldHRpbmciLCJ1cGRhdGVkIiwic2V0RXhwb3J0SW1hZ2VEYXRhVXJpVXBkYXRlciIsIl9yZWYxIiwiZGF0YVVyaSIsInNldEV4cG9ydEltYWdlRXJyb3JVcGRhdGVyIiwiX3JlZjEwIiwiY2xlYW51cEV4cG9ydEltYWdlVXBkYXRlciIsInNldEV4cG9ydFZpZGVvU2V0dGluZ1VwZGF0ZXIiLCJfcmVmMTEiLCJzdGFydEV4cG9ydGluZ0ltYWdlVXBkYXRlciIsIl9yZWYxMiIsIl9yZWYxMiRwYXlsb2FkIiwib3B0aW9ucyIsImltYWdlU2V0dGluZ3MiLCJzZXRFeHBvcnRTZWxlY3RlZERhdGFzZXRVcGRhdGVyIiwiX3JlZjEzIiwiZGF0YXNldCIsInNldEV4cG9ydERhdGFUeXBlVXBkYXRlciIsIl9yZWYxNCIsInNldEV4cG9ydEZpbHRlcmVkVXBkYXRlciIsIl9yZWYxNSIsInNldEV4cG9ydERhdGFVcGRhdGVyIiwic2V0VXNlck1hcGJveEFjY2Vzc1Rva2VuVXBkYXRlciIsIl9yZWYxNiIsInNldEV4cG9ydE1hcEZvcm1hdFVwZGF0ZXIiLCJfcmVmMTciLCJmb3JtYXQiLCJzZXRFeHBvcnRNYXBGaWxlTmFtZVVwZGF0ZXIiLCJfcmVmMTgiLCJzZXRFeHBvcnRNYXBIVE1MTW9kZVVwZGF0ZXIiLCJfcmVmMTkiLCJzZXRFeHBvcnRJbmNsdWRlTGF5ZXJBcGlLZXlzVXBkYXRlciIsIl9yZWYyMCIsImluY2x1ZGVMYXllckFwaUtleXMiLCJhZGROb3RpZmljYXRpb25VcGRhdGVyIiwiX3JlZjIxIiwib2xkTm90aWZpY2F0aW9ucyIsInBheWxvYWRJZCIsIm5vdGlmaWNhdGlvblRvVXBkYXRlIiwiZmluZCIsIm4iLCJtYXAiLCJjb3VudCIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheSIsInJlbW92ZU5vdGlmaWNhdGlvblVwZGF0ZXIiLCJfcmVmMjIiLCJmaWx0ZXIiLCJsb2FkRmlsZXNVcGRhdGVyIiwibG9hZEZpbGVzU3VjY2Vzc1VwZGF0ZXIiLCJsb2FkRmlsZXNFcnJVcGRhdGVyIiwiX3JlZjIzIiwibWVzc2FnZSIsInRvcGljIiwiZ2xvYmFsIiwidG9nZ2xlU3BsaXRNYXBVcGRhdGVyIiwiZW50cmllcyIsImFjYyIsImVudHJ5Iiwic2hvd0RhdGFzZXRUYWJsZVVwZGF0ZXIiLCJzZXRMb2NhbGVVcGRhdGVyIiwiX3JlZjI0Iiwic2V0VGhlbWVVcGRhdGVyIiwiX3JlZjI1IiwidG9nZ2xlUGFuZWxMaXN0Vmlld1VwZGF0ZXIiLCJfcmVmMjYiLCJfcmVmMjYkcGF5bG9hZCIsImxpc3RWaWV3Iiwic3RhdGVQcm9wIiwicmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIiLCJfcmVmMjciLCJfdWlTdGF0ZSRtYXBDb250cm9scyIsIl91aVN0YXRlJG1hcENvbnRyb2xzMiIsIl91aVN0YXRlJG1hcENvbnRyb2xzMyIsImNvbmZpZyIsIl9yZWYyOCIsInVpU3RhdGUiLCJuZXdTdGF0ZSIsImN1cnJlbnRMZWdlbmQiLCJjaGFydCIsImN1cnJlbnRDaGFydCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91aS1zdGF0ZS11cGRhdGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge1xuICBBRERfREFUQV9JRCxcbiAgREFUQV9UQUJMRV9JRCxcbiAgREVGQVVMVF9OT1RJRklDQVRJT05fVE9QSUNTLFxuICBERUxFVEVfREFUQV9JRCxcbiAgRVhQT1JUX0RBVEFfVFlQRSxcbiAgRVhQT1JUX0hUTUxfTUFQX01PREVTLFxuICBFWFBPUlRfSU1HX1JBVElPUyxcbiAgRVhQT1JUX01BUF9GT1JNQVRTLFxuICBSRVNPTFVUSU9OUyxcbiAgTUFQX0NPTlRST0xTLFxuICBUSEVNRVxufSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge0xPQ0FMRV9DT0RFU30gZnJvbSAnQGtlcGxlci5nbC9sb2NhbGl6YXRpb24nO1xuaW1wb3J0IHtcbiAgY3JlYXRlTm90aWZpY2F0aW9uLFxuICBlcnJvck5vdGlmaWNhdGlvbixcbiAgY2FsY3VsYXRlRXhwb3J0SW1hZ2VTaXplLFxuICBnZXRBcHBsaWNhdGlvbkNvbmZpZyxcbiAgZ2V0Q29uZmlndXJlZFRoZW1lcyxcbiAgZ2V0RGVmYXVsdFVpVGhlbWVcbn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge3BheWxvYWRfLCBhcHBseV8sIGNvbXBvc2VffSBmcm9tICcuL2NvbXBvc2VyLWhlbHBlcnMnO1xuXG5pbXBvcnQge1xuICBBY3Rpb25UeXBlcyxcbiAgS2VwbGVyR2xJbml0UGF5bG9hZCxcbiAgTG9hZEZpbGVzRXJyVXBkYXRlckFjdGlvbixcbiAgUmVjZWl2ZU1hcENvbmZpZ1BheWxvYWQsXG4gIFVJU3RhdGVBY3Rpb25zXG59IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQge1xuICBFeHBvcnREYXRhLFxuICBFeHBvcnRIdG1sLFxuICBFeHBvcnRKc29uLFxuICBFeHBvcnRNYXAsXG4gIEV4cG9ydEltYWdlLFxuICBFeHBvcnRWaWRlbyxcbiAgTWFwQ29udHJvbEl0ZW0sXG4gIE1hcENvbnRyb2xNYXBMZWdlbmQsXG4gIE1hcENvbnRyb2xzLFxuICBVaVN0YXRlXG59IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9BQ1RJVkVfU0lERV9QQU5FTCA9ICdsYXllcic7XG5leHBvcnQgY29uc3QgREVGQVVMVF9NT0RBTCA9IEFERF9EQVRBX0lEO1xuXG4vKipcbiAqIFVwZGF0ZXJzIGZvciBgdWlTdGF0ZWAgcmVkdWNlci4gQ2FuIGJlIHVzZWQgaW4geW91ciByb290IHJlZHVjZXIgdG8gZGlyZWN0bHkgbW9kaWZ5IGtlcGxlci5nbCdzIHN0YXRlLlxuICogUmVhZCBtb3JlIGFib3V0IFtVc2luZyB1cGRhdGVyc10oLi4vYWR2YW5jZWQtdXNhZ2UvdXNpbmctdXBkYXRlcnMubWQpXG4gKlxuICogQHB1YmxpY1xuICogQGV4YW1wbGVcbiAqXG4gKiBpbXBvcnQga2VwbGVyR2xSZWR1Y2VyLCB7dWlTdGF0ZVVwZGF0ZXJzfSBmcm9tICdAa2VwbGVyLmdsL3JlZHVjZXJzJztcbiAqIC8vIFJvb3QgUmVkdWNlclxuICogY29uc3QgcmVkdWNlcnMgPSBjb21iaW5lUmVkdWNlcnMoe1xuICogIGtlcGxlckdsOiBrZXBsZXJHbFJlZHVjZXIsXG4gKiAgYXBwOiBhcHBSZWR1Y2VyXG4gKiB9KTtcbiAqXG4gKiBjb25zdCBjb21wb3NlZFJlZHVjZXIgPSAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICogIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAqICAgIC8vIGNsaWNrIGJ1dHRvbiB0byBjbG9zZSBzaWRlIHBhbmVsXG4gKiAgICBjYXNlICdDTElDS19CVVRUT04nOlxuICogICAgICByZXR1cm4ge1xuICogICAgICAgIC4uLnN0YXRlLFxuICogICAgICAgIGtlcGxlckdsOiB7XG4gKiAgICAgICAgICAuLi5zdGF0ZS5rZXBsZXJHbCxcbiAqICAgICAgICAgIGZvbzoge1xuICogICAgICAgICAgICAgLi4uc3RhdGUua2VwbGVyR2wuZm9vLFxuICogICAgICAgICAgICAgdWlTdGF0ZTogdWlTdGF0ZVVwZGF0ZXJzLnRvZ2dsZVNpZGVQYW5lbFVwZGF0ZXIoXG4gKiAgICAgICAgICAgICAgIHVpU3RhdGUsIHtwYXlsb2FkOiBudWxsfVxuICogICAgICAgICAgICAgKVxuICogICAgICAgICAgfVxuICogICAgICAgIH1cbiAqICAgICAgfTtcbiAqICB9XG4gKiAgcmV0dXJuIHJlZHVjZXJzKHN0YXRlLCBhY3Rpb24pO1xuICogfTtcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCBjb21wb3NlZFJlZHVjZXI7XG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuLy8gQHRzLWlnbm9yZVxuY29uc3QgdWlTdGF0ZVVwZGF0ZXJzID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG5cbmNvbnN0IERFRkFVTFRfTUFQX0NPTlRST0xTX0ZFQVRVUkVTOiBNYXBDb250cm9sSXRlbSA9IHtcbiAgc2hvdzogdHJ1ZSxcbiAgYWN0aXZlOiBmYWxzZSxcbiAgZGlzYWJsZUNsb3NlOiBmYWxzZSxcbiAgLy8gZGVmaW5lcyB3aGljaCBtYXAgaW5kZXggdXNlcnMgYXJlIGludGVyYWN0aW5nIHdpdGggKHRocm91Z2ggbWFwIGNvbnRyb2xzKVxuICBhY3RpdmVNYXBJbmRleDogMFxufTtcblxuY29uc3QgREVGQVVMVF9NQVBfTEVHRU5EX0NPTlRST0wgPSB7XG4gIC4uLkRFRkFVTFRfTUFQX0NPTlRST0xTX0ZFQVRVUkVTLFxuICBkaXNhYmxlRWRpdDogZmFsc2Vcbn07XG4vKipcbiAqIEEgbGlzdCBvZiBtYXAgY29udHJvbCB2aXNpYmlsaXR5IGFuZCB3aGV0aGVyIGlzIGl0IGFjdGl2ZS5cbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBjb25zdGFudFxuICogQHByb3BlcnR5IHZpc2libGVMYXllcnMgRGVmYXVsdDogYHtzaG93OiB0cnVlLCBhY3RpdmU6IGZhbHNlfWBcbiAqIEBwcm9wZXJ0eSBtYXBMZWdlbmQgRGVmYXVsdDogYHtzaG93OiB0cnVlLCBhY3RpdmU6IGZhbHNlfWBcbiAqIEBwcm9wZXJ0eSB0b2dnbGUzZCBEZWZhdWx0OiBge3Nob3c6IHRydWV9YFxuICogQHByb3BlcnR5IHNwbGl0TWFwIERlZmF1bHQ6IGB7c2hvdzogdHJ1ZX1gXG4gKiBAcHJvcGVydHkgbWFwRHJhdyBEZWZhdWx0OiBge3Nob3c6IHRydWUsIGFjdGl2ZTogZmFsc2V9YFxuICogQHByb3BlcnR5IG1hcExvY2FsZSBEZWZhdWx0OiBge3Nob3c6IHRydWUsIGFjdGl2ZTogZmFsc2V9YFxuICogQHByb3BlcnR5IG1hcFRoZW1lIERlZmF1bHQ6IGB7c2hvdzogdHJ1ZSwgYWN0aXZlOiBmYWxzZX1gXG4gKiBAcHJvcGVydHkgdmlld3BvcnRKc29uIERlZmF1bHQ6IGB7c2hvdzogdHJ1ZSwgYWN0aXZlOiBmYWxzZX1gXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX01BUF9DT05UUk9MUzogTWFwQ29udHJvbHMgPSAoXG4gIE9iamVjdC5rZXlzKE1BUF9DT05UUk9MUykgYXMgQXJyYXk8a2V5b2YgdHlwZW9mIE1BUF9DT05UUk9MUz5cbikucmVkdWNlKFxuICAoZmluYWwsIGN1cnJlbnQpID0+ICh7XG4gICAgLi4uZmluYWwsXG4gICAgW2N1cnJlbnRdOlxuICAgICAgY3VycmVudCA9PT0gTUFQX0NPTlRST0xTLm1hcExlZ2VuZFxuICAgICAgICA/IERFRkFVTFRfTUFQX0xFR0VORF9DT05UUk9MXG4gICAgICAgIDogREVGQVVMVF9NQVBfQ09OVFJPTFNfRkVBVFVSRVNcbiAgfSksXG4gIHt9IGFzIE1hcENvbnRyb2xzXG4pO1xuXG4vKipcbiAqIERlZmF1bHQgaW1hZ2UgZXhwb3J0IGNvbmZpZ1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgcmF0aW8gRGVmYXVsdDogYCdTQ1JFRU4nYCxcbiAqIEBwcm9wZXJ0eSByZXNvbHV0aW9uIERlZmF1bHQ6IGAnT05FX1gnYCxcbiAqIEBwcm9wZXJ0eSBsZWdlbmQgRGVmYXVsdDogYGZhbHNlYCxcbiAqIEBwcm9wZXJ0eSBjaGFydHMgRGVmYXVsdDogYGZhbHNlYCxcbiAqIEBwcm9wZXJ0eSBtYXBIIERlZmF1bHQ6IDAsXG4gKiBAcHJvcGVydHkgbWFwVyBEZWZhdWx0OiAwLFxuICogQHByb3BlcnR5IGltYWdlU2l6ZSBEZWZhdWx0OiB7em9vbU9mZnNldDogMCwgc2NhbGU6IDEsIGltYWdlVzogMCwgaW1hZ2VIOiAwfSxcbiAqIEBwcm9wZXJ0eSBpbWFnZURhdGFVcmkgRGVmYXVsdDogYCcnYCxcbiAqIEBwcm9wZXJ0eSBleHBvcnRpbmcgRGVmYXVsdDogYGZhbHNlYFxuICogQHByb3BlcnR5IGVycm9yIERlZmF1bHQ6IGBmYWxzZWBcbiAqIEBwcm9wZXJ0eSBlc2NhcGVYaHRtbEZvcldlYnBhY2sgRGVmYXVsdDogZnJvbSBhcHBsaWNhdGlvbiBjb25maWcgKGF1dG8tZGV0ZWN0ZWQ6IGB0cnVlYCBmb3Igd2VicGFjaylcbiAqIEBwcm9wZXJ0eSBmaWxlTmFtZSBEZWZhdWx0OiBgJydgXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0VYUE9SVF9JTUFHRTogRXhwb3J0SW1hZ2UgPSB7XG4gIC8vIHVzZXIgb3B0aW9uc1xuICByYXRpbzogRVhQT1JUX0lNR19SQVRJT1MuU0NSRUVOLFxuICByZXNvbHV0aW9uOiBSRVNPTFVUSU9OUy5PTkVfWCxcbiAgbGVnZW5kOiBmYWxzZSxcbiAgY2hhcnRzOiBmYWxzZSxcbiAgbWFwSDogMCxcbiAgbWFwVzogMCxcbiAgaW1hZ2VTaXplOiB7XG4gICAgem9vbU9mZnNldDogMCxcbiAgICBzY2FsZTogMSxcbiAgICBpbWFnZVc6IDAsXG4gICAgaW1hZ2VIOiAwXG4gIH0sXG4gIC8vIHdoZW4gdGhpcyBpcyBzZXQgdG8gdHJ1ZSwgdGhlIG1vY2sgbWFwIHZpZXdwb3J0IHdpbGwgbW92ZSB0byB0aGUgY2VudGVyIG9mIGRhdGFcbiAgY2VudGVyOiBmYWxzZSxcbiAgLy8gZXhwb3J0aW5nIHN0YXRlXG4gIGltYWdlRGF0YVVyaTogJycsXG4gIC8vIGV4cG9ydGluZzogdXNlZCB0byBhdHRhY2ggcGxvdC1jb250YWluZXIgdG8gZG9tXG4gIGV4cG9ydGluZzogZmFsc2UsXG4gIC8vIHByb2Nlc3Npbmc6IHVzZWQgYXMgbG9hZGluZyBpbmRpY2F0b3Igd2hlbiBleHBvcnQgaW1hZ2UgaXMgYmVpbmcgcHJvZHVjZWRcbiAgcHJvY2Vzc2luZzogZmFsc2UsXG4gIGVycm9yOiBmYWxzZSxcbiAgLy8gd2hldGhlciB0byBhcHBseSBmaXggZm9yIHVnbGlmeSBlcnJvciBpbiBkb20tdG8taW1hZ2UgKGZyb20gYXBwbGljYXRpb24gY29uZmlnLCBhdXRvLWRldGVjdHMgYnVpbGQgdG9vbClcbiAgZXNjYXBlWGh0bWxGb3JXZWJwYWNrOiBnZXRBcHBsaWNhdGlvbkNvbmZpZygpLmVzY2FwZVhodG1sRm9yV2VicGFjayxcbiAgZmlsZU5hbWU6ICcnXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MT0FEX0ZJTEVTID0ge1xuICBmaWxlTG9hZGluZzogZmFsc2Vcbn07XG5cbi8qKlxuICogRGVmYXVsdCBpbml0aWFsIGBleHBvcnREYXRhYCBzZXR0aW5nc1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgc2VsZWN0ZWREYXRhc2V0IERlZmF1bHQ6IGAnJ2AsXG4gKiBAcHJvcGVydHkgZGF0YVR5cGUgRGVmYXVsdDogYCdjc3YnYCxcbiAqIEBwcm9wZXJ0eSBmaWx0ZXJlZCBEZWZhdWx0OiBgdHJ1ZWAsXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0VYUE9SVF9EQVRBOiBFeHBvcnREYXRhID0ge1xuICBzZWxlY3RlZERhdGFzZXQ6ICcnLFxuICBkYXRhVHlwZTogRVhQT1JUX0RBVEFfVFlQRS5DU1YsXG4gIGZpbHRlcmVkOiB0cnVlXG59O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9OT1RJRklDQVRJT05TID0gW107XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgZXhwb3J0TWFwYm94QWNjZXNzVG9rZW4gLSBEZWZhdWx0OiBudWxsLCB0aGlzIGlzIHVzZWQgd2hlbiB3ZSBwcm92aWRlIGEgZGVmYXVsdCBtYXBib3ggdG9rZW4gZm9yIHVzZXJzIHRvIHRha2UgYWR2YW50YWdlIG9mXG4gKiBAcHJvcGVydHkgdXNlck1hcGJveFRva2VuIC0gRGVmYXVsdDogJycsIG1hcGJveCB0b2tlbiBwcm92aWRlZCBieSB1c2VyIHRocm91Z2ggaW5wdXQgZmllbGRcbiAqIEBwcm9wZXJ0eSBtb2RlIC0gRGVmYXVsdDogJ1JFQUQnLCByZWFkIG9ubHkgb3IgZWRpdGFibGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVhQT1JUX0hUTUw6IEV4cG9ydEh0bWwgPSB7XG4gIGV4cG9ydE1hcGJveEFjY2Vzc1Rva2VuOiBudWxsLFxuICB1c2VyTWFwYm94VG9rZW46ICcnLFxuICBtb2RlOiBFWFBPUlRfSFRNTF9NQVBfTU9ERVMuUkVBRFxufTtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBwcm9wZXJ0eSBoYXNEYXRhIC0gRGVmYXVsdDogJ3RydWUnLFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9FWFBPUlRfSlNPTjogRXhwb3J0SnNvbiA9IHtcbiAgaGFzRGF0YTogdHJ1ZVxufTtcblxuLyoqXG4gKiBFeHBvcnQgTWFwIENvbmZpZ1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgSFRNTCAtIERlZmF1bHQ6ICdERUZBVUxUX0VYUE9SVF9IVE1MJyxcbiAqIEBwcm9wZXJ0eSBKU09OIC0gRGVmYXVsdDogJ0RFRkFVTFRfRVhQT1JUX0pTT04nLFxuICogQHByb3BlcnR5IGZvcm1hdCAtIERlZmF1bHQ6ICdIVE1MJyxcbiAqIEBwcm9wZXJ0eSBmaWxlTmFtZSBEZWZhdWx0OiBgJydgLFxuICogQHByb3BlcnR5IGluY2x1ZGVMYXllckFwaUtleXMgRGVmYXVsdDogYGZhbHNlYCxcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVhQT1JUX01BUDogRXhwb3J0TWFwID0ge1xuICBbRVhQT1JUX01BUF9GT1JNQVRTLkhUTUxdOiBERUZBVUxUX0VYUE9SVF9IVE1MLFxuICBbRVhQT1JUX01BUF9GT1JNQVRTLkpTT05dOiBERUZBVUxUX0VYUE9SVF9KU09OLFxuICBmb3JtYXQ6IEVYUE9SVF9NQVBfRk9STUFUUy5IVE1MLFxuICBmaWxlTmFtZTogJycsXG4gIC8vIFByaXZhdGUgbGF5ZXIgdG9rZW5zIHN0YXkgb3V0IG9mIHRoZSBmaWxlIHVubGVzcyB0aGUgdXNlciBvcHRzIGluLlxuICBpbmNsdWRlTGF5ZXJBcGlLZXlzOiBmYWxzZVxufTtcblxuLyoqXG4gKiBEZWZhdWx0IGluaXRpYWwgYGV4cG9ydFZpZGVvYCBzZXR0aW5nc1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgbWVkaWFUeXBlIERlZmF1bHQ6IGAnd2VibSdgXG4gKiBAcHJvcGVydHkgY2FtZXJhUHJlc2V0IERlZmF1bHQ6IGAnTm9uZSdgXG4gKiBAcHJvcGVydHkgZmlsZU5hbWUgRGVmYXVsdDogYCdrZXBsZXIuZ2wnYFxuICogQHByb3BlcnR5IHJlc29sdXRpb24gRGVmYXVsdDogYCcxMjgweDcyMCdgXG4gKiBAcHJvcGVydHkgZHVyYXRpb25NcyBEZWZhdWx0OiBgMTAwMGBcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVhQT1JUX1ZJREVPOiBFeHBvcnRWaWRlbyA9IHtcbiAgbWVkaWFUeXBlOiAnd2VibScsIC8vIHVzZSB3ZWJtIGFzIGRlZmF1bHQgYXMgZ2lmIGV4cG9ydCB0ZW5kcyB0byBmcmVlemUgb24gbGFyZ2VyIHJlY29yZGluZ3NcbiAgY2FtZXJhUHJlc2V0OiAnTm9uZScsXG4gIGZpbGVOYW1lOiAna2VwbGVyLmdsJyxcbiAgcmVzb2x1dGlvbjogJzEyODB4NzIwJyxcbiAgZHVyYXRpb25NczogMTAwMCxcbiAgc3dpcGVTdGFydFBjdDogMCxcbiAgc3dpcGVFbmRQY3Q6IDEwMCxcbiAgc3dpcGVFYXNpbmc6ICdlYXNlLWluLW91dCdcbn07XG5cbi8qKlxuICogRGVmYXVsdCBpbml0aWFsIGB1aVN0YXRlYFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgcmVhZE9ubHkgRGVmYXVsdDogYGZhbHNlYFxuICogQHByb3BlcnR5IGFjdGl2ZVNpZGVQYW5lbCBEZWZhdWx0OiBgJ2xheWVyJ2BcbiAqIEBwcm9wZXJ0eSBjdXJyZW50TW9kYWwgRGVmYXVsdDogYCdhZGREYXRhJ2BcbiAqIEBwcm9wZXJ0eSBkYXRhc2V0S2V5VG9SZW1vdmUgRGVmYXVsdDogYG51bGxgXG4gKiBAcHJvcGVydHkgZGF0YXNldFRvUmVwbGFjZUlkIERlZmF1bHQ6IGBudWxsYFxuICogQHByb3BlcnR5IHZpc2libGVEcm9wZG93biBEZWZhdWx0OiBgbnVsbGBcbiAqIEBwcm9wZXJ0eSBleHBvcnRJbWFnZSBEZWZhdWx0OiBbYERFRkFVTFRfRVhQT1JUX0lNQUdFYF0oI2RlZmF1bHRfZXhwb3J0X2ltYWdlKVxuICogQHByb3BlcnR5IGV4cG9ydERhdGEgRGVmYXVsdDogW2BERUZBVUxUX0VYUE9SVF9EQVRBYF0oI2RlZmF1bHRfZXhwb3J0X2RhdGEpXG4gKiBAcHJvcGVydHkgZXhwb3J0TWFwIERlZmF1bHQ6IFtgREVGQVVMVF9FWFBPUlRfTUFQYF0oI2RlZmF1bHRfZXhwb3J0X21hcClcbiAqIEBwcm9wZXJ0eSBtYXBDb250cm9scyBEZWZhdWx0OiBbYERFRkFVTFRfTUFQX0NPTlRST0xTYF0oI2RlZmF1bHRfbWFwX2NvbnRyb2xzKVxuICogQHByb3BlcnR5IG5vdGlmaWNhdGlvbnMgRGVmYXVsdDogYFtdYFxuICogQHByb3BlcnR5IG5vdGlmaWNhdGlvbnMgRGVmYXVsdDogYFtdYFxuICogQHByb3BlcnR5IGxvYWRGaWxlc1xuICogQHByb3BlcnR5IGxvY2FsZSBEZWZhdWx0OiBgJ2VuJ2BcbiAqIEBwcm9wZXJ0eSB0aGVtZSBEZWZhdWx0OiBgJ2RhcmsnYFxuICogQHByb3BlcnR5IGlzU2lkZVBhbmVsQ2xvc2VCdXR0b25WaXNpYmxlIERlZmF1bHQ6IGB0cnVlYFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgSU5JVElBTF9VSV9TVEFURTogVWlTdGF0ZSA9IHtcbiAgcmVhZE9ubHk6IGZhbHNlLFxuICBhY3RpdmVTaWRlUGFuZWw6IERFRkFVTFRfQUNUSVZFX1NJREVfUEFORUwsXG4gIGN1cnJlbnRNb2RhbDogREVGQVVMVF9NT0RBTCxcbiAgZGF0YXNldEtleVRvUmVtb3ZlOiBudWxsLFxuICBkYXRhc2V0VG9SZXBsYWNlSWQ6IG51bGwsXG4gIHZpc2libGVEcm9wZG93bjogbnVsbCxcbiAgLy8gZXhwb3J0IGltYWdlIG1vZGFsIHVpXG4gIGV4cG9ydEltYWdlOiBERUZBVUxUX0VYUE9SVF9JTUFHRSxcbiAgLy8gZXhwb3J0IGRhdGEgbW9kYWwgdWlcbiAgZXhwb3J0RGF0YTogREVGQVVMVF9FWFBPUlRfREFUQSxcbiAgLy8gaHRtbCBleHBvcnRcbiAgZXhwb3J0TWFwOiBERUZBVUxUX0VYUE9SVF9NQVAsXG4gIC8vIGV4cG9ydCB2aWRlbyBtb2RhbCB1aVxuICBleHBvcnRWaWRlbzogREVGQVVMVF9FWFBPUlRfVklERU8sXG4gIC8vIG1hcCBjb250cm9sIHBhbmVsc1xuICBtYXBDb250cm9sczogREVGQVVMVF9NQVBfQ09OVFJPTFMsXG4gIC8vIHVpIG5vdGlmaWNhdGlvbnNcbiAgbm90aWZpY2F0aW9uczogREVGQVVMVF9OT1RJRklDQVRJT05TLFxuICAvLyBsb2FkIGZpbGVzXG4gIGxvYWRGaWxlczogREVGQVVMVF9MT0FEX0ZJTEVTLFxuICAvLyBMb2NhbGUgb2YgdGhlIFVJXG4gIGxvY2FsZTogTE9DQUxFX0NPREVTLmVuLFxuICAvLyBUaGVtZSBvZiB0aGUgVUkgKGBsaWdodGAgfCBgZGFya2AgfCBgc3BhY2VgKS4gRmlyc3Qgb2YgYHRoZW1lc2AgaXMgdGhlIGRlZmF1bHQgd2hlbiBzZXQuXG4gIHRoZW1lOiBUSEVNRS5kYXJrLFxuICBsYXllclBhbmVsTGlzdFZpZXc6ICdsaXN0JyxcbiAgZmlsdGVyUGFuZWxMaXN0VmlldzogJ2xpc3QnLFxuICBpc1NpZGVQYW5lbENsb3NlQnV0dG9uVmlzaWJsZTogdHJ1ZVxufTtcblxuLyogVXBkYXRlcnMgKi9cbi8qKlxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICovXG5leHBvcnQgY29uc3QgaW5pdFVpU3RhdGVVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAgYWN0aW9uOiB7XG4gICAgdHlwZT86ICh0eXBlb2YgQWN0aW9uVHlwZXMpWydJTklUJ107XG4gICAgcGF5bG9hZDogS2VwbGVyR2xJbml0UGF5bG9hZDtcbiAgfVxuKTogVWlTdGF0ZSA9PiB7XG4gIGNvbnN0IGluaXRpYWxVaVN0YXRlID0gKGFjdGlvbi5wYXlsb2FkIHx8IHt9KS5pbml0aWFsVWlTdGF0ZSB8fCB7fTtcbiAgY29uc3QgdGhlbWVzID0gZ2V0Q29uZmlndXJlZFRoZW1lcygpO1xuICBjb25zdCByZXF1ZXN0ZWQgPSBpbml0aWFsVWlTdGF0ZS50aGVtZSA/PyBzdGF0ZS50aGVtZTtcbiAgY29uc3QgdGhlbWUgPVxuICAgIHRoZW1lcy5sZW5ndGggPT09IDAgPyByZXF1ZXN0ZWQgOiB0aGVtZXMuaW5jbHVkZXMocmVxdWVzdGVkKSA/IHJlcXVlc3RlZCA6IGdldERlZmF1bHRVaVRoZW1lKCk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICAuLi5pbml0aWFsVWlTdGF0ZSxcbiAgICB0aGVtZVxuICB9O1xufTtcblxuLyoqXG4gKiBUb2dnbGUgYWN0aXZlIHNpZGUgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBpZCBvZiBzaWRlIHBhbmVsIHRvIGJlIHNob3duLCBvbmUgb2YgYGxheWVyYCwgYGZpbHRlcmAsIGBpbnRlcmFjdGlvbmAsIGBtYXBgLiBjbG9zZSBzaWRlIHBhbmVsIGlmIGBudWxsYFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVTaWRlUGFuZWxVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGlkfTogVUlTdGF0ZUFjdGlvbnMuVG9nZ2xlU2lkZVBhbmVsVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiB7XG4gIHJldHVybiBpZCA9PT0gc3RhdGUuYWN0aXZlU2lkZVBhbmVsXG4gICAgPyBzdGF0ZVxuICAgIDoge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgYWN0aXZlU2lkZVBhbmVsOiBpZFxuICAgICAgfTtcbn07XG5cbi8qKlxuICogU2hvdyBhbmQgaGlkZSBtb2RhbCBkaWFsb2dcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbWFjdGlvbi5wYXlsb2FkIGlkIG9mIG1vZGFsIHRvIGJlIHNob3duLCBudWxsIHRvIGhpZGUgbW9kYWxzLiBPbmUgb2Y6XG4gKiAgLSBbYERBVEFfVEFCTEVfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNkYXRhX3RhYmxlX2lkKVxuICogIC0gW2BERUxFVEVfREFUQV9JRGBdKC4uL2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzLm1kI2RlbGV0ZV9kYXRhX2lkKVxuICogIC0gW2BBRERfREFUQV9JRGBdKC4uL2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzLm1kI2FkZF9kYXRhX2lkKVxuICogIC0gW2BFWFBPUlRfSU1BR0VfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNleHBvcnRfaW1hZ2VfaWQpXG4gKiAgLSBbYEVYUE9SVF9EQVRBX0lEYF0oLi4vY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MubWQjZXhwb3J0X2RhdGFfaWQpXG4gKiAgLSBbYEFERF9NQVBfU1RZTEVfSURgXSguLi9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy5tZCNhZGRfbWFwX3N0eWxlX2lkKVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVNb2RhbFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogaWR9OiBVSVN0YXRlQWN0aW9ucy5Ub2dnbGVNb2RhbFVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGN1cnJlbnRNb2RhbDogaWQsXG4gIC8vIEFkZCBEYXRhIGFuZCBldmVyeSBvdGhlciBtb2RhbCBvcGVuIGxlYXZlIHJlcGxhY2UgbW9kZS5cbiAgLy8gUmVwbGFjZSBtb2RlIGlzIGVudGVyZWQgb25seSB0aHJvdWdoIG9wZW5SZXBsYWNlRGF0YXNldE1vZGFsLlxuICBkYXRhc2V0VG9SZXBsYWNlSWQ6IG51bGxcbn0pO1xuXG4vKipcbiAqIEhpZGUgYW5kIHNob3cgc2lkZSBwYW5lbCBoZWFkZXIgZHJvcGRvd24sIGFjdGl2YXRlZCBieSBjbGlja2luZyB0aGUgc2hhcmUgbGluayBvbiB0b3Agb2YgdGhlIHNpZGUgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNob3dFeHBvcnREcm9wZG93blVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogaWR9OiBVSVN0YXRlQWN0aW9ucy5TaG93RXhwb3J0RHJvcGRvd25VcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICB2aXNpYmxlRHJvcGRvd246IGlkXG59KTtcblxuLyoqXG4gKiBIaWRlIHNpZGUgcGFuZWwgaGVhZGVyIGRyb3Bkb3duLCBhY3RpdmF0ZWQgYnkgY2xpY2tpbmcgdGhlIHNoYXJlIGxpbmsgb24gdG9wIG9mIHRoZSBzaWRlIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBoaWRlRXhwb3J0RHJvcGRvd25VcGRhdGVyID0gKHN0YXRlOiBVaVN0YXRlKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgdmlzaWJsZURyb3Bkb3duOiBudWxsXG59KTtcblxuLyoqXG4gKiBUb2dnbGUgc2lkZSBwYW5lbCBjbG9zZSBidXR0b24gb24gdG9wIGxlZnQgb2YgdGhlIHNpZGUgcGFuZWxcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVNpZGVQYW5lbENsb3NlQnV0dG9uVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7c2hvd319OiBVSVN0YXRlQWN0aW9ucy5Ub2dnbGVTaWRlUGFuZWxDbG9zZUJ1dHRvblVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGlzU2lkZVBhbmVsQ2xvc2VCdXR0b25WaXNpYmxlOiBzaG93XG59KTtcblxuLy8gTWFwIGNvbnRyb2wgZHJvcGRvd25zL21lbnVzIHRoYXQgb3ZlcmxhcCBlYWNoIG90aGVyIHZpc3VhbGx5IGFuZCB0aGVyZWZvcmVcbi8vIHNob3VsZCBiZSBtdXR1YWxseSBleGNsdXNpdmU6IG9wZW5pbmcgb25lIGNsb3NlcyBhbGwgdGhlIG90aGVycy5cbi8vIChzcGxpdC92aWV3LW1vZGUgbWVudSwgdG9wLzNkL2dsb2JlIG1lbnUsIHBvbHlnb24gZHJhdyB0b29sLCBsYW5ndWFnZSBtZW51KVxuZXhwb3J0IGNvbnN0IE1VVFVBTExZX0VYQ0xVU0lWRV9NQVBfQ09OVFJPTFM6IHN0cmluZ1tdID0gW1xuICBNQVBfQ09OVFJPTFMuc3BsaXRNYXAsXG4gIE1BUF9DT05UUk9MUy50b2dnbGUzZCxcbiAgTUFQX0NPTlRST0xTLm1hcERyYXcsXG4gIE1BUF9DT05UUk9MUy5tYXBMb2NhbGVcbl07XG5cbi8qKlxuICogVG9nZ2xlIGFjdGl2ZSBtYXAgY29udHJvbCBwYW5lbFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvbiBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBtYXAgY29udHJvbCBwYW5lbCBpZCwgb25lIG9mIHRoZSBrZXlzIG9mOiBbYERFRkFVTFRfTUFQX0NPTlRST0xTYF0oI2RlZmF1bHRfbWFwX2NvbnRyb2xzKVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVNYXBDb250cm9sVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7cGFuZWxJZCwgaW5kZXggPSAwfX06IFVJU3RhdGVBY3Rpb25zLlRvZ2dsZU1hcENvbnRyb2xVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgbGV0IHVwZGF0ZWRTdGF0ZSA9IHN0YXRlO1xuXG4gIC8vIFRoZSBvdmVybGFwcGluZyBtYXAgY29udHJvbCBtZW51cyBzaG91bGQgYmUgbXV0dWFsbHkgZXhjbHVzaXZlOiB3aGVuIG9uZSBvZlxuICAvLyB0aGVtIGlzIGJlaW5nIG9wZW5lZCwgZGVhY3RpdmF0ZSBldmVyeSBvdGhlciBvbmUgdGhhdCBpcyBjdXJyZW50bHkgYWN0aXZlXG4gIC8vIHNvIHRoZWlyIGRyb3Bkb3ducyBuZXZlciBvdmVybGFwIG9uIHNjcmVlbi5cbiAgY29uc3QgaXNPcGVuaW5nID0gIXVwZGF0ZWRTdGF0ZS5tYXBDb250cm9sc1twYW5lbElkXT8uYWN0aXZlO1xuICBpZiAoaXNPcGVuaW5nICYmIE1VVFVBTExZX0VYQ0xVU0lWRV9NQVBfQ09OVFJPTFMuaW5jbHVkZXMocGFuZWxJZCkpIHtcbiAgICBjb25zdCBuZXh0TWFwQ29udHJvbHMgPSB7Li4udXBkYXRlZFN0YXRlLm1hcENvbnRyb2xzfTtcbiAgICBsZXQgZGlkRGVhY3RpdmF0ZSA9IGZhbHNlO1xuICAgIE1VVFVBTExZX0VYQ0xVU0lWRV9NQVBfQ09OVFJPTFMuZm9yRWFjaChjb250cm9sSWQgPT4ge1xuICAgICAgaWYgKGNvbnRyb2xJZCAhPT0gcGFuZWxJZCAmJiBuZXh0TWFwQ29udHJvbHNbY29udHJvbElkXT8uYWN0aXZlKSB7XG4gICAgICAgIG5leHRNYXBDb250cm9sc1tjb250cm9sSWRdID0gey4uLm5leHRNYXBDb250cm9sc1tjb250cm9sSWRdLCBhY3RpdmU6IGZhbHNlfTtcbiAgICAgICAgZGlkRGVhY3RpdmF0ZSA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKGRpZERlYWN0aXZhdGUpIHtcbiAgICAgIHVwZGF0ZWRTdGF0ZSA9IHsuLi51cGRhdGVkU3RhdGUsIG1hcENvbnRyb2xzOiBuZXh0TWFwQ29udHJvbHN9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4udXBkYXRlZFN0YXRlLFxuICAgIG1hcENvbnRyb2xzOiB7XG4gICAgICAuLi51cGRhdGVkU3RhdGUubWFwQ29udHJvbHMsXG4gICAgICBbcGFuZWxJZF06IHtcbiAgICAgICAgLi4uKHVwZGF0ZWRTdGF0ZS5tYXBDb250cm9sc1twYW5lbElkXSBhcyBNYXBDb250cm9sSXRlbSksXG4gICAgICAgIGFjdGl2ZTogIXVwZGF0ZWRTdGF0ZS5tYXBDb250cm9sc1twYW5lbElkXT8uYWN0aXZlLFxuICAgICAgICBhY3RpdmVNYXBJbmRleDogaW5kZXhcbiAgICAgIH1cbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIFRvZ2dsZSBtYXAgY29udHJvbCB2aXNpYmlsaXR5XG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIG1hcCBjb250cm9sIHBhbmVsIGlkLCBvbmUgb2YgdGhlIGtleXMgb2Y6IFtgREVGQVVMVF9NQVBfQ09OVFJPTFNgXSgjZGVmYXVsdF9tYXBfY29udHJvbHMpXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldE1hcENvbnRyb2xWaXNpYmlsaXR5VXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiB7cGFuZWxJZCwgc2hvd319OiBVSVN0YXRlQWN0aW9ucy5zZXRNYXBDb250cm9sVmlzaWJpbGl0eVVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4ge1xuICBpZiAoIXN0YXRlLm1hcENvbnRyb2xzPy5bcGFuZWxJZF0pIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIG1hcENvbnRyb2xzOiB7XG4gICAgICAuLi5zdGF0ZS5tYXBDb250cm9scyxcbiAgICAgIFtwYW5lbElkXToge1xuICAgICAgICAuLi5zdGF0ZS5tYXBDb250cm9sc1twYW5lbElkXSxcbiAgICAgICAgc2hvdzogQm9vbGVhbihzaG93KVxuICAgICAgfVxuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogVG9nZ2xlIG1hcCBjb250cm9sIHNldHRpbmdzXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIG1hcCBjb250cm9sIHBhbmVsIGlkLCBvbmUgb2YgdGhlIGtleXMgb2Y6IFtgREVGQVVMVF9NQVBfQ09OVFJPTFNgXSgjZGVmYXVsdF9tYXBfY29udHJvbHMpXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldE1hcENvbnRyb2xTZXR0aW5nc1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDoge3BhbmVsSWQsIHNldHRpbmdzfX06IFVJU3RhdGVBY3Rpb25zLnNldE1hcENvbnRyb2xTZXR0aW5nc1VwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4ge1xuICBjb25zdCBtYXBDb250cm9sID0gc3RhdGUubWFwQ29udHJvbHM/LltwYW5lbElkXSBhcyBNYXBDb250cm9sTWFwTGVnZW5kIHwgdW5kZWZpbmVkO1xuICBpZiAoIW1hcENvbnRyb2wpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIG1hcENvbnRyb2xzOiB7XG4gICAgICAuLi5zdGF0ZS5tYXBDb250cm9scyxcbiAgICAgIFtwYW5lbElkXToge1xuICAgICAgICAuLi5tYXBDb250cm9sLFxuICAgICAgICBzZXR0aW5nczogey4uLm1hcENvbnRyb2wuc2V0dGluZ3MsIC4uLnNldHRpbmdzfVxuICAgICAgfSBhcyBNYXBDb250cm9sTWFwTGVnZW5kXG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBUb2dnbGUgYWN0aXZlIG1hcCBjb250cm9sIHBhbmVsXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgZGF0YXNldCBpZFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBvcGVuRGVsZXRlTW9kYWxVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGRhdGFzZXRLZXlUb1JlbW92ZX06IFVJU3RhdGVBY3Rpb25zLk9wZW5EZWxldGVNb2RhbFVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGN1cnJlbnRNb2RhbDogREVMRVRFX0RBVEFfSUQsXG4gIGRhdGFzZXRLZXlUb1JlbW92ZVxufSk7XG5cbi8qKlxuICogT3BlbiB0aGUgYWRkLWRhdGEgbW9kYWwgc28gdGhlIG5leHQgY29uZmlybWVkIHVwbG9hZCByZXBsYWNlcyBvbmUgZGF0YXNldC5cbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBkYXRhc2V0IGlkXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IG9wZW5SZXBsYWNlRGF0YXNldE1vZGFsVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBkYXRhc2V0VG9SZXBsYWNlSWR9OiBVSVN0YXRlQWN0aW9ucy5PcGVuUmVwbGFjZURhdGFzZXRNb2RhbFVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGN1cnJlbnRNb2RhbDogQUREX0RBVEFfSUQsXG4gIGRhdGFzZXRUb1JlcGxhY2VJZFxufSk7XG5cbi8qKlxuICogU2V0IGBleHBvcnRJbWFnZWAgb3B0aW9ucyBzdWNoIGFzIGBsZWdlbmRgIGFuZCBgY2hhcnRzYCB0byBgdHJ1ZWAgb3IgYGZhbHNlYFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRJbWFnZVNldHRpbmdVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IG5ld1NldHRpbmd9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRJbWFnZVNldHRpbmdVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgY29uc3QgdXBkYXRlZCA9IHsuLi5zdGF0ZS5leHBvcnRJbWFnZSwgLi4ubmV3U2V0dGluZ307XG4gIGNvbnN0IGltYWdlU2l6ZSA9IGNhbGN1bGF0ZUV4cG9ydEltYWdlU2l6ZSh1cGRhdGVkKSB8fCBzdGF0ZS5leHBvcnRJbWFnZS5pbWFnZVNpemU7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBleHBvcnRJbWFnZToge1xuICAgICAgLi4udXBkYXRlZCxcbiAgICAgIGltYWdlU2l6ZVxuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogU2V0IGBleHBvcnRJbWFnZS5zZXRFeHBvcnRJbWFnZURhdGFVcmlgIHRvIGEgaW1hZ2UgZGF0YVVyaVxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIGV4cG9ydCBpbWFnZSBkYXRhIHVyaVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRJbWFnZURhdGFVcmlVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGRhdGFVcml9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRJbWFnZURhdGFVcmlVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgaWYgKGRhdGFVcmkgPT09IHN0YXRlLmV4cG9ydEltYWdlLmltYWdlRGF0YVVyaSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGV4cG9ydEltYWdlOiB7XG4gICAgICAuLi5zdGF0ZS5leHBvcnRJbWFnZSxcbiAgICAgIHByb2Nlc3Npbmc6IGZhbHNlLFxuICAgICAgaW1hZ2VEYXRhVXJpOiBkYXRhVXJpXG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRJbWFnZUVycm9yVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBlcnJvcn06IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydEltYWdlRXJyb3JVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnRJbWFnZToge1xuICAgIC4uLnN0YXRlLmV4cG9ydEltYWdlLFxuICAgIHByb2Nlc3Npbmc6IGZhbHNlLFxuICAgIGVycm9yXG4gIH1cbn0pO1xuXG4vKipcbiAqIERlbGV0ZSBjYWNoZWQgZXhwb3J0IGltYWdlXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBjbGVhbnVwRXhwb3J0SW1hZ2VVcGRhdGVyID0gKHN0YXRlOiBVaVN0YXRlKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0SW1hZ2U6IHtcbiAgICAuLi5zdGF0ZS5leHBvcnRJbWFnZSxcbiAgICBleHBvcnRpbmc6IGZhbHNlLFxuICAgIGltYWdlRGF0YVVyaTogJycsXG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIHByb2Nlc3Npbmc6IGZhbHNlLFxuICAgIGNlbnRlcjogZmFsc2VcbiAgfVxufSk7XG5cbi8qKlxuICogU2V0IGBleHBvcnRWaWRlb2Agc2V0dGluZ3M6IG1lZGlhVHlwZSwgY2FtZXJhUHJlc2V0LCBmaWxlTmFtZSwgcmVzb2x1dGlvbiwgZHVyYXRpb25Nc1xuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIG5ldyB2aWRlbyBleHBvcnQgc2V0dGluZ3NcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0VmlkZW9TZXR0aW5nVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBuZXdTZXR0aW5nfTogVUlTdGF0ZUFjdGlvbnMuU2V0RXhwb3J0VmlkZW9TZXR0aW5nVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0VmlkZW86IHtcbiAgICAuLi5zdGF0ZS5leHBvcnRWaWRlbyxcbiAgICAuLi5uZXdTZXR0aW5nXG4gIH1cbn0pO1xuXG4vKipcbiAqIFN0YXJ0IGltYWdlIGV4cG9ydGluZyBmbG93XG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGVcbiAqIEBwYXJhbSBvcHRpb25zXG4gKiBAcmV0dXJucyB7VWlTdGF0ZX1cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHN0YXJ0RXhwb3J0aW5nSW1hZ2VVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IG9wdGlvbnMgPSB7fX06IHtwYXlsb2FkOiBQYXJ0aWFsPEV4cG9ydEltYWdlPn1cbik6IFVpU3RhdGUgPT4ge1xuICBjb25zdCBpbWFnZVNldHRpbmdzID0ge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgZXhwb3J0aW5nOiB0cnVlXG4gIH07XG5cbiAgcmV0dXJuIGNvbXBvc2VfKFtcbiAgICBjbGVhbnVwRXhwb3J0SW1hZ2VVcGRhdGVyLFxuICAgIGFwcGx5XyhzZXRFeHBvcnRJbWFnZVNldHRpbmdVcGRhdGVyLCBwYXlsb2FkXyhpbWFnZVNldHRpbmdzKSlcbiAgXSkoc3RhdGUpO1xufTtcblxuLyoqXG4gKiBTZXQgc2VsZWN0ZWQgZGF0YXNldCBmb3IgZXhwb3J0XG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgZGF0YXNldCBpZFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRTZWxlY3RlZERhdGFzZXRVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGRhdGFzZXR9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRTZWxlY3RlZERhdGFzZXRVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnREYXRhOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0RGF0YSxcbiAgICBzZWxlY3RlZERhdGFzZXQ6IGRhdGFzZXRcbiAgfVxufSk7XG5cbi8qKlxuICogU2V0IGRhdGEgZm9ybWF0IGZvciBleHBvcnRpbmcgZGF0YVxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIG9uZSBvZiBgJ3RleHQvY3N2J2BcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0RGF0YVR5cGVVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGRhdGFUeXBlfTogVUlTdGF0ZUFjdGlvbnMuU2V0RXhwb3J0RGF0YVR5cGVVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnREYXRhOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0RGF0YSxcbiAgICBkYXRhVHlwZVxuICB9XG59KTtcblxuLyoqXG4gKiBXaGV0aGVyIHRvIGV4cG9ydCBmaWx0ZXJlZCBkYXRhLCBgdHJ1ZWAgb3IgYGZhbHNlYFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydEZpbHRlcmVkVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBmaWx0ZXJlZH06IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydEZpbHRlcmVkVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0RGF0YToge1xuICAgIC4uLnN0YXRlLmV4cG9ydERhdGEsXG4gICAgZmlsdGVyZWRcbiAgfVxufSk7XG5cbi8qKlxuICogV2hldGhlciB0byBpbmNsdWRpbmcgZGF0YSBpbiBtYXAgY29uZmlnLCB0b2dnbGUgYmV0d2VlbiBgdHJ1ZWAgb3IgYGZhbHNlYFxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnREYXRhVXBkYXRlciA9IChzdGF0ZTogVWlTdGF0ZSk6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydE1hcDoge1xuICAgIC4uLnN0YXRlLmV4cG9ydE1hcCxcbiAgICBbRVhQT1JUX01BUF9GT1JNQVRTLkpTT05dOiB7XG4gICAgICAuLi5zdGF0ZS5leHBvcnRNYXBbRVhQT1JUX01BUF9GT1JNQVRTLkpTT05dLFxuICAgICAgaGFzRGF0YTogIXN0YXRlLmV4cG9ydE1hcFtFWFBPUlRfTUFQX0ZPUk1BVFMuSlNPTl0uaGFzRGF0YVxuICAgIH1cbiAgfVxufSk7XG5cbi8qKlxuICogd2hldGhlciB0byBleHBvcnQgYSBtYXBib3ggYWNjZXNzIHRvIEhUTUwgc2luZ2xlIHBhZ2VcbiAqIEBwYXJhbSBzdGF0ZSAtIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldFVzZXJNYXBib3hBY2Nlc3NUb2tlblVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogdXNlck1hcGJveFRva2VufTogVUlTdGF0ZUFjdGlvbnMuU2V0VXNlck1hcGJveEFjY2Vzc1Rva2VuVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0TWFwOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0TWFwLFxuICAgIFtFWFBPUlRfTUFQX0ZPUk1BVFMuSFRNTF06IHtcbiAgICAgIC4uLnN0YXRlLmV4cG9ydE1hcFtFWFBPUlRfTUFQX0ZPUk1BVFMuSFRNTF0sXG4gICAgICB1c2VyTWFwYm94VG9rZW5cbiAgICB9XG4gIH1cbn0pO1xuXG4vKipcbiAqIFNldHMgdGhlIGV4cG9ydCBtYXAgZm9ybWF0XG4gKiBAcGFyYW0gc3RhdGUgLSBgdWlTdGF0ZWBcbiAqIEBwYXJhbSBhY3Rpb25cbiAqIEBwYXJhbSBhY3Rpb24ucGF5bG9hZCBmb3JtYXQgdG8gdXNlIHRvIGV4cG9ydCB0aGUgbWFwIGludG9cbiAqIEByZXR1cm4gbmV4dFN0YXRlXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRFeHBvcnRNYXBGb3JtYXRVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IGZvcm1hdH06IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydE1hcEZvcm1hdFVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydE1hcDoge1xuICAgIC4uLnN0YXRlLmV4cG9ydE1hcCxcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgZm9ybWF0XG4gIH1cbn0pO1xuXG4vKipcbiAqIFNldCB0aGUgZmlsZW5hbWUgdXNlZCB3aGVuIGV4cG9ydGluZyBhbiBIVE1MIG9yIEpTT04gbWFwXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgZmlsZSBuYW1lIHdpdGhvdXQgZXh0ZW5zaW9uXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldEV4cG9ydE1hcEZpbGVOYW1lVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtwYXlsb2FkOiBmaWxlTmFtZX06IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydE1hcEZpbGVOYW1lVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgZXhwb3J0TWFwOiB7XG4gICAgLi4uc3RhdGUuZXhwb3J0TWFwLFxuICAgIGZpbGVOYW1lXG4gIH1cbn0pO1xuXG4vKipcbiAqIFNldCB0aGUgZXhwb3J0IGh0bWwgbWFwIG1vZGVcbiAqIEBwYXJhbSBzdGF0ZSAtIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkIHRvIGJlIHNldCAoYXZhaWxhYmxlIG1vZGVzOiBFWFBPUlRfSFRNTF9NQVBfTU9ERVMpXG4gKiBAcmV0dXJuIG5leHRTdGF0ZVxuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0TWFwSFRNTE1vZGVVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IG1vZGV9OiBVSVN0YXRlQWN0aW9ucy5TZXRFeHBvcnRIVE1MTWFwTW9kZVVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGV4cG9ydE1hcDoge1xuICAgIC4uLnN0YXRlLmV4cG9ydE1hcCxcbiAgICBbRVhQT1JUX01BUF9GT1JNQVRTLkhUTUxdOiB7XG4gICAgICAuLi5zdGF0ZS5leHBvcnRNYXBbRVhQT1JUX01BUF9GT1JNQVRTLkhUTUxdLFxuICAgICAgbW9kZVxuICAgIH1cbiAgfVxufSk7XG5cbi8qKlxuICogV2hldGhlciB0byBrZWVwIGxheWVyIGFjY2VzcyB0b2tlbnMgaW4gZXhwb3J0ZWQgSFRNTCBhbmQgSlNPTiBtYXBzLlxuICogQHBhcmFtIHN0YXRlIC0gYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgLSBpbmNsdWRlIGxheWVyIEFQSSBrZXlzXG4gKiBAcmV0dXJuIG5leHRTdGF0ZVxuICovXG5leHBvcnQgY29uc3Qgc2V0RXhwb3J0SW5jbHVkZUxheWVyQXBpS2V5c1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogaW5jbHVkZUxheWVyQXBpS2V5c306IFVJU3RhdGVBY3Rpb25zLlNldEV4cG9ydEluY2x1ZGVMYXllckFwaUtleXNVcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBleHBvcnRNYXA6IHtcbiAgICAuLi5zdGF0ZS5leHBvcnRNYXAsXG4gICAgaW5jbHVkZUxheWVyQXBpS2V5c1xuICB9XG59KTtcblxuLyoqXG4gKiBBZGRzIGEgbmV3IG5vdGlmaWNhdGlvbi5cbiAqIFVwZGF0ZXMgYSBub3RpZmljYXRpb24gaW4gY2FzZSBvZiBtYXRjaGluZyBpZHMuXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgUGFyYW1zIG9mIGEgbm90aWZpY2F0aW9uXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGFkZE5vdGlmaWNhdGlvblVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZH06IFVJU3RhdGVBY3Rpb25zLkFkZE5vdGlmaWNhdGlvblVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4ge1xuICBjb25zdCBvbGROb3RpZmljYXRpb25zID0gc3RhdGUubm90aWZpY2F0aW9ucyB8fCBbXTtcbiAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICBjb25zdCBwYXlsb2FkSWQgPSBwYXlsb2FkPy5pZDtcbiAgY29uc3Qgbm90aWZpY2F0aW9uVG9VcGRhdGUgPSBwYXlsb2FkSWQgPyBvbGROb3RpZmljYXRpb25zLmZpbmQobiA9PiBuLmlkID09PSBwYXlsb2FkSWQpIDogbnVsbDtcblxuICBsZXQgbm90aWZpY2F0aW9ucztcbiAgaWYgKG5vdGlmaWNhdGlvblRvVXBkYXRlKSB7XG4gICAgbm90aWZpY2F0aW9ucyA9IG9sZE5vdGlmaWNhdGlvbnMubWFwKG4gPT5cbiAgICAgIG4uaWQgPT09IHBheWxvYWRJZCA/IGNyZWF0ZU5vdGlmaWNhdGlvbih7Li4ucGF5bG9hZCwgY291bnQ6IG4uY291bnQgKyAxfSkgOiBuXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICBub3RpZmljYXRpb25zID0gWy4uLm9sZE5vdGlmaWNhdGlvbnMsIGNyZWF0ZU5vdGlmaWNhdGlvbihwYXlsb2FkKV07XG4gIH1cblxuICByZXR1cm4gey4uLnN0YXRlLCBub3RpZmljYXRpb25zfTtcbn07XG5cbi8qKlxuICogUmVtb3ZlIGEgbm90aWZpY2F0aW9uXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgaWQgb2YgdGhlIG5vdGlmaWNhdGlvbiB0byBiZSByZW1vdmVkXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHJlbW92ZU5vdGlmaWNhdGlvblVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBVaVN0YXRlLFxuICB7cGF5bG9hZDogaWR9OiBVSVN0YXRlQWN0aW9ucy5SZW1vdmVOb3RpZmljYXRpb25VcGRhdGVyQWN0aW9uXG4pOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBub3RpZmljYXRpb25zOiBzdGF0ZS5ub3RpZmljYXRpb25zLmZpbHRlcihuID0+IG4uaWQgIT09IGlkKVxufSk7XG5cbi8qKlxuICogRmlyZWQgd2hlbiBmaWxlIGxvYWRpbmcgYmVnaW5cbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgbG9hZEZpbGVzVXBkYXRlciA9IChzdGF0ZTogVWlTdGF0ZSk6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIGxvYWRGaWxlczoge1xuICAgIC4uLnN0YXRlLmxvYWRGaWxlcyxcbiAgICBmaWxlTG9hZGluZzogdHJ1ZVxuICB9XG59KTtcblxuLyoqXG4gKiBIYW5kbGVzIGxvYWRpbmcgZmlsZSBzdWNjZXNzIGFuZCBzZXQgZmlsZUxvYWRpbmcgcHJvcGVydHkgdG8gZmFsc2VcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZSBgdWlTdGF0ZWBcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICovXG5leHBvcnQgY29uc3QgbG9hZEZpbGVzU3VjY2Vzc1VwZGF0ZXIgPSAoc3RhdGU6IFVpU3RhdGUpOiBVaVN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICBsb2FkRmlsZXM6IHtcbiAgICAuLi5zdGF0ZS5sb2FkRmlsZXMsXG4gICAgZmlsZUxvYWRpbmc6IGZhbHNlXG4gIH1cbn0pO1xuXG4vKipcbiAqIEhhbmRsZXMgbG9hZCBmaWxlIGVycm9yIGFuZCBzZXQgZmlsZUxvYWRpbmcgcHJvcGVydHkgdG8gZmFsc2VcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZVxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5lcnJvclxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBsb2FkRmlsZXNFcnJVcGRhdGVyID0gKHN0YXRlOiBVaVN0YXRlLCB7ZXJyb3J9OiBMb2FkRmlsZXNFcnJVcGRhdGVyQWN0aW9uKTogVWlTdGF0ZSA9PlxuICBhZGROb3RpZmljYXRpb25VcGRhdGVyKFxuICAgIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgbG9hZEZpbGVzOiB7XG4gICAgICAgIC4uLnN0YXRlLmxvYWRGaWxlcyxcbiAgICAgICAgZmlsZUxvYWRpbmc6IGZhbHNlXG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBwYXlsb2FkOiBlcnJvck5vdGlmaWNhdGlvbih7XG4gICAgICAgIG1lc3NhZ2U6IChlcnJvciB8fCB7fSkubWVzc2FnZSB8fCAnRmFpbGVkIHRvIHVwbG9hZCBmaWxlcycsXG4gICAgICAgIHRvcGljOiBERUZBVUxUX05PVElGSUNBVElPTl9UT1BJQ1MuZ2xvYmFsXG4gICAgICB9KVxuICAgIH1cbiAgKTtcblxuLyoqXG4gKiBIYW5kbGVzIHRvZ2dsZSBtYXAgc3BsaXQgYW5kIHJlc2V0IGFsbCBtYXAgY29udHJvbCBpbmRleCB0byAwXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGVcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlU3BsaXRNYXBVcGRhdGVyID0gKHN0YXRlOiBVaVN0YXRlKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgbWFwQ29udHJvbHM6IE9iamVjdC5lbnRyaWVzKHN0YXRlLm1hcENvbnRyb2xzKS5yZWR1Y2UoXG4gICAgKGFjYywgZW50cnkpID0+ICh7XG4gICAgICAuLi5hY2MsXG4gICAgICBbZW50cnlbMF1dOiB7XG4gICAgICAgIC4uLihlbnRyeVsxXSBhcyBNYXBDb250cm9sSXRlbSksXG4gICAgICAgIGFjdGl2ZU1hcEluZGV4OiAwXG4gICAgICB9XG4gICAgfSksXG4gICAge30gYXMgTWFwQ29udHJvbHNcbiAgKVxufSk7XG5cbi8qKlxuICogVG9nZ2xlIG1vZGFsIGRhdGFcbiAqIEBtZW1iZXJvZiB1aVN0YXRlVXBkYXRlcnNcbiAqIEBwYXJhbSBzdGF0ZVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzaG93RGF0YXNldFRhYmxlVXBkYXRlciA9IChzdGF0ZTogVWlTdGF0ZSk6IFVpU3RhdGUgPT5cbiAgdG9nZ2xlTW9kYWxVcGRhdGVyKHN0YXRlLCB7cGF5bG9hZDogREFUQV9UQUJMRV9JRH0pO1xuXG4vKipcbiAqIFNldCB0aGUgbG9jYWxlIG9mIHRoZSBVSVxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQubG9jYWxlIGxvY2FsZVxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRMb2NhbGVVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IHtsb2NhbGV9fTogVUlTdGF0ZUFjdGlvbnMuU2V0TG9jYWxlVXBkYXRlckFjdGlvblxuKTogVWlTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgbG9jYWxlXG59KTtcblxuLyoqXG4gKiBTZXQgdGhlIHRoZW1lIG9mIHRoZSBVSVxuICogQG1lbWJlcm9mIHVpU3RhdGVVcGRhdGVyc1xuICogQHBhcmFtIHN0YXRlIGB1aVN0YXRlYFxuICogQHBhcmFtIGFjdGlvblxuICogQHBhcmFtIGFjdGlvbi5wYXlsb2FkXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQudGhlbWUgdGhlbWVcbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0VGhlbWVVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IHt0aGVtZX19OiBVSVN0YXRlQWN0aW9ucy5TZXRUaGVtZVVwZGF0ZXJBY3Rpb25cbik6IFVpU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIHRoZW1lXG59KTtcblxuLyoqXG4gKiBUb2dnbGUgbGF5ZXIgcGFuZWwgbGlzdCB2aWV3XG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgbGF5ZXIgcGFuZWwgbGlzdFZpZXcgdmFsdWUuIENhbiBiZSAnbGlzdCcgb3IgJ3NvcnRCeURhdGFzZXQnXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVBhbmVsTGlzdFZpZXdVcGRhdGVyID0gKFxuICBzdGF0ZTogVWlTdGF0ZSxcbiAge3BheWxvYWQ6IHtwYW5lbElkLCBsaXN0Vmlld319OiBVSVN0YXRlQWN0aW9ucy5Ub2dnbGVQYW5lbExpc3RWaWV3QWN0aW9uXG4pOiBVaVN0YXRlID0+IHtcbiAgY29uc3Qgc3RhdGVQcm9wID1cbiAgICBwYW5lbElkID09PSAnbGF5ZXInXG4gICAgICA/ICdsYXllclBhbmVsTGlzdFZpZXcnXG4gICAgICA6IHBhbmVsSWQgPT09ICdmaWx0ZXInXG4gICAgICA/ICdmaWx0ZXJQYW5lbExpc3RWaWV3J1xuICAgICAgOiBudWxsO1xuICBpZiAoIXN0YXRlUHJvcCB8fCBzdGF0ZVtzdGF0ZVByb3BdID09PSBsaXN0Vmlldykge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIFtzdGF0ZVByb3BdOiBsaXN0Vmlld1xuICB9O1xufTtcblxuLyoqXG4gKiBNZXJnZSByZWNlaXZlZCB1aSBzdGF0ZSBjb25maWcgd2hlbiBsb2FkaW5nIGEgc2F2ZWQgbWFwXG4gKiBAbWVtYmVyb2YgdWlTdGF0ZVVwZGF0ZXJzXG4gKiBAcGFyYW0gc3RhdGUgYHVpU3RhdGVgXG4gKiBAcGFyYW0gYWN0aW9uXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQgc2F2ZWQgbWFwIGNvbmZpZyBge21hcFN0eWxlLCB2aXNTdGF0ZSwgbWFwU3RhdGUsIHVpU3RhdGV9YFxuICogQHJldHVybnMgbmV4dFN0YXRlXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCByZWNlaXZlTWFwQ29uZmlnVXBkYXRlciA9IChcbiAgc3RhdGU6IFVpU3RhdGUsXG4gIHtcbiAgICBwYXlsb2FkOiB7Y29uZmlnfVxuICB9OiB7XG4gICAgdHlwZT86ICh0eXBlb2YgQWN0aW9uVHlwZXMpWydSRUNFSVZFX01BUF9DT05GSUcnXTtcbiAgICBwYXlsb2FkOiBSZWNlaXZlTWFwQ29uZmlnUGF5bG9hZDtcbiAgfVxuKTogVWlTdGF0ZSA9PiB7XG4gIGNvbnN0IHt1aVN0YXRlfSA9IGNvbmZpZyB8fCB7fTtcbiAgaWYgKCF1aVN0YXRlKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgbGV0IG5ld1N0YXRlID0gc3RhdGU7XG5cbiAgaWYgKHVpU3RhdGUubWFwQ29udHJvbHM/Lm1hcExlZ2VuZD8uYWN0aXZlKSB7XG4gICAgY29uc3QgY3VycmVudExlZ2VuZCA9IG5ld1N0YXRlLm1hcENvbnRyb2xzLm1hcExlZ2VuZDtcbiAgICBuZXdTdGF0ZSA9IHtcbiAgICAgIC4uLm5ld1N0YXRlLFxuICAgICAgbWFwQ29udHJvbHM6IHtcbiAgICAgICAgLi4ubmV3U3RhdGUubWFwQ29udHJvbHMsXG4gICAgICAgIG1hcExlZ2VuZDoge1xuICAgICAgICAgIHNob3c6IHRydWUsXG4gICAgICAgICAgLi4uY3VycmVudExlZ2VuZCxcbiAgICAgICAgICBhY3RpdmU6IHRydWUsXG4gICAgICAgICAgYWN0aXZlTWFwSW5kZXg6IDBcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBpZiAodWlTdGF0ZS5tYXBDb250cm9scz8uY2hhcnQ/LmFjdGl2ZSkge1xuICAgIGNvbnN0IGN1cnJlbnRDaGFydCA9IG5ld1N0YXRlLm1hcENvbnRyb2xzLmNoYXJ0O1xuICAgIG5ld1N0YXRlID0ge1xuICAgICAgLi4ubmV3U3RhdGUsXG4gICAgICBtYXBDb250cm9sczoge1xuICAgICAgICAuLi5uZXdTdGF0ZS5tYXBDb250cm9scyxcbiAgICAgICAgY2hhcnQ6IHtcbiAgICAgICAgICBzaG93OiB0cnVlLFxuICAgICAgICAgIC4uLmN1cnJlbnRDaGFydCxcbiAgICAgICAgICBhY3RpdmU6IHRydWUsXG4gICAgICAgICAgYWN0aXZlTWFwSW5kZXg6IDBcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBpZiAodWlTdGF0ZS5tYXBDb250cm9scz8ubWFwTGVnZW5kPy5zZXR0aW5ncykge1xuICAgIG5ld1N0YXRlID0gc2V0TWFwQ29udHJvbFNldHRpbmdzVXBkYXRlcihuZXdTdGF0ZSwge1xuICAgICAgcGF5bG9hZDoge3BhbmVsSWQ6ICdtYXBMZWdlbmQnLCBzZXR0aW5nczogdWlTdGF0ZS5tYXBDb250cm9scy5tYXBMZWdlbmQuc2V0dGluZ3N9XG4gICAgfSBhcyBVSVN0YXRlQWN0aW9ucy5zZXRNYXBDb250cm9sU2V0dGluZ3NVcGRhdGVyQWN0aW9uKTtcbiAgfVxuXG4gIGlmICh1aVN0YXRlLmxvY2FsZSkge1xuICAgIG5ld1N0YXRlID0gc2V0TG9jYWxlVXBkYXRlcihuZXdTdGF0ZSwge1xuICAgICAgcGF5bG9hZDoge2xvY2FsZTogdWlTdGF0ZS5sb2NhbGV9XG4gICAgfSBhcyBVSVN0YXRlQWN0aW9ucy5TZXRMb2NhbGVVcGRhdGVyQWN0aW9uKTtcbiAgfVxuXG4gIGlmICh1aVN0YXRlLnRoZW1lKSB7XG4gICAgbmV3U3RhdGUgPSBzZXRUaGVtZVVwZGF0ZXIobmV3U3RhdGUsIHtcbiAgICAgIHBheWxvYWQ6IHt0aGVtZTogdWlTdGF0ZS50aGVtZX1cbiAgICB9IGFzIFVJU3RhdGVBY3Rpb25zLlNldFRoZW1lVXBkYXRlckFjdGlvbik7XG4gIH1cblxuICByZXR1cm4gbmV3U3RhdGU7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTs7QUFFQSxTQUNFQSxXQUFXLEVBQ1hDLGFBQWEsRUFDYkMsMkJBQTJCLEVBQzNCQyxjQUFjLEVBQ2RDLGdCQUFnQixFQUNoQkMscUJBQXFCLEVBQ3JCQyxpQkFBaUIsRUFDakJDLGtCQUFrQixFQUNsQkMsV0FBVyxFQUNYQyxZQUFZLEVBQ1pDLEtBQUssUUFDQSxzQkFBc0I7QUFDN0IsU0FBUUMsWUFBWSxRQUFPLHlCQUF5QjtBQUNwRCxTQUNFQyxrQkFBa0IsRUFDbEJDLGlCQUFpQixFQUNqQkMsd0JBQXdCLEVBQ3hCQyxvQkFBb0IsRUFDcEJDLG1CQUFtQixFQUNuQkMsaUJBQWlCLFFBQ1osa0JBQWtCO0FBQ3pCLFNBQVFDLFFBQVEsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQU8sb0JBQW9CO0FBc0I3RCxPQUFPLElBQU1DLHlCQUF5QixHQUFHLE9BQU87QUFDaEQsT0FBTyxJQUFNQyxhQUFhLEdBQUd0QixXQUFXOztBQUV4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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
|