@xwiki/cristal-electron-main 0.9.0 → 0.10.0
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/CHANGELOG.md +12 -0
- package/dist/index.cjs +2 -2
- package/package.json +5 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @xwiki/cristal-electron-main
|
|
2
2
|
|
|
3
|
+
## 0.10.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- fa7fe9f: Cristal 0.10 Release
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [fa7fe9f]
|
|
12
|
+
- @xwiki/cristal-browser-electron@0.10.0
|
|
13
|
+
- @xwiki/cristal-electron-storage@0.10.0
|
|
14
|
+
|
|
3
15
|
## 0.9.0
|
|
4
16
|
|
|
5
17
|
### Minor Changes
|
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const r=require("electron"),u=require("node:url"),
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY2pzIiwic291cmNlcyI6WyIuLi9zcmMvc2VjdXJpdHktcmVzdHJpY3Rpb25zLnRzIiwiLi4vc3JjL21haW5XaW5kb3cudHMiLCIuLi8uLi9zdG9yYWdlL3NyYy9lbGVjdHJvbi9tYWluL2luZGV4LnRzIiwiLi4vLi4vYnJvd3Nlci9zcmMvZWxlY3Ryb24vbWFpbi9pbmRleC50cyIsIi4uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogU2VlIHRoZSBMSUNFTlNFIGZpbGUgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWxcbiAqIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLlxuICpcbiAqIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2ZcbiAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VXG4gKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHNvZnR3YXJlOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlXG4gKiBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUFcbiAqIDAyMTEwLTEzMDEgVVNBLCBvciBzZWUgdGhlIEZTRiBzaXRlOiBodHRwOi8vd3d3LmZzZi5vcmcuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBTZXNzaW9uIH0gZnJvbSBcImVsZWN0cm9uXCI7XG5pbXBvcnQgeyBhcHAsIHNoZWxsIH0gZnJvbSBcImVsZWN0cm9uXCI7XG5pbXBvcnQgeyBVUkwgfSBmcm9tIFwibm9kZTp1cmxcIjtcblxuLyoqXG4gKiBVbmlvbiBmb3IgYWxsIGV4aXN0aW5nIHBlcm1pc3Npb25zIGluIGVsZWN0cm9uXG4gKi9cbnR5cGUgUGVybWlzc2lvbiA9IFBhcmFtZXRlcnM8XG4gIEV4Y2x1ZGU8UGFyYW1ldGVyczxTZXNzaW9uW1wic2V0UGVybWlzc2lvblJlcXVlc3RIYW5kbGVyXCJdPlswXSwgbnVsbD5cbj5bMV07XG5cbi8qKlxuICogQSBsaXN0IG9mIG9yaWdpbnMgdGhhdCB5b3UgYWxsb3cgb3BlbiBJTlNJREUgdGhlIGFwcGxpY2F0aW9uIGFuZCBwZXJtaXNzaW9ucyBmb3IgdGhlbS5cbiAqXG4gKiBJbiBkZXZlbG9wbWVudCBtb2RlIHlvdSBuZWVkIGFsbG93IG9wZW4gYFZJVEVfREVWX1NFUlZFUl9VUkxgLlxuICovXG5jb25zdCBBTExPV0VEX09SSUdJTlNfQU5EX1BFUk1JU1NJT05TID0gbmV3IE1hcDxzdHJpbmcsIFNldDxQZXJtaXNzaW9uPj4oXG4gIGltcG9ydC5tZXRhLmVudi5ERVYgJiYgaW1wb3J0Lm1ldGEuZW52LlZJVEVfREVWX1NFUlZFUl9VUkxcbiAgICA/IFtbbmV3IFVSTChpbXBvcnQubWV0YS5lbnYuVklURV9ERVZfU0VSVkVSX1VSTCkub3JpZ2luLCBuZXcgU2V0KCldXVxuICAgIDogW10sXG4pO1xuXG4vKipcbiAqIEEgbGlzdCBvZiBvcmlnaW5zIHRoYXQgeW91IGFsbG93IG9wZW4gSU4gQlJPV1NFUi5cbiAqIE5hdmlnYXRpb24gdG8gdGhlIG9yaWdpbnMgYmVsb3cgaXMgb25seSBwb3NzaWJsZSBpZiB0aGUgbGluayBvcGVucyBpbiBhIG5ldyB3aW5kb3cuXG4gKlxuICogQGV4YW1wbGVcbiAqIDxhXG4gKiAgIHRhcmdldD1cIl9ibGFua1wiXG4gKiAgIGhyZWY9XCJodHRwczovL2dpdGh1Yi5jb20vXCJcbiAqID5cbiAqL1xuY29uc3QgQUxMT1dFRF9FWFRFUk5BTF9PUklHSU5TID0gbmV3IFNldDxgaHR0cHM6Ly8ke3N0cmluZ31gPihbXG4gIFwiaHR0cHM6Ly9naXRodWIuY29tXCIsXG5dKTtcblxuYXBwLm9uKFwid2ViLWNvbnRlbnRzLWNyZWF0ZWRcIiwgKF8sIGNvbnRlbnRzKSA9PiB7XG4gIC8qKlxuICAgKiBCbG9jayBuYXZpZ2F0aW9uIHRvIG9yaWdpbnMgbm90IG9uIHRoZSBhbGxvd2xpc3QuXG4gICAqXG4gICAqIE5hdmlnYXRpb24gZXhwbG9pdHMgYXJlIHF1aXRlIGNvbW1vbi4gSWYgYW4gYXR0YWNrZXIgY2FuIGNvbnZpbmNlIHRoZSBhcHAgdG8gbmF2aWdhdGUgYXdheSBmcm9tIGl0cyBjdXJyZW50IHBhZ2UsXG4gICAqIHRoZXkgY2FuIHBvc3NpYmx5IGZvcmNlIHRoZSBhcHAgdG8gb3BlbiBhcmJpdHJhcnkgd2ViIHJlc291cmNlcy93ZWJzaXRlcyBvbiB0aGUgd2ViLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LmVsZWN0cm9uanMub3JnL2RvY3MvbGF0ZXN0L3R1dG9yaWFsL3NlY3VyaXR5IzEzLWRpc2FibGUtb3ItbGltaXQtbmF2aWdhdGlvblxuICAgKi9cbiAgY29udGVudHMub24oXCJ3aWxsLW5hdmlnYXRlXCIsIChldmVudCwgdXJsKSA9PiB7XG4gICAgY29uc3QgeyBvcmlnaW4gfSA9IG5ldyBVUkwodXJsKTtcbiAgICBpZiAoQUxMT1dFRF9PUklHSU5TX0FORF9QRVJNSVNTSU9OUy5oYXMob3JpZ2luKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFByZXZlbnQgbmF2aWdhdGlvblxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBpZiAoaW1wb3J0Lm1ldGEuZW52LkRFVikge1xuICAgICAgY29uc29sZS53YXJuKGBCbG9ja2VkIG5hdmlnYXRpbmcgdG8gZGlzYWxsb3dlZCBvcmlnaW46ICR7b3JpZ2lufWApO1xuICAgIH1cbiAgfSk7XG5cbiAgLyoqXG4gICAqIEJsb2NrIHJlcXVlc3RzIGZvciBkaXNhbGxvd2VkIHBlcm1pc3Npb25zLlxuICAgKiBCeSBkZWZhdWx0LCBFbGVjdHJvbiB3aWxsIGF1dG9tYXRpY2FsbHkgYXBwcm92ZSBhbGwgcGVybWlzc2lvbiByZXF1ZXN0cy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy5lbGVjdHJvbmpzLm9yZy9kb2NzL2xhdGVzdC90dXRvcmlhbC9zZWN1cml0eSM1LWhhbmRsZS1zZXNzaW9uLXBlcm1pc3Npb24tcmVxdWVzdHMtZnJvbS1yZW1vdGUtY29udGVudFxuICAgKi9cbiAgY29udGVudHMuc2Vzc2lvbi5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoXG4gICAgKHdlYkNvbnRlbnRzLCBwZXJtaXNzaW9uLCBjYWxsYmFjaykgPT4ge1xuICAgICAgY29uc3QgeyBvcmlnaW4gfSA9IG5ldyBVUkwod2ViQ29udGVudHMuZ2V0VVJMKCkpO1xuXG4gICAgICBjb25zdCBwZXJtaXNzaW9uR3JhbnRlZCA9XG4gICAgICAgICEhQUxMT1dFRF9PUklHSU5TX0FORF9QRVJNSVNTSU9OUy5nZXQob3JpZ2luKT8uaGFzKHBlcm1pc3Npb24pO1xuICAgICAgY2FsbGJhY2socGVybWlzc2lvbkdyYW50ZWQpO1xuXG4gICAgICBpZiAoIXBlcm1pc3Npb25HcmFudGVkICYmIGltcG9ydC5tZXRhLmVudi5ERVYpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGAke29yaWdpbn0gcmVxdWVzdGVkIHBlcm1pc3Npb24gZm9yICcke3Blcm1pc3Npb259JywgYnV0IHdhcyByZWplY3RlZC5gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sXG4gICk7XG5cbiAgLyoqXG4gICAqIEh5cGVybGlua3MgbGVhZGluZyB0byBhbGxvd2VkIHNpdGVzIGFyZSBvcGVuZWQgaW4gdGhlIGRlZmF1bHQgYnJvd3Nlci5cbiAgICpcbiAgICogVGhlIGNyZWF0aW9uIG9mIG5ldyBgd2ViQ29udGVudHNgIGlzIGEgY29tbW9uIGF0dGFjayB2ZWN0b3IuIEF0dGFja2VycyBhdHRlbXB0IHRvIGNvbnZpbmNlIHRoZSBhcHAgdG8gY3JlYXRlIG5ldyB3aW5kb3dzLFxuICAgKiBmcmFtZXMsIG9yIG90aGVyIHJlbmRlcmVyIHByb2Nlc3NlcyB3aXRoIG1vcmUgcHJpdmlsZWdlcyB0aGFuIHRoZXkgaGFkIGJlZm9yZTsgb3Igd2l0aCBwYWdlcyBvcGVuZWQgdGhhdCB0aGV5IGNvdWxkbid0IG9wZW4gYmVmb3JlLlxuICAgKiBZb3Ugc2hvdWxkIGRlbnkgYW55IHVuZXhwZWN0ZWQgd2luZG93IGNyZWF0aW9uLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LmVsZWN0cm9uanMub3JnL2RvY3MvbGF0ZXN0L3R1dG9yaWFsL3NlY3VyaXR5IzE0LWRpc2FibGUtb3ItbGltaXQtY3JlYXRpb24tb2YtbmV3LXdpbmRvd3NcbiAgICogQHNlZSBodHRwczovL3d3dy5lbGVjdHJvbmpzLm9yZy9kb2NzL2xhdGVzdC90dXRvcmlhbC9zZWN1cml0eSMxNS1kby1ub3QtdXNlLW9wZW5leHRlcm5hbC13aXRoLXVudHJ1c3RlZC1jb250ZW50XG4gICAqL1xuICBjb250ZW50cy5zZXRXaW5kb3dPcGVuSGFuZGxlcigoeyB1cmwgfSkgPT4ge1xuICAgIGNvbnN0IHsgb3JpZ2luIH0gPSBuZXcgVVJMKHVybCk7XG5cbiAgICBpZiAoQUxMT1dFRF9FWFRFUk5BTF9PUklHSU5TLmhhcyhvcmlnaW4gYXMgYGh0dHBzOi8vJHtzdHJpbmd9YCkpIHtcbiAgICAgIC8vIE9wZW4gdXJsIGluIGRlZmF1bHQgYnJvd3Nlci5cbiAgICAgIHNoZWxsLm9wZW5FeHRlcm5hbCh1cmwpLmNhdGNoKGNvbnNvbGUuZXJyb3IpO1xuICAgIH0gZWxzZSBpZiAoaW1wb3J0Lm1ldGEuZW52LkRFVikge1xuICAgICAgY29uc29sZS53YXJuKGBCbG9ja2VkIHRoZSBvcGVuaW5nIG9mIGEgZGlzYWxsb3dlZCBvcmlnaW46ICR7b3JpZ2lufWApO1xuICAgIH1cblxuICAgIC8vIFByZXZlbnQgY3JlYXRpbmcgYSBuZXcgd2luZG93LlxuICAgIHJldHVybiB7IGFjdGlvbjogXCJkZW55XCIgfTtcbiAgfSk7XG5cbiAgLyoqXG4gICAqIFZlcmlmeSB3ZWJ2aWV3IG9wdGlvbnMgYmVmb3JlIGNyZWF0aW9uLlxuICAgKlxuICAgKiBTdHJpcCBhd2F5IHByZWxvYWQgc2NyaXB0cywgZGlzYWJsZSBOb2RlLmpzIGludGVncmF0aW9uLCBhbmQgZW5zdXJlIG9yaWdpbnMgYXJlIG9uIHRoZSBhbGxvd2xpc3QuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cuZWxlY3Ryb25qcy5vcmcvZG9jcy9sYXRlc3QvdHV0b3JpYWwvc2VjdXJpdHkjMTItdmVyaWZ5LXdlYnZpZXctb3B0aW9ucy1iZWZvcmUtY3JlYXRpb25cbiAgICovXG4gIGNvbnRlbnRzLm9uKFwid2lsbC1hdHRhY2gtd2Vidmlld1wiLCAoZXZlbnQsIHdlYlByZWZlcmVuY2VzLCBwYXJhbXMpID0+IHtcbiAgICBjb25zdCB7IG9yaWdpbiB9ID0gbmV3IFVSTChwYXJhbXMuc3JjKTtcbiAgICBpZiAoIUFMTE9XRURfT1JJR0lOU19BTkRfUEVSTUlTU0lPTlMuaGFzKG9yaWdpbikpIHtcbiAgICAgIGlmIChpbXBvcnQubWV0YS5lbnYuREVWKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBgQSB3ZWJ2aWV3IHRyaWVkIHRvIGF0dGFjaCAke3BhcmFtcy5zcmN9LCBidXQgd2FzIGJsb2NrZWQuYCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBTdHJpcCBhd2F5IHByZWxvYWQgc2NyaXB0cyBpZiB1bnVzZWQgb3IgdmVyaWZ5IHRoZWlyIGxvY2F0aW9uIGlzIGxlZ2l0aW1hdGUuXG4gICAgZGVsZXRlIHdlYlByZWZlcmVuY2VzLnByZWxvYWQ7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBgcHJlbG9hZFVSTGAgZXhpc3RzLiAtIEBzZWUgaHR0cHM6Ly93d3cuZWxlY3Ryb25qcy5vcmcvZG9jcy9sYXRlc3QvYXBpL3dlYi1jb250ZW50cyNldmVudC13aWxsLWF0dGFjaC13ZWJ2aWV3XG4gICAgZGVsZXRlIHdlYlByZWZlcmVuY2VzLnByZWxvYWRVUkw7XG5cbiAgICAvLyBEaXNhYmxlIE5vZGUuanMgaW50ZWdyYXRpb25cbiAgICB3ZWJQcmVmZXJlbmNlcy5ub2RlSW50ZWdyYXRpb24gPSBmYWxzZTtcblxuICAgIC8vIEVuYWJsZSBjb250ZXh0SXNvbGF0aW9uXG4gICAgd2ViUHJlZmVyZW5jZXMuY29udGV4dElzb2xhdGlvbiA9IHRydWU7XG4gIH0pO1xufSk7XG4iLCIvKlxuICogU2VlIHRoZSBMSUNFTlNFIGZpbGUgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWxcbiAqIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLlxuICpcbiAqIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2ZcbiAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VXG4gKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHNvZnR3YXJlOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlXG4gKiBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUFcbiAqIDAyMTEwLTEzMDEgVVNBLCBvciBzZWUgdGhlIEZTRiBzaXRlOiBodHRwOi8vd3d3LmZzZi5vcmcuXG4gKi9cblxuaW1wb3J0IHsgYXBwLCBCcm93c2VyV2luZG93LCBzaGVsbCB9IGZyb20gXCJlbGVjdHJvblwiO1xuaW1wb3J0IHsgam9pbiwgcmVzb2x2ZSB9IGZyb20gXCJub2RlOnBhdGhcIjtcblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlV2luZG93KCkge1xuICBjb25zdCBicm93c2VyV2luZG93ID0gbmV3IEJyb3dzZXJXaW5kb3coe1xuICAgIHNob3c6IGZhbHNlLCAvLyBVc2UgdGhlICdyZWFkeS10by1zaG93JyBldmVudCB0byBzaG93IHRoZSBpbnN0YW50aWF0ZWQgQnJvd3NlcldpbmRvdy5cbiAgICB3ZWJQcmVmZXJlbmNlczoge1xuICAgICAgbm9kZUludGVncmF0aW9uOiBmYWxzZSxcbiAgICAgIGNvbnRleHRJc29sYXRpb246IHRydWUsXG4gICAgICBzYW5kYm94OiBmYWxzZSwgLy8gU2FuZGJveCBkaXNhYmxlZCBiZWNhdXNlIHRoZSBkZW1vIG9mIHByZWxvYWQgc2NyaXB0IGRlcGVuZCBvbiB0aGUgTm9kZS5qcyBhcGlcbiAgICAgIHdlYnZpZXdUYWc6IGZhbHNlLCAvLyBUaGUgd2VidmlldyB0YWcgaXMgbm90IHJlY29tbWVuZGVkLiBDb25zaWRlciBhbHRlcm5hdGl2ZXMgbGlrZSBhbiBpZnJhbWUgb3IgRWxlY3Ryb24nc1xuICAgICAgLy8gQnJvd3NlclZpZXcuIEBzZWUgaHR0cHM6Ly93d3cuZWxlY3Ryb25qcy5vcmcvZG9jcy9sYXRlc3QvYXBpL3dlYnZpZXctdGFnI3dhcm5pbmdcbiAgICAgIHByZWxvYWQ6IGpvaW4oYXBwLmdldEFwcFBhdGgoKSwgXCIuL3ByZWxvYWQvZGlzdC9pbmRleC5janNcIiksXG4gICAgfSxcbiAgfSk7XG5cbiAgLy8gVW5jb21tZW50IHRvIHN0YXJ0IGVsZWN0cm9uIGRlYnVnZ2VyIGF0IHN0YXJ0dXAuXG4gIC8vIGJyb3dzZXJXaW5kb3cud2ViQ29udGVudHMub3BlbkRldlRvb2xzKCk7XG5cbiAgLy8gQWxsb3dzIGZvciBleHRlcm5hbCBsaW5rcyB0byBvcGVuIGluIHRoZSBPUyBicm93c2VyLi5cbiAgYnJvd3NlcldpbmRvdy53ZWJDb250ZW50cy5zZXRXaW5kb3dPcGVuSGFuZGxlcigoeyB1cmwgfSkgPT4ge1xuICAgIHNoZWxsLm9wZW5FeHRlcm5hbCh1cmwpO1xuICAgIHJldHVybiB7IGFjdGlvbjogXCJkZW55XCIgfTtcbiAgfSk7XG5cbiAgLyoqXG4gICAqIElmIHRoZSAnc2hvdycgcHJvcGVydHkgb2YgdGhlIEJyb3dzZXJXaW5kb3cncyBjb25zdHJ1Y3RvciBpcyBvbWl0dGVkIGZyb20gdGhlIGluaXRpYWxpemF0aW9uIG9wdGlvbnMsXG4gICAqIGl0IHRoZW4gZGVmYXVsdHMgdG8gJ3RydWUnLiBUaGlzIGNhbiBjYXVzZSBmbGlja2VyaW5nIGFzIHRoZSB3aW5kb3cgbG9hZHMgdGhlIGh0bWwgY29udGVudCxcbiAgICogYW5kIGl0IGFsc28gaGFzIHNob3cgcHJvYmxlbWF0aWMgYmVoYXZpb3VyIHdpdGggdGhlIGNsb3Npbmcgb2YgdGhlIHdpbmRvdy5cbiAgICogVXNlIGBzaG93OiBmYWxzZWAgYW5kIGxpc3RlbiB0byB0aGUgIGByZWFkeS10by1zaG93YCBldmVudCB0byBzaG93IHRoZSB3aW5kb3cuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2VsZWN0cm9uL2VsZWN0cm9uL2lzc3Vlcy8yNTAxMiBmb3IgdGhlIGFmZm9yZCBtZW50aW9uZWQgaXNzdWUuXG4gICAqL1xuICBicm93c2VyV2luZG93Lm9uKFwicmVhZHktdG8tc2hvd1wiLCAoKSA9PiB7XG4gICAgYnJvd3NlcldpbmRvdz8uc2hvdygpO1xuXG4gICAgaWYgKGltcG9ydC5tZXRhLmVudi5ERVYpIHtcbiAgICAgIGJyb3dzZXJXaW5kb3c/LndlYkNvbnRlbnRzLm9wZW5EZXZUb29scygpO1xuICAgIH1cbiAgfSk7XG5cbiAgLyoqXG4gICAqIExvYWQgdGhlIG1haW4gcGFnZSBvZiB0aGUgbWFpbiB3aW5kb3cuXG4gICAqL1xuICBpZiAoXG4gICAgaW1wb3J0Lm1ldGEuZW52LkRFViAmJlxuICAgIGltcG9ydC5tZXRhLmVudi5WSVRFX0RFVl9TRVJWRVJfVVJMICE9PSB1bmRlZmluZWRcbiAgKSB7XG4gICAgLyoqXG4gICAgICogTG9hZCBmcm9tIHRoZSBWaXRlIGRldiBzZXJ2ZXIgZm9yIGRldmVsb3BtZW50LlxuICAgICAqL1xuICAgIGF3YWl0IGJyb3dzZXJXaW5kb3cubG9hZFVSTChpbXBvcnQubWV0YS5lbnYuVklURV9ERVZfU0VSVkVSX1VSTCk7XG4gIH0gZWxzZSB7XG4gICAgLyoqXG4gICAgICogTG9hZCBmcm9tIHRoZSBsb2NhbCBmaWxlIHN5c3RlbSBmb3IgcHJvZHVjdGlvbiBhbmQgdGVzdC5cbiAgICAgKlxuICAgICAqIFVzZSBCcm93c2VyV2luZG93LmxvYWRGaWxlKCkgaW5zdGVhZCBvZiBCcm93c2VyV2luZG93LmxvYWRVUkwoKSBmb3IgV2hhdFdHIFVSTCBBUEkgbGltaXRhdGlvbnNcbiAgICAgKiB3aGVuIHBhdGggY29udGFpbnMgc3BlY2lhbCBjaGFyYWN0ZXJzIGxpa2UgYCNgLlxuICAgICAqIExldCBlbGVjdHJvbiBoYW5kbGUgdGhlIHBhdGggcXVpcmtzLlxuICAgICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2lzc3Vlcy8xMjY4MlxuICAgICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2VsZWN0cm9uL2VsZWN0cm9uL2lzc3Vlcy82ODY5XG4gICAgICovXG4gICAgYXdhaXQgYnJvd3NlcldpbmRvdy5sb2FkRmlsZShcbiAgICAgIHJlc29sdmUoYXBwLmdldEFwcFBhdGgoKSwgXCIuL3JlbmRlcmVyL2Rpc3QvaW5kZXguaHRtbFwiKSxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIGJyb3dzZXJXaW5kb3c7XG59XG5cbi8qKlxuICogUmVzdG9yZSBhbiBleGlzdGluZyBCcm93c2VyV2luZG93IG9yIENyZWF0ZSBhIG5ldyBCcm93c2VyV2luZG93LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVzdG9yZU9yQ3JlYXRlV2luZG93KCkge1xuICBsZXQgd2luZG93ID0gQnJvd3NlcldpbmRvdy5nZXRBbGxXaW5kb3dzKCkuZmluZCgodykgPT4gIXcuaXNEZXN0cm95ZWQoKSk7XG5cbiAgaWYgKHdpbmRvdyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgd2luZG93ID0gYXdhaXQgY3JlYXRlV2luZG93KCk7XG4gIH1cblxuICBpZiAod2luZG93LmlzTWluaW1pemVkKCkpIHtcbiAgICB3aW5kb3cucmVzdG9yZSgpO1xuICB9XG5cbiAgd2luZG93LmZvY3VzKCk7XG5cbiAgcmV0dXJuIHdpbmRvdztcbn1cbiIsIi8qXG4gKiBTZWUgdGhlIExJQ0VOU0UgZmlsZSBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbFxuICogaW5mb3JtYXRpb24gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuXG4gKlxuICogVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZlxuICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlVcbiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgc29mdHdhcmU7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWVcbiAqIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQVxuICogMDIxMTAtMTMwMSBVU0EsIG9yIHNlZSB0aGUgRlNGIHNpdGU6IGh0dHA6Ly93d3cuZnNmLm9yZy5cbiAqL1xuXG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luLCByZWxhdGl2ZSB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IGFwcCwgaXBjTWFpbiB9IGZyb20gXCJlbGVjdHJvblwiO1xuaW1wb3J0IGZzIGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgeyBQYWdlQXR0YWNobWVudCwgUGFnZURhdGEgfSBmcm9tIFwiQHh3aWtpL2NyaXN0YWwtYXBpXCI7XG5cbmNvbnN0IEhPTUVfUEFUSCA9IFwiLmNyaXN0YWxcIjtcbmNvbnN0IEhPTUVfUEFUSF9GVUxMID0gam9pbihhcHAuZ2V0UGF0aChcImhvbWVcIiksIEhPTUVfUEFUSCk7XG5cbmZ1bmN0aW9uIHJlc29sdmVQYXRoKHBhZ2U6IHN0cmluZywgLi4ubGFzdFNlZ21lbnRzOiBzdHJpbmdbXSkge1xuICBjb25zdCBob21lZGlyID0gYXBwLmdldFBhdGgoXCJob21lXCIpO1xuICByZXR1cm4gam9pbihob21lZGlyLCBIT01FX1BBVEgsIHBhZ2UsIC4uLmxhc3RTZWdtZW50cyk7XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVQYWdlUGF0aChwYWdlOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcmVzb2x2ZVBhdGgocGFnZSwgXCJwYWdlLmpzb25cIik7XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVBdHRhY2htZW50c1BhdGgocGFnZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJlc29sdmVQYXRoKHBhZ2UsIFwiYXR0YWNobWVudHNcIik7XG59XG5mdW5jdGlvbiByZXNvbHZlQXR0YWNobWVudFBhdGgocGFnZTogc3RyaW5nLCBmaWxlbmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJlc29sdmVQYXRoKHBhZ2UsIFwiYXR0YWNobWVudHNcIiwgZmlsZW5hbWUpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBpc0ZpbGUocGF0aDogc3RyaW5nKSB7XG4gIGxldCBzdGF0ID0gdW5kZWZpbmVkO1xuICB0cnkge1xuICAgIHN0YXQgPSBhd2FpdCBmcy5wcm9taXNlcy5sc3RhdChwYXRoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZGVidWcoZSk7XG4gIH1cbiAgcmV0dXJuIHN0YXQ/LmlzRmlsZSgpO1xufVxuYXN5bmMgZnVuY3Rpb24gaXNEaXJlY3RvcnkocGF0aDogc3RyaW5nKSB7XG4gIGxldCBzdGF0ID0gdW5kZWZpbmVkO1xuICB0cnkge1xuICAgIHN0YXQgPSBhd2FpdCBmcy5wcm9taXNlcy5sc3RhdChwYXRoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZGVidWcoZSk7XG4gIH1cbiAgcmV0dXJuIHN0YXQ/LmlzRGlyZWN0b3J5KCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHBhdGhFeGlzdHMocGF0aDogc3RyaW5nKSB7XG4gIHRyeSB7XG4gICAgYXdhaXQgZnMucHJvbWlzZXMubHN0YXQocGF0aCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRQYWdlKHBhdGg6IHN0cmluZyk6IFByb21pc2U8UGFnZURhdGEgfCB1bmRlZmluZWQ+IHtcbiAgaWYgKCEoYXdhaXQgaXNXaXRoaW4oSE9NRV9QQVRIX0ZVTEwsIHBhdGgpKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgWyR7cGF0aH1dIGlzIG5vdCBpbiBpbiBbJHtIT01FX1BBVEhfRlVMTH1dYCk7XG4gIH1cbiAgaWYgKGF3YWl0IGlzRmlsZShwYXRoKSkge1xuICAgIGNvbnN0IHBhZ2VDb250ZW50ID0gYXdhaXQgZnMucHJvbWlzZXMucmVhZEZpbGUocGF0aCk7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UocGFnZUNvbnRlbnQudG9TdHJpbmcoXCJ1dGY4XCIpKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRBdHRhY2htZW50cyhcbiAgcGF0aDogc3RyaW5nLFxuKTogUHJvbWlzZTxQYWdlQXR0YWNobWVudFtdIHwgdW5kZWZpbmVkPiB7XG4gIGlmICghKGF3YWl0IGlzV2l0aGluKEhPTUVfUEFUSF9GVUxMLCBwYXRoKSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFske3BhdGh9XSBpcyBub3QgaW4gaW4gWyR7SE9NRV9QQVRIX0ZVTEx9XWApO1xuICB9XG4gIGlmIChhd2FpdCBpc0RpcmVjdG9yeShwYXRoKSkge1xuICAgIGNvbnN0IHBhZ2VDb250ZW50ID0gYXdhaXQgZnMucHJvbWlzZXMucmVhZGRpcihwYXRoKTtcbiAgICByZXR1cm4gcGFnZUNvbnRlbnQubWFwKChwYXRoKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogcGF0aCxcbiAgICAgICAgbWltZXR5cGU6IFwiXCIsXG4gICAgICAgIHJlZmVyZW5jZTogcGF0aCxcbiAgICAgICAgaHJlZjogcGF0aCxcbiAgICAgIH07XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBpc1dpdGhpbihyb290OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBjb25zdCByZWwgPSByZWxhdGl2ZShyb290LCBwYXRoKTtcbiAgcmV0dXJuICFyZWwuc3RhcnRzV2l0aChcIi4uL1wiKSAmJiByZWwgIT09IFwiLi5cIjtcbn1cblxuLyoqXG4gKiBOb3RlOiBjdXJyZW50bHkgdGhpcyBpcyBtb3JlIGEgbWV0aG9kIHRvIHVwZGF0ZSB0aGUgY29udGVudCBvZiBhIHBhZ2UgdGhhblxuICogYW4gYWN0dWFsIHBhZ2Ugc2F2ZS5cbiAqXG4gKiBAcGFyYW0gcGF0aCB0aGUgcGF0aCBvZiB0aGUgcGFnZSBvbiB0aGUgZmlsZSBzeXN0ZW1cbiAqIEBwYXJhbSBjb250ZW50IHRoZSBjb250ZW50IG9mIHRoZSBwYWdlXG4gKiBAcGFyYW0gdGl0bGUgdGhlIHRpdGxlIG9mIHRoZSBwYWdlXG4gKiBAc2luY2UgMC44XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHNhdmVQYWdlKFxuICBwYXRoOiBzdHJpbmcsXG4gIGNvbnRlbnQ6IHN0cmluZyxcbiAgdGl0bGU6IHN0cmluZyxcbik6IFByb21pc2U8UGFnZURhdGEgfCB1bmRlZmluZWQ+IHtcbiAgaWYgKCEoYXdhaXQgaXNXaXRoaW4oSE9NRV9QQVRIX0ZVTEwsIHBhdGgpKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgWyR7cGF0aH1dIGlzIG5vdCBpbiBpbiBbJHtIT01FX1BBVEhfRlVMTH1dYCk7XG4gIH1cbiAgbGV0IGpzb25Db250ZW50OiB7XG4gICAgc291cmNlOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHN5bnRheD86IHN0cmluZztcbiAgfTtcbiAgaWYgKChhd2FpdCBwYXRoRXhpc3RzKHBhdGgpKSAmJiAoYXdhaXQgaXNGaWxlKHBhdGgpKSkge1xuICAgIGNvbnN0IGZpbGVDb250ZW50ID0gYXdhaXQgZnMucHJvbWlzZXMucmVhZEZpbGUocGF0aCk7XG4gICAgY29uc3QgdGV4dERlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoXCJ1dGYtOFwiKTtcbiAgICBqc29uQ29udGVudCA9IEpTT04ucGFyc2UodGV4dERlY29kZXIuZGVjb2RlKGZpbGVDb250ZW50KSk7XG4gICAganNvbkNvbnRlbnQuc291cmNlID0gY29udGVudDtcbiAgICBqc29uQ29udGVudC5uYW1lID0gdGl0bGU7XG4gIH0gZWxzZSB7XG4gICAganNvbkNvbnRlbnQgPSB7XG4gICAgICBuYW1lOiB0aXRsZSxcbiAgICAgIHNvdXJjZTogY29udGVudCxcbiAgICAgIHN5bnRheDogXCJtYXJrZG93bi8xLjJcIixcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgbmV3SlNPTiA9IEpTT04uc3RyaW5naWZ5KGpzb25Db250ZW50LCBudWxsLCAyKTtcbiAgY29uc3QgcGFyZW50RGlyZWN0b3J5ID0gZGlybmFtZShwYXRoKTtcbiAgLy8gQ3JlYXRlIHRoZSBwYXJlbnQgZGlyZWN0b3JpZXMgaW4gY2FzZSB0aGV5IGRvIG5vdCBleGlzdC5cbiAgYXdhaXQgZnMucHJvbWlzZXMubWtkaXIocGFyZW50RGlyZWN0b3J5LCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgLy8gU2V0IHRoZSBmbGFnIHRvIHcrIHNvIHRoYXQgdGhlIGZpbGUgaXMgY3JlYXRlZCBpZiBpdCBkb2VzIG5vdCBhbHJlYWR5XG4gIC8vIGV4aXN0LCBvciBmdWxseSByZXBsYWNlZCB3aGVuIGl0IGRvZXMuXG4gIGF3YWl0IGZzLnByb21pc2VzLndyaXRlRmlsZShwYXRoLCBuZXdKU09OLCB7IGZsYWc6IFwidytcIiB9KTtcbiAgcmV0dXJuIHJlYWRQYWdlKHBhdGgpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzYXZlQXR0YWNobWVudChwYXRoOiBzdHJpbmcsIGZpbGVQYXRoOiBzdHJpbmcpIHtcbiAgaWYgKCEoYXdhaXQgaXNXaXRoaW4oSE9NRV9QQVRIX0ZVTEwsIHBhdGgpKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgWyR7cGF0aH1dIGlzIG5vdCBpbiBpbiBbJHtIT01FX1BBVEhfRlVMTH1dYCk7XG4gIH1cbiAgY29uc3QgcGFyZW50RGlyZWN0b3J5ID0gZGlybmFtZShwYXRoKTtcblxuICAvLyBDcmVhdGUgdGhlIHBhcmVudCBkaXJlY3RvcmllcyBpbiBjYXNlIHRoZXkgZG8gbm90IGV4aXN0LlxuICBhd2FpdCBmcy5wcm9taXNlcy5ta2RpcihwYXJlbnREaXJlY3RvcnksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICBhd2FpdCBmcy5wcm9taXNlcy5jb3B5RmlsZShmaWxlUGF0aCwgcGF0aCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxvYWQoKTogdm9pZCB7XG4gIGlwY01haW4uaGFuZGxlKFwicmVzb2x2ZVBhdGhcIiwgKGV2ZW50LCB7IHBhZ2UgfSkgPT4ge1xuICAgIHJldHVybiByZXNvbHZlUGFnZVBhdGgocGFnZSk7XG4gIH0pO1xuICBpcGNNYWluLmhhbmRsZShcInJlc29sdmVBdHRhY2htZW50c1BhdGhcIiwgKGV2ZW50LCB7IHBhZ2UgfSkgPT4ge1xuICAgIHJldHVybiByZXNvbHZlQXR0YWNobWVudHNQYXRoKHBhZ2UpO1xuICB9KTtcbiAgaXBjTWFpbi5oYW5kbGUoXCJyZWFkUGFnZVwiLCAoZXZlbnQsIHsgcGF0aCB9KSA9PiB7XG4gICAgcmV0dXJuIHJlYWRQYWdlKHBhdGgpO1xuICB9KTtcbiAgaXBjTWFpbi5oYW5kbGUoXCJyZWFkQXR0YWNobWVudHNcIiwgKGV2ZW50LCB7IHBhdGggfSkgPT4ge1xuICAgIHJldHVybiByZWFkQXR0YWNobWVudHMocGF0aCk7XG4gIH0pO1xuICBpcGNNYWluLmhhbmRsZShcInNhdmVQYWdlXCIsIChldmVudCwgeyBwYXRoLCBjb250ZW50LCB0aXRsZSB9KSA9PiB7XG4gICAgcmV0dXJuIHNhdmVQYWdlKHBhdGgsIGNvbnRlbnQsIHRpdGxlKTtcbiAgfSk7XG4gIGlwY01haW4uaGFuZGxlKFwicmVzb2x2ZUF0dGFjaG1lbnRQYXRoXCIsIChldmVudCwgeyBwYWdlLCBmaWxlbmFtZSB9KSA9PiB7XG4gICAgcmV0dXJuIHJlc29sdmVBdHRhY2htZW50UGF0aChwYWdlLCBmaWxlbmFtZSk7XG4gIH0pO1xuICBpcGNNYWluLmhhbmRsZShcInNhdmVBdHRhY2htZW50XCIsIChldmVudCwgeyBwYXRoLCBmaWxlUGF0aCB9KSA9PiB7XG4gICAgcmV0dXJuIHNhdmVBdHRhY2htZW50KHBhdGgsIGZpbGVQYXRoKTtcbiAgfSk7XG59XG4iLCIvKlxuICogU2VlIHRoZSBMSUNFTlNFIGZpbGUgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWxcbiAqIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLlxuICpcbiAqIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2ZcbiAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VXG4gKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHNvZnR3YXJlOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlXG4gKiBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUFcbiAqIDAyMTEwLTEzMDEgVVNBLCBvciBzZWUgdGhlIEZTRiBzaXRlOiBodHRwOi8vd3d3LmZzZi5vcmcuXG4gKi9cblxuaW1wb3J0IHsgaXBjTWFpbiwgYXBwIH0gZnJvbSBcImVsZWN0cm9uXCI7XG5pbXBvcnQgQnJvd3NlcldpbmRvdyA9IEVsZWN0cm9uLkJyb3dzZXJXaW5kb3c7XG5pbXBvcnQgeyByZXNvbHZlIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuXG4vKipcbiAqIFJlbG9hZCB0aGUgYnJvd3NlciBieSByZWxvYWRpbmcgdGhlIGluZGV4IGZpbGUuXG4gKiBAcGFyYW0gd2luZG93XG4gKi9cbmZ1bmN0aW9uIHJlbG9hZEJyb3dzZXIod2luZG93OiBCcm93c2VyV2luZG93KSB7XG4gIHdpbmRvdy5sb2FkRmlsZShyZXNvbHZlKGFwcC5nZXRBcHBQYXRoKCksIFwiLi9yZW5kZXJlci9kaXN0L2luZGV4Lmh0bWxcIikpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsb2FkKHdpbmRvdzogQnJvd3NlcldpbmRvdyk6IHZvaWQge1xuICBpcGNNYWluLmhhbmRsZShcInJlbG9hZEJyb3dzZXJcIiwgKCkgPT4ge1xuICAgIHJldHVybiByZWxvYWRCcm93c2VyKHdpbmRvdyk7XG4gIH0pO1xufVxuIiwiLypcbiAqIFNlZSB0aGUgTElDRU5TRSBmaWxlIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsXG4gKiBpbmZvcm1hdGlvbiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC5cbiAqXG4gKiBUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXG4gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mXG4gKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVVxuICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBzb2Z0d2FyZTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZVxuICogU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BXG4gKiAwMjExMC0xMzAxIFVTQSwgb3Igc2VlIHRoZSBGU0Ygc2l0ZTogaHR0cDovL3d3dy5mc2Yub3JnLlxuICovXG5cbmltcG9ydCB7IGFwcCwgQnJvd3NlcldpbmRvdyB9IGZyb20gXCJlbGVjdHJvblwiO1xuaW1wb3J0IFwiLi9zZWN1cml0eS1yZXN0cmljdGlvbnNcIjtcbmltcG9ydCB7IHJlc3RvcmVPckNyZWF0ZVdpbmRvdyB9IGZyb20gXCIuL21haW5XaW5kb3dcIjtcbmltcG9ydCB7IHBsYXRmb3JtIH0gZnJvbSBcIm5vZGU6cHJvY2Vzc1wiO1xuLy8gQHRzLWV4cGVjdC1lcnJvciBzaG91bGRuJ3QgaGFwcGVuIGJ1dCB3ZSBuZWVkIHRvIGdlbmVyYXRlIHRoZSB0eXBlcyBmb3IgdGhlIHdob2xlIHByb2plY3Qgb25jZS5cbmltcG9ydCBsb2FkIGZyb20gXCJAeHdpa2kvY3Jpc3RhbC1lbGVjdHJvbi1zdG9yYWdlL21haW5cIjtcbi8vIEB0cy1leHBlY3QtZXJyb3Igc2hvdWxkbid0IGhhcHBlbiBidXQgd2UgbmVlZCB0byBnZW5lcmF0ZSB0aGUgdHlwZXMgZm9yIHRoZSB3aG9sZSBwcm9qZWN0IG9uY2UuXG5pbXBvcnQgbG9hZEJyb3dzZXIgZnJvbSBcIkB4d2lraS9jcmlzdGFsLWJyb3dzZXItZWxlY3Ryb24vbWFpblwiO1xuXG4vKipcbiAqIFByZXZlbnQgZWxlY3Ryb24gZnJvbSBydW5uaW5nIG11bHRpcGxlIGluc3RhbmNlcy5cbiAqL1xuY29uc3QgaXNTaW5nbGVJbnN0YW5jZSA9IGFwcC5yZXF1ZXN0U2luZ2xlSW5zdGFuY2VMb2NrKCk7XG5pZiAoIWlzU2luZ2xlSW5zdGFuY2UpIHtcbiAgYXBwLnF1aXQoKTtcbiAgcHJvY2Vzcy5leGl0KDApO1xufVxuYXBwLm9uKFwic2Vjb25kLWluc3RhbmNlXCIsIHJlc3RvcmVPckNyZWF0ZVdpbmRvdyk7XG5cbi8qKlxuICogRGlzYWJsZSBIYXJkd2FyZSBBY2NlbGVyYXRpb24gdG8gc2F2ZSBtb3JlIHN5c3RlbSByZXNvdXJjZXMuXG4gKi9cbmFwcC5kaXNhYmxlSGFyZHdhcmVBY2NlbGVyYXRpb24oKTtcblxuLyoqXG4gKiBTaG91dCBkb3duIGJhY2tncm91bmQgcHJvY2VzcyBpZiBhbGwgd2luZG93cyB3YXMgY2xvc2VkXG4gKi9cbmFwcC5vbihcIndpbmRvdy1hbGwtY2xvc2VkXCIsICgpID0+IHtcbiAgaWYgKHBsYXRmb3JtICE9PSBcImRhcndpblwiKSB7XG4gICAgYXBwLnF1aXQoKTtcbiAgfVxufSk7XG5cbi8qKlxuICogQ3JlYXRlIHRoZSBhcHBsaWNhdGlvbiB3aW5kb3cgd2hlbiB0aGUgYmFja2dyb3VuZCBwcm9jZXNzIGlzIHJlYWR5LlxuICovXG5hcHBcbiAgLndoZW5SZWFkeSgpXG4gIC50aGVuKCgpID0+IHtcbiAgICBsb2FkKCk7XG4gICAgcmVzdG9yZU9yQ3JlYXRlV2luZG93KCkudGhlbigodykgPT4gbG9hZEJyb3dzZXIodykpO1xuICAgIC8qKlxuICAgICAqIEBzZWUgaHR0cHM6Ly93d3cuZWxlY3Ryb25qcy5vcmcvZG9jcy9sYXRlc3QvYXBpL2FwcCNldmVudC1hY3RpdmF0ZS1tYWNvcyBFdmVudDogJ2FjdGl2YXRlJy5cbiAgICAgKi9cbiAgICBhcHAub24oXCJhY3RpdmF0ZVwiLCAoKSA9PiB7XG4gICAgICBpZiAoQnJvd3NlcldpbmRvdy5nZXRBbGxXaW5kb3dzKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJlc3RvcmVPckNyZWF0ZVdpbmRvdygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KVxuICAuY2F0Y2goKGUpID0+IGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgY3JlYXRlIHdpbmRvdzpcIiwgZSkpO1xuXG4vKipcbiAqIEluc3RhbGwgVnVlLmpzIG9yIGFueSBvdGhlciBleHRlbnNpb24gaW4gZGV2ZWxvcG1lbnQgbW9kZSBvbmx5LlxuICogTm90ZTogWW91IG11c3QgaW5zdGFsbCBgZWxlY3Ryb24tZGV2dG9vbHMtaW5zdGFsbGVyYCBtYW51YWxseVxuICovXG4vLyBpZiAoaW1wb3J0Lm1ldGEuZW52LkRFVikge1xuLy8gICBhcHBcbi8vICAgICAud2hlblJlYWR5KClcbi8vICAgICAudGhlbigoKSA9PiBpbXBvcnQoJ2VsZWN0cm9uLWRldnRvb2xzLWluc3RhbGxlcicpKVxuLy8gICAgIC50aGVuKG1vZHVsZSA9PiB7XG4vLyAgICAgICBjb25zdCB7ZGVmYXVsdDogaW5zdGFsbEV4dGVuc2lvbiwgVlVFSlMzX0RFVlRPT0xTfSA9XG4vLyAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgSG90Zml4IGZvciBodHRwczovL2dpdGh1Yi5jb20vY2F3YS05My92aXRlLWVsZWN0cm9uLWJ1aWxkZXIvaXNzdWVzLzkxNVxuLy8gICAgICAgICB0eXBlb2YgbW9kdWxlLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgPyBtb2R1bGUgOiAobW9kdWxlLmRlZmF1bHQgYXMgdHlwZW9mIG1vZHVsZSk7XG4vL1xuLy8gICAgICAgcmV0dXJuIGluc3RhbGxFeHRlbnNpb24oVlVFSlMzX0RFVlRPT0xTLCB7XG4vLyAgICAgICAgIGxvYWRFeHRlbnNpb25PcHRpb25zOiB7XG4vLyAgICAgICAgICAgYWxsb3dGaWxlQWNjZXNzOiB0cnVlLFxuLy8gICAgICAgICB9LFxuLy8gICAgICAgfSk7XG4vLyAgICAgfSlcbi8vICAgICAuY2F0Y2goZSA9PiBjb25zb2xlLmVycm9yKCdGYWlsZWQgaW5zdGFsbCBleHRlbnNpb246JywgZSkpO1xuLy8gfVxuXG4vKipcbiAqIENoZWNrIGZvciBhcHAgdXBkYXRlcywgaW5zdGFsbCBpdCBpbiBiYWNrZ3JvdW5kIGFuZCBub3RpZnkgdXNlciB0aGF0IG5ldyB2ZXJzaW9uIHdhcyBpbnN0YWxsZWQuXG4gKiBObyByZWFzb24gcnVuIHRoaXMgaW4gbm9uLXByb2R1Y3Rpb24gYnVpbGQuXG4gKiBAc2VlIGh0dHBzOi8vd3d3LmVsZWN0cm9uLmJ1aWxkL2F1dG8tdXBkYXRlLmh0bWwjcXVpY2stc2V0dXAtZ3VpZGVcbiAqXG4gKiBOb3RlOiBJdCBtYXkgdGhyb3cgXCJFTk9FTlQ6IG5vIHN1Y2ggZmlsZSBhcHAtdXBkYXRlLnltbFwiXG4gKiBpZiB5b3UgY29tcGlsZSBwcm9kdWN0aW9uIGFwcCB3aXRob3V0IHB1Ymxpc2hpbmcgaXQgdG8gZGlzdHJpYnV0aW9uIHNlcnZlci5cbiAqIExpa2UgYG5wbSBydW4gY29tcGlsZWAgZG9lcy4gSXQncyBvayDwn5iFXG4gKi9cbmlmIChpbXBvcnQubWV0YS5lbnYuUFJPRCkge1xuICBhcHBcbiAgICAud2hlblJlYWR5KClcbiAgICAudGhlbigoKSA9PlxuICAgICAgLyoqXG4gICAgICAgKiBIZXJlIHdlIGZvcmNlZCB0byB1c2UgYHJlcXVpcmVgIHNpbmNlIGVsZWN0cm9uIGRvZXNuJ3QgZnVsbHkgc3VwcG9ydCBkeW5hbWljIGltcG9ydCBpbiBhc2FyIGFyY2hpdmVzXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9lbGVjdHJvbi9lbGVjdHJvbi9pc3N1ZXMvMzg4MjlcbiAgICAgICAqIFBvdGVudGlhbGx5IGl0IG1heSBiZSBmaXhlZCBieSB0aGlzIGh0dHBzOi8vZ2l0aHViLmNvbS9lbGVjdHJvbi9lbGVjdHJvbi9wdWxsLzM3NTM1XG4gICAgICAgKi9cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdmFyLXJlcXVpcmVzXG4gICAgICByZXF1aXJlKFwiZWxlY3Ryb24tdXBkYXRlclwiKS5hdXRvVXBkYXRlci5jaGVja0ZvclVwZGF0ZXNBbmROb3RpZnkoKSxcbiAgICApXG4gICAgLmNhdGNoKChlKSA9PiBjb25zb2xlLmVycm9yKFwiRmFpbGVkIGNoZWNrIGFuZCBpbnN0YWxsIHVwZGF0ZXM6XCIsIGUpKTtcbn1cbiJdLCJuYW1lcyI6WyJBTExPV0VEX09SSUdJTlNfQU5EX1BFUk1JU1NJT05TIiwiQUxMT1dFRF9FWFRFUk5BTF9PUklHSU5TIiwiYXBwIiwiXyIsImNvbnRlbnRzIiwiZXZlbnQiLCJ1cmwiLCJvcmlnaW4iLCJVUkwiLCJ3ZWJDb250ZW50cyIsInBlcm1pc3Npb24iLCJjYWxsYmFjayIsInBlcm1pc3Npb25HcmFudGVkIiwic2hlbGwiLCJ3ZWJQcmVmZXJlbmNlcyIsInBhcmFtcyIsImNyZWF0ZVdpbmRvdyIsImJyb3dzZXJXaW5kb3ciLCJCcm93c2VyV2luZG93Iiwiam9pbiIsInJlc29sdmUiLCJyZXN0b3JlT3JDcmVhdGVXaW5kb3ciLCJ3aW5kb3ciLCJ3IiwiSE9NRV9QQVRIIiwiSE9NRV9QQVRIX0ZVTEwiLCJyZXNvbHZlUGF0aCIsInBhZ2UiLCJsYXN0U2VnbWVudHMiLCJob21lZGlyIiwicmVzb2x2ZVBhZ2VQYXRoIiwicmVzb2x2ZUF0dGFjaG1lbnRzUGF0aCIsInJlc29sdmVBdHRhY2htZW50UGF0aCIsImZpbGVuYW1lIiwiaXNGaWxlIiwicGF0aCIsInN0YXQiLCJmcyIsImUiLCJpc0RpcmVjdG9yeSIsInBhdGhFeGlzdHMiLCJyZWFkUGFnZSIsImlzV2l0aGluIiwicGFnZUNvbnRlbnQiLCJyZWFkQXR0YWNobWVudHMiLCJyb290IiwicmVsIiwicmVsYXRpdmUiLCJzYXZlUGFnZSIsImNvbnRlbnQiLCJ0aXRsZSIsImpzb25Db250ZW50IiwiZmlsZUNvbnRlbnQiLCJ0ZXh0RGVjb2RlciIsIm5ld0pTT04iLCJwYXJlbnREaXJlY3RvcnkiLCJkaXJuYW1lIiwic2F2ZUF0dGFjaG1lbnQiLCJmaWxlUGF0aCIsImxvYWQiLCJpcGNNYWluIiwicmVsb2FkQnJvd3NlciIsImlzU2luZ2xlSW5zdGFuY2UiLCJwbGF0Zm9ybSIsImxvYWRCcm93c2VyIl0sIm1hcHBpbmdzIjoicUlBb0NNQSxF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
|
|
1
|
+
"use strict";const r=require("electron"),u=require("node:url"),s=require("node:path"),P=require("node:process"),a=require("node:fs"),f=new Map([]),E=new Set(["https://github.com"]);r.app.on("web-contents-created",(e,n)=>{n.on("will-navigate",(t,i)=>{const{origin:o}=new u.URL(i);f.has(o)||t.preventDefault()}),n.session.setPermissionRequestHandler((t,i,o)=>{const{origin:l}=new u.URL(t.getURL()),d=!!f.get(l)?.has(i);o(d)}),n.setWindowOpenHandler(({url:t})=>{const{origin:i}=new u.URL(t);return E.has(i)&&r.shell.openExternal(t).catch(console.error),{action:"deny"}}),n.on("will-attach-webview",(t,i,o)=>{const{origin:l}=new u.URL(o.src);if(!f.has(l)){t.preventDefault();return}delete i.preload,delete i.preloadURL,i.nodeIntegration=!1,i.contextIsolation=!0})});async function L(){const e=new r.BrowserWindow({show:!1,webPreferences:{nodeIntegration:!1,contextIsolation:!0,sandbox:!1,webviewTag:!1,preload:s.join(r.app.getAppPath(),"./preload/dist/index.cjs")}});return e.webContents.setWindowOpenHandler(({url:n})=>(r.shell.openExternal(n),{action:"deny"})),e.on("ready-to-show",()=>{e?.show()}),await e.loadFile(s.resolve(r.app.getAppPath(),"./renderer/dist/index.html")),e}async function h(){let e=r.BrowserWindow.getAllWindows().find(n=>!n.isDestroyed());return e===void 0&&(e=await L()),e.isMinimized()&&e.restore(),e.focus(),e}const m=".cristal",c=s.join(r.app.getPath("home"),m);function w(e,...n){const t=r.app.getPath("home");return s.join(t,m,e,...n)}function M(e){return w(e,"page.json")}function O(e){return w(e,"attachments")}function W(e,n){return w(e,"attachments",n)}async function g(e){let n;try{n=await a.promises.lstat(e)}catch(t){console.debug(t)}return n?.isFile()}async function v(e){let n;try{n=await a.promises.lstat(e)}catch(t){console.debug(t)}return n?.isDirectory()}async function x(e){try{await a.promises.lstat(e)}catch{return!1}return!0}async function y(e){if(!await p(c,e))throw new Error(`[${e}] is not in in [${c}]`);if(await g(e)){const n=await a.promises.readFile(e);return JSON.parse(n.toString("utf8"))}else return}async function R(e){if(!await p(c,e))throw new Error(`[${e}] is not in in [${c}]`);if(await v(e))return(await a.promises.readdir(e)).map(t=>({id:t,mimetype:"",reference:t,href:t}))}async function p(e,n){const t=s.relative(e,n);return!t.startsWith("../")&&t!==".."}async function S(e,n,t){if(!await p(c,e))throw new Error(`[${e}] is not in in [${c}]`);let i;if(await x(e)&&await g(e)){const d=await a.promises.readFile(e),A=new TextDecoder("utf-8");i=JSON.parse(A.decode(d)),i.source=n,i.name=t}else i={name:t,source:n,syntax:"markdown/1.2"};const o=JSON.stringify(i,null,2),l=s.dirname(e);return await a.promises.mkdir(l,{recursive:!0}),await a.promises.writeFile(e,o,{flag:"w+"}),y(e)}async function $(e,n){if(!await p(c,e))throw new Error(`[${e}] is not in in [${c}]`);const t=s.dirname(e);await a.promises.mkdir(t,{recursive:!0}),await a.promises.copyFile(n,e)}async function D(e){const n=w(e).replace("/page.json",""),t=[],i=await a.promises.readdir(n);for(const o of i){const l=`${n}/${o}`;await v(l)&&t.push(o)}return t}function F(){r.ipcMain.handle("resolvePath",(e,{page:n})=>M(n)),r.ipcMain.handle("resolveAttachmentsPath",(e,{page:n})=>O(n)),r.ipcMain.handle("readPage",(e,{path:n})=>y(n)),r.ipcMain.handle("readAttachments",(e,{path:n})=>R(n)),r.ipcMain.handle("savePage",(e,{path:n,content:t,title:i})=>S(n,t,i)),r.ipcMain.handle("resolveAttachmentPath",(e,{page:n,filename:t})=>W(n,t)),r.ipcMain.handle("saveAttachment",(e,{path:n,filePath:t})=>$(n,t)),r.ipcMain.handle("listChildren",(e,{page:n})=>D(n))}function I(e){e.loadFile(s.resolve(r.app.getAppPath(),"./renderer/dist/index.html"))}function _(e){r.ipcMain.handle("reloadBrowser",()=>I(e))}const q=r.app.requestSingleInstanceLock();q||(r.app.quit(),process.exit(0));r.app.on("second-instance",h);r.app.disableHardwareAcceleration();r.app.on("window-all-closed",()=>{P.platform!=="darwin"&&r.app.quit()});r.app.whenReady().then(()=>{F(),h().then(e=>_(e)),r.app.on("activate",()=>{r.BrowserWindow.getAllWindows().length===0&&h()})}).catch(e=>console.error("Failed create window:",e));r.app.whenReady().then(()=>require("electron-updater").autoUpdater.checkForUpdatesAndNotify()).catch(e=>console.error("Failed check and install updates:",e));
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY2pzIiwic291cmNlcyI6WyIuLi9zcmMvc2VjdXJpdHktcmVzdHJpY3Rpb25zLnRzIiwiLi4vc3JjL21haW5XaW5kb3cudHMiLCIuLi8uLi9zdG9yYWdlL3NyYy9lbGVjdHJvbi9tYWluL2luZGV4LnRzIiwiLi4vLi4vYnJvd3Nlci9zcmMvZWxlY3Ryb24vbWFpbi9pbmRleC50cyIsIi4uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogU2VlIHRoZSBMSUNFTlNFIGZpbGUgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWxcbiAqIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLlxuICpcbiAqIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2ZcbiAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VXG4gKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHNvZnR3YXJlOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlXG4gKiBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUFcbiAqIDAyMTEwLTEzMDEgVVNBLCBvciBzZWUgdGhlIEZTRiBzaXRlOiBodHRwOi8vd3d3LmZzZi5vcmcuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBTZXNzaW9uIH0gZnJvbSBcImVsZWN0cm9uXCI7XG5pbXBvcnQgeyBhcHAsIHNoZWxsIH0gZnJvbSBcImVsZWN0cm9uXCI7XG5pbXBvcnQgeyBVUkwgfSBmcm9tIFwibm9kZTp1cmxcIjtcblxuLyoqXG4gKiBVbmlvbiBmb3IgYWxsIGV4aXN0aW5nIHBlcm1pc3Npb25zIGluIGVsZWN0cm9uXG4gKi9cbnR5cGUgUGVybWlzc2lvbiA9IFBhcmFtZXRlcnM8XG4gIEV4Y2x1ZGU8UGFyYW1ldGVyczxTZXNzaW9uW1wic2V0UGVybWlzc2lvblJlcXVlc3RIYW5kbGVyXCJdPlswXSwgbnVsbD5cbj5bMV07XG5cbi8qKlxuICogQSBsaXN0IG9mIG9yaWdpbnMgdGhhdCB5b3UgYWxsb3cgb3BlbiBJTlNJREUgdGhlIGFwcGxpY2F0aW9uIGFuZCBwZXJtaXNzaW9ucyBmb3IgdGhlbS5cbiAqXG4gKiBJbiBkZXZlbG9wbWVudCBtb2RlIHlvdSBuZWVkIGFsbG93IG9wZW4gYFZJVEVfREVWX1NFUlZFUl9VUkxgLlxuICovXG5jb25zdCBBTExPV0VEX09SSUdJTlNfQU5EX1BFUk1JU1NJT05TID0gbmV3IE1hcDxzdHJpbmcsIFNldDxQZXJtaXNzaW9uPj4oXG4gIGltcG9ydC5tZXRhLmVudi5ERVYgJiYgaW1wb3J0Lm1ldGEuZW52LlZJVEVfREVWX1NFUlZFUl9VUkxcbiAgICA/IFtbbmV3IFVSTChpbXBvcnQubWV0YS5lbnYuVklURV9ERVZfU0VSVkVSX1VSTCkub3JpZ2luLCBuZXcgU2V0KCldXVxuICAgIDogW10sXG4pO1xuXG4vKipcbiAqIEEgbGlzdCBvZiBvcmlnaW5zIHRoYXQgeW91IGFsbG93IG9wZW4gSU4gQlJPV1NFUi5cbiAqIE5hdmlnYXRpb24gdG8gdGhlIG9yaWdpbnMgYmVsb3cgaXMgb25seSBwb3NzaWJsZSBpZiB0aGUgbGluayBvcGVucyBpbiBhIG5ldyB3aW5kb3cuXG4gKlxuICogQGV4YW1wbGVcbiAqIDxhXG4gKiAgIHRhcmdldD1cIl9ibGFua1wiXG4gKiAgIGhyZWY9XCJodHRwczovL2dpdGh1Yi5jb20vXCJcbiAqID5cbiAqL1xuY29uc3QgQUxMT1dFRF9FWFRFUk5BTF9PUklHSU5TID0gbmV3IFNldDxgaHR0cHM6Ly8ke3N0cmluZ31gPihbXG4gIFwiaHR0cHM6Ly9naXRodWIuY29tXCIsXG5dKTtcblxuYXBwLm9uKFwid2ViLWNvbnRlbnRzLWNyZWF0ZWRcIiwgKF8sIGNvbnRlbnRzKSA9PiB7XG4gIC8qKlxuICAgKiBCbG9jayBuYXZpZ2F0aW9uIHRvIG9yaWdpbnMgbm90IG9uIHRoZSBhbGxvd2xpc3QuXG4gICAqXG4gICAqIE5hdmlnYXRpb24gZXhwbG9pdHMgYXJlIHF1aXRlIGNvbW1vbi4gSWYgYW4gYXR0YWNrZXIgY2FuIGNvbnZpbmNlIHRoZSBhcHAgdG8gbmF2aWdhdGUgYXdheSBmcm9tIGl0cyBjdXJyZW50IHBhZ2UsXG4gICAqIHRoZXkgY2FuIHBvc3NpYmx5IGZvcmNlIHRoZSBhcHAgdG8gb3BlbiBhcmJpdHJhcnkgd2ViIHJlc291cmNlcy93ZWJzaXRlcyBvbiB0aGUgd2ViLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LmVsZWN0cm9uanMub3JnL2RvY3MvbGF0ZXN0L3R1dG9yaWFsL3NlY3VyaXR5IzEzLWRpc2FibGUtb3ItbGltaXQtbmF2aWdhdGlvblxuICAgKi9cbiAgY29udGVudHMub24oXCJ3aWxsLW5hdmlnYXRlXCIsIChldmVudCwgdXJsKSA9PiB7XG4gICAgY29uc3QgeyBvcmlnaW4gfSA9IG5ldyBVUkwodXJsKTtcbiAgICBpZiAoQUxMT1dFRF9PUklHSU5TX0FORF9QRVJNSVNTSU9OUy5oYXMob3JpZ2luKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFByZXZlbnQgbmF2aWdhdGlvblxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBpZiAoaW1wb3J0Lm1ldGEuZW52LkRFVikge1xuICAgICAgY29uc29sZS53YXJuKGBCbG9ja2VkIG5hdmlnYXRpbmcgdG8gZGlzYWxsb3dlZCBvcmlnaW46ICR7b3JpZ2lufWApO1xuICAgIH1cbiAgfSk7XG5cbiAgLyoqXG4gICAqIEJsb2NrIHJlcXVlc3RzIGZvciBkaXNhbGxvd2VkIHBlcm1pc3Npb25zLlxuICAgKiBCeSBkZWZhdWx0LCBFbGVjdHJvbiB3aWxsIGF1dG9tYXRpY2FsbHkgYXBwcm92ZSBhbGwgcGVybWlzc2lvbiByZXF1ZXN0cy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3d3dy5lbGVjdHJvbmpzLm9yZy9kb2NzL2xhdGVzdC90dXRvcmlhbC9zZWN1cml0eSM1LWhhbmRsZS1zZXNzaW9uLXBlcm1pc3Npb24tcmVxdWVzdHMtZnJvbS1yZW1vdGUtY29udGVudFxuICAgKi9cbiAgY29udGVudHMuc2Vzc2lvbi5zZXRQZXJtaXNzaW9uUmVxdWVzdEhhbmRsZXIoXG4gICAgKHdlYkNvbnRlbnRzLCBwZXJtaXNzaW9uLCBjYWxsYmFjaykgPT4ge1xuICAgICAgY29uc3QgeyBvcmlnaW4gfSA9IG5ldyBVUkwod2ViQ29udGVudHMuZ2V0VVJMKCkpO1xuXG4gICAgICBjb25zdCBwZXJtaXNzaW9uR3JhbnRlZCA9XG4gICAgICAgICEhQUxMT1dFRF9PUklHSU5TX0FORF9QRVJNSVNTSU9OUy5nZXQob3JpZ2luKT8uaGFzKHBlcm1pc3Npb24pO1xuICAgICAgY2FsbGJhY2socGVybWlzc2lvbkdyYW50ZWQpO1xuXG4gICAgICBpZiAoIXBlcm1pc3Npb25HcmFudGVkICYmIGltcG9ydC5tZXRhLmVudi5ERVYpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGAke29yaWdpbn0gcmVxdWVzdGVkIHBlcm1pc3Npb24gZm9yICcke3Blcm1pc3Npb259JywgYnV0IHdhcyByZWplY3RlZC5gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sXG4gICk7XG5cbiAgLyoqXG4gICAqIEh5cGVybGlua3MgbGVhZGluZyB0byBhbGxvd2VkIHNpdGVzIGFyZSBvcGVuZWQgaW4gdGhlIGRlZmF1bHQgYnJvd3Nlci5cbiAgICpcbiAgICogVGhlIGNyZWF0aW9uIG9mIG5ldyBgd2ViQ29udGVudHNgIGlzIGEgY29tbW9uIGF0dGFjayB2ZWN0b3IuIEF0dGFja2VycyBhdHRlbXB0IHRvIGNvbnZpbmNlIHRoZSBhcHAgdG8gY3JlYXRlIG5ldyB3aW5kb3dzLFxuICAgKiBmcmFtZXMsIG9yIG90aGVyIHJlbmRlcmVyIHByb2Nlc3NlcyB3aXRoIG1vcmUgcHJpdmlsZWdlcyB0aGFuIHRoZXkgaGFkIGJlZm9yZTsgb3Igd2l0aCBwYWdlcyBvcGVuZWQgdGhhdCB0aGV5IGNvdWxkbid0IG9wZW4gYmVmb3JlLlxuICAgKiBZb3Ugc2hvdWxkIGRlbnkgYW55IHVuZXhwZWN0ZWQgd2luZG93IGNyZWF0aW9uLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vd3d3LmVsZWN0cm9uanMub3JnL2RvY3MvbGF0ZXN0L3R1dG9yaWFsL3NlY3VyaXR5IzE0LWRpc2FibGUtb3ItbGltaXQtY3JlYXRpb24tb2YtbmV3LXdpbmRvd3NcbiAgICogQHNlZSBodHRwczovL3d3dy5lbGVjdHJvbmpzLm9yZy9kb2NzL2xhdGVzdC90dXRvcmlhbC9zZWN1cml0eSMxNS1kby1ub3QtdXNlLW9wZW5leHRlcm5hbC13aXRoLXVudHJ1c3RlZC1jb250ZW50XG4gICAqL1xuICBjb250ZW50cy5zZXRXaW5kb3dPcGVuSGFuZGxlcigoeyB1cmwgfSkgPT4ge1xuICAgIGNvbnN0IHsgb3JpZ2luIH0gPSBuZXcgVVJMKHVybCk7XG5cbiAgICBpZiAoQUxMT1dFRF9FWFRFUk5BTF9PUklHSU5TLmhhcyhvcmlnaW4gYXMgYGh0dHBzOi8vJHtzdHJpbmd9YCkpIHtcbiAgICAgIC8vIE9wZW4gdXJsIGluIGRlZmF1bHQgYnJvd3Nlci5cbiAgICAgIHNoZWxsLm9wZW5FeHRlcm5hbCh1cmwpLmNhdGNoKGNvbnNvbGUuZXJyb3IpO1xuICAgIH0gZWxzZSBpZiAoaW1wb3J0Lm1ldGEuZW52LkRFVikge1xuICAgICAgY29uc29sZS53YXJuKGBCbG9ja2VkIHRoZSBvcGVuaW5nIG9mIGEgZGlzYWxsb3dlZCBvcmlnaW46ICR7b3JpZ2lufWApO1xuICAgIH1cblxuICAgIC8vIFByZXZlbnQgY3JlYXRpbmcgYSBuZXcgd2luZG93LlxuICAgIHJldHVybiB7IGFjdGlvbjogXCJkZW55XCIgfTtcbiAgfSk7XG5cbiAgLyoqXG4gICAqIFZlcmlmeSB3ZWJ2aWV3IG9wdGlvbnMgYmVmb3JlIGNyZWF0aW9uLlxuICAgKlxuICAgKiBTdHJpcCBhd2F5IHByZWxvYWQgc2NyaXB0cywgZGlzYWJsZSBOb2RlLmpzIGludGVncmF0aW9uLCBhbmQgZW5zdXJlIG9yaWdpbnMgYXJlIG9uIHRoZSBhbGxvd2xpc3QuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93d3cuZWxlY3Ryb25qcy5vcmcvZG9jcy9sYXRlc3QvdHV0b3JpYWwvc2VjdXJpdHkjMTItdmVyaWZ5LXdlYnZpZXctb3B0aW9ucy1iZWZvcmUtY3JlYXRpb25cbiAgICovXG4gIGNvbnRlbnRzLm9uKFwid2lsbC1hdHRhY2gtd2Vidmlld1wiLCAoZXZlbnQsIHdlYlByZWZlcmVuY2VzLCBwYXJhbXMpID0+IHtcbiAgICBjb25zdCB7IG9yaWdpbiB9ID0gbmV3IFVSTChwYXJhbXMuc3JjKTtcbiAgICBpZiAoIUFMTE9XRURfT1JJR0lOU19BTkRfUEVSTUlTU0lPTlMuaGFzKG9yaWdpbikpIHtcbiAgICAgIGlmIChpbXBvcnQubWV0YS5lbnYuREVWKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBgQSB3ZWJ2aWV3IHRyaWVkIHRvIGF0dGFjaCAke3BhcmFtcy5zcmN9LCBidXQgd2FzIGJsb2NrZWQuYCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBTdHJpcCBhd2F5IHByZWxvYWQgc2NyaXB0cyBpZiB1bnVzZWQgb3IgdmVyaWZ5IHRoZWlyIGxvY2F0aW9uIGlzIGxlZ2l0aW1hdGUuXG4gICAgZGVsZXRlIHdlYlByZWZlcmVuY2VzLnByZWxvYWQ7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBgcHJlbG9hZFVSTGAgZXhpc3RzLiAtIEBzZWUgaHR0cHM6Ly93d3cuZWxlY3Ryb25qcy5vcmcvZG9jcy9sYXRlc3QvYXBpL3dlYi1jb250ZW50cyNldmVudC13aWxsLWF0dGFjaC13ZWJ2aWV3XG4gICAgZGVsZXRlIHdlYlByZWZlcmVuY2VzLnByZWxvYWRVUkw7XG5cbiAgICAvLyBEaXNhYmxlIE5vZGUuanMgaW50ZWdyYXRpb25cbiAgICB3ZWJQcmVmZXJlbmNlcy5ub2RlSW50ZWdyYXRpb24gPSBmYWxzZTtcblxuICAgIC8vIEVuYWJsZSBjb250ZXh0SXNvbGF0aW9uXG4gICAgd2ViUHJlZmVyZW5jZXMuY29udGV4dElzb2xhdGlvbiA9IHRydWU7XG4gIH0pO1xufSk7XG4iLCIvKlxuICogU2VlIHRoZSBMSUNFTlNFIGZpbGUgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWxcbiAqIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLlxuICpcbiAqIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2ZcbiAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VXG4gKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHNvZnR3YXJlOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlXG4gKiBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUFcbiAqIDAyMTEwLTEzMDEgVVNBLCBvciBzZWUgdGhlIEZTRiBzaXRlOiBodHRwOi8vd3d3LmZzZi5vcmcuXG4gKi9cblxuaW1wb3J0IHsgYXBwLCBCcm93c2VyV2luZG93LCBzaGVsbCB9IGZyb20gXCJlbGVjdHJvblwiO1xuaW1wb3J0IHsgam9pbiwgcmVzb2x2ZSB9IGZyb20gXCJub2RlOnBhdGhcIjtcblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlV2luZG93KCkge1xuICBjb25zdCBicm93c2VyV2luZG93ID0gbmV3IEJyb3dzZXJXaW5kb3coe1xuICAgIHNob3c6IGZhbHNlLCAvLyBVc2UgdGhlICdyZWFkeS10by1zaG93JyBldmVudCB0byBzaG93IHRoZSBpbnN0YW50aWF0ZWQgQnJvd3NlcldpbmRvdy5cbiAgICB3ZWJQcmVmZXJlbmNlczoge1xuICAgICAgbm9kZUludGVncmF0aW9uOiBmYWxzZSxcbiAgICAgIGNvbnRleHRJc29sYXRpb246IHRydWUsXG4gICAgICBzYW5kYm94OiBmYWxzZSwgLy8gU2FuZGJveCBkaXNhYmxlZCBiZWNhdXNlIHRoZSBkZW1vIG9mIHByZWxvYWQgc2NyaXB0IGRlcGVuZCBvbiB0aGUgTm9kZS5qcyBhcGlcbiAgICAgIHdlYnZpZXdUYWc6IGZhbHNlLCAvLyBUaGUgd2VidmlldyB0YWcgaXMgbm90IHJlY29tbWVuZGVkLiBDb25zaWRlciBhbHRlcm5hdGl2ZXMgbGlrZSBhbiBpZnJhbWUgb3IgRWxlY3Ryb24nc1xuICAgICAgLy8gQnJvd3NlclZpZXcuIEBzZWUgaHR0cHM6Ly93d3cuZWxlY3Ryb25qcy5vcmcvZG9jcy9sYXRlc3QvYXBpL3dlYnZpZXctdGFnI3dhcm5pbmdcbiAgICAgIHByZWxvYWQ6IGpvaW4oYXBwLmdldEFwcFBhdGgoKSwgXCIuL3ByZWxvYWQvZGlzdC9pbmRleC5janNcIiksXG4gICAgfSxcbiAgfSk7XG5cbiAgLy8gVW5jb21tZW50IHRvIHN0YXJ0IGVsZWN0cm9uIGRlYnVnZ2VyIGF0IHN0YXJ0dXAuXG4gIC8vIGJyb3dzZXJXaW5kb3cud2ViQ29udGVudHMub3BlbkRldlRvb2xzKCk7XG5cbiAgLy8gQWxsb3dzIGZvciBleHRlcm5hbCBsaW5rcyB0byBvcGVuIGluIHRoZSBPUyBicm93c2VyLi5cbiAgYnJvd3NlcldpbmRvdy53ZWJDb250ZW50cy5zZXRXaW5kb3dPcGVuSGFuZGxlcigoeyB1cmwgfSkgPT4ge1xuICAgIHNoZWxsLm9wZW5FeHRlcm5hbCh1cmwpO1xuICAgIHJldHVybiB7IGFjdGlvbjogXCJkZW55XCIgfTtcbiAgfSk7XG5cbiAgLyoqXG4gICAqIElmIHRoZSAnc2hvdycgcHJvcGVydHkgb2YgdGhlIEJyb3dzZXJXaW5kb3cncyBjb25zdHJ1Y3RvciBpcyBvbWl0dGVkIGZyb20gdGhlIGluaXRpYWxpemF0aW9uIG9wdGlvbnMsXG4gICAqIGl0IHRoZW4gZGVmYXVsdHMgdG8gJ3RydWUnLiBUaGlzIGNhbiBjYXVzZSBmbGlja2VyaW5nIGFzIHRoZSB3aW5kb3cgbG9hZHMgdGhlIGh0bWwgY29udGVudCxcbiAgICogYW5kIGl0IGFsc28gaGFzIHNob3cgcHJvYmxlbWF0aWMgYmVoYXZpb3VyIHdpdGggdGhlIGNsb3Npbmcgb2YgdGhlIHdpbmRvdy5cbiAgICogVXNlIGBzaG93OiBmYWxzZWAgYW5kIGxpc3RlbiB0byB0aGUgIGByZWFkeS10by1zaG93YCBldmVudCB0byBzaG93IHRoZSB3aW5kb3cuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2VsZWN0cm9uL2VsZWN0cm9uL2lzc3Vlcy8yNTAxMiBmb3IgdGhlIGFmZm9yZCBtZW50aW9uZWQgaXNzdWUuXG4gICAqL1xuICBicm93c2VyV2luZG93Lm9uKFwicmVhZHktdG8tc2hvd1wiLCAoKSA9PiB7XG4gICAgYnJvd3NlcldpbmRvdz8uc2hvdygpO1xuXG4gICAgaWYgKGltcG9ydC5tZXRhLmVudi5ERVYpIHtcbiAgICAgIGJyb3dzZXJXaW5kb3c/LndlYkNvbnRlbnRzLm9wZW5EZXZUb29scygpO1xuICAgIH1cbiAgfSk7XG5cbiAgLyoqXG4gICAqIExvYWQgdGhlIG1haW4gcGFnZSBvZiB0aGUgbWFpbiB3aW5kb3cuXG4gICAqL1xuICBpZiAoXG4gICAgaW1wb3J0Lm1ldGEuZW52LkRFViAmJlxuICAgIGltcG9ydC5tZXRhLmVudi5WSVRFX0RFVl9TRVJWRVJfVVJMICE9PSB1bmRlZmluZWRcbiAgKSB7XG4gICAgLyoqXG4gICAgICogTG9hZCBmcm9tIHRoZSBWaXRlIGRldiBzZXJ2ZXIgZm9yIGRldmVsb3BtZW50LlxuICAgICAqL1xuICAgIGF3YWl0IGJyb3dzZXJXaW5kb3cubG9hZFVSTChpbXBvcnQubWV0YS5lbnYuVklURV9ERVZfU0VSVkVSX1VSTCk7XG4gIH0gZWxzZSB7XG4gICAgLyoqXG4gICAgICogTG9hZCBmcm9tIHRoZSBsb2NhbCBmaWxlIHN5c3RlbSBmb3IgcHJvZHVjdGlvbiBhbmQgdGVzdC5cbiAgICAgKlxuICAgICAqIFVzZSBCcm93c2VyV2luZG93LmxvYWRGaWxlKCkgaW5zdGVhZCBvZiBCcm93c2VyV2luZG93LmxvYWRVUkwoKSBmb3IgV2hhdFdHIFVSTCBBUEkgbGltaXRhdGlvbnNcbiAgICAgKiB3aGVuIHBhdGggY29udGFpbnMgc3BlY2lhbCBjaGFyYWN0ZXJzIGxpa2UgYCNgLlxuICAgICAqIExldCBlbGVjdHJvbiBoYW5kbGUgdGhlIHBhdGggcXVpcmtzLlxuICAgICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2lzc3Vlcy8xMjY4MlxuICAgICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2VsZWN0cm9uL2VsZWN0cm9uL2lzc3Vlcy82ODY5XG4gICAgICovXG4gICAgYXdhaXQgYnJvd3NlcldpbmRvdy5sb2FkRmlsZShcbiAgICAgIHJlc29sdmUoYXBwLmdldEFwcFBhdGgoKSwgXCIuL3JlbmRlcmVyL2Rpc3QvaW5kZXguaHRtbFwiKSxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIGJyb3dzZXJXaW5kb3c7XG59XG5cbi8qKlxuICogUmVzdG9yZSBhbiBleGlzdGluZyBCcm93c2VyV2luZG93IG9yIENyZWF0ZSBhIG5ldyBCcm93c2VyV2luZG93LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVzdG9yZU9yQ3JlYXRlV2luZG93KCkge1xuICBsZXQgd2luZG93ID0gQnJvd3NlcldpbmRvdy5nZXRBbGxXaW5kb3dzKCkuZmluZCgodykgPT4gIXcuaXNEZXN0cm95ZWQoKSk7XG5cbiAgaWYgKHdpbmRvdyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgd2luZG93ID0gYXdhaXQgY3JlYXRlV2luZG93KCk7XG4gIH1cblxuICBpZiAod2luZG93LmlzTWluaW1pemVkKCkpIHtcbiAgICB3aW5kb3cucmVzdG9yZSgpO1xuICB9XG5cbiAgd2luZG93LmZvY3VzKCk7XG5cbiAgcmV0dXJuIHdpbmRvdztcbn1cbiIsIi8qXG4gKiBTZWUgdGhlIExJQ0VOU0UgZmlsZSBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbFxuICogaW5mb3JtYXRpb24gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuXG4gKlxuICogVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZlxuICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlVcbiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgc29mdHdhcmU7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWVcbiAqIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQVxuICogMDIxMTAtMTMwMSBVU0EsIG9yIHNlZSB0aGUgRlNGIHNpdGU6IGh0dHA6Ly93d3cuZnNmLm9yZy5cbiAqL1xuXG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luLCByZWxhdGl2ZSB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IGFwcCwgaXBjTWFpbiB9IGZyb20gXCJlbGVjdHJvblwiO1xuaW1wb3J0IGZzIGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgeyBQYWdlQXR0YWNobWVudCwgUGFnZURhdGEgfSBmcm9tIFwiQHh3aWtpL2NyaXN0YWwtYXBpXCI7XG5cbmNvbnN0IEhPTUVfUEFUSCA9IFwiLmNyaXN0YWxcIjtcbmNvbnN0IEhPTUVfUEFUSF9GVUxMID0gam9pbihhcHAuZ2V0UGF0aChcImhvbWVcIiksIEhPTUVfUEFUSCk7XG5cbmZ1bmN0aW9uIHJlc29sdmVQYXRoKHBhZ2U6IHN0cmluZywgLi4ubGFzdFNlZ21lbnRzOiBzdHJpbmdbXSkge1xuICBjb25zdCBob21lZGlyID0gYXBwLmdldFBhdGgoXCJob21lXCIpO1xuICByZXR1cm4gam9pbihob21lZGlyLCBIT01FX1BBVEgsIHBhZ2UsIC4uLmxhc3RTZWdtZW50cyk7XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVQYWdlUGF0aChwYWdlOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcmVzb2x2ZVBhdGgocGFnZSwgXCJwYWdlLmpzb25cIik7XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVBdHRhY2htZW50c1BhdGgocGFnZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJlc29sdmVQYXRoKHBhZ2UsIFwiYXR0YWNobWVudHNcIik7XG59XG5mdW5jdGlvbiByZXNvbHZlQXR0YWNobWVudFBhdGgocGFnZTogc3RyaW5nLCBmaWxlbmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJlc29sdmVQYXRoKHBhZ2UsIFwiYXR0YWNobWVudHNcIiwgZmlsZW5hbWUpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBpc0ZpbGUocGF0aDogc3RyaW5nKSB7XG4gIGxldCBzdGF0ID0gdW5kZWZpbmVkO1xuICB0cnkge1xuICAgIHN0YXQgPSBhd2FpdCBmcy5wcm9taXNlcy5sc3RhdChwYXRoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZGVidWcoZSk7XG4gIH1cbiAgcmV0dXJuIHN0YXQ/LmlzRmlsZSgpO1xufVxuYXN5bmMgZnVuY3Rpb24gaXNEaXJlY3RvcnkocGF0aDogc3RyaW5nKSB7XG4gIGxldCBzdGF0ID0gdW5kZWZpbmVkO1xuICB0cnkge1xuICAgIHN0YXQgPSBhd2FpdCBmcy5wcm9taXNlcy5sc3RhdChwYXRoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZGVidWcoZSk7XG4gIH1cbiAgcmV0dXJuIHN0YXQ/LmlzRGlyZWN0b3J5KCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHBhdGhFeGlzdHMocGF0aDogc3RyaW5nKSB7XG4gIHRyeSB7XG4gICAgYXdhaXQgZnMucHJvbWlzZXMubHN0YXQocGF0aCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRQYWdlKHBhdGg6IHN0cmluZyk6IFByb21pc2U8UGFnZURhdGEgfCB1bmRlZmluZWQ+IHtcbiAgaWYgKCEoYXdhaXQgaXNXaXRoaW4oSE9NRV9QQVRIX0ZVTEwsIHBhdGgpKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgWyR7cGF0aH1dIGlzIG5vdCBpbiBpbiBbJHtIT01FX1BBVEhfRlVMTH1dYCk7XG4gIH1cbiAgaWYgKGF3YWl0IGlzRmlsZShwYXRoKSkge1xuICAgIGNvbnN0IHBhZ2VDb250ZW50ID0gYXdhaXQgZnMucHJvbWlzZXMucmVhZEZpbGUocGF0aCk7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UocGFnZUNvbnRlbnQudG9TdHJpbmcoXCJ1dGY4XCIpKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRBdHRhY2htZW50cyhcbiAgcGF0aDogc3RyaW5nLFxuKTogUHJvbWlzZTxQYWdlQXR0YWNobWVudFtdIHwgdW5kZWZpbmVkPiB7XG4gIGlmICghKGF3YWl0IGlzV2l0aGluKEhPTUVfUEFUSF9GVUxMLCBwYXRoKSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFske3BhdGh9XSBpcyBub3QgaW4gaW4gWyR7SE9NRV9QQVRIX0ZVTEx9XWApO1xuICB9XG4gIGlmIChhd2FpdCBpc0RpcmVjdG9yeShwYXRoKSkge1xuICAgIGNvbnN0IHBhZ2VDb250ZW50ID0gYXdhaXQgZnMucHJvbWlzZXMucmVhZGRpcihwYXRoKTtcbiAgICByZXR1cm4gcGFnZUNvbnRlbnQubWFwKChwYXRoKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogcGF0aCxcbiAgICAgICAgbWltZXR5cGU6IFwiXCIsXG4gICAgICAgIHJlZmVyZW5jZTogcGF0aCxcbiAgICAgICAgaHJlZjogcGF0aCxcbiAgICAgIH07XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBpc1dpdGhpbihyb290OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBjb25zdCByZWwgPSByZWxhdGl2ZShyb290LCBwYXRoKTtcbiAgcmV0dXJuICFyZWwuc3RhcnRzV2l0aChcIi4uL1wiKSAmJiByZWwgIT09IFwiLi5cIjtcbn1cblxuLyoqXG4gKiBOb3RlOiBjdXJyZW50bHkgdGhpcyBpcyBtb3JlIGEgbWV0aG9kIHRvIHVwZGF0ZSB0aGUgY29udGVudCBvZiBhIHBhZ2UgdGhhblxuICogYW4gYWN0dWFsIHBhZ2Ugc2F2ZS5cbiAqXG4gKiBAcGFyYW0gcGF0aCB0aGUgcGF0aCBvZiB0aGUgcGFnZSBvbiB0aGUgZmlsZSBzeXN0ZW1cbiAqIEBwYXJhbSBjb250ZW50IHRoZSBjb250ZW50IG9mIHRoZSBwYWdlXG4gKiBAcGFyYW0gdGl0bGUgdGhlIHRpdGxlIG9mIHRoZSBwYWdlXG4gKiBAc2luY2UgMC44XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHNhdmVQYWdlKFxuICBwYXRoOiBzdHJpbmcsXG4gIGNvbnRlbnQ6IHN0cmluZyxcbiAgdGl0bGU6IHN0cmluZyxcbik6IFByb21pc2U8UGFnZURhdGEgfCB1bmRlZmluZWQ+IHtcbiAgaWYgKCEoYXdhaXQgaXNXaXRoaW4oSE9NRV9QQVRIX0ZVTEwsIHBhdGgpKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgWyR7cGF0aH1dIGlzIG5vdCBpbiBpbiBbJHtIT01FX1BBVEhfRlVMTH1dYCk7XG4gIH1cbiAgbGV0IGpzb25Db250ZW50OiB7XG4gICAgc291cmNlOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHN5bnRheD86IHN0cmluZztcbiAgfTtcbiAgaWYgKChhd2FpdCBwYXRoRXhpc3RzKHBhdGgpKSAmJiAoYXdhaXQgaXNGaWxlKHBhdGgpKSkge1xuICAgIGNvbnN0IGZpbGVDb250ZW50ID0gYXdhaXQgZnMucHJvbWlzZXMucmVhZEZpbGUocGF0aCk7XG4gICAgY29uc3QgdGV4dERlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoXCJ1dGYtOFwiKTtcbiAgICBqc29uQ29udGVudCA9IEpTT04ucGFyc2UodGV4dERlY29kZXIuZGVjb2RlKGZpbGVDb250ZW50KSk7XG4gICAganNvbkNvbnRlbnQuc291cmNlID0gY29udGVudDtcbiAgICBqc29uQ29udGVudC5uYW1lID0gdGl0bGU7XG4gIH0gZWxzZSB7XG4gICAganNvbkNvbnRlbnQgPSB7XG4gICAgICBuYW1lOiB0aXRsZSxcbiAgICAgIHNvdXJjZTogY29udGVudCxcbiAgICAgIHN5bnRheDogXCJtYXJrZG93bi8xLjJcIixcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgbmV3SlNPTiA9IEpTT04uc3RyaW5naWZ5KGpzb25Db250ZW50LCBudWxsLCAyKTtcbiAgY29uc3QgcGFyZW50RGlyZWN0b3J5ID0gZGlybmFtZShwYXRoKTtcbiAgLy8gQ3JlYXRlIHRoZSBwYXJlbnQgZGlyZWN0b3JpZXMgaW4gY2FzZSB0aGV5IGRvIG5vdCBleGlzdC5cbiAgYXdhaXQgZnMucHJvbWlzZXMubWtkaXIocGFyZW50RGlyZWN0b3J5LCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgLy8gU2V0IHRoZSBmbGFnIHRvIHcrIHNvIHRoYXQgdGhlIGZpbGUgaXMgY3JlYXRlZCBpZiBpdCBkb2VzIG5vdCBhbHJlYWR5XG4gIC8vIGV4aXN0LCBvciBmdWxseSByZXBsYWNlZCB3aGVuIGl0IGRvZXMuXG4gIGF3YWl0IGZzLnByb21pc2VzLndyaXRlRmlsZShwYXRoLCBuZXdKU09OLCB7IGZsYWc6IFwidytcIiB9KTtcbiAgcmV0dXJuIHJlYWRQYWdlKHBhdGgpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzYXZlQXR0YWNobWVudChwYXRoOiBzdHJpbmcsIGZpbGVQYXRoOiBzdHJpbmcpIHtcbiAgaWYgKCEoYXdhaXQgaXNXaXRoaW4oSE9NRV9QQVRIX0ZVTEwsIHBhdGgpKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgWyR7cGF0aH1dIGlzIG5vdCBpbiBpbiBbJHtIT01FX1BBVEhfRlVMTH1dYCk7XG4gIH1cbiAgY29uc3QgcGFyZW50RGlyZWN0b3J5ID0gZGlybmFtZShwYXRoKTtcblxuICAvLyBDcmVhdGUgdGhlIHBhcmVudCBkaXJlY3RvcmllcyBpbiBjYXNlIHRoZXkgZG8gbm90IGV4aXN0LlxuICBhd2FpdCBmcy5wcm9taXNlcy5ta2RpcihwYXJlbnREaXJlY3RvcnksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICBhd2FpdCBmcy5wcm9taXNlcy5jb3B5RmlsZShmaWxlUGF0aCwgcGF0aCk7XG59XG5cbi8qKlxuICogR2V0IHRoZSBpZHMgb2YgdGhlIGNoaWxkcmVuIHBhZ2VzIGZvciBhIGdpdmVuIHBhZ2UuXG4gKlxuICogQHBhcmFtIHBhZ2UgdGhlIGlkIG9mIHRoZSBwYWdlXG4gKiBAcmV0dXJucyBhIGxpc3Qgb2YgcGFnZSBpZHNcbiAqIEBzaW5jZSAwLjEwXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGxpc3RDaGlsZHJlbihwYWdlOiBzdHJpbmcpOiBQcm9taXNlPEFycmF5PHN0cmluZz4+IHtcbiAgY29uc3QgZm9sZGVyUGF0aCA9IHJlc29sdmVQYXRoKHBhZ2UpLnJlcGxhY2UoXCIvcGFnZS5qc29uXCIsIFwiXCIpO1xuXG4gIGNvbnN0IGNoaWxkcmVuID0gW107XG4gIGNvbnN0IGZpbGVzID0gYXdhaXQgZnMucHJvbWlzZXMucmVhZGRpcihmb2xkZXJQYXRoKTtcblxuICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICBjb25zdCBwYXRoID0gYCR7Zm9sZGVyUGF0aH0vJHtmaWxlfWA7XG4gICAgaWYgKGF3YWl0IGlzRGlyZWN0b3J5KHBhdGgpKSB7XG4gICAgICBjaGlsZHJlbi5wdXNoKGZpbGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjaGlsZHJlbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbG9hZCgpOiB2b2lkIHtcbiAgaXBjTWFpbi5oYW5kbGUoXCJyZXNvbHZlUGF0aFwiLCAoZXZlbnQsIHsgcGFnZSB9KSA9PiB7XG4gICAgcmV0dXJuIHJlc29sdmVQYWdlUGF0aChwYWdlKTtcbiAgfSk7XG4gIGlwY01haW4uaGFuZGxlKFwicmVzb2x2ZUF0dGFjaG1lbnRzUGF0aFwiLCAoZXZlbnQsIHsgcGFnZSB9KSA9PiB7XG4gICAgcmV0dXJuIHJlc29sdmVBdHRhY2htZW50c1BhdGgocGFnZSk7XG4gIH0pO1xuICBpcGNNYWluLmhhbmRsZShcInJlYWRQYWdlXCIsIChldmVudCwgeyBwYXRoIH0pID0+IHtcbiAgICByZXR1cm4gcmVhZFBhZ2UocGF0aCk7XG4gIH0pO1xuICBpcGNNYWluLmhhbmRsZShcInJlYWRBdHRhY2htZW50c1wiLCAoZXZlbnQsIHsgcGF0aCB9KSA9PiB7XG4gICAgcmV0dXJuIHJlYWRBdHRhY2htZW50cyhwYXRoKTtcbiAgfSk7XG4gIGlwY01haW4uaGFuZGxlKFwic2F2ZVBhZ2VcIiwgKGV2ZW50LCB7IHBhdGgsIGNvbnRlbnQsIHRpdGxlIH0pID0+IHtcbiAgICByZXR1cm4gc2F2ZVBhZ2UocGF0aCwgY29udGVudCwgdGl0bGUpO1xuICB9KTtcbiAgaXBjTWFpbi5oYW5kbGUoXCJyZXNvbHZlQXR0YWNobWVudFBhdGhcIiwgKGV2ZW50LCB7IHBhZ2UsIGZpbGVuYW1lIH0pID0+IHtcbiAgICByZXR1cm4gcmVzb2x2ZUF0dGFjaG1lbnRQYXRoKHBhZ2UsIGZpbGVuYW1lKTtcbiAgfSk7XG4gIGlwY01haW4uaGFuZGxlKFwic2F2ZUF0dGFjaG1lbnRcIiwgKGV2ZW50LCB7IHBhdGgsIGZpbGVQYXRoIH0pID0+IHtcbiAgICByZXR1cm4gc2F2ZUF0dGFjaG1lbnQocGF0aCwgZmlsZVBhdGgpO1xuICB9KTtcbiAgaXBjTWFpbi5oYW5kbGUoXCJsaXN0Q2hpbGRyZW5cIiwgKGV2ZW50LCB7IHBhZ2UgfSkgPT4ge1xuICAgIHJldHVybiBsaXN0Q2hpbGRyZW4ocGFnZSk7XG4gIH0pO1xufVxuIiwiLypcbiAqIFNlZSB0aGUgTElDRU5TRSBmaWxlIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsXG4gKiBpbmZvcm1hdGlvbiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC5cbiAqXG4gKiBUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXG4gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mXG4gKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVVxuICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBzb2Z0d2FyZTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZVxuICogU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BXG4gKiAwMjExMC0xMzAxIFVTQSwgb3Igc2VlIHRoZSBGU0Ygc2l0ZTogaHR0cDovL3d3dy5mc2Yub3JnLlxuICovXG5cbmltcG9ydCB7IGlwY01haW4sIGFwcCB9IGZyb20gXCJlbGVjdHJvblwiO1xuaW1wb3J0IEJyb3dzZXJXaW5kb3cgPSBFbGVjdHJvbi5Ccm93c2VyV2luZG93O1xuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gXCJub2RlOnBhdGhcIjtcblxuLyoqXG4gKiBSZWxvYWQgdGhlIGJyb3dzZXIgYnkgcmVsb2FkaW5nIHRoZSBpbmRleCBmaWxlLlxuICogQHBhcmFtIHdpbmRvd1xuICovXG5mdW5jdGlvbiByZWxvYWRCcm93c2VyKHdpbmRvdzogQnJvd3NlcldpbmRvdykge1xuICB3aW5kb3cubG9hZEZpbGUocmVzb2x2ZShhcHAuZ2V0QXBwUGF0aCgpLCBcIi4vcmVuZGVyZXIvZGlzdC9pbmRleC5odG1sXCIpKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbG9hZCh3aW5kb3c6IEJyb3dzZXJXaW5kb3cpOiB2b2lkIHtcbiAgaXBjTWFpbi5oYW5kbGUoXCJyZWxvYWRCcm93c2VyXCIsICgpID0+IHtcbiAgICByZXR1cm4gcmVsb2FkQnJvd3Nlcih3aW5kb3cpO1xuICB9KTtcbn1cbiIsIi8qXG4gKiBTZWUgdGhlIExJQ0VOU0UgZmlsZSBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbFxuICogaW5mb3JtYXRpb24gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuXG4gKlxuICogVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZlxuICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlVcbiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgc29mdHdhcmU7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWVcbiAqIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQVxuICogMDIxMTAtMTMwMSBVU0EsIG9yIHNlZSB0aGUgRlNGIHNpdGU6IGh0dHA6Ly93d3cuZnNmLm9yZy5cbiAqL1xuXG5pbXBvcnQgeyBhcHAsIEJyb3dzZXJXaW5kb3cgfSBmcm9tIFwiZWxlY3Ryb25cIjtcbmltcG9ydCBcIi4vc2VjdXJpdHktcmVzdHJpY3Rpb25zXCI7XG5pbXBvcnQgeyByZXN0b3JlT3JDcmVhdGVXaW5kb3cgfSBmcm9tIFwiLi9tYWluV2luZG93XCI7XG5pbXBvcnQgeyBwbGF0Zm9ybSB9IGZyb20gXCJub2RlOnByb2Nlc3NcIjtcbi8vIEB0cy1leHBlY3QtZXJyb3Igc2hvdWxkbid0IGhhcHBlbiBidXQgd2UgbmVlZCB0byBnZW5lcmF0ZSB0aGUgdHlwZXMgZm9yIHRoZSB3aG9sZSBwcm9qZWN0IG9uY2UuXG5pbXBvcnQgbG9hZCBmcm9tIFwiQHh3aWtpL2NyaXN0YWwtZWxlY3Ryb24tc3RvcmFnZS9tYWluXCI7XG4vLyBAdHMtZXhwZWN0LWVycm9yIHNob3VsZG4ndCBoYXBwZW4gYnV0IHdlIG5lZWQgdG8gZ2VuZXJhdGUgdGhlIHR5cGVzIGZvciB0aGUgd2hvbGUgcHJvamVjdCBvbmNlLlxuaW1wb3J0IGxvYWRCcm93c2VyIGZyb20gXCJAeHdpa2kvY3Jpc3RhbC1icm93c2VyLWVsZWN0cm9uL21haW5cIjtcblxuLyoqXG4gKiBQcmV2ZW50IGVsZWN0cm9uIGZyb20gcnVubmluZyBtdWx0aXBsZSBpbnN0YW5jZXMuXG4gKi9cbmNvbnN0IGlzU2luZ2xlSW5zdGFuY2UgPSBhcHAucmVxdWVzdFNpbmdsZUluc3RhbmNlTG9jaygpO1xuaWYgKCFpc1NpbmdsZUluc3RhbmNlKSB7XG4gIGFwcC5xdWl0KCk7XG4gIHByb2Nlc3MuZXhpdCgwKTtcbn1cbmFwcC5vbihcInNlY29uZC1pbnN0YW5jZVwiLCByZXN0b3JlT3JDcmVhdGVXaW5kb3cpO1xuXG4vKipcbiAqIERpc2FibGUgSGFyZHdhcmUgQWNjZWxlcmF0aW9uIHRvIHNhdmUgbW9yZSBzeXN0ZW0gcmVzb3VyY2VzLlxuICovXG5hcHAuZGlzYWJsZUhhcmR3YXJlQWNjZWxlcmF0aW9uKCk7XG5cbi8qKlxuICogU2hvdXQgZG93biBiYWNrZ3JvdW5kIHByb2Nlc3MgaWYgYWxsIHdpbmRvd3Mgd2FzIGNsb3NlZFxuICovXG5hcHAub24oXCJ3aW5kb3ctYWxsLWNsb3NlZFwiLCAoKSA9PiB7XG4gIGlmIChwbGF0Zm9ybSAhPT0gXCJkYXJ3aW5cIikge1xuICAgIGFwcC5xdWl0KCk7XG4gIH1cbn0pO1xuXG4vKipcbiAqIENyZWF0ZSB0aGUgYXBwbGljYXRpb24gd2luZG93IHdoZW4gdGhlIGJhY2tncm91bmQgcHJvY2VzcyBpcyByZWFkeS5cbiAqL1xuYXBwXG4gIC53aGVuUmVhZHkoKVxuICAudGhlbigoKSA9PiB7XG4gICAgbG9hZCgpO1xuICAgIHJlc3RvcmVPckNyZWF0ZVdpbmRvdygpLnRoZW4oKHcpID0+IGxvYWRCcm93c2VyKHcpKTtcbiAgICAvKipcbiAgICAgKiBAc2VlIGh0dHBzOi8vd3d3LmVsZWN0cm9uanMub3JnL2RvY3MvbGF0ZXN0L2FwaS9hcHAjZXZlbnQtYWN0aXZhdGUtbWFjb3MgRXZlbnQ6ICdhY3RpdmF0ZScuXG4gICAgICovXG4gICAgYXBwLm9uKFwiYWN0aXZhdGVcIiwgKCkgPT4ge1xuICAgICAgaWYgKEJyb3dzZXJXaW5kb3cuZ2V0QWxsV2luZG93cygpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXN0b3JlT3JDcmVhdGVXaW5kb3coKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSlcbiAgLmNhdGNoKChlKSA9PiBjb25zb2xlLmVycm9yKFwiRmFpbGVkIGNyZWF0ZSB3aW5kb3c6XCIsIGUpKTtcblxuLyoqXG4gKiBJbnN0YWxsIFZ1ZS5qcyBvciBhbnkgb3RoZXIgZXh0ZW5zaW9uIGluIGRldmVsb3BtZW50IG1vZGUgb25seS5cbiAqIE5vdGU6IFlvdSBtdXN0IGluc3RhbGwgYGVsZWN0cm9uLWRldnRvb2xzLWluc3RhbGxlcmAgbWFudWFsbHlcbiAqL1xuLy8gaWYgKGltcG9ydC5tZXRhLmVudi5ERVYpIHtcbi8vICAgYXBwXG4vLyAgICAgLndoZW5SZWFkeSgpXG4vLyAgICAgLnRoZW4oKCkgPT4gaW1wb3J0KCdlbGVjdHJvbi1kZXZ0b29scy1pbnN0YWxsZXInKSlcbi8vICAgICAudGhlbihtb2R1bGUgPT4ge1xuLy8gICAgICAgY29uc3Qge2RlZmF1bHQ6IGluc3RhbGxFeHRlbnNpb24sIFZVRUpTM19ERVZUT09MU30gPVxuLy8gICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIEhvdGZpeCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL2Nhd2EtOTMvdml0ZS1lbGVjdHJvbi1idWlsZGVyL2lzc3Vlcy85MTVcbi8vICAgICAgICAgdHlwZW9mIG1vZHVsZS5kZWZhdWx0ID09PSAnZnVuY3Rpb24nID8gbW9kdWxlIDogKG1vZHVsZS5kZWZhdWx0IGFzIHR5cGVvZiBtb2R1bGUpO1xuLy9cbi8vICAgICAgIHJldHVybiBpbnN0YWxsRXh0ZW5zaW9uKFZVRUpTM19ERVZUT09MUywge1xuLy8gICAgICAgICBsb2FkRXh0ZW5zaW9uT3B0aW9uczoge1xuLy8gICAgICAgICAgIGFsbG93RmlsZUFjY2VzczogdHJ1ZSxcbi8vICAgICAgICAgfSxcbi8vICAgICAgIH0pO1xuLy8gICAgIH0pXG4vLyAgICAgLmNhdGNoKGUgPT4gY29uc29sZS5lcnJvcignRmFpbGVkIGluc3RhbGwgZXh0ZW5zaW9uOicsIGUpKTtcbi8vIH1cblxuLyoqXG4gKiBDaGVjayBmb3IgYXBwIHVwZGF0ZXMsIGluc3RhbGwgaXQgaW4gYmFja2dyb3VuZCBhbmQgbm90aWZ5IHVzZXIgdGhhdCBuZXcgdmVyc2lvbiB3YXMgaW5zdGFsbGVkLlxuICogTm8gcmVhc29uIHJ1biB0aGlzIGluIG5vbi1wcm9kdWN0aW9uIGJ1aWxkLlxuICogQHNlZSBodHRwczovL3d3dy5lbGVjdHJvbi5idWlsZC9hdXRvLXVwZGF0ZS5odG1sI3F1aWNrLXNldHVwLWd1aWRlXG4gKlxuICogTm90ZTogSXQgbWF5IHRocm93IFwiRU5PRU5UOiBubyBzdWNoIGZpbGUgYXBwLXVwZGF0ZS55bWxcIlxuICogaWYgeW91IGNvbXBpbGUgcHJvZHVjdGlvbiBhcHAgd2l0aG91dCBwdWJsaXNoaW5nIGl0IHRvIGRpc3RyaWJ1dGlvbiBzZXJ2ZXIuXG4gKiBMaWtlIGBucG0gcnVuIGNvbXBpbGVgIGRvZXMuIEl0J3Mgb2sg8J+YhVxuICovXG5pZiAoaW1wb3J0Lm1ldGEuZW52LlBST0QpIHtcbiAgYXBwXG4gICAgLndoZW5SZWFkeSgpXG4gICAgLnRoZW4oKCkgPT5cbiAgICAgIC8qKlxuICAgICAgICogSGVyZSB3ZSBmb3JjZWQgdG8gdXNlIGByZXF1aXJlYCBzaW5jZSBlbGVjdHJvbiBkb2Vzbid0IGZ1bGx5IHN1cHBvcnQgZHluYW1pYyBpbXBvcnQgaW4gYXNhciBhcmNoaXZlc1xuICAgICAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vZWxlY3Ryb24vZWxlY3Ryb24vaXNzdWVzLzM4ODI5XG4gICAgICAgKiBQb3RlbnRpYWxseSBpdCBtYXkgYmUgZml4ZWQgYnkgdGhpcyBodHRwczovL2dpdGh1Yi5jb20vZWxlY3Ryb24vZWxlY3Ryb24vcHVsbC8zNzUzNVxuICAgICAgICovXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXZhci1yZXF1aXJlc1xuICAgICAgcmVxdWlyZShcImVsZWN0cm9uLXVwZGF0ZXJcIikuYXV0b1VwZGF0ZXIuY2hlY2tGb3JVcGRhdGVzQW5kTm90aWZ5KCksXG4gICAgKVxuICAgIC5jYXRjaCgoZSkgPT4gY29uc29sZS5lcnJvcihcIkZhaWxlZCBjaGVjayBhbmQgaW5zdGFsbCB1cGRhdGVzOlwiLCBlKSk7XG59XG4iXSwibmFtZXMiOlsiQUxMT1dFRF9PUklHSU5TX0FORF9QRVJNSVNTSU9OUyIsIkFMTE9XRURfRVhURVJOQUxfT1JJR0lOUyIsImFwcCIsIl8iLCJjb250ZW50cyIsImV2ZW50IiwidXJsIiwib3JpZ2luIiwiVVJMIiwid2ViQ29udGVudHMiLCJwZXJtaXNzaW9uIiwiY2FsbGJhY2siLCJwZXJtaXNzaW9uR3JhbnRlZCIsInNoZWxsIiwid2ViUHJlZmVyZW5jZXMiLCJwYXJhbXMiLCJjcmVhdGVXaW5kb3ciLCJicm93c2VyV2luZG93IiwiQnJvd3NlcldpbmRvdyIsImpvaW4iLCJyZXNvbHZlIiwicmVzdG9yZU9yQ3JlYXRlV2luZG93Iiwid2luZG93IiwidyIsIkhPTUVfUEFUSCIsIkhPTUVfUEFUSF9GVUxMIiwicmVzb2x2ZVBhdGgiLCJwYWdlIiwibGFzdFNlZ21lbnRzIiwiaG9tZWRpciIsInJlc29sdmVQYWdlUGF0aCIsInJlc29sdmVBdHRhY2htZW50c1BhdGgiLCJyZXNvbHZlQXR0YWNobWVudFBhdGgiLCJmaWxlbmFtZSIsImlzRmlsZSIsInBhdGgiLCJzdGF0IiwiZnMiLCJlIiwiaXNEaXJlY3RvcnkiLCJwYXRoRXhpc3RzIiwicmVhZFBhZ2UiLCJpc1dpdGhpbiIsInBhZ2VDb250ZW50IiwicmVhZEF0dGFjaG1lbnRzIiwicm9vdCIsInJlbCIsInJlbGF0aXZlIiwic2F2ZVBhZ2UiLCJjb250ZW50IiwidGl0bGUiLCJqc29uQ29udGVudCIsImZpbGVDb250ZW50IiwidGV4dERlY29kZXIiLCJuZXdKU09OIiwicGFyZW50RGlyZWN0b3J5IiwiZGlybmFtZSIsInNhdmVBdHRhY2htZW50IiwiZmlsZVBhdGgiLCJsaXN0Q2hpbGRyZW4iLCJmb2xkZXJQYXRoIiwiY2hpbGRyZW4iLCJmaWxlcyIsImZpbGUiLCJsb2FkIiwiaXBjTWFpbiIsInJlbG9hZEJyb3dzZXIiLCJpc1NpbmdsZUluc3RhbmNlIiwicGxhdGZvcm0iLCJsb2FkQnJvd3NlciJdLCJtYXBwaW5ncyI6InFJQW9DTUEsRUFBa0MsSUFBSSxJQUd0QyxDQUFDLENBQ1AsRUFZTUMsTUFBK0IsSUFBeUIsQ0FDNUQsb0JBQ0YsQ0FBQyxFQUVEQyxFQUFBLElBQUksR0FBRyx1QkFBd0IsQ0FBQ0MsRUFBR0MsSUFBYSxDQVM5Q0EsRUFBUyxHQUFHLGdCQUFpQixDQUFDQyxFQUFPQyxJQUFRLENBQzNDLEtBQU0sQ0FBRSxPQUFBQyxDQUFXLEVBQUEsSUFBSUMsTUFBSUYsQ0FB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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xwiki/cristal-electron-main",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"license": "LGPL 2.1",
|
|
5
5
|
"author": "XWiki Org Community <contact@xwiki.org>",
|
|
6
6
|
"homepage": "https://cristal.xwiki.org/",
|
|
@@ -14,13 +14,12 @@
|
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
16
|
"electron": "31.0.2",
|
|
17
|
-
"@xwiki/cristal-browser-electron": "0.
|
|
18
|
-
"@xwiki/cristal-electron-storage": "0.
|
|
17
|
+
"@xwiki/cristal-browser-electron": "0.10.0",
|
|
18
|
+
"@xwiki/cristal-electron-storage": "0.10.0"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
|
21
|
-
"@types/node": "20.14.
|
|
22
|
-
"cross-env": "7.0.3"
|
|
23
|
-
"rimraf": "5.0.7"
|
|
21
|
+
"@types/node": "20.14.9",
|
|
22
|
+
"cross-env": "7.0.3"
|
|
24
23
|
},
|
|
25
24
|
"scripts": {
|
|
26
25
|
"build": "tsc --project tsconfig.json && vite build",
|