@secrecy/lib 1.0.0-dev.39 → 1.0.0-dev.42

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.
Files changed (63) hide show
  1. package/dist/BaseClient.d.ts +33 -53
  2. package/dist/BaseClient.js +886 -2093
  3. package/dist/PopupTools.js +20 -21
  4. package/dist/ZeusThunder.js +50 -84
  5. package/dist/cache.d.ts +2 -3
  6. package/dist/cache.js +4 -5
  7. package/dist/client/admin/index.js +77 -165
  8. package/dist/client/convert/file.d.ts +3 -3
  9. package/dist/client/convert/file.js +18 -23
  10. package/dist/client/convert/mail.js +13 -13
  11. package/dist/client/convert/node.d.ts +9 -0
  12. package/dist/client/convert/node.js +101 -0
  13. package/dist/client/helpers.js +41 -41
  14. package/dist/client/index.d.ts +63 -74
  15. package/dist/client/index.js +2727 -5759
  16. package/dist/client/storage.js +7 -7
  17. package/dist/client/types/File.d.ts +6 -13
  18. package/dist/client/types/File.js +1 -1
  19. package/dist/client/types/Inputs.d.ts +2 -7
  20. package/dist/client/types/Inputs.js +1 -1
  21. package/dist/client/types/Node.d.ts +49 -0
  22. package/dist/client/types/Node.js +3 -0
  23. package/dist/client/types/UserAppNotifications.d.ts +1 -1
  24. package/dist/client/types/UserAppNotifications.js +1 -1
  25. package/dist/client/types/UserAppSettings.js +1 -1
  26. package/dist/client/types/index.d.ts +7 -13
  27. package/dist/client/types/index.js +2 -4
  28. package/dist/client/types/selectors.d.ts +476 -0
  29. package/dist/client/types/selectors.js +125 -0
  30. package/dist/crypto/file.js +122 -203
  31. package/dist/crypto/index.js +14 -12
  32. package/dist/error.js +1 -1
  33. package/dist/index.d.ts +1 -2
  34. package/dist/index.js +2 -34
  35. package/dist/minify/index.js +7 -7
  36. package/dist/minify/lz4.js +87 -93
  37. package/dist/sodium.js +3 -25
  38. package/dist/utils/store-buddy.js +11 -15
  39. package/dist/utils/time.js +4 -12
  40. package/dist/{utils.d.ts → utils/utils.d.ts} +0 -0
  41. package/dist/utils/utils.js +57 -0
  42. package/dist/worker/__mock__/sodium.worker.js +35 -32
  43. package/dist/worker/md5.js +21 -39
  44. package/dist/worker/sodium.js +95 -130
  45. package/dist/worker/workerCodes.js +3 -3
  46. package/dist/zeus/const.d.ts +5 -0
  47. package/dist/zeus/const.js +303 -1360
  48. package/dist/zeus/index.d.ts +1805 -1817
  49. package/dist/zeus/index.js +542 -434
  50. package/package.json +40 -39
  51. package/dist/client/convert/folder.d.ts +0 -8
  52. package/dist/client/convert/folder.js +0 -264
  53. package/dist/client/convert/vFile.d.ts +0 -5
  54. package/dist/client/convert/vFile.js +0 -164
  55. package/dist/client/types/FilesOnUsersOnApplications.d.ts +0 -9
  56. package/dist/client/types/FilesOnUsersOnApplications.js +0 -3
  57. package/dist/client/types/Folder.d.ts +0 -68
  58. package/dist/client/types/Folder.js +0 -7
  59. package/dist/client/types/VFile.d.ts +0 -62
  60. package/dist/client/types/VFile.js +0 -4
  61. package/dist/client/types/queries.d.ts +0 -535
  62. package/dist/client/types/queries.js +0 -192
  63. package/dist/utils.js +0 -188
@@ -1,15 +1,6 @@
1
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
- import _regeneratorRuntime from "@babel/runtime/regenerator";
3
-
4
- function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
5
-
6
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
7
-
8
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
9
-
10
1
  import { setup, sodium } from "../sodium.js";
11
2
  import SparkMD5 from "spark-md5";
12
- import { chunks } from "../utils.js";
3
+ import { chunks } from "../utils/utils.js";
13
4
 
