nsc-react-component 4.5.0 → 4.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/base/chart/index.d.ts +2 -0
- package/lib/base/chart/index.js +9 -1
- package/lib/base/chart/index.js.map +1 -1
- package/lib/base/importData/index.d.ts +2 -1
- package/lib/base/importData/index.js +61 -43
- package/lib/base/importData/index.js.map +1 -1
- package/lib/page/SettingChart/index.d.ts +2 -1
- package/lib/page/SettingChart/index.js +10 -3
- package/lib/page/SettingChart/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -36,6 +36,8 @@ declare class NscChart extends PureComponent<ChartProps> {
|
|
|
36
36
|
componentDidUpdate(prevProps: Readonly<ChartProps>, prevState: Readonly<{}>, snapshot?: any): void;
|
|
37
37
|
reSetChart(): void;
|
|
38
38
|
isString(v: any): boolean;
|
|
39
|
+
chartLoad(params: any): void;
|
|
40
|
+
chartReLoad(): void;
|
|
39
41
|
componentWillUnmount(): void;
|
|
40
42
|
isReplace(v: any): boolean;
|
|
41
43
|
replace(v: any): any;
|
package/lib/base/chart/index.js
CHANGED
|
@@ -125,6 +125,14 @@ class NscChart extends PureComponent {
|
|
|
125
125
|
isString(v) {
|
|
126
126
|
return typeof v === "string";
|
|
127
127
|
}
|
|
128
|
+
chartLoad(params) {
|
|
129
|
+
this.store.load({
|
|
130
|
+
params
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
chartReLoad() {
|
|
134
|
+
this.store.reload();
|
|
135
|
+
}
|
|
128
136
|
componentWillUnmount() {
|
|
129
137
|
// 清理 echarts 实例
|
|
130
138
|
if (this.myChart) {
|
|
@@ -470,4 +478,4 @@ class NscChart extends PureComponent {
|
|
|
470
478
|
}
|
|
471
479
|
}
|
|
472
480
|
export default NscChart;
|
|
473
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJlY2hhcnRzIiwiU3RvcmUiLCJ1dGlscyIsInB4MnZ3IiwiaXNBcnJheSIsImlzT2JqZWN0IiwiY2xzIiwiTnNjQ2hhcnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiY29uc29sZSIsImxvZyIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsImRhdGFTb3VyY2UiLCJsZWdlbmREYXRhIiwiY29sb3JzIiwiZGF0YSIsInN0b3JlIiwiY2hpbGRyZW4iLCJvcHRpb24iLCJvcHRpb25zIiwiYXV0b0xvYWQiLCJ1cmwiLCJsaXN0ZW5lcnMiLCJsaXN0ZW5lcnNQb3BzIiwic3RvcmVzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwiRXJyb3IiLCJfdGhpcyIsInN0b3JlUHJvcHMiLCJfb2JqZWN0U3ByZWFkIiwibW9kZWwiLCJjb21wb25lbnQiLCJvbkJlZm9yZUxvYWQiLCJjYWxsYmFjayIsImxvYWQiLCJtb2RlbERhdGEiLCJzZXRTdGF0ZSIsImlzRmlyc3QiLCJpbml0IiwiZGF0YUNoYW5nZWQiLCJjb21wb25lbnREaWRNb3VudCIsIm15Q2hhcnQiLCJjaGFydFJlZiIsImN1cnJlbnQiLCJjb21wb25lbnREaWRVcGRhdGUiLCJwcmV2UHJvcHMiLCJwcmV2U3RhdGUiLCJzbmFwc2hvdCIsIkpTT04iLCJzdHJpbmdpZnkiLCJyZVNldENoYXJ0IiwiaXNTdHJpbmciLCJ2IiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJkaXNwb3NlIiwid2luZG93IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImhhbmRsZUNoYXJ0UmVzaXplIiwiYmluZCIsImlzUmVwbGFjZSIsInRlc3QiLCJyZXBsYWNlIiwic3Vic3RyaW5nIiwibGVuZ3RoIiwiZ2V0UmFuZG9tQ29sb3IiLCJjb2xvciIsIk1hdGgiLCJmbG9vciIsInJhbmRvbSIsInRvU3RyaW5nIiwicGFkU3RhcnQiLCJnZW5lcmF0ZUNvbG9ycyIsImNvdW50IiwiZGVmYXVsdENvbG9ycyIsInNsaWNlIiwibmVlZGVkIiwiaSIsInB1c2giLCJkYXRhQ29udmVyc2lvbiIsImRhdGFzIiwiZGF0YU1hcCIsInJlc3VsdCIsIm1hcCIsIml0ZW0iLCJ2YWx1ZSIsInRlbXBPYmoiLCJrZXkiLCJvYmplY3RDb252ZXJzaW9uIiwib2JqIiwidHlwZSIsImxlZ2VuZCIsImFsbERhdGEiLCJjYWxjdWxhdGVQZXJjZW50YWdlcyIsInRvdGFsIiwicmVkdWNlIiwic3VtIiwibmFtZSIsInBlcmNlbnQiLCJpbmRleCIsImNvbmNhdCIsInRvRml4ZWQiLCJvdGhlcnNUb3RhbCIsInBhcnNlRmxvYXQiLCJsYXN0UGVyY2VudCIsImdldE5ld09wdGlvbiIsIm5ld09wdGlvbiIsInNlcmllcyIsIkFycmF5IiwidG9vbHRpcCIsInRyaWdnZXIiLCJzZXJpZXNJdGVtIiwiYmFyV2lkdGgiLCJpdGVtU3R5bGUiLCJib3JkZXJSYWRpdXMiLCJwaWVEYXRhQ291bnQiLCJwaWVDb2xvcnMiLCJyYWRpdXMiLCJsYWJlbCIsInNob3ciLCJib3JkZXJDb2xvciIsImJvcmRlcldpZHRoIiwiX215Q2hhcnQkZ2V0WnIiLCJfbXlDaGFydCRnZXRacjIiLCJPbkNsaWNrIiwiT25ackNsaWNrIiwic3RhdGUiLCJuZXdEYXRhcyIsInNlcmllc0NvdW50IiwiZGVmYXVsdE9wdGlvbiIsInhBeGlzIiwieUF4aXMiLCJjaGFydENvbG9ycyIsImNsZWFyIiwib2ZmIiwiZ2V0WnIiLCJzZXRPcHRpb24iLCJvbiIsInBhcmFtcyIsInNldFRpbWVvdXQiLCJyZXNpemUiLCJhZGRFdmVudExpc3RlbmVyIiwicmVuZGVyIiwid2lkdGgiLCJoZWlnaHQiLCJib3hTdHlsZSIsImRpc3BsYXkiLCJjcmVhdGVFbGVtZW50Iiwic3R5bGUiLCJyZWYiLCJmbGV4IiwiY2xhc3NOYW1lIiwiYmFja2dyb3VuZENvbG9yIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYmFzZS9jaGFydC9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0ICogYXMgZWNoYXJ0cyBmcm9tIFwiZWNoYXJ0c1wiO1xyXG5pbXBvcnQgeyBFQ2hhcnRzIH0gZnJvbSBcImVjaGFydHMvbGliL2VjaGFydHNcIjtcclxuaW1wb3J0IFN0b3JlLCB7IFN0b3JlUHJvcHMgfSBmcm9tIFwiQGJqLW5zYy9tc25cIjtcclxuaW1wb3J0IHsgdXRpbHMgfSBmcm9tIFwiQGJqLW5zYy9tc24vbGliL3V0aWxzXCI7XHJcbmltcG9ydCB7IGRlZXBNZXJnZSwgcHgydncgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IHsgaXNBcnJheSwgaXNPYmplY3QgfSBmcm9tIFwiQGJqLW5zYy9mdW5jdGlvbnNcIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5pbXBvcnQgXCIuL2luZGV4Lmxlc3NcIjtcclxuZXhwb3J0IGludGVyZmFjZSBDaGFydFByb3BzIHtcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgb3B0aW9uOiBhbnk7XHJcbiAgZGF0YT86IEFycmF5PE9iamVjdD4gfCBPYmplY3Q7XHJcbiAgd2lkdGg6IG51bWJlciB8IHN0cmluZzsgLy/lm77ooajlrr3luqZcclxuICBoZWlnaHQ6IG51bWJlciB8IHN0cmluZzsgLy/lm77ooajplb/luqZcclxuICBhdXRvTG9hZD86IGJvb2xlYW47IC8v5pWw5o2u5pS55Y+Y77yM6Ieq5Yqo5Yi35paw5Zu+6KGoLOm7mOiupHRydWVcclxuICBPbkNsaWNrPzogKHBhcmFtczogYW55LCBlPzogYW55KSA9PiB2b2lkOyAvL+WbvuihqOeCueWHu+S6i+S7tlxyXG4gIE9uWnJDbGljaz86IChwYXJhbXM6IGFueSwgZT86IGFueSkgPT4gdm9pZDsgLy/lm77ooajngrnlh7vkuovku7ZcclxuICBsZWdlbmQ/OiBib29sZWFuOyAvL+iHquWumuS5ieWbvuS+i+aYr+WQpuaYvuekuiDvvIznlKjkuo7ppbzlm75cclxuICBbcHJvTmFtZXM6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuLy9kYXRh56S65L6LXHJcbi8qKlxyXG4g5pWw57uE77yaXHJcbiBkYXRhPVt7bmFtZTonMeaciCcsdmFsdWU6MjB9LHtuYW1lOicy5pyIJyx2YWx1ZToxMH0se25hbWU6JzPmnIgnLHZhbHVlOjI1fV1cclxuIOWvueixoVxyXG4gZGF0YT17bmFtZTpbJzHmnIgnLCcy5pyIJywnM+aciCddLHZhbHVlOlsyMCwzMCw0MF19XHJcbiAqL1xyXG5jbGFzcyBOc2NDaGFydCBleHRlbmRzIFB1cmVDb21wb25lbnQ8Q2hhcnRQcm9wcz4ge1xyXG4gIGNoYXJ0UmVmID0gUmVhY3QuY3JlYXRlUmVmPEhUTUxEaXZFbGVtZW50PigpO1xyXG4gIG15Q2hhcnQ6IEVDaGFydHMgfCBudWxsID0gbnVsbDtcclxuICBzdG9yZSA9IHt9IGFzIFN0b3JlUHJvcHM7XHJcbiAgZGVmYXVsdENvbG9ycyA9IFtcclxuICAgIFwiIzVCOTZGN1wiLFxyXG4gICAgXCIjNzNDOEZGXCIsXHJcbiAgICBcIiMzQzZDRkVcIixcclxuICAgIFwiIzgxOEZGRlwiLFxyXG4gICAgXCIjOTdEQ0ZCXCIsXHJcbiAgICBcIiNFRjZGNUJcIixcclxuICAgIFwiI0Y4QkY3MFwiLFxyXG4gICAgXCIjNTdDMzlFXCIsXHJcbiAgXSBhcyBzdHJpbmdbXTtcclxuICBzdGF0ZSA9IHtcclxuICAgIGRhdGFTb3VyY2U6IG51bGwsXHJcbiAgICBsZWdlbmREYXRhOiBbXSxcclxuICAgIGNvbG9yczogW10sXHJcbiAgfTtcclxuICBpc0ZpcnN0ID0gdHJ1ZTtcclxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgY29uc29sZS5sb2coJ2NvbnN0cnVjdG9yJylcclxuICAgIHN1cGVyKHByb3BzKTtcclxuICAgIGNvbnN0IHtcclxuICAgICAgZGF0YSxcclxuICAgICAgc3RvcmUgPSB7fSxcclxuICAgICAgY2hpbGRyZW4sXHJcbiAgICAgIG9wdGlvbjogb3B0aW9ucyxcclxuICAgICAgYXV0b0xvYWQgPSB0cnVlLFxyXG4gICAgfSA9IHByb3BzO1xyXG4gICAgY29uc3QgeyB1cmwsIGxpc3RlbmVyczogbGlzdGVuZXJzUG9wcyA9IHt9LCAuLi5zdG9yZXMgfSA9IHN0b3JlO1xyXG4gICAgaWYgKCFjaGlsZHJlbikge1xyXG4gICAgICBpZiAoIShkYXRhIHx8IHVybCB8fCBvcHRpb25zKSkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInVybOOAgWRhdGHjgIFvcHRpb27kuI3og73pg73kuLrnqbrvvIFcIik7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgICAgbGV0IHN0b3JlUHJvcHMgPSB7XHJcbiAgICAgICAgbW9kZWw6IFwibW9kZWxcIixcclxuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgICAgbGlzdGVuZXJzOiB7XHJcbiAgICAgICAgICBvbkJlZm9yZUxvYWQ6IGZ1bmN0aW9uIChzdG9yZSwgb3B0aW9ucykge1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQb3BzLm9uQmVmb3JlTG9hZCwgX3RoaXMsIFtzdG9yZSwgb3B0aW9uc10pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGxvYWQ6IGZ1bmN0aW9uIChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSB7XHJcbiAgICAgICAgICAgIF90aGlzLnNldFN0YXRlKHsgZGF0YVNvdXJjZTogbW9kZWxEYXRhIH0sICgpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoX3RoaXMuaXNGaXJzdCAmJiBhdXRvTG9hZCkge1xyXG4gICAgICAgICAgICAgICAgX3RoaXMuaW5pdCgpO1xyXG4gICAgICAgICAgICAgICAgX3RoaXMuaXNGaXJzdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1BvcHMubG9hZCwgX3RoaXMsIFtkYXRhLCBtb2RlbERhdGEsIHN0b3JlXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZGF0YUNoYW5nZWQ6IGZ1bmN0aW9uIChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSB7XHJcbiAgICAgICAgICAgIF90aGlzLnNldFN0YXRlKHsgZGF0YVNvdXJjZTogbW9kZWxEYXRhIH0sICgpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoYXV0b0xvYWQpIHtcclxuICAgICAgICAgICAgICAgIF90aGlzLmluaXQoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQb3BzLmRhdGFDaGFuZ2VkLCBfdGhpcywgW1xyXG4gICAgICAgICAgICAgIGRhdGEsXHJcbiAgICAgICAgICAgICAgbW9kZWxEYXRhLFxyXG4gICAgICAgICAgICAgIHN0b3JlLFxyXG4gICAgICAgICAgICBdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi5zdG9yZXMsXHJcbiAgICAgIH07XHJcbiAgICAgIGlmICh1cmwgJiYgZGF0YSA9PSBudWxsKSB7XHJcbiAgICAgICAgc3RvcmVQcm9wcyA9IHtcclxuICAgICAgICAgIC4uLntcclxuICAgICAgICAgICAgYXV0b0xvYWQ6IHRydWUsXHJcbiAgICAgICAgICAgIHVybDogdXJsLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLnN0b3JlUHJvcHMsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN0b3JlID0gbmV3IFN0b3JlKHN0b3JlUHJvcHMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XHJcbiAgICBjb25zdCB7IGRhdGEsIGF1dG9Mb2FkID0gdHJ1ZSwgc3RvcmUsIG9wdGlvbiB9ID0gdGhpcy5wcm9wcztcclxuXHJcbiAgICBpZiAodGhpcy5teUNoYXJ0IHx8ICF0aGlzLmNoYXJ0UmVmLmN1cnJlbnQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKGRhdGEgJiYgYXV0b0xvYWQpIHtcclxuICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICB9IGVsc2UgaWYgKCFkYXRhICYmICFzdG9yZT8udXJsICYmIG9wdGlvbikge1xyXG4gICAgICB0aGlzLmluaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbXBvbmVudERpZFVwZGF0ZShcclxuICAgIHByZXZQcm9wczogUmVhZG9ubHk8Q2hhcnRQcm9wcz4sXHJcbiAgICBwcmV2U3RhdGU6IFJlYWRvbmx5PHt9PixcclxuICAgIHNuYXBzaG90PzogYW55XHJcbiAgKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IGF1dG9Mb2FkID0gdHJ1ZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmIChhdXRvTG9hZCkge1xyXG4gICAgICBpZiAoSlNPTi5zdHJpbmdpZnkocHJldlByb3BzLmRhdGEpICE9PSBKU09OLnN0cmluZ2lmeSh0aGlzLnByb3BzLmRhdGEpKSB7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkocHJldlByb3BzLm9wdGlvbikgIT09IEpTT04uc3RyaW5naWZ5KHRoaXMucHJvcHMub3B0aW9uKVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmluaXQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVTZXRDaGFydCgpIHtcclxuICAgIHRoaXMuaW5pdCgpO1xyXG4gIH1cclxuICBpc1N0cmluZyh2KSB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHYgPT09IFwic3RyaW5nXCI7XHJcbiAgfVxyXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xyXG4gICAgLy8g5riF55CGIGVjaGFydHMg5a6e5L6LXHJcbiAgICBpZiAodGhpcy5teUNoYXJ0KSB7XHJcbiAgICAgIHRoaXMubXlDaGFydC5kaXNwb3NlKCk7XHJcbiAgICAgIHRoaXMubXlDaGFydCA9IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g56e76Zmk5LqL5Lu255uR5ZCs5ZmoXHJcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCB0aGlzLmhhbmRsZUNoYXJ0UmVzaXplLmJpbmQodGhpcykpO1xyXG4gIH1cclxuXHJcbiAgaXNSZXBsYWNlKHYpIHtcclxuICAgIHJldHVybiAvXnsuKn0kL2dpLnRlc3Qodik7XHJcbiAgfVxyXG4gIHJlcGxhY2Uodikge1xyXG4gICAgcmV0dXJuIHYuc3Vic3RyaW5nKDEsIHYubGVuZ3RoIC0gMSk7XHJcbiAgfVxyXG5cclxuICBnZXRSYW5kb21Db2xvcigpIHtcclxuICAgIGxldCBjb2xvcjtcclxuICAgIGRvIHtcclxuICAgICAgY29sb3IgPVxyXG4gICAgICAgIFwiI1wiICtcclxuICAgICAgICBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAweGZmZmZmZilcclxuICAgICAgICAgIC50b1N0cmluZygxNilcclxuICAgICAgICAgIC5wYWRTdGFydCg2LCBcIjBcIik7XHJcbiAgICB9IHdoaWxlIChjb2xvciA9PT0gXCIjRkZGRkZGXCIgfHwgY29sb3IgPT09IFwiIzAwMDAwMFwiKTtcclxuICAgIHJldHVybiBjb2xvcjtcclxuICB9XHJcbiAgZ2VuZXJhdGVDb2xvcnMoY291bnQ6IG51bWJlcik6IHN0cmluZ1tdIHtcclxuICAgIC8vIOWmguaenOmcgOimgeeahOminOiJsuaVsOmHj+WwkeS6juaIluetieS6jum7mOiupOminOiJsuaVsOmHj++8jOebtOaOpei/lOWbnuWvueW6lOaVsOmHj+eahOm7mOiupOminOiJslxyXG4gICAgaWYgKGNvdW50IDw9IHRoaXMuZGVmYXVsdENvbG9ycy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdENvbG9ycy5zbGljZSgwLCBjb3VudCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g5ZCm5YiZ77yM5YWI5aSN5Yi25omA5pyJ6buY6K6k6aKc6ImyXHJcbiAgICBjb25zdCBjb2xvcnMgPSBbLi4udGhpcy5kZWZhdWx0Q29sb3JzXTtcclxuXHJcbiAgICAvLyDnlJ/miJDpop3lpJbnmoTpmo/mnLrpopzoibJcclxuICAgIGNvbnN0IG5lZWRlZCA9IGNvdW50IC0gdGhpcy5kZWZhdWx0Q29sb3JzLmxlbmd0aDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmVlZGVkOyBpKyspIHtcclxuICAgICAgY29sb3JzLnB1c2godGhpcy5nZXRSYW5kb21Db2xvcigpKTtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0U3RhdGUoeyBjb2xvcnMgfSk7XHJcbiAgICByZXR1cm4gY29sb3JzO1xyXG4gIH1cclxuICBkYXRhQ29udmVyc2lvbihkYXRhLCBkYXRhcywgZGF0YU1hcCkge1xyXG4gICAgbGV0IHJlc3VsdDtcclxuICAgIGlmIChkYXRhKSB7XHJcbiAgICAgIGlmICh0aGlzLmlzU3RyaW5nKGRhdGEpICYmIHRoaXMuaXNSZXBsYWNlKGRhdGEpKSB7XHJcbiAgICAgICAgcmVzdWx0ID0gZGF0YU1hcFt0aGlzLnJlcGxhY2UoZGF0YSldO1xyXG4gICAgICB9IGVsc2UgaWYgKGlzQXJyYXkoZGF0YSkpIHtcclxuICAgICAgICBkYXRhLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgbGV0IHYgPSBpdGVtPy52YWx1ZSB8fCBudWxsO1xyXG4gICAgICAgICAgaWYgKHYgJiYgdGhpcy5pc1JlcGxhY2UodikpIHtcclxuICAgICAgICAgICAgaXRlbS52YWx1ZSA9IHRoaXMuZGF0YUNvbnZlcnNpb24odiwgZGF0YXMsIGRhdGFNYXApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJlc3VsdCA9IGRhdGE7XHJcbiAgICAgIH0gZWxzZSBpZiAoaXNPYmplY3QoZGF0YSkpIHtcclxuICAgICAgICByZXN1bHQgPSBbXTtcclxuICAgICAgICBpZiAoaXNBcnJheShkYXRhcykpIHtcclxuICAgICAgICAgIGRhdGFzLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICB2YXIgdGVtcE9iaiA9IHt9O1xyXG4gICAgICAgICAgICBmb3IgKGxldCBrZXkgaW4gZGF0YSkge1xyXG4gICAgICAgICAgICAgIGxldCB2ID0gZGF0YVtrZXldO1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmlzUmVwbGFjZSh2KSkge1xyXG4gICAgICAgICAgICAgICAgdGVtcE9ialtrZXldID0gaXRlbVt0aGlzLnJlcGxhY2UodildO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0ZW1wT2JqW2tleV0gPSB2O1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXN1bHQucHVzaCh0ZW1wT2JqKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIG9iamVjdENvbnZlcnNpb24ob2JqLCBkYXRhcywgZGF0YU1hcCkge1xyXG4gICAgbGV0IHRlbXBPYmo6IGFueTtcclxuICAgIGlmIChvYmopIHtcclxuICAgICAgaWYgKGlzQXJyYXkob2JqKSkge1xyXG4gICAgICAgIHRlbXBPYmogPSBbLi4ub2JqXTtcclxuICAgICAgICB0ZW1wT2JqLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGl0ZW0uZGF0YSkge1xyXG4gICAgICAgICAgICBpdGVtLmRhdGEgPSB0aGlzLmRhdGFDb252ZXJzaW9uKGl0ZW0uZGF0YSwgZGF0YXMsIGRhdGFNYXApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaXNTdHJpbmcob2JqKSkge1xyXG4gICAgICAgIHRlbXBPYmogPSBvYmo7XHJcbiAgICAgICAgdGVtcE9iai5kYXRhID0gdGhpcy5kYXRhQ29udmVyc2lvbih0ZW1wT2JqLCBkYXRhcywgZGF0YU1hcCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoaXNPYmplY3Qob2JqKSkge1xyXG4gICAgICAgIHRlbXBPYmogPSB7IC4uLm9iaiB9O1xyXG4gICAgICAgIHRlbXBPYmouZGF0YSA9IHRoaXMuZGF0YUNvbnZlcnNpb24odGVtcE9iai5kYXRhLCBkYXRhcywgZGF0YU1hcCk7XHJcbiAgICAgICAgaWYgKHRlbXBPYmoudHlwZSA9PT0gXCJwaWVcIiAmJiB0aGlzLnByb3BzLmxlZ2VuZCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICBsZXQgYWxsRGF0YSA9IHRlbXBPYmouZGF0YTtcclxuICAgICAgICAgIGNvbnN0IGxlZ2VuZERhdGEgPSB0aGlzLmNhbGN1bGF0ZVBlcmNlbnRhZ2VzKGFsbERhdGEpO1xyXG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIGxlZ2VuZERhdGEsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0ZW1wT2JqO1xyXG4gIH1cclxuICBjYWxjdWxhdGVQZXJjZW50YWdlcyhcclxuICAgIGFsbERhdGE6IEFycmF5PHsgbmFtZTogc3RyaW5nOyB2YWx1ZTogbnVtYmVyIH0+XHJcbiAgKTogQXJyYXk8eyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBudW1iZXI7IHBlcmNlbnQ6IHN0cmluZyB9PiB7XHJcbiAgICBpZiAoIWFsbERhdGEgfHwgYWxsRGF0YS5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdG90YWwgPSBhbGxEYXRhLnJlZHVjZSgoc3VtLCBpdGVtKSA9PiBzdW0gKyAoaXRlbS52YWx1ZSB8fCAwKSwgMCk7XHJcbiAgICBpZiAodG90YWwgPT09IDApIHtcclxuICAgICAgcmV0dXJuIGFsbERhdGEubWFwKChpdGVtKSA9PiAoe1xyXG4gICAgICAgIG5hbWU6IGl0ZW0ubmFtZSxcclxuICAgICAgICB2YWx1ZTogaXRlbS52YWx1ZSxcclxuICAgICAgICBwZXJjZW50OiBcIjAlXCIsXHJcbiAgICAgIH0pKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBDYWxjdWxhdGUgcGVyY2VudGFnZXMgZm9yIGFsbCBidXQgdGhlIGxhc3QgaXRlbVxyXG4gICAgY29uc3QgcmVzdWx0ID0gYWxsRGF0YS5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmIChpbmRleCA9PT0gYWxsRGF0YS5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgLy8gRm9yIHRoZSBsYXN0IGl0ZW0sIHdlJ2xsIGNhbGN1bGF0ZSBiYXNlZCBvbiByZW1haW5pbmcgcGVyY2VudGFnZVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBuYW1lOiBpdGVtLm5hbWUsXHJcbiAgICAgICAgICB2YWx1ZTogaXRlbS52YWx1ZSxcclxuICAgICAgICAgIHBlcmNlbnQ6IFwiXCIsIC8vIFBsYWNlaG9sZGVyLCB3aWxsIGJlIGNhbGN1bGF0ZWQgYmVsb3dcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBwZXJjZW50ID0gKGl0ZW0udmFsdWUgLyB0b3RhbCkgKiAxMDA7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgbmFtZTogaXRlbS5uYW1lLFxyXG4gICAgICAgIHZhbHVlOiBpdGVtLnZhbHVlLFxyXG4gICAgICAgIHBlcmNlbnQ6IGAke3BlcmNlbnQudG9GaXhlZCgyKX0lYCxcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIENhbGN1bGF0ZSB0aGUgbGFzdCBpdGVtJ3MgcGVyY2VudGFnZSB0byBlbnN1cmUgdG90YWwgaXMgMTAwJVxyXG4gICAgaWYgKHJlc3VsdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IG90aGVyc1RvdGFsID0gcmVzdWx0LnNsaWNlKDAsIC0xKS5yZWR1Y2UoKHN1bSwgaXRlbSkgPT4ge1xyXG4gICAgICAgIHJldHVybiBzdW0gKyBwYXJzZUZsb2F0KGl0ZW0ucGVyY2VudCk7XHJcbiAgICAgIH0sIDApO1xyXG5cclxuICAgICAgY29uc3QgbGFzdFBlcmNlbnQgPSAxMDAgLSBvdGhlcnNUb3RhbDtcclxuICAgICAgcmVzdWx0W3Jlc3VsdC5sZW5ndGggLSAxXS5wZXJjZW50ID0gYCR7bGFzdFBlcmNlbnQudG9GaXhlZCgyKX0lYDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuICBnZXROZXdPcHRpb24obmV3T3B0aW9uKSB7XHJcbiAgICBsZXQgY29sb3JzID0gbmV3T3B0aW9uLmNvbG9yO1xyXG4gICAgaWYgKG5ld09wdGlvbi5zZXJpZXMpIHtcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkobmV3T3B0aW9uLnNlcmllcykpIHtcclxuICAgICAgICBuZXdPcHRpb24udG9vbHRpcCA9IG5ld09wdGlvbi50b29sdGlwIHx8IHsgdHJpZ2dlcjogXCJheGlzXCIgfTtcclxuICAgICAgICBuZXdPcHRpb24uc2VyaWVzID0gbmV3T3B0aW9uLnNlcmllcy5tYXAoKHNlcmllc0l0ZW0pID0+IHtcclxuICAgICAgICAgIC8vIOWmguaenOaYr+afseeKtuWbvuS4lOayoeacieiuvue9riBiYXJXaWR0aO+8jOWImeiuvue9rum7mOiupOWAvOS4ujIwXHJcbiAgICAgICAgICBpZiAoc2VyaWVzSXRlbS50eXBlID09PSBcImJhclwiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgYmFyV2lkdGg6IDIwLFxyXG4gICAgICAgICAgICAgIGl0ZW1TdHlsZToge1xyXG4gICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBbNSwgNSwgMCwgMF0sXHJcbiAgICAgICAgICAgICAgICAuLi5zZXJpZXNJdGVtLml0ZW1TdHlsZSwgLy8g5L+d55WZ55So5oi36Ieq5a6a5LmJ55qEIGl0ZW1TdHlsZVxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgLi4uc2VyaWVzSXRlbSxcclxuICAgICAgICAgICAgICAvLyDmraPnoa7orr7nva4gYm9yZGVyUmFkaXVz77yM6ZyA6KaB5pS+5ZyoIGl0ZW1TdHlsZSDkuK1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoc2VyaWVzSXRlbS50eXBlID09PSBcInBpZVwiKSB7XHJcbiAgICAgICAgICAgIG5ld09wdGlvbi50b29sdGlwID0gbmV3T3B0aW9uLnRvb2x0aXAgfHwgeyB0cmlnZ2VyOiBcIml0ZW1cIiB9O1xyXG4gICAgICAgICAgICBsZXQgcGllRGF0YUNvdW50ID0gMTtcclxuICAgICAgICAgICAgaWYgKHNlcmllc0l0ZW0uZGF0YSAmJiBBcnJheS5pc0FycmF5KHNlcmllc0l0ZW0uZGF0YSkpIHtcclxuICAgICAgICAgICAgICBwaWVEYXRhQ291bnQgPSBzZXJpZXNJdGVtLmRhdGEubGVuZ3RoO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyDkuLrppbzlm77nlJ/miJDpgILlvZPmlbDph4/nmoTpopzoibJcclxuICAgICAgICAgICAgY29uc3QgcGllQ29sb3JzID0gdGhpcy5nZW5lcmF0ZUNvbG9ycyhwaWVEYXRhQ291bnQpO1xyXG4gICAgICAgICAgICBjb2xvcnMgPSBjb2xvcnMgfHwgcGllQ29sb3JzO1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgIHJhZGl1czogW1wiNDAlXCIsIFwiNzAlXCJdLFxyXG4gICAgICAgICAgICAgIGxhYmVsOiB7XHJcbiAgICAgICAgICAgICAgICBzaG93OiBmYWxzZSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGl0ZW1TdHlsZToge1xyXG4gICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAxMCxcclxuICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yOiBcIiNmZmZcIixcclxuICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoOiAyLFxyXG4gICAgICAgICAgICAgICAgLi4uc2VyaWVzSXRlbS5pdGVtU3R5bGUsIC8vIOS/neeVmeeUqOaIt+iHquWumuS5ieeahCBpdGVtU3R5bGVcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIC8vIGNvbG9yOiBzZXJpZXNJdGVtLmNvbG9yIHx8IHBpZUNvbG9ycyxcclxuICAgICAgICAgICAgICAuLi5zZXJpZXNJdGVtLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIHNlcmllc0l0ZW07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSBpZiAobmV3T3B0aW9uLnNlcmllcy50eXBlID09PSBcImJhclwiKSB7XHJcbiAgICAgICAgLy8g5aSE55CG5Y2V5LiqIHNlcmllcyDlr7nosaHnmoTmg4XlhrVcclxuICAgICAgICBuZXdPcHRpb24uc2VyaWVzID0ge1xyXG4gICAgICAgICAgYmFyV2lkdGg6IDIwLFxyXG4gICAgICAgICAgLi4ubmV3T3B0aW9uLnNlcmllcyxcclxuICAgICAgICAgIC8vIOato+ehruiuvue9riBib3JkZXJSYWRpdXPvvIzpnIDopoHmlL7lnKggaXRlbVN0eWxlIOS4rVxyXG4gICAgICAgICAgaXRlbVN0eWxlOiB7XHJcbiAgICAgICAgICAgIGJvcmRlclJhZGl1czogWzUsIDUsIDAsIDBdLFxyXG4gICAgICAgICAgICAuLi5uZXdPcHRpb24uc2VyaWVzLml0ZW1TdHlsZSwgLy8g5L+d55WZ55So5oi36Ieq5a6a5LmJ55qEIGl0ZW1TdHlsZVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9O1xyXG4gICAgICB9IGVsc2UgaWYgKG5ld09wdGlvbi5zZXJpZXMudHlwZSA9PT0gXCJwaWVcIikge1xyXG4gICAgICAgIC8vIOWkhOeQhuWNleS4qiBzZXJpZXMg5a+56LGh55qE5oOF5Ya177yI6aW85Zu+77yJXHJcbiAgICAgICAgbmV3T3B0aW9uLnRvb2x0aXAgPSBuZXdPcHRpb24udG9vbHRpcCB8fCB7IHRyaWdnZXI6IFwiaXRlbVwiIH07XHJcbiAgICAgICAgbGV0IHBpZURhdGFDb3VudCA9IDE7XHJcbiAgICAgICAgaWYgKG5ld09wdGlvbi5zZXJpZXMuZGF0YSAmJiBBcnJheS5pc0FycmF5KG5ld09wdGlvbi5zZXJpZXMuZGF0YSkpIHtcclxuICAgICAgICAgIHBpZURhdGFDb3VudCA9IG5ld09wdGlvbi5zZXJpZXMuZGF0YS5sZW5ndGg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIOS4uumlvOWbvueUn+aIkOmAguW9k+aVsOmHj+eahOminOiJslxyXG4gICAgICAgIGNvbnN0IHBpZUNvbG9ycyA9IHRoaXMuZ2VuZXJhdGVDb2xvcnMocGllRGF0YUNvdW50KTtcclxuICAgICAgICBjb2xvcnMgPSBjb2xvcnMgfHwgcGllQ29sb3JzO1xyXG4gICAgICAgIG5ld09wdGlvbi5zZXJpZXMgPSB7XHJcbiAgICAgICAgICByYWRpdXM6IFtcIjQwJVwiLCBcIjcwJVwiXSxcclxuICAgICAgICAgIGxhYmVsOiB7XHJcbiAgICAgICAgICAgIHNob3c6IGZhbHNlLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLm5ld09wdGlvbi5zZXJpZXMsXHJcbiAgICAgICAgICBpdGVtU3R5bGU6IHtcclxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAxMCxcclxuICAgICAgICAgICAgYm9yZGVyQ29sb3I6IFwiI2ZmZlwiLFxyXG4gICAgICAgICAgICBib3JkZXJXaWR0aDogMixcclxuICAgICAgICAgICAgLi4ubmV3T3B0aW9uLnNlcmllcy5pdGVtU3R5bGUsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLy8gY29sb3I6IG5ld09wdGlvbi5zZXJpZXMuY29sb3IgfHwgcGllQ29sb3JzLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIG5ld09wdGlvbi5jb2xvciA9IGNvbG9ycztcclxuICAgIHJldHVybiBuZXdPcHRpb247XHJcbiAgfVxyXG4gIGluaXQoKSB7XHJcbiAgICBpZiAoIXRoaXMuY2hhcnRSZWYuY3VycmVudCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IG9wdGlvbiwgZGF0YSwgT25DbGljaywgT25ackNsaWNrIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBkYXRhU291cmNlIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IGRhdGFNYXA6IGFueSA9IHt9O1xyXG4gICAgY29uc3QgbmV3RGF0YXMgPSBkYXRhIHx8IGRhdGFTb3VyY2U7XHJcbiAgICBsZXQgc2VyaWVzQ291bnQgPSAxOyAvLyDpu5jorqToh7PlsJHkuIDkuKrns7vliJdcclxuICAgIGlmIChvcHRpb24/LnNlcmllcykge1xyXG4gICAgICBzZXJpZXNDb3VudCA9IEFycmF5LmlzQXJyYXkob3B0aW9uLnNlcmllcykgPyBvcHRpb24uc2VyaWVzLmxlbmd0aCA6IDE7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g55Sf5oiQ6YCC5b2T5pWw6YeP55qE6aKc6Imy77yI5aaC5p6c55So5oi35rKh5pyJ5o+Q5L6b6aKc6Imy77yJXHJcbiAgICBsZXQgZGVmYXVsdE9wdGlvbiA9IHt9O1xyXG5cclxuICAgIGxldCBuZXdPcHRpb246IGFueSA9IHsgLi4uZGVmYXVsdE9wdGlvbiwgLi4ub3B0aW9uIH07XHJcblxyXG4gICAgaWYgKGlzQXJyYXkobmV3RGF0YXMpKSB7XHJcbiAgICAgIG5ld0RhdGFzLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIGZvciAobGV0IGtleSBpbiBpdGVtKSB7XHJcbiAgICAgICAgICBpZiAoZGF0YU1hcFtrZXldID09IG51bGwpIHtcclxuICAgICAgICAgICAgZGF0YU1hcFtrZXldID0gW107XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBkYXRhTWFwW2tleV0ucHVzaChpdGVtW2tleV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KG5ld0RhdGFzKSkge1xyXG4gICAgICBkYXRhTWFwID0gbmV3RGF0YXM7XHJcbiAgICB9XHJcbiAgICBuZXdPcHRpb24ueEF4aXMgPSB0aGlzLm9iamVjdENvbnZlcnNpb24obmV3T3B0aW9uLnhBeGlzLCBuZXdEYXRhcywgZGF0YU1hcCk7XHJcbiAgICBuZXdPcHRpb24ueUF4aXMgPSB0aGlzLm9iamVjdENvbnZlcnNpb24obmV3T3B0aW9uLnlBeGlzLCBuZXdEYXRhcywgZGF0YU1hcCk7XHJcbiAgICBuZXdPcHRpb24uc2VyaWVzID0gdGhpcy5vYmplY3RDb252ZXJzaW9uKFxyXG4gICAgICBuZXdPcHRpb24uc2VyaWVzLFxyXG4gICAgICBuZXdEYXRhcyxcclxuICAgICAgZGF0YU1hcFxyXG4gICAgKTtcclxuICAgIGNvbnN0IGNoYXJ0Q29sb3JzID0gdGhpcy5nZW5lcmF0ZUNvbG9ycyhzZXJpZXNDb3VudCk7XHJcbiAgICBuZXdPcHRpb24gPSB0aGlzLmdldE5ld09wdGlvbih7IC4uLm5ld09wdGlvbiB9KTtcclxuICAgIG5ld09wdGlvbiA9IHsgLi4ubmV3T3B0aW9uLCBjb2xvcjogbmV3T3B0aW9uLmNvbG9yIHx8IGNoYXJ0Q29sb3JzIH07XHJcbiAgICBpZiAodGhpcy5teUNoYXJ0KSB7XHJcbiAgICAgIHRoaXMubXlDaGFydC5kaXNwb3NlKCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBteUNoYXJ0ID0gKHRoaXMubXlDaGFydCA9IGVjaGFydHMuaW5pdChcclxuICAgICAgdGhpcy5jaGFydFJlZi5jdXJyZW50IGFzIEhUTUxEaXZFbGVtZW50XHJcbiAgICApKTsgLy/liJ3lp4vljJZlY2hhcnRz77yM6YCa6L+HcmVm5bGe5oCn6I635Y+WZG9tXHJcbiAgICBteUNoYXJ0LmNsZWFyKCk7XHJcbiAgICBteUNoYXJ0Lm9mZihcImNsaWNrXCIpO1xyXG4gICAgbXlDaGFydD8uZ2V0WnIoKT8ub2ZmKFwiY2xpY2tcIik7XHJcbiAgICBteUNoYXJ0LnNldE9wdGlvbihuZXdPcHRpb24pO1xyXG4gICAgbXlDaGFydC5vbihcImNsaWNrXCIsIGZ1bmN0aW9uIChwYXJhbXMpIHtcclxuICAgICAgT25DbGljayAmJiBPbkNsaWNrKHBhcmFtcywgbXlDaGFydCk7XHJcbiAgICB9KTtcclxuICAgIG15Q2hhcnQ/LmdldFpyKCk/Lm9uKFwiY2xpY2tcIiwgKHBhcmFtcykgPT4ge1xyXG4gICAgICBPblpyQ2xpY2sgJiYgT25ackNsaWNrKHBhcmFtcywgbXlDaGFydCk7XHJcbiAgICB9KTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5teUNoYXJ0KSB7XHJcbiAgICAgICAgdGhpcy5teUNoYXJ0LnJlc2l6ZSgpO1xyXG4gICAgICB9XHJcbiAgICB9LCAwKTtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBjb2xvcnM6IG5ld09wdGlvbi5jb2xvcixcclxuICAgIH0pO1xyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgdGhpcy5oYW5kbGVDaGFydFJlc2l6ZS5iaW5kKHRoaXMpKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUNoYXJ0UmVzaXplKCkge1xyXG4gICAgaWYgKHRoaXMubXlDaGFydCkge1xyXG4gICAgICB0aGlzLm15Q2hhcnQucmVzaXplKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQsIGxlZ2VuZCB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgbGVnZW5kRGF0YSA9IFtdLCBjb2xvcnMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCBib3hTdHlsZSA9IHtcclxuICAgICAgd2lkdGg6IHR5cGVvZiB3aWR0aCA9PSBcIm51bWJlclwiID8gcHgydncod2lkdGgpIDogd2lkdGgsXHJcbiAgICAgIGhlaWdodDogdHlwZW9mIGhlaWdodCA9PSBcIm51bWJlclwiID8gcHgydncoaGVpZ2h0KSA6IGhlaWdodCxcclxuICAgIH0gYXMgYW55O1xyXG4gICAgaWYgKGxlZ2VuZCA9PSB0cnVlKSB7XHJcbiAgICAgIGJveFN0eWxlLmRpc3BsYXkgPSBcImZsZXhcIjtcclxuICAgIH1cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXYgc3R5bGU9e2JveFN0eWxlfT5cclxuICAgICAgICA8ZGl2IHJlZj17dGhpcy5jaGFydFJlZn0gc3R5bGU9e3sgZmxleDogMSwgaGVpZ2h0OiBcIjEwMCVcIiB9fT48L2Rpdj5cclxuICAgICAgICB7bGVnZW5kICYmIChcclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbHMoXCJuc2MtY2hhcnQtbGVnZW5kQm94XCIpfT5cclxuICAgICAgICAgICAge2xlZ2VuZERhdGEubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5zYy1jaGFydC1sZWdlbmRJdGVtXCIga2V5PXtpbmRleH0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJuc2MtY2hhcnQtbGVnZW5kSXRlbS1pY29uXCJcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yc1tpbmRleF0gfX1cclxuICAgICAgICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5zYy1jaGFydC1sZWdlbmRJdGVtLW5hbWVcIj57aXRlbS5uYW1lfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5zYy1jaGFydC1sZWdlbmRJdGVtLXZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge2l0ZW0udmFsdWUgfHwgMH1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibnNjLWNoYXJ0LWxlZ2VuZEl0ZW0tcGVyY2VudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHtpdGVtLnBlcmNlbnR9XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBOc2NDaGFydDtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLE9BQU9BLEtBQUssSUFBSUMsYUFBYSxRQUFRLE9BQU87QUFDNUMsT0FBTyxLQUFLQyxPQUFPLE1BQU0sU0FBUztBQUVsQyxPQUFPQyxLQUFLLE1BQXNCLGFBQWE7QUFDL0MsU0FBU0MsS0FBSyxRQUFRLHVCQUF1QjtBQUM3QyxTQUFvQkMsS0FBSyxRQUFRLGFBQWE7QUFDOUMsU0FBU0MsT0FBTyxFQUFFQyxRQUFRLFFBQVEsbUJBQW1CO0FBQ3JELE9BQU9DLEdBQUcsTUFBTSxZQUFZO0FBQzVCLE9BQU8sY0FBYztBQWNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU1DLFFBQVEsU0FBU1IsYUFBYSxDQUFhO0VBb0IvQ1MsV0FBV0EsQ0FBQ0MsS0FBSyxFQUFFO0lBQ2pCQyxPQUFPLENBQUNDLEdBQUcsQ0FBQyxhQUFhLENBQUM7SUFDMUIsS0FBSyxDQUFDRixLQUFLLENBQUM7SUFBQ0csZUFBQSxnQ0FyQkpkLEtBQUssQ0FBQ2UsU0FBUyxDQUFpQixDQUFDO0lBQUFELGVBQUEsa0JBQ2xCLElBQUk7SUFBQUEsZUFBQSxnQkFDdEIsQ0FBQyxDQUFDO0lBQUFBLGVBQUEsd0JBQ00sQ0FDZCxTQUFTLEVBQ1QsU0FBUyxFQUNULFNBQVMsRUFDVCxTQUFTLEVBQ1QsU0FBUyxFQUNULFNBQVMsRUFDVCxTQUFTLEVBQ1QsU0FBUyxDQUNWO0lBQUFBLGVBQUEsZ0JBQ087TUFDTkUsVUFBVSxFQUFFLElBQUk7TUFDaEJDLFVBQVUsRUFBRSxFQUFFO01BQ2RDLE1BQU0sRUFBRTtJQUNWLENBQUM7SUFB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
|
|
481
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJlY2hhcnRzIiwiU3RvcmUiLCJ1dGlscyIsInB4MnZ3IiwiaXNBcnJheSIsImlzT2JqZWN0IiwiY2xzIiwiTnNjQ2hhcnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiY29uc29sZSIsImxvZyIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsImRhdGFTb3VyY2UiLCJsZWdlbmREYXRhIiwiY29sb3JzIiwiZGF0YSIsInN0b3JlIiwiY2hpbGRyZW4iLCJvcHRpb24iLCJvcHRpb25zIiwiYXV0b0xvYWQiLCJ1cmwiLCJsaXN0ZW5lcnMiLCJsaXN0ZW5lcnNQb3BzIiwic3RvcmVzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwiRXJyb3IiLCJfdGhpcyIsInN0b3JlUHJvcHMiLCJfb2JqZWN0U3ByZWFkIiwibW9kZWwiLCJjb21wb25lbnQiLCJvbkJlZm9yZUxvYWQiLCJjYWxsYmFjayIsImxvYWQiLCJtb2RlbERhdGEiLCJzZXRTdGF0ZSIsImlzRmlyc3QiLCJpbml0IiwiZGF0YUNoYW5nZWQiLCJjb21wb25lbnREaWRNb3VudCIsIm15Q2hhcnQiLCJjaGFydFJlZiIsImN1cnJlbnQiLCJjb21wb25lbnREaWRVcGRhdGUiLCJwcmV2UHJvcHMiLCJwcmV2U3RhdGUiLCJzbmFwc2hvdCIsIkpTT04iLCJzdHJpbmdpZnkiLCJyZVNldENoYXJ0IiwiaXNTdHJpbmciLCJ2IiwiY2hhcnRMb2FkIiwicGFyYW1zIiwiY2hhcnRSZUxvYWQiLCJyZWxvYWQiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsImRpc3Bvc2UiLCJ3aW5kb3ciLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaGFuZGxlQ2hhcnRSZXNpemUiLCJiaW5kIiwiaXNSZXBsYWNlIiwidGVzdCIsInJlcGxhY2UiLCJzdWJzdHJpbmciLCJsZW5ndGgiLCJnZXRSYW5kb21Db2xvciIsImNvbG9yIiwiTWF0aCIsImZsb29yIiwicmFuZG9tIiwidG9TdHJpbmciLCJwYWRTdGFydCIsImdlbmVyYXRlQ29sb3JzIiwiY291bnQiLCJkZWZhdWx0Q29sb3JzIiwic2xpY2UiLCJuZWVkZWQiLCJpIiwicHVzaCIsImRhdGFDb252ZXJzaW9uIiwiZGF0YXMiLCJkYXRhTWFwIiwicmVzdWx0IiwibWFwIiwiaXRlbSIsInZhbHVlIiwidGVtcE9iaiIsImtleSIsIm9iamVjdENvbnZlcnNpb24iLCJvYmoiLCJ0eXBlIiwibGVnZW5kIiwiYWxsRGF0YSIsImNhbGN1bGF0ZVBlcmNlbnRhZ2VzIiwidG90YWwiLCJyZWR1Y2UiLCJzdW0iLCJuYW1lIiwicGVyY2VudCIsImluZGV4IiwiY29uY2F0IiwidG9GaXhlZCIsIm90aGVyc1RvdGFsIiwicGFyc2VGbG9hdCIsImxhc3RQZXJjZW50IiwiZ2V0TmV3T3B0aW9uIiwibmV3T3B0aW9uIiwic2VyaWVzIiwiQXJyYXkiLCJ0b29sdGlwIiwidHJpZ2dlciIsInNlcmllc0l0ZW0iLCJiYXJXaWR0aCIsIml0ZW1TdHlsZSIsImJvcmRlclJhZGl1cyIsInBpZURhdGFDb3VudCIsInBpZUNvbG9ycyIsInJhZGl1cyIsImxhYmVsIiwic2hvdyIsImJvcmRlckNvbG9yIiwiYm9yZGVyV2lkdGgiLCJfbXlDaGFydCRnZXRaciIsIl9teUNoYXJ0JGdldFpyMiIsIk9uQ2xpY2siLCJPblpyQ2xpY2siLCJzdGF0ZSIsIm5ld0RhdGFzIiwic2VyaWVzQ291bnQiLCJkZWZhdWx0T3B0aW9uIiwieEF4aXMiLCJ5QXhpcyIsImNoYXJ0Q29sb3JzIiwiY2xlYXIiLCJvZmYiLCJnZXRaciIsInNldE9wdGlvbiIsIm9uIiwic2V0VGltZW91dCIsInJlc2l6ZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW5kZXIiLCJ3aWR0aCIsImhlaWdodCIsImJveFN0eWxlIiwiZGlzcGxheSIsImNyZWF0ZUVsZW1lbnQiLCJzdHlsZSIsInJlZiIsImZsZXgiLCJjbGFzc05hbWUiLCJiYWNrZ3JvdW5kQ29sb3IiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9iYXNlL2NoYXJ0L2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgKiBhcyBlY2hhcnRzIGZyb20gXCJlY2hhcnRzXCI7XHJcbmltcG9ydCB7IEVDaGFydHMgfSBmcm9tIFwiZWNoYXJ0cy9saWIvZWNoYXJ0c1wiO1xyXG5pbXBvcnQgU3RvcmUsIHsgU3RvcmVQcm9wcyB9IGZyb20gXCJAYmotbnNjL21zblwiO1xyXG5pbXBvcnQgeyB1dGlscyB9IGZyb20gXCJAYmotbnNjL21zbi9saWIvdXRpbHNcIjtcclxuaW1wb3J0IHsgZGVlcE1lcmdlLCBweDJ2dyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgeyBpc0FycmF5LCBpc09iamVjdCB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubGVzc1wiO1xyXG5leHBvcnQgaW50ZXJmYWNlIENoYXJ0UHJvcHMge1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBvcHRpb246IGFueTtcclxuICBkYXRhPzogQXJyYXk8T2JqZWN0PiB8IE9iamVjdDtcclxuICB3aWR0aDogbnVtYmVyIHwgc3RyaW5nOyAvL+WbvuihqOWuveW6plxyXG4gIGhlaWdodDogbnVtYmVyIHwgc3RyaW5nOyAvL+WbvuihqOmVv+W6plxyXG4gIGF1dG9Mb2FkPzogYm9vbGVhbjsgLy/mlbDmja7mlLnlj5jvvIzoh6rliqjliLfmlrDlm77ooags6buY6K6kdHJ1ZVxyXG4gIE9uQ2xpY2s/OiAocGFyYW1zOiBhbnksIGU/OiBhbnkpID0+IHZvaWQ7IC8v5Zu+6KGo54K55Ye75LqL5Lu2XHJcbiAgT25ackNsaWNrPzogKHBhcmFtczogYW55LCBlPzogYW55KSA9PiB2b2lkOyAvL+WbvuihqOeCueWHu+S6i+S7tlxyXG4gIGxlZ2VuZD86IGJvb2xlYW47IC8v6Ieq5a6a5LmJ5Zu+5L6L5piv5ZCm5pi+56S6IO+8jOeUqOS6jumlvOWbvlxyXG4gIFtwcm9OYW1lczogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG4vL2RhdGHnpLrkvotcclxuLyoqXHJcbiDmlbDnu4TvvJpcclxuIGRhdGE9W3tuYW1lOicx5pyIJyx2YWx1ZToyMH0se25hbWU6JzLmnIgnLHZhbHVlOjEwfSx7bmFtZTonM+aciCcsdmFsdWU6MjV9XVxyXG4g5a+56LGhXHJcbiBkYXRhPXtuYW1lOlsnMeaciCcsJzLmnIgnLCcz5pyIJ10sdmFsdWU6WzIwLDMwLDQwXX1cclxuICovXHJcbmNsYXNzIE5zY0NoYXJ0IGV4dGVuZHMgUHVyZUNvbXBvbmVudDxDaGFydFByb3BzPiB7XHJcbiAgY2hhcnRSZWYgPSBSZWFjdC5jcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XHJcbiAgbXlDaGFydDogRUNoYXJ0cyB8IG51bGwgPSBudWxsO1xyXG4gIHN0b3JlID0ge30gYXMgU3RvcmVQcm9wcztcclxuICBkZWZhdWx0Q29sb3JzID0gW1xyXG4gICAgXCIjNUI5NkY3XCIsXHJcbiAgICBcIiM3M0M4RkZcIixcclxuICAgIFwiIzNDNkNGRVwiLFxyXG4gICAgXCIjODE4RkZGXCIsXHJcbiAgICBcIiM5N0RDRkJcIixcclxuICAgIFwiI0VGNkY1QlwiLFxyXG4gICAgXCIjRjhCRjcwXCIsXHJcbiAgICBcIiM1N0MzOUVcIixcclxuICBdIGFzIHN0cmluZ1tdO1xyXG4gIHN0YXRlID0ge1xyXG4gICAgZGF0YVNvdXJjZTogbnVsbCxcclxuICAgIGxlZ2VuZERhdGE6IFtdLFxyXG4gICAgY29sb3JzOiBbXSxcclxuICB9O1xyXG4gIGlzRmlyc3QgPSB0cnVlO1xyXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICBjb25zb2xlLmxvZygnY29uc3RydWN0b3InKVxyXG4gICAgc3VwZXIocHJvcHMpO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBkYXRhLFxyXG4gICAgICBzdG9yZSA9IHt9LFxyXG4gICAgICBjaGlsZHJlbixcclxuICAgICAgb3B0aW9uOiBvcHRpb25zLFxyXG4gICAgICBhdXRvTG9hZCA9IHRydWUsXHJcbiAgICB9ID0gcHJvcHM7XHJcbiAgICBjb25zdCB7IHVybCwgbGlzdGVuZXJzOiBsaXN0ZW5lcnNQb3BzID0ge30sIC4uLnN0b3JlcyB9ID0gc3RvcmU7XHJcbiAgICBpZiAoIWNoaWxkcmVuKSB7XHJcbiAgICAgIGlmICghKGRhdGEgfHwgdXJsIHx8IG9wdGlvbnMpKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidXJs44CBZGF0YeOAgW9wdGlvbuS4jeiDvemDveS4uuepuu+8gVwiKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgICBsZXQgc3RvcmVQcm9wcyA9IHtcclxuICAgICAgICBtb2RlbDogXCJtb2RlbFwiLFxyXG4gICAgICAgIGNvbXBvbmVudDogdGhpcyxcclxuICAgICAgICBsaXN0ZW5lcnM6IHtcclxuICAgICAgICAgIG9uQmVmb3JlTG9hZDogZnVuY3Rpb24gKHN0b3JlLCBvcHRpb25zKSB7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1BvcHMub25CZWZvcmVMb2FkLCBfdGhpcywgW3N0b3JlLCBvcHRpb25zXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgbG9hZDogZnVuY3Rpb24gKGRhdGEsIG1vZGVsRGF0YSwgc3RvcmUpIHtcclxuICAgICAgICAgICAgX3RoaXMuc2V0U3RhdGUoeyBkYXRhU291cmNlOiBtb2RlbERhdGEgfSwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChfdGhpcy5pc0ZpcnN0ICYmIGF1dG9Mb2FkKSB7XHJcbiAgICAgICAgICAgICAgICBfdGhpcy5pbml0KCk7XHJcbiAgICAgICAgICAgICAgICBfdGhpcy5pc0ZpcnN0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUG9wcy5sb2FkLCBfdGhpcywgW2RhdGEsIG1vZGVsRGF0YSwgc3RvcmVdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBkYXRhQ2hhbmdlZDogZnVuY3Rpb24gKGRhdGEsIG1vZGVsRGF0YSwgc3RvcmUpIHtcclxuICAgICAgICAgICAgX3RoaXMuc2V0U3RhdGUoeyBkYXRhU291cmNlOiBtb2RlbERhdGEgfSwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChhdXRvTG9hZCkge1xyXG4gICAgICAgICAgICAgICAgX3RoaXMuaW5pdCgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1BvcHMuZGF0YUNoYW5nZWQsIF90aGlzLCBbXHJcbiAgICAgICAgICAgICAgZGF0YSxcclxuICAgICAgICAgICAgICBtb2RlbERhdGEsXHJcbiAgICAgICAgICAgICAgc3RvcmUsXHJcbiAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLnN0b3JlcyxcclxuICAgICAgfTtcclxuICAgICAgaWYgKHVybCAmJiBkYXRhID09IG51bGwpIHtcclxuICAgICAgICBzdG9yZVByb3BzID0ge1xyXG4gICAgICAgICAgLi4ue1xyXG4gICAgICAgICAgICBhdXRvTG9hZDogdHJ1ZSxcclxuICAgICAgICAgICAgdXJsOiB1cmwsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4uc3RvcmVQcm9wcyxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc3RvcmUgPSBuZXcgU3RvcmUoc3RvcmVQcm9wcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgIGNvbnN0IHsgZGF0YSwgYXV0b0xvYWQgPSB0cnVlLCBzdG9yZSwgb3B0aW9uIH0gPSB0aGlzLnByb3BzO1xyXG5cclxuICAgIGlmICh0aGlzLm15Q2hhcnQgfHwgIXRoaXMuY2hhcnRSZWYuY3VycmVudCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoZGF0YSAmJiBhdXRvTG9hZCkge1xyXG4gICAgICB0aGlzLmluaXQoKTtcclxuICAgIH0gZWxzZSBpZiAoIWRhdGEgJiYgIXN0b3JlPy51cmwgJiYgb3B0aW9uKSB7XHJcbiAgICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29tcG9uZW50RGlkVXBkYXRlKFxyXG4gICAgcHJldlByb3BzOiBSZWFkb25seTxDaGFydFByb3BzPixcclxuICAgIHByZXZTdGF0ZTogUmVhZG9ubHk8e30+LFxyXG4gICAgc25hcHNob3Q/OiBhbnlcclxuICApOiB2b2lkIHtcclxuICAgIGNvbnN0IHsgYXV0b0xvYWQgPSB0cnVlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKGF1dG9Mb2FkKSB7XHJcbiAgICAgIGlmIChKU09OLnN0cmluZ2lmeShwcmV2UHJvcHMuZGF0YSkgIT09IEpTT04uc3RyaW5naWZ5KHRoaXMucHJvcHMuZGF0YSkpIHtcclxuICAgICAgICB0aGlzLmluaXQoKTtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICBKU09OLnN0cmluZ2lmeShwcmV2UHJvcHMub3B0aW9uKSAhPT0gSlNPTi5zdHJpbmdpZnkodGhpcy5wcm9wcy5vcHRpb24pXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZVNldENoYXJ0KCkge1xyXG4gICAgdGhpcy5pbml0KCk7XHJcbiAgfVxyXG4gIGlzU3RyaW5nKHYpIHtcclxuICAgIHJldHVybiB0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIjtcclxuICB9XHJcblxyXG5cclxuICBjaGFydExvYWQocGFyYW1zKXtcclxuICAgIHRoaXMuc3RvcmUubG9hZCh7cGFyYW1zfSlcclxuICB9XHJcbiAgY2hhcnRSZUxvYWQoKXtcclxuICAgIHRoaXMuc3RvcmUucmVsb2FkKCk7XHJcbiAgfVxyXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xyXG4gICAgLy8g5riF55CGIGVjaGFydHMg5a6e5L6LXHJcbiAgICBpZiAodGhpcy5teUNoYXJ0KSB7XHJcbiAgICAgIHRoaXMubXlDaGFydC5kaXNwb3NlKCk7XHJcbiAgICAgIHRoaXMubXlDaGFydCA9IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g56e76Zmk5LqL5Lu255uR5ZCs5ZmoXHJcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCB0aGlzLmhhbmRsZUNoYXJ0UmVzaXplLmJpbmQodGhpcykpO1xyXG4gIH1cclxuXHJcbiAgaXNSZXBsYWNlKHYpIHtcclxuICAgIHJldHVybiAvXnsuKn0kL2dpLnRlc3Qodik7XHJcbiAgfVxyXG4gIHJlcGxhY2Uodikge1xyXG4gICAgcmV0dXJuIHYuc3Vic3RyaW5nKDEsIHYubGVuZ3RoIC0gMSk7XHJcbiAgfVxyXG5cclxuICBnZXRSYW5kb21Db2xvcigpIHtcclxuICAgIGxldCBjb2xvcjtcclxuICAgIGRvIHtcclxuICAgICAgY29sb3IgPVxyXG4gICAgICAgIFwiI1wiICtcclxuICAgICAgICBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAweGZmZmZmZilcclxuICAgICAgICAgIC50b1N0cmluZygxNilcclxuICAgICAgICAgIC5wYWRTdGFydCg2LCBcIjBcIik7XHJcbiAgICB9IHdoaWxlIChjb2xvciA9PT0gXCIjRkZGRkZGXCIgfHwgY29sb3IgPT09IFwiIzAwMDAwMFwiKTtcclxuICAgIHJldHVybiBjb2xvcjtcclxuICB9XHJcbiAgZ2VuZXJhdGVDb2xvcnMoY291bnQ6IG51bWJlcik6IHN0cmluZ1tdIHtcclxuICAgIC8vIOWmguaenOmcgOimgeeahOminOiJsuaVsOmHj+WwkeS6juaIluetieS6jum7mOiupOminOiJsuaVsOmHj++8jOebtOaOpei/lOWbnuWvueW6lOaVsOmHj+eahOm7mOiupOminOiJslxyXG4gICAgaWYgKGNvdW50IDw9IHRoaXMuZGVmYXVsdENvbG9ycy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdENvbG9ycy5zbGljZSgwLCBjb3VudCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g5ZCm5YiZ77yM5YWI5aSN5Yi25omA5pyJ6buY6K6k6aKc6ImyXHJcbiAgICBjb25zdCBjb2xvcnMgPSBbLi4udGhpcy5kZWZhdWx0Q29sb3JzXTtcclxuXHJcbiAgICAvLyDnlJ/miJDpop3lpJbnmoTpmo/mnLrpopzoibJcclxuICAgIGNvbnN0IG5lZWRlZCA9IGNvdW50IC0gdGhpcy5kZWZhdWx0Q29sb3JzLmxlbmd0aDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmVlZGVkOyBpKyspIHtcclxuICAgICAgY29sb3JzLnB1c2godGhpcy5nZXRSYW5kb21Db2xvcigpKTtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0U3RhdGUoeyBjb2xvcnMgfSk7XHJcbiAgICByZXR1cm4gY29sb3JzO1xyXG4gIH1cclxuICBkYXRhQ29udmVyc2lvbihkYXRhLCBkYXRhcywgZGF0YU1hcCkge1xyXG4gICAgbGV0IHJlc3VsdDtcclxuICAgIGlmIChkYXRhKSB7XHJcbiAgICAgIGlmICh0aGlzLmlzU3RyaW5nKGRhdGEpICYmIHRoaXMuaXNSZXBsYWNlKGRhdGEpKSB7XHJcbiAgICAgICAgcmVzdWx0ID0gZGF0YU1hcFt0aGlzLnJlcGxhY2UoZGF0YSldO1xyXG4gICAgICB9IGVsc2UgaWYgKGlzQXJyYXkoZGF0YSkpIHtcclxuICAgICAgICBkYXRhLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgbGV0IHYgPSBpdGVtPy52YWx1ZSB8fCBudWxsO1xyXG4gICAgICAgICAgaWYgKHYgJiYgdGhpcy5pc1JlcGxhY2UodikpIHtcclxuICAgICAgICAgICAgaXRlbS52YWx1ZSA9IHRoaXMuZGF0YUNvbnZlcnNpb24odiwgZGF0YXMsIGRhdGFNYXApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJlc3VsdCA9IGRhdGE7XHJcbiAgICAgIH0gZWxzZSBpZiAoaXNPYmplY3QoZGF0YSkpIHtcclxuICAgICAgICByZXN1bHQgPSBbXTtcclxuICAgICAgICBpZiAoaXNBcnJheShkYXRhcykpIHtcclxuICAgICAgICAgIGRhdGFzLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICB2YXIgdGVtcE9iaiA9IHt9O1xyXG4gICAgICAgICAgICBmb3IgKGxldCBrZXkgaW4gZGF0YSkge1xyXG4gICAgICAgICAgICAgIGxldCB2ID0gZGF0YVtrZXldO1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmlzUmVwbGFjZSh2KSkge1xyXG4gICAgICAgICAgICAgICAgdGVtcE9ialtrZXldID0gaXRlbVt0aGlzLnJlcGxhY2UodildO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0ZW1wT2JqW2tleV0gPSB2O1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXN1bHQucHVzaCh0ZW1wT2JqKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIG9iamVjdENvbnZlcnNpb24ob2JqLCBkYXRhcywgZGF0YU1hcCkge1xyXG4gICAgbGV0IHRlbXBPYmo6IGFueTtcclxuICAgIGlmIChvYmopIHtcclxuICAgICAgaWYgKGlzQXJyYXkob2JqKSkge1xyXG4gICAgICAgIHRlbXBPYmogPSBbLi4ub2JqXTtcclxuICAgICAgICB0ZW1wT2JqLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGl0ZW0uZGF0YSkge1xyXG4gICAgICAgICAgICBpdGVtLmRhdGEgPSB0aGlzLmRhdGFDb252ZXJzaW9uKGl0ZW0uZGF0YSwgZGF0YXMsIGRhdGFNYXApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaXNTdHJpbmcob2JqKSkge1xyXG4gICAgICAgIHRlbXBPYmogPSBvYmo7XHJcbiAgICAgICAgdGVtcE9iai5kYXRhID0gdGhpcy5kYXRhQ29udmVyc2lvbih0ZW1wT2JqLCBkYXRhcywgZGF0YU1hcCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoaXNPYmplY3Qob2JqKSkge1xyXG4gICAgICAgIHRlbXBPYmogPSB7IC4uLm9iaiB9O1xyXG4gICAgICAgIHRlbXBPYmouZGF0YSA9IHRoaXMuZGF0YUNvbnZlcnNpb24odGVtcE9iai5kYXRhLCBkYXRhcywgZGF0YU1hcCk7XHJcbiAgICAgICAgaWYgKHRlbXBPYmoudHlwZSA9PT0gXCJwaWVcIiAmJiB0aGlzLnByb3BzLmxlZ2VuZCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICBsZXQgYWxsRGF0YSA9IHRlbXBPYmouZGF0YTtcclxuICAgICAgICAgIGNvbnN0IGxlZ2VuZERhdGEgPSB0aGlzLmNhbGN1bGF0ZVBlcmNlbnRhZ2VzKGFsbERhdGEpO1xyXG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIGxlZ2VuZERhdGEsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0ZW1wT2JqO1xyXG4gIH1cclxuICBjYWxjdWxhdGVQZXJjZW50YWdlcyhcclxuICAgIGFsbERhdGE6IEFycmF5PHsgbmFtZTogc3RyaW5nOyB2YWx1ZTogbnVtYmVyIH0+XHJcbiAgKTogQXJyYXk8eyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBudW1iZXI7IHBlcmNlbnQ6IHN0cmluZyB9PiB7XHJcbiAgICBpZiAoIWFsbERhdGEgfHwgYWxsRGF0YS5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdG90YWwgPSBhbGxEYXRhLnJlZHVjZSgoc3VtLCBpdGVtKSA9PiBzdW0gKyAoaXRlbS52YWx1ZSB8fCAwKSwgMCk7XHJcbiAgICBpZiAodG90YWwgPT09IDApIHtcclxuICAgICAgcmV0dXJuIGFsbERhdGEubWFwKChpdGVtKSA9PiAoe1xyXG4gICAgICAgIG5hbWU6IGl0ZW0ubmFtZSxcclxuICAgICAgICB2YWx1ZTogaXRlbS52YWx1ZSxcclxuICAgICAgICBwZXJjZW50OiBcIjAlXCIsXHJcbiAgICAgIH0pKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBDYWxjdWxhdGUgcGVyY2VudGFnZXMgZm9yIGFsbCBidXQgdGhlIGxhc3QgaXRlbVxyXG4gICAgY29uc3QgcmVzdWx0ID0gYWxsRGF0YS5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmIChpbmRleCA9PT0gYWxsRGF0YS5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgLy8gRm9yIHRoZSBsYXN0IGl0ZW0sIHdlJ2xsIGNhbGN1bGF0ZSBiYXNlZCBvbiByZW1haW5pbmcgcGVyY2VudGFnZVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBuYW1lOiBpdGVtLm5hbWUsXHJcbiAgICAgICAgICB2YWx1ZTogaXRlbS52YWx1ZSxcclxuICAgICAgICAgIHBlcmNlbnQ6IFwiXCIsIC8vIFBsYWNlaG9sZGVyLCB3aWxsIGJlIGNhbGN1bGF0ZWQgYmVsb3dcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBwZXJjZW50ID0gKGl0ZW0udmFsdWUgLyB0b3RhbCkgKiAxMDA7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgbmFtZTogaXRlbS5uYW1lLFxyXG4gICAgICAgIHZhbHVlOiBpdGVtLnZhbHVlLFxyXG4gICAgICAgIHBlcmNlbnQ6IGAke3BlcmNlbnQudG9GaXhlZCgyKX0lYCxcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIENhbGN1bGF0ZSB0aGUgbGFzdCBpdGVtJ3MgcGVyY2VudGFnZSB0byBlbnN1cmUgdG90YWwgaXMgMTAwJVxyXG4gICAgaWYgKHJlc3VsdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IG90aGVyc1RvdGFsID0gcmVzdWx0LnNsaWNlKDAsIC0xKS5yZWR1Y2UoKHN1bSwgaXRlbSkgPT4ge1xyXG4gICAgICAgIHJldHVybiBzdW0gKyBwYXJzZUZsb2F0KGl0ZW0ucGVyY2VudCk7XHJcbiAgICAgIH0sIDApO1xyXG5cclxuICAgICAgY29uc3QgbGFzdFBlcmNlbnQgPSAxMDAgLSBvdGhlcnNUb3RhbDtcclxuICAgICAgcmVzdWx0W3Jlc3VsdC5sZW5ndGggLSAxXS5wZXJjZW50ID0gYCR7bGFzdFBlcmNlbnQudG9GaXhlZCgyKX0lYDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuICBnZXROZXdPcHRpb24obmV3T3B0aW9uKSB7XHJcbiAgICBsZXQgY29sb3JzID0gbmV3T3B0aW9uLmNvbG9yO1xyXG4gICAgaWYgKG5ld09wdGlvbi5zZXJpZXMpIHtcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkobmV3T3B0aW9uLnNlcmllcykpIHtcclxuICAgICAgICBuZXdPcHRpb24udG9vbHRpcCA9IG5ld09wdGlvbi50b29sdGlwIHx8IHsgdHJpZ2dlcjogXCJheGlzXCIgfTtcclxuICAgICAgICBuZXdPcHRpb24uc2VyaWVzID0gbmV3T3B0aW9uLnNlcmllcy5tYXAoKHNlcmllc0l0ZW0pID0+IHtcclxuICAgICAgICAgIC8vIOWmguaenOaYr+afseeKtuWbvuS4lOayoeacieiuvue9riBiYXJXaWR0aO+8jOWImeiuvue9rum7mOiupOWAvOS4ujIwXHJcbiAgICAgICAgICBpZiAoc2VyaWVzSXRlbS50eXBlID09PSBcImJhclwiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgYmFyV2lkdGg6IDIwLFxyXG4gICAgICAgICAgICAgIGl0ZW1TdHlsZToge1xyXG4gICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBbNSwgNSwgMCwgMF0sXHJcbiAgICAgICAgICAgICAgICAuLi5zZXJpZXNJdGVtLml0ZW1TdHlsZSwgLy8g5L+d55WZ55So5oi36Ieq5a6a5LmJ55qEIGl0ZW1TdHlsZVxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgLi4uc2VyaWVzSXRlbSxcclxuICAgICAgICAgICAgICAvLyDmraPnoa7orr7nva4gYm9yZGVyUmFkaXVz77yM6ZyA6KaB5pS+5ZyoIGl0ZW1TdHlsZSDkuK1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoc2VyaWVzSXRlbS50eXBlID09PSBcInBpZVwiKSB7XHJcbiAgICAgICAgICAgIG5ld09wdGlvbi50b29sdGlwID0gbmV3T3B0aW9uLnRvb2x0aXAgfHwgeyB0cmlnZ2VyOiBcIml0ZW1cIiB9O1xyXG4gICAgICAgICAgICBsZXQgcGllRGF0YUNvdW50ID0gMTtcclxuICAgICAgICAgICAgaWYgKHNlcmllc0l0ZW0uZGF0YSAmJiBBcnJheS5pc0FycmF5KHNlcmllc0l0ZW0uZGF0YSkpIHtcclxuICAgICAgICAgICAgICBwaWVEYXRhQ291bnQgPSBzZXJpZXNJdGVtLmRhdGEubGVuZ3RoO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyDkuLrppbzlm77nlJ/miJDpgILlvZPmlbDph4/nmoTpopzoibJcclxuICAgICAgICAgICAgY29uc3QgcGllQ29sb3JzID0gdGhpcy5nZW5lcmF0ZUNvbG9ycyhwaWVEYXRhQ291bnQpO1xyXG4gICAgICAgICAgICBjb2xvcnMgPSBjb2xvcnMgfHwgcGllQ29sb3JzO1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgIHJhZGl1czogW1wiNDAlXCIsIFwiNzAlXCJdLFxyXG4gICAgICAgICAgICAgIGxhYmVsOiB7XHJcbiAgICAgICAgICAgICAgICBzaG93OiBmYWxzZSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGl0ZW1TdHlsZToge1xyXG4gICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAxMCxcclxuICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yOiBcIiNmZmZcIixcclxuICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoOiAyLFxyXG4gICAgICAgICAgICAgICAgLi4uc2VyaWVzSXRlbS5pdGVtU3R5bGUsIC8vIOS/neeVmeeUqOaIt+iHquWumuS5ieeahCBpdGVtU3R5bGVcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIC8vIGNvbG9yOiBzZXJpZXNJdGVtLmNvbG9yIHx8IHBpZUNvbG9ycyxcclxuICAgICAgICAgICAgICAuLi5zZXJpZXNJdGVtLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIHNlcmllc0l0ZW07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSBpZiAobmV3T3B0aW9uLnNlcmllcy50eXBlID09PSBcImJhclwiKSB7XHJcbiAgICAgICAgLy8g5aSE55CG5Y2V5LiqIHNlcmllcyDlr7nosaHnmoTmg4XlhrVcclxuICAgICAgICBuZXdPcHRpb24uc2VyaWVzID0ge1xyXG4gICAgICAgICAgYmFyV2lkdGg6IDIwLFxyXG4gICAgICAgICAgLi4ubmV3T3B0aW9uLnNlcmllcyxcclxuICAgICAgICAgIC8vIOato+ehruiuvue9riBib3JkZXJSYWRpdXPvvIzpnIDopoHmlL7lnKggaXRlbVN0eWxlIOS4rVxyXG4gICAgICAgICAgaXRlbVN0eWxlOiB7XHJcbiAgICAgICAgICAgIGJvcmRlclJhZGl1czogWzUsIDUsIDAsIDBdLFxyXG4gICAgICAgICAgICAuLi5uZXdPcHRpb24uc2VyaWVzLml0ZW1TdHlsZSwgLy8g5L+d55WZ55So5oi36Ieq5a6a5LmJ55qEIGl0ZW1TdHlsZVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9O1xyXG4gICAgICB9IGVsc2UgaWYgKG5ld09wdGlvbi5zZXJpZXMudHlwZSA9PT0gXCJwaWVcIikge1xyXG4gICAgICAgIC8vIOWkhOeQhuWNleS4qiBzZXJpZXMg5a+56LGh55qE5oOF5Ya177yI6aW85Zu+77yJXHJcbiAgICAgICAgbmV3T3B0aW9uLnRvb2x0aXAgPSBuZXdPcHRpb24udG9vbHRpcCB8fCB7IHRyaWdnZXI6IFwiaXRlbVwiIH07XHJcbiAgICAgICAgbGV0IHBpZURhdGFDb3VudCA9IDE7XHJcbiAgICAgICAgaWYgKG5ld09wdGlvbi5zZXJpZXMuZGF0YSAmJiBBcnJheS5pc0FycmF5KG5ld09wdGlvbi5zZXJpZXMuZGF0YSkpIHtcclxuICAgICAgICAgIHBpZURhdGFDb3VudCA9IG5ld09wdGlvbi5zZXJpZXMuZGF0YS5sZW5ndGg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIOS4uumlvOWbvueUn+aIkOmAguW9k+aVsOmHj+eahOminOiJslxyXG4gICAgICAgIGNvbnN0IHBpZUNvbG9ycyA9IHRoaXMuZ2VuZXJhdGVDb2xvcnMocGllRGF0YUNvdW50KTtcclxuICAgICAgICBjb2xvcnMgPSBjb2xvcnMgfHwgcGllQ29sb3JzO1xyXG4gICAgICAgIG5ld09wdGlvbi5zZXJpZXMgPSB7XHJcbiAgICAgICAgICByYWRpdXM6IFtcIjQwJVwiLCBcIjcwJVwiXSxcclxuICAgICAgICAgIGxhYmVsOiB7XHJcbiAgICAgICAgICAgIHNob3c6IGZhbHNlLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLm5ld09wdGlvbi5zZXJpZXMsXHJcbiAgICAgICAgICBpdGVtU3R5bGU6IHtcclxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAxMCxcclxuICAgICAgICAgICAgYm9yZGVyQ29sb3I6IFwiI2ZmZlwiLFxyXG4gICAgICAgICAgICBib3JkZXJXaWR0aDogMixcclxuICAgICAgICAgICAgLi4ubmV3T3B0aW9uLnNlcmllcy5pdGVtU3R5bGUsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLy8gY29sb3I6IG5ld09wdGlvbi5zZXJpZXMuY29sb3IgfHwgcGllQ29sb3JzLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIG5ld09wdGlvbi5jb2xvciA9IGNvbG9ycztcclxuICAgIHJldHVybiBuZXdPcHRpb247XHJcbiAgfVxyXG4gIGluaXQoKSB7XHJcbiAgICBpZiAoIXRoaXMuY2hhcnRSZWYuY3VycmVudCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IG9wdGlvbiwgZGF0YSwgT25DbGljaywgT25ackNsaWNrIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBkYXRhU291cmNlIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IGRhdGFNYXA6IGFueSA9IHt9O1xyXG4gICAgY29uc3QgbmV3RGF0YXMgPSBkYXRhIHx8IGRhdGFTb3VyY2U7XHJcbiAgICBsZXQgc2VyaWVzQ291bnQgPSAxOyAvLyDpu5jorqToh7PlsJHkuIDkuKrns7vliJdcclxuICAgIGlmIChvcHRpb24/LnNlcmllcykge1xyXG4gICAgICBzZXJpZXNDb3VudCA9IEFycmF5LmlzQXJyYXkob3B0aW9uLnNlcmllcykgPyBvcHRpb24uc2VyaWVzLmxlbmd0aCA6IDE7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g55Sf5oiQ6YCC5b2T5pWw6YeP55qE6aKc6Imy77yI5aaC5p6c55So5oi35rKh5pyJ5o+Q5L6b6aKc6Imy77yJXHJcbiAgICBsZXQgZGVmYXVsdE9wdGlvbiA9IHt9O1xyXG5cclxuICAgIGxldCBuZXdPcHRpb246IGFueSA9IHsgLi4uZGVmYXVsdE9wdGlvbiwgLi4ub3B0aW9uIH07XHJcblxyXG4gICAgaWYgKGlzQXJyYXkobmV3RGF0YXMpKSB7XHJcbiAgICAgIG5ld0RhdGFzLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIGZvciAobGV0IGtleSBpbiBpdGVtKSB7XHJcbiAgICAgICAgICBpZiAoZGF0YU1hcFtrZXldID09IG51bGwpIHtcclxuICAgICAgICAgICAgZGF0YU1hcFtrZXldID0gW107XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBkYXRhTWFwW2tleV0ucHVzaChpdGVtW2tleV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KG5ld0RhdGFzKSkge1xyXG4gICAgICBkYXRhTWFwID0gbmV3RGF0YXM7XHJcbiAgICB9XHJcbiAgICBuZXdPcHRpb24ueEF4aXMgPSB0aGlzLm9iamVjdENvbnZlcnNpb24obmV3T3B0aW9uLnhBeGlzLCBuZXdEYXRhcywgZGF0YU1hcCk7XHJcbiAgICBuZXdPcHRpb24ueUF4aXMgPSB0aGlzLm9iamVjdENvbnZlcnNpb24obmV3T3B0aW9uLnlBeGlzLCBuZXdEYXRhcywgZGF0YU1hcCk7XHJcbiAgICBuZXdPcHRpb24uc2VyaWVzID0gdGhpcy5vYmplY3RDb252ZXJzaW9uKFxyXG4gICAgICBuZXdPcHRpb24uc2VyaWVzLFxyXG4gICAgICBuZXdEYXRhcyxcclxuICAgICAgZGF0YU1hcFxyXG4gICAgKTtcclxuICAgIGNvbnN0IGNoYXJ0Q29sb3JzID0gdGhpcy5nZW5lcmF0ZUNvbG9ycyhzZXJpZXNDb3VudCk7XHJcbiAgICBuZXdPcHRpb24gPSB0aGlzLmdldE5ld09wdGlvbih7IC4uLm5ld09wdGlvbiB9KTtcclxuICAgIG5ld09wdGlvbiA9IHsgLi4ubmV3T3B0aW9uLCBjb2xvcjogbmV3T3B0aW9uLmNvbG9yIHx8IGNoYXJ0Q29sb3JzIH07XHJcbiAgICBpZiAodGhpcy5teUNoYXJ0KSB7XHJcbiAgICAgIHRoaXMubXlDaGFydC5kaXNwb3NlKCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBteUNoYXJ0ID0gKHRoaXMubXlDaGFydCA9IGVjaGFydHMuaW5pdChcclxuICAgICAgdGhpcy5jaGFydFJlZi5jdXJyZW50IGFzIEhUTUxEaXZFbGVtZW50XHJcbiAgICApKTsgLy/liJ3lp4vljJZlY2hhcnRz77yM6YCa6L+HcmVm5bGe5oCn6I635Y+WZG9tXHJcbiAgICBteUNoYXJ0LmNsZWFyKCk7XHJcbiAgICBteUNoYXJ0Lm9mZihcImNsaWNrXCIpO1xyXG4gICAgbXlDaGFydD8uZ2V0WnIoKT8ub2ZmKFwiY2xpY2tcIik7XHJcbiAgICBteUNoYXJ0LnNldE9wdGlvbihuZXdPcHRpb24pO1xyXG4gICAgbXlDaGFydC5vbihcImNsaWNrXCIsIGZ1bmN0aW9uIChwYXJhbXMpIHtcclxuICAgICAgT25DbGljayAmJiBPbkNsaWNrKHBhcmFtcywgbXlDaGFydCk7XHJcbiAgICB9KTtcclxuICAgIG15Q2hhcnQ/LmdldFpyKCk/Lm9uKFwiY2xpY2tcIiwgKHBhcmFtcykgPT4ge1xyXG4gICAgICBPblpyQ2xpY2sgJiYgT25ackNsaWNrKHBhcmFtcywgbXlDaGFydCk7XHJcbiAgICB9KTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5teUNoYXJ0KSB7XHJcbiAgICAgICAgdGhpcy5teUNoYXJ0LnJlc2l6ZSgpO1xyXG4gICAgICB9XHJcbiAgICB9LCAwKTtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBjb2xvcnM6IG5ld09wdGlvbi5jb2xvcixcclxuICAgIH0pO1xyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgdGhpcy5oYW5kbGVDaGFydFJlc2l6ZS5iaW5kKHRoaXMpKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUNoYXJ0UmVzaXplKCkge1xyXG4gICAgaWYgKHRoaXMubXlDaGFydCkge1xyXG4gICAgICB0aGlzLm15Q2hhcnQucmVzaXplKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQsIGxlZ2VuZCB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgbGVnZW5kRGF0YSA9IFtdLCBjb2xvcnMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCBib3hTdHlsZSA9IHtcclxuICAgICAgd2lkdGg6IHR5cGVvZiB3aWR0aCA9PSBcIm51bWJlclwiID8gcHgydncod2lkdGgpIDogd2lkdGgsXHJcbiAgICAgIGhlaWdodDogdHlwZW9mIGhlaWdodCA9PSBcIm51bWJlclwiID8gcHgydncoaGVpZ2h0KSA6IGhlaWdodCxcclxuICAgIH0gYXMgYW55O1xyXG4gICAgaWYgKGxlZ2VuZCA9PSB0cnVlKSB7XHJcbiAgICAgIGJveFN0eWxlLmRpc3BsYXkgPSBcImZsZXhcIjtcclxuICAgIH1cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXYgc3R5bGU9e2JveFN0eWxlfT5cclxuICAgICAgICA8ZGl2IHJlZj17dGhpcy5jaGFydFJlZn0gc3R5bGU9e3sgZmxleDogMSwgaGVpZ2h0OiBcIjEwMCVcIiB9fT48L2Rpdj5cclxuICAgICAgICB7bGVnZW5kICYmIChcclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbHMoXCJuc2MtY2hhcnQtbGVnZW5kQm94XCIpfT5cclxuICAgICAgICAgICAge2xlZ2VuZERhdGEubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5zYy1jaGFydC1sZWdlbmRJdGVtXCIga2V5PXtpbmRleH0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJuc2MtY2hhcnQtbGVnZW5kSXRlbS1pY29uXCJcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yc1tpbmRleF0gfX1cclxuICAgICAgICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5zYy1jaGFydC1sZWdlbmRJdGVtLW5hbWVcIj57aXRlbS5uYW1lfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5zYy1jaGFydC1sZWdlbmRJdGVtLXZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge2l0ZW0udmFsdWUgfHwgMH1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibnNjLWNoYXJ0LWxlZ2VuZEl0ZW0tcGVyY2VudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHtpdGVtLnBlcmNlbnR9XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBOc2NDaGFydDtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLE9BQU9BLEtBQUssSUFBSUMsYUFBYSxRQUFRLE9BQU87QUFDNUMsT0FBTyxLQUFLQyxPQUFPLE1BQU0sU0FBUztBQUVsQyxPQUFPQyxLQUFLLE1BQXNCLGFBQWE7QUFDL0MsU0FBU0MsS0FBSyxRQUFRLHVCQUF1QjtBQUM3QyxTQUFvQkMsS0FBSyxRQUFRLGFBQWE7QUFDOUMsU0FBU0MsT0FBTyxFQUFFQyxRQUFRLFFBQVEsbUJBQW1CO0FBQ3JELE9BQU9DLEdBQUcsTUFBTSxZQUFZO0FBQzVCLE9BQU8sY0FBYztBQWNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU1DLFFBQVEsU0FBU1IsYUFBYSxDQUFhO0VBb0IvQ1MsV0FBV0EsQ0FBQ0MsS0FBSyxFQUFFO0lBQ2pCQyxPQUFPLENBQUNDLEdBQUcsQ0FBQyxhQUFhLENBQUM7SUFDMUIsS0FBSyxDQUFDRixLQUFLLENBQUM7SUFBQ0csZUFBQSxnQ0FyQkpkLEtBQUssQ0FBQ2UsU0FBUyxDQUFpQixDQUFDO0lBQUFELGVBQUEsa0JBQ2xCLElBQUk7SUFBQUEsZUFBQSxnQkFDdEIsQ0FBQyxDQUFDO0lBQUFBLGVBQUEsd0JBQ00sQ0FDZCxTQUFTLEVB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","PureComponent","echarts","Store","utils","px2vw","isArray","isObject","cls","NscChart","constructor","props","console","log","_defineProperty","createRef","dataSource","legendData","colors","data","store","children","option","options","autoLoad","url","listeners","listenersPops","stores","_objectWithoutProperties","_excluded","Error","_this","storeProps","_objectSpread","model","component","onBeforeLoad","callback","load","modelData","setState","isFirst","init","dataChanged","componentDidMount","myChart","chartRef","current","componentDidUpdate","prevProps","prevState","snapshot","JSON","stringify","reSetChart","isString","v","componentWillUnmount","dispose","window","removeEventListener","handleChartResize","bind","isReplace","test","replace","substring","length","getRandomColor","color","Math","floor","random","toString","padStart","generateColors","count","defaultColors","slice","needed","i","push","dataConversion","datas","dataMap","result","map","item","value","tempObj","key","objectConversion","obj","type","legend","allData","calculatePercentages","total","reduce","sum","name","percent","index","concat","toFixed","othersTotal","parseFloat","lastPercent","getNewOption","newOption","series","Array","tooltip","trigger","seriesItem","barWidth","itemStyle","borderRadius","pieDataCount","pieColors","radius","label","show","borderColor","borderWidth","_myChart$getZr","_myChart$getZr2","OnClick","OnZrClick","state","newDatas","seriesCount","defaultOption","xAxis","yAxis","chartColors","clear","off","getZr","setOption","on","params","setTimeout","resize","addEventListener","render","width","height","boxStyle","display","createElement","style","ref","flex","className","backgroundColor"],"sources":["../../../src/components/base/chart/index.tsx"],"sourcesContent":["import React, { PureComponent } from \"react\";\r\nimport * as echarts from \"echarts\";\r\nimport { ECharts } from \"echarts/lib/echarts\";\r\nimport Store, { StoreProps } from \"@bj-nsc/msn\";\r\nimport { utils } from \"@bj-nsc/msn/lib/utils\";\r\nimport { deepMerge, px2vw } from \"../../utils\";\r\nimport { isArray, isObject } from \"@bj-nsc/functions\";\r\nimport cls from \"classnames\";\r\nimport \"./index.less\";\r\nexport interface ChartProps {\r\n store?: StoreProps;\r\n option: any;\r\n data?: Array<Object> | Object;\r\n width: number | string; //图表宽度\r\n height: number | string; //图表长度\r\n autoLoad?: boolean; //数据改变,自动刷新图表,默认true\r\n OnClick?: (params: any, e?: any) => void; //图表点击事件\r\n OnZrClick?: (params: any, e?: any) => void; //图表点击事件\r\n legend?: boolean; //自定义图例是否显示 ,用于饼图\r\n [proNames: string]: any;\r\n}\r\n\r\n//data示例\r\n/**\r\n 数组:\r\n data=[{name:'1月',value:20},{name:'2月',value:10},{name:'3月',value:25}]\r\n 对象\r\n data={name:['1月','2月','3月'],value:[20,30,40]}\r\n */\r\nclass NscChart extends PureComponent<ChartProps> {\r\n chartRef = React.createRef<HTMLDivElement>();\r\n myChart: ECharts | null = null;\r\n store = {} as StoreProps;\r\n defaultColors = [\r\n \"#5B96F7\",\r\n \"#73C8FF\",\r\n \"#3C6CFE\",\r\n \"#818FFF\",\r\n \"#97DCFB\",\r\n \"#EF6F5B\",\r\n \"#F8BF70\",\r\n \"#57C39E\",\r\n ] as string[];\r\n state = {\r\n dataSource: null,\r\n legendData: [],\r\n colors: [],\r\n };\r\n isFirst = true;\r\n constructor(props) {\r\n console.log('constructor')\r\n super(props);\r\n const {\r\n data,\r\n store = {},\r\n children,\r\n option: options,\r\n autoLoad = true,\r\n } = props;\r\n const { url, listeners: listenersPops = {}, ...stores } = store;\r\n if (!children) {\r\n if (!(data || url || options)) {\r\n throw new Error(\"url、data、option不能都为空!\");\r\n }\r\n let _this = this;\r\n let 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 _this.setState({ dataSource: modelData }, () => {\r\n if (_this.isFirst && autoLoad) {\r\n _this.init();\r\n _this.isFirst = false;\r\n }\r\n });\r\n utils.callback(listenersPops.load, _this, [data, modelData, store]);\r\n },\r\n dataChanged: function (data, modelData, store) {\r\n _this.setState({ dataSource: modelData }, () => {\r\n if (autoLoad) {\r\n _this.init();\r\n }\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 (url && data == null) {\r\n storeProps = {\r\n ...{\r\n autoLoad: true,\r\n url: url,\r\n },\r\n ...storeProps,\r\n };\r\n }\r\n this.store = new Store(storeProps);\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n const { data, autoLoad = true, store, option } = this.props;\r\n\r\n if (this.myChart || !this.chartRef.current) {\r\n return;\r\n }\r\n if (data && autoLoad) {\r\n this.init();\r\n } else if (!data && !store?.url && option) {\r\n this.init();\r\n }\r\n }\r\n\r\n componentDidUpdate(\r\n prevProps: Readonly<ChartProps>,\r\n prevState: Readonly<{}>,\r\n snapshot?: any\r\n ): void {\r\n const { autoLoad = true } = this.props;\r\n if (autoLoad) {\r\n if (JSON.stringify(prevProps.data) !== JSON.stringify(this.props.data)) {\r\n this.init();\r\n } else if (\r\n JSON.stringify(prevProps.option) !== JSON.stringify(this.props.option)\r\n ) {\r\n this.init();\r\n }\r\n }\r\n }\r\n\r\n reSetChart() {\r\n this.init();\r\n }\r\n isString(v) {\r\n return typeof v === \"string\";\r\n }\r\n componentWillUnmount() {\r\n // 清理 echarts 实例\r\n if (this.myChart) {\r\n this.myChart.dispose();\r\n this.myChart = null;\r\n }\r\n\r\n // 移除事件监听器\r\n window.removeEventListener(\"resize\", this.handleChartResize.bind(this));\r\n }\r\n\r\n isReplace(v) {\r\n return /^{.*}$/gi.test(v);\r\n }\r\n replace(v) {\r\n return v.substring(1, v.length - 1);\r\n }\r\n\r\n getRandomColor() {\r\n let color;\r\n do {\r\n color =\r\n \"#\" +\r\n Math.floor(Math.random() * 0xffffff)\r\n .toString(16)\r\n .padStart(6, \"0\");\r\n } while (color === \"#FFFFFF\" || color === \"#000000\");\r\n return color;\r\n }\r\n generateColors(count: number): string[] {\r\n // 如果需要的颜色数量少于或等于默认颜色数量,直接返回对应数量的默认颜色\r\n if (count <= this.defaultColors.length) {\r\n return this.defaultColors.slice(0, count);\r\n }\r\n\r\n // 否则,先复制所有默认颜色\r\n const colors = [...this.defaultColors];\r\n\r\n // 生成额外的随机颜色\r\n const needed = count - this.defaultColors.length;\r\n for (let i = 0; i < needed; i++) {\r\n colors.push(this.getRandomColor());\r\n }\r\n this.setState({ colors });\r\n return colors;\r\n }\r\n dataConversion(data, datas, dataMap) {\r\n let result;\r\n if (data) {\r\n if (this.isString(data) && this.isReplace(data)) {\r\n result = dataMap[this.replace(data)];\r\n } else if (isArray(data)) {\r\n data.map((item) => {\r\n let v = item?.value || null;\r\n if (v && this.isReplace(v)) {\r\n item.value = this.dataConversion(v, datas, dataMap);\r\n }\r\n });\r\n result = data;\r\n } else if (isObject(data)) {\r\n result = [];\r\n if (isArray(datas)) {\r\n datas.map((item) => {\r\n var tempObj = {};\r\n for (let key in data) {\r\n let v = data[key];\r\n if (this.isReplace(v)) {\r\n tempObj[key] = item[this.replace(v)];\r\n } else {\r\n tempObj[key] = v;\r\n }\r\n }\r\n result.push(tempObj);\r\n });\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n objectConversion(obj, datas, dataMap) {\r\n let tempObj: any;\r\n if (obj) {\r\n if (isArray(obj)) {\r\n tempObj = [...obj];\r\n tempObj.map((item) => {\r\n if (item.data) {\r\n item.data = this.dataConversion(item.data, datas, dataMap);\r\n }\r\n });\r\n } else if (this.isString(obj)) {\r\n tempObj = obj;\r\n tempObj.data = this.dataConversion(tempObj, datas, dataMap);\r\n } else if (isObject(obj)) {\r\n tempObj = { ...obj };\r\n tempObj.data = this.dataConversion(tempObj.data, datas, dataMap);\r\n if (tempObj.type === \"pie\" && this.props.legend == true) {\r\n let allData = tempObj.data;\r\n const legendData = this.calculatePercentages(allData);\r\n this.setState({\r\n legendData,\r\n });\r\n }\r\n }\r\n }\r\n return tempObj;\r\n }\r\n calculatePercentages(\r\n allData: Array<{ name: string; value: number }>\r\n ): Array<{ name: string; value: number; percent: string }> {\r\n if (!allData || allData.length === 0) {\r\n return [];\r\n }\r\n const total = allData.reduce((sum, item) => sum + (item.value || 0), 0);\r\n if (total === 0) {\r\n return allData.map((item) => ({\r\n name: item.name,\r\n value: item.value,\r\n percent: \"0%\",\r\n }));\r\n }\r\n\r\n // Calculate percentages for all but the last item\r\n const result = allData.map((item, index) => {\r\n if (index === allData.length - 1) {\r\n // For the last item, we'll calculate based on remaining percentage\r\n return {\r\n name: item.name,\r\n value: item.value,\r\n percent: \"\", // Placeholder, will be calculated below\r\n };\r\n }\r\n\r\n const percent = (item.value / total) * 100;\r\n return {\r\n name: item.name,\r\n value: item.value,\r\n percent: `${percent.toFixed(2)}%`,\r\n };\r\n });\r\n\r\n // Calculate the last item's percentage to ensure total is 100%\r\n if (result.length > 0) {\r\n const othersTotal = result.slice(0, -1).reduce((sum, item) => {\r\n return sum + parseFloat(item.percent);\r\n }, 0);\r\n\r\n const lastPercent = 100 - othersTotal;\r\n result[result.length - 1].percent = `${lastPercent.toFixed(2)}%`;\r\n }\r\n\r\n return result;\r\n }\r\n getNewOption(newOption) {\r\n let colors = newOption.color;\r\n if (newOption.series) {\r\n if (Array.isArray(newOption.series)) {\r\n newOption.tooltip = newOption.tooltip || { trigger: \"axis\" };\r\n newOption.series = newOption.series.map((seriesItem) => {\r\n // 如果是柱状图且没有设置 barWidth,则设置默认值为20\r\n if (seriesItem.type === \"bar\") {\r\n return {\r\n barWidth: 20,\r\n itemStyle: {\r\n borderRadius: [5, 5, 0, 0],\r\n ...seriesItem.itemStyle, // 保留用户自定义的 itemStyle\r\n },\r\n ...seriesItem,\r\n // 正确设置 borderRadius,需要放在 itemStyle 中\r\n };\r\n } else if (seriesItem.type === \"pie\") {\r\n newOption.tooltip = newOption.tooltip || { trigger: \"item\" };\r\n let pieDataCount = 1;\r\n if (seriesItem.data && Array.isArray(seriesItem.data)) {\r\n pieDataCount = seriesItem.data.length;\r\n }\r\n\r\n // 为饼图生成适当数量的颜色\r\n const pieColors = this.generateColors(pieDataCount);\r\n colors = colors || pieColors;\r\n return {\r\n radius: [\"40%\", \"70%\"],\r\n label: {\r\n show: false,\r\n },\r\n itemStyle: {\r\n borderRadius: 10,\r\n borderColor: \"#fff\",\r\n borderWidth: 2,\r\n ...seriesItem.itemStyle, // 保留用户自定义的 itemStyle\r\n },\r\n // color: seriesItem.color || pieColors,\r\n ...seriesItem,\r\n };\r\n }\r\n return seriesItem;\r\n });\r\n } else if (newOption.series.type === \"bar\") {\r\n // 处理单个 series 对象的情况\r\n newOption.series = {\r\n barWidth: 20,\r\n ...newOption.series,\r\n // 正确设置 borderRadius,需要放在 itemStyle 中\r\n itemStyle: {\r\n borderRadius: [5, 5, 0, 0],\r\n ...newOption.series.itemStyle, // 保留用户自定义的 itemStyle\r\n },\r\n };\r\n } else if (newOption.series.type === \"pie\") {\r\n // 处理单个 series 对象的情况(饼图)\r\n newOption.tooltip = newOption.tooltip || { trigger: \"item\" };\r\n let pieDataCount = 1;\r\n if (newOption.series.data && Array.isArray(newOption.series.data)) {\r\n pieDataCount = newOption.series.data.length;\r\n }\r\n // 为饼图生成适当数量的颜色\r\n const pieColors = this.generateColors(pieDataCount);\r\n colors = colors || pieColors;\r\n newOption.series = {\r\n radius: [\"40%\", \"70%\"],\r\n label: {\r\n show: false,\r\n },\r\n ...newOption.series,\r\n itemStyle: {\r\n borderRadius: 10,\r\n borderColor: \"#fff\",\r\n borderWidth: 2,\r\n ...newOption.series.itemStyle,\r\n },\r\n // color: newOption.series.color || pieColors,\r\n };\r\n }\r\n }\r\n newOption.color = colors;\r\n return newOption;\r\n }\r\n init() {\r\n if (!this.chartRef.current) {\r\n return;\r\n }\r\n const { option, data, OnClick, OnZrClick } = this.props;\r\n const { dataSource } = this.state;\r\n let dataMap: any = {};\r\n const newDatas = data || dataSource;\r\n let seriesCount = 1; // 默认至少一个系列\r\n if (option?.series) {\r\n seriesCount = Array.isArray(option.series) ? option.series.length : 1;\r\n }\r\n\r\n // 生成适当数量的颜色(如果用户没有提供颜色)\r\n let defaultOption = {};\r\n\r\n let newOption: any = { ...defaultOption, ...option };\r\n\r\n if (isArray(newDatas)) {\r\n newDatas.map((item) => {\r\n for (let key in item) {\r\n if (dataMap[key] == null) {\r\n dataMap[key] = [];\r\n }\r\n dataMap[key].push(item[key]);\r\n }\r\n });\r\n } else if (isObject(newDatas)) {\r\n dataMap = newDatas;\r\n }\r\n newOption.xAxis = this.objectConversion(newOption.xAxis, newDatas, dataMap);\r\n newOption.yAxis = this.objectConversion(newOption.yAxis, newDatas, dataMap);\r\n newOption.series = this.objectConversion(\r\n newOption.series,\r\n newDatas,\r\n dataMap\r\n );\r\n const chartColors = this.generateColors(seriesCount);\r\n newOption = this.getNewOption({ ...newOption });\r\n newOption = { ...newOption, color: newOption.color || chartColors };\r\n if (this.myChart) {\r\n this.myChart.dispose();\r\n }\r\n const myChart = (this.myChart = echarts.init(\r\n this.chartRef.current as HTMLDivElement\r\n )); //初始化echarts,通过ref属性获取dom\r\n myChart.clear();\r\n myChart.off(\"click\");\r\n myChart?.getZr()?.off(\"click\");\r\n myChart.setOption(newOption);\r\n myChart.on(\"click\", function (params) {\r\n OnClick && OnClick(params, myChart);\r\n });\r\n myChart?.getZr()?.on(\"click\", (params) => {\r\n OnZrClick && OnZrClick(params, myChart);\r\n });\r\n setTimeout(() => {\r\n if (this.myChart) {\r\n this.myChart.resize();\r\n }\r\n }, 0);\r\n this.setState({\r\n colors: newOption.color,\r\n });\r\n window.addEventListener(\"resize\", this.handleChartResize.bind(this));\r\n }\r\n\r\n handleChartResize() {\r\n if (this.myChart) {\r\n this.myChart.resize();\r\n }\r\n }\r\n\r\n render() {\r\n const { width, height, legend } = this.props;\r\n const { legendData = [], colors } = this.state;\r\n const boxStyle = {\r\n width: typeof width == \"number\" ? px2vw(width) : width,\r\n height: typeof height == \"number\" ? px2vw(height) : height,\r\n } as any;\r\n if (legend == true) {\r\n boxStyle.display = \"flex\";\r\n }\r\n return (\r\n <div style={boxStyle}>\r\n <div ref={this.chartRef} style={{ flex: 1, height: \"100%\" }}></div>\r\n {legend && (\r\n <div className={cls(\"nsc-chart-legendBox\")}>\r\n {legendData.map((item, index) => {\r\n return (\r\n <div className=\"nsc-chart-legendItem\" key={index}>\r\n <div\r\n className=\"nsc-chart-legendItem-icon\"\r\n style={{ backgroundColor: colors[index] }}\r\n ></div>\r\n <div className=\"nsc-chart-legendItem-name\">{item.name}</div>\r\n <div className=\"nsc-chart-legendItem-value\">\r\n {item.value || 0}\r\n </div>\r\n <div className=\"nsc-chart-legendItem-percent\">\r\n {item.percent}\r\n </div>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default NscChart;\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","PureComponent","echarts","Store","utils","px2vw","isArray","isObject","cls","NscChart","constructor","props","console","log","_defineProperty","createRef","dataSource","legendData","colors","data","store","children","option","options","autoLoad","url","listeners","listenersPops","stores","_objectWithoutProperties","_excluded","Error","_this","storeProps","_objectSpread","model","component","onBeforeLoad","callback","load","modelData","setState","isFirst","init","dataChanged","componentDidMount","myChart","chartRef","current","componentDidUpdate","prevProps","prevState","snapshot","JSON","stringify","reSetChart","isString","v","chartLoad","params","chartReLoad","reload","componentWillUnmount","dispose","window","removeEventListener","handleChartResize","bind","isReplace","test","replace","substring","length","getRandomColor","color","Math","floor","random","toString","padStart","generateColors","count","defaultColors","slice","needed","i","push","dataConversion","datas","dataMap","result","map","item","value","tempObj","key","objectConversion","obj","type","legend","allData","calculatePercentages","total","reduce","sum","name","percent","index","concat","toFixed","othersTotal","parseFloat","lastPercent","getNewOption","newOption","series","Array","tooltip","trigger","seriesItem","barWidth","itemStyle","borderRadius","pieDataCount","pieColors","radius","label","show","borderColor","borderWidth","_myChart$getZr","_myChart$getZr2","OnClick","OnZrClick","state","newDatas","seriesCount","defaultOption","xAxis","yAxis","chartColors","clear","off","getZr","setOption","on","setTimeout","resize","addEventListener","render","width","height","boxStyle","display","createElement","style","ref","flex","className","backgroundColor"],"sources":["../../../src/components/base/chart/index.tsx"],"sourcesContent":["import React, { PureComponent } from \"react\";\r\nimport * as echarts from \"echarts\";\r\nimport { ECharts } from \"echarts/lib/echarts\";\r\nimport Store, { StoreProps } from \"@bj-nsc/msn\";\r\nimport { utils } from \"@bj-nsc/msn/lib/utils\";\r\nimport { deepMerge, px2vw } from \"../../utils\";\r\nimport { isArray, isObject } from \"@bj-nsc/functions\";\r\nimport cls from \"classnames\";\r\nimport \"./index.less\";\r\nexport interface ChartProps {\r\n store?: StoreProps;\r\n option: any;\r\n data?: Array<Object> | Object;\r\n width: number | string; //图表宽度\r\n height: number | string; //图表长度\r\n autoLoad?: boolean; //数据改变,自动刷新图表,默认true\r\n OnClick?: (params: any, e?: any) => void; //图表点击事件\r\n OnZrClick?: (params: any, e?: any) => void; //图表点击事件\r\n legend?: boolean; //自定义图例是否显示 ,用于饼图\r\n [proNames: string]: any;\r\n}\r\n\r\n//data示例\r\n/**\r\n 数组:\r\n data=[{name:'1月',value:20},{name:'2月',value:10},{name:'3月',value:25}]\r\n 对象\r\n data={name:['1月','2月','3月'],value:[20,30,40]}\r\n */\r\nclass NscChart extends PureComponent<ChartProps> {\r\n chartRef = React.createRef<HTMLDivElement>();\r\n myChart: ECharts | null = null;\r\n store = {} as StoreProps;\r\n defaultColors = [\r\n \"#5B96F7\",\r\n \"#73C8FF\",\r\n \"#3C6CFE\",\r\n \"#818FFF\",\r\n \"#97DCFB\",\r\n \"#EF6F5B\",\r\n \"#F8BF70\",\r\n \"#57C39E\",\r\n ] as string[];\r\n state = {\r\n dataSource: null,\r\n legendData: [],\r\n colors: [],\r\n };\r\n isFirst = true;\r\n constructor(props) {\r\n console.log('constructor')\r\n super(props);\r\n const {\r\n data,\r\n store = {},\r\n children,\r\n option: options,\r\n autoLoad = true,\r\n } = props;\r\n const { url, listeners: listenersPops = {}, ...stores } = store;\r\n if (!children) {\r\n if (!(data || url || options)) {\r\n throw new Error(\"url、data、option不能都为空!\");\r\n }\r\n let _this = this;\r\n let 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 _this.setState({ dataSource: modelData }, () => {\r\n if (_this.isFirst && autoLoad) {\r\n _this.init();\r\n _this.isFirst = false;\r\n }\r\n });\r\n utils.callback(listenersPops.load, _this, [data, modelData, store]);\r\n },\r\n dataChanged: function (data, modelData, store) {\r\n _this.setState({ dataSource: modelData }, () => {\r\n if (autoLoad) {\r\n _this.init();\r\n }\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 (url && data == null) {\r\n storeProps = {\r\n ...{\r\n autoLoad: true,\r\n url: url,\r\n },\r\n ...storeProps,\r\n };\r\n }\r\n this.store = new Store(storeProps);\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n const { data, autoLoad = true, store, option } = this.props;\r\n\r\n if (this.myChart || !this.chartRef.current) {\r\n return;\r\n }\r\n if (data && autoLoad) {\r\n this.init();\r\n } else if (!data && !store?.url && option) {\r\n this.init();\r\n }\r\n }\r\n\r\n componentDidUpdate(\r\n prevProps: Readonly<ChartProps>,\r\n prevState: Readonly<{}>,\r\n snapshot?: any\r\n ): void {\r\n const { autoLoad = true } = this.props;\r\n if (autoLoad) {\r\n if (JSON.stringify(prevProps.data) !== JSON.stringify(this.props.data)) {\r\n this.init();\r\n } else if (\r\n JSON.stringify(prevProps.option) !== JSON.stringify(this.props.option)\r\n ) {\r\n this.init();\r\n }\r\n }\r\n }\r\n\r\n reSetChart() {\r\n this.init();\r\n }\r\n isString(v) {\r\n return typeof v === \"string\";\r\n }\r\n\r\n\r\n chartLoad(params){\r\n this.store.load({params})\r\n }\r\n chartReLoad(){\r\n this.store.reload();\r\n }\r\n componentWillUnmount() {\r\n // 清理 echarts 实例\r\n if (this.myChart) {\r\n this.myChart.dispose();\r\n this.myChart = null;\r\n }\r\n\r\n // 移除事件监听器\r\n window.removeEventListener(\"resize\", this.handleChartResize.bind(this));\r\n }\r\n\r\n isReplace(v) {\r\n return /^{.*}$/gi.test(v);\r\n }\r\n replace(v) {\r\n return v.substring(1, v.length - 1);\r\n }\r\n\r\n getRandomColor() {\r\n let color;\r\n do {\r\n color =\r\n \"#\" +\r\n Math.floor(Math.random() * 0xffffff)\r\n .toString(16)\r\n .padStart(6, \"0\");\r\n } while (color === \"#FFFFFF\" || color === \"#000000\");\r\n return color;\r\n }\r\n generateColors(count: number): string[] {\r\n // 如果需要的颜色数量少于或等于默认颜色数量,直接返回对应数量的默认颜色\r\n if (count <= this.defaultColors.length) {\r\n return this.defaultColors.slice(0, count);\r\n }\r\n\r\n // 否则,先复制所有默认颜色\r\n const colors = [...this.defaultColors];\r\n\r\n // 生成额外的随机颜色\r\n const needed = count - this.defaultColors.length;\r\n for (let i = 0; i < needed; i++) {\r\n colors.push(this.getRandomColor());\r\n }\r\n this.setState({ colors });\r\n return colors;\r\n }\r\n dataConversion(data, datas, dataMap) {\r\n let result;\r\n if (data) {\r\n if (this.isString(data) && this.isReplace(data)) {\r\n result = dataMap[this.replace(data)];\r\n } else if (isArray(data)) {\r\n data.map((item) => {\r\n let v = item?.value || null;\r\n if (v && this.isReplace(v)) {\r\n item.value = this.dataConversion(v, datas, dataMap);\r\n }\r\n });\r\n result = data;\r\n } else if (isObject(data)) {\r\n result = [];\r\n if (isArray(datas)) {\r\n datas.map((item) => {\r\n var tempObj = {};\r\n for (let key in data) {\r\n let v = data[key];\r\n if (this.isReplace(v)) {\r\n tempObj[key] = item[this.replace(v)];\r\n } else {\r\n tempObj[key] = v;\r\n }\r\n }\r\n result.push(tempObj);\r\n });\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n objectConversion(obj, datas, dataMap) {\r\n let tempObj: any;\r\n if (obj) {\r\n if (isArray(obj)) {\r\n tempObj = [...obj];\r\n tempObj.map((item) => {\r\n if (item.data) {\r\n item.data = this.dataConversion(item.data, datas, dataMap);\r\n }\r\n });\r\n } else if (this.isString(obj)) {\r\n tempObj = obj;\r\n tempObj.data = this.dataConversion(tempObj, datas, dataMap);\r\n } else if (isObject(obj)) {\r\n tempObj = { ...obj };\r\n tempObj.data = this.dataConversion(tempObj.data, datas, dataMap);\r\n if (tempObj.type === \"pie\" && this.props.legend == true) {\r\n let allData = tempObj.data;\r\n const legendData = this.calculatePercentages(allData);\r\n this.setState({\r\n legendData,\r\n });\r\n }\r\n }\r\n }\r\n return tempObj;\r\n }\r\n calculatePercentages(\r\n allData: Array<{ name: string; value: number }>\r\n ): Array<{ name: string; value: number; percent: string }> {\r\n if (!allData || allData.length === 0) {\r\n return [];\r\n }\r\n const total = allData.reduce((sum, item) => sum + (item.value || 0), 0);\r\n if (total === 0) {\r\n return allData.map((item) => ({\r\n name: item.name,\r\n value: item.value,\r\n percent: \"0%\",\r\n }));\r\n }\r\n\r\n // Calculate percentages for all but the last item\r\n const result = allData.map((item, index) => {\r\n if (index === allData.length - 1) {\r\n // For the last item, we'll calculate based on remaining percentage\r\n return {\r\n name: item.name,\r\n value: item.value,\r\n percent: \"\", // Placeholder, will be calculated below\r\n };\r\n }\r\n\r\n const percent = (item.value / total) * 100;\r\n return {\r\n name: item.name,\r\n value: item.value,\r\n percent: `${percent.toFixed(2)}%`,\r\n };\r\n });\r\n\r\n // Calculate the last item's percentage to ensure total is 100%\r\n if (result.length > 0) {\r\n const othersTotal = result.slice(0, -1).reduce((sum, item) => {\r\n return sum + parseFloat(item.percent);\r\n }, 0);\r\n\r\n const lastPercent = 100 - othersTotal;\r\n result[result.length - 1].percent = `${lastPercent.toFixed(2)}%`;\r\n }\r\n\r\n return result;\r\n }\r\n getNewOption(newOption) {\r\n let colors = newOption.color;\r\n if (newOption.series) {\r\n if (Array.isArray(newOption.series)) {\r\n newOption.tooltip = newOption.tooltip || { trigger: \"axis\" };\r\n newOption.series = newOption.series.map((seriesItem) => {\r\n // 如果是柱状图且没有设置 barWidth,则设置默认值为20\r\n if (seriesItem.type === \"bar\") {\r\n return {\r\n barWidth: 20,\r\n itemStyle: {\r\n borderRadius: [5, 5, 0, 0],\r\n ...seriesItem.itemStyle, // 保留用户自定义的 itemStyle\r\n },\r\n ...seriesItem,\r\n // 正确设置 borderRadius,需要放在 itemStyle 中\r\n };\r\n } else if (seriesItem.type === \"pie\") {\r\n newOption.tooltip = newOption.tooltip || { trigger: \"item\" };\r\n let pieDataCount = 1;\r\n if (seriesItem.data && Array.isArray(seriesItem.data)) {\r\n pieDataCount = seriesItem.data.length;\r\n }\r\n\r\n // 为饼图生成适当数量的颜色\r\n const pieColors = this.generateColors(pieDataCount);\r\n colors = colors || pieColors;\r\n return {\r\n radius: [\"40%\", \"70%\"],\r\n label: {\r\n show: false,\r\n },\r\n itemStyle: {\r\n borderRadius: 10,\r\n borderColor: \"#fff\",\r\n borderWidth: 2,\r\n ...seriesItem.itemStyle, // 保留用户自定义的 itemStyle\r\n },\r\n // color: seriesItem.color || pieColors,\r\n ...seriesItem,\r\n };\r\n }\r\n return seriesItem;\r\n });\r\n } else if (newOption.series.type === \"bar\") {\r\n // 处理单个 series 对象的情况\r\n newOption.series = {\r\n barWidth: 20,\r\n ...newOption.series,\r\n // 正确设置 borderRadius,需要放在 itemStyle 中\r\n itemStyle: {\r\n borderRadius: [5, 5, 0, 0],\r\n ...newOption.series.itemStyle, // 保留用户自定义的 itemStyle\r\n },\r\n };\r\n } else if (newOption.series.type === \"pie\") {\r\n // 处理单个 series 对象的情况(饼图)\r\n newOption.tooltip = newOption.tooltip || { trigger: \"item\" };\r\n let pieDataCount = 1;\r\n if (newOption.series.data && Array.isArray(newOption.series.data)) {\r\n pieDataCount = newOption.series.data.length;\r\n }\r\n // 为饼图生成适当数量的颜色\r\n const pieColors = this.generateColors(pieDataCount);\r\n colors = colors || pieColors;\r\n newOption.series = {\r\n radius: [\"40%\", \"70%\"],\r\n label: {\r\n show: false,\r\n },\r\n ...newOption.series,\r\n itemStyle: {\r\n borderRadius: 10,\r\n borderColor: \"#fff\",\r\n borderWidth: 2,\r\n ...newOption.series.itemStyle,\r\n },\r\n // color: newOption.series.color || pieColors,\r\n };\r\n }\r\n }\r\n newOption.color = colors;\r\n return newOption;\r\n }\r\n init() {\r\n if (!this.chartRef.current) {\r\n return;\r\n }\r\n const { option, data, OnClick, OnZrClick } = this.props;\r\n const { dataSource } = this.state;\r\n let dataMap: any = {};\r\n const newDatas = data || dataSource;\r\n let seriesCount = 1; // 默认至少一个系列\r\n if (option?.series) {\r\n seriesCount = Array.isArray(option.series) ? option.series.length : 1;\r\n }\r\n\r\n // 生成适当数量的颜色(如果用户没有提供颜色)\r\n let defaultOption = {};\r\n\r\n let newOption: any = { ...defaultOption, ...option };\r\n\r\n if (isArray(newDatas)) {\r\n newDatas.map((item) => {\r\n for (let key in item) {\r\n if (dataMap[key] == null) {\r\n dataMap[key] = [];\r\n }\r\n dataMap[key].push(item[key]);\r\n }\r\n });\r\n } else if (isObject(newDatas)) {\r\n dataMap = newDatas;\r\n }\r\n newOption.xAxis = this.objectConversion(newOption.xAxis, newDatas, dataMap);\r\n newOption.yAxis = this.objectConversion(newOption.yAxis, newDatas, dataMap);\r\n newOption.series = this.objectConversion(\r\n newOption.series,\r\n newDatas,\r\n dataMap\r\n );\r\n const chartColors = this.generateColors(seriesCount);\r\n newOption = this.getNewOption({ ...newOption });\r\n newOption = { ...newOption, color: newOption.color || chartColors };\r\n if (this.myChart) {\r\n this.myChart.dispose();\r\n }\r\n const myChart = (this.myChart = echarts.init(\r\n this.chartRef.current as HTMLDivElement\r\n )); //初始化echarts,通过ref属性获取dom\r\n myChart.clear();\r\n myChart.off(\"click\");\r\n myChart?.getZr()?.off(\"click\");\r\n myChart.setOption(newOption);\r\n myChart.on(\"click\", function (params) {\r\n OnClick && OnClick(params, myChart);\r\n });\r\n myChart?.getZr()?.on(\"click\", (params) => {\r\n OnZrClick && OnZrClick(params, myChart);\r\n });\r\n setTimeout(() => {\r\n if (this.myChart) {\r\n this.myChart.resize();\r\n }\r\n }, 0);\r\n this.setState({\r\n colors: newOption.color,\r\n });\r\n window.addEventListener(\"resize\", this.handleChartResize.bind(this));\r\n }\r\n\r\n handleChartResize() {\r\n if (this.myChart) {\r\n this.myChart.resize();\r\n }\r\n }\r\n\r\n render() {\r\n const { width, height, legend } = this.props;\r\n const { legendData = [], colors } = this.state;\r\n const boxStyle = {\r\n width: typeof width == \"number\" ? px2vw(width) : width,\r\n height: typeof height == \"number\" ? px2vw(height) : height,\r\n } as any;\r\n if (legend == true) {\r\n boxStyle.display = \"flex\";\r\n }\r\n return (\r\n <div style={boxStyle}>\r\n <div ref={this.chartRef} style={{ flex: 1, height: \"100%\" }}></div>\r\n {legend && (\r\n <div className={cls(\"nsc-chart-legendBox\")}>\r\n {legendData.map((item, index) => {\r\n return (\r\n <div className=\"nsc-chart-legendItem\" key={index}>\r\n <div\r\n className=\"nsc-chart-legendItem-icon\"\r\n style={{ backgroundColor: colors[index] }}\r\n ></div>\r\n <div className=\"nsc-chart-legendItem-name\">{item.name}</div>\r\n <div className=\"nsc-chart-legendItem-value\">\r\n {item.value || 0}\r\n </div>\r\n <div className=\"nsc-chart-legendItem-percent\">\r\n {item.percent}\r\n </div>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default NscChart;\r\n"],"mappings":"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"}
|
|
@@ -8,11 +8,12 @@ interface ImportPropos {
|
|
|
8
8
|
downLoadTemplet?: boolean;
|
|
9
9
|
downTempletUrl?: string;
|
|
10
10
|
onCallBacks?: {
|
|
11
|
-
|
|
11
|
+
showResult?: any;
|
|
12
12
|
importCallBack?: any;
|
|
13
13
|
closeCallBack?: any;
|
|
14
14
|
};
|
|
15
15
|
showButton?: boolean;
|
|
16
|
+
buttonText?: string;
|
|
16
17
|
[propsName: string]: any;
|
|
17
18
|
}
|
|
18
19
|
declare class NscImportData extends React.PureComponent<ImportPropos, any> {
|
|
@@ -68,29 +68,37 @@ class NscImportData extends React.PureComponent {
|
|
|
68
68
|
isOverwrite: isOverwrite
|
|
69
69
|
}),
|
|
70
70
|
file: file
|
|
71
|
-
}, config).then(res => {
|
|
71
|
+
}, config).then(async res => {
|
|
72
72
|
this.setState({
|
|
73
73
|
buttonLoading: false
|
|
74
74
|
});
|
|
75
75
|
if (res.code == 200) {
|
|
76
|
-
var _res$data, _res$data2;
|
|
77
76
|
// message.success("导入成功!");
|
|
78
|
-
if (
|
|
77
|
+
if (onCallBacks !== null && onCallBacks !== void 0 && onCallBacks.showResult) {
|
|
78
|
+
let data = await (onCallBacks === null || onCallBacks === void 0 ? void 0 : onCallBacks.showResult(res, "import"));
|
|
79
79
|
this.setState({
|
|
80
|
-
requestStatus:
|
|
81
|
-
warnList:
|
|
82
|
-
});
|
|
83
|
-
} else if (((_res$data2 = res.data) === null || _res$data2 === void 0 || (_res$data2 = _res$data2.errors) === null || _res$data2 === void 0 ? void 0 : _res$data2.length) > 0) {
|
|
84
|
-
// message.success("导入失败!");
|
|
85
|
-
this.setState({
|
|
86
|
-
requestStatus: "error",
|
|
87
|
-
errorList: res.data.errors
|
|
80
|
+
requestStatus: data.status,
|
|
81
|
+
[data.status == "warning" ? "warnList" : "errorList"]: data.msgList
|
|
88
82
|
});
|
|
89
83
|
} else {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
84
|
+
var _res$data, _res$data2;
|
|
85
|
+
if (((_res$data = res.data) === null || _res$data === void 0 || (_res$data = _res$data.warnings) === null || _res$data === void 0 ? void 0 : _res$data.length) > 0) {
|
|
86
|
+
this.setState({
|
|
87
|
+
requestStatus: "warning",
|
|
88
|
+
warnList: res.data.warnings
|
|
89
|
+
});
|
|
90
|
+
} else if (((_res$data2 = res.data) === null || _res$data2 === void 0 || (_res$data2 = _res$data2.errors) === null || _res$data2 === void 0 ? void 0 : _res$data2.length) > 0) {
|
|
91
|
+
// message.success("导入失败!");
|
|
92
|
+
this.setState({
|
|
93
|
+
requestStatus: "error",
|
|
94
|
+
errorList: res.data.errors
|
|
95
|
+
});
|
|
96
|
+
} else {
|
|
97
|
+
_message.success(((file === null || file === void 0 ? void 0 : file.name) || "") + "导入成功!");
|
|
98
|
+
this.setState({
|
|
99
|
+
requestStatus: "success"
|
|
100
|
+
});
|
|
101
|
+
}
|
|
94
102
|
}
|
|
95
103
|
(onCallBacks === null || onCallBacks === void 0 ? void 0 : onCallBacks.importCallBack) && (onCallBacks === null || onCallBacks === void 0 ? void 0 : onCallBacks.importCallBack(res));
|
|
96
104
|
// this.hide();
|
|
@@ -109,7 +117,7 @@ class NscImportData extends React.PureComponent {
|
|
|
109
117
|
key: index
|
|
110
118
|
}, item) : /*#__PURE__*/React.createElement("div", {
|
|
111
119
|
key: index
|
|
112
|
-
}, "第" + item.rowNum + "行数据重复;");
|
|
120
|
+
}, "第" + item.rowNum + "行数据重复;" + item.errorMsg ? item.errorMsg : "");
|
|
113
121
|
} else {
|
|
114
122
|
return typeof item == "string" ? /*#__PURE__*/React.createElement("div", {
|
|
115
123
|
key: index
|
|
@@ -194,7 +202,9 @@ class NscImportData extends React.PureComponent {
|
|
|
194
202
|
downTempletUrl,
|
|
195
203
|
checkData,
|
|
196
204
|
checkUrl,
|
|
197
|
-
requestConfig
|
|
205
|
+
requestConfig,
|
|
206
|
+
buttonText,
|
|
207
|
+
onCallBacks
|
|
198
208
|
} = this.props;
|
|
199
209
|
const footer = /*#__PURE__*/React.createElement("div", {
|
|
200
210
|
className: "footer"
|
|
@@ -213,29 +223,37 @@ class NscImportData extends React.PureComponent {
|
|
|
213
223
|
url: checkUrl,
|
|
214
224
|
file: file,
|
|
215
225
|
data: (requestConfig === null || requestConfig === void 0 ? void 0 : requestConfig.data) || {}
|
|
216
|
-
}).then(res => {
|
|
217
|
-
if (
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
226
|
+
}).then(async res => {
|
|
227
|
+
if (onCallBacks !== null && onCallBacks !== void 0 && onCallBacks.showResult) {
|
|
228
|
+
let data = await (onCallBacks === null || onCallBacks === void 0 ? void 0 : onCallBacks.showResult(res, "preCheck"));
|
|
229
|
+
this.setState({
|
|
230
|
+
requestStatus: data.status,
|
|
231
|
+
[data.status == "warning" ? "warnList" : "errorList"]: data.msgList
|
|
232
|
+
});
|
|
233
|
+
} else {
|
|
234
|
+
if (res.code == 200) {
|
|
235
|
+
if (res.data.errorCount == 0 && res.data.duplicateCount == 0) {
|
|
236
|
+
this.setState({
|
|
237
|
+
currentStep: 2,
|
|
238
|
+
requestStatus: "success"
|
|
239
|
+
});
|
|
240
|
+
this.importData(file, false);
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
if (res.data.errorCount > 0) {
|
|
244
|
+
this.setState({
|
|
245
|
+
requestStatus: "error",
|
|
246
|
+
errorList: res.data.errorList
|
|
247
|
+
});
|
|
248
|
+
return;
|
|
249
|
+
}
|
|
250
|
+
if (res.data.duplicateCount > 0) {
|
|
251
|
+
this.setState({
|
|
252
|
+
requestStatus: "warning",
|
|
253
|
+
warnList: res.data.duplicateList
|
|
254
|
+
});
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
239
257
|
}
|
|
240
258
|
}
|
|
241
259
|
});
|
|
@@ -284,8 +302,8 @@ class NscImportData extends React.PureComponent {
|
|
|
284
302
|
onClick: () => {
|
|
285
303
|
this.show();
|
|
286
304
|
}
|
|
287
|
-
}, "
|
|
288
|
-
title: "
|
|
305
|
+
}, buttonText || "数据导入")), /*#__PURE__*/React.createElement(NscModal, {
|
|
306
|
+
title: buttonText || "数据导入",
|
|
289
307
|
width: 800,
|
|
290
308
|
wrapClassName: "import-modal",
|
|
291
309
|
ref: this.modalRef,
|
|
@@ -358,4 +376,4 @@ class NscImportData extends React.PureComponent {
|
|
|
358
376
|
}
|
|
359
377
|
}
|
|
360
378
|
export default NscImportData;
|
|
361
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIk5zY1VwbG9hZCIsIk5TQ0J1dHRvbiIsIk5zY0Rvd25Mb2FkIiwiTnNjTW9kYWwiLCJGaWxlSWNvbiIsIlVwbG9hZE91dGxpbmVkIiwiRm9sZGVyT3V0bGluZWQiLCJDbG9zZUNpcmNsZU91dGxpbmVkIiwiRXhjbGFtYXRpb25DaXJjbGVPdXRsaW5lZCIsIlN0ZXBzIiwibnNjRmlsZSIsIkFsZXJ0IiwiQ29sbGFwc2UiLCJEZWxldGVPdXRsaW5lZCIsIk5zY0ltcG9ydERhdGEiLCJQdXJlQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJhcmd1bWVudHMiLCJfZGVmaW5lUHJvcGVydHkiLCJzdGF0dXMiLCJmaWxlIiwiY3VycmVudFN0ZXAiLCJyZXF1ZXN0U3RhdHVzIiwiZXJyb3JMaXN0Iiwid2Fybkxpc3QiLCJidXR0b25Mb2FkaW5nIiwiY3JlYXRlUmVmIiwiZmlsZVNpemVLYiIsIm51bWJlciIsImxlbmd0aCIsInVuZGVmaW5lZCIsInRvRml4ZWQiLCJzaG93IiwiX3RoaXMkbW9kYWxSZWYkY3VycmVuIiwibW9kYWxSZWYiLCJjdXJyZW50IiwiaGlkZSIsIl90aGlzJG1vZGFsUmVmJGN1cnJlbjIiLCJyZXNldERhdGEiLCJpbXBvcnREYXRhIiwiaXNPdmVyd3JpdGUiLCJyZXF1ZXN0Q29uZmlnIiwiaW1wb3J0VXJsIiwib25DYWxsQmFja3MiLCJwcm9wcyIsImRhdGEiLCJjb25maWciLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJzZXRTdGF0ZSIsImltcG9ydEZpbGUiLCJ1cmwiLCJfb2JqZWN0U3ByZWFkIiwidGhlbiIsInJlcyIsImNvZGUiLCJfcmVzJGRhdGEiLCJfcmVzJGRhdGEyIiwid2FybmluZ3MiLCJlcnJvcnMiLCJfbWVzc2FnZSIsInN1Y2Nlc3MiLCJuYW1lIiwiaW1wb3J0Q2FsbEJhY2siLCJtc2ciLCJlcnJvciIsInJlbmRlckVycm9yQ29udGVudCIsImxpc3QiLCJtYXAiLCJpdGVtIiwiaW5kZXgiLCJzdGF0ZSIsImNyZWF0ZUVsZW1lbnQiLCJrZXkiLCJyb3dOdW0iLCJlcnJvck1zZyIsInJlbmRlclJlc3VsdCIsImFsZXJ0X21zZ19tYXAiLCJ3YXJuaW5nIiwiX2FsZXJ0X21zZ19tYXAkcmVxdWVzIiwic3R5bGUiLCJtYXJnaW5Ub3AiLCJtZXNzYWdlIiwidHlwZSIsInNob3dJY29uIiwiZXhwYW5kSWNvblBvc2l0aW9uIiwiY2xhc3NOYW1lIiwiYmFja2dyb3VuZENvbG9yIiwiYm9yZGVyIiwiYm9yZGVyUmFkaXVzIiwiZGVmYXVsdEFjdGl2ZUtleSIsIlBhbmVsIiwiaGVhZGVyIiwiY29sb3IiLCJleHRyYSIsImJhY2tncm91bmQiLCJyZW5kZXIiLCJkb3duTG9hZFRlbXBsZXQiLCJkb3duVGVtcGxldFVybCIsImNoZWNrRGF0YSIsImNoZWNrVXJsIiwiZm9vdGVyIiwib25DbGljayIsImVycm9yQ291bnQiLCJkdXBsaWNhdGVDb3VudCIsImR1cGxpY2F0ZUxpc3QiLCJkaXNhYmxlZCIsImljb24iLCJtYXJnaW5MZWZ0IiwiY2hpbGRyZW4iLCJGcmFnbWVudCIsInNob3dCdXR0b24iLCJ0aXRsZSIsIndpZHRoIiwid3JhcENsYXNzTmFtZSIsInJlZiIsIm9uQ2FuY2VsIiwiZGlzcGxheSIsImJlZm9yZVVwbG9hZCIsImFsbG93RmlsZVN1ZmZpeCIsImFjY2VwdCIsInNob3dVcGxvYWRMaXN0Iiwic2l6ZSIsIml0ZW1zIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYmFzZS9pbXBvcnREYXRhL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubGVzc1wiO1xyXG5pbXBvcnQgTnNjVXBsb2FkIGZyb20gXCIuLi91cGxvYWRcIjtcclxuaW1wb3J0IE5TQ0J1dHRvbiBmcm9tIFwiLi4vYnV0dG9uXCI7XHJcbmltcG9ydCBOc2NEb3duTG9hZCBmcm9tIFwiLi4vZG93bmxvYWRcIjtcclxuaW1wb3J0IE5zY01vZGFsIGZyb20gXCIuLi9tb2RhbFwiO1xyXG5pbXBvcnQgRmlsZUljb24gZnJvbSBcIi4uL2NvbW1vbi9GaWxlSWNvblwiO1xyXG5pbXBvcnQge1xyXG4gIFVwbG9hZE91dGxpbmVkLFxyXG4gIEZvbGRlck91dGxpbmVkLFxyXG4gIENsb3NlQ2lyY2xlT3V0bGluZWQsXHJcbiAgRXhjbGFtYXRpb25DaXJjbGVPdXRsaW5lZCxcclxufSBmcm9tIFwiQGFudC1kZXNpZ24vaWNvbnNcIjtcclxuaW1wb3J0IFN0ZXBzIGZyb20gXCIuLi9zdGVwc1wiO1xyXG5pbXBvcnQgbnNjRmlsZSBmcm9tIFwibnNjLWZpbGVcIjtcclxuaW1wb3J0IHsgbWVzc2FnZSB9IGZyb20gXCJhbnRkXCI7XHJcbmltcG9ydCBBbGVydCBmcm9tIFwiLi4vYWxlcnRcIjtcclxuaW1wb3J0IENvbGxhcHNlIGZyb20gXCIuLi9jb2xsYXBzZVwiO1xyXG5pbXBvcnQgSWNvbiBmcm9tIFwiLi4vY29tbW9uL0ljb25cIjtcclxuaW1wb3J0IHsgRGVsZXRlT3V0bGluZWQgfSBmcm9tIFwiQGFudC1kZXNpZ24vaWNvbnNcIjtcclxuXHJcbmludGVyZmFjZSBJbXBvcnRQcm9wb3Mge1xyXG4gIGNoZWNrRGF0YT86IGJvb2xlYW47IC8v5piv5ZCm6L+b6KGM5pWw5o2u5qCh6aqM77yM6buY6K6kZmFsc2VcclxuICBjaGVja1VybD86IHN0cmluZzsgLy/mlbDmja7moKHpqozmjqXlj6PlnLDlnYBcclxuICBpbXBvcnRVcmw6IHN0cmluZzsgLy/mlbDmja7lr7zlhaXlnLDlnYBcclxuICByZXF1ZXN0Q29uZmlnPzogYW55O1xyXG4gIGRvd25Mb2FkVGVtcGxldD86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65LiL6L295qih5p2/5oyJ6ZKuXHJcbiAgZG93blRlbXBsZXRVcmw/OiBzdHJpbmc7IC8v5LiL6L295qih5p2/5Zyw5Z2AXHJcbiAgb25DYWxsQmFja3M/OiB7XHJcbiAgICBjaGVja0NhbGxCYWNrPzogYW55OyAvL+aVsOaNruagoemqjOWbnuiwg1xyXG4gICAgaW1wb3J0Q2FsbEJhY2s/OiBhbnk7IC8v5pWw5o2u5a+85YWl5Zue6LCDXHJcbiAgICBjbG9zZUNhbGxCYWNrPzogYW55O1xyXG4gIH07XHJcbiAgc2hvd0J1dHRvbj86IGJvb2xlYW47XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmNsYXNzIE5zY0ltcG9ydERhdGEgZXh0ZW5kcyBSZWFjdC5QdXJlQ29tcG9uZW50PEltcG9ydFByb3BvcywgYW55PiB7XHJcbiAgc3RhdGUgPSB7XHJcbiAgICBzdGF0dXM6IDEsXHJcbiAgICBmaWxlOiBudWxsLFxyXG4gICAgY3VycmVudFN0ZXA6IDEsXHJcbiAgICByZXF1ZXN0U3RhdHVzOiBcIlwiLFxyXG4gICAgZXJyb3JMaXN0OiBbXSxcclxuICAgIHdhcm5MaXN0OiBbXSxcclxuICAgIGJ1dHRvbkxvYWRpbmc6IGZhbHNlLFxyXG4gIH07XHJcbiAgbW9kYWxSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIGZpbGVTaXplS2IobnVtYmVyID0gMCkge1xyXG4gICAgcmV0dXJuIChudW1iZXIgLyAxMDI0KS50b0ZpeGVkKDIpO1xyXG4gIH1cclxuICBzaG93KCkge1xyXG4gICAgdGhpcy5tb2RhbFJlZi5jdXJyZW50Py5zaG93KCk7XHJcbiAgfVxyXG4gIGhpZGUoKSB7XHJcbiAgICB0aGlzLm1vZGFsUmVmLmN1cnJlbnQ/LmhpZGUoKTtcclxuICAgIHRoaXMucmVzZXREYXRhKCk7XHJcbiAgfVxyXG4gIGltcG9ydERhdGEoZmlsZSwgaXNPdmVyd3JpdGUpIHtcclxuICAgIGNvbnN0IHsgcmVxdWVzdENvbmZpZyA9IHt9LCBpbXBvcnRVcmwsIG9uQ2FsbEJhY2tzID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgeyBkYXRhID0ge30sIC4uLmNvbmZpZyB9ID0gcmVxdWVzdENvbmZpZztcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBidXR0b25Mb2FkaW5nOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICAvLyBsZXQgZm9ybURhdGEgPSB7Li4uZGF0YX1cclxuXHJcbiAgICBuc2NGaWxlXHJcbiAgICAgIC5pbXBvcnRGaWxlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHVybDogaW1wb3J0VXJsLFxyXG4gICAgICAgICAgZGF0YTogeyAuLi5kYXRhLCBpc092ZXJ3cml0ZTogaXNPdmVyd3JpdGUgfSxcclxuICAgICAgICAgIGZpbGU6IGZpbGUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb25maWdcclxuICAgICAgKVxyXG4gICAgICAudGhlbigocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIGJ1dHRvbkxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChyZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIC8vIG1lc3NhZ2Uuc3VjY2VzcyhcIuWvvOWFpeaIkOWKn++8gVwiKTtcclxuICAgICAgICAgIGlmIChyZXMuZGF0YT8ud2FybmluZ3M/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgcmVxdWVzdFN0YXR1czogXCJ3YXJuaW5nXCIsXHJcbiAgICAgICAgICAgICAgd2Fybkxpc3Q6IHJlcy5kYXRhLndhcm5pbmdzLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAocmVzLmRhdGE/LmVycm9ycz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAvLyBtZXNzYWdlLnN1Y2Nlc3MoXCLlr7zlhaXlpLHotKXvvIFcIik7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgIHJlcXVlc3RTdGF0dXM6IFwiZXJyb3JcIixcclxuICAgICAgICAgICAgICBlcnJvckxpc3Q6IHJlcy5kYXRhLmVycm9ycyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBtZXNzYWdlLnN1Y2Nlc3MoKGZpbGU/Lm5hbWUgfHwgXCJcIikgKyBcIuWvvOWFpeaIkOWKn++8gVwiKTtcclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgcmVxdWVzdFN0YXR1czogXCJzdWNjZXNzXCIsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgb25DYWxsQmFja3M/LmltcG9ydENhbGxCYWNrICYmIG9uQ2FsbEJhY2tzPy5pbXBvcnRDYWxsQmFjayhyZXMpO1xyXG4gICAgICAgICAgLy8gdGhpcy5oaWRlKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICFyZXMubXNnICYmIG1lc3NhZ2UuZXJyb3IoXCLlr7zlhaXlpLHotKXvvIFcIik7XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgcmVxdWVzdFN0YXR1czogXCJlcnJvclwiLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgcmVuZGVyRXJyb3JDb250ZW50KGxpc3QpIHtcclxuICAgIHJldHVybiBsaXN0Lm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuc3RhdGUucmVxdWVzdFN0YXR1cyA9PSBcIndhcm5pbmdcIikge1xyXG4gICAgICAgIHJldHVybiB0eXBlb2YgaXRlbSA9PSBcInN0cmluZ1wiID8gKFxyXG4gICAgICAgICAgPGRpdiBrZXk9e2luZGV4fT57aXRlbX08L2Rpdj5cclxuICAgICAgICApIDogKFxyXG4gICAgICAgICAgPGRpdiBrZXk9e2luZGV4fT57XCLnrKxcIiArIGl0ZW0ucm93TnVtICsgXCLooYzmlbDmja7ph43lpI3vvJtcIn08L2Rpdj5cclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB0eXBlb2YgaXRlbSA9PSBcInN0cmluZ1wiID8gKFxyXG4gICAgICAgICAgPGRpdiBrZXk9e2luZGV4fT57aXRlbX08L2Rpdj5cclxuICAgICAgICApIDogKFxyXG4gICAgICAgICAgPGRpdiBrZXk9e2luZGV4fT57aXRlbS5lcnJvck1zZ308L2Rpdj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgcmVuZGVyUmVzdWx0KCkge1xyXG4gICAgY29uc3QgeyByZXF1ZXN0U3RhdHVzLCBlcnJvckxpc3QsIHdhcm5MaXN0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgYWxlcnRfbXNnX21hcCA9IHtcclxuICAgICAgc3VjY2VzczogXCLlr7zlhaXmiJDlip9cIixcclxuICAgICAgZXJyb3I6IFwi5a+85YWl5aSx6LSlXCIsXHJcbiAgICAgIHdhcm5pbmc6IFwi5ZGK6K2m5o+Q56S6XCIsXHJcbiAgICB9O1xyXG4gICAgaWYgKHJlcXVlc3RTdGF0dXMpIHtcclxuICAgICAgaWYgKHJlcXVlc3RTdGF0dXMgPT0gXCJzdWNjZXNzXCIpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPEFsZXJ0XHJcbiAgICAgICAgICAgIHN0eWxlPXt7IG1hcmdpblRvcDogXCI4cHhcIiB9fVxyXG4gICAgICAgICAgICBtZXNzYWdlPXthbGVydF9tc2dfbWFwW3JlcXVlc3RTdGF0dXNdID8/IFwi5o+Q56S6XCJ9XHJcbiAgICAgICAgICAgIHR5cGU9e1wic3VjY2Vzc1wifVxyXG4gICAgICAgICAgICBzaG93SWNvblxyXG4gICAgICAgICAgLz5cclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8Q29sbGFwc2VcclxuICAgICAgICAgICAgZXhwYW5kSWNvblBvc2l0aW9uPVwicmlnaHRcIlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e1xyXG4gICAgICAgICAgICAgIHJlcXVlc3RTdGF0dXMgPT0gXCJ3YXJuaW5nXCIgPyBcImNvbnRlbnQtd2FybmluZ1wiIDogXCJjb250ZW50LWVycm9yXCJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjpcclxuICAgICAgICAgICAgICAgIHJlcXVlc3RTdGF0dXMgPT0gXCJ3YXJuaW5nXCIgPyBcIiNGQ0UxQUJcIiA6IFwiI2ZmZjJmMFwiLFxyXG4gICAgICAgICAgICAgIGJvcmRlcjpcclxuICAgICAgICAgICAgICAgIHJlcXVlc3RTdGF0dXMgPT0gXCJ3YXJuaW5nXCJcclxuICAgICAgICAgICAgICAgICAgPyBcIjFweCBzb2xpZCAjRkNFMUFCXCJcclxuICAgICAgICAgICAgICAgICAgOiBcIjFweCBzb2xpZCAjRkZDQ0M3XCIsXHJcbiAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBcIjJweFwiLFxyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICBkZWZhdWx0QWN0aXZlS2V5PXtbXCIxXCJdfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8Q29sbGFwc2UuUGFuZWxcclxuICAgICAgICAgICAgICBrZXk9XCIxXCJcclxuICAgICAgICAgICAgICBoZWFkZXI9e1xyXG4gICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHJlcXVlc3RTdGF0dXMgPT0gXCJ3YXJuaW5nXCIgPyBcIiNGQUFEMTRcIiA6IFwiI2Y2MFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICB7cmVxdWVzdFN0YXR1cyA9PSBcIndhcm5pbmdcIiA/IChcclxuICAgICAgICAgICAgICAgICAgICAgIDxFeGNsYW1hdGlvbkNpcmNsZU91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgICAgIDxDbG9zZUNpcmNsZU91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICB7YWxlcnRfbXNnX21hcFtyZXF1ZXN0U3RhdHVzXX1cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGV4dHJhPXtcclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IHJlcXVlc3RTdGF0dXMgPT0gXCJ3YXJuaW5nXCIgPyBcIiNGQUFEMTRcIiA6IFwiI2Y2MFwiLFxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICB7cmVxdWVzdFN0YXR1cyA9PSBcIndhcm5pbmdcIiA/IFwi5p+l55yLXCIgOiBcIuafpeeci+mUmeivr1wifVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6XHJcbiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdFN0YXR1cyA9PSBcIndhcm5pbmdcIiA/IFwiI0ZGRkRGNlwiIDogXCIjZmZmOWY5XCIsXHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiY29udGVudC1lcnJvcl9fbXNnXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7dGhpcy5yZW5kZXJFcnJvckNvbnRlbnQoXHJcbiAgICAgICAgICAgICAgICAgIHJlcXVlc3RTdGF0dXMgPT0gXCJ3YXJuaW5nXCIgPyB3YXJuTGlzdCA6IGVycm9yTGlzdFxyXG4gICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9Db2xsYXBzZS5QYW5lbD5cclxuICAgICAgICAgIDwvQ29sbGFwc2U+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICByZXNldERhdGEoKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc3RhdHVzOiAxLFxyXG4gICAgICBmaWxlOiBudWxsLFxyXG4gICAgICBjdXJyZW50U3RlcDogMSxcclxuICAgICAgcmVxdWVzdFN0YXR1czogXCJcIixcclxuICAgICAgZXJyb3JMaXN0OiBbXSxcclxuICAgICAgd2Fybkxpc3Q6IFtdLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IHsgZmlsZSwgc3RhdHVzLCBjdXJyZW50U3RlcCwgcmVxdWVzdFN0YXR1cyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHtcclxuICAgICAgZG93bkxvYWRUZW1wbGV0LFxyXG4gICAgICBkb3duVGVtcGxldFVybCxcclxuICAgICAgY2hlY2tEYXRhLFxyXG4gICAgICBjaGVja1VybCxcclxuICAgICAgcmVxdWVzdENvbmZpZyxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgZm9vdGVyID0gKFxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZvb3RlclwiPlxyXG4gICAgICAgIDxOU0NCdXR0b25cclxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5oaWRlKCk7XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgID5cclxuICAgICAgICAgIOWPlua2iFxyXG4gICAgICAgIDwvTlNDQnV0dG9uPlxyXG5cclxuICAgICAgICB7c3RhdHVzID09IDEgJiYgdGhpcy5zdGF0ZS5maWxlICYmIChcclxuICAgICAgICAgIDxOU0NCdXR0b25cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgc3RhdHVzOiAyLFxyXG4gICAgICAgICAgICAgICAgY3VycmVudFN0ZXA6IDEsXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgaWYgKGNoZWNrRGF0YSkge1xyXG4gICAgICAgICAgICAgICAgbnNjRmlsZVxyXG4gICAgICAgICAgICAgICAgICAuaW1wb3J0RmlsZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBjaGVja1VybCxcclxuICAgICAgICAgICAgICAgICAgICBmaWxlOiBmaWxlLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IHJlcXVlc3RDb25maWc/LmRhdGEgfHwge30sXHJcbiAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgIC50aGVuKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLmRhdGEuZXJyb3JDb3VudCA9PSAwICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5kYXRhLmR1cGxpY2F0ZUNvdW50ID09IDBcclxuICAgICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RlcDogMixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0U3RhdHVzOiBcInN1Y2Nlc3NcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW1wb3J0RGF0YShmaWxlLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5lcnJvckNvdW50ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0U3RhdHVzOiBcImVycm9yXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JMaXN0OiByZXMuZGF0YS5lcnJvckxpc3QsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEuZHVwbGljYXRlQ291bnQgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RTdGF0dXM6IFwid2FybmluZ1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5MaXN0OiByZXMuZGF0YS5kdXBsaWNhdGVMaXN0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaW1wb3J0RGF0YShmaWxlLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICBkaXNhYmxlZD17ZmlsZSA/IGZhbHNlIDogdHJ1ZX1cclxuICAgICAgICAgICAgaWNvbj17PFVwbG9hZE91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICBzdHlsZT17eyBtYXJnaW5MZWZ0OiAyMCB9fVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICDlvIDlp4vkuIrkvKBcclxuICAgICAgICAgIDwvTlNDQnV0dG9uPlxyXG4gICAgICAgICl9XHJcbiAgICAgICAge3N0YXR1cyA9PSAyICYmIHRoaXMucHJvcHMuY2hlY2tEYXRhICE9PSB0cnVlICYmIChcclxuICAgICAgICAgIDxOU0NCdXR0b25cclxuICAgICAgICAgICAgdHlwZT1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICBzdHlsZT17eyBtYXJnaW5MZWZ0OiAyMCB9fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICBmaWxlOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgc3RhdHVzOiAxLFxyXG4gICAgICAgICAgICAgICAgY3VycmVudFN0ZXA6IDEsXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtyZXF1ZXN0U3RhdHVzID09IFwic3VjY2Vzc1wiID8gXCLnu6fnu63kuIrkvKBcIiA6IFwi6YeN5paw5LiK5LygXCJ9XHJcbiAgICAgICAgICA8L05TQ0J1dHRvbj5cclxuICAgICAgICApfVxyXG4gICAgICAgIHtyZXF1ZXN0U3RhdHVzID09IFwid2FybmluZ1wiICYmIHN0YXR1cyA9PSAyICYmIHRoaXMucHJvcHMuY2hlY2tEYXRhICYmIChcclxuICAgICAgICAgIDxOU0NCdXR0b25cclxuICAgICAgICAgICAgdHlwZT1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICBzdHlsZT17eyBtYXJnaW5MZWZ0OiAyMCB9fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5pbXBvcnREYXRhKHRoaXMuc3RhdGUuZmlsZSwgZmFsc2UpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICBkaXNhYmxlZD17dGhpcy5zdGF0ZS5idXR0b25Mb2FkaW5nfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICDkuI3opobnm5bmlbDmja5cclxuICAgICAgICAgIDwvTlNDQnV0dG9uPlxyXG4gICAgICAgICl9XHJcbiAgICAgICAge3JlcXVlc3RTdGF0dXMgPT0gXCJ3YXJuaW5nXCIgJiYgc3RhdHVzID09IDIgJiYgdGhpcy5wcm9wcy5jaGVja0RhdGEgJiYgKFxyXG4gICAgICAgICAgPE5TQ0J1dHRvblxyXG4gICAgICAgICAgICB0eXBlPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgIHN0eWxlPXt7IG1hcmdpbkxlZnQ6IDIwIH19XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmltcG9ydERhdGEodGhpcy5zdGF0ZS5maWxlLCB0cnVlKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgZGlzYWJsZWQ9e3RoaXMuc3RhdGUuYnV0dG9uTG9hZGluZ31cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg6KaG55uW5pWw5o2uXHJcbiAgICAgICAgICA8L05TQ0J1dHRvbj5cclxuICAgICAgICApfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdj5cclxuICAgICAgICB7dGhpcy5wcm9wcy5jaGlsZHJlbiA/IChcclxuICAgICAgICAgIHRoaXMucHJvcHMuY2hpbGRyZW5cclxuICAgICAgICApIDogKFxyXG4gICAgICAgICAgPD5cclxuICAgICAgICAgICAge3RoaXMucHJvcHMuc2hvd0J1dHRvbiAmJiAoXHJcbiAgICAgICAgICAgICAgPE5TQ0J1dHRvblxyXG4gICAgICAgICAgICAgICAgdHlwZT1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNob3coKTtcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAg5pWw5o2u5a+85YWlXHJcbiAgICAgICAgICAgICAgPC9OU0NCdXR0b24+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICA8Lz5cclxuICAgICAgICApfVxyXG5cclxuICAgICAgICA8TnNjTW9kYWxcclxuICAgICAgICAgIHRpdGxlPVwi5pWw5o2u5a+85YWlXCJcclxuICAgICAgICAgIHdpZHRoPXs4MDB9XHJcbiAgICAgICAgICB3cmFwQ2xhc3NOYW1lPXtcImltcG9ydC1tb2RhbFwifVxyXG4gICAgICAgICAgcmVmPXt0aGlzLm1vZGFsUmVmfVxyXG4gICAgICAgICAgZm9vdGVyPXtmb290ZXJ9XHJcbiAgICAgICAgICBvbkNhbmNlbD17KCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmhpZGUoKTtcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb250ZW50XCI+XHJcbiAgICAgICAgICAgIHtzdGF0dXMgPT0gMSA/IChcclxuICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiBcImZsZXhcIiB9fT5cclxuICAgICAgICAgICAgICAgICAgPE5zY1VwbG9hZFxyXG4gICAgICAgICAgICAgICAgICAgIGJlZm9yZVVwbG9hZD17KGZpbGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICBhbGxvd0ZpbGVTdWZmaXg9e1tcInhsc1wiLCBcInhsc3hcIl19XHJcbiAgICAgICAgICAgICAgICAgICAgYWNjZXB0PXtcIi54bHMsLnhsc3hcIn1cclxuICAgICAgICAgICAgICAgICAgICBzaG93VXBsb2FkTGlzdD17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8TlNDQnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtmaWxlID8gdHJ1ZSA6IGZhbHNlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgaWNvbj17PEZvbGRlck91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIOmAieaLqeaWh+S7tlxyXG4gICAgICAgICAgICAgICAgICAgIDwvTlNDQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L05zY1VwbG9hZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgIHtkb3duTG9hZFRlbXBsZXQgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgIDxOc2NEb3duTG9hZCB1cmw9e2Rvd25UZW1wbGV0VXJsfT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxOU0NCdXR0b24gdHlwZT1cInByaW1hcnlcIiBzdHlsZT17eyBtYXJnaW5MZWZ0OiAyMCB9fT5cclxuICAgICAgICAgICAgICAgICAgICAgICAg5qih5p2/5LiL6L29XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L05TQ0J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L05zY0Rvd25Mb2FkPlxyXG4gICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInVwbG9hZC10aXBcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ1cGxvYWQtdGlwLWxlZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8RXhjbGFtYXRpb25DaXJjbGVPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ1cGxvYWQtdGlwLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgMeOAgeaUr+aMgUV4Y2VsIDIwMDflj4rku6XkuIrniYjmnKzvvIzkuJTmr4/mrKHlj6rog73kuIrkvKDkuIDkuKrmlofku7bvvJtcclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PjLjgIHlr7zlhaXliY3lhYjkuIvovb3mqKHmnb/vvIzlubbmoLnmja7mqKHmnb/loavlhpnmlbDmja7vvJs8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICB7ZmlsZSAmJiAoXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidXBsb2FkLWZpbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpbGUtaWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPEZpbGVJY29uIHR5cGU9XCJleGNlbFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWxlLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmlsZS10aXRsZVwiPntmaWxlLm5hbWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpbGUtZGVzY1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICDmlofku7blpKflsI/vvJp7dGhpcy5maWxlU2l6ZUtiKGZpbGUuc2l6ZSkgKyBcIktCXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZpbGUtZGVsZXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDxEZWxldGVPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxTdGVwc1xyXG4gICAgICAgICAgICAgICAgICBjdXJyZW50PXtjdXJyZW50U3RlcH1cclxuICAgICAgICAgICAgICAgICAgaXRlbXM9e1tcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXCLmlbDmja7liIbmnpBcIixcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcIuaVsOaNruaPkuWFpVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIF19XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e1wicmVzdWx0LWNvbnRlbnRcIn0+e3RoaXMucmVuZGVyUmVzdWx0KCl9PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L05zY01vZGFsPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IE5zY0ltcG9ydERhdGE7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBT0EsS0FBSyxNQUFNLE9BQU87QUFDekIsT0FBTyxjQUFjO0FBQ3JCLE9BQU9DLFNBQVMsTUFBTSxXQUFXO0FBQ2pDLE9BQU9DLFNBQVMsTUFBTSxXQUFXO0FBQ2pDLE9BQU9DLFdBQVcsTUFBTSxhQUFhO0FBQ3JDLE9BQU9DLFFBQVEsTUFBTSxVQUFVO0FBQy9CLE9BQU9DLFFBQVEsTUFBTSxvQkFBb0I7QUFDekMsU0FDRUMsY0FBYyxFQUNkQyxjQUFjLEVBQ2RDLG1CQUFtQixFQUNuQkMseUJBQXlCLFFBQ3BCLG1CQUFtQjtBQUMxQixPQUFPQyxLQUFLLE1BQU0sVUFBVTtBQUM1QixPQUFPQyxPQUFPLE1BQU0sVUFBVTtBQUU5QixPQUFPQyxLQUFLLE1BQU0sVUFBVTtBQUM1QixPQUFPQyxRQUFRLE1BQU0sYUFBYTtBQUVsQyxTQUFTQyxjQUFjLFFBQVEsbUJBQW1CO0FBaUJsRCxNQUFNQyxhQUFhLFNBQVNmLEtBQUssQ0FBQ2dCLGFBQWEsQ0FBb0I7RUFBQUMsWUFBQTtJQUFBLFNBQUFDLFNBQUE7SUFBQUMsZUFBQSxnQkFD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
|
|
379
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIk5zY1VwbG9hZCIsIk5TQ0J1dHRvbiIsIk5zY0Rvd25Mb2FkIiwiTnNjTW9kYWwiLCJGaWxlSWNvbiIsIlVwbG9hZE91dGxpbmVkIiwiRm9sZGVyT3V0bGluZWQiLCJDbG9zZUNpcmNsZU91dGxpbmVkIiwiRXhjbGFtYXRpb25DaXJjbGVPdXRsaW5lZCIsIlN0ZXBzIiwibnNjRmlsZSIsIkFsZXJ0IiwiQ29sbGFwc2UiLCJEZWxldGVPdXRsaW5lZCIsIk5zY0ltcG9ydERhdGEiLCJQdXJlQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJhcmd1bWVudHMiLCJfZGVmaW5lUHJvcGVydHkiLCJzdGF0dXMiLCJmaWxlIiwiY3VycmVudFN0ZXAiLCJyZXF1ZXN0U3RhdHVzIiwiZXJyb3JMaXN0Iiwid2Fybkxpc3QiLCJidXR0b25Mb2FkaW5nIiwiY3JlYXRlUmVmIiwiZmlsZVNpemVLYiIsIm51bWJlciIsImxlbmd0aCIsInVuZGVmaW5lZCIsInRvRml4ZWQiLCJzaG93IiwiX3RoaXMkbW9kYWxSZWYkY3VycmVuIiwibW9kYWxSZWYiLCJjdXJyZW50IiwiaGlkZSIsIl90aGlzJG1vZGFsUmVmJGN1cnJlbjIiLCJyZXNldERhdGEiLCJpbXBvcnREYXRhIiwiaXNPdmVyd3JpdGUiLCJyZXF1ZXN0Q29uZmlnIiwiaW1wb3J0VXJsIiwib25DYWxsQmFja3MiLCJwcm9wcyIsImRhdGEiLCJjb25maWciLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJzZXRTdGF0ZSIsImltcG9ydEZpbGUiLCJ1cmwiLCJfb2JqZWN0U3ByZWFkIiwidGhlbiIsInJlcyIsImNvZGUiLCJzaG93UmVzdWx0IiwibXNnTGlzdCIsIl9yZXMkZGF0YSIsIl9yZXMkZGF0YTIiLCJ3YXJuaW5ncyIsImVycm9ycyIsIl9tZXNzYWdlIiwic3VjY2VzcyIsIm5hbWUiLCJpbXBvcnRDYWxsQmFjayIsIm1zZyIsImVycm9yIiwicmVuZGVyRXJyb3JDb250ZW50IiwibGlzdCIsIm1hcCIsIml0ZW0iLCJpbmRleCIsInN0YXRlIiwiY3JlYXRlRWxlbWVudCIsImtleSIsInJvd051bSIsImVycm9yTXNnIiwicmVuZGVyUmVzdWx0IiwiYWxlcnRfbXNnX21hcCIsIndhcm5pbmciLCJfYWxlcnRfbXNnX21hcCRyZXF1ZXMiLCJzdHlsZSIsIm1hcmdpblRvcCIsIm1lc3NhZ2UiLCJ0eXBlIiwic2hvd0ljb24iLCJleHBhbmRJY29uUG9zaXRpb24iLCJjbGFzc05hbWUiLCJiYWNrZ3JvdW5kQ29sb3IiLCJib3JkZXIiLCJib3JkZXJSYWRpdXMiLCJkZWZhdWx0QWN0aXZlS2V5IiwiUGFuZWwiLCJoZWFkZXIiLCJjb2xvciIsImV4dHJhIiwiYmFja2dyb3VuZCIsInJlbmRlciIsImRvd25Mb2FkVGVtcGxldCIsImRvd25UZW1wbGV0VXJsIiwiY2hlY2tEYXRhIiwiY2hlY2tVcmwiLCJidXR0b25UZXh0IiwiZm9vdGVyIiwib25DbGljayIsImVycm9yQ291bnQiLCJkdXBsaWNhdGVDb3VudCIsImR1cGxpY2F0ZUxpc3QiLCJkaXNhYmxlZCIsImljb24iLCJtYXJnaW5MZWZ0IiwiY2hpbGRyZW4iLCJGcmFnbWVudCIsInNob3dCdXR0b24iLCJ0aXRsZSIsIndpZHRoIiwid3JhcENsYXNzTmFtZSIsInJlZiIsIm9uQ2FuY2VsIiwiZGlzcGxheSIsImJlZm9yZVVwbG9hZCIsImFsbG93RmlsZVN1ZmZpeCIsImFjY2VwdCIsInNob3dVcGxvYWRMaXN0Iiwic2l6ZSIsIml0ZW1zIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYmFzZS9pbXBvcnREYXRhL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubGVzc1wiO1xyXG5pbXBvcnQgTnNjVXBsb2FkIGZyb20gXCIuLi91cGxvYWRcIjtcclxuaW1wb3J0IE5TQ0J1dHRvbiBmcm9tIFwiLi4vYnV0dG9uXCI7XHJcbmltcG9ydCBOc2NEb3duTG9hZCBmcm9tIFwiLi4vZG93bmxvYWRcIjtcclxuaW1wb3J0IE5zY01vZGFsIGZyb20gXCIuLi9tb2RhbFwiO1xyXG5pbXBvcnQgRmlsZUljb24gZnJvbSBcIi4uL2NvbW1vbi9GaWxlSWNvblwiO1xyXG5pbXBvcnQge1xyXG4gIFVwbG9hZE91dGxpbmVkLFxyXG4gIEZvbGRlck91dGxpbmVkLFxyXG4gIENsb3NlQ2lyY2xlT3V0bGluZWQsXHJcbiAgRXhjbGFtYXRpb25DaXJjbGVPdXRsaW5lZCxcclxufSBmcm9tIFwiQGFudC1kZXNpZ24vaWNvbnNcIjtcclxuaW1wb3J0IFN0ZXBzIGZyb20gXCIuLi9zdGVwc1wiO1xyXG5pbXBvcnQgbnNjRmlsZSBmcm9tIFwibnNjLWZpbGVcIjtcclxuaW1wb3J0IHsgbWVzc2FnZSB9IGZyb20gXCJhbnRkXCI7XHJcbmltcG9ydCBBbGVydCBmcm9tIFwiLi4vYWxlcnRcIjtcclxuaW1wb3J0IENvbGxhcHNlIGZyb20gXCIuLi9jb2xsYXBzZVwiO1xyXG5pbXBvcnQgSWNvbiBmcm9tIFwiLi4vY29tbW9uL0ljb25cIjtcclxuaW1wb3J0IHsgRGVsZXRlT3V0bGluZWQgfSBmcm9tIFwiQGFudC1kZXNpZ24vaWNvbnNcIjtcclxuXHJcbmludGVyZmFjZSBJbXBvcnRQcm9wb3Mge1xyXG4gIGNoZWNrRGF0YT86IGJvb2xlYW47IC8v5piv5ZCm6L+b6KGM5pWw5o2u5qCh6aqM77yM6buY6K6kZmFsc2VcclxuICBjaGVja1VybD86IHN0cmluZzsgLy/mlbDmja7moKHpqozmjqXlj6PlnLDlnYBcclxuICBpbXBvcnRVcmw6IHN0cmluZzsgLy/mlbDmja7lr7zlhaXlnLDlnYBcclxuICByZXF1ZXN0Q29uZmlnPzogYW55O1xyXG4gIGRvd25Mb2FkVGVtcGxldD86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65LiL6L295qih5p2/5oyJ6ZKuXHJcbiAgZG93blRlbXBsZXRVcmw/OiBzdHJpbmc7IC8v5LiL6L295qih5p2/5Zyw5Z2AXHJcbiAgb25DYWxsQmFja3M/OiB7XHJcbiAgICBzaG93UmVzdWx0PzogYW55OyAvL+aVsOaNruagoemqjOWbnuiwg1xyXG4gICAgaW1wb3J0Q2FsbEJhY2s/OiBhbnk7IC8v5pWw5o2u5a+85YWl5Zue6LCDXHJcbiAgICBjbG9zZUNhbGxCYWNrPzogYW55O1xyXG4gICAgLy8gYmVmb3JlUmVxdWVzdD86IGFueTsgLy8g57uT5p6c5pi+56S65YmN5Zue6LCD77yM6Ieq5a6a5LmJ57uT5p6c5pi+56S657G75Z6L77yMcmV0dXJuIHtzdGF0dXMsbXNnTGlzdH1cclxuICB9O1xyXG4gIHNob3dCdXR0b24/OiBib29sZWFuO1xyXG4gIGJ1dHRvblRleHQ/OiBzdHJpbmc7XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmNsYXNzIE5zY0ltcG9ydERhdGEgZXh0ZW5kcyBSZWFjdC5QdXJlQ29tcG9uZW50PEltcG9ydFByb3BvcywgYW55PiB7XHJcbiAgc3RhdGUgPSB7XHJcbiAgICBzdGF0dXM6IDEsXHJcbiAgICBmaWxlOiBudWxsLFxyXG4gICAgY3VycmVudFN0ZXA6IDEsXHJcbiAgICByZXF1ZXN0U3RhdHVzOiBcIlwiLFxyXG4gICAgZXJyb3JMaXN0OiBbXSxcclxuICAgIHdhcm5MaXN0OiBbXSxcclxuICAgIGJ1dHRvbkxvYWRpbmc6IGZhbHNlLFxyXG4gIH07XHJcbiAgbW9kYWxSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIGZpbGVTaXplS2IobnVtYmVyID0gMCkge1xyXG4gICAgcmV0dXJuIChudW1iZXIgLyAxMDI0KS50b0ZpeGVkKDIpO1xyXG4gIH1cclxuICBzaG93KCkge1xyXG4gICAgdGhpcy5tb2RhbFJlZi5jdXJyZW50Py5zaG93KCk7XHJcbiAgfVxyXG4gIGhpZGUoKSB7XHJcbiAgICB0aGlzLm1vZGFsUmVmLmN1cnJlbnQ/LmhpZGUoKTtcclxuICAgIHRoaXMucmVzZXREYXRhKCk7XHJcbiAgfVxyXG4gIGltcG9ydERhdGEoZmlsZSwgaXNPdmVyd3JpdGUpIHtcclxuICAgIGNvbnN0IHsgcmVxdWVzdENvbmZpZyA9IHt9LCBpbXBvcnRVcmwsIG9uQ2FsbEJhY2tzID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgeyBkYXRhID0ge30sIC4uLmNvbmZpZyB9ID0gcmVxdWVzdENvbmZpZztcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBidXR0b25Mb2FkaW5nOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICAvLyBsZXQgZm9ybURhdGEgPSB7Li4uZGF0YX1cclxuXHJcbiAgICBuc2NGaWxlXHJcbiAgICAgIC5pbXBvcnRGaWxlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHVybDogaW1wb3J0VXJsLFxyXG4gICAgICAgICAgZGF0YTogeyAuLi5kYXRhLCBpc092ZXJ3cml0ZTogaXNPdmVyd3JpdGUgfSxcclxuICAgICAgICAgIGZpbGU6IGZpbGUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb25maWdcclxuICAgICAgKVxyXG4gICAgICAudGhlbihhc3luYyAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIGJ1dHRvbkxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChyZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIC8vIG1lc3NhZ2Uuc3VjY2VzcyhcIuWvvOWFpeaIkOWKn++8gVwiKTtcclxuICAgICAgICAgIGlmIChvbkNhbGxCYWNrcz8uc2hvd1Jlc3VsdCkge1xyXG4gICAgICAgICAgICBsZXQgZGF0YSA9IGF3YWl0IG9uQ2FsbEJhY2tzPy5zaG93UmVzdWx0KHJlcywgXCJpbXBvcnRcIik7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgIHJlcXVlc3RTdGF0dXM6IGRhdGEuc3RhdHVzLFxyXG4gICAgICAgICAgICAgIFtkYXRhLnN0YXR1cyA9PSBcIndhcm5pbmdcIiA/IFwid2Fybkxpc3RcIiA6IFwiZXJyb3JMaXN0XCJdOlxyXG4gICAgICAgICAgICAgICAgZGF0YS5tc2dMaXN0LFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChyZXMuZGF0YT8ud2FybmluZ3M/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgIHJlcXVlc3RTdGF0dXM6IFwid2FybmluZ1wiLFxyXG4gICAgICAgICAgICAgICAgd2Fybkxpc3Q6IHJlcy5kYXRhLndhcm5pbmdzLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlcy5kYXRhPy5lcnJvcnM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAvLyBtZXNzYWdlLnN1Y2Nlc3MoXCLlr7zlhaXlpLHotKXvvIFcIik7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICByZXF1ZXN0U3RhdHVzOiBcImVycm9yXCIsXHJcbiAgICAgICAgICAgICAgICBlcnJvckxpc3Q6IHJlcy5kYXRhLmVycm9ycyxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBtZXNzYWdlLnN1Y2Nlc3MoKGZpbGU/Lm5hbWUgfHwgXCJcIikgKyBcIuWvvOWFpeaIkOWKn++8gVwiKTtcclxuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgIHJlcXVlc3RTdGF0dXM6IFwic3VjY2Vzc1wiLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgb25DYWxsQmFja3M/LmltcG9ydENhbGxCYWNrICYmIG9uQ2FsbEJhY2tzPy5pbXBvcnRDYWxsQmFjayhyZXMpO1xyXG4gICAgICAgICAgLy8gdGhpcy5oaWRlKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICFyZXMubXNnICYmIG1lc3NhZ2UuZXJyb3IoXCLlr7zlhaXlpLHotKXvvIFcIik7XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgcmVxdWVzdFN0YXR1czogXCJlcnJvclwiLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgcmVuZGVyRXJyb3JDb250ZW50KGxpc3QpIHtcclxuICAgIHJldHVybiBsaXN0Lm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuc3RhdGUucmVxdWVzdFN0YXR1cyA9PSBcIndhcm5pbmdcIikge1xyXG4gICAgICAgIHJldHVybiB0eXBlb2YgaXRlbSA9PSBcInN0cmluZ1wiID8gKFxyXG4gICAgICAgICAgPGRpdiBrZXk9e2luZGV4fT57aXRlbX08L2Rpdj5cclxuICAgICAgICApIDogKFxyXG4gICAgICAgICAgPGRpdiBrZXk9e2luZGV4fT5cclxuICAgICAgICAgICAge1wi56ysXCIgKyBpdGVtLnJvd051bSArIFwi6KGM5pWw5o2u6YeN5aSN77ybXCIgKyBpdGVtLmVycm9yTXNnXHJcbiAgICAgICAgICAgICAgPyBpdGVtLmVycm9yTXNnXHJcbiAgICAgICAgICAgICAgOiBcIlwifVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIGl0ZW0gPT0gXCJzdHJpbmdcIiA/IChcclxuICAgICAgICAgIDxkaXYga2V5PXtpbmRleH0+e2l0ZW19PC9kaXY+XHJcbiAgICAgICAgKSA6IChcclxuICAgICAgICAgIDxkaXYga2V5PXtpbmRleH0+e2l0ZW0uZXJyb3JNc2d9PC9kaXY+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJlbmRlclJlc3VsdCgpIHtcclxuICAgIGNvbnN0IHsgcmVxdWVzdFN0YXR1cywgZXJyb3JMaXN0LCB3YXJuTGlzdCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IGFsZXJ0X21zZ19tYXAgPSB7XHJcbiAgICAgIHN1Y2Nlc3M6IFwi5a+85YWl5oiQ5YqfXCIsXHJcbiAgICAgIGVycm9yOiBcIuWvvOWFpeWksei0pVwiLFxyXG4gICAgICB3YXJuaW5nOiBcIuWRiuitpuaPkOekulwiLFxyXG4gICAgfTtcclxuICAgIGlmIChyZXF1ZXN0U3RhdHVzKSB7XHJcbiAgICAgIGlmIChyZXF1ZXN0U3RhdHVzID09IFwic3VjY2Vzc1wiKSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxBbGVydFxyXG4gICAgICAgICAgICBzdHlsZT17eyBtYXJnaW5Ub3A6IFwiOHB4XCIgfX1cclxuICAgICAgICAgICAgbWVzc2FnZT17YWxlcnRfbXNnX21hcFtyZXF1ZXN0U3RhdHVzXSA/PyBcIuaPkOekulwifVxyXG4gICAgICAgICAgICB0eXBlPXtcInN1Y2Nlc3NcIn1cclxuICAgICAgICAgICAgc2hvd0ljb25cclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPENvbGxhcHNlXHJcbiAgICAgICAgICAgIGV4cGFuZEljb25Qb3NpdGlvbj1cInJpZ2h0XCJcclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtcclxuICAgICAgICAgICAgICByZXF1ZXN0U3RhdHVzID09IFwid2FybmluZ1wiID8gXCJjb250ZW50LXdhcm5pbmdcIiA6IFwiY29udGVudC1lcnJvclwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6XHJcbiAgICAgICAgICAgICAgICByZXF1ZXN0U3RhdHVzID09IFwid2FybmluZ1wiID8gXCIjRkNFMUFCXCIgOiBcIiNmZmYyZjBcIixcclxuICAgICAgICAgICAgICBib3JkZXI6XHJcbiAgICAgICAgICAgICAgICByZXF1ZXN0U3RhdHVzID09IFwid2FybmluZ1wiXHJcbiAgICAgICAgICAgICAgICAgID8gXCIxcHggc29saWQgI0ZDRTFBQlwiXHJcbiAgICAgICAgICAgICAgICAgIDogXCIxcHggc29saWQgI0ZGQ0NDN1wiLFxyXG4gICAgICAgICAgICAgIGJvcmRlclJhZGl1czogXCIycHhcIixcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgZGVmYXVsdEFjdGl2ZUtleT17W1wiMVwiXX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPENvbGxhcHNlLlBhbmVsXHJcbiAgICAgICAgICAgICAga2V5PVwiMVwiXHJcbiAgICAgICAgICAgICAgaGVhZGVyPXtcclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiByZXF1ZXN0U3RhdHVzID09IFwid2FybmluZ1wiID8gXCIjRkFBRDE0XCIgOiBcIiNmNjBcIixcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAge3JlcXVlc3RTdGF0dXMgPT0gXCJ3YXJuaW5nXCIgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICA8RXhjbGFtYXRpb25DaXJjbGVPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICA8Q2xvc2VDaXJjbGVPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAge2FsZXJ0X21zZ19tYXBbcmVxdWVzdFN0YXR1c119XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBleHRyYT17XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiByZXF1ZXN0U3RhdHVzID09IFwid2FybmluZ1wiID8gXCIjRkFBRDE0XCIgOiBcIiNmNjBcIixcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAge3JlcXVlc3RTdGF0dXMgPT0gXCJ3YXJuaW5nXCIgPyBcIuafpeeci1wiIDogXCLmn6XnnIvplJnor69cIn1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOlxyXG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3RTdGF0dXMgPT0gXCJ3YXJuaW5nXCIgPyBcIiNGRkZERjZcIiA6IFwiI2ZmZjlmOVwiLFxyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImNvbnRlbnQtZXJyb3JfX21zZ1wiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge3RoaXMucmVuZGVyRXJyb3JDb250ZW50KFxyXG4gICAgICAgICAgICAgICAgICByZXF1ZXN0U3RhdHVzID09IFwid2FybmluZ1wiID8gd2Fybkxpc3QgOiBlcnJvckxpc3RcclxuICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvQ29sbGFwc2UuUGFuZWw+XHJcbiAgICAgICAgICA8L0NvbGxhcHNlPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgcmVzZXREYXRhKCkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHN0YXR1czogMSxcclxuICAgICAgZmlsZTogbnVsbCxcclxuICAgICAgY3VycmVudFN0ZXA6IDEsXHJcbiAgICAgIHJlcXVlc3RTdGF0dXM6IFwiXCIsXHJcbiAgICAgIGVycm9yTGlzdDogW10sXHJcbiAgICAgIHdhcm5MaXN0OiBbXSxcclxuICAgIH0pO1xyXG4gIH1cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7IGZpbGUsIHN0YXR1cywgY3VycmVudFN0ZXAsIHJlcXVlc3RTdGF0dXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGRvd25Mb2FkVGVtcGxldCxcclxuICAgICAgZG93blRlbXBsZXRVcmwsXHJcbiAgICAgIGNoZWNrRGF0YSxcclxuICAgICAgY2hlY2tVcmwsXHJcbiAgICAgIHJlcXVlc3RDb25maWcsXHJcbiAgICAgIGJ1dHRvblRleHQsXHJcbiAgICAgIG9uQ2FsbEJhY2tzLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBmb290ZXIgPSAoXHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZm9vdGVyXCI+XHJcbiAgICAgICAgPE5TQ0J1dHRvblxyXG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmhpZGUoKTtcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAg5Y+W5raIXHJcbiAgICAgICAgPC9OU0NCdXR0b24+XHJcblxyXG4gICAgICAgIHtzdGF0dXMgPT0gMSAmJiB0aGlzLnN0YXRlLmZpbGUgJiYgKFxyXG4gICAgICAgICAgPE5TQ0J1dHRvblxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICBzdGF0dXM6IDIsXHJcbiAgICAgICAgICAgICAgICBjdXJyZW50U3RlcDogMSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBpZiAoY2hlY2tEYXRhKSB7XHJcbiAgICAgICAgICAgICAgICBuc2NGaWxlXHJcbiAgICAgICAgICAgICAgICAgIC5pbXBvcnRGaWxlKHtcclxuICAgICAgICAgICAgICAgICAgICB1cmw6IGNoZWNrVXJsLFxyXG4gICAgICAgICAgICAgICAgICAgIGZpbGU6IGZpbGUsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogcmVxdWVzdENvbmZpZz8uZGF0YSB8fCB7fSxcclxuICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgLnRoZW4oYXN5bmMgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9uQ2FsbEJhY2tzPy5zaG93UmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IGF3YWl0IG9uQ2FsbEJhY2tzPy5zaG93UmVzdWx0KHJlcywgXCJwcmVDaGVja1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0U3RhdHVzOiBkYXRhLnN0YXR1cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGEuc3RhdHVzID09IFwid2FybmluZ1wiID8gXCJ3YXJuTGlzdFwiIDogXCJlcnJvckxpc3RcIl06XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5tc2dMaXN0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5kYXRhLmVycm9yQ291bnQgPT0gMCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5kYXRhLmR1cGxpY2F0ZUNvdW50ID09IDBcclxuICAgICAgICAgICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RlcDogMixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RTdGF0dXM6IFwic3VjY2Vzc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW1wb3J0RGF0YShmaWxlLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5lcnJvckNvdW50ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdFN0YXR1czogXCJlcnJvclwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JMaXN0OiByZXMuZGF0YS5lcnJvckxpc3QsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5kdXBsaWNhdGVDb3VudCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RTdGF0dXM6IFwid2FybmluZ1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Fybkxpc3Q6IHJlcy5kYXRhLmR1cGxpY2F0ZUxpc3QsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbXBvcnREYXRhKGZpbGUsIGZhbHNlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIGRpc2FibGVkPXtmaWxlID8gZmFsc2UgOiB0cnVlfVxyXG4gICAgICAgICAgICBpY29uPXs8VXBsb2FkT3V0bGluZWQgLz59XHJcbiAgICAgICAgICAgIHN0eWxlPXt7IG1hcmdpbkxlZnQ6IDIwIH19XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIOW8gOWni+S4iuS8oFxyXG4gICAgICAgICAgPC9OU0NCdXR0b24+XHJcbiAgICAgICAgKX1cclxuICAgICAgICB7c3RhdHVzID09IDIgJiYgdGhpcy5wcm9wcy5jaGVja0RhdGEgIT09IHRydWUgJiYgKFxyXG4gICAgICAgICAgPE5TQ0J1dHRvblxyXG4gICAgICAgICAgICB0eXBlPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgIHN0eWxlPXt7IG1hcmdpbkxlZnQ6IDIwIH19XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgIGZpbGU6IG51bGwsXHJcbiAgICAgICAgICAgICAgICBzdGF0dXM6IDEsXHJcbiAgICAgICAgICAgICAgICBjdXJyZW50U3RlcDogMSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3JlcXVlc3RTdGF0dXMgPT0gXCJzdWNjZXNzXCIgPyBcIue7p+e7reS4iuS8oFwiIDogXCLph43mlrDkuIrkvKBcIn1cclxuICAgICAgICAgIDwvTlNDQnV0dG9uPlxyXG4gICAgICAgICl9XHJcbiAgICAgICAge3JlcXVlc3RTdGF0dXMgPT0gXCJ3YXJuaW5nXCIgJiYgc3RhdHVzID09IDIgJiYgdGhpcy5wcm9wcy5jaGVja0RhdGEgJiYgKFxyXG4gICAgICAgICAgPE5TQ0J1dHRvblxyXG4gICAgICAgICAgICB0eXBlPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgIHN0eWxlPXt7IG1hcmdpbkxlZnQ6IDIwIH19XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmltcG9ydERhdGEodGhpcy5zdGF0ZS5maWxlLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIGRpc2FibGVkPXt0aGlzLnN0YXRlLmJ1dHRvbkxvYWRpbmd9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIOS4jeimhuebluaVsOaNrlxyXG4gICAgICAgICAgPC9OU0NCdXR0b24+XHJcbiAgICAgICAgKX1cclxuICAgICAgICB7cmVxdWVzdFN0YXR1cyA9PSBcIndhcm5pbmdcIiAmJiBzdGF0dXMgPT0gMiAmJiB0aGlzLnByb3BzLmNoZWNrRGF0YSAmJiAoXHJcbiAgICAgICAgICA8TlNDQnV0dG9uXHJcbiAgICAgICAgICAgIHR5cGU9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgc3R5bGU9e3sgbWFyZ2luTGVmdDogMjAgfX1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuaW1wb3J0RGF0YSh0aGlzLnN0YXRlLmZpbGUsIHRydWUpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICBkaXNhYmxlZD17dGhpcy5zdGF0ZS5idXR0b25Mb2FkaW5nfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICDopobnm5bmlbDmja5cclxuICAgICAgICAgIDwvTlNDQnV0dG9uPlxyXG4gICAgICAgICl9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIHt0aGlzLnByb3BzLmNoaWxkcmVuID8gKFxyXG4gICAgICAgICAgdGhpcy5wcm9wcy5jaGlsZHJlblxyXG4gICAgICAgICkgOiAoXHJcbiAgICAgICAgICA8PlxyXG4gICAgICAgICAgICB7dGhpcy5wcm9wcy5zaG93QnV0dG9uICYmIChcclxuICAgICAgICAgICAgICA8TlNDQnV0dG9uXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdygpO1xyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7YnV0dG9uVGV4dCB8fCBcIuaVsOaNruWvvOWFpVwifVxyXG4gICAgICAgICAgICAgIDwvTlNDQnV0dG9uPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgPC8+XHJcbiAgICAgICAgKX1cclxuXHJcbiAgICAgICAgPE5zY01vZGFsXHJcbiAgICAgICAgICB0aXRsZT17YnV0dG9uVGV4dCB8fCBcIuaVsOaNruWvvOWFpVwifVxyXG4gICAgICAgICAgd2lkdGg9ezgwMH1cclxuICAgICAgICAgIHdyYXBDbGFzc05hbWU9e1wiaW1wb3J0LW1vZGFsXCJ9XHJcbiAgICAgICAgICByZWY9e3RoaXMubW9kYWxSZWZ9XHJcbiAgICAgICAgICBmb290ZXI9e2Zvb3Rlcn1cclxuICAgICAgICAgIG9uQ2FuY2VsPXsoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xyXG4gICAgICAgICAgfX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRlbnRcIj5cclxuICAgICAgICAgICAge3N0YXR1cyA9PSAxID8gKFxyXG4gICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6IFwiZmxleFwiIH19PlxyXG4gICAgICAgICAgICAgICAgICA8TnNjVXBsb2FkXHJcbiAgICAgICAgICAgICAgICAgICAgYmVmb3JlVXBsb2FkPXsoZmlsZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgIGFsbG93RmlsZVN1ZmZpeD17W1wieGxzXCIsIFwieGxzeFwiXX1cclxuICAgICAgICAgICAgICAgICAgICBhY2NlcHQ9e1wiLnhscywueGxzeFwifVxyXG4gICAgICAgICAgICAgICAgICAgIHNob3dVcGxvYWRMaXN0PXtmYWxzZX1cclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxOU0NCdXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZpbGUgPyB0cnVlIDogZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAgICAgICBpY29uPXs8Rm9sZGVyT3V0bGluZWQgLz59XHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAg6YCJ5oup5paH5Lu2XHJcbiAgICAgICAgICAgICAgICAgICAgPC9OU0NCdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvTnNjVXBsb2FkPlxyXG5cclxuICAgICAgICAgICAgICAgICAge2Rvd25Mb2FkVGVtcGxldCAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPE5zY0Rvd25Mb2FkIHVybD17ZG93blRlbXBsZXRVcmx9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPE5TQ0J1dHRvbiB0eXBlPVwicHJpbWFyeVwiIHN0eWxlPXt7IG1hcmdpbkxlZnQ6IDIwIH19PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICDmqKHmnb/kuIvovb1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvTlNDQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvTnNjRG93bkxvYWQ+XHJcbiAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidXBsb2FkLXRpcFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInVwbG9hZC10aXAtbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxFeGNsYW1hdGlvbkNpcmNsZU91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInVwbG9hZC10aXAtY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAx44CB5pSv5oyBRXhjZWwgMjAwN+WPiuS7peS4iueJiOacrO+8jOS4lOavj+asoeWPquiDveS4iuS8oOS4gOS4quaWh+S7tu+8m1xyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+MuOAgeWvvOWFpeWJjeWFiOS4i+i9veaooeadv++8jOW5tuagueaNruaooeadv+Whq+WGmeaVsOaNru+8mzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIHtmaWxlICYmIChcclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ1cGxvYWQtZmlsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmlsZS1pY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8RmlsZUljb24gdHlwZT1cImV4Y2VsXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpbGUtY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWxlLXRpdGxlXCI+e2ZpbGUubmFtZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmlsZS1kZXNjXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIOaWh+S7tuWkp+Wwj++8mnt0aGlzLmZpbGVTaXplS2IoZmlsZS5zaXplKSArIFwiS0JcIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZmlsZS1kZWxldGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPERlbGV0ZU91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgPFN0ZXBzXHJcbiAgICAgICAgICAgICAgICAgIGN1cnJlbnQ9e2N1cnJlbnRTdGVwfVxyXG4gICAgICAgICAgICAgICAgICBpdGVtcz17W1xyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcIuaVsOaNruWIhuaekFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFwi5pWw5o2u5o+S5YWlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgXX1cclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17XCJyZXN1bHQtY29udGVudFwifT57dGhpcy5yZW5kZXJSZXN1bHQoKX08L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvTnNjTW9kYWw+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgTnNjSW1wb3J0RGF0YTtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFLLE1BQU0sT0FBTztBQUN6QixPQUFPLGNBQWM7QUFDckIsT0FBT0MsU0FBUyxNQUFNLFdBQVc7QUFDakMsT0FBT0MsU0FBUyxNQUFNLFdBQVc7QUFDakMs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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","NscUpload","NSCButton","NscDownLoad","NscModal","FileIcon","UploadOutlined","FolderOutlined","CloseCircleOutlined","ExclamationCircleOutlined","Steps","nscFile","Alert","Collapse","DeleteOutlined","NscImportData","PureComponent","constructor","arguments","_defineProperty","status","file","currentStep","requestStatus","errorList","warnList","buttonLoading","createRef","fileSizeKb","number","length","undefined","toFixed","show","_this$modalRef$curren","modalRef","current","hide","_this$modalRef$curren2","resetData","importData","isOverwrite","requestConfig","importUrl","onCallBacks","props","data","config","_objectWithoutProperties","_excluded","setState","importFile","url","_objectSpread","then","res","code","_res$data","_res$data2","warnings","errors","_message","success","name","importCallBack","msg","error","renderErrorContent","list","map","item","index","state","createElement","key","rowNum","errorMsg","renderResult","alert_msg_map","warning","_alert_msg_map$reques","style","marginTop","message","type","showIcon","expandIconPosition","className","backgroundColor","border","borderRadius","defaultActiveKey","Panel","header","color","extra","background","render","downLoadTemplet","downTempletUrl","checkData","checkUrl","footer","onClick","errorCount","duplicateCount","duplicateList","disabled","icon","marginLeft","children","Fragment","showButton","title","width","wrapClassName","ref","onCancel","display","beforeUpload","allowFileSuffix","accept","showUploadList","size","items"],"sources":["../../../src/components/base/importData/index.tsx"],"sourcesContent":["import React from \"react\";\r\nimport \"./index.less\";\r\nimport NscUpload from \"../upload\";\r\nimport NSCButton from \"../button\";\r\nimport NscDownLoad from \"../download\";\r\nimport NscModal from \"../modal\";\r\nimport FileIcon from \"../common/FileIcon\";\r\nimport {\r\n UploadOutlined,\r\n FolderOutlined,\r\n CloseCircleOutlined,\r\n ExclamationCircleOutlined,\r\n} from \"@ant-design/icons\";\r\nimport Steps from \"../steps\";\r\nimport nscFile from \"nsc-file\";\r\nimport { message } from \"antd\";\r\nimport Alert from \"../alert\";\r\nimport Collapse from \"../collapse\";\r\nimport Icon from \"../common/Icon\";\r\nimport { DeleteOutlined } from \"@ant-design/icons\";\r\n\r\ninterface ImportPropos {\r\n checkData?: boolean; //是否进行数据校验,默认false\r\n checkUrl?: string; //数据校验接口地址\r\n importUrl: string; //数据导入地址\r\n requestConfig?: any;\r\n downLoadTemplet?: boolean; //是否显示下载模板按钮\r\n downTempletUrl?: string; //下载模板地址\r\n onCallBacks?: {\r\n checkCallBack?: any; //数据校验回调\r\n importCallBack?: any; //数据导入回调\r\n closeCallBack?: any;\r\n };\r\n showButton?: boolean;\r\n [propsName: string]: any;\r\n}\r\nclass NscImportData extends React.PureComponent<ImportPropos, any> {\r\n state = {\r\n status: 1,\r\n file: null,\r\n currentStep: 1,\r\n requestStatus: \"\",\r\n errorList: [],\r\n warnList: [],\r\n buttonLoading: false,\r\n };\r\n modalRef = React.createRef<any>();\r\n fileSizeKb(number = 0) {\r\n return (number / 1024).toFixed(2);\r\n }\r\n show() {\r\n this.modalRef.current?.show();\r\n }\r\n hide() {\r\n this.modalRef.current?.hide();\r\n this.resetData();\r\n }\r\n importData(file, isOverwrite) {\r\n const { requestConfig = {}, importUrl, onCallBacks = {} } = this.props;\r\n let { data = {}, ...config } = requestConfig;\r\n this.setState({\r\n buttonLoading: true,\r\n });\r\n // let formData = {...data}\r\n\r\n nscFile\r\n .importFile(\r\n {\r\n url: importUrl,\r\n data: { ...data, isOverwrite: isOverwrite },\r\n file: file,\r\n },\r\n config\r\n )\r\n .then((res: any) => {\r\n this.setState({\r\n buttonLoading: false,\r\n });\r\n if (res.code == 200) {\r\n // message.success(\"导入成功!\");\r\n if (res.data?.warnings?.length > 0) {\r\n this.setState({\r\n requestStatus: \"warning\",\r\n warnList: res.data.warnings,\r\n });\r\n } else if (res.data?.errors?.length > 0) {\r\n // message.success(\"导入失败!\");\r\n this.setState({\r\n requestStatus: \"error\",\r\n errorList: res.data.errors,\r\n });\r\n } else {\r\n message.success((file?.name || \"\") + \"导入成功!\");\r\n this.setState({\r\n requestStatus: \"success\",\r\n });\r\n }\r\n onCallBacks?.importCallBack && onCallBacks?.importCallBack(res);\r\n // this.hide();\r\n } else {\r\n !res.msg && message.error(\"导入失败!\");\r\n this.setState({\r\n requestStatus: \"error\",\r\n });\r\n }\r\n });\r\n }\r\n renderErrorContent(list) {\r\n return list.map((item, index) => {\r\n if (this.state.requestStatus == \"warning\") {\r\n return typeof item == \"string\" ? (\r\n <div key={index}>{item}</div>\r\n ) : (\r\n <div key={index}>{\"第\" + item.rowNum + \"行数据重复;\"}</div>\r\n );\r\n } else {\r\n return typeof item == \"string\" ? (\r\n <div key={index}>{item}</div>\r\n ) : (\r\n <div key={index}>{item.errorMsg}</div>\r\n );\r\n }\r\n });\r\n }\r\n renderResult() {\r\n const { requestStatus, errorList, warnList } = this.state;\r\n const alert_msg_map = {\r\n success: \"导入成功\",\r\n error: \"导入失败\",\r\n warning: \"告警提示\",\r\n };\r\n if (requestStatus) {\r\n if (requestStatus == \"success\") {\r\n return (\r\n <Alert\r\n style={{ marginTop: \"8px\" }}\r\n message={alert_msg_map[requestStatus] ?? \"提示\"}\r\n type={\"success\"}\r\n showIcon\r\n />\r\n );\r\n } else {\r\n return (\r\n <Collapse\r\n expandIconPosition=\"right\"\r\n className={\r\n requestStatus == \"warning\" ? \"content-warning\" : \"content-error\"\r\n }\r\n style={{\r\n backgroundColor:\r\n requestStatus == \"warning\" ? \"#FCE1AB\" : \"#fff2f0\",\r\n border:\r\n requestStatus == \"warning\"\r\n ? \"1px solid #FCE1AB\"\r\n : \"1px solid #FFCCC7\",\r\n borderRadius: \"2px\",\r\n }}\r\n defaultActiveKey={[\"1\"]}\r\n >\r\n <Collapse.Panel\r\n key=\"1\"\r\n header={\r\n <div>\r\n <span\r\n style={{\r\n color: requestStatus == \"warning\" ? \"#FAAD14\" : \"#f60\",\r\n }}\r\n >\r\n {requestStatus == \"warning\" ? (\r\n <ExclamationCircleOutlined />\r\n ) : (\r\n <CloseCircleOutlined />\r\n )}\r\n {alert_msg_map[requestStatus]}\r\n </span>\r\n </div>\r\n }\r\n extra={\r\n <span\r\n style={{\r\n color: requestStatus == \"warning\" ? \"#FAAD14\" : \"#f60\",\r\n }}\r\n >\r\n {requestStatus == \"warning\" ? \"查看\" : \"查看错误\"}\r\n </span>\r\n }\r\n >\r\n <div\r\n style={{\r\n background:\r\n requestStatus == \"warning\" ? \"#FFFDF6\" : \"#fff9f9\",\r\n }}\r\n className=\"content-error__msg\"\r\n >\r\n {this.renderErrorContent(\r\n requestStatus == \"warning\" ? warnList : errorList\r\n )}\r\n </div>\r\n </Collapse.Panel>\r\n </Collapse>\r\n );\r\n }\r\n }\r\n }\r\n resetData() {\r\n this.setState({\r\n status: 1,\r\n file: null,\r\n currentStep: 1,\r\n requestStatus: \"\",\r\n errorList: [],\r\n warnList: [],\r\n });\r\n }\r\n render() {\r\n const { file, status, currentStep, requestStatus } = this.state;\r\n const {\r\n downLoadTemplet,\r\n downTempletUrl,\r\n checkData,\r\n checkUrl,\r\n requestConfig,\r\n } = this.props;\r\n const footer = (\r\n <div className=\"footer\">\r\n <NSCButton\r\n onClick={() => {\r\n this.hide();\r\n }}\r\n >\r\n 取消\r\n </NSCButton>\r\n\r\n {status == 1 && this.state.file && (\r\n <NSCButton\r\n onClick={() => {\r\n this.setState({\r\n status: 2,\r\n currentStep: 1,\r\n });\r\n if (checkData) {\r\n nscFile\r\n .importFile({\r\n url: checkUrl,\r\n file: file,\r\n data: requestConfig?.data || {},\r\n })\r\n .then((res: any) => {\r\n if (res.code == 200) {\r\n if (\r\n res.data.errorCount == 0 &&\r\n res.data.duplicateCount == 0\r\n ) {\r\n this.setState({\r\n currentStep: 2,\r\n requestStatus: \"success\",\r\n });\r\n this.importData(file, false);\r\n return;\r\n }\r\n if (res.data.errorCount > 0) {\r\n this.setState({\r\n requestStatus: \"error\",\r\n errorList: res.data.errorList,\r\n });\r\n return;\r\n }\r\n if (res.data.duplicateCount > 0) {\r\n this.setState({\r\n requestStatus: \"warning\",\r\n warnList: res.data.duplicateList,\r\n });\r\n return;\r\n }\r\n }\r\n });\r\n } else {\r\n this.importData(file, false);\r\n }\r\n }}\r\n disabled={file ? false : true}\r\n icon={<UploadOutlined />}\r\n style={{ marginLeft: 20 }}\r\n >\r\n 开始上传\r\n </NSCButton>\r\n )}\r\n {status == 2 && this.props.checkData !== true && (\r\n <NSCButton\r\n type=\"primary\"\r\n style={{ marginLeft: 20 }}\r\n onClick={() => {\r\n this.setState({\r\n file: null,\r\n status: 1,\r\n currentStep: 1,\r\n });\r\n }}\r\n >\r\n {requestStatus == \"success\" ? \"继续上传\" : \"重新上传\"}\r\n </NSCButton>\r\n )}\r\n {requestStatus == \"warning\" && status == 2 && this.props.checkData && (\r\n <NSCButton\r\n type=\"primary\"\r\n style={{ marginLeft: 20 }}\r\n onClick={() => {\r\n this.importData(this.state.file, false);\r\n }}\r\n disabled={this.state.buttonLoading}\r\n >\r\n 不覆盖数据\r\n </NSCButton>\r\n )}\r\n {requestStatus == \"warning\" && status == 2 && this.props.checkData && (\r\n <NSCButton\r\n type=\"primary\"\r\n style={{ marginLeft: 20 }}\r\n onClick={() => {\r\n this.importData(this.state.file, true);\r\n }}\r\n disabled={this.state.buttonLoading}\r\n >\r\n 覆盖数据\r\n </NSCButton>\r\n )}\r\n </div>\r\n );\r\n\r\n return (\r\n <div>\r\n {this.props.children ? (\r\n this.props.children\r\n ) : (\r\n <>\r\n {this.props.showButton && (\r\n <NSCButton\r\n type=\"primary\"\r\n onClick={() => {\r\n this.show();\r\n }}\r\n >\r\n 数据导入\r\n </NSCButton>\r\n )}\r\n </>\r\n )}\r\n\r\n <NscModal\r\n title=\"数据导入\"\r\n width={800}\r\n wrapClassName={\"import-modal\"}\r\n ref={this.modalRef}\r\n footer={footer}\r\n onCancel={() => {\r\n this.hide();\r\n }}\r\n >\r\n <div className=\"content\">\r\n {status == 1 ? (\r\n <div>\r\n <div style={{ display: \"flex\" }}>\r\n <NscUpload\r\n beforeUpload={(file) => {\r\n this.setState({\r\n file,\r\n });\r\n return false;\r\n }}\r\n allowFileSuffix={[\"xls\", \"xlsx\"]}\r\n accept={\".xls,.xlsx\"}\r\n showUploadList={false}\r\n >\r\n <NSCButton\r\n type={\"primary\"}\r\n disabled={file ? true : false}\r\n icon={<FolderOutlined />}\r\n >\r\n 选择文件\r\n </NSCButton>\r\n </NscUpload>\r\n\r\n {downLoadTemplet && (\r\n <NscDownLoad url={downTempletUrl}>\r\n <NSCButton type=\"primary\" style={{ marginLeft: 20 }}>\r\n 模板下载\r\n </NSCButton>\r\n </NscDownLoad>\r\n )}\r\n </div>\r\n <div className=\"upload-tip\">\r\n <div className=\"upload-tip-left\">\r\n <ExclamationCircleOutlined />\r\n </div>\r\n <div className=\"upload-tip-content\">\r\n <div>\r\n 1、支持Excel 2007及以上版本,且每次只能上传一个文件;\r\n </div>\r\n <div>2、导入前先下载模板,并根据模板填写数据;</div>\r\n </div>\r\n </div>\r\n\r\n {file && (\r\n <div className=\"upload-file\">\r\n <div className=\"file-icon\">\r\n <FileIcon type=\"excel\" />\r\n </div>\r\n <div className=\"file-content\">\r\n <div className=\"file-title\">{file.name}</div>\r\n <div className=\"file-desc\">\r\n <span>\r\n 文件大小:{this.fileSizeKb(file.size) + \"KB\"}\r\n </span>\r\n </div>\r\n </div>\r\n <div\r\n className=\"file-delete\"\r\n onClick={() => {\r\n this.setState({\r\n file: null,\r\n });\r\n }}\r\n >\r\n <DeleteOutlined />\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n ) : (\r\n <div>\r\n <Steps\r\n current={currentStep}\r\n items={[\r\n {\r\n title: \"数据分析\",\r\n },\r\n {\r\n title: \"数据插入\",\r\n },\r\n ]}\r\n />\r\n <div className={\"result-content\"}>{this.renderResult()}</div>\r\n </div>\r\n )}\r\n </div>\r\n </NscModal>\r\n </div>\r\n );\r\n }\r\n}\r\nexport default NscImportData;\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","NscUpload","NSCButton","NscDownLoad","NscModal","FileIcon","UploadOutlined","FolderOutlined","CloseCircleOutlined","ExclamationCircleOutlined","Steps","nscFile","Alert","Collapse","DeleteOutlined","NscImportData","PureComponent","constructor","arguments","_defineProperty","status","file","currentStep","requestStatus","errorList","warnList","buttonLoading","createRef","fileSizeKb","number","length","undefined","toFixed","show","_this$modalRef$curren","modalRef","current","hide","_this$modalRef$curren2","resetData","importData","isOverwrite","requestConfig","importUrl","onCallBacks","props","data","config","_objectWithoutProperties","_excluded","setState","importFile","url","_objectSpread","then","res","code","showResult","msgList","_res$data","_res$data2","warnings","errors","_message","success","name","importCallBack","msg","error","renderErrorContent","list","map","item","index","state","createElement","key","rowNum","errorMsg","renderResult","alert_msg_map","warning","_alert_msg_map$reques","style","marginTop","message","type","showIcon","expandIconPosition","className","backgroundColor","border","borderRadius","defaultActiveKey","Panel","header","color","extra","background","render","downLoadTemplet","downTempletUrl","checkData","checkUrl","buttonText","footer","onClick","errorCount","duplicateCount","duplicateList","disabled","icon","marginLeft","children","Fragment","showButton","title","width","wrapClassName","ref","onCancel","display","beforeUpload","allowFileSuffix","accept","showUploadList","size","items"],"sources":["../../../src/components/base/importData/index.tsx"],"sourcesContent":["import React from \"react\";\r\nimport \"./index.less\";\r\nimport NscUpload from \"../upload\";\r\nimport NSCButton from \"../button\";\r\nimport NscDownLoad from \"../download\";\r\nimport NscModal from \"../modal\";\r\nimport FileIcon from \"../common/FileIcon\";\r\nimport {\r\n UploadOutlined,\r\n FolderOutlined,\r\n CloseCircleOutlined,\r\n ExclamationCircleOutlined,\r\n} from \"@ant-design/icons\";\r\nimport Steps from \"../steps\";\r\nimport nscFile from \"nsc-file\";\r\nimport { message } from \"antd\";\r\nimport Alert from \"../alert\";\r\nimport Collapse from \"../collapse\";\r\nimport Icon from \"../common/Icon\";\r\nimport { DeleteOutlined } from \"@ant-design/icons\";\r\n\r\ninterface ImportPropos {\r\n checkData?: boolean; //是否进行数据校验,默认false\r\n checkUrl?: string; //数据校验接口地址\r\n importUrl: string; //数据导入地址\r\n requestConfig?: any;\r\n downLoadTemplet?: boolean; //是否显示下载模板按钮\r\n downTempletUrl?: string; //下载模板地址\r\n onCallBacks?: {\r\n showResult?: any; //数据校验回调\r\n importCallBack?: any; //数据导入回调\r\n closeCallBack?: any;\r\n // beforeRequest?: any; // 结果显示前回调,自定义结果显示类型,return {status,msgList}\r\n };\r\n showButton?: boolean;\r\n buttonText?: string;\r\n [propsName: string]: any;\r\n}\r\nclass NscImportData extends React.PureComponent<ImportPropos, any> {\r\n state = {\r\n status: 1,\r\n file: null,\r\n currentStep: 1,\r\n requestStatus: \"\",\r\n errorList: [],\r\n warnList: [],\r\n buttonLoading: false,\r\n };\r\n modalRef = React.createRef<any>();\r\n fileSizeKb(number = 0) {\r\n return (number / 1024).toFixed(2);\r\n }\r\n show() {\r\n this.modalRef.current?.show();\r\n }\r\n hide() {\r\n this.modalRef.current?.hide();\r\n this.resetData();\r\n }\r\n importData(file, isOverwrite) {\r\n const { requestConfig = {}, importUrl, onCallBacks = {} } = this.props;\r\n let { data = {}, ...config } = requestConfig;\r\n this.setState({\r\n buttonLoading: true,\r\n });\r\n // let formData = {...data}\r\n\r\n nscFile\r\n .importFile(\r\n {\r\n url: importUrl,\r\n data: { ...data, isOverwrite: isOverwrite },\r\n file: file,\r\n },\r\n config\r\n )\r\n .then(async (res: any) => {\r\n this.setState({\r\n buttonLoading: false,\r\n });\r\n if (res.code == 200) {\r\n // message.success(\"导入成功!\");\r\n if (onCallBacks?.showResult) {\r\n let data = await onCallBacks?.showResult(res, \"import\");\r\n this.setState({\r\n requestStatus: data.status,\r\n [data.status == \"warning\" ? \"warnList\" : \"errorList\"]:\r\n data.msgList,\r\n });\r\n } else {\r\n if (res.data?.warnings?.length > 0) {\r\n this.setState({\r\n requestStatus: \"warning\",\r\n warnList: res.data.warnings,\r\n });\r\n } else if (res.data?.errors?.length > 0) {\r\n // message.success(\"导入失败!\");\r\n this.setState({\r\n requestStatus: \"error\",\r\n errorList: res.data.errors,\r\n });\r\n } else {\r\n message.success((file?.name || \"\") + \"导入成功!\");\r\n this.setState({\r\n requestStatus: \"success\",\r\n });\r\n }\r\n }\r\n\r\n onCallBacks?.importCallBack && onCallBacks?.importCallBack(res);\r\n // this.hide();\r\n } else {\r\n !res.msg && message.error(\"导入失败!\");\r\n this.setState({\r\n requestStatus: \"error\",\r\n });\r\n }\r\n });\r\n }\r\n renderErrorContent(list) {\r\n return list.map((item, index) => {\r\n if (this.state.requestStatus == \"warning\") {\r\n return typeof item == \"string\" ? (\r\n <div key={index}>{item}</div>\r\n ) : (\r\n <div key={index}>\r\n {\"第\" + item.rowNum + \"行数据重复;\" + item.errorMsg\r\n ? item.errorMsg\r\n : \"\"}\r\n </div>\r\n );\r\n } else {\r\n return typeof item == \"string\" ? (\r\n <div key={index}>{item}</div>\r\n ) : (\r\n <div key={index}>{item.errorMsg}</div>\r\n );\r\n }\r\n });\r\n }\r\n renderResult() {\r\n const { requestStatus, errorList, warnList } = this.state;\r\n const alert_msg_map = {\r\n success: \"导入成功\",\r\n error: \"导入失败\",\r\n warning: \"告警提示\",\r\n };\r\n if (requestStatus) {\r\n if (requestStatus == \"success\") {\r\n return (\r\n <Alert\r\n style={{ marginTop: \"8px\" }}\r\n message={alert_msg_map[requestStatus] ?? \"提示\"}\r\n type={\"success\"}\r\n showIcon\r\n />\r\n );\r\n } else {\r\n return (\r\n <Collapse\r\n expandIconPosition=\"right\"\r\n className={\r\n requestStatus == \"warning\" ? \"content-warning\" : \"content-error\"\r\n }\r\n style={{\r\n backgroundColor:\r\n requestStatus == \"warning\" ? \"#FCE1AB\" : \"#fff2f0\",\r\n border:\r\n requestStatus == \"warning\"\r\n ? \"1px solid #FCE1AB\"\r\n : \"1px solid #FFCCC7\",\r\n borderRadius: \"2px\",\r\n }}\r\n defaultActiveKey={[\"1\"]}\r\n >\r\n <Collapse.Panel\r\n key=\"1\"\r\n header={\r\n <div>\r\n <span\r\n style={{\r\n color: requestStatus == \"warning\" ? \"#FAAD14\" : \"#f60\",\r\n }}\r\n >\r\n {requestStatus == \"warning\" ? (\r\n <ExclamationCircleOutlined />\r\n ) : (\r\n <CloseCircleOutlined />\r\n )}\r\n {alert_msg_map[requestStatus]}\r\n </span>\r\n </div>\r\n }\r\n extra={\r\n <span\r\n style={{\r\n color: requestStatus == \"warning\" ? \"#FAAD14\" : \"#f60\",\r\n }}\r\n >\r\n {requestStatus == \"warning\" ? \"查看\" : \"查看错误\"}\r\n </span>\r\n }\r\n >\r\n <div\r\n style={{\r\n background:\r\n requestStatus == \"warning\" ? \"#FFFDF6\" : \"#fff9f9\",\r\n }}\r\n className=\"content-error__msg\"\r\n >\r\n {this.renderErrorContent(\r\n requestStatus == \"warning\" ? warnList : errorList\r\n )}\r\n </div>\r\n </Collapse.Panel>\r\n </Collapse>\r\n );\r\n }\r\n }\r\n }\r\n resetData() {\r\n this.setState({\r\n status: 1,\r\n file: null,\r\n currentStep: 1,\r\n requestStatus: \"\",\r\n errorList: [],\r\n warnList: [],\r\n });\r\n }\r\n render() {\r\n const { file, status, currentStep, requestStatus } = this.state;\r\n const {\r\n downLoadTemplet,\r\n downTempletUrl,\r\n checkData,\r\n checkUrl,\r\n requestConfig,\r\n buttonText,\r\n onCallBacks,\r\n } = this.props;\r\n const footer = (\r\n <div className=\"footer\">\r\n <NSCButton\r\n onClick={() => {\r\n this.hide();\r\n }}\r\n >\r\n 取消\r\n </NSCButton>\r\n\r\n {status == 1 && this.state.file && (\r\n <NSCButton\r\n onClick={() => {\r\n this.setState({\r\n status: 2,\r\n currentStep: 1,\r\n });\r\n if (checkData) {\r\n nscFile\r\n .importFile({\r\n url: checkUrl,\r\n file: file,\r\n data: requestConfig?.data || {},\r\n })\r\n .then(async (res: any) => {\r\n if (onCallBacks?.showResult) {\r\n let data = await onCallBacks?.showResult(res, \"preCheck\");\r\n this.setState({\r\n requestStatus: data.status,\r\n [data.status == \"warning\" ? \"warnList\" : \"errorList\"]:\r\n data.msgList,\r\n });\r\n } else {\r\n if (res.code == 200) {\r\n if (\r\n res.data.errorCount == 0 &&\r\n res.data.duplicateCount == 0\r\n ) {\r\n this.setState({\r\n currentStep: 2,\r\n requestStatus: \"success\",\r\n });\r\n this.importData(file, false);\r\n return;\r\n }\r\n if (res.data.errorCount > 0) {\r\n this.setState({\r\n requestStatus: \"error\",\r\n errorList: res.data.errorList,\r\n });\r\n return;\r\n }\r\n if (res.data.duplicateCount > 0) {\r\n this.setState({\r\n requestStatus: \"warning\",\r\n warnList: res.data.duplicateList,\r\n });\r\n return;\r\n }\r\n }\r\n }\r\n });\r\n } else {\r\n this.importData(file, false);\r\n }\r\n }}\r\n disabled={file ? false : true}\r\n icon={<UploadOutlined />}\r\n style={{ marginLeft: 20 }}\r\n >\r\n 开始上传\r\n </NSCButton>\r\n )}\r\n {status == 2 && this.props.checkData !== true && (\r\n <NSCButton\r\n type=\"primary\"\r\n style={{ marginLeft: 20 }}\r\n onClick={() => {\r\n this.setState({\r\n file: null,\r\n status: 1,\r\n currentStep: 1,\r\n });\r\n }}\r\n >\r\n {requestStatus == \"success\" ? \"继续上传\" : \"重新上传\"}\r\n </NSCButton>\r\n )}\r\n {requestStatus == \"warning\" && status == 2 && this.props.checkData && (\r\n <NSCButton\r\n type=\"primary\"\r\n style={{ marginLeft: 20 }}\r\n onClick={() => {\r\n this.importData(this.state.file, false);\r\n }}\r\n disabled={this.state.buttonLoading}\r\n >\r\n 不覆盖数据\r\n </NSCButton>\r\n )}\r\n {requestStatus == \"warning\" && status == 2 && this.props.checkData && (\r\n <NSCButton\r\n type=\"primary\"\r\n style={{ marginLeft: 20 }}\r\n onClick={() => {\r\n this.importData(this.state.file, true);\r\n }}\r\n disabled={this.state.buttonLoading}\r\n >\r\n 覆盖数据\r\n </NSCButton>\r\n )}\r\n </div>\r\n );\r\n\r\n return (\r\n <div>\r\n {this.props.children ? (\r\n this.props.children\r\n ) : (\r\n <>\r\n {this.props.showButton && (\r\n <NSCButton\r\n type=\"primary\"\r\n onClick={() => {\r\n this.show();\r\n }}\r\n >\r\n {buttonText || \"数据导入\"}\r\n </NSCButton>\r\n )}\r\n </>\r\n )}\r\n\r\n <NscModal\r\n title={buttonText || \"数据导入\"}\r\n width={800}\r\n wrapClassName={\"import-modal\"}\r\n ref={this.modalRef}\r\n footer={footer}\r\n onCancel={() => {\r\n this.hide();\r\n }}\r\n >\r\n <div className=\"content\">\r\n {status == 1 ? (\r\n <div>\r\n <div style={{ display: \"flex\" }}>\r\n <NscUpload\r\n beforeUpload={(file) => {\r\n this.setState({\r\n file,\r\n });\r\n return false;\r\n }}\r\n allowFileSuffix={[\"xls\", \"xlsx\"]}\r\n accept={\".xls,.xlsx\"}\r\n showUploadList={false}\r\n >\r\n <NSCButton\r\n type={\"primary\"}\r\n disabled={file ? true : false}\r\n icon={<FolderOutlined />}\r\n >\r\n 选择文件\r\n </NSCButton>\r\n </NscUpload>\r\n\r\n {downLoadTemplet && (\r\n <NscDownLoad url={downTempletUrl}>\r\n <NSCButton type=\"primary\" style={{ marginLeft: 20 }}>\r\n 模板下载\r\n </NSCButton>\r\n </NscDownLoad>\r\n )}\r\n </div>\r\n <div className=\"upload-tip\">\r\n <div className=\"upload-tip-left\">\r\n <ExclamationCircleOutlined />\r\n </div>\r\n <div className=\"upload-tip-content\">\r\n <div>\r\n 1、支持Excel 2007及以上版本,且每次只能上传一个文件;\r\n </div>\r\n <div>2、导入前先下载模板,并根据模板填写数据;</div>\r\n </div>\r\n </div>\r\n\r\n {file && (\r\n <div className=\"upload-file\">\r\n <div className=\"file-icon\">\r\n <FileIcon type=\"excel\" />\r\n </div>\r\n <div className=\"file-content\">\r\n <div className=\"file-title\">{file.name}</div>\r\n <div className=\"file-desc\">\r\n <span>\r\n 文件大小:{this.fileSizeKb(file.size) + \"KB\"}\r\n </span>\r\n </div>\r\n </div>\r\n <div\r\n className=\"file-delete\"\r\n onClick={() => {\r\n this.setState({\r\n file: null,\r\n });\r\n }}\r\n >\r\n <DeleteOutlined />\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n ) : (\r\n <div>\r\n <Steps\r\n current={currentStep}\r\n items={[\r\n {\r\n title: \"数据分析\",\r\n },\r\n {\r\n title: \"数据插入\",\r\n },\r\n ]}\r\n />\r\n <div className={\"result-content\"}>{this.renderResult()}</div>\r\n </div>\r\n )}\r\n </div>\r\n </NscModal>\r\n </div>\r\n );\r\n }\r\n}\r\nexport default NscImportData;\r\n"],"mappings":"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"}
|
|
@@ -26,9 +26,10 @@ export default class SettingForm extends React.Component<IProps, any> {
|
|
|
26
26
|
pageLoading: boolean;
|
|
27
27
|
};
|
|
28
28
|
pageRef: React.RefObject<any>;
|
|
29
|
+
chartRef: React.RefObject<any>;
|
|
29
30
|
componentDidMount(): void;
|
|
30
31
|
componentDidUpdate(prevProps: Readonly<IProps>, prevState: Readonly<any>, snapshot?: any): void;
|
|
31
|
-
|
|
32
|
+
chartLoad(params?: {}): void;
|
|
32
33
|
getData(): void;
|
|
33
34
|
render(): React.JSX.Element;
|
|
34
35
|
}
|
|
@@ -47,7 +47,7 @@ export default class SettingForm extends React.Component {
|
|
|
47
47
|
pageLoading: true
|
|
48
48
|
});
|
|
49
49
|
_defineProperty(this, "pageRef", /*#__PURE__*/React.createRef());
|
|
50
|
-
_defineProperty(this, "
|
|
50
|
+
_defineProperty(this, "chartRef", /*#__PURE__*/React.createRef());
|
|
51
51
|
}
|
|
52
52
|
componentDidMount() {
|
|
53
53
|
this.getData();
|
|
@@ -59,6 +59,11 @@ export default class SettingForm extends React.Component {
|
|
|
59
59
|
});
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
|
+
chartLoad() {
|
|
63
|
+
var _this$chartRef;
|
|
64
|
+
let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
65
|
+
(_this$chartRef = this.chartRef) === null || _this$chartRef === void 0 || (_this$chartRef = _this$chartRef.current) === null || _this$chartRef === void 0 || _this$chartRef.chartLoad(params);
|
|
66
|
+
}
|
|
62
67
|
// 获取数据
|
|
63
68
|
getData() {
|
|
64
69
|
// 从props中获取tableCode、published、menuCode
|
|
@@ -162,7 +167,9 @@ export default class SettingForm extends React.Component {
|
|
|
162
167
|
spinning: pageLoading
|
|
163
168
|
})) : /*#__PURE__*/React.createElement(Chart, _extends({
|
|
164
169
|
option: finalOption
|
|
165
|
-
}, settingProps, chartProps
|
|
170
|
+
}, settingProps, chartProps, {
|
|
171
|
+
ref: this.chartRef
|
|
172
|
+
})));
|
|
166
173
|
}
|
|
167
174
|
}
|
|
168
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDaGFydCIsIlNwaW4iLCJSZWFjdCIsIk5zY1JlcXVlc3QiLCJkZWVwTWVyZ2UiLCJsb2Fkc2giLCJnZXRTZXR0aW5nRGF0YSIsInBhcmFtcyIsInVybCIsImdldCIsInhzc0ZpbHRlciIsImF1dG9QcmVmaXgiLCJnZXRGb3JtU2V0dGluZyIsImRhdGEiLCJmb3JtcyIsIkpTT04iLCJwYXJzZSIsInNlbGZGb3JtQnV0dG9uIiwic2VsZkJ1dHRvbiIsIm90aGVyUHJvcHMiLCJmb3JtVHlwZSIsInByb3BzIiwiZm9ybVNldHRpbmciLCJTZXR0aW5nRm9ybSIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwiYXJndW1lbnRzIiwiX2RlZmluZVByb3BlcnR5Iiwib3RoZXJQb3JwcyIsInNldHRpbmdPcHRpb24iLCJzZXR0aW5nUHJvcHMiLCJ3aWR0aCIsImhlaWdodCIsInBhZ2VMb2FkaW5nIiwiY3JlYXRlUmVmIiwicmVzIiwiY29tcG9uZW50RGlkTW91bnQiLCJnZXREYXRhIiwiY29tcG9uZW50RGlkVXBkYXRlIiwicHJldlByb3BzIiwicHJldlN0YXRlIiwic25hcHNob3QiLCJjaGFydENvZGUiLCJzZXRTdGF0ZSIsInB1Ymxpc2hlZCIsImNvZGUiLCJpc1B1Ymxpc2hlZCIsIl9vYmplY3RTcHJlYWQiLCJ0aGVuIiwiY2hhcnRQcm9wcyIsImN1c3RvbU9wdGlvbiIsIm9wdGlvbiIsImRlZmF1bHRPcHRpb24iLCJzaG93T3B0aW9uIiwiY2xvbmVEZWVwIiwidHlwZSIsInhBeGlzIiwic2VyaWVzIiwiZm9yRWFjaCIsIml0ZW0iLCJ2YWx1ZSIsIm5hbWUiLCJjdXN0b21PcHRpb25PYmoiLCJmdW5jIiwiRnVuY3Rpb24iLCJlIiwiZmluYWxPcHRpb24iLCJfbWVzc2FnZSIsImVycm9yIiwicmVuZGVyIiwic3RhdGUiLCJfdGhpcyIsImNyZWF0ZUVsZW1lbnQiLCJzdHlsZSIsInNwaW5uaW5nIiwiX2V4dGVuZHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9wYWdlL1NldHRpbmdDaGFydC9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENoYXJ0IGZyb20gXCIuLi8uLi9iYXNlL2NoYXJ0XCI7XHJcbmltcG9ydCBTcGluIGZyb20gXCIuLi8uLi9iYXNlL3NwaW5cIjtcclxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgTnNjUmVxdWVzdCBmcm9tIFwibnNjLXJlcXVlc3RcIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5pbXBvcnQgeyBtZXNzYWdlIH0gZnJvbSBcImFudGRcIjtcclxuaW1wb3J0IHsgQ2hhcnRQcm9wcyB9IGZyb20gXCIuLi8uLi9iYXNlL2NoYXJ0XCI7XHJcbmltcG9ydCB7IGRlZXBNZXJnZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgbG9hZHNoIGZyb20gXCJsb2Rhc2hcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRTZXR0aW5nRGF0YSA9IChwYXJhbXM6IGFueSkgPT4ge1xyXG4gIGxldCB1cmwgPSBcIi9qcXVpY2stc2V0dGluZy9zZXR0aW5nL2NoYXJ0L2luZm9cIjtcclxuICByZXR1cm4gTnNjUmVxdWVzdC5nZXQodXJsLCB7XHJcbiAgICBwYXJhbXMsXHJcbiAgICB4c3NGaWx0ZXI6IGZhbHNlLFxyXG4gICAgYXV0b1ByZWZpeDogdHJ1ZSxcclxuICB9KTtcclxufTtcclxuXHJcbmludGVyZmFjZSBJUHJvcHMge1xyXG4gIGNoYXJ0Q29kZTogc3RyaW5nO1xyXG4gIGZ1bmNzPzogYW55O1xyXG4gIHB1Ymxpc2hlZD86IGJvb2xlYW47XHJcbiAgY2hhcnRQcm9wcz86IENoYXJ0UHJvcHM7XHJcbiAgW3Byb3BOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBnZXRGb3JtU2V0dGluZyA9IChkYXRhKSA9PiB7XHJcbiAgbGV0IGZvcm1zID0gSlNPTi5wYXJzZShkYXRhLmZvcm1zIHx8IFwiW11cIikgfHwgW107XHJcbiAgbGV0IHNlbGZGb3JtQnV0dG9uID0gSlNPTi5wYXJzZShkYXRhLnNlbGZCdXR0b24gfHwgXCJbXVwiKSB8fCBbXTtcclxuICBsZXQgb3RoZXJQcm9wcyA9IEpTT04ucGFyc2UoZGF0YS5vdGhlclByb3BzIHx8IFwie31cIikgfHwge307XHJcbiAgbGV0IGZvcm1UeXBlID0gZGF0YS5mb3JtVHlwZTtcclxuICBsZXQgcHJvcHMgPSBKU09OLnBhcnNlKGRhdGEucHJvcHMgfHwgXCJ7fVwiKSB8fCB7fTtcclxuICBsZXQgZm9ybVNldHRpbmcgPSB7XHJcbiAgICBmb3JtVHlwZTogZm9ybVR5cGUsXHJcbiAgICBzZWxmQnV0dG9uOiBzZWxmRm9ybUJ1dHRvbixcclxuICAgIHByb3BzOiBwcm9wcyxcclxuICAgIG90aGVyUHJvcHM6IG90aGVyUHJvcHMsXHJcbiAgICBmb3JtczogZm9ybXMsXHJcbiAgfTtcclxuICByZXR1cm4gZm9ybVNldHRpbmc7XHJcbn07XHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNldHRpbmdGb3JtIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PElQcm9wcywgYW55PiB7XHJcbiAgc3RhdGUgPSB7XHJcbiAgICBvdGhlclBvcnBzOiB7fSxcclxuICAgIHNldHRpbmdPcHRpb246IHt9LFxyXG4gICAgc2V0dGluZ1Byb3BzOiB7IHdpZHRoOiA1MDAsIGhlaWdodDogNTAwIH0sXHJcbiAgICBwYWdlTG9hZGluZzogdHJ1ZSxcclxuICB9O1xyXG4gIHBhZ2VSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG5cclxuICBjb21wb25lbnREaWRNb3VudCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgY29tcG9uZW50RGlkVXBkYXRlKFxyXG4gICAgcHJldlByb3BzOiBSZWFkb25seTxJUHJvcHM+LFxyXG4gICAgcHJldlN0YXRlOiBSZWFkb25seTxhbnk+LFxyXG4gICAgc25hcHNob3Q/OiBhbnlcclxuICApOiB2b2lkIHtcclxuICAgIGlmIChwcmV2UHJvcHMuY2hhcnRDb2RlICE9IHRoaXMucHJvcHMuY2hhcnRDb2RlKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe30sICgpID0+IHtcclxuICAgICAgICB0aGlzLmdldERhdGEoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0RGF0YSA9IChyZXM6IGFueSkgPT4ge307XHJcbiAgLy8g6I635Y+W5pWw5o2uXHJcbiAgZ2V0RGF0YSgpIHtcclxuICAgIC8vIOS7jnByb3Bz5Lit6I635Y+WdGFibGVDb2Rl44CBcHVibGlzaGVk44CBbWVudUNvZGVcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBwYWdlTG9hZGluZzogdHJ1ZSxcclxuICAgIH0pO1xyXG4gICAgY29uc3QgeyBjaGFydENvZGUsIHB1Ymxpc2hlZCA9IHRydWUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICAvLyDlpoLmnpx0YWJsZUNvZGXlrZjlnKhcclxuICAgIGlmIChjaGFydENvZGUpIHtcclxuICAgICAgLy8g5a6a5LmJ5Y+C5pWwXHJcbiAgICAgIGxldCBwYXJhbXMgPSB7IGNvZGU6IGNoYXJ0Q29kZSB9IGFzIGFueTtcclxuICAgICAgLy8g5aaC5p6ccHVibGlzaGVk5Li6dHJ1ZVxyXG4gICAgICBpZiAocHVibGlzaGVkKSB7XHJcbiAgICAgICAgLy8g6K6+572u5Y+C5pWwaXNQdWJsaXNoZWTkuLoxXHJcbiAgICAgICAgcGFyYW1zLmlzUHVibGlzaGVkID0gMTtcclxuICAgICAgfVxyXG4gICAgICAvLyDosIPnlKhnZXRQYWdlRGF0YeaWueazleiOt+WPluaVsOaNrlxyXG4gICAgICBnZXRTZXR0aW5nRGF0YSh7IC4uLnBhcmFtcyB9KS50aGVuKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMuY29kZSA9PSAyMDAgJiYgcmVzLmRhdGEpIHtcclxuICAgICAgICAgIGxldCBjaGFydFByb3BzID0gSlNPTi5wYXJzZShyZXMuZGF0YS5wcm9wcyB8fCBcInt9XCIpIHx8IHt9O1xyXG4gICAgICAgICAgbGV0IG90aGVyUHJvcHMgPSBKU09OLnBhcnNlKHJlcy5kYXRhLm90aGVyUHJvcHMgfHwgXCJ7fVwiKSB8fCB7fTtcclxuICAgICAgICAgIGxldCBjdXN0b21PcHRpb24gPSByZXMuZGF0YS5jdXN0b21PcHRpb247XHJcbiAgICAgICAgICBsZXQgb3B0aW9uID0gSlNPTi5wYXJzZShyZXMuZGF0YS5kZWZhdWx0T3B0aW9uIHx8IFwie31cIik7XHJcbiAgICAgICAgICBjb25zdCBzaG93T3B0aW9uID0gbG9hZHNoLmNsb25lRGVlcChvcHRpb24pO1xyXG4gICAgICAgICAgaWYgKG90aGVyUHJvcHMudHlwZSA9PSBcImxpbmVCYXJcIikge1xyXG4gICAgICAgICAgICBpZiAoc2hvd09wdGlvbi54QXhpcykge1xyXG4gICAgICAgICAgICAgIHNob3dPcHRpb24ueEF4aXMuZGF0YSA9IFwie1wiICsgc2hvd09wdGlvbi54QXhpcy5kYXRhICsgXCJ9XCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHNob3dPcHRpb24uc2VyaWVzKSB7XHJcbiAgICAgICAgICAgICAgc2hvd09wdGlvbi5zZXJpZXMuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5kYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgIGl0ZW0uZGF0YSA9IFwie1wiICsgaXRlbS5kYXRhICsgXCJ9XCI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSBpZiAob3RoZXJQcm9wcy50eXBlID09IFwicGllXCIpIHtcclxuICAgICAgICAgICAgc2hvd09wdGlvbi5zZXJpZXMuZGF0YS52YWx1ZSA9XHJcbiAgICAgICAgICAgICAgXCJ7XCIgKyBzaG93T3B0aW9uLnNlcmllcy5kYXRhLnZhbHVlICsgXCJ9XCI7XHJcbiAgICAgICAgICAgIHNob3dPcHRpb24uc2VyaWVzLmRhdGEubmFtZSA9XHJcbiAgICAgICAgICAgICAgXCJ7XCIgKyBzaG93T3B0aW9uLnNlcmllcy5kYXRhLm5hbWUgKyBcIn1cIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCBjdXN0b21PcHRpb25PYmogPSB7fTtcclxuICAgICAgICAgIGlmIChjdXN0b21PcHRpb24pIHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICBjb25zdCBmdW5jID0gbmV3IEZ1bmN0aW9uKGN1c3RvbU9wdGlvbik7XHJcbiAgICAgICAgICAgICAgY3VzdG9tT3B0aW9uT2JqID0gZnVuYygpO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc3QgZmluYWxPcHRpb24gPSBkZWVwTWVyZ2Uoc2hvd09wdGlvbiwgY3VzdG9tT3B0aW9uT2JqKTtcclxuXHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgb3RoZXJQb3Jwczogb3RoZXJQcm9wcyxcclxuICAgICAgICAgICAgICBzZXR0aW5nT3B0aW9uOiBmaW5hbE9wdGlvbixcclxuICAgICAgICAgICAgICBzZXR0aW5nUHJvcHM6IGNoYXJ0UHJvcHMsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgIHBhZ2VMb2FkaW5nOiBmYWxzZSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHJlcy5jb2RlID09IDIwMCAmJiByZXMuZGF0YSA9PSBudWxsKSB7XHJcbiAgICAgICAgICBtZXNzYWdlLmVycm9yKFwi5pyq5om+5Yiw6YWN572u5L+h5oGv77yBXCIpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgcGFnZUxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIHBhZ2VMb2FkaW5nOiBmYWxzZSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IHsgY2hhcnRQcm9wcyA9IHt9IGFzIGFueSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCB7IG9wdGlvbiA9IHt9IH0gPSBjaGFydFByb3BzO1xyXG4gICAgY29uc3QgeyBwYWdlTG9hZGluZywgc2V0dGluZ1Byb3BzLCBzZXR0aW5nT3B0aW9uIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGxldCBmaW5hbE9wdGlvbiA9IGRlZXBNZXJnZShvcHRpb24sIHNldHRpbmdPcHRpb24pO1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdiBzdHlsZT17eyBoZWlnaHQ6IFwiMTAwJVwiLCB3aWR0aDogXCIxMDAlXCIgfX0+XHJcbiAgICAgICAge3BhZ2VMb2FkaW5nID8gKFxyXG4gICAgICAgICAgPGRpdiBzdHlsZT17eyB3aWR0aDogXCIxMDAlXCIsIGhlaWdodDogXCIxMDAlXCIgfX0+XHJcbiAgICAgICAgICAgIDxTcGluIHNwaW5uaW5nPXtwYWdlTG9hZGluZ30+PC9TcGluPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKSA6IChcclxuICAgICAgICAgIDxDaGFydCBvcHRpb249e2ZpbmFsT3B0aW9ufSB7Li4uc2V0dGluZ1Byb3BzfSB7Li4uY2hhcnRQcm9wc30gLz5cclxuICAgICAgICApfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLE9BQU9B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
|
|
175
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDaGFydCIsIlNwaW4iLCJSZWFjdCIsIk5zY1JlcXVlc3QiLCJkZWVwTWVyZ2UiLCJsb2Fkc2giLCJnZXRTZXR0aW5nRGF0YSIsInBhcmFtcyIsInVybCIsImdldCIsInhzc0ZpbHRlciIsImF1dG9QcmVmaXgiLCJnZXRGb3JtU2V0dGluZyIsImRhdGEiLCJmb3JtcyIsIkpTT04iLCJwYXJzZSIsInNlbGZGb3JtQnV0dG9uIiwic2VsZkJ1dHRvbiIsIm90aGVyUHJvcHMiLCJmb3JtVHlwZSIsInByb3BzIiwiZm9ybVNldHRpbmciLCJTZXR0aW5nRm9ybSIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwiYXJndW1lbnRzIiwiX2RlZmluZVByb3BlcnR5Iiwib3RoZXJQb3JwcyIsInNldHRpbmdPcHRpb24iLCJzZXR0aW5nUHJvcHMiLCJ3aWR0aCIsImhlaWdodCIsInBhZ2VMb2FkaW5nIiwiY3JlYXRlUmVmIiwiY29tcG9uZW50RGlkTW91bnQiLCJnZXREYXRhIiwiY29tcG9uZW50RGlkVXBkYXRlIiwicHJldlByb3BzIiwicHJldlN0YXRlIiwic25hcHNob3QiLCJjaGFydENvZGUiLCJzZXRTdGF0ZSIsImNoYXJ0TG9hZCIsIl90aGlzJGNoYXJ0UmVmIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiY2hhcnRSZWYiLCJjdXJyZW50IiwicHVibGlzaGVkIiwiY29kZSIsImlzUHVibGlzaGVkIiwiX29iamVjdFNwcmVhZCIsInRoZW4iLCJyZXMiLCJjaGFydFByb3BzIiwiY3VzdG9tT3B0aW9uIiwib3B0aW9uIiwiZGVmYXVsdE9wdGlvbiIsInNob3dPcHRpb24iLCJjbG9uZURlZXAiLCJ0eXBlIiwieEF4aXMiLCJzZXJpZXMiLCJmb3JFYWNoIiwiaXRlbSIsInZhbHVlIiwibmFtZSIsImN1c3RvbU9wdGlvbk9iaiIsImZ1bmMiLCJGdW5jdGlvbiIsImUiLCJmaW5hbE9wdGlvbiIsIl9tZXNzYWdlIiwiZXJyb3IiLCJyZW5kZXIiLCJzdGF0ZSIsIl90aGlzIiwiY3JlYXRlRWxlbWVudCIsInN0eWxlIiwic3Bpbm5pbmciLCJfZXh0ZW5kcyIsInJlZiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BhZ2UvU2V0dGluZ0NoYXJ0L2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ2hhcnQgZnJvbSBcIi4uLy4uL2Jhc2UvY2hhcnRcIjtcclxuaW1wb3J0IFNwaW4gZnJvbSBcIi4uLy4uL2Jhc2Uvc3BpblwiO1xyXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBOc2NSZXF1ZXN0IGZyb20gXCJuc2MtcmVxdWVzdFwiO1xyXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XHJcbmltcG9ydCB7IG1lc3NhZ2UgfSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgeyBDaGFydFByb3BzIH0gZnJvbSBcIi4uLy4uL2Jhc2UvY2hhcnRcIjtcclxuaW1wb3J0IHsgZGVlcE1lcmdlIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmltcG9ydCBsb2Fkc2ggZnJvbSBcImxvZGFzaFwiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldFNldHRpbmdEYXRhID0gKHBhcmFtczogYW55KSA9PiB7XHJcbiAgbGV0IHVybCA9IFwiL2pxdWljay1zZXR0aW5nL3NldHRpbmcvY2hhcnQvaW5mb1wiO1xyXG4gIHJldHVybiBOc2NSZXF1ZXN0LmdldCh1cmwsIHtcclxuICAgIHBhcmFtcyxcclxuICAgIHhzc0ZpbHRlcjogZmFsc2UsXHJcbiAgICBhdXRvUHJlZml4OiB0cnVlLFxyXG4gIH0pO1xyXG59O1xyXG5cclxuaW50ZXJmYWNlIElQcm9wcyB7XHJcbiAgY2hhcnRDb2RlOiBzdHJpbmc7XHJcbiAgZnVuY3M/OiBhbnk7XHJcbiAgcHVibGlzaGVkPzogYm9vbGVhbjtcclxuICBjaGFydFByb3BzPzogQ2hhcnRQcm9wcztcclxuICBbcHJvcE5hbWU6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGdldEZvcm1TZXR0aW5nID0gKGRhdGEpID0+IHtcclxuICBsZXQgZm9ybXMgPSBKU09OLnBhcnNlKGRhdGEuZm9ybXMgfHwgXCJbXVwiKSB8fCBbXTtcclxuICBsZXQgc2VsZkZvcm1CdXR0b24gPSBKU09OLnBhcnNlKGRhdGEuc2VsZkJ1dHRvbiB8fCBcIltdXCIpIHx8IFtdO1xyXG4gIGxldCBvdGhlclByb3BzID0gSlNPTi5wYXJzZShkYXRhLm90aGVyUHJvcHMgfHwgXCJ7fVwiKSB8fCB7fTtcclxuICBsZXQgZm9ybVR5cGUgPSBkYXRhLmZvcm1UeXBlO1xyXG4gIGxldCBwcm9wcyA9IEpTT04ucGFyc2UoZGF0YS5wcm9wcyB8fCBcInt9XCIpIHx8IHt9O1xyXG4gIGxldCBmb3JtU2V0dGluZyA9IHtcclxuICAgIGZvcm1UeXBlOiBmb3JtVHlwZSxcclxuICAgIHNlbGZCdXR0b246IHNlbGZGb3JtQnV0dG9uLFxyXG4gICAgcHJvcHM6IHByb3BzLFxyXG4gICAgb3RoZXJQcm9wczogb3RoZXJQcm9wcyxcclxuICAgIGZvcm1zOiBmb3JtcyxcclxuICB9O1xyXG4gIHJldHVybiBmb3JtU2V0dGluZztcclxufTtcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2V0dGluZ0Zvcm0gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8SVByb3BzLCBhbnk+IHtcclxuICBzdGF0ZSA9IHtcclxuICAgIG90aGVyUG9ycHM6IHt9LFxyXG4gICAgc2V0dGluZ09wdGlvbjoge30sXHJcbiAgICBzZXR0aW5nUHJvcHM6IHsgd2lkdGg6IDUwMCwgaGVpZ2h0OiA1MDAgfSxcclxuICAgIHBhZ2VMb2FkaW5nOiB0cnVlLFxyXG4gIH07XHJcbiAgcGFnZVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgY2hhcnRSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG5cclxuICBjb21wb25lbnREaWRNb3VudCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgY29tcG9uZW50RGlkVXBkYXRlKFxyXG4gICAgcHJldlByb3BzOiBSZWFkb25seTxJUHJvcHM+LFxyXG4gICAgcHJldlN0YXRlOiBSZWFkb25seTxhbnk+LFxyXG4gICAgc25hcHNob3Q/OiBhbnlcclxuICApOiB2b2lkIHtcclxuICAgIGlmIChwcmV2UHJvcHMuY2hhcnRDb2RlICE9IHRoaXMucHJvcHMuY2hhcnRDb2RlKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe30sICgpID0+IHtcclxuICAgICAgICB0aGlzLmdldERhdGEoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGFydExvYWQocGFyYW1zID0ge30pIHtcclxuICAgIHRoaXMuY2hhcnRSZWY/LmN1cnJlbnQ/LmNoYXJ0TG9hZChwYXJhbXMpO1xyXG4gIH1cclxuICAvLyDojrflj5bmlbDmja5cclxuICBnZXREYXRhKCkge1xyXG4gICAgLy8g5LuOcHJvcHPkuK3ojrflj5Z0YWJsZUNvZGXjgIFwdWJsaXNoZWTjgIFtZW51Q29kZVxyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHBhZ2VMb2FkaW5nOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICBjb25zdCB7IGNoYXJ0Q29kZSwgcHVibGlzaGVkID0gdHJ1ZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIC8vIOWmguaenHRhYmxlQ29kZeWtmOWcqFxyXG4gICAgaWYgKGNoYXJ0Q29kZSkge1xyXG4gICAgICAvLyDlrprkuYnlj4LmlbBcclxuICAgICAgbGV0IHBhcmFtcyA9IHsgY29kZTogY2hhcnRDb2RlIH0gYXMgYW55O1xyXG4gICAgICAvLyDlpoLmnpxwdWJsaXNoZWTkuLp0cnVlXHJcbiAgICAgIGlmIChwdWJsaXNoZWQpIHtcclxuICAgICAgICAvLyDorr7nva7lj4LmlbBpc1B1Ymxpc2hlZOS4ujFcclxuICAgICAgICBwYXJhbXMuaXNQdWJsaXNoZWQgPSAxO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIOiwg+eUqGdldFBhZ2VEYXRh5pa55rOV6I635Y+W5pWw5o2uXHJcbiAgICAgIGdldFNldHRpbmdEYXRhKHsgLi4ucGFyYW1zIH0pLnRoZW4oKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcy5jb2RlID09IDIwMCAmJiByZXMuZGF0YSkge1xyXG4gICAgICAgICAgbGV0IGNoYXJ0UHJvcHMgPSBKU09OLnBhcnNlKHJlcy5kYXRhLnByb3BzIHx8IFwie31cIikgfHwge307XHJcbiAgICAgICAgICBsZXQgb3RoZXJQcm9wcyA9IEpTT04ucGFyc2UocmVzLmRhdGEub3RoZXJQcm9wcyB8fCBcInt9XCIpIHx8IHt9O1xyXG4gICAgICAgICAgbGV0IGN1c3RvbU9wdGlvbiA9IHJlcy5kYXRhLmN1c3RvbU9wdGlvbjtcclxuICAgICAgICAgIGxldCBvcHRpb24gPSBKU09OLnBhcnNlKHJlcy5kYXRhLmRlZmF1bHRPcHRpb24gfHwgXCJ7fVwiKTtcclxuICAgICAgICAgIGNvbnN0IHNob3dPcHRpb24gPSBsb2Fkc2guY2xvbmVEZWVwKG9wdGlvbik7XHJcbiAgICAgICAgICBpZiAob3RoZXJQcm9wcy50eXBlID09IFwibGluZUJhclwiKSB7XHJcbiAgICAgICAgICAgIGlmIChzaG93T3B0aW9uLnhBeGlzKSB7XHJcbiAgICAgICAgICAgICAgc2hvd09wdGlvbi54QXhpcy5kYXRhID0gXCJ7XCIgKyBzaG93T3B0aW9uLnhBeGlzLmRhdGEgKyBcIn1cIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoc2hvd09wdGlvbi5zZXJpZXMpIHtcclxuICAgICAgICAgICAgICBzaG93T3B0aW9uLnNlcmllcy5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChpdGVtLmRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgaXRlbS5kYXRhID0gXCJ7XCIgKyBpdGVtLmRhdGEgKyBcIn1cIjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIGlmIChvdGhlclByb3BzLnR5cGUgPT0gXCJwaWVcIikge1xyXG4gICAgICAgICAgICBzaG93T3B0aW9uLnNlcmllcy5kYXRhLnZhbHVlID1cclxuICAgICAgICAgICAgICBcIntcIiArIHNob3dPcHRpb24uc2VyaWVzLmRhdGEudmFsdWUgKyBcIn1cIjtcclxuICAgICAgICAgICAgc2hvd09wdGlvbi5zZXJpZXMuZGF0YS5uYW1lID1cclxuICAgICAgICAgICAgICBcIntcIiArIHNob3dPcHRpb24uc2VyaWVzLmRhdGEubmFtZSArIFwifVwiO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IGN1c3RvbU9wdGlvbk9iaiA9IHt9O1xyXG4gICAgICAgICAgaWYgKGN1c3RvbU9wdGlvbikge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGZ1bmMgPSBuZXcgRnVuY3Rpb24oY3VzdG9tT3B0aW9uKTtcclxuICAgICAgICAgICAgICBjdXN0b21PcHRpb25PYmogPSBmdW5jKCk7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBmaW5hbE9wdGlvbiA9IGRlZXBNZXJnZShzaG93T3B0aW9uLCBjdXN0b21PcHRpb25PYmopO1xyXG5cclxuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBvdGhlclBvcnBzOiBvdGhlclByb3BzLFxyXG4gICAgICAgICAgICAgIHNldHRpbmdPcHRpb246IGZpbmFsT3B0aW9uLFxyXG4gICAgICAgICAgICAgIHNldHRpbmdQcm9wczogY2hhcnRQcm9wcyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgcGFnZUxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSBpZiAocmVzLmNvZGUgPT0gMjAwICYmIHJlcy5kYXRhID09IG51bGwpIHtcclxuICAgICAgICAgIG1lc3NhZ2UuZXJyb3IoXCLmnKrmib7liLDphY3nva7kv6Hmga/vvIFcIik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICBwYWdlTG9hZGluZzogZmFsc2UsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgcGFnZUxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgcmVuZGVyKCkge1xyXG4gICAgY29uc3QgeyBjaGFydFByb3BzID0ge30gYXMgYW55IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IHsgb3B0aW9uID0ge30gfSA9IGNoYXJ0UHJvcHM7XHJcbiAgICBjb25zdCB7IHBhZ2VMb2FkaW5nLCBzZXR0aW5nUHJvcHMsIHNldHRpbmdPcHRpb24gfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgbGV0IGZpbmFsT3B0aW9uID0gZGVlcE1lcmdlKG9wdGlvbiwgc2V0dGluZ09wdGlvbik7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2IHN0eWxlPXt7IGhlaWdodDogXCIxMDAlXCIsIHdpZHRoOiBcIjEwMCVcIiB9fT5cclxuICAgICAgICB7cGFnZUxvYWRpbmcgPyAoXHJcbiAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiBcIjEwMCVcIiwgaGVpZ2h0OiBcIjEwMCVcIiB9fT5cclxuICAgICAgICAgICAgPFNwaW4gc3Bpbm5pbmc9e3BhZ2VMb2FkaW5nfT48L1NwaW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApIDogKFxyXG4gICAgICAgICAgPENoYXJ0XHJcbiAgICAgICAgICAgIG9wdGlvbj17ZmluYWxPcHRpb259XHJcbiAgICAgICAgICAgIHsuLi5zZXR0aW5nUHJvcHN9XHJcbiAgICAgICAgICAgIHsuLi5jaGFydFByb3BzfVxyXG4gICAgICAgICAgICByZWY9e3RoaXMuY2hhcnRSZWZ9XHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICl9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsT0FBT0EsS0FBSyxNQUFNLGtCQUFrQjtBQUNwQyxPQUFPQyxJQUFJLE1BQU0saUJBQWlCO0FBQ2xDLE9BQU9DLEtBQUssTUFBTSxPQUFPO0FBQ3pCLE9BQU9DLFVBQVUsTUFBTSxhQUFhO0FBSXBDLFNBQVNDLFNBQVMsUUFBUSxhQUFhO0FBQ3ZDLE9BQU9DLE1BQU0sTUFBTSxRQUFRO0FBRTNCLE9BQU8sTUFBTUMsY0FBYyxHQUFJQyxNQUFXLElBQUs7RUFDN0MsSUFBSUMsR0FBRyxHQUFHLG9DQUFvQztFQUM5QyxPQUFPTCxVQUFVLENBQUNNLEdBQUcsQ0FBQ0QsR0FBRyxFQUFFO0lBQ3pCRCxNQUFNO0lBQ05HLFNBQVMsRUFBRSxLQUFLO0lBQ2hCQyxVQUFVLEVBQUU7RUFDZCxDQUFDLENBQUM7QUFDSixDQUFDO0FBVUQsT0FBTyxNQUFNQyxjQUFjLEdBQUlDLElBQUksSUFBSztFQUN0QyxJQUFJQyxLQUFLLEdBQUdDLElBQUksQ0FBQ0MsS0FBSyxDQUFDSCxJQUFJLENBQUNDLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO0VBQ2hELElBQUlHLGNBQWMsR0FBR0YsSUFBSSxDQUFDQyxLQUFLLENBQUNILElBQUksQ0FBQ0ssVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7RUFDOUQsSUFBSUMsVUFBVSxHQUFHSixJQUFJLENBQUNDLEtBQUssQ0FBQ0gsSUFBSSxDQUFDTSxVQUFVLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxD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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["Chart","Spin","React","NscRequest","deepMerge","loadsh","getSettingData","params","url","get","xssFilter","autoPrefix","getFormSetting","data","forms","JSON","parse","selfFormButton","selfButton","otherProps","formType","props","formSetting","SettingForm","Component","constructor","arguments","_defineProperty","otherPorps","settingOption","settingProps","width","height","pageLoading","createRef","res","componentDidMount","getData","componentDidUpdate","prevProps","prevState","snapshot","chartCode","setState","published","code","isPublished","_objectSpread","then","chartProps","customOption","option","defaultOption","showOption","cloneDeep","type","xAxis","series","forEach","item","value","name","customOptionObj","func","Function","e","finalOption","_message","error","render","state","_this","createElement","style","spinning","_extends"],"sources":["../../../src/components/page/SettingChart/index.tsx"],"sourcesContent":["import Chart from \"../../base/chart\";\r\nimport Spin from \"../../base/spin\";\r\nimport React from \"react\";\r\nimport NscRequest from \"nsc-request\";\r\nimport cls from \"classnames\";\r\nimport { message } from \"antd\";\r\nimport { ChartProps } from \"../../base/chart\";\r\nimport { deepMerge } from \"../../utils\";\r\nimport loadsh from \"lodash\";\r\n\r\nexport const getSettingData = (params: any) => {\r\n let url = \"/jquick-setting/setting/chart/info\";\r\n return NscRequest.get(url, {\r\n params,\r\n xssFilter: false,\r\n autoPrefix: true,\r\n });\r\n};\r\n\r\ninterface IProps {\r\n chartCode: string;\r\n funcs?: any;\r\n published?: boolean;\r\n chartProps?: ChartProps;\r\n [propName: string]: any;\r\n}\r\n\r\nexport const getFormSetting = (data) => {\r\n let forms = JSON.parse(data.forms || \"[]\") || [];\r\n let selfFormButton = JSON.parse(data.selfButton || \"[]\") || [];\r\n let otherProps = JSON.parse(data.otherProps || \"{}\") || {};\r\n let formType = data.formType;\r\n let props = JSON.parse(data.props || \"{}\") || {};\r\n let formSetting = {\r\n formType: formType,\r\n selfButton: selfFormButton,\r\n props: props,\r\n otherProps: otherProps,\r\n forms: forms,\r\n };\r\n return formSetting;\r\n};\r\nexport default class SettingForm extends React.Component<IProps, any> {\r\n state = {\r\n otherPorps: {},\r\n settingOption: {},\r\n settingProps: { width: 500, height: 500 },\r\n pageLoading: true,\r\n };\r\n pageRef = React.createRef<any>();\r\n\r\n componentDidMount(): void {\r\n this.getData();\r\n }\r\n\r\n componentDidUpdate(\r\n prevProps: Readonly<IProps>,\r\n prevState: Readonly<any>,\r\n snapshot?: any\r\n ): void {\r\n if (prevProps.chartCode != this.props.chartCode) {\r\n this.setState({}, () => {\r\n this.getData();\r\n });\r\n }\r\n }\r\n\r\n initData = (res: any) => {};\r\n // 获取数据\r\n getData() {\r\n // 从props中获取tableCode、published、menuCode\r\n this.setState({\r\n pageLoading: true,\r\n });\r\n const { chartCode, published = true } = this.props;\r\n // 如果tableCode存在\r\n if (chartCode) {\r\n // 定义参数\r\n let params = { code: chartCode } as any;\r\n // 如果published为true\r\n if (published) {\r\n // 设置参数isPublished为1\r\n params.isPublished = 1;\r\n }\r\n // 调用getPageData方法获取数据\r\n getSettingData({ ...params }).then((res: any) => {\r\n if (res.code == 200 && res.data) {\r\n let chartProps = JSON.parse(res.data.props || \"{}\") || {};\r\n let otherProps = JSON.parse(res.data.otherProps || \"{}\") || {};\r\n let customOption = res.data.customOption;\r\n let option = JSON.parse(res.data.defaultOption || \"{}\");\r\n const showOption = loadsh.cloneDeep(option);\r\n if (otherProps.type == \"lineBar\") {\r\n if (showOption.xAxis) {\r\n showOption.xAxis.data = \"{\" + showOption.xAxis.data + \"}\";\r\n }\r\n if (showOption.series) {\r\n showOption.series.forEach((item: any) => {\r\n if (item.data) {\r\n item.data = \"{\" + item.data + \"}\";\r\n }\r\n });\r\n }\r\n } else if (otherProps.type == \"pie\") {\r\n showOption.series.data.value =\r\n \"{\" + showOption.series.data.value + \"}\";\r\n showOption.series.data.name =\r\n \"{\" + showOption.series.data.name + \"}\";\r\n }\r\n let customOptionObj = {};\r\n if (customOption) {\r\n try {\r\n const func = new Function(customOption);\r\n customOptionObj = func();\r\n } catch (e) {}\r\n }\r\n const finalOption = deepMerge(showOption, customOptionObj);\r\n\r\n this.setState(\r\n {\r\n otherPorps: otherProps,\r\n settingOption: finalOption,\r\n settingProps: chartProps,\r\n },\r\n () => {\r\n this.setState({\r\n pageLoading: false,\r\n });\r\n }\r\n );\r\n } else if (res.code == 200 && res.data == null) {\r\n message.error(\"未找到配置信息!\");\r\n } else {\r\n this.setState({\r\n pageLoading: false,\r\n });\r\n }\r\n });\r\n } else {\r\n this.setState({\r\n pageLoading: false,\r\n });\r\n }\r\n }\r\n render() {\r\n const { chartProps = {} as any } = this.props;\r\n let { option = {} } = chartProps;\r\n const { pageLoading, settingProps, settingOption } = this.state;\r\n let _this = this;\r\n let finalOption = deepMerge(option, settingOption);\r\n return (\r\n <div style={{ height: \"100%\", width: \"100%\" }}>\r\n {pageLoading ? (\r\n <div style={{ width: \"100%\", height: \"100%\" }}>\r\n <Spin spinning={pageLoading}></Spin>\r\n </div>\r\n ) : (\r\n <Chart option={finalOption} {...settingProps} {...chartProps} />\r\n )}\r\n </div>\r\n );\r\n }\r\n}\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["Chart","Spin","React","NscRequest","deepMerge","loadsh","getSettingData","params","url","get","xssFilter","autoPrefix","getFormSetting","data","forms","JSON","parse","selfFormButton","selfButton","otherProps","formType","props","formSetting","SettingForm","Component","constructor","arguments","_defineProperty","otherPorps","settingOption","settingProps","width","height","pageLoading","createRef","componentDidMount","getData","componentDidUpdate","prevProps","prevState","snapshot","chartCode","setState","chartLoad","_this$chartRef","length","undefined","chartRef","current","published","code","isPublished","_objectSpread","then","res","chartProps","customOption","option","defaultOption","showOption","cloneDeep","type","xAxis","series","forEach","item","value","name","customOptionObj","func","Function","e","finalOption","_message","error","render","state","_this","createElement","style","spinning","_extends","ref"],"sources":["../../../src/components/page/SettingChart/index.tsx"],"sourcesContent":["import Chart from \"../../base/chart\";\r\nimport Spin from \"../../base/spin\";\r\nimport React from \"react\";\r\nimport NscRequest from \"nsc-request\";\r\nimport cls from \"classnames\";\r\nimport { message } from \"antd\";\r\nimport { ChartProps } from \"../../base/chart\";\r\nimport { deepMerge } from \"../../utils\";\r\nimport loadsh from \"lodash\";\r\n\r\nexport const getSettingData = (params: any) => {\r\n let url = \"/jquick-setting/setting/chart/info\";\r\n return NscRequest.get(url, {\r\n params,\r\n xssFilter: false,\r\n autoPrefix: true,\r\n });\r\n};\r\n\r\ninterface IProps {\r\n chartCode: string;\r\n funcs?: any;\r\n published?: boolean;\r\n chartProps?: ChartProps;\r\n [propName: string]: any;\r\n}\r\n\r\nexport const getFormSetting = (data) => {\r\n let forms = JSON.parse(data.forms || \"[]\") || [];\r\n let selfFormButton = JSON.parse(data.selfButton || \"[]\") || [];\r\n let otherProps = JSON.parse(data.otherProps || \"{}\") || {};\r\n let formType = data.formType;\r\n let props = JSON.parse(data.props || \"{}\") || {};\r\n let formSetting = {\r\n formType: formType,\r\n selfButton: selfFormButton,\r\n props: props,\r\n otherProps: otherProps,\r\n forms: forms,\r\n };\r\n return formSetting;\r\n};\r\nexport default class SettingForm extends React.Component<IProps, any> {\r\n state = {\r\n otherPorps: {},\r\n settingOption: {},\r\n settingProps: { width: 500, height: 500 },\r\n pageLoading: true,\r\n };\r\n pageRef = React.createRef<any>();\r\n chartRef = React.createRef<any>();\r\n\r\n componentDidMount(): void {\r\n this.getData();\r\n }\r\n\r\n componentDidUpdate(\r\n prevProps: Readonly<IProps>,\r\n prevState: Readonly<any>,\r\n snapshot?: any\r\n ): void {\r\n if (prevProps.chartCode != this.props.chartCode) {\r\n this.setState({}, () => {\r\n this.getData();\r\n });\r\n }\r\n }\r\n\r\n chartLoad(params = {}) {\r\n this.chartRef?.current?.chartLoad(params);\r\n }\r\n // 获取数据\r\n getData() {\r\n // 从props中获取tableCode、published、menuCode\r\n this.setState({\r\n pageLoading: true,\r\n });\r\n const { chartCode, published = true } = this.props;\r\n // 如果tableCode存在\r\n if (chartCode) {\r\n // 定义参数\r\n let params = { code: chartCode } as any;\r\n // 如果published为true\r\n if (published) {\r\n // 设置参数isPublished为1\r\n params.isPublished = 1;\r\n }\r\n // 调用getPageData方法获取数据\r\n getSettingData({ ...params }).then((res: any) => {\r\n if (res.code == 200 && res.data) {\r\n let chartProps = JSON.parse(res.data.props || \"{}\") || {};\r\n let otherProps = JSON.parse(res.data.otherProps || \"{}\") || {};\r\n let customOption = res.data.customOption;\r\n let option = JSON.parse(res.data.defaultOption || \"{}\");\r\n const showOption = loadsh.cloneDeep(option);\r\n if (otherProps.type == \"lineBar\") {\r\n if (showOption.xAxis) {\r\n showOption.xAxis.data = \"{\" + showOption.xAxis.data + \"}\";\r\n }\r\n if (showOption.series) {\r\n showOption.series.forEach((item: any) => {\r\n if (item.data) {\r\n item.data = \"{\" + item.data + \"}\";\r\n }\r\n });\r\n }\r\n } else if (otherProps.type == \"pie\") {\r\n showOption.series.data.value =\r\n \"{\" + showOption.series.data.value + \"}\";\r\n showOption.series.data.name =\r\n \"{\" + showOption.series.data.name + \"}\";\r\n }\r\n let customOptionObj = {};\r\n if (customOption) {\r\n try {\r\n const func = new Function(customOption);\r\n customOptionObj = func();\r\n } catch (e) {}\r\n }\r\n const finalOption = deepMerge(showOption, customOptionObj);\r\n\r\n this.setState(\r\n {\r\n otherPorps: otherProps,\r\n settingOption: finalOption,\r\n settingProps: chartProps,\r\n },\r\n () => {\r\n this.setState({\r\n pageLoading: false,\r\n });\r\n }\r\n );\r\n } else if (res.code == 200 && res.data == null) {\r\n message.error(\"未找到配置信息!\");\r\n } else {\r\n this.setState({\r\n pageLoading: false,\r\n });\r\n }\r\n });\r\n } else {\r\n this.setState({\r\n pageLoading: false,\r\n });\r\n }\r\n }\r\n render() {\r\n const { chartProps = {} as any } = this.props;\r\n let { option = {} } = chartProps;\r\n const { pageLoading, settingProps, settingOption } = this.state;\r\n let _this = this;\r\n let finalOption = deepMerge(option, settingOption);\r\n return (\r\n <div style={{ height: \"100%\", width: \"100%\" }}>\r\n {pageLoading ? (\r\n <div style={{ width: \"100%\", height: \"100%\" }}>\r\n <Spin spinning={pageLoading}></Spin>\r\n </div>\r\n ) : (\r\n <Chart\r\n option={finalOption}\r\n {...settingProps}\r\n {...chartProps}\r\n ref={this.chartRef}\r\n />\r\n )}\r\n </div>\r\n );\r\n }\r\n}\r\n"],"mappings":"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"}
|