nsc-react-component 3.1.2 → 3.1.3
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.
|
@@ -337,6 +337,7 @@ class BasePage extends PureComponent {
|
|
|
337
337
|
} = config();
|
|
338
338
|
const newButtons = [];
|
|
339
339
|
let showIcon = true;
|
|
340
|
+
console.log("columnButtons", columnButtons);
|
|
340
341
|
if ((actionPorps === null || actionPorps === void 0 ? void 0 : actionPorps.showIcon) === false) showIcon = false;else if (baseActionColumn.showIcon === false) showIcon = false;
|
|
341
342
|
columnButtons.map((item, index) => {
|
|
342
343
|
const _item$props2 = item.props,
|
|
@@ -394,6 +395,7 @@ class BasePage extends PureComponent {
|
|
|
394
395
|
}, children));
|
|
395
396
|
}
|
|
396
397
|
});
|
|
398
|
+
console.log("newButtons", newButtons);
|
|
397
399
|
return newButtons.map((item, index) => {
|
|
398
400
|
const _item$props4 = item.props,
|
|
399
401
|
{
|
|
@@ -450,6 +452,7 @@ class BasePage extends PureComponent {
|
|
|
450
452
|
return null;
|
|
451
453
|
}
|
|
452
454
|
} else {
|
|
455
|
+
console.log("aaaa");
|
|
453
456
|
return /*#__PURE__*/React.createElement(Button, _extends({
|
|
454
457
|
className: cls(getLess(styles, "nsc-basepage-editor"), {
|
|
455
458
|
[getLess(styles, "nsc-basepage-editor-first")]: index === 0
|
|
@@ -675,20 +678,18 @@ class BasePage extends PureComponent {
|
|
|
675
678
|
} = config();
|
|
676
679
|
let showIcon = true;
|
|
677
680
|
if ((actionPorps === null || actionPorps === void 0 ? void 0 : actionPorps.showIcon) === false) showIcon = false;else if (baseActionColumn.showIcon === false) showIcon = false;
|
|
678
|
-
if (
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
}, "\u67E5\u770B"));
|
|
691
|
-
}
|
|
681
|
+
if (buttons.indexOf("search") > -1) {
|
|
682
|
+
columnButtons.push( /*#__PURE__*/React.createElement(Button, {
|
|
683
|
+
onClick: record => {
|
|
684
|
+
if (onShowForm) {
|
|
685
|
+
onShowForm(record.attribute || record, "detail");
|
|
686
|
+
return;
|
|
687
|
+
}
|
|
688
|
+
this.showForm(record.attribute || record, "detail");
|
|
689
|
+
},
|
|
690
|
+
icon: /*#__PURE__*/React.createElement(EyeOutlined, null),
|
|
691
|
+
type: "link"
|
|
692
|
+
}, "\u67E5\u770B"));
|
|
692
693
|
if (buttons.indexOf("editor") > -1) {
|
|
693
694
|
columnButtons.push( /*#__PURE__*/React.createElement(Button, {
|
|
694
695
|
onClick: record => {
|
|
@@ -711,7 +712,7 @@ class BasePage extends PureComponent {
|
|
|
711
712
|
onShowForm
|
|
712
713
|
} = this.props;
|
|
713
714
|
if (onShowForm) {
|
|
714
|
-
onShowForm();
|
|
715
|
+
onShowForm(null, "add");
|
|
715
716
|
return;
|
|
716
717
|
}
|
|
717
718
|
this.showForm();
|
|
@@ -803,10 +804,8 @@ class BasePage extends PureComponent {
|
|
|
803
804
|
let toolHeight = tableTitle || toolFlag ? 48 : 0;
|
|
804
805
|
let paddingHeight = 25;
|
|
805
806
|
let tableContentHeight = elementHeight - headerHeight - toolHeight - paddingHeight - pageHeight;
|
|
806
|
-
console.log("elementHeight", elementHeight);
|
|
807
807
|
let tableHeight = tableContentHeight - 32 - 32;
|
|
808
808
|
let tableSrollHeight = tableContentHeight - tableHeaderHeight - 32 - 32;
|
|
809
|
-
console.log("tableSrollHeight", tableSrollHeight);
|
|
810
809
|
if (tableProps.pagination !== false) {
|
|
811
810
|
const scroll = tableParams.scroll;
|
|
812
811
|
tableParams = _objectSpread(_objectSpread({}, tableParams), {}, {
|
|
@@ -816,7 +815,6 @@ class BasePage extends PureComponent {
|
|
|
816
815
|
}, scroll)
|
|
817
816
|
});
|
|
818
817
|
}
|
|
819
|
-
console.log("tableProps", tableProps);
|
|
820
818
|
return /*#__PURE__*/React.createElement("div", {
|
|
821
819
|
className: cls(getLess(styles, "nsc-basepage"), className),
|
|
822
820
|
ref: this.pageRef
|
|
@@ -936,4 +934,4 @@ class BasePage extends PureComponent {
|
|
|
936
934
|
}
|
|
937
935
|
}
|
|
938
936
|
export default BasePage;
|
|
939
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJUYWJsZSIsIlRyZWUiLCJCdXR0b24iLCJNb2RhbCIsIlBvcG92ZXIiLCJtZXNzYWdlIiwiRWRpdG9yRm9ybSIsImNscyIsInV0aWxzIiwiRG93bk91dGxpbmVkIiwiRXllT3V0bGluZWQiLCJFZGl0T3V0bGluZWQiLCJSaWdodE91dGxpbmVkIiwiUGx1c091dGxpbmVkIiwiRWxsaXBzaXNPdXRsaW5lZCIsIkRlbGV0ZU91dGxpbmVkIiwiZ2V0TGVzcyIsInJlcXVlc3QiLCJjb25maWciLCJnZXRTdG9yYWdlIiwiSGVhZGVyU2VhcmNoIiwic3R5bGVzIiwiQmFzZVBhZ2UiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX3R5cGUiLCJfc2l6ZSIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsImNoZWNrZWRUcmVlS2V5cyIsIm5hbWUiLCJ1c2VyVHlwZSIsImFjY291bnQiLCJzdGF0ZSIsInZhbHVlIiwiZGVwdElkIiwib25TZWFyY2giLCJzZWxlY3RlZCIsInJlcyIsImtleSIsImtleXMiLCJsZW5ndGgiLCJzdG9yZVByZWZpeCIsInR5cGUiLCJjb250ZW50Iiwic2l6ZSIsInNlbGVjdGVkUm93S2V5cyIsInNlbGVjdGVkUm93RGF0YXMiLCJ0cmVlU2VsZWN0ZWRLZXkiLCJleHBhbmQiLCJmb3JtVHlwZSIsInRhYmxlU2l6ZSIsInRyZWVTZWFyY2hQcmFtcyIsInBvcG9wZW5zIiwiZWxlbWVudEhlaWdodCIsImNvbXBvbmVudERpZE1vdW50IiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50IiwiaW5pdERhdGEiLCJwYWdlUmVmIiwiY3VycmVudCIsImNsaWVudEhlaWdodCIsInNldFN0YXRlIiwic2V0U2VhcmNoUGFyYW1zIiwicGFyYW1zIiwiY2FsbEJhY2siLCJfdGhpcyRzZWFyY2hSZWYkY3VycmUiLCJzZWFyY2hSZWYiLCJzaG93Rm9ybSIsIl90aGlzJGVkaXRvclJlZiRjdXJyZSIsImVkaXRvcmZsYWciLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJlZGl0b3JSZWYiLCJzaG93IiwiX29iamVjdFNwcmVhZCIsImhpZGVGb3JtIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlMiIsInNldExvYWRpbmciLCJsb2FkaW5nIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlMyIsInNldEVkaXRGb3JtVmFsdWVzIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlNCIsInNldEZpZWxkc1ZhbHVlIiwiZ2V0RWRpdEZvcm1WYWx1ZXMiLCJfdGhpcyRlZGl0b3JSZWYkY3VycmU1IiwiZ2V0RmllbGRzVmFsdWUiLCJvbkRlbGV0ZSIsImRhdGEiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4iLCJkZWxldGVVcmwiLCJkZWxldGVQYXJhbXMiLCJkZWxldGVQb3NpdGlvbiIsIl90aGlzIiwidGFibGVSZWYiLCJnZXRTZWxlY3RlZFJvd0tleXMiLCJ3YXJuaW5nIiwiY29uZmlybSIsIm9uT2siLCJFcnJvciIsImRlZmF1bHRQYXJhbXMiLCJtZXRob2QiLCJhdXRvUHJlZml4IiwiaWRzIiwiam9pbiIsImlkIiwicmVxdWVzdFBhcmFtcyIsInRoZW4iLCJjb2RlIiwiX3RoaXMkc2VhcmNoUmVmIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjMiIsInN1Y2Nlc3MiLCJnZXRTZWFyY2hWYWx1ZXMiLCJvbkNhbGxCYWNrcyIsIm9uRGVsZXRlQ2FsbEJhY2siLCJ0YWJsZUxvYWQiLCJlcnJvciIsImNhdGNoIiwiY29uc29sZSIsImxvZyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjIiLCJyZXF1ZXN0Q29uZmlnIiwic3RvcmUiLCJsb2FkIiwib25TZWFyY2hDYWxsQmFjayIsImNhbGxiYWNrIiwidGFibGVSZWxvYWQiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4zIiwiYXV0b0xvYWQiLCJyZWxvYWQiLCJfcmVzJGRhdGEiLCJyZWNvcmRzIiwiY3VycmVudFBhZ2UiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW40IiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNSIsImdldFNlbGVjdGVkUm93RGF0YXMiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW42IiwicmVzZXRTZWxlY3RlZFJvd0tleXMiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW43IiwiX3RoaXMkc2VhcmNoUmVmMiIsImZyb21WYWx1ZSIsImdldENoaWxkcmVuRGF0YSIsInRhYmxlUHJvcHMiLCJyb3dLZXkiLCJyZXNLZXkiLCJjaGlsZE5vZGVzIiwiY2hpbGRyZW4iLCJtYXAiLCJpdGVtIiwiaW5kZXgiLCJyZW5kZXJUb29sQnV0dG9ucyIsInRvb2xidXR0b25zIiwidG9vbGJhckZsYWciLCJmbGFnIiwicmV2ZXJzZSIsInNob3dTZWFyY2giLCJfaXRlbSRwcm9wcyIsInBhZ2VUeXBlIiwib25DbGljayIsImljb24iLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJjcmVhdGVFbGVtZW50IiwiX2V4dGVuZHMiLCJjbGFzc05hbWUiLCJzdHlsZSIsIm1hcmdpbkxlZnQiLCJ0aXRsZSIsInBsYWNlbWVudCIsInRyaWdnZXIiLCJyZW5kZXJDbG91bW5CdXR0b24iLCJjb2x1bW5CdXR0b25zIiwicmVjb3JkIiwiYWN0aW9uUG9ycHMiLCJiYXNlQWN0aW9uQ29sdW1uIiwibmV3QnV0dG9ucyIsInNob3dJY29uIiwiX2l0ZW0kcHJvcHMyIiwicmVjb3JkU2hvdyIsIl9leGNsdWRlZDIiLCJldmFsIiwicHVzaCIsIl9pdGVtJHByb3BzMyIsIl9leGNsdWRlZDMiLCJfaXRlbSRwcm9wczQiLCJfZXhjbHVkZWQ0Iiwib3BlbiIsIm9uT3BlbkNoYW5nZSIsInRyZWVTZWxlY3QiLCJzZWxlY3RlZEtleXMiLCJvYmoiLCJfdGhpcyRzZWFyY2hSZWYzIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjMyIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzQiLCJrZXl3b3JkIiwic2VhcmNoS2V5Iiwic2VhcmNoRmllbGQiLCJwYXJhbnRTZWxlY3QiLCJ0cmVlUHJvcHMiLCJzZWxlY3RlZE5vZGVzIiwiZGF0YXJlZiIsImF0dHJpYnV0ZSIsImlzTGVhZiIsIm9uVHJlZVNlbGVjdCIsInRyZWVTZWxlY3RDYWxsQmFjayIsInJlc2V0U2VhcmNoIiwiX3RoaXMkc2VhcmNoUmVmJGN1cnJlMiIsInJlc2V0RmllbGRzIiwiZ2V0VGV4dCIsInRleHQiLCJfcHJvcHMkZGF0YSIsIm5ld1RleHQiLCJpIiwibGFiZWwiLCJzZXRUYWJsZURhdGEiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW44Iiwic2V0RGF0YSIsInNldFRyZWVEYXRhIiwiX3RoaXMkdHJlZVJlZiRjdXJyZW50IiwidHJlZVJlZiIsInJlbmRlciIsIl90YWJsZVByb3BzJHRvb2xiYXIiLCJfdGFibGVQcm9wcyR0b29sYmFyMiIsImNvbHVtbnMiLCJzdWJtaXRVcmwiLCJmb3JtUHJvcHMiLCJzaG93TGVmdCIsInN1Ym1pdFBhcmFtcyIsInNob3dUb29sQnV0dG9uIiwiYnV0dG9ucyIsImVkaXRvckZvcm0iLCJvblNob3dGb3JtIiwiZm9ybUNoYW5nZVZhbGlkIiwidG9vbEJ1dHRvblBvc2l0aW9uIiwiZmlsdGVyQ29sdW1uIiwiYWN0aW9uQ29sdW1uIiwic2hvd1Jvd1NlbGVjdGlvbiIsImNvbHVtbk9yZGVyIiwiZXhwYW5kYWJsZSIsInRhYmxlVGl0bGUiLCJvdGhlcnRhYmxlUGFyYW1zIiwiX2V4Y2x1ZGVkNSIsInRyZWVTdG9yZSIsInRyZWVTZWFyY2giLCJ0aXRsZUFsaWFzIiwidHJlZVRpdGxlIiwib3RoZXJ0cmVlUGFyYW1zIiwiX2V4Y2x1ZGVkNiIsInRhYmxlUGFyYW1zIiwidGFibGVDb2x1bW4iLCJzZWFyY2hGb3JtcyIsImVkaXRvckZvcm1zIiwiZGVmYXVsdFZhbHVlIiwiX3RlbXAkc2VhcmNoIiwiX3RlbXAkcHJvcHMiLCJfdGVtcCRwcm9wczIiLCJfdGVtcCIsInRlbXAiLCJ3aWR0aCIsInNlYXJjaCIsIl90ZW1wJHNlYXJjaDIiLCJfdGVtcCRzZWFyY2gzIiwiX3RlbXAkc2VhcmNoNCIsImZpZWxkIiwiZGF0YUluZGV4IiwibGFiZWxDb2wiLCJ3cmFwcGVyQ29sIiwicnVsZXMiLCJzZWFyY2hSdWxlcyIsImVkaXRvciIsInNwYW4iLCJkaWN0TmFtZSIsIl90ZW1wJHByb3BzMyIsImNvbHVtblNlYXJjaCIsImZpbHRlclByb3BzIiwidGVtcFByb3AiLCJGcmFnbWVudCIsImVsbGlwc2lzIiwic2hvd1RpdGxlIiwiY29sdW1uU2hvdyIsInNlbGZCdXR0b25zIiwiaW5kZXhPZiIsImJpbmQiLCJkYW5nZXIiLCJBcnJheSIsImlzQXJyYXkiLCJjaGlsZCIsIl9jaGlsZCRwcm9wcyIsIl9jaGlsZCRwcm9wczIiLCJfaXRlbSRwcm9wczUiLCJfaXRlbSRwcm9wczYiLCJhbGlnbiIsInRleHRBbGlnbiIsImZpeGVkIiwicmVhY29yZCIsInNlYXJjaEZsYWciLCJ0YWJsZVRvb2wiLCJ0b29sRmxhZyIsInRvb2xiYXIiLCJ0b29scyIsInBhZ2VIZWlnaHQiLCJ0YWJsZUhlYWRlckhlaWdodCIsImhlYWRlckhlaWdodCIsInRvb2xIZWlnaHQiLCJwYWRkaW5nSGVpZ2h0IiwidGFibGVDb250ZW50SGVpZ2h0IiwidGFibGVIZWlnaHQiLCJ0YWJsZVNyb2xsSGVpZ2h0IiwicGFnaW5hdGlvbiIsInNjcm9sbCIsIngiLCJ5IiwicmVmIiwicGFnZVRpdGxlIiwiZGlzcGxheSIsImNoZWNrYWJsZSIsInNlYXJjaGFibGUiLCJvblNlbGVjdCIsIm9uUmVzZXQiLCJzZWFyY2hGb3JtUHJvcHMiLCJoZWlnaHQiLCJleHBhbmRJY29uIiwiX3JlZiIsImV4cGFuZGVkIiwib25FeHBhbmQiLCJlIiwib25DaGFuZ2UiLCJvblRvb2xDbGljayIsIm9uUmVmcmVzaCIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzUiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM2Iiwib25TdW1iaXRDYWxsQmFjayIsIm9uU3VibWl0Iiwib25IaWRlRm9ybSIsIm9uRm9ybUNoYW5nZSIsImNoYW5nZVZhbGlkIiwib3RoZXJQcm9wcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BhZ2UvQmFzZVBhZ2UvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50LCBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IFRhYmxlIGZyb20gXCIuLi8uLi9iYXNlL3RhYmxlXCI7XHJcbmltcG9ydCBUcmVlIGZyb20gXCIuLi8uLi9iYXNlL3RyZWVcIjtcclxuaW1wb3J0IEJ1dHRvbiBmcm9tIFwiLi4vLi4vYmFzZS9idXR0b25cIjtcclxuaW1wb3J0IE1vZGFsIGZyb20gXCIuLi8uLi9iYXNlL21vZGFsXCI7XHJcbmltcG9ydCBQb3BvdmVyIGZyb20gXCIuLi8uLi9iYXNlL3BvcG92ZXJcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uLy4uL2Jhc2UvbWVzc2FnZVwiO1xyXG5pbXBvcnQgRWRpdG9yRm9ybSBmcm9tIFwiLi9Gb3JtXCI7XHJcbmltcG9ydCBjbHMgZnJvbSBcImNsYXNzbmFtZXNcIjtcclxuaW1wb3J0IFwiLi9pbmRleC5tb2R1bGUubGVzc1wiO1xyXG5pbXBvcnQgU3RvcmUsIHsgUGFnZVN0b3JlLCBTdG9yZVByb3BzIH0gZnJvbSBcIkBiai1uc2MvbXNuXCI7XHJcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSBcIkBiai1uc2MvbXNuL2xpYi91dGlsc1wiO1xyXG5pbXBvcnQge1xyXG4gIERvd25PdXRsaW5lZCxcclxuICBFeWVPdXRsaW5lZCxcclxuICBFZGl0T3V0bGluZWQsXHJcbiAgUmlnaHRPdXRsaW5lZCxcclxuICBQbHVzT3V0bGluZWQsXHJcbiAgRWxsaXBzaXNPdXRsaW5lZCxcclxuICBEZWxldGVPdXRsaW5lZCxcclxufSBmcm9tIFwiQGFudC1kZXNpZ24vaWNvbnNcIjtcclxuaW1wb3J0IHsgZ2V0TGVzcywgZ2V0Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgcmVxdWVzdCBmcm9tIFwibnNjLXJlcXVlc3RcIjtcclxuaW1wb3J0IG9taXQgZnJvbSBcIm9taXQuanNcIjtcclxuaW1wb3J0IGNvbmZpZyBmcm9tIFwiLi4vLi4vY29uZmlnXCI7XHJcbmltcG9ydCB7IGdldFN0b3JhZ2UsIHB4MnZ3IH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCB7IElGb3JtUHJvcHMgfSBmcm9tIFwiLi4vLi4vYmFzZS9mb3JtL0Zvcm1cIjtcclxuaW1wb3J0IEhlYWRlclNlYXJjaCBmcm9tIFwiLi4vSGVhZGVyU2VhcmNoXCI7XHJcbmltcG9ydCB7IFBhZ2luYXRpb25Qcm9wcyB9IGZyb20gXCJhbnRkXCI7XHJcbmludGVyZmFjZSBUYWJsZVByb3BzIHtcclxuICBhY3Rpb25Db2x1bW4/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/OiBhbnk7XHJcbiAgfTtcclxuICBwYWdlVHlwZT86IFwibm9ybWFsXCIgfCBcInRhYnNwYWdlXCI7XHJcbn1cclxuXHJcbmNsYXNzIEJhc2VQYWdlIGV4dGVuZHMgUHVyZUNvbXBvbmVudDxOU0NCYXNlQmFnZVByb3BzLCBhbnk+IHtcclxuICB0YWJsZVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgdHJlZVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgc2VhcmNoUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBlZGl0b3JSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHBhZ2VSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIGRhdGVGb3JtYXQgPSB7fSBhcyBhbnk7XHJcbiAgY29uc3RydWN0b3IocHJvcHM6IGFueSkge1xyXG4gICAgc3VwZXIocHJvcHMpO1xyXG4gICAgbGV0IHsgc3RvcmVQcmVmaXggfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHR5cGUgPSBnZXRTdG9yYWdlKFxyXG4gICAgICBzdG9yZVByZWZpeCA/IHN0b3JlUHJlZml4ICsgXCItXCIgKyBcImZvcm1UeXBlXCIgOiBcImZvcm1UeXBlXCJcclxuICAgICk7XHJcbiAgICB0eXBlID0gdHlwZT8uY29udGVudDtcclxuICAgIGxldCBzaXplID0gZ2V0U3RvcmFnZShcclxuICAgICAgc3RvcmVQcmVmaXggPyBzdG9yZVByZWZpeCArIFwiLVwiICsgXCJ0YWJsZVNpemVcIiA6IFwidGFibGVTaXplXCJcclxuICAgICk7XHJcbiAgICBzaXplID0gc2l6ZT8uY29udGVudDtcclxuICAgIHRoaXMuc3RhdGUgPSB7XHJcbiAgICAgIHR5cGU6IFwiYWRkXCIsXHJcbiAgICAgIHNlbGVjdGVkUm93S2V5czogW10sXHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXM6IFtdLFxyXG4gICAgICB0cmVlU2VsZWN0ZWRLZXk6IFwiXCIsXHJcbiAgICAgIGV4cGFuZDogZmFsc2UsXHJcbiAgICAgIGZvcm1UeXBlOiB0eXBlIHx8IFwibW9kYWxcIixcclxuICAgICAgdGFibGVTaXplOiBzaXplIHx8IFwiZGVmYXVsdFwiLFxyXG4gICAgICB0cmVlU2VhcmNoUHJhbXM6IHt9LFxyXG4gICAgICBwb3BvcGVuczoge30sXHJcbiAgICAgIGVsZW1lbnRIZWlnaHQ6IDAsXHJcbiAgICB9O1xyXG4gIH1cclxuICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgIGNvbnN0IHsgaW5pdERhdGEgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBlbGVtZW50SGVpZ2h0ID0gdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LmNsaWVudEhlaWdodDtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBlbGVtZW50SGVpZ2h0LFxyXG4gICAgfSk7XHJcbiAgICBpbml0RGF0YSAmJiBpbml0RGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0U2VhcmNoUGFyYW1zKHBhcmFtcywgY2FsbEJhY2spIHtcclxuICAgIHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LnNldFNlYXJjaFBhcmFtcyhwYXJhbXMpO1xyXG4gICAgY2FsbEJhY2sgJiYgY2FsbEJhY2socGFyYW1zKTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0ID0gKGNoZWNrZWRUcmVlS2V5czogYW55KSA9PiB7XHJcbiAgICBjb25zdCB7IG5hbWUsIHVzZXJUeXBlLCBhY2NvdW50IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgdmFsdWUgPSB7IG5hbWUsIHVzZXJUeXBlLCBhY2NvdW50LCBkZXB0SWQ6IGNoZWNrZWRUcmVlS2V5c1swXSB9O1xyXG4gICAgaWYgKHRoaXMucHJvcHMub25TZWFyY2gpIHtcclxuICAgICAgdGhpcy5wcm9wcy5vblNlYXJjaCh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICAvLyB0aGlzLnRhYmxlTG9hZCh2YWx1ZSk7XHJcbiAgfTtcclxuXHJcbiAgLy/mmL7npLrooajljZVcclxuICBzaG93Rm9ybSh2YWx1ZT86IGFueSwgZWRpdG9yZmxhZyA9IFwiYWRkXCIpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LnNob3coeyAuLi52YWx1ZSB9LCBlZGl0b3JmbGFnKTtcclxuICB9XHJcblxyXG4gIC8v5YWz6Zet6KGo5Y2VXHJcbiAgaGlkZUZvcm0oKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5oaWRlRm9ybSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0TG9hZGluZyhsb2FkaW5nOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5zZXRMb2FkaW5nKGxvYWRpbmcpO1xyXG4gIH1cclxuXHJcbiAgc2V0RWRpdEZvcm1WYWx1ZXModmFsdWUpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LnNldEZpZWxkc1ZhbHVlKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIGdldEVkaXRGb3JtVmFsdWVzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LmdldEZpZWxkc1ZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICAvL+aJuemHj+WIoOmZpFxyXG4gIG9uRGVsZXRlKGRhdGE/OiBhbnkpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgZGVsZXRlVXJsLFxyXG4gICAgICBvbkRlbGV0ZSxcclxuICAgICAgZGVsZXRlUGFyYW1zLFxyXG4gICAgICBkZWxldGVQb3NpdGlvbiA9IFwidG9vbGJhclwiLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRSb3dLZXlzID0gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5nZXRTZWxlY3RlZFJvd0tleXMoKTtcclxuICAgIGlmIChkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIikge1xyXG4gICAgICBpZiAoc2VsZWN0ZWRSb3dLZXlzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgbWVzc2FnZS53YXJuaW5nKFwi6K+36YCJ5oup6KaB5Yig6Zmk55qE5pWw5o2u77yBXCIpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgTW9kYWwuY29uZmlybSh7XHJcbiAgICAgIGNvbnRlbnQ6IFwi5piv5ZCm56Gu6K6k5Yig6Zmk5omA6YCJ6aG577yfXCIsXHJcbiAgICAgIC8vIGNlbnRlcmVkOnRydWUsXHJcbiAgICAgIG9uT2s6ICgpID0+IHtcclxuICAgICAgICBpZiAob25EZWxldGUpIHtcclxuICAgICAgICAgIG9uRGVsZXRlICYmXHJcbiAgICAgICAgICAgIG9uRGVsZXRlKGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiID8gc2VsZWN0ZWRSb3dLZXlzIDogZGF0YSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghZGVsZXRlVXJsKSB7XHJcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1cmzkuI3og73kuLrnqbrvvIFcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGRlZmF1bHRQYXJhbXMgPSB7XHJcbiAgICAgICAgICBtZXRob2Q6IFwicG9zdFwiLFxyXG4gICAgICAgICAgYXV0b1ByZWZpeDogdHJ1ZSxcclxuICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICBpZHM6IGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiID8gc2VsZWN0ZWRSb3dLZXlzLmpvaW4oKSA6IGRhdGEuaWQsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgbGV0IHJlcXVlc3RQYXJhbXMgPSB7fSBhcyBhbnk7XHJcbiAgICAgICAgaWYgKGRlZmF1bHRQYXJhbXMpIHtcclxuICAgICAgICAgIHJlcXVlc3RQYXJhbXMgPSB7IC4uLmRlbGV0ZVBhcmFtcyB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXF1ZXN0UGFyYW1zID0geyAuLi5kZWZhdWx0UGFyYW1zIH07XHJcbiAgICAgICAgcmVxdWVzdChkZWxldGVVcmwsIHtcclxuICAgICAgICAgIC4uLnJlcXVlc3RQYXJhbXMsXHJcbiAgICAgICAgfSlcclxuICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXM6IGFueSkge1xyXG4gICAgICAgICAgICBjb25zdCB7IGNvZGUgfSA9IHJlcztcclxuICAgICAgICAgICAgaWYgKGNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgIG1lc3NhZ2Uuc3VjY2VzcyhcIuWIoOmZpOaIkOWKn++8gVwiKTtcclxuICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBfdGhpcy5zZWFyY2hSZWY/LmN1cnJlbnQ/LmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgICAgICAgICAgIF90aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vbkRlbGV0ZUNhbGxCYWNrICYmXHJcbiAgICAgICAgICAgICAgICBfdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25EZWxldGVDYWxsQmFjaygpO1xyXG4gICAgICAgICAgICAgIF90aGlzLnRhYmxlTG9hZCh2YWx1ZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgbWVzc2FnZS5lcnJvcihcIuWIoOmZpOWksei0pe+8gVwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3I6IGFueSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yXCIsIGVycm9yKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHRhYmxlTG9hZChwYXJhbXM6IGFueSwgcmVxdWVzdENvbmZpZyA9IHt9KSB7XHJcbiAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlLmxvYWQoe1xyXG4gICAgICAuLi5yZXF1ZXN0Q29uZmlnLFxyXG4gICAgICBwYXJhbXM6IHBhcmFtcyxcclxuICAgIH0pO1xyXG4gIH1cclxuICAvL+afpeivolxyXG4gIG9uU2VhcmNoKHBhcmFtcykge1xyXG4gICAgY29uc3QgeyBvblNlYXJjaCwgb25DYWxsQmFja3MgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAob25TZWFyY2gpIHtcclxuICAgICAgb25TZWFyY2goeyAuLi5wYXJhbXMsIC4uLnRoaXMuc3RhdGUudHJlZVNlYXJjaFByYW1zIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnRhYmxlTG9hZCh7IC4uLnBhcmFtcywgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfSk7XHJcbiAgICBvbkNhbGxCYWNrcz8ub25TZWFyY2hDYWxsQmFjayAmJlxyXG4gICAgICB1dGlscy5jYWxsYmFjayhvbkNhbGxCYWNrcz8ub25TZWFyY2hDYWxsQmFjaywgdGhpcywgW3BhcmFtc10pO1xyXG4gIH1cclxuICAvL+ihqOagvOmHjeaWsOWKoOi9vVxyXG4gIHRhYmxlUmVsb2FkKHBhcmFtcyA9IHt9LCBhdXRvTG9hZCA9IHRydWUpIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmU/LnJlbG9hZCh7XHJcbiAgICAgIGNhbGxiYWNrOiAocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgYXV0b0xvYWQgJiZcclxuICAgICAgICAgIHJlcz8uZGF0YT8ucmVjb3Jkcz8ubGVuZ3RoID09IDAgJiZcclxuICAgICAgICAgIHRoaXMuc3RhdGUuY3VycmVudFBhZ2UgIT09IDFcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmU/LnJlbG9hZCh7XHJcbiAgICAgICAgICAgIHBhcmFtczogeyBjdXJyZW50OiAxLCAuLi5wYXJhbXMgfSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0tleXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5nZXRTZWxlY3RlZFJvd0tleXMoKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRSb3dEYXRhcygpIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93RGF0YXMoKTtcclxuICB9XHJcbiAgcmVzZXRTZWxlY3RlZFJvd0tleXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5yZXNldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VhcmNoVmFsdWVzKCkge1xyXG4gICAgY29uc3QgZnJvbVZhbHVlID0gdGhpcy5zZWFyY2hSZWY/LmN1cnJlbnQ/LmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgcmV0dXJuIHsgLi4uZnJvbVZhbHVlLCAuLi50aGlzLnN0YXRlLnRyZWVTZWFyY2hQcmFtcyB9O1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2hpbGRyZW5EYXRhKGRhdGEsIGtleXMgPSBbXSkge1xyXG4gICAgY29uc3QgeyB0YWJsZVByb3BzIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyByb3dLZXkgPSBcImlkXCIgfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQgcmVzS2V5ID0gW107XHJcbiAgICBpZiAoZGF0YS5jaGlsZE5vZGVzKSB7XHJcbiAgICAgIGNvbnN0IGNoaWxkcmVuID0gZGF0YS5jaGlsZE5vZGVzO1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0uY2hpbGROb2Rlcykge1xyXG4gICAgICAgICAgdGhpcy5nZXRDaGlsZHJlbkRhdGEoaXRlbS5jaGlsZE5vZGVzLCBrZXlzKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVzS2V5ID0gWy4uLmtleXMsIGl0ZW1bcm93S2V5XV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJlc0tleSA9IFsuLi5rZXlzLCBkYXRhW3Jvd0tleV1dO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc0tleTtcclxuICB9XHJcblxyXG4gIHJlbmRlclRvb2xCdXR0b25zKHRvb2xidXR0b25zOiBhbnksIHRvb2xiYXJGbGFnKSB7XHJcbiAgICBjb25zdCBmbGFnID0gdG9vbGJ1dHRvbnMubGVuZ3RoID4gNTtcclxuICAgIHRvb2xidXR0b25zID0gWy4uLnRvb2xidXR0b25zXS5yZXZlcnNlKCk7XHJcbiAgICBjb25zdCB7IHNob3dTZWFyY2ggPSB0cnVlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgY29udGVudCA9IHRvb2xidXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCBpY29uLCBzaG93LCAuLi5wYXJhbXMgfSA9IGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChpbmRleCA+IDMpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpLFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb250ZW50LWl0ZW1cIilcclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljaygpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1pY29uXCIpfT57aWNvbn08L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRleHRcIil9PlxyXG4gICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRvb2wtYnV0dG9uc1wiKSl9XHJcbiAgICAgICAgc3R5bGU9e3sgbWFyZ2luTGVmdDogMCB9fVxyXG4gICAgICA+XHJcbiAgICAgICAge3Rvb2xidXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZmxhZykge1xyXG4gICAgICAgICAgICBpZiAoaW5kZXggPCA0KSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIDxkaXYga2V5PXtpbmRleH0+e2l0ZW19PC9kaXY+O1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID09IDQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPFBvcG92ZXJcclxuICAgICAgICAgICAgICAgICAgY29udGVudD17Y29udGVudH1cclxuICAgICAgICAgICAgICAgICAgdGl0bGU9e251bGx9XHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgICAgIHRyaWdnZXI9e1tcImNsaWNrXCJdfVxyXG4gICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgICAvLyBvdmVybGF5Q2xhc3NOYW1lPXtzdHlsZXNbJ3BvcC1ib3gnXX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPEJ1dHRvbiB0eXBlPVwicHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIOabtOWkmiA8RG93bk91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9Qb3BvdmVyPlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiA8ZGl2IGtleT17aW5kZXh9PntpdGVtfTwvZGl2PjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KX1cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxuICByZW5kZXJDbG91bW5CdXR0b24oY29sdW1uQnV0dG9uczogYW55LCByZWNvcmQ6IGFueSkge1xyXG4gICAgY29uc3QgeyBhY3Rpb25Qb3JwcyB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgYmFzZUFjdGlvbkNvbHVtbiB9ID0gY29uZmlnKCk7XHJcbiAgICBjb25zdCBuZXdCdXR0b25zID0gW107XHJcbiAgICBsZXQgc2hvd0ljb24gPSB0cnVlO1xyXG4gICAgaWYgKGFjdGlvblBvcnBzPy5zaG93SWNvbiA9PT0gZmFsc2UpIHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBlbHNlIGlmIChiYXNlQWN0aW9uQ29sdW1uLnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGNvbHVtbkJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIGljb24sIHJlY29yZFNob3csIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAocmVjb3JkU2hvdykge1xyXG4gICAgICAgIGlmICh0eXBlb2YgcmVjb3JkU2hvdyA9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICBpZiAoZXZhbChyZWNvcmRTaG93KSkge1xyXG4gICAgICAgICAgICBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcmVjb3JkU2hvdyA9PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgIGNvbnN0IHNob3cgPSByZWNvcmRTaG93KHJlY29yZCk7XHJcbiAgICAgICAgICBzaG93ICYmIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IGZsYWcgPSBuZXdCdXR0b25zLmxlbmd0aCA+IDM7XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IG5ld0J1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIHJlY29yZFNob3csIGljb24sIHNob3csIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoaW5kZXggPiAyKSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKSxcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtY29udGVudC1pdGVtXCIpXHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICBsZXQgZGF0YSA9IHsgLi4udGhpcy5zdGF0ZS5wb3BvcGVucyB9O1xyXG4gICAgICAgICAgICAgIGRhdGFbcmVjb3JkLmlkXSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgcG9wb3BlbnM6IGRhdGEsXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJlY29yZCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICAgIHR5cGU9e1wibGlua1wifVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd0ljb24gIT09IGZhbHNlICYmIChcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1pY29uXCIpfT5cclxuICAgICAgICAgICAgICAgIHtpY29ufVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAge2NoaWxkcmVufVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gbmV3QnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgcmVjb3JkU2hvdywgaWNvbiwgLi4ucGFyYW1zIH0gPVxyXG4gICAgICAgIGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChmbGFnKSB7XHJcbiAgICAgICAgaWYgKGluZGV4IDwgMykge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksIHtcclxuICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yLWZpcnN0XCIpXTogaW5kZXggPT09IDAsXHJcbiAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socmVjb3JkKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICAgICAgdHlwZT17XCJsaW5rXCJ9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7c2hvd0ljb24gIT09IGZhbHNlICYmIChcclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWljb25cIil9PlxyXG4gICAgICAgICAgICAgICAgICB7aWNvbn1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRleHRcIil9PlxyXG4gICAgICAgICAgICAgICAge2NoaWxkcmVufVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT0gMykge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPFBvcG92ZXJcclxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgIHRpdGxlPXtudWxsfVxyXG4gICAgICAgICAgICAgIGNvbnRlbnQ9e2NvbnRlbnR9XHJcbiAgICAgICAgICAgICAgdHJpZ2dlcj17W1wiY2xpY2tcIl19XHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICBvcGVuPXt0aGlzLnN0YXRlLnBvcG9wZW5zW3JlY29yZC5pZF0gfHwgZmFsc2V9XHJcbiAgICAgICAgICAgICAgb25PcGVuQ2hhbmdlPXsob3BlbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKG9wZW4pIHtcclxuICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgPSB7IC4uLnRoaXMuc3RhdGUucG9wb3BlbnMgfTtcclxuICAgICAgICAgICAgICAgICAgZGF0YVtyZWNvcmQuaWRdID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9wb3BlbnM6IGRhdGEsXHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9wb3BlbnM6IHt9LFxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIC8vIG92ZXJsYXlDbGFzc05hbWU9e3N0eWxlc1sncG9wJ119XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8YSBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIil9PlxyXG4gICAgICAgICAgICAgICAgPEVsbGlwc2lzT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpLCB7XHJcbiAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3ItZmlyc3RcIildOiBpbmRleCA9PT0gMCxcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socmVjb3JkKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgdHlwZT17XCJsaW5rXCJ9XHJcbiAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWljb25cIil9PlxyXG4gICAgICAgICAgICAgICAge2ljb259XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuICAvL+agkeeCueWHu+S6i+S7tlxyXG4gIHRyZWVTZWxlY3Qoc2VsZWN0ZWRLZXlzOiBhbnksIG9iajogYW55KSB7XHJcbiAgICBsZXQga2V5d29yZCA9IFwiXCI7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHNlYXJjaEtleSA9IFwia2V5XCIsXHJcbiAgICAgIHNlYXJjaEZpZWxkID0gXCJcIixcclxuICAgICAgcGFyYW50U2VsZWN0ID0gdHJ1ZSxcclxuICAgIH0gPSB0aGlzLnByb3BzLnRyZWVQcm9wcztcclxuICAgIGNvbnN0IHsgdHJlZVNlbGVjdGVkS2V5IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgeyBzZWxlY3RlZCwgc2VsZWN0ZWROb2RlcyB9ID0gb2JqO1xyXG5cclxuICAgIGlmIChzZWxlY3RlZCkge1xyXG4gICAgICBrZXl3b3JkID0gc2VsZWN0ZWROb2Rlc1swXS5kYXRhcmVmLmF0dHJpYnV0ZVtzZWFyY2hLZXldO1xyXG4gICAgICBpZiAocGFyYW50U2VsZWN0KSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IHNlbGVjdGVkS2V5c1swXSxcclxuICAgICAgICAgIHRyZWVTZWFyY2hQcmFtczogeyBbc2VhcmNoRmllbGRdOiBrZXl3b3JkIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHNlbGVjdGVkTm9kZXNbMF0uaXNMZWFmIHx8ICFzZWxlY3RlZE5vZGVzWzBdLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICBpZiAoc2VsZWN0ZWRLZXlzWzBdICE9PSB0cmVlU2VsZWN0ZWRLZXkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgdHJlZVNlbGVjdGVkS2V5OiBzZWxlY3RlZEtleXNbMF0sXHJcbiAgICAgICAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7IFtzZWFyY2hGaWVsZF06IGtleXdvcmQgfSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IGtleXdvcmQsXHJcbiAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7fSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5wcm9wcy5vblRyZWVTZWxlY3QpIHtcclxuICAgICAgdGhpcy5wcm9wcy5vblRyZWVTZWxlY3Qoc2VsZWN0ZWRLZXlzLCBvYmopO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBmcm9tVmFsdWUgPSB0aGlzLnNlYXJjaFJlZj8uY3VycmVudD8uZ2V0U2VhcmNoVmFsdWVzKCkgfHwge307XHJcbiAgICBzZWFyY2hGaWVsZCAmJiB0aGlzLnRhYmxlTG9hZCh7IC4uLmZyb21WYWx1ZSwgW3NlYXJjaEZpZWxkXToga2V5d29yZCB9KTtcclxuICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/LnRyZWVTZWxlY3RDYWxsQmFjayAmJlxyXG4gICAgICB1dGlscy5jYWxsYmFjayh0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy50cmVlU2VsZWN0Q2FsbEJhY2ssIHRoaXMsIFtcclxuICAgICAgICBzZWxlY3RlZEtleXMsXHJcbiAgICAgICAgb2JqLFxyXG4gICAgICBdKTtcclxuICB9XHJcbiAgcmVzZXRTZWFyY2goKSB7XHJcbiAgICB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5yZXNldEZpZWxkcygpO1xyXG4gIH1cclxuICBnZXRUZXh0KHByb3BzLCB0ZXh0KSB7XHJcbiAgICBsZXQgbmV3VGV4dCA9IHRleHQ7XHJcbiAgICBpZiAocHJvcHM/LmRhdGEgJiYgcHJvcHM/LmRhdGE/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IGRhdGEgPSBwcm9wcy5kYXRhO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGE/Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGRhdGFbaV0udmFsdWUgPT0gdGV4dCkge1xyXG4gICAgICAgICAgbmV3VGV4dCA9IGRhdGFbaV0ubGFiZWw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3VGV4dDtcclxuICB9XHJcbiAgc2V0VGFibGVEYXRhKGRhdGEpIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmU/LnNldERhdGEoZGF0YSk7XHJcbiAgfVxyXG4gIHNldFRyZWVEYXRhKGRhdGEpIHtcclxuICAgIHRoaXMudHJlZVJlZi5jdXJyZW50Py5zdG9yZT8uc2V0RGF0YShkYXRhKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRLZXkgPSAoc2VsZWN0ZWQpID0+IHtcclxuICAgIGxldCByZXMgPSBbXTtcclxuICAgIGZvciAobGV0IGtleSBpbiBzZWxlY3RlZCkge1xyXG4gICAgICBjb25zdCBrZXlzID0gc2VsZWN0ZWRba2V5XTtcclxuICAgICAgaWYgKGtleXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHJlcyA9IFsuLi5yZXMsIC4uLmtleXNdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzO1xyXG4gIH07XHJcblxyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgY29sdW1ucyA9IFtdLFxyXG4gICAgICBzaG93U2VhcmNoID0gdHJ1ZSxcclxuICAgICAgY2hpbGRyZW4sXHJcbiAgICAgIHN1Ym1pdFVybCA9IFwiXCIsXHJcbiAgICAgIHRhYmxlUHJvcHMgPSB7fSxcclxuICAgICAgdHJlZVByb3BzID0ge30sXHJcbiAgICAgIGZvcm1Qcm9wcyA9IHt9LFxyXG4gICAgICBzaG93TGVmdCA9IGZhbHNlLFxyXG4gICAgICBzdWJtaXRQYXJhbXMgPSB7fSxcclxuICAgICAgc2hvd1Rvb2xCdXR0b24gPSB0cnVlLFxyXG4gICAgICBidXR0b25zID0gW10sXHJcbiAgICAgIGVkaXRvckZvcm0gPSB0cnVlLFxyXG4gICAgICBvblNob3dGb3JtLFxyXG4gICAgICBmb3JtQ2hhbmdlVmFsaWQgPSB0cnVlLFxyXG4gICAgICBjbGFzc05hbWUsXHJcbiAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbiA9IFwiYnV0dG9tXCIsXHJcbiAgICAgIGFjdGlvblBvcnBzLFxyXG4gICAgICBkZWxldGVQb3NpdGlvbiA9IFwidG9vbGJhclwiLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN0b3JlLFxyXG4gICAgICBmaWx0ZXJDb2x1bW4gPSB0cnVlLFxyXG4gICAgICBhY3Rpb25Db2x1bW4gPSB0cnVlLFxyXG4gICAgICBzaG93Um93U2VsZWN0aW9uID0gdHJ1ZSxcclxuICAgICAgY29sdW1uT3JkZXIgPSB0cnVlLFxyXG4gICAgICBleHBhbmRhYmxlID0ge30sXHJcbiAgICAgIHBhcmFudFNlbGVjdCA9IHRydWUsXHJcbiAgICAgIHRpdGxlOiB0YWJsZVRpdGxlLFxyXG4gICAgICAuLi5vdGhlcnRhYmxlUGFyYW1zXHJcbiAgICB9ID0gdGFibGVQcm9wcztcclxuXHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN0b3JlOiB0cmVlU3RvcmUgPSB7fSxcclxuICAgICAgc2hvd1NlYXJjaDogdHJlZVNlYXJjaCA9IHRydWUsXHJcbiAgICAgIHRpdGxlQWxpYXMgPSBcInRpdGxlXCIsXHJcbiAgICAgIHRpdGxlOiB0cmVlVGl0bGUsXHJcbiAgICAgIC4uLm90aGVydHJlZVBhcmFtc1xyXG4gICAgfSA9IHRyZWVQcm9wcztcclxuICAgIGxldCB0YWJsZVBhcmFtcyA9IHsgZmlsdGVyQ29sdW1uLCBzdG9yZSwgLi4ub3RoZXJ0YWJsZVBhcmFtcyB9IGFzIGFueTtcclxuICAgIGxldCB0YWJsZUNvbHVtbjogYW55W10gPSBbXTtcclxuICAgIGNvbnN0IHNlYXJjaEZvcm1zOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IGVkaXRvckZvcm1zOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IGRlZmF1bHRWYWx1ZTogYW55ID0ge307XHJcbiAgICBjb25zdCBjb2x1bW5CdXR0b25zOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IHsgZWxlbWVudEhlaWdodCB9ID0gdGhpcy5zdGF0ZTtcclxuXHJcbiAgICBjb2x1bW5zLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGxldCB0ZW1wID0geyB3aWR0aDogMTAwLCAuLi5pdGVtIH07XHJcbiAgICAgIGlmICh0ZW1wLnNlYXJjaCA9PT0gdHJ1ZSB8fCB0ZW1wLnNlYXJjaD8uc2hvdyA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIHNlYXJjaEZvcm1zLnB1c2goe1xyXG4gICAgICAgICAgbmFtZTogdGVtcC5maWVsZCB8fCB0ZW1wLmRhdGFJbmRleCxcclxuICAgICAgICAgIGxhYmVsOiB0ZW1wLnNlYXJjaD8ubGFiZWwgfHwgdGVtcC50aXRsZSxcclxuICAgICAgICAgIHR5cGU6IHRlbXAudHlwZSxcclxuICAgICAgICAgIHByb3BzOiB0ZW1wLnByb3BzLFxyXG4gICAgICAgICAgbGFiZWxDb2w6IHRlbXAuc2VhcmNoPy5sYWJlbENvbCxcclxuICAgICAgICAgIHdyYXBwZXJDb2w6IHRlbXAuc2VhcmNoPy53cmFwcGVyQ29sLFxyXG4gICAgICAgICAgcnVsZXM6IHRlbXAuc2VhcmNoUnVsZXMgPyB0ZW1wLnNlYXJjaFJ1bGVzIDogW10sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnNlYXJjaDtcclxuICAgICAgdGVtcC5lZGl0b3IgIT09IGZhbHNlICYmXHJcbiAgICAgICAgZWRpdG9yRm9ybXMucHVzaCh7XHJcbiAgICAgICAgICBuYW1lOiB0ZW1wLmZpZWxkIHx8IHRlbXAuZGF0YUluZGV4LFxyXG4gICAgICAgICAgbGFiZWw6IHRlbXAudGl0bGUsXHJcbiAgICAgICAgICBydWxlczogdGVtcC5ydWxlcyA/IHRlbXAucnVsZXMgOiBbXSxcclxuICAgICAgICAgIHR5cGU6IHRlbXAudHlwZSxcclxuICAgICAgICAgIHNwYW46IHRlbXAuc3BhbixcclxuICAgICAgICAgIGRpY3ROYW1lOiB0ZW1wLmRpY3ROYW1lLFxyXG4gICAgICAgICAgcHJvcHM6IHsgLi4udGVtcC5wcm9wcyB9LFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRlbXAucHJvcHM/LmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkICYmXHJcbiAgICAgICAgdGVtcC5wcm9wcz8uZGVmYXVsdFZhbHVlICE9PSBudWxsXHJcbiAgICAgICkge1xyXG4gICAgICAgIGNvbnN0IG5hbWUgPSB0ZW1wLmZpZWxkIHx8IHRlbXAuZGF0YUluZGV4O1xyXG4gICAgICAgIGRlZmF1bHRWYWx1ZVtuYW1lXSA9IHRlbXAucHJvcHM/LmRlZmF1bHRWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgICBkZWxldGUgdGVtcC5ydWxlcztcclxuICAgICAgZGVsZXRlIHRlbXAuc3BhbjtcclxuICAgICAgaWYgKHRlbXAuY29sdW1uU2VhcmNoKSB7XHJcbiAgICAgICAgdGVtcC5maWx0ZXJQcm9wcyA9IHtcclxuICAgICAgICAgIHR5cGU6IHRlbXAudHlwZSxcclxuICAgICAgICAgIHByb3BzOiB0ZW1wLnByb3BzLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgICAgZGVsZXRlIHRlbXAudHlwZTtcclxuICAgICAgbGV0IHRlbXBQcm9wID0geyAuLi50ZW1wLnByb3BzIH07XHJcbiAgICAgIGlmICh0ZW1wLnN0eWxlKSB7XHJcbiAgICAgICAgdGVtcCA9IHtcclxuICAgICAgICAgIHJlbmRlcjogKHRleHQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgICAgICB7dGV4dCAhPT0gXCJcIiAmJiB0ZXh0ICE9PSBudWxsICYmIHRleHQgIT09IHVuZGVmaW5lZCAmJiAoXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtY29sLWJhY2tcIil9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbC10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLmdldFRleHQodGVtcFByb3AsIHRleHQpfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLnRlbXAsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSBlbHNlIGlmICghdGVtcC5lbGxpcHNpcykge1xyXG4gICAgICAgIHRlbXAgPSB7XHJcbiAgICAgICAgICBlbGxpcHNpczogeyBzaG93VGl0bGU6IGZhbHNlIH0sXHJcbiAgICAgICAgICByZW5kZXI6ICh0ZXh0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VGV4dCh0ZW1wUHJvcCwgdGV4dCk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4udGVtcCxcclxuICAgICAgICB9O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRlbXAgPSB7XHJcbiAgICAgICAgICBlbGxpcHNpczogdHJ1ZSxcclxuICAgICAgICAgIC4uLnRlbXAsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICBkZWxldGUgdGVtcC5wcm9wcztcclxuXHJcbiAgICAgIC8vIHRlbXAuZWxsaXBzaXMgPSB0cnVlO1xyXG4gICAgICBpZiAodGVtcD8uY29sdW1uU2hvdyAhPT0gZmFsc2UpIHRhYmxlQ29sdW1uLnB1c2godGVtcCk7XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IHNlbGZCdXR0b25zOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IHsgYmFzZUFjdGlvbkNvbHVtbiB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgc2hvd0ljb24gPSB0cnVlO1xyXG4gICAgaWYgKGFjdGlvblBvcnBzPy5zaG93SWNvbiA9PT0gZmFsc2UpIHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBlbHNlIGlmIChiYXNlQWN0aW9uQ29sdW1uLnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGlmIChlZGl0b3JGb3JtID09IHRydWUpIHtcclxuICAgICAgaWYgKGJ1dHRvbnMuaW5kZXhPZihcInNlYXJjaFwiKSA+IC0xKSB7XHJcbiAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICBvbkNsaWNrPXsocmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAob25TaG93Rm9ybSkge1xyXG4gICAgICAgICAgICAgICAgb25TaG93Rm9ybShyZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCwgXCJkZXRhaWxcIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0Zvcm0ocmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsIFwiZGV0YWlsXCIpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICBpY29uPXs8RXllT3V0bGluZWQgLz59XHJcbiAgICAgICAgICAgIHR5cGU9e1wibGlua1wifVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICDmn6XnnItcclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGJ1dHRvbnMuaW5kZXhPZihcImVkaXRvclwiKSA+IC0xKSB7XHJcbiAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICBvbkNsaWNrPXsocmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAob25TaG93Rm9ybSkge1xyXG4gICAgICAgICAgICAgICAgb25TaG93Rm9ybShyZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCwgXCJlZGl0b3JcIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0Zvcm0ocmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsIFwiZWRpdG9yXCIpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICBpY29uPXs8RWRpdE91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICB0eXBlPVwibGlua1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIOe8lui+kVxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGJ1dHRvbnMuaW5kZXhPZihcImFkZFwiKSA+IC0xKSB7XHJcbiAgICAgIHNlbGZCdXR0b25zLnB1c2goXHJcbiAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgb25TaG93Rm9ybSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICAgICAgaWYgKG9uU2hvd0Zvcm0pIHtcclxuICAgICAgICAgICAgICBvblNob3dGb3JtKCk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0Zvcm0oKTtcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgICBpY29uPXs8UGx1c091dGxpbmVkIC8+fVxyXG4gICAgICAgID5cclxuICAgICAgICAgIOa3u+WKoFxyXG4gICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgaWYgKGJ1dHRvbnMuaW5kZXhPZihcImRlbGV0ZVwiKSA+IC0xKSB7XHJcbiAgICAgIGlmIChkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIikge1xyXG4gICAgICAgIHNlbGZCdXR0b25zLnB1c2goXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIC8vIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgICBvbkNsaWNrPXt0aGlzLm9uRGVsZXRlLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgIGljb249ezxEZWxldGVPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgZGFuZ2VyXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIOWIoOmZpFxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIGlmIChkZWxldGVQb3NpdGlvbiA9PSBcInJvd1wiKSB7XHJcbiAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAvLyB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgICAgb25DbGljaz17KHJlY29yZDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vbkRlbGV0ZShyZWNvcmQpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICBpY29uPXs8RGVsZXRlT3V0bGluZWQgLz59XHJcbiAgICAgICAgICAgIGRhbmdlclxyXG4gICAgICAgICAgICB0eXBlPVwibGlua1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIOWIoOmZpFxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbSkpIHtcclxuICAgICAgICAgIGl0ZW0ubWFwKChjaGlsZCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIikge1xyXG4gICAgICAgICAgICAgIHNlbGZCdXR0b25zLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjbG91bW5CdXR0b25cIikge1xyXG4gICAgICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoaXRlbT8ucHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiKSB7XHJcbiAgICAgICAgICAgIHNlbGZCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNsb3VtbkJ1dHRvblwiKSB7XHJcbiAgICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChjaGlsZHJlbikge1xyXG4gICAgICBjb25zdCB7IHByb3BzIH06IGFueSA9IGNoaWxkcmVuO1xyXG4gICAgICBpZiAocHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiKSB7XHJcbiAgICAgICAgc2VsZkJ1dHRvbnMucHVzaChjaGlsZHJlbik7XHJcbiAgICAgIH0gZWxzZSBpZiAocHJvcHM/LnBhZ2VUeXBlID09IFwiY2xvdW1uQnV0dG9uXCIpIHtcclxuICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBhY3Rpb25Db2x1bW4gJiZcclxuICAgICAgdGFibGVDb2x1bW4ucHVzaCh7XHJcbiAgICAgICAgdGl0bGU6IFwi5pON5L2cXCIsXHJcbiAgICAgICAgZGF0YUluZGV4OiBcImFjdGlvblwiLFxyXG4gICAgICAgIGFsaWduOiBhY3Rpb25Qb3Jwcz8udGV4dEFsaWduXHJcbiAgICAgICAgICA/IGFjdGlvblBvcnBzPy50ZXh0QWxpZ25cclxuICAgICAgICAgIDogYmFzZUFjdGlvbkNvbHVtbi50ZXh0QWxpZ25cclxuICAgICAgICAgID8gYmFzZUFjdGlvbkNvbHVtbi50ZXh0QWxpZ25cclxuICAgICAgICAgIDogXCJsZWZ0XCIsXHJcbiAgICAgICAgd2lkdGg6IGFjdGlvblBvcnBzPy53aWR0aFxyXG4gICAgICAgICAgPyBhY3Rpb25Qb3Jwcz8ud2lkdGhcclxuICAgICAgICAgIDogYmFzZUFjdGlvbkNvbHVtbi53aWR0aFxyXG4gICAgICAgICAgPyBiYXNlQWN0aW9uQ29sdW1uLndpZHRoXHJcbiAgICAgICAgICA6IDIwMCxcclxuICAgICAgICBmaXhlZDogXCJyaWdodFwiLFxyXG4gICAgICAgIHJlbmRlcjogKHRleHQ6IGFueSwgcmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtYWN0aW9uXCIpfT5cclxuICAgICAgICAgICAgICB7dGhpcy5yZW5kZXJDbG91bW5CdXR0b24oY29sdW1uQnV0dG9ucywgcmVjb3JkKX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG5cclxuICAgIGlmIChjb2x1bW5PcmRlcilcclxuICAgICAgdGFibGVDb2x1bW4gPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGl0bGU6IFwi5bqP5Y+3XCIsXHJcbiAgICAgICAgICB3aWR0aDogODAsXHJcbiAgICAgICAgICBhbGlnbjogXCJjZW50ZXJcIixcclxuICAgICAgICAgIHJlbmRlcjogKHRleHQsIHJlYWNvcmQsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiA8PntpbmRleCArIDF9PC8+O1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLnRhYmxlQ29sdW1uLFxyXG4gICAgICBdO1xyXG4gICAgbGV0IHNlYXJjaEZsYWcgPSBzaG93U2VhcmNoICYmIHNlYXJjaEZvcm1zLmxlbmd0aCA+IDA7XHJcbiAgICBsZXQgeyB0YWJsZVRvb2wgfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHRvb2xGbGFnID1cclxuICAgICAgc2hvd1Rvb2xCdXR0b24gJiZcclxuICAgICAgc2VsZkJ1dHRvbnMubGVuZ3RoID4gMCAmJlxyXG4gICAgICB0b29sQnV0dG9uUG9zaXRpb24gPT0gXCJidXR0b21cIjtcclxuICAgIGxldCB0b29sYmFyRmxhZyA9ICEoXHJcbiAgICAgIHRhYmxlUHJvcHMudG9vbGJhciA9PSBmYWxzZSB8fFxyXG4gICAgICB0YWJsZVByb3BzLnRvb2xiYXI/LnNob3cgPT0gZmFsc2UgfHxcclxuICAgICAgdGFibGVQcm9wcy50b29sYmFyPy50b29scz8ubGVuZ3RoID09IDAgfHxcclxuICAgICAgdGFibGVUb29sPy5zaG93ID09IGZhbHNlXHJcbiAgICApO1xyXG5cclxuICAgIGxldCBwYWdlSGVpZ2h0ID0gdGhpcy5wcm9wcy5wYWdlVHlwZSA9PSBcInRhYnNwYWdlXCIgPyA2MyA6IDA7XHJcbiAgICBsZXQgdGFibGVIZWFkZXJIZWlnaHQgPSA1NTtcclxuXHJcbiAgICBsZXQgaGVhZGVySGVpZ2h0ID0gc2hvd1NlYXJjaCAmJiBzZWFyY2hGb3Jtcy5sZW5ndGggPiAwID8gMTA0IDogMDtcclxuICAgIGxldCB0b29sSGVpZ2h0ID0gdGFibGVUaXRsZSB8fCB0b29sRmxhZyA/IDQ4IDogMDtcclxuICAgIGxldCBwYWRkaW5nSGVpZ2h0ID0gMjU7XHJcbiAgICBsZXQgdGFibGVDb250ZW50SGVpZ2h0ID1cclxuICAgICAgZWxlbWVudEhlaWdodCAtIGhlYWRlckhlaWdodCAtIHRvb2xIZWlnaHQgLSBwYWRkaW5nSGVpZ2h0IC0gcGFnZUhlaWdodDtcclxuICAgIGNvbnNvbGUubG9nKFwiZWxlbWVudEhlaWdodFwiLCBlbGVtZW50SGVpZ2h0KTtcclxuICAgIGxldCB0YWJsZUhlaWdodCA9IHRhYmxlQ29udGVudEhlaWdodCAtIDMyIC0gMzI7XHJcbiAgICBsZXQgdGFibGVTcm9sbEhlaWdodCA9IHRhYmxlQ29udGVudEhlaWdodCAtIHRhYmxlSGVhZGVySGVpZ2h0IC0gMzIgLSAzMjtcclxuICAgIGNvbnNvbGUubG9nKFwidGFibGVTcm9sbEhlaWdodFwiLCB0YWJsZVNyb2xsSGVpZ2h0KTtcclxuICAgIGlmICh0YWJsZVByb3BzLnBhZ2luYXRpb24gIT09IGZhbHNlKSB7XHJcbiAgICAgIGNvbnN0IHNjcm9sbCA9IHRhYmxlUGFyYW1zLnNjcm9sbDtcclxuICAgICAgdGFibGVQYXJhbXMgPSB7XHJcbiAgICAgICAgLi4udGFibGVQYXJhbXMsXHJcbiAgICAgICAgc2Nyb2xsOiB7IHg6IFwibWF4LWNvbnRlbnRcIiwgeTogdGFibGVTcm9sbEhlaWdodCwgLi4uc2Nyb2xsIH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyhcInRhYmxlUHJvcHNcIiwgdGFibGVQcm9wcyk7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlXCIpLCBjbGFzc05hbWUpfVxyXG4gICAgICAgIHJlZj17dGhpcy5wYWdlUmVmfVxyXG4gICAgICA+XHJcbiAgICAgICAge3RoaXMucHJvcHMucGFnZVRpdGxlICYmIChcclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRpdGxlXCIpKX0+XHJcbiAgICAgICAgICAgIHt0aGlzLnByb3BzLnBhZ2VUaXRsZX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICl9XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXBhbmVcIikpfVxyXG4gICAgICAgICAgc3R5bGU9e3sgZGlzcGxheTogXCJmbGV4XCIgfX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICB7c2hvd0xlZnQgJiYgKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWxlZnRcIil9PlxyXG4gICAgICAgICAgICAgIHt0cmVlVGl0bGUgJiYgKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInRyZWUtdGl0bGVcIil9Pnt0cmVlVGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJ0cmVlLWNvbnRlbnRcIiksIHtcclxuICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcInRyZWUtY29udGVudC1ub3RpdGxlXCIpXTogIXRyZWVUaXRsZSxcclxuICAgICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxUcmVlXHJcbiAgICAgICAgICAgICAgICAgIHN0b3JlPXt7IC4uLnRyZWVTdG9yZSB9fVxyXG4gICAgICAgICAgICAgICAgICBzaG93SWNvbj17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAgIGNoZWNrYWJsZT17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaGFibGU9e3RyZWVTZWFyY2h9XHJcbiAgICAgICAgICAgICAgICAgIG9uU2VsZWN0PXt0aGlzLnRyZWVTZWxlY3QuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRLZXlzPXtbdGhpcy5zdGF0ZS50cmVlU2VsZWN0ZWRLZXldfVxyXG4gICAgICAgICAgICAgICAgICB0aXRsZUFsaWFzPXt0aXRsZUFsaWFzfVxyXG4gICAgICAgICAgICAgICAgICB7Li4ub3RoZXJ0cmVlUGFyYW1zfVxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtcmlnaHRcIiksIHtcclxuICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLW5vLWxlZnQtcmlnaHRcIildOiAhc2hvd0xlZnQsXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd1NlYXJjaCAmJiBzZWFyY2hGb3Jtcy5sZW5ndGggPiAwICYmIChcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWhlYWRlcnNlYXJjaFwiKX0+XHJcbiAgICAgICAgICAgICAgICA8SGVhZGVyU2VhcmNoXHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEZvcm1zPXtzZWFyY2hGb3Jtc31cclxuICAgICAgICAgICAgICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uPXt0b29sQnV0dG9uUG9zaXRpb259XHJcbiAgICAgICAgICAgICAgICAgIG9uU2VhcmNoPXt0aGlzLm9uU2VhcmNoLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICAgIG9uUmVzZXQ9e3RoaXMucHJvcHMub25SZXNldH1cclxuICAgICAgICAgICAgICAgICAgcmVmPXt0aGlzLnNlYXJjaFJlZn1cclxuICAgICAgICAgICAgICAgICAgc2VhcmNoRm9ybVByb3BzPXt0aGlzLnByb3BzLnNlYXJjaEZvcm1Qcm9wc31cclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtY29udGVudFwiKSwge1xyXG4gICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb250ZW50LWdhcFwiKV06ICFzZWFyY2hGbGFnLFxyXG4gICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgeyh0YWJsZVRpdGxlIHx8IHRvb2xGbGFnKSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10YWJsZS10aXRsZVwiKSwge1xyXG4gICAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGl0bGUtd2lkdGhcIildOiAhdG9vbGJhckZsYWcsXHJcbiAgICAgICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2Pnt0YWJsZVRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICB7dG9vbEZsYWcgJiYgdGhpcy5yZW5kZXJUb29sQnV0dG9ucyhzZWxmQnV0dG9ucywgdG9vbGJhckZsYWcpfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKX1cclxuXHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoXHJcbiAgICAgICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10YWJsZVwiKSxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGFibGUtdG9wXCIpXTogIXRvb2xiYXJGbGFnLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10YWJsZS10b3AyXCIpXTpcclxuICAgICAgICAgICAgICAgICAgICAgIHRvb2xiYXJGbGFnICYmICF0b29sRmxhZyxcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IGhlaWdodDogdGFibGVDb250ZW50SGVpZ2h0IH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPFRhYmxlXHJcbiAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy50YWJsZVJlZn1cclxuICAgICAgICAgICAgICAgICAgY29sdW1ucz17dGFibGVDb2x1bW59XHJcbiAgICAgICAgICAgICAgICAgIGV4cGFuZGFibGU9e3tcclxuICAgICAgICAgICAgICAgICAgICBleHBhbmRJY29uOiAoeyBleHBhbmRlZCwgb25FeHBhbmQsIHJlY29yZCB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtleHBhbmRlZCA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEb3duT3V0bGluZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IG9uRXhwYW5kKHJlY29yZCwgZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJuc2MtYmFzZXBhZ2UtZXhwYW5kLWljb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNoaWxkTm9kZXMgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmlnaHRPdXRsaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiBvbkV4cGFuZChyZWNvcmQsIGUpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibnNjLWJhc2VwYWdlLWV4cGFuZC1pY29uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIC4uLmV4cGFuZGFibGUsXHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIGNvbHVtbk9yZGVyPXt0cnVlfVxyXG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHBhZ2luYXRpb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGN1cnJlbnRQYWdlIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UGFnZSAhPT0gcGFnaW5hdGlvbi5jdXJyZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFBhZ2U6IHBhZ2luYXRpb24uY3VycmVudCxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgdG9vbGJhcj17e1xyXG4gICAgICAgICAgICAgICAgICAgIG9uVG9vbENsaWNrOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvblJlZnJlc2g6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gdGhpcy5nZXRTZWFyY2hWYWx1ZXMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUxvYWQocGFyYW1zKTtcclxuICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAuLi50YWJsZVByb3BzLnRvb2xiYXIsXHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIHNob3dSb3dTZWxlY3Rpb249e3Nob3dSb3dTZWxlY3Rpb259XHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGhlaWdodDogdGFibGVIZWlnaHQgfX1cclxuICAgICAgICAgICAgICAgICAgey4uLnRhYmxlUGFyYW1zfVxyXG4gICAgICAgICAgICAgICAgICAvLyBwYWdpbmF0aW9uPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICB7LyogPGRpdj48L2Rpdj4gKi99XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICB7ZWRpdG9yRm9ybSAmJiAoXHJcbiAgICAgICAgICAgIDxFZGl0b3JGb3JtXHJcbiAgICAgICAgICAgICAgcmVmPXt0aGlzLmVkaXRvclJlZn1cclxuICAgICAgICAgICAgICBjYWxsQmFjaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25TdW1iaXRDYWxsQmFjayAmJlxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vblN1bWJpdENhbGxCYWNrKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlUmVsb2FkKCk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICBmb3JtUHJvcHM9e2VkaXRvckZvcm1zfVxyXG4gICAgICAgICAgICAgIHN1Ym1pdFVybD17c3VibWl0VXJsfVxyXG4gICAgICAgICAgICAgIHN1Ym1pdFBhcmFtcz17c3VibWl0UGFyYW1zfVxyXG4gICAgICAgICAgICAgIG9uU3VibWl0PXt0aGlzLnByb3BzLm9uU3VibWl0fVxyXG4gICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZT17ZGVmYXVsdFZhbHVlfVxyXG4gICAgICAgICAgICAgIG9uSGlkZUZvcm09e3RoaXMucHJvcHMub25IaWRlRm9ybX1cclxuICAgICAgICAgICAgICBvbkZvcm1DaGFuZ2U9e3RoaXMucHJvcHMub25Gb3JtQ2hhbmdlfVxyXG4gICAgICAgICAgICAgIGZvcm1UeXBlPXt0aGlzLnByb3BzLmZvcm1UeXBlIHx8IFwiYXV0b1wifVxyXG4gICAgICAgICAgICAgIGNoYW5nZVZhbGlkPXtmb3JtQ2hhbmdlVmFsaWR9XHJcbiAgICAgICAgICAgICAgb3RoZXJQcm9wcz17eyAuLi5mb3JtUHJvcHMgfX1cclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgQmFzZVBhZ2U7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFLLElBQUlDLGFBQWEsUUFBbUIsT0FBTztBQUN2RCxPQUFPQyxLQUFLLE1BQU0sa0JBQWtCO0FBQ3BDLE9BQU9DLElBQUksTUFBTSxpQkFBaUI7QUFDbEMsT0FBT0MsTUFBTSxNQUFNLG1CQUFtQjtBQUN0QyxPQUFPQyxLQUFLLE1BQU0sa0JBQWtCO0FBQ3BDLE9BQU9DLE9BQU8sTUFBTSxvQkFBb0I7QUFDeEMsT0FBT0MsT0FBTyxNQUFNLG9CQUFvQjtBQUN4QyxPQUFPQyxVQUFVLE1BQU0sUUFBUTtBQUMvQixPQUFPQyxHQUFHLE1BQU0sWUFBWTtBQUM1QixPQUFPLHFCQUFxQjtBQUU1QixTQUFTQyxLQUFLLFFBQVEsdUJBQXVCO0FBQzdDLFNBQ0VDLFlBQVksRUFDWkMsV0FBVyxFQUNYQyxZQUFZLEVBQ1pDLGFBQWEsRUFDYkMsWUFBWSxFQUNaQyxnQkFBZ0IsRUFDaEJDLGNBQWMsUUFDVCxtQkFBbUI7QUFDMUIsU0FBU0MsT0FBTyxRQUFpQixhQUFhO0FBQzlDLE9BQU9DLE9BQU8sTUFBTSxhQUFhO0FBRWpDLE9BQU9DLE1BQU0sTUFBTSxjQUFjO0FBQ2pDLFNBQVNDLFVBQVUsUUFBZSxtQkFBbUI7QUFFckQsT0FBT0MsWUFBWSxNQUFNLGlCQUFpQjtBQVcxQyxNQUFNQyxNQUFNLEdBQUcsSUFBSTtBQXFEbkIsTUFBTUMsUUFBUSxTQUFTdkIsYUFBYSxDQUF3QjtFQU8xRHdCLFdBQVdBLENBQUND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
|
|
937
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJUYWJsZSIsIlRyZWUiLCJCdXR0b24iLCJNb2RhbCIsIlBvcG92ZXIiLCJtZXNzYWdlIiwiRWRpdG9yRm9ybSIsImNscyIsInV0aWxzIiwiRG93bk91dGxpbmVkIiwiRXllT3V0bGluZWQiLCJFZGl0T3V0bGluZWQiLCJSaWdodE91dGxpbmVkIiwiUGx1c091dGxpbmVkIiwiRWxsaXBzaXNPdXRsaW5lZCIsIkRlbGV0ZU91dGxpbmVkIiwiZ2V0TGVzcyIsInJlcXVlc3QiLCJjb25maWciLCJnZXRTdG9yYWdlIiwiSGVhZGVyU2VhcmNoIiwic3R5bGVzIiwiQmFzZVBhZ2UiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX3R5cGUiLCJfc2l6ZSIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsImNoZWNrZWRUcmVlS2V5cyIsIm5hbWUiLCJ1c2VyVHlwZSIsImFjY291bnQiLCJzdGF0ZSIsInZhbHVlIiwiZGVwdElkIiwib25TZWFyY2giLCJzZWxlY3RlZCIsInJlcyIsImtleSIsImtleXMiLCJsZW5ndGgiLCJzdG9yZVByZWZpeCIsInR5cGUiLCJjb250ZW50Iiwic2l6ZSIsInNlbGVjdGVkUm93S2V5cyIsInNlbGVjdGVkUm93RGF0YXMiLCJ0cmVlU2VsZWN0ZWRLZXkiLCJleHBhbmQiLCJmb3JtVHlwZSIsInRhYmxlU2l6ZSIsInRyZWVTZWFyY2hQcmFtcyIsInBvcG9wZW5zIiwiZWxlbWVudEhlaWdodCIsImNvbXBvbmVudERpZE1vdW50IiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50IiwiaW5pdERhdGEiLCJwYWdlUmVmIiwiY3VycmVudCIsImNsaWVudEhlaWdodCIsInNldFN0YXRlIiwic2V0U2VhcmNoUGFyYW1zIiwicGFyYW1zIiwiY2FsbEJhY2siLCJfdGhpcyRzZWFyY2hSZWYkY3VycmUiLCJzZWFyY2hSZWYiLCJzaG93Rm9ybSIsIl90aGlzJGVkaXRvclJlZiRjdXJyZSIsImVkaXRvcmZsYWciLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJlZGl0b3JSZWYiLCJzaG93IiwiX29iamVjdFNwcmVhZCIsImhpZGVGb3JtIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlMiIsInNldExvYWRpbmciLCJsb2FkaW5nIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlMyIsInNldEVkaXRGb3JtVmFsdWVzIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlNCIsInNldEZpZWxkc1ZhbHVlIiwiZ2V0RWRpdEZvcm1WYWx1ZXMiLCJfdGhpcyRlZGl0b3JSZWYkY3VycmU1IiwiZ2V0RmllbGRzVmFsdWUiLCJvbkRlbGV0ZSIsImRhdGEiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4iLCJkZWxldGVVcmwiLCJkZWxldGVQYXJhbXMiLCJkZWxldGVQb3NpdGlvbiIsIl90aGlzIiwidGFibGVSZWYiLCJnZXRTZWxlY3RlZFJvd0tleXMiLCJ3YXJuaW5nIiwiY29uZmlybSIsIm9uT2siLCJFcnJvciIsImRlZmF1bHRQYXJhbXMiLCJtZXRob2QiLCJhdXRvUHJlZml4IiwiaWRzIiwiam9pbiIsImlkIiwicmVxdWVzdFBhcmFtcyIsInRoZW4iLCJjb2RlIiwiX3RoaXMkc2VhcmNoUmVmIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjMiIsInN1Y2Nlc3MiLCJnZXRTZWFyY2hWYWx1ZXMiLCJvbkNhbGxCYWNrcyIsIm9uRGVsZXRlQ2FsbEJhY2siLCJ0YWJsZUxvYWQiLCJlcnJvciIsImNhdGNoIiwiY29uc29sZSIsImxvZyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjIiLCJyZXF1ZXN0Q29uZmlnIiwic3RvcmUiLCJsb2FkIiwib25TZWFyY2hDYWxsQmFjayIsImNhbGxiYWNrIiwidGFibGVSZWxvYWQiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4zIiwiYXV0b0xvYWQiLCJyZWxvYWQiLCJfcmVzJGRhdGEiLCJyZWNvcmRzIiwiY3VycmVudFBhZ2UiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW40IiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNSIsImdldFNlbGVjdGVkUm93RGF0YXMiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW42IiwicmVzZXRTZWxlY3RlZFJvd0tleXMiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW43IiwiX3RoaXMkc2VhcmNoUmVmMiIsImZyb21WYWx1ZSIsImdldENoaWxkcmVuRGF0YSIsInRhYmxlUHJvcHMiLCJyb3dLZXkiLCJyZXNLZXkiLCJjaGlsZE5vZGVzIiwiY2hpbGRyZW4iLCJtYXAiLCJpdGVtIiwiaW5kZXgiLCJyZW5kZXJUb29sQnV0dG9ucyIsInRvb2xidXR0b25zIiwidG9vbGJhckZsYWciLCJmbGFnIiwicmV2ZXJzZSIsInNob3dTZWFyY2giLCJfaXRlbSRwcm9wcyIsInBhZ2VUeXBlIiwib25DbGljayIsImljb24iLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJjcmVhdGVFbGVtZW50IiwiX2V4dGVuZHMiLCJjbGFzc05hbWUiLCJzdHlsZSIsIm1hcmdpbkxlZnQiLCJ0aXRsZSIsInBsYWNlbWVudCIsInRyaWdnZXIiLCJyZW5kZXJDbG91bW5CdXR0b24iLCJjb2x1bW5CdXR0b25zIiwicmVjb3JkIiwiYWN0aW9uUG9ycHMiLCJiYXNlQWN0aW9uQ29sdW1uIiwibmV3QnV0dG9ucyIsInNob3dJY29uIiwiX2l0ZW0kcHJvcHMyIiwicmVjb3JkU2hvdyIsIl9leGNsdWRlZDIiLCJldmFsIiwicHVzaCIsIl9pdGVtJHByb3BzMyIsIl9leGNsdWRlZDMiLCJfaXRlbSRwcm9wczQiLCJfZXhjbHVkZWQ0Iiwib3BlbiIsIm9uT3BlbkNoYW5nZSIsInRyZWVTZWxlY3QiLCJzZWxlY3RlZEtleXMiLCJvYmoiLCJfdGhpcyRzZWFyY2hSZWYzIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjMyIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzQiLCJrZXl3b3JkIiwic2VhcmNoS2V5Iiwic2VhcmNoRmllbGQiLCJwYXJhbnRTZWxlY3QiLCJ0cmVlUHJvcHMiLCJzZWxlY3RlZE5vZGVzIiwiZGF0YXJlZiIsImF0dHJpYnV0ZSIsImlzTGVhZiIsIm9uVHJlZVNlbGVjdCIsInRyZWVTZWxlY3RDYWxsQmFjayIsInJlc2V0U2VhcmNoIiwiX3RoaXMkc2VhcmNoUmVmJGN1cnJlMiIsInJlc2V0RmllbGRzIiwiZ2V0VGV4dCIsInRleHQiLCJfcHJvcHMkZGF0YSIsIm5ld1RleHQiLCJpIiwibGFiZWwiLCJzZXRUYWJsZURhdGEiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW44Iiwic2V0RGF0YSIsInNldFRyZWVEYXRhIiwiX3RoaXMkdHJlZVJlZiRjdXJyZW50IiwidHJlZVJlZiIsInJlbmRlciIsIl90YWJsZVByb3BzJHRvb2xiYXIiLCJfdGFibGVQcm9wcyR0b29sYmFyMiIsImNvbHVtbnMiLCJzdWJtaXRVcmwiLCJmb3JtUHJvcHMiLCJzaG93TGVmdCIsInN1Ym1pdFBhcmFtcyIsInNob3dUb29sQnV0dG9uIiwiYnV0dG9ucyIsImVkaXRvckZvcm0iLCJvblNob3dGb3JtIiwiZm9ybUNoYW5nZVZhbGlkIiwidG9vbEJ1dHRvblBvc2l0aW9uIiwiZmlsdGVyQ29sdW1uIiwiYWN0aW9uQ29sdW1uIiwic2hvd1Jvd1NlbGVjdGlvbiIsImNvbHVtbk9yZGVyIiwiZXhwYW5kYWJsZSIsInRhYmxlVGl0bGUiLCJvdGhlcnRhYmxlUGFyYW1zIiwiX2V4Y2x1ZGVkNSIsInRyZWVTdG9yZSIsInRyZWVTZWFyY2giLCJ0aXRsZUFsaWFzIiwidHJlZVRpdGxlIiwib3RoZXJ0cmVlUGFyYW1zIiwiX2V4Y2x1ZGVkNiIsInRhYmxlUGFyYW1zIiwidGFibGVDb2x1bW4iLCJzZWFyY2hGb3JtcyIsImVkaXRvckZvcm1zIiwiZGVmYXVsdFZhbHVlIiwiX3RlbXAkc2VhcmNoIiwiX3RlbXAkcHJvcHMiLCJfdGVtcCRwcm9wczIiLCJfdGVtcCIsInRlbXAiLCJ3aWR0aCIsInNlYXJjaCIsIl90ZW1wJHNlYXJjaDIiLCJfdGVtcCRzZWFyY2gzIiwiX3RlbXAkc2VhcmNoNCIsImZpZWxkIiwiZGF0YUluZGV4IiwibGFiZWxDb2wiLCJ3cmFwcGVyQ29sIiwicnVsZXMiLCJzZWFyY2hSdWxlcyIsImVkaXRvciIsInNwYW4iLCJkaWN0TmFtZSIsIl90ZW1wJHByb3BzMyIsImNvbHVtblNlYXJjaCIsImZpbHRlclByb3BzIiwidGVtcFByb3AiLCJGcmFnbWVudCIsImVsbGlwc2lzIiwic2hvd1RpdGxlIiwiY29sdW1uU2hvdyIsInNlbGZCdXR0b25zIiwiaW5kZXhPZiIsImJpbmQiLCJkYW5nZXIiLCJBcnJheSIsImlzQXJyYXkiLCJjaGlsZCIsIl9jaGlsZCRwcm9wcyIsIl9jaGlsZCRwcm9wczIiLCJfaXRlbSRwcm9wczUiLCJfaXRlbSRwcm9wczYiLCJhbGlnbiIsInRleHRBbGlnbiIsImZpeGVkIiwicmVhY29yZCIsInNlYXJjaEZsYWciLCJ0YWJsZVRvb2wiLCJ0b29sRmxhZyIsInRvb2xiYXIiLCJ0b29scyIsInBhZ2VIZWlnaHQiLCJ0YWJsZUhlYWRlckhlaWdodCIsImhlYWRlckhlaWdodCIsInRvb2xIZWlnaHQiLCJwYWRkaW5nSGVpZ2h0IiwidGFibGVDb250ZW50SGVpZ2h0IiwidGFibGVIZWlnaHQiLCJ0YWJsZVNyb2xsSGVpZ2h0IiwicGFnaW5hdGlvbiIsInNjcm9sbCIsIngiLCJ5IiwicmVmIiwicGFnZVRpdGxlIiwiZGlzcGxheSIsImNoZWNrYWJsZSIsInNlYXJjaGFibGUiLCJvblNlbGVjdCIsIm9uUmVzZXQiLCJzZWFyY2hGb3JtUHJvcHMiLCJoZWlnaHQiLCJleHBhbmRJY29uIiwiX3JlZiIsImV4cGFuZGVkIiwib25FeHBhbmQiLCJlIiwib25DaGFuZ2UiLCJvblRvb2xDbGljayIsIm9uUmVmcmVzaCIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzUiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM2Iiwib25TdW1iaXRDYWxsQmFjayIsIm9uU3VibWl0Iiwib25IaWRlRm9ybSIsIm9uRm9ybUNoYW5nZSIsImNoYW5nZVZhbGlkIiwib3RoZXJQcm9wcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BhZ2UvQmFzZVBhZ2UvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50LCBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IFRhYmxlIGZyb20gXCIuLi8uLi9iYXNlL3RhYmxlXCI7XHJcbmltcG9ydCBUcmVlIGZyb20gXCIuLi8uLi9iYXNlL3RyZWVcIjtcclxuaW1wb3J0IEJ1dHRvbiBmcm9tIFwiLi4vLi4vYmFzZS9idXR0b25cIjtcclxuaW1wb3J0IE1vZGFsIGZyb20gXCIuLi8uLi9iYXNlL21vZGFsXCI7XHJcbmltcG9ydCBQb3BvdmVyIGZyb20gXCIuLi8uLi9iYXNlL3BvcG92ZXJcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uLy4uL2Jhc2UvbWVzc2FnZVwiO1xyXG5pbXBvcnQgRWRpdG9yRm9ybSBmcm9tIFwiLi9Gb3JtXCI7XHJcbmltcG9ydCBjbHMgZnJvbSBcImNsYXNzbmFtZXNcIjtcclxuaW1wb3J0IFwiLi9pbmRleC5tb2R1bGUubGVzc1wiO1xyXG5pbXBvcnQgU3RvcmUsIHsgUGFnZVN0b3JlLCBTdG9yZVByb3BzIH0gZnJvbSBcIkBiai1uc2MvbXNuXCI7XHJcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSBcIkBiai1uc2MvbXNuL2xpYi91dGlsc1wiO1xyXG5pbXBvcnQge1xyXG4gIERvd25PdXRsaW5lZCxcclxuICBFeWVPdXRsaW5lZCxcclxuICBFZGl0T3V0bGluZWQsXHJcbiAgUmlnaHRPdXRsaW5lZCxcclxuICBQbHVzT3V0bGluZWQsXHJcbiAgRWxsaXBzaXNPdXRsaW5lZCxcclxuICBEZWxldGVPdXRsaW5lZCxcclxufSBmcm9tIFwiQGFudC1kZXNpZ24vaWNvbnNcIjtcclxuaW1wb3J0IHsgZ2V0TGVzcywgZ2V0Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgcmVxdWVzdCBmcm9tIFwibnNjLXJlcXVlc3RcIjtcclxuaW1wb3J0IG9taXQgZnJvbSBcIm9taXQuanNcIjtcclxuaW1wb3J0IGNvbmZpZyBmcm9tIFwiLi4vLi4vY29uZmlnXCI7XHJcbmltcG9ydCB7IGdldFN0b3JhZ2UsIHB4MnZ3IH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCB7IElGb3JtUHJvcHMgfSBmcm9tIFwiLi4vLi4vYmFzZS9mb3JtL0Zvcm1cIjtcclxuaW1wb3J0IEhlYWRlclNlYXJjaCBmcm9tIFwiLi4vSGVhZGVyU2VhcmNoXCI7XHJcbmltcG9ydCB7IFBhZ2luYXRpb25Qcm9wcyB9IGZyb20gXCJhbnRkXCI7XHJcbmludGVyZmFjZSBUYWJsZVByb3BzIHtcclxuICBhY3Rpb25Db2x1bW4/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/OiBhbnk7XHJcbiAgfTtcclxuICBwYWdlVHlwZT86IFwibm9ybWFsXCIgfCBcInRhYnNwYWdlXCI7XHJcbn1cclxuXHJcbmNsYXNzIEJhc2VQYWdlIGV4dGVuZHMgUHVyZUNvbXBvbmVudDxOU0NCYXNlQmFnZVByb3BzLCBhbnk+IHtcclxuICB0YWJsZVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgdHJlZVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgc2VhcmNoUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBlZGl0b3JSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHBhZ2VSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIGRhdGVGb3JtYXQgPSB7fSBhcyBhbnk7XHJcbiAgY29uc3RydWN0b3IocHJvcHM6IGFueSkge1xyXG4gICAgc3VwZXIocHJvcHMpO1xyXG4gICAgbGV0IHsgc3RvcmVQcmVmaXggfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHR5cGUgPSBnZXRTdG9yYWdlKFxyXG4gICAgICBzdG9yZVByZWZpeCA/IHN0b3JlUHJlZml4ICsgXCItXCIgKyBcImZvcm1UeXBlXCIgOiBcImZvcm1UeXBlXCJcclxuICAgICk7XHJcbiAgICB0eXBlID0gdHlwZT8uY29udGVudDtcclxuICAgIGxldCBzaXplID0gZ2V0U3RvcmFnZShcclxuICAgICAgc3RvcmVQcmVmaXggPyBzdG9yZVByZWZpeCArIFwiLVwiICsgXCJ0YWJsZVNpemVcIiA6IFwidGFibGVTaXplXCJcclxuICAgICk7XHJcbiAgICBzaXplID0gc2l6ZT8uY29udGVudDtcclxuICAgIHRoaXMuc3RhdGUgPSB7XHJcbiAgICAgIHR5cGU6IFwiYWRkXCIsXHJcbiAgICAgIHNlbGVjdGVkUm93S2V5czogW10sXHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXM6IFtdLFxyXG4gICAgICB0cmVlU2VsZWN0ZWRLZXk6IFwiXCIsXHJcbiAgICAgIGV4cGFuZDogZmFsc2UsXHJcbiAgICAgIGZvcm1UeXBlOiB0eXBlIHx8IFwibW9kYWxcIixcclxuICAgICAgdGFibGVTaXplOiBzaXplIHx8IFwiZGVmYXVsdFwiLFxyXG4gICAgICB0cmVlU2VhcmNoUHJhbXM6IHt9LFxyXG4gICAgICBwb3BvcGVuczoge30sXHJcbiAgICAgIGVsZW1lbnRIZWlnaHQ6IDAsXHJcbiAgICB9O1xyXG4gIH1cclxuICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgIGNvbnN0IHsgaW5pdERhdGEgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBlbGVtZW50SGVpZ2h0ID0gdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LmNsaWVudEhlaWdodDtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBlbGVtZW50SGVpZ2h0LFxyXG4gICAgfSk7XHJcbiAgICBpbml0RGF0YSAmJiBpbml0RGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0U2VhcmNoUGFyYW1zKHBhcmFtcywgY2FsbEJhY2spIHtcclxuICAgIHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LnNldFNlYXJjaFBhcmFtcyhwYXJhbXMpO1xyXG4gICAgY2FsbEJhY2sgJiYgY2FsbEJhY2socGFyYW1zKTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0ID0gKGNoZWNrZWRUcmVlS2V5czogYW55KSA9PiB7XHJcbiAgICBjb25zdCB7IG5hbWUsIHVzZXJUeXBlLCBhY2NvdW50IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgdmFsdWUgPSB7IG5hbWUsIHVzZXJUeXBlLCBhY2NvdW50LCBkZXB0SWQ6IGNoZWNrZWRUcmVlS2V5c1swXSB9O1xyXG4gICAgaWYgKHRoaXMucHJvcHMub25TZWFyY2gpIHtcclxuICAgICAgdGhpcy5wcm9wcy5vblNlYXJjaCh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICAvLyB0aGlzLnRhYmxlTG9hZCh2YWx1ZSk7XHJcbiAgfTtcclxuXHJcbiAgLy/mmL7npLrooajljZVcclxuICBzaG93Rm9ybSh2YWx1ZT86IGFueSwgZWRpdG9yZmxhZyA9IFwiYWRkXCIpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LnNob3coeyAuLi52YWx1ZSB9LCBlZGl0b3JmbGFnKTtcclxuICB9XHJcblxyXG4gIC8v5YWz6Zet6KGo5Y2VXHJcbiAgaGlkZUZvcm0oKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5oaWRlRm9ybSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0TG9hZGluZyhsb2FkaW5nOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5zZXRMb2FkaW5nKGxvYWRpbmcpO1xyXG4gIH1cclxuXHJcbiAgc2V0RWRpdEZvcm1WYWx1ZXModmFsdWUpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LnNldEZpZWxkc1ZhbHVlKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIGdldEVkaXRGb3JtVmFsdWVzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LmdldEZpZWxkc1ZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICAvL+aJuemHj+WIoOmZpFxyXG4gIG9uRGVsZXRlKGRhdGE/OiBhbnkpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgZGVsZXRlVXJsLFxyXG4gICAgICBvbkRlbGV0ZSxcclxuICAgICAgZGVsZXRlUGFyYW1zLFxyXG4gICAgICBkZWxldGVQb3NpdGlvbiA9IFwidG9vbGJhclwiLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRSb3dLZXlzID0gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5nZXRTZWxlY3RlZFJvd0tleXMoKTtcclxuICAgIGlmIChkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIikge1xyXG4gICAgICBpZiAoc2VsZWN0ZWRSb3dLZXlzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgbWVzc2FnZS53YXJuaW5nKFwi6K+36YCJ5oup6KaB5Yig6Zmk55qE5pWw5o2u77yBXCIpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgTW9kYWwuY29uZmlybSh7XHJcbiAgICAgIGNvbnRlbnQ6IFwi5piv5ZCm56Gu6K6k5Yig6Zmk5omA6YCJ6aG577yfXCIsXHJcbiAgICAgIC8vIGNlbnRlcmVkOnRydWUsXHJcbiAgICAgIG9uT2s6ICgpID0+IHtcclxuICAgICAgICBpZiAob25EZWxldGUpIHtcclxuICAgICAgICAgIG9uRGVsZXRlICYmXHJcbiAgICAgICAgICAgIG9uRGVsZXRlKGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiID8gc2VsZWN0ZWRSb3dLZXlzIDogZGF0YSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghZGVsZXRlVXJsKSB7XHJcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1cmzkuI3og73kuLrnqbrvvIFcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGRlZmF1bHRQYXJhbXMgPSB7XHJcbiAgICAgICAgICBtZXRob2Q6IFwicG9zdFwiLFxyXG4gICAgICAgICAgYXV0b1ByZWZpeDogdHJ1ZSxcclxuICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICBpZHM6IGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiID8gc2VsZWN0ZWRSb3dLZXlzLmpvaW4oKSA6IGRhdGEuaWQsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgbGV0IHJlcXVlc3RQYXJhbXMgPSB7fSBhcyBhbnk7XHJcbiAgICAgICAgaWYgKGRlZmF1bHRQYXJhbXMpIHtcclxuICAgICAgICAgIHJlcXVlc3RQYXJhbXMgPSB7IC4uLmRlbGV0ZVBhcmFtcyB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXF1ZXN0UGFyYW1zID0geyAuLi5kZWZhdWx0UGFyYW1zIH07XHJcbiAgICAgICAgcmVxdWVzdChkZWxldGVVcmwsIHtcclxuICAgICAgICAgIC4uLnJlcXVlc3RQYXJhbXMsXHJcbiAgICAgICAgfSlcclxuICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXM6IGFueSkge1xyXG4gICAgICAgICAgICBjb25zdCB7IGNvZGUgfSA9IHJlcztcclxuICAgICAgICAgICAgaWYgKGNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgIG1lc3NhZ2Uuc3VjY2VzcyhcIuWIoOmZpOaIkOWKn++8gVwiKTtcclxuICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBfdGhpcy5zZWFyY2hSZWY/LmN1cnJlbnQ/LmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgICAgICAgICAgIF90aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vbkRlbGV0ZUNhbGxCYWNrICYmXHJcbiAgICAgICAgICAgICAgICBfdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25EZWxldGVDYWxsQmFjaygpO1xyXG4gICAgICAgICAgICAgIF90aGlzLnRhYmxlTG9hZCh2YWx1ZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgbWVzc2FnZS5lcnJvcihcIuWIoOmZpOWksei0pe+8gVwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3I6IGFueSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yXCIsIGVycm9yKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHRhYmxlTG9hZChwYXJhbXM6IGFueSwgcmVxdWVzdENvbmZpZyA9IHt9KSB7XHJcbiAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlLmxvYWQoe1xyXG4gICAgICAuLi5yZXF1ZXN0Q29uZmlnLFxyXG4gICAgICBwYXJhbXM6IHBhcmFtcyxcclxuICAgIH0pO1xyXG4gIH1cclxuICAvL+afpeivolxyXG4gIG9uU2VhcmNoKHBhcmFtcykge1xyXG4gICAgY29uc3QgeyBvblNlYXJjaCwgb25DYWxsQmFja3MgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAob25TZWFyY2gpIHtcclxuICAgICAgb25TZWFyY2goeyAuLi5wYXJhbXMsIC4uLnRoaXMuc3RhdGUudHJlZVNlYXJjaFByYW1zIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnRhYmxlTG9hZCh7IC4uLnBhcmFtcywgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfSk7XHJcbiAgICBvbkNhbGxCYWNrcz8ub25TZWFyY2hDYWxsQmFjayAmJlxyXG4gICAgICB1dGlscy5jYWxsYmFjayhvbkNhbGxCYWNrcz8ub25TZWFyY2hDYWxsQmFjaywgdGhpcywgW3BhcmFtc10pO1xyXG4gIH1cclxuICAvL+ihqOagvOmHjeaWsOWKoOi9vVxyXG4gIHRhYmxlUmVsb2FkKHBhcmFtcyA9IHt9LCBhdXRvTG9hZCA9IHRydWUpIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmU/LnJlbG9hZCh7XHJcbiAgICAgIGNhbGxiYWNrOiAocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgYXV0b0xvYWQgJiZcclxuICAgICAgICAgIHJlcz8uZGF0YT8ucmVjb3Jkcz8ubGVuZ3RoID09IDAgJiZcclxuICAgICAgICAgIHRoaXMuc3RhdGUuY3VycmVudFBhZ2UgIT09IDFcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmU/LnJlbG9hZCh7XHJcbiAgICAgICAgICAgIHBhcmFtczogeyBjdXJyZW50OiAxLCAuLi5wYXJhbXMgfSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0tleXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5nZXRTZWxlY3RlZFJvd0tleXMoKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRSb3dEYXRhcygpIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93RGF0YXMoKTtcclxuICB9XHJcbiAgcmVzZXRTZWxlY3RlZFJvd0tleXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5yZXNldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VhcmNoVmFsdWVzKCkge1xyXG4gICAgY29uc3QgZnJvbVZhbHVlID0gdGhpcy5zZWFyY2hSZWY/LmN1cnJlbnQ/LmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgcmV0dXJuIHsgLi4uZnJvbVZhbHVlLCAuLi50aGlzLnN0YXRlLnRyZWVTZWFyY2hQcmFtcyB9O1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2hpbGRyZW5EYXRhKGRhdGEsIGtleXMgPSBbXSkge1xyXG4gICAgY29uc3QgeyB0YWJsZVByb3BzIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyByb3dLZXkgPSBcImlkXCIgfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQgcmVzS2V5ID0gW107XHJcbiAgICBpZiAoZGF0YS5jaGlsZE5vZGVzKSB7XHJcbiAgICAgIGNvbnN0IGNoaWxkcmVuID0gZGF0YS5jaGlsZE5vZGVzO1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0uY2hpbGROb2Rlcykge1xyXG4gICAgICAgICAgdGhpcy5nZXRDaGlsZHJlbkRhdGEoaXRlbS5jaGlsZE5vZGVzLCBrZXlzKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVzS2V5ID0gWy4uLmtleXMsIGl0ZW1bcm93S2V5XV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJlc0tleSA9IFsuLi5rZXlzLCBkYXRhW3Jvd0tleV1dO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc0tleTtcclxuICB9XHJcblxyXG4gIHJlbmRlclRvb2xCdXR0b25zKHRvb2xidXR0b25zOiBhbnksIHRvb2xiYXJGbGFnKSB7XHJcbiAgICBjb25zdCBmbGFnID0gdG9vbGJ1dHRvbnMubGVuZ3RoID4gNTtcclxuICAgIHRvb2xidXR0b25zID0gWy4uLnRvb2xidXR0b25zXS5yZXZlcnNlKCk7XHJcbiAgICBjb25zdCB7IHNob3dTZWFyY2ggPSB0cnVlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgY29udGVudCA9IHRvb2xidXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCBpY29uLCBzaG93LCAuLi5wYXJhbXMgfSA9IGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChpbmRleCA+IDMpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpLFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb250ZW50LWl0ZW1cIilcclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljaygpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1pY29uXCIpfT57aWNvbn08L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRleHRcIil9PlxyXG4gICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRvb2wtYnV0dG9uc1wiKSl9XHJcbiAgICAgICAgc3R5bGU9e3sgbWFyZ2luTGVmdDogMCB9fVxyXG4gICAgICA+XHJcbiAgICAgICAge3Rvb2xidXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZmxhZykge1xyXG4gICAgICAgICAgICBpZiAoaW5kZXggPCA0KSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIDxkaXYga2V5PXtpbmRleH0+e2l0ZW19PC9kaXY+O1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID09IDQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPFBvcG92ZXJcclxuICAgICAgICAgICAgICAgICAgY29udGVudD17Y29udGVudH1cclxuICAgICAgICAgICAgICAgICAgdGl0bGU9e251bGx9XHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgICAgIHRyaWdnZXI9e1tcImNsaWNrXCJdfVxyXG4gICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgICAvLyBvdmVybGF5Q2xhc3NOYW1lPXtzdHlsZXNbJ3BvcC1ib3gnXX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPEJ1dHRvbiB0eXBlPVwicHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIOabtOWkmiA8RG93bk91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9Qb3BvdmVyPlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiA8ZGl2IGtleT17aW5kZXh9PntpdGVtfTwvZGl2PjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KX1cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxuICByZW5kZXJDbG91bW5CdXR0b24oY29sdW1uQnV0dG9uczogYW55LCByZWNvcmQ6IGFueSkge1xyXG4gICAgY29uc3QgeyBhY3Rpb25Qb3JwcyB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgYmFzZUFjdGlvbkNvbHVtbiB9ID0gY29uZmlnKCk7XHJcbiAgICBjb25zdCBuZXdCdXR0b25zID0gW107XHJcbiAgICBsZXQgc2hvd0ljb24gPSB0cnVlO1xyXG4gICAgY29uc29sZS5sb2coXCJjb2x1bW5CdXR0b25zXCIsIGNvbHVtbkJ1dHRvbnMpO1xyXG4gICAgaWYgKGFjdGlvblBvcnBzPy5zaG93SWNvbiA9PT0gZmFsc2UpIHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBlbHNlIGlmIChiYXNlQWN0aW9uQ29sdW1uLnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGNvbHVtbkJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIGljb24sIHJlY29yZFNob3csIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAocmVjb3JkU2hvdykge1xyXG4gICAgICAgIGlmICh0eXBlb2YgcmVjb3JkU2hvdyA9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICBpZiAoZXZhbChyZWNvcmRTaG93KSkge1xyXG4gICAgICAgICAgICBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcmVjb3JkU2hvdyA9PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgIGNvbnN0IHNob3cgPSByZWNvcmRTaG93KHJlY29yZCk7XHJcbiAgICAgICAgICBzaG93ICYmIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IGZsYWcgPSBuZXdCdXR0b25zLmxlbmd0aCA+IDM7XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IG5ld0J1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIHJlY29yZFNob3csIGljb24sIHNob3csIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoaW5kZXggPiAyKSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKSxcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtY29udGVudC1pdGVtXCIpXHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICBsZXQgZGF0YSA9IHsgLi4udGhpcy5zdGF0ZS5wb3BvcGVucyB9O1xyXG4gICAgICAgICAgICAgIGRhdGFbcmVjb3JkLmlkXSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgcG9wb3BlbnM6IGRhdGEsXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJlY29yZCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICAgIHR5cGU9e1wibGlua1wifVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd0ljb24gIT09IGZhbHNlICYmIChcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1pY29uXCIpfT5cclxuICAgICAgICAgICAgICAgIHtpY29ufVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAge2NoaWxkcmVufVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zb2xlLmxvZyhcIm5ld0J1dHRvbnNcIiwgbmV3QnV0dG9ucyk7XHJcblxyXG4gICAgcmV0dXJuIG5ld0J1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIHJlY29yZFNob3csIGljb24sIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoZmxhZykge1xyXG4gICAgICAgIGlmIChpbmRleCA8IDMpIHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpLCB7XHJcbiAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvci1maXJzdFwiKV06IGluZGV4ID09PSAwLFxyXG4gICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJlY29yZCk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICAgIHR5cGU9e1wibGlua1wifVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1pY29uXCIpfT5cclxuICAgICAgICAgICAgICAgICAge2ljb259XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID09IDMpIHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxQb3BvdmVyXHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICB0aXRsZT17bnVsbH1cclxuICAgICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICAgIHRyaWdnZXI9e1tcImNsaWNrXCJdfVxyXG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgb3Blbj17dGhpcy5zdGF0ZS5wb3BvcGVuc1tyZWNvcmQuaWRdIHx8IGZhbHNlfVxyXG4gICAgICAgICAgICAgIG9uT3BlbkNoYW5nZT17KG9wZW4pID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChvcGVuKSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0geyAuLi50aGlzLnN0YXRlLnBvcG9wZW5zIH07XHJcbiAgICAgICAgICAgICAgICAgIGRhdGFbcmVjb3JkLmlkXSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHBvcG9wZW5zOiBkYXRhLFxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHBvcG9wZW5zOiB7fSxcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAvLyBvdmVybGF5Q2xhc3NOYW1lPXtzdHlsZXNbJ3BvcCddfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpfT5cclxuICAgICAgICAgICAgICAgIDxFbGxpcHNpc091dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJhYWFhXCIpO1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksIHtcclxuICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvci1maXJzdFwiKV06IGluZGV4ID09PSAwLFxyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyZWNvcmQpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICB0eXBlPXtcImxpbmtcIn1cclxuICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICB7aWNvbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRleHRcIil9PlxyXG4gICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG4gIC8v5qCR54K55Ye75LqL5Lu2XHJcbiAgdHJlZVNlbGVjdChzZWxlY3RlZEtleXM6IGFueSwgb2JqOiBhbnkpIHtcclxuICAgIGxldCBrZXl3b3JkID0gXCJcIjtcclxuICAgIGNvbnN0IHtcclxuICAgICAgc2VhcmNoS2V5ID0gXCJrZXlcIixcclxuICAgICAgc2VhcmNoRmllbGQgPSBcIlwiLFxyXG4gICAgICBwYXJhbnRTZWxlY3QgPSB0cnVlLFxyXG4gICAgfSA9IHRoaXMucHJvcHMudHJlZVByb3BzO1xyXG4gICAgY29uc3QgeyB0cmVlU2VsZWN0ZWRLZXkgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IHNlbGVjdGVkLCBzZWxlY3RlZE5vZGVzIH0gPSBvYmo7XHJcblxyXG4gICAgaWYgKHNlbGVjdGVkKSB7XHJcbiAgICAgIGtleXdvcmQgPSBzZWxlY3RlZE5vZGVzWzBdLmRhdGFyZWYuYXR0cmlidXRlW3NlYXJjaEtleV07XHJcbiAgICAgIGlmIChwYXJhbnRTZWxlY3QpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIHRyZWVTZWxlY3RlZEtleTogc2VsZWN0ZWRLZXlzWzBdLFxyXG4gICAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7IFtzZWFyY2hGaWVsZF06IGtleXdvcmQgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoc2VsZWN0ZWROb2Rlc1swXS5pc0xlYWYgfHwgIXNlbGVjdGVkTm9kZXNbMF0uY2hpbGRyZW4pIHtcclxuICAgICAgICAgIGlmIChzZWxlY3RlZEtleXNbMF0gIT09IHRyZWVTZWxlY3RlZEtleSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IHNlbGVjdGVkS2V5c1swXSxcclxuICAgICAgICAgICAgICB0cmVlU2VhcmNoUHJhbXM6IHsgW3NlYXJjaEZpZWxkXToga2V5d29yZCB9LFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIHRyZWVTZWxlY3RlZEtleToga2V5d29yZCxcclxuICAgICAgICB0cmVlU2VhcmNoUHJhbXM6IHt9LFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnByb3BzLm9uVHJlZVNlbGVjdCkge1xyXG4gICAgICB0aGlzLnByb3BzLm9uVHJlZVNlbGVjdChzZWxlY3RlZEtleXMsIG9iaik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGZyb21WYWx1ZSA9IHRoaXMuc2VhcmNoUmVmPy5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKSB8fCB7fTtcclxuICAgIHNlYXJjaEZpZWxkICYmIHRoaXMudGFibGVMb2FkKHsgLi4uZnJvbVZhbHVlLCBbc2VhcmNoRmllbGRdOiBrZXl3b3JkIH0pO1xyXG4gICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8udHJlZVNlbGVjdENhbGxCYWNrICYmXHJcbiAgICAgIHV0aWxzLmNhbGxiYWNrKHRoaXMucHJvcHMub25DYWxsQmFja3M/LnRyZWVTZWxlY3RDYWxsQmFjaywgdGhpcywgW1xyXG4gICAgICAgIHNlbGVjdGVkS2V5cyxcclxuICAgICAgICBvYmosXHJcbiAgICAgIF0pO1xyXG4gIH1cclxuICByZXNldFNlYXJjaCgpIHtcclxuICAgIHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LnJlc2V0RmllbGRzKCk7XHJcbiAgfVxyXG4gIGdldFRleHQocHJvcHMsIHRleHQpIHtcclxuICAgIGxldCBuZXdUZXh0ID0gdGV4dDtcclxuICAgIGlmIChwcm9wcz8uZGF0YSAmJiBwcm9wcz8uZGF0YT8ubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgZGF0YSA9IHByb3BzLmRhdGE7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YT8ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoZGF0YVtpXS52YWx1ZSA9PSB0ZXh0KSB7XHJcbiAgICAgICAgICBuZXdUZXh0ID0gZGF0YVtpXS5sYWJlbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBuZXdUZXh0O1xyXG4gIH1cclxuICBzZXRUYWJsZURhdGEoZGF0YSkge1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZT8uc2V0RGF0YShkYXRhKTtcclxuICB9XHJcbiAgc2V0VHJlZURhdGEoZGF0YSkge1xyXG4gICAgdGhpcy50cmVlUmVmLmN1cnJlbnQ/LnN0b3JlPy5zZXREYXRhKGRhdGEpO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZEtleSA9IChzZWxlY3RlZCkgPT4ge1xyXG4gICAgbGV0IHJlcyA9IFtdO1xyXG4gICAgZm9yIChsZXQga2V5IGluIHNlbGVjdGVkKSB7XHJcbiAgICAgIGNvbnN0IGtleXMgPSBzZWxlY3RlZFtrZXldO1xyXG4gICAgICBpZiAoa2V5cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgcmVzID0gWy4uLnJlcywgLi4ua2V5c107XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXM7XHJcbiAgfTtcclxuXHJcbiAgcmVuZGVyKCkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBjb2x1bW5zID0gW10sXHJcbiAgICAgIHNob3dTZWFyY2ggPSB0cnVlLFxyXG4gICAgICBjaGlsZHJlbixcclxuICAgICAgc3VibWl0VXJsID0gXCJcIixcclxuICAgICAgdGFibGVQcm9wcyA9IHt9LFxyXG4gICAgICB0cmVlUHJvcHMgPSB7fSxcclxuICAgICAgZm9ybVByb3BzID0ge30sXHJcbiAgICAgIHNob3dMZWZ0ID0gZmFsc2UsXHJcbiAgICAgIHN1Ym1pdFBhcmFtcyA9IHt9LFxyXG4gICAgICBzaG93VG9vbEJ1dHRvbiA9IHRydWUsXHJcbiAgICAgIGJ1dHRvbnMgPSBbXSxcclxuICAgICAgZWRpdG9yRm9ybSA9IHRydWUsXHJcbiAgICAgIG9uU2hvd0Zvcm0sXHJcbiAgICAgIGZvcm1DaGFuZ2VWYWxpZCA9IHRydWUsXHJcbiAgICAgIGNsYXNzTmFtZSxcclxuICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uID0gXCJidXR0b21cIixcclxuICAgICAgYWN0aW9uUG9ycHMsXHJcbiAgICAgIGRlbGV0ZVBvc2l0aW9uID0gXCJ0b29sYmFyXCIsXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHtcclxuICAgICAgc3RvcmUsXHJcbiAgICAgIGZpbHRlckNvbHVtbiA9IHRydWUsXHJcbiAgICAgIGFjdGlvbkNvbHVtbiA9IHRydWUsXHJcbiAgICAgIHNob3dSb3dTZWxlY3Rpb24gPSB0cnVlLFxyXG4gICAgICBjb2x1bW5PcmRlciA9IHRydWUsXHJcbiAgICAgIGV4cGFuZGFibGUgPSB7fSxcclxuICAgICAgcGFyYW50U2VsZWN0ID0gdHJ1ZSxcclxuICAgICAgdGl0bGU6IHRhYmxlVGl0bGUsXHJcbiAgICAgIC4uLm90aGVydGFibGVQYXJhbXNcclxuICAgIH0gPSB0YWJsZVByb3BzO1xyXG5cclxuICAgIGNvbnN0IHtcclxuICAgICAgc3RvcmU6IHRyZWVTdG9yZSA9IHt9LFxyXG4gICAgICBzaG93U2VhcmNoOiB0cmVlU2VhcmNoID0gdHJ1ZSxcclxuICAgICAgdGl0bGVBbGlhcyA9IFwidGl0bGVcIixcclxuICAgICAgdGl0bGU6IHRyZWVUaXRsZSxcclxuICAgICAgLi4ub3RoZXJ0cmVlUGFyYW1zXHJcbiAgICB9ID0gdHJlZVByb3BzO1xyXG4gICAgbGV0IHRhYmxlUGFyYW1zID0geyBmaWx0ZXJDb2x1bW4sIHN0b3JlLCAuLi5vdGhlcnRhYmxlUGFyYW1zIH0gYXMgYW55O1xyXG4gICAgbGV0IHRhYmxlQ29sdW1uOiBhbnlbXSA9IFtdO1xyXG4gICAgY29uc3Qgc2VhcmNoRm9ybXM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgZWRpdG9yRm9ybXM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgZGVmYXVsdFZhbHVlOiBhbnkgPSB7fTtcclxuICAgIGNvbnN0IGNvbHVtbkJ1dHRvbnM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgeyBlbGVtZW50SGVpZ2h0IH0gPSB0aGlzLnN0YXRlO1xyXG5cclxuICAgIGNvbHVtbnMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgbGV0IHRlbXAgPSB7IHdpZHRoOiAxMDAsIC4uLml0ZW0gfTtcclxuICAgICAgaWYgKHRlbXAuc2VhcmNoID09PSB0cnVlIHx8IHRlbXAuc2VhcmNoPy5zaG93ID09PSB0cnVlKSB7XHJcbiAgICAgICAgc2VhcmNoRm9ybXMucHVzaCh7XHJcbiAgICAgICAgICBuYW1lOiB0ZW1wLmZpZWxkIHx8IHRlbXAuZGF0YUluZGV4LFxyXG4gICAgICAgICAgbGFiZWw6IHRlbXAuc2VhcmNoPy5sYWJlbCB8fCB0ZW1wLnRpdGxlLFxyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgcHJvcHM6IHRlbXAucHJvcHMsXHJcbiAgICAgICAgICBsYWJlbENvbDogdGVtcC5zZWFyY2g/LmxhYmVsQ29sLFxyXG4gICAgICAgICAgd3JhcHBlckNvbDogdGVtcC5zZWFyY2g/LndyYXBwZXJDb2wsXHJcbiAgICAgICAgICBydWxlczogdGVtcC5zZWFyY2hSdWxlcyA/IHRlbXAuc2VhcmNoUnVsZXMgOiBbXSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZGVsZXRlIHRlbXAuc2VhcmNoO1xyXG4gICAgICB0ZW1wLmVkaXRvciAhPT0gZmFsc2UgJiZcclxuICAgICAgICBlZGl0b3JGb3Jtcy5wdXNoKHtcclxuICAgICAgICAgIG5hbWU6IHRlbXAuZmllbGQgfHwgdGVtcC5kYXRhSW5kZXgsXHJcbiAgICAgICAgICBsYWJlbDogdGVtcC50aXRsZSxcclxuICAgICAgICAgIHJ1bGVzOiB0ZW1wLnJ1bGVzID8gdGVtcC5ydWxlcyA6IFtdLFxyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgc3BhbjogdGVtcC5zcGFuLFxyXG4gICAgICAgICAgZGljdE5hbWU6IHRlbXAuZGljdE5hbWUsXHJcbiAgICAgICAgICBwcm9wczogeyAuLi50ZW1wLnByb3BzIH0sXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGVtcC5wcm9wcz8uZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQgJiZcclxuICAgICAgICB0ZW1wLnByb3BzPy5kZWZhdWx0VmFsdWUgIT09IG51bGxcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29uc3QgbmFtZSA9IHRlbXAuZmllbGQgfHwgdGVtcC5kYXRhSW5kZXg7XHJcbiAgICAgICAgZGVmYXVsdFZhbHVlW25hbWVdID0gdGVtcC5wcm9wcz8uZGVmYXVsdFZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnJ1bGVzO1xyXG4gICAgICBkZWxldGUgdGVtcC5zcGFuO1xyXG4gICAgICBpZiAodGVtcC5jb2x1bW5TZWFyY2gpIHtcclxuICAgICAgICB0ZW1wLmZpbHRlclByb3BzID0ge1xyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgcHJvcHM6IHRlbXAucHJvcHMsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICBkZWxldGUgdGVtcC50eXBlO1xyXG4gICAgICBsZXQgdGVtcFByb3AgPSB7IC4uLnRlbXAucHJvcHMgfTtcclxuICAgICAgaWYgKHRlbXAuc3R5bGUpIHtcclxuICAgICAgICB0ZW1wID0ge1xyXG4gICAgICAgICAgcmVuZGVyOiAodGV4dDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgIHt0ZXh0ICE9PSBcIlwiICYmIHRleHQgIT09IG51bGwgJiYgdGV4dCAhPT0gdW5kZWZpbmVkICYmIChcclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb2wtYmFja1wiKX0+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtY29sLXRleHRcIil9PlxyXG4gICAgICAgICAgICAgICAgICAgICAge3RoaXMuZ2V0VGV4dCh0ZW1wUHJvcCwgdGV4dCl9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4udGVtcCxcclxuICAgICAgICB9O1xyXG4gICAgICB9IGVsc2UgaWYgKCF0ZW1wLmVsbGlwc2lzKSB7XHJcbiAgICAgICAgdGVtcCA9IHtcclxuICAgICAgICAgIGVsbGlwc2lzOiB7IHNob3dUaXRsZTogZmFsc2UgfSxcclxuICAgICAgICAgIHJlbmRlcjogKHRleHQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRUZXh0KHRlbXBQcm9wLCB0ZXh0KTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAuLi50ZW1wLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGVtcCA9IHtcclxuICAgICAgICAgIGVsbGlwc2lzOiB0cnVlLFxyXG4gICAgICAgICAgLi4udGVtcCxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnByb3BzO1xyXG5cclxuICAgICAgLy8gdGVtcC5lbGxpcHNpcyA9IHRydWU7XHJcbiAgICAgIGlmICh0ZW1wPy5jb2x1bW5TaG93ICE9PSBmYWxzZSkgdGFibGVDb2x1bW4ucHVzaCh0ZW1wKTtcclxuICAgIH0pO1xyXG4gICAgY29uc3Qgc2VsZkJ1dHRvbnM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgeyBiYXNlQWN0aW9uQ29sdW1uIH0gPSBjb25maWcoKTtcclxuICAgIGxldCBzaG93SWNvbiA9IHRydWU7XHJcbiAgICBpZiAoYWN0aW9uUG9ycHM/LnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGVsc2UgaWYgKGJhc2VBY3Rpb25Db2x1bW4uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG5cclxuICAgIGlmIChidXR0b25zLmluZGV4T2YoXCJzZWFyY2hcIikgPiAtMSkge1xyXG4gICAgICBjb2x1bW5CdXR0b25zLnB1c2goXHJcbiAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgb25DbGljaz17KHJlY29yZDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChvblNob3dGb3JtKSB7XHJcbiAgICAgICAgICAgICAgb25TaG93Rm9ybShyZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCwgXCJkZXRhaWxcIik7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0Zvcm0ocmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsIFwiZGV0YWlsXCIpO1xyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIGljb249ezxFeWVPdXRsaW5lZCAvPn1cclxuICAgICAgICAgIHR5cGU9e1wibGlua1wifVxyXG4gICAgICAgID5cclxuICAgICAgICAgIOafpeeci1xyXG4gICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICApO1xyXG5cclxuICAgICAgaWYgKGJ1dHRvbnMuaW5kZXhPZihcImVkaXRvclwiKSA+IC0xKSB7XHJcbiAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICBvbkNsaWNrPXsocmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAob25TaG93Rm9ybSkge1xyXG4gICAgICAgICAgICAgICAgb25TaG93Rm9ybShyZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCwgXCJlZGl0b3JcIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0Zvcm0ocmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsIFwiZWRpdG9yXCIpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICBpY29uPXs8RWRpdE91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICB0eXBlPVwibGlua1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIOe8lui+kVxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGJ1dHRvbnMuaW5kZXhPZihcImFkZFwiKSA+IC0xKSB7XHJcbiAgICAgIHNlbGZCdXR0b25zLnB1c2goXHJcbiAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgb25TaG93Rm9ybSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICAgICAgaWYgKG9uU2hvd0Zvcm0pIHtcclxuICAgICAgICAgICAgICBvblNob3dGb3JtKG51bGwsIFwiYWRkXCIpO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnNob3dGb3JtKCk7XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgICAgaWNvbj17PFBsdXNPdXRsaW5lZCAvPn1cclxuICAgICAgICA+XHJcbiAgICAgICAgICDmt7vliqBcclxuICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmIChidXR0b25zLmluZGV4T2YoXCJkZWxldGVcIikgPiAtMSkge1xyXG4gICAgICBpZiAoZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIpIHtcclxuICAgICAgICBzZWxmQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAvLyB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgICAgb25DbGljaz17dGhpcy5vbkRlbGV0ZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICBpY29uPXs8RGVsZXRlT3V0bGluZWQgLz59XHJcbiAgICAgICAgICAgIGRhbmdlclxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICDliKDpmaRcclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZGVsZXRlUG9zaXRpb24gPT0gXCJyb3dcIikge1xyXG4gICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgLy8gdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eyhyZWNvcmQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMub25EZWxldGUocmVjb3JkKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgaWNvbj17PERlbGV0ZU91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICBkYW5nZXJcclxuICAgICAgICAgICAgdHlwZT1cImxpbmtcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICDliKDpmaRcclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW0pKSB7XHJcbiAgICAgICAgICBpdGVtLm1hcCgoY2hpbGQpID0+IHtcclxuICAgICAgICAgICAgaWYgKGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIpIHtcclxuICAgICAgICAgICAgICBzZWxmQnV0dG9ucy5wdXNoKGNoaWxkKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChjaGlsZD8ucHJvcHM/LnBhZ2VUeXBlID09IFwiY2xvdW1uQnV0dG9uXCIpIHtcclxuICAgICAgICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIikge1xyXG4gICAgICAgICAgICBzZWxmQnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChpdGVtPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjbG91bW5CdXR0b25cIikge1xyXG4gICAgICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgY29uc3QgeyBwcm9wcyB9OiBhbnkgPSBjaGlsZHJlbjtcclxuICAgICAgaWYgKHByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIikge1xyXG4gICAgICAgIHNlbGZCdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9IGVsc2UgaWYgKHByb3BzPy5wYWdlVHlwZSA9PSBcImNsb3VtbkJ1dHRvblwiKSB7XHJcbiAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgYWN0aW9uQ29sdW1uICYmXHJcbiAgICAgIHRhYmxlQ29sdW1uLnB1c2goe1xyXG4gICAgICAgIHRpdGxlOiBcIuaTjeS9nFwiLFxyXG4gICAgICAgIGRhdGFJbmRleDogXCJhY3Rpb25cIixcclxuICAgICAgICBhbGlnbjogYWN0aW9uUG9ycHM/LnRleHRBbGlnblxyXG4gICAgICAgICAgPyBhY3Rpb25Qb3Jwcz8udGV4dEFsaWduXHJcbiAgICAgICAgICA6IGJhc2VBY3Rpb25Db2x1bW4udGV4dEFsaWduXHJcbiAgICAgICAgICA/IGJhc2VBY3Rpb25Db2x1bW4udGV4dEFsaWduXHJcbiAgICAgICAgICA6IFwibGVmdFwiLFxyXG4gICAgICAgIHdpZHRoOiBhY3Rpb25Qb3Jwcz8ud2lkdGhcclxuICAgICAgICAgID8gYWN0aW9uUG9ycHM/LndpZHRoXHJcbiAgICAgICAgICA6IGJhc2VBY3Rpb25Db2x1bW4ud2lkdGhcclxuICAgICAgICAgID8gYmFzZUFjdGlvbkNvbHVtbi53aWR0aFxyXG4gICAgICAgICAgOiAyMDAsXHJcbiAgICAgICAgZml4ZWQ6IFwicmlnaHRcIixcclxuICAgICAgICByZW5kZXI6ICh0ZXh0OiBhbnksIHJlY29yZDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWFjdGlvblwiKX0+XHJcbiAgICAgICAgICAgICAge3RoaXMucmVuZGVyQ2xvdW1uQnV0dG9uKGNvbHVtbkJ1dHRvbnMsIHJlY29yZCl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuXHJcbiAgICBpZiAoY29sdW1uT3JkZXIpXHJcbiAgICAgIHRhYmxlQ29sdW1uID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRpdGxlOiBcIuW6j+WPt1wiLFxyXG4gICAgICAgICAgd2lkdGg6IDgwLFxyXG4gICAgICAgICAgYWxpZ246IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICByZW5kZXI6ICh0ZXh0LCByZWFjb3JkLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gPD57aW5kZXggKyAxfTwvPjtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi50YWJsZUNvbHVtbixcclxuICAgICAgXTtcclxuICAgIGxldCBzZWFyY2hGbGFnID0gc2hvd1NlYXJjaCAmJiBzZWFyY2hGb3Jtcy5sZW5ndGggPiAwO1xyXG4gICAgbGV0IHsgdGFibGVUb29sIH0gPSBjb25maWcoKTtcclxuICAgIGxldCB0b29sRmxhZyA9XHJcbiAgICAgIHNob3dUb29sQnV0dG9uICYmXHJcbiAgICAgIHNlbGZCdXR0b25zLmxlbmd0aCA+IDAgJiZcclxuICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uID09IFwiYnV0dG9tXCI7XHJcbiAgICBsZXQgdG9vbGJhckZsYWcgPSAhKFxyXG4gICAgICB0YWJsZVByb3BzLnRvb2xiYXIgPT0gZmFsc2UgfHxcclxuICAgICAgdGFibGVQcm9wcy50b29sYmFyPy5zaG93ID09IGZhbHNlIHx8XHJcbiAgICAgIHRhYmxlUHJvcHMudG9vbGJhcj8udG9vbHM/Lmxlbmd0aCA9PSAwIHx8XHJcbiAgICAgIHRhYmxlVG9vbD8uc2hvdyA9PSBmYWxzZVxyXG4gICAgKTtcclxuXHJcbiAgICBsZXQgcGFnZUhlaWdodCA9IHRoaXMucHJvcHMucGFnZVR5cGUgPT0gXCJ0YWJzcGFnZVwiID8gNjMgOiAwO1xyXG4gICAgbGV0IHRhYmxlSGVhZGVySGVpZ2h0ID0gNTU7XHJcblxyXG4gICAgbGV0IGhlYWRlckhlaWdodCA9IHNob3dTZWFyY2ggJiYgc2VhcmNoRm9ybXMubGVuZ3RoID4gMCA/IDEwNCA6IDA7XHJcbiAgICBsZXQgdG9vbEhlaWdodCA9IHRhYmxlVGl0bGUgfHwgdG9vbEZsYWcgPyA0OCA6IDA7XHJcbiAgICBsZXQgcGFkZGluZ0hlaWdodCA9IDI1O1xyXG4gICAgbGV0IHRhYmxlQ29udGVudEhlaWdodCA9XHJcbiAgICAgIGVsZW1lbnRIZWlnaHQgLSBoZWFkZXJIZWlnaHQgLSB0b29sSGVpZ2h0IC0gcGFkZGluZ0hlaWdodCAtIHBhZ2VIZWlnaHQ7XHJcbiAgICBsZXQgdGFibGVIZWlnaHQgPSB0YWJsZUNvbnRlbnRIZWlnaHQgLSAzMiAtIDMyO1xyXG4gICAgbGV0IHRhYmxlU3JvbGxIZWlnaHQgPSB0YWJsZUNvbnRlbnRIZWlnaHQgLSB0YWJsZUhlYWRlckhlaWdodCAtIDMyIC0gMzI7XHJcbiAgICBpZiAodGFibGVQcm9wcy5wYWdpbmF0aW9uICE9PSBmYWxzZSkge1xyXG4gICAgICBjb25zdCBzY3JvbGwgPSB0YWJsZVBhcmFtcy5zY3JvbGw7XHJcbiAgICAgIHRhYmxlUGFyYW1zID0ge1xyXG4gICAgICAgIC4uLnRhYmxlUGFyYW1zLFxyXG4gICAgICAgIHNjcm9sbDogeyB4OiBcIm1heC1jb250ZW50XCIsIHk6IHRhYmxlU3JvbGxIZWlnaHQsIC4uLnNjcm9sbCB9LFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZVwiKSwgY2xhc3NOYW1lKX1cclxuICAgICAgICByZWY9e3RoaXMucGFnZVJlZn1cclxuICAgICAgPlxyXG4gICAgICAgIHt0aGlzLnByb3BzLnBhZ2VUaXRsZSAmJiAoXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10aXRsZVwiKSl9PlxyXG4gICAgICAgICAgICB7dGhpcy5wcm9wcy5wYWdlVGl0bGV9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1wYW5lXCIpKX1cclxuICAgICAgICAgIHN0eWxlPXt7IGRpc3BsYXk6IFwiZmxleFwiIH19XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3Nob3dMZWZ0ICYmIChcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1sZWZ0XCIpfT5cclxuICAgICAgICAgICAgICB7dHJlZVRpdGxlICYmIChcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJ0cmVlLXRpdGxlXCIpfT57dHJlZVRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwidHJlZS1jb250ZW50XCIpLCB7XHJcbiAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJ0cmVlLWNvbnRlbnQtbm90aXRsZVwiKV06ICF0cmVlVGl0bGUsXHJcbiAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8VHJlZVxyXG4gICAgICAgICAgICAgICAgICBzdG9yZT17eyAuLi50cmVlU3RvcmUgfX1cclxuICAgICAgICAgICAgICAgICAgc2hvd0ljb249e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgICBjaGVja2FibGU9e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlPXt0cmVlU2VhcmNofVxyXG4gICAgICAgICAgICAgICAgICBvblNlbGVjdD17dGhpcy50cmVlU2VsZWN0LmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkS2V5cz17W3RoaXMuc3RhdGUudHJlZVNlbGVjdGVkS2V5XX1cclxuICAgICAgICAgICAgICAgICAgdGl0bGVBbGlhcz17dGl0bGVBbGlhc31cclxuICAgICAgICAgICAgICAgICAgey4uLm90aGVydHJlZVBhcmFtc31cclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXJpZ2h0XCIpLCB7XHJcbiAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1uby1sZWZ0LXJpZ2h0XCIpXTogIXNob3dMZWZ0LFxyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3Nob3dTZWFyY2ggJiYgc2VhcmNoRm9ybXMubGVuZ3RoID4gMCAmJiAoXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1oZWFkZXJzZWFyY2hcIil9PlxyXG4gICAgICAgICAgICAgICAgPEhlYWRlclNlYXJjaFxyXG4gICAgICAgICAgICAgICAgICBzZWFyY2hGb3Jtcz17c2VhcmNoRm9ybXN9XHJcbiAgICAgICAgICAgICAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbj17dG9vbEJ1dHRvblBvc2l0aW9ufVxyXG4gICAgICAgICAgICAgICAgICBvblNlYXJjaD17dGhpcy5vblNlYXJjaC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgICBvblJlc2V0PXt0aGlzLnByb3BzLm9uUmVzZXR9XHJcbiAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy5zZWFyY2hSZWZ9XHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEZvcm1Qcm9wcz17dGhpcy5wcm9wcy5zZWFyY2hGb3JtUHJvcHN9XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnRcIiksIHtcclxuICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtY29udGVudC1nYXBcIildOiAhc2VhcmNoRmxhZyxcclxuICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHsodGFibGVUaXRsZSB8fCB0b29sRmxhZykgJiYgKFxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGFibGUtdGl0bGVcIiksIHtcclxuICAgICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRpdGxlLXdpZHRoXCIpXTogIXRvb2xiYXJGbGFnLFxyXG4gICAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGRpdj57dGFibGVUaXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAge3Rvb2xGbGFnICYmIHRoaXMucmVuZGVyVG9vbEJ1dHRvbnMoc2VsZkJ1dHRvbnMsIHRvb2xiYXJGbGFnKX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICl9XHJcblxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGFibGVcIiksXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlLXRvcFwiKV06ICF0b29sYmFyRmxhZyxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGFibGUtdG9wMlwiKV06XHJcbiAgICAgICAgICAgICAgICAgICAgICB0b29sYmFyRmxhZyAmJiAhdG9vbEZsYWcsXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICBzdHlsZT17eyBoZWlnaHQ6IHRhYmxlQ29udGVudEhlaWdodCB9fVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxUYWJsZVxyXG4gICAgICAgICAgICAgICAgICByZWY9e3RoaXMudGFibGVSZWZ9XHJcbiAgICAgICAgICAgICAgICAgIGNvbHVtbnM9e3RhYmxlQ29sdW1ufVxyXG4gICAgICAgICAgICAgICAgICBleHBhbmRhYmxlPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgZXhwYW5kSWNvbjogKHsgZXhwYW5kZWQsIG9uRXhwYW5kLCByZWNvcmQgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7ZXhwYW5kZWQgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RG93bk91dGxpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiBvbkV4cGFuZChyZWNvcmQsIGUpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3MoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibnNjLWJhc2VwYWdlLWV4cGFuZC1pY29uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5jaGlsZE5vZGVzICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpZ2h0T3V0bGluZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4gb25FeHBhbmQocmVjb3JkLCBlKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3MoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm5zYy1iYXNlcGFnZS1leHBhbmQtaWNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Lz5cclxuICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAuLi5leHBhbmRhYmxlLFxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICBjb2x1bW5PcmRlcj17dHJ1ZX1cclxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhwYWdpbmF0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBjdXJyZW50UGFnZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFBhZ2UgIT09IHBhZ2luYXRpb24uY3VycmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQYWdlOiBwYWdpbmF0aW9uLmN1cnJlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIHRvb2xiYXI9e3tcclxuICAgICAgICAgICAgICAgICAgICBvblRvb2xDbGljazoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgb25SZWZyZXNoOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMuZ2V0U2VhcmNoVmFsdWVzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVMb2FkKHBhcmFtcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgLi4udGFibGVQcm9wcy50b29sYmFyLFxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICBzaG93Um93U2VsZWN0aW9uPXtzaG93Um93U2VsZWN0aW9ufVxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT17eyBoZWlnaHQ6IHRhYmxlSGVpZ2h0IH19XHJcbiAgICAgICAgICAgICAgICAgIHsuLi50YWJsZVBhcmFtc31cclxuICAgICAgICAgICAgICAgICAgLy8gcGFnaW5hdGlvbj17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgey8qIDxkaXY+PC9kaXY+ICovfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAge2VkaXRvckZvcm0gJiYgKFxyXG4gICAgICAgICAgICA8RWRpdG9yRm9ybVxyXG4gICAgICAgICAgICAgIHJlZj17dGhpcy5lZGl0b3JSZWZ9XHJcbiAgICAgICAgICAgICAgY2FsbEJhY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uU3VtYml0Q2FsbEJhY2sgJiZcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25TdW1iaXRDYWxsQmFjaygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVJlbG9hZCgpO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgZm9ybVByb3BzPXtlZGl0b3JGb3Jtc31cclxuICAgICAgICAgICAgICBzdWJtaXRVcmw9e3N1Ym1pdFVybH1cclxuICAgICAgICAgICAgICBzdWJtaXRQYXJhbXM9e3N1Ym1pdFBhcmFtc31cclxuICAgICAgICAgICAgICBvblN1Ym1pdD17dGhpcy5wcm9wcy5vblN1Ym1pdH1cclxuICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU9e2RlZmF1bHRWYWx1ZX1cclxuICAgICAgICAgICAgICBvbkhpZGVGb3JtPXt0aGlzLnByb3BzLm9uSGlkZUZvcm19XHJcbiAgICAgICAgICAgICAgb25Gb3JtQ2hhbmdlPXt0aGlzLnByb3BzLm9uRm9ybUNoYW5nZX1cclxuICAgICAgICAgICAgICBmb3JtVHlwZT17dGhpcy5wcm9wcy5mb3JtVHlwZSB8fCBcImF1dG9cIn1cclxuICAgICAgICAgICAgICBjaGFuZ2VWYWxpZD17Zm9ybUNoYW5nZVZhbGlkfVxyXG4gICAgICAgICAgICAgIG90aGVyUHJvcHM9e3sgLi4uZm9ybVByb3BzIH19XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IEJhc2VQYWdlO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBT0EsS0FBSyxJQUFJQyxhQUFhLFFBQW1CLE9BQU87QUFDdkQsT0FBT0MsS0FBSyxNQUFNLGtCQUFrQjtBQUNwQyxPQUFPQyxJQUFJLE1BQU0saUJBQWlCO0FBQ2xDLE9BQU9DLE1BQU0sTUFBTSxtQkFBbUI7QUFDdEMsT0FBT0MsS0FBSyxNQUFNLGtCQUFrQjtBQUNwQyxPQUFPQyxPQUFPLE1BQU0sb0JBQW9CO0FBQ3hDLE9BQU9DLE9BQU8sTUFBTSxvQkFBb0I7QUFDeEMsT0FBT0MsVUFBVSxNQUFNLFFBQVE7QUFDL0IsT0FBT0MsR0FBRyxNQUFNLFlBQVk7QUFDNUIsT0FBTyxxQkFBcUI7QUFFNUIsU0FBU0MsS0FBSyxRQUFRLHVCQUF1QjtBQUM3QyxTQUNFQyxZQUFZLEVBQ1pDLFdBQVcsRUFDWEMsWUFBWSxFQUNaQyxhQUFhLEVBQ2JDLFlBQVksRUFDWkMsZ0JBQWdCLEVBQ2hCQyxjQUFjLFFBQ1QsbUJBQW1CO0FBQzFCLFNBQVNDLE9BQU8sUUFBaUIsYUFBYTtBQUM5QyxPQUFPQyxPQUFPLE1BQU0sYUFBYTtBQUVqQyxPQUFPQyxNQUFNLE1BQU0sY0FBYztBQUNqQyxTQUFTQyxVQUFVLFFBQWUsbUJBQW1CO0FBRXJELE9BQU9DLFlBQVksTUFBTSxpQkFBaUI7QUFXMUMsTUFBTUMsTUFBTSxHQUFHLElBQUk7QUFxRG5CLE1BQU1DLFFBQVEsU0FBU3ZCLGFBQWEsQ0FBd0I7RUFPMUR3QixXQUFXQSxDQUFDQyxLQUFVLEVBQUU7SUFBQSxJQUFBQyxLQUFBLEVBQUFDLEtBQUE7SUFDdEIsS0FBSyxDQUFDRixLQUFLLENBQUM7SUFBQ0csZUFBQSxn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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","PureComponent","Table","Tree","Button","Modal","Popover","message","EditorForm","cls","utils","DownOutlined","EyeOutlined","EditOutlined","RightOutlined","PlusOutlined","EllipsisOutlined","DeleteOutlined","getLess","request","config","getStorage","HeaderSearch","styles","BasePage","constructor","props","_type","_size","_defineProperty","createRef","checkedTreeKeys","name","userType","account","state","value","deptId","onSearch","selected","res","key","keys","length","storePrefix","type","content","size","selectedRowKeys","selectedRowDatas","treeSelectedKey","expand","formType","tableSize","treeSearchPrams","popopens","elementHeight","componentDidMount","_this$pageRef$current","initData","pageRef","current","clientHeight","setState","setSearchParams","params","callBack","_this$searchRef$curre","searchRef","showForm","_this$editorRef$curre","editorflag","arguments","undefined","editorRef","show","_objectSpread","hideForm","_this$editorRef$curre2","setLoading","loading","_this$editorRef$curre3","setEditFormValues","_this$editorRef$curre4","setFieldsValue","getEditFormValues","_this$editorRef$curre5","getFieldsValue","onDelete","data","_this$tableRef$curren","deleteUrl","deleteParams","deletePosition","_this","tableRef","getSelectedRowKeys","warning","confirm","onOk","Error","defaultParams","method","autoPrefix","ids","join","id","requestParams","then","code","_this$searchRef","_this$props$onCallBac","_this$props$onCallBac2","success","getSearchValues","onCallBacks","onDeleteCallBack","tableLoad","error","catch","console","log","_this$tableRef$curren2","requestConfig","store","load","onSearchCallBack","callback","tableReload","_this$tableRef$curren3","autoLoad","reload","_res$data","records","currentPage","_this$tableRef$curren4","_this$tableRef$curren5","getSelectedRowDatas","_this$tableRef$curren6","resetSelectedRowKeys","_this$tableRef$curren7","_this$searchRef2","fromValue","getChildrenData","tableProps","rowKey","resKey","childNodes","children","map","item","index","renderToolButtons","toolbuttons","toolbarFlag","flag","reverse","showSearch","_item$props","pageType","onClick","icon","_objectWithoutProperties","_excluded","createElement","_extends","className","style","marginLeft","title","placement","trigger","renderCloumnButton","columnButtons","record","actionPorps","baseActionColumn","newButtons","showIcon","_item$props2","recordShow","_excluded2","eval","push","_item$props3","_excluded3","_item$props4","_excluded4","open","onOpenChange","treeSelect","selectedKeys","obj","_this$searchRef3","_this$props$onCallBac3","_this$props$onCallBac4","keyword","searchKey","searchField","parantSelect","treeProps","selectedNodes","dataref","attribute","isLeaf","onTreeSelect","treeSelectCallBack","resetSearch","_this$searchRef$curre2","resetFields","getText","text","_props$data","newText","i","label","setTableData","_this$tableRef$curren8","setData","setTreeData","_this$treeRef$current","treeRef","render","_tableProps$toolbar","_tableProps$toolbar2","columns","submitUrl","formProps","showLeft","submitParams","showToolButton","buttons","editorForm","onShowForm","formChangeValid","toolButtonPosition","filterColumn","actionColumn","showRowSelection","columnOrder","expandable","tableTitle","othertableParams","_excluded5","treeStore","treeSearch","titleAlias","treeTitle","othertreeParams","_excluded6","tableParams","tableColumn","searchForms","editorForms","defaultValue","_temp$search","_temp$props","_temp$props2","_temp","temp","width","search","_temp$search2","_temp$search3","_temp$search4","field","dataIndex","labelCol","wrapperCol","rules","searchRules","editor","span","dictName","_temp$props3","columnSearch","filterProps","tempProp","Fragment","ellipsis","showTitle","columnShow","selfButtons","indexOf","bind","danger","Array","isArray","child","_child$props","_child$props2","_item$props5","_item$props6","align","textAlign","fixed","reacord","searchFlag","tableTool","toolFlag","toolbar","tools","pageHeight","tableHeaderHeight","headerHeight","toolHeight","paddingHeight","tableContentHeight","tableHeight","tableSrollHeight","pagination","scroll","x","y","ref","pageTitle","display","checkable","searchable","onSelect","onReset","searchFormProps","height","expandIcon","_ref","expanded","onExpand","e","onChange","onToolClick","onRefresh","_this$props$onCallBac5","_this$props$onCallBac6","onSumbitCallBack","onSubmit","onHideForm","onFormChange","changeValid","otherProps"],"sources":["../../../src/components/page/BasePage/index.tsx"],"sourcesContent":["import React, { PureComponent, ReactNode } from \"react\";\r\nimport Table from \"../../base/table\";\r\nimport Tree from \"../../base/tree\";\r\nimport Button from \"../../base/button\";\r\nimport Modal from \"../../base/modal\";\r\nimport Popover from \"../../base/popover\";\r\nimport message from \"../../base/message\";\r\nimport EditorForm from \"./Form\";\r\nimport cls from \"classnames\";\r\nimport \"./index.module.less\";\r\nimport Store, { PageStore, StoreProps } from \"@bj-nsc/msn\";\r\nimport { utils } from \"@bj-nsc/msn/lib/utils\";\r\nimport {\r\n DownOutlined,\r\n EyeOutlined,\r\n EditOutlined,\r\n RightOutlined,\r\n PlusOutlined,\r\n EllipsisOutlined,\r\n DeleteOutlined,\r\n} from \"@ant-design/icons\";\r\nimport { getLess, getNode } from \"../../utils\";\r\nimport request from \"nsc-request\";\r\nimport omit from \"omit.js\";\r\nimport config from \"../../config\";\r\nimport { getStorage, px2vw } from \"@bj-nsc/functions\";\r\nimport { IFormProps } from \"../../base/form/Form\";\r\nimport HeaderSearch from \"../HeaderSearch\";\r\nimport { PaginationProps } from \"antd\";\r\ninterface TableProps {\r\n actionColumn?: boolean; //是否显示操作列\r\n store?: StoreProps;\r\n filterColumn?: boolean; //是否显示过滤按钮\r\n showRowSelection?: boolean; //是否表格勾选列\r\n pagination?: boolean | PaginationProps; //是否显示分页\r\n columnOrder?: boolean; //是否显示表格序列\r\n [propsName: string]: any;\r\n}\r\nconst styles = null;\r\ninterface TreeProps {\r\n store?: StoreProps;\r\n showSearch?: boolean; //是否显示搜索框\r\n searchKey?: string; //搜索value对应的key\r\n searchField?: string; //查询对应的key\r\n titleAlias?: string; //树title对应的key,默认title\r\n nodePorps?: object;\r\n parantSelect?: boolean;\r\n [propsName: string]: any;\r\n}\r\ninterface FormProps extends IFormProps {}\r\ninterface NSCBaseBageProps {\r\n showSearch?: boolean; //是否显示头部搜索栏\r\n tableProps?: TableProps; //表格参数\r\n treeProps?: TreeProps; //左侧树参数\r\n submitParams?: Object; //添加参数,默认mothod:post, 参数通过data传递\r\n submitUrl?: string;\r\n onSubmit?: (value?: any, label?: any) => void;\r\n columns: Array<Object>;\r\n showLeft?: boolean; //是否显示左侧目录树\r\n showToolButton?: boolean; //是否显示按钮栏\r\n editorForm?: boolean; //是否需要表单功能 , 为false 编辑,查看,新增功能均不可用\r\n deleteUrl?: string; //删除url\r\n onDelete?: (selectedKeys?: Array<string>) => void; //删除参数,默认mothod:post, 参数通过ids拼接传递给后台\r\n deletePosition?: \"toolbar\" | \"row\";\r\n deleteParams?: Object;\r\n children?: React.ReactNode;\r\n onSearch?: (value?: any) => void;\r\n onReset?: () => void;\r\n initData?: any; //初始化回调函数,在componentDidMount中调用\r\n buttons?: Array<string>; //按钮集合 ['add','delete','search','editor']\r\n onShowForm?: (value?: any, editorFlag?: string) => void; //打开表单回调\r\n onHideForm?: () => void; //打开表单回调\r\n onFormChange?: (changedValues?: any, allValues?: any) => void; //表单onChange回调\r\n formType?: \"modal\" | \"drawer\";\r\n formChangeValid?: boolean; //表单校验\r\n className?: any;\r\n toolButtonPosition?: \"right\" | \"buttom\";\r\n pageTitle?: string | ReactNode;\r\n formProps?: FormProps;\r\n actionPorps?: { textAlign?: string; showIcon?: boolean; width?: number };\r\n searchFormProps?: { wrapperCol?: any; labelCol?: any };\r\n onTreeSelect?: (value?: any, editorFlag?: string) => void; //打开表单回调\r\n onCallBacks?: {\r\n treeSelectCallBack?: any;\r\n onSearchCallBack?: any;\r\n onSumbitCallBack?: any;\r\n onDeleteCallBack?: any;\r\n };\r\n pageType?: \"normal\" | \"tabspage\";\r\n}\r\n\r\nclass BasePage extends PureComponent<NSCBaseBageProps, any> {\r\n tableRef = React.createRef<any>();\r\n treeRef = React.createRef<any>();\r\n searchRef = React.createRef<any>();\r\n editorRef = React.createRef<any>();\r\n pageRef = React.createRef<any>();\r\n dateFormat = {} as any;\r\n constructor(props: any) {\r\n super(props);\r\n let { storePrefix } = config();\r\n let type = getStorage(\r\n storePrefix ? storePrefix + \"-\" + \"formType\" : \"formType\"\r\n );\r\n type = type?.content;\r\n let size = getStorage(\r\n storePrefix ? storePrefix + \"-\" + \"tableSize\" : \"tableSize\"\r\n );\r\n size = size?.content;\r\n this.state = {\r\n type: \"add\",\r\n selectedRowKeys: [],\r\n selectedRowDatas: [],\r\n treeSelectedKey: \"\",\r\n expand: false,\r\n formType: type || \"modal\",\r\n tableSize: size || \"default\",\r\n treeSearchPrams: {},\r\n popopens: {},\r\n elementHeight: 0,\r\n };\r\n }\r\n componentDidMount() {\r\n const { initData } = this.props;\r\n const elementHeight = this.pageRef.current?.clientHeight;\r\n this.setState({\r\n elementHeight,\r\n });\r\n initData && initData();\r\n }\r\n\r\n setSearchParams(params, callBack) {\r\n this.searchRef.current?.setSearchParams(params);\r\n callBack && callBack(params);\r\n }\r\n\r\n onSelect = (checkedTreeKeys: any) => {\r\n const { name, userType, account } = this.state;\r\n const value = { name, userType, account, deptId: checkedTreeKeys[0] };\r\n if (this.props.onSearch) {\r\n this.props.onSearch(value);\r\n }\r\n // this.tableLoad(value);\r\n };\r\n\r\n //显示表单\r\n showForm(value?: any, editorflag = \"add\") {\r\n this.editorRef.current?.show({ ...value }, editorflag);\r\n }\r\n\r\n //关闭表单\r\n hideForm() {\r\n this.editorRef.current?.hideForm();\r\n }\r\n\r\n setLoading(loading: boolean) {\r\n this.editorRef.current?.setLoading(loading);\r\n }\r\n\r\n setEditFormValues(value) {\r\n this.editorRef.current?.setFieldsValue(value);\r\n }\r\n\r\n getEditFormValues() {\r\n return this.editorRef.current?.getFieldsValue();\r\n }\r\n\r\n //批量删除\r\n onDelete(data?: any) {\r\n const {\r\n deleteUrl,\r\n onDelete,\r\n deleteParams,\r\n deletePosition = \"toolbar\",\r\n } = this.props;\r\n let _this = this;\r\n const selectedRowKeys = this.tableRef.current?.getSelectedRowKeys();\r\n if (deletePosition == \"toolbar\") {\r\n if (selectedRowKeys.length == 0) {\r\n message.warning(\"请选择要删除的数据!\");\r\n return;\r\n }\r\n }\r\n Modal.confirm({\r\n content: \"是否确认删除所选项?\",\r\n // centered:true,\r\n onOk: () => {\r\n if (onDelete) {\r\n onDelete &&\r\n onDelete(deletePosition == \"toolbar\" ? selectedRowKeys : data);\r\n return;\r\n }\r\n if (!deleteUrl) {\r\n throw new Error(\"url不能为空!\");\r\n }\r\n const defaultParams = {\r\n method: \"post\",\r\n autoPrefix: true,\r\n params: {\r\n ids: deletePosition == \"toolbar\" ? selectedRowKeys.join() : data.id,\r\n },\r\n };\r\n let requestParams = {} as any;\r\n if (defaultParams) {\r\n requestParams = { ...deleteParams };\r\n }\r\n requestParams = { ...defaultParams };\r\n request(deleteUrl, {\r\n ...requestParams,\r\n })\r\n .then(function (res: any) {\r\n const { code } = res;\r\n if (code === 200) {\r\n message.success(\"删除成功!\");\r\n let value = _this.searchRef?.current?.getSearchValues();\r\n _this.props.onCallBacks?.onDeleteCallBack &&\r\n _this.props.onCallBacks?.onDeleteCallBack();\r\n _this.tableLoad(value);\r\n } else {\r\n message.error(\"删除失败!\");\r\n }\r\n })\r\n .catch(function (error: any) {\r\n console.log(\"error\", error);\r\n });\r\n },\r\n });\r\n }\r\n tableLoad(params: any, requestConfig = {}) {\r\n this.tableRef.current?.store.load({\r\n ...requestConfig,\r\n params: params,\r\n });\r\n }\r\n //查询\r\n onSearch(params) {\r\n const { onSearch, onCallBacks } = this.props;\r\n if (onSearch) {\r\n onSearch({ ...params, ...this.state.treeSearchPrams });\r\n return;\r\n }\r\n this.tableLoad({ ...params, ...this.state.treeSearchPrams });\r\n onCallBacks?.onSearchCallBack &&\r\n utils.callback(onCallBacks?.onSearchCallBack, this, [params]);\r\n }\r\n //表格重新加载\r\n tableReload(params = {}, autoLoad = true) {\r\n this.tableRef.current?.store?.reload({\r\n callback: (res) => {\r\n if (\r\n autoLoad &&\r\n res?.data?.records?.length == 0 &&\r\n this.state.currentPage !== 1\r\n ) {\r\n this.tableRef.current?.store?.reload({\r\n params: { current: 1, ...params },\r\n });\r\n }\r\n },\r\n });\r\n }\r\n getSelectedRowKeys() {\r\n return this.tableRef.current?.getSelectedRowKeys();\r\n }\r\n getSelectedRowDatas() {\r\n return this.tableRef.current?.getSelectedRowDatas();\r\n }\r\n resetSelectedRowKeys() {\r\n return this.tableRef.current?.resetSelectedRowKeys();\r\n }\r\n\r\n getSearchValues() {\r\n const fromValue = this.searchRef?.current?.getSearchValues();\r\n return { ...fromValue, ...this.state.treeSearchPrams };\r\n }\r\n\r\n getChildrenData(data, keys = []) {\r\n const { tableProps } = this.props;\r\n const { rowKey = \"id\" } = tableProps;\r\n let resKey = [];\r\n if (data.childNodes) {\r\n const children = data.childNodes;\r\n children.map((item, index) => {\r\n if (item.childNodes) {\r\n this.getChildrenData(item.childNodes, keys);\r\n } else {\r\n resKey = [...keys, item[rowKey]];\r\n }\r\n });\r\n } else {\r\n resKey = [...keys, data[rowKey]];\r\n }\r\n return resKey;\r\n }\r\n\r\n renderToolButtons(toolbuttons: any, toolbarFlag) {\r\n const flag = toolbuttons.length > 5;\r\n toolbuttons = [...toolbuttons].reverse();\r\n const { showSearch = true } = this.props;\r\n const content = toolbuttons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, icon, show, ...params } = item.props;\r\n if (index > 3) {\r\n return (\r\n <div\r\n className={cls(\r\n getLess(styles, \"nsc-basepage-editor\"),\r\n getLess(styles, \"nsc-basepage-content-item\")\r\n )}\r\n key={index}\r\n onClick={() => {\r\n onClick && onClick();\r\n }}\r\n {...params}\r\n >\r\n <span className={getLess(styles, \"nsc-basepage-icon\")}>{icon}</span>\r\n <span className={getLess(styles, \"nsc-basepage-text\")}>\r\n {children}\r\n </span>\r\n </div>\r\n );\r\n }\r\n });\r\n return (\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-tool-buttons\"))}\r\n style={{ marginLeft: 0 }}\r\n >\r\n {toolbuttons.map((item: any, index: any) => {\r\n if (flag) {\r\n if (index < 4) {\r\n return <div key={index}>{item}</div>;\r\n } else if (index == 4) {\r\n return (\r\n <Popover\r\n content={content}\r\n title={null}\r\n placement=\"bottom\"\r\n trigger={[\"click\"]}\r\n key={index}\r\n // overlayClassName={styles['pop-box']}\r\n >\r\n <Button type=\"primary\">\r\n 更多 <DownOutlined />\r\n </Button>\r\n </Popover>\r\n );\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n return <div key={index}>{item}</div>;\r\n }\r\n })}\r\n </div>\r\n );\r\n }\r\n renderCloumnButton(columnButtons: any, record: any) {\r\n const { actionPorps } = this.props;\r\n const { baseActionColumn } = config();\r\n const newButtons = [];\r\n let showIcon = true;\r\n if (actionPorps?.showIcon === false) showIcon = false;\r\n else if (baseActionColumn.showIcon === false) showIcon = false;\r\n columnButtons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, icon, recordShow, ...params } =\r\n item.props;\r\n if (recordShow) {\r\n if (typeof recordShow == \"string\") {\r\n if (eval(recordShow)) {\r\n newButtons.push(item);\r\n }\r\n } else if (typeof recordShow == \"function\") {\r\n const show = recordShow(record);\r\n show && newButtons.push(item);\r\n }\r\n } else {\r\n newButtons.push(item);\r\n }\r\n });\r\n const flag = newButtons.length > 3;\r\n\r\n const content = newButtons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, recordShow, icon, show, ...params } =\r\n item.props;\r\n if (index > 2) {\r\n return (\r\n <Button\r\n className={cls(\r\n getLess(styles, \"nsc-basepage-editor\"),\r\n getLess(styles, \"nsc-basepage-content-item\")\r\n )}\r\n key={index}\r\n onClick={() => {\r\n let data = { ...this.state.popopens };\r\n data[record.id] = false;\r\n this.setState({\r\n popopens: data,\r\n });\r\n onClick && onClick(record);\r\n }}\r\n {...params}\r\n type={\"link\"}\r\n >\r\n {showIcon !== false && (\r\n <span className={getLess(styles, \"nsc-basepage-icon\")}>\r\n {icon}\r\n </span>\r\n )}\r\n <span className={getLess(styles, \"nsc-basepage-text\")}>\r\n {children}\r\n </span>\r\n </Button>\r\n );\r\n }\r\n });\r\n\r\n return newButtons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, recordShow, icon, ...params } =\r\n item.props;\r\n if (flag) {\r\n if (index < 3) {\r\n return (\r\n <Button\r\n className={cls(getLess(styles, \"nsc-basepage-editor\"), {\r\n [getLess(styles, \"nsc-basepage-editor-first\")]: index === 0,\r\n })}\r\n key={index}\r\n onClick={() => {\r\n onClick && onClick(record);\r\n }}\r\n {...params}\r\n type={\"link\"}\r\n >\r\n {showIcon !== false && (\r\n <span className={getLess(styles, \"nsc-basepage-icon\")}>\r\n {icon}\r\n </span>\r\n )}\r\n <span className={getLess(styles, \"nsc-basepage-text\")}>\r\n {children}\r\n </span>\r\n </Button>\r\n );\r\n } else if (index == 3) {\r\n return (\r\n <Popover\r\n placement=\"bottom\"\r\n title={null}\r\n content={content}\r\n trigger={[\"click\"]}\r\n key={index}\r\n open={this.state.popopens[record.id] || false}\r\n onOpenChange={(open) => {\r\n if (open) {\r\n let data = { ...this.state.popopens };\r\n data[record.id] = true;\r\n this.setState({\r\n popopens: data,\r\n });\r\n } else {\r\n this.setState({\r\n popopens: {},\r\n });\r\n }\r\n }}\r\n // overlayClassName={styles['pop']}\r\n >\r\n <a className={getLess(styles, \"nsc-basepage-editor\")}>\r\n <EllipsisOutlined />\r\n </a>\r\n </Popover>\r\n );\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n return (\r\n <Button\r\n className={cls(getLess(styles, \"nsc-basepage-editor\"), {\r\n [getLess(styles, \"nsc-basepage-editor-first\")]: index === 0,\r\n })}\r\n key={index}\r\n onClick={() => {\r\n onClick && onClick(record);\r\n }}\r\n type={\"link\"}\r\n {...params}\r\n >\r\n {showIcon !== false && (\r\n <span className={getLess(styles, \"nsc-basepage-icon\")}>\r\n {icon}\r\n </span>\r\n )}\r\n <span className={getLess(styles, \"nsc-basepage-text\")}>\r\n {children}\r\n </span>\r\n </Button>\r\n );\r\n }\r\n });\r\n // }\r\n }\r\n //树点击事件\r\n treeSelect(selectedKeys: any, obj: any) {\r\n let keyword = \"\";\r\n const {\r\n searchKey = \"key\",\r\n searchField = \"\",\r\n parantSelect = true,\r\n } = this.props.treeProps;\r\n const { treeSelectedKey } = this.state;\r\n const { selected, selectedNodes } = obj;\r\n\r\n if (selected) {\r\n keyword = selectedNodes[0].dataref.attribute[searchKey];\r\n if (parantSelect) {\r\n this.setState({\r\n treeSelectedKey: selectedKeys[0],\r\n treeSearchPrams: { [searchField]: keyword },\r\n });\r\n } else {\r\n if (selectedNodes[0].isLeaf || !selectedNodes[0].children) {\r\n if (selectedKeys[0] !== treeSelectedKey) {\r\n this.setState({\r\n treeSelectedKey: selectedKeys[0],\r\n treeSearchPrams: { [searchField]: keyword },\r\n });\r\n }\r\n }\r\n }\r\n } else {\r\n this.setState({\r\n treeSelectedKey: keyword,\r\n treeSearchPrams: {},\r\n });\r\n }\r\n if (this.props.onTreeSelect) {\r\n this.props.onTreeSelect(selectedKeys, obj);\r\n return;\r\n }\r\n const fromValue = this.searchRef?.current?.getSearchValues() || {};\r\n searchField && this.tableLoad({ ...fromValue, [searchField]: keyword });\r\n this.props.onCallBacks?.treeSelectCallBack &&\r\n utils.callback(this.props.onCallBacks?.treeSelectCallBack, this, [\r\n selectedKeys,\r\n obj,\r\n ]);\r\n }\r\n resetSearch() {\r\n this.searchRef.current?.resetFields();\r\n }\r\n getText(props, text) {\r\n let newText = text;\r\n if (props?.data && props?.data?.length > 0) {\r\n let data = props.data;\r\n for (let i = 0; i < data?.length; i++) {\r\n if (data[i].value == text) {\r\n newText = data[i].label;\r\n }\r\n }\r\n }\r\n return newText;\r\n }\r\n setTableData(data) {\r\n this.tableRef.current?.store?.setData(data);\r\n }\r\n setTreeData(data) {\r\n this.treeRef.current?.store?.setData(data);\r\n }\r\n getSelectedKey = (selected) => {\r\n let res = [];\r\n for (let key in selected) {\r\n const keys = selected[key];\r\n if (keys.length > 0) {\r\n res = [...res, ...keys];\r\n }\r\n }\r\n return res;\r\n };\r\n\r\n render() {\r\n const {\r\n columns = [],\r\n showSearch = true,\r\n children,\r\n submitUrl = \"\",\r\n tableProps = {},\r\n treeProps = {},\r\n formProps = {},\r\n showLeft = false,\r\n submitParams = {},\r\n showToolButton = true,\r\n buttons = [],\r\n editorForm = true,\r\n onShowForm,\r\n formChangeValid = true,\r\n className,\r\n toolButtonPosition = \"buttom\",\r\n actionPorps,\r\n deletePosition = \"toolbar\",\r\n } = this.props;\r\n const {\r\n store,\r\n filterColumn = true,\r\n actionColumn = true,\r\n showRowSelection = true,\r\n columnOrder = true,\r\n expandable = {},\r\n parantSelect = true,\r\n title: tableTitle,\r\n ...othertableParams\r\n } = tableProps;\r\n\r\n const {\r\n store: treeStore = {},\r\n showSearch: treeSearch = true,\r\n titleAlias = \"title\",\r\n title: treeTitle,\r\n ...othertreeParams\r\n } = treeProps;\r\n let tableParams = { filterColumn, store, ...othertableParams } as any;\r\n let tableColumn: any[] = [];\r\n const searchForms: any = [];\r\n const editorForms: any = [];\r\n const defaultValue: any = {};\r\n const columnButtons: any = [];\r\n const { elementHeight } = this.state;\r\n\r\n columns.map((item: any) => {\r\n let temp = { width: 100, ...item };\r\n if (temp.search === true || temp.search?.show === true) {\r\n searchForms.push({\r\n name: temp.field || temp.dataIndex,\r\n label: temp.search?.label || temp.title,\r\n type: temp.type,\r\n props: temp.props,\r\n labelCol: temp.search?.labelCol,\r\n wrapperCol: temp.search?.wrapperCol,\r\n rules: temp.searchRules ? temp.searchRules : [],\r\n });\r\n }\r\n\r\n delete temp.search;\r\n temp.editor !== false &&\r\n editorForms.push({\r\n name: temp.field || temp.dataIndex,\r\n label: temp.title,\r\n rules: temp.rules ? temp.rules : [],\r\n type: temp.type,\r\n span: temp.span,\r\n dictName: temp.dictName,\r\n props: { ...temp.props },\r\n });\r\n\r\n if (\r\n temp.props?.defaultValue !== undefined &&\r\n temp.props?.defaultValue !== null\r\n ) {\r\n const name = temp.field || temp.dataIndex;\r\n defaultValue[name] = temp.props?.defaultValue;\r\n }\r\n delete temp.rules;\r\n delete temp.span;\r\n if (temp.columnSearch) {\r\n temp.filterProps = {\r\n type: temp.type,\r\n props: temp.props,\r\n };\r\n }\r\n delete temp.type;\r\n let tempProp = { ...temp.props };\r\n if (temp.style) {\r\n temp = {\r\n render: (text: any) => {\r\n return (\r\n <>\r\n {text !== \"\" && text !== null && text !== undefined && (\r\n <div className={getLess(styles, \"nsc-basepage-col-back\")}>\r\n <span className={getLess(styles, \"nsc-basepage-col-text\")}>\r\n {this.getText(tempProp, text)}\r\n </span>\r\n </div>\r\n )}\r\n </>\r\n );\r\n },\r\n ...temp,\r\n };\r\n } else if (!temp.ellipsis) {\r\n temp = {\r\n ellipsis: { showTitle: false },\r\n render: (text: any) => {\r\n return this.getText(tempProp, text);\r\n },\r\n ...temp,\r\n };\r\n } else {\r\n temp = {\r\n ellipsis: true,\r\n ...temp,\r\n };\r\n }\r\n delete temp.props;\r\n\r\n // temp.ellipsis = true;\r\n if (temp?.columnShow !== false) tableColumn.push(temp);\r\n });\r\n const selfButtons: any = [];\r\n const { baseActionColumn } = config();\r\n let showIcon = true;\r\n if (actionPorps?.showIcon === false) showIcon = false;\r\n else if (baseActionColumn.showIcon === false) showIcon = false;\r\n if (editorForm == true) {\r\n if (buttons.indexOf(\"search\") > -1) {\r\n columnButtons.push(\r\n <Button\r\n onClick={(record: any) => {\r\n if (onShowForm) {\r\n onShowForm(record.attribute || record, \"detail\");\r\n return;\r\n }\r\n this.showForm(record.attribute || record, \"detail\");\r\n }}\r\n icon={<EyeOutlined />}\r\n type={\"link\"}\r\n >\r\n 查看\r\n </Button>\r\n );\r\n }\r\n if (buttons.indexOf(\"editor\") > -1) {\r\n columnButtons.push(\r\n <Button\r\n onClick={(record: any) => {\r\n if (onShowForm) {\r\n onShowForm(record.attribute || record, \"editor\");\r\n return;\r\n }\r\n this.showForm(record.attribute || record, \"editor\");\r\n }}\r\n icon={<EditOutlined />}\r\n type=\"link\"\r\n >\r\n 编辑\r\n </Button>\r\n );\r\n }\r\n }\r\n if (buttons.indexOf(\"add\") > -1) {\r\n selfButtons.push(\r\n <Button\r\n type={\"primary\"}\r\n onClick={() => {\r\n const { onShowForm } = this.props;\r\n if (onShowForm) {\r\n onShowForm();\r\n return;\r\n }\r\n this.showForm();\r\n }}\r\n icon={<PlusOutlined />}\r\n >\r\n 添加\r\n </Button>\r\n );\r\n }\r\n if (buttons.indexOf(\"delete\") > -1) {\r\n if (deletePosition == \"toolbar\") {\r\n selfButtons.push(\r\n <Button\r\n // type={\"primary\"}\r\n onClick={this.onDelete.bind(this)}\r\n icon={<DeleteOutlined />}\r\n danger\r\n >\r\n 删除\r\n </Button>\r\n );\r\n } else if (deletePosition == \"row\") {\r\n columnButtons.push(\r\n <Button\r\n // type={\"primary\"}\r\n onClick={(record: any) => {\r\n this.onDelete(record);\r\n }}\r\n icon={<DeleteOutlined />}\r\n danger\r\n type=\"link\"\r\n >\r\n 删除\r\n </Button>\r\n );\r\n }\r\n }\r\n if (Array.isArray(children)) {\r\n children.map((item: any) => {\r\n if (Array.isArray(item)) {\r\n item.map((child) => {\r\n if (child?.props?.pageType == \"toolButton\") {\r\n selfButtons.push(child);\r\n } else if (child?.props?.pageType == \"cloumnButton\") {\r\n columnButtons.push(child);\r\n }\r\n });\r\n } else {\r\n if (item?.props?.pageType == \"toolButton\") {\r\n selfButtons.push(item);\r\n } else if (item?.props?.pageType == \"cloumnButton\") {\r\n columnButtons.push(item);\r\n }\r\n }\r\n });\r\n } else if (children) {\r\n const { props }: any = children;\r\n if (props?.pageType == \"toolButton\") {\r\n selfButtons.push(children);\r\n } else if (props?.pageType == \"cloumnButton\") {\r\n columnButtons.push(children);\r\n }\r\n }\r\n actionColumn &&\r\n tableColumn.push({\r\n title: \"操作\",\r\n dataIndex: \"action\",\r\n align: actionPorps?.textAlign\r\n ? actionPorps?.textAlign\r\n : baseActionColumn.textAlign\r\n ? baseActionColumn.textAlign\r\n : \"left\",\r\n width: actionPorps?.width\r\n ? actionPorps?.width\r\n : baseActionColumn.width\r\n ? baseActionColumn.width\r\n : 200,\r\n fixed: \"right\",\r\n render: (text: any, record: any) => {\r\n return (\r\n <div className={getLess(styles, \"nsc-basepage-action\")}>\r\n {this.renderCloumnButton(columnButtons, record)}\r\n </div>\r\n );\r\n },\r\n });\r\n\r\n if (columnOrder)\r\n tableColumn = [\r\n {\r\n title: \"序号\",\r\n width: 80,\r\n align: \"center\",\r\n render: (text, reacord, index) => {\r\n return <>{index + 1}</>;\r\n },\r\n },\r\n ...tableColumn,\r\n ];\r\n let searchFlag = showSearch && searchForms.length > 0;\r\n let { tableTool } = config();\r\n let toolFlag =\r\n showToolButton &&\r\n selfButtons.length > 0 &&\r\n toolButtonPosition == \"buttom\";\r\n let toolbarFlag = !(\r\n tableProps.toolbar == false ||\r\n tableProps.toolbar?.show == false ||\r\n tableProps.toolbar?.tools?.length == 0 ||\r\n tableTool?.show == false\r\n );\r\n\r\n let pageHeight = this.props.pageType == \"tabspage\" ? 63 : 0;\r\n let tableHeaderHeight = 55;\r\n\r\n let headerHeight = showSearch && searchForms.length > 0 ? 104 : 0;\r\n let toolHeight = tableTitle || toolFlag ? 48 : 0;\r\n let paddingHeight = 25;\r\n let tableContentHeight =\r\n elementHeight - headerHeight - toolHeight - paddingHeight - pageHeight;\r\n console.log(\"elementHeight\", elementHeight);\r\n let tableHeight = tableContentHeight - 32 - 32;\r\n let tableSrollHeight = tableContentHeight - tableHeaderHeight - 32 - 32;\r\n console.log(\"tableSrollHeight\", tableSrollHeight);\r\n if (tableProps.pagination !== false) {\r\n const scroll = tableParams.scroll;\r\n tableParams = {\r\n ...tableParams,\r\n scroll: { x: \"max-content\", y: tableSrollHeight, ...scroll },\r\n };\r\n }\r\n console.log(\"tableProps\", tableProps);\r\n return (\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage\"), className)}\r\n ref={this.pageRef}\r\n >\r\n {this.props.pageTitle && (\r\n <div className={cls(getLess(styles, \"nsc-basepage-title\"))}>\r\n {this.props.pageTitle}\r\n </div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-pane\"))}\r\n style={{ display: \"flex\" }}\r\n >\r\n {showLeft && (\r\n <div className={getLess(styles, \"nsc-basepage-left\")}>\r\n {treeTitle && (\r\n <div className={getLess(styles, \"tree-title\")}>{treeTitle}</div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"tree-content\"), {\r\n [getLess(styles, \"tree-content-notitle\")]: !treeTitle,\r\n })}\r\n >\r\n <Tree\r\n store={{ ...treeStore }}\r\n showIcon={false}\r\n checkable={false}\r\n searchable={treeSearch}\r\n onSelect={this.treeSelect.bind(this)}\r\n selectedKeys={[this.state.treeSelectedKey]}\r\n titleAlias={titleAlias}\r\n {...othertreeParams}\r\n />\r\n </div>\r\n </div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-right\"), {\r\n [getLess(styles, \"nsc-basepage-no-left-right\")]: !showLeft,\r\n })}\r\n >\r\n {showSearch && searchForms.length > 0 && (\r\n <div className={getLess(styles, \"nsc-basepage-headersearch\")}>\r\n <HeaderSearch\r\n searchForms={searchForms}\r\n toolButtonPosition={toolButtonPosition}\r\n onSearch={this.onSearch.bind(this)}\r\n onReset={this.props.onReset}\r\n ref={this.searchRef}\r\n searchFormProps={this.props.searchFormProps}\r\n />\r\n </div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-content\"), {\r\n [getLess(styles, \"nsc-basepage-content-gap\")]: !searchFlag,\r\n })}\r\n >\r\n {(tableTitle || toolFlag) && (\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-table-title\"), {\r\n [getLess(styles, \"nsc-basepage-title-width\")]: !toolbarFlag,\r\n })}\r\n >\r\n <div>{tableTitle}</div>\r\n {toolFlag && this.renderToolButtons(selfButtons, toolbarFlag)}\r\n </div>\r\n )}\r\n\r\n <div\r\n className={cls(\r\n getLess(styles, \"nsc-basepage-table\"),\r\n {\r\n [getLess(styles, \"nsc-basepage-table-top\")]: !toolbarFlag,\r\n },\r\n {\r\n [getLess(styles, \"nsc-basepage-table-top2\")]:\r\n toolbarFlag && !toolFlag,\r\n }\r\n )}\r\n style={{ height: tableContentHeight }}\r\n >\r\n <Table\r\n ref={this.tableRef}\r\n columns={tableColumn}\r\n expandable={{\r\n expandIcon: ({ expanded, onExpand, record }) => {\r\n return (\r\n <>\r\n {expanded ? (\r\n <DownOutlined\r\n onClick={(e) => onExpand(record, e)}\r\n className={getLess(\r\n styles,\r\n \"nsc-basepage-expand-icon\"\r\n )}\r\n />\r\n ) : (\r\n record.childNodes && (\r\n <RightOutlined\r\n onClick={(e) => onExpand(record, e)}\r\n className={getLess(\r\n styles,\r\n \"nsc-basepage-expand-icon\"\r\n )}\r\n />\r\n )\r\n )}\r\n </>\r\n );\r\n },\r\n ...expandable,\r\n }}\r\n columnOrder={true}\r\n onChange={(pagination) => {\r\n const { currentPage } = this.state;\r\n if (currentPage !== pagination.current) {\r\n this.setState({\r\n currentPage: pagination.current,\r\n });\r\n }\r\n }}\r\n toolbar={{\r\n onToolClick: {\r\n onRefresh: () => {\r\n const params = this.getSearchValues();\r\n this.tableLoad(params);\r\n },\r\n },\r\n ...tableProps.toolbar,\r\n }}\r\n showRowSelection={showRowSelection}\r\n style={{ height: tableHeight }}\r\n {...tableParams}\r\n // pagination={false}\r\n />\r\n {/* <div></div> */}\r\n </div>\r\n </div>\r\n </div>\r\n {editorForm && (\r\n <EditorForm\r\n ref={this.editorRef}\r\n callBack={() => {\r\n this.props.onCallBacks?.onSumbitCallBack &&\r\n this.props.onCallBacks?.onSumbitCallBack();\r\n this.tableReload();\r\n }}\r\n formProps={editorForms}\r\n submitUrl={submitUrl}\r\n submitParams={submitParams}\r\n onSubmit={this.props.onSubmit}\r\n defaultValue={defaultValue}\r\n onHideForm={this.props.onHideForm}\r\n onFormChange={this.props.onFormChange}\r\n formType={this.props.formType || \"auto\"}\r\n changeValid={formChangeValid}\r\n otherProps={{ ...formProps }}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\nexport default BasePage;\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","PureComponent","Table","Tree","Button","Modal","Popover","message","EditorForm","cls","utils","DownOutlined","EyeOutlined","EditOutlined","RightOutlined","PlusOutlined","EllipsisOutlined","DeleteOutlined","getLess","request","config","getStorage","HeaderSearch","styles","BasePage","constructor","props","_type","_size","_defineProperty","createRef","checkedTreeKeys","name","userType","account","state","value","deptId","onSearch","selected","res","key","keys","length","storePrefix","type","content","size","selectedRowKeys","selectedRowDatas","treeSelectedKey","expand","formType","tableSize","treeSearchPrams","popopens","elementHeight","componentDidMount","_this$pageRef$current","initData","pageRef","current","clientHeight","setState","setSearchParams","params","callBack","_this$searchRef$curre","searchRef","showForm","_this$editorRef$curre","editorflag","arguments","undefined","editorRef","show","_objectSpread","hideForm","_this$editorRef$curre2","setLoading","loading","_this$editorRef$curre3","setEditFormValues","_this$editorRef$curre4","setFieldsValue","getEditFormValues","_this$editorRef$curre5","getFieldsValue","onDelete","data","_this$tableRef$curren","deleteUrl","deleteParams","deletePosition","_this","tableRef","getSelectedRowKeys","warning","confirm","onOk","Error","defaultParams","method","autoPrefix","ids","join","id","requestParams","then","code","_this$searchRef","_this$props$onCallBac","_this$props$onCallBac2","success","getSearchValues","onCallBacks","onDeleteCallBack","tableLoad","error","catch","console","log","_this$tableRef$curren2","requestConfig","store","load","onSearchCallBack","callback","tableReload","_this$tableRef$curren3","autoLoad","reload","_res$data","records","currentPage","_this$tableRef$curren4","_this$tableRef$curren5","getSelectedRowDatas","_this$tableRef$curren6","resetSelectedRowKeys","_this$tableRef$curren7","_this$searchRef2","fromValue","getChildrenData","tableProps","rowKey","resKey","childNodes","children","map","item","index","renderToolButtons","toolbuttons","toolbarFlag","flag","reverse","showSearch","_item$props","pageType","onClick","icon","_objectWithoutProperties","_excluded","createElement","_extends","className","style","marginLeft","title","placement","trigger","renderCloumnButton","columnButtons","record","actionPorps","baseActionColumn","newButtons","showIcon","_item$props2","recordShow","_excluded2","eval","push","_item$props3","_excluded3","_item$props4","_excluded4","open","onOpenChange","treeSelect","selectedKeys","obj","_this$searchRef3","_this$props$onCallBac3","_this$props$onCallBac4","keyword","searchKey","searchField","parantSelect","treeProps","selectedNodes","dataref","attribute","isLeaf","onTreeSelect","treeSelectCallBack","resetSearch","_this$searchRef$curre2","resetFields","getText","text","_props$data","newText","i","label","setTableData","_this$tableRef$curren8","setData","setTreeData","_this$treeRef$current","treeRef","render","_tableProps$toolbar","_tableProps$toolbar2","columns","submitUrl","formProps","showLeft","submitParams","showToolButton","buttons","editorForm","onShowForm","formChangeValid","toolButtonPosition","filterColumn","actionColumn","showRowSelection","columnOrder","expandable","tableTitle","othertableParams","_excluded5","treeStore","treeSearch","titleAlias","treeTitle","othertreeParams","_excluded6","tableParams","tableColumn","searchForms","editorForms","defaultValue","_temp$search","_temp$props","_temp$props2","_temp","temp","width","search","_temp$search2","_temp$search3","_temp$search4","field","dataIndex","labelCol","wrapperCol","rules","searchRules","editor","span","dictName","_temp$props3","columnSearch","filterProps","tempProp","Fragment","ellipsis","showTitle","columnShow","selfButtons","indexOf","bind","danger","Array","isArray","child","_child$props","_child$props2","_item$props5","_item$props6","align","textAlign","fixed","reacord","searchFlag","tableTool","toolFlag","toolbar","tools","pageHeight","tableHeaderHeight","headerHeight","toolHeight","paddingHeight","tableContentHeight","tableHeight","tableSrollHeight","pagination","scroll","x","y","ref","pageTitle","display","checkable","searchable","onSelect","onReset","searchFormProps","height","expandIcon","_ref","expanded","onExpand","e","onChange","onToolClick","onRefresh","_this$props$onCallBac5","_this$props$onCallBac6","onSumbitCallBack","onSubmit","onHideForm","onFormChange","changeValid","otherProps"],"sources":["../../../src/components/page/BasePage/index.tsx"],"sourcesContent":["import React, { PureComponent, ReactNode } from \"react\";\r\nimport Table from \"../../base/table\";\r\nimport Tree from \"../../base/tree\";\r\nimport Button from \"../../base/button\";\r\nimport Modal from \"../../base/modal\";\r\nimport Popover from \"../../base/popover\";\r\nimport message from \"../../base/message\";\r\nimport EditorForm from \"./Form\";\r\nimport cls from \"classnames\";\r\nimport \"./index.module.less\";\r\nimport Store, { PageStore, StoreProps } from \"@bj-nsc/msn\";\r\nimport { utils } from \"@bj-nsc/msn/lib/utils\";\r\nimport {\r\n DownOutlined,\r\n EyeOutlined,\r\n EditOutlined,\r\n RightOutlined,\r\n PlusOutlined,\r\n EllipsisOutlined,\r\n DeleteOutlined,\r\n} from \"@ant-design/icons\";\r\nimport { getLess, getNode } from \"../../utils\";\r\nimport request from \"nsc-request\";\r\nimport omit from \"omit.js\";\r\nimport config from \"../../config\";\r\nimport { getStorage, px2vw } from \"@bj-nsc/functions\";\r\nimport { IFormProps } from \"../../base/form/Form\";\r\nimport HeaderSearch from \"../HeaderSearch\";\r\nimport { PaginationProps } from \"antd\";\r\ninterface TableProps {\r\n actionColumn?: boolean; //是否显示操作列\r\n store?: StoreProps;\r\n filterColumn?: boolean; //是否显示过滤按钮\r\n showRowSelection?: boolean; //是否表格勾选列\r\n pagination?: boolean | PaginationProps; //是否显示分页\r\n columnOrder?: boolean; //是否显示表格序列\r\n [propsName: string]: any;\r\n}\r\nconst styles = null;\r\ninterface TreeProps {\r\n store?: StoreProps;\r\n showSearch?: boolean; //是否显示搜索框\r\n searchKey?: string; //搜索value对应的key\r\n searchField?: string; //查询对应的key\r\n titleAlias?: string; //树title对应的key,默认title\r\n nodePorps?: object;\r\n parantSelect?: boolean;\r\n [propsName: string]: any;\r\n}\r\ninterface FormProps extends IFormProps {}\r\ninterface NSCBaseBageProps {\r\n showSearch?: boolean; //是否显示头部搜索栏\r\n tableProps?: TableProps; //表格参数\r\n treeProps?: TreeProps; //左侧树参数\r\n submitParams?: Object; //添加参数,默认mothod:post, 参数通过data传递\r\n submitUrl?: string;\r\n onSubmit?: (value?: any, label?: any) => void;\r\n columns: Array<Object>;\r\n showLeft?: boolean; //是否显示左侧目录树\r\n showToolButton?: boolean; //是否显示按钮栏\r\n editorForm?: boolean; //是否需要表单功能 , 为false 编辑,查看,新增功能均不可用\r\n deleteUrl?: string; //删除url\r\n onDelete?: (selectedKeys?: Array<string>) => void; //删除参数,默认mothod:post, 参数通过ids拼接传递给后台\r\n deletePosition?: \"toolbar\" | \"row\";\r\n deleteParams?: Object;\r\n children?: React.ReactNode;\r\n onSearch?: (value?: any) => void;\r\n onReset?: () => void;\r\n initData?: any; //初始化回调函数,在componentDidMount中调用\r\n buttons?: Array<string>; //按钮集合 ['add','delete','search','editor']\r\n onShowForm?: (value?: any, editorFlag?: string) => void; //打开表单回调\r\n onHideForm?: () => void; //打开表单回调\r\n onFormChange?: (changedValues?: any, allValues?: any) => void; //表单onChange回调\r\n formType?: \"modal\" | \"drawer\";\r\n formChangeValid?: boolean; //表单校验\r\n className?: any;\r\n toolButtonPosition?: \"right\" | \"buttom\";\r\n pageTitle?: string | ReactNode;\r\n formProps?: FormProps;\r\n actionPorps?: { textAlign?: string; showIcon?: boolean; width?: number };\r\n searchFormProps?: { wrapperCol?: any; labelCol?: any };\r\n onTreeSelect?: (value?: any, editorFlag?: string) => void; //打开表单回调\r\n onCallBacks?: {\r\n treeSelectCallBack?: any;\r\n onSearchCallBack?: any;\r\n onSumbitCallBack?: any;\r\n onDeleteCallBack?: any;\r\n };\r\n pageType?: \"normal\" | \"tabspage\";\r\n}\r\n\r\nclass BasePage extends PureComponent<NSCBaseBageProps, any> {\r\n tableRef = React.createRef<any>();\r\n treeRef = React.createRef<any>();\r\n searchRef = React.createRef<any>();\r\n editorRef = React.createRef<any>();\r\n pageRef = React.createRef<any>();\r\n dateFormat = {} as any;\r\n constructor(props: any) {\r\n super(props);\r\n let { storePrefix } = config();\r\n let type = getStorage(\r\n storePrefix ? storePrefix + \"-\" + \"formType\" : \"formType\"\r\n );\r\n type = type?.content;\r\n let size = getStorage(\r\n storePrefix ? storePrefix + \"-\" + \"tableSize\" : \"tableSize\"\r\n );\r\n size = size?.content;\r\n this.state = {\r\n type: \"add\",\r\n selectedRowKeys: [],\r\n selectedRowDatas: [],\r\n treeSelectedKey: \"\",\r\n expand: false,\r\n formType: type || \"modal\",\r\n tableSize: size || \"default\",\r\n treeSearchPrams: {},\r\n popopens: {},\r\n elementHeight: 0,\r\n };\r\n }\r\n componentDidMount() {\r\n const { initData } = this.props;\r\n const elementHeight = this.pageRef.current?.clientHeight;\r\n this.setState({\r\n elementHeight,\r\n });\r\n initData && initData();\r\n }\r\n\r\n setSearchParams(params, callBack) {\r\n this.searchRef.current?.setSearchParams(params);\r\n callBack && callBack(params);\r\n }\r\n\r\n onSelect = (checkedTreeKeys: any) => {\r\n const { name, userType, account } = this.state;\r\n const value = { name, userType, account, deptId: checkedTreeKeys[0] };\r\n if (this.props.onSearch) {\r\n this.props.onSearch(value);\r\n }\r\n // this.tableLoad(value);\r\n };\r\n\r\n //显示表单\r\n showForm(value?: any, editorflag = \"add\") {\r\n this.editorRef.current?.show({ ...value }, editorflag);\r\n }\r\n\r\n //关闭表单\r\n hideForm() {\r\n this.editorRef.current?.hideForm();\r\n }\r\n\r\n setLoading(loading: boolean) {\r\n this.editorRef.current?.setLoading(loading);\r\n }\r\n\r\n setEditFormValues(value) {\r\n this.editorRef.current?.setFieldsValue(value);\r\n }\r\n\r\n getEditFormValues() {\r\n return this.editorRef.current?.getFieldsValue();\r\n }\r\n\r\n //批量删除\r\n onDelete(data?: any) {\r\n const {\r\n deleteUrl,\r\n onDelete,\r\n deleteParams,\r\n deletePosition = \"toolbar\",\r\n } = this.props;\r\n let _this = this;\r\n const selectedRowKeys = this.tableRef.current?.getSelectedRowKeys();\r\n if (deletePosition == \"toolbar\") {\r\n if (selectedRowKeys.length == 0) {\r\n message.warning(\"请选择要删除的数据!\");\r\n return;\r\n }\r\n }\r\n Modal.confirm({\r\n content: \"是否确认删除所选项?\",\r\n // centered:true,\r\n onOk: () => {\r\n if (onDelete) {\r\n onDelete &&\r\n onDelete(deletePosition == \"toolbar\" ? selectedRowKeys : data);\r\n return;\r\n }\r\n if (!deleteUrl) {\r\n throw new Error(\"url不能为空!\");\r\n }\r\n const defaultParams = {\r\n method: \"post\",\r\n autoPrefix: true,\r\n params: {\r\n ids: deletePosition == \"toolbar\" ? selectedRowKeys.join() : data.id,\r\n },\r\n };\r\n let requestParams = {} as any;\r\n if (defaultParams) {\r\n requestParams = { ...deleteParams };\r\n }\r\n requestParams = { ...defaultParams };\r\n request(deleteUrl, {\r\n ...requestParams,\r\n })\r\n .then(function (res: any) {\r\n const { code } = res;\r\n if (code === 200) {\r\n message.success(\"删除成功!\");\r\n let value = _this.searchRef?.current?.getSearchValues();\r\n _this.props.onCallBacks?.onDeleteCallBack &&\r\n _this.props.onCallBacks?.onDeleteCallBack();\r\n _this.tableLoad(value);\r\n } else {\r\n message.error(\"删除失败!\");\r\n }\r\n })\r\n .catch(function (error: any) {\r\n console.log(\"error\", error);\r\n });\r\n },\r\n });\r\n }\r\n tableLoad(params: any, requestConfig = {}) {\r\n this.tableRef.current?.store.load({\r\n ...requestConfig,\r\n params: params,\r\n });\r\n }\r\n //查询\r\n onSearch(params) {\r\n const { onSearch, onCallBacks } = this.props;\r\n if (onSearch) {\r\n onSearch({ ...params, ...this.state.treeSearchPrams });\r\n return;\r\n }\r\n this.tableLoad({ ...params, ...this.state.treeSearchPrams });\r\n onCallBacks?.onSearchCallBack &&\r\n utils.callback(onCallBacks?.onSearchCallBack, this, [params]);\r\n }\r\n //表格重新加载\r\n tableReload(params = {}, autoLoad = true) {\r\n this.tableRef.current?.store?.reload({\r\n callback: (res) => {\r\n if (\r\n autoLoad &&\r\n res?.data?.records?.length == 0 &&\r\n this.state.currentPage !== 1\r\n ) {\r\n this.tableRef.current?.store?.reload({\r\n params: { current: 1, ...params },\r\n });\r\n }\r\n },\r\n });\r\n }\r\n getSelectedRowKeys() {\r\n return this.tableRef.current?.getSelectedRowKeys();\r\n }\r\n getSelectedRowDatas() {\r\n return this.tableRef.current?.getSelectedRowDatas();\r\n }\r\n resetSelectedRowKeys() {\r\n return this.tableRef.current?.resetSelectedRowKeys();\r\n }\r\n\r\n getSearchValues() {\r\n const fromValue = this.searchRef?.current?.getSearchValues();\r\n return { ...fromValue, ...this.state.treeSearchPrams };\r\n }\r\n\r\n getChildrenData(data, keys = []) {\r\n const { tableProps } = this.props;\r\n const { rowKey = \"id\" } = tableProps;\r\n let resKey = [];\r\n if (data.childNodes) {\r\n const children = data.childNodes;\r\n children.map((item, index) => {\r\n if (item.childNodes) {\r\n this.getChildrenData(item.childNodes, keys);\r\n } else {\r\n resKey = [...keys, item[rowKey]];\r\n }\r\n });\r\n } else {\r\n resKey = [...keys, data[rowKey]];\r\n }\r\n return resKey;\r\n }\r\n\r\n renderToolButtons(toolbuttons: any, toolbarFlag) {\r\n const flag = toolbuttons.length > 5;\r\n toolbuttons = [...toolbuttons].reverse();\r\n const { showSearch = true } = this.props;\r\n const content = toolbuttons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, icon, show, ...params } = item.props;\r\n if (index > 3) {\r\n return (\r\n <div\r\n className={cls(\r\n getLess(styles, \"nsc-basepage-editor\"),\r\n getLess(styles, \"nsc-basepage-content-item\")\r\n )}\r\n key={index}\r\n onClick={() => {\r\n onClick && onClick();\r\n }}\r\n {...params}\r\n >\r\n <span className={getLess(styles, \"nsc-basepage-icon\")}>{icon}</span>\r\n <span className={getLess(styles, \"nsc-basepage-text\")}>\r\n {children}\r\n </span>\r\n </div>\r\n );\r\n }\r\n });\r\n return (\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-tool-buttons\"))}\r\n style={{ marginLeft: 0 }}\r\n >\r\n {toolbuttons.map((item: any, index: any) => {\r\n if (flag) {\r\n if (index < 4) {\r\n return <div key={index}>{item}</div>;\r\n } else if (index == 4) {\r\n return (\r\n <Popover\r\n content={content}\r\n title={null}\r\n placement=\"bottom\"\r\n trigger={[\"click\"]}\r\n key={index}\r\n // overlayClassName={styles['pop-box']}\r\n >\r\n <Button type=\"primary\">\r\n 更多 <DownOutlined />\r\n </Button>\r\n </Popover>\r\n );\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n return <div key={index}>{item}</div>;\r\n }\r\n })}\r\n </div>\r\n );\r\n }\r\n renderCloumnButton(columnButtons: any, record: any) {\r\n const { actionPorps } = this.props;\r\n const { baseActionColumn } = config();\r\n const newButtons = [];\r\n let showIcon = true;\r\n console.log(\"columnButtons\", columnButtons);\r\n if (actionPorps?.showIcon === false) showIcon = false;\r\n else if (baseActionColumn.showIcon === false) showIcon = false;\r\n columnButtons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, icon, recordShow, ...params } =\r\n item.props;\r\n if (recordShow) {\r\n if (typeof recordShow == \"string\") {\r\n if (eval(recordShow)) {\r\n newButtons.push(item);\r\n }\r\n } else if (typeof recordShow == \"function\") {\r\n const show = recordShow(record);\r\n show && newButtons.push(item);\r\n }\r\n } else {\r\n newButtons.push(item);\r\n }\r\n });\r\n const flag = newButtons.length > 3;\r\n\r\n const content = newButtons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, recordShow, icon, show, ...params } =\r\n item.props;\r\n if (index > 2) {\r\n return (\r\n <Button\r\n className={cls(\r\n getLess(styles, \"nsc-basepage-editor\"),\r\n getLess(styles, \"nsc-basepage-content-item\")\r\n )}\r\n key={index}\r\n onClick={() => {\r\n let data = { ...this.state.popopens };\r\n data[record.id] = false;\r\n this.setState({\r\n popopens: data,\r\n });\r\n onClick && onClick(record);\r\n }}\r\n {...params}\r\n type={\"link\"}\r\n >\r\n {showIcon !== false && (\r\n <span className={getLess(styles, \"nsc-basepage-icon\")}>\r\n {icon}\r\n </span>\r\n )}\r\n <span className={getLess(styles, \"nsc-basepage-text\")}>\r\n {children}\r\n </span>\r\n </Button>\r\n );\r\n }\r\n });\r\n\r\n console.log(\"newButtons\", newButtons);\r\n\r\n return newButtons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, recordShow, icon, ...params } =\r\n item.props;\r\n if (flag) {\r\n if (index < 3) {\r\n return (\r\n <Button\r\n className={cls(getLess(styles, \"nsc-basepage-editor\"), {\r\n [getLess(styles, \"nsc-basepage-editor-first\")]: index === 0,\r\n })}\r\n key={index}\r\n onClick={() => {\r\n onClick && onClick(record);\r\n }}\r\n {...params}\r\n type={\"link\"}\r\n >\r\n {showIcon !== false && (\r\n <span className={getLess(styles, \"nsc-basepage-icon\")}>\r\n {icon}\r\n </span>\r\n )}\r\n <span className={getLess(styles, \"nsc-basepage-text\")}>\r\n {children}\r\n </span>\r\n </Button>\r\n );\r\n } else if (index == 3) {\r\n return (\r\n <Popover\r\n placement=\"bottom\"\r\n title={null}\r\n content={content}\r\n trigger={[\"click\"]}\r\n key={index}\r\n open={this.state.popopens[record.id] || false}\r\n onOpenChange={(open) => {\r\n if (open) {\r\n let data = { ...this.state.popopens };\r\n data[record.id] = true;\r\n this.setState({\r\n popopens: data,\r\n });\r\n } else {\r\n this.setState({\r\n popopens: {},\r\n });\r\n }\r\n }}\r\n // overlayClassName={styles['pop']}\r\n >\r\n <a className={getLess(styles, \"nsc-basepage-editor\")}>\r\n <EllipsisOutlined />\r\n </a>\r\n </Popover>\r\n );\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n console.log(\"aaaa\");\r\n return (\r\n <Button\r\n className={cls(getLess(styles, \"nsc-basepage-editor\"), {\r\n [getLess(styles, \"nsc-basepage-editor-first\")]: index === 0,\r\n })}\r\n key={index}\r\n onClick={() => {\r\n onClick && onClick(record);\r\n }}\r\n type={\"link\"}\r\n {...params}\r\n >\r\n {showIcon !== false && (\r\n <span className={getLess(styles, \"nsc-basepage-icon\")}>\r\n {icon}\r\n </span>\r\n )}\r\n <span className={getLess(styles, \"nsc-basepage-text\")}>\r\n {children}\r\n </span>\r\n </Button>\r\n );\r\n }\r\n });\r\n // }\r\n }\r\n //树点击事件\r\n treeSelect(selectedKeys: any, obj: any) {\r\n let keyword = \"\";\r\n const {\r\n searchKey = \"key\",\r\n searchField = \"\",\r\n parantSelect = true,\r\n } = this.props.treeProps;\r\n const { treeSelectedKey } = this.state;\r\n const { selected, selectedNodes } = obj;\r\n\r\n if (selected) {\r\n keyword = selectedNodes[0].dataref.attribute[searchKey];\r\n if (parantSelect) {\r\n this.setState({\r\n treeSelectedKey: selectedKeys[0],\r\n treeSearchPrams: { [searchField]: keyword },\r\n });\r\n } else {\r\n if (selectedNodes[0].isLeaf || !selectedNodes[0].children) {\r\n if (selectedKeys[0] !== treeSelectedKey) {\r\n this.setState({\r\n treeSelectedKey: selectedKeys[0],\r\n treeSearchPrams: { [searchField]: keyword },\r\n });\r\n }\r\n }\r\n }\r\n } else {\r\n this.setState({\r\n treeSelectedKey: keyword,\r\n treeSearchPrams: {},\r\n });\r\n }\r\n if (this.props.onTreeSelect) {\r\n this.props.onTreeSelect(selectedKeys, obj);\r\n return;\r\n }\r\n const fromValue = this.searchRef?.current?.getSearchValues() || {};\r\n searchField && this.tableLoad({ ...fromValue, [searchField]: keyword });\r\n this.props.onCallBacks?.treeSelectCallBack &&\r\n utils.callback(this.props.onCallBacks?.treeSelectCallBack, this, [\r\n selectedKeys,\r\n obj,\r\n ]);\r\n }\r\n resetSearch() {\r\n this.searchRef.current?.resetFields();\r\n }\r\n getText(props, text) {\r\n let newText = text;\r\n if (props?.data && props?.data?.length > 0) {\r\n let data = props.data;\r\n for (let i = 0; i < data?.length; i++) {\r\n if (data[i].value == text) {\r\n newText = data[i].label;\r\n }\r\n }\r\n }\r\n return newText;\r\n }\r\n setTableData(data) {\r\n this.tableRef.current?.store?.setData(data);\r\n }\r\n setTreeData(data) {\r\n this.treeRef.current?.store?.setData(data);\r\n }\r\n getSelectedKey = (selected) => {\r\n let res = [];\r\n for (let key in selected) {\r\n const keys = selected[key];\r\n if (keys.length > 0) {\r\n res = [...res, ...keys];\r\n }\r\n }\r\n return res;\r\n };\r\n\r\n render() {\r\n const {\r\n columns = [],\r\n showSearch = true,\r\n children,\r\n submitUrl = \"\",\r\n tableProps = {},\r\n treeProps = {},\r\n formProps = {},\r\n showLeft = false,\r\n submitParams = {},\r\n showToolButton = true,\r\n buttons = [],\r\n editorForm = true,\r\n onShowForm,\r\n formChangeValid = true,\r\n className,\r\n toolButtonPosition = \"buttom\",\r\n actionPorps,\r\n deletePosition = \"toolbar\",\r\n } = this.props;\r\n const {\r\n store,\r\n filterColumn = true,\r\n actionColumn = true,\r\n showRowSelection = true,\r\n columnOrder = true,\r\n expandable = {},\r\n parantSelect = true,\r\n title: tableTitle,\r\n ...othertableParams\r\n } = tableProps;\r\n\r\n const {\r\n store: treeStore = {},\r\n showSearch: treeSearch = true,\r\n titleAlias = \"title\",\r\n title: treeTitle,\r\n ...othertreeParams\r\n } = treeProps;\r\n let tableParams = { filterColumn, store, ...othertableParams } as any;\r\n let tableColumn: any[] = [];\r\n const searchForms: any = [];\r\n const editorForms: any = [];\r\n const defaultValue: any = {};\r\n const columnButtons: any = [];\r\n const { elementHeight } = this.state;\r\n\r\n columns.map((item: any) => {\r\n let temp = { width: 100, ...item };\r\n if (temp.search === true || temp.search?.show === true) {\r\n searchForms.push({\r\n name: temp.field || temp.dataIndex,\r\n label: temp.search?.label || temp.title,\r\n type: temp.type,\r\n props: temp.props,\r\n labelCol: temp.search?.labelCol,\r\n wrapperCol: temp.search?.wrapperCol,\r\n rules: temp.searchRules ? temp.searchRules : [],\r\n });\r\n }\r\n\r\n delete temp.search;\r\n temp.editor !== false &&\r\n editorForms.push({\r\n name: temp.field || temp.dataIndex,\r\n label: temp.title,\r\n rules: temp.rules ? temp.rules : [],\r\n type: temp.type,\r\n span: temp.span,\r\n dictName: temp.dictName,\r\n props: { ...temp.props },\r\n });\r\n\r\n if (\r\n temp.props?.defaultValue !== undefined &&\r\n temp.props?.defaultValue !== null\r\n ) {\r\n const name = temp.field || temp.dataIndex;\r\n defaultValue[name] = temp.props?.defaultValue;\r\n }\r\n delete temp.rules;\r\n delete temp.span;\r\n if (temp.columnSearch) {\r\n temp.filterProps = {\r\n type: temp.type,\r\n props: temp.props,\r\n };\r\n }\r\n delete temp.type;\r\n let tempProp = { ...temp.props };\r\n if (temp.style) {\r\n temp = {\r\n render: (text: any) => {\r\n return (\r\n <>\r\n {text !== \"\" && text !== null && text !== undefined && (\r\n <div className={getLess(styles, \"nsc-basepage-col-back\")}>\r\n <span className={getLess(styles, \"nsc-basepage-col-text\")}>\r\n {this.getText(tempProp, text)}\r\n </span>\r\n </div>\r\n )}\r\n </>\r\n );\r\n },\r\n ...temp,\r\n };\r\n } else if (!temp.ellipsis) {\r\n temp = {\r\n ellipsis: { showTitle: false },\r\n render: (text: any) => {\r\n return this.getText(tempProp, text);\r\n },\r\n ...temp,\r\n };\r\n } else {\r\n temp = {\r\n ellipsis: true,\r\n ...temp,\r\n };\r\n }\r\n delete temp.props;\r\n\r\n // temp.ellipsis = true;\r\n if (temp?.columnShow !== false) tableColumn.push(temp);\r\n });\r\n const selfButtons: any = [];\r\n const { baseActionColumn } = config();\r\n let showIcon = true;\r\n if (actionPorps?.showIcon === false) showIcon = false;\r\n else if (baseActionColumn.showIcon === false) showIcon = false;\r\n\r\n if (buttons.indexOf(\"search\") > -1) {\r\n columnButtons.push(\r\n <Button\r\n onClick={(record: any) => {\r\n if (onShowForm) {\r\n onShowForm(record.attribute || record, \"detail\");\r\n return;\r\n }\r\n this.showForm(record.attribute || record, \"detail\");\r\n }}\r\n icon={<EyeOutlined />}\r\n type={\"link\"}\r\n >\r\n 查看\r\n </Button>\r\n );\r\n\r\n if (buttons.indexOf(\"editor\") > -1) {\r\n columnButtons.push(\r\n <Button\r\n onClick={(record: any) => {\r\n if (onShowForm) {\r\n onShowForm(record.attribute || record, \"editor\");\r\n return;\r\n }\r\n this.showForm(record.attribute || record, \"editor\");\r\n }}\r\n icon={<EditOutlined />}\r\n type=\"link\"\r\n >\r\n 编辑\r\n </Button>\r\n );\r\n }\r\n }\r\n if (buttons.indexOf(\"add\") > -1) {\r\n selfButtons.push(\r\n <Button\r\n type={\"primary\"}\r\n onClick={() => {\r\n const { onShowForm } = this.props;\r\n if (onShowForm) {\r\n onShowForm(null, \"add\");\r\n return;\r\n }\r\n this.showForm();\r\n }}\r\n icon={<PlusOutlined />}\r\n >\r\n 添加\r\n </Button>\r\n );\r\n }\r\n if (buttons.indexOf(\"delete\") > -1) {\r\n if (deletePosition == \"toolbar\") {\r\n selfButtons.push(\r\n <Button\r\n // type={\"primary\"}\r\n onClick={this.onDelete.bind(this)}\r\n icon={<DeleteOutlined />}\r\n danger\r\n >\r\n 删除\r\n </Button>\r\n );\r\n } else if (deletePosition == \"row\") {\r\n columnButtons.push(\r\n <Button\r\n // type={\"primary\"}\r\n onClick={(record: any) => {\r\n this.onDelete(record);\r\n }}\r\n icon={<DeleteOutlined />}\r\n danger\r\n type=\"link\"\r\n >\r\n 删除\r\n </Button>\r\n );\r\n }\r\n }\r\n if (Array.isArray(children)) {\r\n children.map((item: any) => {\r\n if (Array.isArray(item)) {\r\n item.map((child) => {\r\n if (child?.props?.pageType == \"toolButton\") {\r\n selfButtons.push(child);\r\n } else if (child?.props?.pageType == \"cloumnButton\") {\r\n columnButtons.push(child);\r\n }\r\n });\r\n } else {\r\n if (item?.props?.pageType == \"toolButton\") {\r\n selfButtons.push(item);\r\n } else if (item?.props?.pageType == \"cloumnButton\") {\r\n columnButtons.push(item);\r\n }\r\n }\r\n });\r\n } else if (children) {\r\n const { props }: any = children;\r\n if (props?.pageType == \"toolButton\") {\r\n selfButtons.push(children);\r\n } else if (props?.pageType == \"cloumnButton\") {\r\n columnButtons.push(children);\r\n }\r\n }\r\n actionColumn &&\r\n tableColumn.push({\r\n title: \"操作\",\r\n dataIndex: \"action\",\r\n align: actionPorps?.textAlign\r\n ? actionPorps?.textAlign\r\n : baseActionColumn.textAlign\r\n ? baseActionColumn.textAlign\r\n : \"left\",\r\n width: actionPorps?.width\r\n ? actionPorps?.width\r\n : baseActionColumn.width\r\n ? baseActionColumn.width\r\n : 200,\r\n fixed: \"right\",\r\n render: (text: any, record: any) => {\r\n return (\r\n <div className={getLess(styles, \"nsc-basepage-action\")}>\r\n {this.renderCloumnButton(columnButtons, record)}\r\n </div>\r\n );\r\n },\r\n });\r\n\r\n if (columnOrder)\r\n tableColumn = [\r\n {\r\n title: \"序号\",\r\n width: 80,\r\n align: \"center\",\r\n render: (text, reacord, index) => {\r\n return <>{index + 1}</>;\r\n },\r\n },\r\n ...tableColumn,\r\n ];\r\n let searchFlag = showSearch && searchForms.length > 0;\r\n let { tableTool } = config();\r\n let toolFlag =\r\n showToolButton &&\r\n selfButtons.length > 0 &&\r\n toolButtonPosition == \"buttom\";\r\n let toolbarFlag = !(\r\n tableProps.toolbar == false ||\r\n tableProps.toolbar?.show == false ||\r\n tableProps.toolbar?.tools?.length == 0 ||\r\n tableTool?.show == false\r\n );\r\n\r\n let pageHeight = this.props.pageType == \"tabspage\" ? 63 : 0;\r\n let tableHeaderHeight = 55;\r\n\r\n let headerHeight = showSearch && searchForms.length > 0 ? 104 : 0;\r\n let toolHeight = tableTitle || toolFlag ? 48 : 0;\r\n let paddingHeight = 25;\r\n let tableContentHeight =\r\n elementHeight - headerHeight - toolHeight - paddingHeight - pageHeight;\r\n let tableHeight = tableContentHeight - 32 - 32;\r\n let tableSrollHeight = tableContentHeight - tableHeaderHeight - 32 - 32;\r\n if (tableProps.pagination !== false) {\r\n const scroll = tableParams.scroll;\r\n tableParams = {\r\n ...tableParams,\r\n scroll: { x: \"max-content\", y: tableSrollHeight, ...scroll },\r\n };\r\n }\r\n return (\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage\"), className)}\r\n ref={this.pageRef}\r\n >\r\n {this.props.pageTitle && (\r\n <div className={cls(getLess(styles, \"nsc-basepage-title\"))}>\r\n {this.props.pageTitle}\r\n </div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-pane\"))}\r\n style={{ display: \"flex\" }}\r\n >\r\n {showLeft && (\r\n <div className={getLess(styles, \"nsc-basepage-left\")}>\r\n {treeTitle && (\r\n <div className={getLess(styles, \"tree-title\")}>{treeTitle}</div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"tree-content\"), {\r\n [getLess(styles, \"tree-content-notitle\")]: !treeTitle,\r\n })}\r\n >\r\n <Tree\r\n store={{ ...treeStore }}\r\n showIcon={false}\r\n checkable={false}\r\n searchable={treeSearch}\r\n onSelect={this.treeSelect.bind(this)}\r\n selectedKeys={[this.state.treeSelectedKey]}\r\n titleAlias={titleAlias}\r\n {...othertreeParams}\r\n />\r\n </div>\r\n </div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-right\"), {\r\n [getLess(styles, \"nsc-basepage-no-left-right\")]: !showLeft,\r\n })}\r\n >\r\n {showSearch && searchForms.length > 0 && (\r\n <div className={getLess(styles, \"nsc-basepage-headersearch\")}>\r\n <HeaderSearch\r\n searchForms={searchForms}\r\n toolButtonPosition={toolButtonPosition}\r\n onSearch={this.onSearch.bind(this)}\r\n onReset={this.props.onReset}\r\n ref={this.searchRef}\r\n searchFormProps={this.props.searchFormProps}\r\n />\r\n </div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-content\"), {\r\n [getLess(styles, \"nsc-basepage-content-gap\")]: !searchFlag,\r\n })}\r\n >\r\n {(tableTitle || toolFlag) && (\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-table-title\"), {\r\n [getLess(styles, \"nsc-basepage-title-width\")]: !toolbarFlag,\r\n })}\r\n >\r\n <div>{tableTitle}</div>\r\n {toolFlag && this.renderToolButtons(selfButtons, toolbarFlag)}\r\n </div>\r\n )}\r\n\r\n <div\r\n className={cls(\r\n getLess(styles, \"nsc-basepage-table\"),\r\n {\r\n [getLess(styles, \"nsc-basepage-table-top\")]: !toolbarFlag,\r\n },\r\n {\r\n [getLess(styles, \"nsc-basepage-table-top2\")]:\r\n toolbarFlag && !toolFlag,\r\n }\r\n )}\r\n style={{ height: tableContentHeight }}\r\n >\r\n <Table\r\n ref={this.tableRef}\r\n columns={tableColumn}\r\n expandable={{\r\n expandIcon: ({ expanded, onExpand, record }) => {\r\n return (\r\n <>\r\n {expanded ? (\r\n <DownOutlined\r\n onClick={(e) => onExpand(record, e)}\r\n className={getLess(\r\n styles,\r\n \"nsc-basepage-expand-icon\"\r\n )}\r\n />\r\n ) : (\r\n record.childNodes && (\r\n <RightOutlined\r\n onClick={(e) => onExpand(record, e)}\r\n className={getLess(\r\n styles,\r\n \"nsc-basepage-expand-icon\"\r\n )}\r\n />\r\n )\r\n )}\r\n </>\r\n );\r\n },\r\n ...expandable,\r\n }}\r\n columnOrder={true}\r\n onChange={(pagination) => {\r\n const { currentPage } = this.state;\r\n if (currentPage !== pagination.current) {\r\n this.setState({\r\n currentPage: pagination.current,\r\n });\r\n }\r\n }}\r\n toolbar={{\r\n onToolClick: {\r\n onRefresh: () => {\r\n const params = this.getSearchValues();\r\n this.tableLoad(params);\r\n },\r\n },\r\n ...tableProps.toolbar,\r\n }}\r\n showRowSelection={showRowSelection}\r\n style={{ height: tableHeight }}\r\n {...tableParams}\r\n // pagination={false}\r\n />\r\n {/* <div></div> */}\r\n </div>\r\n </div>\r\n </div>\r\n {editorForm && (\r\n <EditorForm\r\n ref={this.editorRef}\r\n callBack={() => {\r\n this.props.onCallBacks?.onSumbitCallBack &&\r\n this.props.onCallBacks?.onSumbitCallBack();\r\n this.tableReload();\r\n }}\r\n formProps={editorForms}\r\n submitUrl={submitUrl}\r\n submitParams={submitParams}\r\n onSubmit={this.props.onSubmit}\r\n defaultValue={defaultValue}\r\n onHideForm={this.props.onHideForm}\r\n onFormChange={this.props.onFormChange}\r\n formType={this.props.formType || \"auto\"}\r\n changeValid={formChangeValid}\r\n otherProps={{ ...formProps }}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\nexport default BasePage;\r\n"],"mappings":"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"}
|