dignity.js 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +197 -0
- package/dist/dignity.cjs.js +3585 -0
- package/dist/dignity.cjs.js.map +7 -0
- package/dist/dignity.esm.js +3606 -0
- package/dist/dignity.esm.js.map +7 -0
- package/dist/dignity.min.js +1 -0
- package/docs/assets/dignity-logo.svg +54 -0
- package/docs/assets/styles.css +68 -0
- package/docs/index.html +117 -0
- package/docs/openapi-like.json +64 -0
- package/examples/decentralized-chess-lite.js +102 -0
- package/examples/decentralized-tictactoe.js +112 -0
- package/package.json +53 -0
- package/src/core/dignity-p2p.js +604 -0
- package/src/index.js +41 -0
- package/src/network/in-memory-network.js +77 -0
- package/src/security/message-security-service.js +462 -0
- package/src/security/sloth-vdf.js +83 -0
- package/src/security/vdf.js +23 -0
- package/src/signaling/create-default-signaling-pool.js +44 -0
- package/src/signaling/default-signaling-config.js +15 -0
- package/src/signaling/signaling-pool.js +75 -0
- package/src/signaling/websocket-signaling-provider.js +69 -0
- package/src/utils/event-emitter.js +38 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/utils/event-emitter.js", "../node_modules/tweetnacl/nacl-fast.js", "../node_modules/tweetnacl-util/nacl-util.js", "../src/security/sloth-vdf.js", "../src/security/vdf.js", "../src/security/message-security-service.js", "../src/core/dignity-p2p.js", "../src/signaling/signaling-pool.js", "../src/signaling/websocket-signaling-provider.js", "../src/signaling/default-signaling-config.js", "../src/signaling/create-default-signaling-pool.js", "../src/network/in-memory-network.js", "../src/index.js"],
|
|
4
|
+
"sourcesContent": ["class EventEmitter {\n constructor() {\n this.handlers = new Map();\n }\n\n on(eventName, handler) {\n if (!this.handlers.has(eventName)) {\n this.handlers.set(eventName, new Set());\n }\n\n this.handlers.get(eventName).add(handler);\n }\n\n off(eventName, handler) {\n const eventHandlers = this.handlers.get(eventName);\n if (!eventHandlers) {\n return;\n }\n\n eventHandlers.delete(handler);\n if (eventHandlers.size === 0) {\n this.handlers.delete(eventName);\n }\n }\n\n emit(eventName, payload) {\n const eventHandlers = this.handlers.get(eventName);\n if (!eventHandlers) {\n return;\n }\n\n for (const handler of eventHandlers) {\n handler(payload);\n }\n }\n}\n\nmodule.exports = EventEmitter;\n", "(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = Math.floor((x[j] + 128) / 256);\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n return n;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES,\n\n gf: gf,\n D: D,\n L: L,\n pack25519: pack25519,\n unpack25519: unpack25519,\n M: M,\n A: A,\n S: S,\n Z: Z,\n pow2523: pow2523,\n add: add,\n set25519: set25519,\n modL: modL,\n scalarmult: scalarmult,\n scalarbase: scalarbase,\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n", "// Written in 2014-2016 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n(function(root, f) {\n 'use strict';\n if (typeof module !== 'undefined' && module.exports) module.exports = f();\n else if (root.nacl) root.nacl.util = f();\n else {\n root.nacl = {};\n root.nacl.util = f();\n }\n}(this, function() {\n 'use strict';\n\n var util = {};\n\n function validateBase64(s) {\n if (!(/^(?:[A-Za-z0-9+\\/]{2}[A-Za-z0-9+\\/]{2})*(?:[A-Za-z0-9+\\/]{2}==|[A-Za-z0-9+\\/]{3}=)?$/.test(s))) {\n throw new TypeError('invalid encoding');\n }\n }\n\n util.decodeUTF8 = function(s) {\n if (typeof s !== 'string') throw new TypeError('expected string');\n var i, d = unescape(encodeURIComponent(s)), b = new Uint8Array(d.length);\n for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i);\n return b;\n };\n\n util.encodeUTF8 = function(arr) {\n var i, s = [];\n for (i = 0; i < arr.length; i++) s.push(String.fromCharCode(arr[i]));\n return decodeURIComponent(escape(s.join('')));\n };\n\n if (typeof atob === 'undefined') {\n // Node.js\n\n if (typeof Buffer.from !== 'undefined') {\n // Node v6 and later\n util.encodeBase64 = function (arr) { // v6 and later\n return Buffer.from(arr).toString('base64');\n };\n\n util.decodeBase64 = function (s) {\n validateBase64(s);\n return new Uint8Array(Array.prototype.slice.call(Buffer.from(s, 'base64'), 0));\n };\n\n } else {\n // Node earlier than v6\n util.encodeBase64 = function (arr) { // v6 and later\n return (new Buffer(arr)).toString('base64');\n };\n\n util.decodeBase64 = function(s) {\n validateBase64(s);\n return new Uint8Array(Array.prototype.slice.call(new Buffer(s, 'base64'), 0));\n };\n }\n\n } else {\n // Browsers\n\n util.encodeBase64 = function(arr) {\n var i, s = [], len = arr.length;\n for (i = 0; i < len; i++) s.push(String.fromCharCode(arr[i]));\n return btoa(s.join(''));\n };\n\n util.decodeBase64 = function(s) {\n validateBase64(s);\n var i, d = atob(s), b = new Uint8Array(d.length);\n for (i = 0; i < d.length; i++) b[i] = d.charCodeAt(i);\n return b;\n };\n\n }\n\n return util;\n\n}));\n", "/*\n * Sloth permutation adaptation based on:\n * https://github.com/hyperhyperspace/pulsar/blob/main/src/model/SlothVDF.ts\n */\nclass SlothPermutation {\n static p = BigInt(\n '170082004324204494273811327264862981553264701145937538369570764779791492622392118654022654452947093285873855529044371650895045691292912712699015605832276411308653107069798639938826015099738961427172366594187783204437869906954750443653318078358839409699824714551430573905637228307966826784684174483831608534979'\n );\n\n fastPow(base, exponent, modulus) {\n if (modulus === BigInt(1)) {\n return BigInt(0);\n }\n\n let result = BigInt(1);\n let powBase = base % modulus;\n let powExponent = exponent;\n\n while (powExponent > 0) {\n if (powExponent % BigInt(2) === BigInt(1)) {\n result = (result * powBase) % modulus;\n }\n\n powExponent = powExponent / BigInt(2);\n powBase = (powBase * powBase) % modulus;\n }\n\n return result;\n }\n\n quadRes(x) {\n return this.fastPow(x, (SlothPermutation.p - BigInt(1)) / BigInt(2), SlothPermutation.p) === BigInt(1);\n }\n\n modSqrtOp(x) {\n let y;\n let value = x;\n\n if (this.quadRes(value)) {\n y = this.fastPow(value, (SlothPermutation.p + BigInt(1)) / BigInt(4), SlothPermutation.p);\n } else {\n value = (-value + SlothPermutation.p) % SlothPermutation.p;\n y = this.fastPow(value, (SlothPermutation.p + BigInt(1)) / BigInt(4), SlothPermutation.p);\n }\n\n return y;\n }\n\n modOp(x, t) {\n let value = x % SlothPermutation.p;\n\n for (let i = BigInt(0); i < t; i += BigInt(1)) {\n value = this.modSqrtOp(value);\n }\n\n return value;\n }\n\n modVerif(y, x, t) {\n const input = x % SlothPermutation.p;\n let value = y;\n\n for (let i = BigInt(0); i < t; i += BigInt(1)) {\n value = (value ** BigInt(2)) % SlothPermutation.p;\n }\n\n if (!this.quadRes(value)) {\n value = (-value + SlothPermutation.p) % SlothPermutation.p;\n }\n\n return input === value || ((-input + SlothPermutation.p) % SlothPermutation.p) === value;\n }\n\n generateProofVDF(t, x) {\n return this.modOp(x, t);\n }\n\n verifyProofVDF(t, x, y) {\n return this.modVerif(y, x, t);\n }\n}\n\nmodule.exports = SlothPermutation;\n", "/*\n * VDF wrapper adaptation based on:\n * https://github.com/hyperhyperspace/pulsar/blob/main/src/model/VDF.ts\n */\nconst SlothPermutation = require('./sloth-vdf');\n\nclass VDF {\n static async compute(challengeHex, steps) {\n const vdfInstance = new SlothPermutation();\n const challengeBigInt = BigInt(`0x${challengeHex}`);\n const result = vdfInstance.generateProofVDF(steps, challengeBigInt);\n return result.toString(16);\n }\n\n static async verify(challengeHex, steps, resultHex) {\n const vdfInstance = new SlothPermutation();\n const challengeBigInt = BigInt(`0x${challengeHex}`);\n const resultBigInt = BigInt(`0x${resultHex}`);\n return vdfInstance.verifyProofVDF(steps, challengeBigInt, resultBigInt);\n }\n}\n\nmodule.exports = VDF;\n", "const nacl = require('tweetnacl');\nconst naclUtil = require('tweetnacl-util');\nconst VDF = require('./vdf');\n\nconst DEFAULT_SECURITY_OPTIONS = {\n enabled: true,\n signingEnabled: true,\n encryptionEnabled: true,\n powEnabled: true,\n powTargetMs: 1000,\n appPassword: 'change-this-app-password',\n broadcastPasswords: {},\n resolveBroadcastPassword: null,\n powSteps: 22,\n trustedPeerKeys: {}\n};\n\nfunction stableStringify(value) {\n if (value === null || typeof value !== 'object') {\n return JSON.stringify(value);\n }\n\n if (Array.isArray(value)) {\n return `[${value.map((entry) => stableStringify(entry)).join(',')}]`;\n }\n\n const keys = Object.keys(value).sort();\n return `{${keys.map((key) => `${JSON.stringify(key)}:${stableStringify(value[key])}`).join(',')}}`;\n}\n\nfunction concatBytes(a, b) {\n const result = new Uint8Array(a.length + b.length);\n result.set(a, 0);\n result.set(b, a.length);\n return result;\n}\n\nfunction hash32(bytes) {\n return nacl.hash(bytes).slice(0, 32);\n}\n\nfunction bytesToHex(bytes) {\n return Array.from(bytes, (byte) => byte.toString(16).padStart(2, '0')).join('');\n}\n\nfunction utf8ToBytes(value) {\n return naclUtil.decodeUTF8(value);\n}\n\nfunction normalizePeerPublicKey(publicKey) {\n if (!publicKey || typeof publicKey !== 'object') {\n throw new Error('Public key must be an object with signingPublicKey and encryptionPublicKey');\n }\n\n if (!publicKey.signingPublicKey || !publicKey.encryptionPublicKey) {\n throw new Error('Public key object is missing signingPublicKey or encryptionPublicKey');\n }\n\n return {\n signingPublicKey: publicKey.signingPublicKey,\n encryptionPublicKey: publicKey.encryptionPublicKey\n };\n}\n\nclass MessageSecurityService {\n constructor({ nodeId, options = {}, now } = {}) {\n if (!nodeId) {\n throw new Error('MessageSecurityService requires nodeId');\n }\n\n this.nodeId = nodeId;\n this.options = {\n ...DEFAULT_SECURITY_OPTIONS,\n ...options\n };\n this.now = now || (() => Date.now());\n\n const keyPair = options.keyPair || {\n signing: nacl.sign.keyPair(),\n encryption: nacl.box.keyPair()\n };\n\n this.signingSecretKey = keyPair.signing.secretKey;\n this.signingPublicKey = keyPair.signing.publicKey;\n this.encryptionSecretKey = keyPair.encryption.secretKey;\n this.encryptionPublicKey = keyPair.encryption.publicKey;\n\n this.publicKeyBundle = {\n signingPublicKey: naclUtil.encodeBase64(this.signingPublicKey),\n encryptionPublicKey: naclUtil.encodeBase64(this.encryptionPublicKey)\n };\n\n this.peerPublicKeys = new Map();\n for (const [peerId, peerKey] of Object.entries(this.options.trustedPeerKeys || {})) {\n this.peerPublicKeys.set(peerId, normalizePeerPublicKey(peerKey));\n }\n\n this.calibratedPowSteps = this.options.powSteps;\n }\n\n getPublicKey() {\n return { ...this.publicKeyBundle };\n }\n\n registerPeerPublicKey(peerId, publicKey) {\n this.peerPublicKeys.set(peerId, normalizePeerPublicKey(publicKey));\n }\n\n resolvePeerPublicKey(peerId, fallbackPublicKey) {\n const trusted = this.peerPublicKeys.get(peerId);\n const fallback = fallbackPublicKey ? normalizePeerPublicKey(fallbackPublicKey) : null;\n\n if (trusted && fallback) {\n const mismatch =\n trusted.signingPublicKey !== fallback.signingPublicKey ||\n trusted.encryptionPublicKey !== fallback.encryptionPublicKey;\n\n if (mismatch) {\n throw new Error(`Public key mismatch for peer ${peerId}`);\n }\n }\n\n return trusted || fallback || null;\n }\n\n buildEnvelopeBase({ messageType, payload, targetId = null }) {\n return {\n version: 1,\n senderId: this.nodeId,\n senderPublicKey: this.getPublicKey(),\n targetId,\n messageType,\n timestamp: this.now(),\n payload\n };\n }\n\n async secureOutgoingMessage({ messageType, payload, targetId = null, securityContext = {} }) {\n if (!this.options.enabled) {\n return this.buildEnvelopeBase({ messageType, payload, targetId });\n }\n\n const envelope = this.buildEnvelopeBase({ messageType, payload, targetId });\n const encryptionInfo = await this.encryptPayload({ payload, targetId, securityContext });\n envelope.payload = encryptionInfo.payload;\n envelope.security = {\n encryption: encryptionInfo.security,\n signing: { enabled: false },\n pow: { enabled: false }\n };\n\n if (this.options.powEnabled) {\n const pow = await this.generatePow(envelope);\n envelope.security.pow = {\n enabled: true,\n challenge: pow.challenge,\n proof: pow.proof,\n steps: pow.steps,\n durationMs: pow.durationMs\n };\n }\n\n if (this.options.signingEnabled) {\n const signatureBase = this.canonicalSigningInput(envelope);\n const signature = nacl.sign.detached(\n naclUtil.decodeUTF8(signatureBase),\n this.signingSecretKey\n );\n\n envelope.security.signing = {\n enabled: true,\n algorithm: 'ed25519',\n signature: naclUtil.encodeBase64(signature)\n };\n }\n\n return envelope;\n }\n\n canonicalSigningInput(envelope) {\n return stableStringify({\n version: envelope.version,\n senderId: envelope.senderId,\n senderPublicKey: envelope.senderPublicKey,\n targetId: envelope.targetId,\n messageType: envelope.messageType,\n timestamp: envelope.timestamp,\n payload: envelope.payload,\n security: {\n encryption: envelope.security ? envelope.security.encryption : { enabled: false },\n pow: envelope.security ? envelope.security.pow : { enabled: false }\n }\n });\n }\n\n canonicalPowInput(envelope) {\n return stableStringify({\n version: envelope.version,\n senderId: envelope.senderId,\n senderPublicKey: envelope.senderPublicKey,\n targetId: envelope.targetId,\n messageType: envelope.messageType,\n timestamp: envelope.timestamp,\n payload: envelope.payload,\n security: {\n encryption: envelope.security ? envelope.security.encryption : { enabled: false }\n }\n });\n }\n\n async decryptIncomingMessage(envelope) {\n if (!this.options.enabled) {\n return {\n ignored: false,\n messageType: envelope.messageType,\n senderId: envelope.senderId,\n targetId: envelope.targetId,\n payload: envelope.payload\n };\n }\n\n if (!envelope || typeof envelope !== 'object') {\n throw new Error('Incoming message is invalid');\n }\n\n if (envelope.targetId && envelope.targetId !== this.nodeId) {\n return { ignored: true };\n }\n\n if (envelope.security && envelope.security.pow && envelope.security.pow.enabled && this.options.powEnabled) {\n await this.verifyPow(envelope);\n }\n\n if (envelope.security && envelope.security.signing && envelope.security.signing.enabled && this.options.signingEnabled) {\n this.verifySignature(envelope);\n }\n\n const payload = this.decryptPayload(envelope);\n\n return {\n ignored: false,\n messageType: envelope.messageType,\n senderId: envelope.senderId,\n targetId: envelope.targetId,\n payload\n };\n }\n\n resolveBroadcastPassword(scope) {\n const normalizedScope = scope || 'default';\n\n if (typeof this.options.resolveBroadcastPassword === 'function') {\n const resolved = this.options.resolveBroadcastPassword({\n scope: normalizedScope,\n nodeId: this.nodeId,\n defaultPassword: this.options.appPassword,\n broadcastPasswords: this.options.broadcastPasswords || {}\n });\n\n if (typeof resolved === 'string' && resolved.length > 0) {\n return resolved;\n }\n }\n\n const scopePassword = this.options.broadcastPasswords\n ? this.options.broadcastPasswords[normalizedScope]\n : null;\n\n if (typeof scopePassword === 'string' && scopePassword.length > 0) {\n return scopePassword;\n }\n\n return this.options.appPassword;\n }\n\n async encryptPayload({ payload, targetId, securityContext = {} }) {\n if (!this.options.encryptionEnabled) {\n return {\n payload,\n security: {\n enabled: false,\n mode: 'none'\n }\n };\n }\n\n const plainText = naclUtil.decodeUTF8(JSON.stringify(payload));\n\n if (targetId) {\n const recipientPublicKey = this.resolvePeerPublicKey(targetId, null);\n if (!recipientPublicKey) {\n throw new Error(`Missing public key for target peer ${targetId}`);\n }\n\n const nonce = nacl.randomBytes(nacl.box.nonceLength);\n const encrypted = nacl.box(\n plainText,\n nonce,\n naclUtil.decodeBase64(recipientPublicKey.encryptionPublicKey),\n this.encryptionSecretKey\n );\n\n return {\n payload: naclUtil.encodeBase64(encrypted),\n security: {\n enabled: true,\n mode: 'direct',\n nonce: naclUtil.encodeBase64(nonce),\n senderEncryptionPublicKey: this.publicKeyBundle.encryptionPublicKey\n }\n };\n }\n\n const scope = securityContext.broadcastScope || 'default';\n const nonce = nacl.randomBytes(nacl.secretbox.nonceLength);\n const salt = nacl.randomBytes(16);\n const password = this.resolveBroadcastPassword(scope);\n const key = hash32(concatBytes(utf8ToBytes(password), salt));\n const encrypted = nacl.secretbox(plainText, nonce, key);\n\n return {\n payload: naclUtil.encodeBase64(encrypted),\n security: {\n enabled: true,\n mode: 'broadcast',\n scope,\n nonce: naclUtil.encodeBase64(nonce),\n salt: naclUtil.encodeBase64(salt)\n }\n };\n }\n\n decryptPayload(envelope) {\n const encryption = envelope.security ? envelope.security.encryption : null;\n\n if (!encryption || !encryption.enabled || !this.options.encryptionEnabled) {\n return envelope.payload;\n }\n\n const encryptedBuffer = naclUtil.decodeBase64(envelope.payload);\n\n if (encryption.mode === 'broadcast') {\n const scope = encryption.scope || 'default';\n const password = this.resolveBroadcastPassword(scope);\n const salt = naclUtil.decodeBase64(encryption.salt);\n const nonce = naclUtil.decodeBase64(encryption.nonce);\n const key = hash32(concatBytes(utf8ToBytes(password), salt));\n const decrypted = nacl.secretbox.open(encryptedBuffer, nonce, key);\n\n if (!decrypted) {\n throw new Error('Unable to decrypt broadcast payload');\n }\n\n return JSON.parse(naclUtil.encodeUTF8(decrypted));\n }\n\n if (encryption.mode === 'direct') {\n const senderPublicKey = naclUtil.decodeBase64(encryption.senderEncryptionPublicKey);\n const nonce = naclUtil.decodeBase64(encryption.nonce);\n const decrypted = nacl.box.open(\n encryptedBuffer,\n nonce,\n senderPublicKey,\n this.encryptionSecretKey\n );\n\n if (!decrypted) {\n throw new Error('Unable to decrypt direct payload');\n }\n\n return JSON.parse(naclUtil.encodeUTF8(decrypted));\n }\n\n throw new Error(`Unsupported encryption mode: ${encryption.mode}`);\n }\n\n verifySignature(envelope) {\n const senderPublicKey = this.resolvePeerPublicKey(envelope.senderId, envelope.senderPublicKey);\n if (!senderPublicKey) {\n throw new Error(`Missing public key for sender ${envelope.senderId}`);\n }\n\n const signatureBase = this.canonicalSigningInput(envelope);\n const isValid = nacl.sign.detached.verify(\n naclUtil.decodeUTF8(signatureBase),\n naclUtil.decodeBase64(envelope.security.signing.signature),\n naclUtil.decodeBase64(senderPublicKey.signingPublicKey)\n );\n\n if (!isValid) {\n const error = new Error(`Invalid signature for sender ${envelope.senderId}`);\n error.code = 'INVALID_SIGNATURE';\n throw error;\n }\n\n return true;\n }\n\n async determinePowSteps() {\n if (typeof this.calibratedPowSteps === 'bigint') {\n return this.calibratedPowSteps;\n }\n\n if (typeof this.options.powSteps === 'number') {\n this.calibratedPowSteps = BigInt(Math.max(1, this.options.powSteps));\n return this.calibratedPowSteps;\n }\n\n const targetMs = Math.max(1, Number(this.options.powTargetMs || 1));\n const probeChallenge = bytesToHex(hash32(utf8ToBytes(`probe:${this.nodeId}:${this.now()}`)));\n const probeSteps = BigInt(2);\n\n const start = this.now();\n await VDF.compute(probeChallenge, probeSteps);\n const elapsedMs = Math.max(1, this.now() - start);\n\n const scaled = Math.max(1, Math.round((targetMs / elapsedMs) * Number(probeSteps)));\n this.calibratedPowSteps = BigInt(scaled);\n return this.calibratedPowSteps;\n }\n\n async generatePow(envelope) {\n const challenge = bytesToHex(hash32(utf8ToBytes(this.canonicalPowInput(envelope))));\n const steps = await this.determinePowSteps();\n const start = this.now();\n const proof = await VDF.compute(challenge, steps);\n const durationMs = this.now() - start;\n\n return {\n challenge,\n proof,\n steps: steps.toString(),\n durationMs\n };\n }\n\n async verifyPow(envelope) {\n const expectedChallenge = bytesToHex(hash32(utf8ToBytes(this.canonicalPowInput(envelope))));\n const pow = envelope.security.pow;\n\n if (!pow || pow.challenge !== expectedChallenge) {\n const error = new Error('PoW challenge mismatch');\n error.code = 'INVALID_POW';\n throw error;\n }\n\n const verified = await VDF.verify(pow.challenge, BigInt(pow.steps), pow.proof);\n if (!verified) {\n const error = new Error('PoW verification failed');\n error.code = 'INVALID_POW';\n throw error;\n }\n\n return true;\n }\n}\n\nmodule.exports = {\n MessageSecurityService,\n stableStringify,\n DEFAULT_SECURITY_OPTIONS\n};\n", "const EventEmitter = require('../utils/event-emitter');\nconst { MessageSecurityService } = require('../security/message-security-service');\n\n/**\n * Core node API for replicated object collections.\n *\n * Interface shape is intentionally REST-like:\n * - create(collection, data)\n * - read(collection, id)\n * - list(collection)\n * - update(collection, id, patch)\n * - remove(collection, id)\n *\n * Authorization model:\n * - object creator is the owner\n * - only owner can update or delete\n */\nclass DignityP2P extends EventEmitter {\n constructor({ nodeId, networkAdapter, idGenerator, now, security } = {}) {\n super();\n\n if (!nodeId) {\n throw new Error('DignityP2P requires nodeId');\n }\n\n if (!networkAdapter) {\n throw new Error('DignityP2P requires networkAdapter');\n }\n\n this.nodeId = nodeId;\n this.networkAdapter = networkAdapter;\n this.idGenerator = idGenerator || (() => `${Date.now()}-${Math.random().toString(16).slice(2)}`);\n this.now = now || (() => Date.now());\n this.securityService = new MessageSecurityService({\n nodeId: this.nodeId,\n options: security || {},\n now: this.now\n });\n this.bannedPeers = new Map();\n this.peerBanDurationMs = security && typeof security.banDurationMs === 'number'\n ? security.banDurationMs\n : 48 * 60 * 60 * 1000;\n this.resolveBroadcastScope = security && typeof security.resolveBroadcastScope === 'function'\n ? security.resolveBroadcastScope\n : (() => 'default');\n this.defaultDiscoveryHeartbeatMs = security && typeof security.discoveryHeartbeatMs === 'number'\n ? security.discoveryHeartbeatMs\n : 15000;\n this.defaultPresenceTtlMs = security && typeof security.presenceTtlMs === 'number'\n ? security.presenceTtlMs\n : 45000;\n this.discoveryRooms = new Map(); // scope -> { metadata, heartbeatIntervalMs, ttlMs, timer }\n this.presenceByScope = new Map(); // scope -> Map(peerId -> presence)\n\n this.state = new Map(); // collection -> Map(id -> record)\n this.appliedOperations = new Set();\n this.boundMessageHandler = this.handleIncomingMessage.bind(this);\n }\n\n async start() {\n this.networkAdapter.onMessage(this.boundMessageHandler);\n await this.networkAdapter.start(this.nodeId);\n }\n\n async stop() {\n const joinedScopes = Array.from(this.discoveryRooms.keys());\n for (const scope of joinedScopes) {\n // Best effort leave announce; do not fail node shutdown if network is interrupted.\n try {\n await this.leaveDiscovery(scope);\n } catch (error) {\n this.emit('warning', { type: 'presence-leave-failed', scope, error });\n }\n }\n\n this.networkAdapter.offMessage(this.boundMessageHandler);\n await this.networkAdapter.stop();\n }\n\n getCollection(collectionName) {\n if (!collectionName) {\n throw new Error('collectionName is required');\n }\n\n if (!this.state.has(collectionName)) {\n this.state.set(collectionName, new Map());\n }\n\n return this.state.get(collectionName);\n }\n\n normalizeRecord(record) {\n if (!record || record.deletedAt) {\n return null;\n }\n\n return {\n id: record.id,\n ownerId: record.ownerId,\n createdAt: record.createdAt,\n updatedAt: record.updatedAt,\n version: record.version,\n data: { ...record.data }\n };\n }\n\n async create(collectionName, data, options = {}) {\n const collection = this.getCollection(collectionName);\n const id = options.id || this.idGenerator();\n\n if (collection.has(id) && !collection.get(id).deletedAt) {\n throw new Error(`Object ${id} already exists in ${collectionName}`);\n }\n\n const timestamp = this.now();\n const operation = {\n opId: this.idGenerator(),\n kind: 'create',\n collectionName,\n id,\n actorId: this.nodeId,\n ownerId: this.nodeId,\n timestamp,\n payload: { ...data }\n };\n\n this.applyOperation(operation);\n await this.broadcastMessage('operation', operation, {\n broadcastScope: options.broadcastScope || this.resolveBroadcastScope({\n messageType: 'operation',\n operation,\n collectionName\n })\n });\n\n return this.read(collectionName, id);\n }\n\n read(collectionName, id) {\n const collection = this.getCollection(collectionName);\n return this.normalizeRecord(collection.get(id));\n }\n\n list(collectionName, options = {}) {\n const collection = this.getCollection(collectionName);\n const includeDeleted = options.includeDeleted || false;\n\n const records = [];\n for (const record of collection.values()) {\n if (record.deletedAt && !includeDeleted) {\n continue;\n }\n\n if (record.deletedAt && includeDeleted) {\n records.push({\n id: record.id,\n ownerId: record.ownerId,\n deletedAt: record.deletedAt,\n version: record.version\n });\n continue;\n }\n\n records.push(this.normalizeRecord(record));\n }\n\n return records;\n }\n\n async update(collectionName, id, partialData, options = {}) {\n const existing = this.getCollection(collectionName).get(id);\n\n if (!existing || existing.deletedAt) {\n throw new Error(`Object ${id} does not exist in ${collectionName}`);\n }\n\n if (existing.ownerId !== this.nodeId) {\n throw new Error(`Only owner ${existing.ownerId} can update object ${id}`);\n }\n\n const operation = {\n opId: this.idGenerator(),\n kind: 'update',\n collectionName,\n id,\n actorId: this.nodeId,\n timestamp: this.now(),\n baseVersion: existing.version,\n payload: { ...partialData }\n };\n\n this.applyOperation(operation);\n await this.broadcastMessage('operation', operation, {\n broadcastScope: options.broadcastScope || this.resolveBroadcastScope({\n messageType: 'operation',\n operation,\n collectionName\n })\n });\n\n return this.read(collectionName, id);\n }\n\n async remove(collectionName, id, options = {}) {\n const existing = this.getCollection(collectionName).get(id);\n\n if (!existing || existing.deletedAt) {\n throw new Error(`Object ${id} does not exist in ${collectionName}`);\n }\n\n if (existing.ownerId !== this.nodeId) {\n throw new Error(`Only owner ${existing.ownerId} can delete object ${id}`);\n }\n\n const operation = {\n opId: this.idGenerator(),\n kind: 'delete',\n collectionName,\n id,\n actorId: this.nodeId,\n timestamp: this.now(),\n baseVersion: existing.version\n };\n\n this.applyOperation(operation);\n await this.broadcastMessage('operation', operation, {\n broadcastScope: options.broadcastScope || this.resolveBroadcastScope({\n messageType: 'operation',\n operation,\n collectionName\n })\n });\n }\n\n registerPeerPublicKey(peerId, publicKey) {\n this.securityService.registerPeerPublicKey(peerId, publicKey);\n }\n\n getPublicKey() {\n return this.securityService.getPublicKey();\n }\n\n async broadcastMessage(messageType, payload, securityContext = {}) {\n const envelope = await this.securityService.secureOutgoingMessage({\n messageType,\n payload,\n targetId: null,\n securityContext\n });\n await this.networkAdapter.broadcast(envelope);\n }\n\n async sendDirectMessage(targetId, messageType, payload) {\n const envelope = await this.securityService.secureOutgoingMessage({\n messageType,\n payload,\n targetId\n });\n await this.networkAdapter.broadcast(envelope);\n }\n\n getPresenceMap(scope) {\n if (!this.presenceByScope.has(scope)) {\n this.presenceByScope.set(scope, new Map());\n }\n\n return this.presenceByScope.get(scope);\n }\n\n upsertPresence(scope, peerId, metadata, ttlMs, announcedAt) {\n const map = this.getPresenceMap(scope);\n const existing = map.get(peerId);\n const next = {\n peerId,\n scope,\n metadata: metadata ? { ...metadata } : {},\n lastSeenAt: announcedAt,\n expiresAt: announcedAt + ttlMs\n };\n map.set(peerId, next);\n\n if (!existing) {\n this.emit('peerdiscovered', { scope, peerId, metadata: next.metadata });\n }\n\n return next;\n }\n\n prunePresence(scope) {\n const map = this.presenceByScope.get(scope);\n if (!map) {\n return;\n }\n\n const now = this.now();\n for (const [peerId, entry] of map.entries()) {\n if (entry.expiresAt <= now) {\n map.delete(peerId);\n this.emit('peerleft', { scope, peerId, reason: 'timeout' });\n }\n }\n }\n\n async joinDiscovery(scope = 'main', options = {}) {\n const normalizedScope = scope || 'main';\n const heartbeatIntervalMs = options.heartbeatIntervalMs || this.defaultDiscoveryHeartbeatMs;\n const ttlMs = options.ttlMs || this.defaultPresenceTtlMs;\n const metadata = options.metadata || {};\n\n const existing = this.discoveryRooms.get(normalizedScope);\n if (existing && existing.timer) {\n clearInterval(existing.timer);\n }\n\n const timer = setInterval(() => {\n this.announcePresence(normalizedScope).catch((error) => {\n this.emit('warning', { type: 'presence-heartbeat-failed', scope: normalizedScope, error });\n });\n }, heartbeatIntervalMs);\n\n this.discoveryRooms.set(normalizedScope, {\n metadata,\n heartbeatIntervalMs,\n ttlMs,\n timer\n });\n\n this.upsertPresence(normalizedScope, this.nodeId, metadata, ttlMs, this.now());\n await this.announcePresence(normalizedScope);\n }\n\n async announcePresence(scope = 'main', metadataOverride = null) {\n const normalizedScope = scope || 'main';\n const room = this.discoveryRooms.get(normalizedScope);\n if (!room) {\n throw new Error(`Scope ${normalizedScope} has not been joined for discovery`);\n }\n\n const metadata = metadataOverride || room.metadata || {};\n const announcedAt = this.now();\n this.upsertPresence(normalizedScope, this.nodeId, metadata, room.ttlMs, announcedAt);\n\n await this.broadcastMessage(\n 'presence:announce',\n {\n scope: normalizedScope,\n peerId: this.nodeId,\n metadata,\n ttlMs: room.ttlMs,\n announcedAt\n },\n { broadcastScope: normalizedScope }\n );\n }\n\n async leaveDiscovery(scope = 'main') {\n const normalizedScope = scope || 'main';\n const room = this.discoveryRooms.get(normalizedScope);\n if (!room) {\n return;\n }\n\n if (room.timer) {\n clearInterval(room.timer);\n }\n this.discoveryRooms.delete(normalizedScope);\n\n const map = this.presenceByScope.get(normalizedScope);\n if (map) {\n map.delete(this.nodeId);\n }\n\n await this.broadcastMessage(\n 'presence:leave',\n {\n scope: normalizedScope,\n peerId: this.nodeId,\n leftAt: this.now()\n },\n { broadcastScope: normalizedScope }\n );\n }\n\n listPeers(scope = 'main', options = {}) {\n const normalizedScope = scope || 'main';\n const includeSelf = options.includeSelf !== false;\n this.prunePresence(normalizedScope);\n\n const map = this.presenceByScope.get(normalizedScope);\n if (!map) {\n return [];\n }\n\n return Array.from(map.values())\n .filter((entry) => includeSelf || entry.peerId !== this.nodeId)\n .map((entry) => ({\n peerId: entry.peerId,\n scope: entry.scope,\n metadata: { ...entry.metadata },\n lastSeenAt: entry.lastSeenAt,\n expiresAt: entry.expiresAt\n }));\n }\n\n async handleIncomingMessage(message) {\n // Backward compatibility for raw operation payloads\n if (message && message.opId && message.kind) {\n this.applyOperation(message);\n return;\n }\n\n if (message && message.senderId && this.isPeerBanned(message.senderId)) {\n this.emit('messageignored', {\n senderId: message.senderId,\n reason: 'peer-banned'\n });\n return;\n }\n\n let decrypted;\n try {\n decrypted = await this.securityService.decryptIncomingMessage(message);\n } catch (error) {\n const senderId = message ? message.senderId : null;\n if (senderId && (error.code === 'INVALID_SIGNATURE' || error.code === 'INVALID_POW')) {\n this.banPeer(senderId, this.peerBanDurationMs, error.code);\n }\n\n this.emit('securityerror', {\n senderId,\n error\n });\n return;\n }\n\n if (!decrypted || decrypted.ignored) {\n return;\n }\n\n if (decrypted.messageType === 'operation') {\n this.applyOperation(decrypted.payload);\n return;\n }\n\n if (decrypted.messageType === 'presence:announce') {\n const payload = decrypted.payload || {};\n const scope = payload.scope || 'main';\n const peerId = payload.peerId || decrypted.senderId;\n if (!peerId) {\n return;\n }\n\n const presenceMap = this.getPresenceMap(scope);\n const isNewPeerInScope = !presenceMap.has(peerId);\n\n this.upsertPresence(\n scope,\n peerId,\n payload.metadata || {},\n payload.ttlMs || this.defaultPresenceTtlMs,\n payload.announcedAt || this.now()\n );\n\n // Discovery handshake: when a new peer appears in a joined scope,\n // send our current presence so late joiners quickly converge.\n if (isNewPeerInScope && peerId !== this.nodeId && this.discoveryRooms.has(scope)) {\n this.announcePresence(scope).catch((error) => {\n this.emit('warning', { type: 'presence-handshake-failed', scope, error });\n });\n }\n return;\n }\n\n if (decrypted.messageType === 'presence:leave') {\n const payload = decrypted.payload || {};\n const scope = payload.scope || 'main';\n const peerId = payload.peerId || decrypted.senderId;\n const map = this.presenceByScope.get(scope);\n if (map && peerId && map.has(peerId)) {\n map.delete(peerId);\n this.emit('peerleft', { scope, peerId, reason: 'leave' });\n }\n return;\n }\n\n this.emit('message', {\n senderId: decrypted.senderId,\n targetId: decrypted.targetId,\n type: decrypted.messageType,\n payload: decrypted.payload\n });\n }\n\n banPeer(peerId, durationMs = this.peerBanDurationMs, reason = 'manual') {\n if (!peerId) {\n return;\n }\n\n const bannedUntil = this.now() + Math.max(1, durationMs);\n this.bannedPeers.set(peerId, {\n peerId,\n reason,\n bannedAt: this.now(),\n bannedUntil\n });\n\n this.emit('peerbanned', {\n peerId,\n reason,\n bannedUntil\n });\n }\n\n unbanPeer(peerId) {\n this.bannedPeers.delete(peerId);\n this.emit('peerunbanned', { peerId });\n }\n\n getBanInfo(peerId) {\n const info = this.bannedPeers.get(peerId);\n if (!info) {\n return null;\n }\n\n if (info.bannedUntil <= this.now()) {\n this.bannedPeers.delete(peerId);\n return null;\n }\n\n return { ...info };\n }\n\n isPeerBanned(peerId) {\n return this.getBanInfo(peerId) !== null;\n }\n\n applyOperation(operation) {\n if (!operation || !operation.opId || this.appliedOperations.has(operation.opId)) {\n return false;\n }\n\n const collection = this.getCollection(operation.collectionName);\n const current = collection.get(operation.id);\n\n if (operation.kind === 'create') {\n if (current && !current.deletedAt) {\n return false;\n }\n\n collection.set(operation.id, {\n id: operation.id,\n ownerId: operation.ownerId,\n data: { ...operation.payload },\n createdAt: operation.timestamp,\n updatedAt: operation.timestamp,\n deletedAt: null,\n version: 1\n });\n\n this.appliedOperations.add(operation.opId);\n this.emit('change', { kind: 'create', collection: operation.collectionName, id: operation.id });\n return true;\n }\n\n if (!current || current.deletedAt) {\n return false;\n }\n\n if (operation.actorId !== current.ownerId) {\n return false;\n }\n\n if (typeof operation.baseVersion === 'number' && operation.baseVersion !== current.version) {\n return false;\n }\n\n if (operation.kind === 'update') {\n current.data = {\n ...current.data,\n ...operation.payload\n };\n current.updatedAt = operation.timestamp;\n current.version += 1;\n\n this.appliedOperations.add(operation.opId);\n this.emit('change', { kind: 'update', collection: operation.collectionName, id: operation.id });\n return true;\n }\n\n if (operation.kind === 'delete') {\n current.deletedAt = operation.timestamp;\n current.updatedAt = operation.timestamp;\n current.version += 1;\n\n this.appliedOperations.add(operation.opId);\n this.emit('change', { kind: 'delete', collection: operation.collectionName, id: operation.id });\n return true;\n }\n\n return false;\n }\n}\n\nmodule.exports = DignityP2P;\n", "class SignalingPool {\n constructor(providers = []) {\n this.providers = [...providers];\n this.activeProvider = null;\n }\n\n registerProvider(provider) {\n this.providers.push(provider);\n }\n\n getProvidersByPriority() {\n return [...this.providers].sort((a, b) => (a.priority || 0) - (b.priority || 0));\n }\n\n async connect(excludedProviderIds = new Set()) {\n const providers = this.getProvidersByPriority().filter(\n (provider) => !excludedProviderIds.has(provider.id)\n );\n let lastError;\n\n for (const provider of providers) {\n try {\n await provider.connect();\n this.activeProvider = provider;\n return provider;\n } catch (error) {\n lastError = error;\n }\n }\n\n throw lastError || new Error('No signaling provider could connect');\n }\n\n async send(message) {\n if (!this.activeProvider) {\n await this.connect();\n }\n\n try {\n await this.activeProvider.send(message);\n } catch (error) {\n if (this.activeProvider && typeof this.activeProvider.disconnect === 'function') {\n await this.activeProvider.disconnect();\n }\n\n const failedProviderId = this.activeProvider ? this.activeProvider.id : null;\n this.activeProvider = null;\n const excludedProviderIds = failedProviderId ? new Set([failedProviderId]) : new Set();\n await this.connect(excludedProviderIds);\n await this.activeProvider.send(message);\n return error;\n }\n\n return null;\n }\n\n onMessage(handler) {\n for (const provider of this.providers) {\n if (typeof provider.onMessage === 'function') {\n provider.onMessage(handler);\n }\n }\n }\n\n async disconnect() {\n const disconnections = this.providers\n .filter((provider) => typeof provider.disconnect === 'function')\n .map((provider) => provider.disconnect());\n\n await Promise.all(disconnections);\n this.activeProvider = null;\n }\n}\n\nmodule.exports = SignalingPool;\n", "class WebSocketSignalingProvider {\n constructor({ id, url, WebSocketImpl, priority = 0 }) {\n if (!url) {\n throw new Error('WebSocket signaling provider requires a url');\n }\n\n this.id = id || url;\n this.url = url;\n this.priority = priority;\n this.WebSocketImpl = WebSocketImpl || globalThis.WebSocket;\n this.socket = null;\n this.messageHandlers = new Set();\n }\n\n async connect() {\n if (!this.WebSocketImpl) {\n throw new Error('WebSocket implementation is not available');\n }\n\n await new Promise((resolve, reject) => {\n const socket = new this.WebSocketImpl(this.url);\n\n socket.onopen = () => {\n this.socket = socket;\n resolve();\n };\n\n socket.onerror = () => {\n reject(new Error(`Unable to connect to signaling url ${this.url}`));\n };\n\n socket.onmessage = (event) => {\n let payload = event.data;\n try {\n payload = JSON.parse(event.data);\n } catch (error) {\n payload = event.data;\n }\n\n for (const handler of this.messageHandlers) {\n handler(payload);\n }\n };\n });\n }\n\n onMessage(handler) {\n this.messageHandlers.add(handler);\n }\n\n async send(message) {\n if (!this.socket || this.socket.readyState !== 1) {\n throw new Error(`Signaling socket is not open for ${this.url}`);\n }\n\n this.socket.send(JSON.stringify(message));\n }\n\n async disconnect() {\n if (!this.socket) {\n return;\n }\n\n this.socket.close();\n this.socket = null;\n }\n}\n\nmodule.exports = WebSocketSignalingProvider;\n", "const DEFAULT_CLOUDFLARE_SIGNALING_URLS = [\n 'wss://signaling.cloudflare.com',\n 'wss://cloudflare-webrtc-signaling.example',\n 'wss://trycloudflare-signaling.example'\n];\n\nconst DEFAULT_SIGNALING_FALLBACK_URLS = [\n 'wss://relay.dignity.dev/signaling',\n 'wss://backup-relay.dignity.dev/signaling'\n];\n\nmodule.exports = {\n DEFAULT_CLOUDFLARE_SIGNALING_URLS,\n DEFAULT_SIGNALING_FALLBACK_URLS\n};\n", "const SignalingPool = require('./signaling-pool');\nconst WebSocketSignalingProvider = require('./websocket-signaling-provider');\nconst {\n DEFAULT_CLOUDFLARE_SIGNALING_URLS,\n DEFAULT_SIGNALING_FALLBACK_URLS\n} = require('./default-signaling-config');\n\nfunction createDefaultSignalingPool(options = {}) {\n const cloudflareUrls = options.cloudflareUrls || DEFAULT_CLOUDFLARE_SIGNALING_URLS;\n const fallbackUrls = options.fallbackUrls || DEFAULT_SIGNALING_FALLBACK_URLS;\n const WebSocketImpl = options.WebSocketImpl;\n\n const providers = [];\n\n cloudflareUrls.forEach((url, index) => {\n providers.push(\n new WebSocketSignalingProvider({\n id: `cloudflare-${index + 1}`,\n url,\n WebSocketImpl,\n priority: index\n })\n );\n });\n\n fallbackUrls.forEach((url, index) => {\n providers.push(\n new WebSocketSignalingProvider({\n id: `fallback-${index + 1}`,\n url,\n WebSocketImpl,\n priority: cloudflareUrls.length + index\n })\n );\n });\n\n if (Array.isArray(options.customProviders)) {\n providers.push(...options.customProviders);\n }\n\n return new SignalingPool(providers);\n}\n\nmodule.exports = createDefaultSignalingPool;\n", "class InMemoryNetworkHub {\n constructor() {\n this.adapters = new Map();\n }\n\n register(adapter) {\n this.adapters.set(adapter.nodeId, adapter);\n }\n\n unregister(nodeId) {\n this.adapters.delete(nodeId);\n }\n\n async broadcast(senderId, message) {\n const deliveries = [];\n for (const [nodeId, adapter] of this.adapters.entries()) {\n if (nodeId !== senderId) {\n deliveries.push(adapter.receive(message));\n }\n }\n await Promise.all(deliveries);\n }\n}\n\nclass InMemoryNetworkAdapter {\n constructor(hub) {\n if (!hub) {\n throw new Error('InMemoryNetworkAdapter requires an InMemoryNetworkHub');\n }\n\n this.hub = hub;\n this.nodeId = null;\n this.messageHandlers = new Set();\n }\n\n async start(nodeId) {\n this.nodeId = nodeId;\n this.hub.register(this);\n }\n\n async stop() {\n if (this.nodeId) {\n this.hub.unregister(this.nodeId);\n }\n\n this.nodeId = null;\n }\n\n async broadcast(message) {\n if (!this.nodeId) {\n throw new Error('Network adapter has not been started');\n }\n\n await this.hub.broadcast(this.nodeId, message);\n }\n\n onMessage(handler) {\n this.messageHandlers.add(handler);\n }\n\n offMessage(handler) {\n this.messageHandlers.delete(handler);\n }\n\n async receive(message) {\n const deliveries = [];\n for (const handler of this.messageHandlers) {\n deliveries.push(handler(message));\n }\n await Promise.all(deliveries);\n }\n}\n\nmodule.exports = {\n InMemoryNetworkHub,\n InMemoryNetworkAdapter\n};\n", "/**\n * dignity.js public API.\n *\n * This package exposes:\n * - `DignityP2P`: REST-like object CRUD over peer-to-peer operation replication\n * - signaling providers and pool helpers\n * - in-memory adapter utilities for tests and local prototyping\n */\nconst DignityP2P = require('./core/dignity-p2p');\nconst createDefaultSignalingPool = require('./signaling/create-default-signaling-pool');\nconst SignalingPool = require('./signaling/signaling-pool');\nconst WebSocketSignalingProvider = require('./signaling/websocket-signaling-provider');\nconst {\n InMemoryNetworkHub,\n InMemoryNetworkAdapter\n} = require('./network/in-memory-network');\nconst {\n DEFAULT_CLOUDFLARE_SIGNALING_URLS,\n DEFAULT_SIGNALING_FALLBACK_URLS\n} = require('./signaling/default-signaling-config');\nconst VDF = require('./security/vdf');\nconst SlothPermutation = require('./security/sloth-vdf');\nconst {\n MessageSecurityService,\n DEFAULT_SECURITY_OPTIONS\n} = require('./security/message-security-service');\n\nmodule.exports = {\n DignityP2P,\n createDefaultSignalingPool,\n SignalingPool,\n WebSocketSignalingProvider,\n InMemoryNetworkHub,\n InMemoryNetworkAdapter,\n DEFAULT_CLOUDFLARE_SIGNALING_URLS,\n DEFAULT_SIGNALING_FALLBACK_URLS,\n VDF,\n SlothPermutation,\n MessageSecurityService,\n DEFAULT_SECURITY_OPTIONS\n};\n"],
|
|
5
|
+
"mappings": "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O,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,YAAI,EAAE,CAAC;AACP,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,YAAI,EAAE,CAAC;AACP,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,YAAI,EAAE,CAAC;AACP,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,YAAI,EAAE,CAAC;AACP,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,YAAI,EAAE,CAAC;AACP,cAAM,IAAI;AACV,cAAM,IAAI;AACV,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAA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",
|
|
6
|
+
"names": ["exports", "module", "exports", "module", "exports", "module", "exports", "module", "SlothPermutation", "exports", "module", "SlothPermutation", "VDF", "exports", "module", "VDF", "DEFAULT_SECURITY_OPTIONS", "MessageSecurityService", "nonce", "encrypted", "exports", "module", "MessageSecurityService", "DignityP2P", "exports", "module", "SignalingPool", "exports", "module", "WebSocketSignalingProvider", "exports", "module", "DEFAULT_CLOUDFLARE_SIGNALING_URLS", "DEFAULT_SIGNALING_FALLBACK_URLS", "exports", "module", "SignalingPool", "WebSocketSignalingProvider", "DEFAULT_CLOUDFLARE_SIGNALING_URLS", "DEFAULT_SIGNALING_FALLBACK_URLS", "createDefaultSignalingPool", "exports", "module", "InMemoryNetworkHub", "InMemoryNetworkAdapter"]
|
|
7
|
+
}
|