hakuban 0.6.0 → 0.6.1
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/hakuban-with-wasm.js +107 -95
- package/hakuban-with-wasm.js.map +1 -1
- package/hakuban-with-wasm.min.js +1 -1
- package/hakuban-with-wasm.min.js.map +1 -1
- package/hakuban.js +106 -94
- package/hakuban.js.map +1 -1
- package/hakuban.min.js +1 -1
- package/hakuban.min.js.map +1 -1
- package/hakuban.wasm +0 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hakuban-with-wasm.min.js","sources":["pkg/hakuban.js","coffee/manager.coffee","coffee/common.coffee","coffee/hakuban-with-wasm.coffee"],"sourcesContent":["\nlet wasm;\n\nconst heap = new Array(32).fill(undefined);\n\nheap.push(undefined, null, true, false);\n\nfunction getObject(idx) { return heap[idx]; }\n\nlet heap_next = heap.length;\n\nfunction dropObject(idx) {\n if (idx < 36) return;\n heap[idx] = heap_next;\n heap_next = idx;\n}\n\nfunction takeObject(idx) {\n const ret = getObject(idx);\n dropObject(idx);\n return ret;\n}\n\nlet cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n\ncachedTextDecoder.decode();\n\nlet cachegetUint8Memory0 = null;\nfunction getUint8Memory0() {\n if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) {\n cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachegetUint8Memory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));\n}\n\nfunction addHeapObject(obj) {\n if (heap_next === heap.length) heap.push(heap.length + 1);\n const idx = heap_next;\n heap_next = heap[idx];\n\n heap[idx] = obj;\n return idx;\n}\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == 'number' || type == 'boolean' || val == null) {\n return `${val}`;\n }\n if (type == 'string') {\n return `\"${val}\"`;\n }\n if (type == 'symbol') {\n const description = val.description;\n if (description == null) {\n return 'Symbol';\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == 'function') {\n const name = val.name;\n if (typeof name == 'string' && name.length > 0) {\n return `Function(${name})`;\n } else {\n return 'Function';\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = '[';\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for(let i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n debug += ']';\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nlet cachedTextEncoder = new TextEncoder('utf-8');\n\nconst encodeString = (typeof cachedTextEncoder.encodeInto === 'function'\n ? function (arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n}\n : function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n});\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length);\n getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len);\n\n const mem = getUint8Memory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3);\n const view = getUint8Memory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n\n offset += ret.written;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nlet cachegetInt32Memory0 = null;\nfunction getInt32Memory0() {\n if (cachegetInt32Memory0 === null || cachegetInt32Memory0.buffer !== wasm.memory.buffer) {\n cachegetInt32Memory0 = new Int32Array(wasm.memory.buffer);\n }\n return cachegetInt32Memory0;\n}\n\nfunction makeMutClosure(arg0, arg1, dtor, f) {\n const state = { a: arg0, b: arg1, cnt: 1, dtor };\n const real = (...args) => {\n // First up with a closure we increment the internal reference\n // count. This ensures that the Rust closure environment won't\n // be deallocated while we're invoking it.\n state.cnt++;\n const a = state.a;\n state.a = 0;\n try {\n return f(a, state.b, ...args);\n } finally {\n if (--state.cnt === 0) {\n wasm.__wbindgen_export_2.get(state.dtor)(a, state.b);\n\n } else {\n state.a = a;\n }\n }\n };\n real.original = state;\n\n return real;\n}\nfunction __wbg_adapter_18(arg0, arg1, arg2) {\n wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h027708a9a2f14b34(arg0, arg1, addHeapObject(arg2));\n}\n\nconst u32CvtShim = new Uint32Array(2);\n\nconst uint64CvtShim = new BigUint64Array(u32CvtShim.buffer);\n/**\n* @param {string} json_string\n* @returns {WasmHashResult}\n*/\nexport function hakuban_json_hash(json_string) {\n var ptr0 = passStringToWasm0(json_string, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ret = wasm.hakuban_json_hash(ptr0, len0);\n return WasmHashResult.__wrap(ret);\n}\n\n/**\n* @param {number} local_node\n* @param {string} descriptor\n* @returns {WasmTagObserveResult}\n*/\nexport function hakuban_tag_observe_new(local_node, descriptor) {\n var ptr0 = passStringToWasm0(descriptor, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ret = wasm.hakuban_tag_observe_new(local_node, ptr0, len0);\n return WasmTagObserveResult.__wrap(ret);\n}\n\n/**\n* @param {number} tag_observe_pointer\n*/\nexport function hakuban_tag_observe_drop(tag_observe_pointer) {\n wasm.hakuban_tag_observe_drop(tag_observe_pointer);\n}\n\n/**\n* @param {number} tag_observe_pointer\n* @param {string} object_descriptor\n* @returns {WasmTagObserveObjectStateBorrowResult}\n*/\nexport function hakuban_tag_observe_object_state_borrow(tag_observe_pointer, object_descriptor) {\n var ptr0 = passStringToWasm0(object_descriptor, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ret = wasm.hakuban_tag_observe_object_state_borrow(tag_observe_pointer, ptr0, len0);\n return WasmTagObserveObjectStateBorrowResult.__wrap(ret);\n}\n\n/**\n* @param {number} tag_observe_pointer\n* @returns {string}\n*/\nexport function hakuban_tag_observe_object_descriptors(tag_observe_pointer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.hakuban_tag_observe_object_descriptors(retptr, tag_observe_pointer);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_free(r0, r1);\n }\n}\n\n/**\n* @param {number} tag_observe_ptr\n* @returns {number}\n*/\nexport function hakuban_tag_observe_events_get(tag_observe_ptr) {\n var ret = wasm.hakuban_tag_observe_events_get(tag_observe_ptr);\n return ret;\n}\n\n/**\n* @param {number} local_node\n* @param {string} descriptor\n* @returns {WasmObjectObserveResult}\n*/\nexport function hakuban_object_observe_new(local_node, descriptor) {\n var ptr0 = passStringToWasm0(descriptor, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ret = wasm.hakuban_object_observe_new(local_node, ptr0, len0);\n return WasmObjectObserveResult.__wrap(ret);\n}\n\n/**\n* @param {number} object_ptr\n*/\nexport function hakuban_object_observe_drop(object_ptr) {\n wasm.hakuban_object_observe_drop(object_ptr);\n}\n\n/**\n* @param {number} object_observe_pointer\n* @returns {number}\n*/\nexport function hakuban_object_observe_state_borrow(object_observe_pointer) {\n var ret = wasm.hakuban_object_observe_state_borrow(object_observe_pointer);\n return ret;\n}\n\n/**\n* @param {number} state_ptr\n*/\nexport function hakuban_object_observe_state_return(state_ptr) {\n wasm.hakuban_object_observe_state_return(state_ptr);\n}\n\n/**\n* @param {number} state_ptr\n* @returns {BigInt}\n*/\nexport function hakuban_object_observe_state_synchronized(state_ptr) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.hakuban_object_observe_state_synchronized(retptr, state_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n u32CvtShim[0] = r0;\n u32CvtShim[1] = r1;\n const n0 = uint64CvtShim[0];\n return n0;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\n/**\n* @param {number} state_ptr\n* @returns {string}\n*/\nexport function hakuban_object_observe_state_data_version(state_ptr) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.hakuban_object_observe_state_data_version(retptr, state_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_free(r0, r1);\n }\n}\n\n/**\n* @param {number} state_ptr\n* @returns {string}\n*/\nexport function hakuban_object_observe_state_data_type(state_ptr) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.hakuban_object_observe_state_data_type(retptr, state_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_free(r0, r1);\n }\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len);\n}\n/**\n* @param {number} state_ptr\n* @returns {Uint8Array}\n*/\nexport function hakuban_object_observe_state_data(state_ptr) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.hakuban_object_observe_state_data(retptr, state_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v0 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v0;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\n/**\n* @param {number} object_observe_ptr\n* @returns {number}\n*/\nexport function hakuban_object_observe_events_get(object_observe_ptr) {\n var ret = wasm.hakuban_object_observe_events_get(object_observe_ptr);\n return ret;\n}\n\n/**\n* @param {number} events_pointer\n*/\nexport function hakuban_object_descriptor_events_drop(events_pointer) {\n wasm.hakuban_object_descriptor_events_drop(events_pointer);\n}\n\n/**\n* @param {number} events_pointer\n* @param {Promise<any>} cancel\n* @returns {Promise<any>}\n*/\nexport function hakuban_object_descriptor_events_next(events_pointer, cancel) {\n var ret = wasm.hakuban_object_descriptor_events_next(events_pointer, addHeapObject(cancel));\n return takeObject(ret);\n}\n\n/**\n* @param {string} default_log_level\n* @returns {number}\n*/\nexport function hakuban_logger_initialize(default_log_level) {\n var ptr0 = passStringToWasm0(default_log_level, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ret = wasm.hakuban_logger_initialize(ptr0, len0);\n return ret;\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n/**\n* @param {number} local_node_pointer\n* @param {boolean} upstream\n* @param {boolean | undefined} diff_produce\n* @param {boolean | undefined} diff_request\n* @returns {WasmRemoteNodeNewResult}\n*/\nexport function hakuban_remote_node_new(local_node_pointer, upstream, diff_produce, diff_request) {\n var ret = wasm.hakuban_remote_node_new(local_node_pointer, upstream, isLikeNone(diff_produce) ? 0xFFFFFF : diff_produce ? 1 : 0, isLikeNone(diff_request) ? 0xFFFFFF : diff_request ? 1 : 0);\n return WasmRemoteNodeNewResult.__wrap(ret);\n}\n\n/**\n* @param {number} remote_node_pointer\n*/\nexport function hakuban_remote_node_drop(remote_node_pointer) {\n wasm.hakuban_remote_node_drop(remote_node_pointer);\n}\n\n/**\n* @param {number} remote_node_pointer\n* @returns {Uint8Array}\n*/\nexport function hakuban_remote_node_connected(remote_node_pointer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.hakuban_remote_node_connected(retptr, remote_node_pointer);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v0 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v0;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\n/**\n* @param {number} remote_node_pointer\n*/\nexport function hakuban_remote_node_disconnected(remote_node_pointer) {\n wasm.hakuban_remote_node_disconnected(remote_node_pointer);\n}\n\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1);\n getUint8Memory0().set(arg, ptr / 1);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n/**\n* @param {number} remote_node_pointer\n* @param {Uint8Array} data\n* @returns {Uint8Array}\n*/\nexport function hakuban_remote_node_received_message(remote_node_pointer, data) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n var ptr0 = passArray8ToWasm0(data, wasm.__wbindgen_malloc);\n var len0 = WASM_VECTOR_LEN;\n wasm.hakuban_remote_node_received_message(retptr, remote_node_pointer, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\n/**\n* @param {number} remote_node_pointer\n* @param {Promise<any>} cancel\n* @returns {Promise<any>}\n*/\nexport function hakuban_remote_node_next_local_node_event(remote_node_pointer, cancel) {\n var ret = wasm.hakuban_remote_node_next_local_node_event(remote_node_pointer, addHeapObject(cancel));\n return takeObject(ret);\n}\n\n/**\n* @param {number} remote_node_pointer\n* @param {string} event\n* @returns {Uint8Array}\n*/\nexport function hakuban_remote_node_received_local_node_event(remote_node_pointer, event) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n var ptr0 = passStringToWasm0(event, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n wasm.hakuban_remote_node_received_local_node_event(retptr, remote_node_pointer, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\n/**\n* @param {number} remote_node_pointer\n* @returns {Uint8Array}\n*/\nexport function hakuban_remote_node_ack(remote_node_pointer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.hakuban_remote_node_ack(retptr, remote_node_pointer);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v0 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v0;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\n/**\n* @param {number} local_node\n* @param {string} descriptor\n* @returns {WasmTagExposeResult}\n*/\nexport function hakuban_tag_expose_new(local_node, descriptor) {\n var ptr0 = passStringToWasm0(descriptor, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ret = wasm.hakuban_tag_expose_new(local_node, ptr0, len0);\n return WasmTagExposeResult.__wrap(ret);\n}\n\n/**\n* @param {number} tag_expose_pointer\n*/\nexport function hakuban_tag_expose_drop(tag_expose_pointer) {\n wasm.hakuban_tag_expose_drop(tag_expose_pointer);\n}\n\n/**\n* @param {number} tag_expose_pointer\n* @returns {string}\n*/\nexport function hakuban_tag_expose_object_descriptors(tag_expose_pointer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.hakuban_tag_expose_object_descriptors(retptr, tag_expose_pointer);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_free(r0, r1);\n }\n}\n\n/**\n* @param {number} tag_expose_pointer\n* @param {string} object_descriptor\n* @param {string} data_version\n* @param {string} data_type\n* @param {Uint8Array} data\n* @param {BigInt} assignment_id\n* @returns {WasmTagExposeSetObjectStateResult}\n*/\nexport function hakuban_tag_expose_set_object_state(tag_expose_pointer, object_descriptor, data_version, data_type, data, assignment_id) {\n var ptr0 = passStringToWasm0(object_descriptor, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = passStringToWasm0(data_version, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n var ptr2 = passStringToWasm0(data_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n var ptr3 = passArray8ToWasm0(data, wasm.__wbindgen_malloc);\n var len3 = WASM_VECTOR_LEN;\n uint64CvtShim[0] = assignment_id;\n const low4 = u32CvtShim[0];\n const high4 = u32CvtShim[1];\n var ret = wasm.hakuban_tag_expose_set_object_state(tag_expose_pointer, ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, low4, high4);\n return WasmTagExposeSetObjectStateResult.__wrap(ret);\n}\n\n/**\n* @param {number} tag_expose_pointer\n* @param {string} object_descriptor\n* @returns {WasmTagExposeAssignmentResult}\n*/\nexport function hakuban_tag_expose_assignment(tag_expose_pointer, object_descriptor) {\n var ptr0 = passStringToWasm0(object_descriptor, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ret = wasm.hakuban_tag_expose_assignment(tag_expose_pointer, ptr0, len0);\n return WasmTagExposeAssignmentResult.__wrap(ret);\n}\n\n/**\n* @param {number} tag_expose_pointer\n* @param {string} object_descriptor\n* @param {BigInt} assignment_id\n* @returns {number}\n*/\nexport function hakuban_tag_expose_desynchronize(tag_expose_pointer, object_descriptor, assignment_id) {\n var ptr0 = passStringToWasm0(object_descriptor, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n uint64CvtShim[0] = assignment_id;\n const low1 = u32CvtShim[0];\n const high1 = u32CvtShim[1];\n var ret = wasm.hakuban_tag_expose_desynchronize(tag_expose_pointer, ptr0, len0, low1, high1);\n return ret >>> 0;\n}\n\n/**\n* @param {number} tag_expose_ptr\n* @returns {number}\n*/\nexport function hakuban_tag_expose_events_get(tag_expose_ptr) {\n var ret = wasm.hakuban_tag_expose_events_get(tag_expose_ptr);\n return ret;\n}\n\n/**\n* @param {number} local_node\n* @param {string} descriptor\n* @returns {WasmObjectExposeResult}\n*/\nexport function hakuban_object_expose_new(local_node, descriptor) {\n var ptr0 = passStringToWasm0(descriptor, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ret = wasm.hakuban_object_expose_new(local_node, ptr0, len0);\n return WasmObjectExposeResult.__wrap(ret);\n}\n\n/**\n* @param {number} object_expose_pointer\n*/\nexport function hakuban_object_expose_drop(object_expose_pointer) {\n wasm.hakuban_object_expose_drop(object_expose_pointer);\n}\n\n/**\n* @param {number} object_expose_pointer\n* @param {string} data_version\n* @param {string} data_type\n* @param {Uint8Array} data\n* @param {BigInt} assignment_id\n* @returns {WasmObjectExposeStateResult}\n*/\nexport function hakuban_object_expose_set_state(object_expose_pointer, data_version, data_type, data, assignment_id) {\n var ptr0 = passStringToWasm0(data_version, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = passStringToWasm0(data_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n var ptr2 = passArray8ToWasm0(data, wasm.__wbindgen_malloc);\n var len2 = WASM_VECTOR_LEN;\n uint64CvtShim[0] = assignment_id;\n const low3 = u32CvtShim[0];\n const high3 = u32CvtShim[1];\n var ret = wasm.hakuban_object_expose_set_state(object_expose_pointer, ptr0, len0, ptr1, len1, ptr2, len2, low3, high3);\n return WasmObjectExposeStateResult.__wrap(ret);\n}\n\n/**\n* @param {number} object_expose_pointer\n* @returns {BigInt}\n*/\nexport function hakuban_object_expose_assignment(object_expose_pointer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.hakuban_object_expose_assignment(retptr, object_expose_pointer);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n u32CvtShim[0] = r0;\n u32CvtShim[1] = r1;\n const n0 = uint64CvtShim[0];\n return n0;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\n/**\n* @param {number} object_expose_pointer\n* @param {BigInt} assignment_id\n*/\nexport function hakuban_object_expose_desynchronize(object_expose_pointer, assignment_id) {\n uint64CvtShim[0] = assignment_id;\n const low0 = u32CvtShim[0];\n const high0 = u32CvtShim[1];\n wasm.hakuban_object_expose_desynchronize(object_expose_pointer, low0, high0);\n}\n\n/**\n* @param {number} object_expose_ptr\n* @returns {number}\n*/\nexport function hakuban_object_expose_events_get(object_expose_ptr) {\n var ret = wasm.hakuban_object_expose_events_get(object_expose_ptr);\n return ret;\n}\n\n/**\n* @param {string} name_str\n* @returns {WasmLocalNodeNewResult}\n*/\nexport function hakuban_local_node_new(name_str) {\n var ptr0 = passStringToWasm0(name_str, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ret = wasm.hakuban_local_node_new(ptr0, len0);\n return WasmLocalNodeNewResult.__wrap(ret);\n}\n\n/**\n* @param {number} local_node\n*/\nexport function hakuban_local_node_drop(local_node) {\n wasm.hakuban_local_node_drop(local_node);\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n wasm.__wbindgen_exn_store(addHeapObject(e));\n }\n}\nfunction __wbg_adapter_122(arg0, arg1, arg2, arg3) {\n wasm.wasm_bindgen__convert__closures__invoke2_mut__hefcd3c3d153ecf73(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));\n}\n\n/**\n*/\nexport const WasmError = Object.freeze({ None:0,\"0\":\"None\",InvalidString:1,\"1\":\"InvalidString\",InvalidJSON:2,\"2\":\"InvalidJSON\",InvalidURL:3,\"3\":\"InvalidURL\",ObjectNotFound:4,\"4\":\"ObjectNotFound\", });\n/**\n*/\nexport class WasmHashResult {\n\n static __wrap(ptr) {\n const obj = Object.create(WasmHashResult.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmhashresult_free(ptr);\n }\n /**\n */\n get error() {\n var ret = wasm.__wbg_get_wasmhashresult_error(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set error(arg0) {\n wasm.__wbg_set_wasmhashresult_error(this.ptr, arg0);\n }\n /**\n */\n get hash() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.__wbg_get_wasmhashresult_hash(retptr, this.ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n u32CvtShim[0] = r0;\n u32CvtShim[1] = r1;\n const n0 = uint64CvtShim[0];\n return n0;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {BigInt} arg0\n */\n set hash(arg0) {\n uint64CvtShim[0] = arg0;\n const low0 = u32CvtShim[0];\n const high0 = u32CvtShim[1];\n wasm.__wbg_set_wasmhashresult_hash(this.ptr, low0, high0);\n }\n}\n/**\n*/\nexport class WasmLocalNodeNewResult {\n\n static __wrap(ptr) {\n const obj = Object.create(WasmLocalNodeNewResult.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmlocalnodenewresult_free(ptr);\n }\n /**\n */\n get error() {\n var ret = wasm.__wbg_get_wasmlocalnodenewresult_error(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set error(arg0) {\n wasm.__wbg_set_wasmlocalnodenewresult_error(this.ptr, arg0);\n }\n /**\n */\n get local_node_pointer() {\n var ret = wasm.__wbg_get_wasmlocalnodenewresult_local_node_pointer(this.ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set local_node_pointer(arg0) {\n wasm.__wbg_set_wasmlocalnodenewresult_local_node_pointer(this.ptr, arg0);\n }\n}\n/**\n*/\nexport class WasmObjectExposeResult {\n\n static __wrap(ptr) {\n const obj = Object.create(WasmObjectExposeResult.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmobjectexposeresult_free(ptr);\n }\n /**\n */\n get error() {\n var ret = wasm.__wbg_get_wasmobjectexposeresult_error(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set error(arg0) {\n wasm.__wbg_set_wasmobjectexposeresult_error(this.ptr, arg0);\n }\n /**\n */\n get object_expose_pointer() {\n var ret = wasm.__wbg_get_wasmobjectexposeresult_object_expose_pointer(this.ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set object_expose_pointer(arg0) {\n wasm.__wbg_set_wasmobjectexposeresult_object_expose_pointer(this.ptr, arg0);\n }\n}\n/**\n*/\nexport class WasmObjectExposeStateResult {\n\n static __wrap(ptr) {\n const obj = Object.create(WasmObjectExposeStateResult.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmobjectexposestateresult_free(ptr);\n }\n /**\n */\n get error() {\n var ret = wasm.__wbg_get_wasmobjectexposestateresult_error(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set error(arg0) {\n wasm.__wbg_set_wasmobjectexposestateresult_error(this.ptr, arg0);\n }\n /**\n */\n get changed() {\n var ret = wasm.__wbg_get_wasmobjectexposestateresult_changed(this.ptr);\n return ret !== 0;\n }\n /**\n * @param {boolean} arg0\n */\n set changed(arg0) {\n wasm.__wbg_set_wasmobjectexposestateresult_changed(this.ptr, arg0);\n }\n}\n/**\n*/\nexport class WasmObjectObserveResult {\n\n static __wrap(ptr) {\n const obj = Object.create(WasmObjectObserveResult.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmobjectobserveresult_free(ptr);\n }\n /**\n */\n get error() {\n var ret = wasm.__wbg_get_wasmobjectobserveresult_error(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set error(arg0) {\n wasm.__wbg_set_wasmobjectobserveresult_error(this.ptr, arg0);\n }\n /**\n */\n get object_observe_pointer() {\n var ret = wasm.__wbg_get_wasmobjectobserveresult_object_observe_pointer(this.ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set object_observe_pointer(arg0) {\n wasm.__wbg_set_wasmobjectobserveresult_object_observe_pointer(this.ptr, arg0);\n }\n}\n/**\n*/\nexport class WasmRemoteNode {\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmremotenode_free(ptr);\n }\n}\n/**\n*/\nexport class WasmRemoteNodeNewResult {\n\n static __wrap(ptr) {\n const obj = Object.create(WasmRemoteNodeNewResult.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmremotenodenewresult_free(ptr);\n }\n /**\n */\n get error() {\n var ret = wasm.__wbg_get_wasmremotenodenewresult_error(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set error(arg0) {\n wasm.__wbg_set_wasmremotenodenewresult_error(this.ptr, arg0);\n }\n /**\n */\n get remote_node_pointer() {\n var ret = wasm.__wbg_get_wasmremotenodenewresult_remote_node_pointer(this.ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set remote_node_pointer(arg0) {\n wasm.__wbg_set_wasmremotenodenewresult_remote_node_pointer(this.ptr, arg0);\n }\n}\n/**\n*/\nexport class WasmTagExposeAssignmentResult {\n\n static __wrap(ptr) {\n const obj = Object.create(WasmTagExposeAssignmentResult.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmtagexposeassignmentresult_free(ptr);\n }\n /**\n */\n get error() {\n var ret = wasm.__wbg_get_wasmtagexposeassignmentresult_error(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set error(arg0) {\n wasm.__wbg_set_wasmtagexposeassignmentresult_error(this.ptr, arg0);\n }\n /**\n */\n get assignment() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.__wbg_get_wasmtagexposeassignmentresult_assignment(retptr, this.ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n u32CvtShim[0] = r0;\n u32CvtShim[1] = r1;\n const n0 = uint64CvtShim[0];\n return n0;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {BigInt} arg0\n */\n set assignment(arg0) {\n uint64CvtShim[0] = arg0;\n const low0 = u32CvtShim[0];\n const high0 = u32CvtShim[1];\n wasm.__wbg_set_wasmtagexposeassignmentresult_assignment(this.ptr, low0, high0);\n }\n}\n/**\n*/\nexport class WasmTagExposeResult {\n\n static __wrap(ptr) {\n const obj = Object.create(WasmTagExposeResult.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmtagexposeresult_free(ptr);\n }\n /**\n */\n get error() {\n var ret = wasm.__wbg_get_wasmtagexposeresult_error(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set error(arg0) {\n wasm.__wbg_set_wasmtagexposeresult_error(this.ptr, arg0);\n }\n /**\n */\n get tag_expose_pointer() {\n var ret = wasm.__wbg_get_wasmtagexposeresult_tag_expose_pointer(this.ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set tag_expose_pointer(arg0) {\n wasm.__wbg_set_wasmtagexposeresult_tag_expose_pointer(this.ptr, arg0);\n }\n}\n/**\n*/\nexport class WasmTagExposeSetObjectStateResult {\n\n static __wrap(ptr) {\n const obj = Object.create(WasmTagExposeSetObjectStateResult.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmtagexposesetobjectstateresult_free(ptr);\n }\n /**\n */\n get error() {\n var ret = wasm.__wbg_get_wasmtagexposesetobjectstateresult_error(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set error(arg0) {\n wasm.__wbg_set_wasmtagexposesetobjectstateresult_error(this.ptr, arg0);\n }\n /**\n */\n get changed() {\n var ret = wasm.__wbg_get_wasmtagexposesetobjectstateresult_changed(this.ptr);\n return ret !== 0;\n }\n /**\n * @param {boolean} arg0\n */\n set changed(arg0) {\n wasm.__wbg_set_wasmtagexposesetobjectstateresult_changed(this.ptr, arg0);\n }\n}\n/**\n*/\nexport class WasmTagObserveObjectStateBorrowResult {\n\n static __wrap(ptr) {\n const obj = Object.create(WasmTagObserveObjectStateBorrowResult.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmtagobserveobjectstateborrowresult_free(ptr);\n }\n /**\n */\n get error() {\n var ret = wasm.__wbg_get_wasmtagobserveobjectstateborrowresult_error(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set error(arg0) {\n wasm.__wbg_set_wasmtagobserveobjectstateborrowresult_error(this.ptr, arg0);\n }\n /**\n */\n get state_pointer() {\n var ret = wasm.__wbg_get_wasmtagobserveobjectstateborrowresult_state_pointer(this.ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set state_pointer(arg0) {\n wasm.__wbg_set_wasmtagobserveobjectstateborrowresult_state_pointer(this.ptr, arg0);\n }\n}\n/**\n*/\nexport class WasmTagObserveResult {\n\n static __wrap(ptr) {\n const obj = Object.create(WasmTagObserveResult.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmtagobserveresult_free(ptr);\n }\n /**\n */\n get error() {\n var ret = wasm.__wbg_get_wasmtagobserveresult_error(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set error(arg0) {\n wasm.__wbg_set_wasmtagobserveresult_error(this.ptr, arg0);\n }\n /**\n */\n get tag_observe_pointer() {\n var ret = wasm.__wbg_get_wasmtagobserveresult_tag_observe_pointer(this.ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set tag_observe_pointer(arg0) {\n wasm.__wbg_set_wasmtagobserveresult_tag_observe_pointer(this.ptr, arg0);\n }\n}\n\nasync function load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n\n } catch (e) {\n if (module.headers.get('Content-Type') != 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n\n } else {\n return instance;\n }\n }\n}\n\nasync function init(input) {\n if (typeof input === 'undefined') {\n input = new URL('hakuban_bg.wasm', import.meta.url);\n }\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbindgen_object_drop_ref = function(arg0) {\n takeObject(arg0);\n };\n imports.wbg.__wbindgen_string_new = function(arg0, arg1) {\n var ret = getStringFromWasm0(arg0, arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_cb_drop = function(arg0) {\n const obj = takeObject(arg0).original;\n if (obj.cnt-- == 1) {\n obj.a = 0;\n return true;\n }\n var ret = false;\n return ret;\n };\n imports.wbg.__wbg_debug_675b0ecb65722d2a = function(arg0) {\n console.debug(getObject(arg0));\n };\n imports.wbg.__wbg_error_cc38ce2b4b661e1d = function(arg0) {\n console.error(getObject(arg0));\n };\n imports.wbg.__wbg_info_e0c9813e6fd3bdc1 = function(arg0) {\n console.info(getObject(arg0));\n };\n imports.wbg.__wbg_log_3445347661d4505e = function(arg0) {\n console.log(getObject(arg0));\n };\n imports.wbg.__wbg_warn_5ec7c7c02d0b3841 = function(arg0) {\n console.warn(getObject(arg0));\n };\n imports.wbg.__wbg_now_559193109055ebad = function(arg0) {\n var ret = getObject(arg0).now();\n return ret;\n };\n imports.wbg.__wbg_newnoargs_be86524d73f67598 = function(arg0, arg1) {\n var ret = new Function(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_get_4d0f21c2f823742e = function() { return handleError(function (arg0, arg1) {\n var ret = Reflect.get(getObject(arg0), getObject(arg1));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_call_888d259a5fefc347 = function() { return handleError(function (arg0, arg1) {\n var ret = getObject(arg0).call(getObject(arg1));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_call_346669c262382ad7 = function() { return handleError(function (arg0, arg1, arg2) {\n var ret = getObject(arg0).call(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_new_b1d61b5687f5e73a = function(arg0, arg1) {\n try {\n var state0 = {a: arg0, b: arg1};\n var cb0 = (arg0, arg1) => {\n const a = state0.a;\n state0.a = 0;\n try {\n return __wbg_adapter_122(a, state0.b, arg0, arg1);\n } finally {\n state0.a = a;\n }\n };\n var ret = new Promise(cb0);\n return addHeapObject(ret);\n } finally {\n state0.a = state0.b = 0;\n }\n };\n imports.wbg.__wbg_resolve_d23068002f584f22 = function(arg0) {\n var ret = Promise.resolve(getObject(arg0));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_then_2fcac196782070cc = function(arg0, arg1) {\n var ret = getObject(arg0).then(getObject(arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_then_8c2d62e8ae5978f7 = function(arg0, arg1, arg2) {\n var ret = getObject(arg0).then(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_self_c6fbdfc2918d5e58 = function() { return handleError(function () {\n var ret = self.self;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_window_baec038b5ab35c54 = function() { return handleError(function () {\n var ret = window.window;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_globalThis_3f735a5746d41fbd = function() { return handleError(function () {\n var ret = globalThis.globalThis;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_global_1bc0b39582740e95 = function() { return handleError(function () {\n var ret = global.global;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbindgen_is_undefined = function(arg0) {\n var ret = getObject(arg0) === undefined;\n return ret;\n };\n imports.wbg.__wbindgen_object_clone_ref = function(arg0) {\n var ret = getObject(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_693216e109162396 = function() {\n var ret = new Error();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_stack_0ddaca5d1abfb52f = function(arg0, arg1) {\n var ret = getObject(arg1).stack;\n var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n imports.wbg.__wbg_error_09919627ac0992f5 = function(arg0, arg1) {\n try {\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(arg0, arg1);\n }\n };\n imports.wbg.__wbindgen_debug_string = function(arg0, arg1) {\n var ret = debugString(getObject(arg1));\n var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n imports.wbg.__wbindgen_throw = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n imports.wbg.__wbindgen_rethrow = function(arg0) {\n throw takeObject(arg0);\n };\n imports.wbg.__wbindgen_closure_wrapper1967 = function(arg0, arg1, arg2) {\n var ret = makeMutClosure(arg0, arg1, 439, __wbg_adapter_18);\n return addHeapObject(ret);\n };\n\n if (typeof input === 'string' || (typeof Request === 'function' && input instanceof Request) || (typeof URL === 'function' && input instanceof URL)) {\n input = fetch(input);\n }\n\n\n\n const { instance, module } = await load(await input, imports);\n\n wasm = instance.exports;\n init.__wbindgen_wasm_module = module;\n\n return wasm;\n}\n\nexport default init;\n\n","\nclass Queue\n\n\tconstructor: ->\n\t\t@queue = []\n\t\t@wake = null\n\t\n\tpush: (value)->\n\t\t@queue.push(value)\n\t\tif @wake?\n\t\t\t@wake()\n\t\t\t@wake = null\n\t\n\tshift: ->\n\t\tloop\n\t\t\tvalue = @queue.shift()\n\t\t\tif value?\n\t\t\t\treturn value\n\t\t\telse\n\t\t\t\tthrow \"2 concurrent shifts on a single queue\" if @wake?\n\t\t\t\tawait new Promise (@wake)=> null\n\t\n\tclear: ->\n\t\t@queue = []\n\n\n\nexport class ObjectManager\n\tconstructor: (@contract, @object_class, @block)->\n\t\t@_objects = {}\n\t\t@running_handlers = {}\n\t\t@event_queue = new Queue()\n\n\t\t#TODO: make one loop out of following two\n\n\t\tevent_loop_stop_requested = new Promise (@event_loop_stop)=> null\n\t\t@event_loop_stopped = new Promise (resolve, reject)=>\n\t\t\tevents = @contract.events()\n\t\t\twhile event = await Promise.race([events.next(), event_loop_stop_requested])\n\t\t\t\tbreak if not event?\n\t\t\t\t@event_queue.push(event)\n\t\t\tevents.drop()\n\t\t\tresolve()\n\n\t\t@async_loop_stopped = new Promise (resolve, reject)=>\n\t\t\twhile (event = await @event_queue.shift())?\n\t\t\t\tswitch event.action\n\t\t\t\t\twhen \"Insert\" \n\t\t\t\t\t\tthrow \"Double insert\" if @_objects[event.descriptor.hash()]?\n\t\t\t\t\t\t@_objects[event.descriptor.hash()] = new @object_class(@contract, event.descriptor)\n\t\t\t\t\t\t@event_queue.push({action: \"HandlerStart\", descriptor: event.descriptor}) if @block?\n\t\t\t\t\twhen \"Change\"\n\t\t\t\t\t\tthrow \"Uh, oh, object missing :(\" if not @_objects[event.descriptor.hash()]?\n\t\t\t\t\t\t@_objects[event.descriptor.hash()].do_change(\"change\")\n\t\t\t\t\twhen \"Remove\"\n\t\t\t\t\t\tthrow \"Trying to remove non-existing object. Sad.\" if not @_objects[event.descriptor.hash()]?\n\t\t\t\t\t\t@_objects[event.descriptor.hash()].do_change(\"remove\")\n\t\t\t\t\t\tdelete @_objects[event.descriptor.hash()]\n\t\t\t\t\twhen \"HandlerStart\"\n\t\t\t\t\t\tif (object = @_objects[event.descriptor.hash()])? and !object.handler_already_run and !@running_handlers[event.descriptor.hash()]?\n\t\t\t\t\t\t\t#wrapped to avoid weird capture effects\n\t\t\t\t\t\t\t@running_handlers[event.descriptor.hash()] = ((descriptor, object, block, event_queue)->new Promise (handler_resolve, handler_reject)->\n\t\t\t\t\t\t\t\tawait object.run(block)\n\t\t\t\t\t\t\t\tevent_queue.push({action: \"HandlerFinished\", descriptor: descriptor})\n\t\t\t\t\t\t\t\thandler_resolve()\n\t\t\t\t\t\t\t\t)(event.descriptor, object, @block, @event_queue)\n\t\t\t\t\twhen \"HandlerFinished\"\n\t\t\t\t\t\tthrow \"Handler finished but it was not running. That sucks.\" if not @running_handlers[event.descriptor.hash()]?\n\t\t\t\t\t\tdelete @running_handlers[event.descriptor.hash()]\n\t\t\t\t\t\t@event_queue.push({action: \"HandlerStart\", descriptor: event.descriptor}) if @_objects[event.descriptor.hash()]?\n\t\t\t\t\twhen \"Drop\"\n\t\t\t\t\t\t@event_loop_stop()\n\t\t\t\t\t\tawait @event_loop_stopped\n\t\t\t\t\t\tobject.do_change(\"remove\") for _key, object of @_objects\n\t\t\t\t\t\twhile Object.keys(@running_handlers).length > 0\n\t\t\t\t\t\t\tevent = await @event_queue.shift()\n\t\t\t\t\t\t\tif event.action == \"HandlerFinished\"\n\t\t\t\t\t\t\t\tdelete @running_handlers[event.descriptor.hash()]\n\t\t\t\t\t\t@event_queue.clear()\n\t\t\t\t\t\tdelete @_objects[key] for key,_value of @_objects\n\t\t\t\t\t\t@contract.drop()\n\t\t\t\t\t\t@contract = null\n\t\t\t\t\t\t@event_queue = null\n\t\t\t\t\t\tresolve()\n\t\t\t\t\t\treturn \n\t\t\t\t\telse\n\t\t\t\t\t\tthrow \"Unknown action: \" + event.action\n\t\t\treject(\"Queue died unexpectedly\")\n\t\t\n\tobjects: ()=> Object.values(@_objects)\n\tobject: ()=> Object.values(@_objects)[0]\n\n\tdrop: ()=>\n\t\tif @contract\n\t\t\t@event_queue.push(action: 'Drop')\n\t\t\tawait @async_loop_stopped\n\n\n\n\nexport class ManagedObject\n\tconstructor: (@contract, @descriptor)->\n\t\t@_changes = new Queue()\n\t\t@handler_already_run = false\n\n\trun: (handler)=>\n\t\t@handler_already_run = true\n\t\tawait handler(@)\n\n\tnext_event: ()=> @next_change()\n\tnext_change: ()=>\n\t\tloop\n\t\t\tswitch await @_changes.shift()\n\t\t\t\twhen \"change\" then return true\n\t\t\t\twhen \"remove\" then return false\n\n\tdo_change: (change)=>\n\t\t@_changes.push(change)\n\n\n","import * as hakuban_js from \"../pkg/hakuban.js\"\nimport * as manager from \"./manager.coffee\"\n\nlogger_initialized = false\n\nexport initialize_wasm = (wasm)->\n\t\tawait hakuban_js.default(wasm)\n\nexport logger_initialize = (log_level, skip_if_already_initialized=false) ->\n\t\tif logger_initialized and skip_if_already_initialized\n\t\t\treturn true\n\n\t\tif 0 == (error = await hakuban_js.hakuban_logger_initialize(log_level))\n\t\t\tlogger_initialized = true\n\t\telse\n\t\t\tconsole.error \"Failed to initialize logger, error \" + error \n\t\t\tfalse\n\n\nraise_if_error = (error_code)->\n\tif error_code != 0\n\t\tthrow \"Hakuban error: \"+error_code\n\n\nexport JSON_serialize = (data_type, cooked)->\n\t{\n\t\tdata_type: [\"JSON\"].concat(data_type)\n\t\tdata: new TextEncoder().encode(JSON.stringify(cooked))\n\t}\n\nexport JSON_deserialize = (data_type, raw)-> \n\tthrow \"Expected JSON data_type, got: \"+data_type if data_type.length == 0 or data_type[0] != \"JSON\"\n\t{\n\t\tdata_type: data_type.slice(1)\n\t\tdata: JSON.parse(new TextDecoder().decode(raw))\n\t}\n\n\nexport class ObjectDescriptor\n\tconstructor: (tags, @json) -> @tags = ((if tag instanceof TagDescriptor then tag else new TagDescriptor(tag)) for tag in tags)\n\tas_json: ()->JSON.stringify(tags: @tags.map((tag)->tag.json), json: @json)\n\thash: ()-> \n\t\tif not @_hash?\n\t\t\t@_hash = @tags.map((tag)->tag.hash().toString()).sort().join(\",\") + \"|\"\n\t\t\tret = hakuban_js.hakuban_json_hash(JSON.stringify(@json))\n\t\t\traise_if_error(ret.error)\n\t\t\t@_hash += ret.hash.toString()\n\t\t@_hash\n\t\n\n\nexport class TagDescriptor\n\tconstructor: (@json) -> null\n\tas_json: ()->JSON.stringify(@json)\n\thash: ()-> \n\t\tif not @_hash?\n\t\t\tret = hakuban_js.hakuban_json_hash(JSON.stringify(@json))\n\t\t\traise_if_error(ret.error)\n\t\t\t@_hash = ret.hash\n\t\t@_hash\n\n\n\n\nLocalNode_finalization_registry = new FinalizationRegistry (pointer)=>\n\thakuban_js.hakuban_local_node_drop(pointer)\n\nexport class LocalNode\n\tconstructor: (@name=\"wasm\") ->\n\t\tlogger_initialize(\"warn\", true)\n\t\tresult = hakuban_js.hakuban_local_node_new(@name)\n\t\traise_if_error(result.error)\n\t\t@pointer = result.local_node_pointer\n\t\tLocalNode_finalization_registry.register(@, @pointer, @)\n\t\t@with_default_serializer(JSON_serialize)\n\t\t@with_default_deserializer(JSON_deserialize)\n\n\tdestroy: () ->\n\t\thakuban_js.hakuban_local_node_drop(@pointer)\n\t\tLocalNode_finalization_registry.unregister(@)\n\n\tobject: (tags, json) ->\n\t\tnew ObjectBuilder(@, @default_serializer, @default_deserializer, tags, json)\n\n\ttag: (json) ->\n\t\tnew TagBuilder(@, @default_serializer, @default_deserializer, json)\n\n\twith_default_serializer: (@default_serializer) -> @\n\twith_default_deserializer: (@default_deserializer) -> @\n\n\nclass ObjectBuilder\n\tconstructor: (@local_node, @serializer, @deserializer, @tags, @json) -> null\n\tobserve: () -> new ObjectObserve(@local_node, new ObjectDescriptor(@tags, @json), @deserializer)\n\texpose: () -> new ObjectExpose(@local_node, new ObjectDescriptor(@tags, @json), @serializer)\n\twith_serializer: (@serializer) -> @\n\twith_deserializer: (@deserializer) -> @\n\nclass TagBuilder\n\tconstructor: (@local_node, @serializer, @deserializer, @json) -> null\n\tobserve: () -> new TagObserve(@local_node, new TagDescriptor(@json), @deserializer)\n\texpose: () -> new TagExpose(@local_node, new TagDescriptor(@json), @serializer)\n\twith_serializer: (@serializer) -> @\n\twith_deserializer: (@deserializer) -> @\n\n\n\nObjectDescriptorEvents_finalization_registry = new FinalizationRegistry (pointer)=>\n\thakuban_js.hakuban_object_descriptor_events_drop(pointer)\n\nclass ObjectDescriptorEvents\n\n\tconstructor: (@pointer)->\n\t\tObjectDescriptorEvents_finalization_registry.register(@, @pointer, @)\n\n\twait: ()=>next()\n\tnext: ()=>\n\t\t@wait_released = new Promise (@wait_release)=>null\n\t\tcancel_waiting_promise = new Promise (resolve)=> @cancel_waiting_resolve = resolve\n\t\tnext_event_promise = hakuban_js.hakuban_object_descriptor_events_next(@pointer, cancel_waiting_promise)\n\t\tnext_event_promise.cancel = (value)=>\n\t\t\t@cancel_waiting_resolve.resolve(value)\n\t\t\tawait next_event_promise\n\t\tnext_event_promise.then (value)=>\n\t\t\t@wait_release()\n\t\t\t@wait_released = null\n\t\t\t@cancel_waiting_resolve = null\n\t\t\tparsed = JSON.parse(value)\n\t\t\t{ action: parsed.action, descriptor: new ObjectDescriptor(parsed.key.tags, parsed.key.json) }\n\n\tdrop: ()=>\n\t\tif @cancel_waiting_resolve?\n\t\t\t@cancel_waiting_resolve()\n\t\t\tawait @wait_released\n\t\tObjectDescriptorEvents_finalization_registry.unregister(@)\n\t\thakuban_js.hakuban_object_descriptor_events_drop(@pointer)\n\t\t@pointer = null\n\n\n\nObjectObserve_finalization_registry = new FinalizationRegistry (pointer)=>\n\thakuban_js.hakuban_object_observe_drop(pointer)\n\nclass ObjectObserve\n\n\tconstructor: (@local_node, @descriptor, @deserializer) ->\n\t\tresult = hakuban_js.hakuban_object_observe_new(@local_node.pointer, @descriptor.as_json())\n\t\traise_if_error(result.error)\n\t\t@pointer = result.object_observe_pointer\n\t\tObjectObserve_finalization_registry.register(@, @pointer, @)\n\t\t@dropped = false\n\t\n\tdrop: ()=>\n\t\t@dropped = true\n\t\thakuban_js.hakuban_object_observe_drop(@pointer)\n\t\tObjectObserve_finalization_registry.unregister(@)\n\t\t@pointer = null\n\n\tobject_state: ()=>\n\t\treturn null if not @pointer?\n\t\tstate_pointer = hakuban_js.hakuban_object_observe_state_borrow(@pointer)\n\t\treturn null if state_pointer == 0\n\t\tsynchronized = hakuban_js.hakuban_object_observe_state_synchronized(state_pointer)\n\t\tversion = JSON.parse(hakuban_js.hakuban_object_observe_state_data_version(state_pointer))\n\t\tdata_type = JSON.parse(hakuban_js.hakuban_object_observe_state_data_type(state_pointer))\n\t\traw = hakuban_js.hakuban_object_observe_state_data(state_pointer)\n\t\thakuban_js.hakuban_object_observe_state_return(state_pointer)\n\t\tdeserialized = @deserializer(data_type, raw)\n\t\t{\n\t\t\tversion: version\n\t\t\tdata: deserialized.data\n\t\t\tdata_type: deserialized.data_type\n\t\t\tsynchronized: synchronized\n\t\t}\n\n\tevents: ()=>\n\t\tnew ObjectDescriptorEvents(hakuban_js.hakuban_object_observe_events_get(@pointer))\n\n\tasync: (lambda)=>\t\n\t\tclass ObservedObject extends manager.ManagedObject\n\t\t\tstate: ()->\n\t\t\t\t@contract?.object_state()\n\t\t\tdata: ()->\n\t\t\t\t@contract?.object_state()?.data\n\n\t\tnew manager.ObjectManager(@, ObservedObject, lambda)\n\n\n\nObjectExpose_finalization_registry = new FinalizationRegistry (pointer)=>\n\thakuban_js.hakuban_object_expose_drop(pointer)\n\nclass ObjectExpose\n\tconstructor: (@local_node, @descriptor, @serializer)->\n\t\tresult = hakuban_js.hakuban_object_expose_new(@local_node.pointer, @descriptor.as_json())\n\t\traise_if_error(result.error)\n\t\t@pointer = result.object_expose_pointer\n\t\tObjectExpose_finalization_registry.register(@, @pointer, @)\n\t\t@dropped = false\n\n\tdrop: ()=>\n\t\t@dropped = true\n\t\thakuban_js.hakuban_object_expose_drop(@pointer)\n\t\tObjectExpose_finalization_registry.unregister(@)\n\n\tset_object_state: (version, cooked_data, data_type=[], assignment=0)=>\n\t\tserialized = @serializer(data_type, cooked_data)\n\t\tassignment = BigInt(assignment) if not (typeof assignment == 'bigint')\n\t\tresult = hakuban_js.hakuban_object_expose_set_state(@pointer, JSON.stringify(version), JSON.stringify(serialized.data_type), serialized.data, assignment)\n\t\traise_if_error(result.error)\n\t\tresult.changed\n\n\tassignment: ()=>\n\t\thakuban_js.hakuban_object_expose_assignment(@pointer)\n\n\tassigned: ()=>\n\t\t@assignment() > 0\n\n\tdesynchronize: (assignment)=>\n\t\tassignment = BigInt(assignment) if not (typeof assignment == 'bigint')\n\t\thakuban_js.hakuban_object_expose_desynchronize(@pointer, assignment)\n\n\tevents: ()=>\n\t\tnew ObjectDescriptorEvents(hakuban_js.hakuban_object_expose_events_get(@pointer))\n\n\tasync: (lambda)=>\t\n\t\tclass ExposedObject extends manager.ManagedObject\n\t\t\tconstructor: (contract, descriptor)->\n\t\t\t\tsuper(contract, descriptor)\n\t\t\t\t@_assignment = contract.assignment()\n\t\t\trun: (handler)=>\n\t\t\t\tawait super(handler)\n\t\t\t\t@contract?.desynchronize(@_assignment)\n\t\t\tdo_change: (change)=>\n\t\t\t\t@_assignment = @contract?.assignment()\n\t\t\t\tsuper(change)\n\t\t\tassignment: ()=>\n\t\t\t\t@contract?.assignment()\n\t\t\tassigned: ()=>\n\t\t\t\t@contract?.assigned()\n\t\t\tset_state: (version, cooked_data, data_type=[])=>\n\t\t\t\t@contract?.set_object_state(version, cooked_data, data_type, @_assignment)\n\t\t\tset_data: (data)=>\n\t\t\t\ttimestamp = new Date().getTime()\n\t\t\t\t@set_state([1, Math.floor(timestamp/1000), timestamp - Math.floor(timestamp/1000)*1000, 0], data)\n\n\t\tnew manager.ObjectManager(@, ExposedObject, lambda)\n\n\n\nTagObserve_finalization_registry = new FinalizationRegistry (pointer)=>\n\thakuban_js.hakuban_tag_observe_drop(pointer)\n\nclass TagObserve\n\tconstructor: (@local_node, @descriptor, @deserializer) ->\n\t\tresult = hakuban_js.hakuban_tag_observe_new(@local_node.pointer, @descriptor.as_json())\n\t\traise_if_error(result.error)\n\t\t@pointer = result.tag_observe_pointer\n\t\tTagObserve_finalization_registry.register(@, @pointer, @)\n\t\t@dropped = false\n\t\n\tdrop: ()=>\n\t\t@dropped = true\n\t\thakuban_js.hakuban_tag_observe_drop(@pointer)\n\t\tTagObserve_finalization_registry.unregister(@)\n\n\tobject_descriptors: ()=>\n\t\tresult = hakuban_js.hakuban_tag_observe_object_descriptors(@pointer)\n\t\tfor descriptor_as_json in JSON.parse(result)\n\t\t\tnew ObjectDescriptor(descriptor_as_json.tags, descriptor_as_json.json)\n\n\tobject_state: (object_descriptor)=>\n\t\tresult = hakuban_js.hakuban_tag_observe_object_state_borrow(@pointer, object_descriptor.as_json())\n\t\treturn null if result.error == 4\n\t\treturn null if result.state_pointer == 0\n\t\tsynchronized = hakuban_js.hakuban_object_observe_state_synchronized(result.state_pointer)\n\t\tversion = JSON.parse(hakuban_js.hakuban_object_observe_state_data_version(result.state_pointer))\n\t\tdata_type = JSON.parse(hakuban_js.hakuban_object_observe_state_data_type(result.state_pointer))\n\t\traw = hakuban_js.hakuban_object_observe_state_data(result.state_pointer)\n\t\thakuban_js.hakuban_object_observe_state_return(result.state_pointer)\n\t\tdeserialized = @deserializer(data_type, raw)\n\t\t{\n\t\t\tversion: version\n\t\t\tdata: deserialized.data\n\t\t\tdata_type: deserialized.data_type\n\t\t\tsynchronized: synchronized\n\t\t}\n\n\tevents: ()->\n\t\tnew ObjectDescriptorEvents(hakuban_js.hakuban_tag_observe_events_get(@pointer))\n\n\tasync: (lambda)=>\t\n\t\tclass ObservedObject extends manager.ManagedObject\n\t\t\tstate: ()->\n\t\t\t\t@contract?.object_state(@descriptor)\n\t\t\tdata: ()->\n\t\t\t\t@contract?.object_state(@descriptor)?.data\n\n\t\tnew manager.ObjectManager(@, ObservedObject, lambda)\n\n\t\n\nTagExpose_finalization_registry = new FinalizationRegistry (pointer)=>\n\thakuban_js.hakuban_tag_expose_drop(pointer)\n\nclass TagExpose\n\tconstructor: (@local_node, @descriptor, @serializer)->\n\t\tresult = hakuban_js.hakuban_tag_expose_new(@local_node.pointer, @descriptor.as_json())\n\t\traise_if_error(result.error)\n\t\t@pointer = result.tag_expose_pointer\n\t\tTagExpose_finalization_registry.register(@, @pointer, @)\n\t\t@dropped = false\n\t\n\tdrop: ()=>\n\t\t@dropped = true\n\t\thakuban_js.hakuban_tag_expose_drop(@pointer)\n\t\tTagExpose_finalization_registry.unregister(@)\n\n\tobject_descriptors: ()=>\n\t\tresult = hakuban_js.hakuban_tag_expose_object_descriptors(@pointer)\n\t\tfor descriptor_as_json in JSON.parse(result)\n\t\t\tnew ObjectDescriptor(descriptor_as_json.tags, descriptor_as_json.json)\n\n\tset_object_state: (object_descriptor, version, cooked_data, data_type=[], assignment=0)=>\n\t\tserialized = @serializer(data_type, cooked_data)\n\t\tassignment = BigInt(assignment) if not (typeof assignment == 'bigint')\n\t\tresult = hakuban_js.hakuban_tag_expose_set_object_state(@pointer, object_descriptor.as_json(), JSON.stringify(version), JSON.stringify(serialized.data_type), serialized.data, assignment)\n\t\traise_if_error(result.error)\n\t\tresult.changed\n\n\tassignment: (object_descriptor)=>\n\t\tresult = hakuban_js.hakuban_tag_expose_assignment(@pointer, object_descriptor.as_json())\n\t\traise_if_error(result.error)\n\t\tresult.assignment\n\n\tassigned: (object_descriptor)=>\n\t\t@assignment(object_descriptor) > 0\n\n\tdesynchronize: (object_descriptor, assignment)=>\n\t\tassignment = BigInt(assignment) if not (typeof assignment == 'bigint')\n\t\terror = hakuban_js.hakuban_tag_expose_desynchronize(@pointer, object_descriptor.as_json(), assignment)\n\t\traise_if_error(error)\n\n\tevents: ()=>\n\t\tnew ObjectDescriptorEvents(hakuban_js.hakuban_tag_expose_events_get(@pointer))\n\n\tasync: (lambda)=>\t\n\t\tclass ExposedObject extends manager.ManagedObject\n\t\t\tconstructor: (contract, descriptor)->\n\t\t\t\tsuper(contract, descriptor)\n\t\t\t\t@_assignment = contract.assignment(@descriptor)\n\t\t\trun: (handler)=>\n\t\t\t\tawait super(handler)\n\t\t\t\t@contract?.desynchronize(@descriptor, @_assignment)\n\t\t\tdo_change: (change)=>\n\t\t\t\t@_assignment = @contract?.assignment(@descriptor)\n\t\t\t\tsuper(change)\n\t\t\tassignment: ()=>\n\t\t\t\t@contract?.assignment(@descriptor)\n\t\t\tassigned: ()=>\n\t\t\t\t@contract?.assigned(@descriptor)\n\t\t\tset_state: (version, cooked_data, data_type=[])=>\n\t\t\t\t@contract?.set_object_state(@descriptor, version, cooked_data, data_type, @_assignment)\n\t\t\tset_data: (data)=>\n\t\t\t\ttimestamp = new Date().getTime()\n\t\t\t\t@set_state([1, Math.floor(timestamp/1000), timestamp - Math.floor(timestamp/1000)*1000, 0], data)\n\n\t\tnew manager.ObjectManager(@, ExposedObject, lambda)\n\n\n\nWebsocketConnector_finalization_registry = new FinalizationRegistry (pointer)=>\n\thakuban_js.hakuban_remote_node_drop(pointer)\n\n#TODO: hide private methods\n#TODO: handle errors somehow\nexport class WebsocketConnector\n\n\tconstructor: (@local_node, @uri, @options={})->\n\t\t@connected = false\n\t\t@socket = undefined\n\t\t@error = undefined\n\t\t@reconnection_timer = undefined\n\t\t@reconnect_on_close = true\n\t\t@ack_timer = undefined\n\t\tresult = hakuban_js.hakuban_remote_node_new(@local_node.pointer, true, true, true)\n\t\traise_if_error(result.error)\t\t\n\t\t@remote_node_pointer = result.remote_node_pointer\n\t\t@event_loop_stop = new Promise (resolve) => @event_loop_stop_resolve = resolve\n\t\t@event_loop_promise = @event_loop()\n\t\tWebsocketConnector_finalization_registry.register(@, @remote_node_pointer, @)\n\t\t@connect()\n\n\tdestroy: () ->\n\t\t@event_loop_stop_resolve([\"stop\"])\n\t\tawait @event_loop_promise\n\t\t@reconnect_on_close = false\n\t\tif @keep_alive_interval\n\t\t\tclearInterval(@keep_alive_interval) \n\t\tif @reconnection_timer?\n\t\t\tclearTimeout(@reconnection_timer)\n\t\t\t@reconnection_timer = null\n\t\tif @socket?\n\t\t\t@socket.onclose = null\n\t\t\t@socket.onerror = null\n\t\t\t@socket.onmessage = null\n\t\t\t@socket.close()\n\t\t\t@socket_onclose()\n\t\tif @ack_timer?\n\t\t\tclearTimeout(@ack_timer)\n\t\t\t@ack_timer = null\n\t\thakuban_js.hakuban_remote_node_drop(@remote_node_pointer)\n\t\tWebsocketConnector_finalization_registry.unregister(@)\n\n\t\t\n\tconnect: ()=>\n\t\t@reconnection_timer = undefined\n\n\t\ttry\n\t\t\t@socket = new WebSocket(@uri)\n\t\tcatch error\n\t\t\t@error = { while: \"connecting\", error: error }\n\t\t\t@onstatuschange_proc(@) if @onstatuschange_proc?\n\t\t\treturn false\n\n\t\t@socket.binaryType = \"arraybuffer\"\n\n\t\t@socket.onopen = ()=>\n\t\t\tconsole.debug('Connected to hakuban remote node') if @options.debug\n\t\t\t@connected = true\n\t\t\t@error = undefined\n\t\t\t@onstatuschange_proc(@) if @onstatuschange_proc?\n\t\t\tbytes_to_send = hakuban_js.hakuban_remote_node_connected(@remote_node_pointer)\n\t\t\t@send(bytes_to_send)\n\n\t\t@socket.onclose = @socket_onclose = ()=>\n\t\t\tconsole.debug('Disconnected from hakuban remote node') if @options.debug\n\t\t\tclearInterval(@keep_alive_interval) if @keep_alive_interval\n\t\t\t@connected = false\n\t\t\t@socket = undefined\n\t\t\thakuban_js.hakuban_remote_node_disconnected(@remote_node_pointer)\n\t\t\t@onstatuschange_proc(@) if @onstatuschange_proc?\n\t\t\tclearTimeout(@reconnection_timer) if @reconnection_timer?\n\t\t\t@reconnection_timer = null\n\t\t\t@reconnection_timer = setTimeout(@connect, 1000) if @reconnect_on_close\n\n\t\t@socket.onerror = (error)=>\n\t\t\tconsole.debug('Hakuban socket error', error) if @options.debug\n\t\t\t@error = { while: \"connected\", error: error }\n\n\t\t@socket.onmessage = (event) =>\n\t\t\tbytes_to_send = hakuban_js.hakuban_remote_node_received_message(@remote_node_pointer, new Uint8Array(event.data))\n\t\t\t@send(bytes_to_send)\n\t\t\tclearTimeout(@ack_timer) if @ack_timer?\n\t\t\t@ack_timer = setTimeout(@ack, 1000)\n\t\t\tnull\n\n\tping: ()=>\n\t\t@socket.send(new Uint8Array()) if @socket\n\n\tsend: (bytes_to_send)=>\n\t\tif bytes_to_send.length > 0\n\t\t\t@socket.send(bytes_to_send)\n\t\t\tclearInterval(@keep_alive_interval) if @keep_alive_interval\n\t\t\t@keep_alive_interval = setInterval(@ping, 10000)\n\n\tack: ()=>\n\t\tif @socket?\n\t\t\tbytes_to_send = hakuban_js.hakuban_remote_node_ack(@remote_node_pointer)\n\t\t\t@send(bytes_to_send) if bytes_to_send.length > 0\n\n\tevent_loop: ()->\n\t\tnext_local_node_event = false\n\t\tcancel_waiting_resolve = null\n\t\tcancel_waiting_promise = new Promise (resolve) -> cancel_waiting_resolve = resolve\n\t\twhile true\n\t\t\tnext_local_node_event = hakuban_js.hakuban_remote_node_next_local_node_event(@remote_node_pointer, cancel_waiting_promise).then((event)->[\"local_node_event\", event]) if not next_local_node_event\n\t\t\t[promise, event] = await Promise.any([@event_loop_stop, next_local_node_event])\n\t\t\tif promise == \"local_node_event\"\n\t\t\t\tnext_local_node_event = false\n\t\t\t\tsetTimeout(((event)=>\n\t\t\t\t\tif @connected\n\t\t\t\t\t\tbytes_to_send = hakuban_js.hakuban_remote_node_received_local_node_event(@remote_node_pointer, event)\n\t\t\t\t\t\t@send(bytes_to_send)\n\t\t\t\t), 0, event)\n\t\t\telse\n\t\t\t\tbreak\n\t\tif next_local_node_event\n\t\t\tcancel_waiting_resolve(true)\n\t\t\tawait next_local_node_event\n\n\tonstatuschange: (proc)->\n\t\t@onstatuschange_proc = proc\n\t\t@onstatuschange_proc() if @onstatuschange_proc?\n\t\t@\n","import { initialize_wasm } from \"./common.coffee\"\nimport hakuban_wasm_base64 from \"../pkg/hakuban_bg.wasm\"\n\nexport * from './common.coffee'\n\nexport initialize = ()->\n\t# wow, this is disgusting\n\twasm_string = atob(hakuban_wasm_base64)\n\twasm_array = new Uint8Array(wasm_string.length)\n\tfor i in [0..wasm_string.length]\n\t\twasm_array[i] = wasm_string.charCodeAt(i) \n\tawait initialize_wasm(wasm_array)\n\n\n"],"names":["wasm","heap","Array","fill","undefined","getObject","idx","push","heap_next","length","takeObject","ret","dropObject","cachedTextDecoder","TextDecoder","ignoreBOM","fatal","decode","cachegetUint8Memory0","getUint8Memory0","buffer","memory","Uint8Array","getStringFromWasm0","ptr","len","subarray","addHeapObject","obj","debugString","val","type","description","name","isArray","debug","i","builtInMatches","exec","toString","call","className","JSON","stringify","_","Error","message","stack","WASM_VECTOR_LEN","cachedTextEncoder","TextEncoder","encodeString","encodeInto","arg","view","buf","encode","set","read","written","passStringToWasm0","malloc","realloc","mem","offset","code","charCodeAt","slice","cachegetInt32Memory0","getInt32Memory0","Int32Array","__wbg_adapter_18","arg0","arg1","arg2","_dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h027708a9a2f14b34","u32CvtShim","Uint32Array","uint64CvtShim","BigUint64Array","hakuban_json_hash","json_string","ptr0","__wbindgen_malloc","__wbindgen_realloc","len0","WasmHashResult","__wrap","hakuban_tag_observe_drop","tag_observe_pointer","hakuban_object_observe_drop","object_ptr","hakuban_object_observe_state_return","state_ptr","hakuban_object_observe_state_synchronized","retptr","__wbindgen_add_to_stack_pointer","r0","r1","hakuban_object_observe_state_data_version","__wbindgen_free","hakuban_object_observe_state_data_type","getArrayU8FromWasm0","hakuban_object_observe_state_data","v0","hakuban_object_descriptor_events_drop","events_pointer","isLikeNone","x","hakuban_remote_node_drop","remote_node_pointer","passArray8ToWasm0","hakuban_remote_node_received_local_node_event","event","v1","hakuban_tag_expose_drop","tag_expose_pointer","hakuban_object_expose_drop","object_expose_pointer","hakuban_local_node_drop","local_node","handleError","f","args","apply","this","e","__wbindgen_exn_store","Object","freeze","None","InvalidString","InvalidJSON","InvalidURL","ObjectNotFound","static","create","prototype","__destroy_into_raw","free","__wbg_wasmhashresult_free","error","__wbg_get_wasmhashresult_error","__wbg_set_wasmhashresult_error","hash","__wbg_get_wasmhashresult_hash","low0","high0","__wbg_set_wasmhashresult_hash","WasmLocalNodeNewResult","__wbg_wasmlocalnodenewresult_free","__wbg_get_wasmlocalnodenewresult_error","__wbg_set_wasmlocalnodenewresult_error","local_node_pointer","__wbg_get_wasmlocalnodenewresult_local_node_pointer","__wbg_set_wasmlocalnodenewresult_local_node_pointer","WasmObjectExposeResult","__wbg_wasmobjectexposeresult_free","__wbg_get_wasmobjectexposeresult_error","__wbg_set_wasmobjectexposeresult_error","__wbg_get_wasmobjectexposeresult_object_expose_pointer","__wbg_set_wasmobjectexposeresult_object_expose_pointer","WasmObjectExposeStateResult","__wbg_wasmobjectexposestateresult_free","__wbg_get_wasmobjectexposestateresult_error","__wbg_set_wasmobjectexposestateresult_error","changed","__wbg_get_wasmobjectexposestateresult_changed","__wbg_set_wasmobjectexposestateresult_changed","WasmObjectObserveResult","__wbg_wasmobjectobserveresult_free","__wbg_get_wasmobjectobserveresult_error","__wbg_set_wasmobjectobserveresult_error","object_observe_pointer","__wbg_get_wasmobjectobserveresult_object_observe_pointer","__wbg_set_wasmobjectobserveresult_object_observe_pointer","WasmRemoteNodeNewResult","__wbg_wasmremotenodenewresult_free","__wbg_get_wasmremotenodenewresult_error","__wbg_set_wasmremotenodenewresult_error","__wbg_get_wasmremotenodenewresult_remote_node_pointer","__wbg_set_wasmremotenodenewresult_remote_node_pointer","WasmTagExposeAssignmentResult","__wbg_wasmtagexposeassignmentresult_free","__wbg_get_wasmtagexposeassignmentresult_error","__wbg_set_wasmtagexposeassignmentresult_error","assignment","__wbg_get_wasmtagexposeassignmentresult_assignment","__wbg_set_wasmtagexposeassignmentresult_assignment","WasmTagExposeResult","__wbg_wasmtagexposeresult_free","__wbg_get_wasmtagexposeresult_error","__wbg_set_wasmtagexposeresult_error","__wbg_get_wasmtagexposeresult_tag_expose_pointer","__wbg_set_wasmtagexposeresult_tag_expose_pointer","WasmTagExposeSetObjectStateResult","__wbg_wasmtagexposesetobjectstateresult_free","__wbg_get_wasmtagexposesetobjectstateresult_error","__wbg_set_wasmtagexposesetobjectstateresult_error","__wbg_get_wasmtagexposesetobjectstateresult_changed","__wbg_set_wasmtagexposesetobjectstateresult_changed","WasmTagObserveObjectStateBorrowResult","__wbg_wasmtagobserveobjectstateborrowresult_free","__wbg_get_wasmtagobserveobjectstateborrowresult_error","__wbg_set_wasmtagobserveobjectstateborrowresult_error","state_pointer","__wbg_get_wasmtagobserveobjectstateborrowresult_state_pointer","__wbg_set_wasmtagobserveobjectstateborrowresult_state_pointer","WasmTagObserveResult","__wbg_wasmtagobserveresult_free","__wbg_get_wasmtagobserveresult_error","__wbg_set_wasmtagobserveresult_error","__wbg_get_wasmtagobserveresult_tag_observe_pointer","__wbg_set_wasmtagobserveresult_tag_observe_pointer","async","init","input","URL","import","meta","url","imports","wbg","__wbindgen_object_drop_ref","__wbindgen_string_new","__wbindgen_cb_drop","original","cnt","a","__wbg_debug_675b0ecb65722d2a","console","__wbg_error_cc38ce2b4b661e1d","__wbg_info_e0c9813e6fd3bdc1","info","__wbg_log_3445347661d4505e","log","__wbg_warn_5ec7c7c02d0b3841","warn","__wbg_now_559193109055ebad","now","__wbg_newnoargs_be86524d73f67598","Function","__wbg_get_4d0f21c2f823742e","Reflect","get","arguments","__wbg_call_888d259a5fefc347","__wbg_call_346669c262382ad7","__wbg_new_b1d61b5687f5e73a","state0","b","Promise","arg3","wasm_bindgen__convert__closures__invoke2_mut__hefcd3c3d153ecf73","__wbg_adapter_122","__wbg_resolve_d23068002f584f22","resolve","__wbg_then_2fcac196782070cc","then","__wbg_then_8c2d62e8ae5978f7","__wbg_self_c6fbdfc2918d5e58","self","__wbg_window_baec038b5ab35c54","window","__wbg_globalThis_3f735a5746d41fbd","globalThis","__wbg_global_1bc0b39582740e95","global","__wbindgen_is_undefined","__wbindgen_object_clone_ref","__wbg_new_693216e109162396","__wbg_stack_0ddaca5d1abfb52f","__wbg_error_09919627ac0992f5","__wbindgen_debug_string","__wbindgen_throw","__wbindgen_rethrow","__wbindgen_closure_wrapper1967","dtor","state","real","__wbindgen_export_2","makeMutClosure","Request","fetch","instance","module","Response","WebAssembly","instantiateStreaming","headers","bytes","arrayBuffer","instantiate","Instance","load","exports","__wbindgen_wasm_module","Queue","constructor","queue","wake","value","shift","clear","LocalNode_finalization_registry","ObjectBuilder","ObjectDescriptorEvents","ObjectDescriptorEvents_finalization_registry","ObjectExpose","ObjectExpose_finalization_registry","ObjectObserve","ObjectObserve_finalization_registry","TagBuilder","TagExpose","TagExpose_finalization_registry","TagObserve","TagObserve_finalization_registry","WebsocketConnector_finalization_registry","logger_initialized","raise_if_error","ObjectManager","event_loop_stop_requested","objects","object","drop","contract","object_class","block","_objects","running_handlers","event_queue","event_loop_stop","event_loop_stopped","reject","events","race","next","async_loop_stopped","_key","key","ref","action","descriptor","do_change","handler_already_run","handler_resolve","handler_reject","run","keys","values","ManagedObject","next_event","next_change","_changes","handler","change","boundMethodCheck","initialize_wasm","hakuban_js.default","logger_initialize","log_level","skip_if_already_initialized","default_log_level","hakuban_logger_initialize","error_code","JSON_serialize","data_type","cooked","concat","data","JSON_deserialize","raw","parse","ObjectDescriptor","tags","tag","json","TagDescriptor","as_json","map","_hash","sort","join","hakuban_js.hakuban_json_hash","FinalizationRegistry","pointer","hakuban_js.hakuban_local_node_drop","LocalNode","result","name_str","hakuban_local_node_new","register","with_default_serializer","with_default_deserializer","destroy","unregister","default_serializer","default_deserializer","serializer","deserializer","observe","expose","with_serializer","with_deserializer","hakuban_js.hakuban_object_descriptor_events_drop","wait","cancel_waiting_promise","next_event_promise","cancel","wait_released","wait_release","cancel_waiting_resolve","hakuban_object_descriptor_events_next","parsed","hakuban_js.hakuban_object_observe_drop","object_state","hakuban_object_observe_new","hakuban_js.hakuban_object_observe_new","dropped","deserialized","synchronized","version","hakuban_object_observe_state_borrow","hakuban_js.hakuban_object_observe_state_synchronized","hakuban_js.hakuban_object_observe_state_data_version","hakuban_js.hakuban_object_observe_state_data_type","hakuban_js.hakuban_object_observe_state_data","hakuban_js.hakuban_object_observe_state_return","object_observe_ptr","hakuban_object_observe_events_get","lambda","manager.ObjectManager","manager.ManagedObject","ref1","hakuban_js.hakuban_object_expose_drop","set_object_state","assigned","desynchronize","hakuban_object_expose_new","hakuban_js.hakuban_object_expose_new","cooked_data","serialized","BigInt","data_version","assignment_id","ptr1","len1","ptr2","len2","low3","high3","hakuban_object_expose_set_state","hakuban_js.hakuban_object_expose_set_state","hakuban_object_expose_assignment","hakuban_js.hakuban_object_expose_assignment","hakuban_object_expose_desynchronize","hakuban_js.hakuban_object_expose_desynchronize","object_expose_ptr","hakuban_object_expose_events_get","ExposedObject","set_state","set_data","_assignment","timestamp","Date","getTime","Math","floor","hakuban_js.hakuban_tag_observe_drop","object_descriptors","hakuban_tag_observe_new","hakuban_js.hakuban_tag_observe_new","descriptor_as_json","results","hakuban_tag_observe_object_descriptors","hakuban_js.hakuban_tag_observe_object_descriptors","object_descriptor","hakuban_tag_observe_object_state_borrow","hakuban_js.hakuban_tag_observe_object_state_borrow","tag_observe_ptr","hakuban_tag_observe_events_get","hakuban_js.hakuban_tag_expose_drop","hakuban_tag_expose_new","hakuban_js.hakuban_tag_expose_new","hakuban_tag_expose_object_descriptors","hakuban_js.hakuban_tag_expose_object_descriptors","ptr3","len3","low4","high4","hakuban_tag_expose_set_object_state","hakuban_js.hakuban_tag_expose_set_object_state","hakuban_tag_expose_assignment","hakuban_js.hakuban_tag_expose_assignment","low1","high1","hakuban_tag_expose_desynchronize","hakuban_js.hakuban_tag_expose_desynchronize","tag_expose_ptr","hakuban_tag_expose_events_get","hakuban_js.hakuban_remote_node_drop","WebsocketConnector","upstream","diff_produce","diff_request","connect","ping","send","ack","uri","options","connected","socket","reconnection_timer","reconnect_on_close","ack_timer","hakuban_remote_node_new","event_loop_stop_resolve","event_loop_promise","event_loop","keep_alive_interval","clearInterval","clearTimeout","onclose","onerror","onmessage","close","socket_onclose","WebSocket","while","onstatuschange_proc","binaryType","onopen","bytes_to_send","hakuban_remote_node_connected","hakuban_js.hakuban_remote_node_connected","hakuban_remote_node_disconnected","setTimeout","hakuban_remote_node_received_message","hakuban_js.hakuban_remote_node_received_message","setInterval","hakuban_remote_node_ack","hakuban_js.hakuban_remote_node_ack","next_local_node_event","promise","hakuban_remote_node_next_local_node_event","any","hakuban_js.hakuban_remote_node_received_local_node_event","onstatuschange","proc","initialize","j","wasm_array","wasm_string","atob"],"mappings":"AACA,IAAIA,EAEJ,MAAMC,EAAO,IAAIC,MAAM,IAAIC,UAAKC,GAIhC,SAASC,EAAUC,GAAO,OAAOL,EAAKK,GAFtCL,EAAKM,UAAKH,EAAW,MAAM,GAAM,GAIjC,IAAII,EAAYP,EAAKQ,OAQrB,SAASC,EAAWJ,GAChB,MAAMK,EAAMN,EAAUC,GAEtB,OATJ,SAAoBA,GACZA,EAAM,KACVL,EAAKK,GAAOE,EACZA,EAAYF,GAKZM,CAAWN,GACJK,EAGX,IAAIE,EAAoB,IAAIC,YAAY,QAAS,CAAEC,WAAW,EAAMC,OAAO,IAE3EH,EAAkBI,SAElB,IAAIC,EAAuB,KAC3B,SAASC,IAIL,OAH6B,OAAzBD,GAAiCA,EAAqBE,SAAWpB,EAAKqB,OAAOD,SAC7EF,EAAuB,IAAII,WAAWtB,EAAKqB,OAAOD,SAE/CF,EAGX,SAASK,EAAmBC,EAAKC,GAC7B,OAAOZ,EAAkBI,OAAOE,IAAkBO,SAASF,EAAKA,EAAMC,IAG1E,SAASE,EAAcC,GACfpB,IAAcP,EAAKQ,QAAQR,EAAKM,KAAKN,EAAKQ,OAAS,GACvD,MAAMH,EAAME,EAIZ,OAHAA,EAAYP,EAAKK,GAEjBL,EAAKK,GAAOsB,EACLtB,EAGX,SAASuB,EAAYC,GAEjB,MAAMC,SAAcD,EACpB,GAAY,UAARC,GAA4B,WAARA,GAA4B,MAAPD,EACzC,MAAQ,GAAGA,IAEf,GAAY,UAARC,EACA,MAAO,IAAID,KAEf,GAAY,UAARC,EAAkB,CAClB,MAAMC,EAAcF,EAAIE,YACxB,OAAmB,MAAfA,EACO,SAEA,UAAUA,KAGzB,GAAY,YAARD,EAAoB,CACpB,MAAME,EAAOH,EAAIG,KACjB,MAAmB,iBAARA,GAAoBA,EAAKxB,OAAS,EAClC,YAAYwB,KAEZ,WAIf,GAAI/B,MAAMgC,QAAQJ,GAAM,CACpB,MAAMrB,EAASqB,EAAIrB,OACnB,IAAI0B,EAAQ,IACR1B,EAAS,IACT0B,GAASN,EAAYC,EAAI,KAE7B,IAAI,IAAIM,EAAI,EAAGA,EAAI3B,EAAQ2B,IACvBD,GAAS,KAAON,EAAYC,EAAIM,IAGpC,OADAD,GAAS,IACFA,EAGX,MAAME,EAAiB,sBAAsBC,KAAKC,SAASC,KAAKV,IAChE,IAAIW,EACJ,KAAIJ,EAAe5B,OAAS,GAIxB,OAAO8B,SAASC,KAAKV,GAEzB,GALIW,EAAYJ,EAAe,GAKd,UAAbI,EAIA,IACI,MAAO,UAAYC,KAAKC,UAAUb,GAAO,IAC3C,MAAOc,GACL,MAAO,SAIf,OAAId,aAAee,MACR,GAAGf,EAAIG,SAASH,EAAIgB,YAAYhB,EAAIiB,QAGxCN,EAGX,IAAIO,EAAkB,EAElBC,EAAoB,IAAIC,YAAY,SAExC,MAAMC,EAAwD,mBAAjCF,EAAkBG,WACzC,SAAUC,EAAKC,GACjB,OAAOL,EAAkBG,WAAWC,EAAKC,IAEvC,SAAUD,EAAKC,GACjB,MAAMC,EAAMN,EAAkBO,OAAOH,GAErC,OADAC,EAAKG,IAAIF,GACF,CACHG,KAAML,EAAI5C,OACVkD,QAASJ,EAAI9C,SAIrB,SAASmD,EAAkBP,EAAKQ,EAAQC,GAEpC,QAAgB1D,IAAZ0D,EAAuB,CACvB,MAAMP,EAAMN,EAAkBO,OAAOH,GAC/B7B,EAAMqC,EAAON,EAAI9C,QAGvB,OAFAU,IAAkBO,SAASF,EAAKA,EAAM+B,EAAI9C,QAAQgD,IAAIF,GACtDP,EAAkBO,EAAI9C,OACfe,EAGX,IAAIC,EAAM4B,EAAI5C,OACVe,EAAMqC,EAAOpC,GAEjB,MAAMsC,EAAM5C,IAEZ,IAAI6C,EAAS,EAEb,KAAOA,EAASvC,EAAKuC,IAAU,CAC3B,MAAMC,EAAOZ,EAAIa,WAAWF,GAC5B,GAAIC,EAAO,IAAM,MACjBF,EAAIvC,EAAMwC,GAAUC,EAGxB,GAAID,IAAWvC,EAAK,CACD,IAAXuC,IACAX,EAAMA,EAAIc,MAAMH,IAEpBxC,EAAMsC,EAAQtC,EAAKC,EAAKA,EAAMuC,EAAsB,EAAbX,EAAI5C,QAC3C,MAAM6C,EAAOnC,IAAkBO,SAASF,EAAMwC,EAAQxC,EAAMC,GAG5DuC,GAFYb,EAAaE,EAAKC,GAEhBK,QAIlB,OADAX,EAAkBgB,EACXxC,EAGX,IAAI4C,EAAuB,KAC3B,SAASC,IAIL,OAH6B,OAAzBD,GAAiCA,EAAqBhD,SAAWpB,EAAKqB,OAAOD,SAC7EgD,EAAuB,IAAIE,WAAWtE,EAAKqB,OAAOD,SAE/CgD,EA2BX,SAASG,EAAiBC,EAAMC,EAAMC,GAClC1E,EAAK2E,6HAA6HH,EAAMC,EAAM9C,EAAc+C,IAGhK,MAAME,EAAa,IAAIC,YAAY,GAE7BC,EAAgB,IAAIC,eAAeH,EAAWxD,QAK7C,SAAS4D,EAAkBC,GAC9B,IAAIC,EAAOtB,EAAkBqB,EAAajF,EAAKmF,kBAAmBnF,EAAKoF,oBACnEC,EAAOrC,EACPrC,EAAMX,EAAKgF,kBAAkBE,EAAMG,GACvC,OAAOC,EAAeC,OAAO5E,GAkB1B,SAAS6E,EAAyBC,GACrCzF,EAAKwF,yBAAyBC,GAwD3B,SAASC,EAA4BC,GACxC3F,EAAK0F,4BAA4BC,GAe9B,SAASC,EAAoCC,GAChD7F,EAAK4F,oCAAoCC,GAOtC,SAASC,EAA0CD,GACtD,IACI,MAAME,EAAS/F,EAAKgG,iCAAiC,IACrDhG,EAAK8F,0CAA0CC,EAAQF,GACvD,IAAII,EAAK5B,IAAkB0B,EAAS,EAAI,GACpCG,EAAK7B,IAAkB0B,EAAS,EAAI,GACxCnB,EAAW,GAAKqB,EAChBrB,EAAW,GAAKsB,EAEhB,OADWpB,EAAc,WAGzB9E,EAAKgG,gCAAgC,KAQtC,SAASG,EAA0CN,GACtD,IACI,MAAME,EAAS/F,EAAKgG,iCAAiC,IACrDhG,EAAKmG,0CAA0CJ,EAAQF,GACvD,IAAII,EAAK5B,IAAkB0B,EAAS,EAAI,GACpCG,EAAK7B,IAAkB0B,EAAS,EAAI,GACxC,OAAOxE,EAAmB0E,EAAIC,WAE9BlG,EAAKgG,gCAAgC,IACrChG,EAAKoG,gBAAgBH,EAAIC,IAQ1B,SAASG,EAAuCR,GACnD,IACI,MAAME,EAAS/F,EAAKgG,iCAAiC,IACrDhG,EAAKqG,uCAAuCN,EAAQF,GACpD,IAAII,EAAK5B,IAAkB0B,EAAS,EAAI,GACpCG,EAAK7B,IAAkB0B,EAAS,EAAI,GACxC,OAAOxE,EAAmB0E,EAAIC,WAE9BlG,EAAKgG,gCAAgC,IACrChG,EAAKoG,gBAAgBH,EAAIC,IAIjC,SAASI,EAAoB9E,EAAKC,GAC9B,OAAON,IAAkBO,SAASF,EAAM,EAAGA,EAAM,EAAIC,GAMlD,SAAS8E,EAAkCV,GAC9C,IACI,MAAME,EAAS/F,EAAKgG,iCAAiC,IACrDhG,EAAKuG,kCAAkCR,EAAQF,GAC/C,IAAII,EAAK5B,IAAkB0B,EAAS,EAAI,GACpCG,EAAK7B,IAAkB0B,EAAS,EAAI,GACpCS,EAAKF,EAAoBL,EAAIC,GAAI/B,QAErC,OADAnE,EAAKoG,gBAAgBH,EAAS,EAALC,GAClBM,UAEPxG,EAAKgG,gCAAgC,KAgBtC,SAASS,EAAsCC,GAClD1G,EAAKyG,sCAAsCC,GAwB/C,SAASC,EAAWC,GAChB,OAAOA,MAAAA,EAiBJ,SAASC,EAAyBC,GACrC9G,EAAK6G,yBAAyBC,GA4BlC,SAASC,EAAkB1D,EAAKQ,GAC5B,MAAMrC,EAAMqC,EAAoB,EAAbR,EAAI5C,QAGvB,OAFAU,IAAkBsC,IAAIJ,EAAK7B,EAAM,GACjCwB,EAAkBK,EAAI5C,OACfe,EAsCJ,SAASwF,EAA8CF,EAAqBG,GAC/E,IACI,MAAMlB,EAAS/F,EAAKgG,iCAAiC,IACrD,IAAId,EAAOtB,EAAkBqD,EAAOjH,EAAKmF,kBAAmBnF,EAAKoF,oBAC7DC,EAAOrC,EACXhD,EAAKgH,8CAA8CjB,EAAQe,EAAqB5B,EAAMG,GACtF,IAAIY,EAAK5B,IAAkB0B,EAAS,EAAI,GACpCG,EAAK7B,IAAkB0B,EAAS,EAAI,GACpCmB,EAAKZ,EAAoBL,EAAIC,GAAI/B,QAErC,OADAnE,EAAKoG,gBAAgBH,EAAS,EAALC,GAClBgB,UAEPlH,EAAKgG,gCAAgC,KAqCtC,SAASmB,EAAwBC,GACpCpH,EAAKmH,wBAAwBC,GAiG1B,SAASC,EAA2BC,GACvCtH,EAAKqH,2BAA2BC,GA8E7B,SAASC,EAAwBC,GACpCxH,EAAKuH,wBAAwBC,GAGjC,SAASC,EAAYC,EAAGC,GACpB,IACI,OAAOD,EAAEE,MAAMC,KAAMF,GACvB,MAAOG,GACL9H,EAAK+H,qBAAqBpG,EAAcmG,KASvBE,OAAOC,OAAO,CAAEC,KAAK,EAAE,EAAI,OAAOC,cAAc,EAAE,EAAI,gBAAgBC,YAAY,EAAE,EAAI,cAAcC,WAAW,EAAE,EAAI,aAAaC,eAAe,EAAE,EAAI,mBAG3K,MAAMhD,EAETiD,cAAc/G,GACV,MAAMI,EAAMoG,OAAOQ,OAAOlD,EAAemD,WAGzC,OAFA7G,EAAIJ,IAAMA,EAEHI,EAGX8G,qBACI,MAAMlH,EAAMqG,KAAKrG,IAGjB,OAFAqG,KAAKrG,IAAM,EAEJA,EAGXmH,OACI,MAAMnH,EAAMqG,KAAKa,qBACjB1I,EAAK4I,0BAA0BpH,GAI/BqH,YAEA,OADU7I,EAAK8I,+BAA+BjB,KAAKrG,OACpC,EAKfqH,UAAMrE,GACNxE,EAAK+I,+BAA+BlB,KAAKrG,IAAKgD,GAI9CwE,WACA,IACI,MAAMjD,EAAS/F,EAAKgG,iCAAiC,IACrDhG,EAAKiJ,8BAA8BlD,EAAQ8B,KAAKrG,KAChD,IAAIyE,EAAK5B,IAAkB0B,EAAS,EAAI,GACpCG,EAAK7B,IAAkB0B,EAAS,EAAI,GACxCnB,EAAW,GAAKqB,EAChBrB,EAAW,GAAKsB,EAEhB,OADWpB,EAAc,WAGzB9E,EAAKgG,gCAAgC,KAMzCgD,SAAKxE,GACLM,EAAc,GAAKN,EACnB,MAAM0E,EAAOtE,EAAW,GAClBuE,EAAQvE,EAAW,GACzB5E,EAAKoJ,8BAA8BvB,KAAKrG,IAAK0H,EAAMC,IAKpD,MAAME,EAETd,cAAc/G,GACV,MAAMI,EAAMoG,OAAOQ,OAAOa,EAAuBZ,WAGjD,OAFA7G,EAAIJ,IAAMA,EAEHI,EAGX8G,qBACI,MAAMlH,EAAMqG,KAAKrG,IAGjB,OAFAqG,KAAKrG,IAAM,EAEJA,EAGXmH,OACI,MAAMnH,EAAMqG,KAAKa,qBACjB1I,EAAKsJ,kCAAkC9H,GAIvCqH,YAEA,OADU7I,EAAKuJ,uCAAuC1B,KAAKrG,OAC5C,EAKfqH,UAAMrE,GACNxE,EAAKwJ,uCAAuC3B,KAAKrG,IAAKgD,GAItDiF,yBAEA,OADUzJ,EAAK0J,oDAAoD7B,KAAKrG,KAMxEiI,uBAAmBjF,GACnBxE,EAAK2J,oDAAoD9B,KAAKrG,IAAKgD,IAKpE,MAAMoF,EAETrB,cAAc/G,GACV,MAAMI,EAAMoG,OAAOQ,OAAOoB,EAAuBnB,WAGjD,OAFA7G,EAAIJ,IAAMA,EAEHI,EAGX8G,qBACI,MAAMlH,EAAMqG,KAAKrG,IAGjB,OAFAqG,KAAKrG,IAAM,EAEJA,EAGXmH,OACI,MAAMnH,EAAMqG,KAAKa,qBACjB1I,EAAK6J,kCAAkCrI,GAIvCqH,YAEA,OADU7I,EAAK8J,uCAAuCjC,KAAKrG,OAC5C,EAKfqH,UAAMrE,GACNxE,EAAK+J,uCAAuClC,KAAKrG,IAAKgD,GAItD8C,4BAEA,OADUtH,EAAKgK,uDAAuDnC,KAAKrG,KAM3E8F,0BAAsB9C,GACtBxE,EAAKiK,uDAAuDpC,KAAKrG,IAAKgD,IAKvE,MAAM0F,EAET3B,cAAc/G,GACV,MAAMI,EAAMoG,OAAOQ,OAAO0B,EAA4BzB,WAGtD,OAFA7G,EAAIJ,IAAMA,EAEHI,EAGX8G,qBACI,MAAMlH,EAAMqG,KAAKrG,IAGjB,OAFAqG,KAAKrG,IAAM,EAEJA,EAGXmH,OACI,MAAMnH,EAAMqG,KAAKa,qBACjB1I,EAAKmK,uCAAuC3I,GAI5CqH,YAEA,OADU7I,EAAKoK,4CAA4CvC,KAAKrG,OACjD,EAKfqH,UAAMrE,GACNxE,EAAKqK,4CAA4CxC,KAAKrG,IAAKgD,GAI3D8F,cAEA,OAAe,IADLtK,EAAKuK,8CAA8C1C,KAAKrG,KAMlE8I,YAAQ9F,GACRxE,EAAKwK,8CAA8C3C,KAAKrG,IAAKgD,IAK9D,MAAMiG,EAETlC,cAAc/G,GACV,MAAMI,EAAMoG,OAAOQ,OAAOiC,EAAwBhC,WAGlD,OAFA7G,EAAIJ,IAAMA,EAEHI,EAGX8G,qBACI,MAAMlH,EAAMqG,KAAKrG,IAGjB,OAFAqG,KAAKrG,IAAM,EAEJA,EAGXmH,OACI,MAAMnH,EAAMqG,KAAKa,qBACjB1I,EAAK0K,mCAAmClJ,GAIxCqH,YAEA,OADU7I,EAAK2K,wCAAwC9C,KAAKrG,OAC7C,EAKfqH,UAAMrE,GACNxE,EAAK4K,wCAAwC/C,KAAKrG,IAAKgD,GAIvDqG,6BAEA,OADU7K,EAAK8K,yDAAyDjD,KAAKrG,KAM7EqJ,2BAAuBrG,GACvBxE,EAAK+K,yDAAyDlD,KAAKrG,IAAKgD,IAqBzE,MAAMwG,EAETzC,cAAc/G,GACV,MAAMI,EAAMoG,OAAOQ,OAAOwC,EAAwBvC,WAGlD,OAFA7G,EAAIJ,IAAMA,EAEHI,EAGX8G,qBACI,MAAMlH,EAAMqG,KAAKrG,IAGjB,OAFAqG,KAAKrG,IAAM,EAEJA,EAGXmH,OACI,MAAMnH,EAAMqG,KAAKa,qBACjB1I,EAAKiL,mCAAmCzJ,GAIxCqH,YAEA,OADU7I,EAAKkL,wCAAwCrD,KAAKrG,OAC7C,EAKfqH,UAAMrE,GACNxE,EAAKmL,wCAAwCtD,KAAKrG,IAAKgD,GAIvDsC,0BAEA,OADU9G,EAAKoL,sDAAsDvD,KAAKrG,KAM1EsF,wBAAoBtC,GACpBxE,EAAKqL,sDAAsDxD,KAAKrG,IAAKgD,IAKtE,MAAM8G,EAET/C,cAAc/G,GACV,MAAMI,EAAMoG,OAAOQ,OAAO8C,EAA8B7C,WAGxD,OAFA7G,EAAIJ,IAAMA,EAEHI,EAGX8G,qBACI,MAAMlH,EAAMqG,KAAKrG,IAGjB,OAFAqG,KAAKrG,IAAM,EAEJA,EAGXmH,OACI,MAAMnH,EAAMqG,KAAKa,qBACjB1I,EAAKuL,yCAAyC/J,GAI9CqH,YAEA,OADU7I,EAAKwL,8CAA8C3D,KAAKrG,OACnD,EAKfqH,UAAMrE,GACNxE,EAAKyL,8CAA8C5D,KAAKrG,IAAKgD,GAI7DkH,iBACA,IACI,MAAM3F,EAAS/F,EAAKgG,iCAAiC,IACrDhG,EAAK2L,mDAAmD5F,EAAQ8B,KAAKrG,KACrE,IAAIyE,EAAK5B,IAAkB0B,EAAS,EAAI,GACpCG,EAAK7B,IAAkB0B,EAAS,EAAI,GACxCnB,EAAW,GAAKqB,EAChBrB,EAAW,GAAKsB,EAEhB,OADWpB,EAAc,WAGzB9E,EAAKgG,gCAAgC,KAMzC0F,eAAWlH,GACXM,EAAc,GAAKN,EACnB,MAAM0E,EAAOtE,EAAW,GAClBuE,EAAQvE,EAAW,GACzB5E,EAAK4L,mDAAmD/D,KAAKrG,IAAK0H,EAAMC,IAKzE,MAAM0C,EAETtD,cAAc/G,GACV,MAAMI,EAAMoG,OAAOQ,OAAOqD,EAAoBpD,WAG9C,OAFA7G,EAAIJ,IAAMA,EAEHI,EAGX8G,qBACI,MAAMlH,EAAMqG,KAAKrG,IAGjB,OAFAqG,KAAKrG,IAAM,EAEJA,EAGXmH,OACI,MAAMnH,EAAMqG,KAAKa,qBACjB1I,EAAK8L,+BAA+BtK,GAIpCqH,YAEA,OADU7I,EAAK+L,oCAAoClE,KAAKrG,OACzC,EAKfqH,UAAMrE,GACNxE,EAAKgM,oCAAoCnE,KAAKrG,IAAKgD,GAInD4C,yBAEA,OADUpH,EAAKiM,iDAAiDpE,KAAKrG,KAMrE4F,uBAAmB5C,GACnBxE,EAAKkM,iDAAiDrE,KAAKrG,IAAKgD,IAKjE,MAAM2H,EAET5D,cAAc/G,GACV,MAAMI,EAAMoG,OAAOQ,OAAO2D,EAAkC1D,WAG5D,OAFA7G,EAAIJ,IAAMA,EAEHI,EAGX8G,qBACI,MAAMlH,EAAMqG,KAAKrG,IAGjB,OAFAqG,KAAKrG,IAAM,EAEJA,EAGXmH,OACI,MAAMnH,EAAMqG,KAAKa,qBACjB1I,EAAKoM,6CAA6C5K,GAIlDqH,YAEA,OADU7I,EAAKqM,kDAAkDxE,KAAKrG,OACvD,EAKfqH,UAAMrE,GACNxE,EAAKsM,kDAAkDzE,KAAKrG,IAAKgD,GAIjE8F,cAEA,OAAe,IADLtK,EAAKuM,oDAAoD1E,KAAKrG,KAMxE8I,YAAQ9F,GACRxE,EAAKwM,oDAAoD3E,KAAKrG,IAAKgD,IAKpE,MAAMiI,EAETlE,cAAc/G,GACV,MAAMI,EAAMoG,OAAOQ,OAAOiE,EAAsChE,WAGhE,OAFA7G,EAAIJ,IAAMA,EAEHI,EAGX8G,qBACI,MAAMlH,EAAMqG,KAAKrG,IAGjB,OAFAqG,KAAKrG,IAAM,EAEJA,EAGXmH,OACI,MAAMnH,EAAMqG,KAAKa,qBACjB1I,EAAK0M,iDAAiDlL,GAItDqH,YAEA,OADU7I,EAAK2M,sDAAsD9E,KAAKrG,OAC3D,EAKfqH,UAAMrE,GACNxE,EAAK4M,sDAAsD/E,KAAKrG,IAAKgD,GAIrEqI,oBAEA,OADU7M,EAAK8M,8DAA8DjF,KAAKrG,KAMlFqL,kBAAcrI,GACdxE,EAAK+M,8DAA8DlF,KAAKrG,IAAKgD,IAK9E,MAAMwI,EAETzE,cAAc/G,GACV,MAAMI,EAAMoG,OAAOQ,OAAOwE,EAAqBvE,WAG/C,OAFA7G,EAAIJ,IAAMA,EAEHI,EAGX8G,qBACI,MAAMlH,EAAMqG,KAAKrG,IAGjB,OAFAqG,KAAKrG,IAAM,EAEJA,EAGXmH,OACI,MAAMnH,EAAMqG,KAAKa,qBACjB1I,EAAKiN,gCAAgCzL,GAIrCqH,YAEA,OADU7I,EAAKkN,qCAAqCrF,KAAKrG,OAC1C,EAKfqH,UAAMrE,GACNxE,EAAKmN,qCAAqCtF,KAAKrG,IAAKgD,GAIpDiB,0BAEA,OADUzF,EAAKoN,mDAAmDvF,KAAKrG,KAMvEiE,wBAAoBjB,GACpBxE,EAAKqN,mDAAmDxF,KAAKrG,IAAKgD,IAmC1E8I,eAAeC,EAAKC,QACK,IAAVA,IACPA,EAAQ,IAAIC,IAAI,kBAAmBC,OAAOC,KAAKC,MAEnD,MAAMC,EAAU,CAChBA,IAAc,IACdA,EAAQC,IAAIC,2BAA6B,SAASvJ,GAC9C9D,EAAW8D,IAEfqJ,EAAQC,IAAIE,sBAAwB,SAASxJ,EAAMC,GAE/C,OAAO9C,EADGJ,EAAmBiD,EAAMC,KAGvCoJ,EAAQC,IAAIG,mBAAqB,SAASzJ,GACtC,MAAM5C,EAAMlB,EAAW8D,GAAM0J,SAC7B,GAAiB,GAAbtM,EAAIuM,MAEJ,OADAvM,EAAIwM,EAAI,GACD,EAGX,OADU,GAGdP,EAAQC,IAAIO,6BAA+B,SAAS7J,GAChD8J,QAAQnM,MAAM9B,EAAUmE,KAE5BqJ,EAAQC,IAAIS,6BAA+B,SAAS/J,GAChD8J,QAAQzF,MAAMxI,EAAUmE,KAE5BqJ,EAAQC,IAAIU,4BAA8B,SAAShK,GAC/C8J,QAAQG,KAAKpO,EAAUmE,KAE3BqJ,EAAQC,IAAIY,2BAA6B,SAASlK,GAC9C8J,QAAQK,IAAItO,EAAUmE,KAE1BqJ,EAAQC,IAAIc,4BAA8B,SAASpK,GAC/C8J,QAAQO,KAAKxO,EAAUmE,KAE3BqJ,EAAQC,IAAIgB,2BAA6B,SAAStK,GAE9C,OADUnE,EAAUmE,GAAMuK,OAG9BlB,EAAQC,IAAIkB,iCAAmC,SAASxK,EAAMC,GAE1D,OAAO9C,EADG,IAAIsN,SAAS1N,EAAmBiD,EAAMC,MAGpDoJ,EAAQC,IAAIoB,2BAA6B,WAAa,OAAOzH,GAAY,SAAUjD,EAAMC,GAErF,OAAO9C,EADGwN,QAAQC,IAAI/O,EAAUmE,GAAOnE,EAAUoE,OAElD4K,YACHxB,EAAQC,IAAIwB,4BAA8B,WAAa,OAAO7H,GAAY,SAAUjD,EAAMC,GAEtF,OAAO9C,EADGtB,EAAUmE,GAAMhC,KAAKnC,EAAUoE,OAE1C4K,YACHxB,EAAQC,IAAIyB,4BAA8B,WAAa,OAAO9H,GAAY,SAAUjD,EAAMC,EAAMC,GAE5F,OAAO/C,EADGtB,EAAUmE,GAAMhC,KAAKnC,EAAUoE,GAAOpE,EAAUqE,OAE3D2K,YACHxB,EAAQC,IAAI0B,2BAA6B,SAAShL,EAAMC,GACpD,IACI,IAAIgL,EAAS,CAACrB,EAAG5J,EAAMkL,EAAGjL,GAUtB9D,EAAM,IAAIgP,SATJ,CAACnL,EAAMC,KACb,MAAM2J,EAAIqB,EAAOrB,EACjBqB,EAAOrB,EAAI,EACX,IACI,OAtpBpB,SAA2B5J,EAAMC,EAAMC,EAAMkL,GACzC5P,EAAK6P,gEAAgErL,EAAMC,EAAM9C,EAAc+C,GAAO/C,EAAciO,IAqpB7FE,CAAkB1B,EAAGqB,EAAOC,EAAGlL,EAAMC,WAE5CgL,EAAOrB,EAAIA,MAInB,OAAOzM,EAAchB,WAErB8O,EAAOrB,EAAIqB,EAAOC,EAAI,IAG9B7B,EAAQC,IAAIiC,+BAAiC,SAASvL,GAElD,OAAO7C,EADGgO,QAAQK,QAAQ3P,EAAUmE,MAGxCqJ,EAAQC,IAAImC,4BAA8B,SAASzL,EAAMC,GAErD,OAAO9C,EADGtB,EAAUmE,GAAM0L,KAAK7P,EAAUoE,MAG7CoJ,EAAQC,IAAIqC,4BAA8B,SAAS3L,EAAMC,EAAMC,GAE3D,OAAO/C,EADGtB,EAAUmE,GAAM0L,KAAK7P,EAAUoE,GAAOpE,EAAUqE,MAG9DmJ,EAAQC,IAAIsC,4BAA8B,WAAa,OAAO3I,GAAY,WAEtE,OAAO9F,EADG0O,KAAKA,QAEhBhB,YACHxB,EAAQC,IAAIwC,8BAAgC,WAAa,OAAO7I,GAAY,WAExE,OAAO9F,EADG4O,OAAOA,UAElBlB,YACHxB,EAAQC,IAAI0C,kCAAoC,WAAa,OAAO/I,GAAY,WAE5E,OAAO9F,EADG8O,WAAWA,cAEtBpB,YACHxB,EAAQC,IAAI4C,8BAAgC,WAAa,OAAOjJ,GAAY,WAExE,OAAO9F,EADGgP,OAAOA,UAElBtB,YACHxB,EAAQC,IAAI8C,wBAA0B,SAASpM,GAE3C,YAD8BpE,IAApBC,EAAUmE,IAGxBqJ,EAAQC,IAAI+C,4BAA8B,SAASrM,GAE/C,OAAO7C,EADGtB,EAAUmE,KAGxBqJ,EAAQC,IAAIgD,2BAA6B,WAErC,OAAOnP,EADG,IAAIkB,QAGlBgL,EAAQC,IAAIiD,6BAA+B,SAASvM,EAAMC,GACtD,IACIS,EAAOtB,EADDvD,EAAUoE,GAAM1B,MACQ/C,EAAKmF,kBAAmBnF,EAAKoF,oBAC3DC,EAAOrC,EACXqB,IAAkBG,EAAO,EAAI,GAAKa,EAClChB,IAAkBG,EAAO,EAAI,GAAKU,GAEtC2I,EAAQC,IAAIkD,6BAA+B,SAASxM,EAAMC,GACtD,IACI6J,QAAQzF,MAAMtH,EAAmBiD,EAAMC,YAEvCzE,EAAKoG,gBAAgB5B,EAAMC,KAGnCoJ,EAAQC,IAAImD,wBAA0B,SAASzM,EAAMC,GACjD,IACIS,EAAOtB,EADD/B,EAAYxB,EAAUoE,IACEzE,EAAKmF,kBAAmBnF,EAAKoF,oBAC3DC,EAAOrC,EACXqB,IAAkBG,EAAO,EAAI,GAAKa,EAClChB,IAAkBG,EAAO,EAAI,GAAKU,GAEtC2I,EAAQC,IAAIoD,iBAAmB,SAAS1M,EAAMC,GAC1C,MAAM,IAAI5B,MAAMtB,EAAmBiD,EAAMC,KAE7CoJ,EAAQC,IAAIqD,mBAAqB,SAAS3M,GACtC,MAAM9D,EAAW8D,IAErBqJ,EAAQC,IAAIsD,+BAAiC,SAAS5M,EAAMC,EAAMC,GAC9D,IAAI/D,EAhyCZ,SAAwB6D,EAAMC,EAAM4M,EAAM3J,GACtC,MAAM4J,EAAQ,CAAElD,EAAG5J,EAAMkL,EAAGjL,EAAM0J,IAAK,EAAGkD,KAAAA,GACpCE,EAAO,IAAI5J,KAIb2J,EAAMnD,MACN,MAAMC,EAAIkD,EAAMlD,EAChBkD,EAAMlD,EAAI,EACV,IACI,OAAO1G,EAAE0G,EAAGkD,EAAM5B,KAAM/H,WAEJ,KAAd2J,EAAMnD,IACRnO,EAAKwR,oBAAoBpC,IAAIkC,EAAMD,KAAnCrR,CAAyCoO,EAAGkD,EAAM5B,GAGlD4B,EAAMlD,EAAIA,IAMtB,OAFAmD,EAAKrD,SAAWoD,EAETC,EA0wCOE,CAAejN,EAAMC,EAAM,IAAKF,GAC1C,OAAO5C,EAAchB,KAGJ,iBAAV6M,GAA0C,mBAAZkE,SAA0BlE,aAAiBkE,SAA4B,mBAARjE,KAAsBD,aAAiBC,OAC3ID,EAAQmE,MAAMnE,IAKlB,MAAMoE,SAAEA,EAAQC,OAAEA,SAxLtBvE,eAAoBuE,EAAQhE,GACxB,GAAwB,mBAAbiE,UAA2BD,aAAkBC,SAAU,CAC9D,GAAgD,mBAArCC,YAAYC,qBACnB,IACI,aAAaD,YAAYC,qBAAqBH,EAAQhE,GAExD,MAAO/F,GACL,GAA0C,oBAAtC+J,EAAOI,QAAQ7C,IAAI,gBAInB,MAAMtH,EAHNwG,QAAQO,KAAK,oMAAqM/G,GAQ9N,MAAMoK,QAAcL,EAAOM,cAC3B,aAAaJ,YAAYK,YAAYF,EAAOrE,GAEzC,CACH,MAAM+D,QAAiBG,YAAYK,YAAYP,EAAQhE,GAEvD,OAAI+D,aAAoBG,YAAYM,SACzB,CAAET,SAAAA,EAAUC,OAAAA,GAGZD,GA8JoBU,OAAW9E,EAAOK,GAKrD,OAHA7N,EAAO4R,EAASW,QAChBhF,EAAKiF,uBAAyBX,EAEvB7R,EC99CX,IAAAyS,EAAMA,EAAN,MAECC,cACC7K,KAAC8K,MAAQ,GACT9K,KAAC+K,KAAO,KAETrS,KAAOsS,GAEN,GADAhL,KAAC8K,MAAMpS,KAAKsS,SACThL,iBACFA,KAAC+K,OACD/K,KAAC+K,KAAO,KAEHtF,sBACRuF,KAEG,UADAA,EAAQhL,KAAC8K,MAAMG,gBAEPD,EAEP,SAAkDhL,UAAlD,KAAM,8CACA,IAAI8H,aAAS9H,KAAC+K,OAAQ,SAE/BG,eACClL,KAAC8K,MAAQ,KAIX,IC3BAK,EAAAC,EAAAC,EAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GD2BaC,GAAN,MACNtB,uBACDuB,OA4DCC,aAAAA,wBACAC,YAAAA,uBAEAC,UAAAA,gBAhEcvM,KAACwM,WAAUxM,KAACyM,eAAczM,KAAC0M,QACxC1M,KAAC2M,SAAW,GACZ3M,KAAC4M,iBAAmB,GACpB5M,KAAC6M,YAAc,IAAIjC,EAInBwB,EAA4B,IAAItE,aAAS9H,KAAC8M,kBAAmB,QAC7D9M,KAAC+M,mBAAqB,IAAIjF,SAAQrC,MAAC0C,EAAS6E,SAC9C5N,EAAA6N,MAAGA,EAASjN,KAACwM,SAASS,UACb7N,QAAc0I,QAAQoF,KAAK,CAACD,EAAOE,OAAQf,MAClC,SACdpM,KAAC6M,YAAYnU,KAAK0G,UACnB6N,EAAOV,OACPpE,OAEDnI,KAACoN,mBAAqB,IAAItF,SAAQrC,MAAC0C,EAAS6E,aAC9CK,EAAAjO,EAAAkO,EAAAhB,EAAAiB,mDACWnO,EAAMoO,YACP,SACJ,SAA0BxN,mCAA1B,KAAM,gBACNA,KAAC2M,SAASvN,EAAMqO,WAAWtM,QAAU,IAAInB,KAACyM,aAAazM,KAACwM,SAAUpN,EAAMqO,kBACMzN,YAA9EA,KAAC6M,YAAYnU,KAAK,CAAC8U,OAAQ,eAAgBC,WAAYrO,EAAMqO,uBACzD,SACJ,SAA0CzN,mCAA1C,KAAM,4BACNA,KAAC2M,SAASvN,EAAMqO,WAAWtM,QAAQuM,UAAU,oBACzC,SACJ,SAA2D1N,mCAA3D,KAAM,6CACNA,KAAC2M,SAASvN,EAAMqO,WAAWtM,QAAQuM,UAAU,iBACtC1N,KAAC2M,SAASvN,EAAMqO,WAAWtM,kBAC9B,6DACmDmL,EAAOqB,wEAE7D3N,KAAC4M,iBAAiBxN,EAAMqO,WAAWtM,QAAU,SAAEsM,EAAYnB,EAAQI,EAAOG,UAAc,IAAI/E,SAAQrC,eAACmI,EAAiBC,gBAC/GvB,EAAOwB,IAAIpB,GACjBG,EAAYnU,KAAK,CAAC8U,OAAQ,kBAAmBC,WAAYA,IACzDG,OAH4C,CAI1CxO,EAAMqO,WAAYnB,EAAQtM,KAAC0M,MAAO1M,KAAC6M,wBACnC,kBACJ,SAAqE7M,2CAArE,KAAM,8DACCA,KAAC4M,iBAAiBxN,EAAMqO,WAAWtM,cACoCnB,oCAA9EA,KAAC6M,YAAYnU,KAAK,CAAC8U,OAAQ,eAAgBC,WAAYrO,EAAMqO,uBACzD,OAGJ,IAAAJ,KAFArN,KAAC8M,wBACK9M,KAAC+M,4CACAW,UAAU,eACXvN,OAAO4N,KAAK/N,KAAC4M,kBAAkBhU,OAAS,GAE1B,qBADnBwG,QAAcY,KAAC6M,YAAY5B,SAClBuC,eACDxN,KAAC4M,iBAAiBxN,EAAMqO,WAAWtM,QAE5C,IAAAmM,KADAtN,KAAC6M,YAAY3B,6BACNlL,KAAC2M,SAASW,UACjBtN,KAACwM,SAASD,OACVvM,KAACwM,SAAW,KACZxM,KAAC6M,YAAc,UACf1E,YAGA,KAAM,mBAAqB/I,EAAMoO,cACpCR,EAAO,8BAETX,iBAAclM,OAAO6N,OAAOhO,KAAC2M,UAC7BL,gBAAanM,OAAO6N,OAAOhO,KAAC2M,UAAU,GAEhClH,aACL,GAAGzF,KAACwM,gBACHxM,KAAC6M,YAAYnU,KAAK,CAAA8U,OAAQ,eACpBxN,KAACoN,qBAKGa,GAAN,MACNpD,sBAIAiD,SAAAA,oBAIAI,gBAAAA,2BACAC,iBAAAA,4BAMAT,eAAAA,qBAfc1N,KAACwM,WAAUxM,KAACyN,aACzBzN,KAACoO,SAAW,IAAIxD,EAChB5K,KAAC2N,qBAAsB,EAEnBlI,UAAC4I,UACLrO,KAAC2N,qBAAsB,QACjBU,EAAQrO,MAEfkO,oBAAiBlO,KAACmO,cACL1I,wCAEEzF,KAACoO,SAASnD,aACjB,gBAAqB,MACrB,gBAAqB,GAE7ByC,UAAYY,UACXtO,KAACoO,SAAS1V,KAAK4V,KCrHjBC,wGAGAtC,IAAqB,MAEduC,GAAkB/I,eAACtN,gBAClBsW,EAAmBtW,IAEpBuW,GAAoBjJ,eAACkJ,EAAWC,GAA4B,OACnE5N,EFqZ0C6N,EAClCxR,EACAG,EEvZN,SAAGyO,KAAuB2C,KAGvB,KAAM5N,QFkZ+B6N,EElZoBF,EFmZtDtR,EAAOtB,EAAkB8S,EAAmB1W,EAAKmF,kBAAmBnF,EAAKoF,oBACzEC,EAAOrC,EACDhD,EAAK2W,0BAA0BzR,EAAMG,KEpZhDyO,IAAqB,GAErBxF,QAAQzF,MAAM,sCAAwCA,IACtD,KAGHkL,GAAiB,SAAC6C,GACjB,GAAiB,IAAdA,EACF,KAAM,kBAAkBA,OAGnBC,GAAiB,SAACC,EAAWC,SACnC,CACCD,UAAW,CAAC,QAAQE,OAAOF,GAC3BG,MAAM,IAAI/T,aAAcM,OAAOd,KAAKC,UAAUoU,MAGzCG,GAAmB,SAACJ,EAAWK,GACrC,GAAyE,IAApBL,EAAUrW,QAA+B,SAAhBqW,EAAU,GAAxF,KAAM,iCAAiCA,QACvC,CACCA,UAAWA,EAAU3S,MAAM,GAC3B8S,KAAMvU,KAAK0U,OAAM,IAAItW,aAAcG,OAAOkW,MAI/BE,GAAN,MACN3E,YAAc4E,SAAeC,EAAT1P,KAAC2P,OAAS3P,KAACyP,0BAAQ,SAAAlV,qCAAImV,aAAeE,GAAmBF,EAAS,IAAIE,GAAcF,gBACxGG,iBAAahV,KAAKC,UAAU,CAAA2U,KAAMzP,KAACyP,KAAKK,KAAI,SAACJ,UAAMA,EAAIC,QAAOA,KAAM3P,KAAC2P,OACrExO,WACDrI,eAASkH,aACNA,KAAC+P,MAAQ/P,KAACyP,KAAKK,KAAI,SAACJ,UAAMA,EAAIvO,OAAOzG,cAAYsV,OAAOC,KAAK,KAAO,IACpEnX,EAAMoX,EAA6BrV,KAAKC,UAAUkF,KAAC2P,OACnDzD,GAAepT,EAAIkI,OACnBhB,KAAC+P,OAASjX,EAAIqI,KAAKzG,YACpBsF,KAAC+P,QAIUH,GAAN,MACN/E,eAAc7K,KAAC2P,OACfE,iBAAahV,KAAKC,UAAUkF,KAAC2P,MAC7BxO,WACDrI,eAASkH,aACNlH,EAAMoX,EAA6BrV,KAAKC,UAAUkF,KAAC2P,OACnDzD,GAAepT,EAAIkI,OACnBhB,KAAC+P,MAAQjX,EAAIqI,MACdnB,KAAC+P,QAKH5E,EAAkC,IAAIgF,sBAAsBC,GAC3DC,EAAmCD,SAEvBE,GAAN,MACNzF,cAAoB,YACrB0F,EFipBuCC,EAC/BnT,EACAG,EACA1E,EErpBOkH,KAAC5F,OACdsU,GAAkB,QAAQ,GFipBW8B,EEhpBMxQ,KAAC5F,KFipBtCiD,EAAOtB,EAAkByU,EAAUrY,EAAKmF,kBAAmBnF,EAAKoF,oBAChEC,EAAOrC,EACPrC,EAAMX,EAAKsY,uBAAuBpT,EAAMG,GEnpB9C+S,EFopBS/O,EAAuB9D,OAAO5E,GEnpBvCoT,GAAeqE,EAAOvP,OACtBhB,KAACoQ,QAAUG,EAAO3O,mBAClBuJ,EAAgCuF,SAAS1Q,KAAGA,KAACoQ,QAASpQ,MACtDA,KAAC2Q,wBAAwB3B,IACzBhP,KAAC4Q,0BAA0BvB,IAE5BwB,iBACCR,EAAmCrQ,KAACoQ,SACpCjF,EAAgC2F,WAAW9Q,MAE5CsM,OAASmD,EAAME,UACd,IAAIvE,EAAcpL,KAAGA,KAAC+Q,mBAAoB/Q,KAACgR,qBAAsBvB,EAAME,GAExED,IAAMC,UACL,IAAIhE,GAAW3L,KAAGA,KAAC+Q,mBAAoB/Q,KAACgR,qBAAsBrB,GAE/DgB,kCAA0B3Q,KAAC+Q,qBAAuB/Q,KAClD4Q,oCAA4B5Q,KAACgR,uBAAyBhR,OAGjDoL,EAAN,MACCP,uBAAc7K,KAACL,aAAYK,KAACiR,aAAYjR,KAACkR,eAAclR,KAACyP,OAAMzP,KAAC2P,OAC/DwB,iBAAe,IAAI1F,GAAczL,KAACL,WAAY,IAAI6P,GAAiBxP,KAACyP,KAAMzP,KAAC2P,MAAO3P,KAACkR,cACnFE,gBAAc,IAAI7F,GAAavL,KAACL,WAAY,IAAI6P,GAAiBxP,KAACyP,KAAMzP,KAAC2P,MAAO3P,KAACiR,YACjFI,0BAAkBrR,KAACiR,aAAejR,KAClCsR,4BAAoBtR,KAACkR,eAAiBlR,OAEjC2L,GAAN,MACCd,qBAAc7K,KAACL,aAAYK,KAACiR,aAAYjR,KAACkR,eAAclR,KAAC2P,OACxDwB,iBAAe,IAAIrF,GAAW9L,KAACL,WAAY,IAAIiQ,GAAc5P,KAAC2P,MAAO3P,KAACkR,cACtEE,gBAAc,IAAIxF,GAAU5L,KAACL,WAAY,IAAIiQ,GAAc5P,KAAC2P,MAAO3P,KAACiR,YACpEI,0BAAkBrR,KAACiR,aAAejR,KAClCsR,4BAAoBtR,KAACkR,eAAiBlR,OAIvCsL,GAA+C,IAAI6E,sBAAsBC,GACxEmB,EAAiDnB,KAE5C/E,EAAN,MAECR,oBAGA2G,UAAAA,qBACArE,UAAAA,qBAcAZ,UAAAA,gBAlBcvM,KAACoQ,UACd9E,GAA6CoF,SAAS1Q,KAAGA,KAACoQ,QAASpQ,MAEpEwR,cAAUrE,OACVA,WACDsE,EAAAC,EFgSsD7S,EAAgB8S,SEhSpE3R,KAAC4R,cAAgB,IAAI9J,aAAS9H,KAAC6R,eAAe,QAC9CJ,EAAyB,IAAI3J,SAASK,GAAWnI,KAAC8R,uBAAyB3J,IF+RvBtJ,EE9RkBmB,KAACoQ,QF8RHuB,EE9RYF,GAAhFC,EFgSS7Y,EADGV,EAAK4Z,sCAAsClT,EAAgB/E,EAAc6X,ME9RlEA,OAASlM,MAACuF,IAC5BhL,KAAC8R,uBAAuB3J,QAAQ6C,SAC1B0G,GACPA,EAAmBrJ,MAAM2C,QAC3BgH,SAAGhS,KAAC6R,eACD7R,KAAC4R,cAAgB,KACjB5R,KAAC8R,uBAAyB,KAE1B,CAAEtE,QADFwE,EAASnX,KAAK0U,MAAMvE,IACHwC,OAAQC,WAAY,IAAI+B,GAAiBwC,EAAO1E,IAAImC,KAAMuC,EAAO1E,IAAIqC,UAElFlK,0BACFzF,8BACFA,KAAC8R,+BACK9R,KAAC4R,eACRtG,GAA6CwF,WAAW9Q,MACxDuR,EAAiDvR,KAACoQ,SAClDpQ,KAACoQ,QAAU,OAIb1E,GAAsC,IAAIyE,sBAAsBC,GAC/D6B,EAAuC7B,KAElC3E,GAAN,MAECZ,uBACD0F,OAMChE,UAAAA,qBAMA2F,kBAAAA,6BAiBAjF,YAAAA,uBAGAxH,WAAAA,iBAjCczF,KAACL,aAAYK,KAACyN,aAAYzN,KAACkR,eACxCX,EFsIK,SAAoC5Q,EAAY8N,GACnD,IAAIpQ,EAAOtB,EAAkB0R,EAAYtV,EAAKmF,kBAAmBnF,EAAKoF,oBAClEC,EAAOrC,EACPrC,EAAMX,EAAKga,2BAA2BxS,EAAYtC,EAAMG,GAC5D,OAAOoF,EAAwBlF,OAAO5E,GE1I/BsZ,CAAsCpS,KAACL,WAAWyQ,QAASpQ,KAACyN,WAAWoC,WAChF3D,GAAeqE,EAAOvP,OACtBhB,KAACoQ,QAAUG,EAAOvN,uBAClB0I,GAAoCgF,SAAS1Q,KAAGA,KAACoQ,QAASpQ,MAC1DA,KAACqS,SAAU,EAEZ9F,cACCvM,KAACqS,SAAU,EACXJ,EAAuCjS,KAACoQ,SACxC1E,GAAoCoF,WAAW9Q,MAC/CA,KAACoQ,QAAU,KAEZ8B,mBACDjD,EAAAqD,EAAAhD,EAAAtK,EAAAuN,EAAAC,EF2IoDxP,EE3IlD,aAAoBhD,aAAb,MF2I2CgD,EE1IahD,KAACoQ,QAC/B,KADjCpL,EF2IY7M,EAAKsa,oCAAoCzP,IE1I9C,MACPuP,EAAeG,EAAqD1N,GACpEwN,EAAU3X,KAAK0U,MAAMoD,EAAqD3N,IAC1EiK,EAAYpU,KAAK0U,MAAMqD,EAAkD5N,IACzEsK,EAAMuD,EAA6C7N,GACnD8N,EAA+C9N,GAE/C,CACCwN,QAASA,EACTpD,MAHDkD,EAAetS,KAACkR,aAAajC,EAAWK,IAGpBF,KACnBH,UAAWqD,EAAarD,UACxBsD,aAAcA,KAGhBtF,gBACC,IAAI5B,GFoN4C0H,EEpNwB/S,KAACoQ,QFqN7DjY,EAAK6a,kCAAkCD,KAD9C,IAA2CA,EElNjDtN,MAAQwN,UAOP,IAAIC,GAAsBlT,KAN1B,cAA6BmT,GAC5B1J,YACH8D,mCAAe2E,sBACZ9C,WACH7B,EAAA6F,+DAA+BhE,cAEgB6D,KAI/CzH,GAAqC,IAAI2E,sBAAsBC,GAC9DiD,EAAsCjD,KAEjC7E,GAAN,MACCV,uBACD0F,OAMChE,UAAAA,qBAKA+G,sBAAAA,iCAOAzP,gBAAAA,2BAGA0P,cAAAA,yBAGAC,mBAAAA,8BAIAvG,YAAAA,uBAGAxH,WAAAA,iBAhCczF,KAACL,aAAYK,KAACyN,aAAYzN,KAACiR,aACxCV,EFqcK,SAAmC5Q,EAAY8N,GAClD,IAAIpQ,EAAOtB,EAAkB0R,EAAYtV,EAAKmF,kBAAmBnF,EAAKoF,oBAClEC,EAAOrC,EACPrC,EAAMX,EAAKsb,0BAA0B9T,EAAYtC,EAAMG,GAC3D,OAAOuE,EAAuBrE,OAAO5E,GEzc9B4a,CAAqC1T,KAACL,WAAWyQ,QAASpQ,KAACyN,WAAWoC,WAC/E3D,GAAeqE,EAAOvP,OACtBhB,KAACoQ,QAAUG,EAAO9Q,sBAClB+L,GAAmCkF,SAAS1Q,KAAGA,KAACoQ,QAASpQ,MACzDA,KAACqS,SAAU,EAEZ9F,cACCvM,KAACqS,SAAU,EACXgB,EAAsCrT,KAACoQ,SACvC5E,GAAmCsF,WAAW9Q,MAE/CsT,iBAAmBd,EAASmB,EAAa1E,EAAU,GAAIpL,EAAW,OACnE0M,EAAAqD,SAAEA,EAAa5T,KAACiR,WAAWhC,EAAW0E,GAC0B,iBAAd9P,IAAhDA,EAAagQ,OAAOhQ,IACpB0M,EF6cK,SAAyC9Q,EAAuBqU,EAAc7E,EAAWG,EAAM2E,GAClG,IAAI1W,EAAOtB,EAAkB+X,EAAc3b,EAAKmF,kBAAmBnF,EAAKoF,oBACpEC,EAAOrC,EACP6Y,EAAOjY,EAAkBkT,EAAW9W,EAAKmF,kBAAmBnF,EAAKoF,oBACjE0W,EAAO9Y,EACP+Y,EAAOhV,EAAkBkQ,EAAMjX,EAAKmF,mBACpC6W,EAAOhZ,EACX8B,EAAc,GAAK8W,EACnB,MAAMK,EAAOrX,EAAW,GAClBsX,EAAQtX,EAAW,GACzB,IAAIjE,EAAMX,EAAKmc,gCAAgC7U,EAAuBpC,EAAMG,EAAMwW,EAAMC,EAAMC,EAAMC,EAAMC,EAAMC,GAChH,OAAOhS,EAA4B3E,OAAO5E,GExdnCyb,CAA2CvU,KAACoQ,QAASvV,KAAKC,UAAU0X,GAAU3X,KAAKC,UAAU8Y,EAAW3E,WAAY2E,EAAWxE,KAAMvL,GAC9IqI,GAAeqE,EAAOvP,OACtBuP,EAAO9N,QAERoB,oBF2dM,SAA0CpE,GAC7C,IACI,MAAMvB,EAAS/F,EAAKgG,iCAAiC,IACrDhG,EAAKqc,iCAAiCtW,EAAQuB,GAC9C,IAAIrB,EAAK5B,IAAkB0B,EAAS,EAAI,GACpCG,EAAK7B,IAAkB0B,EAAS,EAAI,GAIxC,OAHAnB,EAAW,GAAKqB,EAChBrB,EAAW,GAAKsB,EACLpB,EAAc,WAGzB9E,EAAKgG,gCAAgC,KEre3CsW,CAA4CzU,KAACoQ,SAE9CmD,kBACCvT,KAAC6D,aAAe,EAEjB2P,cAAgB3P,SAC+C,iBAAdA,IAAhDA,EAAagQ,OAAOhQ,IFuef,SAA6CpE,EAAuBsU,GACvE9W,EAAc,GAAK8W,EACnB,MAAM1S,EAAOtE,EAAW,GAClBuE,EAAQvE,EAAW,GACzB5E,EAAKuc,oCAAoCjV,EAAuB4B,EAAMC,GE1exEqT,CAA+C3U,KAACoQ,QAASvM,GAE1DoJ,gBACC,IAAI5B,GF8e2CuJ,EE9ewB5U,KAACoQ,QF+e5DjY,EAAK0c,iCAAiCD,KAD7C,IAA0CA,EE5ehDnP,MAAQwN,UAqBP,IAAIC,GAAsBlT,KApB1B,MAAA8U,UAA4B3B,GAC3BtI,YAAc2B,EAAUiB,mBAGxBK,SAAAA,oBAGAJ,eAAAA,0BAGA7J,gBAAAA,2BAEA0P,cAAAA,yBAEAwB,eAAAA,0BAEAC,cAAAA,oBAbChV,KAACiV,YAAczI,EAAS3I,aACpB4B,UAAC4I,OACTd,iBALQuH,eAILhH,IACaO,6BACDmF,cAAcxT,KAACiV,oBAC3BvH,UAAYY,OACff,iBARQuH,GAQJ9U,KAACiV,sCAAyBpR,0BAD3B6J,UAEOY,GACPzK,iBACH0J,iBAXQuH,6BAWOjR,oBACZ0P,eACHhG,iBAbQuH,6BAaOvB,kBACZwB,UAAYvC,EAASmB,EAAa1E,EAAU,QAC/C1B,iBAfQuH,6BAeOxB,iBAAiBd,EAASmB,EAAa1E,EAAWjP,KAACiV,oBAC/DD,SAAW5F,OACd8F,iBAjBQJ,GAiBJI,GAAY,IAAIC,MAAOC,UACvBpV,KAAC+U,UAAU,CAAC,EAAGM,KAAKC,MAAMJ,EAAU,KAAOA,EAAuC,IAA3BG,KAAKC,MAAMJ,EAAU,KAAY,GAAI9F,KAElD6D,KAI9ClH,GAAmC,IAAIoE,sBAAsBC,GAC5DmF,EAAoCnF,KAE/BtE,GAAN,MACCjB,uBACD0F,OAMChE,UAAAA,qBAKAiJ,wBAAAA,mCAKAtD,kBAAAA,6BAoBAzM,WAAAA,iBArCczF,KAACL,aAAYK,KAACyN,aAAYzN,KAACkR,eACxCX,EFhCK,SAAiC5Q,EAAY8N,GAChD,IAAIpQ,EAAOtB,EAAkB0R,EAAYtV,EAAKmF,kBAAmBnF,EAAKoF,oBAClEC,EAAOrC,EACPrC,EAAMX,EAAKsd,wBAAwB9V,EAAYtC,EAAMG,GACzD,OAAO2H,EAAqBzH,OAAO5E,GE4B5B4c,CAAmC1V,KAACL,WAAWyQ,QAASpQ,KAACyN,WAAWoC,WAC7E3D,GAAeqE,EAAOvP,OACtBhB,KAACoQ,QAAUG,EAAO3S,oBAClBmO,GAAiC2E,SAAS1Q,KAAGA,KAACoQ,QAASpQ,MACvDA,KAACqS,SAAU,EAEZ9F,cACCvM,KAACqS,SAAU,EACXkD,EAAoCvV,KAACoQ,SACrCrE,GAAiC+E,WAAW9Q,MAE7CwV,yBACDG,EAAApb,EAAAX,EAAA2T,EAAAgD,EAAAqF,EACE,IADArF,EFdK,SAAgD3S,GACnD,IACI,MAAMM,EAAS/F,EAAKgG,iCAAiC,IACrDhG,EAAK0d,uCAAuC3X,EAAQN,GACpD,IAAIQ,EAAK5B,IAAkB0B,EAAS,EAAI,GACpCG,EAAK7B,IAAkB0B,EAAS,EAAI,GACxC,OAAOxE,EAAmB0E,EAAIC,WAE9BlG,EAAKgG,gCAAgC,IACrChG,EAAKoG,gBAAgBH,EAAIC,IEKtByX,CAAkD9V,KAACoQ,cAC5D7V,qDACC,IAAIiV,GAAiBmG,EAAmBlG,KAAMkG,EAAmBhG,gBAEnEuC,aAAe6D,OAChB9G,EAAAqD,EAAAhD,EAAAiB,EAAAgC,EAAAC,EACE,OAAgC,KADhCjC,EF9BK,SAAiD3S,EAAqBmY,GACzE,IAAI1Y,EAAOtB,EAAkBga,EAAmB5d,EAAKmF,kBAAmBnF,EAAKoF,oBACzEC,EAAOrC,EACPrC,EAAMX,EAAK6d,wCAAwCpY,EAAqBP,EAAMG,GAClF,OAAOoH,EAAsClH,OAAO5E,GE0B7Cmd,CAAmDjW,KAACoQ,QAAS2F,EAAkBlG,YACjE7O,OACiB,IAAxBuP,EAAOvL,cADhB,MAEPuN,EAAeG,EAAqDnC,EAAOvL,eAC3EwN,EAAU3X,KAAK0U,MAAMoD,EAAqDpC,EAAOvL,gBACjFiK,EAAYpU,KAAK0U,MAAMqD,EAAkDrC,EAAOvL,gBAChFsK,EAAMuD,EAA6CtC,EAAOvL,eAC1D8N,EAA+CvC,EAAOvL,eAEtD,CACCwN,QAASA,EACTpD,MAHDkD,EAAetS,KAACkR,aAAajC,EAAWK,IAGpBF,KACnBH,UAAWqD,EAAarD,UACxBsD,aAAcA,IAGhBtF,gBACC,IAAI5B,GFnByC6K,EEmBwBlW,KAACoQ,QFlB1DjY,EAAKge,+BAA+BD,KAD3C,IAAwCA,EEqB9CzQ,MAAQwN,UAOP,IAAIC,GAAsBlT,KAN1B,cAA6BmT,GAC5B1J,YACH8D,mCAAe2E,aAAalS,KAACyN,mBAC1B2B,WACH7B,EAAA6F,8EAA0ChE,cAEK6D,KAI/CpH,GAAkC,IAAIsE,sBAAsBC,GAC3DgG,EAAmChG,KAE9BxE,GAAN,MACCf,uBACD0F,OAMChE,UAAAA,qBAKAiJ,wBAAAA,mCAKAlC,sBAAAA,iCAOAzP,gBAAAA,2BAKA0P,cAAAA,yBAGAC,mBAAAA,8BAKAvG,YAAAA,uBAGAxH,WAAAA,iBAxCczF,KAACL,aAAYK,KAACyN,aAAYzN,KAACiR,aACxCV,EFkPK,SAAgC5Q,EAAY8N,GAC/C,IAAIpQ,EAAOtB,EAAkB0R,EAAYtV,EAAKmF,kBAAmBnF,EAAKoF,oBAClEC,EAAOrC,EACPrC,EAAMX,EAAKke,uBAAuB1W,EAAYtC,EAAMG,GACxD,OAAOwG,EAAoBtG,OAAO5E,GEtP3Bwd,CAAkCtW,KAACL,WAAWyQ,QAASpQ,KAACyN,WAAWoC,WAC5E3D,GAAeqE,EAAOvP,OACtBhB,KAACoQ,QAAUG,EAAOhR,mBAClBsM,GAAgC6E,SAAS1Q,KAAGA,KAACoQ,QAASpQ,MACtDA,KAACqS,SAAU,EAEZ9F,cACCvM,KAACqS,SAAU,EACX+D,EAAmCpW,KAACoQ,SACpCvE,GAAgCiF,WAAW9Q,MAE5CwV,yBACDG,EAAApb,EAAAX,EAAA2T,EAAAgD,EAAAqF,EACE,IADArF,EFwPK,SAA+ChR,GAClD,IACI,MAAMrB,EAAS/F,EAAKgG,iCAAiC,IACrDhG,EAAKoe,sCAAsCrY,EAAQqB,GACnD,IAAInB,EAAK5B,IAAkB0B,EAAS,EAAI,GACpCG,EAAK7B,IAAkB0B,EAAS,EAAI,GACxC,OAAOxE,EAAmB0E,EAAIC,WAE9BlG,EAAKgG,gCAAgC,IACrChG,EAAKoG,gBAAgBH,EAAIC,IEjQtBmY,CAAiDxW,KAACoQ,cAC3D7V,qDACC,IAAIiV,GAAiBmG,EAAmBlG,KAAMkG,EAAmBhG,gBAEnE2D,iBAAmByC,EAAmBvD,EAASmB,EAAa1E,EAAU,GAAIpL,EAAW,OACtF0M,EAAAqD,SAAEA,EAAa5T,KAACiR,WAAWhC,EAAW0E,GAC0B,iBAAd9P,IAAhDA,EAAagQ,OAAOhQ,IACpB0M,EFuQK,SAA6ChR,EAAoBwW,EAAmBjC,EAAc7E,EAAWG,EAAM2E,GACtH,IAAI1W,EAAOtB,EAAkBga,EAAmB5d,EAAKmF,kBAAmBnF,EAAKoF,oBACzEC,EAAOrC,EACP6Y,EAAOjY,EAAkB+X,EAAc3b,EAAKmF,kBAAmBnF,EAAKoF,oBACpE0W,EAAO9Y,EACP+Y,EAAOnY,EAAkBkT,EAAW9W,EAAKmF,kBAAmBnF,EAAKoF,oBACjE4W,EAAOhZ,EACPsb,EAAOvX,EAAkBkQ,EAAMjX,EAAKmF,mBACpCoZ,EAAOvb,EACX8B,EAAc,GAAK8W,EACnB,MAAM4C,EAAO5Z,EAAW,GAClB6Z,EAAQ7Z,EAAW,GACzB,IAAIjE,EAAMX,EAAK0e,oCAAoCtX,EAAoBlC,EAAMG,EAAMwW,EAAMC,EAAMC,EAAMC,EAAMsC,EAAMC,EAAMC,EAAMC,GAC7H,OAAOtS,EAAkC5G,OAAO5E,GEpRzCge,CAA+C9W,KAACoQ,QAAS2F,EAAkBlG,UAAWhV,KAAKC,UAAU0X,GAAU3X,KAAKC,UAAU8Y,EAAW3E,WAAY2E,EAAWxE,KAAMvL,GAC/KqI,GAAeqE,EAAOvP,OACtBuP,EAAO9N,QAERoB,WAAakS,OACdxF,SAAEA,EFuRK,SAAuChR,EAAoBwW,GAC9D,IAAI1Y,EAAOtB,EAAkBga,EAAmB5d,EAAKmF,kBAAmBnF,EAAKoF,oBACzEC,EAAOrC,EACPrC,EAAMX,EAAK4e,8BAA8BxX,EAAoBlC,EAAMG,GACvE,OAAOiG,EAA8B/F,OAAO5E,GE3RrCke,CAAyChX,KAACoQ,QAAS2F,EAAkBlG,WAC9E3D,GAAeqE,EAAOvP,OACtBuP,EAAO1M,WAER0P,SAAWwC,UACV/V,KAAC6D,WAAWkS,GAAqB,EAElCvC,cAAgBuC,EAAmBlS,OACpC7C,QAAgE,iBAAd6C,IAAhDA,EAAagQ,OAAOhQ,IACpB7C,EF2RK,SAA0CzB,EAAoBwW,EAAmBhC,GACpF,IAAI1W,EAAOtB,EAAkBga,EAAmB5d,EAAKmF,kBAAmBnF,EAAKoF,oBACzEC,EAAOrC,EACX8B,EAAc,GAAK8W,EACnB,MAAMkD,EAAOla,EAAW,GAClBma,EAAQna,EAAW,GAEzB,OADU5E,EAAKgf,iCAAiC5X,EAAoBlC,EAAMG,EAAMyZ,EAAMC,KACvE,EElSTE,CAA4CpX,KAACoQ,QAAS2F,EAAkBlG,UAAWhM,GAC3FqI,GAAelL,GAEhBiM,gBACC,IAAI5B,GFqSwCgM,EErSwBrX,KAACoQ,QFsSzDjY,EAAKmf,8BAA8BD,KAD1C,IAAuCA,EEnS7C5R,MAAQwN,UAqBP,IAAIC,GAAsBlT,KApB1B,MAAA8U,UAA4B3B,GAC3BtI,YAAc2B,EAAUiB,mBAGxBK,SAAAA,oBAGAJ,eAAAA,0BAGA7J,gBAAAA,2BAEA0P,cAAAA,yBAEAwB,eAAAA,0BAEAC,cAAAA,oBAbChV,KAACiV,YAAczI,EAAS3I,WAAW7D,KAACyN,YAChChI,UAAC4I,OACTd,iBALQuH,eAILhH,IACaO,6BACDmF,cAAcxT,KAACyN,WAAYzN,KAACiV,oBACxCvH,UAAYY,OACff,iBARQuH,GAQJ9U,KAACiV,sCAAyBpR,WAAW7D,KAACyN,yBADvCC,UAEOY,GACPzK,iBACH0J,iBAXQuH,6BAWOjR,WAAW7D,KAACyN,mBACxB8F,eACHhG,iBAbQuH,6BAaOvB,SAASvT,KAACyN,mBACtBsH,UAAYvC,EAASmB,EAAa1E,EAAU,QAC/C1B,iBAfQuH,6BAeOxB,iBAAiBtT,KAACyN,WAAY+E,EAASmB,EAAa1E,EAAWjP,KAACiV,oBAC5ED,SAAW5F,OACd8F,iBAjBQJ,GAiBJI,GAAY,IAAIC,MAAOC,UACvBpV,KAAC+U,UAAU,CAAC,EAAGM,KAAKC,MAAMJ,EAAU,KAAOA,EAAuC,IAA3BG,KAAKC,MAAMJ,EAAU,KAAY,GAAI9F,KAElD6D,KAI9CjH,GAA2C,IAAImE,sBAAsBC,GACpEmH,EAAoCnH,SAIxBoH,GAAN,MAEN3M,kBAA0C,QAC3C0F,EFoDwC3O,EAAoB6V,EAAUC,EAAcC,EAC5E7e,OEjBP8e,aAAAA,wBA0CAC,UAAAA,qBAGAC,UAAAA,qBAMAC,SAAAA,eAxFc/X,KAACL,aAAYK,KAACgY,MAAKhY,KAACiY,UACjCjY,KAACkY,WAAY,EACblY,KAACmY,YAAS,EACVnY,KAACgB,WAAQ,EACThB,KAACoY,wBAAqB,EACtBpY,KAACqY,oBAAqB,EACtBrY,KAACsY,eAAY,EF+CyB1W,EE9CM5B,KAACL,WAAWyQ,QF8CEqH,GE9CO,EF8CGC,GE9CG,EF8CWC,GE9CL,EF+CvE7e,EAAMX,EAAKogB,wBAAwB3W,EAAoB6V,EAAU3Y,EAAW4Y,GAAgB,SAAWA,EAAe,EAAI,EAAG5Y,EAAW6Y,GAAgB,SAAWA,EAAe,EAAI,GE/C5LpH,EFgDSpN,EAAwBzF,OAAO5E,GE/CxCoT,GAAeqE,EAAOvP,OACtBhB,KAACf,oBAAsBsR,EAAOtR,oBAC9Be,KAAC8M,gBAAkB,IAAIhF,SAASK,GAAYnI,KAACwY,wBAA0BrQ,IACvEnI,KAACyY,mBAAqBzY,KAAC0Y,aACvB1M,GAAyC0E,SAAS1Q,KAAGA,KAACf,oBAAqBe,MAC3EA,KAAC4X,UAEOnS,uBACRzF,KAACwY,wBAAwB,CAAC,eACpBxY,KAACyY,mBACPzY,KAACqY,oBAAqB,EACnBrY,KAAC2Y,qBACHC,cAAc5Y,KAAC2Y,2BACb3Y,0BACF6Y,aAAa7Y,KAACoY,oBACdpY,KAACoY,mBAAqB,YACpBpY,cACFA,KAACmY,OAAOW,QAAU,KAClB9Y,KAACmY,OAAOY,QAAU,KAClB/Y,KAACmY,OAAOa,UAAY,KACpBhZ,KAACmY,OAAOc,QACRjZ,KAACkZ,wBACClZ,iBACF6Y,aAAa7Y,KAACsY,WACdtY,KAACsY,UAAY,MACdf,EAAoCvX,KAACf,qBACrC+M,GAAyC8E,WAAW9Q,MAGrD4X,cACD5W,EAAEhB,KAACoY,wBAAqB,MAGrBpY,KAACmY,OAAS,IAAIgB,UAAUnZ,KAACgY,qBACpBhX,IACLhB,KAACgB,MAAS,CAAEoY,MAAO,aAAcpY,MAAOA,SACZhB,0BAA5BA,KAACqZ,oBAAoBrZ,OACd,SAERA,KAACmY,OAAOmB,WAAa,cAErBtZ,KAACmY,OAAOoB,OAAS,SACnBC,SAAyDxZ,KAACiY,QAAQ3d,OAA/DmM,QAAQnM,MAAM,oCACd0F,KAACkY,WAAY,EACblY,KAACgB,WAAQ,QACmBhB,0BAA5BA,KAACqZ,oBAAoBrZ,MACrBwZ,EFeI,SAAuCva,GAC1C,IACI,MAAMf,EAAS/F,EAAKgG,iCAAiC,IACrDhG,EAAKshB,8BAA8Bvb,EAAQe,GAC3C,IAAIb,EAAK5B,IAAkB0B,EAAS,EAAI,GACpCG,EAAK7B,IAAkB0B,EAAS,EAAI,GACpCS,EAAKF,EAAoBL,EAAIC,GAAI/B,QAErC,OADAnE,EAAKoG,gBAAgBH,EAAS,EAALC,GAClBM,UAEPxG,EAAKgG,gCAAgC,KEzB1Bub,CAAyC1Z,KAACf,qBAC1De,KAAC8X,KAAK0B,IAEPxZ,KAACmY,OAAOW,QAAU9Y,KAACkZ,eAAiB,KF6B/B,IAA0Cja,EEpB9C,GAR2De,KAACiY,QAAQ3d,OAApEmM,QAAQnM,MAAM,yCAC0B0F,KAAC2Y,qBAAzCC,cAAc5Y,KAAC2Y,qBACf3Y,KAACkY,WAAY,EACblY,KAACmY,YAAS,EFyBoClZ,EExBFe,KAACf,oBFyB5C9G,EAAKwhB,iCAAiC1a,SExBXe,0BAA5BA,KAACqZ,oBAAoBrZ,YACiBA,yBAAtC6Y,aAAa7Y,KAACoY,oBACdpY,KAACoY,mBAAqB,KAC+BpY,KAACqY,0BAAtDrY,KAACoY,mBAAqBwB,WAAW5Z,KAAC4X,QAAS,MAE5C5X,KAACmY,OAAOY,QAAW/X,IAC+BhB,KAACiY,QAAQ3d,OAA1DmM,QAAQnM,MAAM,uBAAwB0G,GACtChB,KAACgB,MAAQ,CAAEoY,MAAO,YAAapY,MAAOA,IAEvChB,KAACmY,OAAOa,UAAa5Z,QACvBoa,SAAGA,EF4BI,SAA8Cva,EAAqBmQ,GACtE,IACI,MAAMlR,EAAS/F,EAAKgG,iCAAiC,IACrD,IAAId,EAAO6B,EAAkBkQ,EAAMjX,EAAKmF,mBACpCE,EAAOrC,EACXhD,EAAK0hB,qCAAqC3b,EAAQe,EAAqB5B,EAAMG,GAC7E,IAAIY,EAAK5B,IAAkB0B,EAAS,EAAI,GACpCG,EAAK7B,IAAkB0B,EAAS,EAAI,GACpCmB,EAAKZ,EAAoBL,EAAIC,GAAI/B,QAErC,OADAnE,EAAKoG,gBAAgBH,EAAS,EAALC,GAClBgB,UAEPlH,EAAKgG,gCAAgC,KExC1B2b,CAAgD9Z,KAACf,oBAAqB,IAAIxF,WAAW2F,EAAMgQ,OAC3GpP,KAAC8X,KAAK0B,SACuBxZ,gBAA7B6Y,aAAa7Y,KAACsY,WACdtY,KAACsY,UAAYsB,WAAW5Z,KAAC+X,IAAK,KAC9B,MAEFF,OACC,GAAmC7X,KAACmY,cAApCnY,KAACmY,OAAOL,KAAK,IAAIre,YAElBqe,KAAO0B,GACN,GAAGA,EAAc5gB,OAAS,SACzBoH,KAACmY,OAAOL,KAAK0B,GAC2BxZ,KAAC2Y,qBAAzCC,cAAc5Y,KAAC2Y,qBACf3Y,KAAC2Y,oBAAsBoB,YAAY/Z,KAAC6X,KAAM,KAE5CE,UACDyB,EAAE,SAAGxZ,cACFwZ,EF8DI,SAAiCva,GACpC,IACI,MAAMf,EAAS/F,EAAKgG,iCAAiC,IACrDhG,EAAK6hB,wBAAwB9b,EAAQe,GACrC,IAAIb,EAAK5B,IAAkB0B,EAAS,EAAI,GACpCG,EAAK7B,IAAkB0B,EAAS,EAAI,GACpCS,EAAKF,EAAoBL,EAAIC,GAAI/B,QAErC,OADAnE,EAAKoG,gBAAgBH,EAAS,EAALC,GAClBM,UAEPxG,EAAKgG,gCAAgC,KExE1B8b,CAAmCja,KAACf,sBACbrG,OAAS,SAAhDoH,KAAC8X,KAAK0B,GAEI/T,uBACbgM,EAAAK,EAAA1S,EAAA8a,EAAAC,EF4B0Dlb,EAAqB0S,ME5B7EuI,GAAwB,EACxBpI,EAAyB,KACzBL,EAAyB,IAAI3J,SAAQ,SAACK,UAAY2J,EAAyB3J,KAEoG+R,IAA9KA,GFwBuDjb,EExBsBe,KAACf,oBFwBF0S,EExBuBF,EF0B3F5Y,EADGV,EAAKiiB,0CAA0Cnb,EAAqBnF,EAAc6X,MEzB8BtJ,MAAK,SAACjJ,SAAQ,CAAC,mBAAoBA,QAC7J+a,EAAS/a,SAAe0I,QAAQuS,IAAI,CAACra,KAAC8M,gBAAiBoN,IAC1C,qBAAXC,GACFD,GAAwB,EACxBN,YAAaxa,QACjBoa,EAAK,GAAGxZ,KAACkY,iBACHsB,EAAgBc,EAAyDta,KAACf,oBAAqBG,GAC/FY,KAAC8X,KAAK0B,KACL,EAAGpa,GAGR,GAAG8a,SACFpI,GAAuB,SACjBoI,EAERK,eAAiBC,UAChBxa,KAACqZ,oBAAsBmB,QACIxa,0BAA3BA,KAACqZ,sBACDrZ,OCzeKya,GAAahV,qBACpBlL,EAAAmgB,EAAAnN,EAAAoN,EAAAC,EAGC,IAFAA,EAAcC,6v0iBACdF,EAAa,IAAIlhB,WAAWmhB,EAAYhiB,QAC/B2B,+CACRogB,EAAWpgB,GAAKqgB,EAAYve,WAAW9B,gBAClCiU,GAAgBmM"}
|
|
1
|
+
{"version":3,"file":"hakuban-with-wasm.min.js","sources":["pkg/hakuban.js","coffee/manager.coffee","coffee/common.coffee","coffee/hakuban-with-wasm.coffee"],"sourcesContent":["\nlet wasm;\n\nconst heap = new Array(32).fill(undefined);\n\nheap.push(undefined, null, true, false);\n\nfunction getObject(idx) { return heap[idx]; }\n\nlet heap_next = heap.length;\n\nfunction dropObject(idx) {\n if (idx < 36) return;\n heap[idx] = heap_next;\n heap_next = idx;\n}\n\nfunction takeObject(idx) {\n const ret = getObject(idx);\n dropObject(idx);\n return ret;\n}\n\nlet cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n\ncachedTextDecoder.decode();\n\nlet cachegetUint8Memory0 = null;\nfunction getUint8Memory0() {\n if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) {\n cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachegetUint8Memory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));\n}\n\nfunction addHeapObject(obj) {\n if (heap_next === heap.length) heap.push(heap.length + 1);\n const idx = heap_next;\n heap_next = heap[idx];\n\n heap[idx] = obj;\n return idx;\n}\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == 'number' || type == 'boolean' || val == null) {\n return `${val}`;\n }\n if (type == 'string') {\n return `\"${val}\"`;\n }\n if (type == 'symbol') {\n const description = val.description;\n if (description == null) {\n return 'Symbol';\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == 'function') {\n const name = val.name;\n if (typeof name == 'string' && name.length > 0) {\n return `Function(${name})`;\n } else {\n return 'Function';\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = '[';\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for(let i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n debug += ']';\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nlet cachedTextEncoder = new TextEncoder('utf-8');\n\nconst encodeString = (typeof cachedTextEncoder.encodeInto === 'function'\n ? function (arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n}\n : function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n});\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length);\n getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len);\n\n const mem = getUint8Memory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3);\n const view = getUint8Memory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n\n offset += ret.written;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nlet cachegetInt32Memory0 = null;\nfunction getInt32Memory0() {\n if (cachegetInt32Memory0 === null || cachegetInt32Memory0.buffer !== wasm.memory.buffer) {\n cachegetInt32Memory0 = new Int32Array(wasm.memory.buffer);\n }\n return cachegetInt32Memory0;\n}\n\nfunction makeMutClosure(arg0, arg1, dtor, f) {\n const state = { a: arg0, b: arg1, cnt: 1, dtor };\n const real = (...args) => {\n // First up with a closure we increment the internal reference\n // count. This ensures that the Rust closure environment won't\n // be deallocated while we're invoking it.\n state.cnt++;\n const a = state.a;\n state.a = 0;\n try {\n return f(a, state.b, ...args);\n } finally {\n if (--state.cnt === 0) {\n wasm.__wbindgen_export_2.get(state.dtor)(a, state.b);\n\n } else {\n state.a = a;\n }\n }\n };\n real.original = state;\n\n return real;\n}\nfunction __wbg_adapter_16(arg0, arg1, arg2) {\n wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h2cb5c9e37b253332(arg0, arg1, addHeapObject(arg2));\n}\n\nconst u32CvtShim = new Uint32Array(2);\n\nconst uint64CvtShim = new BigUint64Array(u32CvtShim.buffer);\n/**\n* @param {string} json_string\n* @returns {WasmHashResult}\n*/\nexport function hakuban_json_hash(json_string) {\n var ptr0 = passStringToWasm0(json_string, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ret = wasm.hakuban_json_hash(ptr0, len0);\n return WasmHashResult.__wrap(ret);\n}\n\n/**\n* @param {string} default_log_level\n* @returns {number}\n*/\nexport function hakuban_logger_initialize(default_log_level) {\n var ptr0 = passStringToWasm0(default_log_level, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ret = wasm.hakuban_logger_initialize(ptr0, len0);\n return ret;\n}\n\n/**\n* @param {string} name_str\n* @returns {WasmLocalNodeNewResult}\n*/\nexport function hakuban_local_node_new(name_str) {\n var ptr0 = passStringToWasm0(name_str, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ret = wasm.hakuban_local_node_new(ptr0, len0);\n return WasmLocalNodeNewResult.__wrap(ret);\n}\n\n/**\n* @param {number} local_node\n*/\nexport function hakuban_local_node_drop(local_node) {\n wasm.hakuban_local_node_drop(local_node);\n}\n\n/**\n* @param {number} local_node\n* @param {string} descriptor\n* @returns {WasmObjectObserveResult}\n*/\nexport function hakuban_object_observe_new(local_node, descriptor) {\n var ptr0 = passStringToWasm0(descriptor, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ret = wasm.hakuban_object_observe_new(local_node, ptr0, len0);\n return WasmObjectObserveResult.__wrap(ret);\n}\n\n/**\n* @param {number} object_ptr\n*/\nexport function hakuban_object_observe_drop(object_ptr) {\n wasm.hakuban_object_observe_drop(object_ptr);\n}\n\n/**\n* @param {number} object_observe_pointer\n* @returns {number}\n*/\nexport function hakuban_object_observe_state_borrow(object_observe_pointer) {\n var ret = wasm.hakuban_object_observe_state_borrow(object_observe_pointer);\n return ret;\n}\n\n/**\n* @param {number} state_ptr\n*/\nexport function hakuban_object_observe_state_return(state_ptr) {\n wasm.hakuban_object_observe_state_return(state_ptr);\n}\n\n/**\n* @param {number} state_ptr\n* @returns {BigInt}\n*/\nexport function hakuban_object_observe_state_synchronized(state_ptr) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.hakuban_object_observe_state_synchronized(retptr, state_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n u32CvtShim[0] = r0;\n u32CvtShim[1] = r1;\n const n0 = uint64CvtShim[0];\n return n0;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\n/**\n* @param {number} state_ptr\n* @returns {string}\n*/\nexport function hakuban_object_observe_state_data_version(state_ptr) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.hakuban_object_observe_state_data_version(retptr, state_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_free(r0, r1);\n }\n}\n\n/**\n* @param {number} state_ptr\n* @returns {string}\n*/\nexport function hakuban_object_observe_state_data_type(state_ptr) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.hakuban_object_observe_state_data_type(retptr, state_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_free(r0, r1);\n }\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len);\n}\n/**\n* @param {number} state_ptr\n* @returns {Uint8Array}\n*/\nexport function hakuban_object_observe_state_data(state_ptr) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.hakuban_object_observe_state_data(retptr, state_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v0 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v0;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\n/**\n* @param {number} object_observe_ptr\n* @returns {number}\n*/\nexport function hakuban_object_observe_events_get(object_observe_ptr) {\n var ret = wasm.hakuban_object_observe_events_get(object_observe_ptr);\n return ret;\n}\n\n/**\n* @param {number} events_pointer\n*/\nexport function hakuban_object_descriptor_events_drop(events_pointer) {\n wasm.hakuban_object_descriptor_events_drop(events_pointer);\n}\n\n/**\n* @param {number} events_pointer\n* @param {Promise<any>} cancel\n* @returns {Promise<any>}\n*/\nexport function hakuban_object_descriptor_events_next(events_pointer, cancel) {\n var ret = wasm.hakuban_object_descriptor_events_next(events_pointer, addHeapObject(cancel));\n return takeObject(ret);\n}\n\n/**\n* @param {number} local_node\n* @param {string} descriptor\n* @returns {WasmTagObserveResult}\n*/\nexport function hakuban_tag_observe_new(local_node, descriptor) {\n var ptr0 = passStringToWasm0(descriptor, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ret = wasm.hakuban_tag_observe_new(local_node, ptr0, len0);\n return WasmTagObserveResult.__wrap(ret);\n}\n\n/**\n* @param {number} tag_observe_pointer\n*/\nexport function hakuban_tag_observe_drop(tag_observe_pointer) {\n wasm.hakuban_tag_observe_drop(tag_observe_pointer);\n}\n\n/**\n* @param {number} tag_observe_pointer\n* @param {string} object_descriptor\n* @returns {WasmTagObserveObjectStateBorrowResult}\n*/\nexport function hakuban_tag_observe_object_state_borrow(tag_observe_pointer, object_descriptor) {\n var ptr0 = passStringToWasm0(object_descriptor, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ret = wasm.hakuban_tag_observe_object_state_borrow(tag_observe_pointer, ptr0, len0);\n return WasmTagObserveObjectStateBorrowResult.__wrap(ret);\n}\n\n/**\n* @param {number} tag_observe_pointer\n* @returns {string}\n*/\nexport function hakuban_tag_observe_object_descriptors(tag_observe_pointer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.hakuban_tag_observe_object_descriptors(retptr, tag_observe_pointer);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_free(r0, r1);\n }\n}\n\n/**\n* @param {number} tag_observe_ptr\n* @returns {number}\n*/\nexport function hakuban_tag_observe_events_get(tag_observe_ptr) {\n var ret = wasm.hakuban_tag_observe_events_get(tag_observe_ptr);\n return ret;\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n/**\n* @param {number} local_node_pointer\n* @param {boolean} upstream\n* @param {boolean | undefined} diff_produce\n* @param {boolean | undefined} diff_request\n* @returns {WasmRemoteNodeNewResult}\n*/\nexport function hakuban_remote_node_new(local_node_pointer, upstream, diff_produce, diff_request) {\n var ret = wasm.hakuban_remote_node_new(local_node_pointer, upstream, isLikeNone(diff_produce) ? 0xFFFFFF : diff_produce ? 1 : 0, isLikeNone(diff_request) ? 0xFFFFFF : diff_request ? 1 : 0);\n return WasmRemoteNodeNewResult.__wrap(ret);\n}\n\n/**\n* @param {number} remote_node_pointer\n*/\nexport function hakuban_remote_node_drop(remote_node_pointer) {\n wasm.hakuban_remote_node_drop(remote_node_pointer);\n}\n\n/**\n* @param {number} remote_node_pointer\n* @returns {Uint8Array}\n*/\nexport function hakuban_remote_node_connected(remote_node_pointer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.hakuban_remote_node_connected(retptr, remote_node_pointer);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v0 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v0;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\n/**\n* @param {number} remote_node_pointer\n*/\nexport function hakuban_remote_node_disconnected(remote_node_pointer) {\n wasm.hakuban_remote_node_disconnected(remote_node_pointer);\n}\n\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1);\n getUint8Memory0().set(arg, ptr / 1);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n/**\n* @param {number} remote_node_pointer\n* @param {Uint8Array} data\n* @returns {Uint8Array}\n*/\nexport function hakuban_remote_node_received_message(remote_node_pointer, data) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n var ptr0 = passArray8ToWasm0(data, wasm.__wbindgen_malloc);\n var len0 = WASM_VECTOR_LEN;\n wasm.hakuban_remote_node_received_message(retptr, remote_node_pointer, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\n/**\n* @param {number} remote_node_pointer\n* @param {Promise<any>} cancel\n* @returns {Promise<any>}\n*/\nexport function hakuban_remote_node_next_local_node_event(remote_node_pointer, cancel) {\n var ret = wasm.hakuban_remote_node_next_local_node_event(remote_node_pointer, addHeapObject(cancel));\n return takeObject(ret);\n}\n\n/**\n* @param {number} remote_node_pointer\n* @param {string} event\n* @returns {Uint8Array}\n*/\nexport function hakuban_remote_node_received_local_node_event(remote_node_pointer, event) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n var ptr0 = passStringToWasm0(event, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n wasm.hakuban_remote_node_received_local_node_event(retptr, remote_node_pointer, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\n/**\n* @param {number} remote_node_pointer\n* @returns {Uint8Array}\n*/\nexport function hakuban_remote_node_ack(remote_node_pointer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.hakuban_remote_node_ack(retptr, remote_node_pointer);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v0 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v0;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\n/**\n* @param {number} local_node\n* @param {string} descriptor\n* @returns {WasmTagExposeResult}\n*/\nexport function hakuban_tag_expose_new(local_node, descriptor) {\n var ptr0 = passStringToWasm0(descriptor, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ret = wasm.hakuban_tag_expose_new(local_node, ptr0, len0);\n return WasmTagExposeResult.__wrap(ret);\n}\n\n/**\n* @param {number} tag_expose_pointer\n*/\nexport function hakuban_tag_expose_drop(tag_expose_pointer) {\n wasm.hakuban_tag_expose_drop(tag_expose_pointer);\n}\n\n/**\n* @param {number} tag_expose_pointer\n* @returns {string}\n*/\nexport function hakuban_tag_expose_object_descriptors(tag_expose_pointer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.hakuban_tag_expose_object_descriptors(retptr, tag_expose_pointer);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_free(r0, r1);\n }\n}\n\n/**\n* @param {number} tag_expose_pointer\n* @param {string} object_descriptor\n* @param {string} data_version\n* @param {string} data_type\n* @param {Uint8Array} data\n* @param {BigInt} assignment_id\n* @returns {WasmTagExposeSetObjectStateResult}\n*/\nexport function hakuban_tag_expose_set_object_state(tag_expose_pointer, object_descriptor, data_version, data_type, data, assignment_id) {\n var ptr0 = passStringToWasm0(object_descriptor, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = passStringToWasm0(data_version, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n var ptr2 = passStringToWasm0(data_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n var ptr3 = passArray8ToWasm0(data, wasm.__wbindgen_malloc);\n var len3 = WASM_VECTOR_LEN;\n uint64CvtShim[0] = assignment_id;\n const low4 = u32CvtShim[0];\n const high4 = u32CvtShim[1];\n var ret = wasm.hakuban_tag_expose_set_object_state(tag_expose_pointer, ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, low4, high4);\n return WasmTagExposeSetObjectStateResult.__wrap(ret);\n}\n\n/**\n* @param {number} tag_expose_pointer\n* @param {string} object_descriptor\n* @returns {WasmTagExposeAssignmentResult}\n*/\nexport function hakuban_tag_expose_assignment(tag_expose_pointer, object_descriptor) {\n var ptr0 = passStringToWasm0(object_descriptor, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ret = wasm.hakuban_tag_expose_assignment(tag_expose_pointer, ptr0, len0);\n return WasmTagExposeAssignmentResult.__wrap(ret);\n}\n\n/**\n* @param {number} tag_expose_pointer\n* @param {string} object_descriptor\n* @param {BigInt} assignment_id\n* @returns {number}\n*/\nexport function hakuban_tag_expose_desynchronize(tag_expose_pointer, object_descriptor, assignment_id) {\n var ptr0 = passStringToWasm0(object_descriptor, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n uint64CvtShim[0] = assignment_id;\n const low1 = u32CvtShim[0];\n const high1 = u32CvtShim[1];\n var ret = wasm.hakuban_tag_expose_desynchronize(tag_expose_pointer, ptr0, len0, low1, high1);\n return ret >>> 0;\n}\n\n/**\n* @param {number} tag_expose_ptr\n* @returns {number}\n*/\nexport function hakuban_tag_expose_events_get(tag_expose_ptr) {\n var ret = wasm.hakuban_tag_expose_events_get(tag_expose_ptr);\n return ret;\n}\n\n/**\n* @param {number} local_node\n* @param {string} descriptor\n* @returns {WasmObjectExposeResult}\n*/\nexport function hakuban_object_expose_new(local_node, descriptor) {\n var ptr0 = passStringToWasm0(descriptor, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ret = wasm.hakuban_object_expose_new(local_node, ptr0, len0);\n return WasmObjectExposeResult.__wrap(ret);\n}\n\n/**\n* @param {number} object_expose_pointer\n*/\nexport function hakuban_object_expose_drop(object_expose_pointer) {\n wasm.hakuban_object_expose_drop(object_expose_pointer);\n}\n\n/**\n* @param {number} object_expose_pointer\n* @param {string} data_version\n* @param {string} data_type\n* @param {Uint8Array} data\n* @param {BigInt} assignment_id\n* @returns {WasmObjectExposeStateResult}\n*/\nexport function hakuban_object_expose_set_state(object_expose_pointer, data_version, data_type, data, assignment_id) {\n var ptr0 = passStringToWasm0(data_version, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = passStringToWasm0(data_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n var ptr2 = passArray8ToWasm0(data, wasm.__wbindgen_malloc);\n var len2 = WASM_VECTOR_LEN;\n uint64CvtShim[0] = assignment_id;\n const low3 = u32CvtShim[0];\n const high3 = u32CvtShim[1];\n var ret = wasm.hakuban_object_expose_set_state(object_expose_pointer, ptr0, len0, ptr1, len1, ptr2, len2, low3, high3);\n return WasmObjectExposeStateResult.__wrap(ret);\n}\n\n/**\n* @param {number} object_expose_pointer\n* @returns {BigInt}\n*/\nexport function hakuban_object_expose_assignment(object_expose_pointer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.hakuban_object_expose_assignment(retptr, object_expose_pointer);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n u32CvtShim[0] = r0;\n u32CvtShim[1] = r1;\n const n0 = uint64CvtShim[0];\n return n0;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\n/**\n* @param {number} object_expose_pointer\n* @param {BigInt} assignment_id\n*/\nexport function hakuban_object_expose_desynchronize(object_expose_pointer, assignment_id) {\n uint64CvtShim[0] = assignment_id;\n const low0 = u32CvtShim[0];\n const high0 = u32CvtShim[1];\n wasm.hakuban_object_expose_desynchronize(object_expose_pointer, low0, high0);\n}\n\n/**\n* @param {number} object_expose_ptr\n* @returns {number}\n*/\nexport function hakuban_object_expose_events_get(object_expose_ptr) {\n var ret = wasm.hakuban_object_expose_events_get(object_expose_ptr);\n return ret;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n wasm.__wbindgen_exn_store(addHeapObject(e));\n }\n}\nfunction __wbg_adapter_120(arg0, arg1, arg2, arg3) {\n wasm.wasm_bindgen__convert__closures__invoke2_mut__h3fbc4a767cc461bf(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));\n}\n\n/**\n*/\nexport const WasmError = Object.freeze({ None:0,\"0\":\"None\",InvalidString:1,\"1\":\"InvalidString\",InvalidJSON:2,\"2\":\"InvalidJSON\",InvalidURL:3,\"3\":\"InvalidURL\",ObjectNotFound:4,\"4\":\"ObjectNotFound\", });\n/**\n*/\nexport class WasmHashResult {\n\n static __wrap(ptr) {\n const obj = Object.create(WasmHashResult.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmhashresult_free(ptr);\n }\n /**\n */\n get error() {\n var ret = wasm.__wbg_get_wasmhashresult_error(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set error(arg0) {\n wasm.__wbg_set_wasmhashresult_error(this.ptr, arg0);\n }\n /**\n */\n get hash() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.__wbg_get_wasmhashresult_hash(retptr, this.ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n u32CvtShim[0] = r0;\n u32CvtShim[1] = r1;\n const n0 = uint64CvtShim[0];\n return n0;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {BigInt} arg0\n */\n set hash(arg0) {\n uint64CvtShim[0] = arg0;\n const low0 = u32CvtShim[0];\n const high0 = u32CvtShim[1];\n wasm.__wbg_set_wasmhashresult_hash(this.ptr, low0, high0);\n }\n}\n/**\n*/\nexport class WasmLocalNodeNewResult {\n\n static __wrap(ptr) {\n const obj = Object.create(WasmLocalNodeNewResult.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmlocalnodenewresult_free(ptr);\n }\n /**\n */\n get error() {\n var ret = wasm.__wbg_get_wasmlocalnodenewresult_error(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set error(arg0) {\n wasm.__wbg_set_wasmlocalnodenewresult_error(this.ptr, arg0);\n }\n /**\n */\n get local_node_pointer() {\n var ret = wasm.__wbg_get_wasmlocalnodenewresult_local_node_pointer(this.ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set local_node_pointer(arg0) {\n wasm.__wbg_set_wasmlocalnodenewresult_local_node_pointer(this.ptr, arg0);\n }\n}\n/**\n*/\nexport class WasmObjectExposeResult {\n\n static __wrap(ptr) {\n const obj = Object.create(WasmObjectExposeResult.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmobjectexposeresult_free(ptr);\n }\n /**\n */\n get error() {\n var ret = wasm.__wbg_get_wasmobjectexposeresult_error(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set error(arg0) {\n wasm.__wbg_set_wasmobjectexposeresult_error(this.ptr, arg0);\n }\n /**\n */\n get object_expose_pointer() {\n var ret = wasm.__wbg_get_wasmobjectexposeresult_object_expose_pointer(this.ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set object_expose_pointer(arg0) {\n wasm.__wbg_set_wasmobjectexposeresult_object_expose_pointer(this.ptr, arg0);\n }\n}\n/**\n*/\nexport class WasmObjectExposeStateResult {\n\n static __wrap(ptr) {\n const obj = Object.create(WasmObjectExposeStateResult.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmobjectexposestateresult_free(ptr);\n }\n /**\n */\n get error() {\n var ret = wasm.__wbg_get_wasmobjectexposestateresult_error(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set error(arg0) {\n wasm.__wbg_set_wasmobjectexposestateresult_error(this.ptr, arg0);\n }\n /**\n */\n get changed() {\n var ret = wasm.__wbg_get_wasmobjectexposestateresult_changed(this.ptr);\n return ret !== 0;\n }\n /**\n * @param {boolean} arg0\n */\n set changed(arg0) {\n wasm.__wbg_set_wasmobjectexposestateresult_changed(this.ptr, arg0);\n }\n}\n/**\n*/\nexport class WasmObjectObserveResult {\n\n static __wrap(ptr) {\n const obj = Object.create(WasmObjectObserveResult.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmobjectobserveresult_free(ptr);\n }\n /**\n */\n get error() {\n var ret = wasm.__wbg_get_wasmobjectobserveresult_error(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set error(arg0) {\n wasm.__wbg_set_wasmobjectobserveresult_error(this.ptr, arg0);\n }\n /**\n */\n get object_observe_pointer() {\n var ret = wasm.__wbg_get_wasmobjectobserveresult_object_observe_pointer(this.ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set object_observe_pointer(arg0) {\n wasm.__wbg_set_wasmobjectobserveresult_object_observe_pointer(this.ptr, arg0);\n }\n}\n/**\n*/\nexport class WasmRemoteNode {\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmremotenode_free(ptr);\n }\n}\n/**\n*/\nexport class WasmRemoteNodeNewResult {\n\n static __wrap(ptr) {\n const obj = Object.create(WasmRemoteNodeNewResult.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmremotenodenewresult_free(ptr);\n }\n /**\n */\n get error() {\n var ret = wasm.__wbg_get_wasmremotenodenewresult_error(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set error(arg0) {\n wasm.__wbg_set_wasmremotenodenewresult_error(this.ptr, arg0);\n }\n /**\n */\n get remote_node_pointer() {\n var ret = wasm.__wbg_get_wasmremotenodenewresult_remote_node_pointer(this.ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set remote_node_pointer(arg0) {\n wasm.__wbg_set_wasmremotenodenewresult_remote_node_pointer(this.ptr, arg0);\n }\n}\n/**\n*/\nexport class WasmTagExposeAssignmentResult {\n\n static __wrap(ptr) {\n const obj = Object.create(WasmTagExposeAssignmentResult.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmtagexposeassignmentresult_free(ptr);\n }\n /**\n */\n get error() {\n var ret = wasm.__wbg_get_wasmtagexposeassignmentresult_error(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set error(arg0) {\n wasm.__wbg_set_wasmtagexposeassignmentresult_error(this.ptr, arg0);\n }\n /**\n */\n get assignment() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.__wbg_get_wasmtagexposeassignmentresult_assignment(retptr, this.ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n u32CvtShim[0] = r0;\n u32CvtShim[1] = r1;\n const n0 = uint64CvtShim[0];\n return n0;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {BigInt} arg0\n */\n set assignment(arg0) {\n uint64CvtShim[0] = arg0;\n const low0 = u32CvtShim[0];\n const high0 = u32CvtShim[1];\n wasm.__wbg_set_wasmtagexposeassignmentresult_assignment(this.ptr, low0, high0);\n }\n}\n/**\n*/\nexport class WasmTagExposeResult {\n\n static __wrap(ptr) {\n const obj = Object.create(WasmTagExposeResult.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmtagexposeresult_free(ptr);\n }\n /**\n */\n get error() {\n var ret = wasm.__wbg_get_wasmtagexposeresult_error(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set error(arg0) {\n wasm.__wbg_set_wasmtagexposeresult_error(this.ptr, arg0);\n }\n /**\n */\n get tag_expose_pointer() {\n var ret = wasm.__wbg_get_wasmtagexposeresult_tag_expose_pointer(this.ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set tag_expose_pointer(arg0) {\n wasm.__wbg_set_wasmtagexposeresult_tag_expose_pointer(this.ptr, arg0);\n }\n}\n/**\n*/\nexport class WasmTagExposeSetObjectStateResult {\n\n static __wrap(ptr) {\n const obj = Object.create(WasmTagExposeSetObjectStateResult.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmtagexposesetobjectstateresult_free(ptr);\n }\n /**\n */\n get error() {\n var ret = wasm.__wbg_get_wasmtagexposesetobjectstateresult_error(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set error(arg0) {\n wasm.__wbg_set_wasmtagexposesetobjectstateresult_error(this.ptr, arg0);\n }\n /**\n */\n get changed() {\n var ret = wasm.__wbg_get_wasmtagexposesetobjectstateresult_changed(this.ptr);\n return ret !== 0;\n }\n /**\n * @param {boolean} arg0\n */\n set changed(arg0) {\n wasm.__wbg_set_wasmtagexposesetobjectstateresult_changed(this.ptr, arg0);\n }\n}\n/**\n*/\nexport class WasmTagObserveObjectStateBorrowResult {\n\n static __wrap(ptr) {\n const obj = Object.create(WasmTagObserveObjectStateBorrowResult.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmtagobserveobjectstateborrowresult_free(ptr);\n }\n /**\n */\n get error() {\n var ret = wasm.__wbg_get_wasmtagobserveobjectstateborrowresult_error(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set error(arg0) {\n wasm.__wbg_set_wasmtagobserveobjectstateborrowresult_error(this.ptr, arg0);\n }\n /**\n */\n get state_pointer() {\n var ret = wasm.__wbg_get_wasmtagobserveobjectstateborrowresult_state_pointer(this.ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set state_pointer(arg0) {\n wasm.__wbg_set_wasmtagobserveobjectstateborrowresult_state_pointer(this.ptr, arg0);\n }\n}\n/**\n*/\nexport class WasmTagObserveResult {\n\n static __wrap(ptr) {\n const obj = Object.create(WasmTagObserveResult.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmtagobserveresult_free(ptr);\n }\n /**\n */\n get error() {\n var ret = wasm.__wbg_get_wasmtagobserveresult_error(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set error(arg0) {\n wasm.__wbg_set_wasmtagobserveresult_error(this.ptr, arg0);\n }\n /**\n */\n get tag_observe_pointer() {\n var ret = wasm.__wbg_get_wasmtagobserveresult_tag_observe_pointer(this.ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set tag_observe_pointer(arg0) {\n wasm.__wbg_set_wasmtagobserveresult_tag_observe_pointer(this.ptr, arg0);\n }\n}\n\nasync function load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n\n } catch (e) {\n if (module.headers.get('Content-Type') != 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n\n } else {\n return instance;\n }\n }\n}\n\nasync function init(input) {\n if (typeof input === 'undefined') {\n input = new URL('hakuban_bg.wasm', import.meta.url);\n }\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbindgen_object_drop_ref = function(arg0) {\n takeObject(arg0);\n };\n imports.wbg.__wbindgen_string_new = function(arg0, arg1) {\n var ret = getStringFromWasm0(arg0, arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_cb_drop = function(arg0) {\n const obj = takeObject(arg0).original;\n if (obj.cnt-- == 1) {\n obj.a = 0;\n return true;\n }\n var ret = false;\n return ret;\n };\n imports.wbg.__wbg_debug_6e114a5b27d7915d = function(arg0) {\n console.debug(getObject(arg0));\n };\n imports.wbg.__wbg_error_ca520cb687b085a1 = function(arg0) {\n console.error(getObject(arg0));\n };\n imports.wbg.__wbg_info_32ab782ec7072fac = function(arg0) {\n console.info(getObject(arg0));\n };\n imports.wbg.__wbg_log_fbd13631356d44e4 = function(arg0) {\n console.log(getObject(arg0));\n };\n imports.wbg.__wbg_warn_97f10a6b0dbb8c5c = function(arg0) {\n console.warn(getObject(arg0));\n };\n imports.wbg.__wbg_now_5fa0ca001e042f8a = function(arg0) {\n var ret = getObject(arg0).now();\n return ret;\n };\n imports.wbg.__wbg_newnoargs_f579424187aa1717 = function(arg0, arg1) {\n var ret = new Function(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_get_8bbb82393651dd9c = function() { return handleError(function (arg0, arg1) {\n var ret = Reflect.get(getObject(arg0), getObject(arg1));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_call_89558c3e96703ca1 = function() { return handleError(function (arg0, arg1) {\n var ret = getObject(arg0).call(getObject(arg1));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_call_94697a95cb7e239c = function() { return handleError(function (arg0, arg1, arg2) {\n var ret = getObject(arg0).call(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_new_4beacc9c71572250 = function(arg0, arg1) {\n try {\n var state0 = {a: arg0, b: arg1};\n var cb0 = (arg0, arg1) => {\n const a = state0.a;\n state0.a = 0;\n try {\n return __wbg_adapter_120(a, state0.b, arg0, arg1);\n } finally {\n state0.a = a;\n }\n };\n var ret = new Promise(cb0);\n return addHeapObject(ret);\n } finally {\n state0.a = state0.b = 0;\n }\n };\n imports.wbg.__wbg_resolve_4f8f547f26b30b27 = function(arg0) {\n var ret = Promise.resolve(getObject(arg0));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_then_a6860c82b90816ca = function(arg0, arg1) {\n var ret = getObject(arg0).then(getObject(arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_then_58a04e42527f52c6 = function(arg0, arg1, arg2) {\n var ret = getObject(arg0).then(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_self_e23d74ae45fb17d1 = function() { return handleError(function () {\n var ret = self.self;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_window_b4be7f48b24ac56e = function() { return handleError(function () {\n var ret = window.window;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_globalThis_d61b1f48a57191ae = function() { return handleError(function () {\n var ret = globalThis.globalThis;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_global_e7669da72fd7f239 = function() { return handleError(function () {\n var ret = global.global;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbindgen_is_undefined = function(arg0) {\n var ret = getObject(arg0) === undefined;\n return ret;\n };\n imports.wbg.__wbindgen_object_clone_ref = function(arg0) {\n var ret = getObject(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_693216e109162396 = function() {\n var ret = new Error();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_stack_0ddaca5d1abfb52f = function(arg0, arg1) {\n var ret = getObject(arg1).stack;\n var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n imports.wbg.__wbg_error_09919627ac0992f5 = function(arg0, arg1) {\n try {\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(arg0, arg1);\n }\n };\n imports.wbg.__wbindgen_debug_string = function(arg0, arg1) {\n var ret = debugString(getObject(arg1));\n var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n imports.wbg.__wbindgen_throw = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n imports.wbg.__wbindgen_closure_wrapper2024 = function(arg0, arg1, arg2) {\n var ret = makeMutClosure(arg0, arg1, 490, __wbg_adapter_16);\n return addHeapObject(ret);\n };\n\n if (typeof input === 'string' || (typeof Request === 'function' && input instanceof Request) || (typeof URL === 'function' && input instanceof URL)) {\n input = fetch(input);\n }\n\n\n\n const { instance, module } = await load(await input, imports);\n\n wasm = instance.exports;\n init.__wbindgen_wasm_module = module;\n\n return wasm;\n}\n\nexport default init;\n\n","\nclass Queue\n\n\tconstructor: ->\n\t\t@queue = []\n\t\t@wake = null\n\t\n\tpush: (value)->\n\t\t@queue.push(value)\n\t\tif @wake?\n\t\t\t@wake()\n\t\t\t@wake = null\n\t\n\tshift: ->\n\t\tloop\n\t\t\tvalue = @queue.shift()\n\t\t\tif value?\n\t\t\t\treturn value\n\t\t\telse\n\t\t\t\tthrow \"2 concurrent shifts on a single queue\" if @wake?\n\t\t\t\tawait new Promise (@wake)=> null\n\t\n\tclear: ->\n\t\t@queue = []\n\n\n\nexport class ObjectManager\n\tconstructor: (@contract, @object_class, @block)->\n\t\t@_objects = {}\n\t\t@running_handlers = {}\n\t\t@event_queue = new Queue()\n\n\t\t#TODO: make one loop out of following two\n\n\t\tevent_loop_stop_requested = new Promise (@event_loop_stop)=> null\n\t\t@event_loop_stopped = new Promise (resolve, reject)=>\n\t\t\tevents = @contract.events()\n\t\t\twhile event = await Promise.race([events.next(), event_loop_stop_requested])\n\t\t\t\tbreak if not event?\n\t\t\t\t@event_queue.push(event)\n\t\t\tevents.drop()\n\t\t\tresolve()\n\n\t\t@async_loop_stopped = new Promise (resolve, reject)=>\n\t\t\twhile (event = await @event_queue.shift())?\n\t\t\t\tswitch event.action\n\t\t\t\t\twhen \"Insert\" \n\t\t\t\t\t\tthrow \"Double insert\" if @_objects[event.descriptor.hash()]?\n\t\t\t\t\t\t@_objects[event.descriptor.hash()] = new @object_class(@contract, event.descriptor)\n\t\t\t\t\t\t@event_queue.push({action: \"HandlerStart\", descriptor: event.descriptor}) if @block?\n\t\t\t\t\twhen \"Change\"\n\t\t\t\t\t\tthrow \"Uh, oh, object missing :(\" if not @_objects[event.descriptor.hash()]?\n\t\t\t\t\t\t@_objects[event.descriptor.hash()].do_change(\"change\")\n\t\t\t\t\twhen \"Remove\"\n\t\t\t\t\t\tthrow \"Trying to remove non-existing object. Sad.\" if not @_objects[event.descriptor.hash()]?\n\t\t\t\t\t\t@_objects[event.descriptor.hash()].do_change(\"remove\")\n\t\t\t\t\t\tdelete @_objects[event.descriptor.hash()]\n\t\t\t\t\twhen \"HandlerStart\"\n\t\t\t\t\t\tif (object = @_objects[event.descriptor.hash()])? and !object.handler_already_run and !@running_handlers[event.descriptor.hash()]?\n\t\t\t\t\t\t\t#wrapped to avoid weird capture effects\n\t\t\t\t\t\t\t@running_handlers[event.descriptor.hash()] = ((descriptor, object, block, event_queue)->new Promise (handler_resolve, handler_reject)->\n\t\t\t\t\t\t\t\tawait object.run(block)\n\t\t\t\t\t\t\t\tevent_queue.push({action: \"HandlerFinished\", descriptor: descriptor})\n\t\t\t\t\t\t\t\thandler_resolve()\n\t\t\t\t\t\t\t\t)(event.descriptor, object, @block, @event_queue)\n\t\t\t\t\twhen \"HandlerFinished\"\n\t\t\t\t\t\tthrow \"Handler finished but it was not running. That sucks.\" if not @running_handlers[event.descriptor.hash()]?\n\t\t\t\t\t\tdelete @running_handlers[event.descriptor.hash()]\n\t\t\t\t\t\t@event_queue.push({action: \"HandlerStart\", descriptor: event.descriptor}) if @_objects[event.descriptor.hash()]?\n\t\t\t\t\twhen \"Drop\"\n\t\t\t\t\t\t@event_loop_stop()\n\t\t\t\t\t\tawait @event_loop_stopped\n\t\t\t\t\t\tobject.do_change(\"remove\") for _key, object of @_objects\n\t\t\t\t\t\twhile Object.keys(@running_handlers).length > 0\n\t\t\t\t\t\t\tevent = await @event_queue.shift()\n\t\t\t\t\t\t\tif event.action == \"HandlerFinished\"\n\t\t\t\t\t\t\t\tdelete @running_handlers[event.descriptor.hash()]\n\t\t\t\t\t\t@event_queue.clear()\n\t\t\t\t\t\tdelete @_objects[key] for key,_value of @_objects\n\t\t\t\t\t\t@contract.drop()\n\t\t\t\t\t\t@contract = null\n\t\t\t\t\t\t@event_queue = null\n\t\t\t\t\t\tresolve()\n\t\t\t\t\t\treturn \n\t\t\t\t\telse\n\t\t\t\t\t\tthrow \"Unknown action: \" + event.action\n\t\t\treject(\"Queue died unexpectedly\")\n\t\t\n\tobjects: ()=> Object.values(@_objects)\n\tobject: ()=> Object.values(@_objects)[0]\n\n\tdrop: ()=>\n\t\tif @contract\n\t\t\t@event_queue.push(action: 'Drop')\n\t\t\tawait @async_loop_stopped\n\n\n\n\nexport class ManagedObject\n\tconstructor: (@contract, @descriptor)->\n\t\t@_changes = new Queue()\n\t\t@handler_already_run = false\n\n\trun: (handler)=>\n\t\t@handler_already_run = true\n\t\tawait handler(@)\n\n\tnext_event: ()=> @next_change()\n\tnext_change: ()=>\n\t\tloop\n\t\t\tswitch await @_changes.shift()\n\t\t\t\twhen \"change\" then return true\n\t\t\t\twhen \"remove\" then return false\n\n\tdo_change: (change)=>\n\t\t@_changes.push(change)\n\n\n","import * as hakuban_js from \"../pkg/hakuban.js\"\nimport * as manager from \"./manager.coffee\"\n\nlogger_initialized = false\n\nexport initialize_wasm = (wasm)->\n\t\tawait hakuban_js.default(wasm)\n\nexport logger_initialize = (log_level, skip_if_already_initialized=false) ->\n\t\tif logger_initialized and skip_if_already_initialized\n\t\t\treturn true\n\n\t\tif 0 == (error = await hakuban_js.hakuban_logger_initialize(log_level))\n\t\t\tlogger_initialized = true\n\t\telse\n\t\t\tconsole.error \"Failed to initialize logger, error \" + error \n\t\t\tfalse\n\n\nraise_if_error = (error_code)->\n\tif error_code != 0\n\t\tthrow \"Hakuban error: \"+error_code\n\n\nexport JSON_serialize = (data_type, cooked)->\n\t{\n\t\tdata_type: [\"JSON\"].concat(data_type)\n\t\tdata: new TextEncoder().encode(JSON.stringify(cooked))\n\t}\n\nexport JSON_deserialize = (data_type, raw)-> \n\tthrow \"Expected JSON data_type, got: \"+data_type if data_type.length == 0 or data_type[0] != \"JSON\"\n\t{\n\t\tdata_type: data_type.slice(1)\n\t\tdata: JSON.parse(new TextDecoder().decode(raw))\n\t}\n\n\nexport class ObjectDescriptor\n\tconstructor: (tags, @json) -> @tags = ((if tag instanceof TagDescriptor then tag else new TagDescriptor(tag)) for tag in tags)\n\tas_json: ()->JSON.stringify(tags: @tags.map((tag)->tag.json), json: @json)\n\thash: ()-> \n\t\tif not @_hash?\n\t\t\t@_hash = @tags.map((tag)->tag.hash().toString()).sort().join(\",\") + \"|\"\n\t\t\tret = hakuban_js.hakuban_json_hash(JSON.stringify(@json))\n\t\t\traise_if_error(ret.error)\n\t\t\t@_hash += ret.hash.toString()\n\t\t@_hash\n\t\n\n\nexport class TagDescriptor\n\tconstructor: (@json) -> null\n\tas_json: ()->JSON.stringify(@json)\n\thash: ()-> \n\t\tif not @_hash?\n\t\t\tret = hakuban_js.hakuban_json_hash(JSON.stringify(@json))\n\t\t\traise_if_error(ret.error)\n\t\t\t@_hash = ret.hash\n\t\t@_hash\n\n\n\n\nLocalNode_finalization_registry = new FinalizationRegistry (pointer)=>\n\thakuban_js.hakuban_local_node_drop(pointer)\n\nexport class LocalNode\n\tconstructor: (@name=\"wasm\") ->\n\t\tlogger_initialize(\"warn\", true)\n\t\tresult = hakuban_js.hakuban_local_node_new(@name)\n\t\traise_if_error(result.error)\n\t\t@pointer = result.local_node_pointer\n\t\tLocalNode_finalization_registry.register(@, @pointer, @)\n\t\t@with_default_serializer(JSON_serialize)\n\t\t@with_default_deserializer(JSON_deserialize)\n\n\tdestroy: () ->\n\t\thakuban_js.hakuban_local_node_drop(@pointer)\n\t\tLocalNode_finalization_registry.unregister(@)\n\n\tobject: (tags, json) ->\n\t\tnew ObjectBuilder(@, @default_serializer, @default_deserializer, tags, json)\n\n\ttag: (json) ->\n\t\tnew TagBuilder(@, @default_serializer, @default_deserializer, json)\n\n\twith_default_serializer: (@default_serializer) -> @\n\twith_default_deserializer: (@default_deserializer) -> @\n\n\nclass ObjectBuilder\n\tconstructor: (@local_node, @serializer, @deserializer, @tags, @json) -> null\n\tobserve: () -> new ObjectObserve(@local_node, new ObjectDescriptor(@tags, @json), @deserializer)\n\texpose: () -> new ObjectExpose(@local_node, new ObjectDescriptor(@tags, @json), @serializer)\n\twith_serializer: (@serializer) -> @\n\twith_deserializer: (@deserializer) -> @\n\nclass TagBuilder\n\tconstructor: (@local_node, @serializer, @deserializer, @json) -> null\n\tobserve: () -> new TagObserve(@local_node, new TagDescriptor(@json), @deserializer)\n\texpose: () -> new TagExpose(@local_node, new TagDescriptor(@json), @serializer)\n\twith_serializer: (@serializer) -> @\n\twith_deserializer: (@deserializer) -> @\n\n\n\nObjectDescriptorEvents_finalization_registry = new FinalizationRegistry (pointer)=>\n\thakuban_js.hakuban_object_descriptor_events_drop(pointer)\n\nclass ObjectDescriptorEvents\n\n\tconstructor: (@pointer)->\n\t\tObjectDescriptorEvents_finalization_registry.register(@, @pointer, @)\n\n\twait: ()=>next()\n\tnext: ()=>\n\t\t@wait_released = new Promise (@wait_release)=>null\n\t\tcancel_waiting_promise = new Promise (resolve)=> @cancel_waiting_resolve = resolve\n\t\tnext_event_promise = hakuban_js.hakuban_object_descriptor_events_next(@pointer, cancel_waiting_promise)\n\t\tnext_event_promise.cancel = (value)=>\n\t\t\t@cancel_waiting_resolve.resolve(value)\n\t\t\tawait next_event_promise\n\t\tnext_event_promise.then (value)=>\n\t\t\t@wait_release()\n\t\t\t@wait_released = null\n\t\t\t@cancel_waiting_resolve = null\n\t\t\tparsed = JSON.parse(value)\n\t\t\t{ action: parsed.action, descriptor: new ObjectDescriptor(parsed.key.tags, parsed.key.json) }\n\n\tdrop: ()=>\n\t\tif @cancel_waiting_resolve?\n\t\t\t@cancel_waiting_resolve()\n\t\t\tawait @wait_released\n\t\tObjectDescriptorEvents_finalization_registry.unregister(@)\n\t\thakuban_js.hakuban_object_descriptor_events_drop(@pointer)\n\t\t@pointer = null\n\n\n\nObjectObserve_finalization_registry = new FinalizationRegistry (pointer)=>\n\thakuban_js.hakuban_object_observe_drop(pointer)\n\nclass ObjectObserve\n\n\tconstructor: (@local_node, @descriptor, @deserializer) ->\n\t\tresult = hakuban_js.hakuban_object_observe_new(@local_node.pointer, @descriptor.as_json())\n\t\traise_if_error(result.error)\n\t\t@pointer = result.object_observe_pointer\n\t\tObjectObserve_finalization_registry.register(@, @pointer, @)\n\t\t@dropped = false\n\t\n\tdrop: ()=>\n\t\t@dropped = true\n\t\thakuban_js.hakuban_object_observe_drop(@pointer)\n\t\tObjectObserve_finalization_registry.unregister(@)\n\t\t@pointer = null\n\n\tobject_state: ()=>\n\t\treturn null if not @pointer?\n\t\tstate_pointer = hakuban_js.hakuban_object_observe_state_borrow(@pointer)\n\t\treturn null if state_pointer == 0\n\t\tsynchronized = hakuban_js.hakuban_object_observe_state_synchronized(state_pointer)\n\t\tversion = JSON.parse(hakuban_js.hakuban_object_observe_state_data_version(state_pointer))\n\t\tdata_type = JSON.parse(hakuban_js.hakuban_object_observe_state_data_type(state_pointer))\n\t\traw = hakuban_js.hakuban_object_observe_state_data(state_pointer)\n\t\thakuban_js.hakuban_object_observe_state_return(state_pointer)\n\t\tdeserialized = @deserializer(data_type, raw)\n\t\t{\n\t\t\tversion: version\n\t\t\tdata: deserialized.data\n\t\t\tdata_type: deserialized.data_type\n\t\t\tsynchronized: synchronized\n\t\t}\n\n\tevents: ()=>\n\t\tnew ObjectDescriptorEvents(hakuban_js.hakuban_object_observe_events_get(@pointer))\n\n\tasync: (lambda)=>\t\n\t\tclass ObservedObject extends manager.ManagedObject\n\t\t\tstate: ()->\n\t\t\t\t@contract?.object_state()\n\t\t\tdata: ()->\n\t\t\t\t@contract?.object_state()?.data\n\n\t\tnew manager.ObjectManager(@, ObservedObject, lambda)\n\n\n\nObjectExpose_finalization_registry = new FinalizationRegistry (pointer)=>\n\thakuban_js.hakuban_object_expose_drop(pointer)\n\nclass ObjectExpose\n\tconstructor: (@local_node, @descriptor, @serializer)->\n\t\tresult = hakuban_js.hakuban_object_expose_new(@local_node.pointer, @descriptor.as_json())\n\t\traise_if_error(result.error)\n\t\t@pointer = result.object_expose_pointer\n\t\tObjectExpose_finalization_registry.register(@, @pointer, @)\n\t\t@dropped = false\n\n\tdrop: ()=>\n\t\t@dropped = true\n\t\thakuban_js.hakuban_object_expose_drop(@pointer)\n\t\tObjectExpose_finalization_registry.unregister(@)\n\n\tset_object_state: (version, cooked_data, data_type=[], assignment=0)=>\n\t\tserialized = @serializer(data_type, cooked_data)\n\t\tassignment = BigInt(assignment) if not (typeof assignment == 'bigint')\n\t\tresult = hakuban_js.hakuban_object_expose_set_state(@pointer, JSON.stringify(version), JSON.stringify(serialized.data_type), serialized.data, assignment)\n\t\traise_if_error(result.error)\n\t\tresult.changed\n\n\tassignment: ()=>\n\t\thakuban_js.hakuban_object_expose_assignment(@pointer)\n\n\tassigned: ()=>\n\t\t@assignment() > 0\n\n\tdesynchronize: (assignment)=>\n\t\tassignment = BigInt(assignment) if not (typeof assignment == 'bigint')\n\t\thakuban_js.hakuban_object_expose_desynchronize(@pointer, assignment)\n\n\tevents: ()=>\n\t\tnew ObjectDescriptorEvents(hakuban_js.hakuban_object_expose_events_get(@pointer))\n\n\tasync: (lambda)=>\t\n\t\tclass ExposedObject extends manager.ManagedObject\n\t\t\tconstructor: (contract, descriptor)->\n\t\t\t\tsuper(contract, descriptor)\n\t\t\t\t@_assignment = contract.assignment()\n\t\t\trun: (handler)=>\n\t\t\t\tawait super(handler)\n\t\t\t\t@contract?.desynchronize(@_assignment)\n\t\t\tdo_change: (change)=>\n\t\t\t\t@_assignment = @contract?.assignment()\n\t\t\t\tsuper(change)\n\t\t\tassignment: ()=>\n\t\t\t\t@contract?.assignment()\n\t\t\tassigned: ()=>\n\t\t\t\t@contract?.assigned()\n\t\t\tset_state: (version, cooked_data, data_type=[])=>\n\t\t\t\t@contract?.set_object_state(version, cooked_data, data_type, @_assignment)\n\t\t\tset_data: (data)=>\n\t\t\t\ttimestamp = new Date().getTime()\n\t\t\t\t@set_state([1, Math.floor(timestamp/1000), timestamp - Math.floor(timestamp/1000)*1000, 0], data)\n\n\t\tnew manager.ObjectManager(@, ExposedObject, lambda)\n\n\n\nTagObserve_finalization_registry = new FinalizationRegistry (pointer)=>\n\thakuban_js.hakuban_tag_observe_drop(pointer)\n\nclass TagObserve\n\tconstructor: (@local_node, @descriptor, @deserializer) ->\n\t\tresult = hakuban_js.hakuban_tag_observe_new(@local_node.pointer, @descriptor.as_json())\n\t\traise_if_error(result.error)\n\t\t@pointer = result.tag_observe_pointer\n\t\tTagObserve_finalization_registry.register(@, @pointer, @)\n\t\t@dropped = false\n\t\n\tdrop: ()=>\n\t\t@dropped = true\n\t\thakuban_js.hakuban_tag_observe_drop(@pointer)\n\t\tTagObserve_finalization_registry.unregister(@)\n\n\tobject_descriptors: ()=>\n\t\tresult = hakuban_js.hakuban_tag_observe_object_descriptors(@pointer)\n\t\tfor descriptor_as_json in JSON.parse(result)\n\t\t\tnew ObjectDescriptor(descriptor_as_json.tags, descriptor_as_json.json)\n\n\tobject_state: (object_descriptor)=>\n\t\tresult = hakuban_js.hakuban_tag_observe_object_state_borrow(@pointer, object_descriptor.as_json())\n\t\treturn null if result.error == 4\n\t\treturn null if result.state_pointer == 0\n\t\tsynchronized = hakuban_js.hakuban_object_observe_state_synchronized(result.state_pointer)\n\t\tversion = JSON.parse(hakuban_js.hakuban_object_observe_state_data_version(result.state_pointer))\n\t\tdata_type = JSON.parse(hakuban_js.hakuban_object_observe_state_data_type(result.state_pointer))\n\t\traw = hakuban_js.hakuban_object_observe_state_data(result.state_pointer)\n\t\thakuban_js.hakuban_object_observe_state_return(result.state_pointer)\n\t\tdeserialized = @deserializer(data_type, raw)\n\t\t{\n\t\t\tversion: version\n\t\t\tdata: deserialized.data\n\t\t\tdata_type: deserialized.data_type\n\t\t\tsynchronized: synchronized\n\t\t}\n\n\tevents: ()->\n\t\tnew ObjectDescriptorEvents(hakuban_js.hakuban_tag_observe_events_get(@pointer))\n\n\tasync: (lambda)=>\t\n\t\tclass ObservedObject extends manager.ManagedObject\n\t\t\tstate: ()->\n\t\t\t\t@contract?.object_state(@descriptor)\n\t\t\tdata: ()->\n\t\t\t\t@contract?.object_state(@descriptor)?.data\n\n\t\tnew manager.ObjectManager(@, ObservedObject, lambda)\n\n\t\n\nTagExpose_finalization_registry = new FinalizationRegistry (pointer)=>\n\thakuban_js.hakuban_tag_expose_drop(pointer)\n\nclass TagExpose\n\tconstructor: (@local_node, @descriptor, @serializer)->\n\t\tresult = hakuban_js.hakuban_tag_expose_new(@local_node.pointer, @descriptor.as_json())\n\t\traise_if_error(result.error)\n\t\t@pointer = result.tag_expose_pointer\n\t\tTagExpose_finalization_registry.register(@, @pointer, @)\n\t\t@dropped = false\n\t\n\tdrop: ()=>\n\t\t@dropped = true\n\t\thakuban_js.hakuban_tag_expose_drop(@pointer)\n\t\tTagExpose_finalization_registry.unregister(@)\n\n\tobject_descriptors: ()=>\n\t\tresult = hakuban_js.hakuban_tag_expose_object_descriptors(@pointer)\n\t\tfor descriptor_as_json in JSON.parse(result)\n\t\t\tnew ObjectDescriptor(descriptor_as_json.tags, descriptor_as_json.json)\n\n\tset_object_state: (object_descriptor, version, cooked_data, data_type=[], assignment=0)=>\n\t\tserialized = @serializer(data_type, cooked_data)\n\t\tassignment = BigInt(assignment) if not (typeof assignment == 'bigint')\n\t\tresult = hakuban_js.hakuban_tag_expose_set_object_state(@pointer, object_descriptor.as_json(), JSON.stringify(version), JSON.stringify(serialized.data_type), serialized.data, assignment)\n\t\traise_if_error(result.error)\n\t\tresult.changed\n\n\tassignment: (object_descriptor)=>\n\t\tresult = hakuban_js.hakuban_tag_expose_assignment(@pointer, object_descriptor.as_json())\n\t\traise_if_error(result.error)\n\t\tresult.assignment\n\n\tassigned: (object_descriptor)=>\n\t\t@assignment(object_descriptor) > 0\n\n\tdesynchronize: (object_descriptor, assignment)=>\n\t\tassignment = BigInt(assignment) if not (typeof assignment == 'bigint')\n\t\terror = hakuban_js.hakuban_tag_expose_desynchronize(@pointer, object_descriptor.as_json(), assignment)\n\t\traise_if_error(error)\n\n\tevents: ()=>\n\t\tnew ObjectDescriptorEvents(hakuban_js.hakuban_tag_expose_events_get(@pointer))\n\n\tasync: (lambda)=>\t\n\t\tclass ExposedObject extends manager.ManagedObject\n\t\t\tconstructor: (contract, descriptor)->\n\t\t\t\tsuper(contract, descriptor)\n\t\t\t\t@_assignment = contract.assignment(@descriptor)\n\t\t\trun: (handler)=>\n\t\t\t\tawait super(handler)\n\t\t\t\t@contract?.desynchronize(@descriptor, @_assignment)\n\t\t\tdo_change: (change)=>\n\t\t\t\t@_assignment = @contract?.assignment(@descriptor)\n\t\t\t\tsuper(change)\n\t\t\tassignment: ()=>\n\t\t\t\t@contract?.assignment(@descriptor)\n\t\t\tassigned: ()=>\n\t\t\t\t@contract?.assigned(@descriptor)\n\t\t\tset_state: (version, cooked_data, data_type=[])=>\n\t\t\t\t@contract?.set_object_state(@descriptor, version, cooked_data, data_type, @_assignment)\n\t\t\tset_data: (data)=>\n\t\t\t\ttimestamp = new Date().getTime()\n\t\t\t\t@set_state([1, Math.floor(timestamp/1000), timestamp - Math.floor(timestamp/1000)*1000, 0], data)\n\n\t\tnew manager.ObjectManager(@, ExposedObject, lambda)\n\n\n\nWebsocketConnector_finalization_registry = new FinalizationRegistry (pointer)=>\n\thakuban_js.hakuban_remote_node_drop(pointer)\n\n#TODO: hide private methods\n#TODO: handle errors somehow\nexport class WebsocketConnector\n\n\tconstructor: (@local_node, @uri, @options={})->\n\t\t@connected = false\n\t\t@socket = undefined\n\t\t@error = undefined\n\t\t@reconnection_timer = undefined\n\t\t@reconnect_on_close = true\n\t\t@ack_timer = undefined\n\t\tresult = hakuban_js.hakuban_remote_node_new(@local_node.pointer, true, true, true)\n\t\traise_if_error(result.error)\t\t\n\t\t@remote_node_pointer = result.remote_node_pointer\n\t\t@event_loop_stop = new Promise (resolve) => @event_loop_stop_resolve = resolve\n\t\t@event_loop_promise = @event_loop()\n\t\tWebsocketConnector_finalization_registry.register(@, @remote_node_pointer, @)\n\t\t@connect()\n\n\tdestroy: () ->\n\t\t@event_loop_stop_resolve([\"stop\"])\n\t\tawait @event_loop_promise\n\t\t@reconnect_on_close = false\n\t\tif @keep_alive_interval\n\t\t\tclearInterval(@keep_alive_interval) \n\t\tif @reconnection_timer?\n\t\t\tclearTimeout(@reconnection_timer)\n\t\t\t@reconnection_timer = null\n\t\tif @socket?\n\t\t\t@socket.onclose = null\n\t\t\t@socket.onerror = null\n\t\t\t@socket.onmessage = null\n\t\t\t@socket.close()\n\t\t\t@socket_onclose()\n\t\tif @ack_timer?\n\t\t\tclearTimeout(@ack_timer)\n\t\t\t@ack_timer = null\n\t\thakuban_js.hakuban_remote_node_drop(@remote_node_pointer)\n\t\tWebsocketConnector_finalization_registry.unregister(@)\n\n\t\t\n\tconnect: ()=>\n\t\t@reconnection_timer = undefined\n\n\t\ttry\n\t\t\t@socket = new WebSocket(@uri)\n\t\tcatch error\n\t\t\t@error = { while: \"connecting\", error: error }\n\t\t\t@onstatuschange_proc(@) if @onstatuschange_proc?\n\t\t\treturn false\n\n\t\t@socket.binaryType = \"arraybuffer\"\n\n\t\t@socket.onopen = ()=>\n\t\t\tconsole.debug('Connected to hakuban remote node') if @options.debug\n\t\t\t@connected = true\n\t\t\t@error = undefined\n\t\t\t@onstatuschange_proc(@) if @onstatuschange_proc?\n\t\t\tbytes_to_send = hakuban_js.hakuban_remote_node_connected(@remote_node_pointer)\n\t\t\t@send(bytes_to_send)\n\n\t\t@socket.onclose = @socket_onclose = ()=>\n\t\t\tconsole.debug('Disconnected from hakuban remote node') if @options.debug\n\t\t\tclearInterval(@keep_alive_interval) if @keep_alive_interval\n\t\t\t@connected = false\n\t\t\t@socket = undefined\n\t\t\thakuban_js.hakuban_remote_node_disconnected(@remote_node_pointer)\n\t\t\t@onstatuschange_proc(@) if @onstatuschange_proc?\n\t\t\tclearTimeout(@reconnection_timer) if @reconnection_timer?\n\t\t\t@reconnection_timer = null\n\t\t\t@reconnection_timer = setTimeout(@connect, 1000) if @reconnect_on_close\n\n\t\t@socket.onerror = (error)=>\n\t\t\tconsole.debug('Hakuban socket error', error) if @options.debug\n\t\t\t@error = { while: \"connected\", error: error }\n\n\t\t@socket.onmessage = (event) =>\n\t\t\tbytes_to_send = hakuban_js.hakuban_remote_node_received_message(@remote_node_pointer, new Uint8Array(event.data))\n\t\t\t@send(bytes_to_send)\n\t\t\tclearTimeout(@ack_timer) if @ack_timer?\n\t\t\t@ack_timer = setTimeout(@ack, 1000)\n\t\t\tnull\n\n\tping: ()=>\n\t\t@socket.send(new Uint8Array()) if @socket\n\n\tsend: (bytes_to_send)=>\n\t\tif bytes_to_send.length > 0\n\t\t\t@socket.send(bytes_to_send)\n\t\t\tclearInterval(@keep_alive_interval) if @keep_alive_interval\n\t\t\t@keep_alive_interval = setInterval(@ping, 10000)\n\n\tack: ()=>\n\t\tif @socket?\n\t\t\tbytes_to_send = hakuban_js.hakuban_remote_node_ack(@remote_node_pointer)\n\t\t\t@send(bytes_to_send) if bytes_to_send.length > 0\n\n\tevent_loop: ()->\n\t\tnext_local_node_event = false\n\t\tcancel_waiting_resolve = null\n\t\tcancel_waiting_promise = new Promise (resolve) -> cancel_waiting_resolve = resolve\n\t\twhile true\n\t\t\tnext_local_node_event = hakuban_js.hakuban_remote_node_next_local_node_event(@remote_node_pointer, cancel_waiting_promise).then((event)->[\"local_node_event\", event]) if not next_local_node_event\n\t\t\t[promise, event] = await Promise.any([@event_loop_stop, next_local_node_event])\n\t\t\tif promise == \"local_node_event\"\n\t\t\t\tnext_local_node_event = false\n\t\t\t\tsetTimeout(((event)=>\n\t\t\t\t\tif @connected\n\t\t\t\t\t\tbytes_to_send = hakuban_js.hakuban_remote_node_received_local_node_event(@remote_node_pointer, event)\n\t\t\t\t\t\t@send(bytes_to_send)\n\t\t\t\t), 0, event)\n\t\t\telse\n\t\t\t\tbreak\n\t\tif next_local_node_event\n\t\t\tcancel_waiting_resolve(true)\n\t\t\tawait next_local_node_event\n\n\tonstatuschange: (proc)->\n\t\t@onstatuschange_proc = proc\n\t\t@onstatuschange_proc() if @onstatuschange_proc?\n\t\t@\n","import { initialize_wasm } from \"./common.coffee\"\nimport hakuban_wasm_base64 from \"../pkg/hakuban_bg.wasm\"\n\nexport * from './common.coffee'\n\nexport initialize = ()->\n\t# wow, this is disgusting\n\twasm_string = atob(hakuban_wasm_base64)\n\twasm_array = new Uint8Array(wasm_string.length)\n\tfor i in [0..wasm_string.length]\n\t\twasm_array[i] = wasm_string.charCodeAt(i) \n\tawait initialize_wasm(wasm_array)\n\n\n"],"names":["wasm","heap","Array","fill","undefined","getObject","idx","push","heap_next","length","takeObject","ret","dropObject","cachedTextDecoder","TextDecoder","ignoreBOM","fatal","decode","cachegetUint8Memory0","getUint8Memory0","buffer","memory","Uint8Array","getStringFromWasm0","ptr","len","subarray","addHeapObject","obj","debugString","val","type","description","name","isArray","debug","i","builtInMatches","exec","toString","call","className","JSON","stringify","_","Error","message","stack","WASM_VECTOR_LEN","cachedTextEncoder","TextEncoder","encodeString","encodeInto","arg","view","buf","encode","set","read","written","passStringToWasm0","malloc","realloc","mem","offset","code","charCodeAt","slice","cachegetInt32Memory0","getInt32Memory0","Int32Array","__wbg_adapter_16","arg0","arg1","arg2","_dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h2cb5c9e37b253332","u32CvtShim","Uint32Array","uint64CvtShim","BigUint64Array","hakuban_json_hash","json_string","ptr0","__wbindgen_malloc","__wbindgen_realloc","len0","WasmHashResult","__wrap","hakuban_local_node_drop","local_node","hakuban_object_observe_drop","object_ptr","hakuban_object_observe_state_return","state_ptr","hakuban_object_observe_state_synchronized","retptr","__wbindgen_add_to_stack_pointer","r0","r1","hakuban_object_observe_state_data_version","__wbindgen_free","hakuban_object_observe_state_data_type","getArrayU8FromWasm0","hakuban_object_observe_state_data","v0","hakuban_object_descriptor_events_drop","events_pointer","hakuban_tag_observe_drop","tag_observe_pointer","isLikeNone","x","hakuban_remote_node_drop","remote_node_pointer","passArray8ToWasm0","hakuban_remote_node_received_local_node_event","event","r2","v1","hakuban_tag_expose_drop","tag_expose_pointer","hakuban_object_expose_drop","object_expose_pointer","handleError","f","args","apply","this","e","__wbindgen_exn_store","Object","freeze","None","InvalidString","InvalidJSON","InvalidURL","ObjectNotFound","static","create","prototype","__destroy_into_raw","free","__wbg_wasmhashresult_free","error","__wbg_get_wasmhashresult_error","__wbg_set_wasmhashresult_error","hash","__wbg_get_wasmhashresult_hash","low0","high0","__wbg_set_wasmhashresult_hash","WasmLocalNodeNewResult","__wbg_wasmlocalnodenewresult_free","__wbg_get_wasmlocalnodenewresult_error","__wbg_set_wasmlocalnodenewresult_error","local_node_pointer","__wbg_get_wasmlocalnodenewresult_local_node_pointer","__wbg_set_wasmlocalnodenewresult_local_node_pointer","WasmObjectExposeResult","__wbg_wasmobjectexposeresult_free","__wbg_get_wasmobjectexposeresult_error","__wbg_set_wasmobjectexposeresult_error","__wbg_get_wasmobjectexposeresult_object_expose_pointer","__wbg_set_wasmobjectexposeresult_object_expose_pointer","WasmObjectExposeStateResult","__wbg_wasmobjectexposestateresult_free","__wbg_get_wasmobjectexposestateresult_error","__wbg_set_wasmobjectexposestateresult_error","changed","__wbg_get_wasmobjectexposestateresult_changed","__wbg_set_wasmobjectexposestateresult_changed","WasmObjectObserveResult","__wbg_wasmobjectobserveresult_free","__wbg_get_wasmobjectobserveresult_error","__wbg_set_wasmobjectobserveresult_error","object_observe_pointer","__wbg_get_wasmobjectobserveresult_object_observe_pointer","__wbg_set_wasmobjectobserveresult_object_observe_pointer","WasmRemoteNodeNewResult","__wbg_wasmremotenodenewresult_free","__wbg_get_wasmremotenodenewresult_error","__wbg_set_wasmremotenodenewresult_error","__wbg_get_wasmremotenodenewresult_remote_node_pointer","__wbg_set_wasmremotenodenewresult_remote_node_pointer","WasmTagExposeAssignmentResult","__wbg_wasmtagexposeassignmentresult_free","__wbg_get_wasmtagexposeassignmentresult_error","__wbg_set_wasmtagexposeassignmentresult_error","assignment","__wbg_get_wasmtagexposeassignmentresult_assignment","__wbg_set_wasmtagexposeassignmentresult_assignment","WasmTagExposeResult","__wbg_wasmtagexposeresult_free","__wbg_get_wasmtagexposeresult_error","__wbg_set_wasmtagexposeresult_error","__wbg_get_wasmtagexposeresult_tag_expose_pointer","__wbg_set_wasmtagexposeresult_tag_expose_pointer","WasmTagExposeSetObjectStateResult","__wbg_wasmtagexposesetobjectstateresult_free","__wbg_get_wasmtagexposesetobjectstateresult_error","__wbg_set_wasmtagexposesetobjectstateresult_error","__wbg_get_wasmtagexposesetobjectstateresult_changed","__wbg_set_wasmtagexposesetobjectstateresult_changed","WasmTagObserveObjectStateBorrowResult","__wbg_wasmtagobserveobjectstateborrowresult_free","__wbg_get_wasmtagobserveobjectstateborrowresult_error","__wbg_set_wasmtagobserveobjectstateborrowresult_error","state_pointer","__wbg_get_wasmtagobserveobjectstateborrowresult_state_pointer","__wbg_set_wasmtagobserveobjectstateborrowresult_state_pointer","WasmTagObserveResult","__wbg_wasmtagobserveresult_free","__wbg_get_wasmtagobserveresult_error","__wbg_set_wasmtagobserveresult_error","__wbg_get_wasmtagobserveresult_tag_observe_pointer","__wbg_set_wasmtagobserveresult_tag_observe_pointer","async","init","input","URL","import","meta","url","imports","wbg","__wbindgen_object_drop_ref","__wbindgen_string_new","__wbindgen_cb_drop","original","cnt","a","__wbg_debug_6e114a5b27d7915d","console","__wbg_error_ca520cb687b085a1","__wbg_info_32ab782ec7072fac","info","__wbg_log_fbd13631356d44e4","log","__wbg_warn_97f10a6b0dbb8c5c","warn","__wbg_now_5fa0ca001e042f8a","now","__wbg_newnoargs_f579424187aa1717","Function","__wbg_get_8bbb82393651dd9c","Reflect","get","arguments","__wbg_call_89558c3e96703ca1","__wbg_call_94697a95cb7e239c","__wbg_new_4beacc9c71572250","state0","b","Promise","arg3","wasm_bindgen__convert__closures__invoke2_mut__h3fbc4a767cc461bf","__wbg_adapter_120","__wbg_resolve_4f8f547f26b30b27","resolve","__wbg_then_a6860c82b90816ca","then","__wbg_then_58a04e42527f52c6","__wbg_self_e23d74ae45fb17d1","self","__wbg_window_b4be7f48b24ac56e","window","__wbg_globalThis_d61b1f48a57191ae","globalThis","__wbg_global_e7669da72fd7f239","global","__wbindgen_is_undefined","__wbindgen_object_clone_ref","__wbg_new_693216e109162396","__wbg_stack_0ddaca5d1abfb52f","__wbg_error_09919627ac0992f5","__wbindgen_debug_string","__wbindgen_throw","__wbindgen_closure_wrapper2024","dtor","state","real","__wbindgen_export_2","makeMutClosure","Request","fetch","instance","module","Response","WebAssembly","instantiateStreaming","headers","bytes","arrayBuffer","instantiate","Instance","load","exports","__wbindgen_wasm_module","Queue","constructor","queue","wake","value","shift","clear","LocalNode_finalization_registry","ObjectBuilder","ObjectDescriptorEvents","ObjectDescriptorEvents_finalization_registry","ObjectExpose","ObjectExpose_finalization_registry","ObjectObserve","ObjectObserve_finalization_registry","TagBuilder","TagExpose","TagExpose_finalization_registry","TagObserve","TagObserve_finalization_registry","WebsocketConnector_finalization_registry","logger_initialized","raise_if_error","ObjectManager","event_loop_stop_requested","objects","object","drop","contract","object_class","block","_objects","running_handlers","event_queue","event_loop_stop","event_loop_stopped","reject","events","race","next","async_loop_stopped","_key","key","ref","action","descriptor","do_change","handler_already_run","handler_resolve","handler_reject","run","keys","values","ManagedObject","next_event","next_change","_changes","handler","change","boundMethodCheck","initialize_wasm","hakuban_js.default","logger_initialize","log_level","skip_if_already_initialized","default_log_level","hakuban_logger_initialize","error_code","JSON_serialize","data_type","cooked","concat","data","JSON_deserialize","raw","parse","ObjectDescriptor","tags","tag","json","TagDescriptor","as_json","map","_hash","sort","join","hakuban_js.hakuban_json_hash","FinalizationRegistry","pointer","hakuban_js.hakuban_local_node_drop","LocalNode","result","name_str","hakuban_local_node_new","register","with_default_serializer","with_default_deserializer","destroy","unregister","default_serializer","default_deserializer","serializer","deserializer","observe","expose","with_serializer","with_deserializer","hakuban_js.hakuban_object_descriptor_events_drop","wait","cancel_waiting_promise","next_event_promise","cancel","wait_released","wait_release","cancel_waiting_resolve","hakuban_object_descriptor_events_next","parsed","hakuban_js.hakuban_object_observe_drop","object_state","hakuban_object_observe_new","hakuban_js.hakuban_object_observe_new","dropped","deserialized","synchronized","version","hakuban_object_observe_state_borrow","hakuban_js.hakuban_object_observe_state_synchronized","hakuban_js.hakuban_object_observe_state_data_version","hakuban_js.hakuban_object_observe_state_data_type","hakuban_js.hakuban_object_observe_state_data","hakuban_js.hakuban_object_observe_state_return","object_observe_ptr","hakuban_object_observe_events_get","lambda","manager.ObjectManager","manager.ManagedObject","ref1","hakuban_js.hakuban_object_expose_drop","set_object_state","assigned","desynchronize","hakuban_object_expose_new","hakuban_js.hakuban_object_expose_new","cooked_data","serialized","BigInt","data_version","assignment_id","ptr1","len1","ptr2","len2","low3","high3","hakuban_object_expose_set_state","hakuban_js.hakuban_object_expose_set_state","hakuban_object_expose_assignment","hakuban_js.hakuban_object_expose_assignment","hakuban_object_expose_desynchronize","hakuban_js.hakuban_object_expose_desynchronize","object_expose_ptr","hakuban_object_expose_events_get","ExposedObject","set_state","set_data","_assignment","timestamp","Date","getTime","Math","floor","hakuban_js.hakuban_tag_observe_drop","object_descriptors","hakuban_tag_observe_new","hakuban_js.hakuban_tag_observe_new","descriptor_as_json","results","hakuban_tag_observe_object_descriptors","hakuban_js.hakuban_tag_observe_object_descriptors","object_descriptor","hakuban_tag_observe_object_state_borrow","hakuban_js.hakuban_tag_observe_object_state_borrow","tag_observe_ptr","hakuban_tag_observe_events_get","hakuban_js.hakuban_tag_expose_drop","hakuban_tag_expose_new","hakuban_js.hakuban_tag_expose_new","hakuban_tag_expose_object_descriptors","hakuban_js.hakuban_tag_expose_object_descriptors","ptr3","len3","low4","high4","hakuban_tag_expose_set_object_state","hakuban_js.hakuban_tag_expose_set_object_state","hakuban_tag_expose_assignment","hakuban_js.hakuban_tag_expose_assignment","low1","high1","hakuban_tag_expose_desynchronize","hakuban_js.hakuban_tag_expose_desynchronize","tag_expose_ptr","hakuban_tag_expose_events_get","hakuban_js.hakuban_remote_node_drop","WebsocketConnector","upstream","diff_produce","diff_request","connect","ping","send","ack","uri","options","connected","socket","reconnection_timer","reconnect_on_close","ack_timer","hakuban_remote_node_new","event_loop_stop_resolve","event_loop_promise","event_loop","keep_alive_interval","clearInterval","clearTimeout","onclose","onerror","onmessage","close","socket_onclose","WebSocket","while","onstatuschange_proc","binaryType","onopen","bytes_to_send","hakuban_remote_node_connected","hakuban_js.hakuban_remote_node_connected","hakuban_remote_node_disconnected","setTimeout","hakuban_remote_node_received_message","hakuban_js.hakuban_remote_node_received_message","setInterval","hakuban_remote_node_ack","hakuban_js.hakuban_remote_node_ack","next_local_node_event","promise","hakuban_remote_node_next_local_node_event","any","hakuban_js.hakuban_remote_node_received_local_node_event","onstatuschange","proc","initialize","j","wasm_array","wasm_string","atob"],"mappings":"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"}
|