smol-string 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,18 @@
1
+ import { defineConfig, mergeConfig } from "vitest/config";
2
+ import viteConfig from "./vite.config";
3
+
4
+ // Config for tests ran only in browsers.
5
+ // Currently use to tests that interacts with localStorage.
6
+
7
+ export default mergeConfig(
8
+ viteConfig,
9
+ defineConfig({
10
+ test: {
11
+ browser: {
12
+ enabled: true,
13
+ name: "chrome",
14
+ },
15
+ include: ["test/*.test.ts", "test/*.test.browser.ts"],
16
+ },
17
+ })
18
+ );
@@ -0,0 +1,8 @@
1
+ export declare function copyToWasmBuffer(str: string, exports: {
2
+ allocUint8: (size: number) => number;
3
+ memory: any;
4
+ }): {
5
+ ptr: number;
6
+ length: number;
7
+ };
8
+ export declare function Uint16ArraytoString(buf: Uint16Array): string;
@@ -0,0 +1,2 @@
1
+ export declare function compressPacked(str: string): string;
2
+ export declare function decompressPacked(compressedStr: string): string;
@@ -0,0 +1,42 @@
1
+ import { i as w, c as k, U as h } from "./wasm-helper-6790be72.js";
2
+ const a = (I) => w(I, "data:application/wasm;base64,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IBItAARFDQQgEigCACEPCyAOQXRqKAIAIA9BAnRqIQ0LIA0gCTsBACANQQJqIAlBgIA8cUEQdjoAAAJAAkAgDA0AIAstAAAhDQwBCyACQfAAaiACQTBqIAsgDEEBahCNgICAACACLwFwIAItAHJBEHRyIQ0LIAJByABqIA0Qh4CAgABB//8DcQ0BIAogDGpBAWohCiAJQQFqIglB//8/cUH//z9HDQAgDkEAIA5BfGooAgAiDBCkgICAABogAkEANgI0IAIgDK1C0AB+QuQAgD4COCACQcgAakH//z8Qh4CAgABB//8DcQ0BIAJBADYCYCACQQk6AGRBgAIhCQwACwsgAkEwahCLgICAAAwBCyACQTBqEIuAgIAAC0EAIRALIAJB8AFqJICAgIAAIBALPwEBfyOAgICAAEEQayIBJICAgIAAIAEgACkCDDcDCCABQQhqIAAoAgAgACgCCBCSgICAACABQRBqJICAgIAACzcBAX8CQCACQQF0QQAgAhsiA0UNACAAKAIAIAFBAiACGyADQQFBACAAKAIEKAIIEYGAgIAAAAsLPwEBfyOAgICAAEEQayIBJICAgIAAIAEgACkCDDcDCCABQQhqIAAoAgAgACgCCBCUgICAACABQRBqJICAgIAACzcBAX8CQCACQQN0QQAgAhsiA0UNACAAKAIAIAFBBCACGyADQQJBACAAKAIEKAIIEYGAgIAAAAsL3wsDAX8Bfgt/I4CAgIAAQdAAayIDJICAgIAAIANBADYCPCADQqrVqtUKNwI0IAMjgYCAgABBmIDAgABqKQMAIgQ3AkACQAJAAkACQCACDQBBqtWq1XohBUEAIQYMAQtBqtWq1XohBSACIQYgA0HAAGoiB0Gq1arVekEAIAIQloCAgABBAXENACADQSBqIAcgAhCXgICAACADLwEoDQEgAygCJCEGIAMoAiAhBQtBCSEIQQAhCUEAIQpBACELQQAhDANAAkACQAJAAkAgDCACRg0AIAhB/wFxIgdBFEkNAQwDCyADIAQ3A0gCQAJAIANByABqIAUgBiACEJaAgIAAQQFxRQ0AIAUhCAwBCyADQTRqIANByABqIAIQl4CAgAAgAy8BPA0FIAMoAjQiCCAFIAMoAjgiAkECdBClgICAABogAyAENwMgIANBIGogBSAGEJiAgIAACyADQQA2AiggA0Kq1arV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AkAgAUGBgHxPDQACQCOBgICAAEGogMCAAGogAUH//wNqQRB2IgEgAhCcgICAACIEQX9HDQACQCOBgICAAEGggMCAAGogASACEJyAgIAAIgRBf0YNACAEQYAQaiEEDAELQQAhBEEBIAJ0IgU/ACIGQRB0IgJqQX9qQQAgBWtxIgUgAmtBEHYiByABakAAQQFIDQEgByAGaiEEIAUgAkYNACAGIAQQnoCAgAALIARBEHQhBAsgBAtPAQF/AkAgAkH//wNqIgZBgIB8cSAETyICRQ0AIARB//8DakEQdiIEIAZBEHYiBkYNACAEIAFB//8DakEQdiIBaiABIAZqEJ6AgIAACyACCyEAIAFB//8DakEQdiIBIAEgAkH//wNqQRB2ahCegICAAAt1AQF+IAAgBCABfiACIAN+fCADQiCIIgIgAUIgiCIEfnwgA0L/////D4MiAyABQv////8PgyIBfiIFQiCIIAMgBH58IgNCIIh8IANC/////w+DIAIgAX58IgFCIIh8NwMIIAAgAUIghiAFQv////8Pg4Q3AwALLAEBfwJAIAJFDQAgACEDA0AgAyABOgAAIANBAWohAyACQX9qIgINAAsLIAALQgEBfwJAIAJFDQAgAkF/aiECIAAhAwNAIAMgAS0AADoAACACRQ0BIAJBf2ohAiABQQFqIQEgA0EBaiEDDAALCyAACwtBAgBBgIDAAAsIAAAAAAAAAAAAQYiAwAALKAEAAAACAAAAAwAAAAAAAAAAAAAACAAQAKqqqqoAAAAAMAAQABAAAAA="), N = await a(), A = N.exports;
3
+ function F(I) {
4
+ const { ptr: E, length: g } = k(I, A), Q = A.compressPacked(E, g);
5
+ A.free(E, g);
6
+ const C = new Uint16Array(
7
+ A.memory.buffer.slice(
8
+ Q,
9
+ Q + (A.memory.buffer.byteLength - Q)
10
+ )
11
+ ), B = (C.at(0) << 16) + C.at(1), D = C.slice(2, B), o = h(D);
12
+ return A.free(Q, B), o;
13
+ }
14
+ function y(I) {
15
+ const E = (I.charCodeAt(0) << 16) + I.charCodeAt(1);
16
+ let g = A.allocUint16(I.length - 2), Q = new Uint16Array(
17
+ A.memory.buffer,
18
+ g,
19
+ I.length - 2
20
+ );
21
+ for (let i = 2; i < I.length; i++)
22
+ Q[i - 2] = I.charCodeAt(i);
23
+ const C = A.decompressPacked(
24
+ g,
25
+ I.length,
26
+ E
27
+ );
28
+ A.free(g, I.length);
29
+ const B = new Uint8Array(
30
+ A.memory.buffer.slice(
31
+ C,
32
+ C + (A.memory.buffer.byteLength - C)
33
+ )
34
+ ), D = B.indexOf(0), o = new TextDecoder().decode(
35
+ B.slice(0, D)
36
+ );
37
+ return A.free(C, D + 1), o;
38
+ }
39
+ export {
40
+ F as compressPacked,
41
+ y as decompressPacked
42
+ };
@@ -0,0 +1,2 @@
1
+ export declare function compress(data: string): Promise<unknown>;
2
+ export declare function decompress(data: string): Promise<unknown>;
@@ -0,0 +1,37 @@
1
+ const l = "ZnVuY3Rpb24gYShJLCBRKSB7CiAgY29uc3QgQSA9IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShJKSwgZyA9IFEuYWxsb2NVaW50OChBLmxlbmd0aCArIDEpLCBDID0gbmV3IFVpbnQ4QXJyYXkoCiAgICBRLm1lbW9yeS5idWZmZXIsCiAgICBnLAogICAgQS5sZW5ndGggKyAxCiAgKTsKICByZXR1cm4gQy5zZXQoQSksIENbQS5sZW5ndGhdID0gMCwgeyBwdHI6IGcsIGxlbmd0aDogQS5sZW5ndGggKyAxIH07Cn0KZnVuY3Rpb24gdChJKSB7CiAgY29uc3QgUSA9IG5ldyBBcnJheShJLmxlbmd0aCk7CiAgZm9yIChsZXQgQSA9IDA7IEEgPCBJLmxlbmd0aDsgQSsrKQogICAgUVtBXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoSVtBXSk7CiAgcmV0dXJuIFEuam9pbigiIik7Cn0KdmFyIHcgPSBhc3luYyAoSSA9IHt9LCBRKSA9PiB7CiAgbGV0IEE7CiAgaWYgKFEuc3RhcnRzV2l0aCgiZGF0YToiKSkgewogICAgY29uc3QgZyA9IFEucmVwbGFjZSgvXmRhdGE6Lio/YmFzZTY0LC8sICIiKTsKICAgIGxldCBDOwogICAgaWYgKHR5cGVvZiBCdWZmZXIgPT0gImZ1bmN0aW9uIiAmJiB0eXBlb2YgQnVmZmVyLmZyb20gPT0gImZ1bmN0aW9uIikKICAgICAgQyA9IEJ1ZmZlci5mcm9tKGcsICJiYXNlNjQiKTsKICAgIGVsc2UgaWYgKHR5cGVvZiBhdG9iID09ICJmdW5jdGlvbiIpIHsKICAgICAgY29uc3QgRSA9IGF0b2IoZyk7CiAgICAgIEMgPSBuZXcgVWludDhBcnJheShFLmxlbmd0aCk7CiAgICAgIGZvciAobGV0IEQgPSAwOyBEIDwgRS5sZW5ndGg7IEQrKykKICAgICAgICBDW0RdID0gRS5jaGFyQ29kZUF0KEQpOwogICAgfSBlbHNlCiAgICAgIHRocm93IG5ldyBFcnJvcigiRmFpbGVkIHRvIGRlY29kZSBiYXNlNjQtZW5jb2RlZCBkYXRhIFVSTCwgQnVmZmVyIGFuZCBhdG9iIGFyZSBub3Qgc3VwcG9ydGVkIik7CiAgICBBID0gYXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoQywgSSk7CiAgfSBlbHNlIHsKICAgIGNvbnN0IGcgPSBhd2FpdCBmZXRjaChRKSwgQyA9IGcuaGVhZGVycy5nZXQoIkNvbnRlbnQtVHlwZSIpIHx8ICIiOwogICAgaWYgKCJpbnN0YW50aWF0ZVN0cmVhbWluZyIgaW4gV2ViQXNzZW1ibHkgJiYgQy5zdGFydHNXaXRoKCJhcHBsaWNhdGlvbi93YXNtIikpCiAgICAgIEEgPSBhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZyhnLCBJKTsKICAgIGVsc2UgewogICAgICBjb25zdCBFID0gYXdhaXQgZy5hcnJheUJ1ZmZlcigpOwogICAgICBBID0gYXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoRSwgSSk7CiAgICB9CiAgfQogIHJldHVybiBBLmluc3RhbmNlOwp9LCBoID0gKEkpID0+IHcoSSwgImRhdGE6YXBwbGljYXRpb24vd2FzbTtiYXNlNjQsQUdGemJRRUFBQUFCVVF4Z0JIOS9mMzhCZjJBRmYzOS9mMzhBWUFaL2YzOS9mMzhCZjJBQmZ3Ri9ZQU4vZjM4QVlBSi9md0JnQW45L0FYOWdBWDhBWUFSL2YzOS9BR0FDZjM4QmZtQURmMzkvQVg5Z0JYOStmbjUrQUFNbkpnTUVBd1FFQlFRR0F3WUdCd1VJQ1FBR0J3UUhCQW9BQkFRR0FBUUtDQVVFQUFJQkN3b0tCQVVCY0FFRUJBVURBUUFSQmc0Q2Z3RkJnSURBQUF0L0FFRUFDd2RRQmdadFpXMXZjbmtDQUFwaGJHeHZZMVZwYm5RNEFBQUxZV3hzYjJOVmFXNTBNVFlBQWdSbWNtVmxBQVVPWTI5dGNISmxjM05RWVdOclpXUUFFQkJrWldOdmJYQnlaWE56VUdGamEyVmtBQlVKQ1FFQVFRRUxBeUFoSWdxMlNDWmVBUUYvSTRDQWdJQUFRUkJySWdFa2dJQ0FnQUFnQVNPQmdJQ0FBRUdZZ01DQUFHb3BBd0EzQXdBZ0FVRUlhaUFCSUFBUWdZQ0FnQUFDUUNBQkx3RU1EUUFnQVNnQ0NDRUFJQUZCRUdva2dJQ0FnQUFnQUE4TEEzOEFEQUFMQzNFQ0FYOEJmaU9BZ0lDQUFFRVFheUlESklDQWdJQUFRb0NBZ0lBUUlRUUNRRUVCUlEwQUFrQWdBZzBBUXYvLy8vOFBJUVFNQVFzZ0FTZ0NBQ0FDUVFCQkFDQUJLQUlFS0FJQUVZQ0FnSUFBQUNJQ1JhMUNJSVlnQXEyRUlRUUxJQUFnQkRjQ0FDQURRUkJxSklDQWdJQUFDMVFCQVg4amdJQ0FnQUJCRUdzaUFTU0FnSUNBQUNBQlFRUnFJNEdBZ0lBQVFaaUF3SUFBYWlBQUVJT0FnSUFBQWtBZ0FTOEJEQTBBSUFFb0FnUWhBQ0FCUVJCcUpJQ0FnSUFBSUFBUEN3Ti9BQXdBQ3d1VkFRRUJmeU9BZ0lDQUFFRXdheUlESklDQWdJQUFJQU1nQVNrQ0FEY0RDQ0FEUVJCcUlBTkJDR29nQWhDRWdJQ0FBQUpBQWtBZ0F5OEJGQ0lCUlEwQUlBTWdBVHNCSUNBRFFSaHFJUUlNQVFzZ0EwRUFPd0VzSUFNZ0FqWUNLQ0FESUFNb0FoQTJBaVFnQTBFa2FpRUNDeUFBSUFJcEFnQTNBZ0FnQUVFSWFpQUNRUWhxS0FJQU5nSUFJQU5CTUdva2dJQ0FnQUFMaHdFQ0FYOEJmaU9BZ0lDQUFFRVFheUlESklDQWdJQUFJQU1nQWtFQVNEb0FEQUpBQWtBZ0FrRi9TZzBBUW9DQWdJQVFJUVFNQVFzQ1FDQUNRUUYwSWdJTkFFTCsvLy8vRHlFRURBRUxJQUVvQWdBZ0FrRUJRUUFnQVNnQ0JDZ0NBQkdBZ0lDQUFBQWlBa1d0UWlDR0lBS3RoQ0VFQ3lBQUlBUTNBZ0FnQTBFUWFpU0FnSUNBQUFzWkFDT0JnSUNBQUVHWWdNQ0FBR29nQUNBQkVJYUFnSUFBQ3pnQkFYOENRQ0FDUVFBZ0Foc2lBMFVOQUNBQUtBSUFJQUZCcXRXcTFYb2dBaHNnQTBFQVFRQWdBQ2dDQkNnQ0NCR0JnSUNBQUFBTEM4QUNBUVIvQWtBZ0FDMEFIQ0lDUVJSUERRQWdBQ2dDR0VHQUFtb2dBaENJZ0lDQUFFRi9ha2tOQUNBQUlBSkJBV29pQWpvQUhBc0NRQUpBQTBBZ0FrSC9BWEVpQTBVTkFTQUFLQUlFSVFRQ1FBSkFJQUF0QUIwaUJVRVFSZzBBSUFRTkFRc0NRQ0FBS0FJSUlnVWdCRXNOQUNBQUlBVWdCRUVCYWhDSmdJQ0FBQkNLZ0lDQUFDSUVRZi8vQTNFTkJDQUFLQUlFSVFRTElBQWdCRUVCYWpZQ0JFRUFJUVVnQUNnQ0FDQUVRUUYwYWtFQU93RUFJQUJCQURvQUhTQUFLQUlFSVFRTElBUkJBWFFnQUNnQ0FHcEJmbW9pQkNBRUx3RUFJQUZCRkNBQ2EwSC9BWEYwUWYvL1AzRWdCVUVFYW5aeU93RUFJQUFnQUMwQUhTQURRUkFnQld0Qi93RnhJZ1FnQXlBRVNSc2lCR282QUIwZ0FpQUVheUVDREFBTEN5QUFJQUFvQWhSQkFXbzJBaFFnQUNBQUtBSVlRUUZxTmdJWVFRQWhCQXNnQkF2TEFRSUVmd0YrSTRDQWdJQUFRUkJySWdFa2dJQ0FnQUFDUUFKQUlBQU5BRUVCSVFJTUFRdEJBU0VEUVFJaEJBTkFBa0FDUUNBQVFRSkpEUUFnQUVFQmNVVU5BVUVBSVFJZ0FTQURyU0FFclg0aUJVSWdpS2NpQTBFQVJ6b0FCQ0FERFFNZ0JhY2hBd3dCQ3lBQklBT3RJQVN0ZmlJRlFpQ0lweUlBUVFCSE9nQU1RUUFnQmFjZ0FCc2hBZ3dDQzBFQUlRSWdBU0FFclNJRklBVitJZ1ZDSUlpbklnUkJBRWM2QUFnZ0JBMEJJQVduSVFRZ0FFRUJkaUVBREFBTEN5QUJRUkJxSklDQWdJQUFJQUlMSlFFQmZ3TkFRWDhnQUVFQmRpQUFha0VJYWlJQ0lBSWdBRWtiSWdBZ0FVa05BQXNnQUF2dEFRRUZmeU9BZ0lDQUFFRVFheUlDSklDQWdJQUFRUUFoQXdKQUlBQW9BZ2dpQkNBQlR3MEFJQUFvQWdBaEJRSkFBa0FnQkVVTkFDQUNJQUZCQUVnNkFBZ2dBVUYvVEEwQUlBQW9BZ3dnQlNBRVFRRjBRUUVnQVVFQmRFRUFJQUJCRUdvb0FnQW9BZ1FSZ29DQWdBQUFRUUZ4UlEwQUlBQWdBVFlDQ0F3QkN5QUNJQUJCREdvaUJpa0NBRGNEQUNBQ1FRaHFJQUlnQVJDRWdJQ0FBQ0FDTHdFTUlnTU5BU0FDS0FJSUlBQW9BZ0FnQUNnQ0JFRUJkQkNsZ0lDQUFDRURJQVlnQlNBRUVKS0FnSUFBSUFBZ0FUWUNDQ0FBSUFNMkFnQUxRUUFoQXdzZ0FrRVFhaVNBZ0lDQUFDQURDdzhBSUFBZ0FFRU1haENNZ0lDQUFBdGxBUU4vQWtBZ0FDZ0NBQ0lDUlEwQUFrQWdBa0YwYWlJRFFRaHFLQUlBUVExc1FROXFRWHh4SWdKQkFDQUNHeUlFUlEwQUlBRW9BZ0FnQTBFRUlBSWJJQVJCQWtFQUlBRW9BZ1FvQWdnUmdZQ0FnQUFBQ3lBQVFRQTJBZ2dnQUVFQU5nSUFDd3VCQXdRRWZ3RitCSDhCZmlPQWdJQ0FBRUVRYXlJRUpJQ0FnSUFBSTRHQWdJQUFJUVVnQVNnQ0FDRUdBa0FDUUNBQktBSUVEUUFnQlVHQWdNQ0FBR29oQnd3QkN5QUNJQU1Ram9DQWdBQWhDQUpBQWtBZ0JnMEFRUUFoQlVGL0lRa01BUXNnQmtGOGFpZ0NBQ0lGUVg5cUlRa0xJQVpCZUdvaENpQUpJQWluY1NFQklBaENPWWluSVFzRFFDT0JnSUNBQUVHQWdNQ0FBR29oQnlBR0lBRnFMQUFBSWd4RkRRRWdCVVVOQVFKQUlBeEJmMG9OQUNBTElBeEIvd0J4UncwQUlBSWdBeUFLS0FJQUlBRkJBM1JxSWd3b0FnQWdEQ2dDQkJDUGdJQ0FBRUVCY1VVTkFDQUVRUUU2QUF3Z0JDQUJOZ0lJSUFSQkNHb2hCd3dDQ3lBRlFYOXFJUVVnQVVFQmFpQUpjU0VCREFBTEN3SkFBa0FnQnkwQUJBMEFRZ0FoQ0VJQUlRME1BUXNnQkNBR1FYUnFLQUlBSUFjb0FnQkJBblJxSWdGQkFtb3RBQUJCRDNFNkFBSWdCQ0FCTHdFQU93RUFJQVF6QVFBZ0JERUFBa0lRaG9RaENFS0FnSUNBRUNFTkN5QUFJQTBnQ0lRM0FnQWdCRUVRYWlTQWdJQ0FBQXZzQlFVQ2Z3RitBWDhDZmdKL0k0Q0FnSUFBUWVBQWF5SUNKSUNBZ0lBQUFrQUNRQUpBQWtBQ1FDQUJRUkJMRFFBZ0FVRURUUTBCSUFBMUFBQkNJSVlnQUNBQlFRRjJRZnovLy84SGNTSURhalVBQUlRaEJDQUFJQUZCZkdvaUJXbzFBQUJDSUlZZ0FDQUZJQU5yYWpVQUFJUWhCa0tzbXVMVG85THcraDhoQnd3RUMwRUFJUU5DckpyaTA2UFM4UG9mSVFkQkFDRUZJQUZCTUVrTkFrRUFJUVZDckpyaTA2UFM4UG9mSVFkQ3JKcmkwNlBTOFBvZklRUkNySnJpMDZQUzhQb2ZJUVlEUUNBRlFUQnFJZ2dnQVU4TkFpQUNRY0FBYWlBQUlBVnFJZ1VwQUFnZ0JvVkNBQ0FGS1FBQVF0dlIwSVdhMnQrQlo0VkNBQkNqZ0lDQUFDQUNRVEJxSUFWQkdHb3BBQUFnQklWQ0FDQUZRUkJxS1FBQVF1T05vK1NKM3ByZWpuK0ZRZ0FRbzRDQWdBQWdBa0VnYWlBRlFTaHFLUUFBSUFlRlFnQWdCVUVnYWlrQUFFTERtZDJweDduWnpOZ0FoVUlBRUtPQWdJQUFJQUpCd0FCcVFRaHFLUU1BSUFJcEEwQ0ZJUVlnQWtFZ2FrRUlhaWtEQUNBQ0tRTWdoU0VISUFKQk1HcEJDR29wQXdBZ0Fpa0RNSVVoQkNBSUlRVU1BQXNMUWdBaEJrS3NtdUxUbzlMdytoOGhCd0pBSUFFTkFFSUFJUVFNQXdzZ0FDQUJRUUYyYWpFQUFFSUloaUFBTVFBQVFoQ0doQ0FCSUFCcVFYOXFNUUFBaENFRURBSUxJQVFnQjRVZ0JvVWhCd3NnQUNBRmFpRUpJQUVnQldzaENBSkFBMEFnQTBFUWFpSUZJQWhQRFFFZ0FrSFFBR29nQ1NBRGFpSURRUWhxS1FBQUlBZUZRZ0FnQXlrQUFFTGIwZENGbXRyZmdXZUZRZ0FRbzRDQWdBQWdBa0hRQUdwQkNHb3BBd0FnQWlrRFVJVWhCeUFGSVFNTUFBc0xJQUVnQUdvaUEwRjRhaWtBQUNFR0lBTkJjR29wQUFBaEJBc2dBa0VRYWlBRVF0dlIwSVdhMnQrQlo0VkNBQ0FHSUFlRlFnQVFvNENBZ0FBZ0FpQUNRUkJxUVFocUtRTUFRdHZSMElXYTJ0K0JaNFZDQUNBQnJTQUNLUU1RaFVLdnlQWEZ4NnlIdTZCL2hVSUFFS09BZ0lBQUlBSkJDR29wQXdBaEJ5QUNLUU1BSVFRZ0FrSGdBR29rZ0lDQWdBQWdCeUFFaFF0WUFRSi9RUUFoQkFKQUlBRWdBMGNOQUFKQUlBQWdBa2NOQUVFQkR3c0RRQ0FCUlNFRUlBRkZEUUVnQVVGL2FpRUJJQUl0QUFBaEF5QUFMUUFBSVFVZ0FFRUJhaUVBSUFKQkFXb2hBaUFGSUFOR0RRQUxDeUFFQzhjVUJBSi9BWDRlZndGK0k0Q0FnSUFBUWZBQmF5SUNKSUNBZ0lBQUlBSkJNR3BCQ0dvaUEwRUFOZ0lBSUFKQ0FEY0RNQ0FDSTRHQWdJQUFRWmlBd0lBQWFpa0RBQ0lFTndJOElBSWdCRGNDeEFFZ0FrRUFOZ0xBQVNBQ1FxclZxdFVLTndLNEFRSkFBa0FDUUFKQUlBSkJ1QUZxSUFFUWlvQ0FnQUJCLy84RGNRMEFJQUpCTUdwQkRHb2hCU0FDUWNnQWFrRVFhaUFDUWJnQmFrRVFhaWdDQURZQ0FDQUNRY2dBYWtFSWFpQUNRYmdCYWtFSWFpSUdLUUlBTndNQUlBSWdBaWtDdUFFM0EwZ2dBa0VKT3dGa0lBSkNBRGNDWENBRVFpQ0lweUVISUFTbklRaEJnQUloQ1VFQUlRb0RRQ0FBSUFwcUlRdEJBQ0VNQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQTBBQ1FBSkFJQXhCQW1vaURTQUthaUFCVHcwQUlBSkI2QUJxSUFKQk1Hb2dDeUFORUkyQWdJQUFJQUl0QUd3TkFTQUNLQUl3SVE0Z0FpZ0NPQTBHQWtBQ1FDQU9EUUJCQVNFUERBRUxJQTVCZkdvb0FnQ3RRdEFBZmlJRUlBUkM1QUNDZlVMa0FIeEMwQUNBcHlFUEMwRUFJUkFnQmtFQU5nSUFJQUpDQURjRHVBRkJBQTBGQWtBQ1FFSUJRU0FnRDJkcnJVTC8vd09EaHFjaUQwRUlJQTlCQ0VzYkloRkJEMm9pRWlBUlFRTjBhaUlUSUJGQkFuUnFRWHh4SWc4TkFFRjhJUThNQVF0QkFDRVFJQWdnRDBFQ1FRQWdCeWdDQUJHQWdJQ0FBQUFpRDBVTkJnc2dEMEVJYWlJVUlCRTJBZ0FnRHlBUElCSkJmSEZxTmdJRUlBOGdEeUFUUVh4eGFqWUNBQ0FDSUE5QkRHb2lEellDdUFFZ0QwRUFJQkVRcElDQWdBQWhFQ0FDSUJHdFF0QUFma0xrQUlDbkloVTJBc0FCSUFJb0FqUWlGa1VOQkVFQUlSZEJBQ0VZQWtBZ0RrVU5BQ0FPUVh4cUtBSUFJUmdMSUJCQmRHb2hHU0FRUVhocUlSb2dEa0YwYWlJUEtBSUFJUnNnRDBFRWFpZ0NBQ0VjUVFBaEhRTkFJQjBnR0VZTkJBSkFJQTRnSFdvc0FBQkJBRTROQUNBYklCMUJBblJxSWc5QkFtb3RBQUJCRUhRaEhpQVBMd0VBSVI4Z0hDQWRRUU4wYWlJUEtBSUVJU0FnRHlnQ0FDRWhBa0FnRjBVTkFDQWhJQ0FRam9DQWdBQWhCQ0FVS0FJQUloRkJmMm9pRXlBRXAzRWhEeUFFUWptSXB5RWlBMEFnRUNBUGFpd0FBQ0lTUlEwQklCRkZEUUVDUUNBU1FYOUtEUUFnSWlBU1FmOEFjVWNOQUNBaElDQWdHaWdDQUNBUFFRTjBhaUlTS0FJQUlCSW9BZ1FRajRDQWdBQkJBWEZGRFFBZ0FrRUJPZ0RzQVF3Q0N5QVJRWDlxSVJFZ0QwRUJhaUFUY1NFUERBQUxDeUFmSUI1eUlSTWdJU0FnRUk2QWdJQUFJUVFnRkNnQ0FFRi9haUlTSUFTbmNTRVBBa0FEUUNBUUlBOXFJaEVzQUFCQmYwb05BU0FQUVFGcUlCSnhJUThNQUFzTElCRWdCRUk1aUtkQmdBRnlPZ0FBSUJvb0FnQWdEMEVEZEdvaUVTQWdOZ0lFSUJFZ0lUWUNBQ0FaS0FJQUlBOUJBblJxSWc4Z0V6c0JBQ0FQUVFKcUlCTkJnSUE4Y1VFUWRqb0FBQ0FWUVg5cUlSVWdGMEVCYWlJWElCWkhEUUFnRmlFWERBVUxJQjFCQVdvaEhRd0FDd3NDUUFKQUlBcEJBV29nQVVrTkFDQUNRY2dBYWlBTExRQUFFSWVBZ0lBQVFmLy9BM0VORGd3QkN5QUNRZmdBYWtFUWFpQUNRVEJxUVJCcUtBSUFOZ0lBSUFKQitBQnFRUWhxSUFKQk1HcEJDR29wQXdBM0F3QWdBaUFDS1FNd053TjRJQUpCa0FGcUlBSkIrQUJxSUFzZ0RFRUNhaENOZ0lDQUFBSkFJQUl0QUpRQkRRQUNRQUpBSUF3TkFDQUxMUUFBSVEwTUFRc2dBa0dZQVdwQkVHb2dBa0V3YWtFUWFpZ0NBRFlDQUNBQ1FaZ0Jha0VJYWlBQ1FUQnFRUWhxS1FNQU53TUFJQUlnQWlrRE1EY0RtQUVnQWtHd0FXb2dBa0dZQVdvZ0N5QU1RUUZxRUkyQWdJQUFJQUl2QWJBQklBSXRBTElCUVJCMGNpRU5DeUFDUWNnQWFpQU5FSWVBZ0lBQVFmLy9BM0VORGlBQ1FjZ0FhaUFMSUF4cVFRRnFMUUFBRUllQWdJQUFRZi8vQTNGRkRRRU1EZ3NnQWtISUFHb2dBaThCa0FFZ0FpMEFrZ0ZCRUhSeUVJZUFnSUFBUWYvL0EzRU5EUXNnQWtFd2FoQ0xnSUNBQUNBQ1FSaHFJQUpCeUFCcVFSaHFLUU1BTndNQUlBSkJFR29nQWtISUFHcEJFR29wQXdBM0F3QWdBa0VJYWlBQ1FjZ0Fha0VJYWlrREFEY0RBQ0FDSUFJcEEwZzNBd0FnQWtFa2FpT0JnSUNBQUVHWWdNQ0FBR29nQWlnQ0JDSU1RUVJxRUlPQWdJQUFBa0FnQWk4QkxBMEFJQUlvQWlRaUVDQUNLQUlvUVJCNE5nRUFJQkFnQWlnQ0ZFRVFlRFlCQkNBUVFRaHFJUTBnQWlnQ0FDRVBBa0FEUUNBTVJRMEJJQTBnRHk4QkFEc0JBQ0FNUVg5cUlRd2dEVUVDYWlFTklBOUJBbW9oRHd3QUN3c2dBaENSZ0lDQUFBd1FDeUFDRUpHQWdJQUFEQTRMSUF4QkFXb2hEQXdBQ3dzZ0FpQVZOZ0xBQVNBQ0lCYzJBcndCQ3lBREtBSUFJUThnQXlBR0tBSUFOZ0lBSUFZZ0R6WUNBQ0FDUVFBMkFqUWdBaWtETUNFRUlBSWdBaWtEdUFFaUl6Y0RNQ0FDSUFRM0E3Z0JJQ09uSVE1QkFTRVFDeUFDUWJnQmFpQUZFSXlBZ0lBQUlCQU5BQ09CZ0lDQUFDRVBJQUlvQWpRTkFTQVBRWUNBd0lBQWFpRVNEQU1MSUFzZ0RSQ09nSUNBQUNFRUFrQUNRQ0FPRFFBZ0JLY2hEMEVBSVJKQmZ5RWREQUVMSUE1QmZHb29BZ0FpRWtGL2FpSWRJQVNuY1NFUEN5QU9RWGhxSVNBZ0RrRjhhaUVoSUFSQ09ZaW5JU0lnRWlFUUEwQWdEaUFQYWlJVExBQUFJaEZGRFFJZ0VFRUFSZzBDQWtBQ1FDQVJRWDlLRFFBZ0lpQVJRZjhBY1VjTkFDQUxJQTBnSUNnQ0FDQVBRUU4wYWlJUktBSUFJQkVvQWdRUWo0Q0FnQUJCQVhGRkRRRU1CZ3NnRWlBaEtBSUFSdzBBSUE4Z0VpQVJRUUZHR3lFU0N5QVFRWDlxSVJBZ0QwRUJhaUFkY1NFUERBQUxDeUFMSUEwUWpvQ0FnQUFoQkFKQUFrQWdEZzBBUVFBaEVFRi9JUk1NQVFzZ0RrRjhhaWdDQUNJUVFYOXFJUk1MSUE1QmVHb2hJaUFUSUFTbmNTRVBJQVJDT1lpbklSMERRQ09CZ0lDQUFFR0FnTUNBQUdvaEVpQU9JQTlxTEFBQUloRkZEUUlnRUVVTkFnSkFJQkZCZjBvTkFDQWRJQkZCL3dCeFJ3MEFJQXNnRFNBaUtBSUFJQTlCQTNScUloRW9BZ0FnRVNnQ0JCQ1BnSUNBQUVFQmNVVU5BQ0FDUVFFNkFOQUJJQUlnRHpZQ3pBRWdBa0hNQVdvaEVnd0RDeUFRUVg5cUlSQWdEMEVCYWlBVGNTRVBEQUFMQ3lBaEtBSUFJUkFnQWlBQ0tBSTRRWDlxTmdJNElBNGdFbW9nRXlBU0lCQkpJaEFiSUNKQmdBRnlPZ0FBSUE1QmRHb29BZ0FoRVNBZ0tBSUFJUk1nQWlBQ0tBSTBRUUZxTmdJMElCTWdFaUFQSUJBYklnOUJBM1JxSWhBZ0RUWUNCQ0FRSUFzMkFnQWdFU0FQUVFKMGFpRU5EQUlMSUJJdEFBUkZEUVFnRWlnQ0FDRVBDeUFPUVhScUtBSUFJQTlCQW5ScUlRMExJQTBnQ1RzQkFDQU5RUUpxSUFsQmdJQThjVUVRZGpvQUFBSkFBa0FnREEwQUlBc3RBQUFoRFF3QkN5QUNRZkFBYWlBQ1FUQnFJQXNnREVFQmFoQ05nSUNBQUNBQ0x3RndJQUl0QUhKQkVIUnlJUTBMSUFKQnlBQnFJQTBRaDRDQWdBQkIvLzhEY1EwQklBb2dER3BCQVdvaENpQUpRUUZxSWdsQi8vOC9jVUgvL3o5SERRQWdEa0VBSUE1QmZHb29BZ0FpREJDa2dJQ0FBQm9nQWtFQU5nSTBJQUlnREsxQzBBQitRdVFBZ0Q0Q09DQUNRY2dBYWtILy96OFFoNENBZ0FCQi8vOERjUTBCSUFKQkFEWUNZQ0FDUVFrNkFHUkJnQUloQ1F3QUN3c2dBa0V3YWhDTGdJQ0FBQXdCQ3lBQ1FUQnFFSXVBZ0lBQUMwRUFJUkFMSUFKQjhBRnFKSUNBZ0lBQUlCQUxQd0VCZnlPQWdJQ0FBRUVRYXlJQkpJQ0FnSUFBSUFFZ0FDa0NERGNEQ0NBQlFRaHFJQUFvQWdBZ0FDZ0NDQkNTZ0lDQUFDQUJRUkJxSklDQWdJQUFDemNCQVg4Q1FDQUNRUUYwUVFBZ0Foc2lBMFVOQUNBQUtBSUFJQUZCQWlBQ0d5QURRUUZCQUNBQUtBSUVLQUlJRVlHQWdJQUFBQXNMUHdFQmZ5T0FnSUNBQUVFUWF5SUJKSUNBZ0lBQUlBRWdBQ2tDRERjRENDQUJRUWhxSUFBb0FnQWdBQ2dDQ0JDVWdJQ0FBQ0FCUVJCcUpJQ0FnSUFBQ3pjQkFYOENRQ0FDUVFOMFFRQWdBaHNpQTBVTkFDQUFLQUlBSUFGQkJDQUNHeUFEUVFKQkFDQUFLQUlFS0FJSUVZR0FnSUFBQUFzTDN3c0RBWDhCZmd0L0k0Q0FnSUFBUWRBQWF5SURKSUNBZ0lBQUlBTkJBRFlDUENBRFFxclZxdFVLTndJMElBTWpnWUNBZ0FCQm1JREFnQUJxS1FNQUlnUTNBa0FDUUFKQUFrQUNRQ0FDRFFCQnF0V3ExWG9oQlVFQUlRWU1BUXRCcXRXcTFYb2hCU0FDSVFZZ0EwSEFBR29pQjBHcTFhclZla0VBSUFJUWxvQ0FnQUJCQVhFTkFDQURRU0JxSUFjZ0FoQ1hnSUNBQUNBREx3RW9EUUVnQXlnQ0pDRUdJQU1vQWlBaEJRdEJDU0VJUVFBaENVRUFJUXBCQUNFTFFRQWhEQU5BQWtBQ1FBSkFBa0FnRENBQ1JnMEFJQWhCL3dGeElnZEJGRWtOQVF3REN5QURJQVEzQTBnQ1FBSkFJQU5CeUFCcUlBVWdCaUFDRUphQWdJQUFRUUZ4UlEwQUlBVWhDQXdCQ3lBRFFUUnFJQU5CeUFCcUlBSVFsNENBZ0FBZ0F5OEJQQTBGSUFNb0FqUWlDQ0FGSUFNb0FqZ2lBa0VDZEJDbGdJQ0FBQm9nQXlBRU53TWdJQU5CSUdvZ0JTQUdFSmlBZ0lBQUN5QURRUUEyQWlnZ0EwS3ExYXJWQ2pjQ0lDQURJQVEzQWl3Z0EwRUFRZi8vUHhDSmdJQ0FBQ0lIUWYvLy8vOEJTem9BTkNBSFFZQ0FnSUFDVHcwQkFrQUNRQ0FIUVFOMElnME5BRUY4SVEwTUFRc2dCS2NnRFVFQ1FRQWdCRUlnaUtjb0FnQVJnSUNBZ0FBQUlnMUZEUUlMSUFNZ0J6WUNLQ0FESUEwMkFpQkJBQ0VIQWtBRFFDQUhRZmovL3dOR0RRRWdEU0FIYWtJQU53SUFJQWRCQ0dvaEJ3d0FDd3NnQTBILy96ODJBaVFnQXlBRU53SkFRUUFoQnlBRFFRQTJBandnQTBLcTFhclZDamNDTkNBRFFUUnFJQUpCRkd3UW1ZQ0FnQUJCLy84RGNRMEJJQU1wQWtBaEJDQURLQUk4SVFzZ0F5Z0NOQ0lBSUFNb0FqZ2lDV29nQ0MwQUFEb0FBQ0FOSUFndkFRQWdDRUVDYWkwQUFFRVFkSEpCQTNScUlnNUJBVFlDQkNBT0lBQTJBZ0FnQ1VFQmFpRVBRWUFDSVFwQkFTRUpBMEFnRHlFT0FrQUNRQUpBQWtBZ0NTQUNUdzBBQWtBZ0NDQUpRUUowYWlJUEx3RUFJQTlCQW1vdEFBQkJFSFJ5SWc5Qi8vOC9SdzBBSUFsQkFXb2lDU0FDVHcwQlFRQWhCd0pBQTBBZ0IwSDQvLzhEUmcwQklBMGdCMnBDQURjQ0FDQUhRUWhxSVFjTUFBc0xBa0FnQ0NBSlFRSjBhaUlITHdFQUlBZEJBbW90QUFCQkVIUnlJZ2RCZ0FKSkRRQWdBMEgvL3o4MkFpUU1DQXNnQUNBT2FpQUhPZ0FBSUE1QkFXb2hEMEdBQWlFS0RBUUxJQTlCZ0FKSkRRRUNRQ0FOSUE5QkEzUnFJZzhvQWdBaURBMEFJQUFnRG1vZ0FDQUhhaUlQSUE0Z0Iyc2lEQkNsZ0lDQUFCb2dBQ0FNSUE1cUlneHFJQTh0QUFBNkFBQWdERUVCYWlFUERBTUxJQUFnRG1vZ0RDQVBLQUlFSWc4UXBZQ0FnQUFhSUE4Z0Rtb2hEd3dDQ3lBRFFmLy9QellDSkNBRFFTQnFFSk9BZ0lBQUlBTWdCRGNDR0NBRElBczJBaFFnQXlBQU5nSU1JQU1nRGpZQ0VFRUFJUWNnQTBFTWFpQU9RUUZxRUptQWdJQUFRZi8vQTNFTkNTQURLQUlNSWcwZ0F5Z0NFQ0lIYWtFQU9nQUFJQU1vQWhRaENTQURJQU1wQWhnaUJEY0RTQUpBSUFOQnlBQnFJQTBnQ1NBSFFRRnFJZ2NRbW9DQWdBQkJBWEZGRFFBZ0RTRUhEQW9MSUFOQk5Hb2dBMEhJQUdvZ0J4Q2JnSUNBQUNBREx3RThEUWdnQXlnQ05DSUhJQTBnQXlnQ09CQ2xnSUNBQUJvZ0F5QUVOd01nSUFOQklHb2dEU0FKRUlhQWdJQUFEQWtMSUFBZ0Rtb2dEem9BQUNBT1FRRnFJUThMSUEwZ0NrSC8vejl4UVFOMGFpSU1JQTRnQjJ0QkFXbzJBZ1FnRENBQUlBZHFOZ0lBSUFwQkFXb2hDZ3NnQ1VFQmFpRUpJQTRoQnd3QUN3c2dDQ0FMUVlBQ2FpQUhFSWlBZ0lBQVFYOXFUMm9oQ0F3QkN5QURRU0JxRUpPQWdJQUFEQUlMUVFBaERpQUlJUWNDUUFOQUlBZEIvd0Z4SWcxRkRRRWdBQ0FLSUFsQi93RnhRUkJHSWc5cUlncEJBWFJxTHdFQVFRQWdDU0FQR3lJSlFROXhkRUgvL3dOeFFRQWdEVUVRSUFsclFmOEJjU0lQSUEwZ0Qwa2JJZzFyUVE5eGRpQUhJQTFySWdkMElBNXlJUTRnRFNBSmFpRUpEQUFMQ3lBRklBeEJBblJxSWdjZ0Rqc0JBQ0FIUVFKcUlBNUIvLzgvY1NJSFFSQjJPZ0FBUVFBZ0MwRUJhaUFIUWYvL1AwWWlCeHNoQzBFSklBZ2dCeHNoQ0NBTVFRRnFJUXdNQUFzTFFRQWhCd3NnQTBIUUFHb2tnSUNBZ0FBZ0J3dVFBUUVDZnlPQWdJQ0FBRUVRYXlJRUpJQ0FnSUFBQWtBQ1FDQUREUUFnQkNBQUtRSUFOd01BSUFRZ0FTQUNFSmlBZ0lBQVFRRWhCUXdCQzBFQUlRVWdBa1VOQUNBRUlBTkIvLy8vL3dOTE9nQU1JQU5CZ0lDQWdBUlBEUUFnQUNnQ0FDQUJJQUpCQW5SQkFpQURRUUowUVFBZ0FDZ0NCQ2dDQkJHQ2dJQ0FBQUFoQlFzZ0JFRVFhaVNBZ0lDQUFDQUZDOEVCQWdGL0FYNGpnSUNBZ0FCQklHc2lBeVNBZ0lDQUFDQUJLUUlBSVFRZ0F5QUNRZi8vLy84RFN6b0FIQUpBQWtBZ0FrR0FnSUNBQkU4TkFBSkFBa0FnQWtFQ2RDSUJEUUJCZkNFQkRBRUxJQVNuSUFGQkFrRUFJQVJDSUlpbktBSUFFWUNBZ0lBQUFDSUJSUTBCQ3lBRElBSTJBaFFnQXlBQk5nSVFJQU5CQURzQkdDQURRUkJxSVFJTUFRc2dBMEVCT3dFTUlBTkJCR29oQWdzZ0FDQUNLUUlBTndJQUlBQkJDR29nQWtFSWFpZ0NBRFlDQUNBRFFTQnFKSUNBZ0lBQUN6Y0JBWDhDUUNBQ1FRSjBRUUFnQWhzaUEwVU5BQ0FBS0FJQUlBRkJCQ0FDR3lBRFFRSkJBQ0FBS0FJRUtBSUlFWUdBZ0lBQUFBc0xxUUVCQlg4amdJQ0FnQUJCRUdzaUFpU0FnSUNBQUVFQUlRTUNRQ0FBS0FJSUlnUWdBVThOQUFKQUlBQkJER29pQlNBQUtBSUFJZ1lnQkNBQkVKcUFnSUFBUVFGeERRQWdBa0VFYWlBRklBRVFtNENBZ0FBZ0FpOEJEQ0lERFFFZ0FpZ0NDQ0VCSUFJb0FnUWdBQ2dDQUNBQUtBSUVFS1dBZ0lBQUlRTWdCU0FHSUFRUWhvQ0FnQUFnQUNBRE5nSUFDeUFBSUFFMkFnaEJBQ0VEQ3lBQ1FSQnFKSUNBZ0lBQUlBTUxkUUVDZnlPQWdJQ0FBRUVRYXlJRUpJQ0FnSUFBQWtBQ1FDQUREUUFnQkNBQUtRSUFOd01BSUFRZ0FTQUNFSWFBZ0lBQVFRRWhCUXdCQzBFQUlRVWdBa1VOQUVFQURRQWdBQ2dDQUNBQklBSkJBQ0FEUVFBZ0FDZ0NCQ2dDQkJHQ2dJQ0FBQUFoQlFzZ0JFRVFhaVNBZ0lDQUFDQUZDNVVCQVFGL0k0Q0FnSUFBUVRCcklnTWtnSUNBZ0FBZ0F5QUJLUUlBTndNSUlBTkJFR29nQTBFSWFpQUNFSUdBZ0lBQUFrQUNRQ0FETHdFVUlnRkZEUUFnQXlBQk93RWdJQU5CR0dvaEFnd0JDeUFEUVFBN0FTd2dBeUFDTmdJb0lBTWdBeWdDRURZQ0pDQURRU1JxSVFJTElBQWdBaWtDQURjQ0FDQUFRUWhxSUFKQkNHb29BZ0EyQWdBZ0EwRXdhaVNBZ0lDQUFBdlNBZ01HZndGK0IzOGpnSUNBZ0FCQkVHc2lBeVNBZ0lDQUFDQUFLQUlFSVFRZ0FDZ0NBQ0VGUVFBaEJpQUNRZjhCY1NFSEEzOENRQUpBQWtBZ0JpQUVSdzBBUVg4aENBd0JDd0pBSUFVZ0JrRUVkR29pQWtFSWFpa0RBQ0lKUWdCVERRQWdBaWtEQUhzZ0NYdDhweUFCU1EwQ0N5QUdRUWQwSWdoQmdBRnFJUW9EUUNBSUlBcFBEUUlnQ0NBQUtRSUFJZ2xDR1lpblFZQi9jU0lDSUFnZ0Frc2JJZ3NnQ0dzaERDQUpwMEVJSUFsQ0lJaW5HeUVOSUFoQkVIUm9JUTVCQUNFQ0FrQURRQUpBSUF3Z0FrY05BQ0FMSVE4TUFndEIvd0VnQ0NBQ2FpSVBRUWR4SWhCQkIzTjJRUUVnRUhSeElBMGdEMEVEZG1vdEFBQnhSUTBCSUFKQkFXb2lBaUFCU1EwQUlBNGdCMGtOQUFzZ0F5QUpOd01JSUFOQkNHb2dDQ0FCUVFBUW5ZQ0FnQUFNQWdzZ0QwRUJhaUVJREFBTEN5QURRUkJxSklDQWdJQUFJQWdQQ3lBR1FRRnFJUVlNQUFzTFZBRUJmeUFEUVFGeElRUUNRQU5BSUFKRkRRRWdBQ2dDQUVFSUlBQW9BZ1FiSUFGQkEzWnFJZ01nQXkwQUFFRitJQUZCQjNFaUEzZHhJQVFnQTNSeU9nQUFJQUZCQVdvaEFTQUNRWDlxSVFJTUFBc0xDOXNCQVFOL0k0Q0FnSUFBUVJCcklnSWtnSUNBZ0FBQ1FDQUFRWUFRVHcwQUk0R0FnSUFBUWFpQXdJQUFhaUFBSUFGQmdCQWdBVUdBRUVrYklBQnJFSitBZ0lBQUN3SkFJQUZCZ0JCTkRRQUNRQ09CZ0lDQUFFR2dnTUNBQUdvb0FnUU5BQ09CZ0lDQUFFR2dnTUNBQUdvaUEwR0FJRFlDQkNBRElBRkJmMm9pQVVFUWRDSUVOZ0lBSUFSQkFFR0FnQVFRcElDQWdBQWFDeUFDSTRHQWdJQUFRYUNBd0lBQWFpa0RBRGNEQ0NBQ1FRaHFJQUJCZ0JBZ0FFR0FFRXNiSWdCQmdIQnFJQUVnQUdzUW40Q0FnQUFMSUFKQkVHb2tnSUNBZ0FBTE93RUJmeU9BZ0lDQUFFRVFheUlESklDQWdJQUFJQU1nQUNrQ0FEY0RDQ0FEUVFocUlBRWdBa0VCRUoyQWdJQUFJQU5CRUdva2dJQ0FnQUFMdlFFQkJIOUJBQ0VFQWtBZ0FVR0JnSHhQRFFBQ1FDT0JnSUNBQUVHb2dNQ0FBR29nQVVILy93TnFRUkIySWdFZ0FoQ2NnSUNBQUNJRVFYOUhEUUFDUUNPQmdJQ0FBRUdnZ01DQUFHb2dBU0FDRUp5QWdJQUFJZ1JCZjBZTkFDQUVRWUFRYWlFRURBRUxRUUFoQkVFQklBSjBJZ1UvQUNJR1FSQjBJZ0pxUVg5cVFRQWdCV3R4SWdVZ0FtdEJFSFlpQnlBQmFrQUFRUUZJRFFFZ0J5QUdhaUVFSUFVZ0FrWU5BQ0FHSUFRUW5vQ0FnQUFMSUFSQkVIUWhCQXNnQkF0UEFRRi9Ba0FnQWtILy93TnFJZ1pCZ0lCOGNTQUVUeUlDUlEwQUlBUkIvLzhEYWtFUWRpSUVJQVpCRUhZaUJrWU5BQ0FFSUFGQi8vOERha0VRZGlJQmFpQUJJQVpxRUo2QWdJQUFDeUFDQ3lFQUlBRkIvLzhEYWtFUWRpSUJJQUVnQWtILy93TnFRUkIyYWhDZWdJQ0FBQXQxQVFGK0lBQWdCQ0FCZmlBQ0lBTitmQ0FEUWlDSUlnSWdBVUlnaUNJRWZud2dBMEwvLy8vL0Q0TWlBeUFCUXYvLy8vOFBneUlCZmlJRlFpQ0lJQU1nQkg1OElnTkNJSWg4SUFOQy8vLy8vdytESUFJZ0FYNThJZ0ZDSUloOE53TUlJQUFnQVVJZ2hpQUZRdi8vLy84UGc0UTNBd0FMTEFFQmZ3SkFJQUpGRFFBZ0FDRURBMEFnQXlBQk9nQUFJQU5CQVdvaEF5QUNRWDlxSWdJTkFBc0xJQUFMUWdFQmZ3SkFJQUpGRFFBZ0FrRi9haUVDSUFBaEF3TkFJQU1nQVMwQUFEb0FBQ0FDUlEwQklBSkJmMm9oQWlBQlFRRnFJUUVnQTBFQmFpRUREQUFMQ3lBQUN3dEJBZ0JCZ0lEQUFBc0lBQUFBQUFBQUFBQUFRWWlBd0FBTEtBRUFBQUFDQUFBQUF3QUFBQUFBQUFBQUFBQUFDQUFRQUtxcXFxb0FBQUFBTUFBUUFCQUFBQUE9Iik7CmNvbnN0IGUgPSBhd2FpdCBoKCksIEIgPSBlLmV4cG9ydHM7CmZ1bmN0aW9uIGsoSSkgewogIGNvbnN0IHsgcHRyOiBRLCBsZW5ndGg6IEEgfSA9IGEoSSwgQiksIGcgPSBCLmNvbXByZXNzUGFja2VkKFEsIEEpOwogIEIuZnJlZShRLCBBKTsKICBjb25zdCBDID0gbmV3IFVpbnQxNkFycmF5KAogICAgQi5tZW1vcnkuYnVmZmVyLnNsaWNlKAogICAgICBnLAogICAgICBnICsgKEIubWVtb3J5LmJ1ZmZlci5ieXRlTGVuZ3RoIC0gZykKICAgICkKICApLCBFID0gKEMuYXQoMCkgPDwgMTYpICsgQy5hdCgxKSwgRCA9IEMuc2xpY2UoMiwgRSksIG8gPSB0KEQpOwogIHJldHVybiBCLmZyZWUoZywgRSksIG87Cn0KZnVuY3Rpb24gcyhJKSB7CiAgY29uc3QgUSA9IChJLmNoYXJDb2RlQXQoMCkgPDwgMTYpICsgSS5jaGFyQ29kZUF0KDEpOwogIGxldCBBID0gQi5hbGxvY1VpbnQxNihJLmxlbmd0aCAtIDIpLCBnID0gbmV3IFVpbnQxNkFycmF5KAogICAgQi5tZW1vcnkuYnVmZmVyLAogICAgQSwKICAgIEkubGVuZ3RoIC0gMgogICk7CiAgZm9yIChsZXQgaSA9IDI7IGkgPCBJLmxlbmd0aDsgaSsrKQogICAgZ1tpIC0gMl0gPSBJLmNoYXJDb2RlQXQoaSk7CiAgY29uc3QgQyA9IEIuZGVjb21wcmVzc1BhY2tlZCgKICAgIEEsCiAgICBJLmxlbmd0aCwKICAgIFEKICApOwogIEIuZnJlZShBLCBJLmxlbmd0aCk7CiAgY29uc3QgRSA9IG5ldyBVaW50OEFycmF5KAogICAgQi5tZW1vcnkuYnVmZmVyLnNsaWNlKAogICAgICBDLAogICAgICBDICsgKEIubWVtb3J5LmJ1ZmZlci5ieXRlTGVuZ3RoIC0gQykKICAgICkKICApLCBEID0gRS5pbmRleE9mKDApLCBvID0gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKAogICAgRS5zbGljZSgwLCBEKQogICk7CiAgcmV0dXJuIEIuZnJlZShDLCBEICsgMSksIG87Cn0Kb25tZXNzYWdlID0gYXN5bmMgZnVuY3Rpb24oSSkgewogIGNvbnN0IHsgY29tbWFuZDogUSwgaWQ6IEEsIGRhdGE6IGcgfSA9IEkuZGF0YTsKICBzd2l0Y2ggKFEpIHsKICAgIGNhc2UgImRlY29tcHJlc3MiOiB7CiAgICAgIHBvc3RNZXNzYWdlKHsgaWQ6IEEsIGRhdGE6IHMoZykgfSk7CiAgICAgIGJyZWFrOwogICAgfQogICAgY2FzZSAiY29tcHJlc3MiOiB7CiAgICAgIHBvc3RNZXNzYWdlKHsgaWQ6IEEsIGRhdGE6IGsoZykgfSk7CiAgICAgIGJyZWFrOwogICAgfQogIH0KfTsK", J = typeof window < "u" && window.Blob && new Blob([atob(l)], { type: "text/javascript;charset=utf-8" });
2
+ function S() {
3
+ let U;
4
+ try {
5
+ if (U = J && (window.URL || window.webkitURL).createObjectURL(J), !U)
6
+ throw "";
7
+ return new Worker(U);
8
+ } catch {
9
+ return new Worker("data:application/javascript;base64," + l, { type: "module" });
10
+ } finally {
11
+ U && (window.URL || window.webkitURL).revokeObjectURL(U);
12
+ }
13
+ }
14
+ const R = new S();
15
+ let V = 0;
16
+ const Q = {};
17
+ R.onmessage = function(U) {
18
+ console.log("onmessage", U);
19
+ const F = U.data.id;
20
+ Q[F](U.data.data), delete Q[F];
21
+ };
22
+ async function d(U) {
23
+ const F = V++;
24
+ return console.log("compress", F), new Promise((B) => {
25
+ Q[F] = B, R.postMessage({ command: "compress", id: F, data: U });
26
+ });
27
+ }
28
+ async function W(U) {
29
+ const F = V++;
30
+ return console.log("decompress", F), new Promise((B) => {
31
+ Q[F] = B, R.postMessage({ command: "decompress", id: F, data: U });
32
+ });
33
+ }
34
+ export {
35
+ d as compress,
36
+ W as decompress
37
+ };
@@ -0,0 +1,2 @@
1
+ export declare function compress(data: string): Promise<unknown>;
2
+ export declare function decompress(data: string): Promise<unknown>;
@@ -0,0 +1,37 @@
1
+ const J = "ZnVuY3Rpb24gRChJLCBDKSB7CiAgY29uc3QgQSA9IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShJKSwgZyA9IEMuYWxsb2NVaW50OChBLmxlbmd0aCArIDEpLCBRID0gbmV3IFVpbnQ4QXJyYXkoCiAgICBDLm1lbW9yeS5idWZmZXIsCiAgICBnLAogICAgQS5sZW5ndGggKyAxCiAgKTsKICByZXR1cm4gUS5zZXQoQSksIFFbQS5sZW5ndGhdID0gMCwgeyBwdHI6IGcsIGxlbmd0aDogQS5sZW5ndGggKyAxIH07Cn0KZnVuY3Rpb24gYShJKSB7CiAgY29uc3QgQyA9IG5ldyBBcnJheShJLmxlbmd0aCk7CiAgZm9yIChsZXQgQSA9IDA7IEEgPCBJLmxlbmd0aDsgQSsrKQogICAgQ1tBXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoSVtBXSk7CiAgcmV0dXJuIEMuam9pbigiIik7Cn0KdmFyIGUgPSBhc3luYyAoSSA9IHt9LCBDKSA9PiB7CiAgbGV0IEE7CiAgaWYgKEMuc3RhcnRzV2l0aCgiZGF0YToiKSkgewogICAgY29uc3QgZyA9IEMucmVwbGFjZSgvXmRhdGE6Lio/YmFzZTY0LC8sICIiKTsKICAgIGxldCBROwogICAgaWYgKHR5cGVvZiBCdWZmZXIgPT0gImZ1bmN0aW9uIiAmJiB0eXBlb2YgQnVmZmVyLmZyb20gPT0gImZ1bmN0aW9uIikKICAgICAgUSA9IEJ1ZmZlci5mcm9tKGcsICJiYXNlNjQiKTsKICAgIGVsc2UgaWYgKHR5cGVvZiBhdG9iID09ICJmdW5jdGlvbiIpIHsKICAgICAgY29uc3QgRSA9IGF0b2IoZyk7CiAgICAgIFEgPSBuZXcgVWludDhBcnJheShFLmxlbmd0aCk7CiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgRS5sZW5ndGg7IGkrKykKICAgICAgICBRW2ldID0gRS5jaGFyQ29kZUF0KGkpOwogICAgfSBlbHNlCiAgICAgIHRocm93IG5ldyBFcnJvcigiRmFpbGVkIHRvIGRlY29kZSBiYXNlNjQtZW5jb2RlZCBkYXRhIFVSTCwgQnVmZmVyIGFuZCBhdG9iIGFyZSBub3Qgc3VwcG9ydGVkIik7CiAgICBBID0gYXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoUSwgSSk7CiAgfSBlbHNlIHsKICAgIGNvbnN0IGcgPSBhd2FpdCBmZXRjaChDKSwgUSA9IGcuaGVhZGVycy5nZXQoIkNvbnRlbnQtVHlwZSIpIHx8ICIiOwogICAgaWYgKCJpbnN0YW50aWF0ZVN0cmVhbWluZyIgaW4gV2ViQXNzZW1ibHkgJiYgUS5zdGFydHNXaXRoKCJhcHBsaWNhdGlvbi93YXNtIikpCiAgICAgIEEgPSBhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZyhnLCBJKTsKICAgIGVsc2UgewogICAgICBjb25zdCBFID0gYXdhaXQgZy5hcnJheUJ1ZmZlcigpOwogICAgICBBID0gYXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoRSwgSSk7CiAgICB9CiAgfQogIHJldHVybiBBLmluc3RhbmNlOwp9LCB0ID0gKEkpID0+IGUoSSwgImRhdGE6YXBwbGljYXRpb24vd2FzbTtiYXNlNjQsQUdGemJRRUFBQUFCVVF4Z0JIOS9mMzhCZjJBRmYzOS9mMzhBWUFaL2YzOS9mMzhCZjJBQmZ3Ri9ZQU4vZjM4QVlBSi9md0JnQVg4QVlBUi9mMzkvQUdBQ2YzOEJmbUFDZjM4QmYyQURmMzkvQVg5Z0JYOStmbjUrQUFNaElBTUVBd1FGQkFZRkJ3Z0FBd2tBQkFRR0JBTUpBQVFLQndVRUFBSUJDd29LQkFVQmNBRUVCQVVEQVFBUkJnNENmd0ZCZ0lEQUFBdC9BRUVBQ3dkRUJnWnRaVzF2Y25rQ0FBcGhiR3h2WTFWcGJuUTRBQUFMWVd4c2IyTlZhVzUwTVRZQUFnUm1jbVZsQUFRSVkyOXRjSEpsYzNNQUN3cGtaV052YlhCeVpYTnpBQklKQ1FFQVFRRUxBeG9iSEFxak95QmVBUUYvSTRDQWdJQUFRUkJySWdFa2dJQ0FnQUFnQVNPQmdJQ0FBRUdZZ01DQUFHb3BBd0EzQXdBZ0FVRUlhaUFCSUFBUWdZQ0FnQUFDUUNBQkx3RU1EUUFnQVNnQ0NDRUFJQUZCRUdva2dJQ0FnQUFnQUE4TEEzOEFEQUFMQzNFQ0FYOEJmaU9BZ0lDQUFFRVFheUlESklDQWdJQUFRb0NBZ0lBUUlRUUNRRUVCUlEwQUFrQWdBZzBBUXYvLy8vOFBJUVFNQVFzZ0FTZ0NBQ0FDUVFCQkFDQUJLQUlFS0FJQUVZQ0FnSUFBQUNJQ1JhMUNJSVlnQXEyRUlRUUxJQUFnQkRjQ0FDQURRUkJxSklDQWdJQUFDMTRCQVg4amdJQ0FnQUJCRUdzaUFTU0FnSUNBQUNBQkk0R0FnSUFBUVppQXdJQUFhaWtEQURjREFDQUJRUWhxSUFFZ0FCQ0RnSUNBQUFKQUlBRXZBUXdOQUNBQktBSUlJUUFnQVVFUWFpU0FnSUNBQUNBQUR3c0Rmd0FNQUFzTGh3RUNBWDhCZmlPQWdJQ0FBRUVRYXlJREpJQ0FnSUFBSUFNZ0FrRUFTRG9BREFKQUFrQWdBa0YvU2cwQVFvQ0FnSUFRSVFRTUFRc0NRQ0FDUVFGMElnSU5BRUwrLy8vL0R5RUVEQUVMSUFFb0FnQWdBa0VCUVFBZ0FTZ0NCQ2dDQUJHQWdJQ0FBQUFpQWtXdFFpQ0dJQUt0aENFRUN5QUFJQVEzQWdBZ0EwRVFhaVNBZ0lDQUFBc1pBQ09CZ0lDQUFFR1lnTUNBQUdvZ0FDQUJFSVdBZ0lBQUN6Z0JBWDhDUUNBQ1FRQWdBaHNpQTBVTkFDQUFLQUlBSUFGQnF0V3ExWG9nQWhzZ0EwRUFRUUFnQUNnQ0JDZ0NDQkdCZ0lDQUFBQUxDdzhBSUFBZ0FFRU1haENIZ0lDQUFBdHdBUU4vQWtBZ0FDZ0NBQ0lDUlEwQUFrQWdBa0YwYWlJRFFRaHFLQUlBSWdKQkNtd2dBa0VQYWtGOGNXcEJBMnBCZkhFaUFrRUFJQUliSWdSRkRRQWdBU2dDQUNBRFFRUWdBaHNnQkVFQ1FRQWdBU2dDQkNnQ0NCR0JnSUNBQUFBTElBQkJBRFlDQ0NBQVFRQTJBZ0FMQzlnQ0F3Ui9BWDRFZnlPQWdJQ0FBRUVRYXlJRUpJQ0FnSUFBSTRHQWdJQUFJUVVnQVNnQ0FDRUdBa0FDUUNBQktBSUVEUUFnQlVHQWdNQ0FBR29oQnd3QkN5QUNJQU1RaVlDQWdBQWhDQUpBQWtBZ0JnMEFRUUFoQlVGL0lRa01BUXNnQmtGOGFpZ0NBQ0lGUVg5cUlRa0xJQVpCZUdvaENpQUpJQWluY1NFQklBaENPWWluSVFzRFFDT0JnSUNBQUVHQWdNQ0FBR29oQnlBR0lBRnFMQUFBSWd4RkRRRWdCVVVOQVFKQUlBeEJmMG9OQUNBTElBeEIvd0J4UncwQUlBSWdBeUFLS0FJQUlBRkJBM1JxSWd3b0FnQWdEQ2dDQkJDS2dJQ0FBRUVCY1VVTkFDQUVRUUU2QUF3Z0JDQUJOZ0lJSUFSQkNHb2hCd3dDQ3lBRlFYOXFJUVVnQVVFQmFpQUpjU0VCREFBTEN3SkFBa0FnQnkwQUJBMEFRUUFoQVVFQUlRVU1BUXNnQmtGMGFpZ0NBQ0FIS0FJQVFRRjBhaThCQUNFQlFZQ0FCQ0VGQ3lBQUlBVWdBWEkyQVFBZ0JFRVFhaVNBZ0lDQUFBdnNCUVVDZndGK0FYOENmZ0ovSTRDQWdJQUFRZUFBYXlJQ0pJQ0FnSUFBQWtBQ1FBSkFBa0FDUUNBQlFSQkxEUUFnQVVFRFRRMEJJQUExQUFCQ0lJWWdBQ0FCUVFGMlFmei8vLzhIY1NJRGFqVUFBSVFoQkNBQUlBRkJmR29pQldvMUFBQkNJSVlnQUNBRklBTnJhalVBQUlRaEJrS3NtdUxUbzlMdytoOGhCd3dFQzBFQUlRTkNySnJpMDZQUzhQb2ZJUWRCQUNFRklBRkJNRWtOQWtFQUlRVkNySnJpMDZQUzhQb2ZJUWRDckpyaTA2UFM4UG9mSVFSQ3JKcmkwNlBTOFBvZklRWURRQ0FGUVRCcUlnZ2dBVThOQWlBQ1FjQUFhaUFBSUFWcUlnVXBBQWdnQm9WQ0FDQUZLUUFBUXR2UjBJV2EydCtCWjRWQ0FCQ2RnSUNBQUNBQ1FUQnFJQVZCR0dvcEFBQWdCSVZDQUNBRlFSQnFLUUFBUXVPTm8rU0ozcHJlam4rRlFnQVFuWUNBZ0FBZ0FrRWdhaUFGUVNocUtRQUFJQWVGUWdBZ0JVRWdhaWtBQUVMRG1kMnB4N25aek5nQWhVSUFFSjJBZ0lBQUlBSkJ3QUJxUVFocUtRTUFJQUlwQTBDRklRWWdBa0VnYWtFSWFpa0RBQ0FDS1FNZ2hTRUhJQUpCTUdwQkNHb3BBd0FnQWlrRE1JVWhCQ0FJSVFVTUFBc0xRZ0FoQmtLc211TFRvOUx3K2g4aEJ3SkFJQUVOQUVJQUlRUU1Bd3NnQUNBQlFRRjJhakVBQUVJSWhpQUFNUUFBUWhDR2hDQUJJQUJxUVg5cU1RQUFoQ0VFREFJTElBUWdCNFVnQm9VaEJ3c2dBQ0FGYWlFSklBRWdCV3NoQ0FKQUEwQWdBMEVRYWlJRklBaFBEUUVnQWtIUUFHb2dDU0FEYWlJRFFRaHFLUUFBSUFlRlFnQWdBeWtBQUVMYjBkQ0ZtdHJmZ1dlRlFnQVFuWUNBZ0FBZ0FrSFFBR3BCQ0dvcEF3QWdBaWtEVUlVaEJ5QUZJUU1NQUFzTElBRWdBR29pQTBGNGFpa0FBQ0VHSUFOQmNHb3BBQUFoQkFzZ0FrRVFhaUFFUXR2UjBJV2EydCtCWjRWQ0FDQUdJQWVGUWdBUW5ZQ0FnQUFnQWlBQ1FSQnFRUWhxS1FNQVF0dlIwSVdhMnQrQlo0VkNBQ0FCclNBQ0tRTVFoVUt2eVBYRng2eUh1NkIvaFVJQUVKMkFnSUFBSUFKQkNHb3BBd0FoQnlBQ0tRTUFJUVFnQWtIZ0FHb2tnSUNBZ0FBZ0J5QUVoUXRZQVFKL1FRQWhCQUpBSUFFZ0EwY05BQUpBSUFBZ0FrY05BRUVCRHdzRFFDQUJSU0VFSUFGRkRRRWdBVUYvYWlFQklBSXRBQUFoQXlBQUxRQUFJUVVnQUVFQmFpRUFJQUpCQVdvaEFpQUZJQU5HRFFBTEN5QUVDNnNUQmdWL0FYNERmd0YrRzM4QmZpT0FnSUNBQUVHZ0FXc2lBU1NBZ0lDQUFFRUFJUUlEUUNBQUlBSnFJUU1nQWtFQmFpSUVJUUlnQXkwQUFBMEFDMEVBSVFJZ0FVRVlha0VJYWlJRlFRQTJBZ0FnQVVJQU53TVlJQUVqZ1lDQWdBQkJtSURBZ0FCcUtRTUFJZ1kzQWlRZ0FTQUdOd0owSUFGQkFEWUNjQ0FCUXFyVnF0VUtOd0pvQWtBQ1FDQUJRZWdBYWlBRVFYOXFJZ2NRaklDQWdBQkIvLzhEY1VVTkFDQUJRUmhxRUlhQWdJQUFEQUVMSUFGQkdHcEJER29oQ0NBR1FpQ0lweUVKSUFFcEFuUWhDaUFCS0FKd0lRc2dBU2dDYkNFQ0lBRW9BbWdoRENBR3B5RU5RWUFDSVE1QkFDRVBBa0FEUUNBQ0lSQWdEMEVDYWlFRElBQWdEMm9oRVVFQUlRSUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQU5BQWtBQ1FDQURJQUpxSUFkUERRQWdBVUV3YWlBQlFSaHFJQkVnQWtFQ2FpSVNFSWlBZ0lBQUlBRXRBRElOQVNBQktBSVlJUk1nQVNnQ0lBMEdBa0FDUUNBVERRQkJBU0VEREFFTElCTkJmR29vQWdDdFF0QUFmaUlHSUFaQzVBQ0NmVUxrQUh4QzBBQ0FweUVEQzBFQUlRUWdBVUhvQUdwQkNHb2lGRUVBTmdJQUlBRkNBRGNEYUVFQURRVUNRQUpBUWdGQklDQURaMnV0UXYvL0E0T0dweUlEUVFnZ0EwRUlTeHNpRlVFQmRDQVZRUTlxUVh4eEloWWdGVUVEZEdvaUYycEJBMnBCZkhFaUF3MEFRWHdoQXd3QkMwRUFJUVFnRFNBRFFRSkJBQ0FKS0FJQUVZQ0FnSUFBQUNJRFJRMEdDeUFEUVFocUloZ2dGVFlDQUNBRElBTWdGbW8yQWdRZ0F5QURJQmRxTmdJQUlBRWdBMEVNYWlJRE5nSm9JQU5CQUNBVkVKNkFnSUFBSVFRZ0FTQVZyVUxRQUg1QzVBQ0FweUlaTmdKd0lBRW9BaHdpR2tVTkJFRUFJUnRCQUNFY0FrQWdFMFVOQUNBVFFYeHFLQUlBSVJ3TElBUkJkR29oSFNBRVFYaHFJUjRnRTBGMGFpSURLQUlBSVI4Z0EwRUVhaWdDQUNFZ1FRQWhJUU5BSUNFZ0hFWU5CQUpBSUJNZ0lXb3NBQUJCQUU0TkFDQWZJQ0ZCQVhScUx3RUFJU0lnSUNBaFFRTjBhaUlES0FJRUlTTWdBeWdDQUNFa0FrQWdHMFVOQUNBa0lDTVFpWUNBZ0FBaEJpQVlLQUlBSWhWQmYyb2lGeUFHcDNFaEF5QUdRam1JcHlFbEEwQWdCQ0FEYWl3QUFDSVdSUTBCSUJWRkRRRUNRQ0FXUVg5S0RRQWdKU0FXUWY4QWNVY05BQ0FrSUNNZ0hpZ0NBQ0FEUVFOMGFpSVdLQUlBSUJZb0FnUVFpb0NBZ0FCQkFYRkZEUUFnQVVFQk9nQ2NBUXdDQ3lBVlFYOXFJUlVnQTBFQmFpQVhjU0VEREFBTEN5QWtJQ01RaVlDQWdBQWhCaUFZS0FJQVFYOXFJaFlnQnFkeElRTUNRQU5BSUFRZ0Eyb2lGU3dBQUVGL1NnMEJJQU5CQVdvZ0ZuRWhBd3dBQ3dzZ0ZTQUdRam1JcDBHQUFYSTZBQUFnSGlnQ0FDQURRUU4wYWlJVklDTTJBZ1FnRlNBa05nSUFJQjBvQWdBZ0EwRUJkR29nSWpzQkFDQVpRWDlxSVJrZ0cwRUJhaUliSUJwSERRQWdHaUViREFVTElDRkJBV29oSVF3QUN3c0NRQUpBSUE5QkFXb2dCMGtOQUNBUkxRQUFJUUlNQVFzZ0FVRTRha0VRYWlBQlFSaHFRUkJxS0FJQU5nSUFJQUZCT0dwQkNHb2dBVUVZYWtFSWFpa0RBRGNEQUNBQklBRXBBeGczQXpnZ0FVSE1BR29nQVVFNGFpQVJJQUpCQW1vUWlJQ0FnQUFDUUNBQkxRQk9EUUFDUUFKQUlBSU5BQ0FSTFFBQUlRTU1BUXNnQVVIUUFHcEJFR29nQVVFWWFrRVFhaWdDQURZQ0FDQUJRZEFBYWtFSWFpQUJRUmhxUVFocUtRTUFOd01BSUFFZ0FTa0RHRGNEVUNBQlFlUUFhaUFCUWRBQWFpQVJJQUpCQVdvUWlJQ0FnQUFnQVM4QlpDRURDeUFNSUJCQkFYUnFJQU03QVFBZ0VFRUJhaUVRSUJFZ0FtcEJBV290QUFBaEFnd0JDeUFCTHdGTUlRSUxJQXdnRUVFQmRHb2dBanNCQUNBQlFSaHFFSWFBZ0lBQUlBRWdDamNDRUNBQklBczJBZ3dnQVNBUVFRRnFOZ0lJSUFFZ0REWUNCRUVBSVFJZ0FVRUVhaUFRUVFKcUVJeUFnSUFBUWYvL0EzRU5EaUFCS0FJRUlnTWdBU2dDQ0NJQ1FRRjBha0VBT3dFQUlBRW9BZ3doQUNBQklBRXBBaEFpQmpjRE9BSkFJQUZCT0dvZ0F5QUFJQUpCQVdvaUFoQ05nSUNBQUVFQmNVVU5BQ0FESVFJTUR3c2dBVUhvQUdvZ0FVRTRhaUFDRUk2QWdJQUFJQUV2QVhBTkRTQUJLQUpvSWdJZ0F5QUJLQUpzUVFGMEVKK0FnSUFBR2lBQklBWTNBMUFnQVVIUUFHb2dBeUFBRUkrQWdJQUFEQTRMSUFKQkFXb2hBZ3dBQ3dzZ0FTQVpOZ0p3SUFFZ0d6WUNiQXNnQlNnQ0FDRURJQVVnRkNnQ0FEWUNBQ0FVSUFNMkFnQWdBVUVBTmdJY0lBRXBBeGdoQmlBQklBRXBBMmdpSmpjREdDQUJJQVkzQTJnZ0pxY2hFMEVCSVFRTElBRkI2QUJxSUFnUWg0Q0FnQUFnQkEwQUk0R0FnSUFBSVFNZ0FTZ0NIQTBCSUFOQmdJREFnQUJxSVJZTUF3c2dFU0FTRUltQWdJQUFJUVlDUUFKQUlCTU5BQ0FHcHlFRFFRQWhGa0YvSVNFTUFRc2dFMEY4YWlnQ0FDSVdRWDlxSWlFZ0JxZHhJUU1MSUJOQmVHb2hJeUFUUVh4cUlTUWdCa0k1aUtjaEpTQVdJUVFEUUNBVElBTnFJaGNzQUFBaUZVVU5BaUFFUVFCR0RRSUNRQUpBSUJWQmYwb05BQ0FsSUJWQi93QnhSdzBBSUJFZ0VpQWpLQUlBSUFOQkEzUnFJaFVvQWdBZ0ZTZ0NCQkNLZ0lDQUFFRUJjVVVOQVF3R0N5QVdJQ1FvQWdCSERRQWdBeUFXSUJWQkFVWWJJUllMSUFSQmYyb2hCQ0FEUVFGcUlDRnhJUU1NQUFzTElCRWdFaENKZ0lDQUFDRUdBa0FDUUNBVERRQkJBQ0VFUVg4aEZ3d0JDeUFUUVh4cUtBSUFJZ1JCZjJvaEZ3c2dFMEY0YWlFbElCY2dCcWR4SVFNZ0JrSTVpS2NoSVFOQUk0R0FnSUFBUVlDQXdJQUFhaUVXSUJNZ0Eyb3NBQUFpRlVVTkFpQUVSUTBDQWtBZ0ZVRi9TZzBBSUNFZ0ZVSC9BSEZIRFFBZ0VTQVNJQ1VvQWdBZ0EwRURkR29pRlNnQ0FDQVZLQUlFRUlxQWdJQUFRUUZ4UlEwQUlBRkJBVG9BZ0FFZ0FTQUROZ0o4SUFGQi9BQnFJUllNQXdzZ0JFRi9haUVFSUFOQkFXb2dGM0VoQXd3QUN3c2dKQ2dDQUNFRUlBRWdBU2dDSUVGL2FqWUNJQ0FUSUJacUlCY2dGaUFFU1NJRUd5QWxRWUFCY2pvQUFDQVRRWFJxS0FJQUlSVWdJeWdDQUNFWElBRWdBU2dDSEVFQmFqWUNIQ0FYSUJZZ0F5QUVHeUlEUVFOMGFpSUVJQkkyQWdRZ0JDQVJOZ0lBSUJVZ0EwRUJkR29oQXd3Q0N5QVdMUUFFUlEwQ0lCWW9BZ0FoQXdzZ0UwRjBhaWdDQUNBRFFRRjBhaUVEQ3lBRElBNDdBUUFDUUFKQUlBSU5BQ0FSTFFBQUlRSkJBU0VEREFFTElBRkJOR29nQVVFWWFpQVJJQUpCQVdvaUF4Q0lnSUNBQUNBQkx3RTBJUUlMSUF3Z0VFRUJkR29nQWpzQkFDQURJQTlxSVE4Z0VFRUJhaUVDSUE1QkFXb2lEa0gvL3dOeFFmLy9BMGNOQVNBVFFRQWdFMEY4YWlnQ0FDSURFSjZBZ0lBQUdpQU1JQUpCQVhScVFmNy9BenNCQUNBQlFRQTJBaHdnQVNBRHJVTFFBSDVDNUFDQVBnSWdJQkJCQW1vaEFrR0FBaUVPREFFTEN5QUJRUmhxRUlhQWdJQUFDMEVBSVFJTElBRkJvQUZxSklDQWdJQUFJQUlMckFFQkJYOGpnSUNBZ0FCQkVHc2lBaVNBZ0lDQUFFRUFJUU1DUUNBQUtBSUlJZ1FnQVU4TkFBSkFJQUJCREdvaUJTQUFLQUlBSWdZZ0JDQUJFSTJBZ0lBQVFRRnhEUUFnQWtFRWFpQUZJQUVRam9DQWdBQWdBaThCRENJRERRRWdBaWdDQ0NFQklBSW9BZ1FnQUNnQ0FDQUFLQUlFUVFGMEVKK0FnSUFBSVFNZ0JTQUdJQVFRajRDQWdBQWdBQ0FETmdJQUN5QUFJQUUyQWdoQkFDRURDeUFDUVJCcUpJQ0FnSUFBSUFNTGlBRUJBbjhqZ0lDQWdBQkJFR3NpQkNTQWdJQ0FBQUpBQWtBZ0F3MEFJQVFnQUNrQ0FEY0RBQ0FFSUFFZ0FoQ1BnSUNBQUVFQklRVU1BUXRCQUNFRklBSkZEUUFnQkNBRFFRQklPZ0FNSUFOQmYwd05BQ0FBS0FJQUlBRWdBa0VCZEVFQklBTkJBWFJCQUNBQUtBSUVLQUlFRVlLQWdJQUFBQ0VGQ3lBRVFSQnFKSUNBZ0lBQUlBVUxsUUVCQVg4amdJQ0FnQUJCTUdzaUF5U0FnSUNBQUNBRElBRXBBZ0EzQXdnZ0EwRVFhaUFEUVFocUlBSVFnNENBZ0FBQ1FBSkFJQU12QVJRaUFVVU5BQ0FESUFFN0FTQWdBMEVZYWlFQ0RBRUxJQU5CQURzQkxDQURJQUkyQWlnZ0F5QURLQUlRTmdJa0lBTkJKR29oQWdzZ0FDQUNLUUlBTndJQUlBQkJDR29nQWtFSWFpZ0NBRFlDQUNBRFFUQnFKSUNBZ0lBQUN6Y0JBWDhDUUNBQ1FRRjBRUUFnQWhzaUEwVU5BQ0FBS0FJQUlBRkJBaUFDR3lBRFFRRkJBQ0FBS0FJRUtBSUlFWUdBZ0lBQUFBc0xQd0VCZnlPQWdJQ0FBRUVRYXlJQkpJQ0FnSUFBSUFFZ0FDa0NERGNEQ0NBQlFRaHFJQUFvQWdBZ0FDZ0NDQkNSZ0lDQUFDQUJRUkJxSklDQWdJQUFDemNCQVg4Q1FDQUNRUU4wUVFBZ0Foc2lBMFVOQUNBQUtBSUFJQUZCQkNBQ0d5QURRUUpCQUNBQUtBSUVLQUlJRVlHQWdJQUFBQXNMdFFjREJYOEJmZ1ovSTRDQWdJQUFRZEFBYXlJQkpJQ0FnSUFBUVd3aEFrRi9JUU1nQUNFRUEwQWdBMEVCYWlFRElBSkJGR29oQWlBRUx3RUFJUVVnQkVFQ2FpRUVJQVVOQUFzZ0FVRUFOZ0lvSUFGQ3F0V3ExUW8zQWlBZ0FTT0JnSUNBQUVHWWdNQ0FBR29wQXdBaUJqY0NMQ0FCUVFBNkFEUUNRQUpBQWtCQkFVVU5BQ0FHcDBINHdTWkJBa0VBSUFaQ0lJaW5LQUlBRVlDQWdJQUFBQ0lGUlEwQUlBRkJuK2dFTmdJb0lBRWdCVFlDSUVFQUlRUUNRQU5BSUFSQitQOGZSZzBCSUFVZ0JHcENBRGNDQUNBRVFRaHFJUVFNQUFzTElBRkIvLzhETmdJa0lBRWdCamNDUUVFQUlRUWdBVUVBTmdJOElBRkNxdFdxMVFvM0FqUWdBVUUwYWlBQ0VKT0FnSUFBUWYvL0EzRU5BQ0FCS1FKQUlRWWdBU2dDUENFSElBRW9BalFpQ0NBQktBSTRJZ0pxSUFBdEFBQTZBQUFnQlNBQUx3RUFRUU4wYWlJSlFRRTJBZ1FnQ1NBSU5nSUFJQUpCQVdvaENrRUJJUUpCZ0FJaEN3TkFJQW9oQ1FKQUFrQUNRQUpBSUFJZ0EwOE5BQUpBSUFBZ0FrRUJkR292QVFBaUNrSCsvd05IRFFBZ0FrRUJhaUlDSUFOUERRRkJBQ0VFQWtBRFFDQUVRZmovSDBZTkFTQUZJQVJxUWdBM0FnQWdCRUVJYWlFRURBQUxDd0pBSUFBZ0FrRUJkR292QVFBaUJFR0FBa2tOQUNBQlFmLy9BellDSkF3SEN5QUlJQWxxSUFRNkFBQWdDVUVCYWlFS1FZQUNJUXNNQkFzZ0NrR0FBa2tOQVFKQUlBVWdDa0VEZEdvaUNpZ0NBQ0lNRFFBZ0NDQUphaUFJSUFScUlnb2dDU0FFYXlJTUVKK0FnSUFBR2lBSUlBd2dDV29pREdvZ0NpMEFBRG9BQUNBTVFRRnFJUW9NQXdzZ0NDQUphaUFNSUFvb0FnUWlDaENmZ0lDQUFCb2dDaUFKYWlFS0RBSUxJQUZCLy84RE5nSWtJQUZCSUdvUWtJQ0FnQUFnQVNBR053SVlJQUVnQnpZQ0ZDQUJJQWcyQWd3Z0FTQUpOZ0lRUVFBaEJDQUJRUXhxSUFsQkFXb1FrNENBZ0FCQi8vOERjUTBHSUFFb0Fnd2lBeUFCS0FJUUlnUnFRUUE2QUFBZ0FTZ0NGQ0VDSUFFZ0FTa0NHQ0lHTndOSUFrQWdBVUhJQUdvZ0F5QUNJQVJCQVdvaUJCQ1VnSUNBQUVFQmNVVU5BQ0FESVFRTUJ3c2dBVUUwYWlBQlFjZ0FhaUFFRUpXQWdJQUFJQUV2QVR3TkJTQUJLQUkwSWdRZ0F5QUJLQUk0RUorQWdJQUFHaUFCSUFZM0F5QWdBVUVnYWlBRElBSVFoWUNBZ0FBTUJnc2dDQ0FKYWlBS09nQUFJQWxCQVdvaENnc2dCU0FMUWYvL0EzRkJBM1JxSWd3Z0NTQUVhMEVCYWpZQ0JDQU1JQWdnQkdvMkFnQWdDMEVCYWlFTEN5QUNRUUZxSVFJZ0NTRUVEQUFMQ3lBQlFTQnFFSkNBZ0lBQUMwRUFJUVFMSUFGQjBBQnFKSUNBZ0lBQUlBUUxxUUVCQlg4amdJQ0FnQUJCRUdzaUFpU0FnSUNBQUVFQUlRTUNRQ0FBS0FJSUlnUWdBVThOQUFKQUlBQkJER29pQlNBQUtBSUFJZ1lnQkNBQkVKU0FnSUFBUVFGeERRQWdBa0VFYWlBRklBRVFsWUNBZ0FBZ0FpOEJEQ0lERFFFZ0FpZ0NDQ0VCSUFJb0FnUWdBQ2dDQUNBQUtBSUVFSitBZ0lBQUlRTWdCU0FHSUFRUWhZQ0FnQUFnQUNBRE5nSUFDeUFBSUFFMkFnaEJBQ0VEQ3lBQ1FSQnFKSUNBZ0lBQUlBTUxkUUVDZnlPQWdJQ0FBRUVRYXlJRUpJQ0FnSUFBQWtBQ1FDQUREUUFnQkNBQUtRSUFOd01BSUFRZ0FTQUNFSVdBZ0lBQVFRRWhCUXdCQzBFQUlRVWdBa1VOQUVFQURRQWdBQ2dDQUNBQklBSkJBQ0FEUVFBZ0FDZ0NCQ2dDQkJHQ2dJQ0FBQUFoQlFzZ0JFRVFhaVNBZ0lDQUFDQUZDNVVCQVFGL0k0Q0FnSUFBUVRCcklnTWtnSUNBZ0FBZ0F5QUJLUUlBTndNSUlBTkJFR29nQTBFSWFpQUNFSUdBZ0lBQUFrQUNRQ0FETHdFVUlnRkZEUUFnQXlBQk93RWdJQU5CR0dvaEFnd0JDeUFEUVFBN0FTd2dBeUFDTmdJb0lBTWdBeWdDRURZQ0pDQURRU1JxSVFJTElBQWdBaWtDQURjQ0FDQUFRUWhxSUFKQkNHb29BZ0EyQWdBZ0EwRXdhaVNBZ0lDQUFBdlNBZ01HZndGK0IzOGpnSUNBZ0FCQkVHc2lBeVNBZ0lDQUFDQUFLQUlFSVFRZ0FDZ0NBQ0VGUVFBaEJpQUNRZjhCY1NFSEEzOENRQUpBQWtBZ0JpQUVSdzBBUVg4aENBd0JDd0pBSUFVZ0JrRUVkR29pQWtFSWFpa0RBQ0lKUWdCVERRQWdBaWtEQUhzZ0NYdDhweUFCU1EwQ0N5QUdRUWQwSWdoQmdBRnFJUW9EUUNBSUlBcFBEUUlnQ0NBQUtRSUFJZ2xDR1lpblFZQi9jU0lDSUFnZ0Frc2JJZ3NnQ0dzaERDQUpwMEVJSUFsQ0lJaW5HeUVOSUFoQkVIUm9JUTVCQUNFQ0FrQURRQUpBSUF3Z0FrY05BQ0FMSVE4TUFndEIvd0VnQ0NBQ2FpSVBRUWR4SWhCQkIzTjJRUUVnRUhSeElBMGdEMEVEZG1vdEFBQnhSUTBCSUFKQkFXb2lBaUFCU1EwQUlBNGdCMGtOQUFzZ0F5QUpOd01JSUFOQkNHb2dDQ0FCUVFBUWw0Q0FnQUFNQWdzZ0QwRUJhaUVJREFBTEN5QURRUkJxSklDQWdJQUFJQWdQQ3lBR1FRRnFJUVlNQUFzTFZBRUJmeUFEUVFGeElRUUNRQU5BSUFKRkRRRWdBQ2dDQUVFSUlBQW9BZ1FiSUFGQkEzWnFJZ01nQXkwQUFFRitJQUZCQjNFaUEzZHhJQVFnQTNSeU9nQUFJQUZCQVdvaEFTQUNRWDlxSVFJTUFBc0xDOXNCQVFOL0k0Q0FnSUFBUVJCcklnSWtnSUNBZ0FBQ1FDQUFRWUFRVHcwQUk0R0FnSUFBUWFpQXdJQUFhaUFBSUFGQmdCQWdBVUdBRUVrYklBQnJFSm1BZ0lBQUN3SkFJQUZCZ0JCTkRRQUNRQ09CZ0lDQUFFR2dnTUNBQUdvb0FnUU5BQ09CZ0lDQUFFR2dnTUNBQUdvaUEwR0FJRFlDQkNBRElBRkJmMm9pQVVFUWRDSUVOZ0lBSUFSQkFFR0FnQVFRbm9DQWdBQWFDeUFDSTRHQWdJQUFRYUNBd0lBQWFpa0RBRGNEQ0NBQ1FRaHFJQUJCZ0JBZ0FFR0FFRXNiSWdCQmdIQnFJQUVnQUdzUW1ZQ0FnQUFMSUFKQkVHb2tnSUNBZ0FBTE93RUJmeU9BZ0lDQUFFRVFheUlESklDQWdJQUFJQU1nQUNrQ0FEY0RDQ0FEUVFocUlBRWdBa0VCRUplQWdJQUFJQU5CRUdva2dJQ0FnQUFMdlFFQkJIOUJBQ0VFQWtBZ0FVR0JnSHhQRFFBQ1FDT0JnSUNBQUVHb2dNQ0FBR29nQVVILy93TnFRUkIySWdFZ0FoQ1dnSUNBQUNJRVFYOUhEUUFDUUNPQmdJQ0FBRUdnZ01DQUFHb2dBU0FDRUphQWdJQUFJZ1JCZjBZTkFDQUVRWUFRYWlFRURBRUxRUUFoQkVFQklBSjBJZ1UvQUNJR1FSQjBJZ0pxUVg5cVFRQWdCV3R4SWdVZ0FtdEJFSFlpQnlBQmFrQUFRUUZJRFFFZ0J5QUdhaUVFSUFVZ0FrWU5BQ0FHSUFRUW1JQ0FnQUFMSUFSQkVIUWhCQXNnQkF0UEFRRi9Ba0FnQWtILy93TnFJZ1pCZ0lCOGNTQUVUeUlDUlEwQUlBUkIvLzhEYWtFUWRpSUVJQVpCRUhZaUJrWU5BQ0FFSUFGQi8vOERha0VRZGlJQmFpQUJJQVpxRUppQWdJQUFDeUFDQ3lFQUlBRkIvLzhEYWtFUWRpSUJJQUVnQWtILy93TnFRUkIyYWhDWWdJQ0FBQXQxQVFGK0lBQWdCQ0FCZmlBQ0lBTitmQ0FEUWlDSUlnSWdBVUlnaUNJRWZud2dBMEwvLy8vL0Q0TWlBeUFCUXYvLy8vOFBneUlCZmlJRlFpQ0lJQU1nQkg1OElnTkNJSWg4SUFOQy8vLy8vdytESUFJZ0FYNThJZ0ZDSUloOE53TUlJQUFnQVVJZ2hpQUZRdi8vLy84UGc0UTNBd0FMTEFFQmZ3SkFJQUpGRFFBZ0FDRURBMEFnQXlBQk9nQUFJQU5CQVdvaEF5QUNRWDlxSWdJTkFBc0xJQUFMUWdFQmZ3SkFJQUpGRFFBZ0FrRi9haUVDSUFBaEF3TkFJQU1nQVMwQUFEb0FBQ0FDUlEwQklBSkJmMm9oQWlBQlFRRnFJUUVnQTBFQmFpRUREQUFMQ3lBQUN3dEJBZ0JCZ0lEQUFBc0lBQUFBQUFBQUFBQUFRWWlBd0FBTEtBRUFBQUFDQUFBQUF3QUFBQUFBQUFBQUFBQUFDQUFRQUtxcXFxb0FBQUFBTUFBUUFCQUFBQUE9Iik7CmNvbnN0IHMgPSBhd2FpdCB0KCksIEIgPSBzLmV4cG9ydHM7CmZ1bmN0aW9uIHcoSSkgewogIGNvbnN0IHsgcHRyOiBDLCBsZW5ndGg6IEEgfSA9IEQoSSwgQiksIGcgPSBCLmNvbXByZXNzKEMpOwogIEIuZnJlZShDLCBBKTsKICBjb25zdCBRID0gbmV3IFVpbnQxNkFycmF5KAogICAgQi5tZW1vcnkuYnVmZmVyLnNsaWNlKAogICAgICBnLAogICAgICBnICsgKEIubWVtb3J5LmJ1ZmZlci5ieXRlTGVuZ3RoIC0gZykKICAgICkKICApLCBFID0gUS5pbmRleE9mKDApLCBpID0gUS5zbGljZSgwLCBFKSwgbyA9IGEoaSk7CiAgcmV0dXJuIEIuZnJlZShnLCBFICsgMSksIG87Cn0KZnVuY3Rpb24gRihJKSB7CiAgY29uc3QgQyA9IEIuYWxsb2NVaW50MTYoCiAgICBJLmxlbmd0aCArIDEKICApLCBBID0gbmV3IFVpbnQxNkFycmF5KAogICAgQi5tZW1vcnkuYnVmZmVyLAogICAgQywKICAgIEkubGVuZ3RoICsgMQogICk7CiAgZm9yIChsZXQgbyA9IDA7IG8gPCBJLmxlbmd0aDsgbysrKQogICAgQVtvXSA9IEkuY2hhckNvZGVBdChvKTsKICBBW0kubGVuZ3RoXSA9IDA7CiAgY29uc3QgZyA9IEIuZGVjb21wcmVzcygKICAgIEMKICApOwogIEIuZnJlZShDLCBJLmxlbmd0aCArIDEpOwogIGNvbnN0IFEgPSBuZXcgVWludDhBcnJheSgKICAgIEIubWVtb3J5LmJ1ZmZlci5zbGljZSgKICAgICAgZywKICAgICAgZyArIChCLm1lbW9yeS5idWZmZXIuYnl0ZUxlbmd0aCAtIGcpCiAgICApCiAgKSwgRSA9IFEuaW5kZXhPZigwKTsKICByZXR1cm4gQi5mcmVlKGcsIEUgKyAxKSwgbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKAogICAgUS5zbGljZSgwLCBFKQogICk7Cn0Kb25tZXNzYWdlID0gYXN5bmMgZnVuY3Rpb24oSSkgewogIGNvbnN0IHsgY29tbWFuZDogQywgaWQ6IEEsIGRhdGE6IGcgfSA9IEkuZGF0YTsKICBzd2l0Y2ggKEMpIHsKICAgIGNhc2UgImRlY29tcHJlc3MiOiB7CiAgICAgIHBvc3RNZXNzYWdlKHsgaWQ6IEEsIGRhdGE6IEYoZykgfSk7CiAgICAgIGJyZWFrOwogICAgfQogICAgY2FzZSAiY29tcHJlc3MiOiB7CiAgICAgIHBvc3RNZXNzYWdlKHsgaWQ6IEEsIGRhdGE6IHcoZykgfSk7CiAgICAgIGJyZWFrOwogICAgfQogIH0KfTsK", V = typeof window < "u" && window.Blob && new Blob([atob(J)], { type: "text/javascript;charset=utf-8" });
2
+ function d() {
3
+ let U;
4
+ try {
5
+ if (U = V && (window.URL || window.webkitURL).createObjectURL(V), !U)
6
+ throw "";
7
+ return new Worker(U);
8
+ } catch {
9
+ return new Worker("data:application/javascript;base64," + J, { type: "module" });
10
+ } finally {
11
+ U && (window.URL || window.webkitURL).revokeObjectURL(U);
12
+ }
13
+ }
14
+ const R = new d();
15
+ let l = 0;
16
+ const Q = {};
17
+ R.onmessage = function(U) {
18
+ console.log("onmessage", U);
19
+ const F = U.data.id;
20
+ Q[F](U.data.data), delete Q[F];
21
+ };
22
+ async function S(U) {
23
+ const F = l++;
24
+ return console.log("compress", F), new Promise((B) => {
25
+ Q[F] = B, R.postMessage({ command: "compress", id: F, data: U });
26
+ });
27
+ }
28
+ async function Z(U) {
29
+ const F = l++;
30
+ return console.log("decompress", F), new Promise((B) => {
31
+ Q[F] = B, R.postMessage({ command: "decompress", id: F, data: U });
32
+ });
33
+ }
34
+ export {
35
+ S as compress,
36
+ Z as decompress
37
+ };
@@ -0,0 +1,2 @@
1
+ export declare function compress(str: string): string;
2
+ export declare function decompress(compressedStr: string): string;
@@ -0,0 +1,42 @@
1
+ import { i as o, c as F, U as G } from "./wasm-helper-6790be72.js";
2
+ const w = (I) => o(I, "data:application/wasm;base64,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IgBBgHBqIAEgAGsQmYCAgAALIAJBEGokgICAgAALOwEBfyOAgICAAEEQayIDJICAgIAAIAMgACkCADcDCCADQQhqIAEgAkEBEJeAgIAAIANBEGokgICAgAALvQEBBH9BACEEAkAgAUGBgHxPDQACQCOBgICAAEGogMCAAGogAUH//wNqQRB2IgEgAhCWgICAACIEQX9HDQACQCOBgICAAEGggMCAAGogASACEJaAgIAAIgRBf0YNACAEQYAQaiEEDAELQQAhBEEBIAJ0IgU/ACIGQRB0IgJqQX9qQQAgBWtxIgUgAmtBEHYiByABakAAQQFIDQEgByAGaiEEIAUgAkYNACAGIAQQmICAgAALIARBEHQhBAsgBAtPAQF/AkAgAkH//wNqIgZBgIB8cSAETyICRQ0AIARB//8DakEQdiIEIAZBEHYiBkYNACAEIAFB//8DakEQdiIBaiABIAZqEJiAgIAACyACCyEAIAFB//8DakEQdiIBIAEgAkH//wNqQRB2ahCYgICAAAt1AQF+IAAgBCABfiACIAN+fCADQiCIIgIgAUIgiCIEfnwgA0L/////D4MiAyABQv////8PgyIBfiIFQiCIIAMgBH58IgNCIIh8IANC/////w+DIAIgAX58IgFCIIh8NwMIIAAgAUIghiAFQv////8Pg4Q3AwALLAEBfwJAIAJFDQAgACEDA0AgAyABOgAAIANBAWohAyACQX9qIgINAAsLIAALQgEBfwJAIAJFDQAgAkF/aiECIAAhAwNAIAMgAS0AADoAACACRQ0BIAJBf2ohAiABQQFqIQEgA0EBaiEDDAALCyAACwtBAgBBgIDAAAsIAAAAAAAAAAAAQYiAwAALKAEAAAACAAAAAwAAAAAAAAAAAAAACAAQAKqqqqoAAAAAMAAQABAAAAA="), a = await w(), A = a.exports;
3
+ function h(I) {
4
+ const { ptr: C, length: i } = F(I, A), g = A.compress(C);
5
+ A.free(C, i);
6
+ const B = new Uint16Array(
7
+ A.memory.buffer.slice(
8
+ g,
9
+ g + (A.memory.buffer.byteLength - g)
10
+ )
11
+ ), E = B.indexOf(0), D = B.slice(0, E), Q = G(D);
12
+ return A.free(g, E + 1), Q;
13
+ }
14
+ function J(I) {
15
+ const C = A.allocUint16(
16
+ I.length + 1
17
+ ), i = new Uint16Array(
18
+ A.memory.buffer,
19
+ C,
20
+ I.length + 1
21
+ );
22
+ for (let Q = 0; Q < I.length; Q++)
23
+ i[Q] = I.charCodeAt(Q);
24
+ i[I.length] = 0;
25
+ const g = A.decompress(
26
+ C
27
+ );
28
+ A.free(C, I.length + 1);
29
+ const B = new Uint8Array(
30
+ A.memory.buffer.slice(
31
+ g,
32
+ g + (A.memory.buffer.byteLength - g)
33
+ )
34
+ ), E = B.indexOf(0);
35
+ return A.free(g, E + 1), new TextDecoder().decode(
36
+ B.slice(0, E)
37
+ );
38
+ }
39
+ export {
40
+ h as compress,
41
+ J as decompress
42
+ };
@@ -0,0 +1,45 @@
1
+ function s(e, n) {
2
+ const t = new TextEncoder().encode(e), a = n.allocUint8(t.length + 1), r = new Uint8Array(
3
+ n.memory.buffer,
4
+ a,
5
+ t.length + 1
6
+ );
7
+ return r.set(t), r[t.length] = 0, { ptr: a, length: t.length + 1 };
8
+ }
9
+ function f(e) {
10
+ const n = new Array(e.length);
11
+ for (let t = 0; t < e.length; t++)
12
+ n[t] = String.fromCharCode(e[t]);
13
+ return n.join("");
14
+ }
15
+ const c = async (e = {}, n) => {
16
+ let t;
17
+ if (n.startsWith("data:")) {
18
+ const a = n.replace(/^data:.*?base64,/, "");
19
+ let r;
20
+ if (typeof Buffer == "function" && typeof Buffer.from == "function")
21
+ r = Buffer.from(a, "base64");
22
+ else if (typeof atob == "function") {
23
+ const i = atob(a);
24
+ r = new Uint8Array(i.length);
25
+ for (let o = 0; o < i.length; o++)
26
+ r[o] = i.charCodeAt(o);
27
+ } else
28
+ throw new Error("Failed to decode base64-encoded data URL, Buffer and atob are not supported");
29
+ t = await WebAssembly.instantiate(r, e);
30
+ } else {
31
+ const a = await fetch(n), r = a.headers.get("Content-Type") || "";
32
+ if ("instantiateStreaming" in WebAssembly && r.startsWith("application/wasm"))
33
+ t = await WebAssembly.instantiateStreaming(a, e);
34
+ else {
35
+ const i = await a.arrayBuffer();
36
+ t = await WebAssembly.instantiate(i, e);
37
+ }
38
+ }
39
+ return t.instance;
40
+ };
41
+ export {
42
+ f as U,
43
+ s as c,
44
+ c as i
45
+ };
@@ -0,0 +1,5 @@
1
+ export type Message = {
2
+ command: string;
3
+ id: number;
4
+ data: string;
5
+ };
@@ -0,0 +1,5 @@
1
+ export type Message = {
2
+ command: string;
3
+ id: number;
4
+ data: string;
5
+ };
package/package.json ADDED
@@ -0,0 +1,62 @@
1
+ {
2
+ "name": "smol-string",
3
+ "version": "0.0.0",
4
+ "description": "Compression for browser localStorage",
5
+ "author": "Senryoku <maretverdant@gmail.com>",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/Senryoku/smol-string.git"
9
+ },
10
+ "license": "MIT",
11
+ "keywords": [
12
+ "compression",
13
+ "browser",
14
+ "localStorage",
15
+ "zig",
16
+ "typescript"
17
+ ],
18
+ "bugs": {
19
+ "url": "https://github.com/Senryoku/smol-string/issues"
20
+ },
21
+ "homepage": "https://github.com/Senryoku/smol-string",
22
+ "type": "module",
23
+ "scripts": {
24
+ "dev": "vite",
25
+ "build": "tsc && vite build",
26
+ "preview": "vite preview",
27
+ "test": "vitest",
28
+ "test:chrome": "vitest --browser.name=chrome --browser.headless --config browser.vitest.config.ts",
29
+ "test:firefox": "vitest --browser.name=firefox --browser.headless --config browser.vitest.config.ts",
30
+ "test:edge": "vitest --browser.name=edge --browser.headless --config browser.vitest.config.ts",
31
+ "test:safari": "vitest --browser.name=safari --browser.headless --config browser.vitest.config.ts",
32
+ "bench": "vitest bench"
33
+ },
34
+ "main": "./dist/smol-string.js",
35
+ "exports": {
36
+ ".": {
37
+ "types": "./dist/smol-string.d.ts",
38
+ "import": "./dist/smol-string.js"
39
+ },
40
+ "./packed": {
41
+ "types": "./dist/smol-string-packed.d.ts",
42
+ "import": "./dist/smol-string-packed.js"
43
+ },
44
+ "./worker": {
45
+ "types": "./dist/smol-string-worker.d.ts",
46
+ "import": "./dist/smol-string-worker.js"
47
+ },
48
+ "./worker/packed": {
49
+ "types": "./dist/smol-string-worker-packed.d.ts",
50
+ "import": "./dist/smol-string-worker-packed.js"
51
+ }
52
+ },
53
+ "devDependencies": {
54
+ "@vitest/browser": "^0.34.6",
55
+ "typescript": "^5.2.2",
56
+ "vite": "^4.4.5",
57
+ "vitest": "^0.34.6",
58
+ "webdriverio": "^8.20.4",
59
+ "vite-plugin-dts": "^3.6.2"
60
+ },
61
+ "dependencies": {}
62
+ }
package/src/common.ts ADDED
@@ -0,0 +1,25 @@
1
+ export function copyToWasmBuffer(
2
+ str: string,
3
+ exports: { allocUint8: (size: number) => number; memory: any }
4
+ ) {
5
+ // There's also an 'encodeInto' method to avoid a copy, but by encoding first, we con allocate only exactly what we need.
6
+ const utf8Str = new TextEncoder().encode(str);
7
+ const ptrToStr = exports.allocUint8(utf8Str.length + 1);
8
+ const inBuffer = new Uint8Array(
9
+ exports.memory.buffer,
10
+ ptrToStr,
11
+ utf8Str.length + 1
12
+ );
13
+ inBuffer.set(utf8Str); // Copy to WASM buffer.
14
+ inBuffer[utf8Str.length] = 0; // null terminate it.
15
+
16
+ return { ptr: ptrToStr, length: utf8Str.length + 1 };
17
+ }
18
+
19
+ // Horrible. Surely we can do better...
20
+ export function Uint16ArraytoString(buf: Uint16Array) {
21
+ const strBuilder = new Array(buf.length);
22
+ for (let i = 0; i < buf.length; i++)
23
+ strBuilder[i] = String.fromCharCode(buf[i]);
24
+ return strBuilder.join("");
25
+ }
Binary file
Binary file
@@ -0,0 +1,83 @@
1
+ import { Uint16ArraytoString, copyToWasmBuffer } from "./common.js";
2
+ import init from "./module-packed.wasm?init";
3
+
4
+ type exportsType = {
5
+ allocUint8: (size: number) => number;
6
+ allocUint16: (size: number) => number;
7
+ compressPacked: (ptr: number, length: number) => number;
8
+ decompressPacked: (
9
+ ptr: number,
10
+ length: number,
11
+ tokenCount: number
12
+ ) => number;
13
+ free: (ptr: number, length: number) => void;
14
+ memory: any;
15
+ };
16
+
17
+ const instance = await init();
18
+ const exports = instance.exports as exportsType;
19
+
20
+ export function compressPacked(str: string) {
21
+ const { ptr, length } = copyToWasmBuffer(str, exports);
22
+
23
+ const ptrToCompressed = exports.compressPacked(ptr, length);
24
+
25
+ exports.free(ptr, length);
26
+
27
+ const buffer = new Uint16Array(
28
+ exports.memory.buffer.slice(
29
+ ptrToCompressed,
30
+ ptrToCompressed +
31
+ (exports.memory.buffer.byteLength - ptrToCompressed)
32
+ )
33
+ );
34
+ const streamLength = (buffer.at(0)! << 16) + buffer.at(1)!;
35
+ // Includes the tokenCount at the start of the stream (2 * u16).
36
+ const compressedBuffer = buffer.slice(2, streamLength);
37
+
38
+ const compressed = Uint16ArraytoString(compressedBuffer);
39
+
40
+ exports.free(ptrToCompressed, streamLength);
41
+
42
+ return compressed;
43
+ }
44
+
45
+ export function decompressPacked(compressedStr: string) {
46
+ const tokenCount =
47
+ (compressedStr.charCodeAt(0)! << 16) + compressedStr.charCodeAt(1);
48
+
49
+ let ptrToCompressed = exports.allocUint16(compressedStr.length - 2);
50
+ let compressed_buffer = new Uint16Array(
51
+ exports.memory.buffer,
52
+ ptrToCompressed,
53
+ compressedStr.length - 2
54
+ );
55
+
56
+ for (let i = 2; i < compressedStr.length; i++)
57
+ compressed_buffer[i - 2] = compressedStr.charCodeAt(i);
58
+
59
+ const ptrToDecompressedNullTerminated = exports.decompressPacked(
60
+ ptrToCompressed,
61
+ compressedStr.length,
62
+ tokenCount
63
+ );
64
+
65
+ exports.free(ptrToCompressed, compressedStr.length);
66
+
67
+ const decompressed_buffer = new Uint8Array(
68
+ exports.memory.buffer.slice(
69
+ ptrToDecompressedNullTerminated,
70
+ ptrToDecompressedNullTerminated +
71
+ (exports.memory.buffer.byteLength -
72
+ ptrToDecompressedNullTerminated)
73
+ )
74
+ );
75
+ const decompressed_end = decompressed_buffer.indexOf(0);
76
+ const r = new TextDecoder().decode(
77
+ decompressed_buffer.slice(0, decompressed_end)
78
+ );
79
+
80
+ exports.free(ptrToDecompressedNullTerminated, decompressed_end + 1);
81
+
82
+ return r;
83
+ }
@@ -0,0 +1,32 @@
1
+ // @ts-expect-error
2
+ import Worker from "./worker-packed.js?worker&inline";
3
+
4
+ const worker = new Worker();
5
+
6
+ let nextID = 0;
7
+ const resolver: Record<number, (str: string) => void> = {};
8
+
9
+ worker.onmessage = function (e: { data: { id: number; data: string } }) {
10
+ console.log("onmessage", e);
11
+ const id = e.data.id;
12
+ resolver[id](e.data.data);
13
+ delete resolver[id];
14
+ };
15
+
16
+ export async function compress(data: string) {
17
+ const id = nextID++;
18
+ console.log("compress", id);
19
+ return new Promise((resolve) => {
20
+ resolver[id] = resolve;
21
+ worker.postMessage({ command: "compress", id, data });
22
+ });
23
+ }
24
+
25
+ export async function decompress(data: string) {
26
+ const id = nextID++;
27
+ console.log("decompress", id);
28
+ return new Promise((resolve) => {
29
+ resolver[id] = resolve;
30
+ worker.postMessage({ command: "decompress", id, data });
31
+ });
32
+ }
@@ -0,0 +1,32 @@
1
+ // @ts-expect-error
2
+ import Worker from "./worker.js?worker&inline";
3
+
4
+ const worker = new Worker();
5
+
6
+ let nextID = 0;
7
+ const resolver: Record<number, (str: string) => void> = {};
8
+
9
+ worker.onmessage = function (e: { data: { id: number; data: string } }) {
10
+ console.log("onmessage", e);
11
+ const id = e.data.id;
12
+ resolver[id](e.data.data);
13
+ delete resolver[id];
14
+ };
15
+
16
+ export async function compress(data: string) {
17
+ const id = nextID++;
18
+ console.log("compress", id);
19
+ return new Promise((resolve) => {
20
+ resolver[id] = resolve;
21
+ worker.postMessage({ command: "compress", id, data });
22
+ });
23
+ }
24
+
25
+ export async function decompress(data: string) {
26
+ const id = nextID++;
27
+ console.log("decompress", id);
28
+ return new Promise((resolve) => {
29
+ resolver[id] = resolve;
30
+ worker.postMessage({ command: "decompress", id, data });
31
+ });
32
+ }
@@ -0,0 +1,76 @@
1
+ import { Uint16ArraytoString, copyToWasmBuffer } from "./common.js";
2
+ import init from "./module.wasm?init";
3
+
4
+ type exportsType = {
5
+ allocUint8: (size: number) => number;
6
+ allocUint16: (size: number) => number;
7
+ compress: (ptr: number) => number;
8
+ decompress: (ptr: number) => number;
9
+ free: (ptr: number, length: number) => void;
10
+ memory: any;
11
+ };
12
+
13
+ const instance = await init();
14
+ const exports = instance.exports as exportsType;
15
+
16
+ export function compress(str: string) {
17
+ const { ptr, length } = copyToWasmBuffer(str, exports);
18
+
19
+ const ptrToCompressed = exports.compress(ptr);
20
+
21
+ exports.free(ptr, length);
22
+
23
+ const buffer = new Uint16Array(
24
+ exports.memory.buffer.slice(
25
+ ptrToCompressed,
26
+ ptrToCompressed +
27
+ (exports.memory.buffer.byteLength - ptrToCompressed)
28
+ )
29
+ );
30
+ const end = buffer.indexOf(0);
31
+ const compressed = buffer.slice(0, end);
32
+
33
+ const r = Uint16ArraytoString(compressed);
34
+
35
+ exports.free(ptrToCompressed, end + 1);
36
+
37
+ return r;
38
+ }
39
+
40
+ export function decompress(compressedStr: string) {
41
+ const ptrToCompressedNullTerminated = exports.allocUint16(
42
+ compressedStr.length + 1
43
+ );
44
+ const compressed_buffer = new Uint16Array(
45
+ exports.memory.buffer,
46
+ ptrToCompressedNullTerminated,
47
+ compressedStr.length + 1
48
+ );
49
+ for (let i = 0; i < compressedStr.length; i++)
50
+ compressed_buffer[i] = compressedStr.charCodeAt(i);
51
+ compressed_buffer[compressedStr.length] = 0;
52
+
53
+ const ptrToDecompressedNullTerminated = exports.decompress(
54
+ ptrToCompressedNullTerminated
55
+ );
56
+
57
+ exports.free(ptrToCompressedNullTerminated, compressedStr.length + 1);
58
+
59
+ const decompressed_buffer = new Uint8Array(
60
+ exports.memory.buffer.slice(
61
+ ptrToDecompressedNullTerminated,
62
+ ptrToDecompressedNullTerminated +
63
+ (exports.memory.buffer.byteLength -
64
+ ptrToDecompressedNullTerminated)
65
+ )
66
+ );
67
+ const decompressed_end = decompressed_buffer.indexOf(0);
68
+
69
+ exports.free(ptrToDecompressedNullTerminated, decompressed_end + 1);
70
+
71
+ const r = new TextDecoder().decode(
72
+ decompressed_buffer.slice(0, decompressed_end)
73
+ );
74
+
75
+ return r;
76
+ }
package/src/wasm.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ declare module "*.wasm?init" {
2
+ const initWasm: (
3
+ options?: WebAssembly.Imports
4
+ ) => Promise<WebAssembly.Instance>;
5
+ export default initWasm;
6
+ }
@@ -0,0 +1,21 @@
1
+ import { compressPacked, decompressPacked } from "./smol-string-packed.js";
2
+
3
+ export type Message = {
4
+ command: string;
5
+ id: number;
6
+ data: string;
7
+ };
8
+
9
+ onmessage = async function (e: { data: Message }) {
10
+ const { command, id, data } = e.data;
11
+ switch (command) {
12
+ case "decompress": {
13
+ postMessage({ id, data: decompressPacked(data) });
14
+ break;
15
+ }
16
+ case "compress": {
17
+ postMessage({ id, data: compressPacked(data) });
18
+ break;
19
+ }
20
+ }
21
+ };
package/src/worker.ts ADDED
@@ -0,0 +1,21 @@
1
+ import { compress, decompress } from "./smol-string.js";
2
+
3
+ export type Message = {
4
+ command: string;
5
+ id: number;
6
+ data: string;
7
+ };
8
+
9
+ onmessage = async function (e: { data: Message }) {
10
+ const { command, id, data } = e.data;
11
+ switch (command) {
12
+ case "decompress": {
13
+ postMessage({ id, data: decompress(data) });
14
+ break;
15
+ }
16
+ case "compress": {
17
+ postMessage({ id, data: compress(data) });
18
+ break;
19
+ }
20
+ }
21
+ };
@@ -0,0 +1,29 @@
1
+ import { describe, expect, test } from "vitest";
2
+
3
+ import { TestData } from "./common.js";
4
+
5
+ import { compress, decompress } from "../dist/smol-string.js";
6
+ import {
7
+ compressPacked,
8
+ decompressPacked,
9
+ } from "../dist/smol-string-packed.js";
10
+
11
+ describe("compress and decompress", () => {
12
+ for (const { name, input } of TestData) {
13
+ test(name, async () => {
14
+ const compressed = compress(input);
15
+ const decompressed = decompress(compressed);
16
+ expect(decompressed).toBe(input);
17
+ });
18
+ }
19
+ });
20
+
21
+ describe("compressPacked and decompressPacked", () => {
22
+ for (const { name, input } of TestData) {
23
+ test(name, async () => {
24
+ const compressed = compressPacked(input);
25
+ const decompressed = decompressPacked(compressed);
26
+ expect(decompressed).toBe(input);
27
+ });
28
+ }
29
+ });
package/test/common.ts ADDED
@@ -0,0 +1,15 @@
1
+ export const json_512kb = import("../../test/data/512KB.json");
2
+ export const json_1mb = import("../../test/data/1MB.json");
3
+ export const rw_medium = import("../../test/data/rw_medium.json");
4
+ export const rw_large = import("../../test/data/rw_large.json");
5
+
6
+ export const TestData = [
7
+ {
8
+ name: "Simple String",
9
+ input: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum",
10
+ },
11
+ { name: "json_512kb", input: JSON.stringify(await json_512kb) },
12
+ { name: "json_1mb", input: JSON.stringify(await json_1mb) },
13
+ { name: "rw_medium", input: JSON.stringify(await rw_medium) },
14
+ { name: "rw_large", input: JSON.stringify(await rw_large) },
15
+ ];
@@ -0,0 +1,51 @@
1
+ import { describe, bench, expect, test, beforeAll } from "vitest";
2
+
3
+ import { TestData } from "./common.js";
4
+
5
+ import { compress, decompress } from "../dist/smol-string.js";
6
+
7
+ import {
8
+ compressPacked,
9
+ decompressPacked,
10
+ } from "../dist/smol-string-packed.js";
11
+
12
+ const options = { iterations: 5 };
13
+
14
+ describe.each(TestData)("Compression: $name", ({ name, input }) => {
15
+ bench(
16
+ "compress",
17
+ async () => {
18
+ compress(input);
19
+ },
20
+ options
21
+ );
22
+ bench(
23
+ "compressPacked",
24
+ async () => {
25
+ compressPacked(input);
26
+ },
27
+ options
28
+ );
29
+ });
30
+
31
+ describe.each(TestData)("Decompression: $name", ({ name, input }) => {
32
+ let compressed = compress(input);
33
+ let compressedPacked = compressPacked(input);
34
+
35
+ bench(
36
+ "decompress",
37
+ async () => {
38
+ const decompressed = decompress(compressed);
39
+ expect(decompressed).toBe(input);
40
+ },
41
+ options
42
+ );
43
+ bench(
44
+ "decompressPacked",
45
+ async () => {
46
+ const decompressed = decompressPacked(compressedPacked);
47
+ expect(decompressed).toBe(input);
48
+ },
49
+ options
50
+ );
51
+ });
@@ -0,0 +1,39 @@
1
+ import { describe, expect, test } from "vitest";
2
+
3
+ import { TestData } from "./common.js";
4
+
5
+ import { compress, decompress } from "../dist/smol-string.js";
6
+ import {
7
+ compressPacked,
8
+ decompressPacked,
9
+ } from "../dist/smol-string-packed.js";
10
+
11
+ describe("compress and decompress via localStorage", async () => {
12
+ for (const { name, input } of TestData) {
13
+ test(name, async () => {
14
+ const compressed = await compress(input);
15
+
16
+ localStorage.setItem("compressed", compressed);
17
+ const restored = localStorage.getItem("compressed")!;
18
+
19
+ const decompressed = await decompress(restored);
20
+
21
+ expect(decompressed).toBe(input);
22
+ });
23
+ }
24
+ });
25
+
26
+ describe("compressPacked and decompressPacked via localStorage", async () => {
27
+ for (const { name, input } of TestData) {
28
+ test(name, async () => {
29
+ const compressed = await compressPacked(input);
30
+
31
+ localStorage.setItem("compressed", compressed);
32
+ const restored = localStorage.getItem("compressed")!;
33
+
34
+ const decompressed = await decompressPacked(restored);
35
+
36
+ expect(decompressed).toBe(input);
37
+ });
38
+ }
39
+ });
@@ -0,0 +1,39 @@
1
+ import { describe, expect, test } from "vitest";
2
+
3
+ import { TestData } from "./common.js";
4
+
5
+ import { compress, decompress } from "../dist/smol-string.js";
6
+ import {
7
+ compressPacked,
8
+ decompressPacked,
9
+ } from "../dist/smol-string-packed.js";
10
+
11
+ describe("compress and decompress via sessionStorage", () => {
12
+ for (const { name, input } of TestData) {
13
+ test(name, async () => {
14
+ const compressed = compress(input);
15
+
16
+ sessionStorage.setItem("compressed", compressed);
17
+ const restored = sessionStorage.getItem("compressed")!;
18
+
19
+ const decompressed = decompress(restored);
20
+
21
+ expect(decompressed).toBe(input);
22
+ });
23
+ }
24
+ });
25
+
26
+ describe("compressPacked and decompressPacked via sessionStorage", () => {
27
+ for (const { name, input } of TestData) {
28
+ test(name, async () => {
29
+ const compressed = compressPacked(input);
30
+
31
+ sessionStorage.setItem("compressed", compressed);
32
+ const restored = sessionStorage.getItem("compressed")!;
33
+
34
+ const decompressed = decompressPacked(restored);
35
+
36
+ expect(decompressed).toBe(input);
37
+ });
38
+ }
39
+ });
package/tsconfig.json ADDED
@@ -0,0 +1,23 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2020",
4
+ "useDefineForClassFields": true,
5
+ "module": "ESNext",
6
+ "lib": ["ESNext", "DOM", "DOM.Iterable"],
7
+ "skipLibCheck": true,
8
+
9
+ /* Bundler mode */
10
+ "moduleResolution": "bundler",
11
+ "allowImportingTsExtensions": true,
12
+ "resolveJsonModule": true,
13
+ "isolatedModules": true,
14
+ "noEmit": true,
15
+
16
+ /* Linting */
17
+ "strict": true,
18
+ "noUnusedLocals": true,
19
+ "noUnusedParameters": true,
20
+ "noFallthroughCasesInSwitch": true
21
+ },
22
+ "include": ["src"]
23
+ }
package/vite.config.ts ADDED
@@ -0,0 +1,33 @@
1
+ /// <reference types="vitest" />
2
+ import { defineConfig } from "vite";
3
+ import dts from "vite-plugin-dts";
4
+ import pkg from "./package.json" assert { type: "json" };
5
+
6
+ export default defineConfig({
7
+ build: {
8
+ lib: {
9
+ entry: {
10
+ "smol-string": "./src/smol-string.ts",
11
+ "smol-string-packed": "./src/smol-string-packed.ts",
12
+ "smol-string-worker": "./src/smol-string-worker.ts",
13
+ "smol-string-worker-packed":
14
+ "./src/smol-string-worker-packed.ts",
15
+ },
16
+ formats: ["es"],
17
+ },
18
+ rollupOptions: {
19
+ external: [
20
+ ...Object.keys(pkg.dependencies), // don't bundle dependencies
21
+ /^node:.*/, // don't bundle built-in Node.js modules (use protocol imports!)
22
+ ],
23
+ },
24
+ target: "esnext",
25
+ },
26
+ worker: {
27
+ format: "es",
28
+ },
29
+ plugins: [
30
+ dts(), // emit TS declaration files
31
+ ],
32
+ test: {},
33
+ });