nsc-react-component 2.14.24 → 2.14.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -39,13 +39,13 @@ export default class RadioGroup extends Component {
|
|
|
39
39
|
data,
|
|
40
40
|
children,
|
|
41
41
|
addData = [],
|
|
42
|
-
deleteData = []
|
|
43
|
-
viewtype = "sys"
|
|
42
|
+
deleteData = []
|
|
44
43
|
} = props;
|
|
45
44
|
let {
|
|
46
45
|
valueField
|
|
47
46
|
} = props;
|
|
48
47
|
const {
|
|
48
|
+
viewtype = "sys",
|
|
49
49
|
viewname
|
|
50
50
|
} = store;
|
|
51
51
|
valueField = valueField ? valueField : viewname ? "dictKey" : "value";
|
|
@@ -282,4 +282,4 @@ export default class RadioGroup extends Component {
|
|
|
282
282
|
}
|
|
283
283
|
}
|
|
284
284
|
}
|
|
285
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIkNvbXBvbmVudCIsIm9taXQiLCJTdG9yZSIsInV0aWxzIiwiY29uZmlnIiwiUmFkaW9Hcm91cCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJfZGVmaW5lUHJvcGVydHkiLCJkYXRhU291cmNlIiwiZGF0YVN0b3JlIiwidmFsdWUiLCJfdGhpcyIsInN0b3JlIiwib3B0aW9ucyIsImRhdGEiLCJjaGlsZHJlbiIsImFkZERhdGEiLCJkZWxldGVEYXRhIiwidmlld3R5cGUiLCJ2YWx1ZUZpZWxkIiwidmlld25hbWUiLCJ2aWV3VXJsIiwidmlld0JpelVybCIsInJlcXVlc3RWaWV3VXJsIiwidXJsIiwibGlzdGVuZXJzIiwibGlzdGVuZXJzUG9wcyIsImNhY2hlZCIsImNhY2hlS2V5Iiwic3RvcmVzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwiRXJyb3IiLCJnZXRBbGxEYXRhIiwiQXJyYXkiLCJpc0FycmF5IiwibmV3RGF0YSIsImxlbmd0aCIsInZhbHVlRmllbGRzIiwic3BsaXQiLCJtYXAiLCJpdGVtIiwiaSIsInYiLCJpbmRleCIsImluZGV4T2YiLCJzcGxpY2UiLCJzdG9yZVByb3BzIiwiX29iamVjdFNwcmVhZCIsIm1vZGVsIiwiY29tcG9uZW50Iiwib25CZWZvcmVMb2FkIiwiY2FsbGJhY2siLCJsb2FkIiwibW9kZWxEYXRhIiwiY29udmVydERhdGEiLCJzZXRTdGF0ZSIsImRhdGFDaGFuZ2VkIiwiaXNDYWNoZWQiLCJpc0NhY2hlS2V5IiwiYXV0b0xvYWQiLCJoYW5kbGVBY3RpdmVDaGFuZ2UiLCJlIiwiY3VzdG9taXplIiwib25DaGFuZ2UiLCJ0YXJnZXQiLCJnZXRWYWx1ZSIsInN0YXRlIiwic2V0VmFsdWUiLCJsYWJlbEZpZWxkIiwiZGF0YVNvdXJlIiwib2JqIiwibGFiZWwiLCJsYWJlbEZpZWxkcyIsImwiLCJkaXNhYmxlZCIsInB1c2giLCJjb21wb25lbnREaWRNb3VudCIsImNvbXBvbmVudERpZFVwZGF0ZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJyZW5kZXIiLCJyYWRpb3MiLCJjaGlsZCIsImlzQWN0aXZlIiwiY2xvbmVFbGVtZW50IiwiYWN0aXZlIiwib25DbGljayIsImJpbmQiLCJrZXkiLCJfdGhpcyRwcm9wcyIsInBhcmFtcyIsIl9leGNsdWRlZDIiLCJSYWRpb1Byb3BzIiwiY3JlYXRlRWxlbWVudCIsIkZyYWdtZW50IiwiX1JhZGlvIiwiR3JvdXAiLCJfZXh0ZW5kcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvcmFkaW8vUmFkaW9Hcm91cC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQERlc2NyaXB0dGlvbjpcclxuICogQHZlcnNpb246XHJcbiAqIEBBdXRob3I6IHJ4emh1XHJcbiAqIEBEYXRlOiAyMDIxLTAzLTI0IDE0OjMzOjM1XHJcbiAqIEBMYXN0RWRpdG9yczogcnh6aHVcclxuICogQExhc3RFZGl0VGltZTogMjAyMS0wNC0yMyAxNjo0NjoxN1xyXG4gKi9cclxuaW1wb3J0IFJlYWN0LCB7IENvbXBvbmVudCB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBSYWRpbywgUmFkaW9Hcm91cFByb3BzIH0gZnJvbSBcImFudGRcIjtcclxuaW1wb3J0IG9taXQgZnJvbSBcIm9taXQuanNcIjtcclxuaW1wb3J0IFN0b3JlLCB7IFN0b3JlUHJvcHMgfSBmcm9tIFwiQGJqLW5zYy9tc25cIjtcclxuaW1wb3J0IHsgdXRpbHMgfSBmcm9tIFwiQGJqLW5zYy9tc24vbGliL3V0aWxzXCI7XHJcbmltcG9ydCBjb25maWcgZnJvbSBcIi4uLy4uL2NvbmZpZ1wiO1xyXG5cclxuaW50ZXJmYWNlIElSYWRpb0dyb3VwUHJvcHMgZXh0ZW5kcyBSYWRpb0dyb3VwUHJvcHMge1xyXG4gIGN1c3RvbWl6ZT86IGJvb2xlYW47XHJcbiAgc3RvcmU/OiBTdG9yZVByb3BzO1xyXG4gIGRhdGE/OiBBcnJheTxzdHJpbmcgfCBPYmplY3Q+OyAvL+m7mOiupOaVsOaNrlxyXG4gIGxhYmVsRmllbGQ/OiBzdHJpbmc7XHJcbiAgdmFsdWVGaWVsZD86IHN0cmluZztcclxuICBhZGREYXRhPzogQXJyYXk8c3RyaW5nIHwgT2JqZWN0PjsgLy/kuI5zdG9yZeS4gOi1t+eUqFxyXG4gIGRlbGV0ZURhdGE/OiBBcnJheTxzdHJpbmc+O1xyXG4gIG9uQ2hhbmdlPzogKHZhbHVlOiBhbnksIGU/OiBhbnkpID0+IHZvaWQ7XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmFkaW9Hcm91cCBleHRlbmRzIENvbXBvbmVudDxJUmFkaW9Hcm91cFByb3BzPiB7XHJcbiAgc3RhdGUgPSB7XHJcbiAgICBkYXRhU291cmNlOiBbXSxcclxuICAgIGRhdGFTdG9yZTogW10sXHJcbiAgICB2YWx1ZTogXCJcIixcclxuICB9O1xyXG4gIHN0b3JlID0ge30gYXMgU3RvcmVQcm9wcztcclxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgc3VwZXIocHJvcHMpO1xyXG4gICAgY29uc3QgX3RoaXMgPSB0aGlzO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzdG9yZSA9IHt9LFxyXG4gICAgICBvcHRpb25zLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBjaGlsZHJlbixcclxuICAgICAgYWRkRGF0YSA9IFtdLFxyXG4gICAgICBkZWxldGVEYXRhID0gW10sXHJcbiAgICAgIHZpZXd0eXBlID0gXCJzeXNcIixcclxuICAgIH0gPSBwcm9wcztcclxuICAgIGxldCB7IHZhbHVlRmllbGQgfSA9IHByb3BzO1xyXG4gICAgY29uc3QgeyB2aWV3bmFtZSB9ID0gc3RvcmU7XHJcbiAgICB2YWx1ZUZpZWxkID0gdmFsdWVGaWVsZCA/IHZhbHVlRmllbGQgOiB2aWV3bmFtZSA/IFwiZGljdEtleVwiIDogXCJ2YWx1ZVwiO1xyXG4gICAgbGV0IHsgdmlld1VybCwgdmlld0JpelVybCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgcmVxdWVzdFZpZXdVcmwgPSB2aWV3dHlwZSA9PSBcInN5c1wiID8gdmlld1VybCA6IHZpZXdCaXpVcmw7XHJcbiAgICBpZiAoIWNoaWxkcmVuKSB7XHJcbiAgICAgIGNvbnN0IHtcclxuICAgICAgICB1cmwsXHJcbiAgICAgICAgbGlzdGVuZXJzOiBsaXN0ZW5lcnNQb3BzID0ge30sXHJcbiAgICAgICAgdmlld25hbWUsXHJcbiAgICAgICAgY2FjaGVkLFxyXG4gICAgICAgIGNhY2hlS2V5LFxyXG4gICAgICAgIC4uLnN0b3Jlc1xyXG4gICAgICB9ID0gc3RvcmU7XHJcbiAgICAgIGlmICghdXJsICYmICFvcHRpb25zICYmICFkYXRhICYmICF2aWV3bmFtZSlcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1cmzjgIF2aWV3bmFtZeOAgWRhdGHlkoxvcHRpb25z5LiN6IO96YO95Li656m677yBXCIpO1xyXG4gICAgICBjb25zdCBnZXRBbGxEYXRhID0gKGRhdGEpID0+IHtcclxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZGF0YSkpIHtcclxuICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IG5ld0RhdGEgPSBbLi4uZGF0YV07XHJcbiAgICAgICAgaWYgKGFkZERhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgbmV3RGF0YSA9IFsuLi5hZGREYXRhLCAuLi5uZXdEYXRhXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRlbGV0ZURhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgY29uc3QgdmFsdWVGaWVsZHM6IGFueSA9IHZhbHVlRmllbGQuc3BsaXQoXCIsXCIpO1xyXG4gICAgICAgICAgbmV3RGF0YS5tYXAoKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSBcIm9iamVjdFwiKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHZhbHVlID0gXCJcIjtcclxuICAgICAgICAgICAgICB2YWx1ZUZpZWxkcy5tYXAoKHYsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IGluZGV4ID09IDAgPyB2YWx1ZSArIGl0ZW1bdl0gOiB2YWx1ZSArIFwiLFwiICsgaXRlbVt2XTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBpZiAoZGVsZXRlRGF0YS5pbmRleE9mKHZhbHVlKSA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICBuZXdEYXRhLnNwbGljZShpLCAxKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGl0ZW0gPT09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICAgICAgICBpZiAoZGVsZXRlRGF0YS5pbmRleE9mKGl0ZW0pID4gLTEpIHtcclxuICAgICAgICAgICAgICAgIG5ld0RhdGEuc3BsaWNlKGksIDEpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZXdEYXRhO1xyXG4gICAgICB9O1xyXG4gICAgICB2YXIgc3RvcmVQcm9wcyA9IHtcclxuICAgICAgICBtb2RlbDogXCJtb2RlbFwiLFxyXG4gICAgICAgIGNvbXBvbmVudDogdGhpcyxcclxuICAgICAgICBsaXN0ZW5lcnM6IHtcclxuICAgICAgICAgIG9uQmVmb3JlTG9hZDogZnVuY3Rpb24gKHN0b3JlLCBvcHRpb25zKSB7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1BvcHMub25CZWZvcmVMb2FkLCBfdGhpcywgW3N0b3JlLCBvcHRpb25zXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgbG9hZDogZnVuY3Rpb24gKGRhdGEsIG1vZGVsRGF0YSwgc3RvcmUpIHtcclxuICAgICAgICAgICAgbGV0IGRhdGFTb3VyY2UgPSBfdGhpcy5jb252ZXJ0RGF0YShnZXRBbGxEYXRhKGRhdGEpKTtcclxuICAgICAgICAgICAgX3RoaXMuc2V0U3RhdGUoeyBkYXRhU291cmNlOiBkYXRhU291cmNlIH0pO1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQb3BzLmxvYWQsIF90aGlzLCBbZGF0YSwgbW9kZWxEYXRhLCBzdG9yZV0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGRhdGFDaGFuZ2VkOiBmdW5jdGlvbiAoZGF0YSwgbW9kZWxEYXRhLCBzdG9yZSkge1xyXG4gICAgICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgZGF0YVNvdXJjZTogX3RoaXMuY29udmVydERhdGEoZ2V0QWxsRGF0YShkYXRhKSksXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQb3BzLmRhdGFDaGFuZ2VkLCBfdGhpcywgW1xyXG4gICAgICAgICAgICAgIGRhdGEsXHJcbiAgICAgICAgICAgICAgbW9kZWxEYXRhLFxyXG4gICAgICAgICAgICAgIHN0b3JlLFxyXG4gICAgICAgICAgICBdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi5zdG9yZXMsXHJcbiAgICAgIH07XHJcbiAgICAgIGlmICgodmlld25hbWUgfHwgdXJsKSAmJiBkYXRhID09IG51bGwgJiYgb3B0aW9ucyA9PSBudWxsKSB7XHJcbiAgICAgICAgbGV0IGlzQ2FjaGVkID0gY2FjaGVkO1xyXG4gICAgICAgIGxldCBpc0NhY2hlS2V5ID0gY2FjaGVLZXk7XHJcbiAgICAgICAgaWYgKHZpZXduYW1lKSB7XHJcbiAgICAgICAgICBpZiAodHlwZW9mIGNhY2hlZCAhPT0gXCJib29sZWFuXCIpIHtcclxuICAgICAgICAgICAgaXNDYWNoZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICBpc0NhY2hlS2V5ID0gaXNDYWNoZUtleSA/IGlzQ2FjaGVLZXkgOiB2aWV3bmFtZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgc3RvcmVQcm9wcyA9IHtcclxuICAgICAgICAgIC4uLntcclxuICAgICAgICAgICAgYXV0b0xvYWQ6IHRydWUsXHJcbiAgICAgICAgICAgIHVybDogdXJsID8gdXJsIDogcmVxdWVzdFZpZXdVcmwgKyB2aWV3bmFtZSwgLy/or7vlrZflhbjvvIx1cmzlm7rlrprvvIx2aWV3bmFtZVxyXG4gICAgICAgICAgICBjYWNoZWQ6IGlzQ2FjaGVkLFxyXG4gICAgICAgICAgICBjYWNoZUtleTogaXNDYWNoZUtleSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAuLi5zdG9yZVByb3BzLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zdG9yZSA9IG5ldyBTdG9yZShzdG9yZVByb3BzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUFjdGl2ZUNoYW5nZShlKSB7XHJcbiAgICBjb25zdCB7IGN1c3RvbWl6ZSwgb25DaGFuZ2UgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoY3VzdG9taXplKSB7XHJcbiAgICAgIG9uQ2hhbmdlICYmIG9uQ2hhbmdlKGUpO1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICB2YWx1ZTogZSxcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICB2YWx1ZTogZS50YXJnZXQudmFsdWUsXHJcbiAgICAgIH0pO1xyXG4gICAgICBvbkNoYW5nZSAmJiBvbkNoYW5nZShlLnRhcmdldC52YWx1ZSwgZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldFZhbHVlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdGUudmFsdWU7XHJcbiAgfVxyXG4gIHNldFZhbHVlKHZhbHVlKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgdmFsdWU6IHZhbHVlLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGNvbnZlcnREYXRhKGRhdGEpIHtcclxuICAgIGxldCB7IHN0b3JlID0ge30sIHZhbHVlRmllbGQsIGxhYmVsRmllbGQgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHZpZXduYW1lIH0gPSBzdG9yZTtcclxuXHJcbiAgICB2YWx1ZUZpZWxkID0gdmFsdWVGaWVsZCA/IHZhbHVlRmllbGQgOiB2aWV3bmFtZSA/IFwiZGljdEtleVwiIDogXCJ2YWx1ZVwiO1xyXG4gICAgbGFiZWxGaWVsZCA9IGxhYmVsRmllbGQgPyBsYWJlbEZpZWxkIDogdmlld25hbWUgPyBcImRpY3RWYWx1ZVwiIDogXCJsYWJlbFwiO1xyXG4gICAgbGV0IGRhdGFTb3VyZSA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmICh0eXBlb2YgZGF0YVtpXSA9PT0gXCJvYmplY3RcIikge1xyXG4gICAgICAgIGxldCBvYmogPSB7IC4uLmRhdGFbaV0gfTtcclxuICAgICAgICBsZXQgdmFsdWUgPSBcIlwiO1xyXG4gICAgICAgIGlmICh2YWx1ZUZpZWxkLnNwbGl0KFwiLFwiKS5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgdmFsdWUgPSBkYXRhW2ldW3ZhbHVlRmllbGRdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCB2YWx1ZUZpZWxkczogYW55ID0gdmFsdWVGaWVsZC5zcGxpdChcIixcIik7XHJcbiAgICAgICAgICB2YWx1ZUZpZWxkcy5tYXAoKHYsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIHZhbHVlID0gaW5kZXggPT0gMCA/IHZhbHVlICsgZGF0YVtpXVt2XSA6IHZhbHVlICsgXCIsXCIgKyBkYXRhW2ldW3ZdO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBsYWJlbCA9IFwiXCI7XHJcbiAgICAgICAgaWYgKGxhYmVsRmllbGQuc3BsaXQoXCIsXCIpLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgICBsYWJlbCA9IGRhdGFbaV1bbGFiZWxGaWVsZF07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IGxhYmVsRmllbGRzOiBhbnkgPSBsYWJlbEZpZWxkLnNwbGl0KFwiLFwiKTtcclxuICAgICAgICAgIGxhYmVsRmllbGRzLm1hcCgobCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgbGFiZWwgPSBpbmRleCA9PSAwID8gbGFiZWwgKyBkYXRhW2ldW2xdIDogbGFiZWwgKyBcIi1cIiArIGRhdGFbaV1bbF07XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgb2JqLmxhYmVsID0gbGFiZWw7XHJcbiAgICAgICAgb2JqLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgb2JqLmRpc2FibGVkID0gZGF0YVtpXS5kaXNhYmxlZCA/IGRhdGFbaV0uZGlzYWJsZWQgOiBmYWxzZTtcclxuICAgICAgICBkYXRhU291cmUucHVzaChvYmopO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGxldCBvYmogPSB7fSBhcyB7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBhbnk7IGRpc2FibGVkPzogYm9vbGVhbiB9O1xyXG4gICAgICAgIG9iai5sYWJlbCA9IGRhdGFbaV07XHJcbiAgICAgICAgb2JqLnZhbHVlID0gZGF0YVtpXTtcclxuICAgICAgICBvYmouZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICBkYXRhU291cmUucHVzaChvYmopO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGF0YVNvdXJlO1xyXG4gIH1cclxuICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgIGNvbnN0IHsgZGF0YSwgb3B0aW9ucywgY2hpbGRyZW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIWNoaWxkcmVuICYmIChkYXRhIHx8IG9wdGlvbnMpKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGRhdGFTb3VyY2U6IHRoaXMuY29udmVydERhdGEoZGF0YSA/IGRhdGEgOiBvcHRpb25zKSxcclxuICAgICAgICBkYXRhU3RvcmU6IGRhdGEgPyBkYXRhIDogb3B0aW9ucyxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb21wb25lbnREaWRVcGRhdGUoKSB7XHJcbiAgICBjb25zdCB7IGRhdGFTdG9yZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgZGF0YSwgb3B0aW9ucyB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IG5ld0RhdGEgPSBkYXRhID8gZGF0YSA6IG9wdGlvbnM7XHJcbiAgICBpZiAoZGF0YSB8fCBvcHRpb25zKSB7XHJcbiAgICAgIGlmIChKU09OLnN0cmluZ2lmeShkYXRhU3RvcmUpICE9PSBKU09OLnN0cmluZ2lmeShuZXdEYXRhKSkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgZGF0YVNvdXJjZTogdGhpcy5jb252ZXJ0RGF0YShuZXdEYXRhKSxcclxuICAgICAgICAgIGRhdGFTdG9yZTogbmV3RGF0YSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVuZGVyKCkge1xyXG4gICAgY29uc3QgeyBjaGlsZHJlbiwgY3VzdG9taXplID0gZmFsc2UgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgcmFkaW9zOiBhbnk7XHJcbiAgICByYWRpb3MgPSBjaGlsZHJlbjtcclxuICAgIGNvbnN0IGlzQXJyYXkgPSBBcnJheS5pc0FycmF5KGNoaWxkcmVuKTtcclxuICAgIGlmIChjdXN0b21pemUpIHtcclxuICAgICAgaWYgKGlzQXJyYXkpIHtcclxuICAgICAgICByZXR1cm4gcmFkaW9zLm1hcCgoY2hpbGQsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICBsZXQgaXNBY3RpdmUgPSB0aGlzLnByb3BzLnZhbHVlID09PSBjaGlsZC5wcm9wcy52YWx1ZSA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICAgIHJldHVybiBSZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGQsIHtcclxuICAgICAgICAgICAgbGFiZWw6IGNoaWxkLnByb3BzLmNoaWxkcmVuLFxyXG4gICAgICAgICAgICB2YWx1ZTogY2hpbGQucHJvcHMudmFsdWUsXHJcbiAgICAgICAgICAgIGFjdGl2ZTogaXNBY3RpdmUsXHJcbiAgICAgICAgICAgIG9uQ2xpY2s6IHRoaXMuaGFuZGxlQWN0aXZlQ2hhbmdlLmJpbmQodGhpcywgY2hpbGQucHJvcHMudmFsdWUpLFxyXG4gICAgICAgICAgICBrZXk6IGluZGV4LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbGV0IGlzQWN0aXZlID0gdGhpcy5wcm9wcy52YWx1ZSA9PT0gcmFkaW9zLnByb3BzLnZhbHVlID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICAgIHJldHVybiBSZWFjdC5jbG9uZUVsZW1lbnQocmFkaW9zLCB7XHJcbiAgICAgICAgICBsYWJlbDogcmFkaW9zLnByb3BzLmNoaWxkcmVuLFxyXG4gICAgICAgICAgdmFsdWU6IHJhZGlvcy5wcm9wcy52YWx1ZSxcclxuICAgICAgICAgIGFjdGl2ZTogaXNBY3RpdmUsXHJcbiAgICAgICAgICBvbkNsaWNrOiB0aGlzLmhhbmRsZUFjdGl2ZUNoYW5nZS5iaW5kKHRoaXMsIHJhZGlvcy5wcm9wcy52YWx1ZSksXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHsgZGF0YSwgb3B0aW9ucywgLi4ucGFyYW1zIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICBjb25zdCBSYWRpb1Byb3BzID0gb21pdCh7IC4uLnBhcmFtcyB9LCBbXHJcbiAgICAgICAgXCJzdG9yZVwiLFxyXG4gICAgICAgIFwibGFiZWxGaWVsZFwiLFxyXG4gICAgICAgIFwidmFsdWVGaWVsZFwiLFxyXG4gICAgICAgIFwiY3VzdG9taXplXCIsXHJcbiAgICAgICAgXCJvbkNoYW5nZVwiLFxyXG4gICAgICAgIFwiYWRkRGF0YVwiLFxyXG4gICAgICAgIFwiZGVsZXRlRGF0YVwiLFxyXG4gICAgICBdKTtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8PlxyXG4gICAgICAgICAgPFJhZGlvLkdyb3VwXHJcbiAgICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlLnZhbHVlfVxyXG4gICAgICAgICAgICBvcHRpb25zPXt0aGlzLnN0YXRlLmRhdGFTb3VyY2V9XHJcbiAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLmhhbmRsZUFjdGl2ZUNoYW5nZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICB7Li4uUmFkaW9Qcm9wc31cclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC8+XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU9BLEtBQUssSUFBSUMsU0FBUyxRQUFRLE9BQU87QUFFeEMsT0FBT0MsSUFBSSxNQUFNLFNBQVM7QUFDMUIsT0FBT0MsS0FBSyxNQUFzQixhQUFhO0FBQy9DLFNBQVNDLEtBQUssUUFBUSx1QkFBdUI7QUFDN0MsT0FBT0MsTUFBTSxNQUFNLGNBQWM7QUFZakMsZUFBZSxNQUFNQyxVQUFVLFNBQVNMLFNBQVMsQ0FBbUI7RUFPbEVNLFdBQVdBLENBQUNDLEtBQUssRUFBRTtJQUNqQixLQUFLLENBQUNBLEtBQUssQ0FBQztJQUFDQyxlQUFBLGdCQVBQO01BQ05DLFVBQVUsRUFBRSxFQUFFO01BQ2RDLFNBQVMsRUFBRSxFQUFFO01BQ2JDLEtBQUssRUFBRTtJQUNULENBQUM7SUFBQUgsZUFBQSxnQkFDTyxDQUFDLENBQUM7SUFHUixNQUFNSSxLQUFLLEdBQUcsSUFBSTtJQUNsQixNQUFNO01BQ0pDLEtBQUssR0FBRyxDQUFDLENBQUM7TUFDVkMsT0FBTztNQUNQQyxJQUFJO01BQ0pDLFFBQVE7TUFDUkMsT0FBTyxHQUFHLEVBQUU7TUFDWkMsVUFBVSxHQUFHLEVBQUU7TUFDZkMsUUFBUSxHQUFHO0lBQ2IsQ0FBQyxHQUFHWixLQUFLO0lBQ1Qs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
|
|
285
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIkNvbXBvbmVudCIsIm9taXQiLCJTdG9yZSIsInV0aWxzIiwiY29uZmlnIiwiUmFkaW9Hcm91cCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJfZGVmaW5lUHJvcGVydHkiLCJkYXRhU291cmNlIiwiZGF0YVN0b3JlIiwidmFsdWUiLCJfdGhpcyIsInN0b3JlIiwib3B0aW9ucyIsImRhdGEiLCJjaGlsZHJlbiIsImFkZERhdGEiLCJkZWxldGVEYXRhIiwidmFsdWVGaWVsZCIsInZpZXd0eXBlIiwidmlld25hbWUiLCJ2aWV3VXJsIiwidmlld0JpelVybCIsInJlcXVlc3RWaWV3VXJsIiwidXJsIiwibGlzdGVuZXJzIiwibGlzdGVuZXJzUG9wcyIsImNhY2hlZCIsImNhY2hlS2V5Iiwic3RvcmVzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwiRXJyb3IiLCJnZXRBbGxEYXRhIiwiQXJyYXkiLCJpc0FycmF5IiwibmV3RGF0YSIsImxlbmd0aCIsInZhbHVlRmllbGRzIiwic3BsaXQiLCJtYXAiLCJpdGVtIiwiaSIsInYiLCJpbmRleCIsImluZGV4T2YiLCJzcGxpY2UiLCJzdG9yZVByb3BzIiwiX29iamVjdFNwcmVhZCIsIm1vZGVsIiwiY29tcG9uZW50Iiwib25CZWZvcmVMb2FkIiwiY2FsbGJhY2siLCJsb2FkIiwibW9kZWxEYXRhIiwiY29udmVydERhdGEiLCJzZXRTdGF0ZSIsImRhdGFDaGFuZ2VkIiwiaXNDYWNoZWQiLCJpc0NhY2hlS2V5IiwiYXV0b0xvYWQiLCJoYW5kbGVBY3RpdmVDaGFuZ2UiLCJlIiwiY3VzdG9taXplIiwib25DaGFuZ2UiLCJ0YXJnZXQiLCJnZXRWYWx1ZSIsInN0YXRlIiwic2V0VmFsdWUiLCJsYWJlbEZpZWxkIiwiZGF0YVNvdXJlIiwib2JqIiwibGFiZWwiLCJsYWJlbEZpZWxkcyIsImwiLCJkaXNhYmxlZCIsInB1c2giLCJjb21wb25lbnREaWRNb3VudCIsImNvbXBvbmVudERpZFVwZGF0ZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJyZW5kZXIiLCJyYWRpb3MiLCJjaGlsZCIsImlzQWN0aXZlIiwiY2xvbmVFbGVtZW50IiwiYWN0aXZlIiwib25DbGljayIsImJpbmQiLCJrZXkiLCJfdGhpcyRwcm9wcyIsInBhcmFtcyIsIl9leGNsdWRlZDIiLCJSYWRpb1Byb3BzIiwiY3JlYXRlRWxlbWVudCIsIkZyYWdtZW50IiwiX1JhZGlvIiwiR3JvdXAiLCJfZXh0ZW5kcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvcmFkaW8vUmFkaW9Hcm91cC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQERlc2NyaXB0dGlvbjpcclxuICogQHZlcnNpb246XHJcbiAqIEBBdXRob3I6IHJ4emh1XHJcbiAqIEBEYXRlOiAyMDIxLTAzLTI0IDE0OjMzOjM1XHJcbiAqIEBMYXN0RWRpdG9yczogcnh6aHVcclxuICogQExhc3RFZGl0VGltZTogMjAyMS0wNC0yMyAxNjo0NjoxN1xyXG4gKi9cclxuaW1wb3J0IFJlYWN0LCB7IENvbXBvbmVudCB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBSYWRpbywgUmFkaW9Hcm91cFByb3BzIH0gZnJvbSBcImFudGRcIjtcclxuaW1wb3J0IG9taXQgZnJvbSBcIm9taXQuanNcIjtcclxuaW1wb3J0IFN0b3JlLCB7IFN0b3JlUHJvcHMgfSBmcm9tIFwiQGJqLW5zYy9tc25cIjtcclxuaW1wb3J0IHsgdXRpbHMgfSBmcm9tIFwiQGJqLW5zYy9tc24vbGliL3V0aWxzXCI7XHJcbmltcG9ydCBjb25maWcgZnJvbSBcIi4uLy4uL2NvbmZpZ1wiO1xyXG5cclxuaW50ZXJmYWNlIElSYWRpb0dyb3VwUHJvcHMgZXh0ZW5kcyBSYWRpb0dyb3VwUHJvcHMge1xyXG4gIGN1c3RvbWl6ZT86IGJvb2xlYW47XHJcbiAgc3RvcmU/OiBTdG9yZVByb3BzO1xyXG4gIGRhdGE/OiBBcnJheTxzdHJpbmcgfCBPYmplY3Q+OyAvL+m7mOiupOaVsOaNrlxyXG4gIGxhYmVsRmllbGQ/OiBzdHJpbmc7XHJcbiAgdmFsdWVGaWVsZD86IHN0cmluZztcclxuICBhZGREYXRhPzogQXJyYXk8c3RyaW5nIHwgT2JqZWN0PjsgLy/kuI5zdG9yZeS4gOi1t+eUqFxyXG4gIGRlbGV0ZURhdGE/OiBBcnJheTxzdHJpbmc+O1xyXG4gIG9uQ2hhbmdlPzogKHZhbHVlOiBhbnksIGU/OiBhbnkpID0+IHZvaWQ7XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmFkaW9Hcm91cCBleHRlbmRzIENvbXBvbmVudDxJUmFkaW9Hcm91cFByb3BzPiB7XHJcbiAgc3RhdGUgPSB7XHJcbiAgICBkYXRhU291cmNlOiBbXSxcclxuICAgIGRhdGFTdG9yZTogW10sXHJcbiAgICB2YWx1ZTogXCJcIixcclxuICB9O1xyXG4gIHN0b3JlID0ge30gYXMgU3RvcmVQcm9wcztcclxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgc3VwZXIocHJvcHMpO1xyXG4gICAgY29uc3QgX3RoaXMgPSB0aGlzO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzdG9yZSA9IHt9LFxyXG4gICAgICBvcHRpb25zLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBjaGlsZHJlbixcclxuICAgICAgYWRkRGF0YSA9IFtdLFxyXG4gICAgICBkZWxldGVEYXRhID0gW10sXHJcbiAgICB9ID0gcHJvcHM7XHJcbiAgICBsZXQgeyB2YWx1ZUZpZWxkIH0gPSBwcm9wcztcclxuICAgIGNvbnN0IHsgdmlld3R5cGUgPSBcInN5c1wiLHZpZXduYW1lIH0gPSBzdG9yZTtcclxuICAgIHZhbHVlRmllbGQgPSB2YWx1ZUZpZWxkID8gdmFsdWVGaWVsZCA6IHZpZXduYW1lID8gXCJkaWN0S2V5XCIgOiBcInZhbHVlXCI7XHJcbiAgICBsZXQgeyB2aWV3VXJsLCB2aWV3Qml6VXJsIH0gPSBjb25maWcoKTtcclxuICAgIGxldCByZXF1ZXN0Vmlld1VybCA9IHZpZXd0eXBlID09IFwic3lzXCIgPyB2aWV3VXJsIDogdmlld0JpelVybDtcclxuICAgIGlmICghY2hpbGRyZW4pIHtcclxuICAgICAgY29uc3Qge1xyXG4gICAgICAgIHVybCxcclxuICAgICAgICBsaXN0ZW5lcnM6IGxpc3RlbmVyc1BvcHMgPSB7fSxcclxuICAgICAgICB2aWV3bmFtZSxcclxuICAgICAgICBjYWNoZWQsXHJcbiAgICAgICAgY2FjaGVLZXksXHJcbiAgICAgICAgLi4uc3RvcmVzXHJcbiAgICAgIH0gPSBzdG9yZTtcclxuICAgICAgaWYgKCF1cmwgJiYgIW9wdGlvbnMgJiYgIWRhdGEgJiYgIXZpZXduYW1lKVxyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInVybOOAgXZpZXduYW1l44CBZGF0YeWSjG9wdGlvbnPkuI3og73pg73kuLrnqbrvvIFcIik7XHJcbiAgICAgIGNvbnN0IGdldEFsbERhdGEgPSAoZGF0YSkgPT4ge1xyXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShkYXRhKSkge1xyXG4gICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgbmV3RGF0YSA9IFsuLi5kYXRhXTtcclxuICAgICAgICBpZiAoYWRkRGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBuZXdEYXRhID0gWy4uLmFkZERhdGEsIC4uLm5ld0RhdGFdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZGVsZXRlRGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBjb25zdCB2YWx1ZUZpZWxkczogYW55ID0gdmFsdWVGaWVsZC5zcGxpdChcIixcIik7XHJcbiAgICAgICAgICBuZXdEYXRhLm1hcCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIGl0ZW0gPT09IFwib2JqZWN0XCIpIHtcclxuICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBcIlwiO1xyXG4gICAgICAgICAgICAgIHZhbHVlRmllbGRzLm1hcCgodiwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlID0gaW5kZXggPT0gMCA/IHZhbHVlICsgaXRlbVt2XSA6IHZhbHVlICsgXCIsXCIgKyBpdGVtW3ZdO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIGlmIChkZWxldGVEYXRhLmluZGV4T2YodmFsdWUpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgIG5ld0RhdGEuc3BsaWNlKGksIDEpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaXRlbSA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgICAgICAgIGlmIChkZWxldGVEYXRhLmluZGV4T2YoaXRlbSkgPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgbmV3RGF0YS5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5ld0RhdGE7XHJcbiAgICAgIH07XHJcbiAgICAgIHZhciBzdG9yZVByb3BzID0ge1xyXG4gICAgICAgIG1vZGVsOiBcIm1vZGVsXCIsXHJcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICAgIGxpc3RlbmVyczoge1xyXG4gICAgICAgICAgb25CZWZvcmVMb2FkOiBmdW5jdGlvbiAoc3RvcmUsIG9wdGlvbnMpIHtcclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUG9wcy5vbkJlZm9yZUxvYWQsIF90aGlzLCBbc3RvcmUsIG9wdGlvbnNdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBsb2FkOiBmdW5jdGlvbiAoZGF0YSwgbW9kZWxEYXRhLCBzdG9yZSkge1xyXG4gICAgICAgICAgICBsZXQgZGF0YVNvdXJjZSA9IF90aGlzLmNvbnZlcnREYXRhKGdldEFsbERhdGEoZGF0YSkpO1xyXG4gICAgICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7IGRhdGFTb3VyY2U6IGRhdGFTb3VyY2UgfSk7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1BvcHMubG9hZCwgX3RoaXMsIFtkYXRhLCBtb2RlbERhdGEsIHN0b3JlXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZGF0YUNoYW5nZWQ6IGZ1bmN0aW9uIChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSB7XHJcbiAgICAgICAgICAgIF90aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICBkYXRhU291cmNlOiBfdGhpcy5jb252ZXJ0RGF0YShnZXRBbGxEYXRhKGRhdGEpKSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1BvcHMuZGF0YUNoYW5nZWQsIF90aGlzLCBbXHJcbiAgICAgICAgICAgICAgZGF0YSxcclxuICAgICAgICAgICAgICBtb2RlbERhdGEsXHJcbiAgICAgICAgICAgICAgc3RvcmUsXHJcbiAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLnN0b3JlcyxcclxuICAgICAgfTtcclxuICAgICAgaWYgKCh2aWV3bmFtZSB8fCB1cmwpICYmIGRhdGEgPT0gbnVsbCAmJiBvcHRpb25zID09IG51bGwpIHtcclxuICAgICAgICBsZXQgaXNDYWNoZWQgPSBjYWNoZWQ7XHJcbiAgICAgICAgbGV0IGlzQ2FjaGVLZXkgPSBjYWNoZUtleTtcclxuICAgICAgICBpZiAodmlld25hbWUpIHtcclxuICAgICAgICAgIGlmICh0eXBlb2YgY2FjaGVkICE9PSBcImJvb2xlYW5cIikge1xyXG4gICAgICAgICAgICBpc0NhY2hlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIGlzQ2FjaGVLZXkgPSBpc0NhY2hlS2V5ID8gaXNDYWNoZUtleSA6IHZpZXduYW1lO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBzdG9yZVByb3BzID0ge1xyXG4gICAgICAgICAgLi4ue1xyXG4gICAgICAgICAgICBhdXRvTG9hZDogdHJ1ZSxcclxuICAgICAgICAgICAgdXJsOiB1cmwgPyB1cmwgOiByZXF1ZXN0Vmlld1VybCArIHZpZXduYW1lLCAvL+ivu+Wtl+WFuO+8jHVybOWbuuWumu+8jHZpZXduYW1lXHJcbiAgICAgICAgICAgIGNhY2hlZDogaXNDYWNoZWQsXHJcbiAgICAgICAgICAgIGNhY2hlS2V5OiBpc0NhY2hlS2V5LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLnN0b3JlUHJvcHMsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN0b3JlID0gbmV3IFN0b3JlKHN0b3JlUHJvcHMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlQWN0aXZlQ2hhbmdlKGUpIHtcclxuICAgIGNvbnN0IHsgY3VzdG9taXplLCBvbkNoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmIChjdXN0b21pemUpIHtcclxuICAgICAgb25DaGFuZ2UgJiYgb25DaGFuZ2UoZSk7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIHZhbHVlOiBlLFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIHZhbHVlOiBlLnRhcmdldC52YWx1ZSxcclxuICAgICAgfSk7XHJcbiAgICAgIG9uQ2hhbmdlICYmIG9uQ2hhbmdlKGUudGFyZ2V0LnZhbHVlLCBlKTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0VmFsdWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS52YWx1ZTtcclxuICB9XHJcbiAgc2V0VmFsdWUodmFsdWUpIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICB2YWx1ZTogdmFsdWUsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgY29udmVydERhdGEoZGF0YSkge1xyXG4gICAgbGV0IHsgc3RvcmUgPSB7fSwgdmFsdWVGaWVsZCwgbGFiZWxGaWVsZCB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgdmlld25hbWUgfSA9IHN0b3JlO1xyXG5cclxuICAgIHZhbHVlRmllbGQgPSB2YWx1ZUZpZWxkID8gdmFsdWVGaWVsZCA6IHZpZXduYW1lID8gXCJkaWN0S2V5XCIgOiBcInZhbHVlXCI7XHJcbiAgICBsYWJlbEZpZWxkID0gbGFiZWxGaWVsZCA/IGxhYmVsRmllbGQgOiB2aWV3bmFtZSA/IFwiZGljdFZhbHVlXCIgOiBcImxhYmVsXCI7XHJcbiAgICBsZXQgZGF0YVNvdXJlID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKHR5cGVvZiBkYXRhW2ldID09PSBcIm9iamVjdFwiKSB7XHJcbiAgICAgICAgbGV0IG9iaiA9IHsgLi4uZGF0YVtpXSB9O1xyXG4gICAgICAgIGxldCB2YWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgaWYgKHZhbHVlRmllbGQuc3BsaXQoXCIsXCIpLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IGRhdGFbaV1bdmFsdWVGaWVsZF07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IHZhbHVlRmllbGRzOiBhbnkgPSB2YWx1ZUZpZWxkLnNwbGl0KFwiLFwiKTtcclxuICAgICAgICAgIHZhbHVlRmllbGRzLm1hcCgodiwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgdmFsdWUgPSBpbmRleCA9PSAwID8gdmFsdWUgKyBkYXRhW2ldW3ZdIDogdmFsdWUgKyBcIixcIiArIGRhdGFbaV1bdl07XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGxhYmVsID0gXCJcIjtcclxuICAgICAgICBpZiAobGFiZWxGaWVsZC5zcGxpdChcIixcIikubGVuZ3RoID09IDEpIHtcclxuICAgICAgICAgIGxhYmVsID0gZGF0YVtpXVtsYWJlbEZpZWxkXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgbGFiZWxGaWVsZHM6IGFueSA9IGxhYmVsRmllbGQuc3BsaXQoXCIsXCIpO1xyXG4gICAgICAgICAgbGFiZWxGaWVsZHMubWFwKChsLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICBsYWJlbCA9IGluZGV4ID09IDAgPyBsYWJlbCArIGRhdGFbaV1bbF0gOiBsYWJlbCArIFwiLVwiICsgZGF0YVtpXVtsXTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBvYmoubGFiZWwgPSBsYWJlbDtcclxuICAgICAgICBvYmoudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICBvYmouZGlzYWJsZWQgPSBkYXRhW2ldLmRpc2FibGVkID8gZGF0YVtpXS5kaXNhYmxlZCA6IGZhbHNlO1xyXG4gICAgICAgIGRhdGFTb3VyZS5wdXNoKG9iaik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbGV0IG9iaiA9IHt9IGFzIHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IGFueTsgZGlzYWJsZWQ/OiBib29sZWFuIH07XHJcbiAgICAgICAgb2JqLmxhYmVsID0gZGF0YVtpXTtcclxuICAgICAgICBvYmoudmFsdWUgPSBkYXRhW2ldO1xyXG4gICAgICAgIG9iai5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgIGRhdGFTb3VyZS5wdXNoKG9iaik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBkYXRhU291cmU7XHJcbiAgfVxyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyBkYXRhLCBvcHRpb25zLCBjaGlsZHJlbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmICghY2hpbGRyZW4gJiYgKGRhdGEgfHwgb3B0aW9ucykpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgZGF0YVNvdXJjZTogdGhpcy5jb252ZXJ0RGF0YShkYXRhID8gZGF0YSA6IG9wdGlvbnMpLFxyXG4gICAgICAgIGRhdGFTdG9yZTogZGF0YSA/IGRhdGEgOiBvcHRpb25zLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbXBvbmVudERpZFVwZGF0ZSgpIHtcclxuICAgIGNvbnN0IHsgZGF0YVN0b3JlIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgeyBkYXRhLCBvcHRpb25zIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgbmV3RGF0YSA9IGRhdGEgPyBkYXRhIDogb3B0aW9ucztcclxuICAgIGlmIChkYXRhIHx8IG9wdGlvbnMpIHtcclxuICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KGRhdGFTdG9yZSkgIT09IEpTT04uc3RyaW5naWZ5KG5ld0RhdGEpKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICBkYXRhU291cmNlOiB0aGlzLmNvbnZlcnREYXRhKG5ld0RhdGEpLFxyXG4gICAgICAgICAgZGF0YVN0b3JlOiBuZXdEYXRhLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7IGNoaWxkcmVuLCBjdXN0b21pemUgPSBmYWxzZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCByYWRpb3M6IGFueTtcclxuICAgIHJhZGlvcyA9IGNoaWxkcmVuO1xyXG4gICAgY29uc3QgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pO1xyXG4gICAgaWYgKGN1c3RvbWl6ZSkge1xyXG4gICAgICBpZiAoaXNBcnJheSkge1xyXG4gICAgICAgIHJldHVybiByYWRpb3MubWFwKChjaGlsZCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgIGxldCBpc0FjdGl2ZSA9IHRoaXMucHJvcHMudmFsdWUgPT09IGNoaWxkLnByb3BzLnZhbHVlID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICAgICAgcmV0dXJuIFJlYWN0LmNsb25lRWxlbWVudChjaGlsZCwge1xyXG4gICAgICAgICAgICBsYWJlbDogY2hpbGQucHJvcHMuY2hpbGRyZW4sXHJcbiAgICAgICAgICAgIHZhbHVlOiBjaGlsZC5wcm9wcy52YWx1ZSxcclxuICAgICAgICAgICAgYWN0aXZlOiBpc0FjdGl2ZSxcclxuICAgICAgICAgICAgb25DbGljazogdGhpcy5oYW5kbGVBY3RpdmVDaGFuZ2UuYmluZCh0aGlzLCBjaGlsZC5wcm9wcy52YWx1ZSksXHJcbiAgICAgICAgICAgIGtleTogaW5kZXgsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBsZXQgaXNBY3RpdmUgPSB0aGlzLnByb3BzLnZhbHVlID09PSByYWRpb3MucHJvcHMudmFsdWUgPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNsb25lRWxlbWVudChyYWRpb3MsIHtcclxuICAgICAgICAgIGxhYmVsOiByYWRpb3MucHJvcHMuY2hpbGRyZW4sXHJcbiAgICAgICAgICB2YWx1ZTogcmFkaW9zLnByb3BzLnZhbHVlLFxyXG4gICAgICAgICAgYWN0aXZlOiBpc0FjdGl2ZSxcclxuICAgICAgICAgIG9uQ2xpY2s6IHRoaXMuaGFuZGxlQWN0aXZlQ2hhbmdlLmJpbmQodGhpcywgcmFkaW9zLnByb3BzLnZhbHVlKSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgeyBkYXRhLCBvcHRpb25zLCAuLi5wYXJhbXMgfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgIGNvbnN0IFJhZGlvUHJvcHMgPSBvbWl0KHsgLi4ucGFyYW1zIH0sIFtcclxuICAgICAgICBcInN0b3JlXCIsXHJcbiAgICAgICAgXCJsYWJlbEZpZWxkXCIsXHJcbiAgICAgICAgXCJ2YWx1ZUZpZWxkXCIsXHJcbiAgICAgICAgXCJjdXN0b21pemVcIixcclxuICAgICAgICBcIm9uQ2hhbmdlXCIsXHJcbiAgICAgICAgXCJhZGREYXRhXCIsXHJcbiAgICAgICAgXCJkZWxldGVEYXRhXCIsXHJcbiAgICAgIF0pO1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIDw+XHJcbiAgICAgICAgICA8UmFkaW8uR3JvdXBcclxuICAgICAgICAgICAgdmFsdWU9e3RoaXMuc3RhdGUudmFsdWV9XHJcbiAgICAgICAgICAgIG9wdGlvbnM9e3RoaXMuc3RhdGUuZGF0YVNvdXJjZX1cclxuICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMuaGFuZGxlQWN0aXZlQ2hhbmdlLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgIHsuLi5SYWRpb1Byb3BzfVxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8Lz5cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBT0EsS0FBSyxJQUFJQyxTQUFTLFFBQVEsT0FBTztBQUV4QyxPQUFPQyxJQUFJLE1BQU0sU0FBUztBQUMxQixPQUFPQyxLQUFLLE1BQXNCLGFBQWE7QUFDL0MsU0FBU0MsS0FBSyxRQUFRLHVCQUF1QjtBQUM3QyxPQUFPQyxNQUFNLE1BQU0sY0FBYztBQVlqQyxlQUFlLE1BQU1DLFVBQVUsU0FBU0wsU0FBUyxDQUFtQjtFQU9sRU0sV0FBV0EsQ0FBQ0MsS0FBSyxFQUFFO0lBQ2pCLEtBQUssQ0FBQ0EsS0FBSyxDQUFDO0lBQUNDLGVBQUEsZ0JBUFA7TUFDTkMsVUFBVSxFQUFFLEVBQUU7TUFDZEMsU0FBUyxFQUFFLEVBQUU7TUFDYkMsS0FBSyxFQUFFO0lBQ1QsQ0FBQztJQUFBSCxlQUFBLGdCQUNPLENBQUMsQ0FBQztJQUdSLE1BQU1JLEtBQUssR0FBRyxJQUFJO0lBQ2xCLE1BQU07TUFDSkMsS0FBSyxHQUFHLENBQUMsQ0FBQztNQUNWQyxPQUFPO01BQ1BDLElBQUk7TUFDSkMsUUFBUTtNQUNSQyxPQUFPLEdBQUcsRUFBRTtNQUNaQyxVQUFVLEdBQUc7SUFDZixDQUFDLEdBQUdYLEtBQUs7SUFDVCxJQUFJO01BQUVZO0lBQVcsQ0FBQyxHQUFHWixLQUFL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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RadioGroup.js","names":["React","Component","omit","Store","utils","config","RadioGroup","constructor","props","_defineProperty","dataSource","dataStore","value","_this","store","options","data","children","addData","deleteData","viewtype","valueField","viewname","viewUrl","viewBizUrl","requestViewUrl","url","listeners","listenersPops","cached","cacheKey","stores","_objectWithoutProperties","_excluded","Error","getAllData","Array","isArray","newData","length","valueFields","split","map","item","i","v","index","indexOf","splice","storeProps","_objectSpread","model","component","onBeforeLoad","callback","load","modelData","convertData","setState","dataChanged","isCached","isCacheKey","autoLoad","handleActiveChange","e","customize","onChange","target","getValue","state","setValue","labelField","dataSoure","obj","label","labelFields","l","disabled","push","componentDidMount","componentDidUpdate","JSON","stringify","render","radios","child","isActive","cloneElement","active","onClick","bind","key","_this$props","params","_excluded2","RadioProps","createElement","Fragment","_Radio","Group","_extends"],"sources":["../../../src/components/base/radio/RadioGroup.tsx"],"sourcesContent":["/*\r\n * @Descripttion:\r\n * @version:\r\n * @Author: rxzhu\r\n * @Date: 2021-03-24 14:33:35\r\n * @LastEditors: rxzhu\r\n * @LastEditTime: 2021-04-23 16:46:17\r\n */\r\nimport React, { Component } from \"react\";\r\nimport { Radio, RadioGroupProps } from \"antd\";\r\nimport omit from \"omit.js\";\r\nimport Store, { StoreProps } from \"@bj-nsc/msn\";\r\nimport { utils } from \"@bj-nsc/msn/lib/utils\";\r\nimport config from \"../../config\";\r\n\r\ninterface IRadioGroupProps extends RadioGroupProps {\r\n customize?: boolean;\r\n store?: StoreProps;\r\n data?: Array<string | Object>; //默认数据\r\n labelField?: string;\r\n valueField?: string;\r\n addData?: Array<string | Object>; //与store一起用\r\n deleteData?: Array<string>;\r\n onChange?: (value: any, e?: any) => void;\r\n}\r\nexport default class RadioGroup extends Component<IRadioGroupProps> {\r\n state = {\r\n dataSource: [],\r\n dataStore: [],\r\n value: \"\",\r\n };\r\n store = {} as StoreProps;\r\n constructor(props) {\r\n super(props);\r\n const _this = this;\r\n const {\r\n store = {},\r\n options,\r\n data,\r\n children,\r\n addData = [],\r\n deleteData = [],\r\n viewtype = \"sys\",\r\n } = props;\r\n let { valueField } = props;\r\n const { viewname } = store;\r\n valueField = valueField ? valueField : viewname ? \"dictKey\" : \"value\";\r\n let { viewUrl, viewBizUrl } = config();\r\n let requestViewUrl = viewtype == \"sys\" ? viewUrl : viewBizUrl;\r\n if (!children) {\r\n const {\r\n url,\r\n listeners: listenersPops = {},\r\n viewname,\r\n cached,\r\n cacheKey,\r\n ...stores\r\n } = store;\r\n if (!url && !options && !data && !viewname)\r\n throw new Error(\"url、viewname、data和options不能都为空!\");\r\n const getAllData = (data) => {\r\n if (!Array.isArray(data)) {\r\n return [];\r\n }\r\n let newData = [...data];\r\n if (addData.length > 0) {\r\n newData = [...addData, ...newData];\r\n }\r\n if (deleteData.length > 0) {\r\n const valueFields: any = valueField.split(\",\");\r\n newData.map((item, i) => {\r\n if (typeof item === \"object\") {\r\n let value = \"\";\r\n valueFields.map((v, index) => {\r\n value = index == 0 ? value + item[v] : value + \",\" + item[v];\r\n });\r\n if (deleteData.indexOf(value) > -1) {\r\n newData.splice(i, 1);\r\n }\r\n } else if (typeof item === \"string\") {\r\n if (deleteData.indexOf(item) > -1) {\r\n newData.splice(i, 1);\r\n }\r\n }\r\n });\r\n }\r\n return newData;\r\n };\r\n var storeProps = {\r\n model: \"model\",\r\n component: this,\r\n listeners: {\r\n onBeforeLoad: function (store, options) {\r\n utils.callback(listenersPops.onBeforeLoad, _this, [store, options]);\r\n },\r\n load: function (data, modelData, store) {\r\n let dataSource = _this.convertData(getAllData(data));\r\n _this.setState({ dataSource: dataSource });\r\n utils.callback(listenersPops.load, _this, [data, modelData, store]);\r\n },\r\n dataChanged: function (data, modelData, store) {\r\n _this.setState({\r\n dataSource: _this.convertData(getAllData(data)),\r\n });\r\n utils.callback(listenersPops.dataChanged, _this, [\r\n data,\r\n modelData,\r\n store,\r\n ]);\r\n },\r\n },\r\n ...stores,\r\n };\r\n if ((viewname || url) && data == null && options == null) {\r\n let isCached = cached;\r\n let isCacheKey = cacheKey;\r\n if (viewname) {\r\n if (typeof cached !== \"boolean\") {\r\n isCached = true;\r\n isCacheKey = isCacheKey ? isCacheKey : viewname;\r\n }\r\n }\r\n storeProps = {\r\n ...{\r\n autoLoad: true,\r\n url: url ? url : requestViewUrl + viewname, //读字典,url固定,viewname\r\n cached: isCached,\r\n cacheKey: isCacheKey,\r\n },\r\n ...storeProps,\r\n };\r\n }\r\n this.store = new Store(storeProps);\r\n }\r\n }\r\n\r\n handleActiveChange(e) {\r\n const { customize, onChange } = this.props;\r\n if (customize) {\r\n onChange && onChange(e);\r\n this.setState({\r\n value: e,\r\n });\r\n } else {\r\n this.setState({\r\n value: e.target.value,\r\n });\r\n onChange && onChange(e.target.value, e);\r\n }\r\n }\r\n getValue() {\r\n return this.state.value;\r\n }\r\n setValue(value) {\r\n this.setState({\r\n value: value,\r\n });\r\n }\r\n convertData(data) {\r\n let { store = {}, valueField, labelField } = this.props;\r\n const { viewname } = store;\r\n\r\n valueField = valueField ? valueField : viewname ? \"dictKey\" : \"value\";\r\n labelField = labelField ? labelField : viewname ? \"dictValue\" : \"label\";\r\n let dataSoure = [];\r\n for (let i = 0; i < data.length; i++) {\r\n if (typeof data[i] === \"object\") {\r\n let obj = { ...data[i] };\r\n let value = \"\";\r\n if (valueField.split(\",\").length == 1) {\r\n value = data[i][valueField];\r\n } else {\r\n const valueFields: any = valueField.split(\",\");\r\n valueFields.map((v, index) => {\r\n value = index == 0 ? value + data[i][v] : value + \",\" + data[i][v];\r\n });\r\n }\r\n let label = \"\";\r\n if (labelField.split(\",\").length == 1) {\r\n label = data[i][labelField];\r\n } else {\r\n const labelFields: any = labelField.split(\",\");\r\n labelFields.map((l, index) => {\r\n label = index == 0 ? label + data[i][l] : label + \"-\" + data[i][l];\r\n });\r\n }\r\n obj.label = label;\r\n obj.value = value;\r\n obj.disabled = data[i].disabled ? data[i].disabled : false;\r\n dataSoure.push(obj);\r\n } else {\r\n let obj = {} as { label: string; value: any; disabled?: boolean };\r\n obj.label = data[i];\r\n obj.value = data[i];\r\n obj.disabled = false;\r\n dataSoure.push(obj);\r\n }\r\n }\r\n return dataSoure;\r\n }\r\n componentDidMount() {\r\n const { data, options, children } = this.props;\r\n if (!children && (data || options)) {\r\n this.setState({\r\n dataSource: this.convertData(data ? data : options),\r\n dataStore: data ? data : options,\r\n });\r\n }\r\n }\r\n\r\n componentDidUpdate() {\r\n const { dataStore } = this.state;\r\n const { data, options } = this.props;\r\n const newData = data ? data : options;\r\n if (data || options) {\r\n if (JSON.stringify(dataStore) !== JSON.stringify(newData)) {\r\n this.setState({\r\n dataSource: this.convertData(newData),\r\n dataStore: newData,\r\n });\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n const { children, customize = false } = this.props;\r\n let radios: any;\r\n radios = children;\r\n const isArray = Array.isArray(children);\r\n if (customize) {\r\n if (isArray) {\r\n return radios.map((child, index) => {\r\n let isActive = this.props.value === child.props.value ? true : false;\r\n return React.cloneElement(child, {\r\n label: child.props.children,\r\n value: child.props.value,\r\n active: isActive,\r\n onClick: this.handleActiveChange.bind(this, child.props.value),\r\n key: index,\r\n });\r\n });\r\n } else {\r\n let isActive = this.props.value === radios.props.value ? true : false;\r\n return React.cloneElement(radios, {\r\n label: radios.props.children,\r\n value: radios.props.value,\r\n active: isActive,\r\n onClick: this.handleActiveChange.bind(this, radios.props.value),\r\n });\r\n }\r\n } else {\r\n const { data, options, ...params } = this.props;\r\n const RadioProps = omit({ ...params }, [\r\n \"store\",\r\n \"labelField\",\r\n \"valueField\",\r\n \"customize\",\r\n \"onChange\",\r\n \"addData\",\r\n \"deleteData\",\r\n ]);\r\n return (\r\n <>\r\n <Radio.Group\r\n value={this.state.value}\r\n options={this.state.dataSource}\r\n onChange={this.handleActiveChange.bind(this)}\r\n {...RadioProps}\r\n />\r\n </>\r\n );\r\n }\r\n }\r\n}\r\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"RadioGroup.js","names":["React","Component","omit","Store","utils","config","RadioGroup","constructor","props","_defineProperty","dataSource","dataStore","value","_this","store","options","data","children","addData","deleteData","valueField","viewtype","viewname","viewUrl","viewBizUrl","requestViewUrl","url","listeners","listenersPops","cached","cacheKey","stores","_objectWithoutProperties","_excluded","Error","getAllData","Array","isArray","newData","length","valueFields","split","map","item","i","v","index","indexOf","splice","storeProps","_objectSpread","model","component","onBeforeLoad","callback","load","modelData","convertData","setState","dataChanged","isCached","isCacheKey","autoLoad","handleActiveChange","e","customize","onChange","target","getValue","state","setValue","labelField","dataSoure","obj","label","labelFields","l","disabled","push","componentDidMount","componentDidUpdate","JSON","stringify","render","radios","child","isActive","cloneElement","active","onClick","bind","key","_this$props","params","_excluded2","RadioProps","createElement","Fragment","_Radio","Group","_extends"],"sources":["../../../src/components/base/radio/RadioGroup.tsx"],"sourcesContent":["/*\r\n * @Descripttion:\r\n * @version:\r\n * @Author: rxzhu\r\n * @Date: 2021-03-24 14:33:35\r\n * @LastEditors: rxzhu\r\n * @LastEditTime: 2021-04-23 16:46:17\r\n */\r\nimport React, { Component } from \"react\";\r\nimport { Radio, RadioGroupProps } from \"antd\";\r\nimport omit from \"omit.js\";\r\nimport Store, { StoreProps } from \"@bj-nsc/msn\";\r\nimport { utils } from \"@bj-nsc/msn/lib/utils\";\r\nimport config from \"../../config\";\r\n\r\ninterface IRadioGroupProps extends RadioGroupProps {\r\n customize?: boolean;\r\n store?: StoreProps;\r\n data?: Array<string | Object>; //默认数据\r\n labelField?: string;\r\n valueField?: string;\r\n addData?: Array<string | Object>; //与store一起用\r\n deleteData?: Array<string>;\r\n onChange?: (value: any, e?: any) => void;\r\n}\r\nexport default class RadioGroup extends Component<IRadioGroupProps> {\r\n state = {\r\n dataSource: [],\r\n dataStore: [],\r\n value: \"\",\r\n };\r\n store = {} as StoreProps;\r\n constructor(props) {\r\n super(props);\r\n const _this = this;\r\n const {\r\n store = {},\r\n options,\r\n data,\r\n children,\r\n addData = [],\r\n deleteData = [],\r\n } = props;\r\n let { valueField } = props;\r\n const { viewtype = \"sys\",viewname } = store;\r\n valueField = valueField ? valueField : viewname ? \"dictKey\" : \"value\";\r\n let { viewUrl, viewBizUrl } = config();\r\n let requestViewUrl = viewtype == \"sys\" ? viewUrl : viewBizUrl;\r\n if (!children) {\r\n const {\r\n url,\r\n listeners: listenersPops = {},\r\n viewname,\r\n cached,\r\n cacheKey,\r\n ...stores\r\n } = store;\r\n if (!url && !options && !data && !viewname)\r\n throw new Error(\"url、viewname、data和options不能都为空!\");\r\n const getAllData = (data) => {\r\n if (!Array.isArray(data)) {\r\n return [];\r\n }\r\n let newData = [...data];\r\n if (addData.length > 0) {\r\n newData = [...addData, ...newData];\r\n }\r\n if (deleteData.length > 0) {\r\n const valueFields: any = valueField.split(\",\");\r\n newData.map((item, i) => {\r\n if (typeof item === \"object\") {\r\n let value = \"\";\r\n valueFields.map((v, index) => {\r\n value = index == 0 ? value + item[v] : value + \",\" + item[v];\r\n });\r\n if (deleteData.indexOf(value) > -1) {\r\n newData.splice(i, 1);\r\n }\r\n } else if (typeof item === \"string\") {\r\n if (deleteData.indexOf(item) > -1) {\r\n newData.splice(i, 1);\r\n }\r\n }\r\n });\r\n }\r\n return newData;\r\n };\r\n var storeProps = {\r\n model: \"model\",\r\n component: this,\r\n listeners: {\r\n onBeforeLoad: function (store, options) {\r\n utils.callback(listenersPops.onBeforeLoad, _this, [store, options]);\r\n },\r\n load: function (data, modelData, store) {\r\n let dataSource = _this.convertData(getAllData(data));\r\n _this.setState({ dataSource: dataSource });\r\n utils.callback(listenersPops.load, _this, [data, modelData, store]);\r\n },\r\n dataChanged: function (data, modelData, store) {\r\n _this.setState({\r\n dataSource: _this.convertData(getAllData(data)),\r\n });\r\n utils.callback(listenersPops.dataChanged, _this, [\r\n data,\r\n modelData,\r\n store,\r\n ]);\r\n },\r\n },\r\n ...stores,\r\n };\r\n if ((viewname || url) && data == null && options == null) {\r\n let isCached = cached;\r\n let isCacheKey = cacheKey;\r\n if (viewname) {\r\n if (typeof cached !== \"boolean\") {\r\n isCached = true;\r\n isCacheKey = isCacheKey ? isCacheKey : viewname;\r\n }\r\n }\r\n storeProps = {\r\n ...{\r\n autoLoad: true,\r\n url: url ? url : requestViewUrl + viewname, //读字典,url固定,viewname\r\n cached: isCached,\r\n cacheKey: isCacheKey,\r\n },\r\n ...storeProps,\r\n };\r\n }\r\n this.store = new Store(storeProps);\r\n }\r\n }\r\n\r\n handleActiveChange(e) {\r\n const { customize, onChange } = this.props;\r\n if (customize) {\r\n onChange && onChange(e);\r\n this.setState({\r\n value: e,\r\n });\r\n } else {\r\n this.setState({\r\n value: e.target.value,\r\n });\r\n onChange && onChange(e.target.value, e);\r\n }\r\n }\r\n getValue() {\r\n return this.state.value;\r\n }\r\n setValue(value) {\r\n this.setState({\r\n value: value,\r\n });\r\n }\r\n convertData(data) {\r\n let { store = {}, valueField, labelField } = this.props;\r\n const { viewname } = store;\r\n\r\n valueField = valueField ? valueField : viewname ? \"dictKey\" : \"value\";\r\n labelField = labelField ? labelField : viewname ? \"dictValue\" : \"label\";\r\n let dataSoure = [];\r\n for (let i = 0; i < data.length; i++) {\r\n if (typeof data[i] === \"object\") {\r\n let obj = { ...data[i] };\r\n let value = \"\";\r\n if (valueField.split(\",\").length == 1) {\r\n value = data[i][valueField];\r\n } else {\r\n const valueFields: any = valueField.split(\",\");\r\n valueFields.map((v, index) => {\r\n value = index == 0 ? value + data[i][v] : value + \",\" + data[i][v];\r\n });\r\n }\r\n let label = \"\";\r\n if (labelField.split(\",\").length == 1) {\r\n label = data[i][labelField];\r\n } else {\r\n const labelFields: any = labelField.split(\",\");\r\n labelFields.map((l, index) => {\r\n label = index == 0 ? label + data[i][l] : label + \"-\" + data[i][l];\r\n });\r\n }\r\n obj.label = label;\r\n obj.value = value;\r\n obj.disabled = data[i].disabled ? data[i].disabled : false;\r\n dataSoure.push(obj);\r\n } else {\r\n let obj = {} as { label: string; value: any; disabled?: boolean };\r\n obj.label = data[i];\r\n obj.value = data[i];\r\n obj.disabled = false;\r\n dataSoure.push(obj);\r\n }\r\n }\r\n return dataSoure;\r\n }\r\n componentDidMount() {\r\n const { data, options, children } = this.props;\r\n if (!children && (data || options)) {\r\n this.setState({\r\n dataSource: this.convertData(data ? data : options),\r\n dataStore: data ? data : options,\r\n });\r\n }\r\n }\r\n\r\n componentDidUpdate() {\r\n const { dataStore } = this.state;\r\n const { data, options } = this.props;\r\n const newData = data ? data : options;\r\n if (data || options) {\r\n if (JSON.stringify(dataStore) !== JSON.stringify(newData)) {\r\n this.setState({\r\n dataSource: this.convertData(newData),\r\n dataStore: newData,\r\n });\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n const { children, customize = false } = this.props;\r\n let radios: any;\r\n radios = children;\r\n const isArray = Array.isArray(children);\r\n if (customize) {\r\n if (isArray) {\r\n return radios.map((child, index) => {\r\n let isActive = this.props.value === child.props.value ? true : false;\r\n return React.cloneElement(child, {\r\n label: child.props.children,\r\n value: child.props.value,\r\n active: isActive,\r\n onClick: this.handleActiveChange.bind(this, child.props.value),\r\n key: index,\r\n });\r\n });\r\n } else {\r\n let isActive = this.props.value === radios.props.value ? true : false;\r\n return React.cloneElement(radios, {\r\n label: radios.props.children,\r\n value: radios.props.value,\r\n active: isActive,\r\n onClick: this.handleActiveChange.bind(this, radios.props.value),\r\n });\r\n }\r\n } else {\r\n const { data, options, ...params } = this.props;\r\n const RadioProps = omit({ ...params }, [\r\n \"store\",\r\n \"labelField\",\r\n \"valueField\",\r\n \"customize\",\r\n \"onChange\",\r\n \"addData\",\r\n \"deleteData\",\r\n ]);\r\n return (\r\n <>\r\n <Radio.Group\r\n value={this.state.value}\r\n options={this.state.dataSource}\r\n onChange={this.handleActiveChange.bind(this)}\r\n {...RadioProps}\r\n />\r\n </>\r\n );\r\n }\r\n }\r\n}\r\n"],"mappings":"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","ignoreList":[]}
|
package/lib/base/table/index.js
CHANGED
|
@@ -842,7 +842,7 @@ class NSCTable extends React.Component {
|
|
|
842
842
|
position: ["bottomRight"],
|
|
843
843
|
showSizeChanger: true,
|
|
844
844
|
showQuickJumper: true
|
|
845
|
-
},
|
|
845
|
+
}, pagination), props.pagination);
|
|
846
846
|
if (props.showTotal == true) {
|
|
847
847
|
props.pagination.showTotal = function (total, _ref4) {
|
|
848
848
|
let [from, to] = _ref4;
|
|
@@ -959,4 +959,4 @@ _defineProperty(NSCTable, "defaultProps", {
|
|
|
959
959
|
}
|
|
960
960
|
});
|
|
961
961
|
export default withZhLocale(NSCTable);
|
|
962
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBcHBzdG9yZU91dGxpbmVkIiwiQ2hlY2tPdXRsaW5lZCIsIkNvbHVtbkhlaWdodE91dGxpbmVkIiwiU2VhcmNoT3V0bGluZWQiLCJTb3J0QXNjZW5kaW5nT3V0bGluZWQiLCJTb3J0RGVzY2VuZGluZ091dGxpbmVkIiwiUmVkb091dGxpbmVkIiwiaXNFbXB0eU9iaiIsIlN0b3JlIiwiUGFnZVN0b3JlIiwidXRpbHMiLCJSZWFjdCIsIkRuZFByb3ZpZGVyIiwiQm9keVJvdyIsIkRuZENvbnRleHRUeXBlIiwiSUJvZHlSb3dQcm9wcyIsInRyZWVVdGlscyIsInN0eWxlcyIsIkJvZHlSb3dDb21wb25lbnQiLCJIVE1MNUJhY2tlbmQiLCJ3aXRoWmhMb2NhbGUiLCJSZXNpemFibGUiLCJnZXRMZXNzIiwiZ2V0Tm9kZSIsIk5vRGF0YSIsImdldFN0b3JhZ2UiLCJjb25maWciLCJSZXNpemVhYmxlVGl0bGUiLCJwcm9wcyIsIm9uUmVzaXplIiwid2lkdGgiLCJyZXN0UHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJjcmVhdGVFbGVtZW50IiwiaGVpZ2h0IiwiZHJhZ2dhYmxlT3B0cyIsImVuYWJsZVVzZXJTZWxlY3RIYWNrIiwiTlNDVGFibGUiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsIl9hdXRvVHlwZSIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsIm9uQmVmb3JlTG9hZCIsImxvYWQiLCJoZWFkZXIiLCJjZWxsIiwiaW5kZXgiLCJlIiwiX3JlZiIsInNpemUiLCJjb2xzIiwic3RhdGUiLCJuZXh0Q29sdW1ucyIsIl9vYmplY3RTcHJlYWQiLCJzZXRTdGF0ZSIsImV2IiwiZGF0YSIsIkpTT04iLCJwYXJzZSIsIl90aGlzIiwiZXZlbnRUeXBlIiwicGF5bG9hZCIsInRhYmxlU2l6ZSIsImRyYWdJbmRleCIsImhvdmVySW5kZXgiLCJkcmFnIiwidGFyZ2V0IiwiZHJhZ05vZGUiLCJyZWNvcmQiLCJ0YXJnZXROb2RlIiwibW92ZUFycmF5IiwiaWRzIiwicGFyZW50Tm9kZSIsImdldENoaWxkTm9kZUlkcyIsInBhcmFtcyIsImlkIiwicGFyZW50SWQiLCJhdHRyaWJ1dGUiLCJtb3ZlUm93Iiwic3RvcmUiLCJyZWxvYWQiLCJtb2RhbCIsInR5cGUiLCJzdG9yZVByZWZpeCIsImF1dG9UeXBlIiwiY29udGVudCIsImRhdGFTb3VyY2UiLCJjb2x1bW5zIiwibG9hZGluZyIsInBhZ2luYXRpb24iLCJhY3RpdmVJbmRleCIsInNlYXJjaFRleHQiLCJmaWVsZE9wdGlvbiIsInNlYXJjaENvbG9yIiwic29ydHMiLCJmaWx0ZXJQYXJhbXMiLCJzb3J0VHlwZSIsInNvcnRlciIsInNvcnRJbmZvIiwiZGVmYXVsdFNvcnQiLCJjaGVja0NvbHVtbiIsImRlZmF1bHRDaGVjayIsInNlbGVjdGVkUm93S2V5cyIsInNlbGVjdGVkUm93RGF0YXMiLCJfcmVmMiIsImxpc3RlbmVycyIsImxpc3RlbmVyc1Byb3BzIiwicmVzdFN0b3JlIiwiX2V4Y2x1ZGVkMiIsInN0b3JlUHJvcHMiLCJtb2RlbCIsImNvbXBvbmVudCIsIm9wdGlvbnMiLCJjYWxsYmFjayIsImRhdGFDaGFuZ2VkIiwibW9kZWxEYXRhIiwicGFnaW5nIiwiZ2V0UGFnaW5hdGlvbiIsIm9uRXJyb3JMb2FkIiwiZXJyIiwicmVzcG9uc2UiLCJhdXRvTG9hZCIsIk9iamVjdCIsImFzc2lnbiIsImN1cnJlbnQiLCJjb21wb25lbnREaWRNb3VudCIsInJlc2l6ZUNvbHVtbiIsInNldERhdGEiLCJ3aW5kb3ciLCJhZGRFdmVudExpc3RlbmVyIiwibGlzdGVuTWVzc2FnZSIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImNvbXBvbmVudERpZFVwZGF0ZSIsInByZXZQcm9wcyIsInByZVN0YXRlIiwicmVzZXRDb2x1bW4iLCJuZXdDb2xzIiwiY29sc3MiLCJtYXAiLCJjb2wiLCJ0ZW1wIiwib25IZWFkZXJDZWxsIiwiY29sdW1uIiwiaGFuZGxlUmVzaXplIiwicHVzaCIsImNsZWFyU2VsZWN0Q29sb3IiLCJnZXRQYWdpbmF0aW9uQnlTdG9yZSIsIm9uQ2hhbmdlIiwiZmlsdGVycyIsImV4dHJhIiwiYXV0b09uQ2hhbmdlIiwiYXV0b1NvcnQiLCJhdXRvUGFnaW5hdGlvbiIsImlzTXVsdGlwbGUiLCJBcnJheSIsImlzQXJyYXkiLCJoYW5kbGVQYWdpbmF0aW9uIiwicCIsImN1cnJlbnRLZXkiLCJwYWdlU2l6ZUtleSIsInBhZ2VTaXplIiwiYXNjUGFyYW1zIiwiZ2V0U29ydFBhcmFtIiwib25DaGFuZ2VGbiIsImdldFN0b3JlIiwiZ2V0TW9kZWwiLCJoYW5kbGVTZWFyY2giLCJ2YWwiLCJmaWx0ZXJDb2x1bW4iLCJjaGVja2VkVmFsdWUiLCJsZW5ndGgiLCJfbWVzc2FnZSIsIndhcm5pbmciLCJmaWx0ZXJDb2x1bW5zIiwibmV3Q29sIiwiaW5jbHVkZXMiLCJkYXRhSW5kZXgiLCJpbml0U2hvdyIsInNvcnRTdGF0ZSIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsInNvcnRTZWFyY2giLCJvcmRlckl0ZW1zIiwiZmllbGQiLCJhc2MiLCJvcmRlciIsImZvckVhY2giLCJ2Iiwic3RyaW5naWZ5IiwiZ2V0Q29sdW1ucyIsInNvcnRGaWVsZHMiLCJkZWZhdWx0U2hvd0NvbHMiLCJmaWx0ZXIiLCJlbGxpcHNpcyIsInJlbmRlciIsInNob3dUaXRsZSIsInRleHQiLCJ0aXRsZSIsImNsYXNzTmFtZSIsInN0eWxlIiwiaW5kZXhPZiIsInNvcnRPcmRlciIsIm11bHRpcGxlIiwiaXRlbSIsImZpbHRlclByb3BzIiwib2JqIiwic2VhcmNoS2V5IiwiRGl2IiwicGxhY2Vob2xkZXIiLCJjb25jYXQiLCJyZWYiLCJ0YWJsZVNlYXJjaFJlZiIsImZpbHRlckRyb3Bkb3duIiwiX3JlZjMiLCJzZXRTZWxlY3RlZEtleXMiLCJzZWxlY3RlZEtleXMiLCJjb25maXJtIiwiY2xlYXJGaWx0ZXJzIiwiX1NwYWNlIiwiX0J1dHRvbiIsIm9uQ2xpY2siLCJfdGhpcyR0YWJsZVNlYXJjaFJlZiQiLCJuZXdGaWx0ZXJQYXJhbXMiLCJrZXkiLCJnZXRWYWx1ZSIsInNvcnRQYXJhbSIsImZpbHRlckljb24iLCJyZW5kZXJUb29sQmFyIiwiY29sTGlzdHMiLCJ0b29sYmFyIiwidGFibGVUb29sIiwic3RvcmVSZXF1ZXN0Q29uZmlnIiwidG9vbHMiLCJ0b29sc0NsaWNrIiwib25Ub29sQ2xpY2siLCJzaXplSXRlbSIsInNvcnRJdGVtIiwic29ydENvbnRlbnQiLCJGcmFnbWVudCIsImN1cnNvciIsImNvbG9yIiwic2l6ZUNvbnRlbnQiLCJfQ2hlY2tib3giLCJHcm91cCIsImJpbmQiLCJsYWJlbCIsInZhbHVlIiwiZGlzYWJsZWQiLCJmb250U2l6ZSIsIl9Qb3BvdmVyIiwicGxhY2VtZW50IiwidHJpZ2dlciIsIm92ZXJsYXlTdHlsZSIsIm1pbldpZHRoIiwibWF4V2lkdGgiLCJtYXJnaW5SaWdodCIsIm9uUmVmcmVzaCIsImdldFNlbGVjdGVkUm93S2V5cyIsImdldFNlbGVjdGVkUm93RGF0YXMiLCJyZXNldFNlbGVjdGVkUm93S2V5cyIsInNldFNlbGVjdGVkUm93S2V5cyIsInNldFNlbGVjdGVkUm93RGF0YXMiLCJyb3dTZWxlY3Rpb25PblNlbGVjdCIsInNlbGVjdGVkIiwicm93S2V5IiwibmV3U2VsZWN0ZWRSb3dLZXlzIiwibmV3U2VsZWN0ZWRSb3dEYXRhcyIsInNwbGljZSIsInJvd1NlbGVjdGlvbk9uU2VsZWN0QWxsIiwic2VsZWN0ZWRSb3dzIiwiY2hhbmdlUm93cyIsIm5ld2lkcyIsIm5ld2RhdGFzIiwiY2hhbmdlSWRzIiwiX3RoaXMkcHJvcHMkdG9vbGJhciIsIm9taXQiLCJjbGlja0NoYW5nZUNvbG9yIiwicG9zaXRpb24iLCJzaG93U2l6ZUNoYW5nZXIiLCJzaG93UXVpY2tKdW1wZXIiLCJzaG93VG90YWwiLCJ0b3RhbCIsIl9yZWY0IiwiZnJvbSIsInRvIiwib25Sb3dGbiIsIm9uUm93IiwiY3VzdG9tIiwib25DbGlja0ZuIiwiZXZlbnQiLCJyb3dDbGFzc05hbWUiLCJjbGlja1Jvd1N0eWxlIiwibmV3RGF0YVNvdXJjZSIsImdldFNlYXJjaE1lbnVEYXRhcyIsInRyZWVEYXRhcyIsImV4cGFuZGVkUm93S2V5cyIsIm9wZW5LZXlzIiwiZHJhZ2FibGUiLCJkcmFnYWJsZVByb3BzIiwiY29tcG9uZW50cyIsInJlc2l6ZVByb3BzIiwidG9vbEZsYWciLCJ0b29scHJvcHMiLCJzaG93Iiwic2hvd1Jvd1NlbGVjdGlvbiIsInJvd1NlbGVjdGlvbiIsIm9uU2VsZWN0Iiwib25TZWxlY3RBbGwiLCJjb2x1bW5XaWR0aCIsIkRlZmF1bHRUYWJsZSIsIl9UYWJsZSIsIl9leHRlbmRzIiwiY2hpbGRyZW5Db2x1bW5OYW1lIiwic2hlaXRlbSIsImxvY2FsZSIsImVtcHR5VGV4dCIsInNjcm9sbCIsIngiLCJiYWNrZW5kIiwiZHJhZ1VybCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvdGFibGUvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIEBEZXNjcmlwdHRpb246XHJcbiAqIEB2ZXJzaW9uOlxyXG4gKiBAQXV0aG9yOiByeHpodVxyXG4gKiBARGF0ZTogMjAyMS0wMy0yMyAwODo0NjoyMFxyXG4gKiBATGFzdEVkaXRvcnM6IHJ4emh1XHJcbiAqIEBMYXN0RWRpdFRpbWU6IDIwMjEtMDMtMjMgMTA6MzA6NDJcclxuICovXHJcbmltcG9ydCB7XHJcbiAgQXBwc3RvcmVPdXRsaW5lZCxcclxuICBDaGVja091dGxpbmVkLFxyXG4gIENvbHVtbkhlaWdodE91dGxpbmVkLFxyXG4gIFNlYXJjaE91dGxpbmVkLFxyXG4gIFNvcnRBc2NlbmRpbmdPdXRsaW5lZCxcclxuICBTb3J0RGVzY2VuZGluZ091dGxpbmVkLFxyXG4gIFJlZG9PdXRsaW5lZCxcclxufSBmcm9tIFwiQGFudC1kZXNpZ24vaWNvbnNcIjtcclxuaW1wb3J0IHsgaXNFbXB0eU9iaiB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgU3RvcmUsIHsgUGFnZVN0b3JlLCBTdG9yZVByb3BzIH0gZnJvbSBcIkBiai1uc2MvbXNuXCI7XHJcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSBcIkBiai1uc2MvbXNuL2xpYi91dGlsc1wiO1xyXG5pbXBvcnQge1xyXG4gIEJ1dHRvbixcclxuICBDaGVja2JveCxcclxuICBDaGVja2JveE9wdGlvblR5cGUsXHJcbiAgTWVudSxcclxuICBtZXNzYWdlLFxyXG4gIFBvcG92ZXIsXHJcbiAgU3BhY2UsXHJcbiAgVGFibGUsXHJcbiAgVGFibGVQcm9wcyxcclxuICBUb29sdGlwLFxyXG59IGZyb20gXCJhbnRkXCI7XHJcbmltcG9ydCB7IENvbHVtblR5cGUsIFRhYmxlUGFnaW5hdGlvbkNvbmZpZyB9IGZyb20gXCJhbnRkL2xpYi90YWJsZVwiO1xyXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgRG5kUHJvdmlkZXIgfSBmcm9tIFwicmVhY3QtZG5kXCI7XHJcbmltcG9ydCBCb2R5Um93LCB7IERuZENvbnRleHRUeXBlLCBJQm9keVJvd1Byb3BzIH0gZnJvbSBcIi4uL2NvbW1vbi9Cb2R5Um93XCI7XHJcbmltcG9ydCB0cmVlVXRpbHMgZnJvbSBcIi4uLy4uL3RyZWVVdGlsc1wiO1xyXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL2luZGV4Lm1vZHVsZS5sZXNzXCI7XHJcbmNvbnN0IHsgQm9keVJvd0NvbXBvbmVudCwgSFRNTDVCYWNrZW5kIH0gPSBCb2R5Um93O1xyXG5pbXBvcnQgd2l0aFpoTG9jYWxlIGZyb20gXCIuLi9jb21tb24vd2l0aFpoTG9jYWxlXCI7XHJcbmltcG9ydCB7IFJlc2l6YWJsZSB9IGZyb20gXCJyZWFjdC1yZXNpemFibGVcIjtcclxuaW1wb3J0IFwiLi9yZXNpemUubW9kdWxlLmxlc3NcIjtcclxuaW1wb3J0IHsgZ2V0TGVzcywgZ2V0Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgTm9EYXRhIGZyb20gXCIuLi8uLi9iYXNlL2NvbW1vbi9Ob0RhdGFcIjtcclxuaW1wb3J0IHsgZ2V0U3RvcmFnZSB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgY29uZmlnIGZyb20gXCIuLi8uLi9jb25maWdcIjtcclxuaW1wb3J0IEVsbGlwc2VDZWxsIGZyb20gXCIuLi9jb21tb24vRWxsaXBzZUNlbGxcIjtcclxuaW50ZXJmYWNlIElEcmFnUGFyYW1zIHtcclxuICBpZDogc3RyaW5nIHwgbnVtYmVyO1xyXG4gIGlkczogQXJyYXk8c3RyaW5nIHwgbnVtYmVyPjtcclxuICBwYXJlbnRJZDogc3RyaW5nIHwgbnVtYmVyO1xyXG59XHJcbi8vIGludGVyZmFjZSBTdG9yZVByb3BzIHt9XHJcblxyXG5leHBvcnQgdHlwZSBTdG9yZVR5cGUgPSBcIlBhZ2VTdG9yZVwiIHwgXCJUcmVlU3RvcmVcIiB8IFwiQmFzZVN0b3JlXCI7XHJcblxyXG5pbnRlcmZhY2UgTlNDVGFibGVQYWdpbmF0aW9uIGV4dGVuZHMgVGFibGVQYWdpbmF0aW9uQ29uZmlnIHtcclxuICB0b3RhbEtleT86IHN0cmluZztcclxuICBwYWdlU2l6ZUtleT86IHN0cmluZztcclxuICBjdXJyZW50S2V5Pzogc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgVG9vbEJhclByb3BzIHtcclxuICBzaG93OiBib29sZWFuO1xyXG4gIHRvb2xzPzogQXJyYXk8c3RyaW5nPjtcclxuICBvblRvb2xDbGljaz86IHsgb25SZWZyZXNoPzogYW55OyBvblNvcnQ/OiBhbnkgfTtcclxufVxyXG5pbnRlcmZhY2UgTlNDVGFibGVQcm9wcyBleHRlbmRzIFRhYmxlUHJvcHM8YW55PiB7XHJcbiAgc3RvcmU/OiBTdG9yZVByb3BzO1xyXG4gIHNob3dUb3RhbD86IGJvb2xlYW47IC8vIOaYr+WQpuaYvuekuuaAu+adoeaVsOS/oeaBr++8jOm7mOiupHRydWVcclxuICBkcmFnYWJsZT86IGJvb2xlYW47IC8vIOaYr+WQpuWPr+aLluWKqCwg6buY6K6kZmFsc2VcclxuICBmaWx0ZXJDb2x1bW4/OiBib29sZWFuOyAvLyDmmK/lkKbmlK/mjIHov4fmu6TmmL7npLrooajmoLzliJcsIOm7mOiupHRydWVcclxuICBtb3ZlUm93PzogKHBhcmFtczogSURyYWdQYXJhbXMpID0+IHZvaWQ7IC8vIOaLluaLveWujOaIkOWQjueahOWbnuiwg1xyXG4gIGRyYWdVcmw/OiBzdHJpbmc7IC8vIOS/neWtmOaLluaLveaOkuW6j+eahOaOpeWPo1xyXG4gIHBhZ2luYXRpb24/OiBmYWxzZSB8IE5TQ1RhYmxlUGFnaW5hdGlvbjtcclxuICBhdXRvUGFnaW5hdGlvbj86IGJvb2xlYW47IC8vIOe7hOS7tuaYr+WQpuiHquWKqOWkhOeQhuWIhumhtVxyXG4gIGF1dG9Tb3J0PzogYm9vbGVhbjsgLy/nu4Tku7bmmK/lkKboh6rliqjlpITnkIbmjpLluo9cclxuICBhdXRvT25DaGFuZ2U/OiBib29sZWFuOyAvLyDnu4Tku7bmmK/lkKboh6rliqhvbkNoYW5nZSwgZmFsc2XliJnkuI3lgZrku7vkvZXlpITnkIblhajpg6jkuqTnu5nosIPnlKjmlrlcclxuICByZXNpemVDb2x1bW4/OiBib29sZWFuO1xyXG4gIHNvcnRGaWVsZHM/OiBBcnJheTxzdHJpbmc+OyAvL+mcgOimgeaOkuW6j+eahOWtl+autUluZGV4XHJcbiAgdG9vbGJhcj86IFRvb2xCYXJQcm9wcyB8IGJvb2xlYW47XHJcbiAgYXV0b1NpemU/OiBib29sZWFuO1xyXG4gIHNvcnRTZWFyY2g/OiBib29sZWFuOyAvL+aYr+WQpua3u+WKoOaOkuW6j+afpeivoizpu5jorqR0cnVlXHJcbiAgLy8gdGFibGVTaXplPzogXCJzbWFsbFwiIHwgXCJtaWRkbGVcIiB8IFwiZGVmYXVsdFwiIHwgXCJhdXRvXCI7XHJcbiAgLy8gc2l6ZT86IFwic21hbGxcIiB8IFwibWlkZGxlXCIgfCBcImRlZmF1bHRcIiB8IFwiYXV0b1wiO1xyXG4gIHNob3dSb3dTZWxlY3Rpb24/OiBib29sZWFuO1xyXG4gIHJvd0tleT86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgSU5TQ1RhYmxlUHJvcHMgPSB0eXBlb2YgTlNDVGFibGUuZGVmYXVsdFByb3BzICYgTlNDVGFibGVQcm9wcztcclxuZXhwb3J0IHsgRG5kQ29udGV4dFR5cGUsIElCb2R5Um93UHJvcHMgfTtcclxuXHJcbmNvbnN0IFJlc2l6ZWFibGVUaXRsZSA9IChwcm9wczogYW55KSA9PiB7XHJcbiAgY29uc3QgeyBvblJlc2l6ZSwgd2lkdGgsIC4uLnJlc3RQcm9wcyB9ID0gcHJvcHM7XHJcbiAgcmV0dXJuIChcclxuICAgIDxSZXNpemFibGVcclxuICAgICAgd2lkdGg9e3dpZHRoIHx8IDE1MH1cclxuICAgICAgaGVpZ2h0PXswfVxyXG4gICAgICBvblJlc2l6ZT17b25SZXNpemV9XHJcbiAgICAgIGRyYWdnYWJsZU9wdHM9e3sgZW5hYmxlVXNlclNlbGVjdEhhY2s6IGZhbHNlIH19XHJcbiAgICA+XHJcbiAgICAgIDx0aCB7Li4ucmVzdFByb3BzfSAvPlxyXG4gICAgPC9SZXNpemFibGU+XHJcbiAgKTtcclxufTtcclxuY2xhc3MgTlNDVGFibGUgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8SU5TQ1RhYmxlUHJvcHMsIGFueT4ge1xyXG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XHJcbiAgICBkcmFnYWJsZTogZmFsc2UsXHJcbiAgICBzaG93VG90YWw6IHRydWUsXHJcbiAgICBmaWx0ZXJDb2x1bW46IHRydWUsXHJcbiAgICBkcmFnVXJsOiBcIlwiLFxyXG4gICAgYXV0b1BhZ2luYXRpb246IHRydWUsXHJcbiAgICBhdXRvU29ydDogdHJ1ZSxcclxuICAgIGF1dG9PbkNoYW5nZTogdHJ1ZSxcclxuICAgIHJlc2l6ZUNvbHVtbjogdHJ1ZSxcclxuICAgIHRvb2xiYXI6IHtcclxuICAgICAgc2hvdzogdHJ1ZSxcclxuICAgICAgb25Ub29sQ2xpY2s6IHt9IGFzIGFueSxcclxuICAgIH0gYXMgYW55LFxyXG4gIH07XHJcblxyXG4gIHN0b3JlID0ge30gYXMgU3RvcmVQcm9wcztcclxuICB0aEljb25SZWYgPSBSZWFjdC5jcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XHJcbiAgdGFibGVTZWFyY2hSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG5cclxuICBsaXN0ZW5lcnMgPSB7XHJcbiAgICBvbkJlZm9yZUxvYWQ6IG51bGwsXHJcbiAgICBsb2FkOiBudWxsLFxyXG4gIH07XHJcblxyXG4gIGNvbXBvbmVudHMgPSB7XHJcbiAgICBoZWFkZXI6IHtcclxuICAgICAgY2VsbDogUmVzaXplYWJsZVRpdGxlLFxyXG4gICAgfSxcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgc3VwZXIocHJvcHMpO1xyXG4gICAgbGV0IG1vZGFsID0gcHJvcHMudHlwZSB8fCBcImF1dG9cIjtcclxuICAgIGxldCBzdG9yZVByZWZpeCA9IGdldFN0b3JhZ2UoXCJzdG9yZS1wcmUta2V5XCIpO1xyXG4gICAgbGV0IGF1dG9UeXBlID0gZ2V0U3RvcmFnZShcclxuICAgICAgc3RvcmVQcmVmaXggPyBzdG9yZVByZWZpeCArIFwidGFibGVTaXplXCIgOiBcInRhYmxlU2l6ZVwiXHJcbiAgICApO1xyXG4gICAgYXV0b1R5cGUgPSBhdXRvVHlwZT8uY29udGVudDtcclxuICAgIHRoaXMuc3RhdGUgPSB7XHJcbiAgICAgIGRhdGFTb3VyY2U6IFtdLFxyXG4gICAgICBjb2x1bW5zOiBbXSxcclxuICAgICAgbG9hZGluZzogZmFsc2UsXHJcbiAgICAgIHBhZ2luYXRpb246IHt9LFxyXG4gICAgICBhY3RpdmVJbmRleDogLTEsXHJcbiAgICAgIC8v5pCc57Si5paH5pysXHJcbiAgICAgIHNlYXJjaFRleHQ6IG51bGwsXHJcbiAgICAgIGZpZWxkT3B0aW9uOiBudWxsLFxyXG4gICAgICBzZWFyY2hDb2xvcjogbnVsbCxcclxuICAgICAgY29sczogW10sXHJcbiAgICAgIHNvcnRzOiBbXSxcclxuICAgICAgZmlsdGVyUGFyYW1zOiB7fSxcclxuICAgICAgdGFibGVTaXplOiB0aGlzLnByb3BzLnNpemUgfHwgYXV0b1R5cGUgfHwgXCJkZWZhdWx0XCIsXHJcbiAgICAgIHNvcnRUeXBlOiBcInNpbmdsZVwiLFxyXG4gICAgICBzb3J0ZXI6IFtdLCAvL+iusOW9leW9k+WJjeaOkuW6j+Wtl+autVxyXG4gICAgICBzb3J0SW5mbzoge30sXHJcbiAgICAgIGRlZmF1bHRTb3J0OiB0cnVlLFxyXG4gICAgICBjaGVja0NvbHVtbjogW10sXHJcbiAgICAgIGRlZmF1bHRDaGVjazogdHJ1ZSxcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbXSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogW10sXHJcbiAgICB9O1xyXG4gICAgaWYgKHByb3BzLnN0b3JlIGluc3RhbmNlb2YgU3RvcmUpIHtcclxuICAgICAgdGhpcy5zdG9yZSA9IHByb3BzLnN0b3JlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgeyBsaXN0ZW5lcnM6IGxpc3RlbmVyc1Byb3BzID0ge30sIC4uLnJlc3RTdG9yZSB9ID1cclxuICAgICAgICBwcm9wcy5zdG9yZSB8fCB7fTtcclxuICAgICAgY29uc3Qgc3RvcmVQcm9wcyA9IHtcclxuICAgICAgICBtb2RlbDogXCJtb2RlbFwiLFxyXG4gICAgICAgIGNvbXBvbmVudDogdGhpcyxcclxuICAgICAgICBsaXN0ZW5lcnM6IHtcclxuICAgICAgICAgIG9uQmVmb3JlTG9hZDogKHN0b3JlLCBvcHRpb25zKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiB0cnVlIH0pO1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQcm9wcy5vbkJlZm9yZUxvYWQsIHRoaXMsIFtzdG9yZSwgb3B0aW9uc10pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGRhdGFDaGFuZ2VkOiAoZGF0YSwgbW9kZWxEYXRhLCBzdG9yZSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgcGFnaW5nID0gISh0aGlzLnByb3BzLnBhZ2luYXRpb24gPT09IGZhbHNlKTtcclxuICAgICAgICAgICAgaWYgKHBhZ2luZyAmJiAhdGhpcy5wcm9wcy5kYXRhU291cmNlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlOiBtb2RlbERhdGEsXHJcbiAgICAgICAgICAgICAgICBwYWdpbmF0aW9uOiBzdG9yZS5nZXRQYWdpbmF0aW9uKCksXHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGFjdGl2ZUluZGV4OiAtMSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgZGF0YVNvdXJjZTogbW9kZWxEYXRhLCBsb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUHJvcHMuZGF0YUNoYW5nZWQsIHRoaXMsIFtcclxuICAgICAgICAgICAgICBkYXRhLFxyXG4gICAgICAgICAgICAgIG1vZGVsRGF0YSxcclxuICAgICAgICAgICAgICBzdG9yZSxcclxuICAgICAgICAgICAgICBwYWdpbmcsXHJcbiAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGxvYWQ6IChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSA9PiB7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1Byb3BzLmxvYWQsIHRoaXMsIFtkYXRhLCBtb2RlbERhdGEsIHN0b3JlXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgb25FcnJvckxvYWQ6IChlcnIsIHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUHJvcHMub25FcnJvckxvYWQsIHRoaXMsIFtlcnIsIHJlc3BvbnNlXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZGF0YTogcmVzdFN0b3JlLmRhdGFcclxuICAgICAgICAgID8gcmVzdFN0b3JlLmRhdGFcclxuICAgICAgICAgIDogcHJvcHMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgPyBwcm9wcy5kYXRhU291cmNlXHJcbiAgICAgICAgICA6IG51bGwsXHJcbiAgICAgICAgLi4ucmVzdFN0b3JlLFxyXG4gICAgICAgIGF1dG9Mb2FkOiByZXN0U3RvcmUuYXV0b0xvYWQgPT09IGZhbHNlID8gZmFsc2UgOiB0cnVlLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLnN0b3JlID0gbmV3IFBhZ2VTdG9yZShcclxuICAgICAgICBPYmplY3QuYXNzaWduKHt9LCBzdG9yZVByb3BzLCB7XHJcbiAgICAgICAgICBwYWdpbmF0aW9uOiB7IGN1cnJlbnQ6IDEsIC4uLnRoaXMucHJvcHMucGFnaW5hdGlvbiB9LFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVSZXNpemUgPVxyXG4gICAgKGluZGV4OiBhbnkpID0+XHJcbiAgICAoZTogYW55LCB7IHNpemUgfTogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY29scyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgY29uc3QgbmV4dENvbHVtbnMgPSBbLi4uY29sc107XHJcbiAgICAgIG5leHRDb2x1bW5zW2luZGV4XSA9IHtcclxuICAgICAgICAuLi5uZXh0Q29sdW1uc1tpbmRleF0sXHJcbiAgICAgICAgd2lkdGg6IHNpemUud2lkdGgsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGNvbHM6IG5leHRDb2x1bW5zLFxyXG4gICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyByZXNpemVDb2x1bW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIXJlc2l6ZUNvbHVtbikge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHsgY29sdW1uczogWy4uLnRoaXMucHJvcHMuY29sdW1uc10gfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHsgY29sczogWy4uLnRoaXMucHJvcHMuY29sdW1uc10gfSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBzdG9yZSA9IHRoaXMucHJvcHMuc3RvcmU7XHJcbiAgICBpZiAoc3RvcmUgJiYgc3RvcmUuZGF0YSkge1xyXG4gICAgICB0aGlzLnN0b3JlLnNldERhdGEoc3RvcmUuZGF0YSk7XHJcbiAgICB9XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5saXN0ZW5NZXNzYWdlKTtcclxuICB9XHJcbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XHJcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5saXN0ZW5NZXNzYWdlKTtcclxuICB9XHJcbiAgbGlzdGVuTWVzc2FnZSA9IChldikgPT4ge1xyXG4gICAgY29uc3QgZGF0YSA9IHR5cGVvZiBldi5kYXRhID09PSBcInN0cmluZ1wiID8gSlNPTi5wYXJzZShldi5kYXRhKSA6IGV2LmRhdGE7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgaWYgKGRhdGEuZXZlbnRUeXBlID09IFwiY2hhbmdlVGFibGVTaXplXCIpIHtcclxuICAgICAgY29uc3QgeyBwYXlsb2FkIH0gPSBkYXRhO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgcGF5bG9hZC5zaXplID09IFwiZGVmYXVsdFwiIHx8XHJcbiAgICAgICAgcGF5bG9hZC5zaXplID09IFwic21hbGxcIiB8fFxyXG4gICAgICAgIHBheWxvYWQuc2l6ZSA9PSBcIm1pZGRsZVwiXHJcbiAgICAgICkge1xyXG4gICAgICAgIF90aGlzLnNldFN0YXRlKHsgdGFibGVTaXplOiBwYXlsb2FkLnNpemUgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG4gIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMsIHByZVN0YXRlKSB7XHJcbiAgICBjb25zdCB7IHJlc2l6ZUNvbHVtbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmICghcmVzaXplQ29sdW1uKSB7XHJcbiAgICAgIGlmICh0aGlzLnByb3BzLmNvbHVtbnMgIT09IHByZXZQcm9wcy5jb2x1bW5zKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGNvbHVtbnM6IHRoaXMucHJvcHMuY29sdW1ucyB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHByZVN0YXRlLmNvbHMgIT09IHRoaXMuc3RhdGUuY29scykge1xyXG4gICAgICAgIHRoaXMucmVzZXRDb2x1bW4oKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5wcm9wcy5jb2x1bW5zICE9PSBwcmV2UHJvcHMuY29sdW1ucykge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBjb2xzOiB0aGlzLnByb3BzLmNvbHVtbnMgfSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHByZXZQcm9wcy5zaXplICE9PSB0aGlzLnByb3BzLnNpemUpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgdGFibGVTaXplOiB0aGlzLnByb3BzLnNpemUgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0Q29sdW1uKCkge1xyXG4gICAgY29uc3QgeyBjb2xzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgbmV3Q29sczogYW55ID0gW107XHJcbiAgICBsZXQgY29sc3MgPSBjb2xzIHx8IFtdO1xyXG4gICAgY29sc3MubWFwKChjb2w6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBsZXQgdGVtcCA9IHtcclxuICAgICAgICAuLi5jb2wsXHJcbiAgICAgICAgb25IZWFkZXJDZWxsOiAoY29sdW1uOiB7IHdpZHRoOiBhbnkgfSkgPT4gKHtcclxuICAgICAgICAgIHdpZHRoOiBjb2x1bW4ud2lkdGgsXHJcbiAgICAgICAgICBvblJlc2l6ZTogdGhpcy5oYW5kbGVSZXNpemUoaW5kZXgpLFxyXG4gICAgICAgIH0pLFxyXG4gICAgICB9O1xyXG4gICAgICBuZXdDb2xzLnB1c2godGVtcCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBjb2x1bW5zOiBuZXdDb2xzLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmuIXpmaTpgInkuK3popzoibJcclxuICAgKi9cclxuICBjbGVhclNlbGVjdENvbG9yKCkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGFjdGl2ZUluZGV4OiAtMSB9KTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGFnaW5hdGlvbkJ5U3RvcmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5nZXRQYWdpbmF0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZShwYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGF1dG9PbkNoYW5nZSA9IHRydWUsXHJcbiAgICAgIGF1dG9Tb3J0LFxyXG4gICAgICBhdXRvUGFnaW5hdGlvbixcclxuICAgICAgb25DaGFuZ2UsXHJcbiAgICAgIHN0b3JlLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGZpbHRlclBhcmFtcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IGlzTXVsdGlwbGUgPSBBcnJheS5pc0FycmF5KHNvcnRlcik7XHJcbiAgICBpZiAoYXV0b09uQ2hhbmdlID09PSBmYWxzZSB8fCAhc3RvcmUpIHtcclxuICAgICAgb25DaGFuZ2UgJiYgb25DaGFuZ2UocGFnaW5hdGlvbiwgZmlsdGVycywgc29ydGVyLCBleHRyYSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGhhbmRsZVBhZ2luYXRpb24gPSAoKSA9PiB7XHJcbiAgICAgIGxldCBwYXJhbXMgPSB7fSBhcyB7XHJcbiAgICAgICAgc2l6ZT86IHN0cmluZztcclxuICAgICAgICBwYWdlU2l6ZT86IHN0cmluZztcclxuICAgICAgICBhc2NzPzogc3RyaW5nO1xyXG4gICAgICAgIGRlc2NzPzogc3RyaW5nO1xyXG4gICAgICAgIFtwcm9wTmFtZTogc3RyaW5nXTogc3RyaW5nO1xyXG4gICAgICB9O1xyXG4gICAgICBjb25zdCBwYWdpbmcgPSB0aGlzLmdldFBhZ2luYXRpb25CeVN0b3JlKCkgfHwge307XHJcbiAgICAgIGlmICghaXNFbXB0eU9iaihwYWdpbmF0aW9uKSkge1xyXG4gICAgICAgIGNvbnN0IHAgPSB7XHJcbiAgICAgICAgICBbcGFnaW5nLmN1cnJlbnRLZXkgfHwgXCJjdXJyZW50XCJdOiBwYWdpbmF0aW9uLmN1cnJlbnQsXHJcbiAgICAgICAgICBbcGFnaW5nLnBhZ2VTaXplS2V5IHx8IFwic2l6ZVwiXTogcGFnaW5hdGlvbi5wYWdlU2l6ZSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGFyYW1zLCBwKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgYXNjUGFyYW1zID0gdGhpcy5nZXRTb3J0UGFyYW0oc29ydGVyLCB0cnVlKTtcclxuICAgICAgaWYgKGlzTXVsdGlwbGUpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgc29ydGVyIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKCFpc011bHRpcGxlICYmICFpc0VtcHR5T2JqKHNvcnRlcikpIHtcclxuICAgICAgICBzb3J0ZXIuY29sdW1uICYmXHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgc29ydGVyOiBbc29ydGVyXSwgZGVmYXVsdFNvcnQ6IGZhbHNlIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBzb3J0ZXI6IFtdIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHBhcmFtcyA9IHsgLi4uZmlsdGVyUGFyYW1zLCAuLi5wYXJhbXMsIC4uLmFzY1BhcmFtcyB9O1xyXG4gICAgICBhdXRvU29ydCAmJiB0aGlzLnN0b3JlLnJlbG9hZCh7IHBhcmFtcyB9KTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3Qgb25DaGFuZ2VGbiA9IHRoaXMucHJvcHMub25DaGFuZ2U7XHJcblxyXG4gICAgYXV0b1BhZ2luYXRpb24gJiYgaGFuZGxlUGFnaW5hdGlvbigpO1xyXG4gICAgLy8g55So5oi35Lyg5LqGb25DaGFuZ2Xkv53nlZnnlKjmiLfoh6rkuLvlpITnkIbooajmoLzlj5jljJbnmoTmnYPliptcclxuICAgIGlmIChvbkNoYW5nZUZuKSB7XHJcbiAgICAgIHV0aWxzLmNhbGxiYWNrKG9uQ2hhbmdlRm4sIHRoaXMsIFtwYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRTdG9yZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6I635Y+W5pWw5o2u5qih5Z6L5a+56LGhXHJcbiAgICovXHJcbiAgZ2V0TW9kZWwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5nZXRNb2RlbCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6I+c5Y2V5pCc57Si6L+H5ruk5pi+56S6XHJcbiAgICogQHBhcmFtIHtTdHJpbmd9IHZhbFxyXG4gICAqL1xyXG4gIGhhbmRsZVNlYXJjaCh2YWwsIGZpZWxkT3B0aW9uLCBzZWFyY2hDb2xvcikge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlYXJjaFRleHQ6IHZhbCxcclxuICAgICAgZmllbGRPcHRpb246IGZpZWxkT3B0aW9uLFxyXG4gICAgICBzZWFyY2hDb2xvcjogc2VhcmNoQ29sb3IsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaooeWdl+WIl+ihqOenu+WKqOaOkuW6j1xyXG4gICAqL1xyXG4gIG1vdmVSb3cgPSAoZHJhZ0luZGV4LCBob3ZlckluZGV4LCBkcmFnLCB0YXJnZXQpID0+IHtcclxuICAgIGNvbnN0IF90aGlzID0gdGhpcztcclxuICAgIGxldCBkcmFnTm9kZSA9IGRyYWcucmVjb3JkO1xyXG4gICAgbGV0IHRhcmdldE5vZGUgPSB0YXJnZXQucmVjb3JkO1xyXG4gICAgZHJhZ05vZGUubW92ZUFycmF5KGRyYWdOb2RlLCB0YXJnZXROb2RlKTtcclxuICAgIGxldCBpZHMgPSBkcmFnTm9kZS5wYXJlbnROb2RlLmdldENoaWxkTm9kZUlkcygpO1xyXG4gICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgaWQ6IGRyYWdOb2RlLmlkLFxyXG4gICAgICBwYXJlbnRJZDogZHJhZ05vZGUuYXR0cmlidXRlLnBhcmVudElkLFxyXG4gICAgICBpZHM6IGlkcyxcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMucHJvcHMubW92ZVJvdykge1xyXG4gICAgICB0aGlzLnByb3BzLm1vdmVSb3cocGFyYW1zKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc3RvcmUucmVsb2FkKCk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgZmlsdGVyQ29sdW1uKGNoZWNrZWRWYWx1ZSkge1xyXG4gICAgaWYgKGNoZWNrZWRWYWx1ZS5sZW5ndGggPT0gMCkge1xyXG4gICAgICBtZXNzYWdlLndhcm5pbmcoXCLoh7PlsJHmmL7npLrkuIDliJfvvIFcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGZpbHRlckNvbHVtbnMgPSB0aGlzLnByb3BzLmNvbHVtbnMubWFwKChjb2w6IENvbHVtblR5cGU8e30+KSA9PiB7XHJcbiAgICAgIGNvbnN0IG5ld0NvbCA9IHsgLi4uY29sIH0gYXMgQ29sdW1uVHlwZTx7fT4gJiB7IGluaXRTaG93OiBib29sZWFuIH07XHJcbiAgICAgIGlmIChjaGVja2VkVmFsdWUuaW5jbHVkZXMoY29sLmRhdGFJbmRleCkpIHtcclxuICAgICAgICBuZXdDb2wuaW5pdFNob3cgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5ld0NvbC5pbml0U2hvdyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBuZXdDb2w7XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IHsgcmVzaXplQ29sdW1uIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKCFyZXNpemVDb2x1bW4pIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgY29sdW1uczogZmlsdGVyQ29sdW1ucyxcclxuICAgICAgICBjaGVja0NvbHVtbjogY2hlY2tlZFZhbHVlLFxyXG4gICAgICAgIGRlZmF1bHRDaGVjazogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgY29sczogZmlsdGVyQ29sdW1ucyxcclxuICAgICAgICBjaGVja0NvbHVtbjogY2hlY2tlZFZhbHVlLFxyXG4gICAgICAgIGRlZmF1bHRDaGVjazogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRTb3J0UGFyYW0oc29ydGVyLCBzb3J0U3RhdGUgPSBmYWxzZSkge1xyXG4gICAgY29uc3QgaXNNdWx0aXBsZSA9IEFycmF5LmlzQXJyYXkoc29ydGVyKTtcclxuICAgIGNvbnN0IHsgc29ydFNlYXJjaCA9IHRydWUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIXNvcnRTZWFyY2gpIHtcclxuICAgICAgcmV0dXJuIHt9O1xyXG4gICAgfVxyXG4gICAgbGV0IHNvcnRJbmZvID0ge307XHJcbiAgICBsZXQgb3JkZXJJdGVtcyA9IFtdO1xyXG4gICAgaWYgKCFpc0VtcHR5T2JqKHNvcnRlcikgJiYgIWlzTXVsdGlwbGUgJiYgc29ydGVyLmNvbHVtbikge1xyXG4gICAgICBvcmRlckl0ZW1zID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGNvbHVtbjogc29ydGVyLmNvbHVtbi5maWVsZCB8fCBzb3J0ZXIuY29sdW1uLmRhdGFJbmRleCxcclxuICAgICAgICAgIGFzYzogc29ydGVyLm9yZGVyID09IFwiYXNjZW5kXCIsXHJcbiAgICAgICAgfSxcclxuICAgICAgXTtcclxuICAgICAgaWYgKHNvcnRlci5jb2x1bW4pIHNvcnRJbmZvW3NvcnRlci5jb2x1bW4uZGF0YUluZGV4XSA9IHNvcnRlci5vcmRlcjtcclxuICAgIH0gZWxzZSBpZiAoaXNNdWx0aXBsZSkge1xyXG4gICAgICBzb3J0ZXIuZm9yRWFjaCgodikgPT4ge1xyXG4gICAgICAgIHNvcnRJbmZvW3YuY29sdW1uLmRhdGFJbmRleF0gPSB2Lm9yZGVyO1xyXG4gICAgICAgIGxldCBmaWVsZCA9IHYuY29sdW1uLmZpZWxkIHx8IHYuY29sdW1uLmRhdGFJbmRleDtcclxuICAgICAgICBvcmRlckl0ZW1zLnB1c2goe1xyXG4gICAgICAgICAgY29sdW1uOiBmaWVsZCxcclxuICAgICAgICAgIGFzYzogdi5vcmRlciA9PSBcImFzY2VuZFwiLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmIChzb3J0U3RhdGUpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgc29ydEluZm86IHNvcnRJbmZvLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB7IG9yZGVySXRlbXM6IEpTT04uc3RyaW5naWZ5KG9yZGVySXRlbXMpIH07XHJcbiAgfVxyXG4gIGdldENvbHVtbnMoKSB7XHJcbiAgICBjb25zdCB7IGNvbHVtbnMsIHNvcnRUeXBlLCBzb3J0SW5mbyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgc29ydEZpZWxkcyA9IFtdIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgZGVmYXVsdFNob3dDb2xzID0gY29sdW1ucy5maWx0ZXIoKGNvbHMpID0+IGNvbHMuaW5pdFNob3cgIT09IGZhbHNlKTtcclxuICAgIGNvbnN0IGNvbHMgPSBkZWZhdWx0U2hvd0NvbHMubWFwKChjb2wsIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmIChjb2wuZWxsaXBzaXMgJiYgIWNvbC5yZW5kZXIpIHtcclxuICAgICAgICBjb2wuZWxsaXBzaXMgPSB7XHJcbiAgICAgICAgICBzaG93VGl0bGU6IGZhbHNlLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29sLnJlbmRlciA9ICh0ZXh0KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2IHRpdGxlPXt0ZXh0fSBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInRleHRcIil9IHN0eWxlPXt7IHdpZHRoOiBjb2wud2lkdGggfX0+XHJcbiAgICAgICAgICAgICAge3RleHR9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoc29ydEZpZWxkcy5pbmRleE9mKGNvbC5kYXRhSW5kZXgpID4gLTEpIHtcclxuICAgICAgICBpZiAoc29ydFR5cGUgPT0gXCJzaW5nbGVcIikge1xyXG4gICAgICAgICAgY29sLnNvcnRlciA9IHRydWU7XHJcbiAgICAgICAgICBjb2wuc29ydE9yZGVyID0gc29ydEluZm9bY29sLmRhdGFJbmRleF1cclxuICAgICAgICAgICAgPyBzb3J0SW5mb1tjb2wuZGF0YUluZGV4XVxyXG4gICAgICAgICAgICA6IG51bGw7XHJcbiAgICAgICAgfSBlbHNlIGlmIChzb3J0VHlwZSA9PSBcIm11bHRpcGxlXCIpIHtcclxuICAgICAgICAgIGNvbC5zb3J0ZXIgPSB7IG11bHRpcGxlOiBpbmRleCB9O1xyXG4gICAgICAgICAgY29sLnNvcnRPcmRlciA9IHNvcnRJbmZvW2NvbC5kYXRhSW5kZXhdXHJcbiAgICAgICAgICAgID8gc29ydEluZm9bY29sLmRhdGFJbmRleF1cclxuICAgICAgICAgICAgOiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gY29sO1xyXG4gICAgfSk7XHJcbiAgICBjb2xzLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgaWYgKCFpc0VtcHR5T2JqKGl0ZW0uZmlsdGVyUHJvcHMpKSB7XHJcbiAgICAgICAgbGV0IG9iaiA9IHsgLi4uaXRlbSB9O1xyXG4gICAgICAgIGNvbnN0IHsgdHlwZSwgcHJvcHMsIHNlYXJjaEtleSB9ID0gaXRlbS5maWx0ZXJQcm9wcztcclxuICAgICAgICBsZXQgRGl2ID0gbnVsbDtcclxuICAgICAgICBsZXQgdGV4dCA9IGl0ZW0udGl0bGU7XHJcbiAgICAgICAgRGl2ID0gZ2V0Tm9kZSh0eXBlLCB7XHJcbiAgICAgICAgICBwbGFjZWhvbGRlcjogYOaQnOe0oiR7dGV4dH1gLFxyXG4gICAgICAgICAgLi4ucHJvcHMsXHJcbiAgICAgICAgICByZWY6IHRoaXMudGFibGVTZWFyY2hSZWYsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgb2JqID0ge1xyXG4gICAgICAgICAgZmlsdGVyRHJvcGRvd246ICh7XHJcbiAgICAgICAgICAgIHNldFNlbGVjdGVkS2V5cyxcclxuICAgICAgICAgICAgc2VsZWN0ZWRLZXlzLFxyXG4gICAgICAgICAgICBjb25maXJtLFxyXG4gICAgICAgICAgICBjbGVhckZpbHRlcnMsXHJcbiAgICAgICAgICB9KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInNlYXJjaFwiKX0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwic3BhY2VcIil9PntEaXZ9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8U3BhY2U+XHJcbiAgICAgICAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29uZmlybSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBmaWx0ZXJQYXJhbXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV3RmlsdGVyUGFyYW1zID0geyAuLi5maWx0ZXJQYXJhbXMgfTtcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBrZXkgPSBpdGVtLmZpZWxkIHx8IGl0ZW0uZGF0YUluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgbmV3RmlsdGVyUGFyYW1zW2tleV0gPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU2VhcmNoUmVmLmN1cnJlbnQ/LmdldFZhbHVlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyYW1zOiB7IC4uLm5ld0ZpbHRlclBhcmFtcyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzb3J0UGFyYW0gPSB0aGlzLmdldFNvcnRQYXJhbSh0aGlzLnN0YXRlLnNvcnRlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLmxvYWQoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHsgLi4ubmV3RmlsdGVyUGFyYW1zLCAuLi5zb3J0UGFyYW0gfSxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImJ1dHRvblwiKX1cclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIOafpeivolxyXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvU3BhY2U+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZmlsdGVySWNvbjogKCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gPFNlYXJjaE91dGxpbmVkIC8+O1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLm9iaixcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbHNbaW5kZXhdID0gb2JqO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBjb2xzO1xyXG4gIH1cclxuICByZW5kZXJUb29sQmFyKCkge1xyXG4gICAgbGV0IHsgdGFibGVTaXplLCBjb2x1bW5zLCBzb3J0VHlwZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGxldCB7IGZpbHRlckNvbHVtbiwgY29sdW1uczogY29sTGlzdHMsIHRvb2xiYXIgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHRhYmxlVG9vbCwgc3RvcmVSZXF1ZXN0Q29uZmlnID0ge30gfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHRvb2xzID0gW1wicmVmcmVzaFwiLCBcInNpemVcIiwgXCJzb3J0XCIsIFwiY29sdW1uXCJdO1xyXG4gICAgbGV0IHRvb2xzQ2xpY2sgPSB7fSBhcyBhbnk7XHJcbiAgICBpZiAodG9vbGJhciA9PSB0cnVlKSB7XHJcbiAgICAgIHRvb2xzID0gdG9vbGJhci5vblRvb2xDbGlja1xyXG4gICAgICAgID8gdG9vbGJhci5vblRvb2xDbGlja1xyXG4gICAgICAgIDogW1wicmVmcmVzaFwiLCBcInNpemVcIiwgXCJzb3J0XCIsIFwiY29sdW1uXCJdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdG9vbHMgPSB0b29sYmFyLnRvb2xzXHJcbiAgICAgICAgPyB0b29sYmFyLnRvb2xzXHJcbiAgICAgICAgOiB0YWJsZVRvb2wudG9vbHNcclxuICAgICAgICA/IHRhYmxlVG9vbC50b29sc1xyXG4gICAgICAgIDogdG9vbHM7XHJcbiAgICAgIHRvb2xzQ2xpY2sgPSB0b29sYmFyLm9uVG9vbENsaWNrID8gdG9vbGJhci5vblRvb2xDbGljayA6IHt9O1xyXG4gICAgfVxyXG4gICAgY29uc3Qgc2l6ZUl0ZW0gPSBbXHJcbiAgICAgIHsgdGl0bGU6IFwi5a695p2+XCIsIGtleTogXCJkZWZhdWx0XCIgfSxcclxuICAgICAgeyB0aXRsZTogXCLkuK3nrYlcIiwga2V5OiBcIm1pZGRsZVwiIH0sXHJcbiAgICAgIHsgdGl0bGU6IFwi57Sn5YeRXCIsIGtleTogXCJzbWFsbFwiIH0sXHJcbiAgICBdO1xyXG4gICAgY29uc3Qgc29ydEl0ZW0gPSBbXHJcbiAgICAgIHsgdGl0bGU6IFwi5Y2V5a2X5q615o6S5bqPXCIsIGtleTogXCJzaW5nbGVcIiB9LFxyXG4gICAgICB7IHRpdGxlOiBcIuWkmuWtl+auteaOkuW6j1wiLCBrZXk6IFwibXVsdGlwbGVcIiB9LFxyXG4gICAgXTtcclxuICAgIGNvbnN0IHNvcnRDb250ZW50ID0gKFxyXG4gICAgICA8PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiY290ZW50LXRpdGxlXCIpfVxyXG4gICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgY3Vyc29yOiB0aGlzLnN0YXRlLmRlZmF1bHRTb3J0ID8gXCJub3QtYWxsb3dlZFwiIDogXCJwb2ludGVyXCIsXHJcbiAgICAgICAgICAgIGNvbG9yOiB0aGlzLnN0YXRlLmRlZmF1bHRTb3J0ICYmIFwicmdiYSgwLDAsMCwuNDUpXCIsXHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zdGF0ZS5kZWZhdWx0U29ydCkge1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgc29ydGVyOiBbXSwgc29ydEluZm86IHt9LCBkZWZhdWx0U29ydDogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgY29uc3QgcGFyYW1zID0geyAuLi50aGlzLnN0YXRlLmZpbHRlclBhcmFtcyB9O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLnJlbG9hZCh7IHBhcmFtcyB9KTtcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAg5oGi5aSN6buY6K6k5o6S5bqPXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAge3NvcnRJdGVtLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBrZXk9e2l0ZW0ua2V5fVxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICBzb3J0ZXI6IFtdLFxyXG4gICAgICAgICAgICAgICAgICBzb3J0SW5mbzoge30sXHJcbiAgICAgICAgICAgICAgICAgIHNvcnRUeXBlOiBpdGVtLmtleSxcclxuICAgICAgICAgICAgICAgICAgZGVmYXVsdFNvcnQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7IC4uLnRoaXMuc3RhdGUuZmlsdGVyUGFyYW1zIH07XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLnJlbG9hZCh7IHBhcmFtcyB9KTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3NvcnRUeXBlID09IGl0ZW0ua2V5ID8gKFxyXG4gICAgICAgICAgICAgICAgPGE+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50LXRpZW1cIil9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgd2lkdGg6IDIwIH19PlxyXG4gICAgICAgICAgICAgICAgICAgICAge3NvcnRUeXBlID09IGl0ZW0ua2V5ICYmIDxDaGVja091dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+IHtpdGVtLnRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImNvbnRlbnQtdGllbVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgd2lkdGg6IDIwIH19PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PiB7aXRlbS50aXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9KX1cclxuICAgICAgICB7dGhpcy5zdGF0ZS5zb3J0ZXIubGVuZ3RoID4gMCAmJiAoXHJcbiAgICAgICAgICA8PlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJjb3RlbnQtdGl0bGVcIil9XHJcbiAgICAgICAgICAgICAgc3R5bGU9e3sgY29sb3I6IFwicmdiYSgwLDAsMCwuNDUpXCIgfX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIOW9k+WJjeaOkuW6j1xyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAge3RoaXMuc3RhdGUuc29ydGVyLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImNvbnRlbnQtdGllbVwiKX0ga2V5PXtpbmRleH0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgd2lkdGg6IDIwIH19PlxyXG4gICAgICAgICAgICAgICAgICAgIHtpdGVtLm9yZGVyID09IFwiYXNjZW5kXCIgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICA8U29ydEFzY2VuZGluZ091dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgICAgIDxTb3J0RGVzY2VuZGluZ091dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+IHtpdGVtLmNvbHVtbi50aXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgPC8+XHJcbiAgICAgICAgKX1cclxuICAgICAgPC8+XHJcbiAgICApO1xyXG4gICAgY29uc3Qgc2l6ZUNvbnRlbnQgPSAoXHJcbiAgICAgIDw+XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImNvdGVudC10aXRsZVwiKX0+6KGo5qC85a+G5bqmPC9kaXY+XHJcbiAgICAgICAge3NpemVJdGVtLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBrZXk9e2l0ZW0ua2V5fVxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICB0YWJsZVNpemU6IGl0ZW0ua2V5LFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt0YWJsZVNpemUgPT0gaXRlbS5rZXkgPyAoXHJcbiAgICAgICAgICAgICAgICA8YT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImNvbnRlbnQtdGllbVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyB3aWR0aDogMjAgfX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7dGFibGVTaXplID09IGl0ZW0ua2V5ICYmIDxDaGVja091dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+IHtpdGVtLnRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImNvbnRlbnQtdGllbVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgd2lkdGg6IDIwIH19PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PiB7aXRlbS50aXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9KX1cclxuICAgICAgPC8+XHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IGRlZmF1bHRTaG93Q29scyA9IGNvbHVtbnMuZmlsdGVyKChjb2xzKSA9PiBjb2xzLmluaXRTaG93ICE9PSBmYWxzZSk7XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IChcclxuICAgICAgPENoZWNrYm94Lkdyb3VwXHJcbiAgICAgICAgb25DaGFuZ2U9e3RoaXMuZmlsdGVyQ29sdW1uLmJpbmQodGhpcyl9XHJcbiAgICAgICAgb3B0aW9ucz17Y29sTGlzdHMubWFwKFxyXG4gICAgICAgICAgKGNvbDogQ29sdW1uVHlwZTx7fT4gJiB7IGZpbHRlckNvbHVtbjogYm9vbGVhbjsgZGF0YUluZGV4OiBhbnkgfSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWNvbC5kYXRhSW5kZXgpIHtcclxuICAgICAgICAgICAgICBjb2wuZGF0YUluZGV4ID0gY29sLnRpdGxlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgbGFiZWw6IGNvbC50aXRsZSxcclxuICAgICAgICAgICAgICB2YWx1ZTogY29sLmRhdGFJbmRleCxcclxuICAgICAgICAgICAgICBkaXNhYmxlZDogY29sLmZpbHRlckNvbHVtbiA9PT0gZmFsc2UsXHJcbiAgICAgICAgICAgIH0gYXMgQ2hlY2tib3hPcHRpb25UeXBlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICl9XHJcbiAgICAgICAgLy8gZGVmYXVsdFZhbHVlPXtkZWZhdWx0U2hvd0NvbHMubWFwKChjb2wpID0+IGNvbC5kYXRhSW5kZXgpfVxyXG4gICAgICAgIHZhbHVlPXtcclxuICAgICAgICAgIHRoaXMuc3RhdGUuZGVmYXVsdENoZWNrXHJcbiAgICAgICAgICAgID8gZGVmYXVsdFNob3dDb2xzLm1hcCgoY29sKSA9PiBjb2wuZGF0YUluZGV4KVxyXG4gICAgICAgICAgICA6IHRoaXMuc3RhdGUuY2hlY2tDb2x1bW5cclxuICAgICAgICB9XHJcbiAgICAgID48L0NoZWNrYm94Lkdyb3VwPlxyXG4gICAgKTtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJ0YWJsZS10b29sLWJhclwiKX0+XHJcbiAgICAgICAge3Rvb2xzLmluZGV4T2YoXCJjb2x1bW5cIikgPiAtMSAmJiAoXHJcbiAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGZvbnRTaXplOiAxNCB9fT5cclxuICAgICAgICAgICAgPFBvcG92ZXJcclxuICAgICAgICAgICAgICB0aXRsZT1cIumAieaLqeaYvuekuueahOWIl1wiXHJcbiAgICAgICAgICAgICAgY29udGVudD17Y29udGVudH1cclxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21SaWdodFwiXHJcbiAgICAgICAgICAgICAgdHJpZ2dlcj1cImNsaWNrXCJcclxuICAgICAgICAgICAgICBvdmVybGF5U3R5bGU9e3sgbWluV2lkdGg6IDQxMCwgbWF4V2lkdGg6IDQ1MCB9fVxyXG4gICAgICAgICAgICAgIC8vIGdldFBvcHVwQ29udGFpbmVyPXsoKSA9PiB0aGlzLnRoSWNvblJlZi5jdXJyZW50fVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPEFwcHN0b3JlT3V0bGluZWQgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJhcHAtc3RvcmUtaWNvblwiKX0gLz5cclxuICAgICAgICAgICAgPC9Qb3BvdmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgICB7dG9vbHMuaW5kZXhPZihcInNvcnRcIikgPiAtMSAmJiAoXHJcbiAgICAgICAgICA8ZGl2IHN0eWxlPXt7IG1hcmdpblJpZ2h0OiA4LCBmb250U2l6ZTogMTQgfX0+XHJcbiAgICAgICAgICAgIDxQb3BvdmVyIHBsYWNlbWVudD1cImJvdHRvbVwiIGNvbnRlbnQ9e3NvcnRDb250ZW50fSB0cmlnZ2VyPVwiY2xpY2tcIj5cclxuICAgICAgICAgICAgICA8U29ydEFzY2VuZGluZ091dGxpbmVkIC8+XHJcbiAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICl9XHJcbiAgICAgICAge3Rvb2xzLmluZGV4T2YoXCJzaXplXCIpID4gLTEgJiYgKFxyXG4gICAgICAgICAgPGRpdiBzdHlsZT17eyBtYXJnaW5SaWdodDogOCwgZm9udFNpemU6IDE0IH19PlxyXG4gICAgICAgICAgICA8UG9wb3ZlciBwbGFjZW1lbnQ9XCJib3R0b21cIiBjb250ZW50PXtzaXplQ29udGVudH0gdHJpZ2dlcj1cImNsaWNrXCI+XHJcbiAgICAgICAgICAgICAgPENvbHVtbkhlaWdodE91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICl9XHJcbiAgICAgICAge3Rvb2xzLmluZGV4T2YoXCJyZWZyZXNoXCIpID4gLTEgJiYgKFxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBzdHlsZT17eyBtYXJnaW5SaWdodDogOCwgZm9udFNpemU6IDE0LCBjdXJzb3I6IFwicG9pbnRlclwiIH19XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7IC4uLnRoaXMuc3RhdGUuZmlsdGVyUGFyYW1zIH07XHJcbiAgICAgICAgICAgICAgaWYgKHRvb2xzQ2xpY2sub25SZWZyZXNoKSB7XHJcbiAgICAgICAgICAgICAgICB0b29sc0NsaWNrLm9uUmVmcmVzaCgpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLmxvYWQoeyBwYXJhbXMgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8UmVkb091dGxpbmVkIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXRlLnNlbGVjdGVkUm93S2V5cztcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRSb3dEYXRhcygpIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXRlLnNlbGVjdGVkUm93RGF0YXM7XHJcbiAgfVxyXG4gIHJlc2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlbGVjdGVkUm93S2V5czogW10sXHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXM6IFtdLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHNldFNlbGVjdGVkUm93S2V5cyhkYXRhOiBBcnJheTxTdHJpbmcgfCBOdW1iZXI+KSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBkYXRhLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHNldFNlbGVjdGVkUm93RGF0YXMoZGF0YTogQXJyYXk8T2JqZWN0Pikge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXM6IGRhdGEsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgcm93U2VsZWN0aW9uT25TZWxlY3QocmVjb3JkOiBhbnksIHNlbGVjdGVkOiBhbnkpIHtcclxuICAgIGNvbnN0IHsgc2VsZWN0ZWRSb3dLZXlzLCBzZWxlY3RlZFJvd0RhdGFzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IHsgcm93S2V5ID0gXCJpZFwiIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IG5ld1NlbGVjdGVkUm93S2V5cyA9IFsuLi5zZWxlY3RlZFJvd0tleXNdO1xyXG4gICAgbGV0IG5ld1NlbGVjdGVkUm93RGF0YXMgPSBbLi4uc2VsZWN0ZWRSb3dEYXRhc107XHJcbiAgICBpZiAoc2VsZWN0ZWQpIHtcclxuICAgICAgbmV3U2VsZWN0ZWRSb3dLZXlzID0gWy4uLm5ld1NlbGVjdGVkUm93S2V5cywgcmVjb3JkW3Jvd0tleV1dO1xyXG4gICAgICBuZXdTZWxlY3RlZFJvd0RhdGFzID0gWy4uLm5ld1NlbGVjdGVkUm93RGF0YXMsIHJlY29yZF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzZWxlY3RlZFJvd0tleXMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoaXRlbSA9PT0gcmVjb3JkW3Jvd0tleV0pIHtcclxuICAgICAgICAgIG5ld1NlbGVjdGVkUm93S2V5cy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoaXRlbVtyb3dLZXldID09PSByZWNvcmRbcm93S2V5XSkge1xyXG4gICAgICAgICAgbmV3U2VsZWN0ZWRSb3dEYXRhcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBuZXdTZWxlY3RlZFJvd0tleXMsXHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXM6IG5ld1NlbGVjdGVkUm93RGF0YXMsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgcm93U2VsZWN0aW9uT25TZWxlY3RBbGwoc2VsZWN0ZWQ6IGFueSwgc2VsZWN0ZWRSb3dzOiBhbnksIGNoYW5nZVJvd3M6IGFueSkge1xyXG4gICAgY29uc3QgeyBzZWxlY3RlZFJvd0tleXMsIHNlbGVjdGVkUm93RGF0YXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IHJvd0tleSA9IFwiaWRcIiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBuZXdpZHM6IGFueSA9IFtdO1xyXG4gICAgbGV0IG5ld2RhdGFzOiBhbnkgPSBbXTtcclxuICAgIGlmIChjaGFuZ2VSb3dzLmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IGNoYW5nZUlkcyA9IGNoYW5nZVJvd3MubWFwKChpdGVtOiBhbnkpID0+IGl0ZW1bcm93S2V5XSk7XHJcbiAgICAgIGlmIChzZWxlY3RlZCkge1xyXG4gICAgICAgIG5ld2lkcyA9IFsuLi5zZWxlY3RlZFJvd0tleXMsIC4uLmNoYW5nZUlkc107XHJcbiAgICAgICAgbmV3ZGF0YXMgPSBbLi4uc2VsZWN0ZWRSb3dEYXRhcywgLi4uY2hhbmdlUm93c107XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgc2VsZWN0ZWRSb3dLZXlzLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoY2hhbmdlSWRzLmluZGV4T2YoaXRlbSkgPT0gLTEpIHtcclxuICAgICAgICAgICAgbmV3aWRzLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgc2VsZWN0ZWRSb3dEYXRhcy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGNoYW5nZUlkcy5pbmRleE9mKGl0ZW1bcm93S2V5XSkgPT0gLTEpIHtcclxuICAgICAgICAgICAgbmV3ZGF0YXMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbmV3aWRzID0gWy4uLnNlbGVjdGVkUm93S2V5c107XHJcbiAgICAgIG5ld2RhdGFzID0gWy4uLnNlbGVjdGVkUm93RGF0YXNdO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlbGVjdGVkUm93S2V5czogWy4uLm5ld2lkc10sXHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXM6IFsuLi5uZXdkYXRhc10sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgcmVuZGVyKCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcyxcclxuICAgICAge1xyXG4gICAgICAgIGxvYWRpbmcsXHJcbiAgICAgICAgZGF0YVNvdXJjZSxcclxuICAgICAgICBwYWdpbmF0aW9uID0ge30sXHJcbiAgICAgICAgc2VhcmNoVGV4dCxcclxuICAgICAgICBmaWVsZE9wdGlvbixcclxuICAgICAgICBzZWFyY2hDb2xvcixcclxuICAgICAgICB0YWJsZVNpemUsXHJcbiAgICAgIH0gPSB0aGlzLnN0YXRlLFxyXG4gICAgICBwcm9wcyA9IHV0aWxzLm9taXQoXHJcbiAgICAgICAgdGhpcy5wcm9wcyxcclxuICAgICAgICBbXHJcbiAgICAgICAgICBcInN0b3JlXCIsXHJcbiAgICAgICAgICBcIm9uQ2hhbmdlXCIsXHJcbiAgICAgICAgICBcImNvbHVtbnNcIixcclxuICAgICAgICAgIFwicmVzZXRDb2x1bW5cIixcclxuICAgICAgICAgIFwidG9vbGJhclwiLFxyXG4gICAgICAgICAgXCJzb3J0RmllbGRzXCIsXHJcbiAgICAgICAgICBcImZpbHRlckNvbHVtblwiLFxyXG4gICAgICAgICAgXCJzb3J0U2VhcmNoXCIsXHJcbiAgICAgICAgICBcInNob3dSb3dTZWxlY3Rpb25cIixcclxuICAgICAgICBdLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHJvd0tleTogXCJpZFwiLFxyXG4gICAgICAgICAgY2xpY2tDaGFuZ2VDb2xvcjogZmFsc2UsXHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgaWYgKHByb3BzLnBhZ2luYXRpb24gIT09IGZhbHNlKSB7XHJcbiAgICAgIHByb3BzLnBhZ2luYXRpb24gPSB7XHJcbiAgICAgICAgcG9zaXRpb246IFtcImJvdHRvbVJpZ2h0XCJdLFxyXG4gICAgICAgIHNob3dTaXplQ2hhbmdlcjogdHJ1ZSxcclxuICAgICAgICBzaG93UXVpY2tKdW1wZXI6IHRydWUsXHJcbiAgICAgICAgLi4ucHJvcHMucGFnaW5hdGlvbixcclxuICAgICAgICAuLi5wYWdpbmF0aW9uLFxyXG4gICAgICB9O1xyXG4gICAgICBpZiAocHJvcHMuc2hvd1RvdGFsID09IHRydWUpIHtcclxuICAgICAgICBwcm9wcy5wYWdpbmF0aW9uLnNob3dUb3RhbCA9IGZ1bmN0aW9uICh0b3RhbCwgW2Zyb20sIHRvXSkge1xyXG4gICAgICAgICAgLy8gcmV0dXJuIFwi5pi+56S6IFwiICsgZnJvbSArIFwiIC0gXCIgKyB0byArIFwi5p2h77yM5YWxIFwiICsgdG90YWwgKyBcIiDmnaFcIjtcclxuICAgICAgICAgIHJldHVybiBcIuWFsSBcIiArIHRvdGFsICsgXCIg5p2hXCI7XHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcHJvcHMub25DaGFuZ2UgPSBmdW5jdGlvbiAocGFnaW5hdGlvbiwgZmlsdGVycywgc29ydGVyLCBleHRyYSkge1xyXG4gICAgICBfdGhpcy5vbkNoYW5nZShwYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhKTtcclxuICAgIH07XHJcbiAgICBpZiAocHJvcHMuY2xpY2tDaGFuZ2VDb2xvcikge1xyXG4gICAgICBjb25zdCBvblJvd0ZuID0gcHJvcHMub25Sb3c7XHJcbiAgICAgIHByb3BzLm9uUm93ID0gZnVuY3Rpb24gKHJlY29yZCwgaW5kZXgpIHtcclxuICAgICAgICB2YXIgY3VzdG9tID0gb25Sb3dGbiA/IG9uUm93Rm4ocmVjb3JkLCBpbmRleCkgOiB7fTtcclxuICAgICAgICBjb25zdCBvbkNsaWNrRm4gPSBjdXN0b20ub25DbGljaztcclxuICAgICAgICBjdXN0b20ub25DbGljayA9IChldmVudCkgPT4ge1xyXG4gICAgICAgICAgX3RoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICBhY3RpdmVJbmRleDogaW5kZXgsIC8v6I635Y+W54K55Ye76KGM55qE57Si5byVXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKG9uQ2xpY2tGbiwgX3RoaXMsIFtldmVudF0pO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIGN1c3RvbTtcclxuICAgICAgfTtcclxuICAgICAgcHJvcHMucm93Q2xhc3NOYW1lID0gZnVuY3Rpb24gKHJlY29yZCwgaW5kZXgpIHtcclxuICAgICAgICByZXR1cm4gaW5kZXggPT09IF90aGlzLnN0YXRlLmFjdGl2ZUluZGV4XHJcbiAgICAgICAgICA/IGAke3N0eWxlcy5jbGlja1Jvd1N0eWxlfWBcclxuICAgICAgICAgIDogXCJcIjtcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGxldCBuZXdEYXRhU291cmNlID0gW107XHJcbiAgICBpZiAoc2VhcmNoVGV4dCkge1xyXG4gICAgICBjb25zdCBkYXRhID0gdHJlZVV0aWxzLmdldFNlYXJjaE1lbnVEYXRhcyhcclxuICAgICAgICB0aGlzLFxyXG4gICAgICAgIHNlYXJjaFRleHQsXHJcbiAgICAgICAgZmllbGRPcHRpb24sXHJcbiAgICAgICAgc2VhcmNoQ29sb3JcclxuICAgICAgKTtcclxuICAgICAgbmV3RGF0YVNvdXJjZSA9IGRhdGEudHJlZURhdGFzO1xyXG4gICAgICBwcm9wcy5leHBhbmRlZFJvd0tleXMgPSBkYXRhLm9wZW5LZXlzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbmV3RGF0YVNvdXJjZSA9IGRhdGFTb3VyY2U7XHJcbiAgICB9XHJcbiAgICBwcm9wcy5zdG9yZSA9IHByb3BzLnN0b3JlIHx8IHt9O1xyXG4gICAgcHJvcHMuc3RvcmUuYXV0b0xvYWQgPSBwcm9wcy5zdG9yZS5hdXRvTG9hZCA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWU7XHJcbiAgICBjb25zdCB7IGRyYWdhYmxlIH0gPSBfdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGRyYWdhYmxlUHJvcHMgPVxyXG4gICAgICBkcmFnYWJsZSA9PT0gdHJ1ZVxyXG4gICAgICAgID8ge1xyXG4gICAgICAgICAgICBjb21wb25lbnRzOiBCb2R5Um93Q29tcG9uZW50LFxyXG4gICAgICAgICAgICBvblJvdzogKHJlY29yZCwgaW5kZXgpID0+ICh7XHJcbiAgICAgICAgICAgICAgaW5kZXgsXHJcbiAgICAgICAgICAgICAgcmVjb3JkLFxyXG4gICAgICAgICAgICAgIG1vdmVSb3c6IHRoaXMubW92ZVJvdyxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgOiB7fTtcclxuICAgIGxldCB7IHJlc2l6ZUNvbHVtbiB9ID0gdGhpcy5wcm9wcztcclxuXHJcbiAgICBjb25zdCByZXNpemVQcm9wcyA9XHJcbiAgICAgIHJlc2l6ZUNvbHVtbiA9PT0gdHJ1ZSA/IHsgY29tcG9uZW50czogdGhpcy5jb21wb25lbnRzIH0gOiBudWxsO1xyXG4gICAgY29uc3QgeyB0YWJsZVRvb2wgfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHRvb2xGbGFnID0gdHJ1ZTtcclxuICAgIGxldCB0b29scHJvcHMgPVxyXG4gICAgICB0aGlzLnByb3BzLnRvb2xiYXIgPT09IGZhbHNlIHx8IHRoaXMucHJvcHMudG9vbGJhcj8uc2hvdyA9PT0gZmFsc2VcclxuICAgICAgICA/IGZhbHNlXHJcbiAgICAgICAgOiB0cnVlO1xyXG4gICAgaWYgKCF0b29scHJvcHMpIHtcclxuICAgICAgdG9vbEZsYWcgPSB0b29scHJvcHM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0b29sRmxhZyA9IHRhYmxlVG9vbC5zaG93ID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnByb3BzLnNob3dSb3dTZWxlY3Rpb24pIHtcclxuICAgICAgY29uc3QgeyByb3dTZWxlY3Rpb24gPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgcHJvcHMgPSB7XHJcbiAgICAgICAgLi4ucHJvcHMsXHJcbiAgICAgICAgcm93U2VsZWN0aW9uOiB7XHJcbiAgICAgICAgICBzZWxlY3RlZFJvd0tleXM6IHRoaXMuc3RhdGUuc2VsZWN0ZWRSb3dLZXlzLFxyXG4gICAgICAgICAgb25TZWxlY3Q6IHRoaXMucm93U2VsZWN0aW9uT25TZWxlY3QuYmluZCh0aGlzKSxcclxuICAgICAgICAgIG9uU2VsZWN0QWxsOiB0aGlzLnJvd1NlbGVjdGlvbk9uU2VsZWN0QWxsLmJpbmQodGhpcyksXHJcbiAgICAgICAgICBjb2x1bW5XaWR0aDogNDAsXHJcbiAgICAgICAgICAuLi5yb3dTZWxlY3Rpb24sXHJcbiAgICAgICAgfSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGNvbnN0IERlZmF1bHRUYWJsZSA9IChcclxuICAgICAgPD5cclxuICAgICAgICB7dG9vbEZsYWcgJiYgdGhpcy5yZW5kZXJUb29sQmFyKCl9XHJcbiAgICAgICAgPFRhYmxlXHJcbiAgICAgICAgICBjaGlsZHJlbkNvbHVtbk5hbWU9XCJjaGlsZE5vZGVzXCJcclxuICAgICAgICAgIHNoZWl0ZW1cclxuICAgICAgICAgIGRhdGFTb3VyY2U9e25ld0RhdGFTb3VyY2V9XHJcbiAgICAgICAgICBjb2x1bW5zPXt0aGlzLmdldENvbHVtbnMoKX1cclxuICAgICAgICAgIGxvYWRpbmc9e2xvYWRpbmd9XHJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1tcIm5zYy10YWJsZVwiXX1cclxuICAgICAgICAgIGxvY2FsZT17e1xyXG4gICAgICAgICAgICBlbXB0eVRleHQ6IDxOb0RhdGEgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJ0YWJsZS1ub2RhdGFcIil9IC8+LFxyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIHNjcm9sbD17eyB4OiBcIm1heC1jb250ZW50XCIgfX1cclxuICAgICAgICAgIHsuLi5yZXNpemVQcm9wc31cclxuICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICAgIHsuLi5kcmFnYWJsZVByb3BzfVxyXG4gICAgICAgICAgc2l6ZT17dGFibGVTaXplfVxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvPlxyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gZHJhZ2FibGUgPT09IHRydWUgPyAoXHJcbiAgICAgIDxEbmRQcm92aWRlciBiYWNrZW5kPXtIVE1MNUJhY2tlbmR9PntEZWZhdWx0VGFibGV9PC9EbmRQcm92aWRlcj5cclxuICAgICkgOiAoXHJcbiAgICAgIERlZmF1bHRUYWJsZVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IHdpdGhaaExvY2FsZShOU0NUYWJsZSk7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUNFQSxnQkFBZ0IsRUFDaEJDLGFBQWEsRUFDYkMsb0JBQW9CLEVBQ3BCQyxjQUFjLEVBQ2RDLHFCQUFxQixFQUNyQkMsc0JBQXNCLEVBQ3RCQyxZQUFZLFFBQ1AsbUJBQW1CO0FBQzFCLFNBQVNDLFVBQVUsUUFBUSxtQkFBbUI7QUFDOUMsT0FBT0MsS0FBSyxJQUFJQyxTQUFTLFFBQW9CLGFBQWE7QUFDMUQsU0FBU0MsS0FBSyxRQUFRLHVCQUF1QjtBQWM3QyxPQUFPLEtBQUtDLEtBQUssTUFBTSxPQUFPO0FBQzlCLFNBQVNDLFdBQVcsUUFBUSxXQUFXO0FBQ3ZDLE9BQU9DLE9BQU8sSUFBSUMsY0FBYyxFQUFFQyxhQUFhLFFBQVEsbUJBQW1CO0FBQzFFLE9BQU9DLFNBQVMsTUFBTSxpQkFBaUI7QUFDdkMsT0FBT0MsTUFBTSxNQUFNLHFCQUFxQjtBQUN4QyxNQUFNO0VBQUVDLGdCQUFnQjtFQUFFQztBQUFhLENBQUMsR0FBR04sT0FBTztBQUNsRCxPQUFPTyxZQUFZLE1BQU0sd0JBQXdCO0FBQ2pELFNBQVNDLFNBQVMsUUFBUSxpQkFBaUI7QUFDM0MsT0FBTyxzQkFBc0I7QUFDN0IsU0FBU0MsT0FBTyxFQUFFQyxPQUFPLFFBQVEsYUFBYTtBQUM5QyxPQUFPQyxNQUFNLE1BQU0sMEJBQTBCO0FBQzdDLFNBQVNDLFVBQVUsUUFBUSxtQkFBbUI7QUFDOUMsT0FBT0MsTUFBTSxNQUFNLGNBQWM7O0FBT2pDOztBQXNDQSxTQUFTWixjQUFjLEVBQUVDLGFBQWE7QUFFdEMsTUFBTVksZUFBZSxHQUFJQyxLQUFVLElBQUs7RUFDdEMsTUFBTTtNQUFFQyxRQUFRO01BQUVDO0lBQW9CLENBQUMsR0FBR0YsS0FBSztJQUFuQkcsU0FBUyxHQUFBQyx3QkFBQSxDQUFLSixLQUFLLEVBQUFLLFNBQUE7RUFDL0Msb0JBQ0V0QixLQUFBLENBQUF1QixhQUFBLENBQUNiLFNBQVM7SUFDUlMsS0FBSyxFQUFFQSxLQUFLLElBQUksR0FBSTtJQUNwQkssTUFBTSxFQUFFLENBQUU7SUFDVk4sUUFBUSxFQUFFQSxRQUFTO0lBQ25CTyxhQUFhLEVBQUU7TUFBRUMsb0JBQW9CLEVBQUU7SUFBTTtFQUFFLGdCQUUvQzFCLEtBQUEsQ0FBQXVCLGFBQUEsT0FBUUgsU0FBWSxDQUNYLENBQUM7QUFFaEIsQ0FBQztBQUNELE1BQU1PLFFBQVEsU0FBUzNCLEtBQUssQ0FBQzRCLFNBQVMsQ0FBc0I7RUErQjFEQyxXQUFXQSxDQUFDWixLQUFLLEVBQUU7SUFBQSxJQUFBYSxTQUFBO0lBQ2pCLEtBQUssQ0FBQ2IsS0FBSyxDQUFDO0lBQUNjLGVBQUEsZ0JBaEJQLENBQUMsQ0FBQztJQUFBQSxlQUFBLGlDQUNFL0IsS0FBSyxDQUFDZ0MsU0FBUyxDQUFpQixDQUFDO0lBQUFELGVBQUEsc0NBQzVCL0IsS0FBSyxDQUFDZ0MsU0FBUyxDQUFNLENBQUM7SUFBQUQsZUFBQSxvQkFFM0I7TUFDVkUsWUFBWSxFQUFFLElBQUk7TUFDbEJDLElBQUksRUFBRTtJQUNSLENBQUM7SUFBQUgsZUFBQSxxQkFFWTtNQUNYSSxNQUFNLEVBQUU7UUFDTkMsSUFBSSxFQUFFcEI7TUFDUjtJQUNGLENBQUM7SUFBQWUsZUFBQSx1QkEyRkVNLEtBQVUsSUFDWCxDQUFDQyxDQUFNLEVBQUFDLElBQUEsS0FBb0I7TUFBQSxJQUFsQjtRQUFFQztNQUFVLENBQUMsR0FBQUQsSUFBQTtNQUNwQixNQUFNO1FBQUVFO01BQUssQ0FBQyxHQUFHLElBQUksQ0FBQ0MsS0FBSztNQUMzQixNQUFNQyxXQUFXLEdBQUcsQ0FBQyxHQUFHRixJQUFJLENBQUM7TUFDN0JFLFdBQVcsQ0FBQ04sS0FBSyxDQUFDLEdBQUFPLGFBQUEsQ0FBQUEsYUFBQSxLQUNiRCxXQUFXLENBQUNOLEtBQUssQ0FBQztRQUNyQmxCLEtBQUssRUFBRXFCLElBQUksQ0FBQ3JCO01BQUssRUFDbEI7TUFDRCxJQUFJLENBQUMwQixRQUFRLENBQUM7UUFDWkosSUFBSSxFQUFFRTtNQUNSLENBQUMsQ0FBQztJQUNKLENBQUM7SUFBQVosZUFBQSx3QkFrQmNlLEVBQUUsSUFBSztNQUN0QixNQUFNQyxJQUFJLEdBQUcsT0FBT0QsRUFBRSxDQUFDQyxJQUFJLEtBQUssUUFBUSxHQUFHQyxJQUFJLENBQUNDLEtBQUssQ0FBQ0gsRUFBRSxDQUFDQyxJQUFJLENBQUMsR0FBR0QsRUFBRSxDQUFDQyxJQUFJO01BQ3hFLElBQUlHLEtBQUssR0FBRyxJQUFJO01BQ2hCLElBQUlILElBQUksQ0FBQ0ksU0FBUyxJQUFJLGlCQUFpQixFQUFFO1FBQ3ZDLE1BQU07VUFBRUM7UUFBUSxDQUFDLEdBQUdMLElBQUk7UUFDeEIsSUFDRUssT0FBTyxDQUFDWixJQUFJLElBQUksU0FBUyxJQUN6QlksT0FBTyxDQUFDWixJQUFJLElBQUksT0FBTyxJQUN2QlksT0FBTyxDQUFDWixJQUFJLElBQUksUUFBUSxFQUN4QjtVQUNBVSxLQUFLLENBQUNMLFFBQVEsQ0FBQztZQUFFUSxTQUFTLEVBQUVELE9BQU8sQ0FBQ1o7VUFBSyxDQUFDLENBQUM7UUFDN0M7TUFDRjtJQUNGLENBQUM7SUE4SEQ7QUFDRjtBQUNBO0lBRkVULGVBQUEsa0JBR1UsQ0FBQ3VCLFNBQVMsRUFBRUMsVUFBVSxFQUFFQyxJQUFJLEVBQUVDLE1BQU0sS0FBSztNQUNqRCxNQUFNUCxLQUFLLEdBQUcsSUFBSTtNQUNsQixJQUFJUSxRQUFRLEdBQUdGLElBQUksQ0FBQ0csTUFBTTtNQUMxQixJQUFJQyxVQUFVLEdBQUdILE1BQU0sQ0FBQ0UsTUFBTTtNQUM5QkQsUUFBUSxDQUFDRyxTQUFTLENBQUNILFFBQVEsRUFBRUUsVUFBVSxDQUFDO01BQ3hDLElBQUlFLEdBQUcsR0FBR0osUUFBUSxDQUFDSyxVQUFVLENBQUNDLGVBQWUsQ0FBQyxDQUFDO01BQy9DLElBQUlDLE1BQU0sR0FBRztRQUNYQyxFQUFFLEVBQUVSLFFBQVEsQ0FBQ1EsRUFBRTtRQUNmQyxRQUFRLEVBQUVULFFBQVEsQ0FBQ1UsU0FBUyxDQUFDRCxRQUFRO1FBQ3JDTCxHQUFHLEVBQUVBO01BQ1AsQ0FBQztNQUVELElBQUksSUFBSSxDQUFDN0MsS0FBSyxDQUFDb0QsT0FBTyxFQUFFO1FBQ3RCLElBQUksQ0FBQ3BELEtBQUssQ0FBQ29ELE9BQU8sQ0FBQ0osTUFBTSxDQUFDO01BQzVCLENBQUMsTUFBTTtRQUNMLElBQUksQ0FBQ0ssS0FBSyxDQUFDQyxNQUFNLENBQUMsQ0FBQztNQUNyQjtJQUNGLENBQUM7SUFuUkMsSUFBSUMsS0FBSyxHQUFHdkQsS0FBSyxDQUFDd0QsSUFBSSxJQUFJLE1BQU07SUFDaEMsSUFBSUMsV0FBVyxHQUFHNUQsVUFBVSxDQUFDLGVBQWUsQ0FBQztJQUM3QyxJQUFJNkQsUUFBUSxHQUFHN0QsVUFBVSxDQUN2QjRELFdBQVcsR0FBR0EsV0FBVyxHQUFHLFdBQVcsR0FBRyxXQUM1QyxDQUFDO0lBQ0RDLFFBQVEsSUFBQTdDLFNBQUEsR0FBRzZDLFFBQVEsY0FBQTdDLFNBQUEsdUJBQVJBLFNBQUEsQ0FBVThDLE9BQU87SUFDNUIsSUFBSSxDQUFDbEMsS0FBSyxHQUFHO01BQ1htQyxVQUFVLEVBQUUsRUFBRTtNQUNkQyxPQUFPLEVBQUUsRUFBRTtNQUNYQyxPQUFPLEVBQUUsS0FBSztNQUNkQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO01BQ2RDLFdBQVcsRUFBRSxDQUFDLENBQUM7TUFDZjtNQUNBQyxVQUFVLEVBQUUsSUFBSTtNQUNoQkMsV0FBVyxFQUFFLElBQUk7TUFDakJDLFdBQVcsRUFBRSxJQUFJO01BQ2pCM0MsSUFBSSxFQUFFLEVBQUU7TUFDUjRDLEtBQUssRUFBRSxFQUFFO01BQ1RDLFlBQVksRUFBRSxDQUFDLENBQUM7TUFDaEJqQyxTQUFTLEVBQUUsSUFBSSxDQUFDcEMsS0FBSyxDQUFDdUIsSUFBSSxJQUFJbUMsUUFBUSxJQUFJLFNBQVM7TUFDbkRZLFFBQVEsRUFBRSxRQUFRO01BQ2xCQyxNQUFNLEVBQUUsRUFBRTtNQUFFO01BQ1pDLFFBQVEsRUFBRSxDQUFDLENBQUM7TUFDWkMsV0FBVyxFQUFFLElBQUk7TUFDakJDLFdBQVcsRUFBRSxFQUFFO01BQ2ZDLFlBQVksRUFBRSxJQUFJO01BQ2xCQyxlQUFlLEVBQUUsRUFBRTtNQUNuQkMsZ0JBQWdCLEVBQUU7SUFDcEIsQ0FBQztJQUNELElBQUk3RSxLQUFLLENBQUNxRCxLQUFLLFlBQVl6RSxLQUFLLEVBQUU7TUFDaEMsSUFBSSxDQUFDeUUsS0FBSyxHQUFHckQsS0FBSyxDQUFDcUQsS0FBSztJQUMxQixDQUFDLE1BQU07TUFDTCxNQUFBeUIsS0FBQSxHQUNFOUUsS0FBSyxDQUFDcUQsS0FBSyxJQUFJLENBQUMsQ0FBQztRQURiO1VBQUUwQixTQUFTLEVBQUVDLGNBQWMsR0FBRyxDQUFDO1FBQWdCLENBQUMsR0FBQUYsS0FBQTtRQUFYRyxTQUFTLEdBQUE3RSx3QkFBQSxDQUFBMEUsS0FBQSxFQUFBSSxVQUFBO01BRXBELE1BQU1DLFVBQVUsR0FBQXhELGFBQUEsQ0FBQUEsYUFBQTtRQUNkeUQsS0FBSyxFQUFFLE9BQU87UUFDZEMsU0FBUyxFQUFFLElBQUk7UUFDZk4sU0FBUyxFQUFFO1VBQ1QvRCxZQUFZLEVBQUVBLENBQUNxQyxLQUFLLEVBQUVpQyxPQUFPLEtBQUs7WUFDaEMsSUFBSSxDQUFDMUQsUUFBUSxDQUFDO2NBQUVrQyxPQUFPLEVBQUU7WUFBSyxDQUFDLENBQUM7WUFDaENoRixLQUFLLENBQUN5RyxRQUFRLENBQUNQLGNBQWMsQ0FBQ2hFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQ3FDLEtBQUssRUFBRWlDLE9BQU8sQ0FBQyxDQUFDO1VBQ3JFLENBQUM7VUFDREUsV0FBVyxFQUFFQSxDQUFDMUQsSUFBSSxFQUFFMkQsU0FBUyxFQUFFcEMsS0FBSyxLQUFLO1lBQ3ZDLElBQUlxQyxNQUFNLEdBQUcsRUFBRSxJQUFJLENBQUMxRixLQUFLLENBQUMrRCxVQUFVLEtBQUssS0FBSyxDQUFDO1lBQy9DLElBQUkyQixNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMxRixLQUFLLENBQUM0RCxVQUFVLEVBQUU7Y0FDcEMsSUFBSSxDQUFDaEMsUUFBUSxDQUFDO2dCQUNaZ0MsVUFBVSxFQUFFNkIsU0FBUztnQkFDckIxQixVQUFVLEVBQUVWLEtBQUssQ0FBQ3NDLGFBQWEsQ0FBQyxDQUFDO2dCQUNqQzdCLE9BQU8sRUFBRSxLQUFLO2dCQUNkRSxXQUFXLEVBQUUsQ0FBQztjQUNoQixDQUFDLENBQUM7WUFDSixDQUFDLE1BQU07Y0FDTCxJQUFJLENBQUNwQyxRQUFRLENBQUM7Z0JBQUVnQyxVQUFVLEVBQUU2QixTQUFTO2dCQUFFM0IsT0FBTyxFQUFFO2NBQU0sQ0FBQyxDQUFDO1lBQzFEO1lBRUFoRixLQUFLLENBQUN5RyxRQUFRLENBQUNQLGNBQWMsQ0FBQ1EsV0FBVyxFQUFFLElBQUksRUFBRSxDQUMvQzFELElBQUksRUFDSjJELFNBQVMsRUFDVHBDLEtBQUssRUFDTHFDLE1BQU0sQ0FDUCxDQUFDO1VBQ0osQ0FBQztVQUNEekUsSUFBSSxFQUFFQSxDQUFDYSxJQUFJLEVBQUUyRCxTQUFTLEVBQUVwQyxLQUFLLEtBQUs7WUFDaEN2RSxLQUFLLENBQUN5RyxRQUFRLENBQUNQLGNBQWMsQ0FBQy9ELElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQ2EsSUFBSSxFQUFFMkQsU0FBUyxFQUFFcEMsS0FBSyxDQUFDLENBQUM7VUFDckUsQ0FBQztVQUNEdUMsV0FBVyxFQUFFQSxDQUFDQyxHQUFHLEVBQUVDLFFBQVEsS0FBSztZQUM5QixJQUFJLENBQUNsRSxRQUFRLENBQUM7Y0FBRWtDLE9BQU8sRUFBRTtZQUFNLENBQUMsQ0FBQztZQUNqQ2hGLEtBQUssQ0FBQ3lHLFFBQVEsQ0FBQ1AsY0FBYyxDQUFDWSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUNDLEdBQUcsRUFBRUMsUUFBUSxDQUFDLENBQUM7VUFDbkU7UUFDRixDQUFDO1FBQ0RoRSxJQUFJLEVBQUVtRCxTQUFTLENBQUNuRCxJQUFJLEdBQ2hCbUQsU0FBUyxDQUFDbkQsSUFBSSxHQUNkOUIsS0FBSyxDQUFDNEQsVUFBVSxHQUNoQjVELEtBQUssQ0FBQzRELFVBQVUsR0FDaEI7TUFBSSxHQUNMcUIsU0FBUztRQUNaYyxRQUFRLEVBQUVkLFNBQVMsQ0FBQ2MsUUFBUSxLQUFLLEtBQUssR0FBRyxLQUFLLEdBQUc7TUFBSSxFQUN0RDtNQUNELElBQUksQ0FBQzFDLEtBQUssR0FBRyxJQUFJeEUsU0FBUyxDQUN4Qm1ILE1BQU0sQ0FBQ0MsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFZCxVQUFVLEVBQUU7UUFDNUJwQixVQUFVLEVBQUFwQyxhQUFBO1VBQUl1RSxPQUFPLEVBQUU7UUFBQyxHQUFLLElBQUksQ0FBQ2xHLEtBQUssQ0FBQytELFVBQVU7TUFDcEQsQ0FBQyxDQUNILENBQUM7SUFDSDtFQUNGO0VBZ0JBb0MsaUJBQWlCQSxDQUFBLEVBQUc7SUFDbEIsTUFBTTtNQUFFQztJQUFhLENBQUMsR0FBRyxJQUFJLENBQUNwRyxLQUFLO0lBQ25DLElBQUksQ0FBQ29HLFlBQVksRUFBRTtNQUNqQixJQUFJLENBQUN4RSxRQUFRLENBQUM7UUFBRWlDLE9BQU8sRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDN0QsS0FBSyxDQUFDNkQsT0FBTztNQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDLE1BQU07TUFDTCxJQUFJLENBQUNqQyxRQUFRLENBQUM7UUFBRUosSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUN4QixLQUFLLENBQUM2RCxPQUFPO01BQUUsQ0FBQyxDQUFDO0lBQ2xEO0lBQ0EsTUFBTVIsS0FBSyxHQUFHLElBQUksQ0FBQ3JELEtBQUssQ0FBQ3FELEtBQUs7SUFDOUIsSUFBSUEsS0FBSyxJQUFJQSxLQUFLLENBQUN2QixJQUFJLEVBQUU7TUFDdkIsSUFBSSxDQUFDdUIsS0FBSyxDQUFDZ0QsT0FBTyxDQUFDaEQsS0FBSyxDQUFDdkIsSUFBSSxDQUFDO0lBQ2hDO0lBQ0F3RSxNQUFNLENBQUNDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUNDLGFBQWEsQ0FBQztFQUN4RDtFQUNBQyxvQkFBb0JBLENBQUEsRUFBRztJQUNyQkgsTUFBTSxDQUFDSSxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDRixhQUFhLENBQUM7RUFDM0Q7RUFlQUcsa0JBQWtCQSxDQUFDQyxTQUFTLEVBQUVDLFFBQVEsRUFBRTtJQUN0QyxNQUFNO01BQUVUO0lBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQ3BHLEtBQUs7SUFDbkMsSUFBSSxDQUFDb0csWUFBWSxFQUFFO01BQ2pCLElBQUksSUFBSSxDQUFDcEcsS0FBSyxDQUFDNkQsT0FBTyxLQUFLK0MsU0FBUyxDQUFDL0MsT0FBTyxFQUFFO1FBQzVDLElBQUksQ0FBQ2pDLFFBQVEsQ0FBQztVQUFFaUMsT0FBTyxFQUFFLElBQUksQ0FBQzdELEtBQUssQ0FBQzZEO1FBQVEsQ0FBQyxDQUFDO01BQ2hEO0lBQ0YsQ0FBQyxNQUFNO01BQ0wsSUFBSWdELFFBQVEsQ0FBQ3JGLElBQUksS0FBSyxJQUFJLENBQUNDLEtBQUssQ0FBQ0QsSUFBSSxFQUFFO1FBQ3JDLElBQUksQ0FBQ3NGLFdBQVcsQ0FBQyxDQUFDO01BQ3BCO01BQ0EsSUFBSSxJQUFJLENBQUM5RyxLQUFLLENBQUM2RCxPQUFPLEtBQUsrQyxTQUFTLENBQUMvQyxPQUFPLEVBQUU7UUFDNUMsSUFBSSxDQUFDakMsUUFBUSxDQUFDO1VBQUVKLElBQUksRUFBRSxJQUFJLENBQUN4QixLQUFLLENBQUM2RDtRQUFRLENBQUMsQ0FBQztNQUM3QztNQUNBLElBQUkrQyxTQUFTLENBQUNyRixJQUFJLEtBQUssSUFBSSxDQUFDdkIsS0FBSyxDQUFDdUIsSUFBSSxFQUFFO1FBQ3RDLElBQUksQ0FBQ0ssUUFBUSxDQUFDO1VBQUVRLFNBQVMsRUFBRSxJQUFJLENBQUNwQyxLQUFLLENBQUN1QjtRQUFLLENBQUMsQ0FBQztNQUMvQztJQUNGO0VBQ0Y7RUFFQXVGLFdBQVdBLENBQUEsRUFBRztJQUNaLE1BQU07TUFBRXRGO0lBQUssQ0FBQyxHQUFHLElBQUksQ0FBQ0MsS0FBSztJQUMzQixNQUFNc0YsT0FBWSxHQUFHLEVBQUU7SUFDdkIsSUFBSUMsS0FBSyxHQUFHeEYsSUFBSSxJQUFJLEVBQUU7SUFDdEJ3RixLQUFLLENBQUNDLEdBQUcsQ0FBQyxDQUFDQyxHQUFRLEVBQUU5RixLQUFVLEtBQUs7TUFDbEMsSUFBSStGLElBQUksR0FBQXhGLGFBQUEsQ0FBQUEsYUFBQSxLQUNIdUYsR0FBRztRQUNORSxZQUFZLEVBQUdDLE1BQXNCLEtBQU07VUFDekNuSCxLQUFLLEVBQUVtSCxNQUFNLENBQUNuSCxLQUFLO1VBQ25CRCxRQUFRLEVBQUUsSUFBSSxDQUFDcUgsWUFBWSxDQUFDbEcsS0FBSztRQUNuQyxDQUFDO01BQUMsRUFDSDtNQUNEMkYsT0FBTyxDQUFDUSxJQUFJLENBQUNKLElBQUksQ0FBQztJQUNwQixDQUFDLENBQUM7SUFDRixJQUFJLENBQUN2RixRQUFRLENBQUM7TUFDWmlDLE9BQU8sRUFBRWtEO0lBQ1gsQ0FBQyxDQUFDO0VBQ0o7O0VBRUE7QUFDRjtBQUNBO0VBQ0VTLGdCQUFnQkEsQ0FBQSxFQUFHO0lBQ2pCLElBQUksQ0FBQzVGLFFBQVEsQ0FBQztNQUFFb0MsV0FBVyxFQUFFLENBQUM7SUFBRSxDQUFDLENBQUM7SUFDbEMsT0FBTyxJQUFJO0VBQ2I7RUFFQXlELG9CQUFvQkEsQ0FBQSxFQUFHO0lBQ3JCLE9BQU8sSUFBSSxDQUFDcEUsS0FBSyxDQUFDc0MsYUFBYSxDQUFDLENBQUM7RUFDbkM7RUFFQStCLFFBQVFBLENBQUMzRCxVQUFVLEVBQUU0RCxPQUFPLEVBQUVwRCxNQUFNLEVBQUVxRCxLQUFLLEVBQUU7SUFDM0MsTUFBTTtNQUNKQyxZQUFZLEdBQUcsSUFBSTtNQUNuQkMsUUFBUTtNQUNSQyxjQUFjO01BQ2RMLFFBQVE7TUFDUnJFO0lBQ0YsQ0FBQyxHQUFHLElBQUksQ0FBQ3JELEtBQUs7SUFDZCxNQUFNO01BQUVxRTtJQUFhLENBQUMsR0FBRyxJQUFJLENBQUM1QyxLQUFLO0lBQ25DLE1BQU11RyxVQUFVLEdBQUdDLEtBQUssQ0FBQ0MsT0FBTyxDQUFDM0QsTUFBTSxDQUFDO0lBQ3hDLElBQUlzRCxZQUFZLEtBQUssS0FBSyxJQUFJLENBQUN4RSxLQUFLLEVBQUU7TUFDcENxRSxRQUFRLElBQUlBLFFBQVEsQ0FBQzNELFVBQVUsRUFBRTRELE9BQU8sRUFBRXBELE1BQU0sRUFBRXFELEtBQUssQ0FBQztNQUN4RDtJQUNGO0lBQ0EsTUFBTU8sZ0JBQWdCLEdBQUdBLENBQUEsS0FBTTtNQUM3QixJQUFJbkYsTUFBTSxHQUFHLENBQUMsQ0FNYjtNQUNELE1BQU0wQyxNQUFNLEdBQUcsSUFBSSxDQUFDK0Isb0JBQW9CLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztNQUNoRCxJQUFJLENBQUM5SSxVQUFVLENBQUNvRixVQUFVLENBQUMsRUFBRTtRQUMzQixNQUFNcUUsQ0FBQyxHQUFHO1VBQ1IsQ0FBQzFDLE1BQU0sQ0FBQzJDLFVBQVUsSUFBSSxTQUFTLEdBQUd0RSxVQUFVLENBQUNtQyxPQUFPO1VBQ3BELENBQUNSLE1BQU0sQ0FBQzRDLFdBQVcsSUFBSSxNQUFNLEdBQUd2RSxVQUFVLENBQUN3RTtRQUM3QyxDQUFDO1FBQ0R2QyxNQUFNLENBQUNDLE1BQU0sQ0FBQ2pELE1BQU0sRUFBRW9GLENBQUMsQ0FBQztNQUMxQjtNQUNBLElBQUlJLFNBQVMsR0FBRyxJQUFJLENBQUNDLFlBQVksQ0FBQ2xFLE1BQU0sRUFBRSxJQUFJLENBQUM7TUFDL0MsSUFBSXlELFVBQVUsRUFBRTtRQUNkLElBQUksQ0FBQ3BHLFFBQVEsQ0FBQztVQUFFMkM7UUFBTyxDQUFDLENBQUM7TUFDM0IsQ0FBQyxNQUFNLElBQUksQ0FBQ3lELFVBQVUsSUFBSSxDQUFDckosVUFBVSxDQUFDNEYsTUFBTSxDQUFDLEVBQUU7UUFDN0NBLE1BQU0sQ0FBQzhDLE1BQU0sSUFDWCxJQUFJLENBQUN6RixRQUFRLENBQUM7VUFBRTJDLE1BQU0sRUFBRSxDQUFDQSxNQUFNLENBQUM7VUFBRUUsV0FBVyxFQUFFO1FBQU0sQ0FBQyxDQUFDO01BQzNELENBQUMsTUFBTTtRQUNMLElBQUksQ0FBQzdDLFFBQVEsQ0FBQztVQUFFMkMsTUFBTSxFQUFFO1FBQUcsQ0FBQyxDQUFDO01BQy9CO01BQ0F2QixNQUFNLEdBQUFyQixhQUFBLENBQUFBLGFBQUEsQ0FBQUEsYUFBQSxLQUFRMEMsWUFBWSxHQUFLckIsTUFBTSxHQUFLd0YsU0FBUyxDQUFFO01BQ3JEVixRQUFRLElBQUksSUFBSSxDQUFDekUsS0FBSyxDQUFDQyxNQUFNLENBQUM7UUFBRU47TUFBTyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELE1BQU0wRixVQUFVLEdBQUcsSUFBSSxDQUFDMUksS0FBSyxDQUFDMEgsUUFBUTtJQUV0Q0ssY0FBYyxJQUFJSSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3BDO0lBQ0EsSUFBSU8sVUFBVSxFQUFFO01BQ2Q1SixLQUFLLENBQUN5RyxRQUFRLENBQUNtRCxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMzRSxVQUFVLEVBQUU0RCxPQUFPLEVBQUVwRCxNQUFNLEVBQUVxRCxLQUFLLENBQUMsQ0FBQztJQUN4RTtFQUNGO0VBRUFlLFFBQVFBLENBQUEsRUFBRztJQUNULE9BQU8sSUFBSSxDQUFDdEYsS0FBSztFQUNuQjs7RUFFQTtBQUNGO0FBQ0E7RUFDRXVGLFFBQVFBLENBQUEsRUFBRztJQUNULE9BQU8sSUFBSSxDQUFDdkYsS0FBSyxDQUFDdUYsUUFBUSxDQUFDLENBQUM7RUFDOUI7O0VBRUE7QUFDRjtBQUNBO0FBQ0E7RUFDRUMsWUFBWUEsQ0FBQ0MsR0FBRyxFQUFFNUUsV0FBVyxFQUFFQyxXQUFXLEVBQUU7SUFDMUMsSUFBSSxDQUFDdkMsUUFBUSxDQUFDO01BQ1pxQyxVQUFVLEVBQUU2RSxHQUFHO01BQ2Y1RSxXQUFXLEVBQUVBLFdBQVc7TUFDeEJDLFdBQVcsRUFBRUE7SUFDZixDQUFDLENBQUM7RUFDSjtFQXdCQTRFLFlBQVlBLENBQUNDLFlBQVksRUFBRTtJQUN6QixJQUFJQSxZQUFZLENBQUNDLE1BQU0sSUFBSSxDQUFDLEVBQUU7TUFDNUJDLFFBQUEsQ0FBUUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztNQUMxQjtJQUNGO0lBQ0EsTUFBTUMsYUFBYSxHQUFHLElBQUksQ0FBQ3BKLEtBQUssQ0FBQzZELE9BQU8sQ0FBQ29ELEdBQUcsQ0FBRUMsR0FBbUIsSUFBSztNQUNwRSxNQUFNbUMsTUFBTSxHQUFBMUgsYUFBQSxLQUFRdUYsR0FBRyxDQUE0QztNQUNuRSxJQUFJOEIsWUFBWSxDQUFDTSxRQUFRLENBQUNwQyxHQUFHLENBQUNxQyxTQUFTLENBQUMsRUFBRTtRQUN4Q0YsTUFBTSxDQUFDRyxRQUFRLEdBQUcsSUFBSTtNQUN4QixDQUFDLE1BQU07UUFDTEgsTUFBTSxDQUFDRyxRQUFRLEdBQUcsS0FBSztNQUN6QjtNQUNBLE9BQU9ILE1BQU07SUFDZixDQUFDLENBQUM7SUFDRixNQUFNO01BQUVqRDtJQUFhLENBQUMsR0FBRyxJQUFJLENBQUNwRyxLQUFLO0lBQ25DLElBQUksQ0FBQ29HLFlBQVksRUFBRTtNQUNqQixJQUFJLENBQUN4RSxRQUFRLENBQUM7UUFDWmlDLE9BQU8sRUFBRXVGLGFBQWE7UUFDdEIxRSxXQUFXLEVBQUVzRSxZQUFZO1FBQ3pCckUsWUFBWSxFQUFFO01BQ2hCLENBQUMsQ0FBQztJQUNKLENBQUMsTUFBTTtNQUNMLElBQUksQ0FBQy9DLFFBQVEsQ0FBQztRQUNaSixJQUFJLEVBQUU0SCxhQUFhO1FBQ25CMUUsV0FBVyxFQUFFc0UsWUFBWTtRQUN6QnJFLFlBQVksRUFBRTtNQUNoQixDQUFDLENBQUM7SUFDSjtFQUNGO0VBQ0E4RCxZQUFZQSxDQUFDbEUsTUFBTSxFQUFxQjtJQUFBLElBQW5Ca0YsU0FBUyxHQUFBQyxTQUFBLENBQUFULE1BQUEsUUFBQVMsU0FBQSxRQUFBQyxTQUFBLEdBQUFELFNBQUEsTUFBRyxLQUFLO0lBQ3BDLE1BQU0xQixVQUFVLEdBQUdDLEtBQUssQ0FBQ0MsT0FBTyxDQUFDM0QsTUFBTSxDQUFDO0lBQ3hDLE1BQU07TUFBRXFGLFVBQVUsR0FBRztJQUFLLENBQUMsR0FBRyxJQUFJLENBQUM1SixLQUFLO0lBQ3hDLElBQUksQ0FBQzRKLFVBQVUsRUFBRTtNQUNmLE9BQU8sQ0FBQyxDQUFDO0lBQ1g7SUFDQSxJQUFJcEYsUUFBUSxHQUFHLENBQUMsQ0FBQztJQUNqQixJQUFJcUYsVUFBVSxHQUFHLEVBQUU7SUFDbkIsSUFBSSxDQUFDbEwsVUFBVSxDQUFDNEYsTUFBTSxDQUFDLElBQUksQ0FBQ3lELFVBQVUsSUFBSXpELE1BQU0sQ0FBQzhDLE1BQU0sRUFBRTtNQUN2RHdDLFVBQVUsR0FBRyxDQUNYO1FBQ0V4QyxNQUFNLEVBQUU5QyxNQUFNLENBQUM4QyxNQUFNLENBQUN5QyxLQUFLLElBQUl2RixNQUFNLENBQUM4QyxNQUFNLENBQUNrQyxTQUFTO1FBQ3REUSxHQUFHLEVBQUV4RixNQUFNLENBQUN5RixLQUFLLElBQUk7TUFDdkIsQ0FBQyxDQUNGO01BQ0QsSUFBSXpGLE1BQU0sQ0FBQzhDLE1BQU0sRUFBRTdDLFFBQVEsQ0FBQ0QsTUFBTSxDQUFDOEMsTUFBTSxDQUFDa0MsU0FBUyxDQUFDLEdBQUdoRixNQUFNLENBQUN5RixLQUFLO0lBQ3JFLENBQUMsTUFBTSxJQUFJaEMsVUFBVSxFQUFFO01BQ3JCekQsTUFBTSxDQUFDMEYsT0FBTyxDQUFFQyxDQUFDLElBQUs7UUFDcEIxRixRQUFRLENBQUMwRixDQUFDLENBQUM3QyxNQUFNLENBQUNrQyxTQUFTLENBQUMsR0FBR1csQ0FBQyxDQUFDRixLQUFLO1FBQ3RDLElBQUlGLEtBQUssR0FBR0ksQ0FBQyxDQUFDN0MsTUFBTSxDQUFDeUMsS0FBSyxJQUFJSSxDQUFDLENBQUM3QyxNQUFNLENBQUNrQyxTQUFTO1FBQ2hETSxVQUFVLENBQUN0QyxJQUFJLENBQUM7VUFDZEYsTUFBTSxFQUFFeUMsS0FBSztVQUNiQyxHQUFHLEVBQUVHLENBQUMsQ0FBQ0YsS0FBSyxJQUFJO1FBQ2xCLENBQUMsQ0FBQztNQUNKLENBQUMsQ0FBQztJQUNKO0lBQ0EsSUFBSVAsU0FBUyxFQUFFO01BQ2IsSUFBSSxDQUFDN0gsUUFBUSxDQUFDO1FBQ1o0QyxRQUFRLEVBQUVBO01BQ1osQ0FBQyxDQUFDO0lBQ0o7SUFDQSxPQUFPO01BQUVxRixVQUFVLEVBQUU5SCxJQUFJLENBQUNvSSxTQUFTLENBQUNOLFVBQVU7SUFBRSxDQUFDO0VBQ25EO0VBQ0FPLFVBQVVBLENBQUEsRUFBRztJQUNYLE1BQU07TUFBRXZHLE9BQU87TUFBRVMsUUFBUTtNQUFFRTtJQUFTLENBQUMsR0FBRyxJQUFJLENBQUMvQyxLQUFLO0lBQ2xELE1BQU07TUFBRTRJLFVBQVUsR0FBRztJQUFHLENBQUMsR0FBRyxJQUFJLENBQUNySyxLQUFLO0lBQ3RDLE1BQU1zSyxlQUFlLEdBQUd6RyxPQUFPLENBQUMwRyxNQUFNLENBQUUvSSxJQUFJLElBQUtBLElBQUksQ0FBQ2dJLFFBQVEsS0FBSyxLQUFLLENBQUM7SUFDekUsTUFBTWhJLElBQUksR0FBRzhJLGVBQWUsQ0FBQ3JELEdBQUcsQ0FBQyxDQUFDQyxHQUFHLEVBQUU5RixLQUFLLEtBQUs7TUFDL0MsSUFBSThGLEdBQUcsQ0FBQ3NELFFBQVEsSUFBSSxDQUFDdEQsR0FBRyxDQUFDdUQsTUFBTSxFQUFFO1FBQy9CdkQsR0FBRyxDQUFDc0QsUUFBUSxHQUFHO1VBQ2JFLFNBQVMsRUFBRTtRQUNiLENBQUM7UUFDRHhELEdBQUcsQ0FBQ3VELE1BQU0sR0FBSUUsSUFBSSxJQUFLO1VBQ3JCLG9CQUNFNUwsS0FBQSxDQUFBdUIsYUFBQTtZQUFLc0ssS0FBSyxFQUFFRCxJQUFLO1lBQUNFLFNBQVMsRUFBRW5MLE9BQU8sQ0FBQ0wsTUFBTSxFQUFFLE1BQU0sQ0FBRTtZQUFDeUwsS0FBSyxFQUFFO2NBQUU1SyxLQUFLLEVBQUVnSCxHQUFHLENBQUNoSDtZQUFNO1VBQUUsR0FDL0V5SyxJQUNFLENBQUM7UUFFVixDQUFDO01BQ0g7TUFFQSxJQUFJTixVQUFVLENBQUNVLE9BQU8sQ0FBQzdELEdBQUcsQ0FBQ3FDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO1FBQzFDLElBQUlqRixRQUFRLElBQUksUUFBUSxFQUFFO1VBQ3hCNEMsR0FBRyxDQUFDM0MsTUFBTSxHQUFHLElBQUk7VUFDakIyQyxHQUFHLENBQUM4RCxTQUFTLEdBQUd4RyxRQUFRLENBQUMwQyxHQUFHLENBQUNxQyxTQUFTLENBQUMsR0FDbkMvRSxRQUFRLENBQUMwQyxHQUFHLENBQUNxQyxTQUFTLENBQUMsR0FDdkIsSUFBSTtRQUNWLENBQUMsTUFBTSxJQUFJakYsUUFBUSxJQUFJLFVBQVUsRUFBRTtVQUNqQzRDLEdBQUcsQ0FBQzNDLE1BQU0sR0FBRztZQUFFMEcsUUFBUSxFQUFFN0o7VUFBTSxDQUFDO1VBQ2hDOEYsR0FBRyxDQUFDOEQsU0FBUyxHQUFHeEcsUUFBUSxDQUFDMEMsR0FBRyxDQUFDcUMsU0FBUyxDQUFDLEdBQ25DL0UsUUFBUSxDQUFDMEMsR0FBRyxDQUFDcUMsU0FBUyxDQUFDLEdBQ3ZCLElBQUk7UUFDVjtNQUNGO01BQ0EsT0FBT3JDLEdBQUc7SUFDWixDQUFDLENBQUM7SUFDRjFGLElBQUksQ0FBQ3lGLEdBQUcsQ0FBQyxDQUFDaUUsSUFBSSxFQUFFOUosS0FBSyxLQUFLO01BQ3hCLElBQUksQ0FBQ3pDLFVBQVUsQ0FBQ3VNLElBQUksQ0FBQ0MsV0FBVyxDQUFDLEVBQUU7UUFDakMsSUFBSUMsR0FBRyxHQUFBekosYUFBQSxLQUFRdUosSUFBSSxDQUFFO1FBQ3JCLE1BQU07VUFBRTFILElBQUk7VUFBRXhELEtBQUs7VUFBRXFMO1FBQVUsQ0FBQyxHQUFHSCxJQUFJLENBQUNDLFdBQVc7UUFDbkQsSUFBSUcsR0FBRyxHQUFHLElBQUk7UUFDZCxJQUFJWCxJQUFJLEdBQUdPLElBQUksQ0FBQ04sS0FBSztRQUNyQlUsR0FBRyxHQUFHM0wsT0FBTyxDQUFDNkQsSUFBSSxFQUFBN0IsYUFBQSxDQUFBQSxhQUFBO1VBQ2hCNEosV0FBVyxpQkFBQUMsTUFBQSxDQUFPYixJQUFJO1FBQUUsR0FDckIzSyxLQUFLO1VBQ1J5TCxHQUFHLEVBQUUsSUFBSSxDQUFDQztRQUFjLEVBQ3pCLENBQUM7UUFDRk4sR0FBRyxHQUFBekosYUFBQTtVQUNEZ0ssY0FBYyxFQUFFQyxLQUFBLElBS1Y7WUFBQSxJQUxXO2NBQ2ZDLGVBQWU7Y0FDZkMsWUFBWTtjQUNaQyxPQUFPO2NBQ1BDO1lBQ0YsQ0FBQyxHQUFBSixLQUFBO1lBQ0Msb0JBQ0U3TSxLQUFBLENBQUF1QixhQUFBO2NBQUt1SyxTQUFTLEVBQUVuTCxPQUFPLENBQUNMLE1BQU0sRUFBRSxRQUFRO1lBQUUsZ0JBQ3hDTixLQUFBLENBQUF1QixhQUFBO2NBQUt1SyxTQUFTLEVBQUVuTCxPQUFPLENBQUNMLE1BQU0sRUFBRSxPQUFPO1lBQUUsR0FBRWlNLEdBQVMsQ0FBQyxlQUNyRHZNLEtBQUEsQ0FBQXVCLGFBQUEsQ0FBQTJMLE1BQUEscUJBQ0VsTixLQUFBLENBQUF1QixhQUFBLENBQUE0TCxPQUFBO2NBQ0UxSSxJQUFJLEVBQUMsU0FBUztjQUNkMkksT0FBTyxFQUFFQSxDQUFBLEtBQU07Z0JBQUEsSUFBQUMscUJBQUE7Z0JBQ2JMLE9BQU8sQ0FBQyxDQUFDO2dCQUNULE1BQU07a0JBQUUxSDtnQkFBYSxDQUFDLEdBQUcsSUFBSSxDQUFDNUMsS0FBSztnQkFDbkMsSUFBSTRLLGVBQWUsR0FBQTFLLGFBQUEsS0FBUTBDLFlBQVksQ0FBRTtnQkFDekMsSUFBSWlJLEdBQUcsR0FBR3BCLElBQUksQ0FBQ3BCLEtBQUssSUFBSW9CLElBQUksQ0FBQzNCLFNBQVM7Z0JBQ3RDOEMsZUFBZSxDQUFDQyxHQUFHLENBQUMsSUFBQUYscUJBQUEsR0FDbEIsSUFBSSxDQUFDVixjQUFjLENBQUN4RixPQUFPLGNBQUFrRyxxQkFBQSx1QkFBM0JBLHFCQUFBLENBQTZCRyxRQUFRLENBQUMsQ0FBQztnQkFDekMsSUFBSSxDQUFDM0ssUUFBUSxDQUFDO2tCQUNaeUMsWUFBWSxFQUFBMUMsYUFBQSxLQUFPMEssZUFBZTtnQkFDcEMsQ0FBQyxDQUFDO2dCQUNGLE1BQU1HLFNBQVMsR0FBRyxJQUFJLENBQUMvRCxZQUFZLENBQUMsSUFBSSxDQUFDaEgsS0FBSyxDQUFDOEMsTUFBTSxDQUFDO2dCQUN0RCxJQUFJLENBQUNsQixLQUFLLENBQUNwQyxJQUFJLENBQUM7a0JBQ2QrQixNQUFNLEVBQUFyQixhQUFBLENBQUFBLGFBQUEsS0FBTzBLLGVBQWUsR0FBS0csU0FBUztnQkFDNUMsQ0FBQyxDQUFDO2NBQ0osQ0FBRTtjQUNGakwsSUFBSSxFQUFDLE9BQU87Y0FDWnNKLFNBQVMsRUFBRW5MLE9BQU8sQ0FBQ0wsTUFBTSxFQUFFLFFBQVE7WUFBRSxHQUN0QyxjQUVPLENBQ0gsQ0FDSixDQUFDO1VBRVYsQ0FBQztVQUNEb04sVUFBVSxFQUFFQSxDQUFBLEtBQU07WUFDaEIsb0JBQU8xTixLQUFBLENBQUF1QixhQUFBLENBQUMvQixjQUFjLE1BQUUsQ0FBQztVQUMzQjtRQUFDLEdBQ0U2TSxHQUFHLENBQ1A7UUFDRDVKLElBQUksQ0FBQ0osS0FBSyxDQUFDLEdBQUdnSyxHQUFHO01BQ25CO0lBQ0YsQ0FBQyxDQUFDO0lBQ0YsT0FBTzVKLElBQUk7RUFDYjtFQUNBa0wsYUFBYUEsQ0FBQSxFQUFHO0lBQ2QsSUFBSTtNQUFFdEssU0FBUztNQUFFeUIsT0FBTztNQUFFUztJQUFTLENBQUMsR0FBRyxJQUFJLENBQUM3QyxLQUFLO0lBQ2pELElBQUk7TUFBRXNILFlBQVk7TUFBRWxGLE9BQU8sRUFBRThJLFFBQVE7TUFBRUM7SUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDNU0sS0FBSztJQUM3RCxNQUFNO01BQUU2TSxTQUFTO01BQUVDLGtCQUFrQixHQUFHLENBQUM7SUFBRSxDQUFDLEdBQUdoTixNQUFNLENBQUMsQ0FBQztJQUN2RCxJQUFJaU4sS0FBSyxHQUFHLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDO0lBQ2pELElBQUlDLFVBQVUsR0FBRyxDQUFDLENBQVE7SUFDMUIsSUFBSUosT0FBTyxJQUFJLElBQUksRUFBRTtNQUNuQkcsS0FBSyxHQUFHSCxPQUFPLENBQUNLLFdBQVcsR0FDdkJMLE9BQU8sQ0FBQ0ssV0FBVyxHQUNuQixDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQztJQUMzQyxDQUFDLE1BQU07TUFDTEYsS0FBSyxHQUFHSCxPQUFPLENBQUNHLEtBQUssR0FDakJILE9BQU8sQ0FBQ0csS0FBSyxHQUNiRixTQUFTLENBQUNFLEtBQUssR0FDZkYsU0FBUyxDQUFDRSxLQUFLLEdBQ2ZBLEtBQUs7TUFDVEMsVUFBVSxHQUFHSixPQUFPLENBQUNLLFdBQVcsR0FBR0wsT0FBTyxDQUFDSyxXQUFXLEdBQUcsQ0FBQyxDQUFDO0lBQzdEO0lBQ0EsTUFBTUMsUUFBUSxHQUFHLENBQ2Y7TUFBRXRDLEtBQUssRUFBRSxJQUFJO01BQUUwQixHQUFHLEVBQUU7SUFBVSxDQUFDLEVBQy9CO01BQUUxQixLQUFLLEVBQUUsSUFBSTtNQUFFMEIsR0FBRyxFQUFFO0lBQVMsQ0FBQyxFQUM5QjtNQUFFMUIsS0FBSyxFQUFFLElBQUk7TUFBRTBCLEdBQUcsRUFBRTtJQUFRLENBQUMsQ0FDOUI7SUFDRCxNQUFNYSxRQUFRLEdBQUcsQ0FDZjtNQUFFdkMsS0FBSyxFQUFFLE9BQU87TUFBRTBCLEdBQUcsRUFBRTtJQUFTLENBQUMsRUFDakM7TUFBRTFCLEtBQUssRUFBRSxPQUFPO01BQUUwQixHQUFHLEVBQUU7SUFBVyxDQUFDLENBQ3BDO0lBQ0QsTUFBTWMsV0FBVyxnQkFDZnJPLEtBQUEsQ0FBQXVCLGFBQUEsQ0FBQXZCLEtBQUEsQ0FBQXNPLFFBQUEscUJBQ0V0TyxLQUFBLENBQUF1QixhQUFBO01BQ0V1SyxTQUFTLEVBQUVuTCxPQUFPLENBQUNMLE1BQU0sRUFBRSxjQUFjLENBQUU7TUFDM0N5TCxLQUFLLEVBQUU7UUFDTHdDLE1BQU0sRUFBRSxJQUFJLENBQUM3TCxLQUFLLENBQUNnRCxXQUFXLEdBQUcsYUFBYSxHQUFHLFNBQVM7UUFDMUQ4SSxLQUFLLEVBQUUsSUFBSSxDQUFDOUwsS0FBSyxDQUFDZ0QsV0FBVyxJQUFJO01BQ25DLENBQUU7TUFDRjBILE9BQU8sRUFBRUEsQ0FBQSxLQUFNO1FBQ2IsSUFBSSxJQUFJLENBQUMxSyxLQUFLLENBQUNnRCxXQUFXLEVBQUU7VUFDMUI7UUFDRjtRQUNBLElBQUksQ0FBQzdDLFFBQVEsQ0FBQztVQUFFMkMsTUFBTSxFQUFFLEVBQUU7VUFBRUMsUUFBUSxFQUFFLENBQUMsQ0FBQztVQUFFQyxXQUFXLEVBQUU7UUFBSyxDQUFDLENBQUM7UUFDOUQsTUFBTXpCLE1BQU0sR0FBQXJCLGFBQUEsS0FBUSxJQUFJLENBQUNGLEtBQUssQ0FBQzRDLFlBQVksQ0FBRTtRQUM3QyxJQUFJLENBQUNoQixLQUFLLENBQUNDLE1BQU0sQ0FBQztVQUFFTjtRQUFPLENBQUMsQ0FBQztNQUMvQjtJQUFFLEdBQ0gsc0NBRUksQ0FBQyxFQUNMbUssUUFBUSxDQUFDbEcsR0FBRyxDQUFDLENBQUNpRSxJQUFJLEVBQUU5SixLQUFLLEtBQUs7TUFDN0Isb0JBQ0VyQyxLQUFBLENBQUF1QixhQUFBO1FBQ0VnTSxHQUFHLEVBQUVwQixJQUFJLENBQUNvQixHQUFJO1FBQ2RILE9BQU8sRUFBRUEsQ0FBQSxLQUFNO1VBQ2IsSUFBSSxDQUFDdkssUUFBUSxDQUFDO1lBQ1oyQyxNQUFNLEVBQUUsRUFBRTtZQUNWQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ1pGLFFBQVEsRUFBRTRHLElBQUksQ0FBQ29CLEdBQUc7WUFDbEI3SCxXQUFXLEVBQUU7VUFDZixDQUFDLENBQUM7VUFDRixNQUFNekIsTUFBTSxHQUFBckIsYUFBQSxLQUFRLElBQUksQ0FBQ0YsS0FBSyxDQUFDNEMsWUFBWSxDQUFFO1VBQzdDLElBQUksQ0FBQ2hCLEtBQUssQ0FBQ0MsTUFBTSxDQUFDO1lBQUVOO1VBQU8sQ0FBQyxDQUFDO1FBQy9CO01BQUUsR0FFRHNCLFFBQVEsSUFBSTRHLElBQUksQ0FBQ29CLEdBQUcsZ0JBQ25Cdk4sS0FBQSxDQUFBdUIsYUFBQSx5QkFDRXZCLEtBQUEsQ0FBQXVCLGFBQUE7UUFBS3VLLFNBQVMsRUFBRW5MLE9BQU8sQ0FBQ0wsTUFBTSxFQUFFLGNBQWM7TUFBRSxnQkFDOUNOLEtBQUEsQ0FBQXVCLGFBQUE7UUFBS3dLLEtBQUssRUFBRTtVQUFFNUssS0FBSyxFQUFFO1FBQUc7TUFBRSxHQUN2Qm9FLFFBQVEsSUFBSTRHLElBQUksQ0FBQ29CLEdBQUcsaUJBQUl2TixLQUFBLENBQUF1QixhQUFBLENBQUNqQyxhQUFhLE1BQUUsQ0FDdEMsQ0FBQyxlQUNOVSxLQUFBLENBQUF1QixhQUFBLGNBQUssR0FBQyxFQUFDNEssSUFBSSxDQUFDTixLQUFXLENBQ3BCLENBQ0osQ0FBQyxnQkFFSjdMLEtBQUEsQ0FBQXVCLGFBQUE7UUFBS3VLLFNBQVMsRUFBRW5MLE9BQU8sQ0FBQ0wsTUFBTSxFQUFFLGNBQWM7TUFBRSxnQkFDOUNOLEtBQUEsQ0FBQXVCLGFBQUE7UUFBS3dLLEtBQUssRUFBRTtVQUFFNUssS0FBSyxFQUFFO1FBQUc7TUFBRSxDQUFNLENBQUMsZUFDakNuQixLQUFBLENBQUF1QixhQUFBLGNBQUssR0FBQyxFQUFDNEssSUFBSSxDQUFDTixLQUFXLENBQ3BCLENBRUosQ0FBQztJQUVWLENBQUMsQ0FBQyxFQUNELElBQUksQ0FBQ25KLEtBQUssQ0FBQzhDLE1BQU0sQ0FBQzBFLE1BQU0sR0FBRyxDQUFDLGlCQUMzQmxLLEtBQUEsQ0FBQXVCLGFBQUEsQ0FBQXZCLEtBQUEsQ0FBQXNPLFFBQUEscUJBQ0V0TyxLQUFBLENBQUF1QixhQUFBO01BQ0V1SyxTQUFTLEVBQUVuTCxPQUFPLENBQUNMLE1BQU0sRUFBRSxjQUFjLENBQUU7TUFDM0N5TCxLQUFLLEVBQUU7UUFBRXlDLEtBQUssRUFBRTtNQUFrQjtJQUFFLEdBQ3JDLDBCQUVJLENBQUMsRUFDTCxJQUFJLENBQUM5TCxLQUFLLENBQUM4QyxNQUFNLENBQUMwQyxHQUFHLENBQUMsQ0FBQ2lFLElBQUksRUFBRTlKLEtBQUssS0FBSztNQUN0QyxvQkFDRXJDLEtBQUEsQ0FBQXVCLGFBQUE7UUFBS3VLLFNBQVMsRUFBRW5MLE9BQU8sQ0FBQ0wsTUFBTSxFQUFFLGNBQWMsQ0FBRTtRQUFDaU4sR0FBRyxFQUFFbEw7TUFBTSxnQkFDMURyQyxLQUFBLENBQUF1QixhQUFBO1FBQUt3SyxLQUFLLEVBQUU7VUFBRTVLLEtBQUssRUFBRTtRQUFHO01BQUUsR0FDdkJnTCxJQUFJLENBQUNsQixLQUFLLElBQUksUUFBUSxnQkFDckJqTCxLQUFBLENBQUF1QixhQUFBLENBQUM5QixxQkFBcUIsTUFBRSxDQUFDLGdCQUV6Qk8sS0FBQSxDQUFBdUIsYUFBQSxDQUFDN0Isc0JBQXNCLE1BQUUsQ0FFeEIsQ0FBQyxlQUNOTSxLQUFBLENBQUF1QixhQUFBLGNBQUssR0FBQyxFQUFDNEssSUFBSSxDQUFDN0QsTUFBTSxDQUFDdUQsS0FBVyxDQUMzQixDQUFDO0lBRVYsQ0FBQyxDQUNELENBRUosQ0FDSDtJQUNELE1BQU00QyxXQUFXLGdCQUNmek8sS0FBQSxDQUFBdUIsYUFBQSxDQUFBdkIsS0FBQSxDQUFBc08sUUFBQSxxQkFDRXRPLEtBQUEsQ0FBQXVCLGFBQUE7TUFBS3VLLFNBQVMsRUFBRW5MLE9BQU8sQ0FBQ0wsTUFBTSxFQUFFLGNBQWM7SUFBRSxHQUFDLDBCQUFTLENBQUMsRUFDMUQ2TixRQUFRLENBQUNqRyxHQUFHLENBQUMsQ0FBQ2lFLElBQUksRUFBRTlKLEtBQUssS0FBSztNQUM3QixvQkFDRXJDLEtBQUEsQ0FBQXVCLGFBQUE7UUFDRWdNLEdBQUcsRUFBRXBCLElBQUksQ0FBQ29CLEdBQUk7UUFDZEgsT0FBTyxFQUFFQSxDQUFBLEtBQU07VUFDYixJQUFJLENBQUN2SyxRQUFRLENBQUM7WUFDWlEsU0FBUyxFQUFFOEksSUFBSSxDQUFDb0I7VUFDbEIsQ0FBQyxDQUFDO1FBQ0o7TUFBRSxHQUVEbEssU0FBUyxJQUFJOEksSUFBSSxDQUFDb0IsR0FBRyxnQkFDcEJ2TixLQUFBLENBQUF1QixhQUFBLHlCQUNFdkIsS0FBQSxDQUFBdUIsYUFBQTtRQUFLdUssU0FBUyxFQUFFbkwsT0FBTyxDQUFDTCxNQUFNLEVBQUUsY0FBYztNQUFFLGdCQUM5Q04sS0FBQSxDQUFBdUIsYUFBQTtRQUFLd0ssS0FBSyxFQUFFO1VBQUU1SyxLQUFLLEVBQUU7UUFBRztNQUFFLEdBQ3ZCa0MsU0FBUyxJQUFJOEksSUFBSSxDQUFDb0IsR0FBRyxpQkFBSXZOLEtBQUEsQ0FBQXVCLGFBQUEsQ0FBQ2pDLGFBQWEsTUFBRSxDQUN2QyxDQUFDLGVBQ05VLEtBQUEsQ0FBQXVCLGFBQUEsY0FBSyxHQUFDLEVBQUM0SyxJQUFJLENBQUNOLEtBQVcsQ0FDcEIsQ0FDSixDQUFDLGdCQUVKN0wsS0FBQSxDQUFBdUIsYUFBQTtRQUFLdUssU0FBUyxFQUFFbkwsT0FBTyxDQUFDTCxNQUFNLEVBQUUsY0FBYztNQUFFLGdCQUM5Q04sS0FBQSxDQUFBdUIsYUFBQTtRQUFLd0ssS0FBSyxFQUFFO1VBQUU1SyxLQUFLLEVBQUU7UUFBRztNQUFFLENBQU0sQ0FBQyxlQUNqQ25CLEtBQUEsQ0FBQXVCLGFBQUEsY0FBSyxHQUFDLEVBQUM0SyxJQUFJLENBQUNOLEtBQVcsQ0FDcEIsQ0FFSixDQUFDO0lBRVYsQ0FBQyxDQUNELENBQ0g7SUFFRCxNQUFNTixlQUFlLEdBQUd6RyxPQUFPLENBQUMwRyxNQUFNLENBQUUvSSxJQUFJLElBQUtBLElBQUksQ0FBQ2dJLFFBQVEsS0FBSyxLQUFLLENBQUM7SUFFekUsTUFBTTdGLE9BQU8sZ0JBQ1g1RSxLQUFBLENBQUF1QixhQUFBLENBQUFtTixTQUFBLENBQVVDLEtBQUs7TUFDYmhHLFFBQVEsRUFBRSxJQUFJLENBQUNxQixZQUFZLENBQUM0RSxJQUFJLENBQUMsSUFBSSxDQUFFO01BQ3ZDckksT0FBTyxFQUFFcUgsUUFBUSxDQUFDMUYsR0FBRyxDQUNsQkMsR0FBK0QsSUFBSztRQUNuRSxJQUFJLENBQUNBLEdBQUcsQ0FBQ3FDLFNBQVMsRUFBRTtVQUNsQnJDLEdBQUcsQ0FBQ3FDLFNBQVMsR0FBR3JDLEdBQUcsQ0FBQzBELEtBQUs7UUFDM0I7UUFDQSxPQUFPO1VBQ0xnRCxLQUFLLEVBQUUxRyxHQUFHLENBQUMwRCxLQUFLO1VBQ2hCaUQsS0FBSyxFQUFFM0csR0FBRyxDQUFDcUMsU0FBUztVQUNwQnVFLFFBQVEsRUFBRTVHLEdBQUcsQ0FBQzZCLFlBQVksS0FBSztRQUNqQyxDQUFDO01BQ0gsQ0FDRjtNQUNBO01BQUE7TUFDQThFLEtBQUssRUFDSCxJQUFJLENBQUNwTSxLQUFLLENBQUNrRCxZQUFZLEdBQ25CMkYsZUFBZSxDQUFDckQsR0FBRyxDQUFFQyxHQUFHLElBQUtBLEdBQUcsQ0FBQ3FDLFNBQVMsQ0FBQyxHQUMzQyxJQUFJLENBQUM5SCxLQUFLLENBQUNpRDtJQUNoQixDQUNjLENBQ2xCO0lBQ0Qsb0JBQ0UzRixLQUFBLENBQUF1QixhQUFBO01BQUt1SyxTQUFTLEVBQUVuTCxPQUFPLENBQUNMLE1BQU0sRUFBRSxnQkFBZ0I7SUFBRSxHQUMvQzBOLEtBQUssQ0FBQ2hDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsaUJBQzNCaE0sS0FBQSxDQUFBdUIsYUFBQTtNQUFLd0ssS0FBSyxFQUFFO1FBQUVpRCxRQUFRLEVBQUU7TUFBRztJQUFFLGdCQUMzQmhQLEtBQUEsQ0FBQXVCLGFBQUEsQ0FBQTBOLFFBQUE7TUFDRXBELEtBQUssRUFBQyxzQ0FBUTtNQUNkakgsT0FBTyxFQUFFQSxPQUFRO01BQ2pCc0ssU0FBUyxFQUFDLGFBQWE7TUFDdkJDLE9BQU8sRUFBQyxPQUFPO01BQ2ZDLFlBQVksRUFBRTtRQUFFQyxRQUFRLEVBQUUsR0FBRztRQUFFQyxRQUFRLEVBQUU7TUFBSTtNQUM3QztJQUFBLGdCQUVBdFAsS0FBQSxDQUFBdUIsYUFBQSxDQUFDbEMsZ0JBQWdCO01BQUN5TSxTQUFTLEVBQUVuTCxPQUFPLENBQUNMLE1BQU0sRUFBRSxnQkFBZ0I7SUFBRSxDQUFFLENBQzFELENBQ04sQ0FDTixFQUNBME4sS0FBSyxDQUFDaEMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxpQkFDekJoTSxLQUFBLENBQUF1QixhQUFBO01BQUt3SyxLQUFLLEVBQUU7UUFBRXdELFdBQVcsRUFBRSxDQUFDO1FBQUVQLFFBQVEsRUFBRTtNQUFHO0lBQUUsZ0JBQzNDaFAsS0FBQSxDQUFBdUIsYUFBQSxDQUFBME4sUUFBQTtNQUFTQyxTQUFTLEVBQUMsUUFBUTtNQUFDdEssT0FBTyxFQUFFeUosV0FBWTtNQUFDYyxPQUFPLEVBQUM7SUFBTyxnQkFDL0RuUCxLQUFBLENBQUF1QixhQUFBLENBQUM5QixxQkFBcUIsTUFBRSxDQUNqQixDQUNOLENBQ04sRUFDQXVPLEtBQUssQ0FBQ2hDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsaUJBQ3pCaE0sS0FBQSxDQUFBdUIsYUFBQTtNQUFLd0ssS0FBSyxFQUFFO1FBQUV3RCxXQUFXLEVBQUUsQ0FBQztRQUFFUCxRQUFRLEVBQUU7TUFBRztJQUFFLGdCQUMzQ2hQLEtBQUEsQ0FBQXVCLGFBQUEsQ0FBQTBOLFFBQUE7TUFBU0MsU0FBUyxFQUFDLFFBQVE7TUFBQ3RLLE9BQU8sRUFBRTZKLFdBQVk7TUFBQ1UsT0FBTyxFQUFDO0lBQU8sZ0JBQy9EblAsS0FBQSxDQUFBdUIsYUFBQSxDQUFDaEMsb0JBQW9CLE1BQUUsQ0FDaEIsQ0FDTixDQUNOLEVBQ0F5TyxLQUFLLENBQUNoQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGlCQUM1QmhNLEtBQUEsQ0FBQXVCLGFBQUE7TUFDRXdLLEtBQUssRUFBRTtRQUFFd0QsV0FBVyxFQUFFLENBQUM7UUFBRVAsUUFBUSxFQUFFLEVBQUU7UUFBRVQsTUFBTSxFQUFFO01BQVUsQ0FBRTtNQUMzRG5CLE9BQU8sRUFBRUEsQ0FBQSxLQUFNO1FBQ2IsTUFBTW5KLE1BQU0sR0FBQXJCLGFBQUEsS0FBUSxJQUFJLENBQUNGLEtBQUssQ0FBQzRDLFlBQVksQ0FBRTtRQUM3QyxJQUFJMkksVUFBVSxDQUFDdUIsU0FBUyxFQUFFO1VBQ3hCdkIsVUFBVSxDQUFDdUIsU0FBUyxDQUFDLENBQUM7UUFDeEIsQ0FBQyxNQUFNO1VBQ0wsSUFBSSxDQUFDbEwsS0FBSyxDQUFDcEMsSUFBSSxDQUFDO1lBQUUrQjtVQUFPLENBQUMsQ0FBQztRQUM3QjtNQUNGO0lBQUUsZ0JBRUZqRSxLQUFBLENBQUF1QixhQUFBLENBQUM1QixZQUFZLE1BQUUsQ0FDWixDQUVKLENBQUM7RUFFVjtFQUNBOFAsa0JBQWtCQSxDQUFBLEVBQUc7SUFDbkIsT0FBTyxJQUFJLENBQUMvTSxLQUFLLENBQUNtRCxlQUFlO0VBQ25DO0VBQ0E2SixtQkFBbUJBLENBQUEsRUFBRztJQUNwQixPQUFPLElBQUksQ0FBQ2hOLEtBQUssQ0FBQ29ELGdCQUFnQjtFQUNwQztFQUNBNkosb0JBQW9CQSxDQUFBLEVBQUc7SUFDckIsSUFBSSxDQUFDOU0sUUFBUSxDQUFDO01BQ1pnRCxlQUFlLEVBQUUsRUFBRTtNQUNuQkMsZ0JBQWdCLEVBQUU7SUFDcEIsQ0FBQyxDQUFDO0VBQ0o7RUFDQThKLGtCQUFrQkEsQ0FBQzdNLElBQTRCLEVBQUU7SUFDL0MsSUFBSSxDQUFDRixRQUFRLENBQUM7TUFDWmdELGVBQWUsRUFBRTlDO0lBQ25CLENBQUMsQ0FBQztFQUNKO0VBQ0E4TSxtQkFBbUJBLENBQUM5TSxJQUFtQixFQUFFO0lBQ3ZDLElBQUksQ0FBQ0YsUUFBUSxDQUFDO01BQ1ppRCxnQkFBZ0IsRUFBRS9DO0lBQ3BCLENBQUMsQ0FBQztFQUNKO0VBQ0ErTSxvQkFBb0JBLENBQUNuTSxNQUFXLEVBQUVvTSxRQUFhLEVBQUU7SUFDL0MsTUFBTTtNQUFFbEssZUFBZTtNQUFFQztJQUFpQixDQUFDLEdBQUcsSUFBSSxDQUFDcEQsS0FBSztJQUN4RCxJQUFJO01BQUVzTixNQUFNLEdBQUc7SUFBSyxDQUFDLEdBQUcsSUFBSSxDQUFDL08sS0FBSztJQUNsQyxJQUFJZ1Asa0JBQWtCLEdBQUcsQ0FBQyxHQUFHcEssZUFBZSxDQUFDO0lBQzdDLElBQUlxSyxtQkFBbUIsR0FBRyxDQUFDLEdBQUdwSyxnQkFBZ0IsQ0FBQztJQUMvQyxJQUFJaUssUUFBUSxFQUFFO01BQ1pFLGtCQUFrQixHQUFHLENBQUMsR0FBR0Esa0JBQWtCLEVBQUV0TSxNQUFNLENBQUNxTSxNQUFNLENBQUMsQ0FBQztNQUM1REUsbUJBQW1CLEdBQUcsQ0FBQyxHQUFHQSxtQkFBbUIsRUFBRXZNLE1BQU0sQ0FBQztJQUN4RCxDQUFDLE1BQU07TUFDTGtDLGVBQWUsQ0FBQ3FDLEdBQUcsQ0FBQyxDQUFDaUUsSUFBUyxFQUFFOUosS0FBVSxLQUFLO1FBQzdDLElBQUk4SixJQUFJLEtBQUt4SSxNQUFNLENBQUNxTSxNQUFNLENBQUMsRUFBRTtVQUMzQkMsa0JBQWtCLENBQUNFLE1BQU0sQ0FBQzlOLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDckM7TUFDRixDQUFDLENBQUM7TUFDRnlELGdCQUFnQixDQUFDb0MsR0FBRyxDQUFDLENBQUNpRSxJQUFTLEVBQUU5SixLQUFVLEtBQUs7UUFDOUMsSUFBSThKLElBQUksQ0FBQzZELE1BQU0sQ0FBQyxLQUFLck0sTUFBTSxDQUFDcU0sTUFBTSxDQUFDLEVBQUU7VUFDbkNFLG1CQUFtQixDQUFDQyxNQUFNLENBQUM5TixLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDO01BQ0YsQ0FBQyxDQUFDO0lBQ0o7SUFDQSxJQUFJLENBQUNRLFFBQVEsQ0FBQztNQUNaZ0QsZUFBZSxFQUFFb0ssa0JBQWtCO01BQ25DbkssZ0JBQWdCLEVBQUVvSztJQUNwQixDQUFDLENBQUM7RUFDSjtFQUNBRSx1QkFBdUJBLENBQUNMLFFBQWEsRUFBRU0sWUFBaUIsRUFBRUMsVUFBZSxFQUFFO0lBQ3pFLE1BQU07TUFBRXpLLGVBQWU7TUFBRUM7SUFBaUIsQ0FBQyxHQUFHLElBQUksQ0FBQ3BELEtBQUs7SUFDeEQsTUFBTTtNQUFFc04sTUFBTSxHQUFHO0lBQUssQ0FBQyxHQUFHLElBQUksQ0FBQy9PLEtBQUs7SUFDcEMsSUFBSXNQLE1BQVcsR0FBRyxFQUFFO0lBQ3BCLElBQUlDLFFBQWEsR0FBRyxFQUFFO0lBQ3RCLElBQUlGLFVBQVUsQ0FBQ3BHLE1BQU0sR0FBRyxDQUFDLEVBQUU7TUFDekIsSUFBSXVHLFNBQVMsR0FBR0gsVUFBVSxDQUFDcEksR0FBRyxDQUFFaUUsSUFBUyxJQUFLQSxJQUFJLENBQUM2RCxNQUFNLENBQUMsQ0FBQztNQUMzRCxJQUFJRCxRQUFRLEVBQUU7UUFDWlEsTUFBTSxHQUFHLENBQUMsR0FBRzFLLGVBQWUsRUFBRSxHQUFHNEssU0FBUyxDQUFDO1FBQzNDRCxRQUFRLEdBQUcsQ0FBQyxHQUFHMUssZ0JBQWdCLEVBQUUsR0FBR3dLLFVBQVUsQ0FBQztNQUNqRCxDQUFDLE1BQU07UUFDTHpLLGVBQWUsQ0FBQ3FDLEdBQUcsQ0FBQyxDQUFDaUUsSUFBUyxFQUFFOUosS0FBVSxLQUFLO1VBQzdDLElBQUlvTyxTQUFTLENBQUN6RSxPQUFPLENBQUNHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ2pDb0UsTUFBTSxDQUFDL0gsSUFBSSxDQUFDMkQsSUFBSSxDQUFDO1VBQ25CO1FBQ0YsQ0FBQyxDQUFDO1FBQ0ZyRyxnQkFBZ0IsQ0FBQ29DLEdBQUcsQ0FBQyxDQUFDaUUsSUFBUyxFQUFFOUosS0FBVSxLQUFLO1VBQzlDLElBQUlvTyxTQUFTLENBQUN6RSxPQUFPLENBQUNHLElBQUksQ0FBQzZELE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7WUFDekNRLFFBQVEsQ0FBQ2hJLElBQUksQ0FBQzJELElBQUksQ0FBQztVQUNyQjtRQUNGLENBQUMsQ0FBQztNQUNKO0lBQ0YsQ0FBQyxNQUFNO01BQ0xvRSxNQUFNLEdBQUcsQ0FBQyxHQUFHMUssZUFBZSxDQUFDO01BQzdCMkssUUFBUSxHQUFHLENBQUMsR0FBRzFLLGdCQUFnQixDQUFDO0lBQ2xDO0lBQ0EsSUFBSSxDQUFDakQsUUFBUSxDQUFDO01BQ1pnRCxlQUFlLEVBQUUsQ0FBQyxHQUFHMEssTUFBTSxDQUFDO01BQzVCekssZ0JBQWdCLEVBQUUsQ0FBQyxHQUFHMEssUUFBUTtJQUNoQyxDQUFDLENBQUM7RUFDSjtFQUNBOUUsTUFBTUEsQ0FBQSxFQUFHO0lBQUEsSUFBQWdGLG1CQUFBO0lBQ1AsSUFBSXhOLEtBQUssR0FBRyxJQUFJO01BQ2Q7UUFDRTZCLE9BQU87UUFDUEYsVUFBVTtRQUNWRyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2ZFLFVBQVU7UUFDVkMsV0FBVztRQUNYQyxXQUFXO1FBQ1gvQjtNQUNGLENBQUMsR0FBRyxJQUFJLENBQUNYLEtBQUs7TUFDZHpCLEtBQUssR0FBR2xCLEtBQUssQ0FBQzRRLElBQUksQ0FDaEIsSUFBSSxDQUFDMVAsS0FBSyxFQUNWLENBQ0UsT0FBTyxFQUNQLFVBQVUsRUFDVixTQUFTLEVBQ1QsYUFBYSxFQUNiLFNBQVMsRUFDVCxZQUFZLEVBQ1osY0FBYyxFQUNkLFlBQVksRUFDWixrQkFBa0IsQ0FDbkIsRUFDRDtRQUNFK08sTUFBTSxFQUFFLElBQUk7UUFDWlksZ0JBQWdCLEVBQUU7TUFDcEIsQ0FDRixDQUFDO0lBQ0gsSUFBSTNQLEtBQUssQ0FBQytELFVBQVUsS0FBSyxLQUFLLEVBQUU7TUFDOUIvRCxLQUFLLENBQUMrRCxVQUFVLEdBQUFwQyxhQUFBLENBQUFBLGFBQUE7UUFDZGlPLFFBQVEsRUFBRSxDQUFDLGFBQWEsQ0FBQztRQUN6QkMsZUFBZSxFQUFFLElBQUk7UUFDckJDLGVBQWUsRUFBRTtNQUFJLEdBQ2xCOVAsS0FBSyxDQUFDK0QsVUFBVSxHQUNoQkEsVUFBVSxDQUNkO01BQ0QsSUFBSS9ELEtBQUssQ0FBQytQLFNBQVMsSUFBSSxJQUFJLEVBQUU7UUFDM0IvUCxLQUFLLENBQUMrRCxVQUFVLENBQUNnTSxTQUFTLEdBQUcsVUFBVUMsS0FBSyxFQUFBQyxLQUFBLEVBQWM7VUFBQSxJQUFaLENBQUNDLElBQUksRUFBRUMsRUFBRSxDQUFDLEdBQUFGLEtBQUE7VUFDdEQ7VUFDQSxPQUFPLElBQUksR0FBR0QsS0FBSyxHQUFHLElBQUk7UUFDNUIsQ0FBQztNQUNIO0lBQ0Y7SUFDQWhRLEtBQUssQ0FBQzBILFFBQVEsR0FBRyxVQUFVM0QsVUFBVSxFQUFFNEQsT0FBTyxFQUFFcEQsTUFBTSxFQUFFcUQsS0FBSyxFQUFFO01BQzdEM0YsS0FBSyxDQUFDeUYsUUFBUSxDQUFDM0QsVUFBVSxFQUFFNEQsT0FBTyxFQUFFcEQsTUFBTSxFQUFFcUQsS0FBSyxDQUFDO0lBQ3BELENBQUM7SUFDRCxJQUFJNUgsS0FBSyxDQUFDMlAsZ0JBQWdCLEVBQUU7TUFDMUIsTUFBTVMsT0FBTyxHQUFHcFEsS0FBSyxDQUFDcVEsS0FBSztNQUMzQnJRLEtBQUssQ0FBQ3FRLEtBQUssR0FBRyxVQUFVM04sTUFBTSxFQUFFdEIsS0FBSyxFQUFFO1FBQ3JDLElBQUlrUCxNQUFNLEdBQUdGLE9BQU8sR0FBR0EsT0FBTyxDQUFDMU4sTUFBTSxFQUFFdEIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xELE1BQU1tUCxTQUFTLEdBQUdELE1BQU0sQ0FBQ25FLE9BQU87UUFDaENtRSxNQUFNLENBQUNuRSxPQUFPLEdBQUlxRSxLQUFLLElBQUs7VUFDMUJ2TyxLQUFLLENBQUNMLFFBQVEsQ0FBQztZQUNib0MsV0FBVyxFQUFFNUMsS0FBSyxDQUFFO1VBQ3RCLENBQUMsQ0FBQztVQUNGdEMsS0FBSyxDQUFDeUcsUUFBUSxDQUFDZ0wsU0FBUyxFQUFFdE8sS0FBSyxFQUFFLENBQUN1TyxLQUFLLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBQ0QsT0FBT0YsTUFBTTtNQUNmLENBQUM7TUFDRHRRLEtBQUssQ0FBQ3lRLFlBQVksR0FBRyxVQUFVL04sTUFBTSxFQUFFdEIsS0FBSyxFQUFFO1FBQzVDLE9BQU9BLEtBQUssS0FBS2EsS0FBSyxDQUFDUixLQUFLLENBQUN1QyxXQUFXLE1BQUF3SCxNQUFBLENBQ2pDbk0sTUFBTSxDQUFDcVIsYUFBYSxJQUN2QixFQUFFO01BQ1IsQ0FBQztJQUNIO0lBQ0EsSUFBSUMsYUFBYSxHQUFHLEVBQUU7SUFDdEIsSUFBSTFNLFVBQVUsRUFBRTtNQUNkLE1BQU1uQyxJQUFJLEdBQUcxQyxTQUFTLENBQUN3UixrQkFBa0IsQ0FDdkMsSUFBSSxFQUNKM00sVUFBVSxFQUNWQyxXQUFXLEVBQ1hDLFdBQ0YsQ0FBQztNQUNEd00sYUFBYSxHQUFHN08sSUFBSSxDQUFDK08sU0FBUztNQUM5QjdRLEtBQUssQ0FBQzhRLGVBQWUsR0FBR2hQLElBQUksQ0FBQ2lQLFFBQVE7SUFDdkMsQ0FBQyxNQUFNO01BQ0xKLGFBQWEsR0FBRy9NLFVBQVU7SUFDNUI7SUFDQTVELEtBQUssQ0FBQ3FELEtBQUssR0FBR3JELEtBQUssQ0FBQ3FELEtBQUssSUFBSSxDQUFDLENBQUM7SUFDL0JyRCxLQUFLLENBQUNxRCxLQUFLLENBQUMwQyxRQUFRLEdBQUcvRixLQUFLLENBQUNxRCxLQUFLLENBQUMwQyxRQUFRLEtBQUssS0FBSyxHQUFHLEtBQUssR0FBRyxJQUFJO0lBQ3BFLE1BQU07TUFBRWlMO0lBQVMsQ0FBQyxHQUFHL08sS0FBSyxDQUFDakMsS0FBSztJQUNoQyxNQUFNaVIsYUFBYSxHQUNqQkQsUUFBUSxLQUFLLElBQUksR0FDYjtNQUNFRSxVQUFVLEVBQUU1UixnQkFBZ0I7TUFDNUIrUSxLQUFLLEVBQUVBLENBQUMzTixNQUFNLEVBQUV0QixLQUFLLE1BQU07UUFDekJBLEtBQUs7UUFDTHNCLE1BQU07UUFDTlUsT0FBTyxFQUFFLElBQUksQ0FBQ0E7TUFDaEIsQ0FBQztJQUNILENBQUMsR0FDRCxDQUFDLENBQUM7SUFDUixJQUFJO01BQUVnRDtJQUFhLENBQUMsR0FBRyxJQUFJLENBQUNwRyxLQUFLO0lBRWpDLE1BQU1tUixXQUFXLEdBQ2YvSyxZQUFZLEtBQUssSUFBSSxHQUFHO01BQUU4SyxVQUFVLEVBQUUsSUFBSSxDQUFDQTtJQUFXLENBQUMsR0FBRyxJQUFJO0lBQ2hFLE1BQU07TUFBRXJFO0lBQVUsQ0FBQyxHQUFHL00sTUFBTSxDQUFDLENBQUM7SUFDOUIsSUFBSXNSLFFBQVEsR0FBRyxJQUFJO0lBQ25CLElBQUlDLFNBQVMsR0FDWCxJQUFJLENBQUNyUixLQUFLLENBQUM0TSxPQUFPLEtBQUssS0FBSyxJQUFJLEVBQUE2QyxtQkFBQSxPQUFJLENBQUN6UCxLQUFLLENBQUM0TSxPQUFPLGNBQUE2QyxtQkFBQSx1QkFBbEJBLG1CQUFBLENBQW9CNkIsSUFBSSxNQUFLLEtBQUssR0FDOUQsS0FBSyxHQUNMLElBQUk7SUFDVixJQUFJLENBQUNELFNBQVMsRUFBRTtNQUNkRCxRQUFRLEdBQUdDLFNBQVM7SUFDdEIsQ0FBQyxNQUFNO01BQ0xELFFBQVEsR0FBR3ZFLFNBQVMsQ0FBQ3lFLElBQUksS0FBSyxLQUFLLEdBQUcsS0FBSyxHQUFHLElBQUk7SUFDcEQ7SUFDQSxJQUFJLElBQUksQ0FBQ3RSLEtBQUssQ0FBQ3VSLGdCQUFnQixFQUFFO01BQy9CLE1BQU07UUFBRUMsWUFBWSxHQUFHLENBQUM7TUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDeFIsS0FBSztNQUN4Q0EsS0FBSyxHQUFBMkIsYUFBQSxDQUFBQSxhQUFBLEtBQ0EzQixLQUFLO1FBQ1J3UixZQUFZLEVBQUE3UCxhQUFBO1VBQ1ZpRCxlQUFlLEVBQUUsSUFBSSxDQUFDbkQsS0FBSyxDQUFDbUQsZUFBZTtVQUMzQzZNLFFBQVEsRUFBRSxJQUFJLENBQUM1QyxvQkFBb0IsQ0FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUM7VUFDOUMrRCxXQUFXLEVBQUUsSUFBSSxDQUFDdkMsdUJBQXVCLENBQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDO1VBQ3BEZ0UsV0FBVyxFQUFFO1FBQUUsR0FDWkgsWUFBWTtNQUNoQixFQUNGO0lBQ0g7SUFDQSxNQUFNSSxZQUFZLGdCQUNoQjdTLEtBQUEsQ0FBQXVCLGFBQUEsQ0FBQXZCLEtBQUEsQ0FBQXNPLFFBQUEsUUFDRytELFFBQVEsSUFBSSxJQUFJLENBQUMxRSxhQUFhLENBQUMsQ0FBQyxlQUNqQzNOLEtBQUEsQ0FBQXVCLGFBQUEsQ0FBQXVSLE1BQUEsRUFBQUMsUUFBQTtNQUNFQyxrQkFBa0IsRUFBQyxZQUFZO01BQy9CQyxPQUFPO01BQ1BwTyxVQUFVLEVBQUUrTSxhQUFjO01BQzFCOU0sT0FBTyxFQUFFLElBQUksQ0FBQ3VHLFVBQVUsQ0FBQyxDQUFFO01BQzNCdEcsT0FBTyxFQUFFQSxPQUFRO01BQ2pCK0csU0FBUyxFQUFFeEwsTUFBTSxDQUFDLFdBQVcsQ0FBRTtNQUMvQjRTLE1BQU0sRUFBRTtRQUNOQyxTQUFTLGVBQUVuVCxLQUFBLENBQUF1QixhQUFBLENBQUNWLE1BQU07VUFBQ2lMLFNBQVMsRUFBRW5MLE9BQU8sQ0FBQ0wsTUFBTSxFQUFFLGNBQWM7UUFBRSxDQUFFO01BQ2xFLENBQUU7TUFDRjhTLE1BQU0sRUFBRTtRQUFFQyxDQUFDLEVBQUU7TUFBYztJQUFFLEdBQ3pCakIsV0FBVyxFQUNYblIsS0FBSyxFQUNMaVIsYUFBYTtNQUNqQjFQLElBQUksRUFBRWE7SUFBVSxFQUNqQixDQUNELENBQ0g7SUFFRCxPQUFPNE8sUUFBUSxLQUFLLElBQUksZ0JBQ3RCalMsS0FBQSxDQUFBdUIsYUFBQSxDQUFDdEIsV0FBVztNQUFDcVQsT0FBTyxFQUFFOVM7SUFBYSxHQUFFcVMsWUFBMEIsQ0FBQyxHQUVoRUEsWUFDRDtFQUNIO0FBQ0Y7QUFBQzlRLGVBQUEsQ0F0NEJLSixRQUFRLGtCQUNVO0VBQ3BCc1EsUUFBUSxFQUFFLEtBQUs7RUFDZmpCLFNBQVMsRUFBRSxJQUFJO0VBQ2ZoSCxZQUFZLEVBQUUsSUFBSTtFQUNsQnVKLE9BQU8sRUFBRSxFQUFFO0VBQ1h2SyxjQUFjLEVBQUUsSUFBSTtFQUNwQkQsUUFBUSxFQUFFLElBQUk7RUFDZEQsWUFBWSxFQUFFLElBQUk7RUFDbEJ6QixZQUFZLEVBQUUsSUFBSTtFQUNsQndHLE9BQU8sRUFBRTtJQUNQMEUsSUFBSSxFQUFFLElBQUk7SUFDVnJFLFdBQVcsRUFBRSxDQUFDO0VBQ2hCO0FBQ0YsQ0FBQztBQTAzQkgsZUFBZXpOLFlBQVksQ0FBQ2tCLFFBQVEsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
|
|
962
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBcHBzdG9yZU91dGxpbmVkIiwiQ2hlY2tPdXRsaW5lZCIsIkNvbHVtbkhlaWdodE91dGxpbmVkIiwiU2VhcmNoT3V0bGluZWQiLCJTb3J0QXNjZW5kaW5nT3V0bGluZWQiLCJTb3J0RGVzY2VuZGluZ091dGxpbmVkIiwiUmVkb091dGxpbmVkIiwiaXNFbXB0eU9iaiIsIlN0b3JlIiwiUGFnZVN0b3JlIiwidXRpbHMiLCJSZWFjdCIsIkRuZFByb3ZpZGVyIiwiQm9keVJvdyIsIkRuZENvbnRleHRUeXBlIiwiSUJvZHlSb3dQcm9wcyIsInRyZWVVdGlscyIsInN0eWxlcyIsIkJvZHlSb3dDb21wb25lbnQiLCJIVE1MNUJhY2tlbmQiLCJ3aXRoWmhMb2NhbGUiLCJSZXNpemFibGUiLCJnZXRMZXNzIiwiZ2V0Tm9kZSIsIk5vRGF0YSIsImdldFN0b3JhZ2UiLCJjb25maWciLCJSZXNpemVhYmxlVGl0bGUiLCJwcm9wcyIsIm9uUmVzaXplIiwid2lkdGgiLCJyZXN0UHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJjcmVhdGVFbGVtZW50IiwiaGVpZ2h0IiwiZHJhZ2dhYmxlT3B0cyIsImVuYWJsZVVzZXJTZWxlY3RIYWNrIiwiTlNDVGFibGUiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsIl9hdXRvVHlwZSIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsIm9uQmVmb3JlTG9hZCIsImxvYWQiLCJoZWFkZXIiLCJjZWxsIiwiaW5kZXgiLCJlIiwiX3JlZiIsInNpemUiLCJjb2xzIiwic3RhdGUiLCJuZXh0Q29sdW1ucyIsIl9vYmplY3RTcHJlYWQiLCJzZXRTdGF0ZSIsImV2IiwiZGF0YSIsIkpTT04iLCJwYXJzZSIsIl90aGlzIiwiZXZlbnRUeXBlIiwicGF5bG9hZCIsInRhYmxlU2l6ZSIsImRyYWdJbmRleCIsImhvdmVySW5kZXgiLCJkcmFnIiwidGFyZ2V0IiwiZHJhZ05vZGUiLCJyZWNvcmQiLCJ0YXJnZXROb2RlIiwibW92ZUFycmF5IiwiaWRzIiwicGFyZW50Tm9kZSIsImdldENoaWxkTm9kZUlkcyIsInBhcmFtcyIsImlkIiwicGFyZW50SWQiLCJhdHRyaWJ1dGUiLCJtb3ZlUm93Iiwic3RvcmUiLCJyZWxvYWQiLCJtb2RhbCIsInR5cGUiLCJzdG9yZVByZWZpeCIsImF1dG9UeXBlIiwiY29udGVudCIsImRhdGFTb3VyY2UiLCJjb2x1bW5zIiwibG9hZGluZyIsInBhZ2luYXRpb24iLCJhY3RpdmVJbmRleCIsInNlYXJjaFRleHQiLCJmaWVsZE9wdGlvbiIsInNlYXJjaENvbG9yIiwic29ydHMiLCJmaWx0ZXJQYXJhbXMiLCJzb3J0VHlwZSIsInNvcnRlciIsInNvcnRJbmZvIiwiZGVmYXVsdFNvcnQiLCJjaGVja0NvbHVtbiIsImRlZmF1bHRDaGVjayIsInNlbGVjdGVkUm93S2V5cyIsInNlbGVjdGVkUm93RGF0YXMiLCJfcmVmMiIsImxpc3RlbmVycyIsImxpc3RlbmVyc1Byb3BzIiwicmVzdFN0b3JlIiwiX2V4Y2x1ZGVkMiIsInN0b3JlUHJvcHMiLCJtb2RlbCIsImNvbXBvbmVudCIsIm9wdGlvbnMiLCJjYWxsYmFjayIsImRhdGFDaGFuZ2VkIiwibW9kZWxEYXRhIiwicGFnaW5nIiwiZ2V0UGFnaW5hdGlvbiIsIm9uRXJyb3JMb2FkIiwiZXJyIiwicmVzcG9uc2UiLCJhdXRvTG9hZCIsIk9iamVjdCIsImFzc2lnbiIsImN1cnJlbnQiLCJjb21wb25lbnREaWRNb3VudCIsInJlc2l6ZUNvbHVtbiIsInNldERhdGEiLCJ3aW5kb3ciLCJhZGRFdmVudExpc3RlbmVyIiwibGlzdGVuTWVzc2FnZSIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImNvbXBvbmVudERpZFVwZGF0ZSIsInByZXZQcm9wcyIsInByZVN0YXRlIiwicmVzZXRDb2x1bW4iLCJuZXdDb2xzIiwiY29sc3MiLCJtYXAiLCJjb2wiLCJ0ZW1wIiwib25IZWFkZXJDZWxsIiwiY29sdW1uIiwiaGFuZGxlUmVzaXplIiwicHVzaCIsImNsZWFyU2VsZWN0Q29sb3IiLCJnZXRQYWdpbmF0aW9uQnlTdG9yZSIsIm9uQ2hhbmdlIiwiZmlsdGVycyIsImV4dHJhIiwiYXV0b09uQ2hhbmdlIiwiYXV0b1NvcnQiLCJhdXRvUGFnaW5hdGlvbiIsImlzTXVsdGlwbGUiLCJBcnJheSIsImlzQXJyYXkiLCJoYW5kbGVQYWdpbmF0aW9uIiwicCIsImN1cnJlbnRLZXkiLCJwYWdlU2l6ZUtleSIsInBhZ2VTaXplIiwiYXNjUGFyYW1zIiwiZ2V0U29ydFBhcmFtIiwib25DaGFuZ2VGbiIsImdldFN0b3JlIiwiZ2V0TW9kZWwiLCJoYW5kbGVTZWFyY2giLCJ2YWwiLCJmaWx0ZXJDb2x1bW4iLCJjaGVja2VkVmFsdWUiLCJsZW5ndGgiLCJfbWVzc2FnZSIsIndhcm5pbmciLCJmaWx0ZXJDb2x1bW5zIiwibmV3Q29sIiwiaW5jbHVkZXMiLCJkYXRhSW5kZXgiLCJpbml0U2hvdyIsInNvcnRTdGF0ZSIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsInNvcnRTZWFyY2giLCJvcmRlckl0ZW1zIiwiZmllbGQiLCJhc2MiLCJvcmRlciIsImZvckVhY2giLCJ2Iiwic3RyaW5naWZ5IiwiZ2V0Q29sdW1ucyIsInNvcnRGaWVsZHMiLCJkZWZhdWx0U2hvd0NvbHMiLCJmaWx0ZXIiLCJlbGxpcHNpcyIsInJlbmRlciIsInNob3dUaXRsZSIsInRleHQiLCJ0aXRsZSIsImNsYXNzTmFtZSIsInN0eWxlIiwiaW5kZXhPZiIsInNvcnRPcmRlciIsIm11bHRpcGxlIiwiaXRlbSIsImZpbHRlclByb3BzIiwib2JqIiwic2VhcmNoS2V5IiwiRGl2IiwicGxhY2Vob2xkZXIiLCJjb25jYXQiLCJyZWYiLCJ0YWJsZVNlYXJjaFJlZiIsImZpbHRlckRyb3Bkb3duIiwiX3JlZjMiLCJzZXRTZWxlY3RlZEtleXMiLCJzZWxlY3RlZEtleXMiLCJjb25maXJtIiwiY2xlYXJGaWx0ZXJzIiwiX1NwYWNlIiwiX0J1dHRvbiIsIm9uQ2xpY2siLCJfdGhpcyR0YWJsZVNlYXJjaFJlZiQiLCJuZXdGaWx0ZXJQYXJhbXMiLCJrZXkiLCJnZXRWYWx1ZSIsInNvcnRQYXJhbSIsImZpbHRlckljb24iLCJyZW5kZXJUb29sQmFyIiwiY29sTGlzdHMiLCJ0b29sYmFyIiwidGFibGVUb29sIiwic3RvcmVSZXF1ZXN0Q29uZmlnIiwidG9vbHMiLCJ0b29sc0NsaWNrIiwib25Ub29sQ2xpY2siLCJzaXplSXRlbSIsInNvcnRJdGVtIiwic29ydENvbnRlbnQiLCJGcmFnbWVudCIsImN1cnNvciIsImNvbG9yIiwic2l6ZUNvbnRlbnQiLCJfQ2hlY2tib3giLCJHcm91cCIsImJpbmQiLCJsYWJlbCIsInZhbHVlIiwiZGlzYWJsZWQiLCJmb250U2l6ZSIsIl9Qb3BvdmVyIiwicGxhY2VtZW50IiwidHJpZ2dlciIsIm92ZXJsYXlTdHlsZSIsIm1pbldpZHRoIiwibWF4V2lkdGgiLCJtYXJnaW5SaWdodCIsIm9uUmVmcmVzaCIsImdldFNlbGVjdGVkUm93S2V5cyIsImdldFNlbGVjdGVkUm93RGF0YXMiLCJyZXNldFNlbGVjdGVkUm93S2V5cyIsInNldFNlbGVjdGVkUm93S2V5cyIsInNldFNlbGVjdGVkUm93RGF0YXMiLCJyb3dTZWxlY3Rpb25PblNlbGVjdCIsInNlbGVjdGVkIiwicm93S2V5IiwibmV3U2VsZWN0ZWRSb3dLZXlzIiwibmV3U2VsZWN0ZWRSb3dEYXRhcyIsInNwbGljZSIsInJvd1NlbGVjdGlvbk9uU2VsZWN0QWxsIiwic2VsZWN0ZWRSb3dzIiwiY2hhbmdlUm93cyIsIm5ld2lkcyIsIm5ld2RhdGFzIiwiY2hhbmdlSWRzIiwiX3RoaXMkcHJvcHMkdG9vbGJhciIsIm9taXQiLCJjbGlja0NoYW5nZUNvbG9yIiwicG9zaXRpb24iLCJzaG93U2l6ZUNoYW5nZXIiLCJzaG93UXVpY2tKdW1wZXIiLCJzaG93VG90YWwiLCJ0b3RhbCIsIl9yZWY0IiwiZnJvbSIsInRvIiwib25Sb3dGbiIsIm9uUm93IiwiY3VzdG9tIiwib25DbGlja0ZuIiwiZXZlbnQiLCJyb3dDbGFzc05hbWUiLCJjbGlja1Jvd1N0eWxlIiwibmV3RGF0YVNvdXJjZSIsImdldFNlYXJjaE1lbnVEYXRhcyIsInRyZWVEYXRhcyIsImV4cGFuZGVkUm93S2V5cyIsIm9wZW5LZXlzIiwiZHJhZ2FibGUiLCJkcmFnYWJsZVByb3BzIiwiY29tcG9uZW50cyIsInJlc2l6ZVByb3BzIiwidG9vbEZsYWciLCJ0b29scHJvcHMiLCJzaG93Iiwic2hvd1Jvd1NlbGVjdGlvbiIsInJvd1NlbGVjdGlvbiIsIm9uU2VsZWN0Iiwib25TZWxlY3RBbGwiLCJjb2x1bW5XaWR0aCIsIkRlZmF1bHRUYWJsZSIsIl9UYWJsZSIsIl9leHRlbmRzIiwiY2hpbGRyZW5Db2x1bW5OYW1lIiwic2hlaXRlbSIsImxvY2FsZSIsImVtcHR5VGV4dCIsInNjcm9sbCIsIngiLCJiYWNrZW5kIiwiZHJhZ1VybCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvdGFibGUvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIEBEZXNjcmlwdHRpb246XHJcbiAqIEB2ZXJzaW9uOlxyXG4gKiBAQXV0aG9yOiByeHpodVxyXG4gKiBARGF0ZTogMjAyMS0wMy0yMyAwODo0NjoyMFxyXG4gKiBATGFzdEVkaXRvcnM6IHJ4emh1XHJcbiAqIEBMYXN0RWRpdFRpbWU6IDIwMjEtMDMtMjMgMTA6MzA6NDJcclxuICovXHJcbmltcG9ydCB7XHJcbiAgQXBwc3RvcmVPdXRsaW5lZCxcclxuICBDaGVja091dGxpbmVkLFxyXG4gIENvbHVtbkhlaWdodE91dGxpbmVkLFxyXG4gIFNlYXJjaE91dGxpbmVkLFxyXG4gIFNvcnRBc2NlbmRpbmdPdXRsaW5lZCxcclxuICBTb3J0RGVzY2VuZGluZ091dGxpbmVkLFxyXG4gIFJlZG9PdXRsaW5lZCxcclxufSBmcm9tIFwiQGFudC1kZXNpZ24vaWNvbnNcIjtcclxuaW1wb3J0IHsgaXNFbXB0eU9iaiB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgU3RvcmUsIHsgUGFnZVN0b3JlLCBTdG9yZVByb3BzIH0gZnJvbSBcIkBiai1uc2MvbXNuXCI7XHJcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSBcIkBiai1uc2MvbXNuL2xpYi91dGlsc1wiO1xyXG5pbXBvcnQge1xyXG4gIEJ1dHRvbixcclxuICBDaGVja2JveCxcclxuICBDaGVja2JveE9wdGlvblR5cGUsXHJcbiAgTWVudSxcclxuICBtZXNzYWdlLFxyXG4gIFBvcG92ZXIsXHJcbiAgU3BhY2UsXHJcbiAgVGFibGUsXHJcbiAgVGFibGVQcm9wcyxcclxuICBUb29sdGlwLFxyXG59IGZyb20gXCJhbnRkXCI7XHJcbmltcG9ydCB7IENvbHVtblR5cGUsIFRhYmxlUGFnaW5hdGlvbkNvbmZpZyB9IGZyb20gXCJhbnRkL2xpYi90YWJsZVwiO1xyXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgRG5kUHJvdmlkZXIgfSBmcm9tIFwicmVhY3QtZG5kXCI7XHJcbmltcG9ydCBCb2R5Um93LCB7IERuZENvbnRleHRUeXBlLCBJQm9keVJvd1Byb3BzIH0gZnJvbSBcIi4uL2NvbW1vbi9Cb2R5Um93XCI7XHJcbmltcG9ydCB0cmVlVXRpbHMgZnJvbSBcIi4uLy4uL3RyZWVVdGlsc1wiO1xyXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL2luZGV4Lm1vZHVsZS5sZXNzXCI7XHJcbmNvbnN0IHsgQm9keVJvd0NvbXBvbmVudCwgSFRNTDVCYWNrZW5kIH0gPSBCb2R5Um93O1xyXG5pbXBvcnQgd2l0aFpoTG9jYWxlIGZyb20gXCIuLi9jb21tb24vd2l0aFpoTG9jYWxlXCI7XHJcbmltcG9ydCB7IFJlc2l6YWJsZSB9IGZyb20gXCJyZWFjdC1yZXNpemFibGVcIjtcclxuaW1wb3J0IFwiLi9yZXNpemUubW9kdWxlLmxlc3NcIjtcclxuaW1wb3J0IHsgZ2V0TGVzcywgZ2V0Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgTm9EYXRhIGZyb20gXCIuLi8uLi9iYXNlL2NvbW1vbi9Ob0RhdGFcIjtcclxuaW1wb3J0IHsgZ2V0U3RvcmFnZSB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgY29uZmlnIGZyb20gXCIuLi8uLi9jb25maWdcIjtcclxuaW1wb3J0IEVsbGlwc2VDZWxsIGZyb20gXCIuLi9jb21tb24vRWxsaXBzZUNlbGxcIjtcclxuaW50ZXJmYWNlIElEcmFnUGFyYW1zIHtcclxuICBpZDogc3RyaW5nIHwgbnVtYmVyO1xyXG4gIGlkczogQXJyYXk8c3RyaW5nIHwgbnVtYmVyPjtcclxuICBwYXJlbnRJZDogc3RyaW5nIHwgbnVtYmVyO1xyXG59XHJcbi8vIGludGVyZmFjZSBTdG9yZVByb3BzIHt9XHJcblxyXG5leHBvcnQgdHlwZSBTdG9yZVR5cGUgPSBcIlBhZ2VTdG9yZVwiIHwgXCJUcmVlU3RvcmVcIiB8IFwiQmFzZVN0b3JlXCI7XHJcblxyXG5pbnRlcmZhY2UgTlNDVGFibGVQYWdpbmF0aW9uIGV4dGVuZHMgVGFibGVQYWdpbmF0aW9uQ29uZmlnIHtcclxuICB0b3RhbEtleT86IHN0cmluZztcclxuICBwYWdlU2l6ZUtleT86IHN0cmluZztcclxuICBjdXJyZW50S2V5Pzogc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgVG9vbEJhclByb3BzIHtcclxuICBzaG93OiBib29sZWFuO1xyXG4gIHRvb2xzPzogQXJyYXk8c3RyaW5nPjtcclxuICBvblRvb2xDbGljaz86IHsgb25SZWZyZXNoPzogYW55OyBvblNvcnQ/OiBhbnkgfTtcclxufVxyXG5pbnRlcmZhY2UgTlNDVGFibGVQcm9wcyBleHRlbmRzIFRhYmxlUHJvcHM8YW55PiB7XHJcbiAgc3RvcmU/OiBTdG9yZVByb3BzO1xyXG4gIHNob3dUb3RhbD86IGJvb2xlYW47IC8vIOaYr+WQpuaYvuekuuaAu+adoeaVsOS/oeaBr++8jOm7mOiupHRydWVcclxuICBkcmFnYWJsZT86IGJvb2xlYW47IC8vIOaYr+WQpuWPr+aLluWKqCwg6buY6K6kZmFsc2VcclxuICBmaWx0ZXJDb2x1bW4/OiBib29sZWFuOyAvLyDmmK/lkKbmlK/mjIHov4fmu6TmmL7npLrooajmoLzliJcsIOm7mOiupHRydWVcclxuICBtb3ZlUm93PzogKHBhcmFtczogSURyYWdQYXJhbXMpID0+IHZvaWQ7IC8vIOaLluaLveWujOaIkOWQjueahOWbnuiwg1xyXG4gIGRyYWdVcmw/OiBzdHJpbmc7IC8vIOS/neWtmOaLluaLveaOkuW6j+eahOaOpeWPo1xyXG4gIHBhZ2luYXRpb24/OiBmYWxzZSB8IE5TQ1RhYmxlUGFnaW5hdGlvbjtcclxuICBhdXRvUGFnaW5hdGlvbj86IGJvb2xlYW47IC8vIOe7hOS7tuaYr+WQpuiHquWKqOWkhOeQhuWIhumhtVxyXG4gIGF1dG9Tb3J0PzogYm9vbGVhbjsgLy/nu4Tku7bmmK/lkKboh6rliqjlpITnkIbmjpLluo9cclxuICBhdXRvT25DaGFuZ2U/OiBib29sZWFuOyAvLyDnu4Tku7bmmK/lkKboh6rliqhvbkNoYW5nZSwgZmFsc2XliJnkuI3lgZrku7vkvZXlpITnkIblhajpg6jkuqTnu5nosIPnlKjmlrlcclxuICByZXNpemVDb2x1bW4/OiBib29sZWFuO1xyXG4gIHNvcnRGaWVsZHM/OiBBcnJheTxzdHJpbmc+OyAvL+mcgOimgeaOkuW6j+eahOWtl+autUluZGV4XHJcbiAgdG9vbGJhcj86IFRvb2xCYXJQcm9wcyB8IGJvb2xlYW47XHJcbiAgYXV0b1NpemU/OiBib29sZWFuO1xyXG4gIHNvcnRTZWFyY2g/OiBib29sZWFuOyAvL+aYr+WQpua3u+WKoOaOkuW6j+afpeivoizpu5jorqR0cnVlXHJcbiAgLy8gdGFibGVTaXplPzogXCJzbWFsbFwiIHwgXCJtaWRkbGVcIiB8IFwiZGVmYXVsdFwiIHwgXCJhdXRvXCI7XHJcbiAgLy8gc2l6ZT86IFwic21hbGxcIiB8IFwibWlkZGxlXCIgfCBcImRlZmF1bHRcIiB8IFwiYXV0b1wiO1xyXG4gIHNob3dSb3dTZWxlY3Rpb24/OiBib29sZWFuO1xyXG4gIHJvd0tleT86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgSU5TQ1RhYmxlUHJvcHMgPSB0eXBlb2YgTlNDVGFibGUuZGVmYXVsdFByb3BzICYgTlNDVGFibGVQcm9wcztcclxuZXhwb3J0IHsgRG5kQ29udGV4dFR5cGUsIElCb2R5Um93UHJvcHMgfTtcclxuXHJcbmNvbnN0IFJlc2l6ZWFibGVUaXRsZSA9IChwcm9wczogYW55KSA9PiB7XHJcbiAgY29uc3QgeyBvblJlc2l6ZSwgd2lkdGgsIC4uLnJlc3RQcm9wcyB9ID0gcHJvcHM7XHJcbiAgcmV0dXJuIChcclxuICAgIDxSZXNpemFibGVcclxuICAgICAgd2lkdGg9e3dpZHRoIHx8IDE1MH1cclxuICAgICAgaGVpZ2h0PXswfVxyXG4gICAgICBvblJlc2l6ZT17b25SZXNpemV9XHJcbiAgICAgIGRyYWdnYWJsZU9wdHM9e3sgZW5hYmxlVXNlclNlbGVjdEhhY2s6IGZhbHNlIH19XHJcbiAgICA+XHJcbiAgICAgIDx0aCB7Li4ucmVzdFByb3BzfSAvPlxyXG4gICAgPC9SZXNpemFibGU+XHJcbiAgKTtcclxufTtcclxuY2xhc3MgTlNDVGFibGUgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8SU5TQ1RhYmxlUHJvcHMsIGFueT4ge1xyXG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XHJcbiAgICBkcmFnYWJsZTogZmFsc2UsXHJcbiAgICBzaG93VG90YWw6IHRydWUsXHJcbiAgICBmaWx0ZXJDb2x1bW46IHRydWUsXHJcbiAgICBkcmFnVXJsOiBcIlwiLFxyXG4gICAgYXV0b1BhZ2luYXRpb246IHRydWUsXHJcbiAgICBhdXRvU29ydDogdHJ1ZSxcclxuICAgIGF1dG9PbkNoYW5nZTogdHJ1ZSxcclxuICAgIHJlc2l6ZUNvbHVtbjogdHJ1ZSxcclxuICAgIHRvb2xiYXI6IHtcclxuICAgICAgc2hvdzogdHJ1ZSxcclxuICAgICAgb25Ub29sQ2xpY2s6IHt9IGFzIGFueSxcclxuICAgIH0gYXMgYW55LFxyXG4gIH07XHJcblxyXG4gIHN0b3JlID0ge30gYXMgU3RvcmVQcm9wcztcclxuICB0aEljb25SZWYgPSBSZWFjdC5jcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XHJcbiAgdGFibGVTZWFyY2hSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG5cclxuICBsaXN0ZW5lcnMgPSB7XHJcbiAgICBvbkJlZm9yZUxvYWQ6IG51bGwsXHJcbiAgICBsb2FkOiBudWxsLFxyXG4gIH07XHJcblxyXG4gIGNvbXBvbmVudHMgPSB7XHJcbiAgICBoZWFkZXI6IHtcclxuICAgICAgY2VsbDogUmVzaXplYWJsZVRpdGxlLFxyXG4gICAgfSxcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgc3VwZXIocHJvcHMpO1xyXG4gICAgbGV0IG1vZGFsID0gcHJvcHMudHlwZSB8fCBcImF1dG9cIjtcclxuICAgIGxldCBzdG9yZVByZWZpeCA9IGdldFN0b3JhZ2UoXCJzdG9yZS1wcmUta2V5XCIpO1xyXG4gICAgbGV0IGF1dG9UeXBlID0gZ2V0U3RvcmFnZShcclxuICAgICAgc3RvcmVQcmVmaXggPyBzdG9yZVByZWZpeCArIFwidGFibGVTaXplXCIgOiBcInRhYmxlU2l6ZVwiXHJcbiAgICApO1xyXG4gICAgYXV0b1R5cGUgPSBhdXRvVHlwZT8uY29udGVudDtcclxuICAgIHRoaXMuc3RhdGUgPSB7XHJcbiAgICAgIGRhdGFTb3VyY2U6IFtdLFxyXG4gICAgICBjb2x1bW5zOiBbXSxcclxuICAgICAgbG9hZGluZzogZmFsc2UsXHJcbiAgICAgIHBhZ2luYXRpb246IHt9LFxyXG4gICAgICBhY3RpdmVJbmRleDogLTEsXHJcbiAgICAgIC8v5pCc57Si5paH5pysXHJcbiAgICAgIHNlYXJjaFRleHQ6IG51bGwsXHJcbiAgICAgIGZpZWxkT3B0aW9uOiBudWxsLFxyXG4gICAgICBzZWFyY2hDb2xvcjogbnVsbCxcclxuICAgICAgY29sczogW10sXHJcbiAgICAgIHNvcnRzOiBbXSxcclxuICAgICAgZmlsdGVyUGFyYW1zOiB7fSxcclxuICAgICAgdGFibGVTaXplOiB0aGlzLnByb3BzLnNpemUgfHwgYXV0b1R5cGUgfHwgXCJkZWZhdWx0XCIsXHJcbiAgICAgIHNvcnRUeXBlOiBcInNpbmdsZVwiLFxyXG4gICAgICBzb3J0ZXI6IFtdLCAvL+iusOW9leW9k+WJjeaOkuW6j+Wtl+autVxyXG4gICAgICBzb3J0SW5mbzoge30sXHJcbiAgICAgIGRlZmF1bHRTb3J0OiB0cnVlLFxyXG4gICAgICBjaGVja0NvbHVtbjogW10sXHJcbiAgICAgIGRlZmF1bHRDaGVjazogdHJ1ZSxcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbXSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogW10sXHJcbiAgICB9O1xyXG4gICAgaWYgKHByb3BzLnN0b3JlIGluc3RhbmNlb2YgU3RvcmUpIHtcclxuICAgICAgdGhpcy5zdG9yZSA9IHByb3BzLnN0b3JlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgeyBsaXN0ZW5lcnM6IGxpc3RlbmVyc1Byb3BzID0ge30sIC4uLnJlc3RTdG9yZSB9ID1cclxuICAgICAgICBwcm9wcy5zdG9yZSB8fCB7fTtcclxuICAgICAgY29uc3Qgc3RvcmVQcm9wcyA9IHtcclxuICAgICAgICBtb2RlbDogXCJtb2RlbFwiLFxyXG4gICAgICAgIGNvbXBvbmVudDogdGhpcyxcclxuICAgICAgICBsaXN0ZW5lcnM6IHtcclxuICAgICAgICAgIG9uQmVmb3JlTG9hZDogKHN0b3JlLCBvcHRpb25zKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiB0cnVlIH0pO1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQcm9wcy5vbkJlZm9yZUxvYWQsIHRoaXMsIFtzdG9yZSwgb3B0aW9uc10pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGRhdGFDaGFuZ2VkOiAoZGF0YSwgbW9kZWxEYXRhLCBzdG9yZSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgcGFnaW5nID0gISh0aGlzLnByb3BzLnBhZ2luYXRpb24gPT09IGZhbHNlKTtcclxuICAgICAgICAgICAgaWYgKHBhZ2luZyAmJiAhdGhpcy5wcm9wcy5kYXRhU291cmNlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlOiBtb2RlbERhdGEsXHJcbiAgICAgICAgICAgICAgICBwYWdpbmF0aW9uOiBzdG9yZS5nZXRQYWdpbmF0aW9uKCksXHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGFjdGl2ZUluZGV4OiAtMSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgZGF0YVNvdXJjZTogbW9kZWxEYXRhLCBsb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUHJvcHMuZGF0YUNoYW5nZWQsIHRoaXMsIFtcclxuICAgICAgICAgICAgICBkYXRhLFxyXG4gICAgICAgICAgICAgIG1vZGVsRGF0YSxcclxuICAgICAgICAgICAgICBzdG9yZSxcclxuICAgICAgICAgICAgICBwYWdpbmcsXHJcbiAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGxvYWQ6IChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSA9PiB7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1Byb3BzLmxvYWQsIHRoaXMsIFtkYXRhLCBtb2RlbERhdGEsIHN0b3JlXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgb25FcnJvckxvYWQ6IChlcnIsIHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUHJvcHMub25FcnJvckxvYWQsIHRoaXMsIFtlcnIsIHJlc3BvbnNlXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZGF0YTogcmVzdFN0b3JlLmRhdGFcclxuICAgICAgICAgID8gcmVzdFN0b3JlLmRhdGFcclxuICAgICAgICAgIDogcHJvcHMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgPyBwcm9wcy5kYXRhU291cmNlXHJcbiAgICAgICAgICA6IG51bGwsXHJcbiAgICAgICAgLi4ucmVzdFN0b3JlLFxyXG4gICAgICAgIGF1dG9Mb2FkOiByZXN0U3RvcmUuYXV0b0xvYWQgPT09IGZhbHNlID8gZmFsc2UgOiB0cnVlLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLnN0b3JlID0gbmV3IFBhZ2VTdG9yZShcclxuICAgICAgICBPYmplY3QuYXNzaWduKHt9LCBzdG9yZVByb3BzLCB7XHJcbiAgICAgICAgICBwYWdpbmF0aW9uOiB7IGN1cnJlbnQ6IDEsIC4uLnRoaXMucHJvcHMucGFnaW5hdGlvbiB9LFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVSZXNpemUgPVxyXG4gICAgKGluZGV4OiBhbnkpID0+XHJcbiAgICAoZTogYW55LCB7IHNpemUgfTogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY29scyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgY29uc3QgbmV4dENvbHVtbnMgPSBbLi4uY29sc107XHJcbiAgICAgIG5leHRDb2x1bW5zW2luZGV4XSA9IHtcclxuICAgICAgICAuLi5uZXh0Q29sdW1uc1tpbmRleF0sXHJcbiAgICAgICAgd2lkdGg6IHNpemUud2lkdGgsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGNvbHM6IG5leHRDb2x1bW5zLFxyXG4gICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyByZXNpemVDb2x1bW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIXJlc2l6ZUNvbHVtbikge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHsgY29sdW1uczogWy4uLnRoaXMucHJvcHMuY29sdW1uc10gfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHsgY29sczogWy4uLnRoaXMucHJvcHMuY29sdW1uc10gfSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBzdG9yZSA9IHRoaXMucHJvcHMuc3RvcmU7XHJcbiAgICBpZiAoc3RvcmUgJiYgc3RvcmUuZGF0YSkge1xyXG4gICAgICB0aGlzLnN0b3JlLnNldERhdGEoc3RvcmUuZGF0YSk7XHJcbiAgICB9XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5saXN0ZW5NZXNzYWdlKTtcclxuICB9XHJcbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XHJcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5saXN0ZW5NZXNzYWdlKTtcclxuICB9XHJcbiAgbGlzdGVuTWVzc2FnZSA9IChldikgPT4ge1xyXG4gICAgY29uc3QgZGF0YSA9IHR5cGVvZiBldi5kYXRhID09PSBcInN0cmluZ1wiID8gSlNPTi5wYXJzZShldi5kYXRhKSA6IGV2LmRhdGE7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgaWYgKGRhdGEuZXZlbnRUeXBlID09IFwiY2hhbmdlVGFibGVTaXplXCIpIHtcclxuICAgICAgY29uc3QgeyBwYXlsb2FkIH0gPSBkYXRhO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgcGF5bG9hZC5zaXplID09IFwiZGVmYXVsdFwiIHx8XHJcbiAgICAgICAgcGF5bG9hZC5zaXplID09IFwic21hbGxcIiB8fFxyXG4gICAgICAgIHBheWxvYWQuc2l6ZSA9PSBcIm1pZGRsZVwiXHJcbiAgICAgICkge1xyXG4gICAgICAgIF90aGlzLnNldFN0YXRlKHsgdGFibGVTaXplOiBwYXlsb2FkLnNpemUgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG4gIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMsIHByZVN0YXRlKSB7XHJcbiAgICBjb25zdCB7IHJlc2l6ZUNvbHVtbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmICghcmVzaXplQ29sdW1uKSB7XHJcbiAgICAgIGlmICh0aGlzLnByb3BzLmNvbHVtbnMgIT09IHByZXZQcm9wcy5jb2x1bW5zKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGNvbHVtbnM6IHRoaXMucHJvcHMuY29sdW1ucyB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHByZVN0YXRlLmNvbHMgIT09IHRoaXMuc3RhdGUuY29scykge1xyXG4gICAgICAgIHRoaXMucmVzZXRDb2x1bW4oKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5wcm9wcy5jb2x1bW5zICE9PSBwcmV2UHJvcHMuY29sdW1ucykge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBjb2xzOiB0aGlzLnByb3BzLmNvbHVtbnMgfSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHByZXZQcm9wcy5zaXplICE9PSB0aGlzLnByb3BzLnNpemUpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgdGFibGVTaXplOiB0aGlzLnByb3BzLnNpemUgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0Q29sdW1uKCkge1xyXG4gICAgY29uc3QgeyBjb2xzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgbmV3Q29sczogYW55ID0gW107XHJcbiAgICBsZXQgY29sc3MgPSBjb2xzIHx8IFtdO1xyXG4gICAgY29sc3MubWFwKChjb2w6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBsZXQgdGVtcCA9IHtcclxuICAgICAgICAuLi5jb2wsXHJcbiAgICAgICAgb25IZWFkZXJDZWxsOiAoY29sdW1uOiB7IHdpZHRoOiBhbnkgfSkgPT4gKHtcclxuICAgICAgICAgIHdpZHRoOiBjb2x1bW4ud2lkdGgsXHJcbiAgICAgICAgICBvblJlc2l6ZTogdGhpcy5oYW5kbGVSZXNpemUoaW5kZXgpLFxyXG4gICAgICAgIH0pLFxyXG4gICAgICB9O1xyXG4gICAgICBuZXdDb2xzLnB1c2godGVtcCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBjb2x1bW5zOiBuZXdDb2xzLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmuIXpmaTpgInkuK3popzoibJcclxuICAgKi9cclxuICBjbGVhclNlbGVjdENvbG9yKCkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGFjdGl2ZUluZGV4OiAtMSB9KTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGFnaW5hdGlvbkJ5U3RvcmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5nZXRQYWdpbmF0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZShwYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGF1dG9PbkNoYW5nZSA9IHRydWUsXHJcbiAgICAgIGF1dG9Tb3J0LFxyXG4gICAgICBhdXRvUGFnaW5hdGlvbixcclxuICAgICAgb25DaGFuZ2UsXHJcbiAgICAgIHN0b3JlLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGZpbHRlclBhcmFtcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IGlzTXVsdGlwbGUgPSBBcnJheS5pc0FycmF5KHNvcnRlcik7XHJcbiAgICBpZiAoYXV0b09uQ2hhbmdlID09PSBmYWxzZSB8fCAhc3RvcmUpIHtcclxuICAgICAgb25DaGFuZ2UgJiYgb25DaGFuZ2UocGFnaW5hdGlvbiwgZmlsdGVycywgc29ydGVyLCBleHRyYSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGhhbmRsZVBhZ2luYXRpb24gPSAoKSA9PiB7XHJcbiAgICAgIGxldCBwYXJhbXMgPSB7fSBhcyB7XHJcbiAgICAgICAgc2l6ZT86IHN0cmluZztcclxuICAgICAgICBwYWdlU2l6ZT86IHN0cmluZztcclxuICAgICAgICBhc2NzPzogc3RyaW5nO1xyXG4gICAgICAgIGRlc2NzPzogc3RyaW5nO1xyXG4gICAgICAgIFtwcm9wTmFtZTogc3RyaW5nXTogc3RyaW5nO1xyXG4gICAgICB9O1xyXG4gICAgICBjb25zdCBwYWdpbmcgPSB0aGlzLmdldFBhZ2luYXRpb25CeVN0b3JlKCkgfHwge307XHJcbiAgICAgIGlmICghaXNFbXB0eU9iaihwYWdpbmF0aW9uKSkge1xyXG4gICAgICAgIGNvbnN0IHAgPSB7XHJcbiAgICAgICAgICBbcGFnaW5nLmN1cnJlbnRLZXkgfHwgXCJjdXJyZW50XCJdOiBwYWdpbmF0aW9uLmN1cnJlbnQsXHJcbiAgICAgICAgICBbcGFnaW5nLnBhZ2VTaXplS2V5IHx8IFwic2l6ZVwiXTogcGFnaW5hdGlvbi5wYWdlU2l6ZSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGFyYW1zLCBwKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgYXNjUGFyYW1zID0gdGhpcy5nZXRTb3J0UGFyYW0oc29ydGVyLCB0cnVlKTtcclxuICAgICAgaWYgKGlzTXVsdGlwbGUpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgc29ydGVyIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKCFpc011bHRpcGxlICYmICFpc0VtcHR5T2JqKHNvcnRlcikpIHtcclxuICAgICAgICBzb3J0ZXIuY29sdW1uICYmXHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgc29ydGVyOiBbc29ydGVyXSwgZGVmYXVsdFNvcnQ6IGZhbHNlIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBzb3J0ZXI6IFtdIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHBhcmFtcyA9IHsgLi4uZmlsdGVyUGFyYW1zLCAuLi5wYXJhbXMsIC4uLmFzY1BhcmFtcyB9O1xyXG4gICAgICBhdXRvU29ydCAmJiB0aGlzLnN0b3JlLnJlbG9hZCh7IHBhcmFtcyB9KTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3Qgb25DaGFuZ2VGbiA9IHRoaXMucHJvcHMub25DaGFuZ2U7XHJcblxyXG4gICAgYXV0b1BhZ2luYXRpb24gJiYgaGFuZGxlUGFnaW5hdGlvbigpO1xyXG4gICAgLy8g55So5oi35Lyg5LqGb25DaGFuZ2Xkv53nlZnnlKjmiLfoh6rkuLvlpITnkIbooajmoLzlj5jljJbnmoTmnYPliptcclxuICAgIGlmIChvbkNoYW5nZUZuKSB7XHJcbiAgICAgIHV0aWxzLmNhbGxiYWNrKG9uQ2hhbmdlRm4sIHRoaXMsIFtwYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRTdG9yZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6I635Y+W5pWw5o2u5qih5Z6L5a+56LGhXHJcbiAgICovXHJcbiAgZ2V0TW9kZWwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5nZXRNb2RlbCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6I+c5Y2V5pCc57Si6L+H5ruk5pi+56S6XHJcbiAgICogQHBhcmFtIHtTdHJpbmd9IHZhbFxyXG4gICAqL1xyXG4gIGhhbmRsZVNlYXJjaCh2YWwsIGZpZWxkT3B0aW9uLCBzZWFyY2hDb2xvcikge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlYXJjaFRleHQ6IHZhbCxcclxuICAgICAgZmllbGRPcHRpb246IGZpZWxkT3B0aW9uLFxyXG4gICAgICBzZWFyY2hDb2xvcjogc2VhcmNoQ29sb3IsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaooeWdl+WIl+ihqOenu+WKqOaOkuW6j1xyXG4gICAqL1xyXG4gIG1vdmVSb3cgPSAoZHJhZ0luZGV4LCBob3ZlckluZGV4LCBkcmFnLCB0YXJnZXQpID0+IHtcclxuICAgIGNvbnN0IF90aGlzID0gdGhpcztcclxuICAgIGxldCBkcmFnTm9kZSA9IGRyYWcucmVjb3JkO1xyXG4gICAgbGV0IHRhcmdldE5vZGUgPSB0YXJnZXQucmVjb3JkO1xyXG4gICAgZHJhZ05vZGUubW92ZUFycmF5KGRyYWdOb2RlLCB0YXJnZXROb2RlKTtcclxuICAgIGxldCBpZHMgPSBkcmFnTm9kZS5wYXJlbnROb2RlLmdldENoaWxkTm9kZUlkcygpO1xyXG4gICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgaWQ6IGRyYWdOb2RlLmlkLFxyXG4gICAgICBwYXJlbnRJZDogZHJhZ05vZGUuYXR0cmlidXRlLnBhcmVudElkLFxyXG4gICAgICBpZHM6IGlkcyxcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMucHJvcHMubW92ZVJvdykge1xyXG4gICAgICB0aGlzLnByb3BzLm1vdmVSb3cocGFyYW1zKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc3RvcmUucmVsb2FkKCk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgZmlsdGVyQ29sdW1uKGNoZWNrZWRWYWx1ZSkge1xyXG4gICAgaWYgKGNoZWNrZWRWYWx1ZS5sZW5ndGggPT0gMCkge1xyXG4gICAgICBtZXNzYWdlLndhcm5pbmcoXCLoh7PlsJHmmL7npLrkuIDliJfvvIFcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGZpbHRlckNvbHVtbnMgPSB0aGlzLnByb3BzLmNvbHVtbnMubWFwKChjb2w6IENvbHVtblR5cGU8e30+KSA9PiB7XHJcbiAgICAgIGNvbnN0IG5ld0NvbCA9IHsgLi4uY29sIH0gYXMgQ29sdW1uVHlwZTx7fT4gJiB7IGluaXRTaG93OiBib29sZWFuIH07XHJcbiAgICAgIGlmIChjaGVja2VkVmFsdWUuaW5jbHVkZXMoY29sLmRhdGFJbmRleCkpIHtcclxuICAgICAgICBuZXdDb2wuaW5pdFNob3cgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5ld0NvbC5pbml0U2hvdyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBuZXdDb2w7XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IHsgcmVzaXplQ29sdW1uIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKCFyZXNpemVDb2x1bW4pIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgY29sdW1uczogZmlsdGVyQ29sdW1ucyxcclxuICAgICAgICBjaGVja0NvbHVtbjogY2hlY2tlZFZhbHVlLFxyXG4gICAgICAgIGRlZmF1bHRDaGVjazogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgY29sczogZmlsdGVyQ29sdW1ucyxcclxuICAgICAgICBjaGVja0NvbHVtbjogY2hlY2tlZFZhbHVlLFxyXG4gICAgICAgIGRlZmF1bHRDaGVjazogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRTb3J0UGFyYW0oc29ydGVyLCBzb3J0U3RhdGUgPSBmYWxzZSkge1xyXG4gICAgY29uc3QgaXNNdWx0aXBsZSA9IEFycmF5LmlzQXJyYXkoc29ydGVyKTtcclxuICAgIGNvbnN0IHsgc29ydFNlYXJjaCA9IHRydWUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIXNvcnRTZWFyY2gpIHtcclxuICAgICAgcmV0dXJuIHt9O1xyXG4gICAgfVxyXG4gICAgbGV0IHNvcnRJbmZvID0ge307XHJcbiAgICBsZXQgb3JkZXJJdGVtcyA9IFtdO1xyXG4gICAgaWYgKCFpc0VtcHR5T2JqKHNvcnRlcikgJiYgIWlzTXVsdGlwbGUgJiYgc29ydGVyLmNvbHVtbikge1xyXG4gICAgICBvcmRlckl0ZW1zID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGNvbHVtbjogc29ydGVyLmNvbHVtbi5maWVsZCB8fCBzb3J0ZXIuY29sdW1uLmRhdGFJbmRleCxcclxuICAgICAgICAgIGFzYzogc29ydGVyLm9yZGVyID09IFwiYXNjZW5kXCIsXHJcbiAgICAgICAgfSxcclxuICAgICAgXTtcclxuICAgICAgaWYgKHNvcnRlci5jb2x1bW4pIHNvcnRJbmZvW3NvcnRlci5jb2x1bW4uZGF0YUluZGV4XSA9IHNvcnRlci5vcmRlcjtcclxuICAgIH0gZWxzZSBpZiAoaXNNdWx0aXBsZSkge1xyXG4gICAgICBzb3J0ZXIuZm9yRWFjaCgodikgPT4ge1xyXG4gICAgICAgIHNvcnRJbmZvW3YuY29sdW1uLmRhdGFJbmRleF0gPSB2Lm9yZGVyO1xyXG4gICAgICAgIGxldCBmaWVsZCA9IHYuY29sdW1uLmZpZWxkIHx8IHYuY29sdW1uLmRhdGFJbmRleDtcclxuICAgICAgICBvcmRlckl0ZW1zLnB1c2goe1xyXG4gICAgICAgICAgY29sdW1uOiBmaWVsZCxcclxuICAgICAgICAgIGFzYzogdi5vcmRlciA9PSBcImFzY2VuZFwiLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmIChzb3J0U3RhdGUpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgc29ydEluZm86IHNvcnRJbmZvLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB7IG9yZGVySXRlbXM6IEpTT04uc3RyaW5naWZ5KG9yZGVySXRlbXMpIH07XHJcbiAgfVxyXG4gIGdldENvbHVtbnMoKSB7XHJcbiAgICBjb25zdCB7IGNvbHVtbnMsIHNvcnRUeXBlLCBzb3J0SW5mbyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgc29ydEZpZWxkcyA9IFtdIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgZGVmYXVsdFNob3dDb2xzID0gY29sdW1ucy5maWx0ZXIoKGNvbHMpID0+IGNvbHMuaW5pdFNob3cgIT09IGZhbHNlKTtcclxuICAgIGNvbnN0IGNvbHMgPSBkZWZhdWx0U2hvd0NvbHMubWFwKChjb2wsIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmIChjb2wuZWxsaXBzaXMgJiYgIWNvbC5yZW5kZXIpIHtcclxuICAgICAgICBjb2wuZWxsaXBzaXMgPSB7XHJcbiAgICAgICAgICBzaG93VGl0bGU6IGZhbHNlLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29sLnJlbmRlciA9ICh0ZXh0KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2IHRpdGxlPXt0ZXh0fSBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInRleHRcIil9IHN0eWxlPXt7IHdpZHRoOiBjb2wud2lkdGggfX0+XHJcbiAgICAgICAgICAgICAge3RleHR9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoc29ydEZpZWxkcy5pbmRleE9mKGNvbC5kYXRhSW5kZXgpID4gLTEpIHtcclxuICAgICAgICBpZiAoc29ydFR5cGUgPT0gXCJzaW5nbGVcIikge1xyXG4gICAgICAgICAgY29sLnNvcnRlciA9IHRydWU7XHJcbiAgICAgICAgICBjb2wuc29ydE9yZGVyID0gc29ydEluZm9bY29sLmRhdGFJbmRleF1cclxuICAgICAgICAgICAgPyBzb3J0SW5mb1tjb2wuZGF0YUluZGV4XVxyXG4gICAgICAgICAgICA6IG51bGw7XHJcbiAgICAgICAgfSBlbHNlIGlmIChzb3J0VHlwZSA9PSBcIm11bHRpcGxlXCIpIHtcclxuICAgICAgICAgIGNvbC5zb3J0ZXIgPSB7IG11bHRpcGxlOiBpbmRleCB9O1xyXG4gICAgICAgICAgY29sLnNvcnRPcmRlciA9IHNvcnRJbmZvW2NvbC5kYXRhSW5kZXhdXHJcbiAgICAgICAgICAgID8gc29ydEluZm9bY29sLmRhdGFJbmRleF1cclxuICAgICAgICAgICAgOiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gY29sO1xyXG4gICAgfSk7XHJcbiAgICBjb2xzLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgaWYgKCFpc0VtcHR5T2JqKGl0ZW0uZmlsdGVyUHJvcHMpKSB7XHJcbiAgICAgICAgbGV0IG9iaiA9IHsgLi4uaXRlbSB9O1xyXG4gICAgICAgIGNvbnN0IHsgdHlwZSwgcHJvcHMsIHNlYXJjaEtleSB9ID0gaXRlbS5maWx0ZXJQcm9wcztcclxuICAgICAgICBsZXQgRGl2ID0gbnVsbDtcclxuICAgICAgICBsZXQgdGV4dCA9IGl0ZW0udGl0bGU7XHJcbiAgICAgICAgRGl2ID0gZ2V0Tm9kZSh0eXBlLCB7XHJcbiAgICAgICAgICBwbGFjZWhvbGRlcjogYOaQnOe0oiR7dGV4dH1gLFxyXG4gICAgICAgICAgLi4ucHJvcHMsXHJcbiAgICAgICAgICByZWY6IHRoaXMudGFibGVTZWFyY2hSZWYsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgb2JqID0ge1xyXG4gICAgICAgICAgZmlsdGVyRHJvcGRvd246ICh7XHJcbiAgICAgICAgICAgIHNldFNlbGVjdGVkS2V5cyxcclxuICAgICAgICAgICAgc2VsZWN0ZWRLZXlzLFxyXG4gICAgICAgICAgICBjb25maXJtLFxyXG4gICAgICAgICAgICBjbGVhckZpbHRlcnMsXHJcbiAgICAgICAgICB9KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInNlYXJjaFwiKX0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwic3BhY2VcIil9PntEaXZ9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8U3BhY2U+XHJcbiAgICAgICAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29uZmlybSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBmaWx0ZXJQYXJhbXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV3RmlsdGVyUGFyYW1zID0geyAuLi5maWx0ZXJQYXJhbXMgfTtcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBrZXkgPSBpdGVtLmZpZWxkIHx8IGl0ZW0uZGF0YUluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgbmV3RmlsdGVyUGFyYW1zW2tleV0gPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU2VhcmNoUmVmLmN1cnJlbnQ/LmdldFZhbHVlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyYW1zOiB7IC4uLm5ld0ZpbHRlclBhcmFtcyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzb3J0UGFyYW0gPSB0aGlzLmdldFNvcnRQYXJhbSh0aGlzLnN0YXRlLnNvcnRlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLmxvYWQoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHsgLi4ubmV3RmlsdGVyUGFyYW1zLCAuLi5zb3J0UGFyYW0gfSxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImJ1dHRvblwiKX1cclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIOafpeivolxyXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvU3BhY2U+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZmlsdGVySWNvbjogKCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gPFNlYXJjaE91dGxpbmVkIC8+O1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLm9iaixcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbHNbaW5kZXhdID0gb2JqO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBjb2xzO1xyXG4gIH1cclxuICByZW5kZXJUb29sQmFyKCkge1xyXG4gICAgbGV0IHsgdGFibGVTaXplLCBjb2x1bW5zLCBzb3J0VHlwZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGxldCB7IGZpbHRlckNvbHVtbiwgY29sdW1uczogY29sTGlzdHMsIHRvb2xiYXIgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHRhYmxlVG9vbCwgc3RvcmVSZXF1ZXN0Q29uZmlnID0ge30gfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHRvb2xzID0gW1wicmVmcmVzaFwiLCBcInNpemVcIiwgXCJzb3J0XCIsIFwiY29sdW1uXCJdO1xyXG4gICAgbGV0IHRvb2xzQ2xpY2sgPSB7fSBhcyBhbnk7XHJcbiAgICBpZiAodG9vbGJhciA9PSB0cnVlKSB7XHJcbiAgICAgIHRvb2xzID0gdG9vbGJhci5vblRvb2xDbGlja1xyXG4gICAgICAgID8gdG9vbGJhci5vblRvb2xDbGlja1xyXG4gICAgICAgIDogW1wicmVmcmVzaFwiLCBcInNpemVcIiwgXCJzb3J0XCIsIFwiY29sdW1uXCJdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdG9vbHMgPSB0b29sYmFyLnRvb2xzXHJcbiAgICAgICAgPyB0b29sYmFyLnRvb2xzXHJcbiAgICAgICAgOiB0YWJsZVRvb2wudG9vbHNcclxuICAgICAgICA/IHRhYmxlVG9vbC50b29sc1xyXG4gICAgICAgIDogdG9vbHM7XHJcbiAgICAgIHRvb2xzQ2xpY2sgPSB0b29sYmFyLm9uVG9vbENsaWNrID8gdG9vbGJhci5vblRvb2xDbGljayA6IHt9O1xyXG4gICAgfVxyXG4gICAgY29uc3Qgc2l6ZUl0ZW0gPSBbXHJcbiAgICAgIHsgdGl0bGU6IFwi5a695p2+XCIsIGtleTogXCJkZWZhdWx0XCIgfSxcclxuICAgICAgeyB0aXRsZTogXCLkuK3nrYlcIiwga2V5OiBcIm1pZGRsZVwiIH0sXHJcbiAgICAgIHsgdGl0bGU6IFwi57Sn5YeRXCIsIGtleTogXCJzbWFsbFwiIH0sXHJcbiAgICBdO1xyXG4gICAgY29uc3Qgc29ydEl0ZW0gPSBbXHJcbiAgICAgIHsgdGl0bGU6IFwi5Y2V5a2X5q615o6S5bqPXCIsIGtleTogXCJzaW5nbGVcIiB9LFxyXG4gICAgICB7IHRpdGxlOiBcIuWkmuWtl+auteaOkuW6j1wiLCBrZXk6IFwibXVsdGlwbGVcIiB9LFxyXG4gICAgXTtcclxuICAgIGNvbnN0IHNvcnRDb250ZW50ID0gKFxyXG4gICAgICA8PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiY290ZW50LXRpdGxlXCIpfVxyXG4gICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgY3Vyc29yOiB0aGlzLnN0YXRlLmRlZmF1bHRTb3J0ID8gXCJub3QtYWxsb3dlZFwiIDogXCJwb2ludGVyXCIsXHJcbiAgICAgICAgICAgIGNvbG9yOiB0aGlzLnN0YXRlLmRlZmF1bHRTb3J0ICYmIFwicmdiYSgwLDAsMCwuNDUpXCIsXHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zdGF0ZS5kZWZhdWx0U29ydCkge1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgc29ydGVyOiBbXSwgc29ydEluZm86IHt9LCBkZWZhdWx0U29ydDogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgY29uc3QgcGFyYW1zID0geyAuLi50aGlzLnN0YXRlLmZpbHRlclBhcmFtcyB9O1xyXG4gICAgICAgICAgICB0aGlzLnN0b3JlLnJlbG9hZCh7IHBhcmFtcyB9KTtcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAg5oGi5aSN6buY6K6k5o6S5bqPXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAge3NvcnRJdGVtLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBrZXk9e2l0ZW0ua2V5fVxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICBzb3J0ZXI6IFtdLFxyXG4gICAgICAgICAgICAgICAgICBzb3J0SW5mbzoge30sXHJcbiAgICAgICAgICAgICAgICAgIHNvcnRUeXBlOiBpdGVtLmtleSxcclxuICAgICAgICAgICAgICAgICAgZGVmYXVsdFNvcnQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7IC4uLnRoaXMuc3RhdGUuZmlsdGVyUGFyYW1zIH07XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLnJlbG9hZCh7IHBhcmFtcyB9KTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3NvcnRUeXBlID09IGl0ZW0ua2V5ID8gKFxyXG4gICAgICAgICAgICAgICAgPGE+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50LXRpZW1cIil9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgd2lkdGg6IDIwIH19PlxyXG4gICAgICAgICAgICAgICAgICAgICAge3NvcnRUeXBlID09IGl0ZW0ua2V5ICYmIDxDaGVja091dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+IHtpdGVtLnRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImNvbnRlbnQtdGllbVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgd2lkdGg6IDIwIH19PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PiB7aXRlbS50aXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9KX1cclxuICAgICAgICB7dGhpcy5zdGF0ZS5zb3J0ZXIubGVuZ3RoID4gMCAmJiAoXHJcbiAgICAgICAgICA8PlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJjb3RlbnQtdGl0bGVcIil9XHJcbiAgICAgICAgICAgICAgc3R5bGU9e3sgY29sb3I6IFwicmdiYSgwLDAsMCwuNDUpXCIgfX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIOW9k+WJjeaOkuW6j1xyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAge3RoaXMuc3RhdGUuc29ydGVyLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImNvbnRlbnQtdGllbVwiKX0ga2V5PXtpbmRleH0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgd2lkdGg6IDIwIH19PlxyXG4gICAgICAgICAgICAgICAgICAgIHtpdGVtLm9yZGVyID09IFwiYXNjZW5kXCIgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICA8U29ydEFzY2VuZGluZ091dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgICAgIDxTb3J0RGVzY2VuZGluZ091dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+IHtpdGVtLmNvbHVtbi50aXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgPC8+XHJcbiAgICAgICAgKX1cclxuICAgICAgPC8+XHJcbiAgICApO1xyXG4gICAgY29uc3Qgc2l6ZUNvbnRlbnQgPSAoXHJcbiAgICAgIDw+XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImNvdGVudC10aXRsZVwiKX0+6KGo5qC85a+G5bqmPC9kaXY+XHJcbiAgICAgICAge3NpemVJdGVtLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBrZXk9e2l0ZW0ua2V5fVxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICB0YWJsZVNpemU6IGl0ZW0ua2V5LFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt0YWJsZVNpemUgPT0gaXRlbS5rZXkgPyAoXHJcbiAgICAgICAgICAgICAgICA8YT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImNvbnRlbnQtdGllbVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyB3aWR0aDogMjAgfX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7dGFibGVTaXplID09IGl0ZW0ua2V5ICYmIDxDaGVja091dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+IHtpdGVtLnRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImNvbnRlbnQtdGllbVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgd2lkdGg6IDIwIH19PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PiB7aXRlbS50aXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9KX1cclxuICAgICAgPC8+XHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IGRlZmF1bHRTaG93Q29scyA9IGNvbHVtbnMuZmlsdGVyKChjb2xzKSA9PiBjb2xzLmluaXRTaG93ICE9PSBmYWxzZSk7XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IChcclxuICAgICAgPENoZWNrYm94Lkdyb3VwXHJcbiAgICAgICAgb25DaGFuZ2U9e3RoaXMuZmlsdGVyQ29sdW1uLmJpbmQodGhpcyl9XHJcbiAgICAgICAgb3B0aW9ucz17Y29sTGlzdHMubWFwKFxyXG4gICAgICAgICAgKGNvbDogQ29sdW1uVHlwZTx7fT4gJiB7IGZpbHRlckNvbHVtbjogYm9vbGVhbjsgZGF0YUluZGV4OiBhbnkgfSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWNvbC5kYXRhSW5kZXgpIHtcclxuICAgICAgICAgICAgICBjb2wuZGF0YUluZGV4ID0gY29sLnRpdGxlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgbGFiZWw6IGNvbC50aXRsZSxcclxuICAgICAgICAgICAgICB2YWx1ZTogY29sLmRhdGFJbmRleCxcclxuICAgICAgICAgICAgICBkaXNhYmxlZDogY29sLmZpbHRlckNvbHVtbiA9PT0gZmFsc2UsXHJcbiAgICAgICAgICAgIH0gYXMgQ2hlY2tib3hPcHRpb25UeXBlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICl9XHJcbiAgICAgICAgLy8gZGVmYXVsdFZhbHVlPXtkZWZhdWx0U2hvd0NvbHMubWFwKChjb2wpID0+IGNvbC5kYXRhSW5kZXgpfVxyXG4gICAgICAgIHZhbHVlPXtcclxuICAgICAgICAgIHRoaXMuc3RhdGUuZGVmYXVsdENoZWNrXHJcbiAgICAgICAgICAgID8gZGVmYXVsdFNob3dDb2xzLm1hcCgoY29sKSA9PiBjb2wuZGF0YUluZGV4KVxyXG4gICAgICAgICAgICA6IHRoaXMuc3RhdGUuY2hlY2tDb2x1bW5cclxuICAgICAgICB9XHJcbiAgICAgID48L0NoZWNrYm94Lkdyb3VwPlxyXG4gICAgKTtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJ0YWJsZS10b29sLWJhclwiKX0+XHJcbiAgICAgICAge3Rvb2xzLmluZGV4T2YoXCJjb2x1bW5cIikgPiAtMSAmJiAoXHJcbiAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGZvbnRTaXplOiAxNCB9fT5cclxuICAgICAgICAgICAgPFBvcG92ZXJcclxuICAgICAgICAgICAgICB0aXRsZT1cIumAieaLqeaYvuekuueahOWIl1wiXHJcbiAgICAgICAgICAgICAgY29udGVudD17Y29udGVudH1cclxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21SaWdodFwiXHJcbiAgICAgICAgICAgICAgdHJpZ2dlcj1cImNsaWNrXCJcclxuICAgICAgICAgICAgICBvdmVybGF5U3R5bGU9e3sgbWluV2lkdGg6IDQxMCwgbWF4V2lkdGg6IDQ1MCB9fVxyXG4gICAgICAgICAgICAgIC8vIGdldFBvcHVwQ29udGFpbmVyPXsoKSA9PiB0aGlzLnRoSWNvblJlZi5jdXJyZW50fVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPEFwcHN0b3JlT3V0bGluZWQgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJhcHAtc3RvcmUtaWNvblwiKX0gLz5cclxuICAgICAgICAgICAgPC9Qb3BvdmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgICB7dG9vbHMuaW5kZXhPZihcInNvcnRcIikgPiAtMSAmJiAoXHJcbiAgICAgICAgICA8ZGl2IHN0eWxlPXt7IG1hcmdpblJpZ2h0OiA4LCBmb250U2l6ZTogMTQgfX0+XHJcbiAgICAgICAgICAgIDxQb3BvdmVyIHBsYWNlbWVudD1cImJvdHRvbVwiIGNvbnRlbnQ9e3NvcnRDb250ZW50fSB0cmlnZ2VyPVwiY2xpY2tcIj5cclxuICAgICAgICAgICAgICA8U29ydEFzY2VuZGluZ091dGxpbmVkIC8+XHJcbiAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICl9XHJcbiAgICAgICAge3Rvb2xzLmluZGV4T2YoXCJzaXplXCIpID4gLTEgJiYgKFxyXG4gICAgICAgICAgPGRpdiBzdHlsZT17eyBtYXJnaW5SaWdodDogOCwgZm9udFNpemU6IDE0IH19PlxyXG4gICAgICAgICAgICA8UG9wb3ZlciBwbGFjZW1lbnQ9XCJib3R0b21cIiBjb250ZW50PXtzaXplQ29udGVudH0gdHJpZ2dlcj1cImNsaWNrXCI+XHJcbiAgICAgICAgICAgICAgPENvbHVtbkhlaWdodE91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICl9XHJcbiAgICAgICAge3Rvb2xzLmluZGV4T2YoXCJyZWZyZXNoXCIpID4gLTEgJiYgKFxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBzdHlsZT17eyBtYXJnaW5SaWdodDogOCwgZm9udFNpemU6IDE0LCBjdXJzb3I6IFwicG9pbnRlclwiIH19XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7IC4uLnRoaXMuc3RhdGUuZmlsdGVyUGFyYW1zIH07XHJcbiAgICAgICAgICAgICAgaWYgKHRvb2xzQ2xpY2sub25SZWZyZXNoKSB7XHJcbiAgICAgICAgICAgICAgICB0b29sc0NsaWNrLm9uUmVmcmVzaCgpO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLmxvYWQoeyBwYXJhbXMgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8UmVkb091dGxpbmVkIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXRlLnNlbGVjdGVkUm93S2V5cztcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRSb3dEYXRhcygpIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXRlLnNlbGVjdGVkUm93RGF0YXM7XHJcbiAgfVxyXG4gIHJlc2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlbGVjdGVkUm93S2V5czogW10sXHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXM6IFtdLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHNldFNlbGVjdGVkUm93S2V5cyhkYXRhOiBBcnJheTxTdHJpbmcgfCBOdW1iZXI+KSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBkYXRhLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHNldFNlbGVjdGVkUm93RGF0YXMoZGF0YTogQXJyYXk8T2JqZWN0Pikge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXM6IGRhdGEsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgcm93U2VsZWN0aW9uT25TZWxlY3QocmVjb3JkOiBhbnksIHNlbGVjdGVkOiBhbnkpIHtcclxuICAgIGNvbnN0IHsgc2VsZWN0ZWRSb3dLZXlzLCBzZWxlY3RlZFJvd0RhdGFzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IHsgcm93S2V5ID0gXCJpZFwiIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IG5ld1NlbGVjdGVkUm93S2V5cyA9IFsuLi5zZWxlY3RlZFJvd0tleXNdO1xyXG4gICAgbGV0IG5ld1NlbGVjdGVkUm93RGF0YXMgPSBbLi4uc2VsZWN0ZWRSb3dEYXRhc107XHJcbiAgICBpZiAoc2VsZWN0ZWQpIHtcclxuICAgICAgbmV3U2VsZWN0ZWRSb3dLZXlzID0gWy4uLm5ld1NlbGVjdGVkUm93S2V5cywgcmVjb3JkW3Jvd0tleV1dO1xyXG4gICAgICBuZXdTZWxlY3RlZFJvd0RhdGFzID0gWy4uLm5ld1NlbGVjdGVkUm93RGF0YXMsIHJlY29yZF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzZWxlY3RlZFJvd0tleXMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoaXRlbSA9PT0gcmVjb3JkW3Jvd0tleV0pIHtcclxuICAgICAgICAgIG5ld1NlbGVjdGVkUm93S2V5cy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoaXRlbVtyb3dLZXldID09PSByZWNvcmRbcm93S2V5XSkge1xyXG4gICAgICAgICAgbmV3U2VsZWN0ZWRSb3dEYXRhcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBuZXdTZWxlY3RlZFJvd0tleXMsXHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXM6IG5ld1NlbGVjdGVkUm93RGF0YXMsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgcm93U2VsZWN0aW9uT25TZWxlY3RBbGwoc2VsZWN0ZWQ6IGFueSwgc2VsZWN0ZWRSb3dzOiBhbnksIGNoYW5nZVJvd3M6IGFueSkge1xyXG4gICAgY29uc3QgeyBzZWxlY3RlZFJvd0tleXMsIHNlbGVjdGVkUm93RGF0YXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IHJvd0tleSA9IFwiaWRcIiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBuZXdpZHM6IGFueSA9IFtdO1xyXG4gICAgbGV0IG5ld2RhdGFzOiBhbnkgPSBbXTtcclxuICAgIGlmIChjaGFuZ2VSb3dzLmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IGNoYW5nZUlkcyA9IGNoYW5nZVJvd3MubWFwKChpdGVtOiBhbnkpID0+IGl0ZW1bcm93S2V5XSk7XHJcbiAgICAgIGlmIChzZWxlY3RlZCkge1xyXG4gICAgICAgIG5ld2lkcyA9IFsuLi5zZWxlY3RlZFJvd0tleXMsIC4uLmNoYW5nZUlkc107XHJcbiAgICAgICAgbmV3ZGF0YXMgPSBbLi4uc2VsZWN0ZWRSb3dEYXRhcywgLi4uY2hhbmdlUm93c107XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgc2VsZWN0ZWRSb3dLZXlzLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoY2hhbmdlSWRzLmluZGV4T2YoaXRlbSkgPT0gLTEpIHtcclxuICAgICAgICAgICAgbmV3aWRzLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgc2VsZWN0ZWRSb3dEYXRhcy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGNoYW5nZUlkcy5pbmRleE9mKGl0ZW1bcm93S2V5XSkgPT0gLTEpIHtcclxuICAgICAgICAgICAgbmV3ZGF0YXMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbmV3aWRzID0gWy4uLnNlbGVjdGVkUm93S2V5c107XHJcbiAgICAgIG5ld2RhdGFzID0gWy4uLnNlbGVjdGVkUm93RGF0YXNdO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlbGVjdGVkUm93S2V5czogWy4uLm5ld2lkc10sXHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXM6IFsuLi5uZXdkYXRhc10sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgcmVuZGVyKCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcyxcclxuICAgICAge1xyXG4gICAgICAgIGxvYWRpbmcsXHJcbiAgICAgICAgZGF0YVNvdXJjZSxcclxuICAgICAgICBwYWdpbmF0aW9uID0ge30sXHJcbiAgICAgICAgc2VhcmNoVGV4dCxcclxuICAgICAgICBmaWVsZE9wdGlvbixcclxuICAgICAgICBzZWFyY2hDb2xvcixcclxuICAgICAgICB0YWJsZVNpemUsXHJcbiAgICAgIH0gPSB0aGlzLnN0YXRlLFxyXG4gICAgICBwcm9wcyA9IHV0aWxzLm9taXQoXHJcbiAgICAgICAgdGhpcy5wcm9wcyxcclxuICAgICAgICBbXHJcbiAgICAgICAgICBcInN0b3JlXCIsXHJcbiAgICAgICAgICBcIm9uQ2hhbmdlXCIsXHJcbiAgICAgICAgICBcImNvbHVtbnNcIixcclxuICAgICAgICAgIFwicmVzZXRDb2x1bW5cIixcclxuICAgICAgICAgIFwidG9vbGJhclwiLFxyXG4gICAgICAgICAgXCJzb3J0RmllbGRzXCIsXHJcbiAgICAgICAgICBcImZpbHRlckNvbHVtblwiLFxyXG4gICAgICAgICAgXCJzb3J0U2VhcmNoXCIsXHJcbiAgICAgICAgICBcInNob3dSb3dTZWxlY3Rpb25cIixcclxuICAgICAgICBdLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHJvd0tleTogXCJpZFwiLFxyXG4gICAgICAgICAgY2xpY2tDaGFuZ2VDb2xvcjogZmFsc2UsXHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgaWYgKHByb3BzLnBhZ2luYXRpb24gIT09IGZhbHNlKSB7XHJcbiAgICAgIHByb3BzLnBhZ2luYXRpb24gPSB7XHJcbiAgICAgICAgcG9zaXRpb246IFtcImJvdHRvbVJpZ2h0XCJdLFxyXG4gICAgICAgIHNob3dTaXplQ2hhbmdlcjogdHJ1ZSxcclxuICAgICAgICBzaG93UXVpY2tKdW1wZXI6IHRydWUsXHJcbiAgICAgICAgLi4ucGFnaW5hdGlvbixcclxuICAgICAgICAuLi5wcm9wcy5wYWdpbmF0aW9uLFxyXG4gICAgICB9O1xyXG4gICAgICBpZiAocHJvcHMuc2hvd1RvdGFsID09IHRydWUpIHtcclxuICAgICAgICBwcm9wcy5wYWdpbmF0aW9uLnNob3dUb3RhbCA9IGZ1bmN0aW9uICh0b3RhbCwgW2Zyb20sIHRvXSkge1xyXG4gICAgICAgICAgLy8gcmV0dXJuIFwi5pi+56S6IFwiICsgZnJvbSArIFwiIC0gXCIgKyB0byArIFwi5p2h77yM5YWxIFwiICsgdG90YWwgKyBcIiDmnaFcIjtcclxuICAgICAgICAgIHJldHVybiBcIuWFsSBcIiArIHRvdGFsICsgXCIg5p2hXCI7XHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcHJvcHMub25DaGFuZ2UgPSBmdW5jdGlvbiAocGFnaW5hdGlvbiwgZmlsdGVycywgc29ydGVyLCBleHRyYSkge1xyXG4gICAgICBfdGhpcy5vbkNoYW5nZShwYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhKTtcclxuICAgIH07XHJcbiAgICBpZiAocHJvcHMuY2xpY2tDaGFuZ2VDb2xvcikge1xyXG4gICAgICBjb25zdCBvblJvd0ZuID0gcHJvcHMub25Sb3c7XHJcbiAgICAgIHByb3BzLm9uUm93ID0gZnVuY3Rpb24gKHJlY29yZCwgaW5kZXgpIHtcclxuICAgICAgICB2YXIgY3VzdG9tID0gb25Sb3dGbiA/IG9uUm93Rm4ocmVjb3JkLCBpbmRleCkgOiB7fTtcclxuICAgICAgICBjb25zdCBvbkNsaWNrRm4gPSBjdXN0b20ub25DbGljaztcclxuICAgICAgICBjdXN0b20ub25DbGljayA9IChldmVudCkgPT4ge1xyXG4gICAgICAgICAgX3RoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICBhY3RpdmVJbmRleDogaW5kZXgsIC8v6I635Y+W54K55Ye76KGM55qE57Si5byVXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKG9uQ2xpY2tGbiwgX3RoaXMsIFtldmVudF0pO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIGN1c3RvbTtcclxuICAgICAgfTtcclxuICAgICAgcHJvcHMucm93Q2xhc3NOYW1lID0gZnVuY3Rpb24gKHJlY29yZCwgaW5kZXgpIHtcclxuICAgICAgICByZXR1cm4gaW5kZXggPT09IF90aGlzLnN0YXRlLmFjdGl2ZUluZGV4XHJcbiAgICAgICAgICA/IGAke3N0eWxlcy5jbGlja1Jvd1N0eWxlfWBcclxuICAgICAgICAgIDogXCJcIjtcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGxldCBuZXdEYXRhU291cmNlID0gW107XHJcbiAgICBpZiAoc2VhcmNoVGV4dCkge1xyXG4gICAgICBjb25zdCBkYXRhID0gdHJlZVV0aWxzLmdldFNlYXJjaE1lbnVEYXRhcyhcclxuICAgICAgICB0aGlzLFxyXG4gICAgICAgIHNlYXJjaFRleHQsXHJcbiAgICAgICAgZmllbGRPcHRpb24sXHJcbiAgICAgICAgc2VhcmNoQ29sb3JcclxuICAgICAgKTtcclxuICAgICAgbmV3RGF0YVNvdXJjZSA9IGRhdGEudHJlZURhdGFzO1xyXG4gICAgICBwcm9wcy5leHBhbmRlZFJvd0tleXMgPSBkYXRhLm9wZW5LZXlzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbmV3RGF0YVNvdXJjZSA9IGRhdGFTb3VyY2U7XHJcbiAgICB9XHJcbiAgICBwcm9wcy5zdG9yZSA9IHByb3BzLnN0b3JlIHx8IHt9O1xyXG4gICAgcHJvcHMuc3RvcmUuYXV0b0xvYWQgPSBwcm9wcy5zdG9yZS5hdXRvTG9hZCA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWU7XHJcbiAgICBjb25zdCB7IGRyYWdhYmxlIH0gPSBfdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGRyYWdhYmxlUHJvcHMgPVxyXG4gICAgICBkcmFnYWJsZSA9PT0gdHJ1ZVxyXG4gICAgICAgID8ge1xyXG4gICAgICAgICAgICBjb21wb25lbnRzOiBCb2R5Um93Q29tcG9uZW50LFxyXG4gICAgICAgICAgICBvblJvdzogKHJlY29yZCwgaW5kZXgpID0+ICh7XHJcbiAgICAgICAgICAgICAgaW5kZXgsXHJcbiAgICAgICAgICAgICAgcmVjb3JkLFxyXG4gICAgICAgICAgICAgIG1vdmVSb3c6IHRoaXMubW92ZVJvdyxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgOiB7fTtcclxuICAgIGxldCB7IHJlc2l6ZUNvbHVtbiB9ID0gdGhpcy5wcm9wcztcclxuXHJcbiAgICBjb25zdCByZXNpemVQcm9wcyA9XHJcbiAgICAgIHJlc2l6ZUNvbHVtbiA9PT0gdHJ1ZSA/IHsgY29tcG9uZW50czogdGhpcy5jb21wb25lbnRzIH0gOiBudWxsO1xyXG4gICAgY29uc3QgeyB0YWJsZVRvb2wgfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHRvb2xGbGFnID0gdHJ1ZTtcclxuICAgIGxldCB0b29scHJvcHMgPVxyXG4gICAgICB0aGlzLnByb3BzLnRvb2xiYXIgPT09IGZhbHNlIHx8IHRoaXMucHJvcHMudG9vbGJhcj8uc2hvdyA9PT0gZmFsc2VcclxuICAgICAgICA/IGZhbHNlXHJcbiAgICAgICAgOiB0cnVlO1xyXG4gICAgaWYgKCF0b29scHJvcHMpIHtcclxuICAgICAgdG9vbEZsYWcgPSB0b29scHJvcHM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0b29sRmxhZyA9IHRhYmxlVG9vbC5zaG93ID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnByb3BzLnNob3dSb3dTZWxlY3Rpb24pIHtcclxuICAgICAgY29uc3QgeyByb3dTZWxlY3Rpb24gPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgcHJvcHMgPSB7XHJcbiAgICAgICAgLi4ucHJvcHMsXHJcbiAgICAgICAgcm93U2VsZWN0aW9uOiB7XHJcbiAgICAgICAgICBzZWxlY3RlZFJvd0tleXM6IHRoaXMuc3RhdGUuc2VsZWN0ZWRSb3dLZXlzLFxyXG4gICAgICAgICAgb25TZWxlY3Q6IHRoaXMucm93U2VsZWN0aW9uT25TZWxlY3QuYmluZCh0aGlzKSxcclxuICAgICAgICAgIG9uU2VsZWN0QWxsOiB0aGlzLnJvd1NlbGVjdGlvbk9uU2VsZWN0QWxsLmJpbmQodGhpcyksXHJcbiAgICAgICAgICBjb2x1bW5XaWR0aDogNDAsXHJcbiAgICAgICAgICAuLi5yb3dTZWxlY3Rpb24sXHJcbiAgICAgICAgfSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGNvbnN0IERlZmF1bHRUYWJsZSA9IChcclxuICAgICAgPD5cclxuICAgICAgICB7dG9vbEZsYWcgJiYgdGhpcy5yZW5kZXJUb29sQmFyKCl9XHJcbiAgICAgICAgPFRhYmxlXHJcbiAgICAgICAgICBjaGlsZHJlbkNvbHVtbk5hbWU9XCJjaGlsZE5vZGVzXCJcclxuICAgICAgICAgIHNoZWl0ZW1cclxuICAgICAgICAgIGRhdGFTb3VyY2U9e25ld0RhdGFTb3VyY2V9XHJcbiAgICAgICAgICBjb2x1bW5zPXt0aGlzLmdldENvbHVtbnMoKX1cclxuICAgICAgICAgIGxvYWRpbmc9e2xvYWRpbmd9XHJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1tcIm5zYy10YWJsZVwiXX1cclxuICAgICAgICAgIGxvY2FsZT17e1xyXG4gICAgICAgICAgICBlbXB0eVRleHQ6IDxOb0RhdGEgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJ0YWJsZS1ub2RhdGFcIil9IC8+LFxyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIHNjcm9sbD17eyB4OiBcIm1heC1jb250ZW50XCIgfX1cclxuICAgICAgICAgIHsuLi5yZXNpemVQcm9wc31cclxuICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICAgIHsuLi5kcmFnYWJsZVByb3BzfVxyXG4gICAgICAgICAgc2l6ZT17dGFibGVTaXplfVxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvPlxyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gZHJhZ2FibGUgPT09IHRydWUgPyAoXHJcbiAgICAgIDxEbmRQcm92aWRlciBiYWNrZW5kPXtIVE1MNUJhY2tlbmR9PntEZWZhdWx0VGFibGV9PC9EbmRQcm92aWRlcj5cclxuICAgICkgOiAoXHJcbiAgICAgIERlZmF1bHRUYWJsZVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IHdpdGhaaExvY2FsZShOU0NUYWJsZSk7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["AppstoreOutlined","CheckOutlined","ColumnHeightOutlined","SearchOutlined","SortAscendingOutlined","SortDescendingOutlined","RedoOutlined","isEmptyObj","Store","PageStore","utils","React","DndProvider","BodyRow","DndContextType","IBodyRowProps","treeUtils","styles","BodyRowComponent","HTML5Backend","withZhLocale","Resizable","getLess","getNode","NoData","getStorage","config","ResizeableTitle","props","onResize","width","restProps","_objectWithoutProperties","_excluded","createElement","height","draggableOpts","enableUserSelectHack","NSCTable","Component","constructor","_autoType","_defineProperty","createRef","onBeforeLoad","load","header","cell","index","e","_ref","size","cols","state","nextColumns","_objectSpread","setState","ev","data","JSON","parse","_this","eventType","payload","tableSize","dragIndex","hoverIndex","drag","target","dragNode","record","targetNode","moveArray","ids","parentNode","getChildNodeIds","params","id","parentId","attribute","moveRow","store","reload","modal","type","storePrefix","autoType","content","dataSource","columns","loading","pagination","activeIndex","searchText","fieldOption","searchColor","sorts","filterParams","sortType","sorter","sortInfo","defaultSort","checkColumn","defaultCheck","selectedRowKeys","selectedRowDatas","_ref2","listeners","listenersProps","restStore","_excluded2","storeProps","model","component","options","callback","dataChanged","modelData","paging","getPagination","onErrorLoad","err","response","autoLoad","Object","assign","current","componentDidMount","resizeColumn","setData","window","addEventListener","listenMessage","componentWillUnmount","removeEventListener","componentDidUpdate","prevProps","preState","resetColumn","newCols","colss","map","col","temp","onHeaderCell","column","handleResize","push","clearSelectColor","getPaginationByStore","onChange","filters","extra","autoOnChange","autoSort","autoPagination","isMultiple","Array","isArray","handlePagination","p","currentKey","pageSizeKey","pageSize","ascParams","getSortParam","onChangeFn","getStore","getModel","handleSearch","val","filterColumn","checkedValue","length","_message","warning","filterColumns","newCol","includes","dataIndex","initShow","sortState","arguments","undefined","sortSearch","orderItems","field","asc","order","forEach","v","stringify","getColumns","sortFields","defaultShowCols","filter","ellipsis","render","showTitle","text","title","className","style","indexOf","sortOrder","multiple","item","filterProps","obj","searchKey","Div","placeholder","concat","ref","tableSearchRef","filterDropdown","_ref3","setSelectedKeys","selectedKeys","confirm","clearFilters","_Space","_Button","onClick","_this$tableSearchRef$","newFilterParams","key","getValue","sortParam","filterIcon","renderToolBar","colLists","toolbar","tableTool","storeRequestConfig","tools","toolsClick","onToolClick","sizeItem","sortItem","sortContent","Fragment","cursor","color","sizeContent","_Checkbox","Group","bind","label","value","disabled","fontSize","_Popover","placement","trigger","overlayStyle","minWidth","maxWidth","marginRight","onRefresh","getSelectedRowKeys","getSelectedRowDatas","resetSelectedRowKeys","setSelectedRowKeys","setSelectedRowDatas","rowSelectionOnSelect","selected","rowKey","newSelectedRowKeys","newSelectedRowDatas","splice","rowSelectionOnSelectAll","selectedRows","changeRows","newids","newdatas","changeIds","_this$props$toolbar","omit","clickChangeColor","position","showSizeChanger","showQuickJumper","showTotal","total","_ref4","from","to","onRowFn","onRow","custom","onClickFn","event","rowClassName","clickRowStyle","newDataSource","getSearchMenuDatas","treeDatas","expandedRowKeys","openKeys","dragable","dragableProps","components","resizeProps","toolFlag","toolprops","show","showRowSelection","rowSelection","onSelect","onSelectAll","columnWidth","DefaultTable","_Table","_extends","childrenColumnName","sheitem","locale","emptyText","scroll","x","backend","dragUrl"],"sources":["../../../src/components/base/table/index.tsx"],"sourcesContent":["/*\r\n * @Descripttion:\r\n * @version:\r\n * @Author: rxzhu\r\n * @Date: 2021-03-23 08:46:20\r\n * @LastEditors: rxzhu\r\n * @LastEditTime: 2021-03-23 10:30:42\r\n */\r\nimport {\r\n AppstoreOutlined,\r\n CheckOutlined,\r\n ColumnHeightOutlined,\r\n SearchOutlined,\r\n SortAscendingOutlined,\r\n SortDescendingOutlined,\r\n RedoOutlined,\r\n} from \"@ant-design/icons\";\r\nimport { isEmptyObj } from \"@bj-nsc/functions\";\r\nimport Store, { PageStore, StoreProps } from \"@bj-nsc/msn\";\r\nimport { utils } from \"@bj-nsc/msn/lib/utils\";\r\nimport {\r\n Button,\r\n Checkbox,\r\n CheckboxOptionType,\r\n Menu,\r\n message,\r\n Popover,\r\n Space,\r\n Table,\r\n TableProps,\r\n Tooltip,\r\n} from \"antd\";\r\nimport { ColumnType, TablePaginationConfig } from \"antd/lib/table\";\r\nimport * as React from \"react\";\r\nimport { DndProvider } from \"react-dnd\";\r\nimport BodyRow, { DndContextType, IBodyRowProps } from \"../common/BodyRow\";\r\nimport treeUtils from \"../../treeUtils\";\r\nimport styles from \"./index.module.less\";\r\nconst { BodyRowComponent, HTML5Backend } = BodyRow;\r\nimport withZhLocale from \"../common/withZhLocale\";\r\nimport { Resizable } from \"react-resizable\";\r\nimport \"./resize.module.less\";\r\nimport { getLess, getNode } from \"../../utils\";\r\nimport NoData from \"../../base/common/NoData\";\r\nimport { getStorage } from \"@bj-nsc/functions\";\r\nimport config from \"../../config\";\r\nimport EllipseCell from \"../common/EllipseCell\";\r\ninterface IDragParams {\r\n id: string | number;\r\n ids: Array<string | number>;\r\n parentId: string | number;\r\n}\r\n// interface StoreProps {}\r\n\r\nexport type StoreType = \"PageStore\" | \"TreeStore\" | \"BaseStore\";\r\n\r\ninterface NSCTablePagination extends TablePaginationConfig {\r\n totalKey?: string;\r\n pageSizeKey?: string;\r\n currentKey?: string;\r\n}\r\n\r\ninterface ToolBarProps {\r\n show: boolean;\r\n tools?: Array<string>;\r\n onToolClick?: { onRefresh?: any; onSort?: any };\r\n}\r\ninterface NSCTableProps extends TableProps<any> {\r\n store?: StoreProps;\r\n showTotal?: boolean; // 是否显示总条数信息,默认true\r\n dragable?: boolean; // 是否可拖动, 默认false\r\n filterColumn?: boolean; // 是否支持过滤显示表格列, 默认true\r\n moveRow?: (params: IDragParams) => void; // 拖拽完成后的回调\r\n dragUrl?: string; // 保存拖拽排序的接口\r\n pagination?: false | NSCTablePagination;\r\n autoPagination?: boolean; // 组件是否自动处理分页\r\n autoSort?: boolean; //组件是否自动处理排序\r\n autoOnChange?: boolean; // 组件是否自动onChange, false则不做任何处理全部交给调用方\r\n resizeColumn?: boolean;\r\n sortFields?: Array<string>; //需要排序的字段Index\r\n toolbar?: ToolBarProps | boolean;\r\n autoSize?: boolean;\r\n sortSearch?: boolean; //是否添加排序查询,默认true\r\n // tableSize?: \"small\" | \"middle\" | \"default\" | \"auto\";\r\n // size?: \"small\" | \"middle\" | \"default\" | \"auto\";\r\n showRowSelection?: boolean;\r\n rowKey?: string;\r\n}\r\n\r\nexport type INSCTableProps = typeof NSCTable.defaultProps & NSCTableProps;\r\nexport { DndContextType, IBodyRowProps };\r\n\r\nconst ResizeableTitle = (props: any) => {\r\n const { onResize, width, ...restProps } = props;\r\n return (\r\n <Resizable\r\n width={width || 150}\r\n height={0}\r\n onResize={onResize}\r\n draggableOpts={{ enableUserSelectHack: false }}\r\n >\r\n <th {...restProps} />\r\n </Resizable>\r\n );\r\n};\r\nclass NSCTable extends React.Component<INSCTableProps, any> {\r\n static defaultProps = {\r\n dragable: false,\r\n showTotal: true,\r\n filterColumn: true,\r\n dragUrl: \"\",\r\n autoPagination: true,\r\n autoSort: true,\r\n autoOnChange: true,\r\n resizeColumn: true,\r\n toolbar: {\r\n show: true,\r\n onToolClick: {} as any,\r\n } as any,\r\n };\r\n\r\n store = {} as StoreProps;\r\n thIconRef = React.createRef<HTMLDivElement>();\r\n tableSearchRef = React.createRef<any>();\r\n\r\n listeners = {\r\n onBeforeLoad: null,\r\n load: null,\r\n };\r\n\r\n components = {\r\n header: {\r\n cell: ResizeableTitle,\r\n },\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n let modal = props.type || \"auto\";\r\n let storePrefix = getStorage(\"store-pre-key\");\r\n let autoType = getStorage(\r\n storePrefix ? storePrefix + \"tableSize\" : \"tableSize\"\r\n );\r\n autoType = autoType?.content;\r\n this.state = {\r\n dataSource: [],\r\n columns: [],\r\n loading: false,\r\n pagination: {},\r\n activeIndex: -1,\r\n //搜索文本\r\n searchText: null,\r\n fieldOption: null,\r\n searchColor: null,\r\n cols: [],\r\n sorts: [],\r\n filterParams: {},\r\n tableSize: this.props.size || autoType || \"default\",\r\n sortType: \"single\",\r\n sorter: [], //记录当前排序字段\r\n sortInfo: {},\r\n defaultSort: true,\r\n checkColumn: [],\r\n defaultCheck: true,\r\n selectedRowKeys: [],\r\n selectedRowDatas: [],\r\n };\r\n if (props.store instanceof Store) {\r\n this.store = props.store;\r\n } else {\r\n const { listeners: listenersProps = {}, ...restStore } =\r\n props.store || {};\r\n const storeProps = {\r\n model: \"model\",\r\n component: this,\r\n listeners: {\r\n onBeforeLoad: (store, options) => {\r\n this.setState({ loading: true });\r\n utils.callback(listenersProps.onBeforeLoad, this, [store, options]);\r\n },\r\n dataChanged: (data, modelData, store) => {\r\n let paging = !(this.props.pagination === false);\r\n if (paging && !this.props.dataSource) {\r\n this.setState({\r\n dataSource: modelData,\r\n pagination: store.getPagination(),\r\n loading: false,\r\n activeIndex: -1,\r\n });\r\n } else {\r\n this.setState({ dataSource: modelData, loading: false });\r\n }\r\n\r\n utils.callback(listenersProps.dataChanged, this, [\r\n data,\r\n modelData,\r\n store,\r\n paging,\r\n ]);\r\n },\r\n load: (data, modelData, store) => {\r\n utils.callback(listenersProps.load, this, [data, modelData, store]);\r\n },\r\n onErrorLoad: (err, response) => {\r\n this.setState({ loading: false });\r\n utils.callback(listenersProps.onErrorLoad, this, [err, response]);\r\n },\r\n },\r\n data: restStore.data\r\n ? restStore.data\r\n : props.dataSource\r\n ? props.dataSource\r\n : null,\r\n ...restStore,\r\n autoLoad: restStore.autoLoad === false ? false : true,\r\n };\r\n this.store = new PageStore(\r\n Object.assign({}, storeProps, {\r\n pagination: { current: 1, ...this.props.pagination },\r\n })\r\n );\r\n }\r\n }\r\n\r\n handleResize =\r\n (index: any) =>\r\n (e: any, { size }: any) => {\r\n const { cols } = this.state;\r\n const nextColumns = [...cols];\r\n nextColumns[index] = {\r\n ...nextColumns[index],\r\n width: size.width,\r\n };\r\n this.setState({\r\n cols: nextColumns,\r\n });\r\n };\r\n\r\n componentDidMount() {\r\n const { resizeColumn } = this.props;\r\n if (!resizeColumn) {\r\n this.setState({ columns: [...this.props.columns] });\r\n } else {\r\n this.setState({ cols: [...this.props.columns] });\r\n }\r\n const store = this.props.store;\r\n if (store && store.data) {\r\n this.store.setData(store.data);\r\n }\r\n window.addEventListener(\"message\", this.listenMessage);\r\n }\r\n componentWillUnmount() {\r\n window.removeEventListener(\"message\", this.listenMessage);\r\n }\r\n listenMessage = (ev) => {\r\n const data = typeof ev.data === \"string\" ? JSON.parse(ev.data) : ev.data;\r\n let _this = this;\r\n if (data.eventType == \"changeTableSize\") {\r\n const { payload } = data;\r\n if (\r\n payload.size == \"default\" ||\r\n payload.size == \"small\" ||\r\n payload.size == \"middle\"\r\n ) {\r\n _this.setState({ tableSize: payload.size });\r\n }\r\n }\r\n };\r\n componentDidUpdate(prevProps, preState) {\r\n const { resizeColumn } = this.props;\r\n if (!resizeColumn) {\r\n if (this.props.columns !== prevProps.columns) {\r\n this.setState({ columns: this.props.columns });\r\n }\r\n } else {\r\n if (preState.cols !== this.state.cols) {\r\n this.resetColumn();\r\n }\r\n if (this.props.columns !== prevProps.columns) {\r\n this.setState({ cols: this.props.columns });\r\n }\r\n if (prevProps.size !== this.props.size) {\r\n this.setState({ tableSize: this.props.size });\r\n }\r\n }\r\n }\r\n\r\n resetColumn() {\r\n const { cols } = this.state;\r\n const newCols: any = [];\r\n let colss = cols || [];\r\n colss.map((col: any, index: any) => {\r\n let temp = {\r\n ...col,\r\n onHeaderCell: (column: { width: any }) => ({\r\n width: column.width,\r\n onResize: this.handleResize(index),\r\n }),\r\n };\r\n newCols.push(temp);\r\n });\r\n this.setState({\r\n columns: newCols,\r\n });\r\n }\r\n\r\n /**\r\n * 清除选中颜色\r\n */\r\n clearSelectColor() {\r\n this.setState({ activeIndex: -1 });\r\n return this;\r\n }\r\n\r\n getPaginationByStore() {\r\n return this.store.getPagination();\r\n }\r\n\r\n onChange(pagination, filters, sorter, extra) {\r\n const {\r\n autoOnChange = true,\r\n autoSort,\r\n autoPagination,\r\n onChange,\r\n store,\r\n } = this.props;\r\n const { filterParams } = this.state;\r\n const isMultiple = Array.isArray(sorter);\r\n if (autoOnChange === false || !store) {\r\n onChange && onChange(pagination, filters, sorter, extra);\r\n return;\r\n }\r\n const handlePagination = () => {\r\n let params = {} as {\r\n size?: string;\r\n pageSize?: string;\r\n ascs?: string;\r\n descs?: string;\r\n [propName: string]: string;\r\n };\r\n const paging = this.getPaginationByStore() || {};\r\n if (!isEmptyObj(pagination)) {\r\n const p = {\r\n [paging.currentKey || \"current\"]: pagination.current,\r\n [paging.pageSizeKey || \"size\"]: pagination.pageSize,\r\n };\r\n Object.assign(params, p);\r\n }\r\n let ascParams = this.getSortParam(sorter, true);\r\n if (isMultiple) {\r\n this.setState({ sorter });\r\n } else if (!isMultiple && !isEmptyObj(sorter)) {\r\n sorter.column &&\r\n this.setState({ sorter: [sorter], defaultSort: false });\r\n } else {\r\n this.setState({ sorter: [] });\r\n }\r\n params = { ...filterParams, ...params, ...ascParams };\r\n autoSort && this.store.reload({ params });\r\n };\r\n\r\n const onChangeFn = this.props.onChange;\r\n\r\n autoPagination && handlePagination();\r\n // 用户传了onChange保留用户自主处理表格变化的权力\r\n if (onChangeFn) {\r\n utils.callback(onChangeFn, this, [pagination, filters, sorter, extra]);\r\n }\r\n }\r\n\r\n getStore() {\r\n return this.store;\r\n }\r\n\r\n /**\r\n * 获取数据模型对象\r\n */\r\n getModel() {\r\n return this.store.getModel();\r\n }\r\n\r\n /**\r\n * 菜单搜索过滤显示\r\n * @param {String} val\r\n */\r\n handleSearch(val, fieldOption, searchColor) {\r\n this.setState({\r\n searchText: val,\r\n fieldOption: fieldOption,\r\n searchColor: searchColor,\r\n });\r\n }\r\n\r\n /**\r\n * 模块列表移动排序\r\n */\r\n moveRow = (dragIndex, hoverIndex, drag, target) => {\r\n const _this = this;\r\n let dragNode = drag.record;\r\n let targetNode = target.record;\r\n dragNode.moveArray(dragNode, targetNode);\r\n let ids = dragNode.parentNode.getChildNodeIds();\r\n let params = {\r\n id: dragNode.id,\r\n parentId: dragNode.attribute.parentId,\r\n ids: ids,\r\n };\r\n\r\n if (this.props.moveRow) {\r\n this.props.moveRow(params);\r\n } else {\r\n this.store.reload();\r\n }\r\n };\r\n\r\n filterColumn(checkedValue) {\r\n if (checkedValue.length == 0) {\r\n message.warning(\"至少显示一列!\");\r\n return;\r\n }\r\n const filterColumns = this.props.columns.map((col: ColumnType<{}>) => {\r\n const newCol = { ...col } as ColumnType<{}> & { initShow: boolean };\r\n if (checkedValue.includes(col.dataIndex)) {\r\n newCol.initShow = true;\r\n } else {\r\n newCol.initShow = false;\r\n }\r\n return newCol;\r\n });\r\n const { resizeColumn } = this.props;\r\n if (!resizeColumn) {\r\n this.setState({\r\n columns: filterColumns,\r\n checkColumn: checkedValue,\r\n defaultCheck: false,\r\n });\r\n } else {\r\n this.setState({\r\n cols: filterColumns,\r\n checkColumn: checkedValue,\r\n defaultCheck: false,\r\n });\r\n }\r\n }\r\n getSortParam(sorter, sortState = false) {\r\n const isMultiple = Array.isArray(sorter);\r\n const { sortSearch = true } = this.props;\r\n if (!sortSearch) {\r\n return {};\r\n }\r\n let sortInfo = {};\r\n let orderItems = [];\r\n if (!isEmptyObj(sorter) && !isMultiple && sorter.column) {\r\n orderItems = [\r\n {\r\n column: sorter.column.field || sorter.column.dataIndex,\r\n asc: sorter.order == \"ascend\",\r\n },\r\n ];\r\n if (sorter.column) sortInfo[sorter.column.dataIndex] = sorter.order;\r\n } else if (isMultiple) {\r\n sorter.forEach((v) => {\r\n sortInfo[v.column.dataIndex] = v.order;\r\n let field = v.column.field || v.column.dataIndex;\r\n orderItems.push({\r\n column: field,\r\n asc: v.order == \"ascend\",\r\n });\r\n });\r\n }\r\n if (sortState) {\r\n this.setState({\r\n sortInfo: sortInfo,\r\n });\r\n }\r\n return { orderItems: JSON.stringify(orderItems) };\r\n }\r\n getColumns() {\r\n const { columns, sortType, sortInfo } = this.state;\r\n const { sortFields = [] } = this.props;\r\n const defaultShowCols = columns.filter((cols) => cols.initShow !== false);\r\n const cols = defaultShowCols.map((col, index) => {\r\n if (col.ellipsis && !col.render) {\r\n col.ellipsis = {\r\n showTitle: false,\r\n };\r\n col.render = (text) => {\r\n return (\r\n <div title={text} className={getLess(styles, \"text\")} style={{ width: col.width }}>\r\n {text}\r\n </div>\r\n );\r\n };\r\n }\r\n\r\n if (sortFields.indexOf(col.dataIndex) > -1) {\r\n if (sortType == \"single\") {\r\n col.sorter = true;\r\n col.sortOrder = sortInfo[col.dataIndex]\r\n ? sortInfo[col.dataIndex]\r\n : null;\r\n } else if (sortType == \"multiple\") {\r\n col.sorter = { multiple: index };\r\n col.sortOrder = sortInfo[col.dataIndex]\r\n ? sortInfo[col.dataIndex]\r\n : null;\r\n }\r\n }\r\n return col;\r\n });\r\n cols.map((item, index) => {\r\n if (!isEmptyObj(item.filterProps)) {\r\n let obj = { ...item };\r\n const { type, props, searchKey } = item.filterProps;\r\n let Div = null;\r\n let text = item.title;\r\n Div = getNode(type, {\r\n placeholder: `搜索${text}`,\r\n ...props,\r\n ref: this.tableSearchRef,\r\n });\r\n obj = {\r\n filterDropdown: ({\r\n setSelectedKeys,\r\n selectedKeys,\r\n confirm,\r\n clearFilters,\r\n }) => {\r\n return (\r\n <div className={getLess(styles, \"search\")}>\r\n <div className={getLess(styles, \"space\")}>{Div}</div>\r\n <Space>\r\n <Button\r\n type=\"primary\"\r\n onClick={() => {\r\n confirm();\r\n const { filterParams } = this.state;\r\n let newFilterParams = { ...filterParams };\r\n let key = item.field || item.dataIndex;\r\n newFilterParams[key] =\r\n this.tableSearchRef.current?.getValue();\r\n this.setState({\r\n filterParams: { ...newFilterParams },\r\n });\r\n const sortParam = this.getSortParam(this.state.sorter);\r\n this.store.load({\r\n params: { ...newFilterParams, ...sortParam },\r\n });\r\n }}\r\n size=\"small\"\r\n className={getLess(styles, \"button\")}\r\n >\r\n 查询\r\n </Button>\r\n </Space>\r\n </div>\r\n );\r\n },\r\n filterIcon: () => {\r\n return <SearchOutlined />;\r\n },\r\n ...obj,\r\n };\r\n cols[index] = obj;\r\n }\r\n });\r\n return cols;\r\n }\r\n renderToolBar() {\r\n let { tableSize, columns, sortType } = this.state;\r\n let { filterColumn, columns: colLists, toolbar } = this.props;\r\n const { tableTool, storeRequestConfig = {} } = config();\r\n let tools = [\"refresh\", \"size\", \"sort\", \"column\"];\r\n let toolsClick = {} as any;\r\n if (toolbar == true) {\r\n tools = toolbar.onToolClick\r\n ? toolbar.onToolClick\r\n : [\"refresh\", \"size\", \"sort\", \"column\"];\r\n } else {\r\n tools = toolbar.tools\r\n ? toolbar.tools\r\n : tableTool.tools\r\n ? tableTool.tools\r\n : tools;\r\n toolsClick = toolbar.onToolClick ? toolbar.onToolClick : {};\r\n }\r\n const sizeItem = [\r\n { title: \"宽松\", key: \"default\" },\r\n { title: \"中等\", key: \"middle\" },\r\n { title: \"紧凑\", key: \"small\" },\r\n ];\r\n const sortItem = [\r\n { title: \"单字段排序\", key: \"single\" },\r\n { title: \"多字段排序\", key: \"multiple\" },\r\n ];\r\n const sortContent = (\r\n <>\r\n <div\r\n className={getLess(styles, \"cotent-title\")}\r\n style={{\r\n cursor: this.state.defaultSort ? \"not-allowed\" : \"pointer\",\r\n color: this.state.defaultSort && \"rgba(0,0,0,.45)\",\r\n }}\r\n onClick={() => {\r\n if (this.state.defaultSort) {\r\n return;\r\n }\r\n this.setState({ sorter: [], sortInfo: {}, defaultSort: true });\r\n const params = { ...this.state.filterParams };\r\n this.store.reload({ params });\r\n }}\r\n >\r\n 恢复默认排序\r\n </div>\r\n {sortItem.map((item, index) => {\r\n return (\r\n <div\r\n key={item.key}\r\n onClick={() => {\r\n this.setState({\r\n sorter: [],\r\n sortInfo: {},\r\n sortType: item.key,\r\n defaultSort: false,\r\n });\r\n const params = { ...this.state.filterParams };\r\n this.store.reload({ params });\r\n }}\r\n >\r\n {sortType == item.key ? (\r\n <a>\r\n <div className={getLess(styles, \"content-tiem\")}>\r\n <div style={{ width: 20 }}>\r\n {sortType == item.key && <CheckOutlined />}\r\n </div>\r\n <div> {item.title}</div>\r\n </div>\r\n </a>\r\n ) : (\r\n <div className={getLess(styles, \"content-tiem\")}>\r\n <div style={{ width: 20 }}></div>\r\n <div> {item.title}</div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n })}\r\n {this.state.sorter.length > 0 && (\r\n <>\r\n <div\r\n className={getLess(styles, \"cotent-title\")}\r\n style={{ color: \"rgba(0,0,0,.45)\" }}\r\n >\r\n 当前排序\r\n </div>\r\n {this.state.sorter.map((item, index) => {\r\n return (\r\n <div className={getLess(styles, \"content-tiem\")} key={index}>\r\n <div style={{ width: 20 }}>\r\n {item.order == \"ascend\" ? (\r\n <SortAscendingOutlined />\r\n ) : (\r\n <SortDescendingOutlined />\r\n )}\r\n </div>\r\n <div> {item.column.title}</div>\r\n </div>\r\n );\r\n })}\r\n </>\r\n )}\r\n </>\r\n );\r\n const sizeContent = (\r\n <>\r\n <div className={getLess(styles, \"cotent-title\")}>表格密度</div>\r\n {sizeItem.map((item, index) => {\r\n return (\r\n <div\r\n key={item.key}\r\n onClick={() => {\r\n this.setState({\r\n tableSize: item.key,\r\n });\r\n }}\r\n >\r\n {tableSize == item.key ? (\r\n <a>\r\n <div className={getLess(styles, \"content-tiem\")}>\r\n <div style={{ width: 20 }}>\r\n {tableSize == item.key && <CheckOutlined />}\r\n </div>\r\n <div> {item.title}</div>\r\n </div>\r\n </a>\r\n ) : (\r\n <div className={getLess(styles, \"content-tiem\")}>\r\n <div style={{ width: 20 }}></div>\r\n <div> {item.title}</div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n })}\r\n </>\r\n );\r\n\r\n const defaultShowCols = columns.filter((cols) => cols.initShow !== false);\r\n\r\n const content = (\r\n <Checkbox.Group\r\n onChange={this.filterColumn.bind(this)}\r\n options={colLists.map(\r\n (col: ColumnType<{}> & { filterColumn: boolean; dataIndex: any }) => {\r\n if (!col.dataIndex) {\r\n col.dataIndex = col.title;\r\n }\r\n return {\r\n label: col.title,\r\n value: col.dataIndex,\r\n disabled: col.filterColumn === false,\r\n } as CheckboxOptionType;\r\n }\r\n )}\r\n // defaultValue={defaultShowCols.map((col) => col.dataIndex)}\r\n value={\r\n this.state.defaultCheck\r\n ? defaultShowCols.map((col) => col.dataIndex)\r\n : this.state.checkColumn\r\n }\r\n ></Checkbox.Group>\r\n );\r\n return (\r\n <div className={getLess(styles, \"table-tool-bar\")}>\r\n {tools.indexOf(\"column\") > -1 && (\r\n <div style={{ fontSize: 14 }}>\r\n <Popover\r\n title=\"选择显示的列\"\r\n content={content}\r\n placement=\"bottomRight\"\r\n trigger=\"click\"\r\n overlayStyle={{ minWidth: 410, maxWidth: 450 }}\r\n // getPopupContainer={() => this.thIconRef.current}\r\n >\r\n <AppstoreOutlined className={getLess(styles, \"app-store-icon\")} />\r\n </Popover>\r\n </div>\r\n )}\r\n {tools.indexOf(\"sort\") > -1 && (\r\n <div style={{ marginRight: 8, fontSize: 14 }}>\r\n <Popover placement=\"bottom\" content={sortContent} trigger=\"click\">\r\n <SortAscendingOutlined />\r\n </Popover>\r\n </div>\r\n )}\r\n {tools.indexOf(\"size\") > -1 && (\r\n <div style={{ marginRight: 8, fontSize: 14 }}>\r\n <Popover placement=\"bottom\" content={sizeContent} trigger=\"click\">\r\n <ColumnHeightOutlined />\r\n </Popover>\r\n </div>\r\n )}\r\n {tools.indexOf(\"refresh\") > -1 && (\r\n <div\r\n style={{ marginRight: 8, fontSize: 14, cursor: \"pointer\" }}\r\n onClick={() => {\r\n const params = { ...this.state.filterParams };\r\n if (toolsClick.onRefresh) {\r\n toolsClick.onRefresh();\r\n } else {\r\n this.store.load({ params });\r\n }\r\n }}\r\n >\r\n <RedoOutlined />\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }\r\n getSelectedRowKeys() {\r\n return this.state.selectedRowKeys;\r\n }\r\n getSelectedRowDatas() {\r\n return this.state.selectedRowDatas;\r\n }\r\n resetSelectedRowKeys() {\r\n this.setState({\r\n selectedRowKeys: [],\r\n selectedRowDatas: [],\r\n });\r\n }\r\n setSelectedRowKeys(data: Array<String | Number>) {\r\n this.setState({\r\n selectedRowKeys: data,\r\n });\r\n }\r\n setSelectedRowDatas(data: Array<Object>) {\r\n this.setState({\r\n selectedRowDatas: data,\r\n });\r\n }\r\n rowSelectionOnSelect(record: any, selected: any) {\r\n const { selectedRowKeys, selectedRowDatas } = this.state;\r\n let { rowKey = \"id\" } = this.props;\r\n let newSelectedRowKeys = [...selectedRowKeys];\r\n let newSelectedRowDatas = [...selectedRowDatas];\r\n if (selected) {\r\n newSelectedRowKeys = [...newSelectedRowKeys, record[rowKey]];\r\n newSelectedRowDatas = [...newSelectedRowDatas, record];\r\n } else {\r\n selectedRowKeys.map((item: any, index: any) => {\r\n if (item === record[rowKey]) {\r\n newSelectedRowKeys.splice(index, 1);\r\n }\r\n });\r\n selectedRowDatas.map((item: any, index: any) => {\r\n if (item[rowKey] === record[rowKey]) {\r\n newSelectedRowDatas.splice(index, 1);\r\n }\r\n });\r\n }\r\n this.setState({\r\n selectedRowKeys: newSelectedRowKeys,\r\n selectedRowDatas: newSelectedRowDatas,\r\n });\r\n }\r\n rowSelectionOnSelectAll(selected: any, selectedRows: any, changeRows: any) {\r\n const { selectedRowKeys, selectedRowDatas } = this.state;\r\n const { rowKey = \"id\" } = this.props;\r\n let newids: any = [];\r\n let newdatas: any = [];\r\n if (changeRows.length > 0) {\r\n let changeIds = changeRows.map((item: any) => item[rowKey]);\r\n if (selected) {\r\n newids = [...selectedRowKeys, ...changeIds];\r\n newdatas = [...selectedRowDatas, ...changeRows];\r\n } else {\r\n selectedRowKeys.map((item: any, index: any) => {\r\n if (changeIds.indexOf(item) == -1) {\r\n newids.push(item);\r\n }\r\n });\r\n selectedRowDatas.map((item: any, index: any) => {\r\n if (changeIds.indexOf(item[rowKey]) == -1) {\r\n newdatas.push(item);\r\n }\r\n });\r\n }\r\n } else {\r\n newids = [...selectedRowKeys];\r\n newdatas = [...selectedRowDatas];\r\n }\r\n this.setState({\r\n selectedRowKeys: [...newids],\r\n selectedRowDatas: [...newdatas],\r\n });\r\n }\r\n render() {\r\n let _this = this,\r\n {\r\n loading,\r\n dataSource,\r\n pagination = {},\r\n searchText,\r\n fieldOption,\r\n searchColor,\r\n tableSize,\r\n } = this.state,\r\n props = utils.omit(\r\n this.props,\r\n [\r\n \"store\",\r\n \"onChange\",\r\n \"columns\",\r\n \"resetColumn\",\r\n \"toolbar\",\r\n \"sortFields\",\r\n \"filterColumn\",\r\n \"sortSearch\",\r\n \"showRowSelection\",\r\n ],\r\n {\r\n rowKey: \"id\",\r\n clickChangeColor: false,\r\n }\r\n );\r\n if (props.pagination !== false) {\r\n props.pagination = {\r\n position: [\"bottomRight\"],\r\n showSizeChanger: true,\r\n showQuickJumper: true,\r\n ...props.pagination,\r\n ...pagination,\r\n };\r\n if (props.showTotal == true) {\r\n props.pagination.showTotal = function (total, [from, to]) {\r\n // return \"显示 \" + from + \" - \" + to + \"条,共 \" + total + \" 条\";\r\n return \"共 \" + total + \" 条\";\r\n };\r\n }\r\n }\r\n props.onChange = function (pagination, filters, sorter, extra) {\r\n _this.onChange(pagination, filters, sorter, extra);\r\n };\r\n if (props.clickChangeColor) {\r\n const onRowFn = props.onRow;\r\n props.onRow = function (record, index) {\r\n var custom = onRowFn ? onRowFn(record, index) : {};\r\n const onClickFn = custom.onClick;\r\n custom.onClick = (event) => {\r\n _this.setState({\r\n activeIndex: index, //获取点击行的索引\r\n });\r\n utils.callback(onClickFn, _this, [event]);\r\n };\r\n return custom;\r\n };\r\n props.rowClassName = function (record, index) {\r\n return index === _this.state.activeIndex\r\n ? `${styles.clickRowStyle}`\r\n : \"\";\r\n };\r\n }\r\n let newDataSource = [];\r\n if (searchText) {\r\n const data = treeUtils.getSearchMenuDatas(\r\n this,\r\n searchText,\r\n fieldOption,\r\n searchColor\r\n );\r\n newDataSource = data.treeDatas;\r\n props.expandedRowKeys = data.openKeys;\r\n } else {\r\n newDataSource = dataSource;\r\n }\r\n props.store = props.store || {};\r\n props.store.autoLoad = props.store.autoLoad === false ? false : true;\r\n const { dragable } = _this.props;\r\n const dragableProps =\r\n dragable === true\r\n ? {\r\n components: BodyRowComponent,\r\n onRow: (record, index) => ({\r\n index,\r\n record,\r\n moveRow: this.moveRow,\r\n }),\r\n }\r\n : {};\r\n let { resizeColumn } = this.props;\r\n\r\n const resizeProps =\r\n resizeColumn === true ? { components: this.components } : null;\r\n const { tableTool } = config();\r\n let toolFlag = true;\r\n let toolprops =\r\n this.props.toolbar === false || this.props.toolbar?.show === false\r\n ? false\r\n : true;\r\n if (!toolprops) {\r\n toolFlag = toolprops;\r\n } else {\r\n toolFlag = tableTool.show === false ? false : true;\r\n }\r\n if (this.props.showRowSelection) {\r\n const { rowSelection = {} } = this.props;\r\n props = {\r\n ...props,\r\n rowSelection: {\r\n selectedRowKeys: this.state.selectedRowKeys,\r\n onSelect: this.rowSelectionOnSelect.bind(this),\r\n onSelectAll: this.rowSelectionOnSelectAll.bind(this),\r\n columnWidth: 40,\r\n ...rowSelection,\r\n },\r\n };\r\n }\r\n const DefaultTable = (\r\n <>\r\n {toolFlag && this.renderToolBar()}\r\n <Table\r\n childrenColumnName=\"childNodes\"\r\n sheitem\r\n dataSource={newDataSource}\r\n columns={this.getColumns()}\r\n loading={loading}\r\n className={styles[\"nsc-table\"]}\r\n locale={{\r\n emptyText: <NoData className={getLess(styles, \"table-nodata\")} />,\r\n }}\r\n scroll={{ x: \"max-content\" }}\r\n {...resizeProps}\r\n {...props}\r\n {...dragableProps}\r\n size={tableSize}\r\n />\r\n </>\r\n );\r\n\r\n return dragable === true ? (\r\n <DndProvider backend={HTML5Backend}>{DefaultTable}</DndProvider>\r\n ) : (\r\n DefaultTable\r\n );\r\n }\r\n}\r\n\r\nexport default withZhLocale(NSCTable);\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SACEA,gBAAgB,EAChBC,aAAa,EACbC,oBAAoB,EACpBC,cAAc,EACdC,qBAAqB,EACrBC,sBAAsB,EACtBC,YAAY,QACP,mBAAmB;AAC1B,SAASC,UAAU,QAAQ,mBAAmB;AAC9C,OAAOC,KAAK,IAAIC,SAAS,QAAoB,aAAa;AAC1D,SAASC,KAAK,QAAQ,uBAAuB;AAc7C,OAAO,KAAKC,KAAK,MAAM,OAAO;AAC9B,SAASC,WAAW,QAAQ,WAAW;AACvC,OAAOC,OAAO,IAAIC,cAAc,EAAEC,aAAa,QAAQ,mBAAmB;AAC1E,OAAOC,SAAS,MAAM,iBAAiB;AACvC,OAAOC,MAAM,MAAM,qBAAqB;AACxC,MAAM;EAAEC,gBAAgB;EAAEC;AAAa,CAAC,GAAGN,OAAO;AAClD,OAAOO,YAAY,MAAM,wBAAwB;AACjD,SAASC,SAAS,QAAQ,iBAAiB;AAC3C,OAAO,sBAAsB;AAC7B,SAASC,OAAO,EAAEC,OAAO,QAAQ,aAAa;AAC9C,OAAOC,MAAM,MAAM,0BAA0B;AAC7C,SAASC,UAAU,QAAQ,mBAAmB;AAC9C,OAAOC,MAAM,MAAM,cAAc;;AAOjC;;AAsCA,SAASZ,cAAc,EAAEC,aAAa;AAEtC,MAAMY,eAAe,GAAIC,KAAU,IAAK;EACtC,MAAM;MAAEC,QAAQ;MAAEC;IAAoB,CAAC,GAAGF,KAAK;IAAnBG,SAAS,GAAAC,wBAAA,CAAKJ,KAAK,EAAAK,SAAA;EAC/C,oBACEtB,KAAA,CAAAuB,aAAA,CAACb,SAAS;IACRS,KAAK,EAAEA,KAAK,IAAI,GAAI;IACpBK,MAAM,EAAE,CAAE;IACVN,QAAQ,EAAEA,QAAS;IACnBO,aAAa,EAAE;MAAEC,oBAAoB,EAAE;IAAM;EAAE,gBAE/C1B,KAAA,CAAAuB,aAAA,OAAQH,SAAY,CACX,CAAC;AAEhB,CAAC;AACD,MAAMO,QAAQ,SAAS3B,KAAK,CAAC4B,SAAS,CAAsB;EA+B1DC,WAAWA,CAACZ,KAAK,EAAE;IAAA,IAAAa,SAAA;IACjB,KAAK,CAACb,KAAK,CAAC;IAACc,eAAA,gBAhBP,CAAC,CAAC;IAAAA,eAAA,iCACE/B,KAAK,CAACgC,SAAS,CAAiB,CAAC;IAAAD,eAAA,sCAC5B/B,KAAK,CAACgC,SAAS,CAAM,CAAC;IAAAD,eAAA,oBAE3B;MACVE,YAAY,EAAE,IAAI;MAClBC,IAAI,EAAE;IACR,CAAC;IAAAH,eAAA,qBAEY;MACXI,MAAM,EAAE;QACNC,IAAI,EAAEpB;MACR;IACF,CAAC;IAAAe,eAAA,uBA2FEM,KAAU,IACX,CAACC,CAAM,EAAAC,IAAA,KAAoB;MAAA,IAAlB;QAAEC;MAAU,CAAC,GAAAD,IAAA;MACpB,MAAM;QAAEE;MAAK,CAAC,GAAG,IAAI,CAACC,KAAK;MAC3B,MAAMC,WAAW,GAAG,CAAC,GAAGF,IAAI,CAAC;MAC7BE,WAAW,CAACN,KAAK,CAAC,GAAAO,aAAA,CAAAA,aAAA,KACbD,WAAW,CAACN,KAAK,CAAC;QACrBlB,KAAK,EAAEqB,IAAI,CAACrB;MAAK,EAClB;MACD,IAAI,CAAC0B,QAAQ,CAAC;QACZJ,IAAI,EAAEE;MACR,CAAC,CAAC;IACJ,CAAC;IAAAZ,eAAA,wBAkBce,EAAE,IAAK;MACtB,MAAMC,IAAI,GAAG,OAAOD,EAAE,CAACC,IAAI,KAAK,QAAQ,GAAGC,IAAI,CAACC,KAAK,CAACH,EAAE,CAACC,IAAI,CAAC,GAAGD,EAAE,CAACC,IAAI;MACxE,IAAIG,KAAK,GAAG,IAAI;MAChB,IAAIH,IAAI,CAACI,SAAS,IAAI,iBAAiB,EAAE;QACvC,MAAM;UAAEC;QAAQ,CAAC,GAAGL,IAAI;QACxB,IACEK,OAAO,CAACZ,IAAI,IAAI,SAAS,IACzBY,OAAO,CAACZ,IAAI,IAAI,OAAO,IACvBY,OAAO,CAACZ,IAAI,IAAI,QAAQ,EACxB;UACAU,KAAK,CAACL,QAAQ,CAAC;YAAEQ,SAAS,EAAED,OAAO,CAACZ;UAAK,CAAC,CAAC;QAC7C;MACF;IACF,CAAC;IA8HD;AACF;AACA;IAFET,eAAA,kBAGU,CAACuB,SAAS,EAAEC,UAAU,EAAEC,IAAI,EAAEC,MAAM,KAAK;MACjD,MAAMP,KAAK,GAAG,IAAI;MAClB,IAAIQ,QAAQ,GAAGF,IAAI,CAACG,MAAM;MAC1B,IAAIC,UAAU,GAAGH,MAAM,CAACE,MAAM;MAC9BD,QAAQ,CAACG,SAAS,CAACH,QAAQ,EAAEE,UAAU,CAAC;MACxC,IAAIE,GAAG,GAAGJ,QAAQ,CAACK,UAAU,CAACC,eAAe,CAAC,CAAC;MAC/C,IAAIC,MAAM,GAAG;QACXC,EAAE,EAAER,QAAQ,CAACQ,EAAE;QACfC,QAAQ,EAAET,QAAQ,CAACU,SAAS,CAACD,QAAQ;QACrCL,GAAG,EAAEA;MACP,CAAC;MAED,IAAI,IAAI,CAAC7C,KAAK,CAACoD,OAAO,EAAE;QACtB,IAAI,CAACpD,KAAK,CAACoD,OAAO,CAACJ,MAAM,CAAC;MAC5B,CAAC,MAAM;QACL,IAAI,CAACK,KAAK,CAACC,MAAM,CAAC,CAAC;MACrB;IACF,CAAC;IAnRC,IAAIC,KAAK,GAAGvD,KAAK,CAACwD,IAAI,IAAI,MAAM;IAChC,IAAIC,WAAW,GAAG5D,UAAU,CAAC,eAAe,CAAC;IAC7C,IAAI6D,QAAQ,GAAG7D,UAAU,CACvB4D,WAAW,GAAGA,WAAW,GAAG,WAAW,GAAG,WAC5C,CAAC;IACDC,QAAQ,IAAA7C,SAAA,GAAG6C,QAAQ,cAAA7C,SAAA,uBAARA,SAAA,CAAU8C,OAAO;IAC5B,IAAI,CAAClC,KAAK,GAAG;MACXmC,UAAU,EAAE,EAAE;MACdC,OAAO,EAAE,EAAE;MACXC,OAAO,EAAE,KAAK;MACdC,UAAU,EAAE,CAAC,CAAC;MACdC,WAAW,EAAE,CAAC,CAAC;MACf;MACAC,UAAU,EAAE,IAAI;MAChBC,WAAW,EAAE,IAAI;MACjBC,WAAW,EAAE,IAAI;MACjB3C,IAAI,EAAE,EAAE;MACR4C,KAAK,EAAE,EAAE;MACTC,YAAY,EAAE,CAAC,CAAC;MAChBjC,SAAS,EAAE,IAAI,CAACpC,KAAK,CAACuB,IAAI,IAAImC,QAAQ,IAAI,SAAS;MACnDY,QAAQ,EAAE,QAAQ;MAClBC,MAAM,EAAE,EAAE;MAAE;MACZC,QAAQ,EAAE,CAAC,CAAC;MACZC,WAAW,EAAE,IAAI;MACjBC,WAAW,EAAE,EAAE;MACfC,YAAY,EAAE,IAAI;MAClBC,eAAe,EAAE,EAAE;MACnBC,gBAAgB,EAAE;IACpB,CAAC;IACD,IAAI7E,KAAK,CAACqD,KAAK,YAAYzE,KAAK,EAAE;MAChC,IAAI,CAACyE,KAAK,GAAGrD,KAAK,CAACqD,KAAK;IAC1B,CAAC,MAAM;MACL,MAAAyB,KAAA,GACE9E,KAAK,CAACqD,KAAK,IAAI,CAAC,CAAC;QADb;UAAE0B,SAAS,EAAEC,cAAc,GAAG,CAAC;QAAgB,CAAC,GAAAF,KAAA;QAAXG,SAAS,GAAA7E,wBAAA,CAAA0E,KAAA,EAAAI,UAAA;MAEpD,MAAMC,UAAU,GAAAxD,aAAA,CAAAA,aAAA;QACdyD,KAAK,EAAE,OAAO;QACdC,SAAS,EAAE,IAAI;QACfN,SAAS,EAAE;UACT/D,YAAY,EAAEA,CAACqC,KAAK,EAAEiC,OAAO,KAAK;YAChC,IAAI,CAAC1D,QAAQ,CAAC;cAAEkC,OAAO,EAAE;YAAK,CAAC,CAAC;YAChChF,KAAK,CAACyG,QAAQ,CAACP,cAAc,CAAChE,YAAY,EAAE,IAAI,EAAE,CAACqC,KAAK,EAAEiC,OAAO,CAAC,CAAC;UACrE,CAAC;UACDE,WAAW,EAAEA,CAAC1D,IAAI,EAAE2D,SAAS,EAAEpC,KAAK,KAAK;YACvC,IAAIqC,MAAM,GAAG,EAAE,IAAI,CAAC1F,KAAK,CAAC+D,UAAU,KAAK,KAAK,CAAC;YAC/C,IAAI2B,MAAM,IAAI,CAAC,IAAI,CAAC1F,KAAK,CAAC4D,UAAU,EAAE;cACpC,IAAI,CAAChC,QAAQ,CAAC;gBACZgC,UAAU,EAAE6B,SAAS;gBACrB1B,UAAU,EAAEV,KAAK,CAACsC,aAAa,CAAC,CAAC;gBACjC7B,OAAO,EAAE,KAAK;gBACdE,WAAW,EAAE,CAAC;cAChB,CAAC,CAAC;YACJ,CAAC,MAAM;cACL,IAAI,CAACpC,QAAQ,CAAC;gBAAEgC,UAAU,EAAE6B,SAAS;gBAAE3B,OAAO,EAAE;cAAM,CAAC,CAAC;YAC1D;YAEAhF,KAAK,CAACyG,QAAQ,CAACP,cAAc,CAACQ,WAAW,EAAE,IAAI,EAAE,CAC/C1D,IAAI,EACJ2D,SAAS,EACTpC,KAAK,EACLqC,MAAM,CACP,CAAC;UACJ,CAAC;UACDzE,IAAI,EAAEA,CAACa,IAAI,EAAE2D,SAAS,EAAEpC,KAAK,KAAK;YAChCvE,KAAK,CAACyG,QAAQ,CAACP,cAAc,CAAC/D,IAAI,EAAE,IAAI,EAAE,CAACa,IAAI,EAAE2D,SAAS,EAAEpC,KAAK,CAAC,CAAC;UACrE,CAAC;UACDuC,WAAW,EAAEA,CAACC,GAAG,EAAEC,QAAQ,KAAK;YAC9B,IAAI,CAAClE,QAAQ,CAAC;cAAEkC,OAAO,EAAE;YAAM,CAAC,CAAC;YACjChF,KAAK,CAACyG,QAAQ,CAACP,cAAc,CAACY,WAAW,EAAE,IAAI,EAAE,CAACC,GAAG,EAAEC,QAAQ,CAAC,CAAC;UACnE;QACF,CAAC;QACDhE,IAAI,EAAEmD,SAAS,CAACnD,IAAI,GAChBmD,SAAS,CAACnD,IAAI,GACd9B,KAAK,CAAC4D,UAAU,GAChB5D,KAAK,CAAC4D,UAAU,GAChB;MAAI,GACLqB,SAAS;QACZc,QAAQ,EAAEd,SAAS,CAACc,QAAQ,KAAK,KAAK,GAAG,KAAK,GAAG;MAAI,EACtD;MACD,IAAI,CAAC1C,KAAK,GAAG,IAAIxE,SAAS,CACxBmH,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,EAAEd,UAAU,EAAE;QAC5BpB,UAAU,EAAApC,aAAA;UAAIuE,OAAO,EAAE;QAAC,GAAK,IAAI,CAAClG,KAAK,CAAC+D,UAAU;MACpD,CAAC,CACH,CAAC;IACH;EACF;EAgBAoC,iBAAiBA,CAAA,EAAG;IAClB,MAAM;MAAEC;IAAa,CAAC,GAAG,IAAI,CAACpG,KAAK;IACnC,IAAI,CAACoG,YAAY,EAAE;MACjB,IAAI,CAACxE,QAAQ,CAAC;QAAEiC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC7D,KAAK,CAAC6D,OAAO;MAAE,CAAC,CAAC;IACrD,CAAC,MAAM;MACL,IAAI,CAACjC,QAAQ,CAAC;QAAEJ,IAAI,EAAE,CAAC,GAAG,IAAI,CAACxB,KAAK,CAAC6D,OAAO;MAAE,CAAC,CAAC;IAClD;IACA,MAAMR,KAAK,GAAG,IAAI,CAACrD,KAAK,CAACqD,KAAK;IAC9B,IAAIA,KAAK,IAAIA,KAAK,CAACvB,IAAI,EAAE;MACvB,IAAI,CAACuB,KAAK,CAACgD,OAAO,CAAChD,KAAK,CAACvB,IAAI,CAAC;IAChC;IACAwE,MAAM,CAACC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAACC,aAAa,CAAC;EACxD;EACAC,oBAAoBA,CAAA,EAAG;IACrBH,MAAM,CAACI,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAACF,aAAa,CAAC;EAC3D;EAeAG,kBAAkBA,CAACC,SAAS,EAAEC,QAAQ,EAAE;IACtC,MAAM;MAAET;IAAa,CAAC,GAAG,IAAI,CAACpG,KAAK;IACnC,IAAI,CAACoG,YAAY,EAAE;MACjB,IAAI,IAAI,CAACpG,KAAK,CAAC6D,OAAO,KAAK+C,SAAS,CAAC/C,OAAO,EAAE;QAC5C,IAAI,CAACjC,QAAQ,CAAC;UAAEiC,OAAO,EAAE,IAAI,CAAC7D,KAAK,CAAC6D;QAAQ,CAAC,CAAC;MAChD;IACF,CAAC,MAAM;MACL,IAAIgD,QAAQ,CAACrF,IAAI,KAAK,IAAI,CAACC,KAAK,CAACD,IAAI,EAAE;QACrC,IAAI,CAACsF,WAAW,CAAC,CAAC;MACpB;MACA,IAAI,IAAI,CAAC9G,KAAK,CAAC6D,OAAO,KAAK+C,SAAS,CAAC/C,OAAO,EAAE;QAC5C,IAAI,CAACjC,QAAQ,CAAC;UAAEJ,IAAI,EAAE,IAAI,CAACxB,KAAK,CAAC6D;QAAQ,CAAC,CAAC;MAC7C;MACA,IAAI+C,SAAS,CAACrF,IAAI,KAAK,IAAI,CAACvB,KAAK,CAACuB,IAAI,EAAE;QACtC,IAAI,CAACK,QAAQ,CAAC;UAAEQ,SAAS,EAAE,IAAI,CAACpC,KAAK,CAACuB;QAAK,CAAC,CAAC;MAC/C;IACF;EACF;EAEAuF,WAAWA,CAAA,EAAG;IACZ,MAAM;MAAEtF;IAAK,CAAC,GAAG,IAAI,CAACC,KAAK;IAC3B,MAAMsF,OAAY,GAAG,EAAE;IACvB,IAAIC,KAAK,GAAGxF,IAAI,IAAI,EAAE;IACtBwF,KAAK,CAACC,GAAG,CAAC,CAACC,GAAQ,EAAE9F,KAAU,KAAK;MAClC,IAAI+F,IAAI,GAAAxF,aAAA,CAAAA,aAAA,KACHuF,GAAG;QACNE,YAAY,EAAGC,MAAsB,KAAM;UACzCnH,KAAK,EAAEmH,MAAM,CAACnH,KAAK;UACnBD,QAAQ,EAAE,IAAI,CAACqH,YAAY,CAAClG,KAAK;QACnC,CAAC;MAAC,EACH;MACD2F,OAAO,CAACQ,IAAI,CAACJ,IAAI,CAAC;IACpB,CAAC,CAAC;IACF,IAAI,CAACvF,QAAQ,CAAC;MACZiC,OAAO,EAAEkD;IACX,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;EACES,gBAAgBA,CAAA,EAAG;IACjB,IAAI,CAAC5F,QAAQ,CAAC;MAAEoC,WAAW,EAAE,CAAC;IAAE,CAAC,CAAC;IAClC,OAAO,IAAI;EACb;EAEAyD,oBAAoBA,CAAA,EAAG;IACrB,OAAO,IAAI,CAACpE,KAAK,CAACsC,aAAa,CAAC,CAAC;EACnC;EAEA+B,QAAQA,CAAC3D,UAAU,EAAE4D,OAAO,EAAEpD,MAAM,EAAEqD,KAAK,EAAE;IAC3C,MAAM;MACJC,YAAY,GAAG,IAAI;MACnBC,QAAQ;MACRC,cAAc;MACdL,QAAQ;MACRrE;IACF,CAAC,GAAG,IAAI,CAACrD,KAAK;IACd,MAAM;MAAEqE;IAAa,CAAC,GAAG,IAAI,CAAC5C,KAAK;IACnC,MAAMuG,UAAU,GAAGC,KAAK,CAACC,OAAO,CAAC3D,MAAM,CAAC;IACxC,IAAIsD,YAAY,KAAK,KAAK,IAAI,CAACxE,KAAK,EAAE;MACpCqE,QAAQ,IAAIA,QAAQ,CAAC3D,UAAU,EAAE4D,OAAO,EAAEpD,MAAM,EAAEqD,KAAK,CAAC;MACxD;IACF;IACA,MAAMO,gBAAgB,GAAGA,CAAA,KAAM;MAC7B,IAAInF,MAAM,GAAG,CAAC,CAMb;MACD,MAAM0C,MAAM,GAAG,IAAI,CAAC+B,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC;MAChD,IAAI,CAAC9I,UAAU,CAACoF,UAAU,CAAC,EAAE;QAC3B,MAAMqE,CAAC,GAAG;UACR,CAAC1C,MAAM,CAAC2C,UAAU,IAAI,SAAS,GAAGtE,UAAU,CAACmC,OAAO;UACpD,CAACR,MAAM,CAAC4C,WAAW,IAAI,MAAM,GAAGvE,UAAU,CAACwE;QAC7C,CAAC;QACDvC,MAAM,CAACC,MAAM,CAACjD,MAAM,EAAEoF,CAAC,CAAC;MAC1B;MACA,IAAII,SAAS,GAAG,IAAI,CAACC,YAAY,CAAClE,MAAM,EAAE,IAAI,CAAC;MAC/C,IAAIyD,UAAU,EAAE;QACd,IAAI,CAACpG,QAAQ,CAAC;UAAE2C;QAAO,CAAC,CAAC;MAC3B,CAAC,MAAM,IAAI,CAACyD,UAAU,IAAI,CAACrJ,UAAU,CAAC4F,MAAM,CAAC,EAAE;QAC7CA,MAAM,CAAC8C,MAAM,IACX,IAAI,CAACzF,QAAQ,CAAC;UAAE2C,MAAM,EAAE,CAACA,MAAM,CAAC;UAAEE,WAAW,EAAE;QAAM,CAAC,CAAC;MAC3D,CAAC,MAAM;QACL,IAAI,CAAC7C,QAAQ,CAAC;UAAE2C,MAAM,EAAE;QAAG,CAAC,CAAC;MAC/B;MACAvB,MAAM,GAAArB,aAAA,CAAAA,aAAA,CAAAA,aAAA,KAAQ0C,YAAY,GAAKrB,MAAM,GAAKwF,SAAS,CAAE;MACrDV,QAAQ,IAAI,IAAI,CAACzE,KAAK,CAACC,MAAM,CAAC;QAAEN;MAAO,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM0F,UAAU,GAAG,IAAI,CAAC1I,KAAK,CAAC0H,QAAQ;IAEtCK,cAAc,IAAII,gBAAgB,CAAC,CAAC;IACpC;IACA,IAAIO,UAAU,EAAE;MACd5J,KAAK,CAACyG,QAAQ,CAACmD,UAAU,EAAE,IAAI,EAAE,CAAC3E,UAAU,EAAE4D,OAAO,EAAEpD,MAAM,EAAEqD,KAAK,CAAC,CAAC;IACxE;EACF;EAEAe,QAAQA,CAAA,EAAG;IACT,OAAO,IAAI,CAACtF,KAAK;EACnB;;EAEA;AACF;AACA;EACEuF,QAAQA,CAAA,EAAG;IACT,OAAO,IAAI,CAACvF,KAAK,CAACuF,QAAQ,CAAC,CAAC;EAC9B;;EAEA;AACF;AACA;AACA;EACEC,YAAYA,CAACC,GAAG,EAAE5E,WAAW,EAAEC,WAAW,EAAE;IAC1C,IAAI,CAACvC,QAAQ,CAAC;MACZqC,UAAU,EAAE6E,GAAG;MACf5E,WAAW,EAAEA,WAAW;MACxBC,WAAW,EAAEA;IACf,CAAC,CAAC;EACJ;EAwBA4E,YAAYA,CAACC,YAAY,EAAE;IACzB,IAAIA,YAAY,CAACC,MAAM,IAAI,CAAC,EAAE;MAC5BC,QAAA,CAAQC,OAAO,CAAC,SAAS,CAAC;MAC1B;IACF;IACA,MAAMC,aAAa,GAAG,IAAI,CAACpJ,KAAK,CAAC6D,OAAO,CAACoD,GAAG,CAAEC,GAAmB,IAAK;MACpE,MAAMmC,MAAM,GAAA1H,aAAA,KAAQuF,GAAG,CAA4C;MACnE,IAAI8B,YAAY,CAACM,QAAQ,CAACpC,GAAG,CAACqC,SAAS,CAAC,EAAE;QACxCF,MAAM,CAACG,QAAQ,GAAG,IAAI;MACxB,CAAC,MAAM;QACLH,MAAM,CAACG,QAAQ,GAAG,KAAK;MACzB;MACA,OAAOH,MAAM;IACf,CAAC,CAAC;IACF,MAAM;MAAEjD;IAAa,CAAC,GAAG,IAAI,CAACpG,KAAK;IACnC,IAAI,CAACoG,YAAY,EAAE;MACjB,IAAI,CAACxE,QAAQ,CAAC;QACZiC,OAAO,EAAEuF,aAAa;QACtB1E,WAAW,EAAEsE,YAAY;QACzBrE,YAAY,EAAE;MAChB,CAAC,CAAC;IACJ,CAAC,MAAM;MACL,IAAI,CAAC/C,QAAQ,CAAC;QACZJ,IAAI,EAAE4H,aAAa;QACnB1E,WAAW,EAAEsE,YAAY;QACzBrE,YAAY,EAAE;MAChB,CAAC,CAAC;IACJ;EACF;EACA8D,YAAYA,CAAClE,MAAM,EAAqB;IAAA,IAAnBkF,SAAS,GAAAC,SAAA,CAAAT,MAAA,QAAAS,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG,KAAK;IACpC,MAAM1B,UAAU,GAAGC,KAAK,CAACC,OAAO,CAAC3D,MAAM,CAAC;IACxC,MAAM;MAAEqF,UAAU,GAAG;IAAK,CAAC,GAAG,IAAI,CAAC5J,KAAK;IACxC,IAAI,CAAC4J,UAAU,EAAE;MACf,OAAO,CAAC,CAAC;IACX;IACA,IAAIpF,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAIqF,UAAU,GAAG,EAAE;IACnB,IAAI,CAAClL,UAAU,CAAC4F,MAAM,CAAC,IAAI,CAACyD,UAAU,IAAIzD,MAAM,CAAC8C,MAAM,EAAE;MACvDwC,UAAU,GAAG,CACX;QACExC,MAAM,EAAE9C,MAAM,CAAC8C,MAAM,CAACyC,KAAK,IAAIvF,MAAM,CAAC8C,MAAM,CAACkC,SAAS;QACtDQ,GAAG,EAAExF,MAAM,CAACyF,KAAK,IAAI;MACvB,CAAC,CACF;MACD,IAAIzF,MAAM,CAAC8C,MAAM,EAAE7C,QAAQ,CAACD,MAAM,CAAC8C,MAAM,CAACkC,SAAS,CAAC,GAAGhF,MAAM,CAACyF,KAAK;IACrE,CAAC,MAAM,IAAIhC,UAAU,EAAE;MACrBzD,MAAM,CAAC0F,OAAO,CAAEC,CAAC,IAAK;QACpB1F,QAAQ,CAAC0F,CAAC,CAAC7C,MAAM,CAACkC,SAAS,CAAC,GAAGW,CAAC,CAACF,KAAK;QACtC,IAAIF,KAAK,GAAGI,CAAC,CAAC7C,MAAM,CAACyC,KAAK,IAAII,CAAC,CAAC7C,MAAM,CAACkC,SAAS;QAChDM,UAAU,CAACtC,IAAI,CAAC;UACdF,MAAM,EAAEyC,KAAK;UACbC,GAAG,EAAEG,CAAC,CAACF,KAAK,IAAI;QAClB,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ;IACA,IAAIP,SAAS,EAAE;MACb,IAAI,CAAC7H,QAAQ,CAAC;QACZ4C,QAAQ,EAAEA;MACZ,CAAC,CAAC;IACJ;IACA,OAAO;MAAEqF,UAAU,EAAE9H,IAAI,CAACoI,SAAS,CAACN,UAAU;IAAE,CAAC;EACnD;EACAO,UAAUA,CAAA,EAAG;IACX,MAAM;MAAEvG,OAAO;MAAES,QAAQ;MAAEE;IAAS,CAAC,GAAG,IAAI,CAAC/C,KAAK;IAClD,MAAM;MAAE4I,UAAU,GAAG;IAAG,CAAC,GAAG,IAAI,CAACrK,KAAK;IACtC,MAAMsK,eAAe,GAAGzG,OAAO,CAAC0G,MAAM,CAAE/I,IAAI,IAAKA,IAAI,CAACgI,QAAQ,KAAK,KAAK,CAAC;IACzE,MAAMhI,IAAI,GAAG8I,eAAe,CAACrD,GAAG,CAAC,CAACC,GAAG,EAAE9F,KAAK,KAAK;MAC/C,IAAI8F,GAAG,CAACsD,QAAQ,IAAI,CAACtD,GAAG,CAACuD,MAAM,EAAE;QAC/BvD,GAAG,CAACsD,QAAQ,GAAG;UACbE,SAAS,EAAE;QACb,CAAC;QACDxD,GAAG,CAACuD,MAAM,GAAIE,IAAI,IAAK;UACrB,oBACE5L,KAAA,CAAAuB,aAAA;YAAKsK,KAAK,EAAED,IAAK;YAACE,SAAS,EAAEnL,OAAO,CAACL,MAAM,EAAE,MAAM,CAAE;YAACyL,KAAK,EAAE;cAAE5K,KAAK,EAAEgH,GAAG,CAAChH;YAAM;UAAE,GAC/EyK,IACE,CAAC;QAEV,CAAC;MACH;MAEA,IAAIN,UAAU,CAACU,OAAO,CAAC7D,GAAG,CAACqC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE;QAC1C,IAAIjF,QAAQ,IAAI,QAAQ,EAAE;UACxB4C,GAAG,CAAC3C,MAAM,GAAG,IAAI;UACjB2C,GAAG,CAAC8D,SAAS,GAAGxG,QAAQ,CAAC0C,GAAG,CAACqC,SAAS,CAAC,GACnC/E,QAAQ,CAAC0C,GAAG,CAACqC,SAAS,CAAC,GACvB,IAAI;QACV,CAAC,MAAM,IAAIjF,QAAQ,IAAI,UAAU,EAAE;UACjC4C,GAAG,CAAC3C,MAAM,GAAG;YAAE0G,QAAQ,EAAE7J;UAAM,CAAC;UAChC8F,GAAG,CAAC8D,SAAS,GAAGxG,QAAQ,CAAC0C,GAAG,CAACqC,SAAS,CAAC,GACnC/E,QAAQ,CAAC0C,GAAG,CAACqC,SAAS,CAAC,GACvB,IAAI;QACV;MACF;MACA,OAAOrC,GAAG;IACZ,CAAC,CAAC;IACF1F,IAAI,CAACyF,GAAG,CAAC,CAACiE,IAAI,EAAE9J,KAAK,KAAK;MACxB,IAAI,CAACzC,UAAU,CAACuM,IAAI,CAACC,WAAW,CAAC,EAAE;QACjC,IAAIC,GAAG,GAAAzJ,aAAA,KAAQuJ,IAAI,CAAE;QACrB,MAAM;UAAE1H,IAAI;UAAExD,KAAK;UAAEqL;QAAU,CAAC,GAAGH,IAAI,CAACC,WAAW;QACnD,IAAIG,GAAG,GAAG,IAAI;QACd,IAAIX,IAAI,GAAGO,IAAI,CAACN,KAAK;QACrBU,GAAG,GAAG3L,OAAO,CAAC6D,IAAI,EAAA7B,aAAA,CAAAA,aAAA;UAChB4J,WAAW,iBAAAC,MAAA,CAAOb,IAAI;QAAE,GACrB3K,KAAK;UACRyL,GAAG,EAAE,IAAI,CAACC;QAAc,EACzB,CAAC;QACFN,GAAG,GAAAzJ,aAAA;UACDgK,cAAc,EAAEC,KAAA,IAKV;YAAA,IALW;cACfC,eAAe;cACfC,YAAY;cACZC,OAAO;cACPC;YACF,CAAC,GAAAJ,KAAA;YACC,oBACE7M,KAAA,CAAAuB,aAAA;cAAKuK,SAAS,EAAEnL,OAAO,CAACL,MAAM,EAAE,QAAQ;YAAE,gBACxCN,KAAA,CAAAuB,aAAA;cAAKuK,SAAS,EAAEnL,OAAO,CAACL,MAAM,EAAE,OAAO;YAAE,GAAEiM,GAAS,CAAC,eACrDvM,KAAA,CAAAuB,aAAA,CAAA2L,MAAA,qBACElN,KAAA,CAAAuB,aAAA,CAAA4L,OAAA;cACE1I,IAAI,EAAC,SAAS;cACd2I,OAAO,EAAEA,CAAA,KAAM;gBAAA,IAAAC,qBAAA;gBACbL,OAAO,CAAC,CAAC;gBACT,MAAM;kBAAE1H;gBAAa,CAAC,GAAG,IAAI,CAAC5C,KAAK;gBACnC,IAAI4K,eAAe,GAAA1K,aAAA,KAAQ0C,YAAY,CAAE;gBACzC,IAAIiI,GAAG,GAAGpB,IAAI,CAACpB,KAAK,IAAIoB,IAAI,CAAC3B,SAAS;gBACtC8C,eAAe,CAACC,GAAG,CAAC,IAAAF,qBAAA,GAClB,IAAI,CAACV,cAAc,CAACxF,OAAO,cAAAkG,qBAAA,uBAA3BA,qBAAA,CAA6BG,QAAQ,CAAC,CAAC;gBACzC,IAAI,CAAC3K,QAAQ,CAAC;kBACZyC,YAAY,EAAA1C,aAAA,KAAO0K,eAAe;gBACpC,CAAC,CAAC;gBACF,MAAMG,SAAS,GAAG,IAAI,CAAC/D,YAAY,CAAC,IAAI,CAAChH,KAAK,CAAC8C,MAAM,CAAC;gBACtD,IAAI,CAAClB,KAAK,CAACpC,IAAI,CAAC;kBACd+B,MAAM,EAAArB,aAAA,CAAAA,aAAA,KAAO0K,eAAe,GAAKG,SAAS;gBAC5C,CAAC,CAAC;cACJ,CAAE;cACFjL,IAAI,EAAC,OAAO;cACZsJ,SAAS,EAAEnL,OAAO,CAACL,MAAM,EAAE,QAAQ;YAAE,GACtC,cAEO,CACH,CACJ,CAAC;UAEV,CAAC;UACDoN,UAAU,EAAEA,CAAA,KAAM;YAChB,oBAAO1N,KAAA,CAAAuB,aAAA,CAAC/B,cAAc,MAAE,CAAC;UAC3B;QAAC,GACE6M,GAAG,CACP;QACD5J,IAAI,CAACJ,KAAK,CAAC,GAAGgK,GAAG;MACnB;IACF,CAAC,CAAC;IACF,OAAO5J,IAAI;EACb;EACAkL,aAAaA,CAAA,EAAG;IACd,IAAI;MAAEtK,SAAS;MAAEyB,OAAO;MAAES;IAAS,CAAC,GAAG,IAAI,CAAC7C,KAAK;IACjD,IAAI;MAAEsH,YAAY;MAAElF,OAAO,EAAE8I,QAAQ;MAAEC;IAAQ,CAAC,GAAG,IAAI,CAAC5M,KAAK;IAC7D,MAAM;MAAE6M,SAAS;MAAEC,kBAAkB,GAAG,CAAC;IAAE,CAAC,GAAGhN,MAAM,CAAC,CAAC;IACvD,IAAIiN,KAAK,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;IACjD,IAAIC,UAAU,GAAG,CAAC,CAAQ;IAC1B,IAAIJ,OAAO,IAAI,IAAI,EAAE;MACnBG,KAAK,GAAGH,OAAO,CAACK,WAAW,GACvBL,OAAO,CAACK,WAAW,GACnB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;IAC3C,CAAC,MAAM;MACLF,KAAK,GAAGH,OAAO,CAACG,KAAK,GACjBH,OAAO,CAACG,KAAK,GACbF,SAAS,CAACE,KAAK,GACfF,SAAS,CAACE,KAAK,GACfA,KAAK;MACTC,UAAU,GAAGJ,OAAO,CAACK,WAAW,GAAGL,OAAO,CAACK,WAAW,GAAG,CAAC,CAAC;IAC7D;IACA,MAAMC,QAAQ,GAAG,CACf;MAAEtC,KAAK,EAAE,IAAI;MAAE0B,GAAG,EAAE;IAAU,CAAC,EAC/B;MAAE1B,KAAK,EAAE,IAAI;MAAE0B,GAAG,EAAE;IAAS,CAAC,EAC9B;MAAE1B,KAAK,EAAE,IAAI;MAAE0B,GAAG,EAAE;IAAQ,CAAC,CAC9B;IACD,MAAMa,QAAQ,GAAG,CACf;MAAEvC,KAAK,EAAE,OAAO;MAAE0B,GAAG,EAAE;IAAS,CAAC,EACjC;MAAE1B,KAAK,EAAE,OAAO;MAAE0B,GAAG,EAAE;IAAW,CAAC,CACpC;IACD,MAAMc,WAAW,gBACfrO,KAAA,CAAAuB,aAAA,CAAAvB,KAAA,CAAAsO,QAAA,qBACEtO,KAAA,CAAAuB,aAAA;MACEuK,SAAS,EAAEnL,OAAO,CAACL,MAAM,EAAE,cAAc,CAAE;MAC3CyL,KAAK,EAAE;QACLwC,MAAM,EAAE,IAAI,CAAC7L,KAAK,CAACgD,WAAW,GAAG,aAAa,GAAG,SAAS;QAC1D8I,KAAK,EAAE,IAAI,CAAC9L,KAAK,CAACgD,WAAW,IAAI;MACnC,CAAE;MACF0H,OAAO,EAAEA,CAAA,KAAM;QACb,IAAI,IAAI,CAAC1K,KAAK,CAACgD,WAAW,EAAE;UAC1B;QACF;QACA,IAAI,CAAC7C,QAAQ,CAAC;UAAE2C,MAAM,EAAE,EAAE;UAAEC,QAAQ,EAAE,CAAC,CAAC;UAAEC,WAAW,EAAE;QAAK,CAAC,CAAC;QAC9D,MAAMzB,MAAM,GAAArB,aAAA,KAAQ,IAAI,CAACF,KAAK,CAAC4C,YAAY,CAAE;QAC7C,IAAI,CAAChB,KAAK,CAACC,MAAM,CAAC;UAAEN;QAAO,CAAC,CAAC;MAC/B;IAAE,GACH,sCAEI,CAAC,EACLmK,QAAQ,CAAClG,GAAG,CAAC,CAACiE,IAAI,EAAE9J,KAAK,KAAK;MAC7B,oBACErC,KAAA,CAAAuB,aAAA;QACEgM,GAAG,EAAEpB,IAAI,CAACoB,GAAI;QACdH,OAAO,EAAEA,CAAA,KAAM;UACb,IAAI,CAACvK,QAAQ,CAAC;YACZ2C,MAAM,EAAE,EAAE;YACVC,QAAQ,EAAE,CAAC,CAAC;YACZF,QAAQ,EAAE4G,IAAI,CAACoB,GAAG;YAClB7H,WAAW,EAAE;UACf,CAAC,CAAC;UACF,MAAMzB,MAAM,GAAArB,aAAA,KAAQ,IAAI,CAACF,KAAK,CAAC4C,YAAY,CAAE;UAC7C,IAAI,CAAChB,KAAK,CAACC,MAAM,CAAC;YAAEN;UAAO,CAAC,CAAC;QAC/B;MAAE,GAEDsB,QAAQ,IAAI4G,IAAI,CAACoB,GAAG,gBACnBvN,KAAA,CAAAuB,aAAA,yBACEvB,KAAA,CAAAuB,aAAA;QAAKuK,SAAS,EAAEnL,OAAO,CAACL,MAAM,EAAE,cAAc;MAAE,gBAC9CN,KAAA,CAAAuB,aAAA;QAAKwK,KAAK,EAAE;UAAE5K,KAAK,EAAE;QAAG;MAAE,GACvBoE,QAAQ,IAAI4G,IAAI,CAACoB,GAAG,iBAAIvN,KAAA,CAAAuB,aAAA,CAACjC,aAAa,MAAE,CACtC,CAAC,eACNU,KAAA,CAAAuB,aAAA,cAAK,GAAC,EAAC4K,IAAI,CAACN,KAAW,CACpB,CACJ,CAAC,gBAEJ7L,KAAA,CAAAuB,aAAA;QAAKuK,SAAS,EAAEnL,OAAO,CAACL,MAAM,EAAE,cAAc;MAAE,gBAC9CN,KAAA,CAAAuB,aAAA;QAAKwK,KAAK,EAAE;UAAE5K,KAAK,EAAE;QAAG;MAAE,CAAM,CAAC,eACjCnB,KAAA,CAAAuB,aAAA,cAAK,GAAC,EAAC4K,IAAI,CAACN,KAAW,CACpB,CAEJ,CAAC;IAEV,CAAC,CAAC,EACD,IAAI,CAACnJ,KAAK,CAAC8C,MAAM,CAAC0E,MAAM,GAAG,CAAC,iBAC3BlK,KAAA,CAAAuB,aAAA,CAAAvB,KAAA,CAAAsO,QAAA,qBACEtO,KAAA,CAAAuB,aAAA;MACEuK,SAAS,EAAEnL,OAAO,CAACL,MAAM,EAAE,cAAc,CAAE;MAC3CyL,KAAK,EAAE;QAAEyC,KAAK,EAAE;MAAkB;IAAE,GACrC,0BAEI,CAAC,EACL,IAAI,CAAC9L,KAAK,CAAC8C,MAAM,CAAC0C,GAAG,CAAC,CAACiE,IAAI,EAAE9J,KAAK,KAAK;MACtC,oBACErC,KAAA,CAAAuB,aAAA;QAAKuK,SAAS,EAAEnL,OAAO,CAACL,MAAM,EAAE,cAAc,CAAE;QAACiN,GAAG,EAAElL;MAAM,gBAC1DrC,KAAA,CAAAuB,aAAA;QAAKwK,KAAK,EAAE;UAAE5K,KAAK,EAAE;QAAG;MAAE,GACvBgL,IAAI,CAAClB,KAAK,IAAI,QAAQ,gBACrBjL,KAAA,CAAAuB,aAAA,CAAC9B,qBAAqB,MAAE,CAAC,gBAEzBO,KAAA,CAAAuB,aAAA,CAAC7B,sBAAsB,MAAE,CAExB,CAAC,eACNM,KAAA,CAAAuB,aAAA,cAAK,GAAC,EAAC4K,IAAI,CAAC7D,MAAM,CAACuD,KAAW,CAC3B,CAAC;IAEV,CAAC,CACD,CAEJ,CACH;IACD,MAAM4C,WAAW,gBACfzO,KAAA,CAAAuB,aAAA,CAAAvB,KAAA,CAAAsO,QAAA,qBACEtO,KAAA,CAAAuB,aAAA;MAAKuK,SAAS,EAAEnL,OAAO,CAACL,MAAM,EAAE,cAAc;IAAE,GAAC,0BAAS,CAAC,EAC1D6N,QAAQ,CAACjG,GAAG,CAAC,CAACiE,IAAI,EAAE9J,KAAK,KAAK;MAC7B,oBACErC,KAAA,CAAAuB,aAAA;QACEgM,GAAG,EAAEpB,IAAI,CAACoB,GAAI;QACdH,OAAO,EAAEA,CAAA,KAAM;UACb,IAAI,CAACvK,QAAQ,CAAC;YACZQ,SAAS,EAAE8I,IAAI,CAACoB;UAClB,CAAC,CAAC;QACJ;MAAE,GAEDlK,SAAS,IAAI8I,IAAI,CAACoB,GAAG,gBACpBvN,KAAA,CAAAuB,aAAA,yBACEvB,KAAA,CAAAuB,aAAA;QAAKuK,SAAS,EAAEnL,OAAO,CAACL,MAAM,EAAE,cAAc;MAAE,gBAC9CN,KAAA,CAAAuB,aAAA;QAAKwK,KAAK,EAAE;UAAE5K,KAAK,EAAE;QAAG;MAAE,GACvBkC,SAAS,IAAI8I,IAAI,CAACoB,GAAG,iBAAIvN,KAAA,CAAAuB,aAAA,CAACjC,aAAa,MAAE,CACvC,CAAC,eACNU,KAAA,CAAAuB,aAAA,cAAK,GAAC,EAAC4K,IAAI,CAACN,KAAW,CACpB,CACJ,CAAC,gBAEJ7L,KAAA,CAAAuB,aAAA;QAAKuK,SAAS,EAAEnL,OAAO,CAACL,MAAM,EAAE,cAAc;MAAE,gBAC9CN,KAAA,CAAAuB,aAAA;QAAKwK,KAAK,EAAE;UAAE5K,KAAK,EAAE;QAAG;MAAE,CAAM,CAAC,eACjCnB,KAAA,CAAAuB,aAAA,cAAK,GAAC,EAAC4K,IAAI,CAACN,KAAW,CACpB,CAEJ,CAAC;IAEV,CAAC,CACD,CACH;IAED,MAAMN,eAAe,GAAGzG,OAAO,CAAC0G,MAAM,CAAE/I,IAAI,IAAKA,IAAI,CAACgI,QAAQ,KAAK,KAAK,CAAC;IAEzE,MAAM7F,OAAO,gBACX5E,KAAA,CAAAuB,aAAA,CAAAmN,SAAA,CAAUC,KAAK;MACbhG,QAAQ,EAAE,IAAI,CAACqB,YAAY,CAAC4E,IAAI,CAAC,IAAI,CAAE;MACvCrI,OAAO,EAAEqH,QAAQ,CAAC1F,GAAG,CAClBC,GAA+D,IAAK;QACnE,IAAI,CAACA,GAAG,CAACqC,SAAS,EAAE;UAClBrC,GAAG,CAACqC,SAAS,GAAGrC,GAAG,CAAC0D,KAAK;QAC3B;QACA,OAAO;UACLgD,KAAK,EAAE1G,GAAG,CAAC0D,KAAK;UAChBiD,KAAK,EAAE3G,GAAG,CAACqC,SAAS;UACpBuE,QAAQ,EAAE5G,GAAG,CAAC6B,YAAY,KAAK;QACjC,CAAC;MACH,CACF;MACA;MAAA;MACA8E,KAAK,EACH,IAAI,CAACpM,KAAK,CAACkD,YAAY,GACnB2F,eAAe,CAACrD,GAAG,CAAEC,GAAG,IAAKA,GAAG,CAACqC,SAAS,CAAC,GAC3C,IAAI,CAAC9H,KAAK,CAACiD;IAChB,CACc,CAClB;IACD,oBACE3F,KAAA,CAAAuB,aAAA;MAAKuK,SAAS,EAAEnL,OAAO,CAACL,MAAM,EAAE,gBAAgB;IAAE,GAC/C0N,KAAK,CAAChC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,iBAC3BhM,KAAA,CAAAuB,aAAA;MAAKwK,KAAK,EAAE;QAAEiD,QAAQ,EAAE;MAAG;IAAE,gBAC3BhP,KAAA,CAAAuB,aAAA,CAAA0N,QAAA;MACEpD,KAAK,EAAC,sCAAQ;MACdjH,OAAO,EAAEA,OAAQ;MACjBsK,SAAS,EAAC,aAAa;MACvBC,OAAO,EAAC,OAAO;MACfC,YAAY,EAAE;QAAEC,QAAQ,EAAE,GAAG;QAAEC,QAAQ,EAAE;MAAI;MAC7C;IAAA,gBAEAtP,KAAA,CAAAuB,aAAA,CAAClC,gBAAgB;MAACyM,SAAS,EAAEnL,OAAO,CAACL,MAAM,EAAE,gBAAgB;IAAE,CAAE,CAC1D,CACN,CACN,EACA0N,KAAK,CAAChC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,iBACzBhM,KAAA,CAAAuB,aAAA;MAAKwK,KAAK,EAAE;QAAEwD,WAAW,EAAE,CAAC;QAAEP,QAAQ,EAAE;MAAG;IAAE,gBAC3ChP,KAAA,CAAAuB,aAAA,CAAA0N,QAAA;MAASC,SAAS,EAAC,QAAQ;MAACtK,OAAO,EAAEyJ,WAAY;MAACc,OAAO,EAAC;IAAO,gBAC/DnP,KAAA,CAAAuB,aAAA,CAAC9B,qBAAqB,MAAE,CACjB,CACN,CACN,EACAuO,KAAK,CAAChC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,iBACzBhM,KAAA,CAAAuB,aAAA;MAAKwK,KAAK,EAAE;QAAEwD,WAAW,EAAE,CAAC;QAAEP,QAAQ,EAAE;MAAG;IAAE,gBAC3ChP,KAAA,CAAAuB,aAAA,CAAA0N,QAAA;MAASC,SAAS,EAAC,QAAQ;MAACtK,OAAO,EAAE6J,WAAY;MAACU,OAAO,EAAC;IAAO,gBAC/DnP,KAAA,CAAAuB,aAAA,CAAChC,oBAAoB,MAAE,CAChB,CACN,CACN,EACAyO,KAAK,CAAChC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,iBAC5BhM,KAAA,CAAAuB,aAAA;MACEwK,KAAK,EAAE;QAAEwD,WAAW,EAAE,CAAC;QAAEP,QAAQ,EAAE,EAAE;QAAET,MAAM,EAAE;MAAU,CAAE;MAC3DnB,OAAO,EAAEA,CAAA,KAAM;QACb,MAAMnJ,MAAM,GAAArB,aAAA,KAAQ,IAAI,CAACF,KAAK,CAAC4C,YAAY,CAAE;QAC7C,IAAI2I,UAAU,CAACuB,SAAS,EAAE;UACxBvB,UAAU,CAACuB,SAAS,CAAC,CAAC;QACxB,CAAC,MAAM;UACL,IAAI,CAAClL,KAAK,CAACpC,IAAI,CAAC;YAAE+B;UAAO,CAAC,CAAC;QAC7B;MACF;IAAE,gBAEFjE,KAAA,CAAAuB,aAAA,CAAC5B,YAAY,MAAE,CACZ,CAEJ,CAAC;EAEV;EACA8P,kBAAkBA,CAAA,EAAG;IACnB,OAAO,IAAI,CAAC/M,KAAK,CAACmD,eAAe;EACnC;EACA6J,mBAAmBA,CAAA,EAAG;IACpB,OAAO,IAAI,CAAChN,KAAK,CAACoD,gBAAgB;EACpC;EACA6J,oBAAoBA,CAAA,EAAG;IACrB,IAAI,CAAC9M,QAAQ,CAAC;MACZgD,eAAe,EAAE,EAAE;MACnBC,gBAAgB,EAAE;IACpB,CAAC,CAAC;EACJ;EACA8J,kBAAkBA,CAAC7M,IAA4B,EAAE;IAC/C,IAAI,CAACF,QAAQ,CAAC;MACZgD,eAAe,EAAE9C;IACnB,CAAC,CAAC;EACJ;EACA8M,mBAAmBA,CAAC9M,IAAmB,EAAE;IACvC,IAAI,CAACF,QAAQ,CAAC;MACZiD,gBAAgB,EAAE/C;IACpB,CAAC,CAAC;EACJ;EACA+M,oBAAoBA,CAACnM,MAAW,EAAEoM,QAAa,EAAE;IAC/C,MAAM;MAAElK,eAAe;MAAEC;IAAiB,CAAC,GAAG,IAAI,CAACpD,KAAK;IACxD,IAAI;MAAEsN,MAAM,GAAG;IAAK,CAAC,GAAG,IAAI,CAAC/O,KAAK;IAClC,IAAIgP,kBAAkB,GAAG,CAAC,GAAGpK,eAAe,CAAC;IAC7C,IAAIqK,mBAAmB,GAAG,CAAC,GAAGpK,gBAAgB,CAAC;IAC/C,IAAIiK,QAAQ,EAAE;MACZE,kBAAkB,GAAG,CAAC,GAAGA,kBAAkB,EAAEtM,MAAM,CAACqM,MAAM,CAAC,CAAC;MAC5DE,mBAAmB,GAAG,CAAC,GAAGA,mBAAmB,EAAEvM,MAAM,CAAC;IACxD,CAAC,MAAM;MACLkC,eAAe,CAACqC,GAAG,CAAC,CAACiE,IAAS,EAAE9J,KAAU,KAAK;QAC7C,IAAI8J,IAAI,KAAKxI,MAAM,CAACqM,MAAM,CAAC,EAAE;UAC3BC,kBAAkB,CAACE,MAAM,CAAC9N,KAAK,EAAE,CAAC,CAAC;QACrC;MACF,CAAC,CAAC;MACFyD,gBAAgB,CAACoC,GAAG,CAAC,CAACiE,IAAS,EAAE9J,KAAU,KAAK;QAC9C,IAAI8J,IAAI,CAAC6D,MAAM,CAAC,KAAKrM,MAAM,CAACqM,MAAM,CAAC,EAAE;UACnCE,mBAAmB,CAACC,MAAM,CAAC9N,KAAK,EAAE,CAAC,CAAC;QACtC;MACF,CAAC,CAAC;IACJ;IACA,IAAI,CAACQ,QAAQ,CAAC;MACZgD,eAAe,EAAEoK,kBAAkB;MACnCnK,gBAAgB,EAAEoK;IACpB,CAAC,CAAC;EACJ;EACAE,uBAAuBA,CAACL,QAAa,EAAEM,YAAiB,EAAEC,UAAe,EAAE;IACzE,MAAM;MAAEzK,eAAe;MAAEC;IAAiB,CAAC,GAAG,IAAI,CAACpD,KAAK;IACxD,MAAM;MAAEsN,MAAM,GAAG;IAAK,CAAC,GAAG,IAAI,CAAC/O,KAAK;IACpC,IAAIsP,MAAW,GAAG,EAAE;IACpB,IAAIC,QAAa,GAAG,EAAE;IACtB,IAAIF,UAAU,CAACpG,MAAM,GAAG,CAAC,EAAE;MACzB,IAAIuG,SAAS,GAAGH,UAAU,CAACpI,GAAG,CAAEiE,IAAS,IAAKA,IAAI,CAAC6D,MAAM,CAAC,CAAC;MAC3D,IAAID,QAAQ,EAAE;QACZQ,MAAM,GAAG,CAAC,GAAG1K,eAAe,EAAE,GAAG4K,SAAS,CAAC;QAC3CD,QAAQ,GAAG,CAAC,GAAG1K,gBAAgB,EAAE,GAAGwK,UAAU,CAAC;MACjD,CAAC,MAAM;QACLzK,eAAe,CAACqC,GAAG,CAAC,CAACiE,IAAS,EAAE9J,KAAU,KAAK;UAC7C,IAAIoO,SAAS,CAACzE,OAAO,CAACG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;YACjCoE,MAAM,CAAC/H,IAAI,CAAC2D,IAAI,CAAC;UACnB;QACF,CAAC,CAAC;QACFrG,gBAAgB,CAACoC,GAAG,CAAC,CAACiE,IAAS,EAAE9J,KAAU,KAAK;UAC9C,IAAIoO,SAAS,CAACzE,OAAO,CAACG,IAAI,CAAC6D,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;YACzCQ,QAAQ,CAAChI,IAAI,CAAC2D,IAAI,CAAC;UACrB;QACF,CAAC,CAAC;MACJ;IACF,CAAC,MAAM;MACLoE,MAAM,GAAG,CAAC,GAAG1K,eAAe,CAAC;MAC7B2K,QAAQ,GAAG,CAAC,GAAG1K,gBAAgB,CAAC;IAClC;IACA,IAAI,CAACjD,QAAQ,CAAC;MACZgD,eAAe,EAAE,CAAC,GAAG0K,MAAM,CAAC;MAC5BzK,gBAAgB,EAAE,CAAC,GAAG0K,QAAQ;IAChC,CAAC,CAAC;EACJ;EACA9E,MAAMA,CAAA,EAAG;IAAA,IAAAgF,mBAAA;IACP,IAAIxN,KAAK,GAAG,IAAI;MACd;QACE6B,OAAO;QACPF,UAAU;QACVG,UAAU,GAAG,CAAC,CAAC;QACfE,UAAU;QACVC,WAAW;QACXC,WAAW;QACX/B;MACF,CAAC,GAAG,IAAI,CAACX,KAAK;MACdzB,KAAK,GAAGlB,KAAK,CAAC4Q,IAAI,CAChB,IAAI,CAAC1P,KAAK,EACV,CACE,OAAO,EACP,UAAU,EACV,SAAS,EACT,aAAa,EACb,SAAS,EACT,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,kBAAkB,CACnB,EACD;QACE+O,MAAM,EAAE,IAAI;QACZY,gBAAgB,EAAE;MACpB,CACF,CAAC;IACH,IAAI3P,KAAK,CAAC+D,UAAU,KAAK,KAAK,EAAE;MAC9B/D,KAAK,CAAC+D,UAAU,GAAApC,aAAA,CAAAA,aAAA;QACdiO,QAAQ,EAAE,CAAC,aAAa,CAAC;QACzBC,eAAe,EAAE,IAAI;QACrBC,eAAe,EAAE;MAAI,GAClB9P,KAAK,CAAC+D,UAAU,GAChBA,UAAU,CACd;MACD,IAAI/D,KAAK,CAAC+P,SAAS,IAAI,IAAI,EAAE;QAC3B/P,KAAK,CAAC+D,UAAU,CAACgM,SAAS,GAAG,UAAUC,KAAK,EAAAC,KAAA,EAAc;UAAA,IAAZ,CAACC,IAAI,EAAEC,EAAE,CAAC,GAAAF,KAAA;UACtD;UACA,OAAO,IAAI,GAAGD,KAAK,GAAG,IAAI;QAC5B,CAAC;MACH;IACF;IACAhQ,KAAK,CAAC0H,QAAQ,GAAG,UAAU3D,UAAU,EAAE4D,OAAO,EAAEpD,MAAM,EAAEqD,KAAK,EAAE;MAC7D3F,KAAK,CAACyF,QAAQ,CAAC3D,UAAU,EAAE4D,OAAO,EAAEpD,MAAM,EAAEqD,KAAK,CAAC;IACpD,CAAC;IACD,IAAI5H,KAAK,CAAC2P,gBAAgB,EAAE;MAC1B,MAAMS,OAAO,GAAGpQ,KAAK,CAACqQ,KAAK;MAC3BrQ,KAAK,CAACqQ,KAAK,GAAG,UAAU3N,MAAM,EAAEtB,KAAK,EAAE;QACrC,IAAIkP,MAAM,GAAGF,OAAO,GAAGA,OAAO,CAAC1N,MAAM,EAAEtB,KAAK,CAAC,GAAG,CAAC,CAAC;QAClD,MAAMmP,SAAS,GAAGD,MAAM,CAACnE,OAAO;QAChCmE,MAAM,CAACnE,OAAO,GAAIqE,KAAK,IAAK;UAC1BvO,KAAK,CAACL,QAAQ,CAAC;YACboC,WAAW,EAAE5C,KAAK,CAAE;UACtB,CAAC,CAAC;UACFtC,KAAK,CAACyG,QAAQ,CAACgL,SAAS,EAAEtO,KAAK,EAAE,CAACuO,KAAK,CAAC,CAAC;QAC3C,CAAC;QACD,OAAOF,MAAM;MACf,CAAC;MACDtQ,KAAK,CAACyQ,YAAY,GAAG,UAAU/N,MAAM,EAAEtB,KAAK,EAAE;QAC5C,OAAOA,KAAK,KAAKa,KAAK,CAACR,KAAK,CAACuC,WAAW,MAAAwH,MAAA,CACjCnM,MAAM,CAACqR,aAAa,IACvB,EAAE;MACR,CAAC;IACH;IACA,IAAIC,aAAa,GAAG,EAAE;IACtB,IAAI1M,UAAU,EAAE;MACd,MAAMnC,IAAI,GAAG1C,SAAS,CAACwR,kBAAkB,CACvC,IAAI,EACJ3M,UAAU,EACVC,WAAW,EACXC,WACF,CAAC;MACDwM,aAAa,GAAG7O,IAAI,CAAC+O,SAAS;MAC9B7Q,KAAK,CAAC8Q,eAAe,GAAGhP,IAAI,CAACiP,QAAQ;IACvC,CAAC,MAAM;MACLJ,aAAa,GAAG/M,UAAU;IAC5B;IACA5D,KAAK,CAACqD,KAAK,GAAGrD,KAAK,CAACqD,KAAK,IAAI,CAAC,CAAC;IAC/BrD,KAAK,CAACqD,KAAK,CAAC0C,QAAQ,GAAG/F,KAAK,CAACqD,KAAK,CAAC0C,QAAQ,KAAK,KAAK,GAAG,KAAK,GAAG,IAAI;IACpE,MAAM;MAAEiL;IAAS,CAAC,GAAG/O,KAAK,CAACjC,KAAK;IAChC,MAAMiR,aAAa,GACjBD,QAAQ,KAAK,IAAI,GACb;MACEE,UAAU,EAAE5R,gBAAgB;MAC5B+Q,KAAK,EAAEA,CAAC3N,MAAM,EAAEtB,KAAK,MAAM;QACzBA,KAAK;QACLsB,MAAM;QACNU,OAAO,EAAE,IAAI,CAACA;MAChB,CAAC;IACH,CAAC,GACD,CAAC,CAAC;IACR,IAAI;MAAEgD;IAAa,CAAC,GAAG,IAAI,CAACpG,KAAK;IAEjC,MAAMmR,WAAW,GACf/K,YAAY,KAAK,IAAI,GAAG;MAAE8K,UAAU,EAAE,IAAI,CAACA;IAAW,CAAC,GAAG,IAAI;IAChE,MAAM;MAAErE;IAAU,CAAC,GAAG/M,MAAM,CAAC,CAAC;IAC9B,IAAIsR,QAAQ,GAAG,IAAI;IACnB,IAAIC,SAAS,GACX,IAAI,CAACrR,KAAK,CAAC4M,OAAO,KAAK,KAAK,IAAI,EAAA6C,mBAAA,OAAI,CAACzP,KAAK,CAAC4M,OAAO,cAAA6C,mBAAA,uBAAlBA,mBAAA,CAAoB6B,IAAI,MAAK,KAAK,GAC9D,KAAK,GACL,IAAI;IACV,IAAI,CAACD,SAAS,EAAE;MACdD,QAAQ,GAAGC,SAAS;IACtB,CAAC,MAAM;MACLD,QAAQ,GAAGvE,SAAS,CAACyE,IAAI,KAAK,KAAK,GAAG,KAAK,GAAG,IAAI;IACpD;IACA,IAAI,IAAI,CAACtR,KAAK,CAACuR,gBAAgB,EAAE;MAC/B,MAAM;QAAEC,YAAY,GAAG,CAAC;MAAE,CAAC,GAAG,IAAI,CAACxR,KAAK;MACxCA,KAAK,GAAA2B,aAAA,CAAAA,aAAA,KACA3B,KAAK;QACRwR,YAAY,EAAA7P,aAAA;UACViD,eAAe,EAAE,IAAI,CAACnD,KAAK,CAACmD,eAAe;UAC3C6M,QAAQ,EAAE,IAAI,CAAC5C,oBAAoB,CAAClB,IAAI,CAAC,IAAI,CAAC;UAC9C+D,WAAW,EAAE,IAAI,CAACvC,uBAAuB,CAACxB,IAAI,CAAC,IAAI,CAAC;UACpDgE,WAAW,EAAE;QAAE,GACZH,YAAY;MAChB,EACF;IACH;IACA,MAAMI,YAAY,gBAChB7S,KAAA,CAAAuB,aAAA,CAAAvB,KAAA,CAAAsO,QAAA,QACG+D,QAAQ,IAAI,IAAI,CAAC1E,aAAa,CAAC,CAAC,eACjC3N,KAAA,CAAAuB,aAAA,CAAAuR,MAAA,EAAAC,QAAA;MACEC,kBAAkB,EAAC,YAAY;MAC/BC,OAAO;MACPpO,UAAU,EAAE+M,aAAc;MAC1B9M,OAAO,EAAE,IAAI,CAACuG,UAAU,CAAC,CAAE;MAC3BtG,OAAO,EAAEA,OAAQ;MACjB+G,SAAS,EAAExL,MAAM,CAAC,WAAW,CAAE;MAC/B4S,MAAM,EAAE;QACNC,SAAS,eAAEnT,KAAA,CAAAuB,aAAA,CAACV,MAAM;UAACiL,SAAS,EAAEnL,OAAO,CAACL,MAAM,EAAE,cAAc;QAAE,CAAE;MAClE,CAAE;MACF8S,MAAM,EAAE;QAAEC,CAAC,EAAE;MAAc;IAAE,GACzBjB,WAAW,EACXnR,KAAK,EACLiR,aAAa;MACjB1P,IAAI,EAAEa;IAAU,EACjB,CACD,CACH;IAED,OAAO4O,QAAQ,KAAK,IAAI,gBACtBjS,KAAA,CAAAuB,aAAA,CAACtB,WAAW;MAACqT,OAAO,EAAE9S;IAAa,GAAEqS,YAA0B,CAAC,GAEhEA,YACD;EACH;AACF;AAAC9Q,eAAA,CAt4BKJ,QAAQ,kBACU;EACpBsQ,QAAQ,EAAE,KAAK;EACfjB,SAAS,EAAE,IAAI;EACfhH,YAAY,EAAE,IAAI;EAClBuJ,OAAO,EAAE,EAAE;EACXvK,cAAc,EAAE,IAAI;EACpBD,QAAQ,EAAE,IAAI;EACdD,YAAY,EAAE,IAAI;EAClBzB,YAAY,EAAE,IAAI;EAClBwG,OAAO,EAAE;IACP0E,IAAI,EAAE,IAAI;IACVrE,WAAW,EAAE,CAAC;EAChB;AACF,CAAC;AA03BH,eAAezN,YAAY,CAACkB,QAAQ,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["AppstoreOutlined","CheckOutlined","ColumnHeightOutlined","SearchOutlined","SortAscendingOutlined","SortDescendingOutlined","RedoOutlined","isEmptyObj","Store","PageStore","utils","React","DndProvider","BodyRow","DndContextType","IBodyRowProps","treeUtils","styles","BodyRowComponent","HTML5Backend","withZhLocale","Resizable","getLess","getNode","NoData","getStorage","config","ResizeableTitle","props","onResize","width","restProps","_objectWithoutProperties","_excluded","createElement","height","draggableOpts","enableUserSelectHack","NSCTable","Component","constructor","_autoType","_defineProperty","createRef","onBeforeLoad","load","header","cell","index","e","_ref","size","cols","state","nextColumns","_objectSpread","setState","ev","data","JSON","parse","_this","eventType","payload","tableSize","dragIndex","hoverIndex","drag","target","dragNode","record","targetNode","moveArray","ids","parentNode","getChildNodeIds","params","id","parentId","attribute","moveRow","store","reload","modal","type","storePrefix","autoType","content","dataSource","columns","loading","pagination","activeIndex","searchText","fieldOption","searchColor","sorts","filterParams","sortType","sorter","sortInfo","defaultSort","checkColumn","defaultCheck","selectedRowKeys","selectedRowDatas","_ref2","listeners","listenersProps","restStore","_excluded2","storeProps","model","component","options","callback","dataChanged","modelData","paging","getPagination","onErrorLoad","err","response","autoLoad","Object","assign","current","componentDidMount","resizeColumn","setData","window","addEventListener","listenMessage","componentWillUnmount","removeEventListener","componentDidUpdate","prevProps","preState","resetColumn","newCols","colss","map","col","temp","onHeaderCell","column","handleResize","push","clearSelectColor","getPaginationByStore","onChange","filters","extra","autoOnChange","autoSort","autoPagination","isMultiple","Array","isArray","handlePagination","p","currentKey","pageSizeKey","pageSize","ascParams","getSortParam","onChangeFn","getStore","getModel","handleSearch","val","filterColumn","checkedValue","length","_message","warning","filterColumns","newCol","includes","dataIndex","initShow","sortState","arguments","undefined","sortSearch","orderItems","field","asc","order","forEach","v","stringify","getColumns","sortFields","defaultShowCols","filter","ellipsis","render","showTitle","text","title","className","style","indexOf","sortOrder","multiple","item","filterProps","obj","searchKey","Div","placeholder","concat","ref","tableSearchRef","filterDropdown","_ref3","setSelectedKeys","selectedKeys","confirm","clearFilters","_Space","_Button","onClick","_this$tableSearchRef$","newFilterParams","key","getValue","sortParam","filterIcon","renderToolBar","colLists","toolbar","tableTool","storeRequestConfig","tools","toolsClick","onToolClick","sizeItem","sortItem","sortContent","Fragment","cursor","color","sizeContent","_Checkbox","Group","bind","label","value","disabled","fontSize","_Popover","placement","trigger","overlayStyle","minWidth","maxWidth","marginRight","onRefresh","getSelectedRowKeys","getSelectedRowDatas","resetSelectedRowKeys","setSelectedRowKeys","setSelectedRowDatas","rowSelectionOnSelect","selected","rowKey","newSelectedRowKeys","newSelectedRowDatas","splice","rowSelectionOnSelectAll","selectedRows","changeRows","newids","newdatas","changeIds","_this$props$toolbar","omit","clickChangeColor","position","showSizeChanger","showQuickJumper","showTotal","total","_ref4","from","to","onRowFn","onRow","custom","onClickFn","event","rowClassName","clickRowStyle","newDataSource","getSearchMenuDatas","treeDatas","expandedRowKeys","openKeys","dragable","dragableProps","components","resizeProps","toolFlag","toolprops","show","showRowSelection","rowSelection","onSelect","onSelectAll","columnWidth","DefaultTable","_Table","_extends","childrenColumnName","sheitem","locale","emptyText","scroll","x","backend","dragUrl"],"sources":["../../../src/components/base/table/index.tsx"],"sourcesContent":["/*\r\n * @Descripttion:\r\n * @version:\r\n * @Author: rxzhu\r\n * @Date: 2021-03-23 08:46:20\r\n * @LastEditors: rxzhu\r\n * @LastEditTime: 2021-03-23 10:30:42\r\n */\r\nimport {\r\n AppstoreOutlined,\r\n CheckOutlined,\r\n ColumnHeightOutlined,\r\n SearchOutlined,\r\n SortAscendingOutlined,\r\n SortDescendingOutlined,\r\n RedoOutlined,\r\n} from \"@ant-design/icons\";\r\nimport { isEmptyObj } from \"@bj-nsc/functions\";\r\nimport Store, { PageStore, StoreProps } from \"@bj-nsc/msn\";\r\nimport { utils } from \"@bj-nsc/msn/lib/utils\";\r\nimport {\r\n Button,\r\n Checkbox,\r\n CheckboxOptionType,\r\n Menu,\r\n message,\r\n Popover,\r\n Space,\r\n Table,\r\n TableProps,\r\n Tooltip,\r\n} from \"antd\";\r\nimport { ColumnType, TablePaginationConfig } from \"antd/lib/table\";\r\nimport * as React from \"react\";\r\nimport { DndProvider } from \"react-dnd\";\r\nimport BodyRow, { DndContextType, IBodyRowProps } from \"../common/BodyRow\";\r\nimport treeUtils from \"../../treeUtils\";\r\nimport styles from \"./index.module.less\";\r\nconst { BodyRowComponent, HTML5Backend } = BodyRow;\r\nimport withZhLocale from \"../common/withZhLocale\";\r\nimport { Resizable } from \"react-resizable\";\r\nimport \"./resize.module.less\";\r\nimport { getLess, getNode } from \"../../utils\";\r\nimport NoData from \"../../base/common/NoData\";\r\nimport { getStorage } from \"@bj-nsc/functions\";\r\nimport config from \"../../config\";\r\nimport EllipseCell from \"../common/EllipseCell\";\r\ninterface IDragParams {\r\n id: string | number;\r\n ids: Array<string | number>;\r\n parentId: string | number;\r\n}\r\n// interface StoreProps {}\r\n\r\nexport type StoreType = \"PageStore\" | \"TreeStore\" | \"BaseStore\";\r\n\r\ninterface NSCTablePagination extends TablePaginationConfig {\r\n totalKey?: string;\r\n pageSizeKey?: string;\r\n currentKey?: string;\r\n}\r\n\r\ninterface ToolBarProps {\r\n show: boolean;\r\n tools?: Array<string>;\r\n onToolClick?: { onRefresh?: any; onSort?: any };\r\n}\r\ninterface NSCTableProps extends TableProps<any> {\r\n store?: StoreProps;\r\n showTotal?: boolean; // 是否显示总条数信息,默认true\r\n dragable?: boolean; // 是否可拖动, 默认false\r\n filterColumn?: boolean; // 是否支持过滤显示表格列, 默认true\r\n moveRow?: (params: IDragParams) => void; // 拖拽完成后的回调\r\n dragUrl?: string; // 保存拖拽排序的接口\r\n pagination?: false | NSCTablePagination;\r\n autoPagination?: boolean; // 组件是否自动处理分页\r\n autoSort?: boolean; //组件是否自动处理排序\r\n autoOnChange?: boolean; // 组件是否自动onChange, false则不做任何处理全部交给调用方\r\n resizeColumn?: boolean;\r\n sortFields?: Array<string>; //需要排序的字段Index\r\n toolbar?: ToolBarProps | boolean;\r\n autoSize?: boolean;\r\n sortSearch?: boolean; //是否添加排序查询,默认true\r\n // tableSize?: \"small\" | \"middle\" | \"default\" | \"auto\";\r\n // size?: \"small\" | \"middle\" | \"default\" | \"auto\";\r\n showRowSelection?: boolean;\r\n rowKey?: string;\r\n}\r\n\r\nexport type INSCTableProps = typeof NSCTable.defaultProps & NSCTableProps;\r\nexport { DndContextType, IBodyRowProps };\r\n\r\nconst ResizeableTitle = (props: any) => {\r\n const { onResize, width, ...restProps } = props;\r\n return (\r\n <Resizable\r\n width={width || 150}\r\n height={0}\r\n onResize={onResize}\r\n draggableOpts={{ enableUserSelectHack: false }}\r\n >\r\n <th {...restProps} />\r\n </Resizable>\r\n );\r\n};\r\nclass NSCTable extends React.Component<INSCTableProps, any> {\r\n static defaultProps = {\r\n dragable: false,\r\n showTotal: true,\r\n filterColumn: true,\r\n dragUrl: \"\",\r\n autoPagination: true,\r\n autoSort: true,\r\n autoOnChange: true,\r\n resizeColumn: true,\r\n toolbar: {\r\n show: true,\r\n onToolClick: {} as any,\r\n } as any,\r\n };\r\n\r\n store = {} as StoreProps;\r\n thIconRef = React.createRef<HTMLDivElement>();\r\n tableSearchRef = React.createRef<any>();\r\n\r\n listeners = {\r\n onBeforeLoad: null,\r\n load: null,\r\n };\r\n\r\n components = {\r\n header: {\r\n cell: ResizeableTitle,\r\n },\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n let modal = props.type || \"auto\";\r\n let storePrefix = getStorage(\"store-pre-key\");\r\n let autoType = getStorage(\r\n storePrefix ? storePrefix + \"tableSize\" : \"tableSize\"\r\n );\r\n autoType = autoType?.content;\r\n this.state = {\r\n dataSource: [],\r\n columns: [],\r\n loading: false,\r\n pagination: {},\r\n activeIndex: -1,\r\n //搜索文本\r\n searchText: null,\r\n fieldOption: null,\r\n searchColor: null,\r\n cols: [],\r\n sorts: [],\r\n filterParams: {},\r\n tableSize: this.props.size || autoType || \"default\",\r\n sortType: \"single\",\r\n sorter: [], //记录当前排序字段\r\n sortInfo: {},\r\n defaultSort: true,\r\n checkColumn: [],\r\n defaultCheck: true,\r\n selectedRowKeys: [],\r\n selectedRowDatas: [],\r\n };\r\n if (props.store instanceof Store) {\r\n this.store = props.store;\r\n } else {\r\n const { listeners: listenersProps = {}, ...restStore } =\r\n props.store || {};\r\n const storeProps = {\r\n model: \"model\",\r\n component: this,\r\n listeners: {\r\n onBeforeLoad: (store, options) => {\r\n this.setState({ loading: true });\r\n utils.callback(listenersProps.onBeforeLoad, this, [store, options]);\r\n },\r\n dataChanged: (data, modelData, store) => {\r\n let paging = !(this.props.pagination === false);\r\n if (paging && !this.props.dataSource) {\r\n this.setState({\r\n dataSource: modelData,\r\n pagination: store.getPagination(),\r\n loading: false,\r\n activeIndex: -1,\r\n });\r\n } else {\r\n this.setState({ dataSource: modelData, loading: false });\r\n }\r\n\r\n utils.callback(listenersProps.dataChanged, this, [\r\n data,\r\n modelData,\r\n store,\r\n paging,\r\n ]);\r\n },\r\n load: (data, modelData, store) => {\r\n utils.callback(listenersProps.load, this, [data, modelData, store]);\r\n },\r\n onErrorLoad: (err, response) => {\r\n this.setState({ loading: false });\r\n utils.callback(listenersProps.onErrorLoad, this, [err, response]);\r\n },\r\n },\r\n data: restStore.data\r\n ? restStore.data\r\n : props.dataSource\r\n ? props.dataSource\r\n : null,\r\n ...restStore,\r\n autoLoad: restStore.autoLoad === false ? false : true,\r\n };\r\n this.store = new PageStore(\r\n Object.assign({}, storeProps, {\r\n pagination: { current: 1, ...this.props.pagination },\r\n })\r\n );\r\n }\r\n }\r\n\r\n handleResize =\r\n (index: any) =>\r\n (e: any, { size }: any) => {\r\n const { cols } = this.state;\r\n const nextColumns = [...cols];\r\n nextColumns[index] = {\r\n ...nextColumns[index],\r\n width: size.width,\r\n };\r\n this.setState({\r\n cols: nextColumns,\r\n });\r\n };\r\n\r\n componentDidMount() {\r\n const { resizeColumn } = this.props;\r\n if (!resizeColumn) {\r\n this.setState({ columns: [...this.props.columns] });\r\n } else {\r\n this.setState({ cols: [...this.props.columns] });\r\n }\r\n const store = this.props.store;\r\n if (store && store.data) {\r\n this.store.setData(store.data);\r\n }\r\n window.addEventListener(\"message\", this.listenMessage);\r\n }\r\n componentWillUnmount() {\r\n window.removeEventListener(\"message\", this.listenMessage);\r\n }\r\n listenMessage = (ev) => {\r\n const data = typeof ev.data === \"string\" ? JSON.parse(ev.data) : ev.data;\r\n let _this = this;\r\n if (data.eventType == \"changeTableSize\") {\r\n const { payload } = data;\r\n if (\r\n payload.size == \"default\" ||\r\n payload.size == \"small\" ||\r\n payload.size == \"middle\"\r\n ) {\r\n _this.setState({ tableSize: payload.size });\r\n }\r\n }\r\n };\r\n componentDidUpdate(prevProps, preState) {\r\n const { resizeColumn } = this.props;\r\n if (!resizeColumn) {\r\n if (this.props.columns !== prevProps.columns) {\r\n this.setState({ columns: this.props.columns });\r\n }\r\n } else {\r\n if (preState.cols !== this.state.cols) {\r\n this.resetColumn();\r\n }\r\n if (this.props.columns !== prevProps.columns) {\r\n this.setState({ cols: this.props.columns });\r\n }\r\n if (prevProps.size !== this.props.size) {\r\n this.setState({ tableSize: this.props.size });\r\n }\r\n }\r\n }\r\n\r\n resetColumn() {\r\n const { cols } = this.state;\r\n const newCols: any = [];\r\n let colss = cols || [];\r\n colss.map((col: any, index: any) => {\r\n let temp = {\r\n ...col,\r\n onHeaderCell: (column: { width: any }) => ({\r\n width: column.width,\r\n onResize: this.handleResize(index),\r\n }),\r\n };\r\n newCols.push(temp);\r\n });\r\n this.setState({\r\n columns: newCols,\r\n });\r\n }\r\n\r\n /**\r\n * 清除选中颜色\r\n */\r\n clearSelectColor() {\r\n this.setState({ activeIndex: -1 });\r\n return this;\r\n }\r\n\r\n getPaginationByStore() {\r\n return this.store.getPagination();\r\n }\r\n\r\n onChange(pagination, filters, sorter, extra) {\r\n const {\r\n autoOnChange = true,\r\n autoSort,\r\n autoPagination,\r\n onChange,\r\n store,\r\n } = this.props;\r\n const { filterParams } = this.state;\r\n const isMultiple = Array.isArray(sorter);\r\n if (autoOnChange === false || !store) {\r\n onChange && onChange(pagination, filters, sorter, extra);\r\n return;\r\n }\r\n const handlePagination = () => {\r\n let params = {} as {\r\n size?: string;\r\n pageSize?: string;\r\n ascs?: string;\r\n descs?: string;\r\n [propName: string]: string;\r\n };\r\n const paging = this.getPaginationByStore() || {};\r\n if (!isEmptyObj(pagination)) {\r\n const p = {\r\n [paging.currentKey || \"current\"]: pagination.current,\r\n [paging.pageSizeKey || \"size\"]: pagination.pageSize,\r\n };\r\n Object.assign(params, p);\r\n }\r\n let ascParams = this.getSortParam(sorter, true);\r\n if (isMultiple) {\r\n this.setState({ sorter });\r\n } else if (!isMultiple && !isEmptyObj(sorter)) {\r\n sorter.column &&\r\n this.setState({ sorter: [sorter], defaultSort: false });\r\n } else {\r\n this.setState({ sorter: [] });\r\n }\r\n params = { ...filterParams, ...params, ...ascParams };\r\n autoSort && this.store.reload({ params });\r\n };\r\n\r\n const onChangeFn = this.props.onChange;\r\n\r\n autoPagination && handlePagination();\r\n // 用户传了onChange保留用户自主处理表格变化的权力\r\n if (onChangeFn) {\r\n utils.callback(onChangeFn, this, [pagination, filters, sorter, extra]);\r\n }\r\n }\r\n\r\n getStore() {\r\n return this.store;\r\n }\r\n\r\n /**\r\n * 获取数据模型对象\r\n */\r\n getModel() {\r\n return this.store.getModel();\r\n }\r\n\r\n /**\r\n * 菜单搜索过滤显示\r\n * @param {String} val\r\n */\r\n handleSearch(val, fieldOption, searchColor) {\r\n this.setState({\r\n searchText: val,\r\n fieldOption: fieldOption,\r\n searchColor: searchColor,\r\n });\r\n }\r\n\r\n /**\r\n * 模块列表移动排序\r\n */\r\n moveRow = (dragIndex, hoverIndex, drag, target) => {\r\n const _this = this;\r\n let dragNode = drag.record;\r\n let targetNode = target.record;\r\n dragNode.moveArray(dragNode, targetNode);\r\n let ids = dragNode.parentNode.getChildNodeIds();\r\n let params = {\r\n id: dragNode.id,\r\n parentId: dragNode.attribute.parentId,\r\n ids: ids,\r\n };\r\n\r\n if (this.props.moveRow) {\r\n this.props.moveRow(params);\r\n } else {\r\n this.store.reload();\r\n }\r\n };\r\n\r\n filterColumn(checkedValue) {\r\n if (checkedValue.length == 0) {\r\n message.warning(\"至少显示一列!\");\r\n return;\r\n }\r\n const filterColumns = this.props.columns.map((col: ColumnType<{}>) => {\r\n const newCol = { ...col } as ColumnType<{}> & { initShow: boolean };\r\n if (checkedValue.includes(col.dataIndex)) {\r\n newCol.initShow = true;\r\n } else {\r\n newCol.initShow = false;\r\n }\r\n return newCol;\r\n });\r\n const { resizeColumn } = this.props;\r\n if (!resizeColumn) {\r\n this.setState({\r\n columns: filterColumns,\r\n checkColumn: checkedValue,\r\n defaultCheck: false,\r\n });\r\n } else {\r\n this.setState({\r\n cols: filterColumns,\r\n checkColumn: checkedValue,\r\n defaultCheck: false,\r\n });\r\n }\r\n }\r\n getSortParam(sorter, sortState = false) {\r\n const isMultiple = Array.isArray(sorter);\r\n const { sortSearch = true } = this.props;\r\n if (!sortSearch) {\r\n return {};\r\n }\r\n let sortInfo = {};\r\n let orderItems = [];\r\n if (!isEmptyObj(sorter) && !isMultiple && sorter.column) {\r\n orderItems = [\r\n {\r\n column: sorter.column.field || sorter.column.dataIndex,\r\n asc: sorter.order == \"ascend\",\r\n },\r\n ];\r\n if (sorter.column) sortInfo[sorter.column.dataIndex] = sorter.order;\r\n } else if (isMultiple) {\r\n sorter.forEach((v) => {\r\n sortInfo[v.column.dataIndex] = v.order;\r\n let field = v.column.field || v.column.dataIndex;\r\n orderItems.push({\r\n column: field,\r\n asc: v.order == \"ascend\",\r\n });\r\n });\r\n }\r\n if (sortState) {\r\n this.setState({\r\n sortInfo: sortInfo,\r\n });\r\n }\r\n return { orderItems: JSON.stringify(orderItems) };\r\n }\r\n getColumns() {\r\n const { columns, sortType, sortInfo } = this.state;\r\n const { sortFields = [] } = this.props;\r\n const defaultShowCols = columns.filter((cols) => cols.initShow !== false);\r\n const cols = defaultShowCols.map((col, index) => {\r\n if (col.ellipsis && !col.render) {\r\n col.ellipsis = {\r\n showTitle: false,\r\n };\r\n col.render = (text) => {\r\n return (\r\n <div title={text} className={getLess(styles, \"text\")} style={{ width: col.width }}>\r\n {text}\r\n </div>\r\n );\r\n };\r\n }\r\n\r\n if (sortFields.indexOf(col.dataIndex) > -1) {\r\n if (sortType == \"single\") {\r\n col.sorter = true;\r\n col.sortOrder = sortInfo[col.dataIndex]\r\n ? sortInfo[col.dataIndex]\r\n : null;\r\n } else if (sortType == \"multiple\") {\r\n col.sorter = { multiple: index };\r\n col.sortOrder = sortInfo[col.dataIndex]\r\n ? sortInfo[col.dataIndex]\r\n : null;\r\n }\r\n }\r\n return col;\r\n });\r\n cols.map((item, index) => {\r\n if (!isEmptyObj(item.filterProps)) {\r\n let obj = { ...item };\r\n const { type, props, searchKey } = item.filterProps;\r\n let Div = null;\r\n let text = item.title;\r\n Div = getNode(type, {\r\n placeholder: `搜索${text}`,\r\n ...props,\r\n ref: this.tableSearchRef,\r\n });\r\n obj = {\r\n filterDropdown: ({\r\n setSelectedKeys,\r\n selectedKeys,\r\n confirm,\r\n clearFilters,\r\n }) => {\r\n return (\r\n <div className={getLess(styles, \"search\")}>\r\n <div className={getLess(styles, \"space\")}>{Div}</div>\r\n <Space>\r\n <Button\r\n type=\"primary\"\r\n onClick={() => {\r\n confirm();\r\n const { filterParams } = this.state;\r\n let newFilterParams = { ...filterParams };\r\n let key = item.field || item.dataIndex;\r\n newFilterParams[key] =\r\n this.tableSearchRef.current?.getValue();\r\n this.setState({\r\n filterParams: { ...newFilterParams },\r\n });\r\n const sortParam = this.getSortParam(this.state.sorter);\r\n this.store.load({\r\n params: { ...newFilterParams, ...sortParam },\r\n });\r\n }}\r\n size=\"small\"\r\n className={getLess(styles, \"button\")}\r\n >\r\n 查询\r\n </Button>\r\n </Space>\r\n </div>\r\n );\r\n },\r\n filterIcon: () => {\r\n return <SearchOutlined />;\r\n },\r\n ...obj,\r\n };\r\n cols[index] = obj;\r\n }\r\n });\r\n return cols;\r\n }\r\n renderToolBar() {\r\n let { tableSize, columns, sortType } = this.state;\r\n let { filterColumn, columns: colLists, toolbar } = this.props;\r\n const { tableTool, storeRequestConfig = {} } = config();\r\n let tools = [\"refresh\", \"size\", \"sort\", \"column\"];\r\n let toolsClick = {} as any;\r\n if (toolbar == true) {\r\n tools = toolbar.onToolClick\r\n ? toolbar.onToolClick\r\n : [\"refresh\", \"size\", \"sort\", \"column\"];\r\n } else {\r\n tools = toolbar.tools\r\n ? toolbar.tools\r\n : tableTool.tools\r\n ? tableTool.tools\r\n : tools;\r\n toolsClick = toolbar.onToolClick ? toolbar.onToolClick : {};\r\n }\r\n const sizeItem = [\r\n { title: \"宽松\", key: \"default\" },\r\n { title: \"中等\", key: \"middle\" },\r\n { title: \"紧凑\", key: \"small\" },\r\n ];\r\n const sortItem = [\r\n { title: \"单字段排序\", key: \"single\" },\r\n { title: \"多字段排序\", key: \"multiple\" },\r\n ];\r\n const sortContent = (\r\n <>\r\n <div\r\n className={getLess(styles, \"cotent-title\")}\r\n style={{\r\n cursor: this.state.defaultSort ? \"not-allowed\" : \"pointer\",\r\n color: this.state.defaultSort && \"rgba(0,0,0,.45)\",\r\n }}\r\n onClick={() => {\r\n if (this.state.defaultSort) {\r\n return;\r\n }\r\n this.setState({ sorter: [], sortInfo: {}, defaultSort: true });\r\n const params = { ...this.state.filterParams };\r\n this.store.reload({ params });\r\n }}\r\n >\r\n 恢复默认排序\r\n </div>\r\n {sortItem.map((item, index) => {\r\n return (\r\n <div\r\n key={item.key}\r\n onClick={() => {\r\n this.setState({\r\n sorter: [],\r\n sortInfo: {},\r\n sortType: item.key,\r\n defaultSort: false,\r\n });\r\n const params = { ...this.state.filterParams };\r\n this.store.reload({ params });\r\n }}\r\n >\r\n {sortType == item.key ? (\r\n <a>\r\n <div className={getLess(styles, \"content-tiem\")}>\r\n <div style={{ width: 20 }}>\r\n {sortType == item.key && <CheckOutlined />}\r\n </div>\r\n <div> {item.title}</div>\r\n </div>\r\n </a>\r\n ) : (\r\n <div className={getLess(styles, \"content-tiem\")}>\r\n <div style={{ width: 20 }}></div>\r\n <div> {item.title}</div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n })}\r\n {this.state.sorter.length > 0 && (\r\n <>\r\n <div\r\n className={getLess(styles, \"cotent-title\")}\r\n style={{ color: \"rgba(0,0,0,.45)\" }}\r\n >\r\n 当前排序\r\n </div>\r\n {this.state.sorter.map((item, index) => {\r\n return (\r\n <div className={getLess(styles, \"content-tiem\")} key={index}>\r\n <div style={{ width: 20 }}>\r\n {item.order == \"ascend\" ? (\r\n <SortAscendingOutlined />\r\n ) : (\r\n <SortDescendingOutlined />\r\n )}\r\n </div>\r\n <div> {item.column.title}</div>\r\n </div>\r\n );\r\n })}\r\n </>\r\n )}\r\n </>\r\n );\r\n const sizeContent = (\r\n <>\r\n <div className={getLess(styles, \"cotent-title\")}>表格密度</div>\r\n {sizeItem.map((item, index) => {\r\n return (\r\n <div\r\n key={item.key}\r\n onClick={() => {\r\n this.setState({\r\n tableSize: item.key,\r\n });\r\n }}\r\n >\r\n {tableSize == item.key ? (\r\n <a>\r\n <div className={getLess(styles, \"content-tiem\")}>\r\n <div style={{ width: 20 }}>\r\n {tableSize == item.key && <CheckOutlined />}\r\n </div>\r\n <div> {item.title}</div>\r\n </div>\r\n </a>\r\n ) : (\r\n <div className={getLess(styles, \"content-tiem\")}>\r\n <div style={{ width: 20 }}></div>\r\n <div> {item.title}</div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n })}\r\n </>\r\n );\r\n\r\n const defaultShowCols = columns.filter((cols) => cols.initShow !== false);\r\n\r\n const content = (\r\n <Checkbox.Group\r\n onChange={this.filterColumn.bind(this)}\r\n options={colLists.map(\r\n (col: ColumnType<{}> & { filterColumn: boolean; dataIndex: any }) => {\r\n if (!col.dataIndex) {\r\n col.dataIndex = col.title;\r\n }\r\n return {\r\n label: col.title,\r\n value: col.dataIndex,\r\n disabled: col.filterColumn === false,\r\n } as CheckboxOptionType;\r\n }\r\n )}\r\n // defaultValue={defaultShowCols.map((col) => col.dataIndex)}\r\n value={\r\n this.state.defaultCheck\r\n ? defaultShowCols.map((col) => col.dataIndex)\r\n : this.state.checkColumn\r\n }\r\n ></Checkbox.Group>\r\n );\r\n return (\r\n <div className={getLess(styles, \"table-tool-bar\")}>\r\n {tools.indexOf(\"column\") > -1 && (\r\n <div style={{ fontSize: 14 }}>\r\n <Popover\r\n title=\"选择显示的列\"\r\n content={content}\r\n placement=\"bottomRight\"\r\n trigger=\"click\"\r\n overlayStyle={{ minWidth: 410, maxWidth: 450 }}\r\n // getPopupContainer={() => this.thIconRef.current}\r\n >\r\n <AppstoreOutlined className={getLess(styles, \"app-store-icon\")} />\r\n </Popover>\r\n </div>\r\n )}\r\n {tools.indexOf(\"sort\") > -1 && (\r\n <div style={{ marginRight: 8, fontSize: 14 }}>\r\n <Popover placement=\"bottom\" content={sortContent} trigger=\"click\">\r\n <SortAscendingOutlined />\r\n </Popover>\r\n </div>\r\n )}\r\n {tools.indexOf(\"size\") > -1 && (\r\n <div style={{ marginRight: 8, fontSize: 14 }}>\r\n <Popover placement=\"bottom\" content={sizeContent} trigger=\"click\">\r\n <ColumnHeightOutlined />\r\n </Popover>\r\n </div>\r\n )}\r\n {tools.indexOf(\"refresh\") > -1 && (\r\n <div\r\n style={{ marginRight: 8, fontSize: 14, cursor: \"pointer\" }}\r\n onClick={() => {\r\n const params = { ...this.state.filterParams };\r\n if (toolsClick.onRefresh) {\r\n toolsClick.onRefresh();\r\n } else {\r\n this.store.load({ params });\r\n }\r\n }}\r\n >\r\n <RedoOutlined />\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }\r\n getSelectedRowKeys() {\r\n return this.state.selectedRowKeys;\r\n }\r\n getSelectedRowDatas() {\r\n return this.state.selectedRowDatas;\r\n }\r\n resetSelectedRowKeys() {\r\n this.setState({\r\n selectedRowKeys: [],\r\n selectedRowDatas: [],\r\n });\r\n }\r\n setSelectedRowKeys(data: Array<String | Number>) {\r\n this.setState({\r\n selectedRowKeys: data,\r\n });\r\n }\r\n setSelectedRowDatas(data: Array<Object>) {\r\n this.setState({\r\n selectedRowDatas: data,\r\n });\r\n }\r\n rowSelectionOnSelect(record: any, selected: any) {\r\n const { selectedRowKeys, selectedRowDatas } = this.state;\r\n let { rowKey = \"id\" } = this.props;\r\n let newSelectedRowKeys = [...selectedRowKeys];\r\n let newSelectedRowDatas = [...selectedRowDatas];\r\n if (selected) {\r\n newSelectedRowKeys = [...newSelectedRowKeys, record[rowKey]];\r\n newSelectedRowDatas = [...newSelectedRowDatas, record];\r\n } else {\r\n selectedRowKeys.map((item: any, index: any) => {\r\n if (item === record[rowKey]) {\r\n newSelectedRowKeys.splice(index, 1);\r\n }\r\n });\r\n selectedRowDatas.map((item: any, index: any) => {\r\n if (item[rowKey] === record[rowKey]) {\r\n newSelectedRowDatas.splice(index, 1);\r\n }\r\n });\r\n }\r\n this.setState({\r\n selectedRowKeys: newSelectedRowKeys,\r\n selectedRowDatas: newSelectedRowDatas,\r\n });\r\n }\r\n rowSelectionOnSelectAll(selected: any, selectedRows: any, changeRows: any) {\r\n const { selectedRowKeys, selectedRowDatas } = this.state;\r\n const { rowKey = \"id\" } = this.props;\r\n let newids: any = [];\r\n let newdatas: any = [];\r\n if (changeRows.length > 0) {\r\n let changeIds = changeRows.map((item: any) => item[rowKey]);\r\n if (selected) {\r\n newids = [...selectedRowKeys, ...changeIds];\r\n newdatas = [...selectedRowDatas, ...changeRows];\r\n } else {\r\n selectedRowKeys.map((item: any, index: any) => {\r\n if (changeIds.indexOf(item) == -1) {\r\n newids.push(item);\r\n }\r\n });\r\n selectedRowDatas.map((item: any, index: any) => {\r\n if (changeIds.indexOf(item[rowKey]) == -1) {\r\n newdatas.push(item);\r\n }\r\n });\r\n }\r\n } else {\r\n newids = [...selectedRowKeys];\r\n newdatas = [...selectedRowDatas];\r\n }\r\n this.setState({\r\n selectedRowKeys: [...newids],\r\n selectedRowDatas: [...newdatas],\r\n });\r\n }\r\n render() {\r\n let _this = this,\r\n {\r\n loading,\r\n dataSource,\r\n pagination = {},\r\n searchText,\r\n fieldOption,\r\n searchColor,\r\n tableSize,\r\n } = this.state,\r\n props = utils.omit(\r\n this.props,\r\n [\r\n \"store\",\r\n \"onChange\",\r\n \"columns\",\r\n \"resetColumn\",\r\n \"toolbar\",\r\n \"sortFields\",\r\n \"filterColumn\",\r\n \"sortSearch\",\r\n \"showRowSelection\",\r\n ],\r\n {\r\n rowKey: \"id\",\r\n clickChangeColor: false,\r\n }\r\n );\r\n if (props.pagination !== false) {\r\n props.pagination = {\r\n position: [\"bottomRight\"],\r\n showSizeChanger: true,\r\n showQuickJumper: true,\r\n ...pagination,\r\n ...props.pagination,\r\n };\r\n if (props.showTotal == true) {\r\n props.pagination.showTotal = function (total, [from, to]) {\r\n // return \"显示 \" + from + \" - \" + to + \"条,共 \" + total + \" 条\";\r\n return \"共 \" + total + \" 条\";\r\n };\r\n }\r\n }\r\n props.onChange = function (pagination, filters, sorter, extra) {\r\n _this.onChange(pagination, filters, sorter, extra);\r\n };\r\n if (props.clickChangeColor) {\r\n const onRowFn = props.onRow;\r\n props.onRow = function (record, index) {\r\n var custom = onRowFn ? onRowFn(record, index) : {};\r\n const onClickFn = custom.onClick;\r\n custom.onClick = (event) => {\r\n _this.setState({\r\n activeIndex: index, //获取点击行的索引\r\n });\r\n utils.callback(onClickFn, _this, [event]);\r\n };\r\n return custom;\r\n };\r\n props.rowClassName = function (record, index) {\r\n return index === _this.state.activeIndex\r\n ? `${styles.clickRowStyle}`\r\n : \"\";\r\n };\r\n }\r\n let newDataSource = [];\r\n if (searchText) {\r\n const data = treeUtils.getSearchMenuDatas(\r\n this,\r\n searchText,\r\n fieldOption,\r\n searchColor\r\n );\r\n newDataSource = data.treeDatas;\r\n props.expandedRowKeys = data.openKeys;\r\n } else {\r\n newDataSource = dataSource;\r\n }\r\n props.store = props.store || {};\r\n props.store.autoLoad = props.store.autoLoad === false ? false : true;\r\n const { dragable } = _this.props;\r\n const dragableProps =\r\n dragable === true\r\n ? {\r\n components: BodyRowComponent,\r\n onRow: (record, index) => ({\r\n index,\r\n record,\r\n moveRow: this.moveRow,\r\n }),\r\n }\r\n : {};\r\n let { resizeColumn } = this.props;\r\n\r\n const resizeProps =\r\n resizeColumn === true ? { components: this.components } : null;\r\n const { tableTool } = config();\r\n let toolFlag = true;\r\n let toolprops =\r\n this.props.toolbar === false || this.props.toolbar?.show === false\r\n ? false\r\n : true;\r\n if (!toolprops) {\r\n toolFlag = toolprops;\r\n } else {\r\n toolFlag = tableTool.show === false ? false : true;\r\n }\r\n if (this.props.showRowSelection) {\r\n const { rowSelection = {} } = this.props;\r\n props = {\r\n ...props,\r\n rowSelection: {\r\n selectedRowKeys: this.state.selectedRowKeys,\r\n onSelect: this.rowSelectionOnSelect.bind(this),\r\n onSelectAll: this.rowSelectionOnSelectAll.bind(this),\r\n columnWidth: 40,\r\n ...rowSelection,\r\n },\r\n };\r\n }\r\n const DefaultTable = (\r\n <>\r\n {toolFlag && this.renderToolBar()}\r\n <Table\r\n childrenColumnName=\"childNodes\"\r\n sheitem\r\n dataSource={newDataSource}\r\n columns={this.getColumns()}\r\n loading={loading}\r\n className={styles[\"nsc-table\"]}\r\n locale={{\r\n emptyText: <NoData className={getLess(styles, \"table-nodata\")} />,\r\n }}\r\n scroll={{ x: \"max-content\" }}\r\n {...resizeProps}\r\n {...props}\r\n {...dragableProps}\r\n size={tableSize}\r\n />\r\n </>\r\n );\r\n\r\n return dragable === true ? (\r\n <DndProvider backend={HTML5Backend}>{DefaultTable}</DndProvider>\r\n ) : (\r\n DefaultTable\r\n );\r\n }\r\n}\r\n\r\nexport default withZhLocale(NSCTable);\r\n"],"mappings":"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","ignoreList":[]}
|