14
5
  function assert(c, message) {
15
6
  if (!c) {
@@ -22,13 +13,13 @@ export function secretstreamKeygen() {
22
13
  }
23
14
 
24
15
  function encrypt(key) {
25
- var destroyed = false;
26
-
27
- var _sodium$crypto_secret = sodium.crypto_secretstream_xchacha20poly1305_init_push(key),
28
- state = _sodium$crypto_secret.state,
29
- header = _sodium$crypto_secret.header;
16
+ let destroyed = false;
17
+ const {
18
+ state,
19
+ header
20
+ } = sodium.crypto_secretstream_xchacha20poly1305_init_push(key);
30
21
 
31
- var encrypt = function encrypt(tag, plaintext) {
22
+ const encrypt = (tag, plaintext) => {
32
23
  assert(destroyed === false, "state already destroyed");
33
24
  return sodium.crypto_secretstream_xchacha20poly1305_push(state, plaintext, null, tag);
34
25
  };
@@ -39,19 +30,19 @@ function encrypt(key) {
39
30
  }
40
31
 
41
32
  return {
42
- encrypt: encrypt,
43
- destroy: destroy,
44
- header: header
33
+ encrypt,
34
+ destroy,
35
+ header
45
36
  };
46
37
  }
47
38
 
48
39
  function decrypt(header, key) {
49
40
  assert(header.byteLength >= sodium.crypto_secretstream_xchacha20poly1305_HEADERBYTES, "header must be at least HEADERBYTES (" + sodium.crypto_secretstream_xchacha20poly1305_HEADERBYTES + ") long");
50
41
  assert(key.byteLength >= sodium.crypto_secretstream_xchacha20poly1305_KEYBYTES, "key must be at least KEYBYTES (" + sodium.crypto_secretstream_xchacha20poly1305_KEYBYTES + ") long");
51
- var destroyed = false;
52
- var state = sodium.crypto_secretstream_xchacha20poly1305_init_pull(header, key);
42
+ let destroyed = false;
43
+ const state = sodium.crypto_secretstream_xchacha20poly1305_init_pull(header, key);
53
44
 
54
- var decrypt = function decrypt(ciphertext) {
45
+ const decrypt = ciphertext => {
55
46
  assert(destroyed === false, "state already destroyed");
56
47
  return sodium.crypto_secretstream_xchacha20poly1305_pull(state, ciphertext);
57
48
  };
@@ -62,112 +53,120 @@ function decrypt(header, key) {
62
53
  }
63
54
 
64
55
  return {
65
- decrypt: decrypt,
66
- destroy: destroy
56
+ decrypt,
57
+ destroy
67
58
  };
68
59
  }
69
60
 
70
- export var CHUNK_SIZE = 8192;
71
- export function encryptSecretstream(_x, _x2, _x3, _x4) {
72
- return _encryptSecretstream.apply(this, arguments);
73
- }
74
-
75
- function _encryptSecretstream() {
76
- _encryptSecretstream = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(key, data, progress, abort) {
77
- var _encrypt, crypt, destroy, header, cryptedChunk, max, final, sparkEncrypted, spark, total, lastPercent, _iterator, _step, chunk, _tag, crypted, percent;
78
-
79
- return _regeneratorRuntime.wrap(function _callee$(_context) {
80
- while (1) {
81
- switch (_context.prev = _context.next) {
82
- case 0:
83
- _context.next = 2;
84
- return setup();
85
-
86
- case 2:
87
- _encrypt = encrypt(key), crypt = _encrypt.encrypt, destroy = _encrypt.destroy, header = _encrypt.header;
88
- cryptedChunk = CHUNK_SIZE + sodium.crypto_secretstream_xchacha20poly1305_ABYTES;
89
- max = Math.ceil(data.byteLength / CHUNK_SIZE) * cryptedChunk + header.byteLength;
90
- progress == null ? void 0 : progress({
91
- percent: 0,
92
- total: max,
93
- current: 0
94
- });
95
- final = new Uint8Array(max);
96
- sparkEncrypted = new SparkMD5.ArrayBuffer();
97
- spark = new SparkMD5.ArrayBuffer();
98
- final.set(header);
99
- sparkEncrypted.append(header);
100
- total = header.byteLength;
101
- progress == null ? void 0 : progress({
102
- percent: total / max,
103
- total: max,
104
- current: total
105
- });
106
- lastPercent = total / max;
107
- _iterator = _createForOfIteratorHelperLoose(chunks(data, CHUNK_SIZE));
108
-
109
- case 15:
110
- if ((_step = _iterator()).done) {
111
- _context.next = 29;
112
- break;
113
- }
114
-
115
- chunk = _step.value;
116
-
117
- if (!(abort != null && abort.signal.aborted)) {
118
- _context.next = 19;
119
- break;
120
- }
121
-
122
- throw new Error("Encrypt aborted");
123
-
124
- case 19:
125
- spark.append(chunk);
126
- _tag = chunk.length < CHUNK_SIZE ? sodium.crypto_secretstream_xchacha20poly1305_TAG_FINAL : sodium.crypto_secretstream_xchacha20poly1305_TAG_MESSAGE;
127
- crypted = crypt(_tag, chunk);
128
- sparkEncrypted.append(crypted);
129
- final.set(crypted, total);
130
- total += crypted.byteLength;
131
- percent = total / max;
132
-
133
- if (percent > lastPercent + 0.01) {
134
- progress == null ? void 0 : progress({
135
- percent: percent,
136
- total: max,
137
- current: total
138
- });
139
- lastPercent = percent;
140
- }
141
-
142
- case 27:
143
- _context.next = 15;
144
- break;
145
-
146
- case 29:
147
- destroy();
148
- progress == null ? void 0 : progress({
149
- percent: 1,
150
- total: total,
151
- current: total
152
- });
153
- return _context.abrupt("return", {
154
- data: final.slice(0, total),
155
- md5Encrypted: sparkEncrypted.end(),
156
- md5: spark.end()
157
- });
61
+ export const CHUNK_SIZE = 8192;
62
+ export async function encryptSecretstream(key, data, progress, abort) {
63
+ await setup();
64
+ const {
65
+ encrypt: crypt,
66
+ destroy,
67
+ header
68
+ } = encrypt(key);
69
+ const cryptedChunk = CHUNK_SIZE + sodium.crypto_secretstream_xchacha20poly1305_ABYTES;
70
+ const max = Math.ceil(data.byteLength / CHUNK_SIZE) * cryptedChunk + header.byteLength;
71
+ progress == null ? void 0 : progress({
72
+ percent: 0,
73
+ total: max,
74
+ current: 0
75
+ });
76
+ const final = new Uint8Array(max);
77
+ const sparkEncrypted = new SparkMD5.ArrayBuffer();
78
+ const spark = new SparkMD5.ArrayBuffer();
79
+ final.set(header);
80
+ sparkEncrypted.append(header);
81
+ let total = header.byteLength;
82
+ progress == null ? void 0 : progress({
83
+ percent: total / max,
84
+ total: max,
85
+ current: total
86
+ });
87
+ let lastPercent = total / max;
88
+
89
+ for (const chunk of chunks(data, CHUNK_SIZE)) {
90
+ if (abort != null && abort.signal.aborted) {
91
+ throw new Error("Encrypt aborted");
92
+ }
93
+
94
+ spark.append(chunk);
95
+ const tag = chunk.length < CHUNK_SIZE ? sodium.crypto_secretstream_xchacha20poly1305_TAG_FINAL : sodium.crypto_secretstream_xchacha20poly1305_TAG_MESSAGE;
96
+ const crypted = crypt(tag, chunk);
97
+ sparkEncrypted.append(crypted);
98
+ final.set(crypted, total);
99
+ total += crypted.byteLength;
100
+ const percent = total / max;
101
+
102
+ if (percent > lastPercent + 0.01) {
103
+ progress == null ? void 0 : progress({
104
+ percent,
105
+ total: max,
106
+ current: total
107
+ });
108
+ lastPercent = percent;
109
+ }
110
+ }
158
111
 
159
- case 32:
160
- case "end":
161
- return _context.stop();
162
- }
163
- }
164
- }, _callee);
165
- }));
166
- return _encryptSecretstream.apply(this, arguments);
112
+ destroy();
113
+ progress == null ? void 0 : progress({
114
+ percent: 1,
115
+ total,
116
+ current: total
117
+ });
118
+ return {
119
+ data: final.slice(0, total),
120
+ md5Encrypted: sparkEncrypted.end(),
121
+ md5: spark.end()
122
+ };
167
123
  }
124
+ export async function decryptSecretstream(key, data, progress, abort) {
125
+ await setup();
126
+ const header = data.slice(0, sodium.crypto_secretstream_xchacha20poly1305_HEADERBYTES);
127
+ data = data.slice(sodium.crypto_secretstream_xchacha20poly1305_HEADERBYTES);
128
+ const {
129
+ decrypt: decryptt,
130
+ destroy
131
+ } = decrypt(header, key);
132
+ const chunkSize = CHUNK_SIZE + sodium.crypto_secretstream_xchacha20poly1305_ABYTES;
133
+ const max = Math.ceil(data.byteLength / chunkSize) * CHUNK_SIZE;
134
+ progress == null ? void 0 : progress({
135
+ percent: 0,
136
+ total: max,
137
+ current: 0
138
+ });
139
+ const final = new Uint8Array(max);
140
+ let total = 0;
141
+ let lastPercent = total / max;
142
+
143
+ for (const chunk of chunks(data, chunkSize)) {
144
+ if (abort != null && abort.signal.aborted) {
145
+ throw new Error("Decrypt aborted");
146
+ }
147
+
148
+ const tmp = decryptt(chunk);
149
+ final.set(tmp.message, total);
150
+ total += tmp.message.byteLength;
151
+ const percent = total / max;
152
+
153
+ if (percent > lastPercent + 0.01) {
154
+ progress == null ? void 0 : progress({
155
+ percent,
156
+ total: max,
157
+ current: total
158
+ });
159
+ lastPercent = percent;
160
+ }
161
+ }
168
162
 
169
- export function decryptSecretstream(_x5, _x6, _x7, _x8) {
170
- return _decryptSecretstream.apply(this, arguments);
163
+ destroy();
164
+ progress == null ? void 0 : progress({
165
+ percent: 1,
166
+ total,
167
+ current: total
168
+ });
169
+ return final.slice(0, total);
171
170
  } // async function mainSecretstream(random: Uint8Array): Promise<void> {
172
171
  // const key = secretstreamKeygen();
173
172
  // console.time("secretstream_encrypt");
@@ -208,84 +207,4 @@ export function decryptSecretstream(_x5, _x6, _x7, _x8) {
208
207
  // await Promise.all([mainSecretstream(random), mainSecretbox(random)]);
209
208
  // }
210
209
  // main();
211
-
212
- function _decryptSecretstream() {
213
- _decryptSecretstream = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(key, data, progress, abort) {
214
- var header, _decrypt, decryptt, destroy, chunkSize, max, final, total, lastPercent, _iterator2, _step2, chunk, tmp, percent;
215
-
216
- return _regeneratorRuntime.wrap(function _callee2$(_context2) {
217
- while (1) {
218
- switch (_context2.prev = _context2.next) {
219
- case 0:
220
- _context2.next = 2;
221
- return setup();
222
-
223
- case 2:
224
- header = data.slice(0, sodium.crypto_secretstream_xchacha20poly1305_HEADERBYTES);
225
- data = data.slice(sodium.crypto_secretstream_xchacha20poly1305_HEADERBYTES);
226
- _decrypt = decrypt(header, key), decryptt = _decrypt.decrypt, destroy = _decrypt.destroy;
227
- chunkSize = CHUNK_SIZE + sodium.crypto_secretstream_xchacha20poly1305_ABYTES;
228
- max = Math.ceil(data.byteLength / chunkSize) * CHUNK_SIZE;
229
- progress == null ? void 0 : progress({
230
- percent: 0,
231
- total: max,
232
- current: 0
233
- });
234
- final = new Uint8Array(max);
235
- total = 0;
236
- lastPercent = total / max;
237
- _iterator2 = _createForOfIteratorHelperLoose(chunks(data, chunkSize));
238
-
239
- case 12:
240
- if ((_step2 = _iterator2()).done) {
241
- _context2.next = 23;
242
- break;
243
- }
244
-
245
- chunk = _step2.value;
246
-
247
- if (!(abort != null && abort.signal.aborted)) {
248
- _context2.next = 16;
249
- break;
250
- }
251
-
252
- throw new Error("Decrypt aborted");
253
-
254
- case 16:
255
- tmp = decryptt(chunk);
256
- final.set(tmp.message, total);
257
- total += tmp.message.byteLength;
258
- percent = total / max;
259
-
260
- if (percent > lastPercent + 0.01) {
261
- progress == null ? void 0 : progress({
262
- percent: percent,
263
- total: max,
264
- current: total
265
- });
266
- lastPercent = percent;
267
- }
268
-
269
- case 21:
270
- _context2.next = 12;
271
- break;
272
-
273
- case 23:
274
- destroy();
275
- progress == null ? void 0 : progress({
276
- percent: 1,
277
- total: total,
278
- current: total
279
- });
280
- return _context2.abrupt("return", final.slice(0, total));
281
-
282
- case 26:
283
- case "end":
284
- return _context2.stop();
285
- }
286
- }
287
- }, _callee2);
288
- }));
289
- return _decryptSecretstream.apply(this, arguments);
290
- }
291
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jcnlwdG8vZmlsZS50cyJdLCJuYW1lcyI6WyJzZXR1cCIsInNvZGl1bSIsIlNwYXJrTUQ1IiwiY2h1bmtzIiwiYXNzZXJ0IiwiYyIsIm1lc3NhZ2UiLCJFcnJvciIsInNlY3JldHN0cmVhbUtleWdlbiIsImNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfa2V5Z2VuIiwiZW5jcnlwdCIsImtleSIsImRlc3Ryb3llZCIsImNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfaW5pdF9wdXNoIiwic3RhdGUiLCJoZWFkZXIiLCJ0YWciLCJwbGFpbnRleHQiLCJjcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X3B1c2giLCJkZXN0cm95IiwiZGVjcnlwdCIsImJ5dGVMZW5ndGgiLCJjcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X0hFQURFUkJZVEVTIiwiY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9LRVlCWVRFUyIsImNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfaW5pdF9wdWxsIiwiY2lwaGVydGV4dCIsImNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfcHVsbCIsIkNIVU5LX1NJWkUiLCJlbmNyeXB0U2VjcmV0c3RyZWFtIiwiZGF0YSIsInByb2dyZXNzIiwiYWJvcnQiLCJjcnlwdCIsImNyeXB0ZWRDaHVuayIsImNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfQUJZVEVTIiwibWF4IiwiTWF0aCIsImNlaWwiLCJwZXJjZW50IiwidG90YWwiLCJjdXJyZW50IiwiZmluYWwiLCJVaW50OEFycmF5Iiwic3BhcmtFbmNyeXB0ZWQiLCJBcnJheUJ1ZmZlciIsInNwYXJrIiwic2V0IiwiYXBwZW5kIiwibGFzdFBlcmNlbnQiLCJjaHVuayIsInNpZ25hbCIsImFib3J0ZWQiLCJsZW5ndGgiLCJjcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X1RBR19GSU5BTCIsImNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfVEFHX01FU1NBR0UiLCJjcnlwdGVkIiwic2xpY2UiLCJtZDVFbmNyeXB0ZWQiLCJlbmQiLCJtZDUiLCJkZWNyeXB0U2VjcmV0c3RyZWFtIiwiZGVjcnlwdHQiLCJjaHVua1NpemUiLCJ0bXAiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUNBLFNBQVNBLEtBQVQsRUFBZ0JDLE1BQWhCLFFBQThCLGNBQTlCO0FBQ0EsT0FBT0MsUUFBUCxNQUFxQixXQUFyQjtBQUNBLFNBQVNDLE1BQVQsUUFBdUIsYUFBdkI7O0FBUUEsU0FBU0MsTUFBVCxDQUFnQkMsQ0FBaEIsRUFBNEJDLE9BQTVCLEVBQW1EO0FBQ2pELE1BQUksQ0FBQ0QsQ0FBTCxFQUFRO0FBQ04sVUFBTSxJQUFJRSxLQUFKLENBQVVELE9BQVYsQ0FBTjtBQUNEO0FBQ0Y7O0FBTUQsT0FBTyxTQUFTRSxrQkFBVCxHQUEwQztBQUMvQyxTQUFPUCxNQUFNLENBQUNRLDRDQUFQLEVBQVA7QUFDRDs7QUFFRCxTQUFTQyxPQUFULENBQWlCQyxHQUFqQixFQUlFO0FBQ0EsTUFBSUMsU0FBUyxHQUFHLEtBQWhCOztBQUNBLDhCQUNFWCxNQUFNLENBQUNZLCtDQUFQLENBQXVERixHQUF2RCxDQURGO0FBQUEsTUFBUUcsS0FBUix5QkFBUUEsS0FBUjtBQUFBLE1BQWVDLE1BQWYseUJBQWVBLE1BQWY7O0FBR0EsTUFBTUwsT0FBa0IsR0FBRyxTQUFyQkEsT0FBcUIsQ0FBQ00sR0FBRCxFQUFNQyxTQUFOLEVBQW9CO0FBQzdDYixJQUFBQSxNQUFNLENBQUNRLFNBQVMsS0FBSyxLQUFmLEVBQXNCLHlCQUF0QixDQUFOO0FBRUEsV0FBT1gsTUFBTSxDQUFDaUIsMENBQVAsQ0FDTEosS0FESyxFQUVMRyxTQUZLLEVBR0wsSUFISyxFQUlMRCxHQUpLLENBQVA7QUFNRCxHQVREOztBQVdBLFdBQVNHLE9BQVQs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Q0FBLFlBQUFBLEtBQUssSUFBSXdCLEdBQUcsQ0FBQ3pELE9BQUosQ0FBWWUsVUFBckI7QUFDTWlCLFlBQUFBLE9BbkNILEdBbUNhQyxLQUFLLEdBQUdKLEdBbkNyQjs7QUFvQ0gsZ0JBQUlHLE9BQU8sR0FBR1UsV0FBVyxHQUFHLElBQTVCLEVBQWtDO0FBQ2hDbEIsY0FBQUEsUUFBUSxRQUFSLFlBQUFBLFFBQVEsQ0FBRztBQUNUUSxnQkFBQUEsT0FBTyxFQUFQQSxPQURTO0FBRVRDLGdCQUFBQSxLQUFLLEVBQUVKLEdBRkU7QUFHVEssZ0JBQUFBLE9BQU8sRUFBRUQ7QUFIQSxlQUFILENBQVI7QUFLQVMsY0FBQUEsV0FBVyxHQUFHVixPQUFkO0FBQ0Q7O0FBM0NFO0FBQUE7QUFBQTs7QUFBQTtBQThDTG5CLFlBQUFBLE9BQU87QUFDUFcsWUFBQUEsUUFBUSxRQUFSLFlBQUFBLFFBQVEsQ0FBRztBQUNUUSxjQUFBQSxPQUFPLEVBQUUsQ0FEQTtBQUVUQyxjQUFBQSxLQUFLLEVBQUxBLEtBRlM7QUFHVEMsY0FBQUEsT0FBTyxFQUFFRDtBQUhBLGFBQUgsQ0FBUjtBQS9DSyw4Q0FvREVFLEtBQUssQ0FBQ2UsS0FBTixDQUFZLENBQVosRUFBZWpCLEtBQWYsQ0FwREY7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTWVzc2FnZVRhZyB9IGZyb20gXCJsaWJzb2RpdW0td3JhcHBlcnNcIjtcbmltcG9ydCB7IHNldHVwLCBzb2RpdW0gfSBmcm9tIFwiLi4vc29kaXVtLmpzXCI7XG5pbXBvcnQgU3BhcmtNRDUgZnJvbSBcInNwYXJrLW1kNVwiO1xuaW1wb3J0IHsgY2h1bmtzIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5cbmV4cG9ydCB0eXBlIEVuY3J5cHRlZEZpbGUgPSB7XG4gIGRhdGE6IFVpbnQ4QXJyYXk7XG4gIG1kNTogc3RyaW5nO1xuICBtZDVFbmNyeXB0ZWQ6IHN0cmluZztcbn07XG5cbmZ1bmN0aW9uIGFzc2VydChjOiBib29sZWFuLCBtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKCFjKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICB9XG59XG5cbnR5cGUgRW5jcnlwdEZuID0gKHRhZzogbnVtYmVyLCBwbGFpbnRleHQ6IFVpbnQ4QXJyYXkpID0+IFVpbnQ4QXJyYXk7XG5cbnR5cGUgRGVjcnlwdEZuID0gKGNpcGhlcnRleHQ6IFVpbnQ4QXJyYXkpID0+IE1lc3NhZ2VUYWc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWNyZXRzdHJlYW1LZXlnZW4oKTogVWludDhBcnJheSB7XG4gIHJldHVybiBzb2RpdW0uY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9rZXlnZW4oKTtcbn1cblxuZnVuY3Rpb24gZW5jcnlwdChrZXk6IFVpbnQ4QXJyYXkpOiB7XG4gIGRlc3Ryb3k6ICgpID0+IHZvaWQ7XG4gIGVuY3J5cHQ6IEVuY3J5cHRGbjtcbiAgaGVhZGVyOiBVaW50OEFycmF5O1xufSB7XG4gIGxldCBkZXN0cm95ZWQgPSBmYWxzZTtcbiAgY29uc3QgeyBzdGF0ZSwgaGVhZGVyIH0gPVxuICAgIHNvZGl1bS5jcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X2luaXRfcHVzaChrZXkpO1xuXG4gIGNvbnN0IGVuY3J5cHQ6IEVuY3J5cHRGbiA9ICh0YWcsIHBsYWludGV4dCkgPT4ge1xuICAgIGFzc2VydChkZXN0cm95ZWQgPT09IGZhbHNlLCBcInN0YXRlIGFscmVhZHkgZGVzdHJveWVkXCIpO1xuXG4gICAgcmV0dXJuIHNvZGl1bS5jcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X3B1c2goXG4gICAgICBzdGF0ZSxcbiAgICAgIHBsYWludGV4dCxcbiAgICAgIG51bGwsXG4gICAgICB0YWdcbiAgICApO1xuICB9O1xuXG4gIGZ1bmN0aW9uIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgYXNzZXJ0KGRlc3Ryb3llZCA9PT0gZmFsc2UsIFwic3RhdGUgYWxyZWFkeSBkZXN0cm95ZWRcIik7XG4gICAgZGVzdHJveWVkID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZW5jcnlwdCxcbiAgICBkZXN0cm95LFxuICAgIGhlYWRlclxuICB9O1xufVxuXG5mdW5jdGlvbiBkZWNyeXB0KFxuICBoZWFkZXI6IFVpbnQ4QXJyYXksXG4gIGtleTogVWludDhBcnJheVxuKToge1xuICBkZXN0cm95OiAoKSA9PiB2b2lkO1xuICBkZWNyeXB0OiBEZWNyeXB0Rm47XG59IHtcbiAgYXNzZXJ0KFxuICAgIGhlYWRlci5ieXRlTGVuZ3RoID49XG4gICAgICBzb2RpdW0uY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9IRUFERVJCWVRFUyxcbiAgICBgaGVhZGVyIG11c3QgYmUgYXQgbGVhc3QgSEVBREVSQllURVMgKCR7c29kaXVtLmNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfSEVBREVSQllURVN9KSBsb25nYFxuICApO1xuICBhc3NlcnQoXG4gICAga2V5LmJ5dGVMZW5ndGggPj0gc29kaXVtLmNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfS0VZQllURVMsXG4gICAgYGtleSBtdXN0IGJlIGF0IGxlYXN0IEtFWUJZVEVTICgke3NvZGl1bS5jcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X0tFWUJZVEVTfSkgbG9uZ2BcbiAgKTtcblxuICBsZXQgZGVzdHJveWVkID0gZmFsc2U7XG4gIGNvbnN0IHN0YXRlID0gc29kaXVtLmNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfaW5pdF9wdWxsKFxuICAgIGhlYWRlcixcbiAgICBrZXlcbiAgKTtcblxuICBjb25zdCBkZWNyeXB0OiBEZWNyeXB0Rm4gPSBjaXBoZXJ0ZXh0ID0+IHtcbiAgICBhc3NlcnQoZGVzdHJveWVkID09PSBmYWxzZSwgXCJzdGF0ZSBhbHJlYWR5IGRlc3Ryb3llZFwiKTtcblxuICAgIHJldHVybiBzb2RpdW0uY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9wdWxsKHN0YXRlLCBjaXBoZXJ0ZXh0KTtcbiAgfTtcblxuICBmdW5jdGlvbiBkZXN0cm95KCk6IHZvaWQge1xuICAgIGFzc2VydChkZXN0cm95ZWQgPT09IGZhbHNlLCBcInN0YXRlIGFscmVhZHkgZGVzdHJveWVkXCIpO1xuICAgIGRlc3Ryb3llZCA9IHRydWU7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGRlY3J5cHQsXG4gICAgZGVzdHJveVxuICB9O1xufVxuXG5leHBvcnQgY29uc3QgQ0hVTktfU0laRSA9IDgxOTI7XG5cbmV4cG9ydCB0eXBlIFByb2dyZXNzID0ge1xuICBwZXJjZW50OiBudW1iZXI7XG4gIHRvdGFsOiBudW1iZXI7XG4gIGN1cnJlbnQ6IG51bWJlcjtcbn07XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbmNyeXB0U2VjcmV0c3RyZWFtKFxuICBrZXk6IFVpbnQ4QXJyYXksXG4gIGRhdGE6IFVpbnQ4QXJyYXksXG4gIHByb2dyZXNzPzogKHByb2dyZXNzOiBQcm9ncmVzcykgPT4gUHJvbWlzZTx2b2lkPixcbiAgYWJvcnQ/OiBBYm9ydENvbnRyb2xsZXJcbik6IFByb21pc2U8RW5jcnlwdGVkRmlsZT4ge1xuICBhd2FpdCBzZXR1cCgpO1xuICBjb25zdCB7IGVuY3J5cHQ6IGNyeXB0LCBkZXN0cm95LCBoZWFkZXIgfSA9IGVuY3J5cHQoa2V5KTtcbiAgY29uc3QgY3J5cHRlZENodW5rID1cbiAgICBDSFVOS19TSVpFICsgc29kaXVtLmNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfQUJZVEVTO1xuICBjb25zdCBtYXggPVxuICAgIE1hdGguY2VpbChkYXRhLmJ5dGVMZW5ndGggLyBDSFVOS19TSVpFKSAqIGNyeXB0ZWRDaHVuayArIGhlYWRlci5ieXRlTGVuZ3RoO1xuXG4gIHByb2dyZXNzPy4oe1xuICAgIHBlcmNlbnQ6IDAsXG4gICAgdG90YWw6IG1heCxcbiAgICBjdXJyZW50OiAwXG4gIH0pO1xuICBjb25zdCBmaW5hbCA9IG5ldyBVaW50OEFycmF5KG1heCk7XG4gIGNvbnN0IHNwYXJrRW5jcnlwdGVkID0gbmV3IFNwYXJrTUQ1LkFycmF5QnVmZmVyKCk7XG4gIGNvbnN0IHNwYXJrID0gbmV3IFNwYXJrTUQ1LkFycmF5QnVmZmVyKCk7XG5cbiAgZmluYWwuc2V0KGhlYWRlcik7XG4gIHNwYXJrRW5jcnlwdGVkLmFwcGVuZChoZWFkZXIpO1xuICBsZXQgdG90YWwgPSBoZWFkZXIuYnl0ZUxlbmd0aDtcbiAgcHJvZ3Jlc3M/Lih7XG4gICAgcGVyY2VudDogdG90YWwgLyBtYXgsXG4gICAgdG90YWw6IG1heCxcbiAgICBjdXJyZW50OiB0b3RhbFxuICB9KTtcbiAgbGV0IGxhc3RQZXJjZW50ID0gdG90YWwgLyBtYXg7XG5cbiAgZm9yIChjb25zdCBjaHVuayBvZiBjaHVua3MoZGF0YSwgQ0hVTktfU0laRSkpIHtcbiAgICBpZiAoYWJvcnQ/LnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEVuY3J5cHQgYWJvcnRlZGApO1xuICAgIH1cbiAgICBzcGFyay5hcHBlbmQoY2h1bmspO1xuICAgIGNvbnN0IHRhZyA9XG4gICAgICBjaHVuay5sZW5ndGggPCBDSFVOS19TSVpFXG4gICAgICAgID8gc29kaXVtLmNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfVEFHX0ZJTkFMXG4gICAgICAgIDogc29kaXVtLmNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfVEFHX01FU1NBR0U7XG4gICAgY29uc3QgY3J5cHRlZCA9IGNyeXB0KHRhZywgY2h1bmspO1xuICAgIHNwYXJrRW5jcnlwdGVkLmFwcGVuZChjcnlwdGVkKTtcbiAgICBmaW5hbC5zZXQoY3J5cHRlZCwgdG90YWwpO1xuICAgIHRvdGFsICs9IGNyeXB0ZWQuYnl0ZUxlbmd0aDtcbiAgICBjb25zdCBwZXJjZW50ID0gdG90YWwgLyBtYXg7XG4gICAgaWYgKHBlcmNlbnQgPiBsYXN0UGVyY2VudCArIDAuMDEpIHtcbiAgICAgIHByb2dyZXNzPy4oe1xuICAgICAgICBwZXJjZW50LFxuICAgICAgICB0b3RhbDogbWF4LFxuICAgICAgICBjdXJyZW50OiB0b3RhbFxuICAgICAgfSk7XG4gICAgICBsYXN0UGVyY2VudCA9IHBlcmNlbnQ7XG4gICAgfVxuICB9XG5cbiAgZGVzdHJveSgpO1xuICBwcm9ncmVzcz8uKHtcbiAgICBwZXJjZW50OiAxLFxuICAgIHRvdGFsLFxuICAgIGN1cnJlbnQ6IHRvdGFsXG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGRhdGE6IGZpbmFsLnNsaWNlKDAsIHRvdGFsKSxcbiAgICBtZDVFbmNyeXB0ZWQ6IHNwYXJrRW5jcnlwdGVkLmVuZCgpLFxuICAgIG1kNTogc3BhcmsuZW5kKClcbiAgfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlY3J5cHRTZWNyZXRzdHJlYW0oXG4gIGtleTogVWludDhBcnJheSxcbiAgZGF0YTogVWludDhBcnJheSxcbiAgcHJvZ3Jlc3M/OiAocHJvZ3Jlc3M6IFByb2dyZXNzKSA9PiBQcm9taXNlPHZvaWQ+LFxuICBhYm9ydD86IEFib3J0Q29udHJvbGxlclxuKTogUHJvbWlzZTxVaW50OEFycmF5PiB7XG4gIGF3YWl0IHNldHVwKCk7XG4gIGNvbnN0IGhlYWRlciA9IGRhdGEuc2xpY2UoXG4gICAgMCxcbiAgICBzb2RpdW0uY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9IRUFERVJCWVRFU1xuICApO1xuICBkYXRhID0gZGF0YS5zbGljZShzb2RpdW0uY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9IRUFERVJCWVRFUyk7XG5cbiAgY29uc3QgeyBkZWNyeXB0OiBkZWNyeXB0dCwgZGVzdHJveSB9ID0gZGVjcnlwdChoZWFkZXIsIGtleSk7XG4gIGNvbnN0IGNodW5rU2l6ZSA9XG4gICAgQ0hVTktfU0laRSArIHNvZGl1bS5jcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X0FCWVRFUztcbiAgY29uc3QgbWF4ID0gTWF0aC5jZWlsKGRhdGEuYnl0ZUxlbmd0aCAvIGNodW5rU2l6ZSkgKiBDSFVOS19TSVpFO1xuXG4gIHByb2dyZXNzPy4oe1xuICAgIHBlcmNlbnQ6IDAsXG4gICAgdG90YWw6IG1heCxcbiAgICBjdXJyZW50OiAwXG4gIH0pO1xuICBjb25zdCBmaW5hbCA9IG5ldyBVaW50OEFycmF5KG1heCk7XG4gIGxldCB0b3RhbCA9IDA7XG5cbiAgbGV0IGxhc3RQZXJjZW50ID0gdG90YWwgLyBtYXg7XG5cbiAgZm9yIChjb25zdCBjaHVuayBvZiBjaHVua3MoZGF0YSwgY2h1bmtTaXplKSkge1xuICAgIGlmIChhYm9ydD8uc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRGVjcnlwdCBhYm9ydGVkYCk7XG4gICAgfVxuICAgIGNvbnN0IHRtcCA9IGRlY3J5cHR0KGNodW5rKTtcbiAgICBmaW5hbC5zZXQodG1wLm1lc3NhZ2UsIHRvdGFsKTtcbiAgICB0b3RhbCArPSB0bXAubWVzc2FnZS5ieXRlTGVuZ3RoO1xuICAgIGNvbnN0IHBlcmNlbnQgPSB0b3RhbCAvIG1heDtcbiAgICBpZiAocGVyY2VudCA+IGxhc3RQZXJjZW50ICsgMC4wMSkge1xuICAgICAgcHJvZ3Jlc3M/Lih7XG4gICAgICAgIHBlcmNlbnQsXG4gICAgICAgIHRvdGFsOiBtYXgsXG4gICAgICAgIGN1cnJlbnQ6IHRvdGFsXG4gICAgICB9KTtcbiAgICAgIGxhc3RQZXJjZW50ID0gcGVyY2VudDtcbiAgICB9XG4gIH1cblxuICBkZXN0cm95KCk7XG4gIHByb2dyZXNzPy4oe1xuICAgIHBlcmNlbnQ6IDEsXG4gICAgdG90YWwsXG4gICAgY3VycmVudDogdG90YWxcbiAgfSk7XG4gIHJldHVybiBmaW5hbC5zbGljZSgwLCB0b3RhbCk7XG59XG5cbi8vIGFzeW5jIGZ1bmN0aW9uIG1haW5TZWNyZXRzdHJlYW0ocmFuZG9tOiBVaW50OEFycmF5KTogUHJvbWlzZTx2b2lkPiB7XG4vLyAgIGNvbnN0IGtleSA9IHNlY3JldHN0cmVhbUtleWdlbigpO1xuLy8gICBjb25zb2xlLnRpbWUoXCJzZWNyZXRzdHJlYW1fZW5jcnlwdFwiKTtcbi8vICAgY29uc3QgY3J5cHRlZCA9IGVuY3J5cHRTZWNyZXRzdHJlYW0oa2V5LCByYW5kb20pO1xuLy8gICBjb25zb2xlLnRpbWVFbmQoXCJzZWNyZXRzdHJlYW1fZW5jcnlwdFwiKTtcbi8vICAgY29uc29sZS50aW1lKFwic2VjcmV0c3RyZWFtX2RlY3J5cHRcIik7XG4vLyAgIGNvbnN0IGRlY3J5cHRlZCA9IGRlY3J5cHRTZWNyZXRzdHJlYW0oa2V5LCBjcnlwdGVkKTtcbi8vICAgY29uc29sZS50aW1lRW5kKFwic2VjcmV0c3RyZWFtX2RlY3J5cHRcIik7XG4vLyAgIGNvbnN0IGZpcnN0ID0gdG9faGV4KHJhbmRvbSkuc2xpY2UoMCwgMzIpO1xuLy8gICBjb25zdCBmaW5hbCA9IHRvX2hleChkZWNyeXB0ZWQpLnNsaWNlKDAsIDMyKTtcbi8vICAgY29uc29sZS5sb2coe1xuLy8gICAgIGZpcnN0LFxuLy8gICAgIGZpbmFsLFxuLy8gICAgIGVxdWFsczogZmlyc3QgPT09IGZpbmFsXG4vLyAgIH0pO1xuLy8gfVxuLy8gYXN5bmMgZnVuY3Rpb24gbWFpblNlY3JldGJveChyYW5kb206IFVpbnQ4QXJyYXkpOiBQcm9taXNlPHZvaWQ+IHtcbi8vICAgY29uc3Qga2V5ID0gZ2VuZXJhdGVTZWNyZXRCb3goKTtcbi8vICAgY29uc29sZS50aW1lKFwic2VjcmV0Ym94X2VuY3J5cHRcIik7XG4vLyAgIGNvbnN0IGNyeXB0ZWQgPSBlbmNyeXB0RmlsZShyYW5kb20sIGtleSk7XG4vLyAgIGNvbnNvbGUudGltZUVuZChcInNlY3JldGJveF9lbmNyeXB0XCIpO1xuLy8gICBjb25zb2xlLnRpbWUoXCJzZWNyZXRib3hfZGVjcnlwdFwiKTtcbi8vICAgY29uc3QgZGVjcnlwdGVkID0gZGVjcnlwdEZpbGUoY3J5cHRlZCwga2V5KTtcbi8vICAgY29uc29sZS50aW1lRW5kKFwic2VjcmV0Ym94X2RlY3J5cHRcIik7XG4vLyAgIGNvbnN0IGZpcnN0ID0gdG9faGV4KHJhbmRvbSkuc2xpY2UoMCwgMzIpO1xuLy8gICBjb25zdCBmaW5hbCA9IHRvX2hleChkZWNyeXB0ZWQpLnNsaWNlKDAsIDMyKTtcbi8vICAgY29uc29sZS5sb2coe1xuLy8gICAgIGZpcnN0LFxuLy8gICAgIGZpbmFsLFxuLy8gICAgIGVxdWFsczogZmlyc3QgPT09IGZpbmFsXG4vLyAgIH0pO1xuLy8gfVxuXG4vLyBhc3luYyBmdW5jdGlvbiBtYWluKCk6IFByb21pc2U8dm9pZD4ge1xuLy8gICBhd2FpdCByZWFkeTtcbi8vICAgY29uc29sZS50aW1lKFwicmFuZG9tYnl0ZXNfYnVmXCIpO1xuLy8gICBjb25zdCByYW5kb20gPSByYW5kb21ieXRlc19idWYoMV8wMDBfMDAwICogMTAyNCk7XG4vLyAgIGNvbnNvbGUudGltZUVuZChcInJhbmRvbWJ5dGVzX2J1ZlwiKTtcbi8vICAgYXdhaXQgUHJvbWlzZS5hbGwoW21haW5TZWNyZXRzdHJlYW0ocmFuZG9tKSwgbWFpblNlY3JldGJveChyYW5kb20pXSk7XG4vLyB9XG5cbi8vIG1haW4oKTtcbiJdfQ==
210
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzZXR1cCIsInNvZGl1bSIsIlNwYXJrTUQ1IiwiY2h1bmtzIiwiYXNzZXJ0IiwiYyIsIm1lc3NhZ2UiLCJFcnJvciIsInNlY3JldHN0cmVhbUtleWdlbiIsImNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfa2V5Z2VuIiwiZW5jcnlwdCIsImtleSIsImRlc3Ryb3llZCIsInN0YXRlIiwiaGVhZGVyIiwiY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9pbml0X3B1c2giLCJ0YWciLCJwbGFpbnRleHQiLCJjcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X3B1c2giLCJkZXN0cm95IiwiZGVjcnlwdCIsImJ5dGVMZW5ndGgiLCJjcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X0hFQURFUkJZVEVTIiwiY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9LRVlCWVRFUyIsImNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfaW5pdF9wdWxsIiwiY2lwaGVydGV4dCIsImNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfcHVsbCIsIkNIVU5LX1NJWkUiLCJlbmNyeXB0U2VjcmV0c3RyZWFtIiwiZGF0YSIsInByb2dyZXNzIiwiYWJvcnQiLCJjcnlwdCIsImNyeXB0ZWRDaHVuayIsImNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfQUJZVEVTIiwibWF4IiwiTWF0aCIsImNlaWwiLCJwZXJjZW50IiwidG90YWwiLCJjdXJyZW50IiwiZmluYWwiLCJVaW50OEFycmF5Iiwic3BhcmtFbmNyeXB0ZWQiLCJBcnJheUJ1ZmZlciIsInNwYXJrIiwic2V0IiwiYXBwZW5kIiwibGFzdFBlcmNlbnQiLCJjaHVuayIsInNpZ25hbCIsImFib3J0ZWQiLCJsZW5ndGgiLCJjcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X1RBR19GSU5BTCIsImNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfVEFHX01FU1NBR0UiLCJjcnlwdGVkIiwic2xpY2UiLCJtZDVFbmNyeXB0ZWQiLCJlbmQiLCJtZDUiLCJkZWNyeXB0U2VjcmV0c3RyZWFtIiwiZGVjcnlwdHQiLCJjaHVua1NpemUiLCJ0bXAiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY3J5cHRvL2ZpbGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBNZXNzYWdlVGFnIH0gZnJvbSBcImxpYnNvZGl1bS13cmFwcGVyc1wiO1xuaW1wb3J0IHsgc2V0dXAsIHNvZGl1bSB9IGZyb20gXCIuLi9zb2RpdW0uanNcIjtcbmltcG9ydCBTcGFya01ENSBmcm9tIFwic3BhcmstbWQ1XCI7XG5pbXBvcnQgeyBjaHVua3MgfSBmcm9tIFwiLi4vdXRpbHMvdXRpbHMuanNcIjtcblxuZXhwb3J0IHR5cGUgRW5jcnlwdGVkRmlsZSA9IHtcbiAgZGF0YTogVWludDhBcnJheTtcbiAgbWQ1OiBzdHJpbmc7XG4gIG1kNUVuY3J5cHRlZDogc3RyaW5nO1xufTtcblxuZnVuY3Rpb24gYXNzZXJ0KGM6IGJvb2xlYW4sIG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICBpZiAoIWMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gIH1cbn1cblxudHlwZSBFbmNyeXB0Rm4gPSAodGFnOiBudW1iZXIsIHBsYWludGV4dDogVWludDhBcnJheSkgPT4gVWludDhBcnJheTtcblxudHlwZSBEZWNyeXB0Rm4gPSAoY2lwaGVydGV4dDogVWludDhBcnJheSkgPT4gTWVzc2FnZVRhZztcblxuZXhwb3J0IGZ1bmN0aW9uIHNlY3JldHN0cmVhbUtleWdlbigpOiBVaW50OEFycmF5IHtcbiAgcmV0dXJuIHNvZGl1bS5jcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X2tleWdlbigpO1xufVxuXG5mdW5jdGlvbiBlbmNyeXB0KGtleTogVWludDhBcnJheSk6IHtcbiAgZGVzdHJveTogKCkgPT4gdm9pZDtcbiAgZW5jcnlwdDogRW5jcnlwdEZuO1xuICBoZWFkZXI6IFVpbnQ4QXJyYXk7XG59IHtcbiAgbGV0IGRlc3Ryb3llZCA9IGZhbHNlO1xuICBjb25zdCB7IHN0YXRlLCBoZWFkZXIgfSA9XG4gICAgc29kaXVtLmNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfaW5pdF9wdXNoKGtleSk7XG5cbiAgY29uc3QgZW5jcnlwdDogRW5jcnlwdEZuID0gKHRhZywgcGxhaW50ZXh0KSA9PiB7XG4gICAgYXNzZXJ0KGRlc3Ryb3llZCA9PT0gZmFsc2UsIFwic3RhdGUgYWxyZWFkeSBkZXN0cm95ZWRcIik7XG5cbiAgICByZXR1cm4gc29kaXVtLmNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfcHVzaChcbiAgICAgIHN0YXRlLFxuICAgICAgcGxhaW50ZXh0LFxuICAgICAgbnVsbCxcbiAgICAgIHRhZ1xuICAgICk7XG4gIH07XG5cbiAgZnVuY3Rpb24gZGVzdHJveSgpOiB2b2lkIHtcbiAgICBhc3NlcnQoZGVzdHJveWVkID09PSBmYWxzZSwgXCJzdGF0ZSBhbHJlYWR5IGRlc3Ryb3llZFwiKTtcbiAgICBkZXN0cm95ZWQgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBlbmNyeXB0LFxuICAgIGRlc3Ryb3ksXG4gICAgaGVhZGVyXG4gIH07XG59XG5cbmZ1bmN0aW9uIGRlY3J5cHQoXG4gIGhlYWRlcjogVWludDhBcnJheSxcbiAga2V5OiBVaW50OEFycmF5XG4pOiB7XG4gIGRlc3Ryb3k6ICgpID0+IHZvaWQ7XG4gIGRlY3J5cHQ6IERlY3J5cHRGbjtcbn0ge1xuICBhc3NlcnQoXG4gICAgaGVhZGVyLmJ5dGVMZW5ndGggPj1cbiAgICAgIHNvZGl1bS5jcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X0hFQURFUkJZVEVTLFxuICAgIGBoZWFkZXIgbXVzdCBiZSBhdCBsZWFzdCBIRUFERVJCWVRFUyAoJHtzb2RpdW0uY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9IRUFERVJCWVRFU30pIGxvbmdgXG4gICk7XG4gIGFzc2VydChcbiAgICBrZXkuYnl0ZUxlbmd0aCA+PSBzb2RpdW0uY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9LRVlCWVRFUyxcbiAgICBga2V5IG11c3QgYmUgYXQgbGVhc3QgS0VZQllURVMgKCR7c29kaXVtLmNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfS0VZQllURVN9KSBsb25nYFxuICApO1xuXG4gIGxldCBkZXN0cm95ZWQgPSBmYWxzZTtcbiAgY29uc3Qgc3RhdGUgPSBzb2RpdW0uY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9pbml0X3B1bGwoXG4gICAgaGVhZGVyLFxuICAgIGtleVxuICApO1xuXG4gIGNvbnN0IGRlY3J5cHQ6IERlY3J5cHRGbiA9IGNpcGhlcnRleHQgPT4ge1xuICAgIGFzc2VydChkZXN0cm95ZWQgPT09IGZhbHNlLCBcInN0YXRlIGFscmVhZHkgZGVzdHJveWVkXCIpO1xuXG4gICAgcmV0dXJuIHNvZGl1bS5jcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X3B1bGwoc3RhdGUsIGNpcGhlcnRleHQpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgYXNzZXJ0KGRlc3Ryb3llZCA9PT0gZmFsc2UsIFwic3RhdGUgYWxyZWFkeSBkZXN0cm95ZWRcIik7XG4gICAgZGVzdHJveWVkID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZGVjcnlwdCxcbiAgICBkZXN0cm95XG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBDSFVOS19TSVpFID0gODE5MjtcblxuZXhwb3J0IHR5cGUgUHJvZ3Jlc3MgPSB7XG4gIHBlcmNlbnQ6IG51bWJlcjtcbiAgdG90YWw6IG51bWJlcjtcbiAgY3VycmVudDogbnVtYmVyO1xufTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuY3J5cHRTZWNyZXRzdHJlYW0oXG4gIGtleTogVWludDhBcnJheSxcbiAgZGF0YTogVWludDhBcnJheSxcbiAgcHJvZ3Jlc3M/OiAocHJvZ3Jlc3M6IFByb2dyZXNzKSA9PiBQcm9taXNlPHZvaWQ+LFxuICBhYm9ydD86IEFib3J0Q29udHJvbGxlclxuKTogUHJvbWlzZTxFbmNyeXB0ZWRGaWxlPiB7XG4gIGF3YWl0IHNldHVwKCk7XG4gIGNvbnN0IHsgZW5jcnlwdDogY3J5cHQsIGRlc3Ryb3ksIGhlYWRlciB9ID0gZW5jcnlwdChrZXkpO1xuICBjb25zdCBjcnlwdGVkQ2h1bmsgPVxuICAgIENIVU5LX1NJWkUgKyBzb2RpdW0uY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9BQllURVM7XG4gIGNvbnN0IG1heCA9XG4gICAgTWF0aC5jZWlsKGRhdGEuYnl0ZUxlbmd0aCAvIENIVU5LX1NJWkUpICogY3J5cHRlZENodW5rICsgaGVhZGVyLmJ5dGVMZW5ndGg7XG5cbiAgcHJvZ3Jlc3M/Lih7XG4gICAgcGVyY2VudDogMCxcbiAgICB0b3RhbDogbWF4LFxuICAgIGN1cnJlbnQ6IDBcbiAgfSk7XG4gIGNvbnN0IGZpbmFsID0gbmV3IFVpbnQ4QXJyYXkobWF4KTtcbiAgY29uc3Qgc3BhcmtFbmNyeXB0ZWQgPSBuZXcgU3BhcmtNRDUuQXJyYXlCdWZmZXIoKTtcbiAgY29uc3Qgc3BhcmsgPSBuZXcgU3BhcmtNRDUuQXJyYXlCdWZmZXIoKTtcblxuICBmaW5hbC5zZXQoaGVhZGVyKTtcbiAgc3BhcmtFbmNyeXB0ZWQuYXBwZW5kKGhlYWRlcik7XG4gIGxldCB0b3RhbCA9IGhlYWRlci5ieXRlTGVuZ3RoO1xuICBwcm9ncmVzcz8uKHtcbiAgICBwZXJjZW50OiB0b3RhbCAvIG1heCxcbiAgICB0b3RhbDogbWF4LFxuICAgIGN1cnJlbnQ6IHRvdGFsXG4gIH0pO1xuICBsZXQgbGFzdFBlcmNlbnQgPSB0b3RhbCAvIG1heDtcblxuICBmb3IgKGNvbnN0IGNodW5rIG9mIGNodW5rcyhkYXRhLCBDSFVOS19TSVpFKSkge1xuICAgIGlmIChhYm9ydD8uc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRW5jcnlwdCBhYm9ydGVkYCk7XG4gICAgfVxuICAgIHNwYXJrLmFwcGVuZChjaHVuayk7XG4gICAgY29uc3QgdGFnID1cbiAgICAgIGNodW5rLmxlbmd0aCA8IENIVU5LX1NJWkVcbiAgICAgICAgPyBzb2RpdW0uY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9UQUdfRklOQUxcbiAgICAgICAgOiBzb2RpdW0uY3J5cHRvX3NlY3JldHN0cmVhbV94Y2hhY2hhMjBwb2x5MTMwNV9UQUdfTUVTU0FHRTtcbiAgICBjb25zdCBjcnlwdGVkID0gY3J5cHQodGFnLCBjaHVuayk7XG4gICAgc3BhcmtFbmNyeXB0ZWQuYXBwZW5kKGNyeXB0ZWQpO1xuICAgIGZpbmFsLnNldChjcnlwdGVkLCB0b3RhbCk7XG4gICAgdG90YWwgKz0gY3J5cHRlZC5ieXRlTGVuZ3RoO1xuICAgIGNvbnN0IHBlcmNlbnQgPSB0b3RhbCAvIG1heDtcbiAgICBpZiAocGVyY2VudCA+IGxhc3RQZXJjZW50ICsgMC4wMSkge1xuICAgICAgcHJvZ3Jlc3M/Lih7XG4gICAgICAgIHBlcmNlbnQsXG4gICAgICAgIHRvdGFsOiBtYXgsXG4gICAgICAgIGN1cnJlbnQ6IHRvdGFsXG4gICAgICB9KTtcbiAgICAgIGxhc3RQZXJjZW50ID0gcGVyY2VudDtcbiAgICB9XG4gIH1cblxuICBkZXN0cm95KCk7XG4gIHByb2dyZXNzPy4oe1xuICAgIHBlcmNlbnQ6IDEsXG4gICAgdG90YWwsXG4gICAgY3VycmVudDogdG90YWxcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgZGF0YTogZmluYWwuc2xpY2UoMCwgdG90YWwpLFxuICAgIG1kNUVuY3J5cHRlZDogc3BhcmtFbmNyeXB0ZWQuZW5kKCksXG4gICAgbWQ1OiBzcGFyay5lbmQoKVxuICB9O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVjcnlwdFNlY3JldHN0cmVhbShcbiAga2V5OiBVaW50OEFycmF5LFxuICBkYXRhOiBVaW50OEFycmF5LFxuICBwcm9ncmVzcz86IChwcm9ncmVzczogUHJvZ3Jlc3MpID0+IFByb21pc2U8dm9pZD4sXG4gIGFib3J0PzogQWJvcnRDb250cm9sbGVyXG4pOiBQcm9taXNlPFVpbnQ4QXJyYXk+IHtcbiAgYXdhaXQgc2V0dXAoKTtcbiAgY29uc3QgaGVhZGVyID0gZGF0YS5zbGljZShcbiAgICAwLFxuICAgIHNvZGl1bS5jcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X0hFQURFUkJZVEVTXG4gICk7XG4gIGRhdGEgPSBkYXRhLnNsaWNlKHNvZGl1bS5jcnlwdG9fc2VjcmV0c3RyZWFtX3hjaGFjaGEyMHBvbHkxMzA1X0hFQURFUkJZVEVTKTtcblxuICBjb25zdCB7IGRlY3J5cHQ6IGRlY3J5cHR0LCBkZXN0cm95IH0gPSBkZWNyeXB0KGhlYWRlciwga2V5KTtcbiAgY29uc3QgY2h1bmtTaXplID1cbiAgICBDSFVOS19TSVpFICsgc29kaXVtLmNyeXB0b19zZWNyZXRzdHJlYW1feGNoYWNoYTIwcG9seTEzMDVfQUJZVEVTO1xuICBjb25zdCBtYXggPSBNYXRoLmNlaWwoZGF0YS5ieXRlTGVuZ3RoIC8gY2h1bmtTaXplKSAqIENIVU5LX1NJWkU7XG5cbiAgcHJvZ3Jlc3M/Lih7XG4gICAgcGVyY2VudDogMCxcbiAgICB0b3RhbDogbWF4LFxuICAgIGN1cnJlbnQ6IDBcbiAgfSk7XG4gIGNvbnN0IGZpbmFsID0gbmV3IFVpbnQ4QXJyYXkobWF4KTtcbiAgbGV0IHRvdGFsID0gMDtcblxuICBsZXQgbGFzdFBlcmNlbnQgPSB0b3RhbCAvIG1heDtcblxuICBmb3IgKGNvbnN0IGNodW5rIG9mIGNodW5rcyhkYXRhLCBjaHVua1NpemUpKSB7XG4gICAgaWYgKGFib3J0Py5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBEZWNyeXB0IGFib3J0ZWRgKTtcbiAgICB9XG4gICAgY29uc3QgdG1wID0gZGVjcnlwdHQoY2h1bmspO1xuICAgIGZpbmFsLnNldCh0bXAubWVzc2FnZSwgdG90YWwpO1xuICAgIHRvdGFsICs9IHRtcC5tZXNzYWdlLmJ5dGVMZW5ndGg7XG4gICAgY29uc3QgcGVyY2VudCA9IHRvdGFsIC8gbWF4O1xuICAgIGlmIChwZXJjZW50ID4gbGFzdFBlcmNlbnQgKyAwLjAxKSB7XG4gICAgICBwcm9ncmVzcz8uKHtcbiAgICAgICAgcGVyY2VudCxcbiAgICAgICAgdG90YWw6IG1heCxcbiAgICAgICAgY3VycmVudDogdG90YWxcbiAgICAgIH0pO1xuICAgICAgbGFzdFBlcmNlbnQgPSBwZXJjZW50O1xuICAgIH1cbiAgfVxuXG4gIGRlc3Ryb3koKTtcbiAgcHJvZ3Jlc3M/Lih7XG4gICAgcGVyY2VudDogMSxcbiAgICB0b3RhbCxcbiAgICBjdXJyZW50OiB0b3RhbFxuICB9KTtcbiAgcmV0dXJuIGZpbmFsLnNsaWNlKDAsIHRvdGFsKTtcbn1cblxuLy8gYXN5bmMgZnVuY3Rpb24gbWFpblNlY3JldHN0cmVhbShyYW5kb206IFVpbnQ4QXJyYXkpOiBQcm9taXNlPHZvaWQ+IHtcbi8vICAgY29uc3Qga2V5ID0gc2VjcmV0c3RyZWFtS2V5Z2VuKCk7XG4vLyAgIGNvbnNvbGUudGltZShcInNlY3JldHN0cmVhbV9lbmNyeXB0XCIpO1xuLy8gICBjb25zdCBjcnlwdGVkID0gZW5jcnlwdFNlY3JldHN0cmVhbShrZXksIHJhbmRvbSk7XG4vLyAgIGNvbnNvbGUudGltZUVuZChcInNlY3JldHN0cmVhbV9lbmNyeXB0XCIpO1xuLy8gICBjb25zb2xlLnRpbWUoXCJzZWNyZXRzdHJlYW1fZGVjcnlwdFwiKTtcbi8vICAgY29uc3QgZGVjcnlwdGVkID0gZGVjcnlwdFNlY3JldHN0cmVhbShrZXksIGNyeXB0ZWQpO1xuLy8gICBjb25zb2xlLnRpbWVFbmQoXCJzZWNyZXRzdHJlYW1fZGVjcnlwdFwiKTtcbi8vICAgY29uc3QgZmlyc3QgPSB0b19oZXgocmFuZG9tKS5zbGljZSgwLCAzMik7XG4vLyAgIGNvbnN0IGZpbmFsID0gdG9faGV4KGRlY3J5cHRlZCkuc2xpY2UoMCwgMzIpO1xuLy8gICBjb25zb2xlLmxvZyh7XG4vLyAgICAgZmlyc3QsXG4vLyAgICAgZmluYWwsXG4vLyAgICAgZXF1YWxzOiBmaXJzdCA9PT0gZmluYWxcbi8vICAgfSk7XG4vLyB9XG4vLyBhc3luYyBmdW5jdGlvbiBtYWluU2VjcmV0Ym94KHJhbmRvbTogVWludDhBcnJheSk6IFByb21pc2U8dm9pZD4ge1xuLy8gICBjb25zdCBrZXkgPSBnZW5lcmF0ZVNlY3JldEJveCgpO1xuLy8gICBjb25zb2xlLnRpbWUoXCJzZWNyZXRib3hfZW5jcnlwdFwiKTtcbi8vICAgY29uc3QgY3J5cHRlZCA9IGVuY3J5cHRGaWxlKHJhbmRvbSwga2V5KTtcbi8vICAgY29uc29sZS50aW1lRW5kKFwic2VjcmV0Ym94X2VuY3J5cHRcIik7XG4vLyAgIGNvbnNvbGUudGltZShcInNlY3JldGJveF9kZWNyeXB0XCIpO1xuLy8gICBjb25zdCBkZWNyeXB0ZWQgPSBkZWNyeXB0RmlsZShjcnlwdGVkLCBrZXkpO1xuLy8gICBjb25zb2xlLnRpbWVFbmQoXCJzZWNyZXRib3hfZGVjcnlwdFwiKTtcbi8vICAgY29uc3QgZmlyc3QgPSB0b19oZXgocmFuZG9tKS5zbGljZSgwLCAzMik7XG4vLyAgIGNvbnN0IGZpbmFsID0gdG9faGV4KGRlY3J5cHRlZCkuc2xpY2UoMCwgMzIpO1xuLy8gICBjb25zb2xlLmxvZyh7XG4vLyAgICAgZmlyc3QsXG4vLyAgICAgZmluYWwsXG4vLyAgICAgZXF1YWxzOiBmaXJzdCA9PT0gZmluYWxcbi8vICAgfSk7XG4vLyB9XG5cbi8vIGFzeW5jIGZ1bmN0aW9uIG1haW4oKTogUHJvbWlzZTx2b2lkPiB7XG4vLyAgIGF3YWl0IHJlYWR5O1xuLy8gICBjb25zb2xlLnRpbWUoXCJyYW5kb21ieXRlc19idWZcIik7XG4vLyAgIGNvbnN0IHJhbmRvbSA9IHJhbmRvbWJ5dGVzX2J1ZigxXzAwMF8wMDAgKiAxMDI0KTtcbi8vICAgY29uc29sZS50aW1lRW5kKFwicmFuZG9tYnl0ZXNfYnVmXCIpO1xuLy8gICBhd2FpdCBQcm9taXNlLmFsbChbbWFpblNlY3JldHN0cmVhbShyYW5kb20pLCBtYWluU2VjcmV0Ym94KHJhbmRvbSldKTtcbi8vIH1cblxuLy8gbWFpbigpO1xuIl0sIm1hcHBpbmdzIjoiQUFDQSxTQUFTQSxLQUFULEVBQWdCQyxNQUFoQixRQUE4QixjQUE5QjtBQUNBLE9BQU9DLFFBQVAsTUFBcUIsV0FBckI7QUFDQSxTQUFTQyxNQUFULFFBQXVCLG1CQUF2Qjs7QUFRQSxTQUFTQyxNQUFULENBQWdCQyxDQUFoQixFQUE0QkMsT0FBNUIsRUFBbUQ7RUFDakQsSUFBSSxDQUFDRCxDQUFMLEVBQVE7SUFDTixNQUFNLElBQUlFLEtBQUosQ0FBVUQsT0FBVixDQUFOO0VBQ0Q7QUFDRjs7QUFNRCxPQUFPLFNBQVNFLGtCQUFULEdBQTBDO0VBQy9DLE9BQU9QLE1BQU0sQ0FBQ1EsNENBQVAsRUFBUDtBQUNEOztBQUVELFNBQVNDLE9BQVQsQ0FBaUJDLEdBQWpCLEVBSUU7RUFDQSxJQUFJQyxTQUFTLEdBQUcsS0FBaEI7RUFDQSxNQUFNO0lBQUVDLEtBQUY7SUFBU0M7RUFBVCxJQUNKYixNQUFNLENBQUNjLCtDQUFQLENBQXVESixHQUF2RCxDQURGOztFQUdBLE1BQU1ELE9BQWtCLEdBQUcsQ0FBQ00sR0FBRCxFQUFNQyxTQUFOLEtBQW9CO0lBQzdDYixNQUFNLENBQUNRLFNBQVMsS0FBSyxLQUFmLEVBQXNCLHlCQUF0QixDQUFOO0lBRUEsT0FBT1gsTUFBTSxDQUFDaUIsMENBQVAsQ0FDTEwsS0FESyxFQUVMSSxTQUZLLEVBR0wsSUFISyxFQUlMRCxHQUpLLENBQVA7RUFNRCxDQVREOztFQVdBLFNBQVNHLE9BQVQsR0FBeUI7SUFDdkJmLE1BQU0sQ0FBQ1EsU0FBUyxLQUFLLEtBQWYsRUFBc0IseUJBQXRCLENBQU47SUFDQUEsU0FBUyxHQUFHLElB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
@@ -1,8 +1,8 @@
1
- import { concatenate } from "../utils.js";
1
+ import { concatenate } from "../utils/utils.js";
2
2
  import { sodium } from "../sodium.js";
3
3
  export function encryptCryptoBox(data, publicKeyBob, privateKeyAlice) {
4
- var nonce = sodium.randombytes_buf(sodium.crypto_box_NONCEBYTES);
5
- var crypt = sodium.crypto_box_easy(data, nonce, sodium.from_hex(publicKeyBob), sodium.from_hex(privateKeyAlice));
4
+ const nonce = sodium.randombytes_buf(sodium.crypto_box_NONCEBYTES);
5
+ const crypt = sodium.crypto_box_easy(data, nonce, sodium.from_hex(publicKeyBob), sodium.from_hex(privateKeyAlice));
6
6
  return concatenate(nonce, crypt);
7
7
  }
8
8
  export function generateCryptoBoxKeyPair() {
@@ -13,16 +13,16 @@ export function decryptCryptoBox(data, publicKeyAlice, privateKeyBob) {
13
13
  throw "data too short";
14
14
  }
15
15
 
16
- var nonce = data.slice(0, sodium.crypto_box_NONCEBYTES);
17
- var cipher = data.slice(sodium.crypto_box_NONCEBYTES);
16
+ const nonce = data.slice(0, sodium.crypto_box_NONCEBYTES);
17
+ const cipher = data.slice(sodium.crypto_box_NONCEBYTES);
18
18
  return sodium.crypto_box_open_easy(cipher, nonce, sodium.from_hex(publicKeyAlice), sodium.from_hex(privateKeyBob));
19
19
  }
20
20
  export function generateSecretBoxKey() {
21
21
  return sodium.randombytes_buf(sodium.crypto_secretbox_KEYBYTES, "hex");
22
22
  }
23
23
  export function encryptSecretBox(data, key) {
24
- var nonce = sodium.randombytes_buf(sodium.crypto_secretbox_NONCEBYTES);
25
- var crypt = sodium.crypto_secretbox_easy(data, nonce, sodium.from_hex(key));
24
+ const nonce = sodium.randombytes_buf(sodium.crypto_secretbox_NONCEBYTES);
25
+ const crypt = sodium.crypto_secretbox_easy(data, nonce, sodium.from_hex(key));
26
26
  return concatenate(nonce, crypt);
27
27
  }
28
28
  export function decryptSecretBox(data, key) {
@@ -30,16 +30,18 @@ export function decryptSecretBox(data, key) {
30
30
  throw "data too short";
31
31
  }
32
32
 
33
- var nonce = data.slice(0, sodium.crypto_secretbox_NONCEBYTES);
34
- var cipher = data.slice(sodium.crypto_secretbox_NONCEBYTES);
33
+ const nonce = data.slice(0, sodium.crypto_secretbox_NONCEBYTES);
34
+ const cipher = data.slice(sodium.crypto_secretbox_NONCEBYTES);
35
35
  return sodium.crypto_secretbox_open_easy(cipher, nonce, sodium.from_hex(key));
36
36
  }
37
37
  export function encryptAnonymous(data, receiverPublicKey) {
38
38
  return sodium.crypto_box_seal(data, sodium.from_hex(receiverPublicKey));
39
39
  }
40
40
  export function decryptAnonymous(data, _ref) {
41
- var privateKey = _ref.privateKey,
42
- publicKey = _ref.publicKey;
41
+ let {
42
+ privateKey,
43
+ publicKey
44
+ } = _ref;
43
45
  return sodium.crypto_box_seal_open(data, sodium.from_hex(publicKey), sodium.from_hex(privateKey));
44
46
  }
45
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jcnlwdG8vaW5kZXgudHMiXSwibmFtZXMiOlsiY29uY2F0ZW5hdGUiLCJzb2RpdW0iLCJlbmNyeXB0Q3J5cHRvQm94IiwiZGF0YSIsInB1YmxpY0tleUJvYiIsInByaXZhdGVLZXlBbGljZSIsIm5vbmNlIiwicmFuZG9tYnl0ZXNfYnVmIiwiY3J5cHRvX2JveF9OT05DRUJZVEVTIiwiY3J5cHQiLCJjcnlwdG9fYm94X2Vhc3kiLCJmcm9tX2hleCIsImdlbmVyYXRlQ3J5cHRvQm94S2V5UGFpciIsImNyeXB0b19ib3hfa2V5cGFpciIsImRlY3J5cHRDcnlwdG9Cb3giLCJwdWJsaWNLZXlBbGljZSIsInByaXZhdGVLZXlCb2IiLCJsZW5ndGgiLCJjcnlwdG9fYm94X01BQ0JZVEVTIiwic2xpY2UiLCJjaXBoZXIiLCJjcnlwdG9fYm94X29wZW5fZWFzeSIsImdlbmVyYXRlU2VjcmV0Qm94S2V5IiwiY3J5cHRvX3NlY3JldGJveF9LRVlCWVRFUyIsImVuY3J5cHRTZWNyZXRCb3giLCJrZXkiLCJjcnlwdG9fc2VjcmV0Ym94X05PTkNFQllURVMiLCJjcnlwdG9fc2VjcmV0Ym94X2Vhc3kiLCJkZWNyeXB0U2VjcmV0Qm94IiwiY3J5cHRvX3NlY3JldGJveF9NQUNCWVRFUyIsImNyeXB0b19zZWNyZXRib3hfb3Blbl9lYXN5IiwiZW5jcnlwdEFub255bW91cyIsInJlY2VpdmVyUHVibGljS2V5IiwiY3J5cHRvX2JveF9zZWFsIiwiZGVjcnlwdEFub255bW91cyIsInByaXZhdGVLZXkiLCJwdWJsaWNLZXkiLCJjcnlwdG9fYm94X3NlYWxfb3BlbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsV0FBVCxRQUE0QixhQUE1QjtBQUNBLFNBQVNDLE1BQVQsUUFBdUIsY0FBdkI7QUFPQSxPQUFPLFNBQVNDLGdCQUFULENBQ0xDLElBREssRUFFTEMsWUFGSyxFQUdMQyxlQUhLLEVBSU87QUFDWixNQUFNQyxLQUFLLEdBQUdMLE1BQU0sQ0FBQ00sZUFBUCxD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LE1BREVDLFNBQ0YsUUFERUEsU0FDRjtBQUNaLFNBQU9uQyxNQUFNLENBQUNvQyxvQkFBUCxDQUNMbEMsSUFESyxFQUVMRixNQUFNLENBQUNVLFFBQVAsQ0FBZ0J5QixTQUFoQixDQUZLLEVBR0xuQyxNQUFNLENBQUNVLFFBQVAsQ0FBZ0J3QixVQUFoQixDQUhLLENBQVA7QUFLRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbmNhdGVuYXRlIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5pbXBvcnQgeyBzb2RpdW0gfSBmcm9tIFwiLi4vc29kaXVtLmpzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2V5UGFpciB7XG4gIHB1YmxpY0tleTogc3RyaW5nO1xuICBwcml2YXRlS2V5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmNyeXB0Q3J5cHRvQm94KFxuICBkYXRhOiBVaW50OEFycmF5LFxuICBwdWJsaWNLZXlCb2I6IHN0cmluZyxcbiAgcHJpdmF0ZUtleUFsaWNlOiBzdHJpbmdcbik6IFVpbnQ4QXJyYXkge1xuICBjb25zdCBub25jZSA9IHNvZGl1bS5yYW5kb21ieXRlc19idWYoc29kaXVtLmNyeXB0b19ib3hfTk9OQ0VCWVRFUyk7XG4gIGNvbnN0IGNyeXB0ID0gc29kaXVtLmNyeXB0b19ib3hfZWFzeShcbiAgICBkYXRhLFxuICAgIG5vbmNlLFxuICAgIHNvZGl1bS5mcm9tX2hleChwdWJsaWNLZXlCb2IpLFxuICAgIHNvZGl1bS5mcm9tX2hleChwcml2YXRlS2V5QWxpY2UpXG4gICk7XG4gIHJldHVybiBjb25jYXRlbmF0ZShub25jZSwgY3J5cHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVDcnlwdG9Cb3hLZXlQYWlyKCk6IEtleVBhaXIge1xuICByZXR1cm4gc29kaXVtLmNyeXB0b19ib3hfa2V5cGFpcihcImhleFwiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY3J5cHRDcnlwdG9Cb3goXG4gIGRhdGE6IFVpbnQ4QXJyYXksXG4gIHB1YmxpY0tleUFsaWNlOiBzdHJpbmcsXG4gIHByaXZhdGVLZXlCb2I6IHN0cmluZ1xuKTogVWludDhBcnJheSB7XG4gIGlmIChkYXRhLmxlbmd0aCA8IHNvZGl1bS5jcnlwdG9fYm94X05PTkNFQllURVMgKyBzb2RpdW0uY3J5cHRvX2JveF9NQUNCWVRFUykge1xuICAgIHRocm93IFwiZGF0YSB0b28gc2hvcnRcIjtcbiAgfVxuICBjb25zdCBub25jZSA9IGRhdGEuc2xpY2UoMCwgc29kaXVtLmNyeXB0b19ib3hfTk9OQ0VCWVRFUyk7XG4gIGNvbnN0IGNpcGhlciA9IGRhdGEuc2xpY2Uoc29kaXVtLmNyeXB0b19ib3hfTk9OQ0VCWVRFUyk7XG4gIHJldHVybiBzb2RpdW0uY3J5cHRvX2JveF9vcGVuX2Vhc3koXG4gICAgY2lwaGVyLFxuICAgIG5vbmNlLFxuICAgIHNvZGl1bS5mcm9tX2hleChwdWJsaWNLZXlBbGljZSksXG4gICAgc29kaXVtLmZyb21faGV4KHByaXZhdGVLZXlCb2IpXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVNlY3JldEJveEtleSgpOiBzdHJpbmcge1xuICByZXR1cm4gc29kaXVtLnJhbmRvbWJ5dGVzX2J1Zihzb2RpdW0uY3J5cHRvX3NlY3JldGJveF9LRVlCWVRFUywgXCJoZXhcIik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmNyeXB0U2VjcmV0Qm94KGRhdGE6IFVpbnQ4QXJyYXksIGtleTogc3RyaW5nKTogVWludDhBcnJheSB7XG4gIGNvbnN0IG5vbmNlID0gc29kaXVtLnJhbmRvbWJ5dGVzX2J1Zihzb2RpdW0uY3J5cHRvX3NlY3JldGJveF9OT05DRUJZVEVTKTtcbiAgY29uc3QgY3J5cHQgPSBzb2RpdW0uY3J5cHRvX3NlY3JldGJveF9lYXN5KGRhdGEsIG5vbmNlLCBzb2RpdW0uZnJvbV9oZXgoa2V5KSk7XG4gIHJldHVybiBjb25jYXRlbmF0ZShub25jZSwgY3J5cHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjcnlwdFNlY3JldEJveChkYXRhOiBVaW50OEFycmF5LCBrZXk6IHN0cmluZyk6IFVpbnQ4QXJyYXkge1xuICBpZiAoXG4gICAgZGF0YS5sZW5ndGggPFxuICAgIHNvZGl1bS5jcnlwdG9fc2VjcmV0Ym94X05PTkNFQllURVMgKyBzb2RpdW0uY3J5cHRvX3NlY3JldGJveF9NQUNCWVRFU1xuICApIHtcbiAgICB0aHJvdyBcImRhdGEgdG9vIHNob3J0XCI7XG4gIH1cbiAgY29uc3Qgbm9uY2UgPSBkYXRhLnNsaWNlKDAsIHNvZGl1bS5jcnlwdG9fc2VjcmV0Ym94X05PTkNFQllURVMpO1xuICBjb25zdCBjaXBoZXIgPSBkYXRhLnNsaWNlKHNvZGl1bS5jcnlwdG9fc2VjcmV0Ym94X05PTkNFQllURVMpO1xuICByZXR1cm4gc29kaXVtLmNyeXB0b19zZWNyZXRib3hfb3Blbl9lYXN5KGNpcGhlciwgbm9uY2UsIHNvZGl1bS5mcm9tX2hleChrZXkpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuY3J5cHRBbm9ueW1vdXMoXG4gIGRhdGE6IFVpbnQ4QXJyYXksXG4gIHJlY2VpdmVyUHVibGljS2V5OiBzdHJpbmdcbik6IFVpbnQ4QXJyYXkge1xuICByZXR1cm4gc29kaXVtLmNyeXB0b19ib3hfc2VhbChkYXRhLCBzb2RpdW0uZnJvbV9oZXgocmVjZWl2ZXJQdWJsaWNLZXkpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY3J5cHRBbm9ueW1vdXMoXG4gIGRhdGE6IFVpbnQ4QXJyYXksXG4gIHsgcHJpdmF0ZUtleSwgcHVibGljS2V5IH06IEtleVBhaXJcbik6IFVpbnQ4QXJyYXkge1xuICByZXR1cm4gc29kaXVtLmNyeXB0b19ib3hfc2VhbF9vcGVuKFxuICAgIGRhdGEsXG4gICAgc29kaXVtLmZyb21faGV4KHB1YmxpY0tleSksXG4gICAgc29kaXVtLmZyb21faGV4KHByaXZhdGVLZXkpXG4gICk7XG59XG4iXX0=
47
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb25jYXRlbmF0ZSIsInNvZGl1bSIsImVuY3J5cHRDcnlwdG9Cb3giLCJkYXRhIiwicHVibGljS2V5Qm9iIiwicHJpdmF0ZUtleUFsaWNlIiwibm9uY2UiLCJyYW5kb21ieXRlc19idWYiLCJjcnlwdG9fYm94X05PTkNFQllURVMiLCJjcnlwdCIsImNyeXB0b19ib3hfZWFzeSIsImZyb21faGV4IiwiZ2VuZXJhdGVDcnlwdG9Cb3hLZXlQYWlyIiwiY3J5cHRvX2JveF9rZXlwYWlyIiwiZGVjcnlwdENyeXB0b0JveCIsInB1YmxpY0tleUFsaWNlIiwicHJpdmF0ZUtleUJvYiIsImxlbmd0aCIsImNyeXB0b19ib3hfTUFDQllURVMiLCJzbGljZSIsImNpcGhlciIsImNyeXB0b19ib3hfb3Blbl9lYXN5IiwiZ2VuZXJhdGVTZWNyZXRCb3hLZXkiLCJjcnlwdG9fc2VjcmV0Ym94X0tFWUJZVEVTIiwiZW5jcnlwdFNlY3JldEJveCIsImtleSIsImNyeXB0b19zZWNyZXRib3hfTk9OQ0VCWVRFUyIsImNyeXB0b19zZWNyZXRib3hfZWFzeSIsImRlY3J5cHRTZWNyZXRCb3giLCJjcnlwdG9fc2VjcmV0Ym94X01BQ0JZVEVTIiwiY3J5cHRvX3NlY3JldGJveF9vcGVuX2Vhc3kiLCJlbmNyeXB0QW5vbnltb3VzIiwicmVjZWl2ZXJQdWJsaWNLZXkiLCJjcnlwdG9fYm94X3NlYWwiLCJkZWNyeXB0QW5vbnltb3VzIiwicHJpdmF0ZUtleSIsInB1YmxpY0tleSIsImNyeXB0b19ib3hfc2VhbF9vcGVuIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NyeXB0by9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb25jYXRlbmF0ZSB9IGZyb20gXCIuLi91dGlscy91dGlscy5qc1wiO1xuaW1wb3J0IHsgc29kaXVtIH0gZnJvbSBcIi4uL3NvZGl1bS5qc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEtleVBhaXIge1xuICBwdWJsaWNLZXk6IHN0cmluZztcbiAgcHJpdmF0ZUtleTogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5jcnlwdENyeXB0b0JveChcbiAgZGF0YTogVWludDhBcnJheSxcbiAgcHVibGljS2V5Qm9iOiBzdHJpbmcsXG4gIHByaXZhdGVLZXlBbGljZTogc3RyaW5nXG4pOiBVaW50OEFycmF5IHtcbiAgY29uc3Qgbm9uY2UgPSBzb2RpdW0ucmFuZG9tYnl0ZXNfYnVmKHNvZGl1bS5jcnlwdG9fYm94X05PTkNFQllURVMpO1xuICBjb25zdCBjcnlwdCA9IHNvZGl1bS5jcnlwdG9fYm94X2Vhc3koXG4gICAgZGF0YSxcbiAgICBub25jZSxcbiAgICBzb2RpdW0uZnJvbV9oZXgocHVibGljS2V5Qm9iKSxcbiAgICBzb2RpdW0uZnJvbV9oZXgocHJpdmF0ZUtleUFsaWNlKVxuICApO1xuICByZXR1cm4gY29uY2F0ZW5hdGUobm9uY2UsIGNyeXB0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlQ3J5cHRvQm94S2V5UGFpcigpOiBLZXlQYWlyIHtcbiAgcmV0dXJuIHNvZGl1bS5jcnlwdG9fYm94X2tleXBhaXIoXCJoZXhcIik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNyeXB0Q3J5cHRvQm94KFxuICBkYXRhOiBVaW50OEFycmF5LFxuICBwdWJsaWNLZXlBbGljZTogc3RyaW5nLFxuICBwcml2YXRlS2V5Qm9iOiBzdHJpbmdcbik6IFVpbnQ4QXJyYXkge1xuICBpZiAoZGF0YS5sZW5ndGggPCBzb2RpdW0uY3J5cHRvX2JveF9OT05DRUJZVEVTICsgc29kaXVtLmNyeXB0b19ib3hfTUFDQllURVMpIHtcbiAgICB0aHJvdyBcImRhdGEgdG9vIHNob3J0XCI7XG4gIH1cbiAgY29uc3Qgbm9uY2UgPSBkYXRhLnNsaWNlKDAsIHNvZGl1bS5jcnlwdG9fYm94X05PTkNFQllURVMpO1xuICBjb25zdCBjaXBoZXIgPSBkYXRhLnNsaWNlKHNvZGl1bS5jcnlwdG9fYm94X05PTkNFQllURVMpO1xuICByZXR1cm4gc29kaXVtLmNyeXB0b19ib3hfb3Blbl9lYXN5KFxuICAgIGNpcGhlcixcbiAgICBub25jZSxcbiAgICBzb2RpdW0uZnJvbV9oZXgocHVibGljS2V5QWxpY2UpLFxuICAgIHNvZGl1bS5mcm9tX2hleChwcml2YXRlS2V5Qm9iKVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVTZWNyZXRCb3hLZXkoKTogc3RyaW5nIHtcbiAgcmV0dXJuIHNvZGl1bS5yYW5kb21ieXRlc19idWYoc29kaXVtLmNyeXB0b19zZWNyZXRib3hfS0VZQllURVMsIFwiaGV4XCIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5jcnlwdFNlY3JldEJveChkYXRhOiBVaW50OEFycmF5LCBrZXk6IHN0cmluZyk6IFVpbnQ4QXJyYXkge1xuICBjb25zdCBub25jZSA9IHNvZGl1bS5yYW5kb21ieXRlc19idWYoc29kaXVtLmNyeXB0b19zZWNyZXRib3hfTk9OQ0VCWVRFUyk7XG4gIGNvbnN0IGNyeXB0ID0gc29kaXVtLmNyeXB0b19zZWNyZXRib3hfZWFzeShkYXRhLCBub25jZSwgc29kaXVtLmZyb21faGV4KGtleSkpO1xuICByZXR1cm4gY29uY2F0ZW5hdGUobm9uY2UsIGNyeXB0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY3J5cHRTZWNyZXRCb3goZGF0YTogVWludDhBcnJheSwga2V5OiBzdHJpbmcpOiBVaW50OEFycmF5IHtcbiAgaWYgKFxuICAgIGRhdGEubGVuZ3RoIDxcbiAgICBzb2RpdW0uY3J5cHRvX3NlY3JldGJveF9OT05DRUJZVEVTICsgc29kaXVtLmNyeXB0b19zZWNyZXRib3hfTUFDQllURVNcbiAgKSB7XG4gICAgdGhyb3cgXCJkYXRhIHRvbyBzaG9ydFwiO1xuICB9XG4gIGNvbnN0IG5vbmNlID0gZGF0YS5zbGljZSgwLCBzb2RpdW0uY3J5cHRvX3NlY3JldGJveF9OT05DRUJZVEVTKTtcbiAgY29uc3QgY2lwaGVyID0gZGF0YS5zbGljZShzb2RpdW0uY3J5cHRvX3NlY3JldGJveF9OT05DRUJZVEVTKTtcbiAgcmV0dXJuIHNvZGl1bS5jcnlwdG9fc2VjcmV0Ym94X29wZW5fZWFzeShjaXBoZXIsIG5vbmNlLCBzb2RpdW0uZnJvbV9oZXgoa2V5KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmNyeXB0QW5vbnltb3VzKFxuICBkYXRhOiBVaW50OEFycmF5LFxuICByZWNlaXZlclB1YmxpY0tleTogc3RyaW5nXG4pOiBVaW50OEFycmF5IHtcbiAgcmV0dXJuIHNvZGl1bS5jcnlwdG9fYm94X3NlYWwoZGF0YSwgc29kaXVtLmZyb21faGV4KHJlY2VpdmVyUHVibGljS2V5KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNyeXB0QW5vbnltb3VzKFxuICBkYXRhOiBVaW50OEFycmF5LFxuICB7IHByaXZhdGVLZXksIHB1YmxpY0tleSB9OiBLZXlQYWlyXG4pOiBVaW50OEFycmF5IHtcbiAgcmV0dXJuIHNvZGl1bS5jcnlwdG9fYm94X3NlYWxfb3BlbihcbiAgICBkYXRhLFxuICAgIHNvZGl1bS5mcm9tX2hleChwdWJsaWNLZXkpLFxuICAgIHNvZGl1bS5mcm9tX2hleChwcml2YXRlS2V5KVxuICApO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxXQUFULFFBQTRCLG1CQUE1QjtBQUNBLFNBQVNDLE1BQVQsUUFBdUIsY0FBdkI7QUFPQSxPQUFPLFNBQVNDLGdCQUFULENBQ0xDLElBREssRUFFTEMsWUFGSyxFQUdMQyxlQUhLLEVBSU87RUFDWixNQUFNQyxLQUFLLEdBQUdMLE1BQU0sQ0FBQ00sZUFBUCxDQUF1Qk4sTUFBTSxDQUFDTyxxQkFBOUIsQ0FBZDtFQUNBLE1BQU1DLEtBQUssR0FBR1IsTUFBTSxDQUFDUyxlQUFQLENBQ1pQLElBRFksRUFFWkcsS0FGWSxFQUdaTCxNQUFNLENBQUNVLFFBQVAsQ0FBZ0JQLFlBQWhCLENBSFksRUFJWkgsTUFBTSxDQUFDVSxRQUFQLENBQWdCTixlQUFoQixDQUpZLENBQWQ7RUFNQSxPQUFPTCxXQUFXLENBQUNNLEtBQUQsRUFBUUcsS0FBUixDQUFsQjtBQUNEO0FB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
package/dist/error.js CHANGED
@@ -1,3 +1,3 @@
1
1
  export {};
2
2
  export {};
3
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbXX0=
3
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2Vycm9yLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEVycm9yVHlwZSA9XG4gIHwgXCJFcnJvclVwZ3JhZGVQbGFuXCJcbiAgfCBcIkVycm9yTm90Rm91bmRcIlxuICB8IFwiRXJyb3JOb3RFeGlzdFwiXG4gIHwgXCJFcnJvckFjY2Vzc0RlbmllZFwiXG4gIHwgXCJFcnJvckxhbmdOb3RFeGlzdFwiXG4gIHwgXCJFcnJvckxpbWl0XCJcbiAgfCBcIkVycm9yQmFzaWNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBFcnJvckJhc2Uge1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIF9fdHlwZW5hbWU6IEVycm9yVHlwZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFcnJvclVwZ3JhZGVQbGFuIGV4dGVuZHMgRXJyb3JCYXNlIHtcbiAgX190eXBlbmFtZTogXCJFcnJvclVwZ3JhZGVQbGFuXCI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXJyb3JOb3RGb3VuZCBleHRlbmRzIEVycm9yQmFzZSB7XG4gIF9fdHlwZW5hbWU6IFwiRXJyb3JOb3RGb3VuZFwiO1xuICBmaWVsZD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFcnJvck5vdEV4aXN0IGV4dGVuZHMgRXJyb3JCYXNlIHtcbiAgX190eXBlbmFtZTogXCJFcnJvck5vdEV4aXN0XCI7XG4gIGZpZWxkPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVycm9yQWNjZXNzRGVuaWVkIGV4dGVuZHMgRXJyb3JCYXNlIHtcbiAgX190eXBlbmFtZTogXCJFcnJvckFjY2Vzc0RlbmllZFwiO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVycm9yTGFuZ05vdEV4aXN0IGV4dGVuZHMgRXJyb3JCYXNlIHtcbiAgX190eXBlbmFtZTogXCJFcnJvckxhbmdOb3RFeGlzdFwiO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVycm9yTGltaXQgZXh0ZW5kcyBFcnJvckJhc2Uge1xuICBfX3R5cGVuYW1lOiBcIkVycm9yTGltaXRcIjtcbiAgZmllbGQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXJyb3JCYXNpYyBleHRlbmRzIEVycm9yQmFzZSB7XG4gIF9fdHlwZW5hbWU6IFwiRXJyb3JCYXNpY1wiO1xufVxuXG5leHBvcnQgdHlwZSBTZWNyZWN5RXJyb3IgPVxuICB8IEVycm9yVXBncmFkZVBsYW5cbiAgfCBFcnJvck5vdEZvdW5kXG4gIHwgRXJyb3JOb3RFeGlzdFxuICB8IEVycm9yQWNjZXNzRGVuaWVkXG4gIHwgRXJyb3JMYW5nTm90RXhpc3RcbiAgfCBFcnJvckxpbWl0XG4gIHwgRXJyb3JCYXNpYztcbiJdLCJtYXBwaW5ncyI6IiJ9
package/dist/index.d.ts CHANGED
@@ -4,8 +4,7 @@ export * from "./crypto/index.js";
4
4
  export type { Progress } from "./crypto/file.js";
5
5
  export type { User, QueryLimits, DownloadProgress, UserData, FolderSize, MailLimitsValues, CloudLimits, FaqItem, BlogItem, SecrecyPlansCodes, Limits, MailLimits, Plan, PaymentInfos, Subscription, RecurlyInvoices, SubscriptionCollectionMethod, SubscriptionState, SendReport, PayInput, SuccessResponse } from "./BaseClient.js";
6
6
  export { BaseClient, isValidPlan } from "./BaseClient.js";
7
- export type { File, Folder, FolderFull, VFile, FolderBreadcrumbItem, VFileWithFolder, SecrecyUserApp, BaseMail, ReceivedMail, SentMail, PublicUser, UserAppSettings, UserAppNotifications, Session, UserSession, AppSession, MailFile, MailIntegrity, DraftMail, Mail, WaitingReceivedMail, MailRecipientInput } from "./client/types/index.js";
8
- export { isFolder, isVFile } from "./client/types/index.js";
7
+ export type { FileMetadata, SecrecyUserApp, BaseMail, ReceivedMail, SentMail, PublicUser, UserAppSettings, UserAppNotifications, Session, UserSession, AppSession, MailFile, MailIntegrity, DraftMail, Mail, WaitingReceivedMail, MailRecipientInput } from "./client/types/index.js";
9
8
  export * from "./client/helpers.js";
10
9
  export * from "./sodium.js";
11
10
  export * from "./utils/store-buddy.js";
package/dist/index.js CHANGED
@@ -2,41 +2,9 @@ export * from "./client/index.js";
2
2
  export * from "./client/admin/index.js";
3
3
  export * from "./crypto/index.js";
4
4
  export { BaseClient, isValidPlan } from "./BaseClient.js";
5
- export { isFolder, isVFile } from "./client/types/index.js";
6
5
  export * from "./client/helpers.js";
7
6
  export * from "./sodium.js";
8
7
  export * from "./utils/store-buddy.js";
9
8
  export { Lang, FileContentType, MailType, PlanKind, Rights, PayInputType, UserRole } from "./zeus/index.js";
10
- export * from "./error.js"; // import type { ValueTypes, InputType, GraphQLTypes } from "./zeus/index.js";
11
- // /*---------------------------------------------------------------------*/
12
- // /* Constant Generic Types */
13
- // type OperationType<T, Operation extends keyof ValueTypes> =
14
- // | T
15
- // | ValueTypes[Operation];
16
- // type OperationInputType<T, Operation extends keyof ValueTypes> = InputType<
17
- // GraphQLTypes[Operation],
18
- // T
19
- // >;
20
- // /*---------------------------------------------------------------------*/
21
- // /* User Specific Types */
22
- // type QueryRoot = "Query";
23
- // // type MutationRoot = "Mutation";
24
- // // type SubscriptionRoot = "Subscription";
25
- // /*---------------------------------------------------------------------*/
26
- // /* Type Aliases */
27
- // type Query<Z> = OperationType<Z, QueryRoot>;
28
- // // type Mutation<Z> = OperationType<Z, MutationRoot>;
29
- // // type Subscription<Z> = OperationType<Z, SubscriptionRoot>;
30
- // type QueryInput<Z> = OperationInputType<Z, QueryRoot>;
31
- // // type MutationInput<Z> = OperationInputType<Z, MutationRoot>;
32
- // // type SubscriptionInput<Z> = OperationInputType<Z, SubscriptionRoot>;
33
- // declare function testFn<Z>(query: Query<Z>): QueryInput<Z>;
34
- // const ok = testFn({ file: [{ id: "COUCOU" }, { md5: true }] });
35
- // import type { InputType, GraphQLTypes } from "./zeus/index.js";
36
- // import { Selectors } from "./zeus/index.js";
37
- // export const query = Selectors.query({
38
- // limits: { cloud: { count: true } }
39
- // });
40
- // type InferredResponseType = InputType<typeof query, GraphQLTypes["Query"]>;
41
- // declare const test: InferredResponseType;
42
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6WyJCYXNlQ2xpZW50IiwiaXNWYWxpZFBsYW4iLCJpc0ZvbGRlciIsImlzVkZpbGUiLCJMYW5nIiwiRmlsZUNvbnRlbnRUeXBlIiwiTWFpbFR5cGUiLCJQbGFuS2luZCIsIlJpZ2h0cyIsIlBheUlucHV0VHlwZSIsIlVzZXJSb2xlIl0sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFkO0FBQ0EsY0FBYyx5QkFBZDtBQUNBLGNBQWMsbUJBQWQ7QUF5QkEsU0FBU0EsVUFBVCxFQUFxQkMsV0FBckIsUUFBd0MsaUJBQXhDO0FBeUJBLFNBQVNDLFFBQVQsRUFBbUJDLE9BQW5CLFFBQWtDLHlCQUFsQztBQUNBLGNBQWMscUJBQWQ7QUFDQSxjQUFjLGFBQWQ7QUFDQSxjQUFjLHdCQUFkO0FBQ0EsU0FDRUMsSUFERixFQUVFQyxlQUZGLEVBR0VDLFFBSEYsRUFJRUMsUUFKRixFQUtFQyxNQUxGLEVBTUVDLFlBTkYsRUFPRUMsUUFQRixRQVFPLGlCQVJQO0FBVUEsY0FBYyxZQUFkLEMsQ0FFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUVBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vY2xpZW50L2luZGV4LmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jbGllbnQvYWRtaW4vaW5kZXguanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NyeXB0by9pbmRleC5qc1wiO1xuZXhwb3J0IHR5cGUgeyBQcm9ncmVzcyB9IGZyb20gXCIuL2NyeXB0by9maWxlLmpzXCI7XG5leHBvcnQgdHlwZSB7XG4gIFVzZXIsXG4gIFF1ZXJ5TGltaXRzLFxuICBEb3dubG9hZFByb2dyZXNzLFxuICBVc2VyRGF0YSxcbiAgRm9sZGVyU2l6ZSxcbiAgTWFpbExpbWl0c1ZhbHVlcyxcbiAgQ2xvdWRMaW1pdHMsXG4gIEZhcUl0ZW0sXG4gIEJsb2dJdGVtLFxuICBTZWNyZWN5UGxhbnNDb2RlcyxcbiAgTGltaXRzLFxuICBNYWlsTGltaXRzLFxuICBQbGFuLFxuICBQYXltZW50SW5mb3MsXG4gIFN1YnNjcmlwdGlvbixcbiAgUmVjdXJseUludm9pY2VzLFxuICBTdWJzY3JpcHRpb25Db2xsZWN0aW9uTWV0aG9kLFxuICBTdWJzY3JpcHRpb25TdGF0ZSxcbiAgU2VuZFJlcG9ydCxcbiAgUGF5SW5wdXQsXG4gIFN1Y2Nlc3NSZXNwb25zZVxufSBmcm9tIFwiLi9CYXNlQ2xpZW50LmpzXCI7XG5leHBvcnQgeyBCYXNlQ2xpZW50LCBpc1ZhbGlkUGxhbiB9IGZyb20gXCIuL0Jhc2VDbGllbnQuanNcIjtcbmV4cG9ydCB0eXBlIHtcbiAgRmlsZSxcbiAgRm9sZGVyLFxuICBGb2xkZXJGdWxsLFxuICBWRmlsZSxcbiAgRm9sZGVyQnJlYWRjcnVtYkl0ZW0sXG4gIFZGaWxlV2l0aEZvbGRlcixcbiAgU2VjcmVjeVVzZXJBcHAsXG4gIEJhc2VNYWlsLFxuICBSZWNlaXZlZE1haWwsXG4gIFNlbnRNYWlsLFxuICBQdWJsaWNVc2VyLFxuICBVc2VyQXBwU2V0dGluZ3MsXG4gIFVzZXJBcHBOb3RpZmljYXRpb25zLFxuICBTZXNzaW9uLFxuICBVc2VyU2Vzc2lvbixcbiAgQXBwU2Vzc2lvbixcbiAgTWFpbEZpbGUsXG4gIE1haWxJbnRlZ3JpdHksXG4gIERyYWZ0TWFpbCxcbiAgTWFpbCxcbiAgV2FpdGluZ1JlY2VpdmVkTWFpbCxcbiAgTWFpbFJlY2lwaWVudElucHV0XG59IGZyb20gXCIuL2NsaWVudC90eXBlcy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgaXNGb2xkZXIsIGlzVkZpbGUgfSBmcm9tIFwiLi9jbGllbnQvdHlwZXMvaW5kZXguanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NsaWVudC9oZWxwZXJzLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zb2RpdW0uanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3V0aWxzL3N0b3JlLWJ1ZGR5LmpzXCI7XG5leHBvcnQge1xuICBMYW5nLFxuICBGaWxlQ29udGVudFR5cGUsXG4gIE1haWxUeXBlLFxuICBQbGFuS2luZCxcbiAgUmlnaHRzLFxuICBQYXlJbnB1dFR5cGUsXG4gIFVzZXJSb2xlXG59IGZyb20gXCIuL3pldXMvaW5kZXguanNcIjtcblxuZXhwb3J0ICogZnJvbSBcIi4vZXJyb3IuanNcIjtcblxuLy8gaW1wb3J0IHR5cGUgeyBWYWx1ZVR5cGVzLCBJbnB1dFR5cGUsIEdyYXBoUUxUeXBlcyB9IGZyb20gXCIuL3pldXMvaW5kZXguanNcIjtcblxuLy8gLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLy8gLyogQ29uc3RhbnQgR2VuZXJpYyBUeXBlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLy8gdHlwZSBPcGVyYXRpb25UeXBlPFQsIE9wZXJhdGlvbiBleHRlbmRzIGtleW9mIFZhbHVlVHlwZXM+ID1cbi8vICAgfCBUXG4vLyAgIHwgVmFsdWVUeXBlc1tPcGVyYXRpb25dO1xuLy8gdHlwZSBPcGVyYXRpb25JbnB1dFR5cGU8VCwgT3BlcmF0aW9uIGV4dGVuZHMga2V5b2YgVmFsdWVUeXBlcz4gPSBJbnB1dFR5cGU8XG4vLyAgIEdyYXBoUUxUeXBlc1tPcGVyYXRpb25dLFxuLy8gICBUXG4vLyA+O1xuXG4vLyAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vLyAvKiBVc2VyIFNwZWNpZmljIFR5cGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vLyB0eXBlIFF1ZXJ5Um9vdCA9IFwiUXVlcnlcIjtcbi8vIC8vIHR5cGUgTXV0YXRpb25Sb290ID0gXCJNdXRhdGlvblwiO1xuLy8gLy8gdHlwZSBTdWJzY3JpcHRpb25Sb290ID0gXCJTdWJzY3JpcHRpb25cIjtcblxuLy8gLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLy8gLyogVHlwZSBBbGlhc2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLy8gdHlwZSBRdWVyeTxaPiA9IE9wZXJhdGlvblR5cGU8WiwgUXVlcnlSb290Pjtcbi8vIC8vIHR5cGUgTXV0YXRpb248Wj4gPSBPcGVyYXRpb25UeXBlPFosIE11dGF0aW9uUm9vdD47XG4vLyAvLyB0eXBlIFN1YnNjcmlwdGlvbjxaPiA9IE9wZXJhdGlvblR5cGU8WiwgU3Vic2NyaXB0aW9uUm9vdD47XG5cbi8vIHR5cGUgUXVlcnlJbnB1dDxaPiA9IE9wZXJhdGlvbklucHV0VHlwZTxaLCBRdWVyeVJvb3Q+O1xuLy8gLy8gdHlwZSBNdXRhdGlvbklucHV0PFo+ID0gT3BlcmF0aW9uSW5wdXRUeXBlPFosIE11dGF0aW9uUm9vdD47XG4vLyAvLyB0eXBlIFN1YnNjcmlwdGlvbklucHV0PFo+ID0gT3BlcmF0aW9uSW5wdXRUeXBlPFosIFN1YnNjcmlwdGlvblJvb3Q+O1xuXG4vLyBkZWNsYXJlIGZ1bmN0aW9uIHRlc3RGbjxaPihxdWVyeTogUXVlcnk8Wj4pOiBRdWVyeUlucHV0PFo+O1xuXG4vLyBjb25zdCBvayA9IHRlc3RGbih7IGZpbGU6IFt7IGlkOiBcIkNPVUNPVVwiIH0sIHsgbWQ1OiB0cnVlIH1dIH0pO1xuXG4vLyBpbXBvcnQgdHlwZSB7IElucHV0VHlwZSwgR3JhcGhRTFR5cGVzIH0gZnJvbSBcIi4vemV1cy9pbmRleC5qc1wiO1xuLy8gaW1wb3J0IHsgU2VsZWN0b3JzIH0gZnJvbSBcIi4vemV1cy9pbmRleC5qc1wiO1xuXG4vLyBleHBvcnQgY29uc3QgcXVlcnkgPSBTZWxlY3RvcnMucXVlcnkoe1xuLy8gICBsaW1pdHM6IHsgY2xvdWQ6IHsgY291bnQ6IHRydWUgfSB9XG4vLyB9KTtcblxuLy8gdHlwZSBJbmZlcnJlZFJlc3BvbnNlVHlwZSA9IElucHV0VHlwZTx0eXBlb2YgcXVlcnksIEdyYXBoUUxUeXBlc1tcIlF1ZXJ5XCJdPjtcblxuLy8gZGVjbGFyZSBjb25zdCB0ZXN0OiBJbmZlcnJlZFJlc3BvbnNlVHlwZTtcbiJdfQ==
9
+ export * from "./error.js";
10
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCYXNlQ2xpZW50IiwiaXNWYWxpZFBsYW4iLCJMYW5nIiwiRmlsZUNvbnRlbnRUeXBlIiwiTWFpbFR5cGUiLCJQbGFuS2luZCIsIlJpZ2h0cyIsIlBheUlucHV0VHlwZSIsIlVzZXJSb2xlIl0sInNvdXJjZXMiOlsiLi4vc3JjL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2NsaWVudC9pbmRleC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vY2xpZW50L2FkbWluL2luZGV4LmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jcnlwdG8vaW5kZXguanNcIjtcbmV4cG9ydCB0eXBlIHsgUHJvZ3Jlc3MgfSBmcm9tIFwiLi9jcnlwdG8vZmlsZS5qc1wiO1xuZXhwb3J0IHR5cGUge1xuICBVc2VyLFxuICBRdWVyeUxpbWl0cyxcbiAgRG93bmxvYWRQcm9ncmVzcyxcbiAgVXNlckRhdGEsXG4gIEZvbGRlclNpemUsXG4gIE1haWxMaW1pdHNWYWx1ZXMsXG4gIENsb3VkTGltaXRzLFxuICBGYXFJdGVtLFxuICBCbG9nSXRlbSxcbiAgU2VjcmVjeVBsYW5zQ29kZXMsXG4gIExpbWl0cyxcbiAgTWFpbExpbWl0cyxcbiAgUGxhbixcbiAgUGF5bWVudEluZm9zLFxuICBTdWJzY3JpcHRpb24sXG4gIFJlY3VybHlJbnZvaWNlcyxcbiAgU3Vic2NyaXB0aW9uQ29sbGVjdGlvbk1ldGhvZCxcbiAgU3Vic2NyaXB0aW9uU3RhdGUsXG4gIFNlbmRSZXBvcnQsXG4gIFBheUlucHV0LFxuICBTdWNjZXNzUmVzcG9uc2Vcbn0gZnJvbSBcIi4vQmFzZUNsaWVudC5qc1wiO1xuZXhwb3J0IHsgQmFzZUNsaWVudCwgaXNWYWxpZFBsYW4gfSBmcm9tIFwiLi9CYXNlQ2xpZW50LmpzXCI7XG5leHBvcnQgdHlwZSB7XG4gIEZpbGVNZXRhZGF0YSxcbiAgU2VjcmVjeVVzZXJBcHAsXG4gIEJhc2VNYWlsLFxuICBSZWNlaXZlZE1haWwsXG4gIFNlbnRNYWlsLFxuICBQdWJsaWNVc2VyLFxuICBVc2VyQXBwU2V0dGluZ3MsXG4gIFVzZXJBcHBOb3RpZmljYXRpb25zLFxuICBTZXNzaW9uLFxuICBVc2VyU2Vzc2lvbixcbiAgQXBwU2Vzc2lvbixcbiAgTWFpbEZpbGUsXG4gIE1haWxJbnRlZ3JpdHksXG4gIERyYWZ0TWFpbCxcbiAgTWFpbCxcbiAgV2FpdGluZ1JlY2VpdmVkTWFpbCxcbiAgTWFpbFJlY2lwaWVudElucHV0XG59IGZyb20gXCIuL2NsaWVudC90eXBlcy9pbmRleC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vY2xpZW50L2hlbHBlcnMuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NvZGl1bS5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXRpbHMvc3RvcmUtYnVkZHkuanNcIjtcbmV4cG9ydCB7XG4gIExhbmcsXG4gIEZpbGVDb250ZW50VHlwZSxcbiAgTWFpbFR5cGUsXG4gIFBsYW5LaW5kLFxuICBSaWdodHMsXG4gIFBheUlucHV0VHlwZSxcbiAgVXNlclJvbGVcbn0gZnJvbSBcIi4vemV1cy9pbmRleC5qc1wiO1xuXG5leHBvcnQgKiBmcm9tIFwiLi9lcnJvci5qc1wiO1xuIl0sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFkO0FBQ0EsY0FBYyx5QkFBZDtBQUNBLGNBQWMsbUJBQWQ7QUF5QkEsU0FBU0EsVUFBVCxFQUFxQkMsV0FBckIsUUFBd0MsaUJBQXhDO0FBb0JBLGNBQWMscUJBQWQ7QUFDQSxjQUFjLGFBQWQ7QUFDQSxjQUFjLHdCQUFkO0FBQ0EsU0FDRUMsSUFERixFQUVFQyxlQUZGLEVBR0VDLFFBSEYsRUFJRUMsUUFKRixFQUtFQyxNQUxGLEVBTUVDLFlBTkYsRUFPRUMsUUFQRixRQVFPLGlCQVJQO0FBVUEsY0FBYyxZQUFkIn0=