nsc-react-component 3.0.2 → 3.0.4
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/lib/base/table/index.d.ts +2 -0
- package/lib/base/table/index.js +46 -7
- package/lib/base/table/index.js.map +1 -1
- package/lib/base/table/index.module.less +7 -0
- package/lib/config.js +3 -3
- package/lib/config.js.map +1 -1
- package/lib/page/BasePage/index.d.ts +1 -0
- package/lib/page/BasePage/index.js +48 -15
- package/lib/page/BasePage/index.js.map +1 -1
- package/lib/page/BasePage/index.module copy.less +2 -11
- package/lib/page/BasePage/index.module.less +35 -5
- package/package.json +1 -1
|
@@ -2,8 +2,8 @@ const _excluded = ["children", "pageType", "onClick", "icon", "show"],
|
|
|
2
2
|
_excluded2 = ["children", "pageType", "onClick", "icon", "recordShow"],
|
|
3
3
|
_excluded3 = ["children", "pageType", "onClick", "recordShow", "icon", "show"],
|
|
4
4
|
_excluded4 = ["children", "pageType", "onClick", "recordShow", "icon"],
|
|
5
|
-
_excluded5 = ["store", "filterColumn", "actionColumn", "showRowSelection", "columnOrder", "expandable", "parantSelect", "
|
|
6
|
-
_excluded6 = ["store", "showSearch", "titleAlias"];
|
|
5
|
+
_excluded5 = ["store", "filterColumn", "actionColumn", "showRowSelection", "columnOrder", "expandable", "parantSelect", "title"],
|
|
6
|
+
_excluded6 = ["store", "showSearch", "titleAlias", "title"];
|
|
7
7
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
8
8
|
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
9
9
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
@@ -38,6 +38,7 @@ class BasePage extends PureComponent {
|
|
|
38
38
|
_defineProperty(this, "treeRef", /*#__PURE__*/React.createRef());
|
|
39
39
|
_defineProperty(this, "searchRef", /*#__PURE__*/React.createRef());
|
|
40
40
|
_defineProperty(this, "editorRef", /*#__PURE__*/React.createRef());
|
|
41
|
+
_defineProperty(this, "pageRef", /*#__PURE__*/React.createRef());
|
|
41
42
|
_defineProperty(this, "dateFormat", {});
|
|
42
43
|
_defineProperty(this, "onSelect", checkedTreeKeys => {
|
|
43
44
|
const {
|
|
@@ -515,7 +516,7 @@ class BasePage extends PureComponent {
|
|
|
515
516
|
(_this$treeRef$current = this.treeRef.current) === null || _this$treeRef$current === void 0 || (_this$treeRef$current = _this$treeRef$current.store) === null || _this$treeRef$current === void 0 || _this$treeRef$current.setData(data);
|
|
516
517
|
}
|
|
517
518
|
render() {
|
|
518
|
-
var _tableProps$toolbar, _tableProps$toolbar2;
|
|
519
|
+
var _this$pageRef$current, _tableProps$toolbar, _tableProps$toolbar2;
|
|
519
520
|
const {
|
|
520
521
|
columns = [],
|
|
521
522
|
showSearch = true,
|
|
@@ -544,13 +545,14 @@ class BasePage extends PureComponent {
|
|
|
544
545
|
columnOrder = true,
|
|
545
546
|
expandable = {},
|
|
546
547
|
parantSelect = true,
|
|
547
|
-
tableTitle
|
|
548
|
+
title: tableTitle
|
|
548
549
|
} = tableProps,
|
|
549
550
|
othertableParams = _objectWithoutProperties(tableProps, _excluded5);
|
|
550
551
|
const {
|
|
551
552
|
store: treeStore = {},
|
|
552
553
|
showSearch: treeSearch = true,
|
|
553
|
-
titleAlias = "title"
|
|
554
|
+
titleAlias = "title",
|
|
555
|
+
title: treeTitle
|
|
554
556
|
} = treeProps,
|
|
555
557
|
othertreeParams = _objectWithoutProperties(treeProps, _excluded6);
|
|
556
558
|
let tableParams = _objectSpread({
|
|
@@ -562,9 +564,12 @@ class BasePage extends PureComponent {
|
|
|
562
564
|
const editorForms = [];
|
|
563
565
|
const defaultValue = {};
|
|
564
566
|
const columnButtons = [];
|
|
567
|
+
const elementHeight = (_this$pageRef$current = this.pageRef.current) === null || _this$pageRef$current === void 0 ? void 0 : _this$pageRef$current.clientHeight;
|
|
565
568
|
columns.map(item => {
|
|
566
569
|
var _temp$search, _temp$props, _temp$props2, _temp;
|
|
567
|
-
let temp = _objectSpread({
|
|
570
|
+
let temp = _objectSpread({
|
|
571
|
+
width: 100
|
|
572
|
+
}, item);
|
|
568
573
|
if (temp.search === true || ((_temp$search = temp.search) === null || _temp$search === void 0 ? void 0 : _temp$search.show) === true) {
|
|
569
574
|
var _temp$search2, _temp$search3, _temp$search4;
|
|
570
575
|
searchForms.push({
|
|
@@ -614,14 +619,21 @@ class BasePage extends PureComponent {
|
|
|
614
619
|
}, temp);
|
|
615
620
|
} else if (!temp.ellipsis) {
|
|
616
621
|
temp = _objectSpread({
|
|
622
|
+
ellipsis: {
|
|
623
|
+
showTitle: false
|
|
624
|
+
},
|
|
617
625
|
render: text => {
|
|
618
|
-
return
|
|
626
|
+
return this.getText(tempProp, text);
|
|
619
627
|
}
|
|
620
628
|
}, temp);
|
|
621
629
|
} else {
|
|
622
|
-
temp = _objectSpread({
|
|
630
|
+
temp = _objectSpread({
|
|
631
|
+
ellipsis: true
|
|
632
|
+
}, temp);
|
|
623
633
|
}
|
|
624
634
|
delete temp.props;
|
|
635
|
+
|
|
636
|
+
// temp.ellipsis = true;
|
|
625
637
|
if (((_temp = temp) === null || _temp === void 0 ? void 0 : _temp.columnShow) !== false) tableColumn.push(temp);
|
|
626
638
|
});
|
|
627
639
|
const selfButtons = [];
|
|
@@ -726,7 +738,7 @@ class BasePage extends PureComponent {
|
|
|
726
738
|
actionColumn && tableColumn.push({
|
|
727
739
|
title: "操作",
|
|
728
740
|
dataIndex: "action",
|
|
729
|
-
align: actionPorps !== null && actionPorps !== void 0 && actionPorps.textAlign ? actionPorps === null || actionPorps === void 0 ? void 0 : actionPorps.textAlign : baseActionColumn.textAlign ? baseActionColumn.textAlign : "
|
|
741
|
+
align: actionPorps !== null && actionPorps !== void 0 && actionPorps.textAlign ? actionPorps === null || actionPorps === void 0 ? void 0 : actionPorps.textAlign : baseActionColumn.textAlign ? baseActionColumn.textAlign : "left",
|
|
730
742
|
width: actionPorps !== null && actionPorps !== void 0 && actionPorps.width ? actionPorps === null || actionPorps === void 0 ? void 0 : actionPorps.width : baseActionColumn.width ? baseActionColumn.width : 200,
|
|
731
743
|
fixed: "right",
|
|
732
744
|
render: (text, record) => {
|
|
@@ -749,16 +761,25 @@ class BasePage extends PureComponent {
|
|
|
749
761
|
} = config();
|
|
750
762
|
let toolFlag = showToolButton && selfButtons.length > 0 && toolButtonPosition == "buttom";
|
|
751
763
|
let toolbarFlag = !(tableProps.toolbar == false || ((_tableProps$toolbar = tableProps.toolbar) === null || _tableProps$toolbar === void 0 ? void 0 : _tableProps$toolbar.show) == false || ((_tableProps$toolbar2 = tableProps.toolbar) === null || _tableProps$toolbar2 === void 0 || (_tableProps$toolbar2 = _tableProps$toolbar2.tools) === null || _tableProps$toolbar2 === void 0 ? void 0 : _tableProps$toolbar2.length) == 0 || (tableTool === null || tableTool === void 0 ? void 0 : tableTool.show) == false);
|
|
764
|
+
let tableHeaderHeight = 55;
|
|
765
|
+
let headerHeight = showSearch && searchForms.length > 0 ? 104 : 0;
|
|
766
|
+
let toolHeight = tableTitle || toolFlag ? 48 : 0;
|
|
767
|
+
let paddingHeight = 25;
|
|
768
|
+
let tableContentHeight = elementHeight - headerHeight - toolHeight - paddingHeight;
|
|
769
|
+
let tableHeight = tableContentHeight - 32 - 32;
|
|
770
|
+
let tableSrollHeight = tableContentHeight - tableHeaderHeight - 32 - 32;
|
|
752
771
|
if (tableProps.pagination !== false) {
|
|
753
772
|
const scroll = tableParams.scroll;
|
|
754
773
|
tableParams = _objectSpread(_objectSpread({}, tableParams), {}, {
|
|
755
774
|
scroll: _objectSpread({
|
|
756
|
-
x: "max-content"
|
|
775
|
+
x: "max-content",
|
|
776
|
+
y: tableSrollHeight
|
|
757
777
|
}, scroll)
|
|
758
778
|
});
|
|
759
779
|
}
|
|
760
780
|
return /*#__PURE__*/React.createElement("div", {
|
|
761
|
-
className: cls(getLess(styles, "nsc-basepage"), className)
|
|
781
|
+
className: cls(getLess(styles, "nsc-basepage"), className),
|
|
782
|
+
ref: this.pageRef
|
|
762
783
|
}, this.props.pageTitle && /*#__PURE__*/React.createElement("div", {
|
|
763
784
|
className: cls(getLess(styles, "nsc-basepage-title"))
|
|
764
785
|
}, this.props.pageTitle), /*#__PURE__*/React.createElement("div", {
|
|
@@ -768,6 +789,12 @@ class BasePage extends PureComponent {
|
|
|
768
789
|
}
|
|
769
790
|
}, showLeft && /*#__PURE__*/React.createElement("div", {
|
|
770
791
|
className: getLess(styles, "nsc-basepage-left")
|
|
792
|
+
}, treeTitle && /*#__PURE__*/React.createElement("div", {
|
|
793
|
+
className: getLess(styles, "tree-title")
|
|
794
|
+
}, treeTitle), /*#__PURE__*/React.createElement("div", {
|
|
795
|
+
className: cls(getLess(styles, "tree-content"), {
|
|
796
|
+
[getLess(styles, "tree-content")]: !treeTitle
|
|
797
|
+
})
|
|
771
798
|
}, /*#__PURE__*/React.createElement(Tree, _extends({
|
|
772
799
|
store: _objectSpread({}, treeStore),
|
|
773
800
|
showIcon: false,
|
|
@@ -776,7 +803,7 @@ class BasePage extends PureComponent {
|
|
|
776
803
|
onSelect: this.treeSelect.bind(this),
|
|
777
804
|
selectedKeys: [this.state.treeSelectedKey],
|
|
778
805
|
titleAlias: titleAlias
|
|
779
|
-
}, othertreeParams))), /*#__PURE__*/React.createElement("div", {
|
|
806
|
+
}, othertreeParams)))), /*#__PURE__*/React.createElement("div", {
|
|
780
807
|
className: cls(getLess(styles, "nsc-basepage-right"), {
|
|
781
808
|
[getLess(styles, "nsc-basepage-no-left-right")]: !showLeft
|
|
782
809
|
})
|
|
@@ -802,7 +829,10 @@ class BasePage extends PureComponent {
|
|
|
802
829
|
[getLess(styles, "nsc-basepage-table-top")]: !toolbarFlag
|
|
803
830
|
}, {
|
|
804
831
|
[getLess(styles, "nsc-basepage-table-top2")]: toolbarFlag && !toolFlag
|
|
805
|
-
})
|
|
832
|
+
}),
|
|
833
|
+
style: {
|
|
834
|
+
height: tableContentHeight
|
|
835
|
+
}
|
|
806
836
|
}, /*#__PURE__*/React.createElement(Table, _extends({
|
|
807
837
|
ref: this.tableRef,
|
|
808
838
|
columns: tableColumn,
|
|
@@ -841,7 +871,10 @@ class BasePage extends PureComponent {
|
|
|
841
871
|
}
|
|
842
872
|
}
|
|
843
873
|
}, tableProps.toolbar),
|
|
844
|
-
showRowSelection: showRowSelection
|
|
874
|
+
showRowSelection: showRowSelection,
|
|
875
|
+
style: {
|
|
876
|
+
height: tableHeight
|
|
877
|
+
}
|
|
845
878
|
}, tableParams))))), editorForm && /*#__PURE__*/React.createElement(EditorForm, {
|
|
846
879
|
ref: this.editorRef,
|
|
847
880
|
callBack: () => {
|
|
@@ -863,4 +896,4 @@ class BasePage extends PureComponent {
|
|
|
863
896
|
}
|
|
864
897
|
}
|
|
865
898
|
export default BasePage;
|
|
866
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJUYWJsZSIsIlRyZWUiLCJCdXR0b24iLCJNb2RhbCIsIlBvcG92ZXIiLCJtZXNzYWdlIiwiRWRpdG9yRm9ybSIsImNscyIsInV0aWxzIiwiRG93bk91dGxpbmVkIiwiRXllT3V0bGluZWQiLCJFZGl0T3V0bGluZWQiLCJSaWdodE91dGxpbmVkIiwiUGx1c091dGxpbmVkIiwiRWxsaXBzaXNPdXRsaW5lZCIsIkRlbGV0ZU91dGxpbmVkIiwiZ2V0TGVzcyIsInJlcXVlc3QiLCJjb25maWciLCJnZXRTdG9yYWdlIiwiSGVhZGVyU2VhcmNoIiwic3R5bGVzIiwiQmFzZVBhZ2UiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX3R5cGUiLCJfc2l6ZSIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsImNoZWNrZWRUcmVlS2V5cyIsIm5hbWUiLCJ1c2VyVHlwZSIsImFjY291bnQiLCJzdGF0ZSIsInZhbHVlIiwiZGVwdElkIiwib25TZWFyY2giLCJzZWxlY3RlZCIsInJlcyIsImtleSIsImtleXMiLCJsZW5ndGgiLCJzdG9yZVByZWZpeCIsInR5cGUiLCJjb250ZW50Iiwic2l6ZSIsInNlbGVjdGVkUm93S2V5cyIsInNlbGVjdGVkUm93RGF0YXMiLCJ0cmVlU2VsZWN0ZWRLZXkiLCJleHBhbmQiLCJmb3JtVHlwZSIsInRhYmxlU2l6ZSIsInRyZWVTZWFyY2hQcmFtcyIsImNvbXBvbmVudERpZE1vdW50IiwiaW5pdERhdGEiLCJzZXRTZWFyY2hQYXJhbXMiLCJwYXJhbXMiLCJjYWxsQmFjayIsIl90aGlzJHNlYXJjaFJlZiRjdXJyZSIsInNlYXJjaFJlZiIsImN1cnJlbnQiLCJzaG93Rm9ybSIsIl90aGlzJGVkaXRvclJlZiRjdXJyZSIsImVkaXRvcmZsYWciLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJlZGl0b3JSZWYiLCJzaG93IiwiaGlkZUZvcm0iLCJfdGhpcyRlZGl0b3JSZWYkY3VycmUyIiwic2V0TG9hZGluZyIsImxvYWRpbmciLCJfdGhpcyRlZGl0b3JSZWYkY3VycmUzIiwic2V0RWRpdEZvcm1WYWx1ZXMiLCJfdGhpcyRlZGl0b3JSZWYkY3VycmU0Iiwic2V0RmllbGRzVmFsdWUiLCJnZXRFZGl0Rm9ybVZhbHVlcyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTUiLCJnZXRGaWVsZHNWYWx1ZSIsIm9uRGVsZXRlIiwiZGF0YSIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbiIsImRlbGV0ZVVybCIsImRlbGV0ZVBhcmFtcyIsImRlbGV0ZVBvc2l0aW9uIiwiX3RoaXMiLCJ0YWJsZVJlZiIsImdldFNlbGVjdGVkUm93S2V5cyIsIndhcm5pbmciLCJjb25maXJtIiwib25PayIsIkVycm9yIiwiZGVmYXVsdFBhcmFtcyIsIm1ldGhvZCIsImF1dG9QcmVmaXgiLCJpZHMiLCJqb2luIiwiaWQiLCJyZXF1ZXN0UGFyYW1zIiwiX29iamVjdFNwcmVhZCIsInRoZW4iLCJjb2RlIiwiX3RoaXMkc2VhcmNoUmVmIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjMiIsInN1Y2Nlc3MiLCJnZXRTZWFyY2hWYWx1ZXMiLCJvbkNhbGxCYWNrcyIsIm9uRGVsZXRlQ2FsbEJhY2siLCJ0YWJsZUxvYWQiLCJlcnJvciIsImNhdGNoIiwiY29uc29sZSIsImxvZyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjIiLCJyZXF1ZXN0Q29uZmlnIiwic3RvcmUiLCJsb2FkIiwib25TZWFyY2hDYWxsQmFjayIsImNhbGxiYWNrIiwidGFibGVSZWxvYWQiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4zIiwiYXV0b0xvYWQiLCJyZWxvYWQiLCJfcmVzJGRhdGEiLCJyZWNvcmRzIiwiY3VycmVudFBhZ2UiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW40IiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNSIsImdldFNlbGVjdGVkUm93RGF0YXMiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW42IiwicmVzZXRTZWxlY3RlZFJvd0tleXMiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW43IiwiX3RoaXMkc2VhcmNoUmVmMiIsImZyb21WYWx1ZSIsImdldENoaWxkcmVuRGF0YSIsInRhYmxlUHJvcHMiLCJyb3dLZXkiLCJyZXNLZXkiLCJjaGlsZE5vZGVzIiwiY2hpbGRyZW4iLCJtYXAiLCJpdGVtIiwiaW5kZXgiLCJyZW5kZXJUb29sQnV0dG9ucyIsInRvb2xidXR0b25zIiwidG9vbGJhckZsYWciLCJmbGFnIiwicmV2ZXJzZSIsInNob3dTZWFyY2giLCJfaXRlbSRwcm9wcyIsInBhZ2VUeXBlIiwib25DbGljayIsImljb24iLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJjcmVhdGVFbGVtZW50IiwiX2V4dGVuZHMiLCJjbGFzc05hbWUiLCJzdHlsZSIsIm1hcmdpbkxlZnQiLCJ0aXRsZSIsInBsYWNlbWVudCIsInRyaWdnZXIiLCJyZW5kZXJDbG91bW5CdXR0b24iLCJjb2x1bW5CdXR0b25zIiwicmVjb3JkIiwiYWN0aW9uUG9ycHMiLCJiYXNlQWN0aW9uQ29sdW1uIiwibmV3QnV0dG9ucyIsInNob3dJY29uIiwiX2l0ZW0kcHJvcHMyIiwicmVjb3JkU2hvdyIsIl9leGNsdWRlZDIiLCJldmFsIiwicHVzaCIsIl9pdGVtJHByb3BzMyIsIl9leGNsdWRlZDMiLCJfaXRlbSRwcm9wczQiLCJfZXhjbHVkZWQ0IiwidHJlZVNlbGVjdCIsInNlbGVjdGVkS2V5cyIsIm9iaiIsIl90aGlzJHNlYXJjaFJlZjMiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWMzIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNCIsImtleXdvcmQiLCJzZWFyY2hLZXkiLCJzZWFyY2hGaWVsZCIsInBhcmFudFNlbGVjdCIsInRyZWVQcm9wcyIsInNlbGVjdGVkTm9kZXMiLCJkYXRhcmVmIiwiYXR0cmlidXRlIiwic2V0U3RhdGUiLCJpc0xlYWYiLCJvblRyZWVTZWxlY3QiLCJ0cmVlU2VsZWN0Q2FsbEJhY2siLCJyZXNldFNlYXJjaCIsIl90aGlzJHNlYXJjaFJlZiRjdXJyZTIiLCJyZXNldEZpZWxkcyIsImdldFRleHQiLCJ0ZXh0IiwiX3Byb3BzJGRhdGEiLCJuZXdUZXh0IiwiaSIsImxhYmVsIiwic2V0VGFibGVEYXRhIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuOCIsInNldERhdGEiLCJzZXRUcmVlRGF0YSIsIl90aGlzJHRyZWVSZWYkY3VycmVudCIsInRyZWVSZWYiLCJyZW5kZXIiLCJfdGFibGVQcm9wcyR0b29sYmFyIiwiX3RhYmxlUHJvcHMkdG9vbGJhcjIiLCJjb2x1bW5zIiwic3VibWl0VXJsIiwiZm9ybVByb3BzIiwic2hvd0xlZnQiLCJzdWJtaXRQYXJhbXMiLCJzaG93VG9vbEJ1dHRvbiIsImJ1dHRvbnMiLCJlZGl0b3JGb3JtIiwib25TaG93Rm9ybSIsImZvcm1DaGFuZ2VWYWxpZCIsInRvb2xCdXR0b25Qb3NpdGlvbiIsImZpbHRlckNvbHVtbiIsImFjdGlvbkNvbHVtbiIsInNob3dSb3dTZWxlY3Rpb24iLCJjb2x1bW5PcmRlciIsImV4cGFuZGFibGUiLCJ0YWJsZVRpdGxlIiwib3RoZXJ0YWJsZVBhcmFtcyIsIl9leGNsdWRlZDUiLCJ0cmVlU3RvcmUiLCJ0cmVlU2VhcmNoIiwidGl0bGVBbGlhcyIsIm90aGVydHJlZVBhcmFtcyIsIl9leGNsdWRlZDYiLCJ0YWJsZVBhcmFtcyIsInRhYmxlQ29sdW1uIiwic2VhcmNoRm9ybXMiLCJlZGl0b3JGb3JtcyIsImRlZmF1bHRWYWx1ZSIsIl90ZW1wJHNlYXJjaCIsIl90ZW1wJHByb3BzIiwiX3RlbXAkcHJvcHMyIiwiX3RlbXAiLCJ0ZW1wIiwic2VhcmNoIiwiX3RlbXAkc2VhcmNoMiIsIl90ZW1wJHNlYXJjaDMiLCJfdGVtcCRzZWFyY2g0IiwiZmllbGQiLCJkYXRhSW5kZXgiLCJsYWJlbENvbCIsIndyYXBwZXJDb2wiLCJydWxlcyIsInNlYXJjaFJ1bGVzIiwiZWRpdG9yIiwic3BhbiIsImRpY3ROYW1lIiwiX3RlbXAkcHJvcHMzIiwiY29sdW1uU2VhcmNoIiwiZmlsdGVyUHJvcHMiLCJ0ZW1wUHJvcCIsIkZyYWdtZW50IiwiZWxsaXBzaXMiLCJjb2x1bW5TaG93Iiwic2VsZkJ1dHRvbnMiLCJpbmRleE9mIiwiYmluZCIsImRhbmdlciIsIkFycmF5IiwiaXNBcnJheSIsImNoaWxkIiwiX2NoaWxkJHByb3BzIiwiX2NoaWxkJHByb3BzMiIsIl9pdGVtJHByb3BzNSIsIl9pdGVtJHByb3BzNiIsImFsaWduIiwidGV4dEFsaWduIiwid2lkdGgiLCJmaXhlZCIsInJlYWNvcmQiLCJzZWFyY2hGbGFnIiwidGFibGVUb29sIiwidG9vbEZsYWciLCJ0b29sYmFyIiwidG9vbHMiLCJwYWdpbmF0aW9uIiwic2Nyb2xsIiwieCIsInBhZ2VUaXRsZSIsImRpc3BsYXkiLCJjaGVja2FibGUiLCJzZWFyY2hhYmxlIiwib25TZWxlY3QiLCJvblJlc2V0IiwicmVmIiwic2VhcmNoRm9ybVByb3BzIiwiZXhwYW5kSWNvbiIsIl9yZWYiLCJleHBhbmRlZCIsIm9uRXhwYW5kIiwiZSIsIm9uQ2hhbmdlIiwib25Ub29sQ2xpY2siLCJvblJlZnJlc2giLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM1IiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNiIsIm9uU3VtYml0Q2FsbEJhY2siLCJvblN1Ym1pdCIsIm9uSGlkZUZvcm0iLCJvbkZvcm1DaGFuZ2UiLCJjaGFuZ2VWYWxpZCIsIm90aGVyUHJvcHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9wYWdlL0Jhc2VQYWdlL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCwgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBUYWJsZSBmcm9tIFwiLi4vLi4vYmFzZS90YWJsZVwiO1xyXG5pbXBvcnQgVHJlZSBmcm9tIFwiLi4vLi4vYmFzZS90cmVlXCI7XHJcbmltcG9ydCBGb3JtIGZyb20gXCIuLi8uLi9iYXNlL2Zvcm1cIjtcclxuaW1wb3J0IEJ1dHRvbiBmcm9tIFwiLi4vLi4vYmFzZS9idXR0b25cIjtcclxuaW1wb3J0IE1vZGFsIGZyb20gXCIuLi8uLi9iYXNlL21vZGFsXCI7XHJcbmltcG9ydCBQb3BvdmVyIGZyb20gXCIuLi8uLi9iYXNlL3BvcG92ZXJcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uLy4uL2Jhc2UvbWVzc2FnZVwiO1xyXG5pbXBvcnQgSWNvbiBmcm9tIFwiLi4vLi4vYmFzZS9jb21tb24vSWNvbkZvbnRcIjtcclxuaW1wb3J0IHsgaWNvblR5cGUgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XHJcbmltcG9ydCBFZGl0b3JGb3JtIGZyb20gXCIuL0Zvcm1cIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5pbXBvcnQgXCIuL2luZGV4Lm1vZHVsZS5sZXNzXCI7XHJcbmltcG9ydCBTdG9yZSwgeyBQYWdlU3RvcmUsIFN0b3JlUHJvcHMgfSBmcm9tIFwiQGJqLW5zYy9tc25cIjtcclxuaW1wb3J0IFJvdyBmcm9tIFwiLi4vLi4vYmFzZS9ncmlkL1Jvd1wiO1xyXG5pbXBvcnQgeyB1dGlscyB9IGZyb20gXCJAYmotbnNjL21zbi9saWIvdXRpbHNcIjtcclxuaW1wb3J0IHtcclxuICBEb3duT3V0bGluZWQsXHJcbiAgRXllT3V0bGluZWQsXHJcbiAgRWRpdE91dGxpbmVkLFxyXG4gIFJpZ2h0T3V0bGluZWQsXHJcbiAgUGx1c091dGxpbmVkLFxyXG4gIEVsbGlwc2lzT3V0bGluZWQsXHJcbiAgRGVsZXRlT3V0bGluZWQsXHJcbn0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmltcG9ydCB7IGdldExlc3MsIGdldE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IHJlcXVlc3QgZnJvbSBcIm5zYy1yZXF1ZXN0XCI7XHJcbmltcG9ydCBvbWl0IGZyb20gXCJvbWl0LmpzXCI7XHJcbmltcG9ydCBjb25maWcgZnJvbSBcIi4uLy4uL2NvbmZpZ1wiO1xyXG5pbXBvcnQgeyBnZXRTdG9yYWdlIH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCB7IElGb3JtUHJvcHMgfSBmcm9tIFwiLi4vLi4vYmFzZS9mb3JtL0Zvcm1cIjtcclxuaW1wb3J0IEhlYWRlclNlYXJjaCBmcm9tIFwiLi4vSGVhZGVyU2VhcmNoXCI7XHJcbmltcG9ydCB7IFBhZ2luYXRpb25Qcm9wcyB9IGZyb20gXCJhbnRkXCI7XHJcbmludGVyZmFjZSBUYWJsZVByb3BzIHtcclxuICBhY3Rpb25Db2x1bW4/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuaTjeS9nOWIl1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBmaWx0ZXJDb2x1bW4/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuui/h+a7pOaMiemSrlxyXG4gIHNob3dSb3dTZWxlY3Rpb24/OiBib29sZWFuOyAvL+aYr+WQpuihqOagvOWLvumAieWIl1xyXG4gIHBhZ2luYXRpb24/OiBib29sZWFuIHwgUGFnaW5hdGlvblByb3BzOyAvL+aYr+WQpuaYvuekuuWIhumhtVxyXG4gIGNvbHVtbk9yZGVyPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrooajmoLzluo/liJdcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuY29uc3Qgc3R5bGVzID0gbnVsbDtcclxuaW50ZXJmYWNlIFRyZWVQcm9wcyB7XHJcbiAgc3RvcmU/OiBTdG9yZVByb3BzO1xyXG4gIHNob3dTZWFyY2g/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuaQnOe0ouahhlxyXG4gIHNlYXJjaEtleT86IHN0cmluZzsgLy/mkJzntKJ2YWx1ZeWvueW6lOeahGtleVxyXG4gIHNlYXJjaEZpZWxkPzogc3RyaW5nOyAvL+afpeivouWvueW6lOeahGtleVxyXG4gIHRpdGxlQWxpYXM/OiBzdHJpbmc7IC8v5qCRdGl0bGXlr7nlupTnmoRrZXks6buY6K6kdGl0bGVcclxuICBub2RlUG9ycHM/OiBvYmplY3Q7XHJcbiAgcGFyYW50U2VsZWN0PzogYm9vbGVhbjtcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuaW50ZXJmYWNlIEZvcm1Qcm9wcyBleHRlbmRzIElGb3JtUHJvcHMge31cclxuaW50ZXJmYWNlIE5TQ0Jhc2VCYWdlUHJvcHMge1xyXG4gIHNob3dTZWFyY2g/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuWktOmDqOaQnOe0ouagj1xyXG4gIHRhYmxlUHJvcHM/OiBUYWJsZVByb3BzOyAvL+ihqOagvOWPguaVsFxyXG4gIHRyZWVQcm9wcz86IFRyZWVQcm9wczsgLy/lt6bkvqfmoJHlj4LmlbBcclxuICBzdWJtaXRQYXJhbXM/OiBPYmplY3Q7IC8v5re75Yqg5Y+C5pWw77yM6buY6K6kbW90aG9kOnBvc3TvvIwg5Y+C5pWw6YCa6L+HZGF0YeS8oOmAklxyXG4gIHN1Ym1pdFVybD86IHN0cmluZztcclxuICBvblN1Ym1pdD86ICh2YWx1ZT86IGFueSwgbGFiZWw/OiBhbnkpID0+IHZvaWQ7XHJcbiAgY29sdW1uczogQXJyYXk8T2JqZWN0PjtcclxuICBzaG93TGVmdD86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65bem5L6n55uu5b2V5qCRXHJcbiAgc2hvd1Rvb2xCdXR0b24/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuaMiemSruagj1xyXG4gIGVkaXRvckZvcm0/OiBib29sZWFuOyAvL+aYr+WQpumcgOimgeihqOWNleWKn+iDvSAsIOS4umZhbHNlIOe8lui+ke+8jOafpeeci++8jOaWsOWinuWKn+iDveWdh+S4jeWPr+eUqFxyXG4gIGRlbGV0ZVVybD86IHN0cmluZzsgLy/liKDpmaR1cmxcclxuICBvbkRlbGV0ZT86IChzZWxlY3RlZEtleXM/OiBBcnJheTxzdHJpbmc+KSA9PiB2b2lkOyAvL+WIoOmZpOWPguaVsO+8jOm7mOiupG1vdGhvZDpwb3N077yMIOWPguaVsOmAmui/h2lkc+aLvOaOpeS8oOmAkue7meWQjuWPsFxyXG4gIGRlbGV0ZVBvc2l0aW9uPzogXCJ0b29sYmFyXCIgfCBcInJvd1wiO1xyXG4gIGRlbGV0ZVBhcmFtcz86IE9iamVjdDtcclxuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcclxuICBvblNlYXJjaD86ICh2YWx1ZT86IGFueSkgPT4gdm9pZDtcclxuICBvblJlc2V0PzogKCkgPT4gdm9pZDtcclxuICBpbml0RGF0YT86IGFueTsgLy/liJ3lp4vljJblm57osIPlh73mlbDvvIzlnKhjb21wb25lbnREaWRNb3VudOS4reiwg+eUqFxyXG4gIGJ1dHRvbnM/OiBBcnJheTxzdHJpbmc+OyAvL+aMiemSrumbhuWQiCAgWydhZGQnLCdkZWxldGUnLCdzZWFyY2gnLCdlZGl0b3InXVxyXG4gIG9uU2hvd0Zvcm0/OiAodmFsdWU/OiBhbnksIGVkaXRvckZsYWc/OiBzdHJpbmcpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25IaWRlRm9ybT86ICgpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25Gb3JtQ2hhbmdlPzogKGNoYW5nZWRWYWx1ZXM/OiBhbnksIGFsbFZhbHVlcz86IGFueSkgPT4gdm9pZDsgLy/ooajljZVvbkNoYW5nZeWbnuiwg1xyXG4gIGZvcm1UeXBlPzogXCJtb2RhbFwiIHwgXCJkcmF3ZXJcIjtcclxuICBmb3JtQ2hhbmdlVmFsaWQ/OiBib29sZWFuOyAvL+ihqOWNleagoemqjFxyXG4gIGNsYXNzTmFtZT86IGFueTtcclxuICB0b29sQnV0dG9uUG9zaXRpb24/OiBcInJpZ2h0XCIgfCBcImJ1dHRvbVwiO1xyXG4gIHBhZ2VUaXRsZT86IHN0cmluZyB8IFJlYWN0Tm9kZTtcclxuICBmb3JtUHJvcHM/OiBGb3JtUHJvcHM7XHJcbiAgYWN0aW9uUG9ycHM/OiB7IHRleHRBbGlnbj86IHN0cmluZzsgc2hvd0ljb24/OiBib29sZWFuOyB3aWR0aD86IG51bWJlciB9O1xyXG4gIHNlYXJjaEZvcm1Qcm9wcz86IHsgd3JhcHBlckNvbD86IGFueTsgbGFiZWxDb2w/OiBhbnkgfTtcclxuICBvblRyZWVTZWxlY3Q/OiAodmFsdWU/OiBhbnksIGVkaXRvckZsYWc/OiBzdHJpbmcpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25DYWxsQmFja3M/OiB7XHJcbiAgICB0cmVlU2VsZWN0Q2FsbEJhY2s/OiBhbnk7XHJcbiAgICBvblNlYXJjaENhbGxCYWNrPzogYW55O1xyXG4gICAgb25TdW1iaXRDYWxsQmFjaz86IGFueTtcclxuICAgIG9uRGVsZXRlQ2FsbEJhY2s/OiBhbnk7XHJcbiAgfTtcclxufVxyXG5cclxuY2xhc3MgQmFzZVBhZ2UgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PE5TQ0Jhc2VCYWdlUHJvcHMsIGFueT4ge1xyXG4gIHRhYmxlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICB0cmVlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBzZWFyY2hSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIGVkaXRvclJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZGF0ZUZvcm1hdCA9IHt9IGFzIGFueTtcclxuICBjb25zdHJ1Y3Rvcihwcm9wczogYW55KSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgICBsZXQgeyBzdG9yZVByZWZpeCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgdHlwZSA9IGdldFN0b3JhZ2UoXHJcbiAgICAgIHN0b3JlUHJlZml4ID8gc3RvcmVQcmVmaXggKyBcIi1cIiArIFwiZm9ybVR5cGVcIiA6IFwiZm9ybVR5cGVcIlxyXG4gICAgKTtcclxuICAgIHR5cGUgPSB0eXBlPy5jb250ZW50O1xyXG4gICAgbGV0IHNpemUgPSBnZXRTdG9yYWdlKFxyXG4gICAgICBzdG9yZVByZWZpeCA/IHN0b3JlUHJlZml4ICsgXCItXCIgKyBcInRhYmxlU2l6ZVwiIDogXCJ0YWJsZVNpemVcIlxyXG4gICAgKTtcclxuICAgIHNpemUgPSBzaXplPy5jb250ZW50O1xyXG4gICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgdHlwZTogXCJhZGRcIixcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbXSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogW10sXHJcbiAgICAgIHRyZWVTZWxlY3RlZEtleTogXCJcIixcclxuICAgICAgZXhwYW5kOiBmYWxzZSxcclxuICAgICAgZm9ybVR5cGU6IHR5cGUgfHwgXCJtb2RhbFwiLFxyXG4gICAgICB0YWJsZVNpemU6IHNpemUgfHwgXCJkZWZhdWx0XCIsXHJcbiAgICAgIHRyZWVTZWFyY2hQcmFtczoge30sXHJcbiAgICB9O1xyXG4gIH1cclxuICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgIGNvbnN0IHsgaW5pdERhdGEgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpbml0RGF0YSAmJiBpbml0RGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0U2VhcmNoUGFyYW1zKHBhcmFtcywgY2FsbEJhY2spIHtcclxuICAgIHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LnNldFNlYXJjaFBhcmFtcyhwYXJhbXMpO1xyXG4gICAgY2FsbEJhY2sgJiYgY2FsbEJhY2socGFyYW1zKTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0ID0gKGNoZWNrZWRUcmVlS2V5czogYW55KSA9PiB7XHJcbiAgICBjb25zdCB7IG5hbWUsIHVzZXJUeXBlLCBhY2NvdW50IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgdmFsdWUgPSB7IG5hbWUsIHVzZXJUeXBlLCBhY2NvdW50LCBkZXB0SWQ6IGNoZWNrZWRUcmVlS2V5c1swXSB9O1xyXG4gICAgaWYgKHRoaXMucHJvcHMub25TZWFyY2gpIHtcclxuICAgICAgdGhpcy5wcm9wcy5vblNlYXJjaCh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICAvLyB0aGlzLnRhYmxlTG9hZCh2YWx1ZSk7XHJcbiAgfTtcclxuXHJcbiAgLy/mmL7npLrooajljZVcclxuICBzaG93Rm9ybSh2YWx1ZT86IGFueSwgZWRpdG9yZmxhZyA9IFwiYWRkXCIpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LnNob3codmFsdWUsIGVkaXRvcmZsYWcpO1xyXG4gIH1cclxuXHJcbiAgLy/lhbPpl63ooajljZVcclxuICBoaWRlRm9ybSgpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LmhpZGVGb3JtKCk7XHJcbiAgfVxyXG5cclxuICBzZXRMb2FkaW5nKGxvYWRpbmc6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LnNldExvYWRpbmcobG9hZGluZyk7XHJcbiAgfVxyXG5cclxuICBzZXRFZGl0Rm9ybVZhbHVlcyh2YWx1ZSkge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uc2V0RmllbGRzVmFsdWUodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdEZvcm1WYWx1ZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uZ2V0RmllbGRzVmFsdWUoKTtcclxuICB9XHJcblxyXG4gIC8v5om56YeP5Yig6ZmkXHJcbiAgb25EZWxldGUoZGF0YT86IGFueSkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBkZWxldGVVcmwsXHJcbiAgICAgIG9uRGVsZXRlLFxyXG4gICAgICBkZWxldGVQYXJhbXMsXHJcbiAgICAgIGRlbGV0ZVBvc2l0aW9uID0gXCJ0b29sYmFyXCIsXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBjb25zdCBzZWxlY3RlZFJvd0tleXMgPSB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gICAgaWYgKGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiKSB7XHJcbiAgICAgIGlmIChzZWxlY3RlZFJvd0tleXMubGVuZ3RoID09IDApIHtcclxuICAgICAgICBtZXNzYWdlLndhcm5pbmcoXCLor7fpgInmi6nopoHliKDpmaTnmoTmlbDmja7vvIFcIik7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBNb2RhbC5jb25maXJtKHtcclxuICAgICAgY29udGVudDogXCLmmK/lkKbnoa7orqTliKDpmaTmiYDpgInpobnvvJ9cIixcclxuICAgICAgLy8gY2VudGVyZWQ6dHJ1ZSxcclxuICAgICAgb25PazogKCkgPT4ge1xyXG4gICAgICAgIGlmIChvbkRlbGV0ZSkge1xyXG4gICAgICAgICAgb25EZWxldGUgJiZcclxuICAgICAgICAgICAgb25EZWxldGUoZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIgPyBzZWxlY3RlZFJvd0tleXMgOiBkYXRhKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFkZWxldGVVcmwpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInVybOS4jeiDveS4uuepuu+8gVwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZGVmYXVsdFBhcmFtcyA9IHtcclxuICAgICAgICAgIG1ldGhvZDogXCJwb3N0XCIsXHJcbiAgICAgICAgICBhdXRvUHJlZml4OiB0cnVlLFxyXG4gICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgIGlkczogZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIgPyBzZWxlY3RlZFJvd0tleXMuam9pbigpIDogZGF0YS5pZCxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfTtcclxuICAgICAgICBsZXQgcmVxdWVzdFBhcmFtcyA9IHt9IGFzIGFueTtcclxuICAgICAgICBpZiAoZGVmYXVsdFBhcmFtcykge1xyXG4gICAgICAgICAgcmVxdWVzdFBhcmFtcyA9IHsgLi4uZGVsZXRlUGFyYW1zIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlcXVlc3RQYXJhbXMgPSB7IC4uLmRlZmF1bHRQYXJhbXMgfTtcclxuICAgICAgICByZXF1ZXN0KGRlbGV0ZVVybCwge1xyXG4gICAgICAgICAgLi4ucmVxdWVzdFBhcmFtcyxcclxuICAgICAgICB9KVxyXG4gICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgY29kZSB9ID0gcmVzO1xyXG4gICAgICAgICAgICBpZiAoY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgbWVzc2FnZS5zdWNjZXNzKFwi5Yig6Zmk5oiQ5Yqf77yBXCIpO1xyXG4gICAgICAgICAgICAgIGxldCB2YWx1ZSA9IF90aGlzLnNlYXJjaFJlZj8uY3VycmVudD8uZ2V0U2VhcmNoVmFsdWVzKCk7XHJcbiAgICAgICAgICAgICAgX3RoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uRGVsZXRlQ2FsbEJhY2sgJiZcclxuICAgICAgICAgICAgICAgIF90aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vbkRlbGV0ZUNhbGxCYWNrKCk7XHJcbiAgICAgICAgICAgICAgX3RoaXMudGFibGVMb2FkKHZhbHVlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBtZXNzYWdlLmVycm9yKFwi5Yig6Zmk5aSx6LSl77yBXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcjogYW55KSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIiwgZXJyb3IpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgdGFibGVMb2FkKHBhcmFtczogYW55LCByZXF1ZXN0Q29uZmlnID0ge30pIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmUubG9hZCh7XHJcbiAgICAgIC4uLnJlcXVlc3RDb25maWcsXHJcbiAgICAgIHBhcmFtczogcGFyYW1zLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8v5p+l6K+iXHJcbiAgb25TZWFyY2gocGFyYW1zKSB7XHJcbiAgICBjb25zdCB7IG9uU2VhcmNoLCBvbkNhbGxCYWNrcyB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmIChvblNlYXJjaCkge1xyXG4gICAgICBvblNlYXJjaCh7IC4uLnBhcmFtcywgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMudGFibGVMb2FkKHsgLi4ucGFyYW1zLCAuLi50aGlzLnN0YXRlLnRyZWVTZWFyY2hQcmFtcyB9KTtcclxuICAgIG9uQ2FsbEJhY2tzPy5vblNlYXJjaENhbGxCYWNrICYmXHJcbiAgICAgIHV0aWxzLmNhbGxiYWNrKG9uQ2FsbEJhY2tzPy5vblNlYXJjaENhbGxCYWNrLCB0aGlzLCBbcGFyYW1zXSk7XHJcbiAgfVxyXG4gIC8v6KGo5qC86YeN5paw5Yqg6L29XHJcbiAgdGFibGVSZWxvYWQocGFyYW1zID0ge30sIGF1dG9Mb2FkID0gdHJ1ZSkge1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZT8ucmVsb2FkKHtcclxuICAgICAgY2FsbGJhY2s6IChyZXMpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBhdXRvTG9hZCAmJlxyXG4gICAgICAgICAgcmVzPy5kYXRhPy5yZWNvcmRzPy5sZW5ndGggPT0gMCAmJlxyXG4gICAgICAgICAgdGhpcy5zdGF0ZS5jdXJyZW50UGFnZSAhPT0gMVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZT8ucmVsb2FkKHtcclxuICAgICAgICAgICAgcGFyYW1zOiB7IGN1cnJlbnQ6IDEsIC4uLnBhcmFtcyB9LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0RhdGFzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dEYXRhcygpO1xyXG4gIH1cclxuICByZXNldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnJlc2V0U2VsZWN0ZWRSb3dLZXlzKCk7XHJcbiAgfVxyXG5cclxuICBnZXRTZWFyY2hWYWx1ZXMoKSB7XHJcbiAgICBjb25zdCBmcm9tVmFsdWUgPSB0aGlzLnNlYXJjaFJlZj8uY3VycmVudD8uZ2V0U2VhcmNoVmFsdWVzKCk7XHJcbiAgICByZXR1cm4geyAuLi5mcm9tVmFsdWUsIC4uLnRoaXMuc3RhdGUudHJlZVNlYXJjaFByYW1zIH07XHJcbiAgfVxyXG5cclxuICBnZXRDaGlsZHJlbkRhdGEoZGF0YSwga2V5cyA9IFtdKSB7XHJcbiAgICBjb25zdCB7IHRhYmxlUHJvcHMgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHJvd0tleSA9IFwiaWRcIiB9ID0gdGFibGVQcm9wcztcclxuICAgIGxldCByZXNLZXkgPSBbXTtcclxuICAgIGlmIChkYXRhLmNoaWxkTm9kZXMpIHtcclxuICAgICAgY29uc3QgY2hpbGRyZW4gPSBkYXRhLmNoaWxkTm9kZXM7XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICBpZiAoaXRlbS5jaGlsZE5vZGVzKSB7XHJcbiAgICAgICAgICB0aGlzLmdldENoaWxkcmVuRGF0YShpdGVtLmNoaWxkTm9kZXMsIGtleXMpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXNLZXkgPSBbLi4ua2V5cywgaXRlbVtyb3dLZXldXTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmVzS2V5ID0gWy4uLmtleXMsIGRhdGFbcm93S2V5XV07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzS2V5O1xyXG4gIH1cclxuXHJcbiAgcmVuZGVyVG9vbEJ1dHRvbnModG9vbGJ1dHRvbnM6IGFueSwgdG9vbGJhckZsYWcpIHtcclxuICAgIGNvbnN0IGZsYWcgPSB0b29sYnV0dG9ucy5sZW5ndGggPiA1O1xyXG4gICAgdG9vbGJ1dHRvbnMgPSBbLi4udG9vbGJ1dHRvbnNdLnJldmVyc2UoKTtcclxuICAgIGNvbnN0IHsgc2hvd1NlYXJjaCA9IHRydWUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBjb250ZW50ID0gdG9vbGJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIGljb24sIHNob3csIC4uLnBhcmFtcyB9ID0gaXRlbS5wcm9wcztcclxuICAgICAgaWYgKGluZGV4ID4gMykge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnQtaXRlbVwiKVxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWljb25cIil9PntpY29ufTwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAge2NoaWxkcmVufVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdG9vbC1idXR0b25zXCIpKX1cclxuICAgICAgICBzdHlsZT17eyBtYXJnaW5MZWZ0OiAwIH19XHJcbiAgICAgID5cclxuICAgICAgICB7dG9vbGJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChmbGFnKSB7XHJcbiAgICAgICAgICAgIGlmIChpbmRleCA8IDQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gPGRpdiBrZXk9e2luZGV4fT57aXRlbX08L2Rpdj47XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT0gNCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8UG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICAgICAgICB0aXRsZT17bnVsbH1cclxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAgdHJpZ2dlcj17W1wiY2xpY2tcIl19XHJcbiAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICAgIC8vIG92ZXJsYXlDbGFzc05hbWU9e3N0eWxlc1sncG9wLWJveCddfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHR5cGU9XCJwcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAg5pu05aSaIDxEb3duT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIDxkaXYga2V5PXtpbmRleH0+e2l0ZW19PC9kaXY+O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG4gIHJlbmRlckNsb3VtbkJ1dHRvbihjb2x1bW5CdXR0b25zOiBhbnksIHJlY29yZDogYW55KSB7XHJcbiAgICBjb25zdCB7IGFjdGlvblBvcnBzIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBiYXNlQWN0aW9uQ29sdW1uIH0gPSBjb25maWcoKTtcclxuICAgIGNvbnN0IG5ld0J1dHRvbnMgPSBbXTtcclxuICAgIGxldCBzaG93SWNvbiA9IHRydWU7XHJcbiAgICBpZiAoYWN0aW9uUG9ycHM/LnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGVsc2UgaWYgKGJhc2VBY3Rpb25Db2x1bW4uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgY29sdW1uQnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgaWNvbiwgcmVjb3JkU2hvdywgLi4ucGFyYW1zIH0gPVxyXG4gICAgICAgIGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChyZWNvcmRTaG93KSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiByZWNvcmRTaG93ID09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICAgIGlmIChldmFsKHJlY29yZFNob3cpKSB7XHJcbiAgICAgICAgICAgIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiByZWNvcmRTaG93ID09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAgY29uc3Qgc2hvdyA9IHJlY29yZFNob3cocmVjb3JkKTtcclxuICAgICAgICAgIHNob3cgJiYgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgY29uc3QgZmxhZyA9IG5ld0J1dHRvbnMubGVuZ3RoID4gMztcclxuXHJcbiAgICBjb25zdCBjb250ZW50ID0gbmV3QnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgcmVjb3JkU2hvdywgaWNvbiwgc2hvdywgLi4ucGFyYW1zIH0gPVxyXG4gICAgICAgIGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChpbmRleCA+IDIpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpLFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb250ZW50LWl0ZW1cIilcclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyZWNvcmQpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd0ljb24gIT09IGZhbHNlICYmIChcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1pY29uXCIpfT5cclxuICAgICAgICAgICAgICAgIHtpY29ufVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAge2NoaWxkcmVufVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gbmV3QnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgcmVjb3JkU2hvdywgaWNvbiwgLi4ucGFyYW1zIH0gPVxyXG4gICAgICAgIGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChmbGFnKSB7XHJcbiAgICAgICAgaWYgKGluZGV4IDwgMykge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksIHtcclxuICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yLWZpcnN0XCIpXTogaW5kZXggPT09IDAsXHJcbiAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socmVjb3JkKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7c2hvd0ljb24gIT09IGZhbHNlICYmIChcclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWljb25cIil9PlxyXG4gICAgICAgICAgICAgICAgICB7aWNvbn1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRleHRcIil9PlxyXG4gICAgICAgICAgICAgICAge2NoaWxkcmVufVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT0gMykge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPFBvcG92ZXJcclxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgIHRpdGxlPXtudWxsfVxyXG4gICAgICAgICAgICAgIGNvbnRlbnQ9e2NvbnRlbnR9XHJcbiAgICAgICAgICAgICAgdHJpZ2dlcj17W1wiY2xpY2tcIl19XHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAvLyBvdmVybGF5Q2xhc3NOYW1lPXtzdHlsZXNbJ3BvcCddfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIil9PlxyXG4gICAgICAgICAgICAgICAgPEVsbGlwc2lzT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9Qb3BvdmVyPlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksIHtcclxuICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvci1maXJzdFwiKV06IGluZGV4ID09PSAwLFxyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyZWNvcmQpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd0ljb24gIT09IGZhbHNlICYmIChcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1pY29uXCIpfT5cclxuICAgICAgICAgICAgICAgIHtpY29ufVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAge2NoaWxkcmVufVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIC8vIH1cclxuICB9XHJcbiAgLy/moJHngrnlh7vkuovku7ZcclxuICB0cmVlU2VsZWN0KHNlbGVjdGVkS2V5czogYW55LCBvYmo6IGFueSkge1xyXG4gICAgbGV0IGtleXdvcmQgPSBcIlwiO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzZWFyY2hLZXkgPSBcImtleVwiLFxyXG4gICAgICBzZWFyY2hGaWVsZCA9IFwiXCIsXHJcbiAgICAgIHBhcmFudFNlbGVjdCA9IHRydWUsXHJcbiAgICB9ID0gdGhpcy5wcm9wcy50cmVlUHJvcHM7XHJcbiAgICBjb25zdCB7IHRyZWVTZWxlY3RlZEtleSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgc2VsZWN0ZWQsIHNlbGVjdGVkTm9kZXMgfSA9IG9iajtcclxuXHJcbiAgICBpZiAoc2VsZWN0ZWQpIHtcclxuICAgICAga2V5d29yZCA9IHNlbGVjdGVkTm9kZXNbMF0uZGF0YXJlZi5hdHRyaWJ1dGVbc2VhcmNoS2V5XTtcclxuICAgICAgaWYgKHBhcmFudFNlbGVjdCkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgdHJlZVNlbGVjdGVkS2V5OiBzZWxlY3RlZEtleXNbMF0sXHJcbiAgICAgICAgICB0cmVlU2VhcmNoUHJhbXM6IHsgW3NlYXJjaEZpZWxkXToga2V5d29yZCB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChzZWxlY3RlZE5vZGVzWzBdLmlzTGVhZiB8fCAhc2VsZWN0ZWROb2Rlc1swXS5jaGlsZHJlbikge1xyXG4gICAgICAgICAgaWYgKHNlbGVjdGVkS2V5c1swXSAhPT0gdHJlZVNlbGVjdGVkS2V5KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgIHRyZWVTZWxlY3RlZEtleTogc2VsZWN0ZWRLZXlzWzBdLFxyXG4gICAgICAgICAgICAgIHRyZWVTZWFyY2hQcmFtczogeyBbc2VhcmNoRmllbGRdOiBrZXl3b3JkIH0sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgdHJlZVNlbGVjdGVkS2V5OiBrZXl3b3JkLFxyXG4gICAgICAgIHRyZWVTZWFyY2hQcmFtczoge30sXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucHJvcHMub25UcmVlU2VsZWN0KSB7XHJcbiAgICAgIHRoaXMucHJvcHMub25UcmVlU2VsZWN0KHNlbGVjdGVkS2V5cywgb2JqKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZnJvbVZhbHVlID0gdGhpcy5zZWFyY2hSZWY/LmN1cnJlbnQ/LmdldFNlYXJjaFZhbHVlcygpIHx8IHt9O1xyXG4gICAgc2VhcmNoRmllbGQgJiYgdGhpcy50YWJsZUxvYWQoeyAuLi5mcm9tVmFsdWUsIFtzZWFyY2hGaWVsZF06IGtleXdvcmQgfSk7XHJcbiAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy50cmVlU2VsZWN0Q2FsbEJhY2sgJiZcclxuICAgICAgdXRpbHMuY2FsbGJhY2sodGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8udHJlZVNlbGVjdENhbGxCYWNrLCB0aGlzLCBbXHJcbiAgICAgICAgc2VsZWN0ZWRLZXlzLFxyXG4gICAgICAgIG9iaixcclxuICAgICAgXSk7XHJcbiAgfVxyXG4gIHJlc2V0U2VhcmNoKCkge1xyXG4gICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8ucmVzZXRGaWVsZHMoKTtcclxuICB9XHJcbiAgZ2V0VGV4dChwcm9wcywgdGV4dCkge1xyXG4gICAgbGV0IG5ld1RleHQgPSB0ZXh0O1xyXG4gICAgaWYgKHByb3BzPy5kYXRhICYmIHByb3BzPy5kYXRhPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBkYXRhID0gcHJvcHMuZGF0YTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhPy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChkYXRhW2ldLnZhbHVlID09IHRleHQpIHtcclxuICAgICAgICAgIG5ld1RleHQgPSBkYXRhW2ldLmxhYmVsO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ld1RleHQ7XHJcbiAgfVxyXG4gIHNldFRhYmxlRGF0YShkYXRhKSB7XHJcbiAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlPy5zZXREYXRhKGRhdGEpO1xyXG4gIH1cclxuICBzZXRUcmVlRGF0YShkYXRhKSB7XHJcbiAgICB0aGlzLnRyZWVSZWYuY3VycmVudD8uc3RvcmU/LnNldERhdGEoZGF0YSk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkS2V5ID0gKHNlbGVjdGVkKSA9PiB7XHJcbiAgICBsZXQgcmVzID0gW107XHJcbiAgICBmb3IgKGxldCBrZXkgaW4gc2VsZWN0ZWQpIHtcclxuICAgICAgY29uc3Qga2V5cyA9IHNlbGVjdGVkW2tleV07XHJcbiAgICAgIGlmIChrZXlzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICByZXMgPSBbLi4ucmVzLCAuLi5rZXlzXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcztcclxuICB9O1xyXG5cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGNvbHVtbnMgPSBbXSxcclxuICAgICAgc2hvd1NlYXJjaCA9IHRydWUsXHJcbiAgICAgIGNoaWxkcmVuLFxyXG4gICAgICBzdWJtaXRVcmwgPSBcIlwiLFxyXG4gICAgICB0YWJsZVByb3BzID0ge30sXHJcbiAgICAgIHRyZWVQcm9wcyA9IHt9LFxyXG4gICAgICBmb3JtUHJvcHMgPSB7fSxcclxuICAgICAgc2hvd0xlZnQgPSBmYWxzZSxcclxuICAgICAgc3VibWl0UGFyYW1zID0ge30sXHJcbiAgICAgIHNob3dUb29sQnV0dG9uID0gdHJ1ZSxcclxuICAgICAgYnV0dG9ucyA9IFtdLFxyXG4gICAgICBlZGl0b3JGb3JtID0gdHJ1ZSxcclxuICAgICAgb25TaG93Rm9ybSxcclxuICAgICAgZm9ybUNoYW5nZVZhbGlkID0gdHJ1ZSxcclxuICAgICAgY2xhc3NOYW1lLFxyXG4gICAgICB0b29sQnV0dG9uUG9zaXRpb24gPSBcImJ1dHRvbVwiLFxyXG4gICAgICBhY3Rpb25Qb3JwcyxcclxuICAgICAgZGVsZXRlUG9zaXRpb24gPSBcInRvb2xiYXJcIixcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzdG9yZSxcclxuICAgICAgZmlsdGVyQ29sdW1uID0gdHJ1ZSxcclxuICAgICAgYWN0aW9uQ29sdW1uID0gdHJ1ZSxcclxuICAgICAgc2hvd1Jvd1NlbGVjdGlvbiA9IHRydWUsXHJcbiAgICAgIGNvbHVtbk9yZGVyID0gdHJ1ZSxcclxuICAgICAgZXhwYW5kYWJsZSA9IHt9LFxyXG4gICAgICBwYXJhbnRTZWxlY3QgPSB0cnVlLFxyXG4gICAgICB0YWJsZVRpdGxlLFxyXG4gICAgICAuLi5vdGhlcnRhYmxlUGFyYW1zXHJcbiAgICB9ID0gdGFibGVQcm9wcztcclxuXHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN0b3JlOiB0cmVlU3RvcmUgPSB7fSxcclxuICAgICAgc2hvd1NlYXJjaDogdHJlZVNlYXJjaCA9IHRydWUsXHJcbiAgICAgIHRpdGxlQWxpYXMgPSBcInRpdGxlXCIsXHJcbiAgICAgIC4uLm90aGVydHJlZVBhcmFtc1xyXG4gICAgfSA9IHRyZWVQcm9wcztcclxuXHJcbiAgICBsZXQgdGFibGVQYXJhbXMgPSB7IGZpbHRlckNvbHVtbiwgc3RvcmUsIC4uLm90aGVydGFibGVQYXJhbXMgfSBhcyBhbnk7XHJcbiAgICBsZXQgdGFibGVDb2x1bW46IGFueVtdID0gW107XHJcbiAgICBjb25zdCBzZWFyY2hGb3JtczogYW55ID0gW107XHJcbiAgICBjb25zdCBlZGl0b3JGb3JtczogYW55ID0gW107XHJcbiAgICBjb25zdCBkZWZhdWx0VmFsdWU6IGFueSA9IHt9O1xyXG4gICAgY29uc3QgY29sdW1uQnV0dG9uczogYW55ID0gW107XHJcbiAgICBjb2x1bW5zLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGxldCB0ZW1wID0geyAuLi5pdGVtIH07XHJcbiAgICAgIGlmICh0ZW1wLnNlYXJjaCA9PT0gdHJ1ZSB8fCB0ZW1wLnNlYXJjaD8uc2hvdyA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIHNlYXJjaEZvcm1zLnB1c2goe1xyXG4gICAgICAgICAgbmFtZTogdGVtcC5maWVsZCB8fCB0ZW1wLmRhdGFJbmRleCxcclxuICAgICAgICAgIGxhYmVsOiB0ZW1wLnNlYXJjaD8ubGFiZWwgfHwgdGVtcC50aXRsZSxcclxuICAgICAgICAgIHR5cGU6IHRlbXAudHlwZSxcclxuICAgICAgICAgIHByb3BzOiB0ZW1wLnByb3BzLFxyXG4gICAgICAgICAgbGFiZWxDb2w6IHRlbXAuc2VhcmNoPy5sYWJlbENvbCxcclxuICAgICAgICAgIHdyYXBwZXJDb2w6IHRlbXAuc2VhcmNoPy53cmFwcGVyQ29sLFxyXG4gICAgICAgICAgcnVsZXM6IHRlbXAuc2VhcmNoUnVsZXMgPyB0ZW1wLnNlYXJjaFJ1bGVzIDogW10sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnNlYXJjaDtcclxuICAgICAgdGVtcC5lZGl0b3IgIT09IGZhbHNlICYmXHJcbiAgICAgICAgZWRpdG9yRm9ybXMucHVzaCh7XHJcbiAgICAgICAgICBuYW1lOiB0ZW1wLmZpZWxkIHx8IHRlbXAuZGF0YUluZGV4LFxyXG4gICAgICAgICAgbGFiZWw6IHRlbXAudGl0bGUsXHJcbiAgICAgICAgICBydWxlczogdGVtcC5ydWxlcyA/IHRlbXAucnVsZXMgOiBbXSxcclxuICAgICAgICAgIHR5cGU6IHRlbXAudHlwZSxcclxuICAgICAgICAgIHNwYW46IHRlbXAuc3BhbixcclxuICAgICAgICAgIGRpY3ROYW1lOiB0ZW1wLmRpY3ROYW1lLFxyXG4gICAgICAgICAgcHJvcHM6IHsgLi4udGVtcC5wcm9wcyB9LFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRlbXAucHJvcHM/LmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkICYmXHJcbiAgICAgICAgdGVtcC5wcm9wcz8uZGVmYXVsdFZhbHVlICE9PSBudWxsXHJcbiAgICAgICkge1xyXG4gICAgICAgIGNvbnN0IG5hbWUgPSB0ZW1wLmZpZWxkIHx8IHRlbXAuZGF0YUluZGV4O1xyXG4gICAgICAgIGRlZmF1bHRWYWx1ZVtuYW1lXSA9IHRlbXAucHJvcHM/LmRlZmF1bHRWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgICBkZWxldGUgdGVtcC5ydWxlcztcclxuICAgICAgZGVsZXRlIHRlbXAuc3BhbjtcclxuICAgICAgaWYgKHRlbXAuY29sdW1uU2VhcmNoKSB7XHJcbiAgICAgICAgdGVtcC5maWx0ZXJQcm9wcyA9IHtcclxuICAgICAgICAgIHR5cGU6IHRlbXAudHlwZSxcclxuICAgICAgICAgIHByb3BzOiB0ZW1wLnByb3BzLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgICAgZGVsZXRlIHRlbXAudHlwZTtcclxuICAgICAgbGV0IHRlbXBQcm9wID0geyAuLi50ZW1wLnByb3BzIH07XHJcbiAgICAgIGlmICh0ZW1wLnN0eWxlKSB7XHJcbiAgICAgICAgdGVtcCA9IHtcclxuICAgICAgICAgIHJlbmRlcjogKHRleHQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgICAgICB7dGV4dCAhPT0gXCJcIiAmJiB0ZXh0ICE9PSBudWxsICYmIHRleHQgIT09IHVuZGVmaW5lZCAmJiAoXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtY29sLWJhY2tcIil9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbC10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLmdldFRleHQodGVtcFByb3AsIHRleHQpfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLnRlbXAsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSBlbHNlIGlmICghdGVtcC5lbGxpcHNpcykge1xyXG4gICAgICAgIHRlbXAgPSB7XHJcbiAgICAgICAgICByZW5kZXI6ICh0ZXh0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIDw+e3RoaXMuZ2V0VGV4dCh0ZW1wUHJvcCwgdGV4dCl9PC8+O1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLnRlbXAsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0ZW1wID0geyAuLi50ZW1wIH07XHJcbiAgICAgIH1cclxuICAgICAgZGVsZXRlIHRlbXAucHJvcHM7XHJcbiAgICAgIGlmICh0ZW1wPy5jb2x1bW5TaG93ICE9PSBmYWxzZSkgdGFibGVDb2x1bW4ucHVzaCh0ZW1wKTtcclxuICAgIH0pO1xyXG4gICAgY29uc3Qgc2VsZkJ1dHRvbnM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgeyBiYXNlQWN0aW9uQ29sdW1uIH0gPSBjb25maWcoKTtcclxuICAgIGxldCBzaG93SWNvbiA9IHRydWU7XHJcbiAgICBpZiAoYWN0aW9uUG9ycHM/LnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGVsc2UgaWYgKGJhc2VBY3Rpb25Db2x1bW4uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgaWYgKGVkaXRvckZvcm0gPT0gdHJ1ZSkge1xyXG4gICAgICBpZiAoYnV0dG9ucy5pbmRleE9mKFwic2VhcmNoXCIpID4gLTEpIHtcclxuICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eyhyZWNvcmQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChvblNob3dGb3JtKSB7XHJcbiAgICAgICAgICAgICAgICBvblNob3dGb3JtKHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLCBcImRldGFpbFwiKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5zaG93Rm9ybShyZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCwgXCJkZXRhaWxcIik7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIGljb249ezxFeWVPdXRsaW5lZCAvPn1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg5p+l55yLXHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChidXR0b25zLmluZGV4T2YoXCJlZGl0b3JcIikgPiAtMSkge1xyXG4gICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgb25DbGljaz17KHJlY29yZDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKG9uU2hvd0Zvcm0pIHtcclxuICAgICAgICAgICAgICAgIG9uU2hvd0Zvcm0ocmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsIFwiZWRpdG9yXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnNob3dGb3JtKHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLCBcImVkaXRvclwiKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgaWNvbj17PEVkaXRPdXRsaW5lZCAvPn1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg57yW6L6RXHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoYnV0dG9ucy5pbmRleE9mKFwiYWRkXCIpID4gLTEpIHtcclxuICAgICAgc2VsZkJ1dHRvbnMucHVzaChcclxuICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgeyBvblNob3dGb3JtIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgICAgICBpZiAob25TaG93Rm9ybSkge1xyXG4gICAgICAgICAgICAgIG9uU2hvd0Zvcm0oKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zaG93Rm9ybSgpO1xyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIGljb249ezxQbHVzT3V0bGluZWQgLz59XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAg5re75YqgXHJcbiAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBpZiAoYnV0dG9ucy5pbmRleE9mKFwiZGVsZXRlXCIpID4gLTEpIHtcclxuICAgICAgaWYgKGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiKSB7XHJcbiAgICAgICAgc2VsZkJ1dHRvbnMucHVzaChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgLy8gdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMub25EZWxldGUuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgaWNvbj17PERlbGV0ZU91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICBkYW5nZXJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg5Yig6ZmkXHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2UgaWYgKGRlbGV0ZVBvc2l0aW9uID09IFwicm93XCIpIHtcclxuICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIC8vIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsocmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLm9uRGVsZXRlKHJlY29yZCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIGljb249ezxEZWxldGVPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgZGFuZ2VyXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIOWIoOmZpFxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbSkpIHtcclxuICAgICAgICAgIGl0ZW0ubWFwKChjaGlsZCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIikge1xyXG4gICAgICAgICAgICAgIHNlbGZCdXR0b25zLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjbG91bW5CdXR0b25cIikge1xyXG4gICAgICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoaXRlbT8ucHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiKSB7XHJcbiAgICAgICAgICAgIHNlbGZCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNsb3VtbkJ1dHRvblwiKSB7XHJcbiAgICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChjaGlsZHJlbikge1xyXG4gICAgICBjb25zdCB7IHByb3BzIH06IGFueSA9IGNoaWxkcmVuO1xyXG4gICAgICBpZiAocHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiKSB7XHJcbiAgICAgICAgc2VsZkJ1dHRvbnMucHVzaChjaGlsZHJlbik7XHJcbiAgICAgIH0gZWxzZSBpZiAocHJvcHM/LnBhZ2VUeXBlID09IFwiY2xvdW1uQnV0dG9uXCIpIHtcclxuICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBhY3Rpb25Db2x1bW4gJiZcclxuICAgICAgdGFibGVDb2x1bW4ucHVzaCh7XHJcbiAgICAgICAgdGl0bGU6IFwi5pON5L2cXCIsXHJcbiAgICAgICAgZGF0YUluZGV4OiBcImFjdGlvblwiLFxyXG4gICAgICAgIGFsaWduOiBhY3Rpb25Qb3Jwcz8udGV4dEFsaWduXHJcbiAgICAgICAgICA/IGFjdGlvblBvcnBzPy50ZXh0QWxpZ25cclxuICAgICAgICAgIDogYmFzZUFjdGlvbkNvbHVtbi50ZXh0QWxpZ25cclxuICAgICAgICAgID8gYmFzZUFjdGlvbkNvbHVtbi50ZXh0QWxpZ25cclxuICAgICAgICAgIDogXCJjZW50ZXJcIixcclxuICAgICAgICB3aWR0aDogYWN0aW9uUG9ycHM/LndpZHRoXHJcbiAgICAgICAgICA/IGFjdGlvblBvcnBzPy53aWR0aFxyXG4gICAgICAgICAgOiBiYXNlQWN0aW9uQ29sdW1uLndpZHRoXHJcbiAgICAgICAgICA/IGJhc2VBY3Rpb25Db2x1bW4ud2lkdGhcclxuICAgICAgICAgIDogMjAwLFxyXG4gICAgICAgIGZpeGVkOiBcInJpZ2h0XCIsXHJcbiAgICAgICAgcmVuZGVyOiAodGV4dDogYW55LCByZWNvcmQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1hY3Rpb25cIil9PlxyXG4gICAgICAgICAgICAgIHt0aGlzLnJlbmRlckNsb3VtbkJ1dHRvbihjb2x1bW5CdXR0b25zLCByZWNvcmQpfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICBpZiAoY29sdW1uT3JkZXIpXHJcbiAgICAgIHRhYmxlQ29sdW1uID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRpdGxlOiBcIuW6j+WPt1wiLFxyXG4gICAgICAgICAgd2lkdGg6IDgwLFxyXG4gICAgICAgICAgYWxpZ246IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICByZW5kZXI6ICh0ZXh0LCByZWFjb3JkLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gPD57aW5kZXggKyAxfTwvPjtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi50YWJsZUNvbHVtbixcclxuICAgICAgXTtcclxuICAgIGxldCBzZWFyY2hGbGFnID0gc2hvd1NlYXJjaCAmJiBzZWFyY2hGb3Jtcy5sZW5ndGggPiAwO1xyXG4gICAgbGV0IHsgdGFibGVUb29sIH0gPSBjb25maWcoKTtcclxuICAgIGxldCB0b29sRmxhZyA9XHJcbiAgICAgIHNob3dUb29sQnV0dG9uICYmXHJcbiAgICAgIHNlbGZCdXR0b25zLmxlbmd0aCA+IDAgJiZcclxuICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uID09IFwiYnV0dG9tXCI7XHJcbiAgICBsZXQgdG9vbGJhckZsYWcgPSAhKFxyXG4gICAgICB0YWJsZVByb3BzLnRvb2xiYXIgPT0gZmFsc2UgfHxcclxuICAgICAgdGFibGVQcm9wcy50b29sYmFyPy5zaG93ID09IGZhbHNlIHx8XHJcbiAgICAgIHRhYmxlUHJvcHMudG9vbGJhcj8udG9vbHM/Lmxlbmd0aCA9PSAwIHx8XHJcbiAgICAgIHRhYmxlVG9vbD8uc2hvdyA9PSBmYWxzZVxyXG4gICAgKTtcclxuICAgIGlmICh0YWJsZVByb3BzLnBhZ2luYXRpb24gIT09IGZhbHNlKSB7XHJcbiAgICAgIGNvbnN0IHNjcm9sbCA9IHRhYmxlUGFyYW1zLnNjcm9sbDtcclxuICAgICAgdGFibGVQYXJhbXMgPSB7XHJcbiAgICAgICAgLi4udGFibGVQYXJhbXMsXHJcbiAgICAgICAgc2Nyb2xsOiB7IHg6IFwibWF4LWNvbnRlbnRcIiwgLi4uc2Nyb2xsIH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2VcIiksIGNsYXNzTmFtZSl9PlxyXG4gICAgICAgIHt0aGlzLnByb3BzLnBhZ2VUaXRsZSAmJiAoXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10aXRsZVwiKSl9PlxyXG4gICAgICAgICAgICB7dGhpcy5wcm9wcy5wYWdlVGl0bGV9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1wYW5lXCIpKX1cclxuICAgICAgICAgIHN0eWxlPXt7IGRpc3BsYXk6IFwiZmxleFwiIH19XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3Nob3dMZWZ0ICYmIChcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1sZWZ0XCIpfT5cclxuICAgICAgICAgICAgICA8VHJlZVxyXG4gICAgICAgICAgICAgICAgc3RvcmU9e3sgLi4udHJlZVN0b3JlIH19XHJcbiAgICAgICAgICAgICAgICBzaG93SWNvbj17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICBjaGVja2FibGU9e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgc2VhcmNoYWJsZT17dHJlZVNlYXJjaH1cclxuICAgICAgICAgICAgICAgIG9uU2VsZWN0PXt0aGlzLnRyZWVTZWxlY3QuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkS2V5cz17W3RoaXMuc3RhdGUudHJlZVNlbGVjdGVkS2V5XX1cclxuICAgICAgICAgICAgICAgIHRpdGxlQWxpYXM9e3RpdGxlQWxpYXN9XHJcbiAgICAgICAgICAgICAgICB7Li4ub3RoZXJ0cmVlUGFyYW1zfVxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXJpZ2h0XCIpLCB7XHJcbiAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1uby1sZWZ0LXJpZ2h0XCIpXTogIXNob3dMZWZ0LFxyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3Nob3dTZWFyY2ggJiYgc2VhcmNoRm9ybXMubGVuZ3RoID4gMCAmJiAoXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1oZWFkZXJzZWFyY2hcIil9PlxyXG4gICAgICAgICAgICAgICAgPEhlYWRlclNlYXJjaFxyXG4gICAgICAgICAgICAgICAgICBzZWFyY2hGb3Jtcz17c2VhcmNoRm9ybXN9XHJcbiAgICAgICAgICAgICAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbj17dG9vbEJ1dHRvblBvc2l0aW9ufVxyXG4gICAgICAgICAgICAgICAgICBvblNlYXJjaD17dGhpcy5vblNlYXJjaC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgICBvblJlc2V0PXt0aGlzLnByb3BzLm9uUmVzZXR9XHJcbiAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy5zZWFyY2hSZWZ9XHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEZvcm1Qcm9wcz17dGhpcy5wcm9wcy5zZWFyY2hGb3JtUHJvcHN9XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnRcIiksIHtcclxuICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtY29udGVudC1nYXBcIildOiAhc2VhcmNoRmxhZyxcclxuICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHsodGFibGVUaXRsZSB8fCB0b29sRmxhZykgJiYgKFxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGFibGUtdGl0bGVcIiksIHtcclxuICAgICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRpdGxlLXdpZHRoXCIpXTogIXRvb2xiYXJGbGFnLFxyXG4gICAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGRpdj57dGFibGVUaXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAge3Rvb2xGbGFnICYmIHRoaXMucmVuZGVyVG9vbEJ1dHRvbnMoc2VsZkJ1dHRvbnMsIHRvb2xiYXJGbGFnKX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICl9XHJcblxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGFibGVcIiksXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlLXRvcFwiKV06ICF0b29sYmFyRmxhZyxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGFibGUtdG9wMlwiKV06XHJcbiAgICAgICAgICAgICAgICAgICAgICB0b29sYmFyRmxhZyAmJiAhdG9vbEZsYWcsXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPFRhYmxlXHJcbiAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy50YWJsZVJlZn1cclxuICAgICAgICAgICAgICAgICAgY29sdW1ucz17dGFibGVDb2x1bW59XHJcbiAgICAgICAgICAgICAgICAgIGV4cGFuZGFibGU9e3tcclxuICAgICAgICAgICAgICAgICAgICBleHBhbmRJY29uOiAoeyBleHBhbmRlZCwgb25FeHBhbmQsIHJlY29yZCB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtleHBhbmRlZCA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEb3duT3V0bGluZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IG9uRXhwYW5kKHJlY29yZCwgZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJuc2MtYmFzZXBhZ2UtZXhwYW5kLWljb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNoaWxkTm9kZXMgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmlnaHRPdXRsaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiBvbkV4cGFuZChyZWNvcmQsIGUpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibnNjLWJhc2VwYWdlLWV4cGFuZC1pY29uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIC4uLmV4cGFuZGFibGUsXHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIGNvbHVtbk9yZGVyPXt0cnVlfVxyXG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHBhZ2luYXRpb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGN1cnJlbnRQYWdlIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UGFnZSAhPT0gcGFnaW5hdGlvbi5jdXJyZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFBhZ2U6IHBhZ2luYXRpb24uY3VycmVudCxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgdG9vbGJhcj17e1xyXG4gICAgICAgICAgICAgICAgICAgIG9uVG9vbENsaWNrOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvblJlZnJlc2g6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gdGhpcy5nZXRTZWFyY2hWYWx1ZXMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUxvYWQocGFyYW1zKTtcclxuICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAuLi50YWJsZVByb3BzLnRvb2xiYXIsXHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIHNob3dSb3dTZWxlY3Rpb249e3Nob3dSb3dTZWxlY3Rpb259XHJcbiAgICAgICAgICAgICAgICAgIHsuLi50YWJsZVBhcmFtc31cclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICB7ZWRpdG9yRm9ybSAmJiAoXHJcbiAgICAgICAgICAgIDxFZGl0b3JGb3JtXHJcbiAgICAgICAgICAgICAgcmVmPXt0aGlzLmVkaXRvclJlZn1cclxuICAgICAgICAgICAgICBjYWxsQmFjaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25TdW1iaXRDYWxsQmFjayAmJlxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vblN1bWJpdENhbGxCYWNrKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlUmVsb2FkLmJpbmQodGhpcyk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICBmb3JtUHJvcHM9e2VkaXRvckZvcm1zfVxyXG4gICAgICAgICAgICAgIHN1Ym1pdFVybD17c3VibWl0VXJsfVxyXG4gICAgICAgICAgICAgIHN1Ym1pdFBhcmFtcz17c3VibWl0UGFyYW1zfVxyXG4gICAgICAgICAgICAgIG9uU3VibWl0PXt0aGlzLnByb3BzLm9uU3VibWl0fVxyXG4gICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZT17ZGVmYXVsdFZhbHVlfVxyXG4gICAgICAgICAgICAgIG9uSGlkZUZvcm09e3RoaXMucHJvcHMub25IaWRlRm9ybX1cclxuICAgICAgICAgICAgICBvbkZvcm1DaGFuZ2U9e3RoaXMucHJvcHMub25Gb3JtQ2hhbmdlfVxyXG4gICAgICAgICAgICAgIGZvcm1UeXBlPXt0aGlzLnByb3BzLmZvcm1UeXBlIHx8IFwiYXV0b1wifVxyXG4gICAgICAgICAgICAgIGNoYW5nZVZhbGlkPXtmb3JtQ2hhbmdlVmFsaWR9XHJcbiAgICAgICAgICAgICAgb3RoZXJQcm9wcz17eyAuLi5mb3JtUHJvcHMgfX1cclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgQmFzZVBhZ2U7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFLLElBQUlDLGFBQWEsUUFBbUIsT0FBTztBQUN2RCxPQUFPQyxLQUFLLE1BQU0sa0JBQWtCO0FBQ3BDLE9BQU9DLElBQUksTUFBTSxpQkFBaUI7QUFFbEMsT0FBT0MsTUFBTSxNQUFNLG1CQUFtQjtBQUN0QyxPQUFPQyxLQUFLLE1BQU0sa0JBQWtCO0FBQ3BDLE9BQU9DLE9BQU8sTUFBTSxvQkFBb0I7QUFDeEMsT0FBT0MsT0FBTyxNQUFNLG9CQUFvQjtBQUd4QyxPQUFPQyxVQUFVLE1BQU0sUUFBUTtBQUMvQixPQUFPQyxHQUFHLE1BQU0sWUFBWTtBQUM1QixPQUFPLHFCQUFxQjtBQUc1QixTQUFTQyxLQUFLLFFBQVEsdUJBQXVCO0FBQzdDLFNBQ0VDLFlBQVksRUFDWkMsV0FBVyxFQUNYQyxZQUFZLEVBQ1pDLGFBQWEsRUFDYkMsWUFBWSxFQUNaQyxnQkFBZ0IsRUFDaEJDLGNBQWMsUUFDVCxtQkFBbUI7QUFDMUIsU0FBU0MsT0FBTyxRQUFpQixhQUFhO0FBQzlDLE9BQU9DLE9BQU8sTUFBTSxhQUFhO0FBRWpDLE9BQU9DLE1BQU0sTUFBTSxjQUFjO0FBQ2pDLFNBQVNDLFVBQVUsUUFBUSxtQkFBbUI7QUFFOUMsT0FBT0MsWUFBWSxNQUFNLGlCQUFpQjtBQVcxQyxNQUFNQyxNQUFNLEdBQUcsSUFBSTtBQW9EbkIsTUFBTUMsUUFBUSxTQUFTdkIsYUFBYSxDQUF3QjtFQU0xRHdCLFdBQVdBLENBQUNDLEtBQVUsRUFBRTtJQUFBLElBQUFDLEtBQUEsRUFBQUMsS0FBQTtJQUN0QixLQUFLLENBQUNGLEtBQUssQ0FBQztJQUFDRyxlQUFBLGdDQU5KN0IsS0FBSyxDQUFDOEIsU0FBUyxD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
|
|
899
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJUYWJsZSIsIlRyZWUiLCJCdXR0b24iLCJNb2RhbCIsIlBvcG92ZXIiLCJtZXNzYWdlIiwiRWRpdG9yRm9ybSIsImNscyIsInV0aWxzIiwiRG93bk91dGxpbmVkIiwiRXllT3V0bGluZWQiLCJFZGl0T3V0bGluZWQiLCJSaWdodE91dGxpbmVkIiwiUGx1c091dGxpbmVkIiwiRWxsaXBzaXNPdXRsaW5lZCIsIkRlbGV0ZU91dGxpbmVkIiwiZ2V0TGVzcyIsInJlcXVlc3QiLCJjb25maWciLCJnZXRTdG9yYWdlIiwiSGVhZGVyU2VhcmNoIiwic3R5bGVzIiwiQmFzZVBhZ2UiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX3R5cGUiLCJfc2l6ZSIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsImNoZWNrZWRUcmVlS2V5cyIsIm5hbWUiLCJ1c2VyVHlwZSIsImFjY291bnQiLCJzdGF0ZSIsInZhbHVlIiwiZGVwdElkIiwib25TZWFyY2giLCJzZWxlY3RlZCIsInJlcyIsImtleSIsImtleXMiLCJsZW5ndGgiLCJzdG9yZVByZWZpeCIsInR5cGUiLCJjb250ZW50Iiwic2l6ZSIsInNlbGVjdGVkUm93S2V5cyIsInNlbGVjdGVkUm93RGF0YXMiLCJ0cmVlU2VsZWN0ZWRLZXkiLCJleHBhbmQiLCJmb3JtVHlwZSIsInRhYmxlU2l6ZSIsInRyZWVTZWFyY2hQcmFtcyIsImNvbXBvbmVudERpZE1vdW50IiwiaW5pdERhdGEiLCJzZXRTZWFyY2hQYXJhbXMiLCJwYXJhbXMiLCJjYWxsQmFjayIsIl90aGlzJHNlYXJjaFJlZiRjdXJyZSIsInNlYXJjaFJlZiIsImN1cnJlbnQiLCJzaG93Rm9ybSIsIl90aGlzJGVkaXRvclJlZiRjdXJyZSIsImVkaXRvcmZsYWciLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJlZGl0b3JSZWYiLCJzaG93IiwiaGlkZUZvcm0iLCJfdGhpcyRlZGl0b3JSZWYkY3VycmUyIiwic2V0TG9hZGluZyIsImxvYWRpbmciLCJfdGhpcyRlZGl0b3JSZWYkY3VycmUzIiwic2V0RWRpdEZvcm1WYWx1ZXMiLCJfdGhpcyRlZGl0b3JSZWYkY3VycmU0Iiwic2V0RmllbGRzVmFsdWUiLCJnZXRFZGl0Rm9ybVZhbHVlcyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTUiLCJnZXRGaWVsZHNWYWx1ZSIsIm9uRGVsZXRlIiwiZGF0YSIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbiIsImRlbGV0ZVVybCIsImRlbGV0ZVBhcmFtcyIsImRlbGV0ZVBvc2l0aW9uIiwiX3RoaXMiLCJ0YWJsZVJlZiIsImdldFNlbGVjdGVkUm93S2V5cyIsIndhcm5pbmciLCJjb25maXJtIiwib25PayIsIkVycm9yIiwiZGVmYXVsdFBhcmFtcyIsIm1ldGhvZCIsImF1dG9QcmVmaXgiLCJpZHMiLCJqb2luIiwiaWQiLCJyZXF1ZXN0UGFyYW1zIiwiX29iamVjdFNwcmVhZCIsInRoZW4iLCJjb2RlIiwiX3RoaXMkc2VhcmNoUmVmIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjMiIsInN1Y2Nlc3MiLCJnZXRTZWFyY2hWYWx1ZXMiLCJvbkNhbGxCYWNrcyIsIm9uRGVsZXRlQ2FsbEJhY2siLCJ0YWJsZUxvYWQiLCJlcnJvciIsImNhdGNoIiwiY29uc29sZSIsImxvZyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjIiLCJyZXF1ZXN0Q29uZmlnIiwic3RvcmUiLCJsb2FkIiwib25TZWFyY2hDYWxsQmFjayIsImNhbGxiYWNrIiwidGFibGVSZWxvYWQiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4zIiwiYXV0b0xvYWQiLCJyZWxvYWQiLCJfcmVzJGRhdGEiLCJyZWNvcmRzIiwiY3VycmVudFBhZ2UiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW40IiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNSIsImdldFNlbGVjdGVkUm93RGF0YXMiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW42IiwicmVzZXRTZWxlY3RlZFJvd0tleXMiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW43IiwiX3RoaXMkc2VhcmNoUmVmMiIsImZyb21WYWx1ZSIsImdldENoaWxkcmVuRGF0YSIsInRhYmxlUHJvcHMiLCJyb3dLZXkiLCJyZXNLZXkiLCJjaGlsZE5vZGVzIiwiY2hpbGRyZW4iLCJtYXAiLCJpdGVtIiwiaW5kZXgiLCJyZW5kZXJUb29sQnV0dG9ucyIsInRvb2xidXR0b25zIiwidG9vbGJhckZsYWciLCJmbGFnIiwicmV2ZXJzZSIsInNob3dTZWFyY2giLCJfaXRlbSRwcm9wcyIsInBhZ2VUeXBlIiwib25DbGljayIsImljb24iLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJjcmVhdGVFbGVtZW50IiwiX2V4dGVuZHMiLCJjbGFzc05hbWUiLCJzdHlsZSIsIm1hcmdpbkxlZnQiLCJ0aXRsZSIsInBsYWNlbWVudCIsInRyaWdnZXIiLCJyZW5kZXJDbG91bW5CdXR0b24iLCJjb2x1bW5CdXR0b25zIiwicmVjb3JkIiwiYWN0aW9uUG9ycHMiLCJiYXNlQWN0aW9uQ29sdW1uIiwibmV3QnV0dG9ucyIsInNob3dJY29uIiwiX2l0ZW0kcHJvcHMyIiwicmVjb3JkU2hvdyIsIl9leGNsdWRlZDIiLCJldmFsIiwicHVzaCIsIl9pdGVtJHByb3BzMyIsIl9leGNsdWRlZDMiLCJfaXRlbSRwcm9wczQiLCJfZXhjbHVkZWQ0IiwidHJlZVNlbGVjdCIsInNlbGVjdGVkS2V5cyIsIm9iaiIsIl90aGlzJHNlYXJjaFJlZjMiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWMzIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNCIsImtleXdvcmQiLCJzZWFyY2hLZXkiLCJzZWFyY2hGaWVsZCIsInBhcmFudFNlbGVjdCIsInRyZWVQcm9wcyIsInNlbGVjdGVkTm9kZXMiLCJkYXRhcmVmIiwiYXR0cmlidXRlIiwic2V0U3RhdGUiLCJpc0xlYWYiLCJvblRyZWVTZWxlY3QiLCJ0cmVlU2VsZWN0Q2FsbEJhY2siLCJyZXNldFNlYXJjaCIsIl90aGlzJHNlYXJjaFJlZiRjdXJyZTIiLCJyZXNldEZpZWxkcyIsImdldFRleHQiLCJ0ZXh0IiwiX3Byb3BzJGRhdGEiLCJuZXdUZXh0IiwiaSIsImxhYmVsIiwic2V0VGFibGVEYXRhIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuOCIsInNldERhdGEiLCJzZXRUcmVlRGF0YSIsIl90aGlzJHRyZWVSZWYkY3VycmVudCIsInRyZWVSZWYiLCJyZW5kZXIiLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQiLCJfdGFibGVQcm9wcyR0b29sYmFyIiwiX3RhYmxlUHJvcHMkdG9vbGJhcjIiLCJjb2x1bW5zIiwic3VibWl0VXJsIiwiZm9ybVByb3BzIiwic2hvd0xlZnQiLCJzdWJtaXRQYXJhbXMiLCJzaG93VG9vbEJ1dHRvbiIsImJ1dHRvbnMiLCJlZGl0b3JGb3JtIiwib25TaG93Rm9ybSIsImZvcm1DaGFuZ2VWYWxpZCIsInRvb2xCdXR0b25Qb3NpdGlvbiIsImZpbHRlckNvbHVtbiIsImFjdGlvbkNvbHVtbiIsInNob3dSb3dTZWxlY3Rpb24iLCJjb2x1bW5PcmRlciIsImV4cGFuZGFibGUiLCJ0YWJsZVRpdGxlIiwib3RoZXJ0YWJsZVBhcmFtcyIsIl9leGNsdWRlZDUiLCJ0cmVlU3RvcmUiLCJ0cmVlU2VhcmNoIiwidGl0bGVBbGlhcyIsInRyZWVUaXRsZSIsIm90aGVydHJlZVBhcmFtcyIsIl9leGNsdWRlZDYiLCJ0YWJsZVBhcmFtcyIsInRhYmxlQ29sdW1uIiwic2VhcmNoRm9ybXMiLCJlZGl0b3JGb3JtcyIsImRlZmF1bHRWYWx1ZSIsImVsZW1lbnRIZWlnaHQiLCJwYWdlUmVmIiwiY2xpZW50SGVpZ2h0IiwiX3RlbXAkc2VhcmNoIiwiX3RlbXAkcHJvcHMiLCJfdGVtcCRwcm9wczIiLCJfdGVtcCIsInRlbXAiLCJ3aWR0aCIsInNlYXJjaCIsIl90ZW1wJHNlYXJjaDIiLCJfdGVtcCRzZWFyY2gzIiwiX3RlbXAkc2VhcmNoNCIsImZpZWxkIiwiZGF0YUluZGV4IiwibGFiZWxDb2wiLCJ3cmFwcGVyQ29sIiwicnVsZXMiLCJzZWFyY2hSdWxlcyIsImVkaXRvciIsInNwYW4iLCJkaWN0TmFtZSIsIl90ZW1wJHByb3BzMyIsImNvbHVtblNlYXJjaCIsImZpbHRlclByb3BzIiwidGVtcFByb3AiLCJGcmFnbWVudCIsImVsbGlwc2lzIiwic2hvd1RpdGxlIiwiY29sdW1uU2hvdyIsInNlbGZCdXR0b25zIiwiaW5kZXhPZiIsImJpbmQiLCJkYW5nZXIiLCJBcnJheSIsImlzQXJyYXkiLCJjaGlsZCIsIl9jaGlsZCRwcm9wcyIsIl9jaGlsZCRwcm9wczIiLCJfaXRlbSRwcm9wczUiLCJfaXRlbSRwcm9wczYiLCJhbGlnbiIsInRleHRBbGlnbiIsImZpeGVkIiwicmVhY29yZCIsInNlYXJjaEZsYWciLCJ0YWJsZVRvb2wiLCJ0b29sRmxhZyIsInRvb2xiYXIiLCJ0b29scyIsInRhYmxlSGVhZGVySGVpZ2h0IiwiaGVhZGVySGVpZ2h0IiwidG9vbEhlaWdodCIsInBhZGRpbmdIZWlnaHQiLCJ0YWJsZUNvbnRlbnRIZWlnaHQiLCJ0YWJsZUhlaWdodCIsInRhYmxlU3JvbGxIZWlnaHQiLCJwYWdpbmF0aW9uIiwic2Nyb2xsIiwieCIsInkiLCJyZWYiLCJwYWdlVGl0bGUiLCJkaXNwbGF5IiwiY2hlY2thYmxlIiwic2VhcmNoYWJsZSIsIm9uU2VsZWN0Iiwib25SZXNldCIsInNlYXJjaEZvcm1Qcm9wcyIsImhlaWdodCIsImV4cGFuZEljb24iLCJfcmVmIiwiZXhwYW5kZWQiLCJvbkV4cGFuZCIsImUiLCJvbkNoYW5nZSIsIm9uVG9vbENsaWNrIiwib25SZWZyZXNoIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNSIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzYiLCJvblN1bWJpdENhbGxCYWNrIiwib25TdWJtaXQiLCJvbkhpZGVGb3JtIiwib25Gb3JtQ2hhbmdlIiwiY2hhbmdlVmFsaWQiLCJvdGhlclByb3BzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcGFnZS9CYXNlUGFnZS9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgVGFibGUgZnJvbSBcIi4uLy4uL2Jhc2UvdGFibGVcIjtcclxuaW1wb3J0IFRyZWUgZnJvbSBcIi4uLy4uL2Jhc2UvdHJlZVwiO1xyXG5pbXBvcnQgRm9ybSBmcm9tIFwiLi4vLi4vYmFzZS9mb3JtXCI7XHJcbmltcG9ydCBCdXR0b24gZnJvbSBcIi4uLy4uL2Jhc2UvYnV0dG9uXCI7XHJcbmltcG9ydCBNb2RhbCBmcm9tIFwiLi4vLi4vYmFzZS9tb2RhbFwiO1xyXG5pbXBvcnQgUG9wb3ZlciBmcm9tIFwiLi4vLi4vYmFzZS9wb3BvdmVyXCI7XHJcbmltcG9ydCBtZXNzYWdlIGZyb20gXCIuLi8uLi9iYXNlL21lc3NhZ2VcIjtcclxuaW1wb3J0IEljb24gZnJvbSBcIi4uLy4uL2Jhc2UvY29tbW9uL0ljb25Gb250XCI7XHJcbmltcG9ydCB7IGljb25UeXBlIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgRWRpdG9yRm9ybSBmcm9tIFwiLi9Gb3JtXCI7XHJcbmltcG9ydCBjbHMgZnJvbSBcImNsYXNzbmFtZXNcIjtcclxuaW1wb3J0IFwiLi9pbmRleC5tb2R1bGUubGVzc1wiO1xyXG5pbXBvcnQgU3RvcmUsIHsgUGFnZVN0b3JlLCBTdG9yZVByb3BzIH0gZnJvbSBcIkBiai1uc2MvbXNuXCI7XHJcbmltcG9ydCBSb3cgZnJvbSBcIi4uLy4uL2Jhc2UvZ3JpZC9Sb3dcIjtcclxuaW1wb3J0IHsgdXRpbHMgfSBmcm9tIFwiQGJqLW5zYy9tc24vbGliL3V0aWxzXCI7XHJcbmltcG9ydCB7XHJcbiAgRG93bk91dGxpbmVkLFxyXG4gIEV5ZU91dGxpbmVkLFxyXG4gIEVkaXRPdXRsaW5lZCxcclxuICBSaWdodE91dGxpbmVkLFxyXG4gIFBsdXNPdXRsaW5lZCxcclxuICBFbGxpcHNpc091dGxpbmVkLFxyXG4gIERlbGV0ZU91dGxpbmVkLFxyXG59IGZyb20gXCJAYW50LWRlc2lnbi9pY29uc1wiO1xyXG5pbXBvcnQgeyBnZXRMZXNzLCBnZXROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmltcG9ydCByZXF1ZXN0IGZyb20gXCJuc2MtcmVxdWVzdFwiO1xyXG5pbXBvcnQgb21pdCBmcm9tIFwib21pdC5qc1wiO1xyXG5pbXBvcnQgY29uZmlnIGZyb20gXCIuLi8uLi9jb25maWdcIjtcclxuaW1wb3J0IHsgZ2V0U3RvcmFnZSwgcHgydncgfSBmcm9tIFwiQGJqLW5zYy9mdW5jdGlvbnNcIjtcclxuaW1wb3J0IHsgSUZvcm1Qcm9wcyB9IGZyb20gXCIuLi8uLi9iYXNlL2Zvcm0vRm9ybVwiO1xyXG5pbXBvcnQgSGVhZGVyU2VhcmNoIGZyb20gXCIuLi9IZWFkZXJTZWFyY2hcIjtcclxuaW1wb3J0IHsgUGFnaW5hdGlvblByb3BzIH0gZnJvbSBcImFudGRcIjtcclxuaW50ZXJmYWNlIFRhYmxlUHJvcHMge1xyXG4gIGFjdGlvbkNvbHVtbj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65pON5L2c5YiXXHJcbiAgc3RvcmU/OiBTdG9yZVByb3BzO1xyXG4gIGZpbHRlckNvbHVtbj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S66L+H5ruk5oyJ6ZKuXHJcbiAgc2hvd1Jvd1NlbGVjdGlvbj86IGJvb2xlYW47IC8v5piv5ZCm6KGo5qC85Yu+6YCJ5YiXXHJcbiAgcGFnaW5hdGlvbj86IGJvb2xlYW4gfCBQYWdpbmF0aW9uUHJvcHM7IC8v5piv5ZCm5pi+56S65YiG6aG1XHJcbiAgY29sdW1uT3JkZXI/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuihqOagvOW6j+WIl1xyXG4gIFtwcm9wc05hbWU6IHN0cmluZ106IGFueTtcclxufVxyXG5jb25zdCBzdHlsZXMgPSBudWxsO1xyXG5pbnRlcmZhY2UgVHJlZVByb3BzIHtcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgc2hvd1NlYXJjaD86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65pCc57Si5qGGXHJcbiAgc2VhcmNoS2V5Pzogc3RyaW5nOyAvL+aQnOe0onZhbHVl5a+55bqU55qEa2V5XHJcbiAgc2VhcmNoRmllbGQ/OiBzdHJpbmc7IC8v5p+l6K+i5a+55bqU55qEa2V5XHJcbiAgdGl0bGVBbGlhcz86IHN0cmluZzsgLy/moJF0aXRsZeWvueW6lOeahGtleSzpu5jorqR0aXRsZVxyXG4gIG5vZGVQb3Jwcz86IG9iamVjdDtcclxuICBwYXJhbnRTZWxlY3Q/OiBib29sZWFuO1xyXG4gIFtwcm9wc05hbWU6IHN0cmluZ106IGFueTtcclxufVxyXG5pbnRlcmZhY2UgRm9ybVByb3BzIGV4dGVuZHMgSUZvcm1Qcm9wcyB7fVxyXG5pbnRlcmZhY2UgTlNDQmFzZUJhZ2VQcm9wcyB7XHJcbiAgc2hvd1NlYXJjaD86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65aS06YOo5pCc57Si5qCPXHJcbiAgdGFibGVQcm9wcz86IFRhYmxlUHJvcHM7IC8v6KGo5qC85Y+C5pWwXHJcbiAgdHJlZVByb3BzPzogVHJlZVByb3BzOyAvL+W3puS+p+agkeWPguaVsFxyXG4gIHN1Ym1pdFBhcmFtcz86IE9iamVjdDsgLy/mt7vliqDlj4LmlbDvvIzpu5jorqRtb3Rob2Q6cG9zdO+8jCDlj4LmlbDpgJrov4dkYXRh5Lyg6YCSXHJcbiAgc3VibWl0VXJsPzogc3RyaW5nO1xyXG4gIG9uU3VibWl0PzogKHZhbHVlPzogYW55LCBsYWJlbD86IGFueSkgPT4gdm9pZDtcclxuICBjb2x1bW5zOiBBcnJheTxPYmplY3Q+O1xyXG4gIHNob3dMZWZ0PzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrlt6bkvqfnm67lvZXmoJFcclxuICBzaG93VG9vbEJ1dHRvbj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65oyJ6ZKu5qCPXHJcbiAgZWRpdG9yRm9ybT86IGJvb2xlYW47IC8v5piv5ZCm6ZyA6KaB6KGo5Y2V5Yqf6IO9ICwg5Li6ZmFsc2Ug57yW6L6R77yM5p+l55yL77yM5paw5aKe5Yqf6IO95Z2H5LiN5Y+v55SoXHJcbiAgZGVsZXRlVXJsPzogc3RyaW5nOyAvL+WIoOmZpHVybFxyXG4gIG9uRGVsZXRlPzogKHNlbGVjdGVkS2V5cz86IEFycmF5PHN0cmluZz4pID0+IHZvaWQ7IC8v5Yig6Zmk5Y+C5pWw77yM6buY6K6kbW90aG9kOnBvc3TvvIwg5Y+C5pWw6YCa6L+HaWRz5ou85o6l5Lyg6YCS57uZ5ZCO5Y+wXHJcbiAgZGVsZXRlUG9zaXRpb24/OiBcInRvb2xiYXJcIiB8IFwicm93XCI7XHJcbiAgZGVsZXRlUGFyYW1zPzogT2JqZWN0O1xyXG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xyXG4gIG9uU2VhcmNoPzogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xyXG4gIG9uUmVzZXQ/OiAoKSA9PiB2b2lkO1xyXG4gIGluaXREYXRhPzogYW55OyAvL+WIneWni+WMluWbnuiwg+WHveaVsO+8jOWcqGNvbXBvbmVudERpZE1vdW505Lit6LCD55SoXHJcbiAgYnV0dG9ucz86IEFycmF5PHN0cmluZz47IC8v5oyJ6ZKu6ZuG5ZCIICBbJ2FkZCcsJ2RlbGV0ZScsJ3NlYXJjaCcsJ2VkaXRvciddXHJcbiAgb25TaG93Rm9ybT86ICh2YWx1ZT86IGFueSwgZWRpdG9yRmxhZz86IHN0cmluZykgPT4gdm9pZDsgLy/miZPlvIDooajljZXlm57osINcclxuICBvbkhpZGVGb3JtPzogKCkgPT4gdm9pZDsgLy/miZPlvIDooajljZXlm57osINcclxuICBvbkZvcm1DaGFuZ2U/OiAoY2hhbmdlZFZhbHVlcz86IGFueSwgYWxsVmFsdWVzPzogYW55KSA9PiB2b2lkOyAvL+ihqOWNlW9uQ2hhbmdl5Zue6LCDXHJcbiAgZm9ybVR5cGU/OiBcIm1vZGFsXCIgfCBcImRyYXdlclwiO1xyXG4gIGZvcm1DaGFuZ2VWYWxpZD86IGJvb2xlYW47IC8v6KGo5Y2V5qCh6aqMXHJcbiAgY2xhc3NOYW1lPzogYW55O1xyXG4gIHRvb2xCdXR0b25Qb3NpdGlvbj86IFwicmlnaHRcIiB8IFwiYnV0dG9tXCI7XHJcbiAgcGFnZVRpdGxlPzogc3RyaW5nIHwgUmVhY3ROb2RlO1xyXG4gIGZvcm1Qcm9wcz86IEZvcm1Qcm9wcztcclxuICBhY3Rpb25Qb3Jwcz86IHsgdGV4dEFsaWduPzogc3RyaW5nOyBzaG93SWNvbj86IGJvb2xlYW47IHdpZHRoPzogbnVtYmVyIH07XHJcbiAgc2VhcmNoRm9ybVByb3BzPzogeyB3cmFwcGVyQ29sPzogYW55OyBsYWJlbENvbD86IGFueSB9O1xyXG4gIG9uVHJlZVNlbGVjdD86ICh2YWx1ZT86IGFueSwgZWRpdG9yRmxhZz86IHN0cmluZykgPT4gdm9pZDsgLy/miZPlvIDooajljZXlm57osINcclxuICBvbkNhbGxCYWNrcz86IHtcclxuICAgIHRyZWVTZWxlY3RDYWxsQmFjaz86IGFueTtcclxuICAgIG9uU2VhcmNoQ2FsbEJhY2s/OiBhbnk7XHJcbiAgICBvblN1bWJpdENhbGxCYWNrPzogYW55O1xyXG4gICAgb25EZWxldGVDYWxsQmFjaz86IGFueTtcclxuICB9O1xyXG59XHJcblxyXG5jbGFzcyBCYXNlUGFnZSBleHRlbmRzIFB1cmVDb21wb25lbnQ8TlNDQmFzZUJhZ2VQcm9wcywgYW55PiB7XHJcbiAgdGFibGVSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHRyZWVSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHNlYXJjaFJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZWRpdG9yUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBwYWdlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBkYXRlRm9ybWF0ID0ge30gYXMgYW55O1xyXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBhbnkpIHtcclxuICAgIHN1cGVyKHByb3BzKTtcclxuICAgIGxldCB7IHN0b3JlUHJlZml4IH0gPSBjb25maWcoKTtcclxuICAgIGxldCB0eXBlID0gZ2V0U3RvcmFnZShcclxuICAgICAgc3RvcmVQcmVmaXggPyBzdG9yZVByZWZpeCArIFwiLVwiICsgXCJmb3JtVHlwZVwiIDogXCJmb3JtVHlwZVwiXHJcbiAgICApO1xyXG4gICAgdHlwZSA9IHR5cGU/LmNvbnRlbnQ7XHJcbiAgICBsZXQgc2l6ZSA9IGdldFN0b3JhZ2UoXHJcbiAgICAgIHN0b3JlUHJlZml4ID8gc3RvcmVQcmVmaXggKyBcIi1cIiArIFwidGFibGVTaXplXCIgOiBcInRhYmxlU2l6ZVwiXHJcbiAgICApO1xyXG4gICAgc2l6ZSA9IHNpemU/LmNvbnRlbnQ7XHJcbiAgICB0aGlzLnN0YXRlID0ge1xyXG4gICAgICB0eXBlOiBcImFkZFwiLFxyXG4gICAgICBzZWxlY3RlZFJvd0tleXM6IFtdLFxyXG4gICAgICBzZWxlY3RlZFJvd0RhdGFzOiBbXSxcclxuICAgICAgdHJlZVNlbGVjdGVkS2V5OiBcIlwiLFxyXG4gICAgICBleHBhbmQ6IGZhbHNlLFxyXG4gICAgICBmb3JtVHlwZTogdHlwZSB8fCBcIm1vZGFsXCIsXHJcbiAgICAgIHRhYmxlU2l6ZTogc2l6ZSB8fCBcImRlZmF1bHRcIixcclxuICAgICAgdHJlZVNlYXJjaFByYW1zOiB7fSxcclxuICAgIH07XHJcbiAgfVxyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyBpbml0RGF0YSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGluaXREYXRhICYmIGluaXREYXRhKCk7XHJcbiAgfVxyXG5cclxuICBzZXRTZWFyY2hQYXJhbXMocGFyYW1zLCBjYWxsQmFjaykge1xyXG4gICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8uc2V0U2VhcmNoUGFyYW1zKHBhcmFtcyk7XHJcbiAgICBjYWxsQmFjayAmJiBjYWxsQmFjayhwYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgb25TZWxlY3QgPSAoY2hlY2tlZFRyZWVLZXlzOiBhbnkpID0+IHtcclxuICAgIGNvbnN0IHsgbmFtZSwgdXNlclR5cGUsIGFjY291bnQgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHsgbmFtZSwgdXNlclR5cGUsIGFjY291bnQsIGRlcHRJZDogY2hlY2tlZFRyZWVLZXlzWzBdIH07XHJcbiAgICBpZiAodGhpcy5wcm9wcy5vblNlYXJjaCkge1xyXG4gICAgICB0aGlzLnByb3BzLm9uU2VhcmNoKHZhbHVlKTtcclxuICAgIH1cclxuICAgIC8vIHRoaXMudGFibGVMb2FkKHZhbHVlKTtcclxuICB9O1xyXG5cclxuICAvL+aYvuekuuihqOWNlVxyXG4gIHNob3dGb3JtKHZhbHVlPzogYW55LCBlZGl0b3JmbGFnID0gXCJhZGRcIikge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uc2hvdyh2YWx1ZSwgZWRpdG9yZmxhZyk7XHJcbiAgfVxyXG5cclxuICAvL+WFs+mXreihqOWNlVxyXG4gIGhpZGVGb3JtKCkge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uaGlkZUZvcm0oKTtcclxuICB9XHJcblxyXG4gIHNldExvYWRpbmcobG9hZGluZzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uc2V0TG9hZGluZyhsb2FkaW5nKTtcclxuICB9XHJcblxyXG4gIHNldEVkaXRGb3JtVmFsdWVzKHZhbHVlKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5zZXRGaWVsZHNWYWx1ZSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBnZXRFZGl0Rm9ybVZhbHVlcygpIHtcclxuICAgIHJldHVybiB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5nZXRGaWVsZHNWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgLy/mibnph4/liKDpmaRcclxuICBvbkRlbGV0ZShkYXRhPzogYW55KSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGRlbGV0ZVVybCxcclxuICAgICAgb25EZWxldGUsXHJcbiAgICAgIGRlbGV0ZVBhcmFtcyxcclxuICAgICAgZGVsZXRlUG9zaXRpb24gPSBcInRvb2xiYXJcIixcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGNvbnN0IHNlbGVjdGVkUm93S2V5cyA9IHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dLZXlzKCk7XHJcbiAgICBpZiAoZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIpIHtcclxuICAgICAgaWYgKHNlbGVjdGVkUm93S2V5cy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgIG1lc3NhZ2Uud2FybmluZyhcIuivt+mAieaLqeimgeWIoOmZpOeahOaVsOaNru+8gVwiKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIE1vZGFsLmNvbmZpcm0oe1xyXG4gICAgICBjb250ZW50OiBcIuaYr+WQpuehruiupOWIoOmZpOaJgOmAiemhue+8n1wiLFxyXG4gICAgICAvLyBjZW50ZXJlZDp0cnVlLFxyXG4gICAgICBvbk9rOiAoKSA9PiB7XHJcbiAgICAgICAgaWYgKG9uRGVsZXRlKSB7XHJcbiAgICAgICAgICBvbkRlbGV0ZSAmJlxyXG4gICAgICAgICAgICBvbkRlbGV0ZShkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIiA/IHNlbGVjdGVkUm93S2V5cyA6IGRhdGEpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWRlbGV0ZVVybCkge1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidXJs5LiN6IO95Li656m677yBXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBkZWZhdWx0UGFyYW1zID0ge1xyXG4gICAgICAgICAgbWV0aG9kOiBcInBvc3RcIixcclxuICAgICAgICAgIGF1dG9QcmVmaXg6IHRydWUsXHJcbiAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgaWRzOiBkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIiA/IHNlbGVjdGVkUm93S2V5cy5qb2luKCkgOiBkYXRhLmlkLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGxldCByZXF1ZXN0UGFyYW1zID0ge30gYXMgYW55O1xyXG4gICAgICAgIGlmIChkZWZhdWx0UGFyYW1zKSB7XHJcbiAgICAgICAgICByZXF1ZXN0UGFyYW1zID0geyAuLi5kZWxldGVQYXJhbXMgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVxdWVzdFBhcmFtcyA9IHsgLi4uZGVmYXVsdFBhcmFtcyB9O1xyXG4gICAgICAgIHJlcXVlc3QoZGVsZXRlVXJsLCB7XHJcbiAgICAgICAgICAuLi5yZXF1ZXN0UGFyYW1zLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzOiBhbnkpIHtcclxuICAgICAgICAgICAgY29uc3QgeyBjb2RlIH0gPSByZXM7XHJcbiAgICAgICAgICAgIGlmIChjb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICBtZXNzYWdlLnN1Y2Nlc3MoXCLliKDpmaTmiJDlip/vvIFcIik7XHJcbiAgICAgICAgICAgICAgbGV0IHZhbHVlID0gX3RoaXMuc2VhcmNoUmVmPy5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKTtcclxuICAgICAgICAgICAgICBfdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25EZWxldGVDYWxsQmFjayAmJlxyXG4gICAgICAgICAgICAgICAgX3RoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uRGVsZXRlQ2FsbEJhY2soKTtcclxuICAgICAgICAgICAgICBfdGhpcy50YWJsZUxvYWQodmFsdWUpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIG1lc3NhZ2UuZXJyb3IoXCLliKDpmaTlpLHotKXvvIFcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yOiBhbnkpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlcnJvcik7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICB0YWJsZUxvYWQocGFyYW1zOiBhbnksIHJlcXVlc3RDb25maWcgPSB7fSkge1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZS5sb2FkKHtcclxuICAgICAgLi4ucmVxdWVzdENvbmZpZyxcclxuICAgICAgcGFyYW1zOiBwYXJhbXMsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLy/mn6Xor6JcclxuICBvblNlYXJjaChwYXJhbXMpIHtcclxuICAgIGNvbnN0IHsgb25TZWFyY2gsIG9uQ2FsbEJhY2tzIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKG9uU2VhcmNoKSB7XHJcbiAgICAgIG9uU2VhcmNoKHsgLi4ucGFyYW1zLCAuLi50aGlzLnN0YXRlLnRyZWVTZWFyY2hQcmFtcyB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy50YWJsZUxvYWQoeyAuLi5wYXJhbXMsIC4uLnRoaXMuc3RhdGUudHJlZVNlYXJjaFByYW1zIH0pO1xyXG4gICAgb25DYWxsQmFja3M/Lm9uU2VhcmNoQ2FsbEJhY2sgJiZcclxuICAgICAgdXRpbHMuY2FsbGJhY2sob25DYWxsQmFja3M/Lm9uU2VhcmNoQ2FsbEJhY2ssIHRoaXMsIFtwYXJhbXNdKTtcclxuICB9XHJcbiAgLy/ooajmoLzph43mlrDliqDovb1cclxuICB0YWJsZVJlbG9hZChwYXJhbXMgPSB7fSwgYXV0b0xvYWQgPSB0cnVlKSB7XHJcbiAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlPy5yZWxvYWQoe1xyXG4gICAgICBjYWxsYmFjazogKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGF1dG9Mb2FkICYmXHJcbiAgICAgICAgICByZXM/LmRhdGE/LnJlY29yZHM/Lmxlbmd0aCA9PSAwICYmXHJcbiAgICAgICAgICB0aGlzLnN0YXRlLmN1cnJlbnRQYWdlICE9PSAxXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlPy5yZWxvYWQoe1xyXG4gICAgICAgICAgICBwYXJhbXM6IHsgY3VycmVudDogMSwgLi4ucGFyYW1zIH0sXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dLZXlzKCk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93RGF0YXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5nZXRTZWxlY3RlZFJvd0RhdGFzKCk7XHJcbiAgfVxyXG4gIHJlc2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8ucmVzZXRTZWxlY3RlZFJvd0tleXMoKTtcclxuICB9XHJcblxyXG4gIGdldFNlYXJjaFZhbHVlcygpIHtcclxuICAgIGNvbnN0IGZyb21WYWx1ZSA9IHRoaXMuc2VhcmNoUmVmPy5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKTtcclxuICAgIHJldHVybiB7IC4uLmZyb21WYWx1ZSwgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfTtcclxuICB9XHJcblxyXG4gIGdldENoaWxkcmVuRGF0YShkYXRhLCBrZXlzID0gW10pIHtcclxuICAgIGNvbnN0IHsgdGFibGVQcm9wcyB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgcm93S2V5ID0gXCJpZFwiIH0gPSB0YWJsZVByb3BzO1xyXG4gICAgbGV0IHJlc0tleSA9IFtdO1xyXG4gICAgaWYgKGRhdGEuY2hpbGROb2Rlcykge1xyXG4gICAgICBjb25zdCBjaGlsZHJlbiA9IGRhdGEuY2hpbGROb2RlcztcclxuICAgICAgY2hpbGRyZW4ubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGlmIChpdGVtLmNoaWxkTm9kZXMpIHtcclxuICAgICAgICAgIHRoaXMuZ2V0Q2hpbGRyZW5EYXRhKGl0ZW0uY2hpbGROb2Rlcywga2V5cyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlc0tleSA9IFsuLi5rZXlzLCBpdGVtW3Jvd0tleV1dO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXNLZXkgPSBbLi4ua2V5cywgZGF0YVtyb3dLZXldXTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXNLZXk7XHJcbiAgfVxyXG5cclxuICByZW5kZXJUb29sQnV0dG9ucyh0b29sYnV0dG9uczogYW55LCB0b29sYmFyRmxhZykge1xyXG4gICAgY29uc3QgZmxhZyA9IHRvb2xidXR0b25zLmxlbmd0aCA+IDU7XHJcbiAgICB0b29sYnV0dG9ucyA9IFsuLi50b29sYnV0dG9uc10ucmV2ZXJzZSgpO1xyXG4gICAgY29uc3QgeyBzaG93U2VhcmNoID0gdHJ1ZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0b29sYnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgaWNvbiwgc2hvdywgLi4ucGFyYW1zIH0gPSBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoaW5kZXggPiAzKSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKSxcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtY29udGVudC1pdGVtXCIpXHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2soKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+e2ljb259PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10b29sLWJ1dHRvbnNcIikpfVxyXG4gICAgICAgIHN0eWxlPXt7IG1hcmdpbkxlZnQ6IDAgfX1cclxuICAgICAgPlxyXG4gICAgICAgIHt0b29sYnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICAgICAgaWYgKGluZGV4IDwgNCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiA8ZGl2IGtleT17aW5kZXh9PntpdGVtfTwvZGl2PjtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChpbmRleCA9PSA0KSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIDxQb3BvdmVyXHJcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ9e2NvbnRlbnR9XHJcbiAgICAgICAgICAgICAgICAgIHRpdGxlPXtudWxsfVxyXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgICAgICB0cmlnZ2VyPXtbXCJjbGlja1wiXX1cclxuICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAgICAgLy8gb3ZlcmxheUNsYXNzTmFtZT17c3R5bGVzWydwb3AtYm94J119XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdHlwZT1cInByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICDmm7TlpJogPERvd25PdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gPGRpdiBrZXk9e2luZGV4fT57aXRlbX08L2Rpdj47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSl9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuICB9XHJcbiAgcmVuZGVyQ2xvdW1uQnV0dG9uKGNvbHVtbkJ1dHRvbnM6IGFueSwgcmVjb3JkOiBhbnkpIHtcclxuICAgIGNvbnN0IHsgYWN0aW9uUG9ycHMgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGJhc2VBY3Rpb25Db2x1bW4gfSA9IGNvbmZpZygpO1xyXG4gICAgY29uc3QgbmV3QnV0dG9ucyA9IFtdO1xyXG4gICAgbGV0IHNob3dJY29uID0gdHJ1ZTtcclxuICAgIGlmIChhY3Rpb25Qb3Jwcz8uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgZWxzZSBpZiAoYmFzZUFjdGlvbkNvbHVtbi5zaG93SWNvbiA9PT0gZmFsc2UpIHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBjb2x1bW5CdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCBpY29uLCByZWNvcmRTaG93LCAuLi5wYXJhbXMgfSA9XHJcbiAgICAgICAgaXRlbS5wcm9wcztcclxuICAgICAgaWYgKHJlY29yZFNob3cpIHtcclxuICAgICAgICBpZiAodHlwZW9mIHJlY29yZFNob3cgPT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgICAgaWYgKGV2YWwocmVjb3JkU2hvdykpIHtcclxuICAgICAgICAgICAgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJlY29yZFNob3cgPT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICBjb25zdCBzaG93ID0gcmVjb3JkU2hvdyhyZWNvcmQpO1xyXG4gICAgICAgICAgc2hvdyAmJiBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBjb25zdCBmbGFnID0gbmV3QnV0dG9ucy5sZW5ndGggPiAzO1xyXG5cclxuICAgIGNvbnN0IGNvbnRlbnQgPSBuZXdCdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCByZWNvcmRTaG93LCBpY29uLCBzaG93LCAuLi5wYXJhbXMgfSA9XHJcbiAgICAgICAgaXRlbS5wcm9wcztcclxuICAgICAgaWYgKGluZGV4ID4gMikge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnQtaXRlbVwiKVxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJlY29yZCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWljb25cIil9PlxyXG4gICAgICAgICAgICAgICAge2ljb259XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBuZXdCdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCByZWNvcmRTaG93LCBpY29uLCAuLi5wYXJhbXMgfSA9XHJcbiAgICAgICAgaXRlbS5wcm9wcztcclxuICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICBpZiAoaW5kZXggPCAzKSB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKSwge1xyXG4gICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3ItZmlyc3RcIildOiBpbmRleCA9PT0gMCxcclxuICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyZWNvcmQpO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICAgIHtpY29ufVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbmRleCA9PSAzKSB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8UG9wb3ZlclxyXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgdGl0bGU9e251bGx9XHJcbiAgICAgICAgICAgICAgY29udGVudD17Y29udGVudH1cclxuICAgICAgICAgICAgICB0cmlnZ2VyPXtbXCJjbGlja1wiXX1cclxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgIC8vIG92ZXJsYXlDbGFzc05hbWU9e3N0eWxlc1sncG9wJ119XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKX0+XHJcbiAgICAgICAgICAgICAgICA8RWxsaXBzaXNPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKSwge1xyXG4gICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yLWZpcnN0XCIpXTogaW5kZXggPT09IDAsXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJlY29yZCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWljb25cIil9PlxyXG4gICAgICAgICAgICAgICAge2ljb259XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuICAvL+agkeeCueWHu+S6i+S7tlxyXG4gIHRyZWVTZWxlY3Qoc2VsZWN0ZWRLZXlzOiBhbnksIG9iajogYW55KSB7XHJcbiAgICBsZXQga2V5d29yZCA9IFwiXCI7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHNlYXJjaEtleSA9IFwia2V5XCIsXHJcbiAgICAgIHNlYXJjaEZpZWxkID0gXCJcIixcclxuICAgICAgcGFyYW50U2VsZWN0ID0gdHJ1ZSxcclxuICAgIH0gPSB0aGlzLnByb3BzLnRyZWVQcm9wcztcclxuICAgIGNvbnN0IHsgdHJlZVNlbGVjdGVkS2V5IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgeyBzZWxlY3RlZCwgc2VsZWN0ZWROb2RlcyB9ID0gb2JqO1xyXG5cclxuICAgIGlmIChzZWxlY3RlZCkge1xyXG4gICAgICBrZXl3b3JkID0gc2VsZWN0ZWROb2Rlc1swXS5kYXRhcmVmLmF0dHJpYnV0ZVtzZWFyY2hLZXldO1xyXG4gICAgICBpZiAocGFyYW50U2VsZWN0KSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IHNlbGVjdGVkS2V5c1swXSxcclxuICAgICAgICAgIHRyZWVTZWFyY2hQcmFtczogeyBbc2VhcmNoRmllbGRdOiBrZXl3b3JkIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHNlbGVjdGVkTm9kZXNbMF0uaXNMZWFmIHx8ICFzZWxlY3RlZE5vZGVzWzBdLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICBpZiAoc2VsZWN0ZWRLZXlzWzBdICE9PSB0cmVlU2VsZWN0ZWRLZXkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgdHJlZVNlbGVjdGVkS2V5OiBzZWxlY3RlZEtleXNbMF0sXHJcbiAgICAgICAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7IFtzZWFyY2hGaWVsZF06IGtleXdvcmQgfSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IGtleXdvcmQsXHJcbiAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7fSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5wcm9wcy5vblRyZWVTZWxlY3QpIHtcclxuICAgICAgdGhpcy5wcm9wcy5vblRyZWVTZWxlY3Qoc2VsZWN0ZWRLZXlzLCBvYmopO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBmcm9tVmFsdWUgPSB0aGlzLnNlYXJjaFJlZj8uY3VycmVudD8uZ2V0U2VhcmNoVmFsdWVzKCkgfHwge307XHJcbiAgICBzZWFyY2hGaWVsZCAmJiB0aGlzLnRhYmxlTG9hZCh7IC4uLmZyb21WYWx1ZSwgW3NlYXJjaEZpZWxkXToga2V5d29yZCB9KTtcclxuICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/LnRyZWVTZWxlY3RDYWxsQmFjayAmJlxyXG4gICAgICB1dGlscy5jYWxsYmFjayh0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy50cmVlU2VsZWN0Q2FsbEJhY2ssIHRoaXMsIFtcclxuICAgICAgICBzZWxlY3RlZEtleXMsXHJcbiAgICAgICAgb2JqLFxyXG4gICAgICBdKTtcclxuICB9XHJcbiAgcmVzZXRTZWFyY2goKSB7XHJcbiAgICB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5yZXNldEZpZWxkcygpO1xyXG4gIH1cclxuICBnZXRUZXh0KHByb3BzLCB0ZXh0KSB7XHJcbiAgICBsZXQgbmV3VGV4dCA9IHRleHQ7XHJcbiAgICBpZiAocHJvcHM/LmRhdGEgJiYgcHJvcHM/LmRhdGE/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IGRhdGEgPSBwcm9wcy5kYXRhO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGE/Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGRhdGFbaV0udmFsdWUgPT0gdGV4dCkge1xyXG4gICAgICAgICAgbmV3VGV4dCA9IGRhdGFbaV0ubGFiZWw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3VGV4dDtcclxuICB9XHJcbiAgc2V0VGFibGVEYXRhKGRhdGEpIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmU/LnNldERhdGEoZGF0YSk7XHJcbiAgfVxyXG4gIHNldFRyZWVEYXRhKGRhdGEpIHtcclxuICAgIHRoaXMudHJlZVJlZi5jdXJyZW50Py5zdG9yZT8uc2V0RGF0YShkYXRhKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRLZXkgPSAoc2VsZWN0ZWQpID0+IHtcclxuICAgIGxldCByZXMgPSBbXTtcclxuICAgIGZvciAobGV0IGtleSBpbiBzZWxlY3RlZCkge1xyXG4gICAgICBjb25zdCBrZXlzID0gc2VsZWN0ZWRba2V5XTtcclxuICAgICAgaWYgKGtleXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHJlcyA9IFsuLi5yZXMsIC4uLmtleXNdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzO1xyXG4gIH07XHJcblxyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgY29sdW1ucyA9IFtdLFxyXG4gICAgICBzaG93U2VhcmNoID0gdHJ1ZSxcclxuICAgICAgY2hpbGRyZW4sXHJcbiAgICAgIHN1Ym1pdFVybCA9IFwiXCIsXHJcbiAgICAgIHRhYmxlUHJvcHMgPSB7fSxcclxuICAgICAgdHJlZVByb3BzID0ge30sXHJcbiAgICAgIGZvcm1Qcm9wcyA9IHt9LFxyXG4gICAgICBzaG93TGVmdCA9IGZhbHNlLFxyXG4gICAgICBzdWJtaXRQYXJhbXMgPSB7fSxcclxuICAgICAgc2hvd1Rvb2xCdXR0b24gPSB0cnVlLFxyXG4gICAgICBidXR0b25zID0gW10sXHJcbiAgICAgIGVkaXRvckZvcm0gPSB0cnVlLFxyXG4gICAgICBvblNob3dGb3JtLFxyXG4gICAgICBmb3JtQ2hhbmdlVmFsaWQgPSB0cnVlLFxyXG4gICAgICBjbGFzc05hbWUsXHJcbiAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbiA9IFwiYnV0dG9tXCIsXHJcbiAgICAgIGFjdGlvblBvcnBzLFxyXG4gICAgICBkZWxldGVQb3NpdGlvbiA9IFwidG9vbGJhclwiLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN0b3JlLFxyXG4gICAgICBmaWx0ZXJDb2x1bW4gPSB0cnVlLFxyXG4gICAgICBhY3Rpb25Db2x1bW4gPSB0cnVlLFxyXG4gICAgICBzaG93Um93U2VsZWN0aW9uID0gdHJ1ZSxcclxuICAgICAgY29sdW1uT3JkZXIgPSB0cnVlLFxyXG4gICAgICBleHBhbmRhYmxlID0ge30sXHJcbiAgICAgIHBhcmFudFNlbGVjdCA9IHRydWUsXHJcbiAgICAgIHRpdGxlOiB0YWJsZVRpdGxlLFxyXG4gICAgICAuLi5vdGhlcnRhYmxlUGFyYW1zXHJcbiAgICB9ID0gdGFibGVQcm9wcztcclxuXHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN0b3JlOiB0cmVlU3RvcmUgPSB7fSxcclxuICAgICAgc2hvd1NlYXJjaDogdHJlZVNlYXJjaCA9IHRydWUsXHJcbiAgICAgIHRpdGxlQWxpYXMgPSBcInRpdGxlXCIsXHJcbiAgICAgIHRpdGxlOiB0cmVlVGl0bGUsXHJcbiAgICAgIC4uLm90aGVydHJlZVBhcmFtc1xyXG4gICAgfSA9IHRyZWVQcm9wcztcclxuICAgIGxldCB0YWJsZVBhcmFtcyA9IHsgZmlsdGVyQ29sdW1uLCBzdG9yZSwgLi4ub3RoZXJ0YWJsZVBhcmFtcyB9IGFzIGFueTtcclxuICAgIGxldCB0YWJsZUNvbHVtbjogYW55W10gPSBbXTtcclxuICAgIGNvbnN0IHNlYXJjaEZvcm1zOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IGVkaXRvckZvcm1zOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IGRlZmF1bHRWYWx1ZTogYW55ID0ge307XHJcbiAgICBjb25zdCBjb2x1bW5CdXR0b25zOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IGVsZW1lbnRIZWlnaHQgPSB0aGlzLnBhZ2VSZWYuY3VycmVudD8uY2xpZW50SGVpZ2h0O1xyXG4gICAgY29sdW1ucy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBsZXQgdGVtcCA9IHsgd2lkdGg6IDEwMCwgLi4uaXRlbSB9O1xyXG4gICAgICBpZiAodGVtcC5zZWFyY2ggPT09IHRydWUgfHwgdGVtcC5zZWFyY2g/LnNob3cgPT09IHRydWUpIHtcclxuICAgICAgICBzZWFyY2hGb3Jtcy5wdXNoKHtcclxuICAgICAgICAgIG5hbWU6IHRlbXAuZmllbGQgfHwgdGVtcC5kYXRhSW5kZXgsXHJcbiAgICAgICAgICBsYWJlbDogdGVtcC5zZWFyY2g/LmxhYmVsIHx8IHRlbXAudGl0bGUsXHJcbiAgICAgICAgICB0eXBlOiB0ZW1wLnR5cGUsXHJcbiAgICAgICAgICBwcm9wczogdGVtcC5wcm9wcyxcclxuICAgICAgICAgIGxhYmVsQ29sOiB0ZW1wLnNlYXJjaD8ubGFiZWxDb2wsXHJcbiAgICAgICAgICB3cmFwcGVyQ29sOiB0ZW1wLnNlYXJjaD8ud3JhcHBlckNvbCxcclxuICAgICAgICAgIHJ1bGVzOiB0ZW1wLnNlYXJjaFJ1bGVzID8gdGVtcC5zZWFyY2hSdWxlcyA6IFtdLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBkZWxldGUgdGVtcC5zZWFyY2g7XHJcbiAgICAgIHRlbXAuZWRpdG9yICE9PSBmYWxzZSAmJlxyXG4gICAgICAgIGVkaXRvckZvcm1zLnB1c2goe1xyXG4gICAgICAgICAgbmFtZTogdGVtcC5maWVsZCB8fCB0ZW1wLmRhdGFJbmRleCxcclxuICAgICAgICAgIGxhYmVsOiB0ZW1wLnRpdGxlLFxyXG4gICAgICAgICAgcnVsZXM6IHRlbXAucnVsZXMgPyB0ZW1wLnJ1bGVzIDogW10sXHJcbiAgICAgICAgICB0eXBlOiB0ZW1wLnR5cGUsXHJcbiAgICAgICAgICBzcGFuOiB0ZW1wLnNwYW4sXHJcbiAgICAgICAgICBkaWN0TmFtZTogdGVtcC5kaWN0TmFtZSxcclxuICAgICAgICAgIHByb3BzOiB7IC4uLnRlbXAucHJvcHMgfSxcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIGlmIChcclxuICAgICAgICB0ZW1wLnByb3BzPy5kZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCAmJlxyXG4gICAgICAgIHRlbXAucHJvcHM/LmRlZmF1bHRWYWx1ZSAhPT0gbnVsbFxyXG4gICAgICApIHtcclxuICAgICAgICBjb25zdCBuYW1lID0gdGVtcC5maWVsZCB8fCB0ZW1wLmRhdGFJbmRleDtcclxuICAgICAgICBkZWZhdWx0VmFsdWVbbmFtZV0gPSB0ZW1wLnByb3BzPy5kZWZhdWx0VmFsdWU7XHJcbiAgICAgIH1cclxuICAgICAgZGVsZXRlIHRlbXAucnVsZXM7XHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnNwYW47XHJcbiAgICAgIGlmICh0ZW1wLmNvbHVtblNlYXJjaCkge1xyXG4gICAgICAgIHRlbXAuZmlsdGVyUHJvcHMgPSB7XHJcbiAgICAgICAgICB0eXBlOiB0ZW1wLnR5cGUsXHJcbiAgICAgICAgICBwcm9wczogdGVtcC5wcm9wcyxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnR5cGU7XHJcbiAgICAgIGxldCB0ZW1wUHJvcCA9IHsgLi4udGVtcC5wcm9wcyB9O1xyXG4gICAgICBpZiAodGVtcC5zdHlsZSkge1xyXG4gICAgICAgIHRlbXAgPSB7XHJcbiAgICAgICAgICByZW5kZXI6ICh0ZXh0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAge3RleHQgIT09IFwiXCIgJiYgdGV4dCAhPT0gbnVsbCAmJiB0ZXh0ICE9PSB1bmRlZmluZWQgJiYgKFxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbC1iYWNrXCIpfT5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb2wtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5nZXRUZXh0KHRlbXBQcm9wLCB0ZXh0KX1cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICA8Lz5cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAuLi50ZW1wLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0gZWxzZSBpZiAoIXRlbXAuZWxsaXBzaXMpIHtcclxuICAgICAgICB0ZW1wID0ge1xyXG4gICAgICAgICAgZWxsaXBzaXM6IHsgc2hvd1RpdGxlOiBmYWxzZSB9LFxyXG4gICAgICAgICAgcmVuZGVyOiAodGV4dDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFRleHQodGVtcFByb3AsIHRleHQpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLnRlbXAsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0ZW1wID0ge1xyXG4gICAgICAgICAgZWxsaXBzaXM6IHRydWUsXHJcbiAgICAgICAgICAuLi50ZW1wLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgICAgZGVsZXRlIHRlbXAucHJvcHM7XHJcblxyXG4gICAgICAvLyB0ZW1wLmVsbGlwc2lzID0gdHJ1ZTtcclxuICAgICAgaWYgKHRlbXA/LmNvbHVtblNob3cgIT09IGZhbHNlKSB0YWJsZUNvbHVtbi5wdXNoKHRlbXApO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBzZWxmQnV0dG9uczogYW55ID0gW107XHJcbiAgICBjb25zdCB7IGJhc2VBY3Rpb25Db2x1bW4gfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHNob3dJY29uID0gdHJ1ZTtcclxuICAgIGlmIChhY3Rpb25Qb3Jwcz8uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgZWxzZSBpZiAoYmFzZUFjdGlvbkNvbHVtbi5zaG93SWNvbiA9PT0gZmFsc2UpIHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBpZiAoZWRpdG9yRm9ybSA9PSB0cnVlKSB7XHJcbiAgICAgIGlmIChidXR0b25zLmluZGV4T2YoXCJzZWFyY2hcIikgPiAtMSkge1xyXG4gICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgb25DbGljaz17KHJlY29yZDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKG9uU2hvd0Zvcm0pIHtcclxuICAgICAgICAgICAgICAgIG9uU2hvd0Zvcm0ocmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsIFwiZGV0YWlsXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnNob3dGb3JtKHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLCBcImRldGFpbFwiKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgaWNvbj17PEV5ZU91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICDmn6XnnItcclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGJ1dHRvbnMuaW5kZXhPZihcImVkaXRvclwiKSA+IC0xKSB7XHJcbiAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICBvbkNsaWNrPXsocmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAob25TaG93Rm9ybSkge1xyXG4gICAgICAgICAgICAgICAgb25TaG93Rm9ybShyZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCwgXCJlZGl0b3JcIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0Zvcm0ocmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsIFwiZWRpdG9yXCIpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICBpY29uPXs8RWRpdE91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICDnvJbovpFcclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChidXR0b25zLmluZGV4T2YoXCJhZGRcIikgPiAtMSkge1xyXG4gICAgICBzZWxmQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgIDxCdXR0b25cclxuICAgICAgICAgIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB7IG9uU2hvd0Zvcm0gfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgICAgICAgIGlmIChvblNob3dGb3JtKSB7XHJcbiAgICAgICAgICAgICAgb25TaG93Rm9ybSgpO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnNob3dGb3JtKCk7XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgICAgaWNvbj17PFBsdXNPdXRsaW5lZCAvPn1cclxuICAgICAgICA+XHJcbiAgICAgICAgICDmt7vliqBcclxuICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmIChidXR0b25zLmluZGV4T2YoXCJkZWxldGVcIikgPiAtMSkge1xyXG4gICAgICBpZiAoZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIpIHtcclxuICAgICAgICBzZWxmQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAvLyB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgICAgb25DbGljaz17dGhpcy5vbkRlbGV0ZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICBpY29uPXs8RGVsZXRlT3V0bGluZWQgLz59XHJcbiAgICAgICAgICAgIGRhbmdlclxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICDliKDpmaRcclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZGVsZXRlUG9zaXRpb24gPT0gXCJyb3dcIikge1xyXG4gICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgLy8gdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eyhyZWNvcmQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMub25EZWxldGUocmVjb3JkKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgaWNvbj17PERlbGV0ZU91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICBkYW5nZXJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg5Yig6ZmkXHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcclxuICAgICAgY2hpbGRyZW4ubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtKSkge1xyXG4gICAgICAgICAgaXRlbS5tYXAoKGNoaWxkKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjaGlsZD8ucHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiKSB7XHJcbiAgICAgICAgICAgICAgc2VsZkJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNsb3VtbkJ1dHRvblwiKSB7XHJcbiAgICAgICAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKGNoaWxkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChpdGVtPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIpIHtcclxuICAgICAgICAgICAgc2VsZkJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbT8ucHJvcHM/LnBhZ2VUeXBlID09IFwiY2xvdW1uQnV0dG9uXCIpIHtcclxuICAgICAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgIGNvbnN0IHsgcHJvcHMgfTogYW55ID0gY2hpbGRyZW47XHJcbiAgICAgIGlmIChwcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIpIHtcclxuICAgICAgICBzZWxmQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgICAgfSBlbHNlIGlmIChwcm9wcz8ucGFnZVR5cGUgPT0gXCJjbG91bW5CdXR0b25cIikge1xyXG4gICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChjaGlsZHJlbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGFjdGlvbkNvbHVtbiAmJlxyXG4gICAgICB0YWJsZUNvbHVtbi5wdXNoKHtcclxuICAgICAgICB0aXRsZTogXCLmk43kvZxcIixcclxuICAgICAgICBkYXRhSW5kZXg6IFwiYWN0aW9uXCIsXHJcbiAgICAgICAgYWxpZ246IGFjdGlvblBvcnBzPy50ZXh0QWxpZ25cclxuICAgICAgICAgID8gYWN0aW9uUG9ycHM/LnRleHRBbGlnblxyXG4gICAgICAgICAgOiBiYXNlQWN0aW9uQ29sdW1uLnRleHRBbGlnblxyXG4gICAgICAgICAgPyBiYXNlQWN0aW9uQ29sdW1uLnRleHRBbGlnblxyXG4gICAgICAgICAgOiBcImxlZnRcIixcclxuICAgICAgICB3aWR0aDogYWN0aW9uUG9ycHM/LndpZHRoXHJcbiAgICAgICAgICA/IGFjdGlvblBvcnBzPy53aWR0aFxyXG4gICAgICAgICAgOiBiYXNlQWN0aW9uQ29sdW1uLndpZHRoXHJcbiAgICAgICAgICA/IGJhc2VBY3Rpb25Db2x1bW4ud2lkdGhcclxuICAgICAgICAgIDogMjAwLFxyXG4gICAgICAgIGZpeGVkOiBcInJpZ2h0XCIsXHJcbiAgICAgICAgcmVuZGVyOiAodGV4dDogYW55LCByZWNvcmQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1hY3Rpb25cIil9PlxyXG4gICAgICAgICAgICAgIHt0aGlzLnJlbmRlckNsb3VtbkJ1dHRvbihjb2x1bW5CdXR0b25zLCByZWNvcmQpfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcblxyXG4gICAgaWYgKGNvbHVtbk9yZGVyKVxyXG4gICAgICB0YWJsZUNvbHVtbiA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0aXRsZTogXCLluo/lj7dcIixcclxuICAgICAgICAgIHdpZHRoOiA4MCxcclxuICAgICAgICAgIGFsaWduOiBcImNlbnRlclwiLFxyXG4gICAgICAgICAgcmVuZGVyOiAodGV4dCwgcmVhY29yZCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIDw+e2luZGV4ICsgMX08Lz47XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4udGFibGVDb2x1bW4sXHJcbiAgICAgIF07XHJcbiAgICBsZXQgc2VhcmNoRmxhZyA9IHNob3dTZWFyY2ggJiYgc2VhcmNoRm9ybXMubGVuZ3RoID4gMDtcclxuICAgIGxldCB7IHRhYmxlVG9vbCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgdG9vbEZsYWcgPVxyXG4gICAgICBzaG93VG9vbEJ1dHRvbiAmJlxyXG4gICAgICBzZWxmQnV0dG9ucy5sZW5ndGggPiAwICYmXHJcbiAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbiA9PSBcImJ1dHRvbVwiO1xyXG4gICAgbGV0IHRvb2xiYXJGbGFnID0gIShcclxuICAgICAgdGFibGVQcm9wcy50b29sYmFyID09IGZhbHNlIHx8XHJcbiAgICAgIHRhYmxlUHJvcHMudG9vbGJhcj8uc2hvdyA9PSBmYWxzZSB8fFxyXG4gICAgICB0YWJsZVByb3BzLnRvb2xiYXI/LnRvb2xzPy5sZW5ndGggPT0gMCB8fFxyXG4gICAgICB0YWJsZVRvb2w/LnNob3cgPT0gZmFsc2VcclxuICAgICk7XHJcblxyXG4gICAgbGV0IHRhYmxlSGVhZGVySGVpZ2h0ID0gNTU7XHJcblxyXG4gICAgbGV0IGhlYWRlckhlaWdodCA9IHNob3dTZWFyY2ggJiYgc2VhcmNoRm9ybXMubGVuZ3RoID4gMCA/IDEwNCA6IDA7XHJcbiAgICBsZXQgdG9vbEhlaWdodCA9IHRhYmxlVGl0bGUgfHwgdG9vbEZsYWcgPyA0OCA6IDA7XHJcbiAgICBsZXQgcGFkZGluZ0hlaWdodCA9IDI1O1xyXG4gICAgbGV0IHRhYmxlQ29udGVudEhlaWdodCA9XHJcbiAgICAgIGVsZW1lbnRIZWlnaHQgLSBoZWFkZXJIZWlnaHQgLSB0b29sSGVpZ2h0IC0gcGFkZGluZ0hlaWdodDtcclxuXHJcbiAgICBsZXQgdGFibGVIZWlnaHQgPSB0YWJsZUNvbnRlbnRIZWlnaHQgLSAzMiAtIDMyO1xyXG4gICAgbGV0IHRhYmxlU3JvbGxIZWlnaHQgPSB0YWJsZUNvbnRlbnRIZWlnaHQgLSB0YWJsZUhlYWRlckhlaWdodCAtIDMyIC0gMzI7XHJcbiAgICBpZiAodGFibGVQcm9wcy5wYWdpbmF0aW9uICE9PSBmYWxzZSkge1xyXG4gICAgICBjb25zdCBzY3JvbGwgPSB0YWJsZVBhcmFtcy5zY3JvbGw7XHJcbiAgICAgIHRhYmxlUGFyYW1zID0ge1xyXG4gICAgICAgIC4uLnRhYmxlUGFyYW1zLFxyXG4gICAgICAgIHNjcm9sbDogeyB4OiBcIm1heC1jb250ZW50XCIsIHk6IHRhYmxlU3JvbGxIZWlnaHQsIC4uLnNjcm9sbCB9LFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZVwiKSwgY2xhc3NOYW1lKX1cclxuICAgICAgICByZWY9e3RoaXMucGFnZVJlZn1cclxuICAgICAgPlxyXG4gICAgICAgIHt0aGlzLnByb3BzLnBhZ2VUaXRsZSAmJiAoXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10aXRsZVwiKSl9PlxyXG4gICAgICAgICAgICB7dGhpcy5wcm9wcy5wYWdlVGl0bGV9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1wYW5lXCIpKX1cclxuICAgICAgICAgIHN0eWxlPXt7IGRpc3BsYXk6IFwiZmxleFwiIH19XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3Nob3dMZWZ0ICYmIChcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1sZWZ0XCIpfT5cclxuICAgICAgICAgICAgICB7dHJlZVRpdGxlICYmIChcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJ0cmVlLXRpdGxlXCIpfT57dHJlZVRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwidHJlZS1jb250ZW50XCIpLCB7XHJcbiAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJ0cmVlLWNvbnRlbnRcIildOiAhdHJlZVRpdGxlLFxyXG4gICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPFRyZWVcclxuICAgICAgICAgICAgICAgICAgc3RvcmU9e3sgLi4udHJlZVN0b3JlIH19XHJcbiAgICAgICAgICAgICAgICAgIHNob3dJY29uPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgICAgY2hlY2thYmxlPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgICAgc2VhcmNoYWJsZT17dHJlZVNlYXJjaH1cclxuICAgICAgICAgICAgICAgICAgb25TZWxlY3Q9e3RoaXMudHJlZVNlbGVjdC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZEtleXM9e1t0aGlzLnN0YXRlLnRyZWVTZWxlY3RlZEtleV19XHJcbiAgICAgICAgICAgICAgICAgIHRpdGxlQWxpYXM9e3RpdGxlQWxpYXN9XHJcbiAgICAgICAgICAgICAgICAgIHsuLi5vdGhlcnRyZWVQYXJhbXN9XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1yaWdodFwiKSwge1xyXG4gICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2Utbm8tbGVmdC1yaWdodFwiKV06ICFzaG93TGVmdCxcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtzaG93U2VhcmNoICYmIHNlYXJjaEZvcm1zLmxlbmd0aCA+IDAgJiYgKFxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaGVhZGVyc2VhcmNoXCIpfT5cclxuICAgICAgICAgICAgICAgIDxIZWFkZXJTZWFyY2hcclxuICAgICAgICAgICAgICAgICAgc2VhcmNoRm9ybXM9e3NlYXJjaEZvcm1zfVxyXG4gICAgICAgICAgICAgICAgICB0b29sQnV0dG9uUG9zaXRpb249e3Rvb2xCdXR0b25Qb3NpdGlvbn1cclxuICAgICAgICAgICAgICAgICAgb25TZWFyY2g9e3RoaXMub25TZWFyY2guYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICAgICAgb25SZXNldD17dGhpcy5wcm9wcy5vblJlc2V0fVxyXG4gICAgICAgICAgICAgICAgICByZWY9e3RoaXMuc2VhcmNoUmVmfVxyXG4gICAgICAgICAgICAgICAgICBzZWFyY2hGb3JtUHJvcHM9e3RoaXMucHJvcHMuc2VhcmNoRm9ybVByb3BzfVxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb250ZW50XCIpLCB7XHJcbiAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnQtZ2FwXCIpXTogIXNlYXJjaEZsYWcsXHJcbiAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7KHRhYmxlVGl0bGUgfHwgdG9vbEZsYWcpICYmIChcclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlLXRpdGxlXCIpLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10aXRsZS13aWR0aFwiKV06ICF0b29sYmFyRmxhZyxcclxuICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+e3RhYmxlVGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIHt0b29sRmxhZyAmJiB0aGlzLnJlbmRlclRvb2xCdXR0b25zKHNlbGZCdXR0b25zLCB0b29sYmFyRmxhZyl9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlXCIpLFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10YWJsZS10b3BcIildOiAhdG9vbGJhckZsYWcsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlLXRvcDJcIildOlxyXG4gICAgICAgICAgICAgICAgICAgICAgdG9vbGJhckZsYWcgJiYgIXRvb2xGbGFnLFxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgc3R5bGU9e3sgaGVpZ2h0OiB0YWJsZUNvbnRlbnRIZWlnaHQgfX1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8VGFibGVcclxuICAgICAgICAgICAgICAgICAgcmVmPXt0aGlzLnRhYmxlUmVmfVxyXG4gICAgICAgICAgICAgICAgICBjb2x1bW5zPXt0YWJsZUNvbHVtbn1cclxuICAgICAgICAgICAgICAgICAgZXhwYW5kYWJsZT17e1xyXG4gICAgICAgICAgICAgICAgICAgIGV4cGFuZEljb246ICh7IGV4cGFuZGVkLCBvbkV4cGFuZCwgcmVjb3JkIH0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge2V4cGFuZGVkID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPERvd25PdXRsaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4gb25FeHBhbmQocmVjb3JkLCBlKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm5zYy1iYXNlcGFnZS1leHBhbmQtaWNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuY2hpbGROb2RlcyAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWdodE91dGxpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IG9uRXhwYW5kKHJlY29yZCwgZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJuc2MtYmFzZXBhZ2UtZXhwYW5kLWljb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgLi4uZXhwYW5kYWJsZSxcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgY29sdW1uT3JkZXI9e3RydWV9XHJcbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsocGFnaW5hdGlvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgY3VycmVudFBhZ2UgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRQYWdlICE9PSBwYWdpbmF0aW9uLmN1cnJlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50UGFnZTogcGFnaW5hdGlvbi5jdXJyZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICB0b29sYmFyPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgb25Ub29sQ2xpY2s6IHtcclxuICAgICAgICAgICAgICAgICAgICAgIG9uUmVmcmVzaDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB0aGlzLmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlTG9hZChwYXJhbXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIC4uLnRhYmxlUHJvcHMudG9vbGJhcixcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgc2hvd1Jvd1NlbGVjdGlvbj17c2hvd1Jvd1NlbGVjdGlvbn1cclxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgaGVpZ2h0OiB0YWJsZUhlaWdodCB9fVxyXG4gICAgICAgICAgICAgICAgICB7Li4udGFibGVQYXJhbXN9XHJcbiAgICAgICAgICAgICAgICAgIC8vIHBhZ2luYXRpb249e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIHsvKiA8ZGl2PjwvZGl2PiAqL31cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIHtlZGl0b3JGb3JtICYmIChcclxuICAgICAgICAgICAgPEVkaXRvckZvcm1cclxuICAgICAgICAgICAgICByZWY9e3RoaXMuZWRpdG9yUmVmfVxyXG4gICAgICAgICAgICAgIGNhbGxCYWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vblN1bWJpdENhbGxCYWNrICYmXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uU3VtYml0Q2FsbEJhY2soKTtcclxuICAgICAgICAgICAgICAgIHRoaXMudGFibGVSZWxvYWQuYmluZCh0aGlzKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIGZvcm1Qcm9wcz17ZWRpdG9yRm9ybXN9XHJcbiAgICAgICAgICAgICAgc3VibWl0VXJsPXtzdWJtaXRVcmx9XHJcbiAgICAgICAgICAgICAgc3VibWl0UGFyYW1zPXtzdWJtaXRQYXJhbXN9XHJcbiAgICAgICAgICAgICAgb25TdWJtaXQ9e3RoaXMucHJvcHMub25TdWJtaXR9XHJcbiAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlPXtkZWZhdWx0VmFsdWV9XHJcbiAgICAgICAgICAgICAgb25IaWRlRm9ybT17dGhpcy5wcm9wcy5vbkhpZGVGb3JtfVxyXG4gICAgICAgICAgICAgIG9uRm9ybUNoYW5nZT17dGhpcy5wcm9wcy5vbkZvcm1DaGFuZ2V9XHJcbiAgICAgICAgICAgICAgZm9ybVR5cGU9e3RoaXMucHJvcHMuZm9ybVR5cGUgfHwgXCJhdXRvXCJ9XHJcbiAgICAgICAgICAgICAgY2hhbmdlVmFsaWQ9e2Zvcm1DaGFuZ2VWYWxpZH1cclxuICAgICAgICAgICAgICBvdGhlclByb3BzPXt7IC4uLmZvcm1Qcm9wcyB9fVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG5leHBvcnQgZGVmYXVsdCBCYXNlUGFnZTtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU9BLEtBQUssSUFBSUMsYUFBYSxRQUFtQixPQUFP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
|