@sapui5/sap.fe.controls 1.139.0 → 1.141.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/sap/fe/controls/.library +1 -1
- package/src/sap/fe/controls/easyFilter/EasyFilterBarContainer.js +97 -19
- package/src/sap/fe/controls/easyFilter/EasyFilterBarContainer.tsx +113 -27
- package/src/sap/fe/controls/easyFilter/EasyFilterInput.js +28 -28
- package/src/sap/fe/controls/easyFilter/EasyFilterInput.tsx +41 -34
- package/src/sap/fe/controls/easyFilter/PXFeedback.js +26 -0
- package/src/sap/fe/controls/easyFilter/PXFeedback.ts +14 -0
- package/src/sap/fe/controls/easyFilter/innerControls/ValueHelpPreviewFactory.js +22 -2
- package/src/sap/fe/controls/easyFilter/innerControls/ValueHelpPreviewFactory.ts +34 -1
- package/src/sap/fe/controls/inlineEdit/InlineEditIndicator.js +1 -2
- package/src/sap/fe/controls/inlineEdit/InlineEditIndicator.tsx +0 -1
- package/src/sap/fe/controls/library.js +1 -1
- package/src/sap/fe/controls/messagebundle.properties +7 -3
- package/src/sap/fe/controls/messagebundle_ar.properties +4 -2
- package/src/sap/fe/controls/messagebundle_bg.properties +4 -2
- package/src/sap/fe/controls/messagebundle_ca.properties +4 -2
- package/src/sap/fe/controls/messagebundle_cnr.properties +4 -2
- package/src/sap/fe/controls/messagebundle_cs.properties +4 -2
- package/src/sap/fe/controls/messagebundle_cy.properties +4 -2
- package/src/sap/fe/controls/messagebundle_da.properties +4 -2
- package/src/sap/fe/controls/messagebundle_de.properties +8 -6
- package/src/sap/fe/controls/messagebundle_el.properties +4 -2
- package/src/sap/fe/controls/messagebundle_en.properties +4 -2
- package/src/sap/fe/controls/messagebundle_en_GB.properties +4 -2
- package/src/sap/fe/controls/messagebundle_en_US_saprigi.properties +4 -2
- package/src/sap/fe/controls/messagebundle_es.properties +4 -2
- package/src/sap/fe/controls/messagebundle_es_MX.properties +4 -2
- package/src/sap/fe/controls/messagebundle_et.properties +4 -2
- package/src/sap/fe/controls/messagebundle_fi.properties +4 -2
- package/src/sap/fe/controls/messagebundle_fr.properties +5 -3
- package/src/sap/fe/controls/messagebundle_fr_CA.properties +4 -2
- package/src/sap/fe/controls/messagebundle_hi.properties +4 -2
- package/src/sap/fe/controls/messagebundle_hr.properties +4 -2
- package/src/sap/fe/controls/messagebundle_hu.properties +4 -2
- package/src/sap/fe/controls/messagebundle_id.properties +4 -2
- package/src/sap/fe/controls/messagebundle_it.properties +4 -2
- package/src/sap/fe/controls/messagebundle_iw.properties +4 -2
- package/src/sap/fe/controls/messagebundle_ja.properties +4 -2
- package/src/sap/fe/controls/messagebundle_kk.properties +4 -2
- package/src/sap/fe/controls/messagebundle_ko.properties +4 -2
- package/src/sap/fe/controls/messagebundle_lt.properties +4 -2
- package/src/sap/fe/controls/messagebundle_lv.properties +4 -2
- package/src/sap/fe/controls/messagebundle_mk.properties +4 -2
- package/src/sap/fe/controls/messagebundle_ms.properties +4 -2
- package/src/sap/fe/controls/messagebundle_nl.properties +4 -2
- package/src/sap/fe/controls/messagebundle_no.properties +4 -2
- package/src/sap/fe/controls/messagebundle_pl.properties +4 -2
- package/src/sap/fe/controls/messagebundle_pt.properties +4 -2
- package/src/sap/fe/controls/messagebundle_pt_PT.properties +4 -2
- package/src/sap/fe/controls/messagebundle_ro.properties +4 -2
- package/src/sap/fe/controls/messagebundle_ru.properties +4 -2
- package/src/sap/fe/controls/messagebundle_sh.properties +4 -2
- package/src/sap/fe/controls/messagebundle_sk.properties +4 -2
- package/src/sap/fe/controls/messagebundle_sl.properties +4 -2
- package/src/sap/fe/controls/messagebundle_sr.properties +4 -2
- package/src/sap/fe/controls/messagebundle_sv.properties +4 -2
- package/src/sap/fe/controls/messagebundle_th.properties +4 -2
- package/src/sap/fe/controls/messagebundle_tr.properties +4 -2
- package/src/sap/fe/controls/messagebundle_uk.properties +4 -2
- package/src/sap/fe/controls/messagebundle_vi.properties +4 -2
- package/src/sap/fe/controls/messagebundle_zh_CN.properties +4 -2
- package/src/sap/fe/controls/messagebundle_zh_TW.properties +4 -2
- package/src/sap/fe/controls/shortcuts/ShortcutExplanationProvider.js +38 -4
- package/src/sap/fe/controls/shortcuts/ShortcutExplanationProvider.tsx +37 -3
- package/src/sap/fe/controls/shortcuts/popup/ShortcutTool.js +8 -1
- package/src/sap/fe/controls/shortcuts/popup/ShortcutTool.tsx +5 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2025 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runtime/jsx", "sap/fe/controls/easyFilter/Token", "sap/m/Button", "sap/m/FlexBox", "sap/m/Popover", "sap/m/Tokenizer", "sap/m/VBox", "sap/m/library", "sap/ui/core/Control", "sap/ui/core/CustomData", "sap/ui/core/Lib", "sap/ui/core/library", "sap/base/util/deepClone", "sap/fe/base/BindingToolkit", "sap/fe/controls/easyFilter/EasyFilterInput", "sap/m/MessageStrip", "sap/m/OverflowToolbar", "sap/m/ToolbarSpacer", "sap/ui/core/message/MessageType", "sap/ui/model/FilterOperator", "sap/ui/performance/trace/FESRHelper", "./AINotice", "./utils", "sap/fe/base/jsx-runtime/jsx", "sap/fe/base/jsx-runtime/Fragment", "sap/fe/base/jsx-runtime/jsxs"], function (Log, ClassSupport, jsx, Token, Button, FlexBox, Popover, Tokenizer, VBox, library, Control, CustomData, Lib, coreLibrary, deepClone, BindingToolkit, EasyFilterInput, MessageStrip, OverflowToolbar, ToolbarSpacer, MessageType, FilterOperator, FESRHelper, $AINotice, EasyFilterUtils, _jsx, _Fragment, _jsxs) {
|
|
5
|
+
sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runtime/jsx", "sap/fe/controls/easyFilter/Token", "sap/m/Button", "sap/m/FlexBox", "sap/m/Popover", "sap/m/Tokenizer", "sap/m/VBox", "sap/m/library", "sap/ui/core/Control", "sap/ui/core/CustomData", "sap/ui/core/Lib", "sap/ui/core/library", "sap/base/util/deepClone", "sap/fe/base/BindingToolkit", "sap/fe/controls/easyFilter/EasyFilterInput", "sap/m/HBox", "sap/m/MessageStrip", "sap/m/MessageToast", "sap/m/OverflowToolbar", "sap/m/ToggleButton", "sap/m/ToolbarSpacer", "sap/ui/core/message/MessageType", "sap/ui/model/FilterOperator", "sap/ui/performance/trace/FESRHelper", "./AINotice", "./PXFeedback", "./utils", "sap/fe/base/jsx-runtime/jsx", "sap/fe/base/jsx-runtime/Fragment", "sap/fe/base/jsx-runtime/jsxs"], function (Log, ClassSupport, jsx, Token, Button, FlexBox, Popover, Tokenizer, VBox, library, Control, CustomData, Lib, coreLibrary, deepClone, BindingToolkit, EasyFilterInput, HBox, MessageStrip, MessageToast, OverflowToolbar, ToggleButton, ToolbarSpacer, MessageType, FilterOperator, FESRHelper, $AINotice, PXFeedback, EasyFilterUtils, _jsx, _Fragment, _jsxs) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _descriptor14, _descriptor15, _descriptor16;
|
|
@@ -24,6 +24,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runt
|
|
|
24
24
|
});
|
|
25
25
|
}
|
|
26
26
|
var _exports = {};
|
|
27
|
+
var triggerPXIntegration = PXFeedback.triggerPXIntegration;
|
|
27
28
|
var AINotice = $AINotice.AINotice;
|
|
28
29
|
var bindState = BindingToolkit.bindState;
|
|
29
30
|
var and = BindingToolkit.and;
|
|
@@ -52,7 +53,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runt
|
|
|
52
53
|
// We need the third arguement because there might be a chance of composite keys scenario
|
|
53
54
|
/*
|
|
54
55
|
* Delivery for beta release for the easy filter feature.
|
|
55
|
-
* @experimental
|
|
56
56
|
*/
|
|
57
57
|
let EasyFilterBarContainer = (_dec = defineUI5Class("sap.fe.controls.easyFilter.EasyFilterBarContainer"), _dec2 = property({
|
|
58
58
|
type: "string"
|
|
@@ -237,8 +237,9 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runt
|
|
|
237
237
|
}
|
|
238
238
|
} else {
|
|
239
239
|
// error
|
|
240
|
-
this.easyFilterInput.current?.setAsInvalid(easyFilterResult.message);
|
|
241
240
|
this.removeNonMandatoryTokens();
|
|
241
|
+
this.setMessageStrip(easyFilterResult.message);
|
|
242
|
+
this.state.messageStripType = MessageType.Warning;
|
|
242
243
|
Log.error("Error while generating filter criteria: ", easyFilterResult.message);
|
|
243
244
|
}
|
|
244
245
|
this.fireEvent("afterQueryProcessing");
|
|
@@ -250,19 +251,16 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runt
|
|
|
250
251
|
* @private
|
|
251
252
|
*/;
|
|
252
253
|
_proto.handleV1Success = function handleV1Success(easyFilterResult) {
|
|
253
|
-
if (easyFilterResult.data.unclear) {
|
|
254
|
-
this.easyFilterInput.current?.setAsInvalid(this.resourceBundle.getText("M_EASY_FILTER_UNCLEAR_INPUT", [easyFilterResult.data.unclear]));
|
|
255
|
-
}
|
|
256
254
|
if (easyFilterResult.data.filter) {
|
|
257
255
|
// We need to show a message to the user that the filter criteria has been generated
|
|
258
256
|
Log.debug("Filter criteria generated: ", JSON.stringify(easyFilterResult.data.filter, null, 2));
|
|
259
257
|
const tokens = [...this.state.tokens].filter(token => token.isRequired);
|
|
260
258
|
|
|
261
259
|
// Clear the previous message strip for validated filters
|
|
262
|
-
this.
|
|
260
|
+
this.clearMessageStrip();
|
|
263
261
|
|
|
264
262
|
// Validate and apply the filter criteria
|
|
265
|
-
EasyFilterUtils.formatData(tokens, easyFilterResult.data.filter, this.filterBarMetadata, this.
|
|
263
|
+
EasyFilterUtils.formatData(tokens, easyFilterResult.data.filter, this.filterBarMetadata, this.setMessageStrip.bind(this));
|
|
266
264
|
|
|
267
265
|
//We only have to call the dataFetcher on the VH tokens which have been asked by the user
|
|
268
266
|
//In Madnatory tokens case the defaultValues are already given, so no need to call dataFetcher on it
|
|
@@ -307,6 +305,9 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runt
|
|
|
307
305
|
}
|
|
308
306
|
const updatedTokens = this.verifySingleSelectTokenValues(tokens);
|
|
309
307
|
this.state.showResult = true;
|
|
308
|
+
this.state.thumbButtonEnabled = true;
|
|
309
|
+
this.state.thumbDownButtonPressed = false;
|
|
310
|
+
this.state.thumbUpButtonPressed = false;
|
|
310
311
|
this.state.tokens = updatedTokens;
|
|
311
312
|
}
|
|
312
313
|
}
|
|
@@ -329,11 +330,17 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runt
|
|
|
329
330
|
}
|
|
330
331
|
return tokens;
|
|
331
332
|
};
|
|
332
|
-
_proto.
|
|
333
|
+
_proto.clearMessageStrip = function clearMessageStrip() {
|
|
334
|
+
this.state.thumbDownButtonPressed = false;
|
|
335
|
+
this.state.thumbUpButtonPressed = false;
|
|
333
336
|
this.state.showMessageStrip = false;
|
|
334
337
|
this.state.messageStripText = "";
|
|
338
|
+
this.state.messageStripType = MessageType.Error;
|
|
335
339
|
};
|
|
336
|
-
_proto.
|
|
340
|
+
_proto.setMessageStrip = function setMessageStrip(text) {
|
|
341
|
+
this.state.thumbDownButtonPressed = false;
|
|
342
|
+
this.state.thumbUpButtonPressed = false;
|
|
343
|
+
this.state.thumbButtonEnabled = true;
|
|
337
344
|
this.state.messageStripText = text;
|
|
338
345
|
this.state.showMessageStrip = true;
|
|
339
346
|
};
|
|
@@ -423,8 +430,68 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runt
|
|
|
423
430
|
// So as a temporary fix overriding the function
|
|
424
431
|
(this.tokenizer?.current).onsapfocusleave = () => {};
|
|
425
432
|
};
|
|
433
|
+
_proto.onThumbUpPressed = function onThumbUpPressed() {
|
|
434
|
+
this.state.thumbUpButtonPressed = true;
|
|
435
|
+
this.state.thumbDownButtonPressed = false;
|
|
436
|
+
triggerPXIntegration("thumbUp");
|
|
437
|
+
this.onThumbPressed();
|
|
438
|
+
};
|
|
439
|
+
_proto.onThumbDownPressed = function onThumbDownPressed() {
|
|
440
|
+
this.state.thumbDownButtonPressed = true;
|
|
441
|
+
this.state.thumbUpButtonPressed = false;
|
|
442
|
+
triggerPXIntegration("thumbDown");
|
|
443
|
+
this.onThumbPressed();
|
|
444
|
+
};
|
|
445
|
+
_proto.onThumbPressed = function onThumbPressed() {
|
|
446
|
+
this.state.thumbButtonEnabled = false;
|
|
447
|
+
MessageToast.show(this.resourceBundle.getText("C_EASY_FILTER_FEEDBACK_SENT"));
|
|
448
|
+
};
|
|
426
449
|
_proto.createContent = function createContent() {
|
|
427
450
|
const $topGoBtn = createReference();
|
|
451
|
+
const thumbUpButtonTokenizer = _jsx(ToggleButton, {
|
|
452
|
+
icon: "sap-icon://thumb-up",
|
|
453
|
+
tooltip: this.resourceBundle.getText("C_EASY_FILTER_THUMBS_UP"),
|
|
454
|
+
type: "Transparent",
|
|
455
|
+
press: () => {
|
|
456
|
+
return this.onThumbUpPressed();
|
|
457
|
+
},
|
|
458
|
+
enabled: bindState(this.state, "thumbButtonEnabled"),
|
|
459
|
+
pressed: bindState(this.state, "thumbUpButtonPressed")
|
|
460
|
+
});
|
|
461
|
+
FESRHelper.setSemanticStepname(thumbUpButtonTokenizer, "press", "fe4:eft:t:thumbUp");
|
|
462
|
+
const thumbDownButtonTokenizer = _jsx(ToggleButton, {
|
|
463
|
+
icon: "sap-icon://thumb-down",
|
|
464
|
+
tooltip: this.resourceBundle.getText("C_EASY_FILTER_THUMBS_DOWN"),
|
|
465
|
+
type: "Transparent",
|
|
466
|
+
press: () => {
|
|
467
|
+
return this.onThumbDownPressed();
|
|
468
|
+
},
|
|
469
|
+
enabled: bindState(this.state, "thumbButtonEnabled"),
|
|
470
|
+
pressed: bindState(this.state, "thumbDownButtonPressed")
|
|
471
|
+
});
|
|
472
|
+
FESRHelper.setSemanticStepname(thumbDownButtonTokenizer, "press", "fe4:eft:t:thumbDown");
|
|
473
|
+
const thumbUpButtonMessageStripe = _jsx(ToggleButton, {
|
|
474
|
+
icon: "sap-icon://thumb-up",
|
|
475
|
+
tooltip: this.resourceBundle.getText("C_EASY_FILTER_THUMBS_UP"),
|
|
476
|
+
type: "Transparent",
|
|
477
|
+
press: () => {
|
|
478
|
+
return this.onThumbUpPressed();
|
|
479
|
+
},
|
|
480
|
+
enabled: bindState(this.state, "thumbButtonEnabled"),
|
|
481
|
+
pressed: bindState(this.state, "thumbUpButtonPressed")
|
|
482
|
+
});
|
|
483
|
+
FESRHelper.setSemanticStepname(thumbUpButtonMessageStripe, "press", "fe4:eft:ms:thumbUp");
|
|
484
|
+
const thumbDownButtonMessageStripe = _jsx(ToggleButton, {
|
|
485
|
+
icon: "sap-icon://thumb-down",
|
|
486
|
+
tooltip: this.resourceBundle.getText("C_EASY_FILTER_THUMBS_DOWN"),
|
|
487
|
+
type: "Transparent",
|
|
488
|
+
press: () => {
|
|
489
|
+
return this.onThumbDownPressed();
|
|
490
|
+
},
|
|
491
|
+
enabled: bindState(this.state, "thumbButtonEnabled"),
|
|
492
|
+
pressed: bindState(this.state, "thumbDownButtonPressed")
|
|
493
|
+
});
|
|
494
|
+
FESRHelper.setSemanticStepname(thumbDownButtonMessageStripe, "press", "fe4:eft:ms:thumbDown");
|
|
428
495
|
const outVBox = _jsxs(VBox, {
|
|
429
496
|
children: [_jsxs(FlexBox, {
|
|
430
497
|
renderType: "Bare",
|
|
@@ -497,6 +564,8 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runt
|
|
|
497
564
|
}, this.state.tokens.key);
|
|
498
565
|
}
|
|
499
566
|
}
|
|
567
|
+
}), _jsxs(HBox, {
|
|
568
|
+
children: [thumbUpButtonTokenizer, ", ", thumbDownButtonTokenizer]
|
|
500
569
|
}), _jsx(Button, {
|
|
501
570
|
text: this.resourceBundle.getText("M_EASY_FILTER_RESET"),
|
|
502
571
|
type: ButtonType.Transparent,
|
|
@@ -520,19 +589,23 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runt
|
|
|
520
589
|
this.state.singleValueMessageStripText = "";
|
|
521
590
|
}
|
|
522
591
|
})
|
|
523
|
-
}),
|
|
592
|
+
}), _jsxs(FlexBox, {
|
|
524
593
|
renderType: "Bare",
|
|
525
|
-
|
|
526
|
-
|
|
594
|
+
class: "sapFeControlsGap8px",
|
|
595
|
+
children: [_jsx(MessageStrip, {
|
|
596
|
+
type: bindState(this.state, "messageStripType"),
|
|
527
597
|
text: bindState(this.state, "messageStripText"),
|
|
528
598
|
showIcon: true,
|
|
529
599
|
enableFormattedText: true,
|
|
530
|
-
visible: bindState(this.state, "showMessageStrip"),
|
|
531
600
|
showCloseButton: true,
|
|
532
601
|
close: () => {
|
|
533
|
-
this.
|
|
534
|
-
}
|
|
535
|
-
|
|
602
|
+
this.clearMessageStrip();
|
|
603
|
+
},
|
|
604
|
+
visible: bindState(this.state, "showMessageStrip")
|
|
605
|
+
}), _jsxs(HBox, {
|
|
606
|
+
visible: bindState(this.state, "showMessageStrip"),
|
|
607
|
+
children: [thumbUpButtonMessageStripe, ", ", thumbDownButtonMessageStripe]
|
|
608
|
+
})]
|
|
536
609
|
})]
|
|
537
610
|
});
|
|
538
611
|
FESRHelper.setSemanticStepname($topGoBtn.current, "press", "fe:ai:search");
|
|
@@ -562,6 +635,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runt
|
|
|
562
635
|
//Set the Value States of all the Tokens back to None
|
|
563
636
|
this.tokenizer.current?.getTokens().forEach(token => token.setProperty("valueState", ValueState.None));
|
|
564
637
|
this.tokenizer.current?.getTokens().forEach(token => token.setProperty("valueStateText", null));
|
|
638
|
+
this.clearMessageStrip(); //clear the message strip for validated filters
|
|
565
639
|
}
|
|
566
640
|
|
|
567
641
|
//The below code updates the existing state by fetching the key and selectedValues
|
|
@@ -748,11 +822,15 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runt
|
|
|
748
822
|
showSingleValueMessageStrip: false,
|
|
749
823
|
singleValueMessageStripText: "",
|
|
750
824
|
messageStripText: "",
|
|
751
|
-
showMessageStrip: false
|
|
825
|
+
showMessageStrip: false,
|
|
826
|
+
messageStripType: MessageType.Error,
|
|
827
|
+
thumbButtonEnabled: true,
|
|
828
|
+
thumbUpButtonPressed: false,
|
|
829
|
+
thumbDownButtonPressed: false
|
|
752
830
|
};
|
|
753
831
|
}
|
|
754
832
|
}), _class2)) || _class);
|
|
755
833
|
_exports = EasyFilterBarContainer;
|
|
756
834
|
return _exports;
|
|
757
835
|
}, false);
|
|
758
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFYXN5RmlsdGVyQmFyQ29udGFpbmVyIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJwcm9wZXJ0eSIsInR5cGUiLCJfZGVjMyIsIl9kZWM0IiwiX2RlYzUiLCJfZGVjNiIsIl9kZWM3IiwiX2RlYzgiLCJkZWZpbmVSZWZlcmVuY2UiLCJfZGVjOSIsIl9kZWMxMCIsImFnZ3JlZ2F0aW9uIiwiX2RlYzExIiwiZXZlbnQiLCJfZGVjMTIiLCJfZGVjMTMiLCJfZGVjMTQiLCJfZGVjMTUiLCJfZGVjMTYiLCJfZGVjMTciLCJkZWZpbmVTdGF0ZSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQ29udHJvbCIsInByb3BlcnRpZXMiLCJvdGhlcnMiLCJfdGhpcyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2Rlc2NyaXB0b3I3IiwiX2Rlc2NyaXB0b3I4IiwiX2Rlc2NyaXB0b3I5IiwiX2Rlc2NyaXB0b3IxMCIsIl9kZXNjcmlwdG9yMTEiLCJfZGVzY3JpcHRvcjEyIiwiX2Rlc2NyaXB0b3IxMyIsIl9kZXNjcmlwdG9yMTQiLCJfZGVzY3JpcHRvcjE1IiwiX2Rlc2NyaXB0b3IxNiIsInNob3VsZFRva2VuQ2hhbmdlRXZlbnRGaXJlZCIsImlucHV0RmllbGRSZWFkeSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVzb2x2ZUNvbnRlbnRSZWFkeSIsImluaXRpYWxpemUiLCJfZXhwb3J0cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwic2V0RWFzeUZpbHRlckxpYiIsImVhc3lGaWx0ZXJMaWIiLCJzZXRQcm9wZXJ0eSIsImVhc3lmaWx0ZXIiLCJfX3VpNV9yZXF1aXJlX2FzeW5jIiwic2V0QXBwSWQiLCJhcHBJZCIsImVhc3lGaWx0ZXJJbnB1dCIsImN1cnJlbnQiLCJpbml0U2hlbGxIaXN0b3J5UHJvdmlkZXIiLCJzZXRGaWx0ZXJCYXJNZXRhZGF0YSIsImZpbHRlckJhck1ldGFkYXRhIiwidG9rZW5zIiwiZ2V0RGVmYXVsdFRva2VucyIsImlubmVyQ29udHJvbFBvcG92ZXIiLCJjcmVhdGVQb3BvdmVyRm9ySW5uZXJDb250cm9scyIsImFkZERlcGVuZGVudCIsInN0YXRlIiwic2hvd1Jlc3VsdCIsImxlbmd0aCIsImlzTWFuZGF0b3J5Q2hlY2tSZXF1aXJlZCIsImluaXQiLCJyZXNvdXJjZUJ1bmRsZSIsIkxpYiIsImdldFJlc291cmNlQnVuZGxlRm9yIiwiY29udGVudCIsImNyZWF0ZUNvbnRlbnQiLCJtYW5kYXRvcnlLZXlNYXAiLCJmb3JFYWNoIiwiZGF0YSIsImlzUmVxdWlyZWQiLCJyZXF1aXJlZCIsIm5hbWUiLCJwdXNoIiwia2V5IiwibGFiZWwiLCJrZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzIiwiZGVmYXVsdFZhbHVlIiwiYnVzeSIsIm9uRW50ZXJQcmVzc2VkIiwiZSIsIm9uR29QcmVzcyIsImdldFBhcmFtZXRlciIsImNoZWNrSWZBbGxNYW5kYXRvcnlUb2tlbnNGaWxsZWQiLCJ0b2tlbnNJblN0YXRlIiwiZ2V0VW5TZXRNYW5kYXRvcnlUb2tlbnNJbkN1cnJlbnRTdGF0ZSIsImdldEFjdHVhbFRva2Vuc0Zyb21TdGF0ZSIsInRva2VuIiwiVmFsdWVTdGF0ZSIsIkVycm9yIiwiZ2V0VGV4dCIsIm9wZW5WYWx1ZVN0YXRlTWVzc2FnZSIsImNsb3NlQWxsTWFuZGF0b3J5VmFsdWVTdGF0ZU1lc3NhZ2VzIiwiZWFzeVRva2VucyIsInRva2VuaXplciIsImdldFRva2VucyIsImNsb3NlVmFsdWVTdGF0ZU1lc3NhZ2UiLCJtYWdpY1F1ZXJ5IiwicmVzZXRTdGF0ZSIsInRva2VuaXplckVkaXRhYmxlIiwiZmlyZUV2ZW50IiwiZWFzeUZpbHRlck1ldGFkYXRhIiwidmVyc2lvbiIsImVudGl0eVNldCIsImNvbnRleHRQYXRoIiwiZmllbGRzIiwiZWFzeUZpbHRlclJlc3VsdCIsImVhc3lGaWx0ZXIiLCJzdWNjZXNzIiwiaXNIaXN0b3J5RW5hYmxlZCIsImFkZFJlY2VudFF1ZXJ5IiwiaGFuZGxlVjFTdWNjZXNzIiwic2V0QXNJbnZhbGlkIiwibWVzc2FnZSIsInJlbW92ZU5vbk1hbmRhdG9yeVRva2VucyIsIkxvZyIsImVycm9yIiwidW5jbGVhciIsImZpbHRlciIsImRlYnVnIiwiSlNPTiIsInN0cmluZ2lmeSIsImNsZWFyTWVzc2FnZVN0cmlwRm9yVmFsaWRhdGVkRmlsdGVycyIsIkVhc3lGaWx0ZXJVdGlscyIsImZvcm1hdERhdGEiLCJzZXRNZXNzYWdlU3RyaXBGb3JWYWxpZGF0ZWRGaWx0ZXJzIiwiYmluZCIsImFsbFZhbHVlSGVscFRva2VucyIsInJlc3VsdCIsInJlcXVpcmVkVmFsdWVIZWxwVG9rZW5zIiwidmFsdWVIZWxwVG9rZW4iLCJmaW5kIiwibGxtUmVzdWx0IiwiZGF0YUZldGNoZXIiLCJ1cGRhdGVkVG9rZW5zIiwia2V5U3BlY2lmaWNWYWx1ZSIsImlkeCIsIm9wZXJhdG9yIiwiRmlsdGVyT3BlcmF0b3IiLCJCVCIsIk5CIiwic2VsZWN0ZWRWYWx1ZXMiLCJ2YWx1ZSIsImRlc2NyaXB0aW9uIiwic3ViSW5keCIsInZlcmlmeVNpbmdsZVNlbGVjdFRva2VuVmFsdWVzIiwic2luZ2xlU2VsZWN0VG9rZW5MYWJlbHMiLCJzcGxpY2UiLCJzaW5nbGVWYWx1ZU1lc3NhZ2VTdHJpcFRleHQiLCJqb2luIiwic2hvd1NpbmdsZVZhbHVlTWVzc2FnZVN0cmlwIiwic2hvd01lc3NhZ2VTdHJpcCIsIm1lc3NhZ2VTdHJpcFRleHQiLCJ0ZXh0IiwiX2pzeCIsIlBvcG92ZXIiLCJpZCIsImdldElkIiwic2hvd0Fycm93Iiwic2hvd0hlYWRlciIsInBsYWNlbWVudCIsIlBsYWNlbWVudFR5cGUiLCJCb3R0b20iLCJjbGFzcyIsImNoaWxkcmVuIiwiZm9vdGVyIiwiZ2V0VG9vbGJhciIsInRvb2xiYXIiLCJva0J1dHRvbiIsImdldE9rQnV0dG9uIiwic2hvd0FsbEJ1dHRvbiIsImdldFNob3dBbGxCdXR0b24iLCJPdmVyZmxvd1Rvb2xiYXIiLCJfanN4cyIsIl9GcmFnbWVudCIsIlRvb2xiYXJTcGFjZXIiLCJCdXR0b24iLCJCdXR0b25UeXBlIiwiRW1waGFzaXplZCIsImZvcm1hdFRva2VucyIsIm1hcCIsInZhbCIsImRlZXBDbG9uZSIsIm9uU3RhdGVDaGFuZ2UiLCJjaGFuZ2VkUHJvcHMiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJpbmNsdWRlcyIsIm9uc2FwZm9jdXNsZWF2ZSIsIiR0b3BHb0J0biIsImNyZWF0ZVJlZmVyZW5jZSIsIm91dFZCb3giLCJWQm94IiwiRmxleEJveCIsInJlbmRlclR5cGUiLCJFYXN5RmlsdGVySW5wdXQiLCJyZWNvbW1lbmRlZFZhbHVlcyIsInJlZiIsImVudGVyUHJlc3NlZCIsInF1ZXJ5Q2hhbmdlZCIsInF1ZXJ5IiwibGl2ZUNoYW5nZSIsImljb24iLCJwcmVzcyIsIm9uR29CdXR0b25QcmVzcyIsInZpc2libGUiLCJiaW5kU3RhdGUiLCJhbGlnbkl0ZW1zIiwiRmxleEFsaWduSXRlbXMiLCJDZW50ZXIiLCJ3cmFwIiwiRmxleFdyYXAiLCJXcmFwIiwianVzdGlmeUNvbnRlbnQiLCJGbGV4SnVzdGlmeUNvbnRlbnQiLCJTcGFjZUJldHdlZW4iLCJBSU5vdGljZSIsIlRva2VuaXplciIsImVkaXRhYmxlIiwiYW5kIiwicmVuZGVyTW9kZSIsIlRva2VuaXplclJlbmRlck1vZGUiLCJMb29zZSIsImN0eCIsIm9iamVjdCIsImdldE9iamVjdCIsIlRva2VuIiwiaXRlbXMiLCJtYW5kYXRvcnkiLCJpc0tleU1hbmRhdG9yeSIsImRlbGV0ZSIsInRva2VuSW5kZXgiLCJmaW5kSW5kZXgiLCJuZXdUb2tlbnMiLCJjb25jYXQiLCJ1cGRhdGVGaWx0ZXJJbnB1dCIsImN1c3RvbURhdGEiLCJDdXN0b21EYXRhIiwiY29kZUxpc3QiLCJUcmFuc3BhcmVudCIsIiRzZWFyY2hJbnB1dCIsImZvY3VzIiwiTWVzc2FnZVN0cmlwIiwic2hvd0ljb24iLCJlbmFibGVGb3JtYXR0ZWRUZXh0Iiwic2hvd0Nsb3NlQnV0dG9uIiwiY2xvc2UiLCJNZXNzYWdlVHlwZSIsIkZFU1JIZWxwZXIiLCJzZXRTZW1hbnRpY1N0ZXBuYW1lIiwiY3VycmVudElucHV0VmFsdWUiLCJnZXRWYWx1ZSIsImN1cnJlbnRJbnB1dFBsYWNlaG9sZGVyIiwiZ2V0UGxhY2Vob2xkZXIiLCJzZXRWYWx1ZSIsImNsZWFyQWxsRmlsdGVycyIsIk5vbmUiLCJ1cGRhdGVUb2tlbkFycmF5IiwiY2hhbmdlVHlwZSIsIm5ld1Rva2VuU3BlY2lmaWNWYWx1ZXMiLCJ0b2tlbktleSIsInQiLCJzZXRTZWxlY3RlZFZhbHVlcyIsImNsb3NlSW5uZXJDb250cm9sUG9wb3ZlciIsIm5ld1Rva2VuIiwiY3VyclZhbHVlIiwic2V0UGxhY2Vob2xkZXIiLCJnZXRUb2tlbnNJbkluaXRpYWxTdGF0ZSIsIm1hbmRhdG9yeVRva2VucyIsInJlcXVpcmVkS2V5cyIsImdldEtleSIsInJlbmRlciIsInJtIiwiY29udHJvbCIsImpzeCIsInJlbmRlclVzaW5nUmVuZGVyTWFuYWdlciIsImdldEFnZ3JlZ2F0aW9uIiwiQ29udHJvbCIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRWFzeUZpbHRlckJhckNvbnRhaW5lci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSB7IEVuaGFuY2VXaXRoVUk1LCBTdGF0ZU9mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHtcblx0YWdncmVnYXRpb24sXG5cdGNyZWF0ZVJlZmVyZW5jZSxcblx0ZGVmaW5lUmVmZXJlbmNlLFxuXHRkZWZpbmVTdGF0ZSxcblx0ZGVmaW5lVUk1Q2xhc3MsXG5cdGV2ZW50LFxuXHRwcm9wZXJ0eSxcblx0dHlwZSBQcm9wZXJ0aWVzT2Zcbn0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvanN4LXJ1bnRpbWUvanN4XCI7XG5pbXBvcnQganN4IGZyb20gXCJzYXAvZmUvYmFzZS9qc3gtcnVudGltZS9qc3hcIjtcbmltcG9ydCBUb2tlbiBmcm9tIFwic2FwL2ZlL2NvbnRyb2xzL2Vhc3lGaWx0ZXIvVG9rZW5cIjtcbmltcG9ydCBCdXR0b24gZnJvbSBcInNhcC9tL0J1dHRvblwiO1xuaW1wb3J0IEZsZXhCb3ggZnJvbSBcInNhcC9tL0ZsZXhCb3hcIjtcbmltcG9ydCBQb3BvdmVyIGZyb20gXCJzYXAvbS9Qb3BvdmVyXCI7XG5pbXBvcnQgVG9rZW5pemVyIGZyb20gXCJzYXAvbS9Ub2tlbml6ZXJcIjtcbmltcG9ydCBWQm94IGZyb20gXCJzYXAvbS9WQm94XCI7XG5pbXBvcnQgeyBCdXR0b25UeXBlLCBGbGV4QWxpZ25JdGVtcywgRmxleEp1c3RpZnlDb250ZW50LCBGbGV4V3JhcCwgUGxhY2VtZW50VHlwZSwgVG9rZW5pemVyUmVuZGVyTW9kZSB9IGZyb20gXCJzYXAvbS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSBVSTVFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIHsgJENvbnRyb2xTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IEN1c3RvbURhdGEgZnJvbSBcInNhcC91aS9jb3JlL0N1c3RvbURhdGFcIjtcbmltcG9ydCBMaWIgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IHR5cGUgUmVuZGVyTWFuYWdlciBmcm9tIFwic2FwL3VpL2NvcmUvUmVuZGVyTWFuYWdlclwiO1xuaW1wb3J0IHsgVmFsdWVTdGF0ZSB9IGZyb20gXCJzYXAvdWkvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuXG5pbXBvcnQgdHlwZSB7IFByaW1pdGl2ZVR5cGUgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB0eXBlIFJlc291cmNlQnVuZGxlIGZyb20gXCJzYXAvYmFzZS9pMThuL1Jlc291cmNlQnVuZGxlXCI7XG5pbXBvcnQgZGVlcENsb25lIGZyb20gXCJzYXAvYmFzZS91dGlsL2RlZXBDbG9uZVwiO1xuaW1wb3J0IHsgYW5kLCBiaW5kU3RhdGUgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCBFYXN5RmlsdGVySW5wdXQgZnJvbSBcInNhcC9mZS9jb250cm9scy9lYXN5RmlsdGVyL0Vhc3lGaWx0ZXJJbnB1dFwiO1xuaW1wb3J0IHR5cGUgRWFzeUZpbHRlclRva2VuIGZyb20gXCJzYXAvZmUvY29udHJvbHMvZWFzeUZpbHRlci9Ub2tlblwiO1xuaW1wb3J0IE1lc3NhZ2VTdHJpcCBmcm9tIFwic2FwL20vTWVzc2FnZVN0cmlwXCI7XG5pbXBvcnQgT3ZlcmZsb3dUb29sYmFyIGZyb20gXCJzYXAvbS9PdmVyZmxvd1Rvb2xiYXJcIjtcbmltcG9ydCBUb29sYmFyU3BhY2VyIGZyb20gXCJzYXAvbS9Ub29sYmFyU3BhY2VyXCI7XG5pbXBvcnQgTWVzc2FnZVR5cGUgZnJvbSBcInNhcC91aS9jb3JlL21lc3NhZ2UvTWVzc2FnZVR5cGVcIjtcbmltcG9ydCBGaWx0ZXJPcGVyYXRvciBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlck9wZXJhdG9yXCI7XG5pbXBvcnQgRkVTUkhlbHBlciBmcm9tIFwic2FwL3VpL3BlcmZvcm1hbmNlL3RyYWNlL0ZFU1JIZWxwZXJcIjtcbmltcG9ydCB0eXBlIEVhc3lGaWx0ZXIgZnJvbSBcInV4L2VuZy9maW9yaWFpL3JldXNlL2Vhc3lmaWx0ZXIvRWFzeUZpbHRlclwiO1xuaW1wb3J0IHR5cGUgeyBFYXN5RmlsdGVyTWV0YWRhdGEsIEVhc3lGaWx0ZXJSZXN1bHQsIFByb3BlcnR5TWV0YWRhdGEsIFN1Y2Nlc3MgfSBmcm9tIFwidXgvZW5nL2Zpb3JpYWkvcmV1c2UvZWFzeWZpbHRlci9FYXN5RmlsdGVyXCI7XG5pbXBvcnQgdHlwZSB7IEV2ZW50SGFuZGxlciB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi8uLi90eXBlcy9leHRlbnNpb25fdHlwZXNcIjtcbmltcG9ydCB7IEFJTm90aWNlIH0gZnJvbSBcIi4vQUlOb3RpY2VcIjtcbmltcG9ydCBFYXN5RmlsdGVyVXRpbHMgZnJvbSBcIi4vdXRpbHNcIjtcblxuLy9Gb3IgY3VycmVudCByZWxlYXNlIHdlIGFyZSBpZ25vcmluZyBcIkFsbFwiIGFuZCBcIkFueVwiXG4vL1dlIGNhbiBpbmNvcnBvcmF0ZSB0aGVzZSB2YWx1ZXMgaW4gZnV0dXJlXG5leHBvcnQgdHlwZSBCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMgPSBbYm9vbGVhbiwgYm9vbGVhbl0gfCBbc3RyaW5nLCBzdHJpbmddIHwgW251bWJlciwgbnVtYmVyXSB8IFtEYXRlLCBEYXRlXTtcblxudHlwZSBsbG1SZXN1bHRGb3JTZWxlY3RlZFZhbHVlc1R5cGUgPSBzdHJpbmcgfCBEYXRlIHwgYm9vbGVhbiB8IG51bWJlcjtcblxuZXhwb3J0IHR5cGUgQ29kZUxpc3RUeXBlID0ge1xuXHR2YWx1ZTogUHJpbWl0aXZlVHlwZTtcblx0ZGVzY3JpcHRpb246IGxsbVJlc3VsdEZvclNlbGVjdGVkVmFsdWVzVHlwZTtcbn07XG5cbmV4cG9ydCB0eXBlIFZhbHVlSGVscEJldHdlZW5TZWxlY3RlZFZhbHVlcyA9IFtDb2RlTGlzdFR5cGUsIENvZGVMaXN0VHlwZV07XG5cbmV4cG9ydCB0eXBlIFZhbHVlSGVscFNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbiA9XG5cdHwge1xuXHRcdFx0b3BlcmF0b3I6IEV4Y2x1ZGU8RmlsdGVyT3BlcmF0b3IsIEZpbHRlck9wZXJhdG9yLkJUIHwgRmlsdGVyT3BlcmF0b3IuTkI+O1xuXHRcdFx0c2VsZWN0ZWRWYWx1ZXM6IENvZGVMaXN0VHlwZVtdO1xuXHRcdFx0bm9NYXRjaD86IGJvb2xlYW47XG5cdCAgfVxuXHR8IHtcblx0XHRcdG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvci5CVCB8IEZpbHRlck9wZXJhdG9yLk5CO1xuXHRcdFx0c2VsZWN0ZWRWYWx1ZXM6IFZhbHVlSGVscEJldHdlZW5TZWxlY3RlZFZhbHVlcztcblx0XHRcdG5vTWF0Y2g/OiBib29sZWFuO1xuXHQgIH07XG5cbi8vV2Ugd2lsbCBiZSBoYW5kbGluZyBcIkFMTFwiIGFuZCBcIkFOWVwiIGF0IGxhdGVyIHBvaW50IG9mIHRpbWVcbmV4cG9ydCB0eXBlIFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uID1cblx0fCB7XG5cdFx0XHRvcGVyYXRvcjogRXhjbHVkZTxGaWx0ZXJPcGVyYXRvciwgRmlsdGVyT3BlcmF0b3IuQlQgfCBGaWx0ZXJPcGVyYXRvci5OQj47XG5cdFx0XHRzZWxlY3RlZFZhbHVlczogc3RyaW5nW10gfCBib29sZWFuW10gfCBudW1iZXJbXSB8IERhdGVbXTtcblx0ICB9XG5cdHwge1xuXHRcdFx0b3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yLkJUIHwgRmlsdGVyT3BlcmF0b3IuTkI7XG5cdFx0XHRzZWxlY3RlZFZhbHVlczogQmV0d2VlblNlbGVjdGVkVmFsdWVzO1xuXHQgIH07XG5cbmV4cG9ydCB0eXBlIFRva2VuVHlwZSA9IFwiTWVudVdpdGhDaGVja0JveFwiIHwgXCJDYWxlbmRhclwiIHwgXCJUaW1lXCIgfCBcIlZhbHVlSGVscFwiIHwgXCJNZW51V2l0aFNpbmdsZVNlbGVjdFwiO1xuXG5leHBvcnQgdHlwZSBWYWx1ZUhlbHBUb2tlbkRlZmluaXRpb24gPSB7XG5cdGtleTogc3RyaW5nO1xuXHRsYWJlbDogc3RyaW5nO1xuXHRrZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzOiBWYWx1ZUhlbHBTZWxlY3RlZFZhbHVlc0RlZmluaXRpb25bXTtcblx0dHlwZTogXCJWYWx1ZUhlbHBcIjtcblx0YnVzeTogYm9vbGVhbjtcblx0aXNSZXF1aXJlZD86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBOb25WYWx1ZUhlbHBUb2tlbkRlZmluaXRpb24gPSB7XG5cdGtleTogc3RyaW5nO1xuXHRsYWJlbDogc3RyaW5nO1xuXHRrZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzOiBUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdO1xuXHR0eXBlOiBFeGNsdWRlPFRva2VuVHlwZSwgXCJWYWx1ZUhlbHBcIj47XG5cdGlzUmVxdWlyZWQ/OiBib29sZWFuO1xuXHRidXN5OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgVG9rZW5EZWZpbml0aW9uID0gVmFsdWVIZWxwVG9rZW5EZWZpbml0aW9uIHwgTm9uVmFsdWVIZWxwVG9rZW5EZWZpbml0aW9uO1xuXG5leHBvcnQgdHlwZSBUb2tlblNldHRlcnMgPSBcInNldFNlbGVjdGVkVmFsdWVzXCI7XG5cbmV4cG9ydCB0eXBlIEVhc3lGaWx0ZXJQcm9wZXJ0eU1ldGFkYXRhID0gUHJvcGVydHlNZXRhZGF0YSAmXG5cdChcblx0XHR8IHtcblx0XHRcdFx0dHlwZTogXCJWYWx1ZUhlbHBcIjtcblx0XHRcdFx0ZGVmYXVsdFZhbHVlPzogVmFsdWVIZWxwU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW107XG5cdFx0ICB9XG5cdFx0fCB7XG5cdFx0XHRcdHR5cGU6IEV4Y2x1ZGU8VG9rZW5UeXBlLCBcIlZhbHVlSGVscFwiPjtcblx0XHRcdFx0ZGVmYXVsdFZhbHVlPzogVG9rZW5TZWxlY3RlZFZhbHVlc0RlZmluaXRpb25bXTtcblx0XHQgIH1cblx0KSAmIHtcblx0XHRmaWx0ZXJSZXN0cmljdGlvbj86XG5cdFx0XHR8IFwiU2luZ2xlVmFsdWVcIlxuXHRcdFx0fCBcIk11bHRpVmFsdWVcIlxuXHRcdFx0fCBcIlNpbmdsZVJhbmdlXCJcblx0XHRcdHwgXCJNdWx0aVJhbmdlXCJcblx0XHRcdHwgXCJTZWFyY2hFeHByZXNzaW9uXCJcblx0XHRcdHwgXCJNdWx0aVJhbmdlT3JTZWFyY2hFeHByZXNzaW9uXCI7XG5cdFx0aGlkZGVuRmlsdGVyPzogYm9vbGVhbjtcblx0fTtcblxuLy8gV2UgbmVlZCB0aGUgdGhpcmQgYXJndWVtZW50IGJlY2F1c2UgdGhlcmUgbWlnaHQgYmUgYSBjaGFuY2Ugb2YgY29tcG9zaXRlIGtleXMgc2NlbmFyaW9cbnR5cGUgRGF0YUZldGNoZXIgPSAoXG5cdHByb3BlcnR5TmFtZTogc3RyaW5nLFxuXHR2YWx1ZU9mQ3VycmVudFByb3BlcnR5OiBUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdLFxuXHRsbG1SZXN1bHQ6IFN1Y2Nlc3M8RWFzeUZpbHRlclJlc3VsdD5cbikgPT4gUHJvbWlzZTxWYWx1ZUhlbHBTZWxlY3RlZFZhbHVlc0RlZmluaXRpb25bXT47XG5cbmludGVyZmFjZSBGb2N1c0hhbmRsaW5nQ29udHJvbCB7XG5cdG9uc2FwZm9jdXNsZWF2ZT86ICgpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCB0eXBlIEVhc3lGaWx0ZXJCYXJDb250YWluZXIkU2hvd1ZhbHVlSGVscEV2ZW50ID0gVUk1RXZlbnQ8XG5cdHtcblx0XHRrZXk6IHN0cmluZztcblx0XHR2YWx1ZXM6IHVua25vd25bXTtcblx0XHRyZXNvbHZlOiAodmFsdWU6IFZhbHVlSGVscFNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdKSA9PiB2b2lkO1xuXHRcdHJlamVjdDogKHJlYXNvbj86IEVycm9yKSA9PiB2b2lkO1xuXHR9LFxuXHRFYXN5RmlsdGVyQmFyQ29udGFpbmVyXG4+O1xuXG4vKlxuICogRGVsaXZlcnkgZm9yIGJldGEgcmVsZWFzZSBmb3IgdGhlIGVhc3kgZmlsdGVyIGZlYXR1cmUuXG4gKiBAZXhwZXJpbWVudGFsXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb250cm9scy5lYXN5RmlsdGVyLkVhc3lGaWx0ZXJCYXJDb250YWluZXJcIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVhc3lGaWx0ZXJCYXJDb250YWluZXIgZXh0ZW5kcyBDb250cm9sIHtcblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRjb250ZXh0UGF0aD86IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGFwcElkPzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0ZWFzeUZpbHRlckxpYj86IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImFycmF5XCIgfSlcblx0ZmlsdGVyQmFyTWV0YWRhdGE/OiBFYXN5RmlsdGVyUHJvcGVydHlNZXRhZGF0YVtdO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYXJyYXlcIiB9KVxuXHRyZWNvbW1lbmRlZFZhbHVlcz86IHN0cmluZ1tdO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiZnVuY3Rpb25cIiB9KVxuXHRkYXRhRmV0Y2hlcj86IERhdGFGZXRjaGVyO1xuXG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHRlYXN5RmlsdGVySW5wdXQhOiBSZWY8RW5oYW5jZVdpdGhVSTU8RWFzeUZpbHRlcklucHV0Pj47XG5cblx0QGRlZmluZVJlZmVyZW5jZSgpXG5cdHRva2VuaXplciE6IFJlZjxUb2tlbml6ZXI+O1xuXG5cdEBhZ2dyZWdhdGlvbih7IHR5cGU6IFwic2FwLnVpLmNvcmUuQ29udHJvbFwiIH0pXG5cdGNvbnRlbnQ/OiBDb250cm9sO1xuXG5cdEBldmVudCgpXG5cdHRva2Vuc0NoYW5nZWQ/OiBFdmVudEhhbmRsZXI8VUk1RXZlbnQ8eyB0b2tlbnM6IFRva2VuRGVmaW5pdGlvbltdIH0sIEVhc3lGaWx0ZXJCYXJDb250YWluZXI+PjtcblxuXHRAZXZlbnQoKVxuXHRxdWVyeUNoYW5nZWQ/OiBFdmVudEhhbmRsZXI8VUk1RXZlbnQ8eyBxdWVyeTogc3RyaW5nIH0sIEVhc3lGaWx0ZXJCYXJDb250YWluZXI+PjtcblxuXHRAZXZlbnQoKVxuXHRzaG93VmFsdWVIZWxwPzogRXZlbnRIYW5kbGVyPEVhc3lGaWx0ZXJCYXJDb250YWluZXIkU2hvd1ZhbHVlSGVscEV2ZW50PjtcblxuXHRAZXZlbnQoKVxuXHRjbGVhckZpbHRlcnM/OiBFdmVudEhhbmRsZXI7XG5cblx0QGV2ZW50KClcblx0YmVmb3JlUXVlcnlQcm9jZXNzaW5nPzogRXZlbnRIYW5kbGVyO1xuXG5cdEBldmVudCgpXG5cdGFmdGVyUXVlcnlQcm9jZXNzaW5nPzogRXZlbnRIYW5kbGVyO1xuXG5cdHByaXZhdGUgcmVzb3VyY2VCdW5kbGUhOiBSZXNvdXJjZUJ1bmRsZTtcblxuXHRAZGVmaW5lU3RhdGUoKVxuXHRwcm90ZWN0ZWQgc3RhdGU6IFN0YXRlT2Y8e1xuXHRcdHNob3dSZXN1bHQ6IGJvb2xlYW47XG5cdFx0dG9rZW5zOiBUb2tlbkRlZmluaXRpb25bXTtcblx0XHR0b2tlbml6ZXJFZGl0YWJsZTogYm9vbGVhbjtcblx0XHRzaG93U2luZ2xlVmFsdWVNZXNzYWdlU3RyaXA/OiBib29sZWFuO1xuXHRcdHNpbmdsZVZhbHVlTWVzc2FnZVN0cmlwVGV4dD86IHN0cmluZztcblx0XHRtZXNzYWdlU3RyaXBUZXh0Pzogc3RyaW5nO1xuXHRcdHNob3dNZXNzYWdlU3RyaXA/OiBib29sZWFuO1xuXHR9PiA9IHtcblx0XHRzaG93UmVzdWx0OiBmYWxzZSxcblx0XHR0b2tlbnM6IFtdIGFzIFRva2VuRGVmaW5pdGlvbltdLFxuXHRcdHRva2VuaXplckVkaXRhYmxlOiB0cnVlLFxuXHRcdHNob3dTaW5nbGVWYWx1ZU1lc3NhZ2VTdHJpcDogZmFsc2UsXG5cdFx0c2luZ2xlVmFsdWVNZXNzYWdlU3RyaXBUZXh0OiBcIlwiLFxuXHRcdG1lc3NhZ2VTdHJpcFRleHQ6IFwiXCIsXG5cdFx0c2hvd01lc3NhZ2VTdHJpcDogZmFsc2Vcblx0fTtcblxuXHRwcml2YXRlIGlubmVyQ29udHJvbFBvcG92ZXI/OiBQb3BvdmVyO1xuXG5cdHByaXZhdGUgb2tCdXR0b24/OiBCdXR0b247XG5cblx0cHJpdmF0ZSBzaG93QWxsQnV0dG9uPzogQnV0dG9uO1xuXG5cdHByaXZhdGUgdG9vbGJhcj86IE92ZXJmbG93VG9vbGJhcjtcblxuXHRwcml2YXRlIG1hbmRhdG9yeUtleU1hcD86IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+O1xuXG5cdC8vSWYgc2V0IHRvIHRydWUgdGhlIGVycm9yIHN0YXRlIGNhbiBiZSBzZWVuIG9uIHRoZSB0b2tlbnNcblx0cHJpdmF0ZSBpc01hbmRhdG9yeUNoZWNrUmVxdWlyZWQ/OiBib29sZWFuO1xuXG5cdHByaXZhdGUgc2hvdWxkVG9rZW5DaGFuZ2VFdmVudEZpcmVkID0gdHJ1ZTtcblxuXHRlYXN5ZmlsdGVyPzogUHJvbWlzZTx0eXBlb2YgRWFzeUZpbHRlciB8IHVuZGVmaW5lZD47XG5cblx0cHJpdmF0ZSByZXNvbHZlQ29udGVudFJlYWR5ITogKCkgPT4gdm9pZDtcblxuXHRwcml2YXRlIGlucHV0RmllbGRSZWFkeTogUHJvbWlzZTx2b2lkPiA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG5cdFx0dGhpcy5yZXNvbHZlQ29udGVudFJlYWR5ID0gcmVzb2x2ZTtcblx0fSk7XG5cblx0Y29uc3RydWN0b3IocHJvcGVydGllczogc3RyaW5nIHwgKCRDb250cm9sU2V0dGluZ3MgJiBQcm9wZXJ0aWVzT2Y8RWFzeUZpbHRlckJhckNvbnRhaW5lcj4pLCBvdGhlcnM/OiAkQ29udHJvbFNldHRpbmdzKSB7XG5cdFx0c3VwZXIocHJvcGVydGllcyBhcyBzdHJpbmcsIG90aGVycyk7XG5cdFx0dGhpcy5pbml0aWFsaXplKCk7XG5cdH1cblxuXHRzZXRFYXN5RmlsdGVyTGliKGVhc3lGaWx0ZXJMaWI6IHN0cmluZyk6IHZvaWQge1xuXHRcdHRoaXMuc2V0UHJvcGVydHkoXCJlYXN5RmlsdGVyTGliXCIsIGVhc3lGaWx0ZXJMaWIpO1xuXHRcdGlmICh0aGlzLmVhc3lGaWx0ZXJMaWIpIHtcblx0XHRcdHRoaXMuZWFzeWZpbHRlciA9IGltcG9ydCh0aGlzLmVhc3lGaWx0ZXJMaWIpO1xuXHRcdH1cblx0fVxuXG5cdGFzeW5jIHNldEFwcElkKGFwcElkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRpZiAoIXRoaXMuYXBwSWQpIHtcblx0XHRcdHRoaXMuc2V0UHJvcGVydHkoXCJhcHBJZFwiLCBhcHBJZCwgdHJ1ZSk7XG5cdFx0XHRhd2FpdCB0aGlzLmlucHV0RmllbGRSZWFkeTtcblx0XHRcdHRoaXMuZWFzeUZpbHRlcklucHV0LmN1cnJlbnQ/LnNldFByb3BlcnR5KFwiYXBwSWRcIiwgYXBwSWQsIHRydWUpO1xuXHRcdFx0YXdhaXQgdGhpcy5lYXN5RmlsdGVySW5wdXQuY3VycmVudD8uaW5pdFNoZWxsSGlzdG9yeVByb3ZpZGVyKCk7XG5cdFx0fVxuXHR9XG5cblx0c2V0RmlsdGVyQmFyTWV0YWRhdGEoZmlsdGVyQmFyTWV0YWRhdGE6IEVhc3lGaWx0ZXJQcm9wZXJ0eU1ldGFkYXRhW10pOiB2b2lkIHtcblx0XHRpZiAoIXRoaXMuZmlsdGVyQmFyTWV0YWRhdGEpIHtcblx0XHRcdHRoaXMuc2V0UHJvcGVydHkoXCJmaWx0ZXJCYXJNZXRhZGF0YVwiLCBmaWx0ZXJCYXJNZXRhZGF0YSwgdHJ1ZSk7XG5cdFx0XHQvLyBwb3B1bGF0ZSB0aGUgdG9rZW5zIHdpdGggZGVmYXVsdCB2YWx1ZVxuXHRcdFx0Y29uc3QgdG9rZW5zID0gdGhpcy5nZXREZWZhdWx0VG9rZW5zKCk7XG5cdFx0XHRpZiAoIXRoaXMuaW5uZXJDb250cm9sUG9wb3Zlcikge1xuXHRcdFx0XHR0aGlzLmlubmVyQ29udHJvbFBvcG92ZXIgPSB0aGlzLmNyZWF0ZVBvcG92ZXJGb3JJbm5lckNvbnRyb2xzKCk7XG5cdFx0XHRcdHRoaXMuYWRkRGVwZW5kZW50KHRoaXMuaW5uZXJDb250cm9sUG9wb3Zlcik7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLnN0YXRlLnRva2VucyA9IHRva2Vucztcblx0XHRcdHRoaXMuc3RhdGUuc2hvd1Jlc3VsdCA9IHRva2Vucy5sZW5ndGggPiAwO1xuXHRcdFx0Ly8vV2UgZG9uJ3Qgd2FudCB0byBkaXNwbGF5IGVycm9yIHZhbHVlU3RhdGVNZXNzYWdlIGFzIHNvb24gdGhlIGNvbnRyb2wgcmVuZGVyc1xuXHRcdFx0dGhpcy5pc01hbmRhdG9yeUNoZWNrUmVxdWlyZWQgPSB0cnVlO1xuXHRcdFx0Ly9vblRva2VuQ2hhbmdlIGV2ZW50IHNob3VsZCBub3QgYmUgZmlyZWQgd2hlbiBpbml0aWFsIHNldCBvZiB0b2tlbnMgYXJlIHNldFxuXHRcdFx0dGhpcy5zaG91bGRUb2tlbkNoYW5nZUV2ZW50RmlyZWQgPSBmYWxzZTtcblx0XHR9XG5cdH1cblxuXHRpbml0KCk6IHZvaWQge1xuXHRcdHRoaXMucmVzb3VyY2VCdW5kbGUgPSBMaWIuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUuY29udHJvbHNcIikhO1xuXHR9XG5cblx0aW5pdGlhbGl6ZSgpOiB2b2lkIHtcblx0XHR0aGlzLmNvbnRlbnQgPSB0aGlzLmNyZWF0ZUNvbnRlbnQoKTtcblx0XHR0aGlzLnJlc29sdmVDb250ZW50UmVhZHkoKTtcblx0XHRpZiAoIXRoaXMuaW5uZXJDb250cm9sUG9wb3Zlcikge1xuXHRcdFx0dGhpcy5pbm5lckNvbnRyb2xQb3BvdmVyID0gdGhpcy5jcmVhdGVQb3BvdmVyRm9ySW5uZXJDb250cm9scygpO1xuXHRcdFx0dGhpcy5hZGREZXBlbmRlbnQodGhpcy5pbm5lckNvbnRyb2xQb3BvdmVyKTtcblx0XHR9XG5cdFx0Ly9XZSBkb24ndCB3YW50IHRvIGRpc3BsYXkgZXJyb3IgdmFsdWVTdGF0ZU1lc3NhZ2UgYXMgc29vbiB0aGUgY29udHJvbCByZW5kZXJzXG5cdFx0dGhpcy5pc01hbmRhdG9yeUNoZWNrUmVxdWlyZWQgPSB0cnVlO1xuXHRcdC8vb25Ub2tlbkNoYW5nZSBldmVudCBzaG91bGQgbm90IGJlIGZpcmVkIHdoZW4gaW5pdGlhbCBzZXQgb2YgdG9rZW5zIGFyZSBzZXRcblx0XHR0aGlzLnNob3VsZFRva2VuQ2hhbmdlRXZlbnRGaXJlZCA9IGZhbHNlO1xuXHR9XG5cblx0Ly8gVGhpcyBtZXRob2Qgc2hvdWxkIGJlIHVzZWQgYmVmb3JlIHVwZGF0aW5nIHRoZSBzdGF0ZSwgb25jZSB0aGUgc3RhdGUgaXMgdXBkYXRlZCB0aGUgcHJldmlvdXMgb3ZlcnJpZGRlbiBkZWZhdWx0IHZhbHVlcyB3b3VsZCBiZSBnb25lIGZvcmV2ZXJcblx0Z2V0RGVmYXVsdFRva2VucygpOiBUb2tlbkRlZmluaXRpb25bXSB7XG5cdFx0Y29uc3QgdG9rZW5zOiBUb2tlbkRlZmluaXRpb25bXSA9IFtdO1xuXHRcdGlmICghdGhpcy5tYW5kYXRvcnlLZXlNYXApIHtcblx0XHRcdHRoaXMubWFuZGF0b3J5S2V5TWFwID0ge307XG5cdFx0fVxuXHRcdHRoaXMuZmlsdGVyQmFyTWV0YWRhdGE/LmZvckVhY2goKGRhdGEpID0+IHtcblx0XHRcdGNvbnN0IGlzUmVxdWlyZWQgPSBkYXRhLnJlcXVpcmVkO1xuXHRcdFx0aWYgKGlzUmVxdWlyZWQpIHtcblx0XHRcdFx0KHRoaXMubWFuZGF0b3J5S2V5TWFwIGFzIFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+KVtkYXRhLm5hbWVdID0gdHJ1ZTtcblx0XHRcdFx0Ly9DaGVjayB3aGV0aGVyIHRoZSBrZXlzIGV4aXN0IGluIHRoZSBjdXJyZW50IHN0YXRlIGVsc2UgcHVzaCBpdCBhY3Jvc3Ncblx0XHRcdFx0aWYgKGRhdGEudHlwZSA9PT0gXCJWYWx1ZUhlbHBcIikge1xuXHRcdFx0XHRcdHRva2Vucy5wdXNoKHtcblx0XHRcdFx0XHRcdGtleTogZGF0YS5uYW1lLFxuXHRcdFx0XHRcdFx0bGFiZWw6IGRhdGEubGFiZWwgYXMgc3RyaW5nLFxuXHRcdFx0XHRcdFx0a2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlczogKGRhdGEuZGVmYXVsdFZhbHVlIGFzIFZhbHVlSGVscFNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdKSA/PyBbXSxcblx0XHRcdFx0XHRcdHR5cGU6IGRhdGEudHlwZSxcblx0XHRcdFx0XHRcdGJ1c3k6IGZhbHNlLFxuXHRcdFx0XHRcdFx0aXNSZXF1aXJlZFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRva2Vucy5wdXNoKHtcblx0XHRcdFx0XHRcdGtleTogZGF0YS5uYW1lLFxuXHRcdFx0XHRcdFx0bGFiZWw6IGRhdGEubGFiZWwgYXMgc3RyaW5nLFxuXHRcdFx0XHRcdFx0a2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlczogKGRhdGEuZGVmYXVsdFZhbHVlIGFzIFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW10pID8/IFtdLFxuXHRcdFx0XHRcdFx0dHlwZTogZGF0YS50eXBlLFxuXHRcdFx0XHRcdFx0YnVzeTogZmFsc2UsXG5cdFx0XHRcdFx0XHRpc1JlcXVpcmVkXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KTtcblx0XHRyZXR1cm4gdG9rZW5zO1xuXHR9XG5cblx0b25FbnRlclByZXNzZWQoZTogVUk1RXZlbnQ8eyBxdWVyeTogc3RyaW5nIH0sIEVhc3lGaWx0ZXJJbnB1dD4pOiB2b2lkIHtcblx0XHR0aGlzLm9uR29QcmVzcyhlLmdldFBhcmFtZXRlcihcInF1ZXJ5XCIpKTtcblx0fVxuXG5cdC8vTWFraW5nIGl0IHB1YmxpYyBiZWNhdXNlIGluIGxpdmUgbW9kZSB0aGUgYXBwIGRldmVsb3BlciBjYW4gZGVjaWRlIHdoZXRoZXIgdG8gZGlzcGxheSB0aGUgZXJyb3IgVmFsdWVTdGF0ZU1lc3NhZ2Vcblx0Ly9JbiBub24tbGl2ZSBtb2RlICwgd2UgYXJlIGFscmVhZHkgaW50ZXJuYWxseSBoYW5kbGluZyBpdCBvbiBldmVyeSB0aW1lIHRpbWUgYSB1c2VyIGNsaWNrcyBvbiBHTy9FbnRlciBidXR0b25zXG5cdHB1YmxpYyBjaGVja0lmQWxsTWFuZGF0b3J5VG9rZW5zRmlsbGVkKCk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IHRva2Vuc0luU3RhdGUgPSB0aGlzLmdldFVuU2V0TWFuZGF0b3J5VG9rZW5zSW5DdXJyZW50U3RhdGUoKTtcblx0XHRpZiAodG9rZW5zSW5TdGF0ZS5sZW5ndGggIT09IDApIHtcblx0XHRcdGNvbnN0IHRva2VucyA9IHRoaXMuZ2V0QWN0dWFsVG9rZW5zRnJvbVN0YXRlKHRva2Vuc0luU3RhdGUpO1xuXHRcdFx0dG9rZW5zPy5mb3JFYWNoKCh0b2tlbikgPT4ge1xuXHRcdFx0XHR0b2tlbi5zZXRQcm9wZXJ0eShcInZhbHVlU3RhdGVcIiwgVmFsdWVTdGF0ZS5FcnJvcik7XG5cdFx0XHRcdHRva2VuLnNldFByb3BlcnR5KFwidmFsdWVTdGF0ZVRleHRcIiwgdGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9NQU5EQVRPUllfVE9LRU5fRVJST1JcIikpO1xuXHRcdFx0XHR0b2tlbi5vcGVuVmFsdWVTdGF0ZU1lc3NhZ2UoKTtcblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdHB1YmxpYyBjbG9zZUFsbE1hbmRhdG9yeVZhbHVlU3RhdGVNZXNzYWdlcygpOiB2b2lkIHtcblx0XHRjb25zdCBlYXN5VG9rZW5zID0gdGhpcy50b2tlbml6ZXIuY3VycmVudD8uZ2V0VG9rZW5zKCkgYXMgRWFzeUZpbHRlclRva2VuW107XG5cdFx0ZWFzeVRva2Vucy5mb3JFYWNoKCh0b2tlbikgPT4gdG9rZW4uY2xvc2VWYWx1ZVN0YXRlTWVzc2FnZSgpKTtcblx0fVxuXG5cdGFzeW5jIG9uR29QcmVzcyhtYWdpY1F1ZXJ5OiBzdHJpbmcgfCB1bmRlZmluZWQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRpZiAoIW1hZ2ljUXVlcnkpIHtcblx0XHRcdHRoaXMucmVzZXRTdGF0ZSgpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHR0aGlzLnN0YXRlLnRva2VuaXplckVkaXRhYmxlID0gdHJ1ZTtcblxuXHRcdC8vIENhbGwgQUkgc2VydmljZSB0byBnZXQgdGhlIGZpbHRlciBjcml0ZXJpYVxuXHRcdGNvbnN0IGVhc3lmaWx0ZXIgPSBhd2FpdCB0aGlzLmVhc3lmaWx0ZXI7XG5cdFx0aWYgKCFlYXN5ZmlsdGVyKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHRoaXMuZmlyZUV2ZW50KFwiYmVmb3JlUXVlcnlQcm9jZXNzaW5nXCIpO1xuXG5cdFx0Y29uc3QgZWFzeUZpbHRlck1ldGFkYXRhOiBFYXN5RmlsdGVyTWV0YWRhdGEgPSB7XG5cdFx0XHR2ZXJzaW9uOiAxLFxuXHRcdFx0ZW50aXR5U2V0OiB0aGlzLmNvbnRleHRQYXRoLFxuXHRcdFx0ZmllbGRzOiB0aGlzLmZpbHRlckJhck1ldGFkYXRhIGFzIEVhc3lGaWx0ZXJQcm9wZXJ0eU1ldGFkYXRhW11cblx0XHR9O1xuXG5cdFx0Y29uc3QgZWFzeUZpbHRlclJlc3VsdCA9IGF3YWl0IGVhc3lmaWx0ZXIuZWFzeUZpbHRlcihtYWdpY1F1ZXJ5LCBlYXN5RmlsdGVyTWV0YWRhdGEpO1xuXG5cdFx0aWYgKGVhc3lGaWx0ZXJSZXN1bHQuc3VjY2Vzcykge1xuXHRcdFx0Ly9Pbmx5IGFkZCB0aGUgcmVjZW50IHF1ZXJ5IHdoZW4gdGhlIGNhbGwgaXMgc3VjY2Vzc1xuXHRcdFx0Ly9EbyBub3QgdHJhY2sgdGhlIHJlY2VudCBxdWVyaWVzIHdoZW4gdGhlIGlzSGlzdG9yeUVuYWJsZWQgaXMgc2V0IHRvIGZhbHNlXG5cdFx0XHQvL0l0IHdvdWxkIGJlIGEgdmlvbGF0aW9uIHRvIHVzZXJzIHByaXZhY3lcblx0XHRcdGlmICh0aGlzLmVhc3lGaWx0ZXJJbnB1dC5jdXJyZW50Py5pc0hpc3RvcnlFbmFibGVkKCkgPz8gZmFsc2UpIHtcblx0XHRcdFx0dGhpcy5lYXN5RmlsdGVySW5wdXQuY3VycmVudD8uYWRkUmVjZW50UXVlcnkobWFnaWNRdWVyeSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoZWFzeUZpbHRlclJlc3VsdC5kYXRhLnZlcnNpb24gPT09IDEpIHtcblx0XHRcdFx0dGhpcy5oYW5kbGVWMVN1Y2Nlc3MoZWFzeUZpbHRlclJlc3VsdCk7XG5cdFx0XHR9IGVsc2UgaWYgKGVhc3lGaWx0ZXJSZXN1bHQuZGF0YS52ZXJzaW9uID09PSAyKSB7XG5cdFx0XHRcdC8vIENyZWF0ZSB0aGUgc2FwLnVpLm1vZGVsLkZpbHRlciBmcm9tIHRoZSBmaWx0ZXIgYW5kIGFwcGx5IGl0IGRpcmVjdGx5IHRvIHRoZSBsaXN0IGJpbmRpbmdcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gZXJyb3Jcblx0XHRcdHRoaXMuZWFzeUZpbHRlcklucHV0LmN1cnJlbnQ/LnNldEFzSW52YWxpZChlYXN5RmlsdGVyUmVzdWx0Lm1lc3NhZ2UpO1xuXHRcdFx0dGhpcy5yZW1vdmVOb25NYW5kYXRvcnlUb2tlbnMoKTtcblx0XHRcdExvZy5lcnJvcihcIkVycm9yIHdoaWxlIGdlbmVyYXRpbmcgZmlsdGVyIGNyaXRlcmlhOiBcIiwgZWFzeUZpbHRlclJlc3VsdC5tZXNzYWdlKTtcblx0XHR9XG5cblx0XHR0aGlzLmZpcmVFdmVudChcImFmdGVyUXVlcnlQcm9jZXNzaW5nXCIpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXMgdGhlIHN1Y2Nlc3MgcmVzcG9uc2UgZnJvbSB0aGUgQUkgc2VydmljZSBmb3IgdmVyc2lvbiAxIG9mIHRoZSBlYXN5IGZpbHRlci5cblx0ICogQHBhcmFtIGVhc3lGaWx0ZXJSZXN1bHQgVGhlIHJlc3VsdCBmcm9tIHRoZSBBSSBzZXJ2aWNlXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRwcml2YXRlIGhhbmRsZVYxU3VjY2VzcyhlYXN5RmlsdGVyUmVzdWx0OiBTdWNjZXNzPEVhc3lGaWx0ZXIuRWFzeUZpbHRlclJlc3VsdD4pOiB2b2lkIHtcblx0XHRpZiAoZWFzeUZpbHRlclJlc3VsdC5kYXRhLnVuY2xlYXIpIHtcblx0XHRcdHRoaXMuZWFzeUZpbHRlcklucHV0LmN1cnJlbnQ/LnNldEFzSW52YWxpZChcblx0XHRcdFx0dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9VTkNMRUFSX0lOUFVUXCIsIFtlYXN5RmlsdGVyUmVzdWx0LmRhdGEudW5jbGVhcl0pXG5cdFx0XHQpO1xuXHRcdH1cblx0XHRpZiAoZWFzeUZpbHRlclJlc3VsdC5kYXRhLmZpbHRlcikge1xuXHRcdFx0Ly8gV2UgbmVlZCB0byBzaG93IGEgbWVzc2FnZSB0byB0aGUgdXNlciB0aGF0IHRoZSBmaWx0ZXIgY3JpdGVyaWEgaGFzIGJlZW4gZ2VuZXJhdGVkXG5cdFx0XHRMb2cuZGVidWcoXCJGaWx0ZXIgY3JpdGVyaWEgZ2VuZXJhdGVkOiBcIiwgSlNPTi5zdHJpbmdpZnkoZWFzeUZpbHRlclJlc3VsdC5kYXRhLmZpbHRlciwgbnVsbCwgMikpO1xuXG5cdFx0XHRjb25zdCB0b2tlbnMgPSBbLi4udGhpcy5zdGF0ZS50b2tlbnNdLmZpbHRlcigodG9rZW4pID0+IHRva2VuLmlzUmVxdWlyZWQpO1xuXG5cdFx0XHQvLyBDbGVhciB0aGUgcHJldmlvdXMgbWVzc2FnZSBzdHJpcCBmb3IgdmFsaWRhdGVkIGZpbHRlcnNcblx0XHRcdHRoaXMuY2xlYXJNZXNzYWdlU3RyaXBGb3JWYWxpZGF0ZWRGaWx0ZXJzKCk7XG5cblx0XHRcdC8vIFZhbGlkYXRlIGFuZCBhcHBseSB0aGUgZmlsdGVyIGNyaXRlcmlhXG5cdFx0XHRFYXN5RmlsdGVyVXRpbHMuZm9ybWF0RGF0YShcblx0XHRcdFx0dG9rZW5zLFxuXHRcdFx0XHRlYXN5RmlsdGVyUmVzdWx0LmRhdGEuZmlsdGVyLFxuXHRcdFx0XHR0aGlzLmZpbHRlckJhck1ldGFkYXRhIGFzIEVhc3lGaWx0ZXJQcm9wZXJ0eU1ldGFkYXRhW10sXG5cdFx0XHRcdHRoaXMuc2V0TWVzc2FnZVN0cmlwRm9yVmFsaWRhdGVkRmlsdGVycy5iaW5kKHRoaXMpXG5cdFx0XHQpO1xuXG5cdFx0XHQvL1dlIG9ubHkgaGF2ZSB0byBjYWxsIHRoZSBkYXRhRmV0Y2hlciBvbiB0aGUgVkggdG9rZW5zIHdoaWNoIGhhdmUgYmVlbiBhc2tlZCBieSB0aGUgdXNlclxuXHRcdFx0Ly9JbiBNYWRuYXRvcnkgdG9rZW5zIGNhc2UgdGhlIGRlZmF1bHRWYWx1ZXMgYXJlIGFscmVhZHkgZ2l2ZW4sIHNvIG5vIG5lZWQgdG8gY2FsbCBkYXRhRmV0Y2hlciBvbiBpdFxuXG5cdFx0XHRjb25zdCBhbGxWYWx1ZUhlbHBUb2tlbnMgPSB0b2tlbnMuZmlsdGVyKChyZXN1bHQpID0+IHJlc3VsdC50eXBlID09PSBcIlZhbHVlSGVscFwiKTtcblx0XHRcdGNvbnN0IHJlcXVpcmVkVmFsdWVIZWxwVG9rZW5zID0gYWxsVmFsdWVIZWxwVG9rZW5zLmZpbHRlcigodmFsdWVIZWxwVG9rZW4pID0+IHtcblx0XHRcdFx0cmV0dXJuIGVhc3lGaWx0ZXJSZXN1bHQuZGF0YS5maWx0ZXI/LmZpbmQoKGxsbVJlc3VsdCkgPT4gbGxtUmVzdWx0Lm5hbWUgPT09IHZhbHVlSGVscFRva2VuLmtleSk7XG5cdFx0XHR9KTtcblxuXHRcdFx0aWYgKHRoaXMuZGF0YUZldGNoZXIpIHtcblx0XHRcdFx0KHJlcXVpcmVkVmFsdWVIZWxwVG9rZW5zIGFzIHVua25vd24gYXMgVmFsdWVIZWxwVG9rZW5EZWZpbml0aW9uW10pLmZvckVhY2goYXN5bmMgKHZhbHVlSGVscFRva2VuKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5kYXRhRmV0Y2hlcj8uKFxuXHRcdFx0XHRcdFx0dmFsdWVIZWxwVG9rZW4ua2V5LFxuXHRcdFx0XHRcdFx0dmFsdWVIZWxwVG9rZW4ua2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcyBhcyB1bmtub3duIGFzIFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW10sXG5cdFx0XHRcdFx0XHRlYXN5RmlsdGVyUmVzdWx0XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR2YWx1ZUhlbHBUb2tlbi5idXN5ID0gZmFsc2U7XG5cdFx0XHRcdFx0aWYgKHJlc3VsdCkge1xuXHRcdFx0XHRcdFx0dmFsdWVIZWxwVG9rZW4ua2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcyA9IHJlc3VsdDtcblx0XHRcdFx0XHRcdHRoaXMuc3RhdGUuc2hvd1Jlc3VsdCA9IHRydWU7XG5cdFx0XHRcdFx0XHR0aGlzLnN0YXRlLnRva2VucyA9IHVwZGF0ZWRUb2tlbnM7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vSWYgZGF0YUZldGNoZXIgaXMgbm90IHRoZXJlLCB0aGVuIG1vY2sgdGhlIHZhbHVlIGFuZCBkZXNjcmlwdGlvbiB3aXRoIHRoZSBzYW1lIHJlc3VsdCBjb21pbmcgZnJvbSB0aGUgTExNXG5cdFx0XHRcdHJlcXVpcmVkVmFsdWVIZWxwVG9rZW5zLmZvckVhY2goKHZhbHVlSGVscFRva2VuKSA9PiB7XG5cdFx0XHRcdFx0dmFsdWVIZWxwVG9rZW4uYnVzeSA9IGZhbHNlO1xuXHRcdFx0XHRcdHZhbHVlSGVscFRva2VuLmtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMuZm9yRWFjaCgoa2V5U3BlY2lmaWNWYWx1ZSwgaWR4KSA9PiB7XG5cdFx0XHRcdFx0XHRpZiAoa2V5U3BlY2lmaWNWYWx1ZS5vcGVyYXRvciA9PT0gRmlsdGVyT3BlcmF0b3IuQlQgfHwga2V5U3BlY2lmaWNWYWx1ZS5vcGVyYXRvciA9PT0gRmlsdGVyT3BlcmF0b3IuTkIpIHtcblx0XHRcdFx0XHRcdFx0dmFsdWVIZWxwVG9rZW4ua2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlc1tpZHhdLnNlbGVjdGVkVmFsdWVzID0gW1xuXHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBrZXlTcGVjaWZpY1ZhbHVlLnNlbGVjdGVkVmFsdWVzWzBdLFxuXHRcdFx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IGtleVNwZWNpZmljVmFsdWUuc2VsZWN0ZWRWYWx1ZXNbMF0gYXMgdW5rbm93biBhcyBsbG1SZXN1bHRGb3JTZWxlY3RlZFZhbHVlc1R5cGVcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBrZXlTcGVjaWZpY1ZhbHVlLnNlbGVjdGVkVmFsdWVzWzFdLFxuXHRcdFx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IGtleVNwZWNpZmljVmFsdWUuc2VsZWN0ZWRWYWx1ZXNbMV0gYXMgdW5rbm93biBhcyBsbG1SZXN1bHRGb3JTZWxlY3RlZFZhbHVlc1R5cGVcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdF07XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHR2YWx1ZUhlbHBUb2tlbi5rZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzW2lkeF0uc2VsZWN0ZWRWYWx1ZXMuZm9yRWFjaCgodmFsdWUsIHN1YkluZHgpID0+IHtcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZUhlbHBUb2tlbi5rZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzW2lkeF0uc2VsZWN0ZWRWYWx1ZXNbc3ViSW5keF0gPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZSxcblx0XHRcdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiB2YWx1ZSBhcyB1bmtub3duIGFzIGxsbVJlc3VsdEZvclNlbGVjdGVkVmFsdWVzVHlwZVxuXHRcdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgdXBkYXRlZFRva2VucyA9IHRoaXMudmVyaWZ5U2luZ2xlU2VsZWN0VG9rZW5WYWx1ZXModG9rZW5zKTtcblx0XHRcdHRoaXMuc3RhdGUuc2hvd1Jlc3VsdCA9IHRydWU7XG5cdFx0XHR0aGlzLnN0YXRlLnRva2VucyA9IHVwZGF0ZWRUb2tlbnM7XG5cdFx0fVxuXHR9XG5cblx0Ly9ldmVyeSBzaW5nbGUgc2VsZWN0IG1lbnUgdHlwZSBzaG91bGQgaGF2ZSBvbmx5IG9uZSB2YWx1ZSwgZWxzZSBzcGxpY2UgdG8gb25lIHZhbHVlIGFuZCB1cGRhdGUgdGhlICBtZXNzYWdlIHN0cmlwXG5cdHZlcmlmeVNpbmdsZVNlbGVjdFRva2VuVmFsdWVzKHRva2VuczogVG9rZW5EZWZpbml0aW9uW10pOiBUb2tlbkRlZmluaXRpb25bXSB7XG5cdFx0Y29uc3Qgc2luZ2xlU2VsZWN0VG9rZW5MYWJlbHM6IHN0cmluZ1tdID0gW107XG5cdFx0dG9rZW5zLmZvckVhY2goKHRva2VuKSA9PiB7XG5cdFx0XHRpZiAodG9rZW4udHlwZSA9PT0gXCJNZW51V2l0aFNpbmdsZVNlbGVjdFwiKSB7XG5cdFx0XHRcdGlmICh0b2tlbi5rZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzWzBdLnNlbGVjdGVkVmFsdWVzLmxlbmd0aCA+IDEpIHtcblx0XHRcdFx0XHRzaW5nbGVTZWxlY3RUb2tlbkxhYmVscy5wdXNoKHRva2VuLmxhYmVsKTtcblx0XHRcdFx0XHR0b2tlbi5rZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzWzBdLnNlbGVjdGVkVmFsdWVzLnNwbGljZSgxKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdGlmIChzaW5nbGVTZWxlY3RUb2tlbkxhYmVscy5sZW5ndGgpIHtcblx0XHRcdHRoaXMuc3RhdGUuc2luZ2xlVmFsdWVNZXNzYWdlU3RyaXBUZXh0ID0gdGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9TSU5HTEVfVkFMVUVfTUVTU0FHRVwiLCBbXG5cdFx0XHRcdGA8c3Ryb25nPiR7c2luZ2xlU2VsZWN0VG9rZW5MYWJlbHMuam9pbihcIiwgXCIpfTwvc3Ryb25nPmBcblx0XHRcdF0pO1xuXHRcdFx0dGhpcy5zdGF0ZS5zaG93U2luZ2xlVmFsdWVNZXNzYWdlU3RyaXAgPSB0cnVlO1xuXHRcdH1cblx0XHRyZXR1cm4gdG9rZW5zO1xuXHR9XG5cblx0Y2xlYXJNZXNzYWdlU3RyaXBGb3JWYWxpZGF0ZWRGaWx0ZXJzKCk6IHZvaWQge1xuXHRcdHRoaXMuc3RhdGUuc2hvd01lc3NhZ2VTdHJpcCA9IGZhbHNlO1xuXHRcdHRoaXMuc3RhdGUubWVzc2FnZVN0cmlwVGV4dCA9IFwiXCI7XG5cdH1cblxuXHRzZXRNZXNzYWdlU3RyaXBGb3JWYWxpZGF0ZWRGaWx0ZXJzKHRleHQ6IHN0cmluZyk6IHZvaWQge1xuXHRcdHRoaXMuc3RhdGUubWVzc2FnZVN0cmlwVGV4dCA9IHRleHQ7XG5cdFx0dGhpcy5zdGF0ZS5zaG93TWVzc2FnZVN0cmlwID0gdHJ1ZTtcblx0fVxuXG5cdGNyZWF0ZVBvcG92ZXJGb3JJbm5lckNvbnRyb2xzKCk6IFBvcG92ZXIge1xuXHRcdGlmICghdGhpcy5pbm5lckNvbnRyb2xQb3BvdmVyKSB7XG5cdFx0XHR0aGlzLmlubmVyQ29udHJvbFBvcG92ZXIgPSAoXG5cdFx0XHRcdDxQb3BvdmVyXG5cdFx0XHRcdFx0aWQ9e3RoaXMuZ2V0SWQoKSArIFwiLWlubmVyUG9wb3ZlclwifVxuXHRcdFx0XHRcdHNob3dBcnJvdz17ZmFsc2V9XG5cdFx0XHRcdFx0c2hvd0hlYWRlcj17dHJ1ZX1cblx0XHRcdFx0XHRwbGFjZW1lbnQ9e1BsYWNlbWVudFR5cGUuQm90dG9tfVxuXHRcdFx0XHRcdGNsYXNzPVwic2FwVWlNZWRpdW1NYXJnaW5Cb3R0b21cIlxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdGZvb3RlcjogdGhpcy5nZXRUb29sYmFyKClcblx0XHRcdFx0XHR9fVxuXHRcdFx0XHQ8L1BvcG92ZXI+XG5cdFx0XHQpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5pbm5lckNvbnRyb2xQb3BvdmVyIGFzIFBvcG92ZXI7XG5cdH1cblxuXHRnZXRUb29sYmFyKCk6IE92ZXJmbG93VG9vbGJhciB8IHVuZGVmaW5lZCB7XG5cdFx0aWYgKCF0aGlzLnRvb2xiYXIpIHtcblx0XHRcdGNvbnN0IG9rQnV0dG9uID0gdGhpcy5nZXRPa0J1dHRvbigpO1xuXHRcdFx0Y29uc3Qgc2hvd0FsbEJ1dHRvbiA9IHRoaXMuZ2V0U2hvd0FsbEJ1dHRvbigpO1xuXHRcdFx0dGhpcy50b29sYmFyID0gKFxuXHRcdFx0XHQ8T3ZlcmZsb3dUb29sYmFyPlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRjb250ZW50OiAoXG5cdFx0XHRcdFx0XHRcdDw+XG5cdFx0XHRcdFx0XHRcdFx0PFRvb2xiYXJTcGFjZXIgLz5cblx0XHRcdFx0XHRcdFx0XHR7b2tCdXR0b259XG5cdFx0XHRcdFx0XHRcdFx0e3Nob3dBbGxCdXR0b259XG5cdFx0XHRcdFx0XHRcdDwvPlxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdH19XG5cdFx0XHRcdDwvT3ZlcmZsb3dUb29sYmFyPlxuXHRcdFx0KTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMudG9vbGJhcjtcblx0fVxuXG5cdGdldE9rQnV0dG9uKCk6IEJ1dHRvbiB8IHVuZGVmaW5lZCB7XG5cdFx0aWYgKCF0aGlzLm9rQnV0dG9uKSB7XG5cdFx0XHR0aGlzLm9rQnV0dG9uID0gPEJ1dHRvbiB0ZXh0PXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BPUE9WRVJfT0tcIil9IHR5cGU9e0J1dHRvblR5cGUuRW1waGFzaXplZH0gLz47XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLm9rQnV0dG9uO1xuXHR9XG5cblx0Z2V0U2hvd0FsbEJ1dHRvbigpOiBCdXR0b24gfCB1bmRlZmluZWQge1xuXHRcdGlmICghdGhpcy5zaG93QWxsQnV0dG9uKSB7XG5cdFx0XHR0aGlzLnNob3dBbGxCdXR0b24gPSA8QnV0dG9uIHRleHQ9e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfUE9QT1ZFUl9TSE9XX0FMTF9JVEVNU1wiKX0gLz47XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLnNob3dBbGxCdXR0b247XG5cdH1cblxuXHRmb3JtYXRUb2tlbnModG9rZW5zOiBUb2tlbkRlZmluaXRpb25bXSk6IFRva2VuRGVmaW5pdGlvbltdIHtcblx0XHRyZXR1cm4gdG9rZW5zLm1hcCgodG9rZW4pID0+IHtcblx0XHRcdGlmICh0b2tlbi50eXBlID09PSBcIlZhbHVlSGVscFwiKSB7XG5cdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0Li4udG9rZW4sXG5cdFx0XHRcdFx0a2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlczogdG9rZW4ua2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcy5tYXAoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0XHQvL01ha2luZyBzdXJlIHRoYXQgb25seSB0aGUgaWQgcGFydCBpcyBwYXNzZWRcblx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdG9wZXJhdG9yOiB2YWx1ZS5vcGVyYXRvcixcblx0XHRcdFx0XHRcdFx0c2VsZWN0ZWRWYWx1ZXM6IHZhbHVlLnNlbGVjdGVkVmFsdWVzLm1hcCgodmFsKSA9PiB2YWwudmFsdWUpXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdH0gYXMgVG9rZW5EZWZpbml0aW9uO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIGRlZXBDbG9uZSh0b2tlbik7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRvblN0YXRlQ2hhbmdlKGNoYW5nZWRQcm9wczogc3RyaW5nW10gPSBbXSk6IHZvaWQge1xuXHRcdGlmIChjaGFuZ2VkUHJvcHMuaW5jbHVkZXMoXCJ0b2tlbnNcIikpIHtcblx0XHRcdGlmICh0aGlzLnNob3VsZFRva2VuQ2hhbmdlRXZlbnRGaXJlZCkge1xuXHRcdFx0XHR0aGlzLmZpcmVFdmVudChcInRva2Vuc0NoYW5nZWRcIiwge1xuXHRcdFx0XHRcdHRva2VuczogdGhpcy5mb3JtYXRUb2tlbnModGhpcy5zdGF0ZS50b2tlbnMgYXMgdW5rbm93biBhcyBUb2tlbkRlZmluaXRpb25bXSlcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLnN0YXRlLnNob3dSZXN1bHQgPSB0aGlzLnN0YXRlLnRva2Vucy5sZW5ndGggPiAwO1xuXHRcdFx0aWYgKCEodGhpcy5pc01hbmRhdG9yeUNoZWNrUmVxdWlyZWQgPz8gZmFsc2UpKSB7XG5cdFx0XHRcdHRoaXMuY2hlY2tJZkFsbE1hbmRhdG9yeVRva2Vuc0ZpbGxlZCgpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHQvL1Jlc2V0dGluZyB0byBkZWZhdWx0IHZhbHVlc1xuXHRcdHRoaXMuaXNNYW5kYXRvcnlDaGVja1JlcXVpcmVkID0gZmFsc2U7XG5cdFx0dGhpcy5zaG91bGRUb2tlbkNoYW5nZUV2ZW50RmlyZWQgPSB0cnVlO1xuXG5cdFx0Ly8gIG9uc2FwZm9jdXNsZWF2ZSBtZXRob2QgaW4gc2FwLm0uVG9rZW5pemVyIGlzIGF1dG9tYXRpY2FsbHkgY29udmVydGluZyB0aGUgcmVuZGVybW9kZSBvZiB0b2tlbml6ZXIgdG8gXCJOYXJyb3dcIiBmcm9tIFwibG9vc2VcIlxuXHRcdC8vICBJbiB0aGlzIHByb2Nlc3MgdGhlcmUgYXJlIG11bHRpcGxlIHBvcG92ZXIgaXNzdWVzIGhhcHBlbmluZ1xuXHRcdC8vICBTbyBhcyBhIHRlbXBvcmFyeSBmaXggb3ZlcnJpZGluZyB0aGUgZnVuY3Rpb25cblx0XHQodGhpcy50b2tlbml6ZXI/LmN1cnJlbnQgYXMgRm9jdXNIYW5kbGluZ0NvbnRyb2wpLm9uc2FwZm9jdXNsZWF2ZSA9ICgpOiB2b2lkID0+IHt9O1xuXHR9XG5cblx0Y3JlYXRlQ29udGVudCgpOiBWQm94IHtcblx0XHRjb25zdCAkdG9wR29CdG4gPSBjcmVhdGVSZWZlcmVuY2U8QnV0dG9uPigpO1xuXHRcdGNvbnN0IG91dFZCb3ggPSAoXG5cdFx0XHQ8VkJveD5cblx0XHRcdFx0PEZsZXhCb3ggcmVuZGVyVHlwZT1cIkJhcmVcIj5cblx0XHRcdFx0XHQ8RWFzeUZpbHRlcklucHV0XG5cdFx0XHRcdFx0XHRyZWNvbW1lbmRlZFZhbHVlcz17dGhpcy5yZWNvbW1lbmRlZFZhbHVlc31cblx0XHRcdFx0XHRcdHJlZj17dGhpcy5lYXN5RmlsdGVySW5wdXR9XG5cdFx0XHRcdFx0XHRlbnRlclByZXNzZWQ9e3RoaXMub25FbnRlclByZXNzZWQuYmluZCh0aGlzKX1cblx0XHRcdFx0XHRcdHF1ZXJ5Q2hhbmdlZD17KGUpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0dGhpcy5maXJlRXZlbnQoXCJxdWVyeUNoYW5nZWRcIiwgeyBxdWVyeTogZS5nZXRQYXJhbWV0ZXIoXCJxdWVyeVwiKSB9KTtcblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRsaXZlQ2hhbmdlPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuc3RhdGUudG9rZW5pemVyRWRpdGFibGUgPSBmYWxzZTtcblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0Lz5cblxuXHRcdFx0XHRcdDxCdXR0b25cblx0XHRcdFx0XHRcdGljb249e1wic2FwLWljb246Ly9haVwifVxuXHRcdFx0XHRcdFx0Y2xhc3M9e1wic2FwVWlTbWFsbE1hcmdpbkJlZ2luXCJ9XG5cdFx0XHRcdFx0XHRyZWY9eyR0b3BHb0J0bn1cblx0XHRcdFx0XHRcdHRleHQ9e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfR09cIil9XG5cdFx0XHRcdFx0XHR0eXBlPXtCdXR0b25UeXBlLkVtcGhhc2l6ZWR9XG5cdFx0XHRcdFx0XHRwcmVzcz17dGhpcy5vbkdvQnV0dG9uUHJlc3MuYmluZCh0aGlzKX1cblx0XHRcdFx0XHQvPlxuXHRcdFx0XHQ8L0ZsZXhCb3g+XG5cdFx0XHRcdDxGbGV4Qm94XG5cdFx0XHRcdFx0cmVuZGVyVHlwZT1cIkJhcmVcIlxuXHRcdFx0XHRcdHZpc2libGU9e2JpbmRTdGF0ZSh0aGlzLnN0YXRlLCBcInNob3dSZXN1bHRcIil9XG5cdFx0XHRcdFx0YWxpZ25JdGVtcz17RmxleEFsaWduSXRlbXMuQ2VudGVyfVxuXHRcdFx0XHRcdHdyYXA9e0ZsZXhXcmFwLldyYXB9XG5cdFx0XHRcdFx0anVzdGlmeUNvbnRlbnQ9e0ZsZXhKdXN0aWZ5Q29udGVudC5TcGFjZUJldHdlZW59XG5cdFx0XHRcdFx0Y2xhc3M9e1wic2FwVWlUaW55TWFyZ2luVG9wXCJ9XG5cdFx0XHRcdD5cblx0XHRcdFx0XHQ8RmxleEJveCBjbGFzcz17XCJzYXBGZUNvbnRyb2xzR2FwOHB4XCJ9IHJlbmRlclR5cGU9XCJCYXJlXCIgYWxpZ25JdGVtcz17RmxleEFsaWduSXRlbXMuQ2VudGVyfSB3cmFwPXtGbGV4V3JhcC5XcmFwfT5cblx0XHRcdFx0XHRcdDxBSU5vdGljZSByZXNvdXJjZUJ1bmRsZT17dGhpcy5yZXNvdXJjZUJ1bmRsZX0gLz5cblx0XHRcdFx0XHRcdDxUb2tlbml6ZXJcblx0XHRcdFx0XHRcdFx0ZWRpdGFibGU9e2FuZChiaW5kU3RhdGUodGhpcy5zdGF0ZSwgXCJ0b2tlbml6ZXJFZGl0YWJsZVwiKSwgdHJ1ZSl9XG5cdFx0XHRcdFx0XHRcdGNsYXNzPXtcInNhcEZlQ29udHJvbHNUb2tlbml6ZXJcIn1cblx0XHRcdFx0XHRcdFx0dG9rZW5zPXtiaW5kU3RhdGUodGhpcy5zdGF0ZSwgXCJ0b2tlbnNcIil9XG5cdFx0XHRcdFx0XHRcdHJlbmRlck1vZGU9e1Rva2VuaXplclJlbmRlck1vZGUuTG9vc2V9XG5cdFx0XHRcdFx0XHRcdHJlZj17dGhpcy50b2tlbml6ZXJ9XG5cdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdFx0dG9rZW5zOiAoaWR4OiBudW1iZXIsIGN0eDogQ29udGV4dCk6IFRva2VuID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IG9iamVjdCA9IGN0eC5nZXRPYmplY3QoKSBhcyBUb2tlbkRlZmluaXRpb247XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8VG9rZW5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRrZXk9e3RoaXMuc3RhdGUudG9rZW5zLmtleX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRsYWJlbD17dGhpcy5zdGF0ZS50b2tlbnMubGFiZWx9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aXRlbXM9e3RoaXMuc3RhdGUudG9rZW5zLmtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXN9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWFuZGF0b3J5PXt0aGlzLmlzS2V5TWFuZGF0b3J5KG9iamVjdC5rZXkpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJ1c3k9e3RoaXMuc3RhdGUudG9rZW5zLmJ1c3l9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVsZXRlPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCB0b2tlbkluZGV4ID0gdGhpcy5zdGF0ZS50b2tlbnMuZmluZEluZGV4KCh0b2tlbikgPT4gdG9rZW4ua2V5ID09PSBvYmplY3Qua2V5KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IG5ld1Rva2VucyA9IHRoaXMuc3RhdGUudG9rZW5zLmNvbmNhdCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bmV3VG9rZW5zLnNwbGljZSh0b2tlbkluZGV4LCAxKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuc3RhdGUudG9rZW5zID0gbmV3VG9rZW5zO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy51cGRhdGVGaWx0ZXJJbnB1dChcInRva2VuVXBkYXRlZFwiKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGN1c3RvbURhdGE6IFtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEN1c3RvbURhdGEga2V5PVwiVG9rZW5JbmZvXCIgdmFsdWU9e29iamVjdH0gLz4sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxDdXN0b21EYXRhIGtleT1cInBvcG92ZXJcIiB2YWx1ZT17dGhpcy5pbm5lckNvbnRyb2xQb3BvdmVyfSAvPixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEN1c3RvbURhdGEga2V5PVwiZWFzeUZpbHRlckJhckNvbnRhaW5lclwiIHZhbHVlPXt0aGlzfSAvPixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEN1c3RvbURhdGFcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRrZXk9XCJjb2RlTGlzdFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU9e3RoaXMuZmlsdGVyQmFyTWV0YWRhdGE/LmZpbmQoKGRhdGEpID0+IGRhdGEubmFtZSA9PT0gb2JqZWN0LmtleSk/LmNvZGVMaXN0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvVG9rZW4+XG5cdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdDwvVG9rZW5pemVyPlxuXHRcdFx0XHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRcdFx0XHR0ZXh0PXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1JFU0VUXCIpfVxuXHRcdFx0XHRcdFx0XHR0eXBlPXtCdXR0b25UeXBlLlRyYW5zcGFyZW50fVxuXHRcdFx0XHRcdFx0XHRwcmVzcz17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMucmVzZXRTdGF0ZSgpO1xuXHRcdFx0XHRcdFx0XHRcdC8vUmV0YWluaW5nIHRoZSBmb2N1cyBvbiBwb3BvdmVyIGRvZXNuJ3QgbWFrZSB0aGUgcG9wb3ZlciBjbG9zZSBvbiBldmVyeSBpbnRlcmFjdGlvblxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZWFzeUZpbHRlcklucHV0LmN1cnJlbnQ/LiRzZWFyY2hJbnB1dC5mb2N1cygpO1xuXHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHQ8L0ZsZXhCb3g+XG5cdFx0XHRcdDwvRmxleEJveD5cblx0XHRcdFx0PEZsZXhCb3ggcmVuZGVyVHlwZT1cIkJhcmVcIj5cblx0XHRcdFx0XHQ8TWVzc2FnZVN0cmlwXG5cdFx0XHRcdFx0XHR0ZXh0PXtiaW5kU3RhdGUodGhpcy5zdGF0ZSwgXCJzaW5nbGVWYWx1ZU1lc3NhZ2VTdHJpcFRleHRcIil9XG5cdFx0XHRcdFx0XHRzaG93SWNvbj17dHJ1ZX1cblx0XHRcdFx0XHRcdGVuYWJsZUZvcm1hdHRlZFRleHQ9e3RydWV9XG5cdFx0XHRcdFx0XHR2aXNpYmxlPXtiaW5kU3RhdGUodGhpcy5zdGF0ZSwgXCJzaG93U2luZ2xlVmFsdWVNZXNzYWdlU3RyaXBcIil9XG5cdFx0XHRcdFx0XHRzaG93Q2xvc2VCdXR0b249e3RydWV9XG5cdFx0XHRcdFx0XHRjbG9zZT17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnN0YXRlLnNob3dTaW5nbGVWYWx1ZU1lc3NhZ2VTdHJpcCA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHR0aGlzLnN0YXRlLnNpbmdsZVZhbHVlTWVzc2FnZVN0cmlwVGV4dCA9IFwiXCI7XG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdD48L01lc3NhZ2VTdHJpcD5cblx0XHRcdFx0PC9GbGV4Qm94PlxuXHRcdFx0XHQ8RmxleEJveCByZW5kZXJUeXBlPVwiQmFyZVwiPlxuXHRcdFx0XHRcdDxNZXNzYWdlU3RyaXBcblx0XHRcdFx0XHRcdHR5cGU9e01lc3NhZ2VUeXBlLkVycm9yfVxuXHRcdFx0XHRcdFx0dGV4dD17YmluZFN0YXRlKHRoaXMuc3RhdGUsIFwibWVzc2FnZVN0cmlwVGV4dFwiKX1cblx0XHRcdFx0XHRcdHNob3dJY29uPXt0cnVlfVxuXHRcdFx0XHRcdFx0ZW5hYmxlRm9ybWF0dGVkVGV4dD17dHJ1ZX1cblx0XHRcdFx0XHRcdHZpc2libGU9e2JpbmRTdGF0ZSh0aGlzLnN0YXRlLCBcInNob3dNZXNzYWdlU3RyaXBcIil9XG5cdFx0XHRcdFx0XHRzaG93Q2xvc2VCdXR0b249e3RydWV9XG5cdFx0XHRcdFx0XHRjbG9zZT17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHR0aGlzLmNsZWFyTWVzc2FnZVN0cmlwRm9yVmFsaWRhdGVkRmlsdGVycygpO1xuXHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHQ+PC9NZXNzYWdlU3RyaXA+XG5cdFx0XHRcdDwvRmxleEJveD5cblx0XHRcdDwvVkJveD5cblx0XHQpIGFzIFZCb3g7XG5cdFx0RkVTUkhlbHBlci5zZXRTZW1hbnRpY1N0ZXBuYW1lKCR0b3BHb0J0bi5jdXJyZW50ISwgXCJwcmVzc1wiLCBcImZlOmFpOnNlYXJjaFwiKTtcblx0XHRyZXR1cm4gb3V0VkJveDtcblx0fVxuXG5cdGFzeW5jIG9uR29CdXR0b25QcmVzcygpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHR0aGlzLnN0YXRlLnRva2VuaXplckVkaXRhYmxlID0gdHJ1ZTtcblx0XHRsZXQgY3VycmVudElucHV0VmFsdWUgPSB0aGlzLmVhc3lGaWx0ZXJJbnB1dC5jdXJyZW50Py5nZXRWYWx1ZSgpO1xuXHRcdGNvbnN0IGN1cnJlbnRJbnB1dFBsYWNlaG9sZGVyID0gdGhpcy5lYXN5RmlsdGVySW5wdXQuY3VycmVudD8uZ2V0UGxhY2Vob2xkZXIoKTtcblxuXHRcdGlmIChjdXJyZW50SW5wdXRWYWx1ZSA9PT0gXCJcIiAmJiBjdXJyZW50SW5wdXRQbGFjZWhvbGRlciAhPT0gdGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QTEFDRUhPTERFUlwiKSkge1xuXHRcdFx0dGhpcy5lYXN5RmlsdGVySW5wdXQuY3VycmVudD8uc2V0VmFsdWUoY3VycmVudElucHV0UGxhY2Vob2xkZXIgfHwgXCJcIik7XG5cdFx0XHRjdXJyZW50SW5wdXRWYWx1ZSA9IGN1cnJlbnRJbnB1dFBsYWNlaG9sZGVyO1xuXHRcdH1cblx0XHRhd2FpdCB0aGlzLm9uR29QcmVzcyhjdXJyZW50SW5wdXRWYWx1ZSk7XG5cdH1cblxuXHRyZXNldFN0YXRlKGNsZWFyQWxsRmlsdGVycyA9IHRydWUpOiB2b2lkIHtcblx0XHRpZiAoY2xlYXJBbGxGaWx0ZXJzKSB7XG5cdFx0XHR0aGlzLmZpcmVFdmVudChcImNsZWFyRmlsdGVyc1wiKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zaG91bGRUb2tlbkNoYW5nZUV2ZW50RmlyZWQgPSBmYWxzZTtcblx0XHR9XG5cdFx0dGhpcy5zdGF0ZS50b2tlbnMgPSB0aGlzLmdldERlZmF1bHRUb2tlbnMoKTtcblx0XHR0aGlzLnVwZGF0ZUZpbHRlcklucHV0KFwidG9rZW5SZXNldFwiKTtcblx0XHR0aGlzLnN0YXRlLnRva2VuaXplckVkaXRhYmxlID0gdHJ1ZTtcblx0XHR0aGlzLmlzTWFuZGF0b3J5Q2hlY2tSZXF1aXJlZCA9IHRydWU7XG5cdFx0Ly9TZXQgdGhlIFZhbHVlIFN0YXRlcyBvZiBhbGwgdGhlIFRva2VucyBiYWNrIHRvIE5vbmVcblx0XHR0aGlzLnRva2VuaXplci5jdXJyZW50Py5nZXRUb2tlbnMoKS5mb3JFYWNoKCh0b2tlbikgPT4gdG9rZW4uc2V0UHJvcGVydHkoXCJ2YWx1ZVN0YXRlXCIsIFZhbHVlU3RhdGUuTm9uZSkpO1xuXHRcdHRoaXMudG9rZW5pemVyLmN1cnJlbnQ/LmdldFRva2VucygpLmZvckVhY2goKHRva2VuKSA9PiB0b2tlbi5zZXRQcm9wZXJ0eShcInZhbHVlU3RhdGVUZXh0XCIsIG51bGwpKTtcblx0fVxuXG5cdC8vVGhlIGJlbG93IGNvZGUgdXBkYXRlcyB0aGUgZXhpc3Rpbmcgc3RhdGUgYnkgZmV0Y2hpbmcgdGhlIGtleSBhbmQgc2VsZWN0ZWRWYWx1ZXNcblx0dXBkYXRlVG9rZW5BcnJheShcblx0XHRjaGFuZ2VUeXBlOiBUb2tlblNldHRlcnMsXG5cdFx0bmV3VG9rZW5TcGVjaWZpY1ZhbHVlczogVG9rZW5TZWxlY3RlZFZhbHVlc0RlZmluaXRpb25bXSB8IFZhbHVlSGVscFNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdLFxuXHRcdHRva2VuS2V5OiBzdHJpbmdcblx0KTogdm9pZCB7XG5cdFx0Y29uc3QgbmV3VG9rZW5zID0gdGhpcy5zdGF0ZS50b2tlbnMubWFwKCh0b2tlbikgPT4gKHsgLi4udG9rZW4sIGtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXM6IFsuLi50b2tlbi5rZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzXSB9KSk7XG5cdFx0Y29uc3QgdG9rZW5JbmRleCA9IG5ld1Rva2Vucy5maW5kSW5kZXgoKHQpID0+IHQua2V5ID09PSB0b2tlbktleSk7XG5cdFx0Y29uc3QgdG9rZW4gPSBuZXdUb2tlbnNbdG9rZW5JbmRleF07XG5cdFx0aWYgKHRva2VuSW5kZXggIT0gLTEpIHtcblx0XHRcdHN3aXRjaCAoY2hhbmdlVHlwZSkge1xuXHRcdFx0XHRjYXNlIFwic2V0U2VsZWN0ZWRWYWx1ZXNcIjpcblx0XHRcdFx0XHR0aGlzLnNldFNlbGVjdGVkVmFsdWVzKHRva2VuIGFzIFRva2VuRGVmaW5pdGlvbiwgbmV3VG9rZW5TcGVjaWZpY1ZhbHVlcywgdG9rZW5JbmRleCwgbmV3VG9rZW5zIGFzIFRva2VuRGVmaW5pdGlvbltdKTtcblx0XHRcdFx0XHR0b2tlbi5rZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzID0gbmV3VG9rZW5TcGVjaWZpY1ZhbHVlcztcblx0XHRcdFx0XHQvL1JlbW92ZSB0aGUgdG9rZW4gZW50aXJlbHlcblx0XHRcdFx0XHRpZiAoIXRoaXMuaXNLZXlNYW5kYXRvcnkodG9rZW4ua2V5KSAmJiB0b2tlbi5rZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0XHRcdFx0bmV3VG9rZW5zLnNwbGljZSh0b2tlbkluZGV4LCAxKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0TG9nLmVycm9yKFwiU3BlY2lmeWluZyBhIHNldHRlciB0aGF0IGlzIG91dCBvZiB0aGUgYm91bmRhcnlcIik7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHQvLyBVcGRhdGUgdGhlIHN0YXRlIGJ5IGFzc2lnbmluZyB0aGUgbmV3IHRva2VucyBhcnJheVxuXHRcdFx0dGhpcy5zdGF0ZS50b2tlbnMgPSBuZXdUb2tlbnMgYXMgVG9rZW5EZWZpbml0aW9uW107XG5cdFx0XHR0aGlzLnN0YXRlLnNob3dSZXN1bHQgPSBuZXdUb2tlbnMubGVuZ3RoID4gMDtcblx0XHRcdHRoaXMudXBkYXRlRmlsdGVySW5wdXQoXCJ0b2tlblVwZGF0ZWRcIik7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIGNsb3NlSW5uZXJDb250cm9sUG9wb3ZlcigpOiB2b2lkIHtcblx0XHR0aGlzLmlubmVyQ29udHJvbFBvcG92ZXI/LmNsb3NlKCk7XG5cdH1cblxuXHRwcml2YXRlIHNldFNlbGVjdGVkVmFsdWVzKFxuXHRcdHRva2VuOiBUb2tlbkRlZmluaXRpb24sXG5cdFx0bmV3VG9rZW5TcGVjaWZpY1ZhbHVlczogVG9rZW5TZWxlY3RlZFZhbHVlc0RlZmluaXRpb25bXSB8IFZhbHVlSGVscFNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdLFxuXHRcdHRva2VuSW5kZXg6IG51bWJlcixcblx0XHRuZXdUb2tlbnM6IFRva2VuRGVmaW5pdGlvbltdXG5cdCk6IHZvaWQge1xuXHRcdHRva2VuLmtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMgPSBuZXdUb2tlblNwZWNpZmljVmFsdWVzO1xuXHRcdGlmICghdGhpcy5pc0tleU1hbmRhdG9yeSh0b2tlbi5rZXkpICYmIHRva2VuLmtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRuZXdUb2tlbnMuc3BsaWNlKHRva2VuSW5kZXgsIDEpO1xuXHRcdH1cblx0fVxuXG5cdGlzS2V5TWFuZGF0b3J5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0aWYgKCF0aGlzLm1hbmRhdG9yeUtleU1hcCkge1xuXHRcdFx0dGhpcy5tYW5kYXRvcnlLZXlNYXAgPSB7fTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMubWFuZGF0b3J5S2V5TWFwW2tleV0gPyB0cnVlIDogZmFsc2U7XG5cdH1cblxuXHRyZW1vdmVOb25NYW5kYXRvcnlUb2tlbnMoKTogdGhpcyB7XG5cdFx0Y29uc3QgbmV3VG9rZW46IFRva2VuRGVmaW5pdGlvbltdID0gdGhpcy5zdGF0ZS50b2tlbnMuZmlsdGVyKCh0b2tlbikgPT4ge1xuXHRcdFx0cmV0dXJuIHRoaXMuaXNLZXlNYW5kYXRvcnkodG9rZW4ua2V5KTtcblx0XHR9KTtcblx0XHR0aGlzLnN0YXRlLnRva2VucyA9IG5ld1Rva2VuO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0dXBkYXRlRmlsdGVySW5wdXQodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuXHRcdGNvbnN0IGN1cnJWYWx1ZTogc3RyaW5nID0gdGhpcy5lYXN5RmlsdGVySW5wdXQuY3VycmVudD8uZ2V0VmFsdWUoKSB8fCBcIlwiO1xuXHRcdGlmICh2YWx1ZSA9PT0gXCJ0b2tlblVwZGF0ZWRcIiAmJiBjdXJyVmFsdWUgIT09IFwiXCIpIHtcblx0XHRcdHRoaXMuZWFzeUZpbHRlcklucHV0LmN1cnJlbnQ/LnNldFZhbHVlKFwiXCIpO1xuXHRcdFx0dGhpcy5lYXN5RmlsdGVySW5wdXQuY3VycmVudD8uc2V0UGxhY2Vob2xkZXIoY3VyclZhbHVlKTtcblx0XHR9IGVsc2UgaWYgKHZhbHVlID09PSBcInRva2VuUmVzZXRcIikge1xuXHRcdFx0dGhpcy5lYXN5RmlsdGVySW5wdXQuY3VycmVudD8uc2V0VmFsdWUoXCJcIik7XG5cdFx0XHR0aGlzLmVhc3lGaWx0ZXJJbnB1dC5jdXJyZW50Py5zZXRQbGFjZWhvbGRlcih0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BMQUNFSE9MREVSXCIpKTtcblx0XHR9XG5cdH1cblxuXHRnZXRUb2tlbnNJbkluaXRpYWxTdGF0ZSgpOiBUb2tlbkRlZmluaXRpb25bXSB7XG5cdFx0Y29uc3QgbmV3VG9rZW5zID0gdGhpcy5zdGF0ZS50b2tlbnMubWFwKCh0b2tlbikgPT4gKHsgLi4udG9rZW4sIGtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXM6IFsuLi50b2tlbi5rZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzXSB9KSk7XG5cdFx0Y29uc3QgbWFuZGF0b3J5VG9rZW5zID0gbmV3VG9rZW5zLmZpbHRlcigodG9rZW4pID0+IHtcblx0XHRcdGlmICh0aGlzLmlzS2V5TWFuZGF0b3J5KHRva2VuLmtleSkpIHtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0cmV0dXJuIG1hbmRhdG9yeVRva2Vucy5tYXAoKHRva2VuKSA9PiAoeyAuLi50b2tlbiwga2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlczogW10gfSkpO1xuXHR9XG5cblx0Z2V0VW5TZXRNYW5kYXRvcnlUb2tlbnNJbkN1cnJlbnRTdGF0ZSgpOiBUb2tlbkRlZmluaXRpb25bXSB7XG5cdFx0cmV0dXJuIHRoaXMuc3RhdGUudG9rZW5zLmZpbHRlcigodG9rZW4pID0+IHtcblx0XHRcdGNvbnN0IGlzS2V5TWFuZGF0b3J5ID0gdGhpcy5pc0tleU1hbmRhdG9yeSh0b2tlbi5rZXkpO1xuXHRcdFx0aWYgKGlzS2V5TWFuZGF0b3J5KSB7XG5cdFx0XHRcdHJldHVybiB0b2tlbi5rZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzLmxlbmd0aCA9PT0gMDtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdGdldEFjdHVhbFRva2Vuc0Zyb21TdGF0ZSh0b2tlbnM6IFRva2VuRGVmaW5pdGlvbltdKTogRWFzeUZpbHRlclRva2VuW10gfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IHJlcXVpcmVkS2V5cyA9IHRva2Vucy5tYXAoKHRva2VuKSA9PiB0b2tlbi5rZXkpO1xuXHRcdHJldHVybiB0aGlzLnRva2VuaXplci5jdXJyZW50Py5nZXRUb2tlbnMoKS5maWx0ZXIoKHRva2VuKSA9PiByZXF1aXJlZEtleXMuaW5jbHVkZXModG9rZW4uZ2V0S2V5KCkpKSBhc1xuXHRcdFx0fCBFYXN5RmlsdGVyVG9rZW5bXVxuXHRcdFx0fCB1bmRlZmluZWQ7XG5cdH1cblxuXHRzdGF0aWMgcmVuZGVyKHJtOiBSZW5kZXJNYW5hZ2VyLCBjb250cm9sOiBFYXN5RmlsdGVyQmFyQ29udGFpbmVyKTogdm9pZCB7XG5cdFx0cmV0dXJuIGpzeC5yZW5kZXJVc2luZ1JlbmRlck1hbmFnZXIocm0sIGNvbnRyb2wsICgpID0+IHtcblx0XHRcdHJldHVybiA8c3BhbiByZWY9e2NvbnRyb2x9Pntjb250cm9sLmdldEFnZ3JlZ2F0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
|
|
836
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFYXN5RmlsdGVyQmFyQ29udGFpbmVyIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJwcm9wZXJ0eSIsInR5cGUiLCJfZGVjMyIsIl9kZWM0IiwiX2RlYzUiLCJfZGVjNiIsIl9kZWM3IiwiX2RlYzgiLCJkZWZpbmVSZWZlcmVuY2UiLCJfZGVjOSIsIl9kZWMxMCIsImFnZ3JlZ2F0aW9uIiwiX2RlYzExIiwiZXZlbnQiLCJfZGVjMTIiLCJfZGVjMTMiLCJfZGVjMTQiLCJfZGVjMTUiLCJfZGVjMTYiLCJfZGVjMTciLCJkZWZpbmVTdGF0ZSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQ29udHJvbCIsInByb3BlcnRpZXMiLCJvdGhlcnMiLCJfdGhpcyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2Rlc2NyaXB0b3I3IiwiX2Rlc2NyaXB0b3I4IiwiX2Rlc2NyaXB0b3I5IiwiX2Rlc2NyaXB0b3IxMCIsIl9kZXNjcmlwdG9yMTEiLCJfZGVzY3JpcHRvcjEyIiwiX2Rlc2NyaXB0b3IxMyIsIl9kZXNjcmlwdG9yMTQiLCJfZGVzY3JpcHRvcjE1IiwiX2Rlc2NyaXB0b3IxNiIsInNob3VsZFRva2VuQ2hhbmdlRXZlbnRGaXJlZCIsImlucHV0RmllbGRSZWFkeSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVzb2x2ZUNvbnRlbnRSZWFkeSIsImluaXRpYWxpemUiLCJfZXhwb3J0cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwic2V0RWFzeUZpbHRlckxpYiIsImVhc3lGaWx0ZXJMaWIiLCJzZXRQcm9wZXJ0eSIsImVhc3lmaWx0ZXIiLCJfX3VpNV9yZXF1aXJlX2FzeW5jIiwic2V0QXBwSWQiLCJhcHBJZCIsImVhc3lGaWx0ZXJJbnB1dCIsImN1cnJlbnQiLCJpbml0U2hlbGxIaXN0b3J5UHJvdmlkZXIiLCJzZXRGaWx0ZXJCYXJNZXRhZGF0YSIsImZpbHRlckJhck1ldGFkYXRhIiwidG9rZW5zIiwiZ2V0RGVmYXVsdFRva2VucyIsImlubmVyQ29udHJvbFBvcG92ZXIiLCJjcmVhdGVQb3BvdmVyRm9ySW5uZXJDb250cm9scyIsImFkZERlcGVuZGVudCIsInN0YXRlIiwic2hvd1Jlc3VsdCIsImxlbmd0aCIsImlzTWFuZGF0b3J5Q2hlY2tSZXF1aXJlZCIsImluaXQiLCJyZXNvdXJjZUJ1bmRsZSIsIkxpYiIsImdldFJlc291cmNlQnVuZGxlRm9yIiwiY29udGVudCIsImNyZWF0ZUNvbnRlbnQiLCJtYW5kYXRvcnlLZXlNYXAiLCJmb3JFYWNoIiwiZGF0YSIsImlzUmVxdWlyZWQiLCJyZXF1aXJlZCIsIm5hbWUiLCJwdXNoIiwia2V5IiwibGFiZWwiLCJrZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzIiwiZGVmYXVsdFZhbHVlIiwiYnVzeSIsIm9uRW50ZXJQcmVzc2VkIiwiZSIsIm9uR29QcmVzcyIsImdldFBhcmFtZXRlciIsImNoZWNrSWZBbGxNYW5kYXRvcnlUb2tlbnNGaWxsZWQiLCJ0b2tlbnNJblN0YXRlIiwiZ2V0VW5TZXRNYW5kYXRvcnlUb2tlbnNJbkN1cnJlbnRTdGF0ZSIsImdldEFjdHVhbFRva2Vuc0Zyb21TdGF0ZSIsInRva2VuIiwiVmFsdWVTdGF0ZSIsIkVycm9yIiwiZ2V0VGV4dCIsIm9wZW5WYWx1ZVN0YXRlTWVzc2FnZSIsImNsb3NlQWxsTWFuZGF0b3J5VmFsdWVTdGF0ZU1lc3NhZ2VzIiwiZWFzeVRva2VucyIsInRva2VuaXplciIsImdldFRva2VucyIsImNsb3NlVmFsdWVTdGF0ZU1lc3NhZ2UiLCJtYWdpY1F1ZXJ5IiwicmVzZXRTdGF0ZSIsInRva2VuaXplckVkaXRhYmxlIiwiZmlyZUV2ZW50IiwiZWFzeUZpbHRlck1ldGFkYXRhIiwidmVyc2lvbiIsImVudGl0eVNldCIsImNvbnRleHRQYXRoIiwiZmllbGRzIiwiZWFzeUZpbHRlclJlc3VsdCIsImVhc3lGaWx0ZXIiLCJzdWNjZXNzIiwiaXNIaXN0b3J5RW5hYmxlZCIsImFkZFJlY2VudFF1ZXJ5IiwiaGFuZGxlVjFTdWNjZXNzIiwicmVtb3ZlTm9uTWFuZGF0b3J5VG9rZW5zIiwic2V0TWVzc2FnZVN0cmlwIiwibWVzc2FnZSIsIm1lc3NhZ2VTdHJpcFR5cGUiLCJNZXNzYWdlVHlwZSIsIldhcm5pbmciLCJMb2ciLCJlcnJvciIsImZpbHRlciIsImRlYnVnIiwiSlNPTiIsInN0cmluZ2lmeSIsImNsZWFyTWVzc2FnZVN0cmlwIiwiRWFzeUZpbHRlclV0aWxzIiwiZm9ybWF0RGF0YSIsImJpbmQiLCJhbGxWYWx1ZUhlbHBUb2tlbnMiLCJyZXN1bHQiLCJyZXF1aXJlZFZhbHVlSGVscFRva2VucyIsInZhbHVlSGVscFRva2VuIiwiZmluZCIsImxsbVJlc3VsdCIsImRhdGFGZXRjaGVyIiwidXBkYXRlZFRva2VucyIsImtleVNwZWNpZmljVmFsdWUiLCJpZHgiLCJvcGVyYXRvciIsIkZpbHRlck9wZXJhdG9yIiwiQlQiLCJOQiIsInNlbGVjdGVkVmFsdWVzIiwidmFsdWUiLCJkZXNjcmlwdGlvbiIsInN1YkluZHgiLCJ2ZXJpZnlTaW5nbGVTZWxlY3RUb2tlblZhbHVlcyIsInRodW1iQnV0dG9uRW5hYmxlZCIsInRodW1iRG93bkJ1dHRvblByZXNzZWQiLCJ0aHVtYlVwQnV0dG9uUHJlc3NlZCIsInNpbmdsZVNlbGVjdFRva2VuTGFiZWxzIiwic3BsaWNlIiwic2luZ2xlVmFsdWVNZXNzYWdlU3RyaXBUZXh0Iiwiam9pbiIsInNob3dTaW5nbGVWYWx1ZU1lc3NhZ2VTdHJpcCIsInNob3dNZXNzYWdlU3RyaXAiLCJtZXNzYWdlU3RyaXBUZXh0IiwidGV4dCIsIl9qc3giLCJQb3BvdmVyIiwiaWQiLCJnZXRJZCIsInNob3dBcnJvdyIsInNob3dIZWFkZXIiLCJwbGFjZW1lbnQiLCJQbGFjZW1lbnRUeXBlIiwiQm90dG9tIiwiY2xhc3MiLCJjaGlsZHJlbiIsImZvb3RlciIsImdldFRvb2xiYXIiLCJ0b29sYmFyIiwib2tCdXR0b24iLCJnZXRPa0J1dHRvbiIsInNob3dBbGxCdXR0b24iLCJnZXRTaG93QWxsQnV0dG9uIiwiT3ZlcmZsb3dUb29sYmFyIiwiX2pzeHMiLCJfRnJhZ21lbnQiLCJUb29sYmFyU3BhY2VyIiwiQnV0dG9uIiwiQnV0dG9uVHlwZSIsIkVtcGhhc2l6ZWQiLCJmb3JtYXRUb2tlbnMiLCJtYXAiLCJ2YWwiLCJkZWVwQ2xvbmUiLCJvblN0YXRlQ2hhbmdlIiwiY2hhbmdlZFByb3BzIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiaW5jbHVkZXMiLCJvbnNhcGZvY3VzbGVhdmUiLCJvblRodW1iVXBQcmVzc2VkIiwidHJpZ2dlclBYSW50ZWdyYXRpb24iLCJvblRodW1iUHJlc3NlZCIsIm9uVGh1bWJEb3duUHJlc3NlZCIsIk1lc3NhZ2VUb2FzdCIsInNob3ciLCIkdG9wR29CdG4iLCJjcmVhdGVSZWZlcmVuY2UiLCJ0aHVtYlVwQnV0dG9uVG9rZW5pemVyIiwiVG9nZ2xlQnV0dG9uIiwiaWNvbiIsInRvb2x0aXAiLCJwcmVzcyIsImVuYWJsZWQiLCJiaW5kU3RhdGUiLCJwcmVzc2VkIiwiRkVTUkhlbHBlciIsInNldFNlbWFudGljU3RlcG5hbWUiLCJ0aHVtYkRvd25CdXR0b25Ub2tlbml6ZXIiLCJ0aHVtYlVwQnV0dG9uTWVzc2FnZVN0cmlwZSIsInRodW1iRG93bkJ1dHRvbk1lc3NhZ2VTdHJpcGUiLCJvdXRWQm94IiwiVkJveCIsIkZsZXhCb3giLCJyZW5kZXJUeXBlIiwiRWFzeUZpbHRlcklucHV0IiwicmVjb21tZW5kZWRWYWx1ZXMiLCJyZWYiLCJlbnRlclByZXNzZWQiLCJxdWVyeUNoYW5nZWQiLCJxdWVyeSIsImxpdmVDaGFuZ2UiLCJvbkdvQnV0dG9uUHJlc3MiLCJ2aXNpYmxlIiwiYWxpZ25JdGVtcyIsIkZsZXhBbGlnbkl0ZW1zIiwiQ2VudGVyIiwid3JhcCIsIkZsZXhXcmFwIiwiV3JhcCIsImp1c3RpZnlDb250ZW50IiwiRmxleEp1c3RpZnlDb250ZW50IiwiU3BhY2VCZXR3ZWVuIiwiQUlOb3RpY2UiLCJUb2tlbml6ZXIiLCJlZGl0YWJsZSIsImFuZCIsInJlbmRlck1vZGUiLCJUb2tlbml6ZXJSZW5kZXJNb2RlIiwiTG9vc2UiLCJjdHgiLCJvYmplY3QiLCJnZXRPYmplY3QiLCJUb2tlbiIsIml0ZW1zIiwibWFuZGF0b3J5IiwiaXNLZXlNYW5kYXRvcnkiLCJkZWxldGUiLCJ0b2tlbkluZGV4IiwiZmluZEluZGV4IiwibmV3VG9rZW5zIiwiY29uY2F0IiwidXBkYXRlRmlsdGVySW5wdXQiLCJjdXN0b21EYXRhIiwiQ3VzdG9tRGF0YSIsImNvZGVMaXN0IiwiSEJveCIsIlRyYW5zcGFyZW50IiwiJHNlYXJjaElucHV0IiwiZm9jdXMiLCJNZXNzYWdlU3RyaXAiLCJzaG93SWNvbiIsImVuYWJsZUZvcm1hdHRlZFRleHQiLCJzaG93Q2xvc2VCdXR0b24iLCJjbG9zZSIsImN1cnJlbnRJbnB1dFZhbHVlIiwiZ2V0VmFsdWUiLCJjdXJyZW50SW5wdXRQbGFjZWhvbGRlciIsImdldFBsYWNlaG9sZGVyIiwic2V0VmFsdWUiLCJjbGVhckFsbEZpbHRlcnMiLCJOb25lIiwidXBkYXRlVG9rZW5BcnJheSIsImNoYW5nZVR5cGUiLCJuZXdUb2tlblNwZWNpZmljVmFsdWVzIiwidG9rZW5LZXkiLCJ0Iiwic2V0U2VsZWN0ZWRWYWx1ZXMiLCJjbG9zZUlubmVyQ29udHJvbFBvcG92ZXIiLCJuZXdUb2tlbiIsImN1cnJWYWx1ZSIsInNldFBsYWNlaG9sZGVyIiwiZ2V0VG9rZW5zSW5Jbml0aWFsU3RhdGUiLCJtYW5kYXRvcnlUb2tlbnMiLCJyZXF1aXJlZEtleXMiLCJnZXRLZXkiLCJyZW5kZXIiLCJybSIsImNvbnRyb2wiLCJqc3giLCJyZW5kZXJVc2luZ1JlbmRlck1hbmFnZXIiLCJnZXRBZ2dyZWdhdGlvbiIsIkNvbnRyb2wiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkVhc3lGaWx0ZXJCYXJDb250YWluZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgeyBFbmhhbmNlV2l0aFVJNSwgU3RhdGVPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7XG5cdGFnZ3JlZ2F0aW9uLFxuXHRjcmVhdGVSZWZlcmVuY2UsXG5cdGRlZmluZVJlZmVyZW5jZSxcblx0ZGVmaW5lU3RhdGUsXG5cdGRlZmluZVVJNUNsYXNzLFxuXHRldmVudCxcblx0cHJvcGVydHksXG5cdHR5cGUgUHJvcGVydGllc09mXG59IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSBcInNhcC9mZS9iYXNlL2pzeC1ydW50aW1lL2pzeFwiO1xuaW1wb3J0IGpzeCBmcm9tIFwic2FwL2ZlL2Jhc2UvanN4LXJ1bnRpbWUvanN4XCI7XG5pbXBvcnQgVG9rZW4gZnJvbSBcInNhcC9mZS9jb250cm9scy9lYXN5RmlsdGVyL1Rva2VuXCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCBGbGV4Qm94IGZyb20gXCJzYXAvbS9GbGV4Qm94XCI7XG5pbXBvcnQgUG9wb3ZlciBmcm9tIFwic2FwL20vUG9wb3ZlclwiO1xuaW1wb3J0IFRva2VuaXplciBmcm9tIFwic2FwL20vVG9rZW5pemVyXCI7XG5pbXBvcnQgVkJveCBmcm9tIFwic2FwL20vVkJveFwiO1xuaW1wb3J0IHsgQnV0dG9uVHlwZSwgRmxleEFsaWduSXRlbXMsIEZsZXhKdXN0aWZ5Q29udGVudCwgRmxleFdyYXAsIFBsYWNlbWVudFR5cGUsIFRva2VuaXplclJlbmRlck1vZGUgfSBmcm9tIFwic2FwL20vbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgVUk1RXZlbnQgZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50XCI7XG5pbXBvcnQgdHlwZSB7ICRDb250cm9sU2V0dGluZ3MgfSBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBDdXN0b21EYXRhIGZyb20gXCJzYXAvdWkvY29yZS9DdXN0b21EYXRhXCI7XG5pbXBvcnQgTGliIGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCB0eXBlIFJlbmRlck1hbmFnZXIgZnJvbSBcInNhcC91aS9jb3JlL1JlbmRlck1hbmFnZXJcIjtcbmltcG9ydCB7IFZhbHVlU3RhdGUgfSBmcm9tIFwic2FwL3VpL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcblxuaW1wb3J0IHR5cGUgeyBQcmltaXRpdmVUeXBlIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSBSZXNvdXJjZUJ1bmRsZSBmcm9tIFwic2FwL2Jhc2UvaTE4bi9SZXNvdXJjZUJ1bmRsZVwiO1xuaW1wb3J0IGRlZXBDbG9uZSBmcm9tIFwic2FwL2Jhc2UvdXRpbC9kZWVwQ2xvbmVcIjtcbmltcG9ydCB7IGFuZCwgYmluZFN0YXRlIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgRWFzeUZpbHRlcklucHV0IGZyb20gXCJzYXAvZmUvY29udHJvbHMvZWFzeUZpbHRlci9FYXN5RmlsdGVySW5wdXRcIjtcbmltcG9ydCB0eXBlIEVhc3lGaWx0ZXJUb2tlbiBmcm9tIFwic2FwL2ZlL2NvbnRyb2xzL2Vhc3lGaWx0ZXIvVG9rZW5cIjtcbmltcG9ydCBIQm94IGZyb20gXCJzYXAvbS9IQm94XCI7XG5pbXBvcnQgTWVzc2FnZVN0cmlwIGZyb20gXCJzYXAvbS9NZXNzYWdlU3RyaXBcIjtcbmltcG9ydCBNZXNzYWdlVG9hc3QgZnJvbSBcInNhcC9tL01lc3NhZ2VUb2FzdFwiO1xuaW1wb3J0IE92ZXJmbG93VG9vbGJhciBmcm9tIFwic2FwL20vT3ZlcmZsb3dUb29sYmFyXCI7XG5pbXBvcnQgVG9nZ2xlQnV0dG9uIGZyb20gXCJzYXAvbS9Ub2dnbGVCdXR0b25cIjtcbmltcG9ydCBUb29sYmFyU3BhY2VyIGZyb20gXCJzYXAvbS9Ub29sYmFyU3BhY2VyXCI7XG5pbXBvcnQgTWVzc2FnZVR5cGUgZnJvbSBcInNhcC91aS9jb3JlL21lc3NhZ2UvTWVzc2FnZVR5cGVcIjtcbmltcG9ydCBGaWx0ZXJPcGVyYXRvciBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlck9wZXJhdG9yXCI7XG5pbXBvcnQgRkVTUkhlbHBlciBmcm9tIFwic2FwL3VpL3BlcmZvcm1hbmNlL3RyYWNlL0ZFU1JIZWxwZXJcIjtcbmltcG9ydCB0eXBlIEVhc3lGaWx0ZXIgZnJvbSBcInV4L2VuZy9maW9yaWFpL3JldXNlL2Vhc3lmaWx0ZXIvRWFzeUZpbHRlclwiO1xuaW1wb3J0IHR5cGUgeyBFYXN5RmlsdGVyTWV0YWRhdGEsIEVhc3lGaWx0ZXJSZXN1bHQsIFByb3BlcnR5TWV0YWRhdGEgfSBmcm9tIFwidXgvZW5nL2Zpb3JpYWkvcmV1c2UvZWFzeWZpbHRlci9FYXN5RmlsdGVyXCI7XG5pbXBvcnQgdHlwZSB7IFN1Y2Nlc3MgfSBmcm9tIFwidXgvZW5nL2Zpb3JpYWkvcmV1c2Uvc2hhcmVkXCI7XG5pbXBvcnQgdHlwZSB7IEV2ZW50SGFuZGxlciB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi8uLi90eXBlcy9leHRlbnNpb25fdHlwZXNcIjtcbmltcG9ydCB7IEFJTm90aWNlIH0gZnJvbSBcIi4vQUlOb3RpY2VcIjtcbmltcG9ydCB7IHRyaWdnZXJQWEludGVncmF0aW9uIH0gZnJvbSBcIi4vUFhGZWVkYmFja1wiO1xuaW1wb3J0IEVhc3lGaWx0ZXJVdGlscyBmcm9tIFwiLi91dGlsc1wiO1xuXG4vL0ZvciBjdXJyZW50IHJlbGVhc2Ugd2UgYXJlIGlnbm9yaW5nIFwiQWxsXCIgYW5kIFwiQW55XCJcbi8vV2UgY2FuIGluY29ycG9yYXRlIHRoZXNlIHZhbHVlcyBpbiBmdXR1cmVcbmV4cG9ydCB0eXBlIEJldHdlZW5TZWxlY3RlZFZhbHVlcyA9IFtib29sZWFuLCBib29sZWFuXSB8IFtzdHJpbmcsIHN0cmluZ10gfCBbbnVtYmVyLCBudW1iZXJdIHwgW0RhdGUsIERhdGVdO1xuXG50eXBlIGxsbVJlc3VsdEZvclNlbGVjdGVkVmFsdWVzVHlwZSA9IHN0cmluZyB8IERhdGUgfCBib29sZWFuIHwgbnVtYmVyO1xuXG5leHBvcnQgdHlwZSBDb2RlTGlzdFR5cGUgPSB7XG5cdHZhbHVlOiBQcmltaXRpdmVUeXBlO1xuXHRkZXNjcmlwdGlvbjogbGxtUmVzdWx0Rm9yU2VsZWN0ZWRWYWx1ZXNUeXBlO1xufTtcblxuZXhwb3J0IHR5cGUgVmFsdWVIZWxwQmV0d2VlblNlbGVjdGVkVmFsdWVzID0gW0NvZGVMaXN0VHlwZSwgQ29kZUxpc3RUeXBlXTtcblxuZXhwb3J0IHR5cGUgVmFsdWVIZWxwU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uID1cblx0fCB7XG5cdFx0XHRvcGVyYXRvcjogRXhjbHVkZTxGaWx0ZXJPcGVyYXRvciwgRmlsdGVyT3BlcmF0b3IuQlQgfCBGaWx0ZXJPcGVyYXRvci5OQj47XG5cdFx0XHRzZWxlY3RlZFZhbHVlczogQ29kZUxpc3RUeXBlW107XG5cdFx0XHRub01hdGNoPzogYm9vbGVhbjtcblx0ICB9XG5cdHwge1xuXHRcdFx0b3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yLkJUIHwgRmlsdGVyT3BlcmF0b3IuTkI7XG5cdFx0XHRzZWxlY3RlZFZhbHVlczogVmFsdWVIZWxwQmV0d2VlblNlbGVjdGVkVmFsdWVzO1xuXHRcdFx0bm9NYXRjaD86IGJvb2xlYW47XG5cdCAgfTtcblxuLy9XZSB3aWxsIGJlIGhhbmRsaW5nIFwiQUxMXCIgYW5kIFwiQU5ZXCIgYXQgbGF0ZXIgcG9pbnQgb2YgdGltZVxuZXhwb3J0IHR5cGUgVG9rZW5TZWxlY3RlZFZhbHVlc0RlZmluaXRpb24gPVxuXHR8IHtcblx0XHRcdG9wZXJhdG9yOiBFeGNsdWRlPEZpbHRlck9wZXJhdG9yLCBGaWx0ZXJPcGVyYXRvci5CVCB8IEZpbHRlck9wZXJhdG9yLk5CPjtcblx0XHRcdHNlbGVjdGVkVmFsdWVzOiBzdHJpbmdbXSB8IGJvb2xlYW5bXSB8IG51bWJlcltdIHwgRGF0ZVtdO1xuXHQgIH1cblx0fCB7XG5cdFx0XHRvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3IuQlQgfCBGaWx0ZXJPcGVyYXRvci5OQjtcblx0XHRcdHNlbGVjdGVkVmFsdWVzOiBCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXM7XG5cdCAgfTtcblxuZXhwb3J0IHR5cGUgVG9rZW5UeXBlID0gXCJNZW51V2l0aENoZWNrQm94XCIgfCBcIkNhbGVuZGFyXCIgfCBcIlRpbWVcIiB8IFwiVmFsdWVIZWxwXCIgfCBcIk1lbnVXaXRoU2luZ2xlU2VsZWN0XCI7XG5cbmV4cG9ydCB0eXBlIFZhbHVlSGVscFRva2VuRGVmaW5pdGlvbiA9IHtcblx0a2V5OiBzdHJpbmc7XG5cdGxhYmVsOiBzdHJpbmc7XG5cdGtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXM6IFZhbHVlSGVscFNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdO1xuXHR0eXBlOiBcIlZhbHVlSGVscFwiO1xuXHRidXN5OiBib29sZWFuO1xuXHRpc1JlcXVpcmVkPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIE5vblZhbHVlSGVscFRva2VuRGVmaW5pdGlvbiA9IHtcblx0a2V5OiBzdHJpbmc7XG5cdGxhYmVsOiBzdHJpbmc7XG5cdGtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXM6IFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW107XG5cdHR5cGU6IEV4Y2x1ZGU8VG9rZW5UeXBlLCBcIlZhbHVlSGVscFwiPjtcblx0aXNSZXF1aXJlZD86IGJvb2xlYW47XG5cdGJ1c3k6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBUb2tlbkRlZmluaXRpb24gPSBWYWx1ZUhlbHBUb2tlbkRlZmluaXRpb24gfCBOb25WYWx1ZUhlbHBUb2tlbkRlZmluaXRpb247XG5cbmV4cG9ydCB0eXBlIFRva2VuU2V0dGVycyA9IFwic2V0U2VsZWN0ZWRWYWx1ZXNcIjtcblxuZXhwb3J0IHR5cGUgRWFzeUZpbHRlclByb3BlcnR5TWV0YWRhdGEgPSBQcm9wZXJ0eU1ldGFkYXRhICZcblx0KFxuXHRcdHwge1xuXHRcdFx0XHR0eXBlOiBcIlZhbHVlSGVscFwiO1xuXHRcdFx0XHRkZWZhdWx0VmFsdWU/OiBWYWx1ZUhlbHBTZWxlY3RlZFZhbHVlc0RlZmluaXRpb25bXTtcblx0XHQgIH1cblx0XHR8IHtcblx0XHRcdFx0dHlwZTogRXhjbHVkZTxUb2tlblR5cGUsIFwiVmFsdWVIZWxwXCI+O1xuXHRcdFx0XHRkZWZhdWx0VmFsdWU/OiBUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdO1xuXHRcdCAgfVxuXHQpO1xuXG4vLyBXZSBuZWVkIHRoZSB0aGlyZCBhcmd1ZW1lbnQgYmVjYXVzZSB0aGVyZSBtaWdodCBiZSBhIGNoYW5jZSBvZiBjb21wb3NpdGUga2V5cyBzY2VuYXJpb1xudHlwZSBEYXRhRmV0Y2hlciA9IChcblx0cHJvcGVydHlOYW1lOiBzdHJpbmcsXG5cdHZhbHVlT2ZDdXJyZW50UHJvcGVydHk6IFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW10sXG5cdGxsbVJlc3VsdDogU3VjY2VzczxFYXN5RmlsdGVyUmVzdWx0PlxuKSA9PiBQcm9taXNlPFZhbHVlSGVscFNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdPjtcblxuaW50ZXJmYWNlIEZvY3VzSGFuZGxpbmdDb250cm9sIHtcblx0b25zYXBmb2N1c2xlYXZlPzogKCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IHR5cGUgRWFzeUZpbHRlckJhckNvbnRhaW5lciRTaG93VmFsdWVIZWxwRXZlbnQgPSBVSTVFdmVudDxcblx0e1xuXHRcdGtleTogc3RyaW5nO1xuXHRcdHZhbHVlczogdW5rbm93bltdO1xuXHRcdHJlc29sdmU6ICh2YWx1ZTogVmFsdWVIZWxwU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW10pID0+IHZvaWQ7XG5cdFx0cmVqZWN0OiAocmVhc29uPzogRXJyb3IpID0+IHZvaWQ7XG5cdH0sXG5cdEVhc3lGaWx0ZXJCYXJDb250YWluZXJcbj47XG5cbi8qXG4gKiBEZWxpdmVyeSBmb3IgYmV0YSByZWxlYXNlIGZvciB0aGUgZWFzeSBmaWx0ZXIgZmVhdHVyZS5cbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvbnRyb2xzLmVhc3lGaWx0ZXIuRWFzeUZpbHRlckJhckNvbnRhaW5lclwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWFzeUZpbHRlckJhckNvbnRhaW5lciBleHRlbmRzIENvbnRyb2wge1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGNvbnRleHRQYXRoPzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0YXBwSWQ/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRlYXN5RmlsdGVyTGliPzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYXJyYXlcIiB9KVxuXHRmaWx0ZXJCYXJNZXRhZGF0YT86IEVhc3lGaWx0ZXJQcm9wZXJ0eU1ldGFkYXRhW107XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJhcnJheVwiIH0pXG5cdHJlY29tbWVuZGVkVmFsdWVzPzogc3RyaW5nW107XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJmdW5jdGlvblwiIH0pXG5cdGRhdGFGZXRjaGVyPzogRGF0YUZldGNoZXI7XG5cblx0QGRlZmluZVJlZmVyZW5jZSgpXG5cdGVhc3lGaWx0ZXJJbnB1dCE6IFJlZjxFbmhhbmNlV2l0aFVJNTxFYXN5RmlsdGVySW5wdXQ+PjtcblxuXHRAZGVmaW5lUmVmZXJlbmNlKClcblx0dG9rZW5pemVyITogUmVmPFRva2VuaXplcj47XG5cblx0QGFnZ3JlZ2F0aW9uKHsgdHlwZTogXCJzYXAudWkuY29yZS5Db250cm9sXCIgfSlcblx0Y29udGVudD86IENvbnRyb2w7XG5cblx0QGV2ZW50KClcblx0dG9rZW5zQ2hhbmdlZD86IEV2ZW50SGFuZGxlcjxVSTVFdmVudDx7IHRva2VuczogVG9rZW5EZWZpbml0aW9uW10gfSwgRWFzeUZpbHRlckJhckNvbnRhaW5lcj4+O1xuXG5cdEBldmVudCgpXG5cdHF1ZXJ5Q2hhbmdlZD86IEV2ZW50SGFuZGxlcjxVSTVFdmVudDx7IHF1ZXJ5OiBzdHJpbmcgfSwgRWFzeUZpbHRlckJhckNvbnRhaW5lcj4+O1xuXG5cdEBldmVudCgpXG5cdHNob3dWYWx1ZUhlbHA/OiBFdmVudEhhbmRsZXI8RWFzeUZpbHRlckJhckNvbnRhaW5lciRTaG93VmFsdWVIZWxwRXZlbnQ+O1xuXG5cdEBldmVudCgpXG5cdGNsZWFyRmlsdGVycz86IEV2ZW50SGFuZGxlcjtcblxuXHRAZXZlbnQoKVxuXHRiZWZvcmVRdWVyeVByb2Nlc3Npbmc/OiBFdmVudEhhbmRsZXI7XG5cblx0QGV2ZW50KClcblx0YWZ0ZXJRdWVyeVByb2Nlc3Npbmc/OiBFdmVudEhhbmRsZXI7XG5cblx0cHJpdmF0ZSByZXNvdXJjZUJ1bmRsZSE6IFJlc291cmNlQnVuZGxlO1xuXG5cdEBkZWZpbmVTdGF0ZSgpXG5cdHByb3RlY3RlZCBzdGF0ZTogU3RhdGVPZjx7XG5cdFx0c2hvd1Jlc3VsdDogYm9vbGVhbjtcblx0XHR0b2tlbnM6IFRva2VuRGVmaW5pdGlvbltdO1xuXHRcdHRva2VuaXplckVkaXRhYmxlOiBib29sZWFuO1xuXHRcdHNob3dTaW5nbGVWYWx1ZU1lc3NhZ2VTdHJpcD86IGJvb2xlYW47XG5cdFx0c2luZ2xlVmFsdWVNZXNzYWdlU3RyaXBUZXh0Pzogc3RyaW5nO1xuXHRcdG1lc3NhZ2VTdHJpcFRleHQ/OiBzdHJpbmc7XG5cdFx0c2hvd01lc3NhZ2VTdHJpcD86IGJvb2xlYW47XG5cdFx0bWVzc2FnZVN0cmlwVHlwZTogTWVzc2FnZVR5cGU7XG5cdFx0dGh1bWJCdXR0b25FbmFibGVkOiBib29sZWFuO1xuXHRcdHRodW1iVXBCdXR0b25QcmVzc2VkOiBib29sZWFuO1xuXHRcdHRodW1iRG93bkJ1dHRvblByZXNzZWQ6IGJvb2xlYW47XG5cdH0+ID0ge1xuXHRcdHNob3dSZXN1bHQ6IGZhbHNlLFxuXHRcdHRva2VuczogW10gYXMgVG9rZW5EZWZpbml0aW9uW10sXG5cdFx0dG9rZW5pemVyRWRpdGFibGU6IHRydWUsXG5cdFx0c2hvd1NpbmdsZVZhbHVlTWVzc2FnZVN0cmlwOiBmYWxzZSxcblx0XHRzaW5nbGVWYWx1ZU1lc3NhZ2VTdHJpcFRleHQ6IFwiXCIsXG5cdFx0bWVzc2FnZVN0cmlwVGV4dDogXCJcIixcblx0XHRzaG93TWVzc2FnZVN0cmlwOiBmYWxzZSxcblx0XHRtZXNzYWdlU3RyaXBUeXBlOiBNZXNzYWdlVHlwZS5FcnJvcixcblx0XHR0aHVtYkJ1dHRvbkVuYWJsZWQ6IHRydWUsXG5cdFx0dGh1bWJVcEJ1dHRvblByZXNzZWQ6IGZhbHNlLFxuXHRcdHRodW1iRG93bkJ1dHRvblByZXNzZWQ6IGZhbHNlXG5cdH07XG5cblx0cHJpdmF0ZSBpbm5lckNvbnRyb2xQb3BvdmVyPzogUG9wb3ZlcjtcblxuXHRwcml2YXRlIG9rQnV0dG9uPzogQnV0dG9uO1xuXG5cdHByaXZhdGUgc2hvd0FsbEJ1dHRvbj86IEJ1dHRvbjtcblxuXHRwcml2YXRlIHRvb2xiYXI/OiBPdmVyZmxvd1Rvb2xiYXI7XG5cblx0cHJpdmF0ZSBtYW5kYXRvcnlLZXlNYXA/OiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjtcblxuXHQvL0lmIHNldCB0byB0cnVlIHRoZSBlcnJvciBzdGF0ZSBjYW4gYmUgc2VlbiBvbiB0aGUgdG9rZW5zXG5cdHByaXZhdGUgaXNNYW5kYXRvcnlDaGVja1JlcXVpcmVkPzogYm9vbGVhbjtcblxuXHRwcml2YXRlIHNob3VsZFRva2VuQ2hhbmdlRXZlbnRGaXJlZCA9IHRydWU7XG5cblx0ZWFzeWZpbHRlcj86IFByb21pc2U8dHlwZW9mIEVhc3lGaWx0ZXIgfCB1bmRlZmluZWQ+O1xuXG5cdHByaXZhdGUgcmVzb2x2ZUNvbnRlbnRSZWFkeSE6ICgpID0+IHZvaWQ7XG5cblx0cHJpdmF0ZSBpbnB1dEZpZWxkUmVhZHk6IFByb21pc2U8dm9pZD4gPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuXHRcdHRoaXMucmVzb2x2ZUNvbnRlbnRSZWFkeSA9IHJlc29sdmU7XG5cdH0pO1xuXG5cdGNvbnN0cnVjdG9yKHByb3BlcnRpZXM6IHN0cmluZyB8ICgkQ29udHJvbFNldHRpbmdzICYgUHJvcGVydGllc09mPEVhc3lGaWx0ZXJCYXJDb250YWluZXI+KSwgb3RoZXJzPzogJENvbnRyb2xTZXR0aW5ncykge1xuXHRcdHN1cGVyKHByb3BlcnRpZXMgYXMgc3RyaW5nLCBvdGhlcnMpO1xuXHRcdHRoaXMuaW5pdGlhbGl6ZSgpO1xuXHR9XG5cblx0c2V0RWFzeUZpbHRlckxpYihlYXN5RmlsdGVyTGliOiBzdHJpbmcpOiB2b2lkIHtcblx0XHR0aGlzLnNldFByb3BlcnR5KFwiZWFzeUZpbHRlckxpYlwiLCBlYXN5RmlsdGVyTGliKTtcblx0XHRpZiAodGhpcy5lYXN5RmlsdGVyTGliKSB7XG5cdFx0XHR0aGlzLmVhc3lmaWx0ZXIgPSBpbXBvcnQodGhpcy5lYXN5RmlsdGVyTGliKTtcblx0XHR9XG5cdH1cblxuXHRhc3luYyBzZXRBcHBJZChhcHBJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0aWYgKCF0aGlzLmFwcElkKSB7XG5cdFx0XHR0aGlzLnNldFByb3BlcnR5KFwiYXBwSWRcIiwgYXBwSWQsIHRydWUpO1xuXHRcdFx0YXdhaXQgdGhpcy5pbnB1dEZpZWxkUmVhZHk7XG5cdFx0XHR0aGlzLmVhc3lGaWx0ZXJJbnB1dC5jdXJyZW50Py5zZXRQcm9wZXJ0eShcImFwcElkXCIsIGFwcElkLCB0cnVlKTtcblx0XHRcdGF3YWl0IHRoaXMuZWFzeUZpbHRlcklucHV0LmN1cnJlbnQ/LmluaXRTaGVsbEhpc3RvcnlQcm92aWRlcigpO1xuXHRcdH1cblx0fVxuXG5cdHNldEZpbHRlckJhck1ldGFkYXRhKGZpbHRlckJhck1ldGFkYXRhOiBFYXN5RmlsdGVyUHJvcGVydHlNZXRhZGF0YVtdKTogdm9pZCB7XG5cdFx0aWYgKCF0aGlzLmZpbHRlckJhck1ldGFkYXRhKSB7XG5cdFx0XHR0aGlzLnNldFByb3BlcnR5KFwiZmlsdGVyQmFyTWV0YWRhdGFcIiwgZmlsdGVyQmFyTWV0YWRhdGEsIHRydWUpO1xuXHRcdFx0Ly8gcG9wdWxhdGUgdGhlIHRva2VucyB3aXRoIGRlZmF1bHQgdmFsdWVcblx0XHRcdGNvbnN0IHRva2VucyA9IHRoaXMuZ2V0RGVmYXVsdFRva2VucygpO1xuXHRcdFx0aWYgKCF0aGlzLmlubmVyQ29udHJvbFBvcG92ZXIpIHtcblx0XHRcdFx0dGhpcy5pbm5lckNvbnRyb2xQb3BvdmVyID0gdGhpcy5jcmVhdGVQb3BvdmVyRm9ySW5uZXJDb250cm9scygpO1xuXHRcdFx0XHR0aGlzLmFkZERlcGVuZGVudCh0aGlzLmlubmVyQ29udHJvbFBvcG92ZXIpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5zdGF0ZS50b2tlbnMgPSB0b2tlbnM7XG5cdFx0XHR0aGlzLnN0YXRlLnNob3dSZXN1bHQgPSB0b2tlbnMubGVuZ3RoID4gMDtcblx0XHRcdC8vL1dlIGRvbid0IHdhbnQgdG8gZGlzcGxheSBlcnJvciB2YWx1ZVN0YXRlTWVzc2FnZSBhcyBzb29uIHRoZSBjb250cm9sIHJlbmRlcnNcblx0XHRcdHRoaXMuaXNNYW5kYXRvcnlDaGVja1JlcXVpcmVkID0gdHJ1ZTtcblx0XHRcdC8vb25Ub2tlbkNoYW5nZSBldmVudCBzaG91bGQgbm90IGJlIGZpcmVkIHdoZW4gaW5pdGlhbCBzZXQgb2YgdG9rZW5zIGFyZSBzZXRcblx0XHRcdHRoaXMuc2hvdWxkVG9rZW5DaGFuZ2VFdmVudEZpcmVkID0gZmFsc2U7XG5cdFx0fVxuXHR9XG5cblx0aW5pdCgpOiB2b2lkIHtcblx0XHR0aGlzLnJlc291cmNlQnVuZGxlID0gTGliLmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLmNvbnRyb2xzXCIpITtcblx0fVxuXG5cdGluaXRpYWxpemUoKTogdm9pZCB7XG5cdFx0dGhpcy5jb250ZW50ID0gdGhpcy5jcmVhdGVDb250ZW50KCk7XG5cdFx0dGhpcy5yZXNvbHZlQ29udGVudFJlYWR5KCk7XG5cdFx0aWYgKCF0aGlzLmlubmVyQ29udHJvbFBvcG92ZXIpIHtcblx0XHRcdHRoaXMuaW5uZXJDb250cm9sUG9wb3ZlciA9IHRoaXMuY3JlYXRlUG9wb3ZlckZvcklubmVyQ29udHJvbHMoKTtcblx0XHRcdHRoaXMuYWRkRGVwZW5kZW50KHRoaXMuaW5uZXJDb250cm9sUG9wb3Zlcik7XG5cdFx0fVxuXHRcdC8vV2UgZG9uJ3Qgd2FudCB0byBkaXNwbGF5IGVycm9yIHZhbHVlU3RhdGVNZXNzYWdlIGFzIHNvb24gdGhlIGNvbnRyb2wgcmVuZGVyc1xuXHRcdHRoaXMuaXNNYW5kYXRvcnlDaGVja1JlcXVpcmVkID0gdHJ1ZTtcblx0XHQvL29uVG9rZW5DaGFuZ2UgZXZlbnQgc2hvdWxkIG5vdCBiZSBmaXJlZCB3aGVuIGluaXRpYWwgc2V0IG9mIHRva2VucyBhcmUgc2V0XG5cdFx0dGhpcy5zaG91bGRUb2tlbkNoYW5nZUV2ZW50RmlyZWQgPSBmYWxzZTtcblx0fVxuXG5cdC8vIFRoaXMgbWV0aG9kIHNob3VsZCBiZSB1c2VkIGJlZm9yZSB1cGRhdGluZyB0aGUgc3RhdGUsIG9uY2UgdGhlIHN0YXRlIGlzIHVwZGF0ZWQgdGhlIHByZXZpb3VzIG92ZXJyaWRkZW4gZGVmYXVsdCB2YWx1ZXMgd291bGQgYmUgZ29uZSBmb3JldmVyXG5cdGdldERlZmF1bHRUb2tlbnMoKTogVG9rZW5EZWZpbml0aW9uW10ge1xuXHRcdGNvbnN0IHRva2VuczogVG9rZW5EZWZpbml0aW9uW10gPSBbXTtcblx0XHRpZiAoIXRoaXMubWFuZGF0b3J5S2V5TWFwKSB7XG5cdFx0XHR0aGlzLm1hbmRhdG9yeUtleU1hcCA9IHt9O1xuXHRcdH1cblx0XHR0aGlzLmZpbHRlckJhck1ldGFkYXRhPy5mb3JFYWNoKChkYXRhKSA9PiB7XG5cdFx0XHRjb25zdCBpc1JlcXVpcmVkID0gZGF0YS5yZXF1aXJlZDtcblx0XHRcdGlmIChpc1JlcXVpcmVkKSB7XG5cdFx0XHRcdCh0aGlzLm1hbmRhdG9yeUtleU1hcCBhcyBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPilbZGF0YS5uYW1lXSA9IHRydWU7XG5cdFx0XHRcdC8vQ2hlY2sgd2hldGhlciB0aGUga2V5cyBleGlzdCBpbiB0aGUgY3VycmVudCBzdGF0ZSBlbHNlIHB1c2ggaXQgYWNyb3NzXG5cdFx0XHRcdGlmIChkYXRhLnR5cGUgPT09IFwiVmFsdWVIZWxwXCIpIHtcblx0XHRcdFx0XHR0b2tlbnMucHVzaCh7XG5cdFx0XHRcdFx0XHRrZXk6IGRhdGEubmFtZSxcblx0XHRcdFx0XHRcdGxhYmVsOiBkYXRhLmxhYmVsIGFzIHN0cmluZyxcblx0XHRcdFx0XHRcdGtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXM6IChkYXRhLmRlZmF1bHRWYWx1ZSBhcyBWYWx1ZUhlbHBTZWxlY3RlZFZhbHVlc0RlZmluaXRpb25bXSkgPz8gW10sXG5cdFx0XHRcdFx0XHR0eXBlOiBkYXRhLnR5cGUsXG5cdFx0XHRcdFx0XHRidXN5OiBmYWxzZSxcblx0XHRcdFx0XHRcdGlzUmVxdWlyZWRcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0b2tlbnMucHVzaCh7XG5cdFx0XHRcdFx0XHRrZXk6IGRhdGEubmFtZSxcblx0XHRcdFx0XHRcdGxhYmVsOiBkYXRhLmxhYmVsIGFzIHN0cmluZyxcblx0XHRcdFx0XHRcdGtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXM6IChkYXRhLmRlZmF1bHRWYWx1ZSBhcyBUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdKSA/PyBbXSxcblx0XHRcdFx0XHRcdHR5cGU6IGRhdGEudHlwZSxcblx0XHRcdFx0XHRcdGJ1c3k6IGZhbHNlLFxuXHRcdFx0XHRcdFx0aXNSZXF1aXJlZFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0cmV0dXJuIHRva2Vucztcblx0fVxuXG5cdG9uRW50ZXJQcmVzc2VkKGU6IFVJNUV2ZW50PHsgcXVlcnk6IHN0cmluZyB9LCBFYXN5RmlsdGVySW5wdXQ+KTogdm9pZCB7XG5cdFx0dGhpcy5vbkdvUHJlc3MoZS5nZXRQYXJhbWV0ZXIoXCJxdWVyeVwiKSk7XG5cdH1cblxuXHQvL01ha2luZyBpdCBwdWJsaWMgYmVjYXVzZSBpbiBsaXZlIG1vZGUgdGhlIGFwcCBkZXZlbG9wZXIgY2FuIGRlY2lkZSB3aGV0aGVyIHRvIGRpc3BsYXkgdGhlIGVycm9yIFZhbHVlU3RhdGVNZXNzYWdlXG5cdC8vSW4gbm9uLWxpdmUgbW9kZSAsIHdlIGFyZSBhbHJlYWR5IGludGVybmFsbHkgaGFuZGxpbmcgaXQgb24gZXZlcnkgdGltZSB0aW1lIGEgdXNlciBjbGlja3Mgb24gR08vRW50ZXIgYnV0dG9uc1xuXHRwdWJsaWMgY2hlY2tJZkFsbE1hbmRhdG9yeVRva2Vuc0ZpbGxlZCgpOiBib29sZWFuIHtcblx0XHRjb25zdCB0b2tlbnNJblN0YXRlID0gdGhpcy5nZXRVblNldE1hbmRhdG9yeVRva2Vuc0luQ3VycmVudFN0YXRlKCk7XG5cdFx0aWYgKHRva2Vuc0luU3RhdGUubGVuZ3RoICE9PSAwKSB7XG5cdFx0XHRjb25zdCB0b2tlbnMgPSB0aGlzLmdldEFjdHVhbFRva2Vuc0Zyb21TdGF0ZSh0b2tlbnNJblN0YXRlKTtcblx0XHRcdHRva2Vucz8uZm9yRWFjaCgodG9rZW4pID0+IHtcblx0XHRcdFx0dG9rZW4uc2V0UHJvcGVydHkoXCJ2YWx1ZVN0YXRlXCIsIFZhbHVlU3RhdGUuRXJyb3IpO1xuXHRcdFx0XHR0b2tlbi5zZXRQcm9wZXJ0eShcInZhbHVlU3RhdGVUZXh0XCIsIHRoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfTUFOREFUT1JZX1RPS0VOX0VSUk9SXCIpKTtcblx0XHRcdFx0dG9rZW4ub3BlblZhbHVlU3RhdGVNZXNzYWdlKCk7XG5cdFx0XHR9KTtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHRwdWJsaWMgY2xvc2VBbGxNYW5kYXRvcnlWYWx1ZVN0YXRlTWVzc2FnZXMoKTogdm9pZCB7XG5cdFx0Y29uc3QgZWFzeVRva2VucyA9IHRoaXMudG9rZW5pemVyLmN1cnJlbnQ/LmdldFRva2VucygpIGFzIEVhc3lGaWx0ZXJUb2tlbltdO1xuXHRcdGVhc3lUb2tlbnMuZm9yRWFjaCgodG9rZW4pID0+IHRva2VuLmNsb3NlVmFsdWVTdGF0ZU1lc3NhZ2UoKSk7XG5cdH1cblxuXHRhc3luYyBvbkdvUHJlc3MobWFnaWNRdWVyeTogc3RyaW5nIHwgdW5kZWZpbmVkKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0aWYgKCFtYWdpY1F1ZXJ5KSB7XG5cdFx0XHR0aGlzLnJlc2V0U3RhdGUoKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0dGhpcy5zdGF0ZS50b2tlbml6ZXJFZGl0YWJsZSA9IHRydWU7XG5cblx0XHQvLyBDYWxsIEFJIHNlcnZpY2UgdG8gZ2V0IHRoZSBmaWx0ZXIgY3JpdGVyaWFcblx0XHRjb25zdCBlYXN5ZmlsdGVyID0gYXdhaXQgdGhpcy5lYXN5ZmlsdGVyO1xuXHRcdGlmICghZWFzeWZpbHRlcikge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHR0aGlzLmZpcmVFdmVudChcImJlZm9yZVF1ZXJ5UHJvY2Vzc2luZ1wiKTtcblxuXHRcdGNvbnN0IGVhc3lGaWx0ZXJNZXRhZGF0YTogRWFzeUZpbHRlck1ldGFkYXRhID0ge1xuXHRcdFx0dmVyc2lvbjogMSxcblx0XHRcdGVudGl0eVNldDogdGhpcy5jb250ZXh0UGF0aCxcblx0XHRcdGZpZWxkczogdGhpcy5maWx0ZXJCYXJNZXRhZGF0YSBhcyBFYXN5RmlsdGVyUHJvcGVydHlNZXRhZGF0YVtdXG5cdFx0fTtcblxuXHRcdGNvbnN0IGVhc3lGaWx0ZXJSZXN1bHQgPSBhd2FpdCBlYXN5ZmlsdGVyLmVhc3lGaWx0ZXIobWFnaWNRdWVyeSwgZWFzeUZpbHRlck1ldGFkYXRhKTtcblxuXHRcdGlmIChlYXN5RmlsdGVyUmVzdWx0LnN1Y2Nlc3MpIHtcblx0XHRcdC8vT25seSBhZGQgdGhlIHJlY2VudCBxdWVyeSB3aGVuIHRoZSBjYWxsIGlzIHN1Y2Nlc3Ncblx0XHRcdC8vRG8gbm90IHRyYWNrIHRoZSByZWNlbnQgcXVlcmllcyB3aGVuIHRoZSBpc0hpc3RvcnlFbmFibGVkIGlzIHNldCB0byBmYWxzZVxuXHRcdFx0Ly9JdCB3b3VsZCBiZSBhIHZpb2xhdGlvbiB0byB1c2VycyBwcml2YWN5XG5cdFx0XHRpZiAodGhpcy5lYXN5RmlsdGVySW5wdXQuY3VycmVudD8uaXNIaXN0b3J5RW5hYmxlZCgpID8/IGZhbHNlKSB7XG5cdFx0XHRcdHRoaXMuZWFzeUZpbHRlcklucHV0LmN1cnJlbnQ/LmFkZFJlY2VudFF1ZXJ5KG1hZ2ljUXVlcnkpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGVhc3lGaWx0ZXJSZXN1bHQuZGF0YS52ZXJzaW9uID09PSAxKSB7XG5cdFx0XHRcdHRoaXMuaGFuZGxlVjFTdWNjZXNzKGVhc3lGaWx0ZXJSZXN1bHQpO1xuXHRcdFx0fSBlbHNlIGlmIChlYXN5RmlsdGVyUmVzdWx0LmRhdGEudmVyc2lvbiA9PT0gMikge1xuXHRcdFx0XHQvLyBDcmVhdGUgdGhlIHNhcC51aS5tb2RlbC5GaWx0ZXIgZnJvbSB0aGUgZmlsdGVyIGFuZCBhcHBseSBpdCBkaXJlY3RseSB0byB0aGUgbGlzdCBiaW5kaW5nXG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIGVycm9yXG5cdFx0XHR0aGlzLnJlbW92ZU5vbk1hbmRhdG9yeVRva2VucygpO1xuXHRcdFx0dGhpcy5zZXRNZXNzYWdlU3RyaXAoZWFzeUZpbHRlclJlc3VsdC5tZXNzYWdlKTtcblx0XHRcdHRoaXMuc3RhdGUubWVzc2FnZVN0cmlwVHlwZSA9IE1lc3NhZ2VUeXBlLldhcm5pbmc7XG5cdFx0XHRMb2cuZXJyb3IoXCJFcnJvciB3aGlsZSBnZW5lcmF0aW5nIGZpbHRlciBjcml0ZXJpYTogXCIsIGVhc3lGaWx0ZXJSZXN1bHQubWVzc2FnZSk7XG5cdFx0fVxuXG5cdFx0dGhpcy5maXJlRXZlbnQoXCJhZnRlclF1ZXJ5UHJvY2Vzc2luZ1wiKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIHRoZSBzdWNjZXNzIHJlc3BvbnNlIGZyb20gdGhlIEFJIHNlcnZpY2UgZm9yIHZlcnNpb24gMSBvZiB0aGUgZWFzeSBmaWx0ZXIuXG5cdCAqIEBwYXJhbSBlYXN5RmlsdGVyUmVzdWx0IFRoZSByZXN1bHQgZnJvbSB0aGUgQUkgc2VydmljZVxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0cHJpdmF0ZSBoYW5kbGVWMVN1Y2Nlc3MoZWFzeUZpbHRlclJlc3VsdDogU3VjY2VzczxFYXN5RmlsdGVyLkVhc3lGaWx0ZXJSZXN1bHQ+KTogdm9pZCB7XG5cdFx0aWYgKGVhc3lGaWx0ZXJSZXN1bHQuZGF0YS5maWx0ZXIpIHtcblx0XHRcdC8vIFdlIG5lZWQgdG8gc2hvdyBhIG1lc3NhZ2UgdG8gdGhlIHVzZXIgdGhhdCB0aGUgZmlsdGVyIGNyaXRlcmlhIGhhcyBiZWVuIGdlbmVyYXRlZFxuXHRcdFx0TG9nLmRlYnVnKFwiRmlsdGVyIGNyaXRlcmlhIGdlbmVyYXRlZDogXCIsIEpTT04uc3RyaW5naWZ5KGVhc3lGaWx0ZXJSZXN1bHQuZGF0YS5maWx0ZXIsIG51bGwsIDIpKTtcblxuXHRcdFx0Y29uc3QgdG9rZW5zID0gWy4uLnRoaXMuc3RhdGUudG9rZW5zXS5maWx0ZXIoKHRva2VuKSA9PiB0b2tlbi5pc1JlcXVpcmVkKTtcblxuXHRcdFx0Ly8gQ2xlYXIgdGhlIHByZXZpb3VzIG1lc3NhZ2Ugc3RyaXAgZm9yIHZhbGlkYXRlZCBmaWx0ZXJzXG5cdFx0XHR0aGlzLmNsZWFyTWVzc2FnZVN0cmlwKCk7XG5cblx0XHRcdC8vIFZhbGlkYXRlIGFuZCBhcHBseSB0aGUgZmlsdGVyIGNyaXRlcmlhXG5cdFx0XHRFYXN5RmlsdGVyVXRpbHMuZm9ybWF0RGF0YShcblx0XHRcdFx0dG9rZW5zLFxuXHRcdFx0XHRlYXN5RmlsdGVyUmVzdWx0LmRhdGEuZmlsdGVyLFxuXHRcdFx0XHR0aGlzLmZpbHRlckJhck1ldGFkYXRhIGFzIEVhc3lGaWx0ZXJQcm9wZXJ0eU1ldGFkYXRhW10sXG5cdFx0XHRcdHRoaXMuc2V0TWVzc2FnZVN0cmlwLmJpbmQodGhpcylcblx0XHRcdCk7XG5cblx0XHRcdC8vV2Ugb25seSBoYXZlIHRvIGNhbGwgdGhlIGRhdGFGZXRjaGVyIG9uIHRoZSBWSCB0b2tlbnMgd2hpY2ggaGF2ZSBiZWVuIGFza2VkIGJ5IHRoZSB1c2VyXG5cdFx0XHQvL0luIE1hZG5hdG9yeSB0b2tlbnMgY2FzZSB0aGUgZGVmYXVsdFZhbHVlcyBhcmUgYWxyZWFkeSBnaXZlbiwgc28gbm8gbmVlZCB0byBjYWxsIGRhdGFGZXRjaGVyIG9uIGl0XG5cblx0XHRcdGNvbnN0IGFsbFZhbHVlSGVscFRva2VucyA9IHRva2Vucy5maWx0ZXIoKHJlc3VsdCkgPT4gcmVzdWx0LnR5cGUgPT09IFwiVmFsdWVIZWxwXCIpO1xuXHRcdFx0Y29uc3QgcmVxdWlyZWRWYWx1ZUhlbHBUb2tlbnMgPSBhbGxWYWx1ZUhlbHBUb2tlbnMuZmlsdGVyKCh2YWx1ZUhlbHBUb2tlbikgPT4ge1xuXHRcdFx0XHRyZXR1cm4gZWFzeUZpbHRlclJlc3VsdC5kYXRhLmZpbHRlcj8uZmluZCgobGxtUmVzdWx0KSA9PiBsbG1SZXN1bHQubmFtZSA9PT0gdmFsdWVIZWxwVG9rZW4ua2V5KTtcblx0XHRcdH0pO1xuXG5cdFx0XHRpZiAodGhpcy5kYXRhRmV0Y2hlcikge1xuXHRcdFx0XHQocmVxdWlyZWRWYWx1ZUhlbHBUb2tlbnMgYXMgdW5rbm93biBhcyBWYWx1ZUhlbHBUb2tlbkRlZmluaXRpb25bXSkuZm9yRWFjaChhc3luYyAodmFsdWVIZWxwVG9rZW4pID0+IHtcblx0XHRcdFx0XHRjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmRhdGFGZXRjaGVyPy4oXG5cdFx0XHRcdFx0XHR2YWx1ZUhlbHBUb2tlbi5rZXksXG5cdFx0XHRcdFx0XHR2YWx1ZUhlbHBUb2tlbi5rZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzIGFzIHVua25vd24gYXMgVG9rZW5TZWxlY3RlZFZhbHVlc0RlZmluaXRpb25bXSxcblx0XHRcdFx0XHRcdGVhc3lGaWx0ZXJSZXN1bHRcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdHZhbHVlSGVscFRva2VuLmJ1c3kgPSBmYWxzZTtcblx0XHRcdFx0XHRpZiAocmVzdWx0KSB7XG5cdFx0XHRcdFx0XHR2YWx1ZUhlbHBUb2tlbi5rZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzID0gcmVzdWx0O1xuXHRcdFx0XHRcdFx0dGhpcy5zdGF0ZS5zaG93UmVzdWx0ID0gdHJ1ZTtcblx0XHRcdFx0XHRcdHRoaXMuc3RhdGUudG9rZW5zID0gdXBkYXRlZFRva2Vucztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly9JZiBkYXRhRmV0Y2hlciBpcyBub3QgdGhlcmUsIHRoZW4gbW9jayB0aGUgdmFsdWUgYW5kIGRlc2NyaXB0aW9uIHdpdGggdGhlIHNhbWUgcmVzdWx0IGNvbWluZyBmcm9tIHRoZSBMTE1cblx0XHRcdFx0cmVxdWlyZWRWYWx1ZUhlbHBUb2tlbnMuZm9yRWFjaCgodmFsdWVIZWxwVG9rZW4pID0+IHtcblx0XHRcdFx0XHR2YWx1ZUhlbHBUb2tlbi5idXN5ID0gZmFsc2U7XG5cdFx0XHRcdFx0dmFsdWVIZWxwVG9rZW4ua2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcy5mb3JFYWNoKChrZXlTcGVjaWZpY1ZhbHVlLCBpZHgpID0+IHtcblx0XHRcdFx0XHRcdGlmIChrZXlTcGVjaWZpY1ZhbHVlLm9wZXJhdG9yID09PSBGaWx0ZXJPcGVyYXRvci5CVCB8fCBrZXlTcGVjaWZpY1ZhbHVlLm9wZXJhdG9yID09PSBGaWx0ZXJPcGVyYXRvci5OQikge1xuXHRcdFx0XHRcdFx0XHR2YWx1ZUhlbHBUb2tlbi5rZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzW2lkeF0uc2VsZWN0ZWRWYWx1ZXMgPSBbXG5cdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGtleVNwZWNpZmljVmFsdWUuc2VsZWN0ZWRWYWx1ZXNbMF0sXG5cdFx0XHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjoga2V5U3BlY2lmaWNWYWx1ZS5zZWxlY3RlZFZhbHVlc1swXSBhcyB1bmtub3duIGFzIGxsbVJlc3VsdEZvclNlbGVjdGVkVmFsdWVzVHlwZVxuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGtleVNwZWNpZmljVmFsdWUuc2VsZWN0ZWRWYWx1ZXNbMV0sXG5cdFx0XHRcdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjoga2V5U3BlY2lmaWNWYWx1ZS5zZWxlY3RlZFZhbHVlc1sxXSBhcyB1bmtub3duIGFzIGxsbVJlc3VsdEZvclNlbGVjdGVkVmFsdWVzVHlwZVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHZhbHVlSGVscFRva2VuLmtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXNbaWR4XS5zZWxlY3RlZFZhbHVlcy5mb3JFYWNoKCh2YWx1ZSwgc3ViSW5keCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdHZhbHVlSGVscFRva2VuLmtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXNbaWR4XS5zZWxlY3RlZFZhbHVlc1tzdWJJbmR4XSA9IHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlLFxuXHRcdFx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IHZhbHVlIGFzIHVua25vd24gYXMgbGxtUmVzdWx0Rm9yU2VsZWN0ZWRWYWx1ZXNUeXBlXG5cdFx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCB1cGRhdGVkVG9rZW5zID0gdGhpcy52ZXJpZnlTaW5nbGVTZWxlY3RUb2tlblZhbHVlcyh0b2tlbnMpO1xuXHRcdFx0dGhpcy5zdGF0ZS5zaG93UmVzdWx0ID0gdHJ1ZTtcblx0XHRcdHRoaXMuc3RhdGUudGh1bWJCdXR0b25FbmFibGVkID0gdHJ1ZTtcblx0XHRcdHRoaXMuc3RhdGUudGh1bWJEb3duQnV0dG9uUHJlc3NlZCA9IGZhbHNlO1xuXHRcdFx0dGhpcy5zdGF0ZS50aHVtYlVwQnV0dG9uUHJlc3NlZCA9IGZhbHNlO1xuXHRcdFx0dGhpcy5zdGF0ZS50b2tlbnMgPSB1cGRhdGVkVG9rZW5zO1xuXHRcdH1cblx0fVxuXG5cdC8vZXZlcnkgc2luZ2xlIHNlbGVjdCBtZW51IHR5cGUgc2hvdWxkIGhhdmUgb25seSBvbmUgdmFsdWUsIGVsc2Ugc3BsaWNlIHRvIG9uZSB2YWx1ZSBhbmQgdXBkYXRlIHRoZSAgbWVzc2FnZSBzdHJpcFxuXHR2ZXJpZnlTaW5nbGVTZWxlY3RUb2tlblZhbHVlcyh0b2tlbnM6IFRva2VuRGVmaW5pdGlvbltdKTogVG9rZW5EZWZpbml0aW9uW10ge1xuXHRcdGNvbnN0IHNpbmdsZVNlbGVjdFRva2VuTGFiZWxzOiBzdHJpbmdbXSA9IFtdO1xuXHRcdHRva2Vucy5mb3JFYWNoKCh0b2tlbikgPT4ge1xuXHRcdFx0aWYgKHRva2VuLnR5cGUgPT09IFwiTWVudVdpdGhTaW5nbGVTZWxlY3RcIikge1xuXHRcdFx0XHRpZiAodG9rZW4ua2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlc1swXS5zZWxlY3RlZFZhbHVlcy5sZW5ndGggPiAxKSB7XG5cdFx0XHRcdFx0c2luZ2xlU2VsZWN0VG9rZW5MYWJlbHMucHVzaCh0b2tlbi5sYWJlbCk7XG5cdFx0XHRcdFx0dG9rZW4ua2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlc1swXS5zZWxlY3RlZFZhbHVlcy5zcGxpY2UoMSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KTtcblx0XHRpZiAoc2luZ2xlU2VsZWN0VG9rZW5MYWJlbHMubGVuZ3RoKSB7XG5cdFx0XHR0aGlzLnN0YXRlLnNpbmdsZVZhbHVlTWVzc2FnZVN0cmlwVGV4dCA9IHRoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfU0lOR0xFX1ZBTFVFX01FU1NBR0VcIiwgW1xuXHRcdFx0XHRgPHN0cm9uZz4ke3NpbmdsZVNlbGVjdFRva2VuTGFiZWxzLmpvaW4oXCIsIFwiKX08L3N0cm9uZz5gXG5cdFx0XHRdKTtcblx0XHRcdHRoaXMuc3RhdGUuc2hvd1NpbmdsZVZhbHVlTWVzc2FnZVN0cmlwID0gdHJ1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIHRva2Vucztcblx0fVxuXG5cdGNsZWFyTWVzc2FnZVN0cmlwKCk6IHZvaWQge1xuXHRcdHRoaXMuc3RhdGUudGh1bWJEb3duQnV0dG9uUHJlc3NlZCA9IGZhbHNlO1xuXHRcdHRoaXMuc3RhdGUudGh1bWJVcEJ1dHRvblByZXNzZWQgPSBmYWxzZTtcblx0XHR0aGlzLnN0YXRlLnNob3dNZXNzYWdlU3RyaXAgPSBmYWxzZTtcblx0XHR0aGlzLnN0YXRlLm1lc3NhZ2VTdHJpcFRleHQgPSBcIlwiO1xuXHRcdHRoaXMuc3RhdGUubWVzc2FnZVN0cmlwVHlwZSA9IE1lc3NhZ2VUeXBlLkVycm9yO1xuXHR9XG5cblx0c2V0TWVzc2FnZVN0cmlwKHRleHQ6IHN0cmluZyk6IHZvaWQge1xuXHRcdHRoaXMuc3RhdGUudGh1bWJEb3duQnV0dG9uUHJlc3NlZCA9IGZhbHNlO1xuXHRcdHRoaXMuc3RhdGUudGh1bWJVcEJ1dHRvblByZXNzZWQgPSBmYWxzZTtcblx0XHR0aGlzLnN0YXRlLnRodW1iQnV0dG9uRW5hYmxlZCA9IHRydWU7XG5cdFx0dGhpcy5zdGF0ZS5tZXNzYWdlU3RyaXBUZXh0ID0gdGV4dDtcblx0XHR0aGlzLnN0YXRlLnNob3dNZXNzYWdlU3RyaXAgPSB0cnVlO1xuXHR9XG5cblx0Y3JlYXRlUG9wb3ZlckZvcklubmVyQ29udHJvbHMoKTogUG9wb3ZlciB7XG5cdFx0aWYgKCF0aGlzLmlubmVyQ29udHJvbFBvcG92ZXIpIHtcblx0XHRcdHRoaXMuaW5uZXJDb250cm9sUG9wb3ZlciA9IChcblx0XHRcdFx0PFBvcG92ZXJcblx0XHRcdFx0XHRpZD17dGhpcy5nZXRJZCgpICsgXCItaW5uZXJQb3BvdmVyXCJ9XG5cdFx0XHRcdFx0c2hvd0Fycm93PXtmYWxzZX1cblx0XHRcdFx0XHRzaG93SGVhZGVyPXt0cnVlfVxuXHRcdFx0XHRcdHBsYWNlbWVudD17UGxhY2VtZW50VHlwZS5Cb3R0b219XG5cdFx0XHRcdFx0Y2xhc3M9XCJzYXBVaU1lZGl1bU1hcmdpbkJvdHRvbVwiXG5cdFx0XHRcdD5cblx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0Zm9vdGVyOiB0aGlzLmdldFRvb2xiYXIoKVxuXHRcdFx0XHRcdH19XG5cdFx0XHRcdDwvUG9wb3Zlcj5cblx0XHRcdCk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLmlubmVyQ29udHJvbFBvcG92ZXIgYXMgUG9wb3Zlcjtcblx0fVxuXG5cdGdldFRvb2xiYXIoKTogT3ZlcmZsb3dUb29sYmFyIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAoIXRoaXMudG9vbGJhcikge1xuXHRcdFx0Y29uc3Qgb2tCdXR0b24gPSB0aGlzLmdldE9rQnV0dG9uKCk7XG5cdFx0XHRjb25zdCBzaG93QWxsQnV0dG9uID0gdGhpcy5nZXRTaG93QWxsQnV0dG9uKCk7XG5cdFx0XHR0aGlzLnRvb2xiYXIgPSAoXG5cdFx0XHRcdDxPdmVyZmxvd1Rvb2xiYXI+XG5cdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IChcblx0XHRcdFx0XHRcdFx0PD5cblx0XHRcdFx0XHRcdFx0XHQ8VG9vbGJhclNwYWNlciAvPlxuXHRcdFx0XHRcdFx0XHRcdHtva0J1dHRvbn1cblx0XHRcdFx0XHRcdFx0XHR7c2hvd0FsbEJ1dHRvbn1cblx0XHRcdFx0XHRcdFx0PC8+XG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0PC9PdmVyZmxvd1Rvb2xiYXI+XG5cdFx0XHQpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy50b29sYmFyO1xuXHR9XG5cblx0Z2V0T2tCdXR0b24oKTogQnV0dG9uIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAoIXRoaXMub2tCdXR0b24pIHtcblx0XHRcdHRoaXMub2tCdXR0b24gPSA8QnV0dG9uIHRleHQ9e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfUE9QT1ZFUl9PS1wiKX0gdHlwZT17QnV0dG9uVHlwZS5FbXBoYXNpemVkfSAvPjtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMub2tCdXR0b247XG5cdH1cblxuXHRnZXRTaG93QWxsQnV0dG9uKCk6IEJ1dHRvbiB8IHVuZGVmaW5lZCB7XG5cdFx0aWYgKCF0aGlzLnNob3dBbGxCdXR0b24pIHtcblx0XHRcdHRoaXMuc2hvd0FsbEJ1dHRvbiA9IDxCdXR0b24gdGV4dD17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QT1BPVkVSX1NIT1dfQUxMX0lURU1TXCIpfSAvPjtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuc2hvd0FsbEJ1dHRvbjtcblx0fVxuXG5cdGZvcm1hdFRva2Vucyh0b2tlbnM6IFRva2VuRGVmaW5pdGlvbltdKTogVG9rZW5EZWZpbml0aW9uW10ge1xuXHRcdHJldHVybiB0b2tlbnMubWFwKCh0b2tlbikgPT4ge1xuXHRcdFx0aWYgKHRva2VuLnR5cGUgPT09IFwiVmFsdWVIZWxwXCIpIHtcblx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHQuLi50b2tlbixcblx0XHRcdFx0XHRrZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzOiB0b2tlbi5rZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzLm1hcCgodmFsdWUpID0+IHtcblx0XHRcdFx0XHRcdC8vTWFraW5nIHN1cmUgdGhhdCBvbmx5IHRoZSBpZCBwYXJ0IGlzIHBhc3NlZFxuXHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0b3BlcmF0b3I6IHZhbHVlLm9wZXJhdG9yLFxuXHRcdFx0XHRcdFx0XHRzZWxlY3RlZFZhbHVlczogdmFsdWUuc2VsZWN0ZWRWYWx1ZXMubWFwKCh2YWwpID0+IHZhbC52YWx1ZSlcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0fSBhcyBUb2tlbkRlZmluaXRpb247XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gZGVlcENsb25lKHRva2VuKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdG9uU3RhdGVDaGFuZ2UoY2hhbmdlZFByb3BzOiBzdHJpbmdbXSA9IFtdKTogdm9pZCB7XG5cdFx0aWYgKGNoYW5nZWRQcm9wcy5pbmNsdWRlcyhcInRva2Vuc1wiKSkge1xuXHRcdFx0aWYgKHRoaXMuc2hvdWxkVG9rZW5DaGFuZ2VFdmVudEZpcmVkKSB7XG5cdFx0XHRcdHRoaXMuZmlyZUV2ZW50KFwidG9rZW5zQ2hhbmdlZFwiLCB7XG5cdFx0XHRcdFx0dG9rZW5zOiB0aGlzLmZvcm1hdFRva2Vucyh0aGlzLnN0YXRlLnRva2VucyBhcyB1bmtub3duIGFzIFRva2VuRGVmaW5pdGlvbltdKVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdHRoaXMuc3RhdGUuc2hvd1Jlc3VsdCA9IHRoaXMuc3RhdGUudG9rZW5zLmxlbmd0aCA+IDA7XG5cdFx0XHRpZiAoISh0aGlzLmlzTWFuZGF0b3J5Q2hlY2tSZXF1aXJlZCA/PyBmYWxzZSkpIHtcblx0XHRcdFx0dGhpcy5jaGVja0lmQWxsTWFuZGF0b3J5VG9rZW5zRmlsbGVkKCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdC8vUmVzZXR0aW5nIHRvIGRlZmF1bHQgdmFsdWVzXG5cdFx0dGhpcy5pc01hbmRhdG9yeUNoZWNrUmVxdWlyZWQgPSBmYWxzZTtcblx0XHR0aGlzLnNob3VsZFRva2VuQ2hhbmdlRXZlbnRGaXJlZCA9IHRydWU7XG5cblx0XHQvLyAgb25zYXBmb2N1c2xlYXZlIG1ldGhvZCBpbiBzYXAubS5Ub2tlbml6ZXIgaXMgYXV0b21hdGljYWxseSBjb252ZXJ0aW5nIHRoZSByZW5kZXJtb2RlIG9mIHRva2VuaXplciB0byBcIk5hcnJvd1wiIGZyb20gXCJsb29zZVwiXG5cdFx0Ly8gIEluIHRoaXMgcHJvY2VzcyB0aGVyZSBhcmUgbXVsdGlwbGUgcG9wb3ZlciBpc3N1ZXMgaGFwcGVuaW5nXG5cdFx0Ly8gIFNvIGFzIGEgdGVtcG9yYXJ5IGZpeCBvdmVycmlkaW5nIHRoZSBmdW5jdGlvblxuXHRcdCh0aGlzLnRva2VuaXplcj8uY3VycmVudCBhcyBGb2N1c0hhbmRsaW5nQ29udHJvbCkub25zYXBmb2N1c2xlYXZlID0gKCk6IHZvaWQgPT4ge307XG5cdH1cblxuXHRwcml2YXRlIG9uVGh1bWJVcFByZXNzZWQoKTogdm9pZCB7XG5cdFx0dGhpcy5zdGF0ZS50aHVtYlVwQnV0dG9uUHJlc3NlZCA9IHRydWU7XG5cdFx0dGhpcy5zdGF0ZS50aHVtYkRvd25CdXR0b25QcmVzc2VkID0gZmFsc2U7XG5cdFx0dHJpZ2dlclBYSW50ZWdyYXRpb24oXCJ0aHVtYlVwXCIpO1xuXHRcdHRoaXMub25UaHVtYlByZXNzZWQoKTtcblx0fVxuXG5cdHByaXZhdGUgb25UaHVtYkRvd25QcmVzc2VkKCk6IHZvaWQge1xuXHRcdHRoaXMuc3RhdGUudGh1bWJEb3duQnV0dG9uUHJlc3NlZCA9IHRydWU7XG5cdFx0dGhpcy5zdGF0ZS50aHVtYlVwQnV0dG9uUHJlc3NlZCA9IGZhbHNlO1xuXHRcdHRyaWdnZXJQWEludGVncmF0aW9uKFwidGh1bWJEb3duXCIpO1xuXHRcdHRoaXMub25UaHVtYlByZXNzZWQoKTtcblx0fVxuXG5cdHByaXZhdGUgb25UaHVtYlByZXNzZWQoKTogdm9pZCB7XG5cdFx0dGhpcy5zdGF0ZS50aHVtYkJ1dHRvbkVuYWJsZWQgPSBmYWxzZTtcblx0XHRNZXNzYWdlVG9hc3Quc2hvdyh0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX0VBU1lfRklMVEVSX0ZFRURCQUNLX1NFTlRcIikpO1xuXHR9XG5cblx0Y3JlYXRlQ29udGVudCgpOiBWQm94IHtcblx0XHRjb25zdCAkdG9wR29CdG4gPSBjcmVhdGVSZWZlcmVuY2U8QnV0dG9uPigpO1xuXHRcdGNvbnN0IHRodW1iVXBCdXR0b25Ub2tlbml6ZXIgPSAoXG5cdFx0XHQ8VG9nZ2xlQnV0dG9uXG5cdFx0XHRcdGljb249e1wic2FwLWljb246Ly90aHVtYi11cFwifVxuXHRcdFx0XHR0b29sdGlwPXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX0VBU1lfRklMVEVSX1RIVU1CU19VUFwiKX1cblx0XHRcdFx0dHlwZT17XCJUcmFuc3BhcmVudFwifVxuXHRcdFx0XHRwcmVzcz17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdHJldHVybiB0aGlzLm9uVGh1bWJVcFByZXNzZWQoKTtcblx0XHRcdFx0fX1cblx0XHRcdFx0ZW5hYmxlZD17YmluZFN0YXRlKHRoaXMuc3RhdGUsIFwidGh1bWJCdXR0b25FbmFibGVkXCIpfVxuXHRcdFx0XHRwcmVzc2VkPXtiaW5kU3RhdGUodGhpcy5zdGF0ZSwgXCJ0aHVtYlVwQnV0dG9uUHJlc3NlZFwiKX1cblx0XHRcdC8+XG5cdFx0KTtcblx0XHRGRVNSSGVscGVyLnNldFNlbWFudGljU3RlcG5hbWUodGh1bWJVcEJ1dHRvblRva2VuaXplciwgXCJwcmVzc1wiLCBcImZlNDplZnQ6dDp0aHVtYlVwXCIpO1xuXHRcdGNvbnN0IHRodW1iRG93bkJ1dHRvblRva2VuaXplciA9IChcblx0XHRcdDxUb2dnbGVCdXR0b25cblx0XHRcdFx0aWNvbj17XCJzYXAtaWNvbjovL3RodW1iLWRvd25cIn1cblx0XHRcdFx0dG9vbHRpcD17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19FQVNZX0ZJTFRFUl9USFVNQlNfRE9XTlwiKX1cblx0XHRcdFx0dHlwZT17XCJUcmFuc3BhcmVudFwifVxuXHRcdFx0XHRwcmVzcz17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdHJldHVybiB0aGlzLm9uVGh1bWJEb3duUHJlc3NlZCgpO1xuXHRcdFx0XHR9fVxuXHRcdFx0XHRlbmFibGVkPXtiaW5kU3RhdGUodGhpcy5zdGF0ZSwgXCJ0aHVtYkJ1dHRvbkVuYWJsZWRcIil9XG5cdFx0XHRcdHByZXNzZWQ9e2JpbmRTdGF0ZSh0aGlzLnN0YXRlLCBcInRodW1iRG93bkJ1dHRvblByZXNzZWRcIil9XG5cdFx0XHQvPlxuXHRcdCk7XG5cdFx0RkVTUkhlbHBlci5zZXRTZW1hbnRpY1N0ZXBuYW1lKHRodW1iRG93bkJ1dHRvblRva2VuaXplciwgXCJwcmVzc1wiLCBcImZlNDplZnQ6dDp0aHVtYkRvd25cIik7XG5cdFx0Y29uc3QgdGh1bWJVcEJ1dHRvbk1lc3NhZ2VTdHJpcGUgPSAoXG5cdFx0XHQ8VG9nZ2xlQnV0dG9uXG5cdFx0XHRcdGljb249e1wic2FwLWljb246Ly90aHVtYi11cFwifVxuXHRcdFx0XHR0b29sdGlwPXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX0VBU1lfRklMVEVSX1RIVU1CU19VUFwiKX1cblx0XHRcdFx0dHlwZT17XCJUcmFuc3BhcmVudFwifVxuXHRcdFx0XHRwcmVzcz17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdHJldHVybiB0aGlzLm9uVGh1bWJVcFByZXNzZWQoKTtcblx0XHRcdFx0fX1cblx0XHRcdFx0ZW5hYmxlZD17YmluZFN0YXRlKHRoaXMuc3RhdGUsIFwidGh1bWJCdXR0b25FbmFibGVkXCIpfVxuXHRcdFx0XHRwcmVzc2VkPXtiaW5kU3RhdGUodGhpcy5zdGF0ZSwgXCJ0aHVtYlVwQnV0dG9uUHJlc3NlZFwiKX1cblx0XHRcdC8+XG5cdFx0KTtcblx0XHRGRVNSSGVscGVyLnNldFNlbWFudGljU3RlcG5hbWUodGh1bWJVcEJ1dHRvbk1lc3NhZ2VTdHJpcGUsIFwicHJlc3NcIiwgXCJmZTQ6ZWZ0Om1zOnRodW1iVXBcIik7XG5cdFx0Y29uc3QgdGh1bWJEb3duQnV0dG9uTWVzc2FnZVN0cmlwZSA9IChcblx0XHRcdDxUb2dnbGVCdXR0b25cblx0XHRcdFx0aWNvbj17XCJzYXAtaWNvbjovL3RodW1iLWRvd25cIn1cblx0XHRcdFx0dG9vbHRpcD17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19FQVNZX0ZJTFRFUl9USFVNQlNfRE9XTlwiKX1cblx0XHRcdFx0dHlwZT17XCJUcmFuc3BhcmVudFwifVxuXHRcdFx0XHRwcmVzcz17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdHJldHVybiB0aGlzLm9uVGh1bWJEb3duUHJlc3NlZCgpO1xuXHRcdFx0XHR9fVxuXHRcdFx0XHRlbmFibGVkPXtiaW5kU3RhdGUodGhpcy5zdGF0ZSwgXCJ0aHVtYkJ1dHRvbkVuYWJsZWRcIil9XG5cdFx0XHRcdHByZXNzZWQ9e2JpbmRTdGF0ZSh0aGlzLnN0YXRlLCBcInRodW1iRG93bkJ1dHRvblByZXNzZWRcIil9XG5cdFx0XHQvPlxuXHRcdCk7XG5cdFx0RkVTUkhlbHBlci5zZXRTZW1hbnRpY1N0ZXBuYW1lKHRodW1iRG93bkJ1dHRvbk1lc3NhZ2VTdHJpcGUsIFwicHJlc3NcIiwgXCJmZTQ6ZWZ0Om1zOnRodW1iRG93blwiKTtcblx0XHRjb25zdCBvdXRWQm94ID0gKFxuXHRcdFx0PFZCb3g+XG5cdFx0XHRcdDxGbGV4Qm94IHJlbmRlclR5cGU9XCJCYXJlXCI+XG5cdFx0XHRcdFx0PEVhc3lGaWx0ZXJJbnB1dFxuXHRcdFx0XHRcdFx0cmVjb21tZW5kZWRWYWx1ZXM9e3RoaXMucmVjb21tZW5kZWRWYWx1ZXN9XG5cdFx0XHRcdFx0XHRyZWY9e3RoaXMuZWFzeUZpbHRlcklucHV0fVxuXHRcdFx0XHRcdFx0ZW50ZXJQcmVzc2VkPXt0aGlzLm9uRW50ZXJQcmVzc2VkLmJpbmQodGhpcyl9XG5cdFx0XHRcdFx0XHRxdWVyeUNoYW5nZWQ9eyhlKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuZmlyZUV2ZW50KFwicXVlcnlDaGFuZ2VkXCIsIHsgcXVlcnk6IGUuZ2V0UGFyYW1ldGVyKFwicXVlcnlcIikgfSk7XG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0bGl2ZUNoYW5nZT17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnN0YXRlLnRva2VuaXplckVkaXRhYmxlID0gZmFsc2U7XG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdC8+XG5cblx0XHRcdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdFx0XHRpY29uPXtcInNhcC1pY29uOi8vYWlcIn1cblx0XHRcdFx0XHRcdGNsYXNzPXtcInNhcFVpU21hbGxNYXJnaW5CZWdpblwifVxuXHRcdFx0XHRcdFx0cmVmPXskdG9wR29CdG59XG5cdFx0XHRcdFx0XHR0ZXh0PXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX0dPXCIpfVxuXHRcdFx0XHRcdFx0dHlwZT17QnV0dG9uVHlwZS5FbXBoYXNpemVkfVxuXHRcdFx0XHRcdFx0cHJlc3M9e3RoaXMub25Hb0J1dHRvblByZXNzLmJpbmQodGhpcyl9XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0PC9GbGV4Qm94PlxuXHRcdFx0XHQ8RmxleEJveFxuXHRcdFx0XHRcdHJlbmRlclR5cGU9XCJCYXJlXCJcblx0XHRcdFx0XHR2aXNpYmxlPXtiaW5kU3RhdGUodGhpcy5zdGF0ZSwgXCJzaG93UmVzdWx0XCIpfVxuXHRcdFx0XHRcdGFsaWduSXRlbXM9e0ZsZXhBbGlnbkl0ZW1zLkNlbnRlcn1cblx0XHRcdFx0XHR3cmFwPXtGbGV4V3JhcC5XcmFwfVxuXHRcdFx0XHRcdGp1c3RpZnlDb250ZW50PXtGbGV4SnVzdGlmeUNvbnRlbnQuU3BhY2VCZXR3ZWVufVxuXHRcdFx0XHRcdGNsYXNzPXtcInNhcFVpVGlueU1hcmdpblRvcFwifVxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0PEZsZXhCb3ggY2xhc3M9e1wic2FwRmVDb250cm9sc0dhcDhweFwifSByZW5kZXJUeXBlPVwiQmFyZVwiIGFsaWduSXRlbXM9e0ZsZXhBbGlnbkl0ZW1zLkNlbnRlcn0gd3JhcD17RmxleFdyYXAuV3JhcH0+XG5cdFx0XHRcdFx0XHQ8QUlOb3RpY2UgcmVzb3VyY2VCdW5kbGU9e3RoaXMucmVzb3VyY2VCdW5kbGV9IC8+XG5cdFx0XHRcdFx0XHQ8VG9rZW5pemVyXG5cdFx0XHRcdFx0XHRcdGVkaXRhYmxlPXthbmQoYmluZFN0YXRlKHRoaXMuc3RhdGUsIFwidG9rZW5pemVyRWRpdGFibGVcIiksIHRydWUpfVxuXHRcdFx0XHRcdFx0XHRjbGFzcz17XCJzYXBGZUNvbnRyb2xzVG9rZW5pemVyXCJ9XG5cdFx0XHRcdFx0XHRcdHRva2Vucz17YmluZFN0YXRlKHRoaXMuc3RhdGUsIFwidG9rZW5zXCIpfVxuXHRcdFx0XHRcdFx0XHRyZW5kZXJNb2RlPXtUb2tlbml6ZXJSZW5kZXJNb2RlLkxvb3NlfVxuXHRcdFx0XHRcdFx0XHRyZWY9e3RoaXMudG9rZW5pemVyfVxuXHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0XHRcdHRva2VuczogKGlkeDogbnVtYmVyLCBjdHg6IENvbnRleHQpOiBUb2tlbiA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjb25zdCBvYmplY3QgPSBjdHguZ2V0T2JqZWN0KCkgYXMgVG9rZW5EZWZpbml0aW9uO1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0PFRva2VuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0a2V5PXt0aGlzLnN0YXRlLnRva2Vucy5rZXl9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bGFiZWw9e3RoaXMuc3RhdGUudG9rZW5zLmxhYmVsfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGl0ZW1zPXt0aGlzLnN0YXRlLnRva2Vucy5rZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1hbmRhdG9yeT17dGhpcy5pc0tleU1hbmRhdG9yeShvYmplY3Qua2V5KX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRidXN5PXt0aGlzLnN0YXRlLnRva2Vucy5idXN5fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlbGV0ZT17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgdG9rZW5JbmRleCA9IHRoaXMuc3RhdGUudG9rZW5zLmZpbmRJbmRleCgodG9rZW4pID0+IHRva2VuLmtleSA9PT0gb2JqZWN0LmtleSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCBuZXdUb2tlbnMgPSB0aGlzLnN0YXRlLnRva2Vucy5jb25jYXQoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG5ld1Rva2Vucy5zcGxpY2UodG9rZW5JbmRleCwgMSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnN0YXRlLnRva2VucyA9IG5ld1Rva2Vucztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMudXBkYXRlRmlsdGVySW5wdXQoXCJ0b2tlblVwZGF0ZWRcIik7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjdXN0b21EYXRhOiBbXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxDdXN0b21EYXRhIGtleT1cIlRva2VuSW5mb1wiIHZhbHVlPXtvYmplY3R9IC8+LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8Q3VzdG9tRGF0YSBrZXk9XCJwb3BvdmVyXCIgdmFsdWU9e3RoaXMuaW5uZXJDb250cm9sUG9wb3Zlcn0gLz4sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxDdXN0b21EYXRhIGtleT1cImVhc3lGaWx0ZXJCYXJDb250YWluZXJcIiB2YWx1ZT17dGhpc30gLz4sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxDdXN0b21EYXRhXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0a2V5PVwiY29kZUxpc3RcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlPXt0aGlzLmZpbHRlckJhck1ldGFkYXRhPy5maW5kKChkYXRhKSA9PiBkYXRhLm5hbWUgPT09IG9iamVjdC5rZXkpPy5jb2RlTGlzdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdF1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L1Rva2VuPlxuXHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHQ8L1Rva2VuaXplcj5cblx0XHRcdFx0XHRcdDxIQm94PlxuXHRcdFx0XHRcdFx0XHR7dGh1bWJVcEJ1dHRvblRva2VuaXplcn0sIHt0aHVtYkRvd25CdXR0b25Ub2tlbml6ZXJ9XG5cdFx0XHRcdFx0XHQ8L0hCb3g+XG5cdFx0XHRcdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdFx0XHRcdHRleHQ9e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfUkVTRVRcIil9XG5cdFx0XHRcdFx0XHRcdHR5cGU9e0J1dHRvblR5cGUuVHJhbnNwYXJlbnR9XG5cdFx0XHRcdFx0XHRcdHByZXNzPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5yZXNldFN0YXRlKCk7XG5cdFx0XHRcdFx0XHRcdFx0Ly9SZXRhaW5pbmcgdGhlIGZvY3VzIG9uIHBvcG92ZXIgZG9lc24ndCBtYWtlIHRoZSBwb3BvdmVyIGNsb3NlIG9uIGV2ZXJ5IGludGVyYWN0aW9uXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5lYXN5RmlsdGVySW5wdXQuY3VycmVudD8uJHNlYXJjaElucHV0LmZvY3VzKCk7XG5cdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdDwvRmxleEJveD5cblx0XHRcdFx0PC9GbGV4Qm94PlxuXHRcdFx0XHQ8RmxleEJveCByZW5kZXJUeXBlPVwiQmFyZVwiPlxuXHRcdFx0XHRcdDxNZXNzYWdlU3RyaXBcblx0XHRcdFx0XHRcdHRleHQ9e2JpbmRTdGF0ZSh0aGlzLnN0YXRlLCBcInNpbmdsZVZhbHVlTWVzc2FnZVN0cmlwVGV4dFwiKX1cblx0XHRcdFx0XHRcdHNob3dJY29uPXt0cnVlfVxuXHRcdFx0XHRcdFx0ZW5hYmxlRm9ybWF0dGVkVGV4dD17dHJ1ZX1cblx0XHRcdFx0XHRcdHZpc2libGU9e2JpbmRTdGF0ZSh0aGlzLnN0YXRlLCBcInNob3dTaW5nbGVWYWx1ZU1lc3NhZ2VTdHJpcFwiKX1cblx0XHRcdFx0XHRcdHNob3dDbG9zZUJ1dHRvbj17dHJ1ZX1cblx0XHRcdFx0XHRcdGNsb3NlPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuc3RhdGUuc2hvd1NpbmdsZVZhbHVlTWVzc2FnZVN0cmlwID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdHRoaXMuc3RhdGUuc2luZ2xlVmFsdWVNZXNzYWdlU3RyaXBUZXh0ID0gXCJcIjtcblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0PjwvTWVzc2FnZVN0cmlwPlxuXHRcdFx0XHQ8L0ZsZXhCb3g+XG5cdFx0XHRcdDxGbGV4Qm94IHJlbmRlclR5cGU9XCJCYXJlXCIgY2xhc3M9e1wic2FwRmVDb250cm9sc0dhcDhweFwifT5cblx0XHRcdFx0XHQ8TWVzc2FnZVN0cmlwXG5cdFx0XHRcdFx0XHR0eXBlPXtiaW5kU3RhdGUodGhpcy5zdGF0ZSwgXCJtZXNzYWdlU3RyaXBUeXBlXCIpfVxuXHRcdFx0XHRcdFx0dGV4dD17YmluZFN0YXRlKHRoaXMuc3RhdGUsIFwibWVzc2FnZVN0cmlwVGV4dFwiKX1cblx0XHRcdFx0XHRcdHNob3dJY29uPXt0cnVlfVxuXHRcdFx0XHRcdFx0ZW5hYmxlRm9ybWF0dGVkVGV4dD17dHJ1ZX1cblx0XHRcdFx0XHRcdHNob3dDbG9zZUJ1dHRvbj17dHJ1ZX1cblx0XHRcdFx0XHRcdGNsb3NlPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuY2xlYXJNZXNzYWdlU3RyaXAoKTtcblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHR2aXNpYmxlPXtiaW5kU3RhdGUodGhpcy5zdGF0ZSwgXCJzaG93TWVzc2FnZVN0cmlwXCIpfVxuXHRcdFx0XHRcdD48L01lc3NhZ2VTdHJpcD5cblx0XHRcdFx0XHQ8SEJveCB2aXNpYmxlPXtiaW5kU3RhdGUodGhpcy5zdGF0ZSwgXCJzaG93TWVzc2FnZVN0cmlwXCIpfT5cblx0XHRcdFx0XHRcdHt0aHVtYlVwQnV0dG9uTWVzc2FnZVN0cmlwZX0sIHt0aHVtYkRvd25CdXR0b25NZXNzYWdlU3RyaXBlfVxuXHRcdFx0XHRcdDwvSEJveD5cblx0XHRcdFx0PC9GbGV4Qm94PlxuXHRcdFx0PC9WQm94PlxuXHRcdCkgYXMgVkJveDtcblx0XHRGRVNSSGVscGVyLnNldFNlbWFudGljU3RlcG5hbWUoJHRvcEdvQnRuLmN1cnJlbnQhLCBcInByZXNzXCIsIFwiZmU6YWk6c2VhcmNoXCIpO1xuXHRcdHJldHVybiBvdXRWQm94O1xuXHR9XG5cblx0YXN5bmMgb25Hb0J1dHRvblByZXNzKCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHRoaXMuc3RhdGUudG9rZW5pemVyRWRpdGFibGUgPSB0cnVlO1xuXHRcdGxldCBjdXJyZW50SW5wdXRWYWx1ZSA9IHRoaXMuZWFzeUZpbHRlcklucHV0LmN1cnJlbnQ/LmdldFZhbHVlKCk7XG5cdFx0Y29uc3QgY3VycmVudElucHV0UGxhY2Vob2xkZXIgPSB0aGlzLmVhc3lGaWx0ZXJJbnB1dC5jdXJyZW50Py5nZXRQbGFjZWhvbGRlcigpO1xuXG5cdFx0aWYgKGN1cnJlbnRJbnB1dFZhbHVlID09PSBcIlwiICYmIGN1cnJlbnRJbnB1dFBsYWNlaG9sZGVyICE9PSB0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BMQUNFSE9MREVSXCIpKSB7XG5cdFx0XHR0aGlzLmVhc3lGaWx0ZXJJbnB1dC5jdXJyZW50Py5zZXRWYWx1ZShjdXJyZW50SW5wdXRQbGFjZWhvbGRlciB8fCBcIlwiKTtcblx0XHRcdGN1cnJlbnRJbnB1dFZhbHVlID0gY3VycmVudElucHV0UGxhY2Vob2xkZXI7XG5cdFx0fVxuXHRcdGF3YWl0IHRoaXMub25Hb1ByZXNzKGN1cnJlbnRJbnB1dFZhbHVlKTtcblx0fVxuXG5cdHJlc2V0U3RhdGUoY2xlYXJBbGxGaWx0ZXJzID0gdHJ1ZSk6IHZvaWQge1xuXHRcdGlmIChjbGVhckFsbEZpbHRlcnMpIHtcblx0XHRcdHRoaXMuZmlyZUV2ZW50KFwiY2xlYXJGaWx0ZXJzXCIpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNob3VsZFRva2VuQ2hhbmdlRXZlbnRGaXJlZCA9IGZhbHNlO1xuXHRcdH1cblx0XHR0aGlzLnN0YXRlLnRva2VucyA9IHRoaXMuZ2V0RGVmYXVsdFRva2VucygpO1xuXHRcdHRoaXMudXBkYXRlRmlsdGVySW5wdXQoXCJ0b2tlblJlc2V0XCIpO1xuXHRcdHRoaXMuc3RhdGUudG9rZW5pemVyRWRpdGFibGUgPSB0cnVlO1xuXHRcdHRoaXMuaXNNYW5kYXRvcnlDaGVja1JlcXVpcmVkID0gdHJ1ZTtcblx0XHQvL1NldCB0aGUgVmFsdWUgU3RhdGVzIG9mIGFsbCB0aGUgVG9rZW5zIGJhY2sgdG8gTm9uZVxuXHRcdHRoaXMudG9rZW5pemVyLmN1cnJlbnQ/LmdldFRva2VucygpLmZvckVhY2goKHRva2VuKSA9PiB0b2tlbi5zZXRQcm9wZXJ0eShcInZhbHVlU3RhdGVcIiwgVmFsdWVTdGF0ZS5Ob25lKSk7XG5cdFx0dGhpcy50b2tlbml6ZXIuY3VycmVudD8uZ2V0VG9rZW5zKCkuZm9yRWFjaCgodG9rZW4pID0+IHRva2VuLnNldFByb3BlcnR5KFwidmFsdWVTdGF0ZVRleHRcIiwgbnVsbCkpO1xuXHRcdHRoaXMuY2xlYXJNZXNzYWdlU3RyaXAoKTsgLy9jbGVhciB0aGUgbWVzc2FnZSBzdHJpcCBmb3IgdmFsaWRhdGVkIGZpbHRlcnNcblx0fVxuXG5cdC8vVGhlIGJlbG93IGNvZGUgdXBkYXRlcyB0aGUgZXhpc3Rpbmcgc3RhdGUgYnkgZmV0Y2hpbmcgdGhlIGtleSBhbmQgc2VsZWN0ZWRWYWx1ZXNcblx0dXBkYXRlVG9rZW5BcnJheShcblx0XHRjaGFuZ2VUeXBlOiBUb2tlblNldHRlcnMsXG5cdFx0bmV3VG9rZW5TcGVjaWZpY1ZhbHVlczogVG9rZW5TZWxlY3RlZFZhbHVlc0RlZmluaXRpb25bXSB8IFZhbHVlSGVscFNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdLFxuXHRcdHRva2VuS2V5OiBzdHJpbmdcblx0KTogdm9pZCB7XG5cdFx0Y29uc3QgbmV3VG9rZW5zID0gdGhpcy5zdGF0ZS50b2tlbnMubWFwKCh0b2tlbikgPT4gKHsgLi4udG9rZW4sIGtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXM6IFsuLi50b2tlbi5rZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzXSB9KSk7XG5cdFx0Y29uc3QgdG9rZW5JbmRleCA9IG5ld1Rva2Vucy5maW5kSW5kZXgoKHQpID0+IHQua2V5ID09PSB0b2tlbktleSk7XG5cdFx0Y29uc3QgdG9rZW4gPSBuZXdUb2tlbnNbdG9rZW5JbmRleF07XG5cdFx0aWYgKHRva2VuSW5kZXggIT0gLTEpIHtcblx0XHRcdHN3aXRjaCAoY2hhbmdlVHlwZSkge1xuXHRcdFx0XHRjYXNlIFwic2V0U2VsZWN0ZWRWYWx1ZXNcIjpcblx0XHRcdFx0XHR0aGlzLnNldFNlbGVjdGVkVmFsdWVzKHRva2VuIGFzIFRva2VuRGVmaW5pdGlvbiwgbmV3VG9rZW5TcGVjaWZpY1ZhbHVlcywgdG9rZW5JbmRleCwgbmV3VG9rZW5zIGFzIFRva2VuRGVmaW5pdGlvbltdKTtcblx0XHRcdFx0XHR0b2tlbi5rZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzID0gbmV3VG9rZW5TcGVjaWZpY1ZhbHVlcztcblx0XHRcdFx0XHQvL1JlbW92ZSB0aGUgdG9rZW4gZW50aXJlbHlcblx0XHRcdFx0XHRpZiAoIXRoaXMuaXNLZXlNYW5kYXRvcnkodG9rZW4ua2V5KSAmJiB0b2tlbi5rZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0XHRcdFx0bmV3VG9rZW5zLnNwbGljZSh0b2tlbkluZGV4LCAxKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0TG9nLmVycm9yKFwiU3BlY2lmeWluZyBhIHNldHRlciB0aGF0IGlzIG91dCBvZiB0aGUgYm91bmRhcnlcIik7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHQvLyBVcGRhdGUgdGhlIHN0YXRlIGJ5IGFzc2lnbmluZyB0aGUgbmV3IHRva2VucyBhcnJheVxuXHRcdFx0dGhpcy5zdGF0ZS50b2tlbnMgPSBuZXdUb2tlbnMgYXMgVG9rZW5EZWZpbml0aW9uW107XG5cdFx0XHR0aGlzLnN0YXRlLnNob3dSZXN1bHQgPSBuZXdUb2tlbnMubGVuZ3RoID4gMDtcblx0XHRcdHRoaXMudXBkYXRlRmlsdGVySW5wdXQoXCJ0b2tlblVwZGF0ZWRcIik7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIGNsb3NlSW5uZXJDb250cm9sUG9wb3ZlcigpOiB2b2lkIHtcblx0XHR0aGlzLmlubmVyQ29udHJvbFBvcG92ZXI/LmNsb3NlKCk7XG5cdH1cblxuXHRwcml2YXRlIHNldFNlbGVjdGVkVmFsdWVzKFxuXHRcdHRva2VuOiBUb2tlbkRlZmluaXRpb24sXG5cdFx0bmV3VG9rZW5TcGVjaWZpY1ZhbHVlczogVG9rZW5TZWxlY3RlZFZhbHVlc0RlZmluaXRpb25bXSB8IFZhbHVlSGVscFNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdLFxuXHRcdHRva2VuSW5kZXg6IG51bWJlcixcblx0XHRuZXdUb2tlbnM6IFRva2VuRGVmaW5pdGlvbltdXG5cdCk6IHZvaWQge1xuXHRcdHRva2VuLmtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMgPSBuZXdUb2tlblNwZWNpZmljVmFsdWVzO1xuXHRcdGlmICghdGhpcy5pc0tleU1hbmRhdG9yeSh0b2tlbi5rZXkpICYmIHRva2VuLmtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRuZXdUb2tlbnMuc3BsaWNlKHRva2VuSW5kZXgsIDEpO1xuXHRcdH1cblx0fVxuXG5cdGlzS2V5TWFuZGF0b3J5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0aWYgKCF0aGlzLm1hbmRhdG9yeUtleU1hcCkge1xuXHRcdFx0dGhpcy5tYW5kYXRvcnlLZXlNYXAgPSB7fTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMubWFuZGF0b3J5S2V5TWFwW2tleV0gPyB0cnVlIDogZmFsc2U7XG5cdH1cblxuXHRyZW1vdmVOb25NYW5kYXRvcnlUb2tlbnMoKTogdGhpcyB7XG5cdFx0Y29uc3QgbmV3VG9rZW46IFRva2VuRGVmaW5pdGlvbltdID0gdGhpcy5zdGF0ZS50b2tlbnMuZmlsdGVyKCh0b2tlbikgPT4ge1xuXHRcdFx0cmV0dXJuIHRoaXMuaXNLZXlNYW5kYXRvcnkodG9rZW4ua2V5KTtcblx0XHR9KTtcblx0XHR0aGlzLnN0YXRlLnRva2VucyA9IG5ld1Rva2VuO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0dXBkYXRlRmlsdGVySW5wdXQodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuXHRcdGNvbnN0IGN1cnJWYWx1ZTogc3RyaW5nID0gdGhpcy5lYXN5RmlsdGVySW5wdXQuY3VycmVudD8uZ2V0VmFsdWUoKSB8fCBcIlwiO1xuXHRcdGlmICh2YWx1ZSA9PT0gXCJ0b2tlblVwZGF0ZWRcIiAmJiBjdXJyVmFsdWUgIT09IFwiXCIpIHtcblx0XHRcdHRoaXMuZWFzeUZpbHRlcklucHV0LmN1cnJlbnQ/LnNldFZhbHVlKFwiXCIpO1xuXHRcdFx0dGhpcy5lYXN5RmlsdGVySW5wdXQuY3VycmVudD8uc2V0UGxhY2Vob2xkZXIoY3VyclZhbHVlKTtcblx0XHR9IGVsc2UgaWYgKHZhbHVlID09PSBcInRva2VuUmVzZXRcIikge1xuXHRcdFx0dGhpcy5lYXN5RmlsdGVySW5wdXQuY3VycmVudD8uc2V0VmFsdWUoXCJcIik7XG5cdFx0XHR0aGlzLmVhc3lGaWx0ZXJJbnB1dC5jdXJyZW50Py5zZXRQbGFjZWhvbGRlcih0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BMQUNFSE9MREVSXCIpKTtcblx0XHR9XG5cdH1cblxuXHRnZXRUb2tlbnNJbkluaXRpYWxTdGF0ZSgpOiBUb2tlbkRlZmluaXRpb25bXSB7XG5cdFx0Y29uc3QgbmV3VG9rZW5zID0gdGhpcy5zdGF0ZS50b2tlbnMubWFwKCh0b2tlbikgPT4gKHsgLi4udG9rZW4sIGtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXM6IFsuLi50b2tlbi5rZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzXSB9KSk7XG5cdFx0Y29uc3QgbWFuZGF0b3J5VG9rZW5zID0gbmV3VG9rZW5zLmZpbHRlcigodG9rZW4pID0+IHtcblx0XHRcdGlmICh0aGlzLmlzS2V5TWFuZGF0b3J5KHRva2VuLmtleSkpIHtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0cmV0dXJuIG1hbmRhdG9yeVRva2Vucy5tYXAoKHRva2VuKSA9PiAoeyAuLi50b2tlbiwga2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlczogW10gfSkpO1xuXHR9XG5cblx0Z2V0VW5TZXRNYW5kYXRvcnlUb2tlbnNJbkN1cnJlbnRTdGF0ZSgpOiBUb2tlbkRlZmluaXRpb25bXSB7XG5cdFx0cmV0dXJuIHRoaXMuc3RhdGUudG9rZW5zLmZpbHRlcigodG9rZW4pID0+IHtcblx0XHRcdGNvbnN0IGlzS2V5TWFuZGF0b3J5ID0gdGhpcy5pc0tleU1hbmRhdG9yeSh0b2tlbi5rZXkpO1xuXHRcdFx0aWYgKGlzS2V5TWFuZGF0b3J5KSB7XG5cdFx0XHRcdHJldHVybiB0b2tlbi5rZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzLmxlbmd0aCA9PT0gMDtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdGdldEFjdHVhbFRva2Vuc0Zyb21TdGF0ZSh0b2tlbnM6IFRva2VuRGVmaW5pdGlvbltdKTogRWFzeUZpbHRlclRva2VuW10gfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IHJlcXVpcmVkS2V5cyA9IHRva2Vucy5tYXAoKHRva2VuKSA9PiB0b2tlbi5rZXkpO1xuXHRcdHJldHVybiB0aGlzLnRva2VuaXplci5jdXJyZW50Py5nZXRUb2tlbnMoKS5maWx0ZXIoKHRva2VuKSA9PiByZXF1aXJlZEtleXMuaW5jbHVkZXModG9rZW4uZ2V0S2V5KCkpKSBhc1xuXHRcdFx0fCBFYXN5RmlsdGVyVG9rZW5bXVxuXHRcdFx0fCB1bmRlZmluZWQ7XG5cdH1cblxuXHRzdGF0aWMgcmVuZGVyKHJtOiBSZW5kZXJNYW5hZ2VyLCBjb250cm9sOiBFYXN5RmlsdGVyQmFyQ29udGFpbmVyKTogdm9pZCB7XG5cdFx0cmV0dXJuIGpzeC5yZW5kZXJVc2luZ1JlbmRlck1hbmFnZXIocm0sIGNvbnRyb2wsICgpID0+IHtcblx0XHRcdHJldHVybiA8c3BhbiByZWY9e2NvbnRyb2x9Pntjb250cm9sLmdldEFnZ3JlZ2F0aW9uKFwiY29udGVudFwiKX08L3NwYW4+O1xuXHRcdH0pO1xuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFxREE7RUFDQTtFQXdCQTtFQStDQTtFQXFCQTtBQUNBO0FBQ0E7RUFGQSxJQUlxQkEsc0JBQXNCLElBQUFDLElBQUEsR0FEMUNDLGNBQWMsQ0FBQyxtREFBbUQsQ0FBQyxFQUFBQyxLQUFBLEdBRWxFQyxRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFO0VBQVMsQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FHNUJGLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBUyxDQUFDLENBQUMsRUFBQUUsS0FBQSxHQUc1QkgsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFTLENBQUMsQ0FBQyxFQUFBRyxLQUFBLEdBRzVCSixRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFO0VBQVEsQ0FBQyxDQUFDLEVBQUFJLEtBQUEsR0FHM0JMLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBUSxDQUFDLENBQUMsRUFBQUssS0FBQSxHQUczQk4sUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFXLENBQUMsQ0FBQyxFQUFBTSxLQUFB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
|