fmode-ng 0.0.239 → 0.0.241

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/README.md CHANGED
@@ -9,6 +9,21 @@
9
9
  npm install -S fmode-ng
10
10
  ```
11
11
 
12
+ # Rules 包依赖管理特别事项
13
+
14
+ - 以core库为核心
15
+ - 不依赖任何兼容性问题库
16
+ - 优先引用node/browser都兼容的esm库,尽量避免cjs
17
+ - 以前依赖的弱兼容库,需要及时升级替换或者重构
18
+ - 为core库添加非ui/angular依赖
19
+ - package.json depandencies
20
+ - ng-package.json allowedNonPeerDependencies
21
+ - package.json 各依赖项说明
22
+ - peerDependencies peerDependenciesMeta
23
+ - 用于声明相关性,不自动安装,仅约束兼容性报错
24
+ - 尽量减少,只写@angular大版本,方便升级增加新版本号
25
+ - dependencies 会自动安装的核心依赖库
26
+ - 每个库需要精挑细选,如果处了问题,请全局排查升级
12
27
 
13
28
  # Contrib
14
29
  This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 15.1.0.
@@ -87,4 +87,4 @@ export class AgentTaskStep {
87
87
  });
88
88
  }
89
89
  }
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQudGFzay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Ztb2RlLW5nL3NyYy9saWIvY29yZS9hZ2VudC90YXNrL2FnZW50LnRhc2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0NBQWtDO0FBQ2xDLG1CQUFtQjtBQUNuQixJQUFJO0FBRUosT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQWdCLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQVczRixNQUFNLE9BQU8sYUFBYTtJQVd0QixPQUFPO1FBQ0gsSUFBRyxJQUFJLENBQUMsV0FBVyxFQUFDLENBQUM7WUFDakIsSUFBSSxDQUFDLFVBQVUsRUFBRSxTQUFTLElBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQzVFLENBQUM7UUFDRCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBZUQsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUE7SUFDOUMsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLENBQUM7UUFDVixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBTUQsWUFBWSxRQUtYO1FBNUNELE9BQU87UUFDUCxjQUFTLEdBQU8sRUFBRSxDQUFBO1FBQ2xCLE9BQU87UUFDUCxTQUFJLEdBQU8sRUFBRSxDQUFBO1FBV2IsUUFBUTtRQUNSLFlBQU8sR0FBMEIsRUFBRSxDQUFBO1FBQ25DLFNBQVM7UUFDVCxzQkFBaUIsR0FBVyxLQUFLLENBQUM7UUFDbEMsU0FBUztRQUNULGVBQVUsR0FBVyxLQUFLLENBQUM7UUFDM0IsU0FBUztRQUNULGNBQVMsR0FBVyxLQUFLLENBQUM7UUFFMUIsVUFBVTtRQUNWLDZDQUE2QztRQUM3QyxtQkFBYyxHQUFXLEtBQUssQ0FBQztRQUMvQixpQkFBWSxHQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVE7UUFDakMsY0FBUyxHQUFVLENBQUMsQ0FBQyxDQUFDLG1CQUFtQjtRQVF6QyxZQUFPLEdBQVUsRUFBRSxDQUFDLENBQUMsT0FBTztRQUM1QixVQUFLLEdBQVUsRUFBRSxDQUFDLENBQUMsT0FBTztRQUMxQixZQUFPLEdBQWlCLEVBQUUsQ0FBQSxDQUFDLE9BQU87UUFROUIsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLEVBQUUsS0FBSyxDQUFDO1FBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxFQUFFLFNBQVMsQ0FBQztRQUNyQyxJQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsRUFBRSxjQUFjLElBQUksS0FBSyxDQUFDO1FBQ3hELElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxFQUFFLE1BQU0sQ0FBQztJQUNuQyxDQUFDO0lBV0QsaUJBQWlCO1FBQ2IsSUFBSSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsQ0FBQTtRQUNoQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQy9CLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUMsRUFBRTtZQUMxQjs7Ozs7Ozs7ZUFRRztZQUNDLFNBQVMsOEJBQThCLENBQUMsU0FBZ0IsRUFBRSxhQUFvQjtnQkFDMUUsWUFBWTtnQkFDWixNQUFNLEtBQUssR0FBRyxTQUFTLEdBQUcsQ0FBQyxDQUFDO2dCQUU1Qiw4QkFBOEI7Z0JBQzlCLE9BQU8sUUFBUSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsQ0FBQyxJQUFJO2dCQUN2QyxrQkFBa0I7Z0JBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUM7Z0JBQ2YsbUJBQW1CO2dCQUNuQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNoQiwrQkFBK0I7Z0JBQzlCLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDVixpQkFBaUI7b0JBQ2pCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLHFCQUFxQjtvQkFDL0QsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO2dCQUN4QyxDQUFDLENBQUMsQ0FDTCxDQUFDO1lBQ04sQ0FBQztZQUVELE9BQU87WUFDUCxJQUFJLFNBQVMsR0FBRyw4QkFBOEIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFDLElBQUksQ0FBQyxDQUFDO1lBRTVELElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQztnQkFDcEMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFO29CQUNWLHNCQUFzQjtvQkFDdEIsbUJBQW1CO29CQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQTtnQkFDekIsQ0FBQztnQkFDRCxRQUFRLEVBQUUsR0FBRyxFQUFFO29CQUNYLElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLENBQUM7b0JBQ2pDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDZCw0QkFBNEI7Z0JBQ2hDLENBQUM7YUFDSixDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQTtJQUNWLENBQUM7Q0FHSiIsInNvdXJjZXNDb250ZW50IjpbIi8vIGV4cG9ydCBpbnRlcmZhY2UgQWdlbnRUYXNrU3RlcHtcclxuLy8gICAgIHRpdGxlOnN0cmluZ1xyXG4vLyB9XHJcblxyXG5pbXBvcnQgeyBjb25jYXRNYXAsIGRlbGF5LCBpbnRlcnZhbCwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgU3Vic2NyaXB0aW9uLCB0YWtlIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgRm1BZ2VudFRhc2tDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vLi4vYWlnYy9hZ2VudC9mbS1hZ2VudC10YXNrL2ZtLWFnZW50LXRhc2suY29tcG9uZW50XCI7XHJcblxyXG5cclxuaW50ZXJmYWNlIEFnZW50VGFza0J1dHRvbntcclxuICAgIG5hbWU6c3RyaW5nXHJcbiAgICBoYW5kbGU6eyhvcHRpb25zPzphbnkpOnZvaWR9XHJcbiAgICBpc1Nob3c/OkZ1bmN0aW9uXHJcbiAgICBjb2xvcj86c3RyaW5nXHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBBZ2VudFRhc2tTdGVwe1xyXG4gICAgdGl0bGU6c3RyaW5nO1xyXG4gICAgXHJcbiAgICAvLyDlhbHkuqvmlbDmja5cclxuICAgIHNoYXJlRGF0YTphbnkgPSB7fVxyXG4gICAgLy8g56eB5pyJ5pWw5o2uXHJcbiAgICBkYXRhOmFueSA9IHt9XHJcblxyXG4gICAgLy8g54i257qn57uE5Lu25Lyg6YCSXHJcbiAgICBwYXJlbnRDb21wOkZtQWdlbnRUYXNrQ29tcG9uZW50fHVuZGVmaW5lZFxyXG4gICAgcGFyZW50SW5kZXg6bnVtYmVyfHVuZGVmaW5lZFxyXG4gICAgcmVzdGFydCgpe1xyXG4gICAgICAgIGlmKHRoaXMucGFyZW50SW5kZXgpe1xyXG4gICAgICAgICAgICB0aGlzLnBhcmVudENvbXA/LnN0YXJ0VGFzayYmdGhpcy5wYXJlbnRDb21wPy5zdGFydFRhc2sodGhpcy5wYXJlbnRJbmRleClcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5saW1pdFN0YXJ0ID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyDoh6rlrprkuYnmjInpkq5cclxuICAgIGJ1dHRvbnM6QXJyYXk8QWdlbnRUYXNrQnV0dG9uPiA9IFtdXHJcbiAgICAvLyDmraXpqqTmk43kvZzmjInpkq5cclxuICAgIHJlc3RhcnRCdXR0b25TaG93OmJvb2xlYW4gPSBmYWxzZTtcclxuICAgIC8vIOatpemqpOmZkOWItuW8gOWni1xyXG4gICAgbGltaXRTdGFydDpib29sZWFuID0gZmFsc2U7XHJcbiAgICAvLyDlj5bmtojmiYDmnInku7vliqFcclxuICAgIGNhbmNlbEFsbDpib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLy8g6L+b5bqm5LiO6ZSZ6K+v5o+Q56S6XHJcbiAgICAvLyDpgInpobnvvJrpmpDol4/ov5vluqbmnaHvvIzlr7nkuo7mlbDmja7loavlhpnlkozpgInmi6nnsbvmraXpqqTvvIzlj6/ku6XpmpDol4/ov5vluqbmnaHvvIzku6Xnu5PmnpzmoKHpqozliKTlrprmmK/lkKbkuIvkuIDmraVcclxuICAgIHByb2dyZXNzSGlkZGVuOmJvb2xlYW4gPSBmYWxzZTtcclxuICAgIF9zaW1Qcm9ncmVzczpudW1iZXIgPSAwOyAvLyDmqKHmi5/ov5vluqbmnaFcclxuICAgIF9wcm9ncmVzczpudW1iZXIgPSAwOyAvLyDlrp7pmYXov5vluqbmnaEg5LyY5YWI6L+U5Zue5pWw5o2u5aSE55CG6L+b5bqmXHJcbiAgICBnZXQgcHJvZ3Jlc3MoKXtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcHJvZ3Jlc3MgfHwgdGhpcy5fc2ltUHJvZ3Jlc3NcclxuICAgIH1cclxuICAgIHNldCBwcm9ncmVzcyh2KXtcclxuICAgICAgICB0aGlzLl9wcm9ncmVzcyA9IHY7XHJcbiAgICB9XHJcblxyXG4gICAgbWVzc2FnZTpzdHJpbmcgPSBcIlwiOyAvLyDnu5PmnpzmloflrZdcclxuICAgIGVycm9yOnN0cmluZyA9ICcnOyAvLyDplJnor6/mj5DnpLpcclxuICAgIGxvZ0xpc3Q6QXJyYXk8c3RyaW5nPiA9IFtdIC8vIOaJp+ihjOaXpeW/l1xyXG4gICAgXHJcbiAgICBjb25zdHJ1Y3RvcihtZXRhRGF0YTp7XHJcbiAgICAgICAgdGl0bGU6c3RyaW5nXHJcbiAgICAgICAgc2hhcmVEYXRhPzphbnlcclxuICAgICAgICBwcm9ncmVzc0hpZGRlbj86Ym9vbGVhblxyXG4gICAgICAgIGhhbmRsZT86eygpOlByb21pc2U8YW55Pn1cclxuICAgIH0pe1xyXG4gICAgICAgIHRoaXMudGl0bGUgPSBtZXRhRGF0YT8udGl0bGU7XHJcbiAgICAgICAgdGhpcy5zaGFyZURhdGEgPSBtZXRhRGF0YT8uc2hhcmVEYXRhO1xyXG4gICAgICAgIHRoaXMucHJvZ3Jlc3NIaWRkZW4gPSBtZXRhRGF0YT8ucHJvZ3Jlc3NIaWRkZW4gfHwgZmFsc2U7XHJcbiAgICAgICAgdGhpcy5oYW5kbGUgPSBtZXRhRGF0YT8uaGFuZGxlO1xyXG4gICAgfVxyXG4gICAgICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiDku7vliqHlpITnkIblh73mlbBcclxuICAgICAqIEByZXR1cm5zIFByb21pc2U8Ym9vbGVhbj5cclxuICAgICAqIHJlc29sdmUodHJ1ZSkg5omn6KGM5oiQ5YqfXHJcbiAgICAgKiByZXNvbHZlKGZhbHNlKSDmiafooYzlpLHotKVcclxuICAgICAqIHJlamVjdCgpIOawuOS4jeinpuWPkVxyXG4gICAgICogICovIFxyXG4gICAgaGFuZGxlOnsoKTpQcm9taXNlPGJvb2xlYW4+fXx1bmRlZmluZWRcclxuICAgIHByb2dyZXNzU3ViJDpTdWJzY3JpcHRpb258dW5kZWZpbmVkXHJcbiAgICBzaW11bGF0b3JQcm9ncmVzcygpe1xyXG4gICAgICAgIHRoaXMucHJvZ3Jlc3NTdWIkPy51bnN1YnNjcmliZSgpXHJcbiAgICAgICAgdGhpcy5yZXN0YXJ0QnV0dG9uU2hvdyA9IGZhbHNlO1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSk9PntcclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIOekuuS+i++8muS7u+WKoeWkhOeQhuaooeaLn+WHveaVsFxyXG4gICAgICAgICAgICAgKiBAZGVzY1xyXG4gICAgICAgICAgICAgKiAxLumdnuagh+WHhuS7u+WKoe+8jOS9nOS4uui/m+W6puWKoOi9veWKqOeUu+S9v+eUqFxyXG4gICAgICAgICAgICAgKiAyLuWPr+iuoemHj+S7u+WKoe+8jOWPr+S4jeeUqOivpeWHveaVsO+8jOiHquWumuS5ieWkhOeQhuWHveaVsO+8jOS9humcgOimgeWQiOeQhuaOp+WItnRoaXMucHJvZ3Jlc3NcclxuICAgICAgICAgICAgICogQHBhcmFtIG1heE51bWJlciDmnIDlpKfnmb7liIbmr5RcclxuICAgICAgICAgICAgICogQHBhcmFtIHRvdGFsRHVyYXRpb24g5oC75L2T5Yqg6L295pe26Ze0XHJcbiAgICAgICAgICAgICAqIEByZXR1cm5zIFxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHByb2dyZXNzSGFuZGxlckluY3JlYXNpbmdTcGVlZChtYXhOdW1iZXI6bnVtYmVyLCB0b3RhbER1cmF0aW9uOm51bWJlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIOaAu+WFsei+k+WHuueahOaVsOWtl+S4quaVsFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvdW50ID0gbWF4TnVtYmVyIC0gMTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5Yib5bu65LiA5Liqb2JzZXJ2YWJsZe+8jOagueaNruaMh+WumueahOaXtumXtOmXtOmalOWPkeWwhOWAvFxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcnZhbCh0b3RhbER1cmF0aW9uIC8gY291bnQpLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWPluWJjW1heOS4quWAvO+8iOS7jjDliLBtYXjvvIlcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFrZShtYXhOdW1iZXIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDlsIblj5HlsITnmoTlgLzmmKDlsITkuLrku44x5YiwOTDnmoTmlbDlrZdcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwKHggPT4geCArIDEpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgIC8vIOS9v+eUqGNvbmNhdE1hcOWSjGRlbGF55p2l5o6n5Yi25q+P5Liq5YC855qE5Y+R5bCE5pe26Ze0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmNhdE1hcChuID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOS9v+eUqOaMh+aVsOihsOWHj+WHveaVsOiwg+aVtOW7tui/n+aXtumXtFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVsYXlUaW1lID0gTWF0aC5leHAobiAvIDMwKSAqIDEwMDsgLy8g5Y+v5Lul6LCD5pW06L+Z6YeM55qE57O75pWw5p2l5pS55Y+Y6YCf5bqm5Y+Y5YyW5puy57q/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YobikucGlwZShkZWxheShkZWxheVRpbWUpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8vIOS9v+eUqOekuuS+i1xyXG4gICAgICAgICAgICAgICAgbGV0IHByb2dyZXNzJCA9IHByb2dyZXNzSGFuZGxlckluY3JlYXNpbmdTcGVlZCg4MCwgMTAqMTAwMCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9ncmVzc1N1YiQgPSBwcm9ncmVzcyQuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgICAgICBuZXh0OiB2YWx1ZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g6L+Z6YeM5Y+v5Lul5pu05paw6L+b5bqm5p2h5oiW6ICF5YGa5YW25LuW5pON5L2cXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3MgPSB2YWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9ncmVzc1N1YiQ/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdDb21wbGV0ZWQhJylcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSlcclxuICAgIH1cclxuXHJcblxyXG59Il19
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQudGFzay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Ztb2RlLW5nL3NyYy9saWIvY29yZS9hZ2VudC90YXNrL2FnZW50LnRhc2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0NBQWtDO0FBQ2xDLG1CQUFtQjtBQUNuQixJQUFJO0FBRUosT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQWdCLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQVczRixNQUFNLE9BQU8sYUFBYTtJQVd0QixPQUFPO1FBQ0gsSUFBRyxJQUFJLENBQUMsV0FBVyxFQUFDLENBQUM7WUFDakIsSUFBSSxDQUFDLFVBQVUsRUFBRSxTQUFTLElBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQzVFLENBQUM7UUFDRCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBZUQsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUE7SUFDOUMsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLENBQUM7UUFDVixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBTUQsWUFBWSxRQUtYO1FBNUNELE9BQU87UUFDUCxjQUFTLEdBQU8sRUFBRSxDQUFBO1FBQ2xCLE9BQU87UUFDUCxTQUFJLEdBQU8sRUFBRSxDQUFBO1FBV2IsUUFBUTtRQUNSLFlBQU8sR0FBMEIsRUFBRSxDQUFBO1FBQ25DLFNBQVM7UUFDVCxzQkFBaUIsR0FBVyxLQUFLLENBQUM7UUFDbEMsU0FBUztRQUNULGVBQVUsR0FBVyxLQUFLLENBQUM7UUFDM0IsU0FBUztRQUNULGNBQVMsR0FBVyxLQUFLLENBQUM7UUFFMUIsVUFBVTtRQUNWLDZDQUE2QztRQUM3QyxtQkFBYyxHQUFXLEtBQUssQ0FBQztRQUMvQixpQkFBWSxHQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVE7UUFDakMsY0FBUyxHQUFVLENBQUMsQ0FBQyxDQUFDLG1CQUFtQjtRQVF6QyxZQUFPLEdBQVUsRUFBRSxDQUFDLENBQUMsT0FBTztRQUM1QixVQUFLLEdBQVUsRUFBRSxDQUFDLENBQUMsT0FBTztRQUMxQixZQUFPLEdBQWlCLEVBQUUsQ0FBQSxDQUFDLE9BQU87UUFROUIsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLEVBQUUsS0FBSyxDQUFDO1FBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxFQUFFLFNBQVMsQ0FBQztRQUNyQyxJQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsRUFBRSxjQUFjLElBQUksS0FBSyxDQUFDO1FBQ3hELElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxFQUFFLE1BQU0sQ0FBQztJQUNuQyxDQUFDO0lBV0QsaUJBQWlCO1FBQ2IsSUFBSSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsQ0FBQTtRQUNoQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQy9CLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUMsRUFBRTtZQUMxQjs7Ozs7Ozs7ZUFRRztZQUNDLFNBQVMsOEJBQThCLENBQUMsU0FBZ0IsRUFBRSxhQUFvQjtnQkFDMUUsWUFBWTtnQkFDWixNQUFNLEtBQUssR0FBRyxTQUFTLEdBQUcsQ0FBQyxDQUFDO2dCQUU1Qiw4QkFBOEI7Z0JBQzlCLE9BQU8sUUFBUSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsQ0FBQyxJQUFJO2dCQUN2QyxrQkFBa0I7Z0JBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUM7Z0JBQ2YsbUJBQW1CO2dCQUNuQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNoQiwrQkFBK0I7Z0JBQzlCLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDVixpQkFBaUI7b0JBQ2pCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLHFCQUFxQjtvQkFDL0QsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO2dCQUN4QyxDQUFDLENBQUMsQ0FDTCxDQUFDO1lBQ04sQ0FBQztZQUVELE9BQU87WUFDUCxJQUFJLFNBQVMsR0FBRyw4QkFBOEIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFDLElBQUksQ0FBQyxDQUFDO1lBRTVELElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQztnQkFDcEMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFO29CQUNWLHNCQUFzQjtvQkFDdEIsbUJBQW1CO29CQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQTtnQkFDekIsQ0FBQztnQkFDRCxRQUFRLEVBQUUsR0FBRyxFQUFFO29CQUNYLElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLENBQUM7b0JBQ2pDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDZCw0QkFBNEI7Z0JBQ2hDLENBQUM7YUFDSixDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQTtJQUNWLENBQUM7Q0FHSiIsInNvdXJjZXNDb250ZW50IjpbIi8vIGV4cG9ydCBpbnRlcmZhY2UgQWdlbnRUYXNrU3RlcHtcclxuLy8gICAgIHRpdGxlOnN0cmluZ1xyXG4vLyB9XHJcblxyXG5pbXBvcnQgeyBjb25jYXRNYXAsIGRlbGF5LCBpbnRlcnZhbCwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgU3Vic2NyaXB0aW9uLCB0YWtlIH0gZnJvbSBcInJ4anNcIjtcclxuLy8gaW1wb3J0IHsgRm1BZ2VudFRhc2tDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vLi4vYWlnYy9hZ2VudC9mbS1hZ2VudC10YXNrL2ZtLWFnZW50LXRhc2suY29tcG9uZW50XCI7XHJcblxyXG5cclxuaW50ZXJmYWNlIEFnZW50VGFza0J1dHRvbntcclxuICAgIG5hbWU6c3RyaW5nXHJcbiAgICBoYW5kbGU6eyhvcHRpb25zPzphbnkpOnZvaWR9XHJcbiAgICBpc1Nob3c/OkZ1bmN0aW9uXHJcbiAgICBjb2xvcj86c3RyaW5nXHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBBZ2VudFRhc2tTdGVwe1xyXG4gICAgdGl0bGU6c3RyaW5nO1xyXG4gICAgXHJcbiAgICAvLyDlhbHkuqvmlbDmja5cclxuICAgIHNoYXJlRGF0YTphbnkgPSB7fVxyXG4gICAgLy8g56eB5pyJ5pWw5o2uXHJcbiAgICBkYXRhOmFueSA9IHt9XHJcblxyXG4gICAgLy8g54i257qn57uE5Lu25Lyg6YCSXHJcbiAgICBwYXJlbnRDb21wOmFueSB8IHVuZGVmaW5lZCAvLyBGbUFnZW50VGFza0NvbXBvbmVudFxyXG4gICAgcGFyZW50SW5kZXg6bnVtYmVyfHVuZGVmaW5lZFxyXG4gICAgcmVzdGFydCgpe1xyXG4gICAgICAgIGlmKHRoaXMucGFyZW50SW5kZXgpe1xyXG4gICAgICAgICAgICB0aGlzLnBhcmVudENvbXA/LnN0YXJ0VGFzayYmdGhpcy5wYXJlbnRDb21wPy5zdGFydFRhc2sodGhpcy5wYXJlbnRJbmRleClcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5saW1pdFN0YXJ0ID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyDoh6rlrprkuYnmjInpkq5cclxuICAgIGJ1dHRvbnM6QXJyYXk8QWdlbnRUYXNrQnV0dG9uPiA9IFtdXHJcbiAgICAvLyDmraXpqqTmk43kvZzmjInpkq5cclxuICAgIHJlc3RhcnRCdXR0b25TaG93OmJvb2xlYW4gPSBmYWxzZTtcclxuICAgIC8vIOatpemqpOmZkOWItuW8gOWni1xyXG4gICAgbGltaXRTdGFydDpib29sZWFuID0gZmFsc2U7XHJcbiAgICAvLyDlj5bmtojmiYDmnInku7vliqFcclxuICAgIGNhbmNlbEFsbDpib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLy8g6L+b5bqm5LiO6ZSZ6K+v5o+Q56S6XHJcbiAgICAvLyDpgInpobnvvJrpmpDol4/ov5vluqbmnaHvvIzlr7nkuo7mlbDmja7loavlhpnlkozpgInmi6nnsbvmraXpqqTvvIzlj6/ku6XpmpDol4/ov5vluqbmnaHvvIzku6Xnu5PmnpzmoKHpqozliKTlrprmmK/lkKbkuIvkuIDmraVcclxuICAgIHByb2dyZXNzSGlkZGVuOmJvb2xlYW4gPSBmYWxzZTtcclxuICAgIF9zaW1Qcm9ncmVzczpudW1iZXIgPSAwOyAvLyDmqKHmi5/ov5vluqbmnaFcclxuICAgIF9wcm9ncmVzczpudW1iZXIgPSAwOyAvLyDlrp7pmYXov5vluqbmnaEg5LyY5YWI6L+U5Zue5pWw5o2u5aSE55CG6L+b5bqmXHJcbiAgICBnZXQgcHJvZ3Jlc3MoKXtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcHJvZ3Jlc3MgfHwgdGhpcy5fc2ltUHJvZ3Jlc3NcclxuICAgIH1cclxuICAgIHNldCBwcm9ncmVzcyh2KXtcclxuICAgICAgICB0aGlzLl9wcm9ncmVzcyA9IHY7XHJcbiAgICB9XHJcblxyXG4gICAgbWVzc2FnZTpzdHJpbmcgPSBcIlwiOyAvLyDnu5PmnpzmloflrZdcclxuICAgIGVycm9yOnN0cmluZyA9ICcnOyAvLyDplJnor6/mj5DnpLpcclxuICAgIGxvZ0xpc3Q6QXJyYXk8c3RyaW5nPiA9IFtdIC8vIOaJp+ihjOaXpeW/l1xyXG4gICAgXHJcbiAgICBjb25zdHJ1Y3RvcihtZXRhRGF0YTp7XHJcbiAgICAgICAgdGl0bGU6c3RyaW5nXHJcbiAgICAgICAgc2hhcmVEYXRhPzphbnlcclxuICAgICAgICBwcm9ncmVzc0hpZGRlbj86Ym9vbGVhblxyXG4gICAgICAgIGhhbmRsZT86eygpOlByb21pc2U8YW55Pn1cclxuICAgIH0pe1xyXG4gICAgICAgIHRoaXMudGl0bGUgPSBtZXRhRGF0YT8udGl0bGU7XHJcbiAgICAgICAgdGhpcy5zaGFyZURhdGEgPSBtZXRhRGF0YT8uc2hhcmVEYXRhO1xyXG4gICAgICAgIHRoaXMucHJvZ3Jlc3NIaWRkZW4gPSBtZXRhRGF0YT8ucHJvZ3Jlc3NIaWRkZW4gfHwgZmFsc2U7XHJcbiAgICAgICAgdGhpcy5oYW5kbGUgPSBtZXRhRGF0YT8uaGFuZGxlO1xyXG4gICAgfVxyXG4gICAgICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiDku7vliqHlpITnkIblh73mlbBcclxuICAgICAqIEByZXR1cm5zIFByb21pc2U8Ym9vbGVhbj5cclxuICAgICAqIHJlc29sdmUodHJ1ZSkg5omn6KGM5oiQ5YqfXHJcbiAgICAgKiByZXNvbHZlKGZhbHNlKSDmiafooYzlpLHotKVcclxuICAgICAqIHJlamVjdCgpIOawuOS4jeinpuWPkVxyXG4gICAgICogICovIFxyXG4gICAgaGFuZGxlOnsoKTpQcm9taXNlPGJvb2xlYW4+fXx1bmRlZmluZWRcclxuICAgIHByb2dyZXNzU3ViJDpTdWJzY3JpcHRpb258dW5kZWZpbmVkXHJcbiAgICBzaW11bGF0b3JQcm9ncmVzcygpe1xyXG4gICAgICAgIHRoaXMucHJvZ3Jlc3NTdWIkPy51bnN1YnNjcmliZSgpXHJcbiAgICAgICAgdGhpcy5yZXN0YXJ0QnV0dG9uU2hvdyA9IGZhbHNlO1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSk9PntcclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIOekuuS+i++8muS7u+WKoeWkhOeQhuaooeaLn+WHveaVsFxyXG4gICAgICAgICAgICAgKiBAZGVzY1xyXG4gICAgICAgICAgICAgKiAxLumdnuagh+WHhuS7u+WKoe+8jOS9nOS4uui/m+W6puWKoOi9veWKqOeUu+S9v+eUqFxyXG4gICAgICAgICAgICAgKiAyLuWPr+iuoemHj+S7u+WKoe+8jOWPr+S4jeeUqOivpeWHveaVsO+8jOiHquWumuS5ieWkhOeQhuWHveaVsO+8jOS9humcgOimgeWQiOeQhuaOp+WItnRoaXMucHJvZ3Jlc3NcclxuICAgICAgICAgICAgICogQHBhcmFtIG1heE51bWJlciDmnIDlpKfnmb7liIbmr5RcclxuICAgICAgICAgICAgICogQHBhcmFtIHRvdGFsRHVyYXRpb24g5oC75L2T5Yqg6L295pe26Ze0XHJcbiAgICAgICAgICAgICAqIEByZXR1cm5zIFxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHByb2dyZXNzSGFuZGxlckluY3JlYXNpbmdTcGVlZChtYXhOdW1iZXI6bnVtYmVyLCB0b3RhbER1cmF0aW9uOm51bWJlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIOaAu+WFsei+k+WHuueahOaVsOWtl+S4quaVsFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvdW50ID0gbWF4TnVtYmVyIC0gMTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5Yib5bu65LiA5Liqb2JzZXJ2YWJsZe+8jOagueaNruaMh+WumueahOaXtumXtOmXtOmalOWPkeWwhOWAvFxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcnZhbCh0b3RhbER1cmF0aW9uIC8gY291bnQpLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWPluWJjW1heOS4quWAvO+8iOS7jjDliLBtYXjvvIlcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFrZShtYXhOdW1iZXIpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDlsIblj5HlsITnmoTlgLzmmKDlsITkuLrku44x5YiwOTDnmoTmlbDlrZdcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwKHggPT4geCArIDEpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgIC8vIOS9v+eUqGNvbmNhdE1hcOWSjGRlbGF55p2l5o6n5Yi25q+P5Liq5YC855qE5Y+R5bCE5pe26Ze0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmNhdE1hcChuID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOS9v+eUqOaMh+aVsOihsOWHj+WHveaVsOiwg+aVtOW7tui/n+aXtumXtFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVsYXlUaW1lID0gTWF0aC5leHAobiAvIDMwKSAqIDEwMDsgLy8g5Y+v5Lul6LCD5pW06L+Z6YeM55qE57O75pWw5p2l5pS55Y+Y6YCf5bqm5Y+Y5YyW5puy57q/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YobikucGlwZShkZWxheShkZWxheVRpbWUpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8vIOS9v+eUqOekuuS+i1xyXG4gICAgICAgICAgICAgICAgbGV0IHByb2dyZXNzJCA9IHByb2dyZXNzSGFuZGxlckluY3JlYXNpbmdTcGVlZCg4MCwgMTAqMTAwMCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9ncmVzc1N1YiQgPSBwcm9ncmVzcyQuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgICAgICBuZXh0OiB2YWx1ZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g6L+Z6YeM5Y+v5Lul5pu05paw6L+b5bqm5p2h5oiW6ICF5YGa5YW25LuW5pON5L2cXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3MgPSB2YWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9ncmVzc1N1YiQ/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdDb21wbGV0ZWQhJylcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSlcclxuICAgIH1cclxuXHJcblxyXG59Il19
@@ -1,3 +1,4 @@
1
+ import { FmodeACL } from "./datatype/acl";
1
2
  import { FmodeRelation } from "./datatype/relation";
2
3
  export class FmodeObject {
3
4
  static { this._instance = null; }
@@ -72,6 +73,13 @@ export class FmodeObject {
72
73
  return json;
73
74
  }
74
75
  // MARK: - 属性操作
76
+ setACL(acl) {
77
+ this.ACL = acl instanceof FmodeACL ? acl.toJSON() : acl;
78
+ return this;
79
+ }
80
+ getACL() {
81
+ return this.ACL;
82
+ }
75
83
  get(key) {
76
84
  if (this.data[key]?.__type == "Date") {
77
85
  return new Date(this.data[key]?.iso);
@@ -304,4 +312,4 @@ export class FmodeObject {
304
312
  // FmodeObject.registerSubclass = function(className: string, clazz: typeof FmodeObject) {
305
313
  // // 子类注册逻辑
306
314
  // };
307
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm1vZGUub2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm1vZGUtbmcvc3JjL2xpYi9jb3JlL3BhcnNlL2Ztb2RlLm9iamVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUF1QnBELE1BQU0sT0FBTyxXQUFXO2FBQ2YsY0FBUyxHQUFlLElBQUksQUFBbkIsQ0FBb0I7SUFFcEMsTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUFhO1FBQy9CLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO0lBQzVCLENBQUM7SUFVRCxZQUFZLFNBQWlCO1FBSDdCLFNBQUksR0FBd0IsRUFBRSxDQUFDO1FBSTdCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLHlCQUF5QjtRQUN6QixJQUFJLENBQUMsY0FBYyxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUM7SUFDOUMsQ0FBQztJQUVELGVBQWU7SUFFZixNQUFNLENBQUMsTUFBTSxDQUFDLFNBQWlCO1FBQzdCLE1BQU0sYUFBYSxHQUFHLEtBQU0sU0FBUSxXQUFXO1lBQzdDO2dCQUNFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNuQixDQUFDO1NBQ0YsQ0FBQztRQUVGLGFBQWE7UUFDYixhQUFhLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUM7UUFDMUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDO1FBQzFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQztRQUM5QyxhQUFhLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUM7UUFDOUMsYUFBYSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDO1FBQ3RELGFBQWEsQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLFNBQVMs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RCxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFDaEMsTUFBTSxFQUFFLE1BQU07WUFDZCxPQUFPO1lBQ1AsSUFBSSxFQUFFLFFBQVE7U0FDZixDQUFDLENBQUM7UUFFSCxNQUFNLE1BQU0sR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQyxJQUFJLE1BQU0sQ0FBQyxLQUFLO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFaEQsT0FBTztZQUNMLE1BQU0sRUFBRSxNQUFNO1lBQ2QsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1lBQ2pCLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRztTQUNoQixDQUFDO0lBQ0osQ0FBQzs7QUFHSCxZQUFZO0FBQ1osMEZBQTBGO0FBQzFGLGNBQWM7QUFDZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm1vZGVRdWVyeSB9IGZyb20gXCIuL2Ztb2RlLnF1ZXJ5XCI7XHJcbmltcG9ydCB7IEZtb2RlQUNMIH0gZnJvbSBcIi4vZGF0YXR5cGUvYWNsXCI7XHJcbmltcG9ydCB7IEZtb2RlR2VvUG9pbnQgfSBmcm9tIFwiLi9kYXRhdHlwZS9nZW9wb2ludFwiO1xyXG5pbXBvcnQgeyBGbW9kZVJlbGF0aW9uIH0gZnJvbSBcIi4vZGF0YXR5cGUvcmVsYXRpb25cIjtcclxuXHJcbi8vID09PT09PT09PT09PT09PT09PT09IENvcmUgVHlwZXMgPT09PT09PT09PT09PT09PT09PT1cclxudHlwZSBBQ0wgPSBSZWNvcmQ8c3RyaW5nLCB7IHJlYWQ6IGJvb2xlYW47IHdyaXRlOiBib29sZWFuIH0+O1xyXG50eXBlIEZpbGUgPSB7IF9fdHlwZTogJ0ZpbGUnOyBuYW1lOiBzdHJpbmc7IHVybDogc3RyaW5nIH07XHJcbnR5cGUgR2VvUG9pbnQgPSBGbW9kZUdlb1BvaW50fHsgX190eXBlOiAnR2VvUG9pbnQnOyBsYXRpdHVkZTogbnVtYmVyOyBsb25naXR1ZGU6IG51bWJlciB9O1xyXG50eXBlIFJlbGF0aW9uPFQgZXh0ZW5kcyBGbW9kZU9iamVjdD4gPSB7XHJcbiAgX190eXBlOiAnUmVsYXRpb24nO1xyXG4gIGNsYXNzTmFtZTogc3RyaW5nO1xyXG4gIGFkZDogKG9iamVjdHM6IFRbXSkgPT4gdm9pZDtcclxuICByZW1vdmU6IChvYmplY3RzOiBUW10pID0+IHZvaWQ7XHJcbiAgcXVlcnk6ICgpID0+IEZtb2RlUXVlcnk8VD47XHJcbn07XHJcblxyXG50eXBlIFBvaW50ZXIgPSB7IF9fdHlwZTogJ1BvaW50ZXInOyBjbGFzc05hbWU6IHN0cmluZzsgb2JqZWN0SWQ6IHN0cmluZyB9O1xyXG50eXBlIEJhc2VBdHRyaWJ1dGVzID0ge1xyXG4gIGlkPzogc3RyaW5nO1xyXG4gIGNyZWF0ZWRBdD86IERhdGU7XHJcbiAgdXBkYXRlZEF0PzogRGF0ZTtcclxuICBBQ0w/OiBBQ0wgfCBGbW9kZUFDTDtcclxufTtcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgRm1vZGVPYmplY3Qge1xyXG4gIHN0YXRpYyBfaW5zdGFuY2U6IGFueSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBzdGF0aWMgYmluZEluc3RhbmNlKGluc3RhbmNlOiBhbnkpIHtcclxuICAgIHRoaXMuX2luc3RhbmNlID0gaW5zdGFuY2U7XHJcbiAgfVxyXG5cclxuICBjbGFzc05hbWU6IHN0cmluZztcclxuICBpZD86IHN0cmluZztcclxuICBjcmVhdGVkQXQ/OiBEYXRlO1xyXG4gIHVwZGF0ZWRBdD86IERhdGU7XHJcbiAgQUNMPzogQUNMO1xyXG4gIGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcclxuICBwcml2YXRlIF9wYXJzZUluc3RhbmNlOiBhbnk7IC8vIOWunuS+i+e6p+WIq+eahHBhcnNl5a6e5L6LXHJcblxyXG4gIGNvbnN0cnVjdG9yKGNsYXNzTmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmNsYXNzTmFtZSA9IGNsYXNzTmFtZTtcclxuICAgIC8vIOWmguaenOmdmeaAgeWunuS+i+WtmOWcqO+8jOS9v+eUqOWug++8m+WQpuWImeiuvue9ruS4um51bGxcclxuICAgIHRoaXMuX3BhcnNlSW5zdGFuY2UgPSBGbW9kZU9iamVjdC5faW5zdGFuY2U7XHJcbiAgfVxyXG5cclxuICAvLyBNQVJLOiAtIOWfuuacrOaWueazlVxyXG5cclxuICBzdGF0aWMgZXh0ZW5kKGNsYXNzTmFtZTogc3RyaW5nKTogbmV3KCkgPT4gRm1vZGVPYmplY3Qge1xyXG4gICAgY29uc3QgRXh0ZW5kZWRDbGFzcyA9IGNsYXNzIGV4dGVuZHMgRm1vZGVPYmplY3Qge1xyXG4gICAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBzdXBlcihjbGFzc05hbWUpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgXHJcbiAgICAvLyDmt7vliqDpnZnmgIHmlrnms5XliLDmianlsZXnsbtcclxuICAgIEV4dGVuZGVkQ2xhc3MuZXh0ZW5kID0gRm1vZGVPYmplY3QuZXh0ZW5kO1xyXG4gICAgRXh0ZW5kZWRDbGFzcy5jcmVhdGUgPSBGbW9kZU9iamVjdC5jcmVhdGU7XHJcbiAgICBFeHRlbmRlZENsYXNzLmZldGNoQWxsID0gRm1vZGVPYmplY3QuZmV0Y2hBbGw7XHJcbiAgICBFeHRlbmRlZENsYXNzLmZyb21GaWxlID0gRm1vZGVPYmplY3QuZnJvbUZpbGU7XHJcbiAgICBFeHRlbmRlZENsYXNzLmJpbmRJbnN0YW5jZSA9IEZtb2RlT2JqZWN0LmJpbmRJbnN0YW5jZTtcclxuICAgIEV4dGVuZGVkQ2xhc3MuX2luc3RhbmNlID0gRm1vZGVPYmplY3QuX2luc3RhbmNlO1xyXG4gICAgXHJcbiAgICByZXR1cm4gRXh0ZW5kZWRDbGFzcyBhcyBhbnk7XHJcbiAgfVxyXG5cclxuICB0b1BvaW50ZXIoKTogUG9pbnRlciB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBfX3R5cGU6ICdQb2ludGVyJyxcclxuICAgICAgY2xhc3NOYW1lOiB0aGlzLmNsYXNzTmFtZSxcclxuICAgICAgb2JqZWN0SWQ6IHRoaXMuaWQhXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLy8gVXBkYXRlIHRoZSB0b0pTT04gbWV0aG9kIHRvIHByb3Blcmx5IGZvcm1hdCBkYXRlcyBhbmQgcG9pbnRlcnNcclxudG9KU09OKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xyXG4gIGNvbnN0IGpzb246IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7XHJcbiAgICBfX3R5cGU6ICdPYmplY3QnLFxyXG4gICAgY2xhc3NOYW1lOiB0aGlzLmNsYXNzTmFtZSxcclxuICAgIC4uLnRoaXMuZGF0YVxyXG4gIH07XHJcblxyXG4gIGlmICh0aGlzLmlkKSB7XHJcbiAgICBqc29uLm9iamVjdElkID0gdGhpcy5pZDtcclxuICB9XHJcblxyXG4gIE9iamVjdC5rZXlzKGpzb24pLmZvckVhY2goa2V5PT57XHJcbiAgICBpZiAoanNvbltrZXldPy5nZXRUaW1lPy4oKSkge1xyXG4gICAgICBqc29uW2tleV0gPSB7IF9fdHlwZTogJ0RhdGUnLCBpc286IGpzb25ba2V5XS50b0lTT1N0cmluZygpIH07XHJcbiAgICB9XHJcbiAgfSlcclxuXHJcbiAgLy8gRm9ybWF0IGRhdGVzIHByb3Blcmx5XHJcbiAgdHJ5e1xyXG4gICAgaWYgKHRoaXMuY3JlYXRlZEF0KSB7XHJcbiAgICAgICAgaWYodHlwZW9mIHRoaXMuY3JlYXRlZEF0PT1cInN0cmluZ1wiKXtcclxuICAgICAgICB0aGlzLmNyZWF0ZWRBdCA9IG5ldyBEYXRlKHRoaXMuY3JlYXRlZEF0KVxyXG4gICAgICB9XHJcbiAgICAgIGpzb24uY3JlYXRlZEF0ID0geyBfX3R5cGU6ICdEYXRlJywgaXNvOiB0aGlzLmNyZWF0ZWRBdC50b0lTT1N0cmluZygpIH07XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy51cGRhdGVkQXQpIHtcclxuICAgICAgaWYodHlwZW9mIHRoaXMudXBkYXRlZEF0PT1cInN0cmluZ1wiKXtcclxuICAgICAgICB0aGlzLnVwZGF0ZWRBdCA9IG5ldyBEYXRlKHRoaXMudXBkYXRlZEF0KVxyXG4gICAgICB9XHJcbiAgICAgIGNvbnNvbGUubG9nKHRoaXMudXBkYXRlZEF0KVxyXG4gICAgICBqc29uLnVwZGF0ZWRBdCA9IHsgX190eXBlOiAnRGF0ZScsIGlzbzogdGhpcy51cGRhdGVkQXQudG9JU09TdHJpbmcoKSB9O1xyXG4gICAgfVxyXG4gIH1jYXRjaChlcnIpe31cclxuICBcclxuICAvLyBIYW5kbGUgQUNMXHJcbiAgaWYgKHRoaXMuQUNMKSB7XHJcbiAgICBqc29uLkFDTCA9IHRoaXMuQUNMO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGpzb247XHJcbn1cclxuXHJcblxyXG4gIC8vIE1BUks6IC0g5bGe5oCn5pON5L2cXHJcblxyXG4gIGdldChrZXk6IHN0cmluZyk6IGFueSB7XHJcbiAgICBpZih0aGlzLmRhdGFba2V5XT8uX190eXBlPT1cIkRhdGVcIil7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMuZGF0YVtrZXldPy5pc28pXHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhW2tleV07XHJcbiAgfVxyXG5cclxuICBpc29TdHJUb0RhdGUodmFsdWU6YW55KXtcclxuICAgIGlmKHZhbHVlPy5pbmRleE9mPy4oXCJUXCIpPi0xJiZ2YWx1ZT8uaW5kZXhPZj8uKFwiWlwiKT4tMSYmdmFsdWU/Lmxlbmd0aD09MjQpe1xyXG4gICAgICB0cnl7ICBcclxuICAgICAgICBsZXQgdGltZSA9IG5ldyBEYXRlKHZhbHVlKTtcclxuICAgICAgICByZXR1cm4gdGltZVxyXG4gICAgICB9Y2F0Y2goZXJyKXtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlXHJcbiAgfVxyXG5cclxuICBzZXQoa2V5OiBzdHJpbmcgfCBSZWNvcmQ8c3RyaW5nLCBhbnk+LCB2YWx1ZT86IGFueSk6IHRoaXMge1xyXG5cclxuICAgIGlmICh0eXBlb2Yga2V5ID09PSAnb2JqZWN0Jykge1xyXG4gICAgICBPYmplY3Qua2V5cyhrZXkpLmZvckVhY2goaz0+e1xyXG4gICAgICAgIGlmKGtleVtrXT8uaW5kZXhPZj8uKFwiVFwiKT4tMSYma2V5W2tdPy5pbmRleE9mPy4oXCJaXCIpPi0xKXtcclxuICAgICAgICAgIGtleVtrXSA9IHRoaXMuaXNvU3RyVG9EYXRlKGtleVtrXSlcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcblxyXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMuZGF0YSwga2V5KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmKHZhbHVlKXtcclxuICAgICAgICB2YWx1ZSA9IHRoaXMuaXNvU3RyVG9EYXRlKHZhbHVlKVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZGF0YVtrZXldID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIHVuc2V0KGtleTogc3RyaW5nKTogdGhpcyB7XHJcbiAgICBkZWxldGUgdGhpcy5kYXRhW2tleV07XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIGluY3JlbWVudChrZXk6IHN0cmluZywgYW1vdW50ID0gMSk6IHRoaXMge1xyXG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuZ2V0KGtleSkgfHwgMDtcclxuICAgIHRoaXMuc2V0KGtleSwgY3VycmVudCArIGFtb3VudCk7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIGFkZChrZXk6IHN0cmluZywgaXRlbXM6IGFueVtdKTogdGhpcyB7XHJcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5nZXQoa2V5KSB8fCBbXTtcclxuICAgIHRoaXMuc2V0KGtleSwgWy4uLmN1cnJlbnQsIC4uLml0ZW1zXSk7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIGFkZFVuaXF1ZShrZXk6IHN0cmluZywgaXRlbXM6IGFueVtdKTogdGhpcyB7XHJcbiAgICBjb25zdCBjdXJyZW50ID0gbmV3IFNldCh0aGlzLmdldChrZXkpIHx8IG5ldyBTZXQoKSk7XHJcbiAgICBpdGVtcy5mb3JFYWNoKGl0ZW0gPT4gY3VycmVudC5hZGQoaXRlbSkpO1xyXG4gICAgdGhpcy5zZXQoa2V5LCBBcnJheS5mcm9tKGN1cnJlbnQpKTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlKGtleTogc3RyaW5nLCBpdGVtczogYW55W10pOiB0aGlzIHtcclxuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLmdldChrZXkpIHx8IFtdO1xyXG4gICAgY29uc3QgdG9SZW1vdmUgPSBuZXcgU2V0KGl0ZW1zKTtcclxuICAgIHRoaXMuc2V0KGtleSwgY3VycmVudC5maWx0ZXIoKGl0ZW06IGFueSkgPT4gIXRvUmVtb3ZlLmhhcyhpdGVtKSkpO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvLyBNQVJLOiAtIENSVUQg5pON5L2cXHJcblxyXG4vLyBVcGRhdGUgdGhlIHNhdmUgbWV0aG9kIHRvIHVzZSB0aGUgcHJvcGVyIHRvSlNPTiBmb3JtYXRcclxuYXN5bmMgc2F2ZShvcHRpb25zPzogeyB1c2VNYXN0ZXJLZXk/OiBib29sZWFuIH0pOiBQcm9taXNlPHRoaXM+IHtcclxuICAvLyDkvJjlhYjkvb/nlKjlrp7kvovnuqfliKvnmoRwYXJzZeWunuS+i++8jOWmguaenOayoeacieWImeS9v+eUqOmdmeaAgeWunuS+i1xyXG4gIGNvbnN0IHBhcnNlSW5zdGFuY2UgPSB0aGlzLl9wYXJzZUluc3RhbmNlIHx8IEZtb2RlT2JqZWN0Ll9pbnN0YW5jZTtcclxuICBpZiAoIXBhcnNlSW5zdGFuY2UpIHRocm93IG5ldyBFcnJvcignTm90IGluaXRpYWxpemVkJyk7XHJcblxyXG4gIGNvbnN0IG1ldGhvZCA9IHRoaXMuaWQgPyAnUFVUJyA6ICdQT1NUJztcclxuICBsZXQgdXJsID0gYCR7cGFyc2VJbnN0YW5jZS5zZXJ2ZXJVUkx9L2NsYXNzZXMvJHt0aGlzLmNsYXNzTmFtZX1gO1xyXG4gIGlmICh0aGlzLmlkKSB1cmwgKz0gYC8ke3RoaXMuaWR9YDtcclxuXHJcbiAgY29uc3QgaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcclxuICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAnWC1QYXJzZS1BcHBsaWNhdGlvbi1JZCc6IHBhcnNlSW5zdGFuY2UuYXBwSWRcclxuICB9O1xyXG5cclxuICBpZiAob3B0aW9ucz8udXNlTWFzdGVyS2V5ICYmIHBhcnNlSW5zdGFuY2UuY29uZmlnLm1hc3RlcktleSkge1xyXG4gICAgaGVhZGVyc1snWC1QYXJzZS1NYXN0ZXItS2V5J10gPSBwYXJzZUluc3RhbmNlLmNvbmZpZy5tYXN0ZXJLZXk7XHJcbiAgfSBlbHNlIHtcclxuICAgIC8vIEFkZCBzZXNzaW9uIHRva2VuIGlmIGF2YWlsYWJsZSBhbmQgbm90IHVzaW5nIG1hc3RlciBrZXlcclxuICAgIGNvbnN0IHNlc3Npb25Ub2tlbiA9IHBhcnNlSW5zdGFuY2Uuc2Vzc2lvblRva2VuO1xyXG4gICAgaWYgKHNlc3Npb25Ub2tlbikge1xyXG4gICAgICBoZWFkZXJzWydYLVBhcnNlLVNlc3Npb24tVG9rZW4nXSA9IHNlc3Npb25Ub2tlbjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIEdldCBjbGVhbiBKU09OIHJlcHJlc2VudGF0aW9uXHJcbiAgY29uc3QgZGF0YSA9IHRoaXMudG9KU09OKCk7XHJcbiAgZGVsZXRlIGRhdGEuY3JlYXRlZEF0OyAvLyBUaGVzZSBhcmUgaGFuZGxlZCBieSBzZXJ2ZXJcclxuICBkZWxldGUgZGF0YS51cGRhdGVkQXQ7XHJcbiAgZGVsZXRlIGRhdGEuX190eXBlO1xyXG4gIGRlbGV0ZSBkYXRhLmNsYXNzTmFtZTtcclxuXHJcbiAgLy8gQ29udmVydCBhbnkgbmVzdGVkIEZtb2RlT2JqZWN0cyB0byBwb2ludGVyc1xyXG4gIGZvciAoY29uc3Qga2V5IGluIGRhdGEpIHtcclxuICAgIGlmICh0aGlzLmdldChrZXkpPy50b1BvaW50ZXIpIHtcclxuICAgICAgZGF0YVtrZXldID0gdGhpcy5nZXQoa2V5KS50b1BvaW50ZXIoKTtcclxuICAgIH1cclxuICB9XHJcbiAgbGV0IHJlc3VsdDphbnlcclxuICBsZXQgcmVzcG9uc2U6YW55XHJcblxyXG4gIGNvbnNvbGUubG9nKHVybCxkYXRhKVxyXG4gIHRyeXtcclxuICByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCwge1xyXG4gICAgbWV0aG9kLFxyXG4gICAgaGVhZGVycyxcclxuICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGRhdGEpXHJcbiAgfSk7XHJcbiAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoZGF0YSkpXHJcbiAgcmVzdWx0ID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xyXG4gIH1jYXRjaChlcnIpe1xyXG4gICAgYWxlcnQoZXJyKTtcclxuICB9XHJcbiAgY29uc29sZS5sb2cocmVzdWx0KVxyXG4gIGlmIChyZXN1bHQuZXJyb3IpIHRocm93IG5ldyBFcnJvcihyZXN1bHQuZXJyb3IpO1xyXG5cclxuICB0aGlzLmlkID0gcmVzdWx0Lm9iamVjdElkIHx8IHRoaXMuaWQ7XHJcbiAgdGhpcy5jcmVhdGVkQXQgPSBuZXcgRGF0ZShyZXN1bHQuY3JlYXRlZEF0IHx8IHRoaXMuY3JlYXRlZEF0KTtcclxuICB0aGlzLnVwZGF0ZWRBdCA9IG5ldyBEYXRlKHJlc3VsdC51cGRhdGVkQXQgfHwgdGhpcy51cGRhdGVkQXQpO1xyXG4gIHJldHVybiB0aGlzO1xyXG59XHJcbiAgYXN5bmMgZGVzdHJveShvcHRpb25zPzogeyB1c2VNYXN0ZXJLZXk/OiBib29sZWFuIH0pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICghdGhpcy5pZCkgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZGVzdHJveSB1bnNhdmVkIG9iamVjdCcpO1xyXG5cclxuICAgIC8vIOS8mOWFiOS9v+eUqOWunuS+i+e6p+WIq+eahHBhcnNl5a6e5L6L77yM5aaC5p6c5rKh5pyJ5YiZ5L2/55So6Z2Z5oCB5a6e5L6LXHJcbiAgICBjb25zdCBwYXJzZUluc3RhbmNlID0gdGhpcy5fcGFyc2VJbnN0YW5jZSB8fCBGbW9kZU9iamVjdC5faW5zdGFuY2U7XHJcbiAgICBpZiAoIXBhcnNlSW5zdGFuY2UpIHRocm93IG5ldyBFcnJvcignTm90IGluaXRpYWxpemVkJyk7XHJcblxyXG4gICAgY29uc3QgaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcclxuICAgICAgJ1gtUGFyc2UtQXBwbGljYXRpb24tSWQnOiBwYXJzZUluc3RhbmNlLmFwcElkXHJcbiAgICB9O1xyXG5cclxuICAgIGlmIChvcHRpb25zPy51c2VNYXN0ZXJLZXkgJiYgcGFyc2VJbnN0YW5jZS5jb25maWcubWFzdGVyS2V5KSB7XHJcbiAgICAgIGhlYWRlcnNbJ1gtUGFyc2UtTWFzdGVyLUtleSddID0gcGFyc2VJbnN0YW5jZS5jb25maWcubWFzdGVyS2V5O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gQWRkIHNlc3Npb24gdG9rZW4gaWYgYXZhaWxhYmxlIGFuZCBub3QgdXNpbmcgbWFzdGVyIGtleVxyXG4gICAgICBjb25zdCBzZXNzaW9uVG9rZW4gPSBwYXJzZUluc3RhbmNlLnNlc3Npb25Ub2tlbjtcclxuICAgICAgaWYgKHNlc3Npb25Ub2tlbikge1xyXG4gICAgICAgIGhlYWRlcnNbJ1gtUGFyc2UtU2Vzc2lvbi1Ub2tlbiddID0gc2Vzc2lvblRva2VuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdXJsID0gYCR7cGFyc2VJbnN0YW5jZS5zZXJ2ZXJVUkx9L2NsYXNzZXMvJHt0aGlzLmNsYXNzTmFtZX0vJHt0aGlzLmlkfWA7XHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCwge1xyXG4gICAgICBtZXRob2Q6ICdERUxFVEUnLFxyXG4gICAgICBoZWFkZXJzXHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKHJlc3VsdC5lcnJvciB8fCAnRmFpbGVkIHRvIGRlbGV0ZSBvYmplY3QnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIE1BUks6IC0g6Z2Z5oCB5pa55rOVXHJcblxyXG4gIHN0YXRpYyBhc3luYyBjcmVhdGU8VCBleHRlbmRzIEZtb2RlT2JqZWN0PihcclxuICAgIGNsYXNzTmFtZTogc3RyaW5nLFxyXG4gICAgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgYW55PixcclxuICAgIG9wdGlvbnM/OiB7IHVzZU1hc3RlcktleT86IGJvb2xlYW4gfVxyXG4gICk6IFByb21pc2U8VD4ge1xyXG4gICAgY29uc3Qgb2JqID0gbmV3IHRoaXMoY2xhc3NOYW1lKSBhcyBUO1xyXG4gICAgb2JqLnNldChhdHRyaWJ1dGVzKTtcclxuICAgIHJldHVybiBvYmouc2F2ZShvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBhc3luYyBmZXRjaEFsbDxUIGV4dGVuZHMgRm1vZGVPYmplY3Q+KFxyXG4gICAgb2JqZWN0czogVFtdLFxyXG4gICAgb3B0aW9ucz86IHsgdXNlTWFzdGVyS2V5PzogYm9vbGVhbiB9XHJcbiAgKTogUHJvbWlzZTxUW10+IHtcclxuICAgIGlmICghRm1vZGVPYmplY3QuX2luc3RhbmNlKSB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbml0aWFsaXplZCcpO1xyXG4gICAgaWYgKG9iamVjdHMubGVuZ3RoID09PSAwKSByZXR1cm4gW107XHJcblxyXG4gICAgY29uc3QgaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcclxuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgJ1gtUGFyc2UtQXBwbGljYXRpb24tSWQnOiBGbW9kZU9iamVjdC5faW5zdGFuY2UuYXBwSWRcclxuICAgIH07XHJcblxyXG4gICAgaWYgKG9wdGlvbnM/LnVzZU1hc3RlcktleSAmJiBGbW9kZU9iamVjdC5faW5zdGFuY2UuY29uZmlnLm1hc3RlcktleSkge1xyXG4gICAgICBoZWFkZXJzWydYLVBhcnNlLU1hc3Rlci1LZXknXSA9IEZtb2RlT2JqZWN0Ll9pbnN0YW5jZS5jb25maWcubWFzdGVyS2V5O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gQWRkIHNlc3Npb24gdG9rZW4gaWYgYXZhaWxhYmxlIGFuZCBub3QgdXNpbmcgbWFzdGVyIGtleVxyXG4gICAgICBjb25zdCBzZXNzaW9uVG9rZW4gPSBGbW9kZU9iamVjdC5faW5zdGFuY2Uuc2Vzc2lvblRva2VuO1xyXG4gICAgICBpZiAoc2Vzc2lvblRva2VuKSB7XHJcbiAgICAgICAgaGVhZGVyc1snWC1QYXJzZS1TZXNzaW9uLVRva2VuJ10gPSBzZXNzaW9uVG9rZW47XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB1cmwgPSBgJHtGbW9kZU9iamVjdC5faW5zdGFuY2Uuc2VydmVyVVJMfS9iYXRjaGA7XHJcbiAgICBjb25zdCByZXF1ZXN0cyA9IG9iamVjdHMubWFwKG9iaiA9PiAoe1xyXG4gICAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgICBwYXRoOiBgL2NsYXNzZXMvJHtvYmouY2xhc3NOYW1lfS8ke29iai5pZH1gXHJcbiAgICB9KSk7XHJcblxyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwsIHtcclxuICAgICAgbWV0aG9kOiAnUE9TVCcsXHJcbiAgICAgIGhlYWRlcnMsXHJcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgcmVxdWVzdHMgfSlcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XHJcbiAgICBpZiAocmVzdWx0cy5lcnJvcikgdGhyb3cgbmV3IEVycm9yKHJlc3VsdHMuZXJyb3IpO1xyXG5cclxuICAgIHJldHVybiByZXN1bHRzLm1hcCgocmVzdWx0OiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgY29uc3Qgb2JqID0gb2JqZWN0c1tpbmRleF07XHJcbiAgICAgIG9iai5zZXQocmVzdWx0LnN1Y2Nlc3MpO1xyXG4gICAgICByZXR1cm4gb2JqO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyBNQVJLOiAtIOWFs+ezu+aTjeS9nFxyXG5cclxuICByZWxhdGlvbjxUIGV4dGVuZHMgRm1vZGVPYmplY3Q+KGtleTogc3RyaW5nKTogRm1vZGVSZWxhdGlvbjxUPiB7XHJcbiAgICByZXR1cm4gbmV3IEZtb2RlUmVsYXRpb248VD4odGhpcywga2V5KTtcclxuICB9XHJcblxyXG4gIC8vIE1BUks6IC0g5paH5Lu25aSE55CGXHJcblxyXG4gIHN0YXRpYyBhc3luYyBmcm9tRmlsZShcclxuICAgIG5hbWU6IHN0cmluZyxcclxuICAgIGRhdGE6IEJsb2IgfCBGaWxlIHwgYW55LFxyXG4gICAgX3R5cGU/OiBzdHJpbmdcclxuICApOiBQcm9taXNlPEZpbGU+IHtcclxuICAgIGlmICghRm1vZGVPYmplY3QuX2luc3RhbmNlKSB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbml0aWFsaXplZCcpO1xyXG5cclxuICAgIGNvbnN0IGZpbGVEYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICBmaWxlRGF0YS5hcHBlbmQoJ2ZpbGUnLCBkYXRhLCBuYW1lKTtcclxuXHJcbiAgICBjb25zdCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xyXG4gICAgICAnWC1QYXJzZS1BcHBsaWNhdGlvbi1JZCc6IEZtb2RlT2JqZWN0Ll9pbnN0YW5jZS5hcHBJZFxyXG4gICAgfTtcclxuXHJcbiAgICAvLyBBZGQgc2Vzc2lvbiB0b2tlbiBpZiBhdmFpbGFibGVcclxuICAgIGNvbnN0IHNlc3Npb25Ub2tlbiA9IEZtb2RlT2JqZWN0Ll9pbnN0YW5jZS5zZXNzaW9uVG9rZW47XHJcbiAgICBpZiAoc2Vzc2lvblRva2VuKSB7XHJcbiAgICAgIGhlYWRlcnNbJ1gtUGFyc2UtU2Vzc2lvbi1Ub2tlbiddID0gc2Vzc2lvblRva2VuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHVybCA9IGAke0Ztb2RlT2JqZWN0Ll9pbnN0YW5jZS5zZXJ2ZXJVUkx9L2ZpbGVzLyR7bmFtZX1gO1xyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwsIHtcclxuICAgICAgbWV0aG9kOiAnUE9TVCcsXHJcbiAgICAgIGhlYWRlcnMsXHJcbiAgICAgIGJvZHk6IGZpbGVEYXRhXHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XHJcbiAgICBpZiAocmVzdWx0LmVycm9yKSB0aHJvdyBuZXcgRXJyb3IocmVzdWx0LmVycm9yKTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBfX3R5cGU6ICdGaWxlJyxcclxuICAgICAgbmFtZTogcmVzdWx0Lm5hbWUsXHJcbiAgICAgIHVybDogcmVzdWx0LnVybFxyXG4gICAgfTtcclxuICB9XHJcbn1cclxuXHJcbi8vIOa3u+WKoOmdmeaAgeaWueazleWIsOexu+S4ilxyXG4vLyBGbW9kZU9iamVjdC5yZWdpc3RlclN1YmNsYXNzID0gZnVuY3Rpb24oY2xhc3NOYW1lOiBzdHJpbmcsIGNsYXp6OiB0eXBlb2YgRm1vZGVPYmplY3QpIHtcclxuLy8gICAvLyDlrZDnsbvms6jlhozpgLvovpFcclxuLy8gfTsiXX0=
315
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm1vZGUub2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm1vZGUtbmcvc3JjL2xpYi9jb3JlL3BhcnNlL2Ztb2RlLm9iamVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBdUJwRCxNQUFNLE9BQU8sV0FBVzthQUNmLGNBQVMsR0FBZSxJQUFJLEFBQW5CLENBQW9CO0lBRXBDLE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBYTtRQUMvQixJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztJQUM1QixDQUFDO0lBVUQsWUFBWSxTQUFpQjtRQUg3QixTQUFJLEdBQXdCLEVBQUUsQ0FBQztRQUk3QixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQix5QkFBeUI7UUFDekIsSUFBSSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDO0lBQzlDLENBQUM7SUFFRCxlQUFlO0lBRWYsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFpQjtRQUM3QixNQUFNLGFBQWEsR0FBRyxLQUFNLFNBQVEsV0FBVztZQUM3QztnQkFDRSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDbkIsQ0FBQztTQUNGLENBQUM7UUFFRixhQUFhO1FBQ2IsYUFBYSxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDO1FBQzFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQztRQUMxQyxhQUFhLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUM7UUFDOUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDO1FBQzlDLGFBQWEsQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FB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QUFDLFNBQVMsQ0FBQyxLQUFLO1NBQ3RELENBQUM7UUFFRixpQ0FBaUM7UUFDakMsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUM7UUFDeEQsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNqQixPQUFPLENBQUMsdUJBQXVCLENBQUMsR0FBRyxZQUFZLENBQUM7UUFDbEQsQ0FBQztRQUVELE1BQU0sR0FBRyxHQUFHLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxTQUFTLFVBQVUsSUFBSSxFQUFFLENBQUM7UUFDL0QsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ2hDLE1BQU0sRUFBRSxNQUFNO1lBQ2QsT0FBTztZQUNQLElBQUksRUFBRSxRQUFRO1NBQ2YsQ0FBQyxDQUFDO1FBRUgsTUFBTSxNQUFNLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckMsSUFBSSxNQUFNLENBQUMsS0FBSztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWhELE9BQU87WUFDTCxNQUFNLEVBQUUsTUFBTTtZQUNkLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtZQUNqQixHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUc7U0FDaEIsQ0FBQztJQUNKLENBQUM7O0FBR0gsWUFBWTtBQUNaLDBGQUEwRjtBQUMxRixjQUFjO0FBQ2QsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZtb2RlUXVlcnkgfSBmcm9tIFwiLi9mbW9kZS5xdWVyeVwiO1xyXG5pbXBvcnQgeyBGbW9kZUFDTCB9IGZyb20gXCIuL2RhdGF0eXBlL2FjbFwiO1xyXG5pbXBvcnQgeyBGbW9kZUdlb1BvaW50IH0gZnJvbSBcIi4vZGF0YXR5cGUvZ2VvcG9pbnRcIjtcclxuaW1wb3J0IHsgRm1vZGVSZWxhdGlvbiB9IGZyb20gXCIuL2RhdGF0eXBlL3JlbGF0aW9uXCI7XHJcblxyXG4vLyA9PT09PT09PT09PT09PT09PT09PSBDb3JlIFR5cGVzID09PT09PT09PT09PT09PT09PT09XHJcbnR5cGUgQUNMID0gUmVjb3JkPHN0cmluZywgeyByZWFkOiBib29sZWFuOyB3cml0ZTogYm9vbGVhbiB9PjtcclxudHlwZSBGaWxlID0geyBfX3R5cGU6ICdGaWxlJzsgbmFtZTogc3RyaW5nOyB1cmw6IHN0cmluZyB9O1xyXG50eXBlIEdlb1BvaW50ID0gRm1vZGVHZW9Qb2ludHx7IF9fdHlwZTogJ0dlb1BvaW50JzsgbGF0aXR1ZGU6IG51bWJlcjsgbG9uZ2l0dWRlOiBudW1iZXIgfTtcclxudHlwZSBSZWxhdGlvbjxUIGV4dGVuZHMgRm1vZGVPYmplY3Q+ID0ge1xyXG4gIF9fdHlwZTogJ1JlbGF0aW9uJztcclxuICBjbGFzc05hbWU6IHN0cmluZztcclxuICBhZGQ6IChvYmplY3RzOiBUW10pID0+IHZvaWQ7XHJcbiAgcmVtb3ZlOiAob2JqZWN0czogVFtdKSA9PiB2b2lkO1xyXG4gIHF1ZXJ5OiAoKSA9PiBGbW9kZVF1ZXJ5PFQ+O1xyXG59O1xyXG5cclxudHlwZSBQb2ludGVyID0geyBfX3R5cGU6ICdQb2ludGVyJzsgY2xhc3NOYW1lOiBzdHJpbmc7IG9iamVjdElkOiBzdHJpbmcgfTtcclxudHlwZSBCYXNlQXR0cmlidXRlcyA9IHtcclxuICBpZD86IHN0cmluZztcclxuICBjcmVhdGVkQXQ/OiBEYXRlO1xyXG4gIHVwZGF0ZWRBdD86IERhdGU7XHJcbiAgQUNMPzogQUNMIHwgRm1vZGVBQ0w7XHJcbn07XHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIEZtb2RlT2JqZWN0IHtcclxuICBzdGF0aWMgX2luc3RhbmNlOiBhbnkgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgc3RhdGljIGJpbmRJbnN0YW5jZShpbnN0YW5jZTogYW55KSB7XHJcbiAgICB0aGlzLl9pbnN0YW5jZSA9IGluc3RhbmNlO1xyXG4gIH1cclxuXHJcbiAgY2xhc3NOYW1lOiBzdHJpbmc7XHJcbiAgaWQ/OiBzdHJpbmc7XHJcbiAgY3JlYXRlZEF0PzogRGF0ZTtcclxuICB1cGRhdGVkQXQ/OiBEYXRlO1xyXG4gIEFDTD86IEFDTDtcclxuICBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XHJcbiAgcHJpdmF0ZSBfcGFyc2VJbnN0YW5jZTogYW55OyAvLyDlrp7kvovnuqfliKvnmoRwYXJzZeWunuS+i1xyXG5cclxuICBjb25zdHJ1Y3RvcihjbGFzc05hbWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5jbGFzc05hbWUgPSBjbGFzc05hbWU7XHJcbiAgICAvLyDlpoLmnpzpnZnmgIHlrp7kvovlrZjlnKjvvIzkvb/nlKjlroPvvJvlkKbliJnorr7nva7kuLpudWxsXHJcbiAgICB0aGlzLl9wYXJzZUluc3RhbmNlID0gRm1vZGVPYmplY3QuX2luc3RhbmNlO1xyXG4gIH1cclxuXHJcbiAgLy8gTUFSSzogLSDln7rmnKzmlrnms5VcclxuXHJcbiAgc3RhdGljIGV4dGVuZChjbGFzc05hbWU6IHN0cmluZyk6IG5ldygpID0+IEZtb2RlT2JqZWN0IHtcclxuICAgIGNvbnN0IEV4dGVuZGVkQ2xhc3MgPSBjbGFzcyBleHRlbmRzIEZtb2RlT2JqZWN0IHtcclxuICAgICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgc3VwZXIoY2xhc3NOYW1lKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIFxyXG4gICAgLy8g5re75Yqg6Z2Z5oCB5pa55rOV5Yiw5omp5bGV57G7XHJcbiAgICBFeHRlbmRlZENsYXNzLmV4dGVuZCA9IEZtb2RlT2JqZWN0LmV4dGVuZDtcclxuICAgIEV4dGVuZGVkQ2xhc3MuY3JlYXRlID0gRm1vZGVPYmplY3QuY3JlYXRlO1xyXG4gICAgRXh0ZW5kZWRDbGFzcy5mZXRjaEFsbCA9IEZtb2RlT2JqZWN0LmZldGNoQWxsO1xyXG4gICAgRXh0ZW5kZWRDbGFzcy5mcm9tRmlsZSA9IEZtb2RlT2JqZWN0LmZyb21GaWxlO1xyXG4gICAgRXh0ZW5kZWRDbGFzcy5iaW5kSW5zdGFuY2UgPSBGbW9kZU9iamVjdC5iaW5kSW5zdGFuY2U7XHJcbiAgICBFeHRlbmRlZENsYXNzLl9pbnN0YW5jZSA9IEZtb2RlT2JqZWN0Ll9pbnN0YW5jZTtcclxuICAgIFxyXG4gICAgcmV0dXJuIEV4dGVuZGVkQ2xhc3MgYXMgYW55O1xyXG4gIH1cclxuXHJcbiAgdG9Qb2ludGVyKCk6IFBvaW50ZXIge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgX190eXBlOiAnUG9pbnRlcicsXHJcbiAgICAgIGNsYXNzTmFtZTogdGhpcy5jbGFzc05hbWUsXHJcbiAgICAgIG9iamVjdElkOiB0aGlzLmlkIVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8vIFVwZGF0ZSB0aGUgdG9KU09OIG1ldGhvZCB0byBwcm9wZXJseSBmb3JtYXQgZGF0ZXMgYW5kIHBvaW50ZXJzXHJcbnRvSlNPTigpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcclxuICBjb25zdCBqc29uOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xyXG4gICAgX190eXBlOiAnT2JqZWN0JyxcclxuICAgIGNsYXNzTmFtZTogdGhpcy5jbGFzc05hbWUsXHJcbiAgICAuLi50aGlzLmRhdGFcclxuICB9O1xyXG5cclxuICBpZiAodGhpcy5pZCkge1xyXG4gICAganNvbi5vYmplY3RJZCA9IHRoaXMuaWQ7XHJcbiAgfVxyXG5cclxuICBPYmplY3Qua2V5cyhqc29uKS5mb3JFYWNoKGtleT0+e1xyXG4gICAgaWYgKGpzb25ba2V5XT8uZ2V0VGltZT8uKCkpIHtcclxuICAgICAganNvbltrZXldID0geyBfX3R5cGU6ICdEYXRlJywgaXNvOiBqc29uW2tleV0udG9JU09TdHJpbmcoKSB9O1xyXG4gICAgfVxyXG4gIH0pXHJcblxyXG4gIC8vIEZvcm1hdCBkYXRlcyBwcm9wZXJseVxyXG4gIHRyeXtcclxuICAgIGlmICh0aGlzLmNyZWF0ZWRBdCkge1xyXG4gICAgICAgIGlmKHR5cGVvZiB0aGlzLmNyZWF0ZWRBdD09XCJzdHJpbmdcIil7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVkQXQgPSBuZXcgRGF0ZSh0aGlzLmNyZWF0ZWRBdClcclxuICAgICAgfVxyXG4gICAgICBqc29uLmNyZWF0ZWRBdCA9IHsgX190eXBlOiAnRGF0ZScsIGlzbzogdGhpcy5jcmVhdGVkQXQudG9JU09TdHJpbmcoKSB9O1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudXBkYXRlZEF0KSB7XHJcbiAgICAgIGlmKHR5cGVvZiB0aGlzLnVwZGF0ZWRBdD09XCJzdHJpbmdcIil7XHJcbiAgICAgICAgdGhpcy51cGRhdGVkQXQgPSBuZXcgRGF0ZSh0aGlzLnVwZGF0ZWRBdClcclxuICAgICAgfVxyXG4gICAgICBjb25zb2xlLmxvZyh0aGlzLnVwZGF0ZWRBdClcclxuICAgICAganNvbi51cGRhdGVkQXQgPSB7IF9fdHlwZTogJ0RhdGUnLCBpc286IHRoaXMudXBkYXRlZEF0LnRvSVNPU3RyaW5nKCkgfTtcclxuICAgIH1cclxuICB9Y2F0Y2goZXJyKXt9XHJcbiAgXHJcbiAgLy8gSGFuZGxlIEFDTFxyXG4gIGlmICh0aGlzLkFDTCkge1xyXG4gICAganNvbi5BQ0wgPSB0aGlzLkFDTDtcclxuICB9XHJcblxyXG4gIHJldHVybiBqc29uO1xyXG59XHJcblxyXG5cclxuICAvLyBNQVJLOiAtIOWxnuaAp+aTjeS9nFxyXG5cclxuICBzZXRBQ0woYWNsOiBBQ0wgfCBGbW9kZUFDTCk6IHRoaXMge1xyXG4gICAgdGhpcy5BQ0wgPSBhY2wgaW5zdGFuY2VvZiBGbW9kZUFDTCA/IGFjbC50b0pTT04oKSA6IGFjbDtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgZ2V0QUNMKCk6IEFDTCB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5BQ0w7XHJcbiAgfVxyXG5cclxuICBnZXQoa2V5OiBzdHJpbmcpOiBhbnkge1xyXG4gICAgaWYodGhpcy5kYXRhW2tleV0/Ll9fdHlwZT09XCJEYXRlXCIpe1xyXG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLmRhdGFba2V5XT8uaXNvKVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVtrZXldO1xyXG4gIH1cclxuXHJcbiAgaXNvU3RyVG9EYXRlKHZhbHVlOmFueSl7XHJcbiAgICBpZih2YWx1ZT8uaW5kZXhPZj8uKFwiVFwiKT4tMSYmdmFsdWU/LmluZGV4T2Y/LihcIlpcIik+LTEmJnZhbHVlPy5sZW5ndGg9PTI0KXtcclxuICAgICAgdHJ5eyAgXHJcbiAgICAgICAgbGV0IHRpbWUgPSBuZXcgRGF0ZSh2YWx1ZSk7XHJcbiAgICAgICAgcmV0dXJuIHRpbWVcclxuICAgICAgfWNhdGNoKGVycil7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZVxyXG4gIH1cclxuXHJcbiAgc2V0KGtleTogc3RyaW5nIHwgUmVjb3JkPHN0cmluZywgYW55PiwgdmFsdWU/OiBhbnkpOiB0aGlzIHtcclxuXHJcbiAgICBpZiAodHlwZW9mIGtleSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgT2JqZWN0LmtleXMoa2V5KS5mb3JFYWNoKGs9PntcclxuICAgICAgICBpZihrZXlba10/LmluZGV4T2Y/LihcIlRcIik+LTEmJmtleVtrXT8uaW5kZXhPZj8uKFwiWlwiKT4tMSl7XHJcbiAgICAgICAgICBrZXlba10gPSB0aGlzLmlzb1N0clRvRGF0ZShrZXlba10pXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLmRhdGEsIGtleSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZih2YWx1ZSl7XHJcbiAgICAgICAgdmFsdWUgPSB0aGlzLmlzb1N0clRvRGF0ZSh2YWx1ZSlcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmRhdGFba2V5XSA9IHZhbHVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICB1bnNldChrZXk6IHN0cmluZyk6IHRoaXMge1xyXG4gICAgZGVsZXRlIHRoaXMuZGF0YVtrZXldO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBpbmNyZW1lbnQoa2V5OiBzdHJpbmcsIGFtb3VudCA9IDEpOiB0aGlzIHtcclxuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLmdldChrZXkpIHx8IDA7XHJcbiAgICB0aGlzLnNldChrZXksIGN1cnJlbnQgKyBhbW91bnQpO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBhZGQoa2V5OiBzdHJpbmcsIGl0ZW1zOiBhbnlbXSk6IHRoaXMge1xyXG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuZ2V0KGtleSkgfHwgW107XHJcbiAgICB0aGlzLnNldChrZXksIFsuLi5jdXJyZW50LCAuLi5pdGVtc10pO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBhZGRVbmlxdWUoa2V5OiBzdHJpbmcsIGl0ZW1zOiBhbnlbXSk6IHRoaXMge1xyXG4gICAgY29uc3QgY3VycmVudCA9IG5ldyBTZXQodGhpcy5nZXQoa2V5KSB8fCBuZXcgU2V0KCkpO1xyXG4gICAgaXRlbXMuZm9yRWFjaChpdGVtID0+IGN1cnJlbnQuYWRkKGl0ZW0pKTtcclxuICAgIHRoaXMuc2V0KGtleSwgQXJyYXkuZnJvbShjdXJyZW50KSk7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIHJlbW92ZShrZXk6IHN0cmluZywgaXRlbXM6IGFueVtdKTogdGhpcyB7XHJcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5nZXQoa2V5KSB8fCBbXTtcclxuICAgIGNvbnN0IHRvUmVtb3ZlID0gbmV3IFNldChpdGVtcyk7XHJcbiAgICB0aGlzLnNldChrZXksIGN1cnJlbnQuZmlsdGVyKChpdGVtOiBhbnkpID0+ICF0b1JlbW92ZS5oYXMoaXRlbSkpKTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgLy8gTUFSSzogLSBDUlVEIOaTjeS9nFxyXG5cclxuLy8gVXBkYXRlIHRoZSBzYXZlIG1ldGhvZCB0byB1c2UgdGhlIHByb3BlciB0b0pTT04gZm9ybWF0XHJcbmFzeW5jIHNhdmUob3B0aW9ucz86IHsgdXNlTWFzdGVyS2V5PzogYm9vbGVhbiB9KTogUHJvbWlzZTx0aGlzPiB7XHJcbiAgLy8g5LyY5YWI5L2/55So5a6e5L6L57qn5Yir55qEcGFyc2Xlrp7kvovvvIzlpoLmnpzmsqHmnInliJnkvb/nlKjpnZnmgIHlrp7kvotcclxuICBjb25zdCBwYXJzZUluc3RhbmNlID0gdGhpcy5fcGFyc2VJbnN0YW5jZSB8fCBGbW9kZU9iamVjdC5faW5zdGFuY2U7XHJcbiAgaWYgKCFwYXJzZUluc3RhbmNlKSB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbml0aWFsaXplZCcpO1xyXG5cclxuICBjb25zdCBtZXRob2QgPSB0aGlzLmlkID8gJ1BVVCcgOiAnUE9TVCc7XHJcbiAgbGV0IHVybCA9IGAke3BhcnNlSW5zdGFuY2Uuc2VydmVyVVJMfS9jbGFzc2VzLyR7dGhpcy5jbGFzc05hbWV9YDtcclxuICBpZiAodGhpcy5pZCkgdXJsICs9IGAvJHt0aGlzLmlkfWA7XHJcblxyXG4gIGNvbnN0IGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XHJcbiAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgJ1gtUGFyc2UtQXBwbGljYXRpb24tSWQnOiBwYXJzZUluc3RhbmNlLmFwcElkXHJcbiAgfTtcclxuXHJcbiAgaWYgKG9wdGlvbnM/LnVzZU1hc3RlcktleSAmJiBwYXJzZUluc3RhbmNlLmNvbmZpZy5tYXN0ZXJLZXkpIHtcclxuICAgIGhlYWRlcnNbJ1gtUGFyc2UtTWFzdGVyLUtleSddID0gcGFyc2VJbnN0YW5jZS5jb25maWcubWFzdGVyS2V5O1xyXG4gIH0gZWxzZSB7XHJcbiAgICAvLyBBZGQgc2Vzc2lvbiB0b2tlbiBpZiBhdmFpbGFibGUgYW5kIG5vdCB1c2luZyBtYXN0ZXIga2V5XHJcbiAgICBjb25zdCBzZXNzaW9uVG9rZW4gPSBwYXJzZUluc3RhbmNlLnNlc3Npb25Ub2tlbjtcclxuICAgIGlmIChzZXNzaW9uVG9rZW4pIHtcclxuICAgICAgaGVhZGVyc1snWC1QYXJzZS1TZXNzaW9uLVRva2VuJ10gPSBzZXNzaW9uVG9rZW47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBHZXQgY2xlYW4gSlNPTiByZXByZXNlbnRhdGlvblxyXG4gIGNvbnN0IGRhdGEgPSB0aGlzLnRvSlNPTigpO1xyXG4gIGRlbGV0ZSBkYXRhLmNyZWF0ZWRBdDsgLy8gVGhlc2UgYXJlIGhhbmRsZWQgYnkgc2VydmVyXHJcbiAgZGVsZXRlIGRhdGEudXBkYXRlZEF0O1xyXG4gIGRlbGV0ZSBkYXRhLl9fdHlwZTtcclxuICBkZWxldGUgZGF0YS5jbGFzc05hbWU7XHJcblxyXG4gIC8vIENvbnZlcnQgYW55IG5lc3RlZCBGbW9kZU9iamVjdHMgdG8gcG9pbnRlcnNcclxuICBmb3IgKGNvbnN0IGtleSBpbiBkYXRhKSB7XHJcbiAgICBpZiAodGhpcy5nZXQoa2V5KT8udG9Qb2ludGVyKSB7XHJcbiAgICAgIGRhdGFba2V5XSA9IHRoaXMuZ2V0KGtleSkudG9Qb2ludGVyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGxldCByZXN1bHQ6YW55XHJcbiAgbGV0IHJlc3BvbnNlOmFueVxyXG5cclxuICBjb25zb2xlLmxvZyh1cmwsZGF0YSlcclxuICB0cnl7XHJcbiAgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwsIHtcclxuICAgIG1ldGhvZCxcclxuICAgIGhlYWRlcnMsXHJcbiAgICBib2R5OiBKU09OLnN0cmluZ2lmeShkYXRhKVxyXG4gIH0pO1xyXG4gIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGRhdGEpKVxyXG4gIHJlc3VsdCA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcclxuICB9Y2F0Y2goZXJyKXtcclxuICAgIGFsZXJ0KGVycik7XHJcbiAgfVxyXG4gIGNvbnNvbGUubG9nKHJlc3VsdClcclxuICBpZiAocmVzdWx0LmVycm9yKSB0aHJvdyBuZXcgRXJyb3IocmVzdWx0LmVycm9yKTtcclxuXHJcbiAgdGhpcy5pZCA9IHJlc3VsdC5vYmplY3RJZCB8fCB0aGlzLmlkO1xyXG4gIHRoaXMuY3JlYXRlZEF0ID0gbmV3IERhdGUocmVzdWx0LmNyZWF0ZWRBdCB8fCB0aGlzLmNyZWF0ZWRBdCk7XHJcbiAgdGhpcy51cGRhdGVkQXQgPSBuZXcgRGF0ZShyZXN1bHQudXBkYXRlZEF0IHx8IHRoaXMudXBkYXRlZEF0KTtcclxuICByZXR1cm4gdGhpcztcclxufVxyXG4gIGFzeW5jIGRlc3Ryb3kob3B0aW9ucz86IHsgdXNlTWFzdGVyS2V5PzogYm9vbGVhbiB9KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoIXRoaXMuaWQpIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGRlc3Ryb3kgdW5zYXZlZCBvYmplY3QnKTtcclxuXHJcbiAgICAvLyDkvJjlhYjkvb/nlKjlrp7kvovnuqfliKvnmoRwYXJzZeWunuS+i++8jOWmguaenOayoeacieWImeS9v+eUqOmdmeaAgeWunuS+i1xyXG4gICAgY29uc3QgcGFyc2VJbnN0YW5jZSA9IHRoaXMuX3BhcnNlSW5zdGFuY2UgfHwgRm1vZGVPYmplY3QuX2luc3RhbmNlO1xyXG4gICAgaWYgKCFwYXJzZUluc3RhbmNlKSB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbml0aWFsaXplZCcpO1xyXG5cclxuICAgIGNvbnN0IGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XHJcbiAgICAgICdYLVBhcnNlLUFwcGxpY2F0aW9uLUlkJzogcGFyc2VJbnN0YW5jZS5hcHBJZFxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAob3B0aW9ucz8udXNlTWFzdGVyS2V5ICYmIHBhcnNlSW5zdGFuY2UuY29uZmlnLm1hc3RlcktleSkge1xyXG4gICAgICBoZWFkZXJzWydYLVBhcnNlLU1hc3Rlci1LZXknXSA9IHBhcnNlSW5zdGFuY2UuY29uZmlnLm1hc3RlcktleTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIEFkZCBzZXNzaW9uIHRva2VuIGlmIGF2YWlsYWJsZSBhbmQgbm90IHVzaW5nIG1hc3RlciBrZXlcclxuICAgICAgY29uc3Qgc2Vzc2lvblRva2VuID0gcGFyc2VJbnN0YW5jZS5zZXNzaW9uVG9rZW47XHJcbiAgICAgIGlmIChzZXNzaW9uVG9rZW4pIHtcclxuICAgICAgICBoZWFkZXJzWydYLVBhcnNlLVNlc3Npb24tVG9rZW4nXSA9IHNlc3Npb25Ub2tlbjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHVybCA9IGAke3BhcnNlSW5zdGFuY2Uuc2VydmVyVVJMfS9jbGFzc2VzLyR7dGhpcy5jbGFzc05hbWV9LyR7dGhpcy5pZH1gO1xyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwsIHtcclxuICAgICAgbWV0aG9kOiAnREVMRVRFJyxcclxuICAgICAgaGVhZGVyc1xyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xyXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihyZXN1bHQuZXJyb3IgfHwgJ0ZhaWxlZCB0byBkZWxldGUgb2JqZWN0Jyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBNQVJLOiAtIOmdmeaAgeaWueazlVxyXG5cclxuICBzdGF0aWMgYXN5bmMgY3JlYXRlPFQgZXh0ZW5kcyBGbW9kZU9iamVjdD4oXHJcbiAgICBjbGFzc05hbWU6IHN0cmluZyxcclxuICAgIGF0dHJpYnV0ZXM6IFJlY29yZDxzdHJpbmcsIGFueT4sXHJcbiAgICBvcHRpb25zPzogeyB1c2VNYXN0ZXJLZXk/OiBib29sZWFuIH1cclxuICApOiBQcm9taXNlPFQ+IHtcclxuICAgIGNvbnN0IG9iaiA9IG5ldyB0aGlzKGNsYXNzTmFtZSkgYXMgVDtcclxuICAgIG9iai5zZXQoYXR0cmlidXRlcyk7XHJcbiAgICByZXR1cm4gb2JqLnNhdmUob3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgYXN5bmMgZmV0Y2hBbGw8VCBleHRlbmRzIEZtb2RlT2JqZWN0PihcclxuICAgIG9iamVjdHM6IFRbXSxcclxuICAgIG9wdGlvbnM/OiB7IHVzZU1hc3RlcktleT86IGJvb2xlYW4gfVxyXG4gICk6IFByb21pc2U8VFtdPiB7XHJcbiAgICBpZiAoIUZtb2RlT2JqZWN0Ll9pbnN0YW5jZSkgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW5pdGlhbGl6ZWQnKTtcclxuICAgIGlmIChvYmplY3RzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFtdO1xyXG5cclxuICAgIGNvbnN0IGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XHJcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICdYLVBhcnNlLUFwcGxpY2F0aW9uLUlkJzogRm1vZGVPYmplY3QuX2luc3RhbmNlLmFwcElkXHJcbiAgICB9O1xyXG5cclxuICAgIGlmIChvcHRpb25zPy51c2VNYXN0ZXJLZXkgJiYgRm1vZGVPYmplY3QuX2luc3RhbmNlLmNvbmZpZy5tYXN0ZXJLZXkpIHtcclxuICAgICAgaGVhZGVyc1snWC1QYXJzZS1NYXN0ZXItS2V5J10gPSBGbW9kZU9iamVjdC5faW5zdGFuY2UuY29uZmlnLm1hc3RlcktleTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIEFkZCBzZXNzaW9uIHRva2VuIGlmIGF2YWlsYWJsZSBhbmQgbm90IHVzaW5nIG1hc3RlciBrZXlcclxuICAgICAgY29uc3Qgc2Vzc2lvblRva2VuID0gRm1vZGVPYmplY3QuX2luc3RhbmNlLnNlc3Npb25Ub2tlbjtcclxuICAgICAgaWYgKHNlc3Npb25Ub2tlbikge1xyXG4gICAgICAgIGhlYWRlcnNbJ1gtUGFyc2UtU2Vzc2lvbi1Ub2tlbiddID0gc2Vzc2lvblRva2VuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdXJsID0gYCR7Rm1vZGVPYmplY3QuX2luc3RhbmNlLnNlcnZlclVSTH0vYmF0Y2hgO1xyXG4gICAgY29uc3QgcmVxdWVzdHMgPSBvYmplY3RzLm1hcChvYmogPT4gKHtcclxuICAgICAgbWV0aG9kOiAnR0VUJyxcclxuICAgICAgcGF0aDogYC9jbGFzc2VzLyR7b2JqLmNsYXNzTmFtZX0vJHtvYmouaWR9YFxyXG4gICAgfSkpO1xyXG5cclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsLCB7XHJcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgICBoZWFkZXJzLFxyXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IHJlcXVlc3RzIH0pXHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xyXG4gICAgaWYgKHJlc3VsdHMuZXJyb3IpIHRocm93IG5ldyBFcnJvcihyZXN1bHRzLmVycm9yKTtcclxuXHJcbiAgICByZXR1cm4gcmVzdWx0cy5tYXAoKHJlc3VsdDogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIGNvbnN0IG9iaiA9IG9iamVjdHNbaW5kZXhdO1xyXG4gICAgICBvYmouc2V0KHJlc3VsdC5zdWNjZXNzKTtcclxuICAgICAgcmV0dXJuIG9iajtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gTUFSSzogLSDlhbPns7vmk43kvZxcclxuXHJcbiAgcmVsYXRpb248VCBleHRlbmRzIEZtb2RlT2JqZWN0PihrZXk6IHN0cmluZyk6IEZtb2RlUmVsYXRpb248VD4ge1xyXG4gICAgcmV0dXJuIG5ldyBGbW9kZVJlbGF0aW9uPFQ+KHRoaXMsIGtleSk7XHJcbiAgfVxyXG5cclxuICAvLyBNQVJLOiAtIOaWh+S7tuWkhOeQhlxyXG5cclxuICBzdGF0aWMgYXN5bmMgZnJvbUZpbGUoXHJcbiAgICBuYW1lOiBzdHJpbmcsXHJcbiAgICBkYXRhOiBCbG9iIHwgRmlsZSB8IGFueSxcclxuICAgIF90eXBlPzogc3RyaW5nXHJcbiAgKTogUHJvbWlzZTxGaWxlPiB7XHJcbiAgICBpZiAoIUZtb2RlT2JqZWN0Ll9pbnN0YW5jZSkgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW5pdGlhbGl6ZWQnKTtcclxuXHJcbiAgICBjb25zdCBmaWxlRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgZmlsZURhdGEuYXBwZW5kKCdmaWxlJywgZGF0YSwgbmFtZSk7XHJcblxyXG4gICAgY29uc3QgaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcclxuICAgICAgJ1gtUGFyc2UtQXBwbGljYXRpb24tSWQnOiBGbW9kZU9iamVjdC5faW5zdGFuY2UuYXBwSWRcclxuICAgIH07XHJcblxyXG4gICAgLy8gQWRkIHNlc3Npb24gdG9rZW4gaWYgYXZhaWxhYmxlXHJcbiAgICBjb25zdCBzZXNzaW9uVG9rZW4gPSBGbW9kZU9iamVjdC5faW5zdGFuY2Uuc2Vzc2lvblRva2VuO1xyXG4gICAgaWYgKHNlc3Npb25Ub2tlbikge1xyXG4gICAgICBoZWFkZXJzWydYLVBhcnNlLVNlc3Npb24tVG9rZW4nXSA9IHNlc3Npb25Ub2tlbjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB1cmwgPSBgJHtGbW9kZU9iamVjdC5faW5zdGFuY2Uuc2VydmVyVVJMfS9maWxlcy8ke25hbWV9YDtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsLCB7XHJcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgICBoZWFkZXJzLFxyXG4gICAgICBib2R5OiBmaWxlRGF0YVxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xyXG4gICAgaWYgKHJlc3VsdC5lcnJvcikgdGhyb3cgbmV3IEVycm9yKHJlc3VsdC5lcnJvcik7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgX190eXBlOiAnRmlsZScsXHJcbiAgICAgIG5hbWU6IHJlc3VsdC5uYW1lLFxyXG4gICAgICB1cmw6IHJlc3VsdC51cmxcclxuICAgIH07XHJcbiAgfVxyXG59XHJcblxyXG4vLyDmt7vliqDpnZnmgIHmlrnms5XliLDnsbvkuIpcclxuLy8gRm1vZGVPYmplY3QucmVnaXN0ZXJTdWJjbGFzcyA9IGZ1bmN0aW9uKGNsYXNzTmFtZTogc3RyaW5nLCBjbGF6ejogdHlwZW9mIEZtb2RlT2JqZWN0KSB7XHJcbi8vICAgLy8g5a2Q57G75rOo5YaM6YC76L6RXHJcbi8vIH07Il19
@@ -1142,6 +1142,13 @@ class FmodeObject {
1142
1142
  return json;
1143
1143
  }
1144
1144
  // MARK: - 属性操作
1145
+ setACL(acl) {
1146
+ this.ACL = acl instanceof FmodeACL ? acl.toJSON() : acl;
1147
+ return this;
1148
+ }
1149
+ getACL() {
1150
+ return this.ACL;
1151
+ }
1145
1152
  get(key) {
1146
1153
  if (this.data[key]?.__type == "Date") {
1147
1154
  return new Date(this.data[key]?.iso);