@secrecy/lib 1.0.0-dev.27 → 1.0.0-dev.28
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/dist/BaseClient.d.ts +274 -0
- package/dist/BaseClient.js +2227 -0
- package/dist/PopupTools.d.ts +17 -0
- package/dist/PopupTools.js +213 -0
- package/dist/ZeusThunder.d.ts +2 -0
- package/dist/ZeusThunder.js +113 -0
- package/dist/cache.d.ts +7 -0
- package/dist/cache.js +5 -0
- package/dist/client/admin/index.d.ts +11 -0
- package/dist/client/admin/index.js +198 -0
- package/dist/client/convert/file.d.ts +5 -0
- package/dist/client/convert/file.js +39 -0
- package/dist/client/convert/folder.d.ts +8 -0
- package/dist/client/convert/folder.js +264 -0
- package/dist/client/convert/mail.d.ts +3 -0
- package/dist/client/convert/mail.js +46 -0
- package/dist/client/convert/vFile.d.ts +5 -0
- package/dist/client/convert/vFile.js +164 -0
- package/dist/client/helpers.d.ts +23 -0
- package/dist/client/helpers.js +114 -0
- package/dist/client/index.d.ts +172 -0
- package/dist/client/index.js +6169 -0
- package/dist/client/storage.d.ts +7 -0
- package/dist/client/storage.js +12 -0
- package/dist/client/types/File.d.ts +21 -0
- package/dist/client/types/File.js +3 -0
- package/dist/client/types/FilesOnUsersOnApplications.d.ts +9 -0
- package/dist/client/types/FilesOnUsersOnApplications.js +3 -0
- package/dist/client/types/Folder.d.ts +68 -0
- package/dist/client/types/Folder.js +7 -0
- package/dist/client/types/Inputs.d.ts +21 -0
- package/dist/client/types/Inputs.js +3 -0
- package/dist/client/types/UserAppNotifications.d.ts +6 -0
- package/dist/client/types/UserAppNotifications.js +3 -0
- package/dist/client/types/UserAppSettings.d.ts +7 -0
- package/dist/client/types/UserAppSettings.js +3 -0
- package/dist/client/types/VFile.d.ts +62 -0
- package/dist/client/types/VFile.js +4 -0
- package/dist/client/types/index.d.ts +154 -0
- package/dist/client/types/index.js +10 -0
- package/dist/client/types/queries.d.ts +535 -0
- package/dist/client/types/queries.js +192 -0
- package/dist/crypto/file.d.ts +14 -0
- package/dist/crypto/file.js +291 -0
- package/dist/crypto/index.d.ts +12 -0
- package/dist/crypto/index.js +45 -0
- package/dist/error.d.ts +30 -0
- package/dist/error.js +3 -0
- package/dist/index.d.ts +13 -3857
- package/dist/index.js +42 -255
- package/dist/minify/index.d.ts +2 -0
- package/dist/minify/index.js +28 -0
- package/dist/minify/lz4.d.ts +5 -0
- package/dist/minify/lz4.js +633 -0
- package/dist/sodium.d.ts +3 -0
- package/dist/sodium.js +28 -0
- package/dist/utils/store-buddy.d.ts +14 -0
- package/dist/utils/store-buddy.js +69 -0
- package/dist/utils/time.d.ts +10 -0
- package/dist/utils/time.js +22 -0
- package/dist/utils.d.ts +4 -0
- package/dist/utils.js +188 -0
- package/dist/worker/__mock__/sodium.worker.d.ts +19 -0
- package/dist/worker/__mock__/sodium.worker.js +46 -0
- package/dist/worker/md5.d.ts +1 -0
- package/dist/worker/md5.js +43 -0
- package/dist/worker/sodium.d.ts +3 -0
- package/dist/worker/sodium.js +155 -0
- package/dist/worker/workerCodes.d.ts +2 -0
- package/dist/worker/workerCodes.js +3 -0
- package/dist/zeus/const.d.ts +2 -0
- package/dist/zeus/const.js +2267 -0
- package/dist/zeus/index.d.ts +4043 -0
- package/dist/zeus/index.js +549 -0
- package/package.json +23 -14
- package/__tests__/client/client.test.ts +0 -81
- package/__tests__/client/folder.test.ts +0 -302
- package/__tests__/client/mail.test.ts +0 -476
- package/__tests__/client/timing.test.ts +0 -35
- package/__tests__/client/utils.ts +0 -41
- package/__tests__/client/vFile.test.ts +0 -207
- package/__tests__/index.test.ts +0 -171
- package/commitlint.config.cjs +0 -3
- package/dist/index.js.map +0 -1
- package/dist/index.mjs +0 -255
- package/dist/index.mjs.map +0 -1
- package/docs/assets/css/main.css +0 -2660
- package/docs/assets/images/icons.png +0 -0
- package/docs/assets/images/icons@2x.png +0 -0
- package/docs/assets/images/widgets.png +0 -0
- package/docs/assets/images/widgets@2x.png +0 -0
- package/docs/assets/js/main.js +0 -248
- package/docs/assets/js/search.js +0 -1
- package/docs/classes/baseclient.baseclient-1.html +0 -1165
- package/docs/classes/client.secrecyclient.html +0 -2527
- package/docs/enums/index.sodium.base64_variants.html +0 -205
- package/docs/index.html +0 -198
- package/docs/interfaces/client_types.draftmail.html +0 -335
- package/docs/interfaces/client_types.filecontentbase.html +0 -231
- package/docs/interfaces/client_types.filecontentcloud.html +0 -244
- package/docs/interfaces/client_types.filecontentreceivedmail.html +0 -244
- package/docs/interfaces/client_types.filecontentsentmail.html +0 -230
- package/docs/interfaces/client_types.receivedmail.html +0 -363
- package/docs/interfaces/client_types.sentmail.html +0 -335
- package/docs/interfaces/crypto.keypair.html +0 -202
- package/docs/interfaces/index.sodium.cryptobox.html +0 -185
- package/docs/interfaces/index.sodium.cryptokx.html +0 -185
- package/docs/interfaces/index.sodium.keypair.html +0 -199
- package/docs/interfaces/index.sodium.messagetag.html +0 -185
- package/docs/interfaces/index.sodium.secretbox.html +0 -185
- package/docs/interfaces/index.sodium.stateaddress.html +0 -171
- package/docs/interfaces/index.sodium.stringcryptobox.html +0 -185
- package/docs/interfaces/index.sodium.stringcryptokx.html +0 -185
- package/docs/interfaces/index.sodium.stringkeypair.html +0 -199
- package/docs/interfaces/index.sodium.stringmessagetag.html +0 -185
- package/docs/interfaces/index.sodium.stringsecretbox.html +0 -185
- package/docs/interfaces/utils_store_buddy.storebuddy.html +0 -333
- package/docs/modules/baseclient.html +0 -929
- package/docs/modules/cache.html +0 -185
- package/docs/modules/client.html +0 -207
- package/docs/modules/client_convert_file.html +0 -216
- package/docs/modules/client_convert_folder.html +0 -303
- package/docs/modules/client_convert_vfile.html +0 -216
- package/docs/modules/client_helpers.html +0 -311
- package/docs/modules/client_storage.html +0 -167
- package/docs/modules/client_types.html +0 -1227
- package/docs/modules/client_types_file.html +0 -233
- package/docs/modules/client_types_filesonusersonapplications.html +0 -168
- package/docs/modules/client_types_folder.html +0 -383
- package/docs/modules/client_types_inputs.html +0 -263
- package/docs/modules/client_types_mail.html +0 -181
- package/docs/modules/client_types_queries.html +0 -199
- package/docs/modules/client_types_userappsettings.html +0 -163
- package/docs/modules/client_types_vfile.html +0 -364
- package/docs/modules/crypto.html +0 -366
- package/docs/modules/crypto_file.html +0 -344
- package/docs/modules/index.html +0 -779
- package/docs/modules/index.sodium.html +0 -6039
- package/docs/modules/minify.html +0 -183
- package/docs/modules/minify_lz4.html +0 -279
- package/docs/modules/popuptools.html +0 -259
- package/docs/modules/sodium.html +0 -167
- package/docs/modules/utils.html +0 -219
- package/docs/modules/utils_store_buddy.html +0 -208
- package/docs/modules/utils_time.html +0 -330
- package/docs/modules/worker_md5.html +0 -156
- package/docs/modules/worker_sodium.html +0 -231
- package/docs/modules/worker_workercodes.html +0 -157
- package/docs/modules.html +0 -235
- package/index.html +0 -21
- package/jest.config.ts +0 -27
- package/jest.setup.ts +0 -6
- package/release.config.cjs +0 -15
- package/tsup.config.ts +0 -26
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
2
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
3
|
+
import { workerSodiumScript } from "./workerCodes.js"; // const ensureNonDetachedUniqueBuffers = (
|
|
4
|
+
// values: Transferable[]
|
|
5
|
+
// ): Set<Transferable> =>
|
|
6
|
+
// new Set(
|
|
7
|
+
// values.filter(v => {
|
|
8
|
+
// if (v instanceof ArrayBuffer) {
|
|
9
|
+
// return v.byteLength === 0;
|
|
10
|
+
// } else {
|
|
11
|
+
// return true;
|
|
12
|
+
// }
|
|
13
|
+
// })
|
|
14
|
+
// );
|
|
15
|
+
|
|
16
|
+
export function encrypt(_x, _x2, _x3, _x4) {
|
|
17
|
+
return _encrypt.apply(this, arguments);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function _encrypt() {
|
|
21
|
+
_encrypt = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(key, dataToEncrypt, progress, signal) {
|
|
22
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
23
|
+
while (1) {
|
|
24
|
+
switch (_context.prev = _context.next) {
|
|
25
|
+
case 0:
|
|
26
|
+
return _context.abrupt("return", new Promise(function (resolve, reject) {
|
|
27
|
+
progress == null ? void 0 : progress({
|
|
28
|
+
current: 0,
|
|
29
|
+
percent: 0,
|
|
30
|
+
total: dataToEncrypt.byteLength
|
|
31
|
+
});
|
|
32
|
+
var worker = new Worker(URL.createObjectURL(new Blob([workerSodiumScript], {
|
|
33
|
+
type: "text/javascript"
|
|
34
|
+
})));
|
|
35
|
+
worker.addEventListener("error", reject);
|
|
36
|
+
worker.addEventListener("messageerror", reject);
|
|
37
|
+
worker.addEventListener("message", function (_ref) {
|
|
38
|
+
var data = _ref.data;
|
|
39
|
+
|
|
40
|
+
switch (data.event) {
|
|
41
|
+
case "ready":
|
|
42
|
+
{
|
|
43
|
+
var postData = {
|
|
44
|
+
event: "encrypt",
|
|
45
|
+
data: dataToEncrypt,
|
|
46
|
+
key: key
|
|
47
|
+
};
|
|
48
|
+
worker.postMessage(postData, [postData.data.buffer] // // @ts-expect-error - Typescript expects the transfer list to be an Array, but it can actually be any iterable.
|
|
49
|
+
// ensureNonDetachedUniqueBuffers([postData.data.buffer])
|
|
50
|
+
);
|
|
51
|
+
break;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
case "encrypt-progress":
|
|
55
|
+
{
|
|
56
|
+
if (signal != null && signal.aborted) {
|
|
57
|
+
var abortError = new Error("Aborted");
|
|
58
|
+
abortError.name = "AbortError";
|
|
59
|
+
worker.terminate();
|
|
60
|
+
reject(abortError);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
progress == null ? void 0 : progress(data.data);
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
case "encrypt-result":
|
|
68
|
+
{
|
|
69
|
+
worker.terminate();
|
|
70
|
+
return resolve(data.data);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
}));
|
|
75
|
+
|
|
76
|
+
case 1:
|
|
77
|
+
case "end":
|
|
78
|
+
return _context.stop();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}, _callee);
|
|
82
|
+
}));
|
|
83
|
+
return _encrypt.apply(this, arguments);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export function decrypt(_x5, _x6, _x7, _x8) {
|
|
87
|
+
return _decrypt.apply(this, arguments);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
function _decrypt() {
|
|
91
|
+
_decrypt = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(key, dataToDecrypt, progress, signal) {
|
|
92
|
+
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
93
|
+
while (1) {
|
|
94
|
+
switch (_context2.prev = _context2.next) {
|
|
95
|
+
case 0:
|
|
96
|
+
return _context2.abrupt("return", new Promise(function (resolve, reject) {
|
|
97
|
+
progress == null ? void 0 : progress({
|
|
98
|
+
current: 0,
|
|
99
|
+
percent: 0,
|
|
100
|
+
total: dataToDecrypt.byteLength
|
|
101
|
+
});
|
|
102
|
+
var worker = new Worker(URL.createObjectURL(new Blob([workerSodiumScript], {
|
|
103
|
+
type: "text/javascript"
|
|
104
|
+
})));
|
|
105
|
+
worker.addEventListener("error", reject);
|
|
106
|
+
worker.addEventListener("messageerror", reject);
|
|
107
|
+
worker.addEventListener("message", function (_ref2) {
|
|
108
|
+
var data = _ref2.data;
|
|
109
|
+
|
|
110
|
+
switch (data.event) {
|
|
111
|
+
case "ready":
|
|
112
|
+
{
|
|
113
|
+
var postData = {
|
|
114
|
+
event: "decrypt",
|
|
115
|
+
key: key,
|
|
116
|
+
data: dataToDecrypt
|
|
117
|
+
};
|
|
118
|
+
worker.postMessage(postData, [postData.data.buffer] // // @ts-expect-error - Typescript expects the transfer list to be an Array, but it can actually be any iterable.
|
|
119
|
+
// ensureNonDetachedUniqueBuffers([postData.data.buffer])
|
|
120
|
+
);
|
|
121
|
+
break;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
case "decrypt-progress":
|
|
125
|
+
{
|
|
126
|
+
if (signal != null && signal.aborted) {
|
|
127
|
+
var abortError = new Error("Aborted");
|
|
128
|
+
abortError.name = "AbortError";
|
|
129
|
+
worker.terminate();
|
|
130
|
+
reject(abortError);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
progress == null ? void 0 : progress(data.data);
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
case "decrypt-result":
|
|
138
|
+
{
|
|
139
|
+
worker.terminate();
|
|
140
|
+
return resolve(data.data);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
}));
|
|
145
|
+
|
|
146
|
+
case 1:
|
|
147
|
+
case "end":
|
|
148
|
+
return _context2.stop();
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}, _callee2);
|
|
152
|
+
}));
|
|
153
|
+
return _decrypt.apply(this, arguments);
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93b3JrZXIvc29kaXVtLnRzIl0sIm5hbWVzIjpbIndvcmtlclNvZGl1bVNjcmlwdCIsImVuY3J5cHQiLCJrZXkiLCJkYXRhVG9FbmNyeXB0IiwicHJvZ3Jlc3MiLCJzaWduYWwiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImN1cnJlbnQiLCJwZXJjZW50IiwidG90YWwiLCJieXRlTGVuZ3RoIiwid29ya2VyIiwiV29ya2VyIiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwiQmxvYiIsInR5cGUiLCJhZGRFdmVudExpc3RlbmVyIiwiZGF0YSIsImV2ZW50IiwicG9zdERhdGEiLCJwb3N0TWVzc2FnZSIsImJ1ZmZlciIsImFib3J0ZWQiLCJhYm9ydEVycm9yIiwiRXJyb3IiLCJuYW1lIiwidGVybWluYXRlIiwiZGVjcnlwdCIsImRhdGFUb0RlY3J5cHQiXSwibWFwcGluZ3MiOiI7O0FBQ0EsU0FBU0Esa0JBQVQsUUFBbUMsa0JBQW5DLEMsQ0FFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsZ0JBQXNCQyxPQUF0QjtBQUFBO0FBQUE7OztzRUFBTyxpQkFDTEMsR0FESyxFQUVMQyxhQUZLLEVBR0xDLFFBSEssRUFJTEMsTUFKSztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsNkNBTUUsSUFBSUMsT0FBSixDQUFZLFVBQUNDLE9BQUQsRUFBVUMsTUFBVixFQUFxQjtBQUN0Q0osY0FBQUEsUUFBUSxRQUFSLFlBQUFBLFFBQVEsQ0FBRztBQUNUSyxnQkFBQUEsT0FBTyxFQUFFLENBREE7QUFFVEMsZ0JBQUFBLE9BQU8sRUFBRSxDQUZBO0FBR1RDLGdCQUFBQSxLQUFLLEVBQUVSLGFBQWEsQ0FBQ1M7QUFIWixlQUFILENBQVI7QUFLQSxrQkFBTUMsTUFBTSxHQUFHLElBQUlDLE1BQUosQ0FDYkMsR0FBRyxDQUFDQyxlQUFKLENBQ0UsSUFBSUMsSUFBSixDQUFTLENBQUNqQixr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ZmtCLHdCQUFBQSxJQUFJLEVBQUVXO0FBSFMsdUJBQWpCO0FBS0FsQixzQkFBQUEsTUFBTSxDQUFDVSxXQUFQLENBQ0VELFFBREYsRUFFRSxDQUFDQSxRQUFRLENBQUNGLElBQVQsQ0FBY0ksTUFBZixDQUZGLENBR0U7QUFDQTtBQUpGO0FBTUE7QUFDRDs7QUFDRCx1QkFBSyxrQkFBTDtBQUF5QjtBQUN2QiwwQkFBSW5CLE1BQUosWUFBSUEsTUFBTSxDQUFFb0IsT0FBWixFQUFxQjtBQUNuQiw0QkFBTUMsVUFBVSxHQUFHLElBQUlDLEtBQUosQ0FBVSxTQUFWLENBQW5CO0FBQ0FELHdCQUFBQSxVQUFVLENBQUNFLElBQVgsR0FBa0IsWUFBbEI7QUFDQWYsd0JBQUFBLE1BQU0sQ0FBQ2dCLFNBQVA7QUFDQXJCLHdCQUFBQSxNQUFNLENBQUNrQixVQUFELENBQU47QUFDRDs7QUFDRHRCLHNCQUFBQSxRQUFRLFFBQVIsWUFBQUEsUUFBUSxDQUFHZ0IsSUFBSSxDQUFDQSxJQUFSLENBQVI7QUFDQTtBQUNEOztBQUNELHVCQUFLLGdCQUFMO0FBQXVCO0FBQ3JCUCxzQkFBQUEsTUFBTSxDQUFDZ0IsU0FBUDtBQUNBLDZCQUFPdEIsT0FBTyxDQUFDYSxJQUFJLENBQUNBLElBQU4sQ0FBZDtBQUNEO0FBNUJIO0FBOEJELGVBL0JEO0FBZ0NELGFBOUNNLENBTkY7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW5jcnlwdGVkRmlsZSwgUHJvZ3Jlc3MgfSBmcm9tIFwiLi4vY3J5cHRvL2ZpbGUuanNcIjtcbmltcG9ydCB7IHdvcmtlclNvZGl1bVNjcmlwdCB9IGZyb20gXCIuL3dvcmtlckNvZGVzLmpzXCI7XG5cbi8vIGNvbnN0IGVuc3VyZU5vbkRldGFjaGVkVW5pcXVlQnVmZmVycyA9IChcbi8vICAgdmFsdWVzOiBUcmFuc2ZlcmFibGVbXVxuLy8gKTogU2V0PFRyYW5zZmVyYWJsZT4gPT5cbi8vICAgbmV3IFNldChcbi8vICAgICB2YWx1ZXMuZmlsdGVyKHYgPT4ge1xuLy8gICAgICAgaWYgKHYgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikge1xuLy8gICAgICAgICByZXR1cm4gdi5ieXRlTGVuZ3RoID09PSAwO1xuLy8gICAgICAgfSBlbHNlIHtcbi8vICAgICAgICAgcmV0dXJuIHRydWU7XG4vLyAgICAgICB9XG4vLyAgICAgfSlcbi8vICAgKTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuY3J5cHQoXG4gIGtleTogVWludDhBcnJheSxcbiAgZGF0YVRvRW5jcnlwdDogVWludDhBcnJheSxcbiAgcHJvZ3Jlc3M/OiAocHJvZ3Jlc3M6IFByb2dyZXNzKSA9PiBQcm9taXNlPHZvaWQ+LFxuICBzaWduYWw/OiBBYm9ydFNpZ25hbFxuKTogUHJvbWlzZTxFbmNyeXB0ZWRGaWxlPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgcHJvZ3Jlc3M/Lih7XG4gICAgICBjdXJyZW50OiAwLFxuICAgICAgcGVyY2VudDogMCxcbiAgICAgIHRvdGFsOiBkYXRhVG9FbmNyeXB0LmJ5dGVMZW5ndGhcbiAgICB9KTtcbiAgICBjb25zdCB3b3JrZXIgPSBuZXcgV29ya2VyKFxuICAgICAgVVJMLmNyZWF0ZU9iamVjdFVSTChcbiAgICAgICAgbmV3IEJsb2IoW3dvcmtlclNvZGl1bVNjcmlwdF0sIHsgdHlwZTogXCJ0ZXh0L2phdmFzY3JpcHRcIiB9KVxuICAgICAgKVxuICAgICk7XG4gICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCByZWplY3QpO1xuICAgIHdvcmtlci5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZWVycm9yXCIsIHJlamVjdCk7XG4gICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsICh7IGRhdGEgfSkgPT4ge1xuICAgICAgc3dpdGNoIChkYXRhLmV2ZW50KSB7XG4gICAgICAgIGNhc2UgXCJyZWFkeVwiOiB7XG4gICAgICAgICAgY29uc3QgcG9zdERhdGEgPSB7XG4gICAgICAgICAgICBldmVudDogXCJlbmNyeXB0XCIsXG4gICAgICAgICAgICBkYXRhOiBkYXRhVG9FbmNyeXB0LFxuICAgICAgICAgICAga2V5XG4gICAgICAgICAgfTtcbiAgICAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2UoXG4gICAgICAgICAgICBwb3N0RGF0YSxcbiAgICAgICAgICAgIFtwb3N0RGF0YS5kYXRhLmJ1ZmZlcl1cbiAgICAgICAgICAgIC8vIC8vIEB0cy1leHBlY3QtZXJyb3IgLSBUeXBlc2NyaXB0IGV4cGVjdHMgdGhlIHRyYW5zZmVyIGxpc3QgdG8gYmUgYW4gQXJyYXksIGJ1dCBpdCBjYW4gYWN0dWFsbHkgYmUgYW55IGl0ZXJhYmxlLlxuICAgICAgICAgICAgLy8gZW5zdXJlTm9uRGV0YWNoZWRVbmlxdWVCdWZmZXJzKFtwb3N0RGF0YS5kYXRhLmJ1ZmZlcl0pXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiZW5jcnlwdC1wcm9ncmVzc1wiOiB7XG4gICAgICAgICAgaWYgKHNpZ25hbD8uYWJvcnRlZCkge1xuICAgICAgICAgICAgY29uc3QgYWJvcnRFcnJvciA9IG5ldyBFcnJvcihcIkFib3J0ZWRcIik7XG4gICAgICAgICAgICBhYm9ydEVycm9yLm5hbWUgPSBcIkFib3J0RXJyb3JcIjtcbiAgICAgICAgICAgIHdvcmtlci50ZXJtaW5hdGUoKTtcbiAgICAgICAgICAgIHJlamVjdChhYm9ydEVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcHJvZ3Jlc3M/LihkYXRhLmRhdGEpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJlbmNyeXB0LXJlc3VsdFwiOiB7XG4gICAgICAgICAgd29ya2VyLnRlcm1pbmF0ZSgpO1xuICAgICAgICAgIHJldHVybiByZXNvbHZlKGRhdGEuZGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWNyeXB0KFxuICBrZXk6IFVpbnQ4QXJyYXksXG4gIGRhdGFUb0RlY3J5cHQ6IFVpbnQ4QXJyYXksXG4gIHByb2dyZXNzPzogKHByb2dyZXNzOiBQcm9ncmVzcykgPT4gUHJvbWlzZTx2b2lkPixcbiAgc2lnbmFsPzogQWJvcnRTaWduYWxcbik6IFByb21pc2U8VWludDhBcnJheT4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHByb2dyZXNzPy4oe1xuICAgICAgY3VycmVudDogMCxcbiAgICAgIHBlcmNlbnQ6IDAsXG4gICAgICB0b3RhbDogZGF0YVRvRGVjcnlwdC5ieXRlTGVuZ3RoXG4gICAgfSk7XG4gICAgY29uc3Qgd29ya2VyID0gbmV3IFdvcmtlcihcbiAgICAgIFVSTC5jcmVhdGVPYmplY3RVUkwoXG4gICAgICAgIG5ldyBCbG9iKFt3b3JrZXJTb2RpdW1TY3JpcHRdLCB7IHR5cGU6IFwidGV4dC9qYXZhc2NyaXB0XCIgfSlcbiAgICAgIClcbiAgICApO1xuICAgIHdvcmtlci5hZGRFdmVudExpc3RlbmVyKFwiZXJyb3JcIiwgcmVqZWN0KTtcbiAgICB3b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VlcnJvclwiLCByZWplY3QpO1xuXG4gICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsICh7IGRhdGEgfSkgPT4ge1xuICAgICAgc3dpdGNoIChkYXRhLmV2ZW50KSB7XG4gICAgICAgIGNhc2UgXCJyZWFkeVwiOiB7XG4gICAgICAgICAgY29uc3QgcG9zdERhdGEgPSB7XG4gICAgICAgICAgICBldmVudDogXCJkZWNyeXB0XCIsXG4gICAgICAgICAgICBrZXksXG4gICAgICAgICAgICBkYXRhOiBkYXRhVG9EZWNyeXB0XG4gICAgICAgICAgfTtcbiAgICAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2UoXG4gICAgICAgICAgICBwb3N0RGF0YSxcbiAgICAgICAgICAgIFtwb3N0RGF0YS5kYXRhLmJ1ZmZlcl1cbiAgICAgICAgICAgIC8vIC8vIEB0cy1leHBlY3QtZXJyb3IgLSBUeXBlc2NyaXB0IGV4cGVjdHMgdGhlIHRyYW5zZmVyIGxpc3QgdG8gYmUgYW4gQXJyYXksIGJ1dCBpdCBjYW4gYWN0dWFsbHkgYmUgYW55IGl0ZXJhYmxlLlxuICAgICAgICAgICAgLy8gZW5zdXJlTm9uRGV0YWNoZWRVbmlxdWVCdWZmZXJzKFtwb3N0RGF0YS5kYXRhLmJ1ZmZlcl0pXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiZGVjcnlwdC1wcm9ncmVzc1wiOiB7XG4gICAgICAgICAgaWYgKHNpZ25hbD8uYWJvcnRlZCkge1xuICAgICAgICAgICAgY29uc3QgYWJvcnRFcnJvciA9IG5ldyBFcnJvcihcIkFib3J0ZWRcIik7XG4gICAgICAgICAgICBhYm9ydEVycm9yLm5hbWUgPSBcIkFib3J0RXJyb3JcIjtcbiAgICAgICAgICAgIHdvcmtlci50ZXJtaW5hdGUoKTtcbiAgICAgICAgICAgIHJlamVjdChhYm9ydEVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcHJvZ3Jlc3M/LihkYXRhLmRhdGEpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJkZWNyeXB0LXJlc3VsdFwiOiB7XG4gICAgICAgICAgd29ya2VyLnRlcm1pbmF0ZSgpO1xuICAgICAgICAgIHJldHVybiByZXNvbHZlKGRhdGEuZGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const workerSodiumScript = "let sodium;\n\nself.sodium = {\n onload: (sod) => {\n sodium = sod\n postMessage({ event: \"ready\" })\n }\n};\n\nimportScripts('https://cdn.jsdelivr.net/gh/jedisct1/libsodium.js@master/dist/browsers/sodium.js');\nimportScripts('https://cdnjs.cloudflare.com/ajax/libs/spark-md5/3.0.0/spark-md5.min.js');\n\nfunction* chunks(arr, n) {\n for (let i = 0; i < arr.length; i += n) {\n yield arr.slice(i, i + n);\n }\n}\n\nfunction assert(c, message) {\n if (!c) {\n throw new Error(message);\n }\n}\n\nfunction encrypt(key) {\n let destroyed = false;\n const {\n state,\n header\n } = sodium.crypto_secretstream_xchacha20poly1305_init_push(key);\n\n const encrypt = (tag, plaintext) => {\n assert(destroyed === false, \"state already destroyed\");\n\n return sodium.crypto_secretstream_xchacha20poly1305_push(\n state,\n plaintext,\n null,\n tag\n );\n };\n\n function destroy() {\n assert(destroyed === false, \"state already destroyed\");\n destroyed = true;\n }\n\n return {\n encrypt,\n destroy,\n header\n };\n}\n\nfunction decrypt(header, key) {\n assert(\n header.byteLength >=\n sodium.crypto_secretstream_xchacha20poly1305_HEADERBYTES,\n \"header must be at least HEADERBYTES (\" + sodium.crypto_secretstream_xchacha20poly1305_HEADERBYTES + \") long\"\n );\n assert(\n key.byteLength >= sodium.crypto_secretstream_xchacha20poly1305_KEYBYTES,\n \"key must be at least KEYBYTES (\" + sodium.crypto_secretstream_xchacha20poly1305_KEYBYTES + \") long\"\n );\n\n let destroyed = false;\n const state = sodium.crypto_secretstream_xchacha20poly1305_init_pull(\n header,\n key\n );\n\n const decrypt = ciphertext => {\n assert(destroyed === false, \"state already destroyed\");\n\n return sodium.crypto_secretstream_xchacha20poly1305_pull(state, ciphertext);\n };\n\n function destroy() {\n assert(destroyed === false, \"state already destroyed\");\n destroyed = true;\n }\n\n return {\n decrypt,\n destroy\n };\n}\n\nconst CHUNK_SIZE = 8192;\n\nasync function encryptSecretstream(key, data, progress) {\n const { encrypt: crypt, destroy, header } = encrypt(key);\n const cryptedChunk =\n CHUNK_SIZE + sodium.crypto_secretstream_xchacha20poly1305_ABYTES;\n const max =\n Math.ceil(data.byteLength / CHUNK_SIZE) * cryptedChunk + header.byteLength;\n\n progress?.({\n percent: 0,\n total: max,\n current: 0\n });\n const final = new Uint8Array(max);\n const sparkEncrypted = new SparkMD5.ArrayBuffer();\n const spark = new SparkMD5.ArrayBuffer();\n\n final.set(header);\n sparkEncrypted.append(header);\n let total = header.byteLength;\n progress?.({\n percent: total / max,\n total: max,\n current: total\n });\n let lastPercent = total / max;\n\n for (const chunk of chunks(data, CHUNK_SIZE)) {\n spark.append(chunk);\n const tag =\n chunk.length < CHUNK_SIZE\n ? sodium.crypto_secretstream_xchacha20poly1305_TAG_FINAL\n : sodium.crypto_secretstream_xchacha20poly1305_TAG_MESSAGE;\n const crypted = crypt(tag, chunk);\n sparkEncrypted.append(crypted);\n final.set(crypted, total);\n total += crypted.byteLength;\n const percent = total / max;\n if (percent > lastPercent + 0.01) {\n progress?.({\n percent,\n total: max,\n current: total\n });\n lastPercent = percent;\n }\n }\n\n destroy();\n progress?.({\n percent: 1,\n total,\n current: total\n });\n return {\n data: final.slice(0, total),\n md5Encrypted: sparkEncrypted.end(),\n md5: spark.end()\n };\n}\n\nasync function decryptSecretstream(key, data, progress) {\n const header = data.slice(\n 0,\n sodium.crypto_secretstream_xchacha20poly1305_HEADERBYTES\n );\n data = data.slice(sodium.crypto_secretstream_xchacha20poly1305_HEADERBYTES);\n\n const { decrypt: decryptt, destroy } = decrypt(header, key);\n const chunkSize =\n CHUNK_SIZE + sodium.crypto_secretstream_xchacha20poly1305_ABYTES;\n const max = Math.ceil(data.byteLength / chunkSize) * CHUNK_SIZE;\n\n progress?.({\n percent: 0,\n total: max,\n current: 0\n });\n const final = new Uint8Array(max);\n let total = 0;\n let lastPercent = total / max;\n\n for (const chunk of chunks(data, chunkSize)) {\n const tmp = decryptt(chunk);\n final.set(tmp.message, total);\n total += tmp.message.byteLength;\n\n const percent = total / max;\n if (percent > lastPercent + 0.01) {\n progress?.({\n percent,\n total: max,\n current: total\n });\n lastPercent = percent;\n }\n }\n\n destroy();\n progress?.({\n percent: 1,\n total,\n current: total\n });\n return final.slice(0, total);\n}\n\nself.onmessage = async ({ data }) => {\n switch (data.event) {\n case \"encrypt\": {\n postMessage({ event: \"working\" })\n postMessage({\n event: \"encrypt-result\",\n data: await encryptSecretstream(data.key, data.data, progress => postMessage({\n event: \"encrypt-progress\",\n data: progress\n }))\n });\n postMessage({ event: \"ready\" })\n break;\n }\n case \"decrypt\": {\n postMessage({ event: \"working\" })\n postMessage({\n event: \"decrypt-result\",\n data: await decryptSecretstream(data.key, data.data, progress => postMessage({\n event: \"decrypt-progress\",\n data: progress\n }))\n });\n postMessage({ event: \"ready\" })\n break;\n }\n }\n}";
|
|
2
|
+
export declare const workerMd5Script = "importScripts('https://cdnjs.cloudflare.com/ajax/libs/spark-md5/3.0.0/spark-md5.min.js');\n\nfunction* chunks(arr, n) {\n for (let i = 0; i < arr.length; i += n) {\n yield arr.slice(i, i + n);\n }\n}\n\nconst CHUNK_SIZE = 8192;\n\nfunction md5(data) {\n const spark = new SparkMD5.ArrayBuffer();\n for (const chunk of chunks(data, CHUNK_SIZE)) {\n spark.append(chunk);\n }\n return spark.end();\n}\n\n\nself.onmessage = ({ data }) => {\n switch (data.event) {\n case \"md5\": {\n postMessage({\n event: \"md5-result\",\n data: md5(data.data)\n });\n break;\n }\n }\n}";
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export var workerSodiumScript = "let sodium;\n\nself.sodium = {\n onload: (sod) => {\n sodium = sod\n postMessage({ event: \"ready\" })\n }\n};\n\nimportScripts('https://cdn.jsdelivr.net/gh/jedisct1/libsodium.js@master/dist/browsers/sodium.js');\nimportScripts('https://cdnjs.cloudflare.com/ajax/libs/spark-md5/3.0.0/spark-md5.min.js');\n\nfunction* chunks(arr, n) {\n for (let i = 0; i < arr.length; i += n) {\n yield arr.slice(i, i + n);\n }\n}\n\nfunction assert(c, message) {\n if (!c) {\n throw new Error(message);\n }\n}\n\nfunction encrypt(key) {\n let destroyed = false;\n const {\n state,\n header\n } = sodium.crypto_secretstream_xchacha20poly1305_init_push(key);\n\n const encrypt = (tag, plaintext) => {\n assert(destroyed === false, \"state already destroyed\");\n\n return sodium.crypto_secretstream_xchacha20poly1305_push(\n state,\n plaintext,\n null,\n tag\n );\n };\n\n function destroy() {\n assert(destroyed === false, \"state already destroyed\");\n destroyed = true;\n }\n\n return {\n encrypt,\n destroy,\n header\n };\n}\n\nfunction decrypt(header, key) {\n assert(\n header.byteLength >=\n sodium.crypto_secretstream_xchacha20poly1305_HEADERBYTES,\n \"header must be at least HEADERBYTES (\" + sodium.crypto_secretstream_xchacha20poly1305_HEADERBYTES + \") long\"\n );\n assert(\n key.byteLength >= sodium.crypto_secretstream_xchacha20poly1305_KEYBYTES,\n \"key must be at least KEYBYTES (\" + sodium.crypto_secretstream_xchacha20poly1305_KEYBYTES + \") long\"\n );\n\n let destroyed = false;\n const state = sodium.crypto_secretstream_xchacha20poly1305_init_pull(\n header,\n key\n );\n\n const decrypt = ciphertext => {\n assert(destroyed === false, \"state already destroyed\");\n\n return sodium.crypto_secretstream_xchacha20poly1305_pull(state, ciphertext);\n };\n\n function destroy() {\n assert(destroyed === false, \"state already destroyed\");\n destroyed = true;\n }\n\n return {\n decrypt,\n destroy\n };\n}\n\nconst CHUNK_SIZE = 8192;\n\nasync function encryptSecretstream(key, data, progress) {\n const { encrypt: crypt, destroy, header } = encrypt(key);\n const cryptedChunk =\n CHUNK_SIZE + sodium.crypto_secretstream_xchacha20poly1305_ABYTES;\n const max =\n Math.ceil(data.byteLength / CHUNK_SIZE) * cryptedChunk + header.byteLength;\n\n progress?.({\n percent: 0,\n total: max,\n current: 0\n });\n const final = new Uint8Array(max);\n const sparkEncrypted = new SparkMD5.ArrayBuffer();\n const spark = new SparkMD5.ArrayBuffer();\n\n final.set(header);\n sparkEncrypted.append(header);\n let total = header.byteLength;\n progress?.({\n percent: total / max,\n total: max,\n current: total\n });\n let lastPercent = total / max;\n\n for (const chunk of chunks(data, CHUNK_SIZE)) {\n spark.append(chunk);\n const tag =\n chunk.length < CHUNK_SIZE\n ? sodium.crypto_secretstream_xchacha20poly1305_TAG_FINAL\n : sodium.crypto_secretstream_xchacha20poly1305_TAG_MESSAGE;\n const crypted = crypt(tag, chunk);\n sparkEncrypted.append(crypted);\n final.set(crypted, total);\n total += crypted.byteLength;\n const percent = total / max;\n if (percent > lastPercent + 0.01) {\n progress?.({\n percent,\n total: max,\n current: total\n });\n lastPercent = percent;\n }\n }\n\n destroy();\n progress?.({\n percent: 1,\n total,\n current: total\n });\n return {\n data: final.slice(0, total),\n md5Encrypted: sparkEncrypted.end(),\n md5: spark.end()\n };\n}\n\nasync function decryptSecretstream(key, data, progress) {\n const header = data.slice(\n 0,\n sodium.crypto_secretstream_xchacha20poly1305_HEADERBYTES\n );\n data = data.slice(sodium.crypto_secretstream_xchacha20poly1305_HEADERBYTES);\n\n const { decrypt: decryptt, destroy } = decrypt(header, key);\n const chunkSize =\n CHUNK_SIZE + sodium.crypto_secretstream_xchacha20poly1305_ABYTES;\n const max = Math.ceil(data.byteLength / chunkSize) * CHUNK_SIZE;\n\n progress?.({\n percent: 0,\n total: max,\n current: 0\n });\n const final = new Uint8Array(max);\n let total = 0;\n let lastPercent = total / max;\n\n for (const chunk of chunks(data, chunkSize)) {\n const tmp = decryptt(chunk);\n final.set(tmp.message, total);\n total += tmp.message.byteLength;\n\n const percent = total / max;\n if (percent > lastPercent + 0.01) {\n progress?.({\n percent,\n total: max,\n current: total\n });\n lastPercent = percent;\n }\n }\n\n destroy();\n progress?.({\n percent: 1,\n total,\n current: total\n });\n return final.slice(0, total);\n}\n\nself.onmessage = async ({ data }) => {\n switch (data.event) {\n case \"encrypt\": {\n postMessage({ event: \"working\" })\n postMessage({\n event: \"encrypt-result\",\n data: await encryptSecretstream(data.key, data.data, progress => postMessage({\n event: \"encrypt-progress\",\n data: progress\n }))\n });\n postMessage({ event: \"ready\" })\n break;\n }\n case \"decrypt\": {\n postMessage({ event: \"working\" })\n postMessage({\n event: \"decrypt-result\",\n data: await decryptSecretstream(data.key, data.data, progress => postMessage({\n event: \"decrypt-progress\",\n data: progress\n }))\n });\n postMessage({ event: \"ready\" })\n break;\n }\n }\n}";
|
|
2
|
+
export var workerMd5Script = "importScripts('https://cdnjs.cloudflare.com/ajax/libs/spark-md5/3.0.0/spark-md5.min.js');\n\nfunction* chunks(arr, n) {\n for (let i = 0; i < arr.length; i += n) {\n yield arr.slice(i, i + n);\n }\n}\n\nconst CHUNK_SIZE = 8192;\n\nfunction md5(data) {\n const spark = new SparkMD5.ArrayBuffer();\n for (const chunk of chunks(data, CHUNK_SIZE)) {\n spark.append(chunk);\n }\n return spark.end();\n}\n\n\nself.onmessage = ({ data }) => {\n switch (data.event) {\n case \"md5\": {\n postMessage({\n event: \"md5-result\",\n data: md5(data.data)\n });\n break;\n }\n }\n}";
|
|
3
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93b3JrZXIvd29ya2VyQ29kZXMudHMiXSwibmFtZXMiOlsid29ya2VyU29kaXVtU2NyaXB0Iiwid29ya2VyTWQ1U2NyaXB0Il0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQU1BLGtCQUFrQix3OEtBQXhCO0FBaU9QLE9BQU8sSUFBTUMsZUFBZSw2bUJBQXJCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHdvcmtlclNvZGl1bVNjcmlwdCA9IGBsZXQgc29kaXVtO1xuXG5zZWxmLnNvZGl1bSA9IHtcbiAgb25sb2FkOiAoc29kKSA9PiB7XG4gICAgc29kaXVtID0gc29kXG4gICAgcG9zdE1lc3NhZ2UoeyBldmVudDogXCJyZWFkeVwiIH0pXG4gIH1cbn07XG5cbmltcG9ydFNjcmlwdHMoJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9qZWRpc2N0MS9saWJzb2RpdW0uanNAbWFzdGVyL2Rpc3QvYnJvd3NlcnMvc29kaXVtLmpzJyk7XG5pbXBvcnRTY3JpcHRzKCdodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9zcGFyay1tZDUvMy4wLjAvc3BhcmstbWQ1Lm1pbi5qcycpO1xuXG5mdW5jdGlvbiogY2h1bmtzKGFyciwgbikge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkgKz0gbikge1xuICAgIHlpZWxkIGFyci5zbGljZShpLCBpICsgbik7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZXJ0KGMsIG1lc3NhZ2UpIHtcbiAgaWYgKCFjKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGVuY3J5cHQoa2V5KSB7XG4gIGxldCBkZXN0cm95ZWQgPSBmYWxzZTtcbiAgY29uc3Qge1xuICAgIHN0YXRlLFxuICAgIGhlYWRlclxuICB9ID0gc29kaXVtLmNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfaW5pdF9wdXNoKGtleSk7XG5cbiAgY29uc3QgZW5jcnlwdCA9ICh0YWcsIHBsYWludGV4dCkgPT4ge1xuICAgIGFzc2VydChkZXN0cm95ZWQgPT09IGZhbHNlLCBcInN0YXRlIGFscmVhZHkgZGVzdHJveWVkXCIpO1xuXG4gICAgcmV0dXJuIHNvZGl1bS5jcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X3B1c2goXG4gICAgICBzdGF0ZSxcbiAgICAgIHBsYWludGV4dCxcbiAgICAgIG51bGwsXG4gICAgICB0YWdcbiAgICApO1xuICB9O1xuXG4gIGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgYXNzZXJ0KGRlc3Ryb3llZCA9PT0gZmFsc2UsIFwic3RhdGUgYWxyZWFkeSBkZXN0cm95ZWRcIik7XG4gICAgZGVzdHJveWVkID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZW5jcnlwdCxcbiAgICBkZXN0cm95LFxuICAgIGhlYWRlclxuICB9O1xufVxuXG5mdW5jdGlvbiBkZWNyeXB0KGhlYWRlciwga2V5KSB7XG4gIGFzc2VydChcbiAgICBoZWFkZXIuYnl0ZUxlbmd0aCA+PVxuICAgICAgc29kaXVtLmNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfSEVBREVSQllURVMsXG4gICAgXCJoZWFkZXIgbXVzdCBiZSBhdCBsZWFzdCBIRUFERVJCWVRFUyAoXCIgKyBzb2RpdW0uY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9IRUFERVJCWVRFUyArIFwiKSBsb25nXCJcbiAgKTtcbiAgYXNzZXJ0KFxuICAgIGtleS5ieXRlTGVuZ3RoID49IHNvZGl1bS5jcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X0tFWUJZVEVTLFxuICAgIFwia2V5IG11c3QgYmUgYXQgbGVhc3QgS0VZQllURVMgKFwiICsgc29kaXVtLmNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfS0VZQllURVMgKyBcIikgbG9uZ1wiXG4gICk7XG5cbiAgbGV0IGRlc3Ryb3llZCA9IGZhbHNlO1xuICBjb25zdCBzdGF0ZSA9IHNvZGl1bS5jcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X2luaXRfcHVsbChcbiAgICBoZWFkZXIsXG4gICAga2V5XG4gICk7XG5cbiAgY29uc3QgZGVjcnlwdCA9IGNpcGhlcnRleHQgPT4ge1xuICAgIGFzc2VydChkZXN0cm95ZWQgPT09IGZhbHNlLCBcInN0YXRlIGFscmVhZHkgZGVzdHJveWVkXCIpO1xuXG4gICAgcmV0dXJuIHNvZGl1bS5jcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X3B1bGwoc3RhdGUsIGNpcGhlcnRleHQpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgYXNzZXJ0KGRlc3Ryb3llZCA9PT0gZmFsc2UsIFwic3RhdGUgYWxyZWFkeSBkZXN0cm95ZWRcIik7XG4gICAgZGVzdHJveWVkID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZGVjcnlwdCxcbiAgICBkZXN0cm95XG4gIH07XG59XG5cbmNvbnN0IENIVU5LX1NJWkUgPSA4MTkyO1xuXG5hc3luYyBmdW5jdGlvbiBlbmNyeXB0U2VjcmV0c3RyZWFtKGtleSwgZGF0YSwgcHJvZ3Jlc3MpIHtcbiAgY29uc3QgeyBlbmNyeXB0OiBjcnlwdCwgZGVzdHJveSwgaGVhZGVyIH0gPSBlbmNyeXB0KGtleSk7XG4gIGNvbnN0IGNyeXB0ZWRDaHVuayA9XG4gICAgQ0hVTktfU0laRSArIHNvZGl1bS5jcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X0FCWVRFUztcbiAgY29uc3QgbWF4ID1cbiAgICBNYXRoLmNlaWwoZGF0YS5ieXRlTGVuZ3RoIC8gQ0hVTktfU0laRSkgKiBjcnlwdGVkQ2h1bmsgKyBoZWFkZXIuYnl0ZUxlbmd0aDtcblxuICBwcm9ncmVzcz8uKHtcbiAgICBwZXJjZW50OiAwLFxuICAgIHRvdGFsOiBtYXgsXG4gICAgY3VycmVudDogMFxuICB9KTtcbiAgY29uc3QgZmluYWwgPSBuZXcgVWludDhBcnJheShtYXgpO1xuICBjb25zdCBzcGFya0VuY3J5cHRlZCA9IG5ldyBTcGFya01ENS5BcnJheUJ1ZmZlcigpO1xuICBjb25zdCBzcGFyayA9IG5ldyBTcGFya01ENS5BcnJheUJ1ZmZlcigpO1xuXG4gIGZpbmFsLnNldChoZWFkZXIpO1xuICBzcGFya0VuY3J5cHRlZC5hcHBlbmQoaGVhZGVyKTtcbiAgbGV0IHRvdGFsID0gaGVhZGVyLmJ5dGVMZW5ndGg7XG4gIHByb2dyZXNzPy4oe1xuICAgIHBlcmNlbnQ6IHRvdGFsIC8gbWF4LFxuICAgIHRvdGFsOiBtYXgsXG4gICAgY3VycmVudDogdG90YWxcbiAgfSk7XG4gIGxldCBsYXN0UGVyY2VudCA9IHRvdGFsIC8gbWF4O1xuXG4gIGZvciAoY29uc3QgY2h1bmsgb2YgY2h1bmtzKGRhdGEsIENIVU5LX1NJWkUpKSB7XG4gICAgc3BhcmsuYXBwZW5kKGNodW5rKTtcbiAgICBjb25zdCB0YWcgPVxuICAgICAgY2h1bmsubGVuZ3RoIDwgQ0hVTktfU0laRVxuICAgICAgICA/IHNvZGl1bS5jcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X1RBR19GSU5BTFxuICAgICAgICA6IHNvZGl1bS5jcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X1RBR19NRVNTQUdFO1xuICAgIGNvbnN0IGNyeXB0ZWQgPSBjcnlwdCh0YWcsIGNodW5rKTtcbiAgICBzcGFya0VuY3J5cHRlZC5hcHBlbmQoY3J5cHRlZCk7XG4gICAgZmluYWwuc2V0KGNyeXB0ZWQsIHRvdGFsKTtcbiAgICB0b3RhbCArPSBjcnlwdGVkLmJ5dGVMZW5ndGg7XG4gICAgY29uc3QgcGVyY2VudCA9IHRvdGFsIC8gbWF4O1xuICAgIGlmIChwZXJjZW50ID4gbGFzdFBlcmNlbnQgKyAwLjAxKSB7XG4gICAgICBwcm9ncmVzcz8uKHtcbiAgICAgICAgcGVyY2VudCxcbiAgICAgICAgdG90YWw6IG1heCxcbiAgICAgICAgY3VycmVudDogdG90YWxcbiAgICAgIH0pO1xuICAgICAgbGFzdFBlcmNlbnQgPSBwZXJjZW50O1xuICAgIH1cbiAgfVxuXG4gIGRlc3Ryb3koKTtcbiAgcHJvZ3Jlc3M/Lih7XG4gICAgcGVyY2VudDogMSxcbiAgICB0b3RhbCxcbiAgICBjdXJyZW50OiB0b3RhbFxuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBkYXRhOiBmaW5hbC5zbGljZSgwLCB0b3RhbCksXG4gICAgbWQ1RW5jcnlwdGVkOiBzcGFya0VuY3J5cHRlZC5lbmQoKSxcbiAgICBtZDU6IHNwYXJrLmVuZCgpXG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGRlY3J5cHRTZWNyZXRzdHJlYW0oa2V5LCBkYXRhLCBwcm9ncmVzcykge1xuICBjb25zdCBoZWFkZXIgPSBkYXRhLnNsaWNlKFxuICAgIDAsXG4gICAgc29kaXVtLmNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfSEVBREVSQllURVNcbiAgKTtcbiAgZGF0YSA9IGRhdGEuc2xpY2Uoc29kaXVtLmNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfSEVBREVSQllURVMpO1xuXG4gIGNvbnN0IHsgZGVjcnlwdDogZGVjcnlwdHQsIGRlc3Ryb3kgfSA9IGRlY3J5cHQoaGVhZGVyLCBrZXkpO1xuICBjb25zdCBjaHVua1NpemUgPVxuICAgIENIVU5LX1NJWkUgKyBzb2RpdW0uY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9BQllURVM7XG4gIGNvbnN0IG1heCA9IE1hdGguY2VpbChkYXRhLmJ5dGVMZW5ndGggLyBjaHVua1NpemUpICogQ0hVTktfU0laRTtcblxuICBwcm9ncmVzcz8uKHtcbiAgICBwZXJjZW50OiAwLFxuICAgIHRvdGFsOiBtYXgsXG4gICAgY3VycmVudDogMFxuICB9KTtcbiAgY29uc3QgZmluYWwgPSBuZXcgVWludDhBcnJheShtYXgpO1xuICBsZXQgdG90YWwgPSAwO1xuICBsZXQgbGFzdFBlcmNlbnQgPSB0b3RhbCAvIG1heDtcblxuICBmb3IgKGNvbnN0IGNodW5rIG9mIGNodW5rcyhkYXRhLCBjaHVua1NpemUpKSB7XG4gICAgY29uc3QgdG1wID0gZGVjcnlwdHQoY2h1bmspO1xuICAgIGZpbmFsLnNldCh0bXAubWVzc2FnZSwgdG90YWwpO1xuICAgIHRvdGFsICs9IHRtcC5tZXNzYWdlLmJ5dGVMZW5ndGg7XG5cbiAgICBjb25zdCBwZXJjZW50ID0gdG90YWwgLyBtYXg7XG4gICAgaWYgKHBlcmNlbnQgPiBsYXN0UGVyY2VudCArIDAuMDEpIHtcbiAgICAgIHByb2dyZXNzPy4oe1xuICAgICAgICBwZXJjZW50LFxuICAgICAgICB0b3RhbDogbWF4LFxuICAgICAgICBjdXJyZW50OiB0b3RhbFxuICAgICAgfSk7XG4gICAgICBsYXN0UGVyY2VudCA9IHBlcmNlbnQ7XG4gICAgfVxuICB9XG5cbiAgZGVzdHJveSgpO1xuICBwcm9ncmVzcz8uKHtcbiAgICBwZXJjZW50OiAxLFxuICAgIHRvdGFsLFxuICAgIGN1cnJlbnQ6IHRvdGFsXG4gIH0pO1xuICByZXR1cm4gZmluYWwuc2xpY2UoMCwgdG90YWwpO1xufVxuXG5zZWxmLm9ubWVzc2FnZSA9IGFzeW5jICh7IGRhdGEgfSkgPT4ge1xuICBzd2l0Y2ggKGRhdGEuZXZlbnQpIHtcbiAgICBjYXNlIFwiZW5jcnlwdFwiOiB7XG4gICAgICBwb3N0TWVzc2FnZSh7IGV2ZW50OiBcIndvcmtpbmdcIiB9KVxuICAgICAgcG9zdE1lc3NhZ2Uoe1xuICAgICAgICBldmVudDogXCJlbmNyeXB0LXJlc3VsdFwiLFxuICAgICAgICBkYXRhOiBhd2FpdCBlbmNyeXB0U2VjcmV0c3RyZWFtKGRhdGEua2V5LCBkYXRhLmRhdGEsIHByb2dyZXNzID0+IHBvc3RNZXNzYWdlKHtcbiAgICAgICAgICBldmVudDogXCJlbmNyeXB0LXByb2dyZXNzXCIsXG4gICAgICAgICAgZGF0YTogcHJvZ3Jlc3NcbiAgICAgICAgfSkpXG4gICAgICB9KTtcbiAgICAgIHBvc3RNZXNzYWdlKHsgZXZlbnQ6IFwicmVhZHlcIiB9KVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgXCJkZWNyeXB0XCI6IHtcbiAgICAgIHBvc3RNZXNzYWdlKHsgZXZlbnQ6IFwid29ya2luZ1wiIH0pXG4gICAgICBwb3N0TWVzc2FnZSh7XG4gICAgICAgIGV2ZW50OiBcImRlY3J5cHQtcmVzdWx0XCIsXG4gICAgICAgIGRhdGE6IGF3YWl0IGRlY3J5cHRTZWNyZXRzdHJlYW0oZGF0YS5rZXksIGRhdGEuZGF0YSwgcHJvZ3Jlc3MgPT4gcG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgIGV2ZW50OiBcImRlY3J5cHQtcHJvZ3Jlc3NcIixcbiAgICAgICAgICBkYXRhOiBwcm9ncmVzc1xuICAgICAgICB9KSlcbiAgICAgIH0pO1xuICAgICAgcG9zdE1lc3NhZ2UoeyBldmVudDogXCJyZWFkeVwiIH0pXG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbn1gO1xuXG5leHBvcnQgY29uc3Qgd29ya2VyTWQ1U2NyaXB0ID0gYGltcG9ydFNjcmlwdHMoJ2h0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL3NwYXJrLW1kNS8zLjAuMC9zcGFyay1tZDUubWluLmpzJyk7XG5cbmZ1bmN0aW9uKiBjaHVua3MoYXJyLCBuKSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSArPSBuKSB7XG4gICAgeWllbGQgYXJyLnNsaWNlKGksIGkgKyBuKTtcbiAgfVxufVxuXG5jb25zdCBDSFVOS19TSVpFID0gODE5MjtcblxuZnVuY3Rpb24gbWQ1KGRhdGEpIHtcbiAgY29uc3Qgc3BhcmsgPSBuZXcgU3BhcmtNRDUuQXJyYXlCdWZmZXIoKTtcbiAgZm9yIChjb25zdCBjaHVuayBvZiBjaHVua3MoZGF0YSwgQ0hVTktfU0laRSkpIHtcbiAgICBzcGFyay5hcHBlbmQoY2h1bmspO1xuICB9XG4gIHJldHVybiBzcGFyay5lbmQoKTtcbn1cblxuXG5zZWxmLm9ubWVzc2FnZSA9ICh7IGRhdGEgfSkgPT4ge1xuICBzd2l0Y2ggKGRhdGEuZXZlbnQpIHtcbiAgICBjYXNlIFwibWQ1XCI6IHtcbiAgICAgIHBvc3RNZXNzYWdlKHtcbiAgICAgICAgZXZlbnQ6IFwibWQ1LXJlc3VsdFwiLFxuICAgICAgICBkYXRhOiBtZDUoZGF0YS5kYXRhKVxuICAgICAgfSk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbn1gO1xuIl19
|