diff --git "a/src/stroke_deepisles_demo/ui/assets/niivue.js" "b/src/stroke_deepisles_demo/ui/assets/niivue.js" new file mode 100644--- /dev/null +++ "b/src/stroke_deepisles_demo/ui/assets/niivue.js" @@ -0,0 +1,48953 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __typeError = (msg) => { + throw TypeError(msg); +}; +var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __esm = (fn, res) => function __init() { + return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; +}; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); +var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg); +var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj)); +var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value); +var __privateSet = (obj, member, value, setter2) => (__accessCheck(obj, member, "write to private field"), setter2 ? setter2.call(obj, value) : member.set(obj, value), value); +var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method); + +// ../../node_modules/array-equal/index.js +var require_array_equal = __commonJS({ + "../../node_modules/array-equal/index.js"(exports, module) { + module.exports = function equal(arr1, arr2) { + var length4 = arr1.length; + if (arr1 === arr2) return true; + if (length4 !== arr2.length) return false; + for (var i = 0; i < length4; i++) + if (arr1[i] !== arr2[i]) + return false; + return true; + }; + } +}); + +// ../../node_modules/numcodecs/dist/chunk-INHXZS53.js +var __toBinary; +var init_chunk_INHXZS53 = __esm({ + "../../node_modules/numcodecs/dist/chunk-INHXZS53.js"() { + __toBinary = /* @__PURE__ */ (() => { + var table = new Uint8Array(128); + for (var i = 0; i < 64; i++) + table[i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i * 4 - 205] = i; + return (base64) => { + var n = base64.length, bytes = new Uint8Array((n - (base64[n - 1] == "=") - (base64[n - 2] == "=")) * 3 / 4 | 0); + for (var i2 = 0, j = 0; i2 < n; ) { + var c0 = table[base64.charCodeAt(i2++)], c1 = table[base64.charCodeAt(i2++)]; + var c2 = table[base64.charCodeAt(i2++)], c3 = table[base64.charCodeAt(i2++)]; + bytes[j++] = c0 << 2 | c1 >> 4; + bytes[j++] = c1 << 4 | c2 >> 2; + bytes[j++] = c2 << 6 | c3; + } + return bytes; + }; + })(); + } +}); + +// ../../node_modules/numcodecs/dist/blosc.js +var blosc_exports = {}; +__export(blosc_exports, { + default: () => blosc_default +}); +var blosc_codec, blosc_codec_default, blosc_codec_default2, COMPRESSORS, emscriptenModule, init, _a2, Blosc, blosc_default; +var init_blosc = __esm({ + "../../node_modules/numcodecs/dist/blosc.js"() { + init_chunk_INHXZS53(); + blosc_codec = (() => { + var _scriptDir = typeof document !== "undefined" && document.currentScript ? document.currentScript.src : void 0; + return function(moduleArg = {}) { + var f = moduleArg, aa, q; + f.ready = new Promise((a, b) => { + aa = a; + q = b; + }); + var ba = Object.assign({}, f), ca = "./this.program", ea = f.print || console.log.bind(console), t = f.printErr || console.error.bind(console); + Object.assign(f, ba); + ba = null; + f.thisProgram && (ca = f.thisProgram); + var u; + f.wasmBinary && (u = f.wasmBinary); + "object" != typeof WebAssembly && x("no native wasm support detected"); + var y, fa = false, A, B, D, E, F, G, ha, ia; + function ja() { + var a = y.buffer; + f.HEAP8 = A = new Int8Array(a); + f.HEAP16 = D = new Int16Array(a); + f.HEAPU8 = B = new Uint8Array(a); + f.HEAPU16 = E = new Uint16Array(a); + f.HEAP32 = F = new Int32Array(a); + f.HEAPU32 = G = new Uint32Array(a); + f.HEAPF32 = ha = new Float32Array(a); + f.HEAPF64 = ia = new Float64Array(a); + } + var ka = [], la = [], ma = []; + function na() { + var a = f.preRun.shift(); + ka.unshift(a); + } + var H = 0, I = null, J = null; + function x(a) { + f.onAbort?.(a); + a = "Aborted(" + a + ")"; + t(a); + fa = true; + a = new WebAssembly.RuntimeError(a + ". Build with -sASSERTIONS for more info."); + q(a); + throw a; + } + var oa = (a) => a.startsWith("data:application/octet-stream;base64,"), pa = (a) => a.startsWith("file://"), L; + L = "blosc_codec.wasm"; + if (!oa(L)) { + var qa = L; + L = f.locateFile ? f.locateFile(qa, "") : "" + qa; + } + function ra(a) { + return Promise.resolve().then(() => { + if (a == L && u) + var b = new Uint8Array(u); + else + throw "both async and sync fetching of the wasm failed"; + return b; + }); + } + function sa(a, b, c) { + return ra(a).then((d) => WebAssembly.instantiate(d, b)).then((d) => d).then(c, (d) => { + t(`failed to asynchronously prepare wasm: ${d}`); + x(d); + }); + } + function ta(a, b) { + var c = L; + return u || "function" != typeof WebAssembly.instantiateStreaming || oa(c) || pa(c) || "function" != typeof fetch ? sa(c, a, b) : fetch(c, { credentials: "same-origin" }).then((d) => WebAssembly.instantiateStreaming(d, a).then(b, function(e) { + t(`wasm streaming compile failed: ${e}`); + t("falling back to ArrayBuffer instantiation"); + return sa(c, a, b); + })); + } + var M = (a) => { + for (; 0 < a.length; ) + a.shift()(f); + }; + function ua(a) { + this.H = a - 24; + this.N = function(b) { + G[this.H + 4 >> 2] = b; + }; + this.M = function(b) { + G[this.H + 8 >> 2] = b; + }; + this.I = function(b, c) { + this.J(); + this.N(b); + this.M(c); + }; + this.J = function() { + G[this.H + 16 >> 2] = 0; + }; + } + var va = 0, wa = 0, xa, N = (a) => { + for (var b = ""; B[a]; ) + b += xa[B[a++]]; + return b; + }, O = {}, P = {}, Q = {}, R, ya = (a) => { + throw new R(a); + }, S, za = (a, b) => { + function c(l) { + l = b(l); + if (l.length !== d.length) + throw new S("Mismatched type converter count"); + for (var g = 0; g < d.length; ++g) + T(d[g], l[g]); + } + var d = []; + d.forEach(function(l) { + Q[l] = a; + }); + var e = Array(a.length), h = [], k = 0; + a.forEach((l, g) => { + P.hasOwnProperty(l) ? e[g] = P[l] : (h.push(l), O.hasOwnProperty(l) || (O[l] = []), O[l].push(() => { + e[g] = P[l]; + ++k; + k === h.length && c(e); + })); + }); + 0 === h.length && c(e); + }; + function Aa(a, b, c = {}) { + var d = b.name; + if (!a) + throw new R(`type "${d}" must have a positive integer typeid pointer`); + if (P.hasOwnProperty(a)) { + if (c.P) + return; + throw new R(`Cannot register type '${d}' twice`); + } + P[a] = b; + delete Q[a]; + O.hasOwnProperty(a) && (b = O[a], delete O[a], b.forEach((e) => e())); + } + function T(a, b, c = {}) { + if (!("argPackAdvance" in b)) + throw new TypeError("registerType registeredInstance requires argPackAdvance"); + Aa(a, b, c); + } + function Ba() { + this.F = [void 0]; + this.K = []; + } + var U = new Ba(), Ca = (a) => { + a >= U.H && 0 === --U.get(a).L && U.J(a); + }, Da = (a) => { + switch (a) { + case void 0: + return 1; + case null: + return 2; + case true: + return 3; + case false: + return 4; + default: + return U.I({ L: 1, value: a }); + } + }; + function Ea(a) { + return this.fromWireType(F[a >> 2]); + } + var Fa = (a, b) => { + switch (b) { + case 4: + return function(c) { + return this.fromWireType(ha[c >> 2]); + }; + case 8: + return function(c) { + return this.fromWireType(ia[c >> 3]); + }; + default: + throw new TypeError(`invalid float width (${b}): ${a}`); + } + }, V = (a, b) => Object.defineProperty(b, "name", { value: a }), Ga = (a) => { + for (; a.length; ) { + var b = a.pop(); + a.pop()(b); + } + }; + function Ha(a) { + for (var b = 1; b < a.length; ++b) + if (null !== a[b] && void 0 === a[b].G) + return true; + return false; + } + function La(a) { + var b = Function; + if (!(b instanceof Function)) + throw new TypeError(`new_ called with constructor type ${typeof b} which is not a function`); + var c = V(b.name || "unknownFunctionName", function() { + }); + c.prototype = b.prototype; + c = new c(); + a = b.apply(c, a); + return a instanceof Object ? a : c; + } + var Ma = (a, b) => { + if (void 0 === f[a].C) { + var c = f[a]; + f[a] = function() { + if (!f[a].C.hasOwnProperty(arguments.length)) + throw new R(`Function '${b}' called with an invalid number of arguments (${arguments.length}) - expects one of (${f[a].C})!`); + return f[a].C[arguments.length].apply(this, arguments); + }; + f[a].C = []; + f[a].C[c.O] = c; + } + }, Na = (a, b, c) => { + if (f.hasOwnProperty(a)) { + if (void 0 === c || void 0 !== f[a].C && void 0 !== f[a].C[c]) + throw new R(`Cannot register public name '${a}' twice`); + Ma(a, a); + if (f.hasOwnProperty(c)) + throw new R(`Cannot register multiple overloads of a function with the same number of arguments (${c})!`); + f[a].C[c] = b; + } else + f[a] = b, void 0 !== c && (f[a].S = c); + }, Oa = (a, b) => { + for (var c = [], d = 0; d < a; d++) + c.push(G[b + 4 * d >> 2]); + return c; + }, Pa, Qa = (a, b) => { + var c = []; + return function() { + c.length = 0; + Object.assign(c, arguments); + if (a.includes("j")) { + var d = f["dynCall_" + a]; + d = c && c.length ? d.apply(null, [b].concat(c)) : d.call(null, b); + } else + d = Pa.get(b).apply(null, c); + return d; + }; + }, Ra = (a, b) => { + a = N(a); + var c = a.includes("j") ? Qa(a, b) : Pa.get(b); + if ("function" != typeof c) + throw new R(`unknown function pointer with signature ${a}: ${b}`); + return c; + }, Sa, Ua = (a) => { + a = Ta(a); + var b = N(a); + W(a); + return b; + }, Va = (a, b) => { + function c(h) { + e[h] || P[h] || (Q[h] ? Q[h].forEach(c) : (d.push(h), e[h] = true)); + } + var d = [], e = {}; + b.forEach(c); + throw new Sa(`${a}: ` + d.map(Ua).join([", "])); + }, Wa = (a) => { + a = a.trim(); + const b = a.indexOf("("); + return -1 !== b ? a.substr(0, b) : a; + }, Xa = (a, b, c) => { + switch (b) { + case 1: + return c ? (d) => A[d >> 0] : (d) => B[d >> 0]; + case 2: + return c ? (d) => D[d >> 1] : (d) => E[d >> 1]; + case 4: + return c ? (d) => F[d >> 2] : (d) => G[d >> 2]; + default: + throw new TypeError(`invalid integer width (${b}): ${a}`); + } + }; + function Ya(a) { + return this.fromWireType(G[a >> 2]); + } + for (var Za = "undefined" != typeof TextDecoder ? new TextDecoder("utf8") : void 0, $a = (a, b, c) => { + var d = b + c; + for (c = b; a[c] && !(c >= d); ) + ++c; + if (16 < c - b && a.buffer && Za) + return Za.decode(a.subarray(b, c)); + for (d = ""; b < c; ) { + var e = a[b++]; + if (e & 128) { + var h = a[b++] & 63; + if (192 == (e & 224)) + d += String.fromCharCode((e & 31) << 6 | h); + else { + var k = a[b++] & 63; + e = 224 == (e & 240) ? (e & 15) << 12 | h << 6 | k : (e & 7) << 18 | h << 12 | k << 6 | a[b++] & 63; + 65536 > e ? d += String.fromCharCode(e) : (e -= 65536, d += String.fromCharCode(55296 | e >> 10, 56320 | e & 1023)); + } + } else + d += String.fromCharCode(e); + } + return d; + }, ab = "undefined" != typeof TextDecoder ? new TextDecoder("utf-16le") : void 0, bb = (a, b) => { + var c = a >> 1; + for (var d = c + b / 2; !(c >= d) && E[c]; ) + ++c; + c <<= 1; + if (32 < c - a && ab) + return ab.decode(B.subarray(a, c)); + c = ""; + for (d = 0; !(d >= b / 2); ++d) { + var e = D[a + 2 * d >> 1]; + if (0 == e) + break; + c += String.fromCharCode(e); + } + return c; + }, cb = (a, b, c) => { + c ?? (c = 2147483647); + if (2 > c) + return 0; + c -= 2; + var d = b; + c = c < 2 * a.length ? c / 2 : a.length; + for (var e = 0; e < c; ++e) + D[b >> 1] = a.charCodeAt(e), b += 2; + D[b >> 1] = 0; + return b - d; + }, db = (a) => 2 * a.length, eb = (a, b) => { + for (var c = 0, d = ""; !(c >= b / 4); ) { + var e = F[a + 4 * c >> 2]; + if (0 == e) + break; + ++c; + 65536 <= e ? (e -= 65536, d += String.fromCharCode(55296 | e >> 10, 56320 | e & 1023)) : d += String.fromCharCode(e); + } + return d; + }, fb = (a, b, c) => { + c ?? (c = 2147483647); + if (4 > c) + return 0; + var d = b; + c = d + c - 4; + for (var e = 0; e < a.length; ++e) { + var h = a.charCodeAt(e); + if (55296 <= h && 57343 >= h) { + var k = a.charCodeAt(++e); + h = 65536 + ((h & 1023) << 10) | k & 1023; + } + F[b >> 2] = h; + b += 4; + if (b + 4 > c) + break; + } + F[b >> 2] = 0; + return b - d; + }, gb = (a) => { + for (var b = 0, c = 0; c < a.length; ++c) { + var d = a.charCodeAt(c); + 55296 <= d && 57343 >= d && ++c; + b += 4; + } + return b; + }, hb = {}, jb = () => { + if (!ib) { + var a = { + USER: "web_user", + LOGNAME: "web_user", + PATH: "/", + PWD: "/", + HOME: "/home/web_user", + LANG: ("object" == typeof navigator && navigator.languages && navigator.languages[0] || "C").replace("-", "_") + ".UTF-8", + _: ca || "./this.program" + }, b; + for (b in hb) + void 0 === hb[b] ? delete a[b] : a[b] = hb[b]; + var c = []; + for (b in a) + c.push(`${b}=${a[b]}`); + ib = c; + } + return ib; + }, ib, kb = [null, [], []], lb = Array(256), X = 0; 256 > X; ++X) + lb[X] = String.fromCharCode(X); + xa = lb; + R = f.BindingError = class extends Error { + constructor(a) { + super(a); + this.name = "BindingError"; + } + }; + S = f.InternalError = class extends Error { + constructor(a) { + super(a); + this.name = "InternalError"; + } + }; + Object.assign(Ba.prototype, { get(a) { + return this.F[a]; + }, has(a) { + return void 0 !== this.F[a]; + }, I(a) { + var b = this.K.pop() || this.F.length; + this.F[b] = a; + return b; + }, J(a) { + this.F[a] = void 0; + this.K.push(a); + } }); + U.F.push({ value: void 0 }, { value: null }, { value: true }, { value: false }); + U.H = U.F.length; + f.count_emval_handles = () => { + for (var a = 0, b = U.H; b < U.F.length; ++b) + void 0 !== U.F[b] && ++a; + return a; + }; + Sa = f.UnboundTypeError = ((a, b) => { + var c = V(b, function(d) { + this.name = b; + this.message = d; + d = Error(d).stack; + void 0 !== d && (this.stack = this.toString() + "\n" + d.replace(/^Error(:[^\n]*)?\n/, "")); + }); + c.prototype = Object.create(a.prototype); + c.prototype.constructor = c; + c.prototype.toString = function() { + return void 0 === this.message ? this.name : `${this.name}: ${this.message}`; + }; + return c; + })(Error, "UnboundTypeError"); + var nb = { + p: (a, b, c) => { + new ua(a).I(b, c); + va = a; + wa++; + throw va; + }, + o: () => { + }, + l: (a, b, c, d) => { + b = N(b); + T(a, { name: b, fromWireType: function(e) { + return !!e; + }, toWireType: function(e, h) { + return h ? c : d; + }, argPackAdvance: 8, readValueFromPointer: function(e) { + return this.fromWireType(B[e]); + }, G: null }); + }, + k: (a, b) => { + b = N(b); + T(a, { name: b, fromWireType: (c) => { + if (!c) + throw new R("Cannot use deleted val. handle = " + c); + var d = U.get(c).value; + Ca(c); + return d; + }, toWireType: (c, d) => Da(d), argPackAdvance: 8, readValueFromPointer: Ea, G: null }); + }, + i: (a, b, c) => { + b = N(b); + T(a, { name: b, fromWireType: (d) => d, toWireType: (d, e) => e, argPackAdvance: 8, readValueFromPointer: Fa(b, c), G: null }); + }, + d: (a, b, c, d, e, h, k) => { + var l = Oa(b, c); + a = N(a); + a = Wa(a); + e = Ra(d, e); + Na(a, function() { + Va(`Cannot call ${a} due to unbound types`, l); + }, b - 1); + za(l, function(g) { + var m = a; + var p = a; + g = [g[0], null].concat(g.slice(1)); + var r = e, n = g.length; + if (2 > n) + throw new R("argTypes array size mismatch! Must at least get return value and 'this' types!"); + var v = null !== g[1] && false, C = Ha(g), Ia = "void" !== g[0].name; + r = [ya, r, h, Ga, g[0], g[1]]; + for (var w = 0; w < n - 2; ++w) + r.push(g[w + 2]); + if (!C) + for (w = v ? 1 : 2; w < g.length; ++w) + null !== g[w].G && r.push(g[w].G); + C = Ha(g); + w = g.length; + var z = "", K = ""; + for (n = 0; n < w - 2; ++n) + z += (0 !== n ? ", " : "") + "arg" + n, K += (0 !== n ? ", " : "") + "arg" + n + "Wired"; + z = ` + return function (${z}) { + if (arguments.length !== ${w - 2}) { + throwBindingError('function ${p} called with ' + arguments.length + ' arguments, expected ${w - 2}'); + }`; + C && (z += "var destructors = [];\n"); + var Ja = C ? "destructors" : "null", da = "throwBindingError invoker fn runDestructors retType classParam".split(" "); + v && (z += "var thisWired = classParam['toWireType'](" + Ja + ", this);\n"); + for (n = 0; n < w - 2; ++n) + z += "var arg" + n + "Wired = argType" + n + "['toWireType'](" + Ja + ", arg" + n + "); // " + g[n + 2].name + "\n", da.push("argType" + n); + v && (K = "thisWired" + (0 < K.length ? ", " : "") + K); + z += (Ia || k ? "var rv = " : "") + "invoker(fn" + (0 < K.length ? ", " : "") + K + ");\n"; + if (C) + z += "runDestructors(destructors);\n"; + else + for (n = v ? 1 : 2; n < g.length; ++n) + v = 1 === n ? "thisWired" : "arg" + (n - 2) + "Wired", null !== g[n].G && (z += v + "_dtor(" + v + "); // " + g[n].name + "\n", da.push(v + "_dtor")); + Ia && (z += "var ret = retType['fromWireType'](rv);\nreturn ret;\n"); + let [Ka, ob] = [da, z + "}\n"]; + Ka.push(ob); + g = La(Ka).apply(null, r); + p = V(p, g); + g = b - 1; + if (!f.hasOwnProperty(m)) + throw new S("Replacing nonexistant public symbol"); + void 0 !== f[m].C && void 0 !== g ? f[m].C[g] = p : (f[m] = p, f[m].O = g); + return []; + }); + }, + b: (a, b, c, d, e) => { + b = N(b); + -1 === e && (e = 4294967295); + e = (l) => l; + if (0 === d) { + var h = 32 - 8 * c; + e = (l) => l << h >>> h; + } + var k = b.includes("unsigned") ? function(l, g) { + return g >>> 0; + } : function(l, g) { + return g; + }; + T(a, { + name: b, + fromWireType: e, + toWireType: k, + argPackAdvance: 8, + readValueFromPointer: Xa(b, c, 0 !== d), + G: null + }); + }, + a: (a, b, c) => { + function d(h) { + return new e(A.buffer, G[h + 4 >> 2], G[h >> 2]); + } + var e = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array][b]; + c = N(c); + T(a, { name: c, fromWireType: d, argPackAdvance: 8, readValueFromPointer: d }, { P: true }); + }, + e: (a, b) => { + b = N(b); + var c = "std::string" === b; + T(a, { name: b, fromWireType: function(d) { + var e = G[d >> 2], h = d + 4; + if (c) + for (var k = h, l = 0; l <= e; ++l) { + var g = h + l; + if (l == e || 0 == B[g]) { + k = k ? $a(B, k, g - k) : ""; + if (void 0 === m) + var m = k; + else + m += String.fromCharCode(0), m += k; + k = g + 1; + } + } + else { + m = Array(e); + for (l = 0; l < e; ++l) + m[l] = String.fromCharCode(B[h + l]); + m = m.join(""); + } + W(d); + return m; + }, toWireType: function(d, e) { + e instanceof ArrayBuffer && (e = new Uint8Array(e)); + var h, k = "string" == typeof e; + if (!(k || e instanceof Uint8Array || e instanceof Uint8ClampedArray || e instanceof Int8Array)) + throw new R("Cannot pass non-string to std::string"); + var l; + if (c && k) + for (h = l = 0; h < e.length; ++h) { + var g = e.charCodeAt(h); + 127 >= g ? l++ : 2047 >= g ? l += 2 : 55296 <= g && 57343 >= g ? (l += 4, ++h) : l += 3; + } + else + l = e.length; + h = l; + l = mb(4 + h + 1); + g = l + 4; + G[l >> 2] = h; + if (c && k) { + if (k = g, g = h + 1, h = B, 0 < g) { + g = k + g - 1; + for (var m = 0; m < e.length; ++m) { + var p = e.charCodeAt(m); + if (55296 <= p && 57343 >= p) { + var r = e.charCodeAt(++m); + p = 65536 + ((p & 1023) << 10) | r & 1023; + } + if (127 >= p) { + if (k >= g) + break; + h[k++] = p; + } else { + if (2047 >= p) { + if (k + 1 >= g) + break; + h[k++] = 192 | p >> 6; + } else { + if (65535 >= p) { + if (k + 2 >= g) + break; + h[k++] = 224 | p >> 12; + } else { + if (k + 3 >= g) + break; + h[k++] = 240 | p >> 18; + h[k++] = 128 | p >> 12 & 63; + } + h[k++] = 128 | p >> 6 & 63; + } + h[k++] = 128 | p & 63; + } + } + h[k] = 0; + } + } else if (k) + for (k = 0; k < h; ++k) { + m = e.charCodeAt(k); + if (255 < m) + throw W(g), new R("String has UTF-16 code units that do not fit in 8 bits"); + B[g + k] = m; + } + else + for (k = 0; k < h; ++k) + B[g + k] = e[k]; + null !== d && d.push(W, l); + return l; + }, argPackAdvance: 8, readValueFromPointer: Ya, G(d) { + W(d); + } }); + }, + c: (a, b, c) => { + c = N(c); + if (2 === b) { + var d = bb; + var e = cb; + var h = db; + var k = () => E; + var l = 1; + } else + 4 === b && (d = eb, e = fb, h = gb, k = () => G, l = 2); + T(a, { name: c, fromWireType: (g) => { + for (var m = G[g >> 2], p = k(), r, n = g + 4, v = 0; v <= m; ++v) { + var C = g + 4 + v * b; + if (v == m || 0 == p[C >> l]) + n = d(n, C - n), void 0 === r ? r = n : (r += String.fromCharCode(0), r += n), n = C + b; + } + W(g); + return r; + }, toWireType: (g, m) => { + if ("string" != typeof m) + throw new R(`Cannot pass non-string to C++ string type ${c}`); + var p = h(m), r = mb(4 + p + b); + G[r >> 2] = p >> l; + e(m, r + 4, p + b); + null !== g && g.push(W, r); + return r; + }, argPackAdvance: 8, readValueFromPointer: Ea, G(g) { + W(g); + } }); + }, + m: (a, b) => { + b = N(b); + T(a, { R: true, name: b, argPackAdvance: 0, fromWireType: () => { + }, toWireType: () => { + } }); + }, + g: Ca, + j: (a) => { + 4 < a && (U.get(a).L += 1); + }, + f: (a, b) => { + var c = P[a]; + if (void 0 === c) + throw a = "_emval_take_value has unknown type " + Ua(a), new R(a); + a = c; + a = a.readValueFromPointer(b); + return Da(a); + }, + h: () => { + x(""); + }, + v: (a, b, c) => B.copyWithin(a, b, b + c), + q: (a) => { + var b = B.length; + a >>>= 0; + if (2147483648 < a) + return false; + for (var c = 1; 4 >= c; c *= 2) { + var d = b * (1 + 0.2 / c); + d = Math.min(d, a + 100663296); + var e = Math; + d = Math.max(a, d); + a: { + e = (e.min.call(e, 2147483648, d + (65536 - d % 65536) % 65536) - y.buffer.byteLength + 65535) / 65536; + try { + y.grow(e); + ja(); + var h = 1; + break a; + } catch (k) { + } + h = void 0; + } + if (h) + return true; + } + return false; + }, + t: (a, b) => { + var c = 0; + jb().forEach((d, e) => { + var h = b + c; + e = G[a + 4 * e >> 2] = h; + for (h = 0; h < d.length; ++h) + A[e++ >> 0] = d.charCodeAt(h); + A[e >> 0] = 0; + c += d.length + 1; + }); + return 0; + }, + u: (a, b) => { + var c = jb(); + G[a >> 2] = c.length; + var d = 0; + c.forEach((e) => d += e.length + 1); + G[b >> 2] = d; + return 0; + }, + s: () => 52, + n: function() { + return 70; + }, + r: (a, b, c, d) => { + for (var e = 0, h = 0; h < c; h++) { + var k = G[b >> 2], l = G[b + 4 >> 2]; + b += 8; + for (var g = 0; g < l; g++) { + var m = B[k + g], p = kb[a]; + 0 === m || 10 === m ? ((1 === a ? ea : t)($a(p, 0)), p.length = 0) : p.push(m); + } + e += l; + } + G[d >> 2] = e; + return 0; + } + }, Y = function() { + function a(c) { + Y = c.exports; + y = Y.w; + ja(); + Pa = Y.A; + la.unshift(Y.x); + H--; + f.monitorRunDependencies?.(H); + 0 == H && (null !== I && (clearInterval(I), I = null), J && (c = J, J = null, c())); + return Y; + } + var b = { a: nb }; + H++; + f.monitorRunDependencies?.(H); + if (f.instantiateWasm) + try { + return f.instantiateWasm( + b, + a + ); + } catch (c) { + t(`Module.instantiateWasm callback failed with error: ${c}`), q(c); + } + ta(b, function(c) { + a(c.instance); + }).catch(q); + return {}; + }(), mb = (a) => (mb = Y.y)(a), W = (a) => (W = Y.z)(a), Ta = (a) => (Ta = Y.B)(a); + f.dynCall_jiji = (a, b, c, d, e) => (f.dynCall_jiji = Y.D)(a, b, c, d, e); + var Z; + J = function pb() { + Z || qb(); + Z || (J = pb); + }; + function qb() { + function a() { + if (!Z && (Z = true, f.calledRun = true, !fa)) { + M(la); + aa(f); + if (f.onRuntimeInitialized) + f.onRuntimeInitialized(); + if (f.postRun) + for ("function" == typeof f.postRun && (f.postRun = [f.postRun]); f.postRun.length; ) { + var b = f.postRun.shift(); + ma.unshift(b); + } + M(ma); + } + } + if (!(0 < H)) { + if (f.preRun) + for ("function" == typeof f.preRun && (f.preRun = [f.preRun]); f.preRun.length; ) + na(); + M(ka); + 0 < H || (f.setStatus ? (f.setStatus("Running..."), setTimeout(function() { + setTimeout(function() { + f.setStatus(""); + }, 1); + a(); + }, 1)) : a()); + } + } + if (f.preInit) + for ("function" == typeof f.preInit && (f.preInit = [f.preInit]); 0 < f.preInit.length; ) + f.preInit.pop()(); + qb(); + return moduleArg.ready; + }; + })(); + blosc_codec_default = blosc_codec; + blosc_codec_default2 = __toBinary("AGFzbQEAAAABvwEWYAJ/fwBgBX9/f39/AX9gAn9/AX9gAX8Bf2ADf39/AX9gA39/fwBgBH9/f38Bf2AAAGABfwBgBH9/f38AYAZ/f39/f38AYAV/f39/fwBgBn9/f39/fwF/YAN/fn8BfmAHf39/f39/fwBgB39/f39/f38Bf2APf39/f39/f39/f39/f39/AX9gC39/f39/f39/f39/AX9gCH9/f39/f39/AX9gDX9/f39/f39/f39/f38Bf2ABfwF+YAR/f35+AAKFARYBYQFhAAUBYQFiAAsBYQFjAAUBYQFkAA4BYQFlAAABYQFmAAIBYQFnAAgBYQFoAAcBYQFpAAUBYQFqAAgBYQFrAAABYQFsAAkBYQFtAAABYQFuAAEBYQFvAA4BYQFwAAUBYQFxAAMBYQFyAAYBYQFzAAMBYQF0AAIBYQF1AAIBYQF2AAUDogGgAQEEBAgEAQkDBAQAAwYJAgsGBAgFAQgEAwAPBwMDBgwGAwEMAQEADAQIEBEBBQMEAgQHBBITBgcAAAwDAQYFBQIJCBQMBQcDBwIDFQgFBQkCAgUDAwEDAwgFBwQBAQEGAQEBAQEBAQEBAQEEAgICBgYFBgYGAAACBwgKDAADAgEDAwMKCwkJCwoEBAcHDQMNBAMDAQEBAQEBAQEBAQEBAQEEBQFwAVFRBQcBAYACgIACBg0CfwFBwPQFC38BQQALByQIAXcCAAF4AEwBeQAdAXoAGQFBAQABQgCnAQFDAJcBAUQAlAEJiAEBAEEBC1AyKJIBjAGLATIohgGAAV2TAZEBkAGPAY4BjQGJAYgBhwGFAYQBXFssigFvgwGCAYEBfH92d3h5rgGtAawBen2yAbEBsAGvAakBqAF7frMBtAG1AXWrAaoBpgGlAaQBowGiAaABMihtbZ8BYZUBYSieAZgBmQGaASidAZwBmwEyKJYBCvuTGaABggMBBH8gAyABAn8CQAJAIAAiBSAFIAMgASIGa2oiASACIAEgAkkbIgFBA2siCE8NACAFKAAAIAYoAABzIgcNAQNAIAZBBGohBiAFQQRqIgUgCE8NASAFKAAAIAYoAABzIgdFDQALIAUgB2hBA3ZqIABrDAILAkAgBSABQQFrTw0AIAYvAAAgBS8AAEcNACAGQQJqIQYgBUECaiEFCyABIAVLBH8gBSAGLQAAIAUtAABGagUgBQsgAGsMAQsgB2hBA3YLIgZqRgR/An8CQCACQQNrIgEgACAGaiIATQRAIAAhBQwBCyAAKAAAIAQoAABzIgNFBEAgACEFA0AgBEEEaiEEIAVBBGoiBSABTw0CIAUoAAAgBCgAAHMiA0UNAAsgBSADaEEDdmogAGsMAgsgA2hBA3YMAQsCQCAFIAJBAWtPDQAgBC8AACAFLwAARw0AIARBAmohBCAFQQJqIQULIAIgBUsEfyAFIAQtAAAgBS0AAEZqBSAFCyAAawsgBmoFIAYLC4AEAQN/IAJBgARPBEAgACABIAIQFSAADwsgACACaiEDAkAgACABc0EDcUUEQAJAIABBA3FFBEAgACECDAELIAJFBEAgACECDAELIAAhAgNAIAIgAS0AADoAACABQQFqIQEgAkEBaiICQQNxRQ0BIAIgA0kNAAsLAkAgA0F8cSIEQcAASQ0AIAIgBEFAaiIFSw0AA0AgAiABKAIANgIAIAIgASgCBDYCBCACIAEoAgg2AgggAiABKAIMNgIMIAIgASgCEDYCECACIAEoAhQ2AhQgAiABKAIYNgIYIAIgASgCHDYCHCACIAEoAiA2AiAgAiABKAIkNgIkIAIgASgCKDYCKCACIAEoAiw2AiwgAiABKAIwNgIwIAIgASgCNDYCNCACIAEoAjg2AjggAiABKAI8NgI8IAFBQGshASACQUBrIgIgBU0NAAsLIAIgBE8NAQNAIAIgASgCADYCACABQQRqIQEgAkEEaiICIARJDQALDAELIANBBEkEQCAAIQIMAQsgACADQQRrIgRLBEAgACECDAELIAAhAgNAIAIgAS0AADoAACACIAEtAAE6AAEgAiABLQACOgACIAIgAS0AAzoAAyABQQRqIQEgAkEEaiICIARNDQALCyACIANJBEADQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAiADRw0ACwsgAAvyAgICfwF+AkAgAkUNACAAIAE6AAAgACACaiIDQQFrIAE6AAAgAkEDSQ0AIAAgAToAAiAAIAE6AAEgA0EDayABOgAAIANBAmsgAToAACACQQdJDQAgACABOgADIANBBGsgAToAACACQQlJDQAgAEEAIABrQQNxIgRqIgMgAUH/AXFBgYKECGwiATYCACADIAIgBGtBfHEiBGoiAkEEayABNgIAIARBCUkNACADIAE2AgggAyAB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ACABLQAUOgAUIAAgAS0AFToAFSAAIAEtABY6ABYgACABLQAXOgAXIAAgAS0AGDoAGCAAIAEtABk6ABkgACABLQAaOgAaIAAgAS0AGzoAGyAAIAEtABw6ABwgACABLQAdOgAdIAAgAS0AHjoAHiAAIAEtAB86AB8gAEEgag8LIAAgAS0AADoAACAAIAEtAAE6AAEgACABLQACOgACIAAgAS0AAzoAAyAAIAEtAAQ6AAQgACABLQAFOgAFIAAgAS0ABjoABiAAIAEtAAc6AAcgACABLQAIOgAIIAAgAS0ACToACSAAIAEtAAo6AAogACABLQALOgALIAAgAS0ADDoADCAAIAEtAA06AA0gACABLQAOOgAOIAAgAS0ADzoADyAAQRBqDwsgACABKQAANwAAIABBCGoPCwJAIAJBB00EQCACRQ0BIAAgAS0AADoAACACQQFGBEAgAEEBag8LIAAgAS0AAToAASACQQJGBEAgAEECag8LIAAgAS0AAjoAAiACQQNGBEAgAEEDag8LIAAgAS0AAzoAAyACQQRGBEAgAEEEag8LIAAgAS0ABDoABCACQQVGBEAgAEEFag8LIAAgAS0ABToABSACQQZGBEAgAEEGag8LIAAgAS0ABjoABiAAQQdqDwsgACABKQAANwAAIAJBA3YiBEH4////AXEhAyABIAJBB3EiAmohASAAIAJqIQACQAJAAkACQAJAAkACQAJAIARBB3FBAWsOBwYFBAMCAQAHCyAAIAEpAAA3AAAgAUEIaiEBIABBCGohAAsgACABKQAANwAAIAFBCGohASAAQQhqIQALIAAgASkAADcAACABQQhqIQEgAEEIaiEACyAAIAEpAAA3AAAgAUEIaiEBIABBCGohAAsgACABKQAANwAAIAFBCGohASAAQQhqIQALIAAgASkAADcAACABQQhqIQEgAEEIaiEACyAAIAEpAAA3AAAgAUEIaiEBIABBCGohAAsgA0UNAANAIAAgASkAADcAACAAIAEpAAg3AAggACABKQAQNwAQIAAgASkAGDcAGCAAIAEpACA3ACAgACABKQAoNwAoIAAgASkAMDcAMCAAIAEpADg3ADggAUFAayEBIABBQGshACADQQhrIgMNAAsLIAALBgAgABAZCxcAIAAtAABBIHFFBEAgASACIAAQSBoLC7UEAQd/An9BACABQQhJDQAaIANBfHEhCSAAIAFqQQRrIQYgACEBIANBA3EiAyEIAkACQAJAAkAgA0EBaw4DAgEAAwsgBCACIAlBAnJqLQAAQQJ0aiIBLQACIQMgACABLwEAIgU2AAAgBiAAIANBA3ZqIgEgASAGSxshASAFIANB+AFxdiEHIANBB3EhBQsgBCACIAlBAXJqLQAAQQJ0aiIDLwEAIAV0IAdyIQcgBSADLQACaiEFCyAEIAIgCWotAABBAnRqIgMtAAIhCCABIAMvAQAgBXQgB3IiBzYAACAGIAEgBSAIaiIDQQN2aiIBIAEgBksbIQEgByADQfgHcXYhCCADQQdxIQMLIAkEQANAIAQgAiAJaiIFQQJrLQAAQQJ0aiIHLQACIQogASAIIAQgBUEBay0AAEECdGoiCC8BACADdHIgBy8BACADIAgtAAJqIgN0ciIINgAAIAQgAiAJQQRrIglqLQAAQQJ0aiIHLQACIQsgBiABIAMgCmoiA0EDdmoiASABIAZLGyIBIAQgBUEDay0AAEECdGoiBS8BACADQQdxIgp0IAggA0F4cXZyIAcvAQAgCiAFLQACaiIDdHIiBTYAACAGIAEgAyALaiIDQQN2aiIBIAEgBksbIQEgBSADQfgHcXYhCCADQQdxIQMgCQ0ACwsgASAIQQEgA3RyNgAAQQAgBiABIANBAWoiAkEDdmoiASABIAZLGyIBIAZPDQAaIAJBB3FBAEcgAGsgAWoLC+gIARB/IAAoAiwiBEF8cSEIIARBA3EhCyAEQYYCayEMIAAoAnQhAiAEQQFrQQNJIQ0DQCAAKAI8IAIgACgCbCIHamshBiAMIAAoAixqIAdNBEAgACgCOCIBIAEgBGogBBAXGiAAIAAoAnAgBGs2AnAgACAAKAJsIARrIgc2AmwgACAAKAJcIARrNgJcIAAoAkwiAkEBayEPIAAoAkQgAkEBdGohAyACQQNxIgkEQCACQXxxIQJBACEFA0AgA0ECayIDIAMvAQAiCiAEayIOQQAgCiAOTxs7AQAgBUEBaiIFIAlHDQALCyAPQQNPBEADQCADQQJrIgEgAS8BACIBIARrIgVBACABIAVPGzsBACADQQRrIgEgAS8BACIBIARrIgVBACABIAVPGzsBACADQQZrIgEgAS8BACIBIARrIgVBACABIAVPGzsBACADQQhrIgMgAy8BACIBIARrIgVBACABIAVPGzsBACACQQRrIgINAAsLIAAoAkAgBEEBdGohA0EAIQUgBCEBIAsEQANAIANBAmsiAyADLwEAIgEgBGsiAkEAIAEgAk8bOwEAIAVBAWoiBSALRw0ACyAIIQELIA1FBEADQCADQQJrIgIgAi8BACICIARrIgVBACACIAVPGzsBACADQQRrIgIgAi8BACICIARrIgVBACACIAVPGzsBACADQQZrIgIgAi8BACICIARrIgVBACACIAVPGzsBACADQQhrIgMgAy8BACICIARrIgVBACACIAVPGzsBACABQQRrIgENAAsLIAQgBmohBgsCQCAAKAIAIgEoAgQiAkUNACACIAYgAiAGSRshAyAAKAJ0IQUgACAGBH8gACgCOCEQIAEgAiADazYCBCAQIAdqIAVqIAEoAgAgAxAXIQICQAJAAkAgASgCHCgCGEEBaw4CAAECCyABIAEoAjAgAiADED02AjAMAQsgASABKAIwIAIgAxAaNgIwCyABIAEoAgAgA2o2AgAgASABKAIIIANqNgIIIAAoAnQFIAULIANqIgI2AnQCQCAAKAK0LSIFIAJqQQNJDQAgACAAKAI4IgYgACgCbCAFayIDaiIBLQAAIgc2AkggACAAKAJUIgkgAS0AASAHIAAoAlgiB3RzcSIBNgJIIAZBAmohBgNAIAVFDQEgACADIAZqLQAAIAEgB3RzIAlxIgE2AkggACgCQCAAKAI0IANxQQF0aiAAKAJEIAFBAXRqIgovAQA7AQAgCiADOwEAIAAgBUEBayIFNgK0LSADQQFqIQMgAiAFakECSw0ACwsgAkGFAksNACAAKAIAKAIEDQELCwJAIAAoAjwiCCAAKALALSIBTQ0AIAACfyAAKAJ0IAAoAmxqIgQgAUsEQCAAKAI4IARqQQBBggIgCCAEayIBIAFBggJPGyIBEBgaIAEgBGoMAQsgBEGCAmoiBCABTQ0BIAAoAjggAWpBACAEIAFrIgQgCCABayIBIAEgBEsbIgEQGBogACgCwC0gAWoLNgLALQsLCQAgASACbBAdCzYBAX9BASAAIABBAU0bIQACQANAIAAQHSIBDQFBuPQBKAIAIgEEQCABEQcADAELCxAHAAsgAQs3ACABAn9BvOABKAIAQQBIBEAgACABQfDfARBIDAELIAAgAUHw3wEQSAsiAEYEQA8LIAAg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LwEANgJ8IAYoAiwiAUUNAQJAAkACQAJAAkACQAJAAkACQAJ/AkACQCAGKAIcRQ0AIAYoAhBFBEAgBigCFA0BCyAGKAIgRQRAIAZBww42AigMDQsgAUEENgIoIAEgBkEQajYCAAJAAkACQCABKAIEIgRBKkYEQCABKAIYQQJGBEAgBkEANgJAIAEgASgCFCICQQFqNgIUIAIgASgCCGpBHzoAACABIAEoAhQiAkEBajYCFCACIAEoAghqQYsBOgAAIAEgASgCFCICQQFqNgIUIAIgASgCCGpBCDoAACABKAIcIgJFBEAgASABKAIUIgJBAWo2AhQgAiABKAIIakEAOgAAIAEgASgCFCICQQFqNgIUIAIgASgCCGpBADoAACABIAEoAhQiAkEBajYCFCACIAEoAghqQQA6AAAgASABKAIUIgJBAWo2AhQgAiABKAIIakEAOgAAIAEgASgCFCICQQFqNgIUIAIgASgCCGpBADoAAEECIQQgASgChAEiAkEJRwRAQQQgASgCiAFBAUpBAnQgAkECSBshBAsgASABKAIUIgJBAWo2AhQgAiABKAIIaiAEOgAAIAEgASgCFCICQQFqNgIUIAIgASgCCGpBAzoAAAwQCyACKAIkIQMgAigCHCELIAIoAhAhBSACKAIsIQggAigCACECIAEgASgCFCINQQFqNgIUQQIhBCANIAEoAghqIAhBAEdBAXQgAkEAR3IgBUEAR0ECdHIgC0EAR0EDdHIgA0EAR0EEdHI6AAAgASgCHCgCBCECIAEgASgCFCIDQQFqNgIUIAMgASgCCGogAjoAACABKAIcKAIEIQIgASABKAIUIgNBAWo2AhQgAyABKAIIaiACQQh2OgAAIAEoAhwvAQYhAiABIAEoAhQiA0EBajYCFCADIAEoAghqIAI6AAAgASgCHC0AByECIAEgASgCFCIDQQFqNgIUIAMgASgCCGogAjoAACABKAKEASICQQlHBEBBBCABKAKIAUEBSkECdCACQQJIGyEECyABIAEoAhQiAkEBajYCFCACIAEoAghqIAQ6AAAgASgCHCgCDCECIAEgASgCFCIDQQFqNgIUIAMgASgCCGogAjoAACABKAIcIgQoAhAEQCAEKAIUIQIgASABKAIUIgNBAWo2AhQgAyABKAIIaiACOgAAIAEoAhwoAhQhAiABIAEoAhQiA0EBajYCFCADIAEoAghqIAJBCHY6AAAgASgCHCEECyAEKAIsBEAgBiAGKAJAIAEoAgggASgCFBAaNgJACyABQcUANgIEIAFBADYCIAwCCyABKAIwQQx0QYDwAWshA0EAIQQCQCABKAKIAUEBSg0AIAEoAoQBIgJBAkgNAEHAACEEIAJBBkkNAEGAAUHAASACQQZGGyEECyABQfEANgIEIAEgASgCFCICQQFqNgIUIAIgASgCCGogAyAEciICQSByIAIgASgCbBsiAkEIdjoAACABIAEoAhQiA0EBajYCFCADIAEoAghqIAJBH3AgAnJBH3M6AAAgASgCbARAIAYoAkAhAiABIAEoAhQiA0EBajYCFCADIAEoAghqIAJBGHY6AAAgASABKAIUIgNBAWo2AhQgAyABKAIIaiACQRB2OgAAIAYoAkAhAiABIAEoAhQiA0EBajYCFCADIAEoAghqIAJBCHY6AAAgASABKAIUIgNBAWo2AhQgAyABKAIIaiACOgAACyAGQQE2AkAgASgCBCEECyAEQcUARw0BIAEoAhwhBAsCQCAEKAIQBEAgASgCFCEDAkAgASgCICICIAQvARRPDQADQCABKAIUIg0gASgCDEYEfyAEKAIsRSADIA1PckUEQCAGIAYoAkAgASgCCCADaiANIANrEBo2AkALAkACfyAGKAIsIgIoArwtIgNBEEYEQCACIAIoAhQiA0EBajYCFCADIAIoAghqIAItALgtOgAAIAIgAigCFCIDQQFqNgIUIAMgAigCCGogAkG5LWotAAA6AAAgAkEAOwG4LUEADAELIANBCEgNASACIAIoAhQiA0EBajYCFCADIAIoAghqIAItALgtOgAAIAIgAkG5LWotAAA7AbgtIAIoArwtQQhrCyEDIAIgAzYCvC0LAkAgAigCFCIDIAYoAiAiBCADIARJGyIDRQ0AIAYoAhwgAigCECADEBcaIAYgBigCHCADajYCHCACIAIoAhAgA2o2AhAgBiAGKAIkIANqNgIkIAYgBigCICADazYCICACIAIoAhQiBCADazYCFCADIARHDQAgAiACKAIINgIQCyABKAIcIQQgASgCFCINIAEoAgxGBEAgDSEDDAMLIA0hAyABKAIgBSACCyAEKAIQai0AACECIAEgDUEBajYCFCABKAIIIA1qIAI6AAAgASABKAIgQQFqIgI2AiAgAiABKAIcIgQvARRJDQALCwJAIAQoAixFDQAgASgCFCICIANNDQAgBiAGKAJAIAEoAgggA2ogAiADaxAaNgJACyABKAIgIAQoAhRHDQEgAUHJADYCBCABQQA2AiAMAwsgAUHJADYCBAwCCyABKAIEIQQLIARByQBHDQQgASgCHCEECyAEKAIcRQ0FIAEoAhQhAwNAIAEoAhwhBCABKAIUIg0gASgCDEYEQCAEKAIsRSADIA1PckUEQCAGIAYoAkAgASgCCCADaiANIANrEBo2AkALAkACfyAGKAIsIgIoArwtIgNBEEYEQCACIAIoAhQiA0EBajYCFCADIAIoAghqIAItALgtOgAAIAIgAigCFCIDQQFqNgIUIAMgAigCCGogAkG5LWotAAA6AAAgAkEAOwG4LUEADAELIANBCEgNASACIAIoAhQiA0EBajYCFCADIAIoAghqIAItALgtOgAAIAIgAkG5LWotAAA7AbgtIAIoArwtQQhrCyEDIAIgAzYCvC0LAkAgAigCFCIDIAYoAiAiBCADIARJGyIDRQ0AIAYoAhwgAigCECADEBcaIAYgBigCHCADajYCHCACIAIoAhAgA2o2AhAgBiAGKAIkIANqNgIkIAYgBigCICADazYCICACIAIoAhQiBCADazYCFCADIARHDQAgAiACKAIINgIQCyABKAIcIQQgASgCFCINIAEoAgxGDQMgDSEDCyAEKAIcIXMgASABKAIgIgRBAWo2AiAgcyAEai0AACECIAEgDUEBajYCFCABKAIIIA1qIAI6AAAgAg0ACyABKAIcIQQgAyENQQEMAgsgBkHQDjYCKAwLC0EACyF0AkAgBCgCLEUNACABKAIUIgMgDU0NACAGIAYoAkAgASgCCCANaiADIA1rEBo2AkALIHQNASABKAIEIQQLIARB2wBHDQMgASgCHCEEDAILIAFBADYCIAsgAUHbADYCBAsgBCgCJEUNASABKAIUIQMCfwJAA0AgASgCHCEEIAEoAhQiDSABKAIMRgRAIAQoAixFIAMgDU9yRQRAIAYgBigCQCABKAIIIANqIA0gA2sQGjYCQAsCQAJ/IAYoAiwiAigCvC0iA0EQRgRAIAIgAigCFCIDQQFqNgIUIAMgAigCCGogAi0AuC06AAAgAiACKAIUIgNBAWo2AhQgAyACKAIIaiACQbktai0AADoAACACQQA7AbgtQQAMAQsgA0EISA0BIAIgAigCFCIDQQFqNgIUIAMgAigCCGogAi0AuC06AAAgAiACQbktai0AADsBuC0gAigCvC1BCGsLIQMgAiADNgK8LQsCQCACKAIUIgMgBigCICIEIAMgBEkbIgNFDQAgBigCHCACKAIQIAMQFxogBiAGKAIcIANqNgIcIAIgAigCECADajYCECAGIAYoAiQgA2o2AiQgBiAGKAIgIANrNgIgIAIgAigCFCIEIANrNgIUIAMgBEcNACACIAIoAgg2AhALIAEoAhwhBCABKAIUIg0gASgCDEYNAiANIQMLIAQoAiQhdSABIAEoAiAiBEEBajYCICB1IARqLQAAIQIgASANQQFqNgIUIAEoAgggDWogAjoAACACDQALIAEoAhwhBCADIQ1BAQwBC0EACyF2AkAgBCgCLEUNACABKAIUIgMgDU0NACAGIAYoAkAgASgCCCANaiADIA1rEBo2AkALIHYNASABKAIEIQQLIARB5wBHDQMgASgCHCEEDAELIAFB5wA2AgQLIAQoAixFDQAgASgCFCIEQQJqIg0gASgCDCICSwR/IAZBEGoQPiABKAIUIgRBAmohDSABKAIMBSACCyANSQ0BIAYoAkAhAiABIARBAWo2AhQgASgCCCAEaiACOgAAIAYoAkAhAiABIAEoAhQiA0EBajYCFCADIAEoAghqIAJBCHY6AAAgBkEANgJACyABQfEANgIECwJAIAEoAhRFDQACQAJ/IAYoAiwiAygCvC0iAkEQRgRAIAMgAygCFCICQQFqNgIUIAIgAygCCGogAy0AuC06AAAgAyADKAIUIgJBAWo2AhQgAiADKAIIaiADQbktai0AADoAACADQQA7AbgtQQAMAQsgAkEISA0BIAMgAygCFCICQQFqNgIUIAIgAygCCGogAy0AuC06AAAgAyADQbktai0AADsBuC0gAygCvC1BCGsLIQIgAyACNgK8LQsCQCADKAIUIgQgBigCICICIAIgBEsbIgRFDQAgBigCHCADKAIQIAQQFxogBiAGKAIcIARqNgIcIAMgAygCECAEajYCECAGIAYoAiQgBGo2AiQgBiAGKAIgIARrIgI2AiAgAyADKAIUIgsgBGs2AhQgBCALRw0AIAMgAygCCDYCEAsgAg0AIAFBfzYCKAwBCwJAIAEoAgRBmgVGBEAgBigCFARAIAZBww42AigMAwsgASgCdEUNAQsCfwJAAkACQCABKAKIAUECaw4CAAECCwJ/AkADQCABKAJ0RQRAIAEQKyABKAJ0RQ0CCyABQQA2AmAgASgCOCABKAJsai0AACECIAEoAqQtIAEoAqAtIgNBAXRqQQA7AQAgASADQQFqNgKgLSADIAEoApgtaiACOgAAIAEgAkECdGoiAiACLwGUAUEBajsBlAEgASABKAJ0QQFrNgJ0IAEgASgCbEEBaiIDNgJsIAEoAqAtIAEoApwtQQFrRw0AIAEgASgCXCICQQBOBH8gASgCOCACagVBAAsgAyACa0EAEBwgASABKAJsNgJcAkACfyABKAIAIgMoAhwiAigCvC0iBEEQRgRAIAIgAigCFCIEQQFqNgIUIAQgAigCCGogAi0AuC06AAAgAiACKAIUIgRBAWo2AhQgBCACKAIIaiACQbktai0AADoAACACQQA7AbgtQQAMAQsgBEEISA0BIAIgAigCFCIEQQFqNgIUIAQgAigCCGogAi0AuC06AAAgAiACQbktai0AADsBuC0gAigCvC1BCGsLIQQgAiAENgK8LQsCQCACKAIUIgQgAygCECILIAQgC0kbIgRFDQAgAygCDCACKAIQIAQQFxogAyADKAIMIARqNgIMIAIgAigCECAEajYCECADIAMoAhQgBGo2AhQgAyADKAIQIARrNgIQIAIgAigCFCIDIARrNgIUIAMgBEcNACACIAIoAgg2AhALIAEoAgAoAhANAAtBAAwBCyABQQA2ArQtIAEgASgCXCICQQBOBH8gASgCOCACagVBAAsgASgCbCACa0EBEBwgASABKAJsNgJcAkACfyABKAIAIgMoAhwiAigCvC0iBEEQRgRAIAIgAigCFCIEQQFqNgIUIAQgAigCCGogAi0AuC06AAAgAiACKAIUIgRBAWo2AhQgBCACKAIIaiACQbktai0AADoAACACQQA7AbgtQQAMAQsgBEEISA0BIAIgAigCFCIEQQFqNgIUIAQgAigCCGogAi0AuC06AAAgAiACQbktai0AADsBuC0gAigCvC1BCGsLIQQgAiAENgK8LQsCQCACKAIUIgQgAygCECILIAQgC0kbIgRFDQAgAygCDCACKAIQIAQQFxogAyADKAIMIARqNgIMIAIgAigCECAEajYCECADIAMoAhQgBGo2AhQgAyADKAIQIARrNgIQIAIgAigCFCIDIARrNgIUIAMgBEcNACACIAIoAgg2AhALQQNBAiABKAIAKAIQGwsMAgsCfwNAAkACfwJAAkAgASgCdCILQYMCTwRAIAFBADYCYCABKAJsIQUMAQsgARArIAEoAnQiCwRAIAFBADYCYCABKAJsIQUgC0ECSw0BIAEoAjghDQwCCyABQQA2ArQtIAEgASgCXCICQQBOBH8gASgCOCACagVBAAsgASgCbCACa0EBEBwgASABKAJsNgJcAkACfyABKAIAIgMoAhwiAigCvC0iBEEQRgRAIAIgAigCFCIEQQFqNgIUIAQgAigCCGogAi0AuC06AAAgAiACKAIUIgRBAWo2AhQgBCACKAIIaiACQbktai0AADoAACACQQA7AbgtQQAMAQsgBEEISA0BIAIgAigCFCIEQQFqNgIUIAQgAigCCGogAi0AuC06AAAgAiACQbktai0AADsBuC0gAigCvC1BCGsLIQQgAiAENgK8LQsCQCACKAIUIgQgAygCECILIAQgC0kbIgRFDQAgAygCDCACKAIQIAQQFxogAyADKAIMIARqNgIMIAIgAigCECAEajYCECADIAMoAhQgBGo2AhQgAyADKAIQIARrNgIQIAIgAigCFCIDIARrNgIUIAMgBEcNACACIAIoAgg2AhALQQNBAiABKAIAKAIQGwwFCyABKAI4IQ0gBUUEQEEAIQUMAQsgBSANaiIEQQFrLQAAIgMgBC0AAEcNACADIAQtAAFHDQAgAyAELQACRw0AIARBggJqIQdBAiEIAkACQAJAAkACQAJAAkADQCAEIAhqIgItAAEgA0YEQCADIAItAAJHDQIgAyACLQADRw0DIAMgAi0ABEcNBCADIAItAAVHDQUgAyACLQAGRw0GIAMgAi0AB0cNByAIQfkBSyF3IAQgCEEIaiIIaiECIHcNCCADIAItAABGDQEMCAsLIAJBAWohAgwGCyACQQJqIQIMBQsgAkEDaiECDAQLIAJBBGohAgwDCyACQQVqIQIMAgsgAkEGaiECDAELIAJBB2ohAgsgASACIAdrQYICaiICIAsgAiALSRsiAzYCYCABKAKgLSICIANBA0kNARogASgCpC0gAkEBdGpBATsBACABIAJBAWo2AqAtIAEoApgtIAJqIANBA2siAjoAACACQf8BcUGA4QBqLQAAQQJ0IAFqQZgJaiICIAIvAQBBAWo7AQAgASgCYCECIAFBADYCYCABIAEvAYgTQQFqOwGIEyABIAEoAnQgAms2AnQgASACIAEoAmxqIgI2AmwMAgsgASgCoC0LIQIgBSANai0AACEDIAEoAqQtIAJBAXRqQQA7AQAgASACQQFqNgKgLSABKAKYLSACaiADOgAAIAEgA0ECdGoiAiACLwGUAUEBajsBlAEgASABKAJ0QQFrNgJ0IAEgASgCbEEBaiICNgJsCyABKAKgLSABKAKcLUEBa0cNACABIAEoAlwiA0EATgR/IAEoAjggA2oFQQALIAIgA2tBABAcIAEgASgCbDYCXAJAAn8gASgCACIDKAIcIgIoArwtIgRBEEYEQCACIAIoAhQiBEEBajYCFCAEIAIoAghqIAItALgtOgAAIAIgAigCFCIEQQFqNgIUIAQgAigCCGogAkG5LWotAAA6AAAgAkEAOwG4LUEADAELIARBCEgNASACIAIoAhQiBEEBajYCFCAEIAIoAghqIAItALgtOgAAIAIgAkG5LWotAAA7AbgtIAIoArwtQQhrCyEEIAIgBDYCvC0LAkAgAigCFCIEIAMoAhAiCyAEIAtJGyIERQ0AIAMoAgwgAigCECAEEBcaIAMgAygCDCAEajYCDCACIAIoAhAgBGo2AhAgAyADKAIUIARqNgIUIAMgAygCECAEazYCECACIAIoAhQiAyAEazYCFCADIARHDQAgAiACKAIINgIQCyABKAIAKAIQDQALQQALDAELIAFBBCABKAKEAUEMbEGIHGooAgARAgALIgJBfnFBAkYEQCABQZoFNgIECyACQX1xRQRAIAYoAiANAiABQX82AigMAgsgAkEBRw0AIAFBAEEAQQAQViAGQRBqED4gBigCIA0AIAFBfzYCKAwBCwJAIAEoAhgiA0EATA0AIAYoAkAhAgJAIANBAkYEQCABIAEoAhQiA0EBajYCFCADIAEoAghqIAI6AAAgBigCQCECIAEgASgCFCIDQQFqNgIUIAMgASgCCGogAkEIdjoAACAGLwFCIQIgASABKAIUIgNBAWo2AhQgAyABKAIIaiACOgAAIAYtAEMhAiABIAEoAhQiA0EBajYCFCADIAEoAghqIAI6AAAgBigCGCECIAEgASgCFCIDQQFqNgIUIAMgASgCCGogAjoAACAGKAIYIQIgASABKAIUIgNBAWo2AhQgAyABKAIIaiACQQh2OgAAIAYvARohAiABIAEoAhQiA0EBajYCFCADIAEoAghqIAI6AAAgBi0AGyEHDAELIAEgASgCFCIDQQFqNgIUIAMgASgCCGogAkEYdjoAACABIAEoAhQiA0EBajYCFCADIAEoAghqIAJBEHY6AAAgBigCQCEHIAEgASgCFCICQQFqNgIUIAIgASgCCGogB0EIdjoAAAsgASABKAIUIgJBAWo2AhQgAiABKAIIaiAHOgAAIAZBEGoQPiABKAIYIgJBAEoEQCABQQAgAms2AhgLIAEoAhRFDQAMAQsgBigCLCIBRQ0BIAYoAiQhDAJAAkAgASgCBCICQcUAaw4tAQMDAwEDAwMDAwMDAwMDAwMDAwMDAwEDAwMDAwMDAwMDAwEDAwMDAwMDAwMBAAsgAkGaBUYNACACQSpHDQILIAEoAggiAwRAIAYoAjggAyAGKAI0EQAAIAYoAiwhAQsgASgCRCIDBEAgBigCOCADIAYoAjQRAAAgBigCLCEBCyABKAJAIgMEQCAGKAI4IAMgBigCNBEAACAGKAIsIQELIAEoAjgiAwRAIAYoAjggAyAGKAI0EQAAIAYoAiwhAQsgBigCOCABIAYoAjQRAAAgAkHxAEcNBAwBCyAGKAIsIgFFDQACQAJAIAEoAgQiAkHFAGsOLQECAgIBAgICAgICAgICAgICAgICAgIBAgICAgICAgICAgIBAgICAgICAgICAQALIAJBmgVGDQAgAkEqRw0BCyABKAIIIgIEQCAGKAI4IAIgBigCNBEAACAGKAIsIQELIAEoAkQiAgRAIAYoAjggAiAGKAI0EQAAIAYoAiwhAQsgASgCQCICBEAgBigCOCACIAYoAjQRAAAgBigCLCEBCyABKAI4IgIEQCAGKAI4IAIgBigCNBEAACAGKAIsIQELIAYoAjggASAGKAI0EQAACyAwQQBODQNBfyE6DAYLIGFFBEAgACgCPCEBQQAhDEG4gBAQHSJARSBAQQNxckUEQCBAQQA7AZqAECAGICk2AhAgQEEJQQwgASABQQxOGyABQQBMGyIDOwGYgBAgQEEANgKcgBAgQEEAQYCACBAYIhxBgIAIakH/AUGAgAgQGBogHCAjICkgSGxqIj1BgIAEayIBNgKEgBAgHEGAgAQ2ApSAECAcQoCAhICAgMAANwKMgBAgHCABNgKIgBAgHCA9NgKAgBAgMCBcSCErQQAhAkEAIQdBACEIQQAhCUEAIQ0jAEEQayIvJAACQCAGKAIQIgFBgICA8AdLDQAgHCAcKAKAgBAgAWo2AoCAECADQQxsIgJB5BpqKAIAIRoCQAJ/IAJB4BpqIgIoAgBFBEAgBkEANgIQICggMGohLCABID1qITkgPSEPICghDgJAIAFBDUkNACA5QQxrIjYgD0kNACA5QQVrIR0gOUEGayE1IDlBCGshHyAcQYCACGohMyAvQQxqQQNyIRMgGkGBAUkhNwNAIBwoAoiAECIkIBwoAoyAECIWaiEnIBwoApCAECIlQYCABGohLSAcKAKEgBAiGUF/cyAPaiEyICQgJWoiEUEEaiE7IBYgGWoiF0EEaiEVIBwoApSAECEhQQAhIiAPIQsDQCAhIQEgJSALIBlrIiFB//8DayAhIC1JGyEbIAsoAAAhEAJAIAEgIU8NACAPICJqIAEiAiAZaiIDa0EBcQRAIDMgAUH//wNxQQF0akH//wMgASAcIAMoAABBsfPd8XlsQQ92Qfz/B3FqIgMoAgBrIgQgBEH//wNPGzsBACADIAE2AgAgAUEBaiECCyAiIDJqIAFGDQADQCAzIAJB//8DcUEBdGpB//8DIAIgHCACIBlqKAAAQbHz3fF5bEEPdkH8/wdxaiIBKAIAayIDIANB//8DTxs7AQAgASACNgIAIDMgAkEBaiIBQf//A3FBAXRqQf//AyABIBwgASAZaigAAEGx893xeWxBD3ZB/P8HcWoiAygCAGsiBCAEQf//A08bOwEAIAMgATYCACACQQJqIgIgIUkNAAsLIBwgITYClIAQAkACQCAaRSAcIAsoAABBsfPd8XlsQQ92Qfz/B3FqKAIAIgogG0lyDQAgC0EBayEuIBBB//8DcSAQQRB2RiAQQf8BcSAQQRh2RnEhPCALQQhqISogC0EEaiEDQQAhFEEDIQQgGiEYQQAhHgNAAkACQAJ/AkACQCAKIBZPBEAgBCAuai8AACAKIBlqIgUgBGpBAWsvAABHDQUgBSgAACAQRw0FIAVBBGohAiAfIAMgH08EfyADBSADKAAAIAIoAABzIgENAiAFQQhqIQIgKgsiAUsEQANAIAEoAAAgAigAAHMiEgRAIAEgEmhBA3ZqIANrIQIMBwsgAkEEaiECIAFBBGoiASAfSQ0ACwsCQCABIDVPDQAgAi8AACABLwAARw0AIAJBAmohAiABQQJqIQELIAEgHUkEfyABIAItAAAgAS0AAEZqBSABCyADayECDAQLIAogJGoiASgAACAQRw0EIAFBBGohAiADIB0gCyAWIApraiIFIAUgHUsbIhJBA2siBU8EfyADBSADKAAAIAIoAABzIgINAiABQQhqIQIgKgsiASAFSQRAA0AgASgAACACKAAAcyIgBEAgASAgaEEDdmogA2sMBQsgAkEEaiECIAFBBGoiASAFSQ0ACwsCQCABIBJBAWtPDQAgAi8AACABLwAARw0AIAJBAmohAiABQQJqIQELIAEgEkkEfyABIAItAAAgAS0AAEZqBSABCyADawwCCyABaEEDdiECDAILIAJoQQN2C0EEaiIFIAtqIBJHIBIgHU9yRQRAIBchAQJ/AkAgEiICIB9JBEAgAigAACABKAAAcyIBDQEgAkEEaiECIBUhAQsgAiAfSQRAA0AgAigAACABKAAAcyIgBEAgAiAgaEEDdmogEmsMBAsgAUEEaiEBIAJBBGoiAiAfSQ0ACwsCQCACIDVPDQAgAS8AACACLwAARw0AIAFBAmohASACQQJqIQILIAIgHUkEfyACIAEtAAAgAi0AAEZqBSACCyASawwBCyABaEEDdgsgBWohBQsgCiAZaiAJIAQgBUgiARshCSAFIAQgARshBAwBCyACQQRqIgEgBCABIARKIgEbIQQgBSAJIAEbIQkLAkACQAJAAkACQCA3IDMgCkH//wNxQQF0ai8BACI/QQFHcg0AIBRFBEBBASEUIDxFDQECQAJAIAMiAiAfTw0AA0AgAigAACAQcyIBRQRAIB8gAkEEaiICSw0BDAILCyACIAFoQQN2aiECDAELIAIgHU8NACACIB0gAmtqIQEgECEFA0AgAi0AACAFQf8BcUcNASAFQQh2IQUgAkEBaiICIAFHDQALIAEhAgsgAiADa0EEaiEeQQIhFAsgFEECRw0AIApBAWsiICAbSQ0AQQIhFCAgIBZrQXxLDQAgJCAZIBYgIEsiNBsgIGoiEigAACAQRw0AIBJBBGoiCiECICcgHSA0GyIFQQNrIgEgCk0NAQNAIAIoAAAgEHMiFEUEQCABIAJBBGoiAksNAQwDCwsgAiAUaEEDdmohAgwCCyAKID9rIQoMAgsgAiAFTw0AIBAhAQNAIAItAAAgAUH/AXFHDQEgAUEIdiEBIAJBAWoiAiAFRw0ACyAFIQILIAIgCmsiAUEEaiEUIBYgIE0EfyAXBSAnIBIgFGpGBEAgECABQQN0dyEBAkACQCAXIgIgH08NAANAIAIoAAAgAXMiBUUEQCAfIAJBBGoiAksNAQwCCwsgAiAFaEEDdmohAgwBCyACIB1PDQAgAiAdIAJraiEFA0AgAi0AACABQf8BcUcNASABQQh2IQEgAkEBaiICIAVHDQALIAUhAgsgFCAXayACaiEUCyARCyEFIC8gEDYCDCAFQQRqIQogEiEBA0AgCiABIgJNBEAgAUEEayIBKAAAIBBGDQELCwJAIAIgBU0NACATIQEDQCACQQFrIgotAAAgAS0AAEcNASABQQFrIQEgCiICIAVLDQALIAUhAgsgICAgIDQgEiASIAJrIgprIBdHciAWICVNcgR/IAoFIC8gEEEAIAprQQN0dyIFNgIMICchAQNAIDsgASICTQRAIAFBBGsiASgAACAFRg0BCwsgEyEBAkAgAiARTQ0AA0AgAkEBayIFLQAAIAEtAABHDQEgAUEBayEBIAUiAiARSw0ACyARIQILIAogJ2ogAmsLayIBIBsgASAbSxsiAmsgFGoiASAeSSAUIB5LckUEQCAWICAgHmsgFGoiASABIBZrQXxLGyEKQQIhFAwBC0ECIRQgAiAWa0F8SwRAIBYhCgwBCwJAIAEgHiABIB5JGyIBIARNBEAgCSEFIAQhAQwBCyALIAIgGWoiBWtB//8DSg0CCyAzIAJB//8DcUEBdGovAQAiBCACSwRAIAUhCSABIQQMAgsgAiAEayEKIAEhBCAFIQkLIAogG0kNACAYQQFrIhgNAQsLIARBA0wNACAPIRcgDiEVIAshDiAJIgMhFCAEIRYDQCADIQkCQAJAIAsgBCInaiIPIDZLDQAgHCgCkIAQIjsgD0ECayIkIBwoAoSAECIqayIBQf//A2sgO0GAgARqIAFLGyE0ICQoAAAhEiABIBwoApSAECICSwRAA0AgMyACQf//A3FBAXRqQf//AyACIBwgAiAqaigAAEGx893xeWxBD3ZB/P8HcWoiAygCAGsiBCAEQf//A08bOwEAIAMgAjYCACACQQFqIgIgAUkNAAsLIBwoAoyAECEZIBwoAoiAECEyIBwgATYClIAQIBwgJCgAAEGx893xeWxBD3ZB/P8HcWooAgAiCiA0SQ0AIAsgJGshLSALQQFrIUUgEkH//wNxIBJBEHZGIBJB/wFxIBJBGHZGcSFHIBkgMmohICAZICpqIiFBBGohHiAPQQZqITwgD0ECaiEQIDIgO2oiEUEEaiE+QQAhGyAnIQQgGiEYQQAhIiAIIQMDQAJAAkACfwJAAkAgCiAZTwRAIAQgRWovAAAgCiAqaiIIIC1qIARqQQFrLwAARw0FIAgoAAAgEkcNBQJAIAsgJEYEQEEAIQUMAQsgLSAhIAhrIgEgASAtSBsiJUEfdSAlcSEBQQAhAgNAICUgAiIFTgRAIAEhBQwCCyAkIAVBAWsiAmotAAAgAiAIai0AAEYNAAsLIAhBBGohAiAfIBAgH08EfyAQBSAQKAAAIAIoAABzIgENAiAIQQhqIQIgPAsiAUsEQANAIAEoAAAgAigAAHMiJQRAIAEgJWhBA3ZqIBBrIQIMBwsgAkEEaiECIAFBBGoiASAfSQ0ACwsCQCABIDVPDQAgAi8AACABLwAARw0AIAJBAmohAiABQQJqIQELIAEgHUkEfyABIAItAAAgAS0AAEZqBSABCyAQayECDAQLIAogMmoiCCgAACASRw0EIAhBBGohAiAQIB0gJCAZIApraiIBIAEgHUsbIgVBA2siJU8EfyAQBSAQKAAAIAIoAABzIgENAiAIQQhqIQIgPAsiASAlSQRAA0AgASgAACACKAAAcyIuBEAgASAuaEEDdmogEGsMBQsgAkEEaiECIAFBBGoiASAlSQ0ACwsCQCABIAVBAWtPDQAgAi8AACABLwAARw0AIAJBAmohAiABQQJqIQELIAEgBUkEfyABIAItAAAgAS0AAEZqBSABCyAQawwCCyABaEEDdiECDAILIAFoQQN2CyEBICQgAUEEaiIlaiAFRyAFIB1PckUEQCAhIQECfwJAIAUiAiAfSQRAIAIoAAAgASgAAHMiAQ0BIAJBBGohAiAeIQELIAIgH0kEQANAIAIoAAAgASgAAHMiLgRAIAIgLmhBA3ZqIAVrDAQLIAFBBGohASACQQRqIgIgH0kNAAsLAkAgAiA1Tw0AIAEvAAAgAi8AAEcNACABQQJqIQEgAkECaiECCyACIB1JBH8gAiABLQAAIAItAABGagUgAgsgBWsMAQsgAWhBA3YLICVqISULAkAgCyAkRgRAQQAhAQwBCyAtIBEgCGsiASABIC1IGyIuQR91IC5xIQVBACECA0AgLiACIgFOBEAgBSEBDAILICQgAUEBayICai0AACACIAhqLQAARg0ACwsgJSABayICIARMDQEgASAkaiENIAogKmogAWohAyACIQQMAQsgAiAFa0EEaiIBIARMDQAgBSAkaiENIAUgCGohAyABIQQLAkACQAJAAkACQCA3IDMgCkH//wNxQQF0ai8BACIIQQFHcg0AIBtFBEBBASEbIEdFDQECQAJAIBAiAiAfTw0AA0AgAigAACAScyIBRQRAIB8gAkEEaiICSw0BDAILCyACIAFoQQN2aiECDAELIAIgHU8NACACIB0gAmtqIQEgEiEFA0AgAi0AACAFQf8BcUcNASAFQQh2IQUgAkEBaiICIAFHDQALIAEhAgtBAiEbIAIgEGtBBGohIgsgG0ECRw0AIApBAWsiJSA0SQ0AQQIhGyAlIBlrQXxLDQAgMiAqIBkgJUsiPxsgJWoiBSgAACASRw0AIAVBBGoiCiECICAgHSA/GyIIQQNrIgEgCk0NAQNAIAIoAAAgEnMiG0UEQCABIAJBBGoiAksNAQwDCwsgAiAbaEEDdmohAgwCCyAKIAhrIQoMAgsgAiAITw0AIBIhAQNAIAItAAAgAUH/AXFHDQEgAUEIdiEBIAJBAWoiAiAIRw0ACyAIIQILIAIgCmsiAUEEaiEbAn8gGSAlTQRAICEiCAwBCyAgIAUgG2pGBEAgEiABQQN0dyEBAkACQCAhIgIgH08NAANAIAIoAAAgAXMiCEUEQCAfIAJBBGoiAksNAQwCCwsgAiAIaEEDdmohAgwBCyACIB1PDQAgAiAdIAJraiEIA0AgAi0AACABQf8BcUcNASABQQh2IQEgAkEBaiICIAhHDQALIAghAgsgGyAhayACaiEbCyARIggLIS4gLyASNgIMIC5BBGohCiAFIQEDQCAKIAEiAk0EQCABQQRrIgEoAAAgEkYNAQsLAkAgAiAuTQ0AIBMhAQNAIAJBAWsiCi0AACABLQAARw0BIAFBAWshASAKIgIgLksNAAsgCCECCyAlICUgPyAFIAUgAmsiCGsgIUdyIBkgO01yBH8gCAUgLyASQQAgCGtBA3R3IgU2AgwgICEBA0AgPiABIgJNBEAgAUEEayIBKAAAIAVGDQELCyATIQECQCACIBFNDQADQCACQQFrIgUtAAAgAS0AAEcNASABQQFrIQEgBSICIBFLDQALIBEhAgsgICACayAIagtrIgEgNCABIDRLGyIKayAbaiIBICJJIBsgIktyRQRAIBkgJSAiayAbaiIBIAEgGWtBfEsbIQpBAiEbDAELQQIhGyAKIBlrQXxLBEAgGSEKDAELIAsgJEcNAAJAIAEgIiABICJJGyICIARNBEAgDSEBIAMhBSAEIQIMAQsgCyEBICQgCiAqaiIFa0H//wNKDQILIDMgCkH//wNxQQF0ai8BACIDIApLBEAgASENIAUhAyACIQQMAgsgCiADayEKIAIhBCAFIQMgASENCyAKIDRJDQAgGEEBayIYDQELCyAEICdHDQEgAyEICyArRSALIBdrIgIgFUEBaiIKIAJB/wFuampBCGogLE1yRQRAQQAhAgwKCwJAIAJBD08EQCAVQfABOgAAIAJBD2siAUH/AU8EQCAKQf8BIAJBjgJrIgNB/wFuIgFBAWoQGBogASAVakECaiEKIAFBgX5sIANqIQELIAogAToAACAKQQFqIQoMAQsgFSACQQR0OgAACyACIApqIQMgFyECIAohAQNAIAEgAikAADcAACACQQhqIQIgAUEIaiIBIANJDQALIAMgCyAJazsAACArRSADQQJqIg4gJ0EEayIBQf8BbmpBBmogLE1yRQRAQQAhAgwKCyAVLQAAIQIgAUEPTwRAIBUgAkEPajoAACAnQRNrIgJB/gNPBEAgDkH/ASAnQZEEayIBQf4DbiICQQF0IgNBAmoQGBogCiAXayALaiADakEEaiEOIAJBgnxsIAFqIQILIAJB/wFPBEAgDkH/AToAACAOQQFqIQ4gAkH/AWshAgsgDiACOgAAIA5BAWohDgwECyAVIAEgAmo6AAAMAwsgDiALIA0gCyAWakkgCyAOS3EiARshIiADIQggDSILICJrQQNIDQAgFiAnIAEbIQ4gFCAJIAEbIQkgFyEQA0AgDiAiaiIXQQNqIUcgIkESIA4gDkESThsiLmohPAJAA0ACQAJAAn8CQCALICJrIgFBEUoNACAiIAtrIAEgBGpBBGsgLiA8IAQgC2pBBGtLG2oiAUEATA0AIAQgAWshFiABIANqIQggASALagwBCyADIQggBCEWIAsLIg0gFmoiDyA2Sw0AIBwoApCAECI7IA9BA2siHiAcKAKEgBAiJGsiAUH//wNrIDtBgIAEaiABSxshNCAeKAAAIRIgASAcKAKUgBAiAksEQANAIDMgAkH//wNxQQF0akH//wMgAiAcIAIgJGooAABBsfPd8XlsQQ92Qfz/B3FqIgMoAgBrIgQgBEH//wNPGzsBACADIAI2AgAgAkEBaiICIAFJDQALCyAcKAKMgBAhESAcKAKIgBAhMiAcIAE2ApSAECAcIB4oAABBsfPd8XlsQQ92Qfz/B3FqKAIAIgogNEkNACANIB5rIS0gDUEBayE+IBJB//8DcSASQRB2RiASQf8BcSASQRh2RnEhQiARIDJqIRkgESAkaiIUQQRqISAgD0EFaiE/IA9BAWohISAyIDtqIidBBGohSUEAIRsgFiEEIBohGEEAISogByEDIAwhCwNAAkACQAJ/AkACQCAKIBFPBEAgBCA+ai8AACAKICRqIgcgLWogBGpBAWsvAABHDQUgBygAACASRw0FAkAgDSAeRgRAQQAhBQwBCyAtIBQgB2siASABIC1IGyIMQR91IAxxIQFBACECA0AgDCACIgVOBEAgASEFDAILIB4gBUEBayICai0AACACIAdqLQAARg0ACwsgB0EEaiECIB8gHyAhTQR/ICEFICEoAAAgAigAAHMiAQ0CIAdBCGohAiA/CyIBSwRAA0AgASgAACACKAAAcyIMBEAgASAMaEEDdmogIWshAgwHCyACQQRqIQIgAUEEaiIBIB9JDQALCwJAIAEgNU8NACACLwAAIAEvAABHDQAgAkECaiECIAFBAmohAQsgASAdSQR/IAEgAi0AACABLQAARmoFIAELICFrIQIMBAsgCiAyaiIHKAAAIBJHDQQgB0EEaiECICEgHSAeIBEgCmtqIgEgASAdSxsiBUEDayIMTwR/ICEFICEoAAAgAigAAHMiAQ0CIAdBCGohAiA/CyIBIAxJBEADQCABKAAAIAIoAABzIiUEQCABICVoQQN2aiAhawwFCyACQQRqIQIgAUEEaiIBIAxJDQALCwJAIAEgBUEBa08NACACLwAAIAEvAABHDQAgAkECaiECIAFBAmohAQsgASAFSQR/IAEgAi0AACABLQAARmoFIAELICFrDAILIAFoQQN2IQIMAgsgAWhBA3YLIQEgHiAB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BCEACyAAIAFPDQADQCAAIAgtAAA6AAAgCEEBaiEIIABBAWoiACABSQ0ACwsgASAMayEAIAMgDjYCAAJAAkAgASAFayAMSQRAIAwgASAGa0sNAyAHIAcgACAFayIAaiIDIApqTwRAIAEgAyAKEB4aDAMLIAEgA0EAIABrEB4hECACIAAgCmoiCjYCBCAQIABrIQEMAQsgACEFCyABIApqIQIgCkEHTARAIApBAEwNAQNAIAEgBS0AADoAACAFQQFqIQUgAUEBaiIBIAJJDQALDAELAkAgASAFayIAQQdNBEAgASAFLQAAOgAAIAEgBS0AAToAASABIAUtAAI6AAIgASAFLQADOgADIAEgBSAAQQJ0IgBB0LwBaigCAGoiAygAADYABCADIABB8LwBaigCAGshBQwBCyABIAUpAAA3AAALIAFBCGohACAFQQhqIQggAiAETQRAIAAgCmohAiAAIAhrQQ9MBEADQCAAIAgpAAA3AAAgCEEIaiEIIABBCGoiACACSQ0ADAMLAAsgACAIKQAANwAAIAAgCCkACDcACCABIAUpACA3ACAgASAFKQAYNwAYIApBIUkNASABQShqIQADQCAAIAgpACA3AAAgACAIKQAoNwAIIAAgCCkAMDcAECAAIAgpADg3ABggCEEgaiEIIABBIGoiACACSQ0ACwwBCwJAIAAgBEsEQCAAIQQMAQsgBCAAayEDAkAgACAIa0EPTARAIAghAQNAIAAgASkAADcAACABQQhqIQEgAEEIaiIAIARJDQALDAELIAAgCCkAADcAACAAIAgpAAg3AAggASAFKQAgNwAgIAEgBSkAGDcAGCADQSFIDQAgAUEoaiEAIAghAQNAIAAgASkAIDcAACAAIAEpACg3AAggACABKQAwNwAQIAAgASkAODcAGCABQSBqIQEgAEEgaiIAIARJDQALCyADIAhqIQgLIAIgBE0NAANAIAQgCC0AADoAACAIQQFqIQggBEEBaiIEIAJJDQALCyANIQsLIAsLpQgBBn8jAEHwAWsiDiQAIA4gAzYCfEF/IQ0CQAJAAkACQAJAIAIOBAEAAwIECyAGRQRAQbh/IQ0MBAtBbCENIAUtAAAiAiADSw0DIAggAkECdCICaigCACEDIAIgB2ooAgAhAiAAQQA6AAsgAEIANwIAIAAgAjYCDCAAIAM6AAogAEEAOwEI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ACgCFCIEQQFqNgIUIAQgACgCCGogAjoAACABQQJqIQEgA0ECayIDDQALCwvJBQEEfyAAQZQBaiEBA0AgASADQQJ0IgJqQQA7AQAgASACQQRyakEAOwEAIAEgAkEIcmpBADsBACABIAJBDHJqQQA7AQAgASACQRByakEAOwEAIAEgAkEUcmpBADsBACADQQZyIgRBngJGRQRAIAEgBEECdGpBADsBACABIAJBHHJqQQA7AQAgA0EIaiEDDAELCyAAQQA7AfwUIABBADsBiBMgAEHEFWpBADsBACAAQcAVakEAOwEAIABBvBVqQQA7AQAgAEG4FWpBADsBACAAQbQVakEAOwEAIABBsBVqQQA7AQAgAEGsFWpBADsBACAAQagVakEAOwEAIABBpBVqQQA7AQAgAEGgFWpBADsBACAAQZwVakEAOwEAIABBmBVqQQA7AQAgAEGUFWpBADsBACAAQZAVakEAOwEAIABBjBVqQQA7AQAgAEGIFWpBADsBACAAQYQVakEAOwEAIABBgBVqQQA7AQAgAEH8E2pBADsBACAAQfgTakEAOwEAIABB9BNqQQA7AQAgAEHwE2pBADsBACAAQewTakEAOwEAIABB6BNqQQA7AQAgAEHkE2pBADsBACAAQeATakEAOwEAIABB3BNqQQA7AQAgAEHYE2pBADsBACAAQdQTakEAOwEAIABB0BNqQQA7AQAgAEHME2pBADsBACAAQcgTakEAOwEAIABBxBNqQQA7AQAgAEHAE2pBADsBACAAQbwTakEAOwEAIABBuBNqQQA7AQAgAEG0E2pBADsBACAAQbATakEAOwEAIABBrBNqQQA7AQAgAEGoE2pBADsBACAAQaQTakEAOwEAIABBoBNqQQA7AQAgAEGcE2pBADsBACAAQZgTakEAOwEAIABBlBNqQQA7AQAgAEGQE2pBADsBACAAQYwTakEAOwEAIABCADcCrC0gAEGUCWpBATsBACAAQQA2AqgtIABBADYCoC0LvwUCBX4EfyAAQShqIgcgACgCSCIJaiEIAn4gACkDACICQiBaBEAgACkDECIDQgeJIAApAwgiBEIBiXwgACkDGCIFQgyJfCAAKQMgIgFCEol8IARCz9bTvtLHq9lCfkIfiUKHla+vmLbem55/foVCh5Wvr5i23puef35CnaO16oOxjYr6AH0gA0LP1tO+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IAw7AQYgASADQQhqIgA2AgQgEyAGIAhqIgNJBEAgAyEFDAELIBQgESAgaikAAEKAxpX9y5vvjU9+ICeIp0ECdGogEUECajYCACAUIANBAmsiBikAAEKAxpX9y5vvjU9+ICeIp0ECdGogBiAOazYCACAEIQggByEGA0ACQCAGIQQgCCEGIBkgAyAOayIHIARrIgVrQQNJDQAgBSAcIA4gBSAQSSIFG2oiCCgAACADKAAARw0AIANBBGogCEEEaiANIBUgDSAFGyASEBYiCUEBaiEFIAMgC00EQCABKAIMIgAgAykAADcAACAAIAMpAAg3AAggASgCBCEACyAAQQE2AgAgAEEAOwEEIAVBgIAETwRAIAFBAjYCJCABIAAgASgCAGtBA3U2AigLIAAgBTsBBiABIABBCGoiADYCBCAUIAMpAABCgMaV/cub741PfiAniKdBAnRqIAc2AgAgBCEIIAYhByAJQQRqIANqIgMhBSADIBNNDQEMAgsLIAQhByAGIQQgAyEFCyAFIBNJDQALDAILIAUgE08NASAWIBhrIRwgDUEBayEdIA1BA2shFyANQSBrIQsgEEEBayEZQcAAIAYoAnxrrSEoQcAAIAAoAnxrrSEnA0AgFCAFKQAAIilCgIDs/Mub741PfiIqICeIp0ECdGoiACgCACEMIAAgBSAOayIRNgIAAkACQAJAAkAgGSARIARrQQFqIgBrQQNJDQAgFiAAIBhraiAAIA5qIAAgEEkiABsiBigAACAFKAABRw0AIAVBBWogBkEEaiANIBUgDSAAGyASEBYiCkEBaiEMIAVBAWoiBiADayEJIAEoAgwhAAJAAkAgBiALTQRAIAAgAykAADcAACAAIAMpAAg3AAggASgCDCEAIAlBEE0EQCABIAAgCWo2AgwgASgCBCEDDAMLIAAgAykAEDcAECAAIAMpABg3ABggACADKQAgNwAgIAAgAykAKDcAKCAJQTFIDQEgACAJaiEIIANBEGohAyAAQTBqIQUDQCAFIAMpACA3AAAgBSADKQAoNwAIIAUgAykAMDcAECAFIAMpADg3ABggA0EgaiEDIAVBIGoiBSAISQ0ACwwBCyADIAtNBEAgACADKQAANwAAIAAgAykACDcACCAAIAMpABA3ABAgACADKQAYNwAYIAAgCyADayIPaiEIIA9BIU4EQCAAQSBqIQADQCAAIAMpACA3AAAgACADKQAoNwAIIAAgAykAMDcAECAAIAMpADg3ABggA0EgaiEDIABBIGoiACAISQ0ACwsgCyEDIAghAAsgAyAGTw0AIAUgA2shJUEAIQUgBiADa0EHcSIPBEADQCAAIAMtAAA6AAAgAEEBaiEAIANBAWohAyAFQQFqIgUgD0cNAAsLICVBB0kNAANAIAAgAy0AADoAACAAIAMtAAE6AAEgACADLQACOgACIAAgAy0AAzoAAyAAIAMtAAQ6AAQgACADLQAFOgAFIAAgAy0ABjoABiAAIAMtAAc6AAcgAEEIaiEAIANBCGoiAyAGRw0ACwsgASABKAIMIAlqNgIMIAEoAgQhAyAJQYCABEkNACABQQE2AiQgASADIAEoAgBrQQN1NgIoCyAKQQRqIQggA0EBNgIAIAMgCTsBBCAEIQkgDEH//wNLDQEMAgsgDCAQTQRAAkAgISAqICiIp0ECdGooAgAiBiAbTQ0AIAYgFmoiACgAACAFKAAARw0AIAVBBGogAEEEaiANIBUgEhAWQQRqIQggBiAYaiEHAkAgBiAbTARAIAUhBgwBCyAFIQYgAyAFTw0AA0AgBUEBayIGLQAAIABBAWsiAC0AAEcEQCAFIQYMAgsgCEEBaiEIIAAgH00NASAGIgUgA0sNAAsLIBEgB2shCSAIQQNrIQwgBiADayEKIAEoAgwhBQJAAkAgBiALTQRAIAUgAykAADcAACAFIAMpAAg3AAggASgCDCEAIApBEE0EQCABIAAgCmo2AgwgASgCBCEDDAMLIAAgAykAEDcAECAAIAMpABg3ABggACADKQAgNwAgIAAgAykAKDcAKCAKQTFIDQEgACAKaiEHIANBEGohAyAAQTBqIQUDQCAFIAMpACA3AAAgBSADKQAoNwAIIAUgAykAMDcAECAFIAMpADg3ABggA0EgaiEDIAVBIGoiBSAHSQ0ACwwBCyADIAtNBEAgBSADKQAANwAAIAUgAykACDcACCAFIAMpABA3ABAgBSADKQAYNwAYIAUgCyADayIHaiEAIAdBIU4EQCAFQSBqIQUDQCAFIAMpACA3AAAgBSADKQAoNwAIIAUgAykAMDcAECAFIAMpADg3ABggA0EgaiEDIAVBIGoiBSAASQ0ACwsgACEFIAshAwsgAyAGTw0AQQAhByADIQAgBiADa0EHcSIPBEADQCAFIAAtAAA6AAAgBUEBaiEFIABBAWohACAHQQFqIgcgD0cNAAsLIAMgBmtBeEsNAANAIAUgAC0AADoAACAFIAAtAAE6AAEgBSAALQACOgACIAUgAC0AAzoAAyAFIAAtAAQ6AAQgBSAALQAFOgAFIAUgAC0ABjoABiAFIAAtAAc6AAcgBUEIaiEFIABBCGoiACAGRw0ACwsgASABKAIMIApqNgIMIAEoAgQhAyAKQYCABEkNACABQQE2AiQgASADIAEoAgBrQQN1NgIoCyADIAo7AQQgAyAJQQNqNgIAIAQhByAJIQQgDEH//wNLDQIMAwsgBSAFIANrQQh1IBpqaiEFDAMLIAwgDmoiCSgAACAFKAAARwRAIAUgBSADa0EIdSAaamohBQwDCyAJQQRqIQcCfwJAIAVBBGoiBiAXTwRAIAYhAAwBCyAGIQAgBygAACApQiCIp3MiCARAIAhoQQN2DAILA0AgB0EEaiEHIABBBGoiACAXTw0BIAAoAAAgBygAAHMiCEUNAAsgACAIaEEDdmogBmsMAQsCQCAAIB1PDQAgBy8AACAALwAARw0AIAdBAmohByAAQQJqIQALIAAgDUkEfyAAIActAAAgAC0AAEZqBSAACyAGawtBBGohCAJAIAwgEEwEQCAFIQYMAQsgBSEHIAkhACAFIQYgAyAFTw0AA0AgB0EBayIGLQAAIABBAWsiAC0AAEcEQCAHIQYMAgsgCEEBaiEIIAAgEk0NASAGIQcgAyAGSQ0ACwsgBSAJayEJIAhBA2shDCAGIANrIQogASgCDCEFAkACQCAGIAtNBEAgBSADKQAANwAAIAUgAykACDcACCABKAIMIQAgCkEQTQRAIAEgACAKajYCDCABKAIEIQMMAwsgACADKQAQNwAQIAAgAykAGDcAGCAAIAMpACA3ACAgACADKQAoNwAoIApBMUgNASAAIApqIQcgA0EQaiEDIABBMGohBQNAIAUgAykAIDcAACAFIAMpACg3AAggBSADKQAwNwAQIAUgAykAODcAGCADQSBqIQMgBUEgaiIFIAdJDQALDAELIAMgC00EQCAFIAMpAAA3AAAgBSADKQAINwAIIAUgAykAEDcAECAFIAMpABg3ABggBSALIANrIgdqIQAgB0EhTgRAIAVBIGohBQNAIAUgAykAIDcAACAFIAMpACg3AAggBSADKQAwNwAQIAUgAykAODcAGCADQSBqIQMgBUEgaiIFIABJDQALCyAAIQUgCyEDCyADIAZPDQBBACEHIAMhACAGIANrQQdxIg8EQANAIAUgAC0AADoAACAFQQFqIQUgAEEBaiEAIAdBAWoiByAPRw0ACwsgAyAGa0F4Sw0AA0AgBSAALQAAOgAAIAUgAC0AAToAASAFIAAtAAI6AAIgBSAALQADOgADIAUgAC0ABDoABCAFIAAtAAU6AAUgBSAALQAGOgAGIAUgAC0ABzoAByAFQQhqIQUgAEEIaiIAIAZHDQALCyABIAEoAgwgCmo2AgwgASgCBCEDIApBgIAESQ0AIAFBATYCJCABIAMgASgCAGtBA3U2AigLIAMgCjsBBCADIAlBA2o2AgAgBCEHIAkhBCAMQYCABEkNAQsgAUECNgIkIAEgAyABKAIAa0EDdTYCKCAJIQQLIAMgDDsBBiABIANBCGoiADYCBCATIAYgCGoiA0kEQCADIQUMAQsgFCARICBqKQAAQoCA7PzLm++NT34gJ4inQQJ0aiARQQJqNgIAIBQgA0ECayIGKQAAQoCA7PzLm++NT34gJ4inQQJ0aiAGIA5rNgIAIAQhCCAHIQYDQAJAIAYhBCAIIQYgGSADIA5rIgcgBGsiBWtBA0kNACAFIBwgDiAFIBBJIgUbaiIIKAAAIAMoAABHDQAgA0EEaiAIQQRqIA0gFSANIAUbIBIQFiIJQQFqIQUgAyALTQRAIAEoAgwiACADKQAANwAAIAAgAykACDcACCABKAIEIQALIABBATYCACAAQQA7AQQgBUGAgARPBEAgAUECNgIkIAEgACABKAIAa0EDdTYCKAsgACAFOwEGIAEgAEEIaiIANgIEIBQgAykAAEKAgOz8y5vvjU9+ICeIp0ECdGogBzYCACAEIQggBiEHIAlBBGogA2oiAyEFIAMgE00NAQwCCwsgBCEHIAYhBCADIQULIAUgE0kNAAsMAQsgBSATTw0AIBYgGGshHCANQQFrIR0gDUEDayEXIA1BIGshCyAQQQFrIRlBwAAgBigCfGutIShBwAAgACgCfGutIScDQCAUIAUpAAAiKUKAgIDYy5vvjU9+IiogJ4inQQJ0aiIAKAIAIQwgACAFIA5rIhE2AgACQAJAAkACQCAZIBEgBGtBAWoiAGtBA0kNACAWIAAgGGtqIAAgDmogACAQSSIAGyIGKAAAIAUoAAFHDQAgBUEFaiAGQQRqIA0gFSANIAAbIBIQFiIKQQFqIQwgBUEBaiIGIANrIQkgASgCDCEAAkACQCAGIAtNBEAgACADKQAANwAAIAAgAykACDcACCABKAIMIQAgCUEQTQRAIAEgACAJajYCDCABKAIEIQMMAwsgACADKQAQNwAQIAAgAykAGDcAGCAAIAMpACA3ACAgACADKQAoNwAoIAlBMUgNASAAIAlqIQggA0EQaiEDIABBMGohBQNAIAUgAykAIDcAACAFIAMpACg3AAggBSADKQAwNwAQIAUgAykAODcAGCADQSBqIQMgBUEgaiIFIAhJDQALDAELIAMgC00EQCAAIAMpAAA3AAAgACADKQAINwAIIAAgAykAEDcAECAAIAMpABg3ABggACALIANrIg9qIQggD0EhTgRAIABBIGohAANAIAAgAykAIDcAACAAIAMpACg3AAggACADKQAwNwAQIAAgAykAODcAGCADQSBqIQMgAEEgaiIAIAhJDQALCyALIQMgCCEACyADIAZPDQAgBSADayEmQQAhBSAGIANrQQdxIg8EQANAIAAgAy0AADoAACAAQQFqIQAgA0EBaiEDIAVBAWoiBSAPRw0ACwsgJkEHSQ0AA0AgACADLQAAOgAAIAAgAy0AAToAASAAIAMtAAI6AAIgACADLQADOgADIAAgAy0ABDoABCAAIAMtAAU6AAUgACADLQAGOgAGIAAgAy0ABzoAByAAQQhqIQAgA0EIaiIDIAZHDQALCyABIAEoAgwgCWo2AgwgASgCBCEDIAlBgIAESQ0AIAFBATYCJCABIAMgASgCAGtBA3U2AigLIApBBGohCCADQQE2AgAgAyAJOwEEIAQhCSAMQf//A0sNAQwCCyAMIBBNBEACQCAhICogKIinQQJ0aigCACIGIBtNDQAgBiAWaiIAKAAAIAUoAABHDQAgBUEEaiAAQQRqIA0gFSASEBZBBGohCCAGIBhqIQcCQCAGIBtMBEAgBSEGDAELIAUhBiADIAVPDQADQCAFQQFrIgYtAAAgAEEBayIALQAARwRAIAUhBgwCCyAIQQFqIQggACAfTQ0BIAYiBSADSw0ACwsgESAHayEJIAhBA2shDCAGIANrIQogASgCDCEFAkACQCAGIAtNBEAgBSADKQAANwAA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AQsCQCAFIBJPDQAgAC8AACAFLwAARw0AIABBAmohACAFQQJqIQULIAUgDUkEfyAFIAAtAAAgBS0AAEZqBSAFCyAEawshISAGIANrIQQgISAIaiIYQQFqIQcgASgCDCEFAkACQCAGIAxNBEAgBSADKQAANwAAIAUgAykACDcACCABKAIMIQAgBEEQTQRAIAEgACAEajYCDCABKAIEIQMMAwsgACADKQAQNwAQIAAgAykAGDcAGCAAIAMpACA3ACAgACADKQAoNwAoIARBMUgNASAAIARqIQggA0EQaiEDIABBMGohBQNAIAUgAykAIDcAACAFIAMpACg3AAggBSADKQAwNwAQIAUgAykAODcAGCADQSBqIQMgBUEgaiIFIAhJDQALDAELIAMgDE0EQCAFIAMpAAA3AAAgBSADKQAINwAIIAUgAykAEDcAECAFIAMpABg3ABggBSAMIANrIghqIQAgCEEhTgRAIAVBIGohBQNAIAUgAykAIDcAACAFIAMpACg3AAggBSADKQAwNwAQIAUgAykAODcAGCADQSBqIQMgBUEgaiIFIABJDQALCyAAIQUgDCEDCyADIAZPDQBBACEIIAMhACAGIANrQQdxIhMEQANAIAUgAC0AADoAACAFQQFqIQUgAEEBaiEAIAhBAWoiCCATRw0ACwsgAyAGa0F4Sw0AA0AgBSAALQAAOgAAIAUgAC0AAToAASAFIAAtAAI6AAIgBSAALQADOgADIAUgAC0ABDoABCAFIAAtAAU6AAUgBSAALQAGOgAGIAUgAC0ABzoAByAFQQhqIQUgAEEIaiIAIAZHDQALCyABIAEoAgwgBGo2AgwgASgCBCEDIARBgIAESQ0AIAFBATYCJCABIAMgASgCAGtBA3U2AigLIAMgBDsBBCADIA9BAWo2AgAgB0GAgARPBEAgAUECNgIkIAEgAyABKAIAa0EDdTYCKAsgAyAHOwEGIAEgA0EIaiIANgIEIBhBBGogBmoiA0EBaiEFAkAgAyARSw0AIA4gFCAZaikAAEKAgOz8y5vvjU9+ICOIp0ECdGogFEECajYCACAOIANBAmsiBCkAAEKAgOz8y5vvjU9+ICOIp0ECdGogBCALazYCACAJRQRAQQAhCQwBCyADKAAAIAMgCWsoAABHDQBBACAJayEGIAkhBQNAIAohCSAFIQogA0EEaiIEIAZq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IAAgA08EQCADIQUMAQsDQCADQQFrIgUtAAAgBEEBayIELQAARwRAIAMhBQwCCyAJQQFqIQkgBCAHTQ0BIAUiAyAASw0ACwsgCUEDayETIAUgAGshCCABKAIMIQMCQAJAIAUgC00EQCADIAApAAA3AAAgAyAAKQAINwAIIAEoAgwhBCAIQRBNBEAgASAEIAhqNgIMIAEoAgQhAwwDCyAEIAApABA3ABAgBCAAKQAYNwAYIAQgACkAIDcAICAEIAApACg3ACggCEExSA0BIAQgCGohByAAQRBqIQMgBEEwaiEAA0AgACADKQAgNwAAIAAgAykAKDcACCAAIAMpADA3ABAgACADKQA4NwAYIANBIGohAyAAQSBqIgAgB0kNAAsMAQsgACALTQRAIAMgACkAADcAACADIAApAAg3AAggAyAAKQAQNwAQIAMgACkAGDcAGCADIAsgAGsiB2ohBCAHQSFOBEAgA0EgaiEDA0AgAyAAKQAgNwAAIAMgACkAKDcACCADIAApADA3ABAgAyAAKQA4NwAYIABBIGohACADQSBqIgMgBEkNAAsLIAQhAyALIQALIAAgBU8NAEEAIQcgACEEIAUgAGtBB3EiFwRAA0AgAyAELQAAOgAAIANBAWohAyAEQQFqIQQgB0EBaiIHIBdHDQALCyAAIAVrQXhLDQADQCADIAQtAAA6AAAgAyAELQABOgABIAMgBC0AAjoAAiADIAQtAAM6AAMgAyAELQAEOgAEIAMgBC0ABToABSADIAQtAAY6AAYgAyAELQAHOgAHIANBCGohAyAEQQhqIgQgBUcNAAsLIAEgASgCDCAIajYCDCABKAIEIQMgCEGAgARJDQAgAUEBNgIkIAEgAyABKAIAa0EDdTYCKAsgAyAIOwEEIAMgBkEDajYCACAKIgghByATQf//A00NAQsgAUECNgIkIAEgAyABKAIAa0EDdTYCKCAIIQcLIAMgEzsBBiABIANBCGoiBDYCBCAYIAUgCWoiAEkEQCAHIQggBiEKIAAhAwwDCyAVIA8gEkECaiIDaiIKKQAAIiJC48iVvcub741PfiIlICSIp0ECdGogAzYCACAVIABBAmsiBSkAAELjyJW9y5vvjU9+ICSIp0ECdGogBSAPazYCACAQAn8CQAJAAkACQAJAIBsOBAABAgMECyAQICJCgICA2Mub741PfiAj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AWohDSAAIBNNDQUgBiIEIANLDQALDAQLAkAgACAUTw0AIAkvAAAgAC8AAEcNACAJQQJqIQkgAEECaiEACyAAIA5JBH8gACAJLQAAIAAtAABGagUgAAsgBGsLIR8gBiAFayEIIB9BCGohDSAHIBFMIAMgBk9yDQIDQCAGQQFrIgAtAAAgBUEBayIFLQAARw0DIA1BAWohDSAFIBNNBEAgACEGDAQLIAAiBiADSw0ACwwCCwJAIAUgFE8NACAGLwAAIAUvAABHDQAgBkECaiEGIAVBAmohBQsgBSAOSQR/IAUgBi0AACAFLQAARmoFIAULIAdrCyEgIAQgAGshCCAgQQhqIQ0gCSARTARAIAQhBgwBCyADIARPBEAgBCEGDAELA0AgBEEBayIGLQAAIABBAWsiAC0AAEcEQCAEIQYMAgsgDUEBaiENIAAgE00NASAGIgQgA0sNAAsLIA1BA2shEiAGIANrIQcgASgCDCEAAkACQCAGIAtNBEAgACADKQAANwAAIAAgAykACDcACCABKAIMIQAgB0EQTQRAIAEgACAHajYCDCABKAIEIQMMAwsgACADKQAQNwAQIAAgAykAGDcAGCAAIAMpACA3ACAgACADKQAoNwAoIAdBMUgNASAAIAdqIQQgA0EQaiEDIABBMGohAANAIAAgAykAIDcAACAAIAMpACg3AAggACADKQAwNwAQIAAgAykAODcAGCADQSBqIQMgAEEgaiIAIARJDQALDAELIAMgC00EQCAAIAMpAAA3AAAgACADKQAINwAIIAAgAykAEDcAECAAIAMpABg3ABggACALIANrIgVqIQQgBUEhTgRAIABBIGohAANAIAAgAykAIDcAACAAIAMpACg3AAggACADKQAwNwAQIAAgAykAODcAGCADQSBqIQMgAEEgaiIAIARJDQALCyALIQMgBCEACyADIAZPDQBBACEFIAMhBCAGIANrQQdxIgkEQANAIAAgBC0AADoAACAAQQFqIQAgBEEBaiEEIAVBAWoiBSAJRw0ACwsgAyAGa0F4Sw0AA0AgACAELQAAOgAAIAAgBC0AAToAASAAIAQtAAI6AAIgACAELQADOgADIAAgBC0ABDoABCAAIAQtAAU6AAUgACAELQAGOgAGIAAgBC0ABzoAByAAQQhqIQAgBEEIaiIEIAZHDQALCyABIAEoAgwgB2o2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CiAbIAobNgIAIAcgGyAHGyEICyACIAg2AgQgDiADawufbgItfwd+IAMgACgCBCINayAEaiIGQQEgACgCdHQiBWsgACgCDCIHIAYgB2sgBUsbIg4gACgCcCIGKAIEIhQgBigCACIVa2ohFiADIBQgBigCDCIcaiIZIBUgAyANIA5qIhBrakZqIQUgAyAEaiILQQhrIRogAigCBCEHIAIoAgAhBCAAKAIoIRsgACgCICEXIAYoAighICAGKAIgIR4CQAJAAkACQAJAIAAoAoQBQQVrDgMDAgEACyAFIBpPDQMgFCAWayEYIAtBIGshDyALQQFrIR0gC0EDayEMQSAgBigCeGshIUEgIAAoAnhrIRNBwAAgBigCfGutITJBwAAgACgCfGutITMDQCAXIAUpAAAiNELjyJW9y5vvjU9+IjUgM4inQQJ0aiIAKAIAIREgGyA0p0Gx893xeWwiCCATdkECdGoiBigCACEKIAYgBSANayISNgIAIAAgEjYCAAJAAkACQAJAIBJBAWoiCSAEayIAIA5rQXxLDQAgFCAAIBZraiAAIA1qIAAgDkkiABsiBigAACAFKAABRw0AIAVBBWogBkEEaiALIBUgCyAAGyAQEBYiCkEBaiERIAVBAWoiBiADayEJIAEoAgwhAAJAAkAgBiAPTQRAIAAgAykAADcAACAAIAMpAAg3AAggASgCDCEAIAlBEE0EQCABIAAgCWo2AgwgASgCBCEDDAMLIAAgAykAEDcAECAAIAMpABg3ABggACADKQAgNwAgIAAgAykAKDcAKCAJQTFIDQEgACAJaiEIIANBEGohAyAAQTBqIQUDQCAFIAMpACA3AAAgBSADKQAoNwAIIAUgAykAMDcAECAFIAMpADg3ABggA0EgaiEDIAVBIGoiBSAISQ0ACwwBCyADIA9NBEAgACADKQAANwAAIAAgAykACDcACCAAIAMpABA3ABAgACADKQAYNwAYIAAgDyADayIfaiEIIB9BIU4EQCAAQSBqIQADQCAAIAMpACA3AAAgACADKQAoNwAIIAAgAykAMDcAECAAIAMpADg3ABggA0EgaiEDIABBIGoiACAISQ0ACwsgDyEDIAghAAsgAyAGTw0AIAUgA2shIkEAIQUgBiADa0EHcSIfBEADQCAAIAMtAAA6AAAgAEEBaiEAIANBAWohAyAFQQFqIgUg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IAMpAABC48iVvcub741PfiAziKdBAnRqIAU2AgAgBCEIIAYhByAJQQRqIANqIgMhBSADIBpNDQEMAgsLIAQhByAGIQQgAyEFCyAFIBpJDQALDAMLIAUgGk8NAiAUIBZrIR0gC0EgayEPIAtBAWshESALQQNrIRJBwAAgBigCeGutITdBwAAgBigCfGutITVBwAAgACgCeGutITRBwAAgACgCfGutITMDQCAXIAUpAAAiMkLjyJW9y5vvjU9+IjYgM4inQQJ0aiIAKAIAIQogGyAyQoDGlf3Lm++NT34iOCA0iKdBAnRqIgYoAgAhCSAGIAUgDWsiEzYCACAAIBM2AgACQAJAAkACQCATQQFqIgwgBGsiACAOa0F8Sw0AIBQgACAWa2ogACANaiAAIA5JIgAbIgYoAAAgBSgAAUcNACAFQQVqIAZBBGogCyAVIAsgABsgEBAWIgxBAWohCiAFQQFqIgYgA2shCSABKAIMIQACQAJAIAYgD00EQCAAIAMpAAA3AAAgACADKQAINwAIIAEoAgwhACAJQRBNBEAgASAAIAlqNgIMIAEoAgQhAwwDCyAAIAMpABA3ABAgACADKQAYNwAYIAAgAykAIDcAICAAIAMpACg3ACggCUExSA0BIAAgCWohCCADQRBqIQMgAEEwaiEFA0AgBSADKQAgNwAAIAUgAykAKDcACCAFIAMpADA3ABAgBSADKQA4NwAYIANBIGohAyAFQSBqIgUgCEkNAAsMAQsgAyAPTQRAIAAgAykAADcAACAAIAMpAAg3AAggACADKQAQNwAQIAAgAykAGDcAGCAAIA8gA2siGGohCCAYQSFOBEAgAEEgaiEAA0AgACADKQAgNwAAIAAgAykAKDcACCAAIAMpADA3ABAgACADKQA4NwAYIANBIGohAyAAQSBqIgAgCEkNAAsLIA8hAyAIIQALIAMgBk8NACAFIANrISZBACEFIAYgA2tBB3EiGARAA0AgACADLQAAOgAAIABBAWohACADQQFqIQMgBUEBaiIFIBhHDQALCyAmQQdJDQADQCAAIAMtAAA6AAAgACADLQABOgABIAAgAy0AAjoAAiAAIAMtAAM6AAMgACADLQAEOgAEIAAgAy0ABToABSAAIAMtAAY6AAYgACADLQAHOgAHIABBCGohACADQQhqIgMgBkcNAAsLIAEgASgCDCAJ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ASAEIAlqIQAgA0EQaiEDIARBMGohBQNAIAUgAykAIDcAACAFIAMpACg3AAggBSADKQAwNwAQIAUgAykAODcAGCADQSBqIQMgBUEgaiIFIABJDQALDAELIAMgDE0EQCAFIAMpAAA3AAAgBSADKQAINwAIIAUgAykAEDcAECAFIAMpABg3ABggBSAMIANrIgRqIQAgBEEhTgRAIAVBIGohBQNAIAUgAykAIDcAACAFIAMpACg3AAggBSADKQAwNwAQIAUgAykAODcAGCADQSBqIQMgBUEgaiIFIABJDQALCyAAIQUgDCEDCyADIAZPDQBBACEEIAMhACAGIANrQQdxIgcEQANAIAUgAC0AADoAACAFQQFqIQUgAEEBaiEAIARBAWoiBCAHRw0ACwsgAyAGa0F4Sw0AA0AgBSAALQAAOgAAIAUgAC0AAToAASAFIAAtAAI6AAIgBSAALQADOgADIAUgAC0ABDoABCAFIAAtAAU6AAUgBSAALQAGOgAGIAUgAC0ABzoAByAFQQhqIQUgAEEIaiIAIAZHDQALCyABIAEoAgwgCWo2AgwgASgCBCEDIAlBgIAESQ0AIAFBATYCJCABIAMgASgCAGtBA3U2AigLIAMgCTsBBCADIAhBA2o2AgAgCiEHIAghCiARQYCABEkNAwwCCwJAIAAgE08NACAELwAAIAAvAABHDQAgBEECaiEEIABBAmohAAsgACAQSQR/IAAgBC0AACAALQAARmoFIAALIAhrCyILQQFqIREgBiADayEJIAEoAgwhAAJAAkAgBiAMTQRAIAAgAykAADcAACAAIAMpAAg3AAggASgCDCEEIAlBEE0EQCABIAQgCWo2AgwgASgCBCEDDAMLIAQgAykAEDcAECAEIAMpABg3ABggBCADKQAgNwAgIAQgAykAKDcAKCAJQTFIDQEgBCAJaiEAIANBEGohAyAEQTBqIQUDQCAFIAMpACA3AAAgBSADKQAoNwAIIAUgAykAMDcAECAFIAMpADg3ABggA0EgaiEDIAVBIGoiBSAASQ0ACwwBCyADIAxNBEAgACADKQAANwAAIAAgAykACDcACCAAIAMpABA3ABAgACADKQAYNwAYIAAgDCADayIIaiEEIAhBIU4EQCAAQSBqIQADQCAAIAMpACA3AAAgACADKQAoNwAIIAAgAykAMDcAECAAIAMpADg3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LQAAIABBAWsiAC0AAEcEQCAFIQYMAgsgC0EBaiELIAAgF00NASAGIgUgA0sNAAsLIAtBA2shESAGIANrIQkgASgCDCEFAkACQCAGIAxNBEAgBSADKQAANwAAIAUgAykACDcACCABKAIMIQQgCUEQTQRAIAEgBCAJajYCDCABKAIEIQMMAwsgBCADKQAQNwAQIAQgAykAGDcAGCAEIAMpACA3ACAgBCADKQAoNwAoIAlBMUgNASAEIAlqIQAgA0EQaiEDIARBMGohBQNAIAUgAykAIDcAACAFIAMpACg3AAggBSADKQAwNwAQIAUgAykAODcAGCADQSBqIQMgBUEgaiIFIABJDQALDAELIAMgDE0EQCAFIAMpAAA3AAAgBSADKQAINwAIIAUgAykAEDcAECAFIAMpABg3ABggBSAMIANrIgRqIQAgBEEhTgRAIAVBIGohBQNAIAUgAykAIDcAACAFIAMpACg3AAggBSADKQAwNwAQIAUgAykAODcAGCADQSBqIQMgBUEgaiIFIABJDQALCyAAIQUgDCEDCyADIAZPDQBBACEEIAMhACAGIANrQQdxIgcEQANAIAUgAC0AADoAACAFQQFqIQUgAEEBaiEAIARBAWoiBCAHRw0ACwsgAyAGa0F4Sw0AA0AgBSAALQAAOgAAIAUgAC0AAToAASAFIAAtAAI6AAIgBSAALQADOgADIAUgAC0ABDoABCAFIAAtAAU6AAUgBSAALQAGOgAGIAUgAC0ABzoAByAFQQhqIQUgAEEIaiIAIAZHDQALCyABIAEoAgwgCWo2AgwgASgCBCEDIAlBgIAESQ0AIAFBATYCJCABIAMgASgCAGtBA3U2AigLIAMgCTsBBCADIAhBA2o2AgAgCiEHIAghCiARQYCABEkNAwwCCwJAIAAgE08NACAELwAAIAAvAABHDQAgBEECaiEEIABBAmohAAsgACAQSQR/IAAgBC0AACAALQAARmoFIAALIAhrCyILQQFqIREgBiADayEJIAEoAgwhAAJAAkAgBiAMTQRAIAAgAykAADcAACAAIAMpAAg3AAggASgCDCEEIAlBEE0EQCABIAQgCWo2AgwgASgCBCEDDAMLIAQgAykAEDcAECAEIAMpABg3ABggBCADKQAgNwAgIAQgAykAKDcAKCAJQTFIDQEgBCAJaiEAIANBEGohAyAEQTBq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ACgCmC1qIAI6AAAgACACQQJ0aiICQZQBaiACLwGUAUEBajsBACAAIAAoAnRBAWs2AnQgACAAKAJsQQFqIgI2AmwgACgCoC0gACgCnC1BAWtHDQELQQAhBCAAIAAoAlwiA0EATgR/IAAoAjggA2oFIAQLIAIgA2tBABAcIAAgACgCbDYCXAJAAn8gACgCACIDKAIcIgIoArwtIgRBEEYEQCACIAIoAhQiBEEBajYCFCAEIAIoAghqIAItALgtOgAAIAIgAigCFCIEQQFqNgIUIAQgAigCCGogAkG5LWotAAA6AAAgAkEAOwG4LUEADAELIARBCEgNASACIAIoAhQiBEEBajYCFCAEIAIoAghqIAItALgtOgAAIAIgAkG5LWotAAA7AbgtIAIoArwtQQhrCyEEIAIgBDYCvC0LAkAgAigCFCIEIAMoAhAiBSAEIAVJGyIERQ0AIAMoAgwgAigCECAEEBcaIAMgAygCDCAEajYCDCACIAIoAhAgBGo2AhAgAyADKAIUIARqNgIUIAMgAygCECAEazYCECACIAIoAhQiAyAEazYCFCADIARHDQAgAiACKAIINgIQCyAAKAIAKAIQDQALQQAPCyAAQQIgACgCbCICIAJBAk8bNgK0LSABQQRGBEBBACEFIAAgACgCXCIBQQBOBH8gACgCOCABagUgBQsgAiABa0EBEBwgACAAKAJsNgJcAkACfyAAKAIAIgIoAhwiASgCvC0iA0EQRgRAIAEgASgCFCIDQQFqNgIUIAMgASgCCGogAS0AuC06AAAgASABKAIUIgNBAWo2AhQgAyABKAIIaiABQbktai0AADoAACABQQA7AbgtQQAMAQsgA0EISA0BIAEgASgCFCIDQQFqNgIUIAMgASgCCGogAS0AuC06AAAgASABQbktai0AADsBuC0gASgCvC1BCGsLIQQgASAENgK8LQsCQCABKAIUIgMgAigCECIEIAMgBEkbIgNFDQAgAigCDCABKAIQIAMQFxogAiACKAIMIANqNgIMIAEgASgCECADajYCECACIAIoAhQgA2o2AhQgAiACKAIQIANrNgIQIAEgASgCFCICIANrNgIUIAIgA0cNACABIAEoAgg2AhALQQNBAiAAKAIAKAIQGw8LAkAgACgCoC1FDQBBACEFIAAgACgCXCIBQQBOBH8gACgCOCABagUgBQsgAiABa0EAEBwgACAAKAJsNgJcAkACfyAAKAIAIgIoAhwiASgCvC0iA0EQRgRAIAEgASgCFCIDQQFqNgIUIAMgASgCCGogAS0AuC06AAAgASABKAIUIgNBAWo2AhQgAyABKAIIaiABQbktai0AADoAACABQQA7AbgtQQAMAQsgA0EISA0BIAEgASgCFCIDQQFqNgIUIAMgASgCCGogAS0AuC06AAAgASABQbktai0AADsBuC0gASgCvC1BCGsLIQQgASAENgK8LQsCQCABKAIUIgMgAigCECIEIAMgBEkbIgNFDQAgAigCDCABKAIQIAMQFxogAiACKAIMIANqNgIMIAEgASgCECADajYCECACIAIoAhQgA2o2AhQgAiACKAIQIANrNgIQIAEgASgCFCICIANrNgIUIAIgA0cNACABIAEoAgg2AhALIAAoAgAoAhANAEEADwtBAQuKDQEFf0H//wMgACgCDEEFayICIAJB//8DTxshBgJAA0AgACgCdCICQQFNBEAgABArIAAoAnQiAiABckUEQEEADwsgAkUNAgsgAEEANgJ0IAAgACgCbCACaiICNgJsIAJBACAAKAJcIgQgBmoiAyACSxsEfyACBSAAIAM2AmwgACACIANrNgJ0QQAhAiAAIARBAE4EfyAAKAI4IARqBSACCyAGQQAQHCAAIAAoAmw2AlwCQAJ/IAAoAgAiBCgCHCICKAK8LSIDQRBGBEAgAiACKAIUIgNBAWo2AhQgAyACKAIIaiACLQC4LToAACACIAIoAhQiA0EBajYCFCADIAIoAghqIAJBuS1qLQAAOgAAIAJBADsBuC1BAAwBCyADQQhIDQEgAiACKAIUIgNBAWo2AhQgAyACKAIIaiACLQC4LToAACACIAJBuS1qLQAAOwG4LSACKAK8LUEIawshAyACIAM2ArwtCwJAIAIoAhQiAyAEKAIQIgUgAyAFSRsiA0UNACAEKAIMIAIoAhAgAxAXGiAEIAQoAgwgA2o2AgwgAiACKAIQIANqNgIQIAQgBCgCFCADajYCFCAEIAQoAhAgA2s2AhAgAiACKAIUIgQgA2s2AhQgAyAERw0AIAIgAigCCDYCEAsgACgCACgCEEUEQEEADwsgACgCXCEEIAAoAmwLIARrIgIgACgCLEGGAmtJDQBBACEDIAAgBEEATgR/IAAoAjggBGoFIAMLIAJBABAcIAAgACgCbDYCXAJAAn8gACgCACIEKAIcIgIoArwtIgNBEEYEQCACIAIoAhQiA0EBajYCFCADIAIoAghqIAItALgtOgAAIAIgAigCFCIDQQFqNgIUIAMgAigCCGogAkG5LWotAAA6AAAgAkEAOwG4LUEADAELIANBCEgNASACIAIoAhQiA0EBajYCFCADIAIoAghqIAItALgtOgAAIAIgAkG5LWotAAA7AbgtIAIoArwtQQhrCyEDIAIgAzYCvC0LAkAgAigCFCIDIAQoAhAiBSADIAVJGyIDRQ0AIAQoAgwgAigCECADEBcaIAQgBCgCDCADajYCDCACIAIoAhAgA2o2AhAgBCAEKAIUIANqNgIUIAQgBCgCECADazYCECACIAIoAhQiBCADazYCFCADIARHDQAgAiACKAIINgIQCyAAKAIAKAIQDQALQQAPC0EAIQIgAEEANgK0LSABQQRGBEAgACAAKAJcIgFBAE4EfyAAKAI4IAFqBSACCyAAKAJsIAFrQQEQHCAAIAAoAmw2AlwCQAJ/IAAoAgAiAigCHCIBKAK8LSIDQRBGBEAgASABKAIUIgNBAWo2AhQgAyABKAIIaiABLQC4LToAACABIAEoAhQiA0EBajYCFCADIAEoAghqIAFBuS1qLQAAOgAAIAFBADsBuC1BAAwBCyADQQhIDQEgASABKAIUIgNBAWo2AhQgAyABKAIIaiABLQC4LToAACABIAFBuS1qLQAAOwG4LSABKAK8LUEIawshAyABIAM2ArwtCwJAIAEoAhQiAyACKAIQIgQgAyAESRsiA0UNACACKAIMIAEoAhAgAxAXGiACIAIoAgwgA2o2AgwgASABKAIQIANqNgIQIAIgAigCFCADajYCFCACIAIoAhAgA2s2AhAgASABKAIUIgIgA2s2AhQgAiADRw0AIAEgASgCCDYCEAtBA0ECIAAoAgAoAhAbDwsCQCAAKAJsIgIgACgCXCIBTA0AQQAhAyAAIAFBAE4EfyAAKAI4IAFqBSADCyACIAFrQQAQHCAAIAAoAmw2AlwCQAJ/IAAoAgAiAigCHCIBKAK8LSIDQRBGBEAgASABKAIUIgNBAWo2AhQgAyABKAIIaiABLQC4LToAACABIAEoAhQiA0EBajYCFCADIAEoAghqIAFBuS1qLQAAOgAAIAFBADsBuC1BAAwBCyADQQhIDQEgASABKAIUIgNBAWo2AhQgAyABKAIIaiABLQC4LToAACABIAFBuS1qLQAAOwG4LSABKAK8LUEIawshAyABIAM2ArwtCwJAIAEoAhQiAyACKAIQIgQgAyAESRsiA0UNACACKAIMIAEoAhAgAxAXGiACIAIoAgwgA2o2AgwgASABKAIQIANqNgIQIAIgAigCFCADajYCFCACIAIoAhAgA2s2AhAgASABKAIUIgIgA2s2AhQgAiADRw0AIAEgASgCCDYCEAsgACgCACgCEA0AQQAPC0EBC+uAAQJFfwJ+IwBBEGsiJyQAQZjjCRAdIg0EfyANQgA3AvThASANQYGAgMAANgK04gEgDUEANgKI4gEgDUEANgLs4QEgDUEANgLc4gEgDUIANwLM4gEgDUEANgK84gEgDUEANgLE4AEgDUIANwKM4gEgDUIANwKc4gEgDUH84QFqQQA2AgAgDUGU4gFqQQA2AgAgDUGk4gFqQgA3AgAgDUGs4gFqQQA2AgACQAJAIAFBBUkEQCACISYMAQsgDUGQ4QFqITEgDUHQ4AFqISUgDUGYIGohNCANQaAwaiE1IA1BrNABaiEyIA1BqNAAaiE2IA1BEGohNyANQbjgAWohMyANQbjhAWohKUEFIQQgAiEmA0AgACgAAEFwcUHQ1LTCAUYEQCABQQhJBEBBuH8hCAwECyAAKAAEIgZBd0sEQEFyIQgMBAtBuH8gBkEIaiIGIAEgBkkbIghBiH9LDQMgACAIaiEAIAEgCGsiASAETw0BDAILIA1BADYChOEBIA0gBDYCyOABIA1CADcD+OABIDNCADcDCCAzQgA3AwAgDUGMgIDgADYCqFAgDUEANgKY4gEgDUIANwOI4QEgMkGIqQEoAgA2AgggMkGAqQEpAgA3AgAgDSA2NgIMIA0gNDYCCCANIDU2AgQgDSA3NgIAICYEQCANICY2ArzgASANICY2AsDgASANICY2ArjgAQtBuH8hCCABQQVBCSAcG0kNAgJAIABBAUEFIBwbIgUiBmpBAWstAAAiBEEDcUECdEGQqQFqKAIAIAZqIARBBHZBDHFBoKkBaigCAGogBEEgcSIGRWogBkEFdiAEQcAASXFqIgRBiH9LDQAgASAEQQNqSQ0DAn9CACFJICVCADcDACAlQgA3AyAgJUIANwMYICVCADcDECAlQgA3AwggBSAEIAVJDQAaQX8gAEUNABogACEGAkACQAJAAkACQAJAIAQgHEEBRwR/IAYoAAAiC0Go6r5pRw0BIAUgBmpBAWshBiAFBUEBCyAGLQAAIgZBA3FBAnRBkKkBaigCAGogBkEEdkEMcUGgqQFqKAIAaiAGQSBxIgtFaiALQQV2IAZBwABJcWoiBkkNBSAlIAY2AhhBciEGIAAgBWoiCkEBay0AACILQQhxDQUgC0EgcSIQRQRAQXAhBiAKLQAAIgpBpwFLDQYgCkEHca1CASAKQQN2QQpqrYYiSUIDiH4gSXwhSSAFQQFqIQULIAtBBnYhCiALQQJ2IRxBACEGIAtBA3FBAWsOAwECAwQLQXYhBiALQXBxQdDUtMIBRw0EQQghBiAEQQhJDQQgADUABCFJICVBATYCFCAlIEk3AwBBAAwFCyAAIAVqLQAAIQYgBUEBaiEFDAILIAAgBWovAAAhBiAFQQJqIQUMAQsgACAFaigAACEGIAVBBGohBQsgHEEBcSELAn4CQAJAAkACQCAKQQFrDgMBAgMAC0J/IBBFDQMaIAAgBWoxAAAMAwsgACAFajMAAEKAAnwMAgsgACAFajUAAAwBCyAAIAVqKQAACyFKICUgCzYCICAlIAY2AhwgJSBKNwMAQQAhBiAlQQA2AhQgJSBKIEkgEBsiSTcDCCAlQoCACCBJIElCgIAIWhs+AhALIAYLIgZBiH9LBEAgBiEEDAELIAYNAwJAIA0oAuzgASIGRQ0AIA0oApjiASAGRg0AQWAhCAwECyANKALw4AEEQCANQvnq0NDnyaHk4QA3A7DhASANQgA3A6jhASANQs/W077Sx6vZQjcDoOEBIA1C1uuC7ur9ifXgADcDmOEBIA1CADcDkOEBIClCADcDICApQgA3AxggKUIANwMQIClCADcDCCApQgA3AwALIAMgJmohLCABIARrIQsgACAEaiEKICYhHANAAn9BuH8hBgJAIAtBA0kNACAKLQACIQggJyAKLwAAIgRBAXE2AgggJyAEQQF2QQNxIgY2AgQgJyAEIAhBEHRyQQN2IgQ2AgwCQAJAIAZBAWsOAwIBAAELQWwMAgsgBCEGCyAGCyIjQYh/SwRAICMhBAwCCyAjIAtBA2siOEsEQEG4fyEEDAILIApBA2ohIUFsIQQCQAJ/AkACQAJAICcoAgQOAwECAAYLICwgHGshKEEAIQwjAEHAAWsiByQAAkAgI0H//wdLBEBBuH8hCwwBCyAjQQNJBEBBbCELDAELIA1B2OABaikDACFJAkACQAJAAkACQCAhLQAAIgZBA3EiKkEBaw4DAwEAAgsgDSgCiOEBDQBBYiELDAQLICNBBUkEQEFsIQsMBAtBAyEIICEoAAAhBAJ/AkACQAJAIAZBAnZBA3EiBkECaw4CAQIACyAGQQBHIQogBEEEdkH/B3EhECAEQQ52Qf8HcQwCC0EEIQggBEEEdkH//wBxIRBBASEKIARBEnYMAQsgBEEEdkH//w9xIhBBgIAISwRAQWwhCwwFC0EBIQpBBSEIICEtAARBCnQgBEEWdnILIQQgIyAEIAhqIgtJBEBBbCELDAQLAkAgEEGBBkkNACANKAKc4gFFDQADQCAMQcP/AEsNASAMQYAEaiEMDAALAAsCfyAqQQNGBEAgCCAhaiEGIA1B4OIBaiEIIA0oAgwhBSAKRQRAAn8gBCEKAn8gBSgCACIMQYD+A3EEQEG4fyAERQ0CGgJ/AkAgBEEETwRAQX8gBCAGakEBay0AACIERQ0EGiAKQYh/TQ0BIAoMBQsgBi0AACEJAkACQAJAIApBAmsOAgEAAgsgBi0AAkEQdCAJciEJCyAGLQABQQh0IAlqIQkLQWwgBiAKakEBay0AACIERQ0EGkEAIREgBGcgCkEDdGtBCWoMAQsgBiAKQQRrIhFqKAAAIQlBCCAEZ0Efc2sLIQQgBUEEaiEFIAggEGoiGEEDayEOQQAgDEEQdmtBH3EhDAJAA0ACQAJAAn8gEUEETgRAIARBA3YhCUEAIQogBEEHcQwBCyARRQRAQQAhEQwCCyAEIBEgBEEDdiIEIAYgEWogBGsgBkkiChsiCUEDdGsLIQQgBiARIAlrIhFqKAAAIQkgCkUgCCAOSXENAQsgGEECayEOIARBIEsNAgNAAkAgEUEETgRAIARBB3EhCiAEQQN2IQlBACEEDAELIBFFBEBBACERDAULIAQgESAEQQN2IgQgBiARaiAEayAGSSIEGyIJQQN0ayEKCyAGIBEgCWsiEWooAAAhCSAERSAIIA5NcUUEQCAKIQQMBAsgCCAFIAkgCnQgDHZBAnRqIgQvAQA7AAAgCCAELQADaiEIIAogBC0AAmoiBEEgTQ0ACwwCCyAIIAUgCSAEdCAMdkECdGoiCi8BADsAACAIIAotAANqIgggBSAJIAQgCi0AAmoiCnQgDHZBAnRqIgQvAQA7AAAgCCAELQADaiEIIAogBC0AAmoiBEEhSQ0ACyAYQQJrIQ4LIAggDk0EQANAIAggBSAJIAR0IAx2QQJ0aiIGLwEAOwAAIAQgBi0AAmohBCAIIAYtAANqIgggDk0NAAsLAkAgCCAYTw0AIAggBSAJIAR0IAx2IghBAnRqIgYtAAA6AAAgBi0AA0EBRgRAIAQgBi0AAmohBAwBCyAEQR9LDQBBICAEIAUgCEECdGotAAJqIgQgBEEgTxshBAtBbEFsIBAgBEEgRxsgERsMAgsgCCAQIAYgCiAFEHMLCwwCCwJ/IAUtAAEEQCAIIBAgBiAEIAUQcgwBCyAIIBAgBiAEIAUQcQsMAQsgDUG40AFqIQkgCCAhaiEGIA1B4OIBaiEIIA1BqNAAaiEFIApFBEACfyAFIAYgBCAJEHQiCkGIf0sEQCAKDAELIAQgCksEfyAIIBAgBiAKaiAEIAprIAUQcwVBuH8LCwwBCyAIIR0gBiEYIAQhESAJIQpBACEfQQAhFyMAQZABayIUJAACQCAQRQRAQbp/IQQMAQsgEUUEQEFsIQQMAQsCQAJAIBBBCHYiBiAQIBFLBH8gEUEEdCAQbgVBDwtBGGwiBEG8qQFqKAIAbCAEQbipAWooAgBqIghBA3YgCGogBEGwqQFqKAIAIARBtKkBaigCACAGbGpJBEAgBSgCACEGIApB8ARqQQBB7AAQGCEeQVQhBCAGQf8BcSIMQQxLDQMgCkHcCWoiFSAeIBRBCGogFEEMaiAYIBEQTyIPQYh/SwRAIA8hBAwECyAUKAIMIg4gDEsNAyAKQagFaiETIApB3AVqIRYgCkGkBWohLSAFQQRqISQgBkGAgIB4cSEuQQAhCCAMIQYgDiEEA0AgCCISQQFqIQggBiIZQQFrIQYgBCIJQQFrIQQgHiAJQQJ0aigCAEUNAAsCQCAJQQFqIhpBAkkNAEEAIQRBASEIIBIgDmtBfE0EQCAJQXxxISADQCAeIAhBAnQiBmooAgAhGyAGIBNqIB82AgAgHiAGQQRqIiJqKAIAISsgEyAiaiAbIB9qIh82AgAgHiAGQQhqIhtqKAIAISIgEyAbaiAfICtqIh82AgAgHiAGQQxqIgZqKAIAIRsgBiATaiAfICJqIgY2AgAgBiAbaiEfIAhBBGohCCAXQQRqIhcgIEcNAAsLIAlBA3EiBkUNAANAIB4gCEECdCIXaigCACEgIBMgF2ogHzYCACAIQQFqIQggHyAgaiEfIARBAWoiBCAGRw0ACwsgEyAfNgIAAkAgFCgCCCIERQ0AQQAhCCAEQQFHBEAgBEEBcSFCIARBfnEhBANAIBMgCCAVai0AACIXQQJ0aiIgICAoAgAiIEEBajYCACAWICBBAXRqIiAgFzoAASAgIAg6AAAgEyAVIAhBAXIiF2otAAAiIEECdGoiGyAbKAIAIhtBAWo2AgAgFiAbQQF0aiIbICA6AAEgGyAXOgAAIAhBAmoiCCAERw0ACyBCRQ0BCyATIAggFWotAAAiBEECdGoiBiAGKAIAIgZBAWo2AgAgFiAGQQF0aiIGIAQ6AAEgBiAIOgAACyAOQQFqIRVBACEIIBNBADYCACAaQQJJDQFBASETIA4gEkF/c2oiFwRAIAwgDkF/c2ohBiAJQX5xIQ5BACEEA0AgHiATQQJ0IhJqKAIAIRogCiASaiAINgIAIB4gE0EBaiISQQJ0IiBqKAIAIUMgCiAgaiAaIAYgE2p0IAhqIgg2AgAgQyAGIBJqdCAIaiEIIBNBAmohEyAEQQJqIgQgDkcNAAsLIAlBAXEEQCAKIBNBAnRqIAg2AgALIBUgCWsiDiAMIA5rQQFqTw0CIAlBfHEhHiAJQQNxIRMgDiEEA0AgCiAEQTRsaiESQQAhBkEBIQkgF0EDTwRAA0AgEiAJQQJ0IghqIAggCmooAgAgBHY2AgAgEiAIQQRqIhpqIAogGmooAgAgBHY2AgAgEiAIQQhqIhpqIAogGmooAgAgBHY2AgAgEiAIQQxqIghqIAggCmooAgAgBHY2AgAgCUEEaiEJIAZBBGoiBiAeRw0ACwtBACEIIBMEQANAIBIgCUECdCIGaiAGIApqKAIAIAR2NgIAIAlBAWohCSAIQQFqIgggE0cNAAsLIARBAWoiBCAZRw0ACwwCCyAFIBggESAKEHQiBkGIf0sEQCAGIQQMAwtBuH8hBCAGIBFPDQIgHSAQIAYgGGogESAGayAFEHEhBAwCCyAVIAlrIQ4LIBRBQGsgCigCMDYCACAUIAopAig3AzggFCAKKQIgNwMwIBQgCikCGDcDKCAUIAopAhA3AyAgFCAKKQIANwMQIBQgCikCCDcDGCAfBEAgFSAMayErIAVBIGohLyAFQRxqITkgBUEYaiE6IAVBFGohOyAFQRBqITwgBUEMaiE9IAVBCGohPkEAIRoDQEEBIAwgFSAWIBpBAXRqIgQtAAEiBmsiHmsiF3QhICAELQAAIRsgFEEQaiAGQQJ0aiI/KAIAIQYCQCAOIBdNBEAgLUEBIB4gK2oiBCAEQQFMGyIIQQJ0IglqKAIAIRMgFCAKIB5BNGxqIgQoAjA2AoABIBQgBCkCKDcDeCAUIAQpAiA3A3AgFCAEKQIYNwNoIBQgBCkCEDcDYCAUIAQpAgg3A1ggFCAEKQIANwNQICQgBkECdGohEgJAIAhBAkkNACAUQdAAaiAJaigCACIiRQ0AIB5BEHRBgID8B3EgG3JBgICACHIhCUEAIQRBACEIICJBCE8EQCAiQXhxITADQCASIAhBAnQiGWogCTYBACASIBlBBHJqIAk2AQAgEiAZQQhyaiAJNgEAIBIgGUEMcmogCTYBACASIBlBEHJqIAk2AQAgEiAZQRRyaiAJNgEAIBIgGUEYcmogCTYBACASIBlBHHJqIAk2AQAgCEEIaiIIIDBHDQALCyAiQQdxIhlFDQADQCASIAhBAnRqIAk2AQAgCEEBaiEIIARBAWoiBCAZRw0ACwsgEyAfRwRAIB8gE2shGSAWIBNBAXRqIRNBACEEA0BBASAXIBUgEyAEQQF0aiIiLQABIghrIjBrdCAUQdAAaiAIQQJ0aiJAKAIAIglqIQggHiAwakEQdEGAgPwHcSAiLQAAQQh0ciAbckGAgIAQciEiA0AgEiAJQQJ0aiAiNgEAIAlBAWoiCSAISQ0ACyBAIAg2AgAgBEEBaiIEIBlHDQALCyAGICBqIRMMAQsgBiAGICBqIhNPDQAgHkEQdEGAgPwHcSAbckGAgIAIciEIIBdBAk0EQCAgQQdxIQlBACEEA0AgJCAGQQJ0aiAINgEAIAZBAWohBiAEQQFqIgQgCUcNAAsgF0EDSQ0BCwNAICQgBkECdCIEaiAINgEAIAQgPmogCDYBACAEID1qIAg2AQAgBCA8aiAINgEAIAQgO2ogCDYBACAEIDpqIAg2AQAgBCA5aiAINgEAIAQgL2ogCDYBACAGQQhqIgYgE0cNAAsLID8gEzYCACAaQQFqIhogH0cNAAsLIAUgDEEQdCAuciAMckGAAnI2AgBBuH8hBCAPIBFPDQAgHSAQIA8gGGogESAPayAFEHIhBAsgFEGQAWokACAEC0GIf0sEQEFsIQsMBAsgDSAQNgKA4gEgDUEBNgKI4QEgDSANQeDiAWoiBDYC8OEBICpBAkYEQCANIA1BqNAAajYCDAsgBCAQaiIEQgA3AAAgBEIANwAYIARCADcAECAEQgA3AAggC0GIf00NAgwDC0ECIQwgIwJ/AkACQAJAIAZBAnZBA3FBAWsOAwEAAgALQQEhDCAGQQN2DAILICEvAABBBHYMAQtBAyEMICEvAAAgIS0AAkEQdHJBBHYLIgQgDGoiC0EgakkEQCALICNLBEBBbCELDAQLIA1B4OIBaiAMICFqIAQQFyEGIA0gBDYCgOIBIA0gBjYC8OEBIAQgBmoiBEIANwAYIARCADcAECAEQgA3AAggBEIANwAADAILIA0gBDYCgOIBIA0gDCAhajYC8OEBDAELQQIhDAJ/AkACQAJAIAZBAnZBA3FBAWsOAwEAAgALQQEhDCAGQQN2DAILICEvAABBBHYMAQsgI0EESQRAQWwhCwwDCyAhLwAAICEtAAJBEHRyIgRBj4CAAUsEQEFsIQsMAwtBAyEMIARBBHYLIQQgDUHg4gFqIAwgIWotAAAgBEEgahAYIQYgDSAENgKA4gEgDSAGNgLw4QEgDEEBaiELCyALICNGBEBBuH8hCwwBCyAhICNqIQwgIyALayEOIA0oApziASEQQQEhCAJAIAsgIWoiBi0AACIdRQRAQQAhHUG4fyELIA5BAUYNAQwCCwJ/IAZBAWogHcAiBEEATg0AGiAEQX9GBEAgDkEDSARAQbh/IQsMBAsgBi8AAUGA/gFqIR0gBkEDagwBCyAOQQJIBEBBuH8hCwwDCyAGLQABIB1BCHRyQYCAAmshHSAGQQJqCyEIQbh/IQsgCEEBaiIEIAxLDQEgDUEQaiANIAgtAAAiCEEGdkEjQQkgBCAMIARrQbCsAUHQpAFBwK0BIA0oAozhASAQIB0QSiILQYh/SwRAQWwhCwwCCyANQZggaiANQQhqIAhBBHZBA3FBH0EIIAQgC2oiBCAMIARrQdCxAUHQsgFB0LMBIA0oAozhASANKAKc4gEgHRBKIgpBiH9LBEBBbCELDAILQWwhCyANQaAwaiANQQRqIAhBAnZBA3FBNEEJIAQgCmoiBCAMIARrQeC1AUGgpgFBwLcBIA0oAozhASANKAKc4gEgHRBKIghBiH9LDQEgBCAIaiAGayIIIQsgCEGIf0sNAQsgDiAIayEEIAYgCGohDwJAAkACQAJAAkACQCAQRQRAIB1BBUggDSkD2OABQoGAgAhUcg0CIA0oAggiBkEIaiEQIAYoAgQhBkEAIQtBACEFA0AgCyAQIAVBA3RqLQACQRZLaiELIAVBAWoiBSAGdkUNAAsgDUEANgKc4gEgC0EIIAZrdEEUTw0BDAMLIA1BADYCnOIBCyAHIA0oAvDhASIFNgK8ASAcIChqIR8gBSANKAKA4gFqIRQgHCEJIB1FDQQgDSgCxOABIRkgDSgCwOABIRMgDSgCvOABIREgDUEBNgKM4QEgByANQbTQAWooAgA2AqwBIAcgDUGs0AFqIiApAgA3AqQBIAcgGTYCtAEgByARNgKwASAHIAkgEWsiEjYCuAFBbCELIAggDkYNBSAHIA82AoQBIAcgD0EEajYCiAECQCAEQQRPBEAgByAPIARBBGsiBWoiBjYCgAEgByAGKAAAIgk2AnggCUGAgIAISSAEQYh/S3INB0EIIAlBGHZnQR9zayEMDAELIAcgDzYCgAEgByAPLQAAIgk2AngCQAJAAkAgBEECaw4CAQACCyAPLQACQRB0IAlyIQkLIAcgDy0AAUEIdCAJaiIJNgJ4CyAMQQFrLQAAIgZFDQYgByAGZyAEQQN0a0EJaiIMNgJ8QQAhBQsgByAJQQAgDSgCACIEKAIEIgYgDGoiDGt2IAZBAnRB0LsBaigCAHEiDjYCjAECQCAMQSBLDQACfyAFQQROBEAgByAPIAUgDEEDdmsiBWo2AoABIAxBB3EMAQsgBUUEQEEAIQUMAgsgByAPIAUgBSAMQQN2IgYgBSAPaiAGayAPSRsiBmsiBWo2AoABIAwgBkEDdGsLIQwgByAFIA9qKAAAIgk2AngLIB1BBEghBiAHIARBCGoiLTYCkAEgByAJQQAgDSgCCCIEKAIEIgggDGoiDGt2IAhBAnRB0LsBaigCAHEiCjYClAECQCAMQSBLDQACfyAFQQROBEAgByAPIAUgDEEDdmsiBWo2AoABIAxBB3EMAQsgBUUEQEEAIQUMAgsgByAPIAUgBSAMQQN2IgggBSAPaiAIayAPSRsiCGsiBWo2AoABIAwgCEEDdGsLIQwgByAFIA9qKAAAIgk2AngLIB1BBCAGGyEeIAcgBEEIaiIuNgKYASAHIA0oAgQiCCgCBCIGIAxqIgQ2AnxBACEMIAcgBkECdEHQuwFqKAIAIAlBACAEa3ZxIhU2ApwBIARBIU8EQCAHIAhBCGo2AqABDAMLAkAgBUEETgRAIAcgBEEHcSIGNgJ8IAcgDyAFIARBA3ZrIgVqIgQ2AoABIAQoAAAhCSAHIAhBCGo2AqABIAcgCTYCeCAGIQQMAQsgBUUEQCAHIAhBCGo2AqABQQAhBQwBCyAHIAQgBSAEQQN2IgQgBSAPaiAEayAPSRsiBkEDdGsiBDYCfCAHIA8gBSAGayIFaiIGNgKAASAGKAAAIQkgByAIQQhqNgKgASAHIAk2AnggBEEgSw0DCyAeQQAgHkEAShshGCAIQQhqISsgBygCqAEhECAHKAKkASEIA0ACQCAHAn8gBUEETgRAIAcgBEEHcSIGNgJ8IAcgDyAFIARBA3ZrIgVqIgQ2AoABIAQoAAAMAQsgBUUEQEEAIQUgBCEGDAILIAcgBCAFIARBA3YiBCAFIA9qIARrIA9JGyIEQQN0ayIGNgJ8IAcgDyAFIARrIgVqIgQ2AoABIAQoAAALIgk2AngLIAwgGEYEQCAGIQQgGCEMDAULIC0gDkEDdGoiFy0AAiEWICsgFUEDdGoiJC0AAiEVICQoAgQhLyAXKAIEIRsCQAJAAkACQCAuIApBA3RqIhotAAIiDkUEQEEAIQoMAQsgBSAPaiEiIBooAgQhKAJAIElCgYCAEFoEQCAHQRggDiAOQRhPGyIEIAZqIgo2AnwgCSAGdEEAIARrdiAOIARrIip0IUQCQCAKQSBLBEAgCiEEDAELIAcCfyAFQQROBEAgByAKQQdxIgQ2AnwgByAPIAUgCkEDdmsiBWoiCjYCgAEgCigAAAwBCyAFRQRAQQAhBSAKIQQMAgsgByAKIAUgCkEDdiIEICIgBGsgD0kbIgpBA3RrIgQ2AnwgByAPIAUgCmsiBWoiCjYCgAEgCigAAAsiCTYCeAsgRCAoaiEKIA5BGUkEQCAEIQYMAgsgByAEICpqIgY2AnwgCSAEdEEAICprdiAKaiEKDAMLIAcgBiAOaiIENgJ8IAkgBnRBACAOa3YgKGohCiAEQSBLBEAgBCEGDAELIAcCfyAFQQROBEAgByAEQQdxIgY2AnwgByAPIAUgBEEDdmsiBWoiBDYCgAEgBCgAAAwBCyAFRQRAQQAhBSAEIQYMAgsgByAEIAUgBEEDdiIEICIgBGsgD0kbIgRBA3RrIgY2AnwgByAPIAUgBGsiBWoiBDYCgAEgBCgAAAsiCTYCeAsgDkEBSw0BCwJAAkAgCiAbRWoiBA4EBAEBAAELIAhBAWsiBCAERWohCgwBCyAEQQJ0IAdqKAKkASIKIApFaiEKIARBAUYNAQsgByAQNgKsAQsgByAKNgKkASAHIAg2AqgBIAghECAKIQgLIBUgFmohCgJAIBVFBEBBACEODAELIAcgBiAVaiIENgJ8IAkgBnRBACAVa3YhDiAEIQYLAkAgCkEUSQRAIAYhBAwBCyAGQSBLBEAgBiEEDAELIAcCfyAFQQROBEAgByAGQQdxIgQ2AnwgByAPIAUgBkEDdmsiBWoiBjYCgAEgBigAAAwBCyAFRQRAQQAhBSAGIQQMAgsgByAGIAUgBkEDdiIEIAUgD2ogBGsgD0kbIgZBA3RrIgQ2AnwgByAPIAUgBmsiBWoiBjYCgAEgBigAAAsiCTYCeAsCQCAWRQRAQQAhBgwBCyAHIAQgFmoiCjYCfCAJIAR0QQAgFmt2IQYgCiEECyAOIC9qIRYgBiAbaiEbAkAgBEEgSwRAIAQhCgwBCyAHAn8gBUEETgRAIAcgBEEHcSIKNgJ8IAcgDyAFIARBA3ZrIgVqIgQ2AoABIAQoAAAMAQsgBUUEQEEAIQUgBCEKDAILIAcgBCAFIARBA3YiBCAFIA9qIARrIA9JGyIEQQN0ayIKNgJ8IAcgDyAFIARrIgVqIgQ2AoABIAQoAAALIgk2AngLIAdBMGogDEEEdGohBiAHIBIgG2oiIiAWaiISNgK4ASAXLwEAIQ4gByAKIBctAAMiFWoiBDYCfCAHIA4gFUECdEHQuwFqKAIAIAlBACAEa3ZxaiIONgKMASAkLwEAIQogByAEICQtAAMiFWoiBDYCfCAHIAogFUECdEHQuwFqKAIAIAlBACAEa3ZxaiIVNgKcASAiIBkgESAIICJLG2ogCGshFwJAIARBIEsEQCAEIQoMAQsgBwJ/IAVBBE4EQCAHIARBB3EiCjYCfCAHIA8gBSAEQQN2ayIFaiIENgKAASAEKAAADAELIAVFBEBBACEFIAQhCgwCCyAHIAQgBSAEQQN2IgQgBSAPaiAEayAPSRsiBEEDdGsiCjYCfCAHIA8gBSAEayIFaiIENgKAASAEKAAACyIJNgJ4CyAaLwEAISQgByAKIBotAAMiGmoiBDYCfCAHICQgGkECdEHQuwFqKAIAIAlBACAEa3ZxaiIKNgKUASAGIBc2AgwgBiAINgIIIAYgFjYCBCAGIBs2AgAgDEEBaiEMIARBIE0NAAsMAgsgDUEANgKc4gELIAcgDSgC8OEBIgU2ArwBIBwgKGohEiAFIA0oAoDiAWohGSAcIRAgHQRAIA0oAsTgASEUIA0oAsDgASEeIA0oArzgASEKIA1BATYCjOEBIAcgDUG00AFqKAIANgKsASAHIA1BrNABaiIWKQIANwKkASAIIA5GBEBBbCELDAULIAcgDzYChAEgByAPQQRqNgKIAQJAAkAgBEEETwRAIAcgDyAEQQRrIgtqIgY2AoABIAcgBigAACIFNgJ4IAVBgICACE8NAUFsIQsMBwsgByAPNgKAASAHIA8tAAAiBTYCeAJAAkACQCAEQQJrDgIBAAILIA8tAAJBEHQgBXIhBQsgByAPLQABQQh0IAVqIgU2AngLIAxBAWstAAAiBkUEQEFsIQsMBwsgByAGZyAEQQN0a0EJaiIJNgJ8QQAhCwwBCyAEQYh/SwRAQWwhCwwGC0EIIAVBGHZnQR9zayEJCyAHIAVBACANKAIAIgQoAgQiBiAJaiIJa3YgBkECdEHQuwFqKAIAcTYCjAECQCAJQSBLDQACfyALQQROBEAgByAPIAsgCUEDdmsiC2o2AoABIAlBB3EMAQsgC0UEQEEAIQsMAgsgByAPIAsgCyAJQQN2IgYgCyAPaiAGayAPSRsiBmsiC2o2AoABIAkgBkEDdGsLIQkgByALIA9qKAAAIgU2AngLIAcgBEEIajYCkAEgByAFQQAgDSgCCCIEKAIEIgYgCWoiCWt2IAZBAnRB0LsBaigCAHE2ApQBAkAgCUEgSw0AAn8gC0EETgRAIAcgDyALIAlBA3ZrIgtqNgKAASAJQQdxDAELIAtFBEBBACELDAILIAcgDyALIAsgCUEDdiIGIAsgD2ogBmsgD0kbIgZrIgtqNgKAASAJIAZBA3RrCyEJIAcgCyAPaigAACIFNgJ4CyAHIARBCGo2ApgBIAcgCSANKAIEIggoAgQiBmoiBDYCfCAHIAZBAnRB0LsBaigCACAFQQAgBGt2cTYCnAECQCAEQSBLDQAgCyAPaiEGIAcCfyALQQROBEAgByAGIARBA3ZrIgU2AoABIARBB3EMAQsgC0UNASAHIAYgCyAEQQN2IgsgBiALayAPSRsiBmsiBTYCgAEgBCAGQQN0aws2AnwgByAFKAAANgJ4CyAHIAhBCGo2AqABIBJBIGshGgJAA0AgBygCfCIEQSFPBEBBbCELIB1FDQIMBwsCQCAHKAKAASIFIAcoAogBIhFPBEAgByAEQQdxIgs2AnwgByAFIARBA3ZrIgU2AoABIAcgBSgAADYCeAwBCyAHKAKEASIGIAVGBEAgBCELDAELIAcgBSAFIAZrIARBA3YiCyAFIAtrIAZJGyIGayIFNgKAASAHIAQgBkEDdGsiCzYCfCAHIAUoAAA2AngLIB0EQCAHKAKQASAHKAKMAUEDdGoiDy0AAiEJIAcoAqABIAcoApwBQQN0aiIfLQACIRggHygCBCEgIA8oAgQhFQJAAkACQAJAIAcoApgBIAcoApQBQQN0aiITLQACIghFBEBBACEMDAELIBMoAgQhDCAIQRlJIElCgYCAEFRyRQRAIAdBICALayIXIAggCCAXSxsiBCALaiIGNgJ8IAcoAngiDiALdEEAIARrdiAIIARrIiR0IUUCQCAGQSBLBEAgBiEEDAELAkAgBSARTwRAIAcgBkEHcSIENgJ8IAcgBSAGQQN2ayIFNgKAAQwBCyAHKAKEASIEIAVGBEAgBiEEDAILIAcgBSAFIARrIAZBA3YiDiAFIA5rIARJGyIEayIFNgKAASAHIAYgBEEDdGsiBDYCfAsgByAFKAAAIg42AngLIEUgDGohDCAIIBdLDQIgBCELDAMLIAcgCCALaiIENgJ8IAcoAnggC3RBACAIa3YhDgJAIARBIEsEQCAEIQsMAQsgBSARTwRAIAcgBEEHcSILNgJ8IAcgBSAEQQN2ayIFNgKAASAHIAUoAAA2AngMAQsgBygChAEiBiAFRgRAIAQhCwwBCyAHIAUgBSAGayAEQQN2IgsgBSALayAGSRsiBmsiBTYCgAEgByAEIAZBA3RrIgs2AnwgByAFKAAANgJ4CyAMIA5qIQwgCEEBSw0CCwJAAkACQAJAAkAgDCAVRWoiBA4EBAEBAAELIAcoAqQBQQFrIgQgBEVqIQwMAQsgBEECdCAHaigCpAEiBiAGRWohDCAEQQFGDQELIAcgBygCqAE2AqwBCyAHIAcoAqQBNgKoASAHIAw2AqQBDAMLIAcoAqQBIQwMAgsgByAEICRqIgs2AnwgDiAEdEEAICRrdiAMaiEMCyAHKQKkASFKIAcgDDYCpAEgByBKNwKoAQsgCSAYaiEGAkAgGEUEQEEAIQ4MAQsgByALIBhqIgQ2AnwgBygCeCALdEEAIBhrdiEOIAQhCwsCQCAGQRRJBEAgCyEEDAELIAtBIEsEQCALIQQMAQsgBSARTwRAIAcgC0EHcSIENgJ8IAcgBSALQQN2ayIFNgKAASAHIAUoAAA2AngMAQsgBygChAEiBCAFRgRAIAshBAwBCyAHIAUgBSAEayALQQN2IgYgBSAGayAESRsiBGsiBTYCgAEgByALIARBA3RrIgQ2AnwgByAFKAAANgJ4CwJAIAlFBEBBACEJDAELIAcgBCAJaiIGNgJ8IAcoAnggBHRBACAJa3YhCSAGIQQLAkAgBEEgSwRAIAQhCwwBCyAFIBFPBEAgByAEQQdxIgs2AnwgByAFIARBA3ZrIgU2AoABIAcgBSgAADYCeAwBCyAHKAKEASIGIAVGBEAgBCELDAELIAcgBSAFIAZrIARBA3YiCyAFIAtrIAZJGyIGayIFNgKAASAHIAQgBkEDdGsiCzYCfCAHIAUoAAA2AngLIA4gIGohBiAJIBVqIQ4gDy8BACEIIAcgCyAPLQADIglqIgQ2AnwgByAIIAlBAnRB0LsBaigCACAHKAJ4IglBACAEa3ZxajYCjAEgHy8BACELIAcgBCAfLQADIghqIgQ2AnwgByALIAhBAnRB0LsBaigCACAJQQAgBGt2cWo2ApwBAkAgBEEgSwRAIAQhCAwBCyAHAn8gBSARTwRAIAcgBEEHcSIINgJ8IAcgBSAEQQN2ayIENgKAASAEKAAADAELIAcoAoQBIgsgBUYEQCAEIQgMAgsgByAEIAUgC2sgBEEDdiIEIAUgBGsgC0kbIgRBA3RrIgg2AnwgByAFIARrIgQ2AoABIAQoAAALIgk2AngLIBMvAQAhBCAHIAggEy0AAyILaiIINgJ8IAcgBCALQQJ0QdC7AWooAgAgCUEAIAhrdnFqNgKUASAHIA42AjAgByAGNgI0IAcgDDYCOAJAAkAgGSAHKAK8ASIEIA5qIghPBEAgECAGIA5qIgtqIBpNDQELIAcgBykDODcDCCAHIAcpAzA3AwAgECASIAcgB0G8AWogGSAKIB4gFBBJIQsMAQsgDiAQaiEJIBAgBCkAADcAACAQIAQpAAg3AAgCQCAOQRFJDQAgECAEKQAQNwAQIBAgBCkAGDcAGCAQIAQpACA3ACAgECAEKQAoNwAoIA5BEGtBIUgNACAEQRBqIQUgEEEwaiEEA0AgBCAFKQAgNwAAIAQgBSkAKDcACCAEIAUpADA3ABAgBCAFKQA4NwAYIAVBIGohBSAEQSBqIgQgCUkNAAsLIAkgDGshBSAHIAg2ArwBIAkgCmsgDEkEQCAJIB5rIAxJBEBBbCELDAoLIBQgFCAFIAprIgRqIgggBmpPBEAgCSAIIAYQHhoMAgsgCSAIQQAgBGsQHiFGIAcgBCAGaiIGNgI0IEYgBGshCSAKIQULIAxBEE8EQCAJIAUpAAA3AAAgCSAFKQAINwAIIAkgBSkAEDcAECAJIAUpABg3ABggBkEhSA0BIAYgCWohBiAJQSBqIQQDQCAEIAUpACA3AAAgBCAFKQAoNwAIIAQgBSkAMDcAECAEIAUpADg3ABggBUEgaiEFIARBIGoiBCAGSQ0ACwwBCwJAIAxBB00EQCAJIAUtAAA6AAAgCSAFLQABOgABIAkgBS0AAjoAAiAJIAUtAAM6AAMgCSAFIAxBAnQiBEHQvAFqKAIAaiIGKAAANgAEIAYgBEHwvAFqKAIAayEFIAcoAjQhBgwBCyAJIAUpAAA3AAALIAZBCUkNACAGIAlqIQggCUEIaiIMIAVBCGoiBGtBD0wEQANAIAwgBCkAADcAACAEQQhqIQQgDEEIaiIMIAhJDQAMAgsACyAMIAQpAAA3AAAgDCAEKQAINwAIIAkgBSkAIDcAICAJIAUpABg3ABggBkEpSA0AIAlBKGohBQNAIAUgBCkAIDcAACAFIAQpACg3AAggBSAEKQAwNwAQIAUgBCkAODcAGCAEQSBqIQQgBUEgaiIFIAhJDQALCyAdQQFrIR0gCyAQaiEQIAtBiX9JDQEMBwsLIAtBIEsNACALQSBHBEBBbCELDAYLIAUgEU8EQEFsIQsMBgtBbCELIAUgBygChAFHDQULIBYgBykCpAE3AgAgFiAHKAKsATYCCCAHKAK8ASEFC0G6fyELIBkgBWsiBCASIBBrSw0DIBAgBSAEEBcgBGogHGshCwwDCyAMIB5IDQILIAwgHSAMIB1KGyEiIB9BIGshFyAcIQkCQANAIARBIU8EQCAMIB1IDQQMAgsCQCAHKAKAASIFIAcoAogBIg5PBEAgByAEQQdxIgY2AnwgByAFIARBA3ZrIgU2AoABIAcgBSgAADYCeAwBCyAHKAKEASIGIAVGBEAgBCEGDAELIAcgBSAFIAZrIARBA3YiCCAFIAhrIAZJGyIGayIFNgKAASAHIAQgBkEDdGsiBjYCfCAHIAUoAAA2AngLIAwgIkYNASAHKAKQASAHKAKMAUEDdGoiEi0AAiEYIAcoAqABIAcoApwBQQN0aiIWLQACIQ8gFigCBCEoIBIoAgQhJAJAAkACQAJAIAcoApgBIAcoApQBQQN0aiIVLQACIgpFBEBBACEQDAELIBUoAgQhEAJAIElCgYCAEFoEQCAHQRggCiAKQRhPGyIEIAZqIgg2AnwgBygCeCIaIAZ0QQAgBGt2IAogBGsiG3QhRwJAIAhBIEsEQCAIIQQMAQsCQCAFIA5PBEAgByAIQQdxIgQ2AnwgByAFIAhBA3ZrIgU2AoABDAELIAcoAoQBIgQgBUYEQCAIIQQMAgsgByAFIAUgBGsgCEEDdiIaIAUgGmsgBEkbIgRrIgU2AoABIAcgCCAEQQN0ayIENgJ8CyAHIAUoAAAiGjYCeAsgRyAQaiEQIApBGU8NAyAEIQYMAQsgByAGIApqIgQ2AnwgBygCeCAGdEEAIAprdiAQaiEQIARBIEsEQCAEIQYMAQsgBSAOTwRAIAcgBEEHcSIGNgJ8IAcgBSAEQQN2ayIFNgKAASAHIAUoAAA2AngMAQsgBygChAEiBiAFRgRAIAQhBgwBCyAHIAUgBSAGayAEQQN2IgggBSAIayAGSRsiBmsiBTYCgAEgByAEIAZBA3RrIgY2AnwgByAFKAAANgJ4CyAKQQFLDQILAkACQAJAAkACQCAQICRFaiIEDgQEAQEAAQsgBygCpAFBAWsiBCAERWohEAwBCyAEQQJ0IAdqKAKkASIIIAhFaiEQIARBAUYNAQsgByAHKAKoATYCrAELIAcgBygCpAE2AqgBIAcgEDYCpAEMAwsgBygCpAEhEAwCCyAHIAQgG2oiBjYCfCAaIAR0QQAgG2t2IBBqIRALIAcpAqQBIUogByAQNgKkASAHIEo3AqgBCyAPIBhqIQgCQCAPRQRAQQAhCgwBCyAHIAYgD2oiBDYCfCAHKAJ4IAZ0QQAgD2t2IQogBCEGCwJAIAhBFEkEQCAGIQQMAQsgBkEgSwRAIAYhBAwBCyAFIA5PBEAgByAGQQdxIgQ2AnwgByAFIAZBA3ZrIgU2AoABIAcgBSgAADYCeAwBCyAHKAKEASIEIAVGBEAgBiEEDAELIAcgBSAFIARrIAZBA3YiCCAFIAhrIARJGyIEayIFNgKAASAHIAYgBEEDdGsiBDYCfCAHIAUoAAA2AngLAkAgGEUEQEEAIQYMAQsgByAEIBhqIgg2AnwgBygCeCAEdEEAIBhrdiEGIAghBAsgCiAoaiEYIAYgJGohDwJAIARBIEsEQCAEIQYMAQsgBSAOTwRAIAcgBEEHcSIGNgJ8IAcgBSAEQQN2ayIFNgKAASAHIAUoAAA2AngMAQsgBygChAEiBiAFRgRAIAQhBgwBCyAHIAUgBSAGayAEQQN2IgggBSAIayAGSRsiBmsiBTYCgAEgByAEIAZBA3RrIgY2AnwgByAFKAAANgJ4CyAHIAcoArgBIA9qIiQgGGo2ArgBIBIvAQAhCCAHIAYgEi0AAyIKaiIENgJ8IAcgCCAKQQJ0QdC7AWooAgAgBygCeCIGQQAgBGt2cWo2AowBIBYvAQAhCCAHIAQgFi0AAyIKaiIENgJ8IAcgCCAKQQJ0QdC7AWooAgAgBkEAIARrdnFqNgKcASAHQfgAakE8QTggECAkSxtqKAIAIRoCQCAEQSBLBEAgBCEIDAELIAcCfyAFIA5PBEAgByAEQQdxIgg2AnwgByAFIARBA3ZrIgQ2AoABIAQoAAAMAQsgBygChAEiCCAFRgRAIAQhCAwCCyAHIAQgBSAIayAEQQN2IgQgBSAEayAISRsiBEEDdGsiCDYCfCAHIAUgBGsiBDYCgAEgBCgAAAsiBjYCeAsgFS8BACEEIAcgCCAVLQADIgpqIgg2AnwgByAEIApBAnRB0LsBaigCACAGQQAgCGt2cWo2ApQBAkACQCAUIAcoArwBIgQgB0EwaiAMQQNxQQR0aiIIKAIAIgVqIhZPBEAgCSAIKAIEIhIgBWoiDmogF00NAQsgByAIKQIINwMoIAcgCCkCADcDICAJIB8gB0EgaiAHQbwBaiAUIBEgEyAZEEkhDgwBCyAFIAlqIQYgCCgCCCEKIAkgBCkAADcAACAJIAQpAAg3AAgCQCAFQRFJDQAgCSAEKQAQNwAQIAkgBCkAGDcAGCAJIAQpACA3ACAgCSAEKQAoNwAoIAVBEGtBIUgNACAEQRBqIQUgCUEwaiEEA0AgBCAFKQAgNwAAIAQgBSkAKDcACCAEIAUpADA3ABAgBCAFKQA4NwAYIAVBIGohBSAEQSBqIgQgBkkNAAsLIAYgCmshBSAHIBY2ArwBIAYgEWsgCkkEQCAKIAYgE2tLDQUgGSAZIAUgEWsiBGoiFiASak8EQCAGIBYgEhAeGgwCCyAEIBJqIRIgESEFIAYgFkEAIARrEB4gBGshBgsgCkEQTwRAIAYgBSkAADcAACAGIAUpAAg3AAggBiAFKQAQNwAQIAYgBSkAGDcAGCASQSFIDQEgBiASaiEKIAZBIGohBANAIAQgBSkAIDcAACAEIAUpACg3AAggBCAFKQAwNwAQIAQgBSkAODcAGCAFQSBqIQUgBEEgaiIEIApJDQALDAELAkAgCkEHTQRAIAYgBS0AADoAACAGIAUtAAE6AAEgBiAFLQACOgACIAYgBS0AAzoAAyAGIAUgCkECdCIEQdC8AWooAgBqIgooAAA2AAQgCiAEQfC8AWooAgBrIQUMAQsgBiAFKQAANwAACyASQQlJDQAgBiASaiEWIAZBCGoiCiAFQQhqIgRrQQ9MBEADQCAKIAQpAAA3AAAgBEEIaiEEIApBCGoiCiAWSQ0ADAILAAsgCiAEKQAANwAAIAogBCkACDcACCAGIAUpACA3ACAgBiAFKQAYNwAYIBJBKUgNACAGQShqIQUDQCAFIAQpACA3AAAgBSAEKQAoNwAIIAUgBCkAMDcAECAFIAQpADg3ABggBEEgaiEEIAVBIGoiBSAWSQ0ACwsgDkGIf00EQCAIIBogJGogEGs2AgwgCCAQNgIIIAggGDYCBCAIIA82AgAgDEEBaiEMIAkgDmohCSAHKAJ8IQQMAQsLIA4hCwwCCyAdIAwgHmsiEEoEQANAAkACQCAUIAcoArwBIgQgB0EwaiAQQQNxQQR0aiIGKAIAIgpqIhhPBEAgCSAGKAIEIg4gCmoiCGogF00NAQsgByAGKQIINwMYIAcgBikCADcDECAJIB8gB0EQaiAHQbwBaiAUIBEgEyAZEEkhCAwBCyAJIApqIQwgBigCCCEGIAkgBCkAADcAACAJIAQpAAg3AAgCQCAKQRFJDQAgCSAEKQAQNwAQIAkgBCkAGDcAGCAJIAQpACA3ACAgCSAEKQAoNwAoIApBEGtBIUgNACAEQRBqIQUgCUEwaiEEA0AgBCAFKQAgNwAAIAQgBSkAKDcACCAEIAUpADA3ABAgBCAFKQA4NwAYIAVBIGohBSAEQSBqIgQgDEkNAAsLIAwgBmshBSAHIBg2ArwBIAwgEWsgBkkEQCAGIAwgE2tLDQUgGSAZIAUgEWsiBGoiCiAOak8EQCAMIAogDhAeGgwCCyAEIA5qIQ4gDCAKQQAgBGsQHiAEayEMIBEhBQsgBkEQTwRAIAwgBSkAADcAACAMIAUpAAg3AAggDCAFKQAQNwAQIAwgBSkAGDcAGCAOQSFIDQEgDCAOaiEGIAxBIGohBANAIAQgBSkAIDcAACAEIAUpACg3AAggBCAFKQAwNwAQIAQgBSkAODcAGCAFQSBqIQUgBEEgaiIEIAZJDQALDAELAkAgBkEHTQRAIAwgBS0AADoAACAMIAUtAAE6AAEgDCAFLQACOgACIAwgBS0AAzoAAyAMIAUgBkECdCIEQdC8AWooAgBqIgYoAAA2AAQgBiAEQfC8AWooAgBrIQUMAQsgDCAFKQAANwAACyAOQQlJDQAgDCAOaiEKIAxBCGoiBiAFQQhqIgRrQQ9MBEADQCAGIAQpAAA3AAAgBEEIaiEEIAZBCGoiBiAKSQ0ADAILAAsgBiAEKQAANwAAIAYgBCkACDcACCAMIAUpACA3ACAgDCAFKQAYNwAYIA5BKUgNACAMQShqIQUDQCAFIAQpACA3AAAgBSAEKQAoNwAIIAUgBCkAMDcAECAFIAQpADg3ABggBEEgaiEEIAVBIGoiBSAKSQ0ACwsgCEGIf0sEQCAIIQsMBAsgCCAJaiEJIBBBAWoiECAdRw0ACwsgICAHKQKkATcCACAgIAcoAqwBNgIIIAcoArwBIQULQbp/IQsgFCAFayIEIB8gCWtLDQAgCSAFIAQQFyAEaiAcayELCyAHQcABaiQAIAsMAgsgHEUEQEEAIQQgI0UNA0G2fyEEDAULICwgHGsgI0kEQEG6fyEEDAULIBwgISAjEBcaICMhBAwCCyAnKAIMIQYgHEUEQEEAIQQgBkUNAkG2fyEEDAQLICwgHGsgBkkEQEG6fyEEDAQLIBwgIS0AACAGEBgaIAYLIgRBiH9LDQILIA0oAvDgAQRAIDEgHCAEEFoLIDggI2shCyAhICNqIQogBCAcaiEcICcoAghFDQALICUpAwAiSUJ/USBJIBwgJmusUXJFBEBBbCEIDAQLAn8gDSgC8OABRQRAIAshASAKDAELQWohCCAxEFghSSALQQRJDQQgCigAACBJp0cNBCALQQRrIQEgCkEEagshACAcICZrIQQLQbh/IQggBEF2RiBBcQ0CIARBiH9LBEAgBCEIDAMLQQEhQSADIARrIQMgBCAmaiEmIAFBAUEFIA0oAuzhASIcGyIETw0ACwtBuH8hCCABDQAgJiACayEICwJAIA0oAojiAQ0AIA1B/OEBaigCACEDIA1B+OEBaigCACEBAkAgDSgCkOIBIgBFDQAgAEHE0AFqKAIAIQQgAEHA0AFqKAIAIQICQAJAIAAoAgAiBgRAIAJFDQEgBCAGIAIRAAAgBCAAIAIRAAAMAwsgAkUNASAEIAAgAhEAAAwCCyAGEBkLIAAQGQsgDUEANgKg4gEgDUIANwOQ4gECQAJAIA0oAqjiASIABEAgAUUNASADIAAgAREAACANQQA2AqjiASADIA0gAREAAAwDCyANQQA2AqjiASABRQ0BIAMgDSABEQAADAILIAAQGSANQQA2AqjiAQsgDRAZCyAIQQAgCEGJf0kbBUEACyFIICdBEGokACBIC+VRASV/IwBBEGsiDiQAQQBBAUHMNxAsIgUEQCAFQgA3AiwgBUIPNwIkIAVCADcCNCAFQQA2AjwgBUIANwIcIAVBgIACNgIUIAVCATcCCCAFQgA3AgAgBUKBgICAcDcCwDcgBSAFQbAKaiIRNgJsIAUgETYCUCAFIBE2AkwCfwJAIAJFIABBASABG0VyDQAgBUHsAGohFiAFQdgAaiEeIAVB8AVqIRcgBUHwAGohGCAFQdQAaiEZIAMhDwNAQX0hCQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBA4eCAcLDhEAQgFEBhYXFxgZGgUdBCssAzICNB4fICFGSwsgBSgCECEEDEALIAUoAhAhCAxBCyAFKAJIIQgMMAsgBSgCSCEIDC0LIAUoAmghCQwlCyAGQQ5JDRUgBiEEDBYLIAZBIE8NDiABRQ0+IAFBAWshBCAALQAAIAZ0IAdqIQcgBkEXTQ0NIABBAWohACAEIQEMDgsgBkEQSQ0BIAYhBAwCCyAFKAIIIghFDRkCQCAGQRBPDQAgAUUNPSAGQQhqIQQgAUEBayEJIAAtAAAgBnQgB2ohByAGQQdLBEAgAEEBaiEAIAkhASAEIQYMAQsgCUUEQCAEIQYMPgsgBkEQciEGIAFBAmshASAALQABIAR0IAdqIQcgAEECaiEACyAIQQJxRSAHQZ+WAkdyRQRAQQAhByAFQQA2AhggDkGflgI7AAxBACAOQQxqQQIQGiEGIAVBATYCACAFIAY2AhhBACEGIAUoAgAhBAxCCyAFQQA2AhAgBSgCICIEBEAgBEF/NgIwCwJAIAhBAXEEQCAHQQh0QYD+A3EgB0EIdmpBH3BFDQELIAVBHTYCACAFKAIAIQQMQgsgB0EPcUEIRwRAIAVBHTYCACAFKAIAIQQMQgsgB0EEdiIEQQ9xIghBCGohCSAFKAIkIgpFBEAgBSAJNgIkDEELIAkgCk0NQCAGQQRrIQYgBUEdNgIAIAQhByAFKAIAIQQMQQsgAUUNOyAGQQhqIQQgAUEBayEJIAAtAAAgBnQgB2ohByAGQQdLBEAgAEEBaiEAIAkhAQwBCyAJRQRAIAQhBgw8CyABQQJrIQEgAC0AASAEdCAHaiEHIABBAmohACAGQRByIQQLIAUgBzYCECAHQf8BcUEIRwRAIAVBHTYCACAEIQYgBSgCACEEDEALIAdBgMADcQRAIAVBHTYCACAEIQYgBSgCACEEDEALIAUoAiAiBgRAIAYgB0EIdkEBcTYCAAsgB0GABHEEQCAOQQg6AAwgDiAHQQh2OgANIAUgBSgCGCAOQQxqQQIQGjYCGAsgBUECNgIAQQAhBkEAIQcMAQsgBkEfSw0BCyABRQ04IAFBAWshBCAALQAAIAZ0IAdqIQcgBkEXSwRAIABBAWohACAEIQEMAQsgBkEIaiEJIARFBEAgCSEGDDkLIAFBAmshBCAALQABIAl0IAdqIQcgBkEPSwRAIABBAmohACAEIQEMAQsgBkEQaiEJIARFBEAgCSEGDDkLIAFBA2shBCAALQACIAl0IAdqIQcgBkEHSwRAIABBA2ohACAEIQEMAQsgBkEYaiEGIARFDTggAUEEayEBIAAtAAMgBnQgB2ohByAAQQRqIQALIAUoAiAiBgRAIAYgBzYCBAsgBS0AEUECcQRAIA4gBzYADCAFIAUoAhggDkEMakEEEBo2AhgLIAVBAzYCAEEAIQZBACEHDAELIAZBD0sNAQsgAUUNNSABQQFrIQQgAC0AACAGdCAHaiEHIAZBB0sEQCAAQQFqIQAgBCEBDAELIAZBCGohBiAERQ01IAFBAmshASAALQABIAZ0IAdqIQcgAEECaiEACyAFKAIgIgYEQCAGIAdBCHY2AgwgBiAHQf8BcTYCCAsgBSgCECIEQYAEcQRAIA4gBzsADCAFIAUoAhggDkEMakECEBo2AhgLIAVBBDYCAEEAIQlBACEGQQAhByAEQYAIcQ0BDC4LIAUoAhAiBEGACHFFBEAgBiEJDC4LIAchCSAGQQ9LDQELIAFFBEAgCSEHDDMLIAFBAWshCCAALQAAIAZ0IAlqIQcgBkEHSwRAIABBAWohACAIIQEMAQsgBkEIaiEGIAhFDTIgAUECayEBIAAtAAEgBnQgB2ohByAAQQJqIQALIAUgBzYCQCAFKAIgIgYEQCAGIAc2AhQLQQAhBiAEQYAEcQRAIA4gBzsADCAFIAUoAhggDkEMakECEBo2AhgLQQAhBwwsCyAGQQhqIQkgBEUEQCAJIQYMMQsgAUECayEEIAAtAAEgCXQgB2ohByAGQQ9LBEAgAEECaiEAIAQhAQwBCyAGQRBqIQkgBEUEQCAJIQYMMQsgAUEDayEEIAAtAAIgCXQgB2ohByAGQQdLBEAgAEEDaiEAIAQhAQwBCyAGQRhqIQYgBEUNMCABQQRrIQEgAC0AAyAGdCAHaiEHIABBBGohAAsgBUEKNgIAIAUgB0EYdCAHQYD+A3FBCHRyIAdBCHZBgP4DcSAHQRh2cnI2AhhBACEHQQAhBgsgBSgCDEUEQCAFIAY2AjwgBSAHNgI4DDULIAVBCzYCACAFQQE2AhgLIAUoAgQNDSAGQQJNBEAgAUUNLiABQQFrIQEgAC0AACAGdCAHaiEHIABBAWohACAGQQhyIQYLIAUgB0EBcTYCBEENIQQCQAJAAkACQCAHQQF2QQNxQQFrDgMAAQIDCyAFQaDyADYCTCAFQomAgIDQADcCVCAFQaCCATYCUEETIQQMAgtBECEEDAELQR0hBAsgBSAENgIAIAZBA2shBiAHQQN2IQcgBSgCACEEDDILIAcgBkEHcXYhBwJ/IAZBeHEiBEEfSwRAIAEhCSAEIQYgAAwBCyABRQRAIAQhBgwuCyAEQQhqIQYgAUEBayEJIAAtAAAgBHQgB2ohByAAQQFqIARBF0sNABogCUUNLSAEQRBqIQggAUECayEJIAAtAAEgBnQgB2ohByAEQQ9LBEAgCCEGIABBAmoMAQsgCUUEQCAIIQYMLgsgBEEYaiEGIAFBA2shCSAALQACIAh0IAdqIQcgAEEDaiAEDQAaIAlFDS0gAUEEayEJIAAtAAMgBnQgB2ohB0EgIQYgAEEEagshACAHQf//A3EiASAHQX9zQRB2RwRAIAVBHTYCACAJIQEgBSgCACEEDDILIAUgATYCQEEAIQcgCSEBQQAhBgsgBUEPNgIACyAFKAJAIgQEQCAEIAEgASAESxsiBCADIAMgBEsbIgRFDSsgAiAAIAQQFyEnIAUgBSgCQCAEazYCQCAnIARqIQIgAyAEayEDIAAgBGohACABIARrIQEgBSgCACEEDDALIAVBCzYCACAFKAIAIQQMLwsgAUUNKSAGQQhqIQQgAUEBayEJIAAtAAAgBnQgB2ohByAGQQVLBEAgAEEBaiEAIAkhAQwBCyAJRQRAIAQhBgwqCyABQQJrIQEgAC0AASAEdCAHaiEHIABBAmohACAGQRByIQQLIAUgB0EfcSIJQYECajYCYCAFIAdBBXZBH3EiCEEBajYCZCAFIAdBCnZBD3FBBGoiCjYCXCAEQQ5rIQYgB0EOdiEHIAhBHkkgCUEdTXFFBEAgBUEdNgIAIAUoAgAhBAwuCyAFQRE2AgBBACEEIAVBADYCaAwLCyAFKAJoIgQgBSgCXCIKSQ0KDAsLIANFDRYgAiAFKAJAOgAAIAVBFDYCACADQQFrIQMgAkEBaiECIAUoAgAhBAwrCyAFKAIIBEACfyAGQR9LBEAgASEEIAYhCCAADAELIAFFDScgBkEIaiEIIAFBAWshBCAALQAAIAZ0IAdqIQcgAEEBaiAGQRdLDQAaIARFDQkgBkEQaiEJIAFBAmshBCAALQABIAh0IAdqIQcgBkEPSwRAIAkhCCAAQQJqDAELIARFBEAgCSEGDCgLIAZBGGohCCABQQNrIQQgAC0AAiAJdCAHaiEHIABBA2ogBkEHSw0AGiAERQ0JIAFBBGshBCAALQADIAh0IAdqIQcgBkEgciEIIABBBGoLIQAgBSAPIANrIgEgBSgCHGo2AhwgBSgCECEKAkAgAyAPRgRAIAUoAhghCQwBCyACIAFrIQYgBSgCGCEJIAUCfyAKBEAgCSAGIAEQGgwBCyAJIAYgARA9CyIJNgIYCyABIBpqIRpBACEGIAcgB0EYdCAHQYD+A3FBCHRyIAdBCHZBgP4DcSAHQRh2cnIgChsgCUcNBEEAIQcgAyEPIAQhAQsgBUEbNgIACwJAIAUoAghFDQAgBSgCEEUNAAJ/IAZBH0sEQCABIQQgBiEJIAAMAQsgAUUNJiAGQQhqIQkgAUEBayEEIAAtAAAgBnQgB2ohByAAQQFqIAZBF0sNABogBEUNByAGQRBqIQggAUECayEEIAAtAAEgCXQgB2ohByAGQQ9LBEAgCCEJIABBAmoMAQsgBEUEQCAIIQYMJwsgBkEYaiEJIAFBA2shBCAALQACIAh0IAdqIQcgAEEDaiAGQQdLDQAaIARFDQcgAUEEayEEIAAtAAMgCXQgB2ohByAGQSByIQkgAEEEagshACAHIAUoAhxHDQRBACEHQQAhBgsgBUEcNgIAC0EBIQkMJAsgBUEMNgIADBQLIAVBHTYCACAEIQEgCCEGIAMhDyAFKAIAIQQMJgsgBUEdNgIAIAQhASAJIQYgBSgCACEEDCULIAVBGjYCACAHIAZBB3F2IQcgBkF4cSEGIAUoAgAhBAwkCyAJIQYMHgsgCCEGDB0LA0AgBkECTQRAIAFFDR4gAUEBayEBIAAtAAAgBnQgB2ohByAAQQFqIQAgBkEIciEGCyAFIARBAWoiCTYCaCAFIARBAXRB8PEAai8BAEEBdGogB0EHcTsBcCAGQQNrIQYgB0EDdiEHIAkiBCAKRw0ACyAKIQQLIARBEk0EQCAEIQlBACEIQQMgBGtBA3EiCgRAA0AgBSAJQQF0QfDxAGovAQBBAXRqQQA7AXAgCUEBaiEJIAhBAWoiCCAKRw0ACwsgBEEQa0EDTwRAA0AgBUHwAGoiBCAJQQF0IghB8PEAai8BAEEBdGpBADsBACAEIAhB8vEAai8BAEEBdGpBADsBACAEIAhB9PEAai8BAEEBdGpBADsBACAEIAhB9vEAai8BAEEBdGpBADsBACAJQQRqIglBE0cNAAsLIAVBEzYCaAsgBUEHNgJUIAUgETYCTCAFIBE2AmxBACEJQQAgGEETIBYgGSAXEDwiEgRAIAVBHTYCACAFKAIAIQQMIQsgBUESNgIAIAVBADYCaEEAIRILIAUoAmAiFSAFKAJkaiIQIAlLBEBBfyAFKAJUdEF/cyETIAUoAkwhDQNAIAYhCiABIQQCQCANIAcgE3EiDEECdGotAAEiCyAGTQRAIAYhCAwBCwNAIARFDQggAC0AACAKdCELIABBAWohACAEQQFrIQQgCkEIaiIIIQogCCANIAcgC2oiByATcSIMQQJ0ai0AASILSQ0ACwsCQCANIAxBAnRqLwECIgZBD00EQCAFIAlBAWoiATYCaCAFIAlBAXRqIAY7AXAgCCALayEGIAcgC3YhByABIQkgBCEBDAELAn8CfwJAAkACQCAGQRBrDgIAAQILIAtBAmoiASAISwRAA0AgBEUNHCAEQQFrIQQgAC0AACAIdCAHaiEHIABBAWohACAIQQhqIgggAUkNAAsLIAggC2shBiAHIAt2IQggCUUEQCAFQR02AgAgBCEBIAghByAFKAIAIQQMJwsgBkECayEGIAhBAnYhByAIQQNxQQNqIQwgCUEBdCAFai8BbgwDCyALQQNqIgEgCEsEQANAIARFDRsgBEEBayEEIAAtAAAgCHQgB2ohByAAQQFqIQAgCEEIaiIIIAFJDQALCyAHIAt2IgFBA3YhByABQQdxQQNqIQwgCCALa0EDawwBCyALQQdqIgEgCEsEQANAIARFDRogBEEBayEEIAAtAAAgCHQgB2ohByAAQQFqIQAgCEEIaiIIIAFJDQALCyAHIAt2IgFBB3YhByABQf8AcUELaiEMIAggC2tBB2sLIQZBAAshCCAEIQEgCSAMaiAQSw0GAkAgDEEDcSIKRQRAIAwhCwwBCyAMQfwBcSELQQAhBANAIAUgCUEBdGogCDsBcCAJQQFqIQkgBEEBaiIEIApHDQALCwJAIAxBBEkNACALQQRrIgRBBHFFBEAgBSAJQQF0aiIKIAg7AXIgCiAIOwFwIAogCDsBdCAKIAg7AXYgBCELIAlBBGohCQsgBEEESQ0AA0AgBSAJQQF0aiIEIAg7AXIgBCAIOwFwIAQgCDsBdCAEIAg7AXYgBCAIOwF4IAQgCDsBeiAEIAg7AXwgBCAIOwF+IAlBCGohCSALQQhrIgsNAAsLIAUgCTYCaAsgCSAQSQ0ACwsgBS8B8ARFBEAgBUEdNgIAIAUoAgAhBAwgCyAFQQk2AlQgBSARNgJMIAUgETYCbEEBIBggFSAWIBkgFxA8IhIEQCAFQR02AgAgBSgCACEEDCALIAVBBjYCWCAFIAUoAmw2AlBBAiAYIAUoAmBBAXRqIAUoAmQgFiAeIBcQPCISDQJBACESCyAFQRQ2AgALIAFBBkkgA0GCAklyDQMgBSAGNgI8IAUgBzYCOCACQQFrIgQgAyAPa2ohHyACIANqQQJrIgIgBSgCMCILIA9qayEgIAtBeHEhISALQQdxIRAgCyAFKAIoIiJqISMgBSgCNEEBayEJIAIgD2shE0F/IAUoAlh0QX9zISRBfyAFKAJUdEF/cyElIAMgBGpBgQJrIRUgAEEBayIKIAFqQQVrIRsgBSgCUCEcIAUoAkwhHSAFKAIsISYCQANAIAZBDk0EfyAKLQABIAZ0IAdqIAotAAIgBkEIanRqIQcgCkECaiEKIAZBEHIFIAYLIB0gByAlcUECdGoiAC0AASIBayEGIAcgAXYhByAALwECIQECQAJAIAAtAAAiAkUNAAJAAkACQAJAAkACQAJAAkACQAJAA0AgAkH/AXEhACACQRBxBEAgAUH//wNxIQECfyAAQQ9xIgBFBEAgCiEIIAcMAQsCfyAAIAZNBEAgCiEIIAYMAQsgCkEBaiEIIAotAAEgBnQgB2ohByAGQQhqCyAAayEGIAdBfyAAdEF/c3EgAWohASAHIAB2CyECIAZBDk0EfyAILQABIAZ0IAJqIAgtAAIgBkEIanRqIQIgCEECaiEIIAZBEHIFIAYLIBwgAiAkcUECdGoiAy0AASIAayEGIAIgAHYhByADLwECIQAgAy0AACICQRBxDQIDQCACQcAAcUUEQCAGIBwgB0F/IAJ0QX9zcSAAQf//A3FqQQJ0aiICLQABIgBrIQYgByAAdiEHIAIvAQIhACACLQAAIgJBEHFFDQEMBAsLQR0hCyAIIQoMAwsgAEHAAHFFBEAgBiAdIAdBfyAAdEF/c3EgAUH//wNxakECdGoiAC0AASIBayEGIAcgAXYhByAALwECIQEgAC0AACICRQ0MDAELC0ELQR0gAEEgcRshCwwBCyAAQf//A3EhDAJ/IAJBD3EiAiAGTQRAIAYhACAIDAELIAgtAAEgBnQgB2ohByAIQQFqIAIgBkEIaiIATQ0AGiAILQACIAB0IAdqIQcgBkEQaiEAIAhBAmoLIQogB0F/IAJ0QX9zcSEIIAAgAmshBiAHIAJ2IQcgCCAMaiINIAQgH2siAEsEQAJAIA0gAGsiAyAmTQ0AIAUoAsA3RQ0AQR0hCwwCCyALRQRAIAkgIiADa2ohAiABIANNDQogCCATaiAMaiAEayEMQQAhCCADQQdxIhRFDQMgAyEAA0AgBCACLQABOgABIABBAWshACAEQQFqIQQgAkEBaiECIAhBAWoiCCAURw0ACwwICyADIAtLBEAgCSAjIANraiECIAEgAyALayIDTQ0KIAggIGogDGogBGshDEEAIQggA0EHcSIURQ0EIAMhAANAIAQgAi0AAToAASAAQQFrIQAgBEEBaiEEIAJBAWohAiAIQQFqIgggFEcNAAsMBwsgCSALIANraiECIAEgA00NCSAIIBNqIAxqIARrIQxBACEIIANBB3EiFEUNBCADIQADQCAEIAItAAE6AAEgAEEBayEAIARBAWohBCACQQFqIQIgCEEBaiIIIBRHDQALDAULIAQgDWshCANAIAQiACAIIgItAAE6AAEgBCAILQACOgACIAQgCC0AAzoAAyAEQQNqIQQgCEEDaiEIIAFBA2siAUECSw0ACyABRQ0KIAAgAi0ABDoABCABQQFGBEAgAEEEaiEEDAsLIAAgAi0ABToABSAAQQVqIQQMCgsgBSALNgIADAsLIAMhAAwECyADIQAMAgsgAyEACyAMQQdJDQIDQCAEIAItAAE6AAEgBCACLQACOgACIAQgAi0AAzoAAyAEIAItAAQ6AAQgBCACLQAFOgAFIAQgAi0ABjoABiAEIAItAAc6AAcgBCACLQAIOgAIIARBCGohBCACQQhqIQIgAEEIayIADQALDAILIAxBB08EQANAIAQgAi0AAToAASAEIAItAAI6AAIgBCACLQADOgADIAQgAi0ABDoABCAEIAItAAU6AAUgBCACLQAGOgAGIAQgAi0ABzoAByAEIAItAAg6AAggBEEIaiEEIAJBCGohAiAAQQhrIgANAAsLIAsgASADayIBTwRAIAkhAgwDC0EAIQACfyAQBEAgCSECA0AgBCACLQABOgABIARBAWohBCACQQFqIQIgAEEBaiIAIBBH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QR5JDQoDQCAAIAMtAAA6AAAgACABLQAAOgABIAAgAS0AAToAAiAAIAEtAAI6AAMgACABLQADOgAEIAAgAS0ABDoABSAAIAEtAAU6AAYgACABLQAGOgAHIAAgAS0ABzoACCAAIAEtAAg6AAkgACABLQAJOgAKIAAgAS0ACjoACyAAIAEtAAs6AAwgACABLQAMOgANIAAgAS0ADToADiAAIAEtAA46AA8gACABKQAPNwAQIAAgASgAFzYAGCAAIAEvABs7ABwgAEEeaiEAIARBHmsiBEEdSw0ACwwKCyAEQRxJDQkDQCAAIAMtAAA6AAAgACABLQAAOgABIAAgAS0AAToAAiAAIAEtAAI6AAMgACABLQADOgAEIAAgAS0ABDoABSAAIAEtAAU6AAYgACABLQAGOgAHIAAgAS0ABzoACCAAIAEtAAg6AAkgACABLQAJOgAKIAAgAS0ACjoACyAAIAEtAAs6AAwgACABLQAMOgANIAAgAS0ADToADiAAIAEtAA46AA8gACABKQAPNwAQIAAgASgAFzYAGCAAQRxqIQAgBEEcayIEQRtLDQALDAkLIARBGkkNCANAIAAgAy0AADoAACAAIAEtAAA6AAEgACABLQABOgACIAAgAS0AAjoAAyAAIAEtAAM6AAQgACABLQAEOgAFIAAgAS0ABToABiAAIAEtAAY6AAcgACABLQAHOgAIIAAgAS0ACDoACSAAIAEtAAk6AAogACABLQAKOgALIAAgAS0ACzoADCAAIAEtAAw6AA0gACABLQANOgAOIAAgAS0ADjoADyAAIAEpAA83ABAgACABLwAXOwAYIABBGmohACAEQRprIgRBGUsNAAsMCAsgBEEYSQ0HA0AgACADLQAAOgAAIAAgAS0AADoAASAAIAEtAAE6AAIgACABLQACOgADIAAgAS0AAzoABCAAIAEtAAQ6AAUgACABLQAFOgAGIAAgAS0ABjoAByAAIAEtAAc6AAggACABLQAIOgAJIAAgAS0ACToACiAAIAEtAAo6AAsgACABLQALOgAMIAAgAS0ADDoADSAAIAEtAA06AA4gACABLQAOOgAPIAAgASkADzcAECAAQRhqIQAgBEEYayIEQRdLDQALDAcLIARBFkkNBgNAIAAgAy0AADoAACAAIAEtAAA6AAEgACABLQABOgACIAAgAS0AAjoAAyAAIAEtAAM6AAQgACABLQAEOgAFIAAgAS0ABToABiAAIAEtAAY6AAcgACABLQAHOgAIIAAgAS0ACDoACSAAIAEtAAk6AAogACABLQAKOgALIAAgAS0ACzoADCAAIAEtAAw6AA0gACABLQANOgAOIAAgAS0ADjoADyAAIAEoAA82ABAgACABLwATOwAUIABBFmohACAEQRZrIgRBFUsNAAsMBgsgBEEUSQ0FA0AgACADLQAAOgAAIAAgAS0AADoAASAAIAEtAAE6AAIgACABLQACOgADIAAgAS0AAzoABCAAIAEtAAQ6AAUgACABLQAFOgAGIAAgAS0ABjoAByAAIAEtAAc6AAggACABLQAIOgAJIAAgAS0ACToACiAAIAEtAAo6AAsgACABLQALOgAMIAAgAS0ADDoADSAAIAEtAA06AA4gACABLQAOOgAPIAAgASgADzYAECAAQRRqIQAgBEEUayIEQRNLDQALDAULIARBEkkNBANAIAAgAy0AADoAACAAIAEtAAA6AAEgACABLQABOgACIAAgAS0AAjoAAyAAIAEtAAM6AAQgACABLQAEOgAFIAAgAS0ABToABiAAIAEtAAY6AAcgACABLQAHOgAIIAAgAS0ACDoACSAAIAEtAAk6AAogACABLQAKOgALIAAgAS0ACzoADCAAIAEtAAw6AA0gACABLQANOgAOIAAgAS0ADjoADyAAIAEvAA87ABAgAEESaiEAIARBEmsiBEERSw0ACwwECwNAIAAgAy0AADoAACAAIAMtAAE6AAEgACADLQACOgACIAAgAy0AAzoAAyAAIAMtAAQ6AAQgACADLQAFOgAFIAAgAy0ABjoABiAAIAMtAAc6AAcgAEEIaiEAIANBCGohAyAEQQhrIgQNAAsgBgwECyAEQRBPDQEMAgsgACAJQQFqIgZqIA1LDQUgAyAGaiIBIAhLDQUgACADIAYQJyEAIAEgCE8NA0EBIQsgAS0AACEJIAFBAWoMAgsDQCAAIAMtAAA6AAAgACABLQAAOgABIAAgAS0AAToAAiAAIAEtAAI6AAMgACABLQADOgAEIAAgAS0ABDoABSAAIAEtAAU6AAYgACABLQAGOgAHIAAgAS0ABzoACCAAIAEtAAg6AAkgACABLQAJOgAKIAAgAS0ACjoACyAAIAEtAAs6AAwgACABLQAMOgANIAAgAS0ADToADiAA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FBEKACABLQA1BEAgAUEDNgIsIAEtADRFDQEMAwsgAUEENgIsCyABIAI2AhQgASABKAIoQQFqNgIoIAEoAiRBAUcNASABKAIYQQJHDQEgAUEBOgA2DwsgACgCCCIAIAEgAiADIAQgACgCACgCGBELAAsLNwAgACABKAIIIAUQHwRAIAEgAiADIAQQZA8LIAAoAggiACABIAIgAyAEIAUgACgCACgCFBEKAAudAQECfyMAQUBqIgMkAAJ/QQEgACABQQAQHw0AGkEAIAFFDQAaQQAgAUGU2gEQZSIBRQ0AGiADQQxqQQBBNBAYGiADQQE2AjggA0F/NgIUIAMgADYCECADIAE2AgggASADQQhqIAIoAgBBASABKAIAKAIcEQkAIAMoAiAiAEEBRgRAIAIgAygCGDYCAAsgAEEBRgshBCADQUBrJAAgBAsKACAAIAFBABAfCwYAEKEBAAsFABAHAAsEAEIACwQAQQALRQECfyAAKAI8IQQjAEEQayIAJAAgBCABpyABQiCIpyACQf8BcSAAQQhqEA0QbCECIAApAwghASAAQRBqJABCfyABIAIbC70CAQh/IwBBIGsiAyQAIAMgACgCHCIENgIQIAAoAhQhBSADIAI2AhwgAyABNgIYIAMgBSAEayIBNgIUIAEgAmohBUECIQYgA0EQaiEBAn8DQAJAAkACQCAAKAI8IAEgBiADQQxqEBEQbEUEQCAFIAMoAgwiB0YNASAHQQBODQIMAwsgBUF/Rw0CCyAAIAAoAiwiATYCHCAAIAE2AhQgACABIAAoAjBqNgIQIAIMAwsgASAHIAEoAgQiCEsiCUEDdGoiBCAHIAhBACAJG2siCCAEKAIAajYCACABQQxBBCAJG2oiASABKAIAIAhrNgIAIAUgB2shBSAGIAlrIQYgBCEBDAELCyAAQQA2AhwgAEIANwMQIAAgACgCAEEgcjYCAEEAIAZBAkYNABogAiABKAIEawshCiADQSBqJAAgCgsJACAAKAI8EBILmAEBA38CfwJAAkAgACgCBCICIgBBA3FFDQBBACAALQAARQ0CGgNAIABBAWoiAEEDcUUNASAALQAADQALDAELA0AgACIBQQRqIQAgASgCACIDQX9zIANBgYKECGtxQYCBgoR4cUUNAAsDQCABIgBBAWohASAALQAADQALCyAAIAJrC0EBaiIAEB0i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dzx1bnNpZ25lZCBzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50NjRfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50NjRfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDMyX3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDMyX3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGNoYXI+AHN0ZDo6YmFzaWNfc3RyaW5nPHVuc2lnbmVkIGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNpZ25lZCBjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxsb25nPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBsb25nPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxkb3VibGU+AGx6NABjb21wcmVzc2lvbiBzdXBwb3J0LiAgUGxlYXNlIHVzZSBvbmUgaGF2aW5nIGl0LgAobnVsbCkARXJyb3IuICBudGhyZWFkcyBjYW5ub3QgYmUgbGFyZ2VyIHRoYW4gQkxPU0NfTUFYX1RIUkVBRFMgKCVkKQBFcnJvciBhbGxvY2F0aW5nIG1lbW9yeSEAQmxvc2MgaGFzIG5vdCBiZWVuIGNvbXBpbGVkIHdpdGggJyVzJyAASW5wdXQgYnVmZmVyIHNpemUgY2Fubm90IGV4Y2VlZCAlZCBieXRlcwoACUVycm9yIGRldGFpbDogJXMKAEVSUk9SOyByZXR1cm4gY29kZSBmcm9tIHB0aHJlYWRf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AAUAAAAFAAAAMAAAAAcAAAAXAAAAFwAAABYAAAAFAAAABAAAAEAAAAAHAAAAFwAAABcAAAAWAAAABgAAAAMAAABAAAAACAAAABcAAAAYAAAAFgAAAAcAAAADAAAAAAEAAAkAAAAZAAAAGQAAABcAAAAHAAAAAwAAAAABAAAJAAAAGgAAABoAAAAYAAAABwAAAAMAAAAAAgAACQAAABsAAAAbAAAAGQAAAAkAAAADAAAA5wMAAAkAAAASAAAADAAAAA0AAAABAAAABQAAAAEAAAABAAAAEgAAAA0AAAAOAAAAAQAAAAYAAAAAAAAAAQAAABIAAAAOAAAADgAAAAEAAAAFAAAAAAAAAAIAAAASAAAAEAAAABAAAAABAAAABAAAAAAAAAACAAAAEgAAABAAAAARAAAAAgAAAAUAAAACAAAAAwAAABIAAAASAAAAEgAAAAMAAAAFAAAAAgAAAAMAAAASAAAAEgAAABMAAAADAAAABQAAAAQAAAAEAAAAEgAAABIAAAATAAAABAAAAAQAAAAEAAAABAAAABIAAAASAAAAEwAAAAQAAAAEAAAACAAAAAUAAAASAAAAEgAAABMAAAAFAAAABAAAAAgAAAAFAAAAEgAAABIAAAATAAAABgAAAAQAAAAIAAAABQAAABIAAAASAAAAEwAAAAUAAAAEAAAADAAAAAYAAAASAAAAEwAAABMAAAAHAAAABAAAAAwAAAAGAAAAEgAAABIAAAATAAAABAAAAAQAAAAQAAAABwAAABIAAAASAAAAEwAAAAQAAAADAAAAIAAAAAcAAAASAAAAEgAAABMAAAAGAAAAAwAAAIAAAAAHAAAAEgAAABMAAAATAAAABgAAAAMAAACAAAAACAAAABIAAAATAAAAEwAAAAgAAAADAAAAAAEAAAgAAAASAAAAEwAAABMAAAAGAAAAAwAAAIAAAAAJAAAAEgAAABMAAAATAAAACAAAAAMAAAAAAQAACQAAABIAAAATAAAAEwAAAAoAAAADAAAAAAIAAAkAAAASAAAAEwAAABMAAAAMAAAAAwAAAAACAAAJAAAAEgAAABMAAAATAAAADQAAAAMAAADnAwAACQAAABEAAAAMAAAADAAAAAEAAAAFAAAAAQAAAAEAAAARAAAADAAAAA0AAAABAAAABgAAAAAAAAABAAAAEQAAAA0AAAAPAAAAAQAAAAUAAAAAAAAAAQAAABEAAAAPAAAAEAAAAAIAAAAFAAAAAAAAAAIAAAARAAAAEQAAABEAAAACAAAABAAAAAAAAAACAAAAEQAAABAAAAARAAAAAwAAAAQAAAACAAAAAwAAABEAAAARAAAAEQAAAAMAAAAEAAAABAAAAAQAAAARAAAAEQAAABEAAAADAAAABAAAAAgAAAAFAAAAEQAAABEAAAARAAAABAAAAAQAAAAIAAAABQAAABEAAAARAAAAEQAAAAUAAAAEAAAACAAAAAUAAAARAAAAEQAAABEAAAAGAAAABAAAAAgAAAAFAAAAEQAAABEAAAARAAAABQAAAAQAAAAIAAAABgAAABEAAAASAAAAEQAAAAcAAAAEAAAADAAAAAYAAAARAAAAEgAAABEAAAADAAAABAAAAAwAAAAHAAAAEQAAABIAAAARAAAABAAAAAMAAAAgAAAABwAAABEAAAASAAAAEQAAAAYAAAADAAAAAAEAAAcAAAARAAAAEgAAABEAAAAGAAAAAwAAAIAAAAAIAAAAEQAAABIAAAARAAAACAAAAAMAAAAAAQAACAAAABEAAAASAAAAEQAAAAoAAAADAAAAAAIAAAgAAAARAAAAEgAAABEAAAAFAAAAAwAAAAABAAAJAAAAEQAAABIAAAARAAAABwAAAAMAAAAAAgAACQAAABEAAAASAAAAEQAAAAkAAAADAAAAAAIAAAkAAAARAAAAEgAAABEAAAALAAAAAwAAAOcDAAAJAAAADgAAAAwAAAANAAAAAQAAAAUAAAABAAAAAQAAAA4AAAAOAAAADwAAAAEAAAAFAAAAAAAAAAEAAAAOAAAADgAAAA8AAAABAAAABAAAAAAAAAABAAAADgAAAA4AAAAPAAAAAgAAAAQAAAAAAAAAAgAAAA4AAAAOAAAADgAAAAQAAAAEAAAAAgAAAAMAAAAOAAAADgAAAA4AAAADAAAABAAAAAQAAAAEAAAADgAAAA4AAAAOAAAABAAAAAQAAAAIAAAABQAAAA4AAAAOAAAADgAAAAYAAAAEAAAACAAAAAUAAAAOAAAADgAAAA4AAAAIAAAABAAAAAgAAAAFAAAADgAAAA8AAAAOAAAABQAAAAQAAAAIAAAABgAAAA4AAAAPAAAADgAAAAkAAAAEAAAACAAAAAYAAAAOAAAADwAAAA4AAAADAAAABAAAAAwAAAAHAAAADgAAAA8AAAAOAAAABAAAAAMAAAAYAAAABwAAAA4AAAAPAAAADgAAAAUAAAADAAAAIAAAAAgAAAAOAAAADwAAAA8AAAAGAAAAAwAAAEAAAAAIAAAADgAAAA8AAAAPAAAABwAAAAMAAAAAAQAACAAAAA4AAAAPAAAADwAAAAUAAAADAAAAMAAAAAkAAAAOAAAADwAAAA8AAAAGAAAAAwAAAIAAAAAJAAAADgAAAA8AAAAPAAAABwAAAAMAAAAAAQAACQAAAA4AAAAPAAAADwAAAAgAAAADAAAAAAEAAAkAAAAOAAAADwAAAA8AAAAIAAAAAwAAAAACAAAJAAAADgAAAA8AAAAPAAAACQAAAAMAAAAAAgAACQAAAA4AAAAPAAAADwAAAAoAAAADAAAA5wMAAAkAAAAEAAMAAgACAAIAAgACAAIAAgACAAIAAgACAAEAAQABAAIAAgACAAIAAgACAAIAAgACAAMAAgABAAEAAQABAAEA//////////8AAAAAAAAAAAEAAQABAAEAAQABAAIAAgACAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAP////////////8AAAAAAAABAAQAAwACAAIAAgACAAIAAgABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAP//////////////////AEG0nAELmQhrOAcADbIHAJzyBwBwZAgAYK4KALBxCwAwqgwAAAAAAAAIAAAABwAAagYAAAAGAACtBQAAagUAADEFAAAABQAA1AQAAK0EAACKBAAAagQAAEwEAAAxBAAAFwQAAAAEAADpAwAA1AMAAMADAACtAwAAmwMAAIoDAAB5AwAAagMAAFsDAABMAwAAPgMAADEDAAAkAwAAFwMAAAsDAAAAAwAA9AIAAOkCAADeAgAA1AIAAMoCAADAAgAAtgIAAK0CAACkAgAAmwIAAJICAACKAgAAggIAAHkCAAByAgAAagIAAGICAABbAgAAUwIAAEwCAABFAgAAPgIAADcCAAAxAgAAKgIAACQCAAAeAgAAFwIAABECAAALAgAABQIAAAACAAD6AQAA9AEAAO8BAADpAQAA5AEAAN4BAADZAQAA1AEAAM8BAADK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AAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAHAAAACAAAAAkAAAAKAAAACwAAAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFAAA0bwAAkF4AAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0loTlNfMTFjaGFyX3RyYWl0c0loRUVOU185YWxsb2NhdG9ySWhFRUVFAAA0bwAA2F4AAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0l3TlNfMTFjaGFyX3RyYWl0c0l3RUVOU185YWxsb2NhdG9ySXdFRUVFAAA0bwAAIF8AAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0lEc05TXzExY2hhcl90cmFpdHNJRHNFRU5TXzlhbGxvY2F0b3JJRHNFRUVFAAAANG8AAGhfAABOU3QzX18yMTJiYXNpY19zdHJpbmdJRGlOU18xMWNoYXJfdHJhaXRzSURpRUVOU185YWxsb2NhdG9ySURpRUVFRQAAADRvAAC0XwAATjEwZW1zY3JpcHRlbjN2YWxFAAA0bwAAAGAAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWNFRQAANG8AABxgAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lhRUUAADRvAABEYAAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJaEVFAAA0bwAAbGAAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXNFRQAANG8AAJRgAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0l0RUUAADRvAAC8YAAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJaUVFAAA0bwAA5GAAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWpFRQAANG8AAAxhAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lsRUUAADRvAAA0YQAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJbUVFAAA0bwAAXGEAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXhFRQAANG8AAIRhAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0l5RUUAADRvAACsYQAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJZkVFAAA0bwAA1GEAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWRFRQAANG8AAPxhAABObyBlcnJvciBpbmZvcm1hdGlvbgBJbGxlZ2FsIGJ5dGUgc2VxdWVuY2UARG9tYWluIGVycm9yAFJlc3VsdCBub3QgcmVwcmVzZW50YWJsZQBOb3QgYSB0dHkAUGVybWlzc2lvbiBkZW5pZWQAT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQATm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQBObyBzdWNoIHByb2Nlc3MARmlsZSBleGlzdHMAVmFsdWUgdG9vIGxhcmdlIGZvciBkYXRhIHR5cGUATm8gc3BhY2UgbGVmdCBvbiBkZXZpY2UAT3V0IG9mIG1lbW9yeQBSZXNvdXJjZSBidXN5AEludGVycnVwdGVkIHN5c3RlbSBjYWxsAFJlc291cmNlIHRlbXBvcmFyaWx5IHVuYXZhaWxhYmxlAEludmFsaWQgc2VlawBDcm9zcy1kZXZpY2UgbGluawBSZWFkLW9ubHkgZmlsZSBzeXN0ZW0ARGlyZWN0b3J5IG5vdCBlbXB0eQBDb25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIAT3BlcmF0aW9uIHRpbWVkIG91dABDb25uZWN0aW9uIHJlZnVzZWQASG9zdCBpcyBkb3duAEhvc3QgaXMgdW5yZWFjaGFibGUAQWRkcmVzcyBpbiB1c2UAQnJva2VuIHBpcGUASS9PIGVycm9yAE5vIHN1Y2ggZGV2aWNlIG9yIGFkZHJlc3MAQmxvY2sgZGV2aWNlIHJlcXVpcmVkAE5vIHN1Y2ggZGV2aWNlAE5vdCBhIGRpcmVjdG9yeQBJcyBhIGRpcmVjdG9yeQBUZXh0IGZpbGUgYnVzeQBFeGVjIGZvcm1hdCBlcnJvcgBJbnZhbGlkIGFyZ3VtZW50AEFyZ3VtZW50IGxpc3QgdG9vIGxvbmcAU3ltYm9saWMgbGluayBsb29wAEZpbGVuYW1lIHRvbyBsb25nAFRvbyBtYW55IG9wZW4gZmlsZXMgaW4gc3lzdGVtAE5vIGZpbGUgZGVzY3JpcHRvcnMgYXZhaWxhYmxlAEJhZCBmaWxlIGRlc2NyaXB0b3IATm8gY2hpbGQgcHJvY2VzcwBCYWQgYWRkcmVzcwBGaWxlIHRvbyBsYXJnZQBUb28gbWFueSBsaW5rcwBObyBsb2NrcyBhdmFpbGFibGUAUmVzb3VyY2UgZGVhZGxvY2sgd291bGQgb2NjdXIAU3RhdGUgbm90IHJlY292ZXJhYmxlAFByZXZpb3VzIG93bmVyIGRpZWQAT3BlcmF0aW9uIGNhbmNlbGVkAEZ1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZABObyBtZXNzYWdlIG9mIGRlc2lyZWQgdHlwZQBJZGVudGlmaWVyIHJlbW92ZWQARGV2aWNlIG5vdCBhIHN0cmVhbQBObyBkYXRhIGF2YWlsYWJsZQBEZXZpY2UgdGltZW91dABPdXQgb2Ygc3RyZWFtcyByZXNvdXJjZXMATGluayBoYXMgYmVlbiBzZXZlcmVkAFByb3RvY29sIGVycm9yAEJhZCBtZXNzYWdlAEZpbGUgZGVzY3JpcHRvciBpbiBiYWQgc3RhdGUATm90IGEgc29ja2V0AERlc3RpbmF0aW9uIGFkZHJlc3MgcmVxdWlyZWQATWVzc2FnZSB0b28gbGFyZ2UAUHJvdG9jb2wgd3JvbmcgdHlwZSBmb3Igc29ja2V0AFByb3RvY29sIG5vdCBhdmFpbGFibGUAUHJvdG9jb2wgbm90IHN1cHBvcnRlZABTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkAE5vdCBzdXBwb3J0ZWQAUHJvdG9jb2wgZmFtaWx5IG5vdCBzdXBwb3J0ZWQAQWRkcmVzcyBmYW1pbHkgbm90IHN1cHBvcnRlZCBieSBwcm90b2NvbABBZGRyZXNzIG5vdCBhdmFpbGFibGUATmV0d29yayBpcyBkb3duAE5ldHdvcmsgdW5yZWFjaGFibGUAQ29ubmVjdGlvbiByZXNldCBieSBuZXR3b3JrAENvbm5lY3Rpb24gYWJvcnRlZABObyBidWZmZXIgc3BhY2UgYXZhaWxhYmxlAFNvY2tldCBpcyBjb25uZWN0ZWQAU29ja2V0IG5vdCBjb25uZWN0ZWQAQ2Fubm90IHNlbmQgYWZ0ZXIgc29ja2V0IHNodXRkb3duAE9wZXJhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNzAE9wZXJhdGlvbiBpbiBwcm9ncmVzcwBTdGFsZSBmaWxlIGhhbmRsZQBSZW1vdGUgSS9PIGVycm9yAFF1b3RhIGV4Y2VlZGVkAE5vIG1lZGl1bSBmb3VuZABXcm9uZyBtZWRpdW0gdHlwZQBNdWx0aWhvcCBhdHRlbXB0ZWQAUmVxdWlyZWQga2V5IG5vdCBhdmFpbGFibGUAS2V5IGhhcyBleHBpcmVkAEtleSBoYXMgYmVlbiByZXZva2VkAEtleSB3YXMgcmVqZWN0ZWQgYnkgc2VydmljZQAAAAAApQJbAPABtQWMBSUBgwYdA5QE/wDHAzEDCwa8AY8BfwPKBCsA2gavAEIDTgPcAQ4EFQChBg0BlAILAjgGZAK8Av8CXQPnBAsHzwLLBe8F2wXhAh4GRQKFAIICbANvBPEA8wMYBdkA2gNMBlQCewGdA70EAABRABUCuwCzA20A/wGFBC8F+QQ4AGUBRgGfALcGqAFzAlMBAEHo1AELDCEEAAAAAAAAAAAvAgBBiNUBCwY1BEcEVgQAQZ7VAQsCoAQAQbLVAQsiRgVgBW4FYQYAAM8BAAAAAAAAAADJBukG+QYeBzkHSQdeBwBB4NUBC0EZAAoAGRkZAAAAAAUAAAAAAAAJAAAAAAsAAAAAAAAAABkAEQoZGRkDCgcAAQAJCxgAAAkGCwAACwAGGQAAABkZGQBBsdYBCyEOAAAAAAAAAAAZAAoNGRkZAA0AAAIACQ4AAAAJAA4AAA4AQevWAQsBDABB99YBCxUTAAAAABMAAAAACQwAAAAAAAwAAAwAQaXXAQsBEABBsdcBCxUPAAAABA8AAAAACRAAAAAAABAAABAAQd/XAQsBEgBB69cBCx4RAAAAABEAAAAACRIAAAAAABIAABIAABoAAAAaGhoAQaLYAQsOGgAAABoaGgAAAAAAAAkAQdPYAQsBFABB39gBCxUXAAAAABcAAAAACRQAAAAAABQAABQAQY3ZAQsBFgBBmdkBC5QGFQAAAAAVAAAAAAkWAAAAAAAWAAAWAAAwMTIzNDU2Nzg5QUJDREVGTjEwX19jeHhhYml2MTE2X19zaGltX3R5cGVfaW5mb0UAAAAAdG8AAMBsAABkbwAATjEwX19jeHhhYml2MTE3X19jbGFzc190eXBlX2luZm9FAAAAdG8AAPBsAADkbAAATjEwX19jeHhhYml2MTE3X19wYmFzZV90eXBlX2luZm9FAAAAdG8AACBtAADkbAAATjEwX19jeHhhYml2MTE5X19wb2ludGVyX3R5cGVfaW5mb0UAdG8AAFBtAABEbQAAAAAAAMRtAAA9AAAAPgAAAD8AAABAAAAAQQAAAE4xMF9fY3h4YWJpdjEyM19fZnVuZGFtZW50YWxfdHlwZV9pbmZvRQB0bwAAnG0AAORsAAB2AAAAiG0AANBtAABiAAAAiG0AANxtAABjAAAAiG0AAOhtAABoAAAAiG0AAPRtAABhAAAAiG0AAABuAABzAAAAiG0AAAxuAAB0AAAAiG0AABhuAABpAAAAiG0AACRuAABqAAAAiG0AADBuAABsAAAAiG0AADxuAABtAAAAiG0AAEhuAAB4AAAAiG0AAFRuAAB5AAAAiG0AAGBuAABmAAAAiG0AAGxuAABkAAAAiG0AAHhuAABOMTBfX2N4eGFiaXYxMjBfX3NpX2NsYXNzX3R5cGVfaW5mb0UAAAAAdG8AAIRuAAAUbQAAU3Q5ZXhjZXB0aW9uAAAAAAAAAADsbgAAFgAAAEIAAABDAAAAU3QxMWxvZ2ljX2Vycm9yAHRvAADcbgAAlG8AAAAAAAAgbwAAFgAAAEQAAABDAAAAU3QxMmxlbmd0aF9lcnJvcgAAAAB0bwAADG8AAOxuAAAAAAAAFG0AAD0AAABFAAAAPwAAAEAAAABGAAAARwAAAEgAAABJAAAAU3Q5dHlwZV9pbmZvAAAAADRvAABUbwAAAAAAAKxuAAA9AAAASgAAAD8AAABAAAAARgAAAEsAAABMAAAATQAAADRvAAC4bgAAAAAAAJRvAABOAAAATwAAAFAAQbDfAQtBQHoBAIAxAACANgAAAQEAAB4BAAAPAAAAADYAAAA3AAAAAAAAHgAAAA8AAAAAAAAAgDcAAAAAAAATAAAABwAAAAUAQfzfAQsBNwBBlOABCwo4AAAAOQAAACR2AEGs4AELAQIAQbzgAQsI//////////8AQYDhAQsBBQBBjOEBCwE6AEGk4QELDjgAAAA7AAAAOHYAAAAEAEG84QELAQEAQczhAQsF/////woAQZDiAQsBPA=="); + COMPRESSORS = /* @__PURE__ */ new Set(["blosclz", "lz4", "lz4hc", "snappy", "zlib", "zstd"]); + init = () => blosc_codec_default({ noInitialRun: true, wasmBinary: blosc_codec_default2 }); + Blosc = (_a2 = class { + constructor(clevel = 5, cname = "lz4", shuffle = 1, blocksize = 0) { + __publicField(this, "clevel"); + __publicField(this, "cname"); + __publicField(this, "shuffle"); + __publicField(this, "blocksize"); + if (clevel < 0 || clevel > 9) { + throw new Error(`Invalid compression level: '${clevel}'. It should be between 0 and 9`); + } + if (!COMPRESSORS.has(cname)) { + throw new Error( + `Invalid compressor '${cname}'. Valid compressors include + 'blosclz', 'lz4', 'lz4hc','snappy', 'zlib', 'zstd'.` + ); + } + if (shuffle < -1 || shuffle > 2) { + throw new Error( + `Invalid shuffle ${shuffle}. Must be one of 0 (NOSHUFFLE), + 1 (SHUFFLE), 2 (BITSHUFFLE), -1 (AUTOSHUFFLE).` + ); + } + this.blocksize = blocksize; + this.clevel = clevel; + this.cname = cname; + this.shuffle = shuffle; + } + static fromConfig({ blocksize, clevel, cname, shuffle }) { + return new _a2(clevel, cname, shuffle, blocksize); + } + async encode(data) { + if (!emscriptenModule) { + emscriptenModule = init(); + } + const module = await emscriptenModule; + const view = module.compress(data, this.cname, this.clevel, this.shuffle, this.blocksize); + const result = new Uint8Array(view); + module.free_result(); + return result; + } + async decode(data, out) { + if (!emscriptenModule) { + emscriptenModule = init(); + } + const module = await emscriptenModule; + const view = module.decompress(data); + const result = new Uint8Array(view); + module.free_result(); + if (out !== void 0) { + out.set(result); + return out; + } + return result; + } + }, __publicField(_a2, "codecId", "blosc"), __publicField(_a2, "COMPRESSORS", [...COMPRESSORS]), __publicField(_a2, "NOSHUFFLE", 0), __publicField(_a2, "SHUFFLE", 1), __publicField(_a2, "BITSHUFFLE", 2), __publicField(_a2, "AUTOSHUFFLE", -1), _a2); + blosc_default = Blosc; + } +}); + +// ../../node_modules/numcodecs/dist/lz4.js +var lz4_exports = {}; +__export(lz4_exports, { + default: () => lz4_default +}); +var lz4_codec, lz4_codec_default, lz4_codec_default2, DEFAULT_ACCELERATION, MAX_BUFFER_SIZE, emscriptenModule2, init2, _a3, LZ4, lz4_default; +var init_lz4 = __esm({ + "../../node_modules/numcodecs/dist/lz4.js"() { + init_chunk_INHXZS53(); + lz4_codec = (() => { + var _scriptDir = typeof document !== "undefined" && document.currentScript ? document.currentScript.src : void 0; + return function(moduleArg = {}) { + var f = moduleArg, aa, t; + f.ready = new Promise((a, b) => { + aa = a; + t = b; + }); + var ba = Object.assign({}, f), u = f.printErr || console.error.bind(console); + Object.assign(f, ba); + ba = null; + var v; + f.wasmBinary && (v = f.wasmBinary); + "object" != typeof WebAssembly && x("no native wasm support detected"); + var z, da = false, C, D, E, F, G, H, ea, fa; + function ha() { + var a = z.buffer; + f.HEAP8 = C = new Int8Array(a); + f.HEAP16 = E = new Int16Array(a); + f.HEAPU8 = D = new Uint8Array(a); + f.HEAPU16 = F = new Uint16Array(a); + f.HEAP32 = G = new Int32Array(a); + f.HEAPU32 = H = new Uint32Array(a); + f.HEAPF32 = ea = new Float32Array(a); + f.HEAPF64 = fa = new Float64Array(a); + } + var ia = [], ja = [], ka = []; + function la() { + var a = f.preRun.shift(); + ia.unshift(a); + } + var I = 0, J = null, L = null; + function x(a) { + f.onAbort?.(a); + a = "Aborted(" + a + ")"; + u(a); + da = true; + a = new WebAssembly.RuntimeError(a + ". Build with -sASSERTIONS for more info."); + t(a); + throw a; + } + var ma = (a) => a.startsWith("data:application/octet-stream;base64,"), na = (a) => a.startsWith("file://"), M; + M = "lz4_codec.wasm"; + if (!ma(M)) { + var oa = M; + M = f.locateFile ? f.locateFile(oa, "") : "" + oa; + } + function pa(a) { + return Promise.resolve().then(() => { + if (a == M && v) + var b = new Uint8Array(v); + else + throw "both async and sync fetching of the wasm failed"; + return b; + }); + } + function qa(a, b, c) { + return pa(a).then((d) => WebAssembly.instantiate(d, b)).then((d) => d).then(c, (d) => { + u(`failed to asynchronously prepare wasm: ${d}`); + x(d); + }); + } + function ra(a, b) { + var c = M; + return v || "function" != typeof WebAssembly.instantiateStreaming || ma(c) || na(c) || "function" != typeof fetch ? qa(c, a, b) : fetch(c, { credentials: "same-origin" }).then((d) => WebAssembly.instantiateStreaming(d, a).then(b, function(e) { + u(`wasm streaming compile failed: ${e}`); + u("falling back to ArrayBuffer instantiation"); + return qa(c, a, b); + })); + } + var N = (a) => { + for (; 0 < a.length; ) + a.shift()(f); + }; + function sa(a) { + this.D = a - 24; + this.K = function(b) { + H[this.D + 4 >> 2] = b; + }; + this.J = function(b) { + H[this.D + 8 >> 2] = b; + }; + this.F = function(b, c) { + this.G(); + this.K(b); + this.J(c); + }; + this.G = function() { + H[this.D + 16 >> 2] = 0; + }; + } + var ta = 0, ua = 0, va, O = (a) => { + for (var b = ""; D[a]; ) + b += va[D[a++]]; + return b; + }, P = {}, Q = {}, R = {}, S, wa = (a) => { + throw new S(a); + }, T, xa = (a, b) => { + function c(l) { + l = b(l); + if (l.length !== d.length) + throw new T("Mismatched type converter count"); + for (var g = 0; g < d.length; ++g) + U(d[g], l[g]); + } + var d = []; + d.forEach(function(l) { + R[l] = a; + }); + var e = Array(a.length), h = [], k = 0; + a.forEach((l, g) => { + Q.hasOwnProperty(l) ? e[g] = Q[l] : (h.push(l), P.hasOwnProperty(l) || (P[l] = []), P[l].push(() => { + e[g] = Q[l]; + ++k; + k === h.length && c(e); + })); + }); + 0 === h.length && c(e); + }; + function ya(a, b, c = {}) { + var d = b.name; + if (!a) + throw new S(`type "${d}" must have a positive integer typeid pointer`); + if (Q.hasOwnProperty(a)) { + if (c.M) + return; + throw new S(`Cannot register type '${d}' twice`); + } + Q[a] = b; + delete R[a]; + P.hasOwnProperty(a) && (b = P[a], delete P[a], b.forEach((e) => e())); + } + function U(a, b, c = {}) { + if (!("argPackAdvance" in b)) + throw new TypeError("registerType registeredInstance requires argPackAdvance"); + ya(a, b, c); + } + function za() { + this.B = [void 0]; + this.H = []; + } + var V = new za(), Aa = (a) => { + a >= V.D && 0 === --V.get(a).I && V.G(a); + }, Ba = (a) => { + switch (a) { + case void 0: + return 1; + case null: + return 2; + case true: + return 3; + case false: + return 4; + default: + return V.F({ I: 1, value: a }); + } + }; + function Ca(a) { + return this.fromWireType(G[a >> 2]); + } + var Da = (a, b) => { + switch (b) { + case 4: + return function(c) { + return this.fromWireType(ea[c >> 2]); + }; + case 8: + return function(c) { + return this.fromWireType(fa[c >> 3]); + }; + default: + throw new TypeError(`invalid float width (${b}): ${a}`); + } + }, Ga = (a, b) => Object.defineProperty(b, "name", { value: a }), Ha = (a) => { + for (; a.length; ) { + var b = a.pop(); + a.pop()(b); + } + }; + function Ia(a) { + for (var b = 1; b < a.length; ++b) + if (null !== a[b] && void 0 === a[b].C) + return true; + return false; + } + function Ja(a) { + var b = Function; + if (!(b instanceof Function)) + throw new TypeError(`new_ called with constructor type ${typeof b} which is not a function`); + var c = Ga(b.name || "unknownFunctionName", function() { + }); + c.prototype = b.prototype; + c = new c(); + a = b.apply(c, a); + return a instanceof Object ? a : c; + } + var Ka = (a, b) => { + if (void 0 === f[a].A) { + var c = f[a]; + f[a] = function() { + if (!f[a].A.hasOwnProperty(arguments.length)) + throw new S(`Function '${b}' called with an invalid number of arguments (${arguments.length}) - expects one of (${f[a].A})!`); + return f[a].A[arguments.length].apply(this, arguments); + }; + f[a].A = []; + f[a].A[c.L] = c; + } + }, La = (a, b, c) => { + if (f.hasOwnProperty(a)) { + if (void 0 === c || void 0 !== f[a].A && void 0 !== f[a].A[c]) + throw new S(`Cannot register public name '${a}' twice`); + Ka(a, a); + if (f.hasOwnProperty(c)) + throw new S(`Cannot register multiple overloads of a function with the same number of arguments (${c})!`); + f[a].A[c] = b; + } else + f[a] = b, void 0 !== c && (f[a].O = c); + }, Ma = (a, b) => { + for (var c = [], d = 0; d < a; d++) + c.push(H[b + 4 * d >> 2]); + return c; + }, Na, Oa = (a, b) => { + var c = []; + return function() { + c.length = 0; + Object.assign(c, arguments); + if (a.includes("j")) { + var d = f["dynCall_" + a]; + d = c && c.length ? d.apply(null, [b].concat(c)) : d.call(null, b); + } else + d = Na.get(b).apply(null, c); + return d; + }; + }, Pa = (a, b) => { + a = O(a); + var c = a.includes("j") ? Oa(a, b) : Na.get(b); + if ("function" != typeof c) + throw new S(`unknown function pointer with signature ${a}: ${b}`); + return c; + }, Qa, Sa = (a) => { + a = Ra(a); + var b = O(a); + W(a); + return b; + }, Ta = (a, b) => { + function c(h) { + e[h] || Q[h] || (R[h] ? R[h].forEach(c) : (d.push(h), e[h] = true)); + } + var d = [], e = {}; + b.forEach(c); + throw new Qa(`${a}: ` + d.map(Sa).join([", "])); + }, Ua = (a) => { + a = a.trim(); + const b = a.indexOf("("); + return -1 !== b ? a.substr(0, b) : a; + }, Va = (a, b, c) => { + switch (b) { + case 1: + return c ? (d) => C[d >> 0] : (d) => D[d >> 0]; + case 2: + return c ? (d) => E[d >> 1] : (d) => F[d >> 1]; + case 4: + return c ? (d) => G[d >> 2] : (d) => H[d >> 2]; + default: + throw new TypeError(`invalid integer width (${b}): ${a}`); + } + }; + function Wa(a) { + return this.fromWireType(H[a >> 2]); + } + for (var Xa = "undefined" != typeof TextDecoder ? new TextDecoder("utf8") : void 0, Ya = "undefined" != typeof TextDecoder ? new TextDecoder("utf-16le") : void 0, Za = (a, b) => { + var c = a >> 1; + for (var d = c + b / 2; !(c >= d) && F[c]; ) + ++c; + c <<= 1; + if (32 < c - a && Ya) + return Ya.decode(D.subarray(a, c)); + c = ""; + for (d = 0; !(d >= b / 2); ++d) { + var e = E[a + 2 * d >> 1]; + if (0 == e) + break; + c += String.fromCharCode(e); + } + return c; + }, $a = (a, b, c) => { + c ?? (c = 2147483647); + if (2 > c) + return 0; + c -= 2; + var d = b; + c = c < 2 * a.length ? c / 2 : a.length; + for (var e = 0; e < c; ++e) + E[b >> 1] = a.charCodeAt(e), b += 2; + E[b >> 1] = 0; + return b - d; + }, ab = (a) => 2 * a.length, bb = (a, b) => { + for (var c = 0, d = ""; !(c >= b / 4); ) { + var e = G[a + 4 * c >> 2]; + if (0 == e) + break; + ++c; + 65536 <= e ? (e -= 65536, d += String.fromCharCode(55296 | e >> 10, 56320 | e & 1023)) : d += String.fromCharCode(e); + } + return d; + }, cb = (a, b, c) => { + c ?? (c = 2147483647); + if (4 > c) + return 0; + var d = b; + c = d + c - 4; + for (var e = 0; e < a.length; ++e) { + var h = a.charCodeAt(e); + if (55296 <= h && 57343 >= h) { + var k = a.charCodeAt(++e); + h = 65536 + ((h & 1023) << 10) | k & 1023; + } + G[b >> 2] = h; + b += 4; + if (b + 4 > c) + break; + } + G[b >> 2] = 0; + return b - d; + }, db = (a) => { + for (var b = 0, c = 0; c < a.length; ++c) { + var d = a.charCodeAt(c); + 55296 <= d && 57343 >= d && ++c; + b += 4; + } + return b; + }, eb = Array(256), X = 0; 256 > X; ++X) + eb[X] = String.fromCharCode(X); + va = eb; + S = f.BindingError = class extends Error { + constructor(a) { + super(a); + this.name = "BindingError"; + } + }; + T = f.InternalError = class extends Error { + constructor(a) { + super(a); + this.name = "InternalError"; + } + }; + Object.assign(za.prototype, { get(a) { + return this.B[a]; + }, has(a) { + return void 0 !== this.B[a]; + }, F(a) { + var b = this.H.pop() || this.B.length; + this.B[b] = a; + return b; + }, G(a) { + this.B[a] = void 0; + this.H.push(a); + } }); + V.B.push({ value: void 0 }, { value: null }, { value: true }, { value: false }); + V.D = V.B.length; + f.count_emval_handles = () => { + for (var a = 0, b = V.D; b < V.B.length; ++b) + void 0 !== V.B[b] && ++a; + return a; + }; + Qa = f.UnboundTypeError = ((a, b) => { + var c = Ga(b, function(d) { + this.name = b; + this.message = d; + d = Error(d).stack; + void 0 !== d && (this.stack = this.toString() + "\n" + d.replace(/^Error(:[^\n]*)?\n/, "")); + }); + c.prototype = Object.create(a.prototype); + c.prototype.constructor = c; + c.prototype.toString = function() { + return void 0 === this.message ? this.name : `${this.name}: ${this.message}`; + }; + return c; + })(Error, "UnboundTypeError"); + var gb = { n: (a, b, c) => { + new sa(a).F(b, c); + ta = a; + ua++; + throw ta; + }, o: () => { + }, l: (a, b, c, d) => { + b = O(b); + U(a, { name: b, fromWireType: function(e) { + return !!e; + }, toWireType: function(e, h) { + return h ? c : d; + }, argPackAdvance: 8, readValueFromPointer: function(e) { + return this.fromWireType(D[e]); + }, C: null }); + }, k: (a, b) => { + b = O(b); + U(a, { name: b, fromWireType: (c) => { + if (!c) + throw new S("Cannot use deleted val. handle = " + c); + var d = V.get(c).value; + Aa(c); + return d; + }, toWireType: (c, d) => Ba(d), argPackAdvance: 8, readValueFromPointer: Ca, C: null }); + }, i: (a, b, c) => { + b = O(b); + U(a, { name: b, fromWireType: (d) => d, toWireType: (d, e) => e, argPackAdvance: 8, readValueFromPointer: Da(b, c), C: null }); + }, d: (a, b, c, d, e, h, k) => { + var l = Ma(b, c); + a = O(a); + a = Ua(a); + e = Pa(d, e); + La(a, function() { + Ta(`Cannot call ${a} due to unbound types`, l); + }, b - 1); + xa(l, function(g) { + var n = a; + var p = a; + g = [g[0], null].concat(g.slice(1)); + var q = e, m = g.length; + if (2 > m) + throw new S("argTypes array size mismatch! Must at least get return value and 'this' types!"); + var r = null !== g[1] && false, y = Ia(g), A = "void" !== g[0].name; + q = [wa, q, h, Ha, g[0], g[1]]; + for (var w = 0; w < m - 2; ++w) + q.push(g[w + 2]); + if (!y) + for (w = r ? 1 : 2; w < g.length; ++w) + null !== g[w].C && q.push(g[w].C); + y = Ia(g); + w = g.length; + var B = "", K = ""; + for (m = 0; m < w - 2; ++m) + B += (0 !== m ? ", " : "") + "arg" + m, K += (0 !== m ? ", " : "") + "arg" + m + "Wired"; + B = ` + return function (${B}) { + if (arguments.length !== ${w - 2}) { + throwBindingError('function ${p} called with ' + arguments.length + ' arguments, expected ${w - 2}'); + }`; + y && (B += "var destructors = [];\n"); + var Ea = y ? "destructors" : "null", ca = "throwBindingError invoker fn runDestructors retType classParam".split(" "); + r && (B += "var thisWired = classParam['toWireType'](" + Ea + ", this);\n"); + for (m = 0; m < w - 2; ++m) + B += "var arg" + m + "Wired = argType" + m + "['toWireType'](" + Ea + ", arg" + m + "); // " + g[m + 2].name + "\n", ca.push("argType" + m); + r && (K = "thisWired" + (0 < K.length ? ", " : "") + K); + B += (A || k ? "var rv = " : "") + "invoker(fn" + (0 < K.length ? ", " : "") + K + ");\n"; + if (y) + B += "runDestructors(destructors);\n"; + else + for (m = r ? 1 : 2; m < g.length; ++m) + r = 1 === m ? "thisWired" : "arg" + (m - 2) + "Wired", null !== g[m].C && (B += r + "_dtor(" + r + "); // " + g[m].name + "\n", ca.push(r + "_dtor")); + A && (B += "var ret = retType['fromWireType'](rv);\nreturn ret;\n"); + let [Fa, hb] = [ca, B + "}\n"]; + Fa.push(hb); + g = Ja(Fa).apply(null, q); + p = Ga(p, g); + g = b - 1; + if (!f.hasOwnProperty(n)) + throw new T("Replacing nonexistant public symbol"); + void 0 !== f[n].A && void 0 !== g ? f[n].A[g] = p : (f[n] = p, f[n].L = g); + return []; + }); + }, b: (a, b, c, d, e) => { + b = O(b); + -1 === e && (e = 4294967295); + e = (l) => l; + if (0 === d) { + var h = 32 - 8 * c; + e = (l) => l << h >>> h; + } + var k = b.includes("unsigned") ? function(l, g) { + return g >>> 0; + } : function(l, g) { + return g; + }; + U(a, { + name: b, + fromWireType: e, + toWireType: k, + argPackAdvance: 8, + readValueFromPointer: Va(b, c, 0 !== d), + C: null + }); + }, a: (a, b, c) => { + function d(h) { + return new e(C.buffer, H[h + 4 >> 2], H[h >> 2]); + } + var e = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array][b]; + c = O(c); + U(a, { name: c, fromWireType: d, argPackAdvance: 8, readValueFromPointer: d }, { M: true }); + }, e: (a, b) => { + b = O(b); + var c = "std::string" === b; + U(a, { name: b, fromWireType: function(d) { + var e = H[d >> 2], h = d + 4; + if (c) + for (var k = h, l = 0; l <= e; ++l) { + var g = h + l; + if (l == e || 0 == D[g]) { + if (k) { + var n = k; + var p = D, q = n + (g - k); + for (k = n; p[k] && !(k >= q); ) + ++k; + if (16 < k - n && p.buffer && Xa) + n = Xa.decode(p.subarray(n, k)); + else { + for (q = ""; n < k; ) { + var m = p[n++]; + if (m & 128) { + var r = p[n++] & 63; + if (192 == (m & 224)) + q += String.fromCharCode((m & 31) << 6 | r); + else { + var y = p[n++] & 63; + m = 224 == (m & 240) ? (m & 15) << 12 | r << 6 | y : (m & 7) << 18 | r << 12 | y << 6 | p[n++] & 63; + 65536 > m ? q += String.fromCharCode(m) : (m -= 65536, q += String.fromCharCode(55296 | m >> 10, 56320 | m & 1023)); + } + } else + q += String.fromCharCode(m); + } + n = q; + } + } else + n = ""; + if (void 0 === A) + var A = n; + else + A += String.fromCharCode(0), A += n; + k = g + 1; + } + } + else { + A = Array(e); + for (l = 0; l < e; ++l) + A[l] = String.fromCharCode(D[h + l]); + A = A.join(""); + } + W(d); + return A; + }, toWireType: function(d, e) { + e instanceof ArrayBuffer && (e = new Uint8Array(e)); + var h, k = "string" == typeof e; + if (!(k || e instanceof Uint8Array || e instanceof Uint8ClampedArray || e instanceof Int8Array)) + throw new S("Cannot pass non-string to std::string"); + var l; + if (c && k) + for (h = l = 0; h < e.length; ++h) { + var g = e.charCodeAt(h); + 127 >= g ? l++ : 2047 >= g ? l += 2 : 55296 <= g && 57343 >= g ? (l += 4, ++h) : l += 3; + } + else + l = e.length; + h = l; + l = fb(4 + h + 1); + g = l + 4; + H[l >> 2] = h; + if (c && k) { + if (k = g, g = h + 1, h = D, 0 < g) { + g = k + g - 1; + for (var n = 0; n < e.length; ++n) { + var p = e.charCodeAt(n); + if (55296 <= p && 57343 >= p) { + var q = e.charCodeAt(++n); + p = 65536 + ((p & 1023) << 10) | q & 1023; + } + if (127 >= p) { + if (k >= g) + break; + h[k++] = p; + } else { + if (2047 >= p) { + if (k + 1 >= g) + break; + h[k++] = 192 | p >> 6; + } else { + if (65535 >= p) { + if (k + 2 >= g) + break; + h[k++] = 224 | p >> 12; + } else { + if (k + 3 >= g) + break; + h[k++] = 240 | p >> 18; + h[k++] = 128 | p >> 12 & 63; + } + h[k++] = 128 | p >> 6 & 63; + } + h[k++] = 128 | p & 63; + } + } + h[k] = 0; + } + } else if (k) + for (k = 0; k < h; ++k) { + n = e.charCodeAt(k); + if (255 < n) + throw W(g), new S("String has UTF-16 code units that do not fit in 8 bits"); + D[g + k] = n; + } + else + for (k = 0; k < h; ++k) + D[g + k] = e[k]; + null !== d && d.push(W, l); + return l; + }, argPackAdvance: 8, readValueFromPointer: Wa, C(d) { + W(d); + } }); + }, c: (a, b, c) => { + c = O(c); + if (2 === b) { + var d = Za; + var e = $a; + var h = ab; + var k = () => F; + var l = 1; + } else + 4 === b && (d = bb, e = cb, h = db, k = () => H, l = 2); + U(a, { name: c, fromWireType: (g) => { + for (var n = H[g >> 2], p = k(), q, m = g + 4, r = 0; r <= n; ++r) { + var y = g + 4 + r * b; + if (r == n || 0 == p[y >> l]) + m = d(m, y - m), void 0 === q ? q = m : (q += String.fromCharCode(0), q += m), m = y + b; + } + W(g); + return q; + }, toWireType: (g, n) => { + if ("string" != typeof n) + throw new S(`Cannot pass non-string to C++ string type ${c}`); + var p = h(n), q = fb(4 + p + b); + H[q >> 2] = p >> l; + e(n, q + 4, p + b); + null !== g && g.push(W, q); + return q; + }, argPackAdvance: 8, readValueFromPointer: Ca, C(g) { + W(g); + } }); + }, m: (a, b) => { + b = O(b); + U(a, { N: true, name: b, argPackAdvance: 0, fromWireType: () => { + }, toWireType: () => { + } }); + }, g: Aa, j: (a) => { + 4 < a && (V.get(a).I += 1); + }, f: (a, b) => { + var c = Q[a]; + if (void 0 === c) + throw a = "_emval_take_value has unknown type " + Sa(a), new S(a); + a = c; + a = a.readValueFromPointer(b); + return Ba(a); + }, h: () => { + x(""); + }, q: (a, b, c) => D.copyWithin(a, b, b + c), p: (a) => { + var b = D.length; + a >>>= 0; + if (2147483648 < a) + return false; + for (var c = 1; 4 >= c; c *= 2) { + var d = b * (1 + 0.2 / c); + d = Math.min(d, a + 100663296); + var e = Math; + d = Math.max(a, d); + a: { + e = (e.min.call(e, 2147483648, d + (65536 - d % 65536) % 65536) - z.buffer.byteLength + 65535) / 65536; + try { + z.grow(e); + ha(); + var h = 1; + break a; + } catch (k) { + } + h = void 0; + } + if (h) + return true; + } + return false; + } }, Y = function() { + function a(c) { + Y = c.exports; + z = Y.r; + ha(); + Na = Y.w; + ja.unshift(Y.s); + I--; + f.monitorRunDependencies?.(I); + 0 == I && (null !== J && (clearInterval(J), J = null), L && (c = L, L = null, c())); + return Y; + } + var b = { a: gb }; + I++; + f.monitorRunDependencies?.(I); + if (f.instantiateWasm) + try { + return f.instantiateWasm( + b, + a + ); + } catch (c) { + u(`Module.instantiateWasm callback failed with error: ${c}`), t(c); + } + ra(b, function(c) { + a(c.instance); + }).catch(t); + return {}; + }(), fb = (a) => (fb = Y.t)(a), W = (a) => (W = Y.u)(a), Ra = (a) => (Ra = Y.v)(a), Z; + L = function ib() { + Z || jb(); + Z || (L = ib); + }; + function jb() { + function a() { + if (!Z && (Z = true, f.calledRun = true, !da)) { + N(ja); + aa(f); + if (f.onRuntimeInitialized) + f.onRuntimeInitialized(); + if (f.postRun) + for ("function" == typeof f.postRun && (f.postRun = [f.postRun]); f.postRun.length; ) { + var b = f.postRun.shift(); + ka.unshift(b); + } + N(ka); + } + } + if (!(0 < I)) { + if (f.preRun) + for ("function" == typeof f.preRun && (f.preRun = [f.preRun]); f.preRun.length; ) + la(); + N(ia); + 0 < I || (f.setStatus ? (f.setStatus("Running..."), setTimeout(function() { + setTimeout(function() { + f.setStatus(""); + }, 1); + a(); + }, 1)) : a()); + } + } + if (f.preInit) + for ("function" == typeof f.preInit && (f.preInit = [f.preInit]); 0 < f.preInit.length; ) + f.preInit.pop()(); + jb(); + return moduleArg.ready; + }; + })(); + lz4_codec_default = lz4_codec; + lz4_codec_default2 = __toBinary("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ZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgaW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxmbG9hdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDhfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MTZfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MTZfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDY0X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDY0X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQzMl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQzMl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBjaGFyPgBzdGQ6OmJhc2ljX3N0cmluZzx1bnNpZ25lZCBjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxzaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8bG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgbG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8ZG91YmxlPgAAAABkCQAAIAgAAGlpaQBkCQAAIAgAANwMAABpaWlpAAAAAIgMAAB2aQAAAAAAAAEAAAACAAAAAQAAAAAAAAAEAAAABAAAAAQAQcwPC5UN//////z///8BAAAAAgAAAAMAAABOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRQAA6A0AAOAHAABOU3QzX18yMTJiYXNpY19zdHJpbmdJaE5TXzExY2hhcl90cmFpdHNJaEVFTlNfOWFsbG9jYXRvckloRUVFRQAA6A0AACgIAABOU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFRQAA6A0AAHAIAABOU3QzX18yMTJiYXNpY19zdHJpbmdJRHNOU18xMWNoYXJfdHJhaXRzSURzRUVOU185YWxsb2NhdG9ySURzRUVFRQAAAOgNAAC4CAAATlN0M19fMjEyYmFzaWNfc3RyaW5nSURpTlNfMTFjaGFyX3RyYWl0c0lEaUVFTlNfOWFsbG9jYXRvcklEaUVFRUUAAADoDQAABAkAAE4xMGVtc2NyaXB0ZW4zdmFsRQAA6A0AAFAJAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0ljRUUAAOgNAABsCQAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJYUVFAADoDQAAlAkAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWhFRQAA6A0AALwJAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lzRUUAAOgNAADkCQAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJdEVFAADoDQAADAoAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWlFRQAA6A0AADQKAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lqRUUAAOgNAABcCgAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJbEVFAADoDQAAhAoAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SW1FRQAA6A0AAKwKAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0l4RUUAAOgNAADUCgAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJeUVFAADoDQAA/AoAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWZFRQAA6A0AACQLAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lkRUUAAOgNAABMCwAATjEwX19jeHhhYml2MTE2X19zaGltX3R5cGVfaW5mb0UAAAAAKA4AAHQLAAAYDgAATjEwX19jeHhhYml2MTE3X19jbGFzc190eXBlX2luZm9FAAAAKA4AAKQLAACYCwAATjEwX19jeHhhYml2MTE3X19wYmFzZV90eXBlX2luZm9FAAAAKA4AANQLAACYCwAATjEwX19jeHhhYml2MTE5X19wb2ludGVyX3R5cGVfaW5mb0UAKA4AAAQMAAD4CwAAAAAAAHgMAAALAAAADAAAAA0AAAAOAAAADwAAAE4xMF9fY3h4YWJpdjEyM19fZnVuZGFtZW50YWxfdHlwZV9pbmZvRQAoDgAAUAwAAJgLAAB2AAAAPAwAAIQMAABiAAAAPAwAAJAMAABjAAAAPAwAAJwMAABoAAAAPAwAAKgMAABhAAAAPAwAALQMAABzAAAAPAwAAMAMAAB0AAAAPAwAAMwMAABpAAAAPAwAANgMAABqAAAAPAwAAOQMAABsAAAAPAwAAPAMAABtAAAAPAwAAPwMAAB4AAAAPAwAAAgNAAB5AAAAPAwAABQNAABmAAAAPAwAACANAABkAAAAPAwAACwNAABOMTBfX2N4eGFiaXYxMjBfX3NpX2NsYXNzX3R5cGVfaW5mb0UAAAAAKA4AADgNAADICwAAU3Q5ZXhjZXB0aW9uAAAAAAAAAACgDQAACAAAABAAAAARAAAAU3QxMWxvZ2ljX2Vycm9yACgOAACQDQAASA4AAAAAAADUDQAACAAAABIAAAARAAAAU3QxMmxlbmd0aF9lcnJvcgAAAAAoDgAAwA0AAKANAAAAAAAAyAsAAAsAAAATAAAADQAAAA4AAAAUAAAAFQAAABYAAAAXAAAAU3Q5dHlwZV9pbmZvAAAAAOgNAAAIDgAAAAAAAGANAAALAAAAGAAAAA0AAAAOAAAAFAAAABkAAAAaAAAAGwAAAOgNAABsDQAAAAAAAEgOAAAcAAAAHQAAAB4AQeQcCwNwEwEAQYAdCwEqAEHIHQsCSBMAQewdCwEK"); + DEFAULT_ACCELERATION = 1; + MAX_BUFFER_SIZE = 2113929216; + init2 = () => lz4_codec_default({ noInitialRun: true, wasmBinary: lz4_codec_default2 }); + LZ4 = (_a3 = class { + constructor(acceleration = DEFAULT_ACCELERATION) { + __publicField(this, "max_buffer_size", MAX_BUFFER_SIZE); + __publicField(this, "acceleration"); + if (!Number.isInteger(acceleration)) { + throw Error(`Invalid acceleration "${acceleration}". Must be a positive integer.`); + } + this.acceleration = acceleration <= 0 ? DEFAULT_ACCELERATION : acceleration; + } + static fromConfig({ acceleration }) { + return new _a3(acceleration); + } + async encode(data) { + if (!emscriptenModule2) { + emscriptenModule2 = init2(); + } + if (data.length > MAX_BUFFER_SIZE) { + throw Error(`Codec does not support buffers of > ${MAX_BUFFER_SIZE} bytes.`); + } + const module = await emscriptenModule2; + const view = module.compress(data, this.acceleration); + const result = new Uint8Array(view); + module.free_result(); + return result; + } + async decode(data, out) { + if (!emscriptenModule2) { + emscriptenModule2 = init2(); + } + if (data.length > MAX_BUFFER_SIZE) { + throw Error(`Codec does not support buffers of > ${MAX_BUFFER_SIZE} bytes.`); + } + const module = await emscriptenModule2; + const view = module.decompress(data); + const result = new Uint8Array(view); + module.free_result(); + if (out !== void 0) { + out.set(result); + return out; + } + return result; + } + }, __publicField(_a3, "codecId", "lz4"), __publicField(_a3, "DEFAULT_ACCELERATION", DEFAULT_ACCELERATION), __publicField(_a3, "max_buffer_size", MAX_BUFFER_SIZE), _a3); + lz4_default = LZ4; + } +}); + +// ../../node_modules/numcodecs/dist/zstd.js +var zstd_exports = {}; +__export(zstd_exports, { + default: () => zstd_default +}); +var zstd_codec, zstd_codec_default, zstd_codec_default2, DEFAULT_CLEVEL, MAX_CLEVEL, emscriptenModule3, init3, _a4, Zstd, zstd_default; +var init_zstd = __esm({ + "../../node_modules/numcodecs/dist/zstd.js"() { + init_chunk_INHXZS53(); + zstd_codec = (() => { + var _scriptName = typeof document != "undefined" ? document.currentScript?.src : void 0; + return function(moduleArg = {}) { + var moduleRtn; + var f = moduleArg, aa, q, ba = new Promise((a, b) => { + aa = a; + q = b; + }), ca = Object.assign({}, f), r = f.printErr || console.error.bind(console); + Object.assign(f, ca); + ca = null; + var t; + f.wasmBinary && (t = f.wasmBinary); + var u, da = false, x, z, A, B, D, E, ea, ha; + function ia() { + var a = u.buffer; + f.HEAP8 = x = new Int8Array(a); + f.HEAP16 = A = new Int16Array(a); + f.HEAPU8 = z = new Uint8Array(a); + f.HEAPU16 = B = new Uint16Array(a); + f.HEAP32 = D = new Int32Array(a); + f.HEAPU32 = E = new Uint32Array(a); + f.HEAPF32 = ea = new Float32Array(a); + f.HEAPF64 = ha = new Float64Array(a); + } + var ja = [], ka = [], la = [], ma = false; + function na() { + var a = f.preRun.shift(); + ja.unshift(a); + } + var F = 0, H = null, I = null; + function oa(a) { + f.onAbort?.(a); + a = "Aborted(" + a + ")"; + r(a); + da = true; + a += ". Build with -sASSERTIONS for more info."; + ma && pa(); + a = new WebAssembly.RuntimeError(a); + q(a); + throw a; + } + var qa = (a) => a.startsWith("data:application/octet-stream;base64,"), ra = (a) => a.startsWith("file://"), J; + function sa(a) { + if (a == J && t) + return new Uint8Array(t); + throw "both async and sync fetching of the wasm failed"; + } + function ta(a) { + return t ? Promise.resolve().then(() => sa(a)) : (void 0)(a).then((b) => new Uint8Array(b), () => sa(a)); + } + function ua(a, b, c) { + return ta(a).then((d) => WebAssembly.instantiate(d, b)).then(c, (d) => { + r(`failed to asynchronously prepare wasm: ${d}`); + oa(d); + }); + } + function va(a, b) { + var c = J; + return t || "function" != typeof WebAssembly.instantiateStreaming || qa(c) || ra(c) || "function" != typeof fetch ? ua(c, a, b) : fetch(c, { credentials: "same-origin" }).then((d) => WebAssembly.instantiateStreaming(d, a).then(b, function(e) { + r(`wasm streaming compile failed: ${e}`); + r("falling back to ArrayBuffer instantiation"); + return ua(c, a, b); + })); + } + var K = (a) => { + for (; 0 < a.length; ) + a.shift()(f); + }, wa, L = (a) => { + for (var b = ""; z[a]; ) + b += wa[z[a++]]; + return b; + }, N = {}, O = {}, P = {}, Q, xa = (a) => { + throw new Q(a); + }, R, ya = (a, b) => { + function c(k) { + k = b(k); + if (k.length !== d.length) + throw new R("Mismatched type converter count"); + for (var g = 0; g < d.length; ++g) + S(d[g], k[g]); + } + var d = []; + d.forEach(function(k) { + P[k] = a; + }); + var e = Array(a.length), h = [], l = 0; + a.forEach((k, g) => { + O.hasOwnProperty(k) ? e[g] = O[k] : (h.push(k), N.hasOwnProperty(k) || (N[k] = []), N[k].push(() => { + e[g] = O[k]; + ++l; + l === h.length && c(e); + })); + }); + 0 === h.length && c(e); + }; + function za(a, b, c = {}) { + var d = b.name; + if (!a) + throw new Q(`type "${d}" must have a positive integer typeid pointer`); + if (O.hasOwnProperty(a)) { + if (c.H) + return; + throw new Q(`Cannot register type '${d}' twice`); + } + O[a] = b; + delete P[a]; + N.hasOwnProperty(a) && (b = N[a], delete N[a], b.forEach((e) => e())); + } + function S(a, b, c = {}) { + if (!("argPackAdvance" in b)) + throw new TypeError("registerType registeredInstance requires argPackAdvance"); + return za(a, b, c); + } + var T = [], U = [], Aa = (a) => { + switch (a) { + case void 0: + return 2; + case null: + return 4; + case true: + return 6; + case false: + return 8; + default: + const b = T.pop() || U.length; + U[b] = a; + U[b + 1] = 1; + return b; + } + }; + function V(a) { + return this.fromWireType(E[a >> 2]); + } + var Ba = { name: "emscripten::val", fromWireType: (a) => { + if (!a) + throw new Q("Cannot use deleted val. handle = " + a); + var b = U[a]; + 9 < a && 0 === --U[a + 1] && (U[a] = void 0, T.push(a)); + return b; + }, toWireType: (a, b) => Aa(b), argPackAdvance: 8, readValueFromPointer: V, F: null }, Ca = (a, b) => { + switch (b) { + case 4: + return function(c) { + return this.fromWireType(ea[c >> 2]); + }; + case 8: + return function(c) { + return this.fromWireType(ha[c >> 3]); + }; + default: + throw new TypeError(`invalid float width (${b}): ${a}`); + } + }, Da = (a, b) => Object.defineProperty(b, "name", { value: a }), Ea = (a) => { + for (; a.length; ) { + var b = a.pop(); + a.pop()(b); + } + }; + function Fa(a) { + for (var b = 1; b < a.length; ++b) + if (null !== a[b] && void 0 === a[b].F) + return true; + return false; + } + function Ga(a) { + var b = Function; + if (!(b instanceof Function)) + throw new TypeError(`new_ called with constructor type ${typeof b} which is not a function`); + var c = Da(b.name || "unknownFunctionName", function() { + }); + c.prototype = b.prototype; + c = new c(); + a = b.apply(c, a); + return a instanceof Object ? a : c; + } + var Ha = (a, b) => { + if (void 0 === f[a].D) { + var c = f[a]; + f[a] = function(...d) { + if (!f[a].D.hasOwnProperty(d.length)) + throw new Q(`Function '${b}' called with an invalid number of arguments (${d.length}) - expects one of (${f[a].D})!`); + return f[a].D[d.length].apply(this, d); + }; + f[a].D = []; + f[a].D[c.G] = c; + } + }, Ia = (a, b, c) => { + if (f.hasOwnProperty(a)) { + if (void 0 === c || void 0 !== f[a].D && void 0 !== f[a].D[c]) + throw new Q(`Cannot register public name '${a}' twice`); + Ha(a, a); + if (f.hasOwnProperty(c)) + throw new Q(`Cannot register multiple overloads of a function with the same number of arguments (${c})!`); + f[a].D[c] = b; + } else + f[a] = b, void 0 !== c && (f[a].J = c); + }, Ja = (a, b) => { + for (var c = [], d = 0; d < a; d++) + c.push(E[b + 4 * d >> 2]); + return c; + }, Ka, La = (a, b, c = []) => { + a.includes("j") ? (a = a.replace(/p/g, "i"), b = (0, f["dynCall_" + a])(b, ...c)) : b = Ka.get(b)(...c); + return b; + }, Pa = (a, b) => (...c) => La(a, b, c), Qa = (a, b) => { + a = L(a); + var c = a.includes("j") ? Pa(a, b) : Ka.get(b); + if ("function" != typeof c) + throw new Q(`unknown function pointer with signature ${a}: ${b}`); + return c; + }, Ra, Ta = (a) => { + a = Sa(a); + var b = L(a); + W(a); + return b; + }, Ua = (a, b) => { + function c(h) { + e[h] || O[h] || (P[h] ? P[h].forEach(c) : (d.push(h), e[h] = true)); + } + var d = [], e = {}; + b.forEach(c); + throw new Ra(`${a}: ` + d.map(Ta).join([", "])); + }, Va = (a) => { + a = a.trim(); + const b = a.indexOf("("); + return -1 !== b ? a.substr(0, b) : a; + }, Wa = (a, b, c) => { + switch (b) { + case 1: + return c ? (d) => x[d] : (d) => z[d]; + case 2: + return c ? (d) => A[d >> 1] : (d) => B[d >> 1]; + case 4: + return c ? (d) => D[d >> 2] : (d) => E[d >> 2]; + default: + throw new TypeError(`invalid integer width (${b}): ${a}`); + } + }, Xa = "undefined" != typeof TextDecoder ? new TextDecoder() : void 0, Ya = (a, b) => { + var c = z, d = a + b; + for (b = a; c[b] && !(b >= d); ) + ++b; + if (16 < b - a && c.buffer && Xa) + return Xa.decode(c.subarray(a, b)); + for (d = ""; a < b; ) { + var e = c[a++]; + if (e & 128) { + var h = c[a++] & 63; + if (192 == (e & 224)) + d += String.fromCharCode((e & 31) << 6 | h); + else { + var l = c[a++] & 63; + e = 224 == (e & 240) ? (e & 15) << 12 | h << 6 | l : (e & 7) << 18 | h << 12 | l << 6 | c[a++] & 63; + 65536 > e ? d += String.fromCharCode(e) : (e -= 65536, d += String.fromCharCode(55296 | e >> 10, 56320 | e & 1023)); + } + } else + d += String.fromCharCode(e); + } + return d; + }, Za = "undefined" != typeof TextDecoder ? new TextDecoder("utf-16le") : void 0, $a = (a, b) => { + var c = a >> 1; + for (var d = c + b / 2; !(c >= d) && B[c]; ) + ++c; + c <<= 1; + if (32 < c - a && Za) + return Za.decode(z.subarray(a, c)); + c = ""; + for (d = 0; !(d >= b / 2); ++d) { + var e = A[a + 2 * d >> 1]; + if (0 == e) + break; + c += String.fromCharCode(e); + } + return c; + }, ab = (a, b, c) => { + c ?? (c = 2147483647); + if (2 > c) + return 0; + c -= 2; + var d = b; + c = c < 2 * a.length ? c / 2 : a.length; + for (var e = 0; e < c; ++e) + A[b >> 1] = a.charCodeAt(e), b += 2; + A[b >> 1] = 0; + return b - d; + }, bb = (a) => 2 * a.length, cb = (a, b) => { + for (var c = 0, d = ""; !(c >= b / 4); ) { + var e = D[a + 4 * c >> 2]; + if (0 == e) + break; + ++c; + 65536 <= e ? (e -= 65536, d += String.fromCharCode(55296 | e >> 10, 56320 | e & 1023)) : d += String.fromCharCode(e); + } + return d; + }, db = (a, b, c) => { + c ?? (c = 2147483647); + if (4 > c) + return 0; + var d = b; + c = d + c - 4; + for (var e = 0; e < a.length; ++e) { + var h = a.charCodeAt(e); + if (55296 <= h && 57343 >= h) { + var l = a.charCodeAt(++e); + h = 65536 + ((h & 1023) << 10) | l & 1023; + } + D[b >> 2] = h; + b += 4; + if (b + 4 > c) + break; + } + D[b >> 2] = 0; + return b - d; + }, eb = (a) => { + for (var b = 0, c = 0; c < a.length; ++c) { + var d = a.charCodeAt(c); + 55296 <= d && 57343 >= d && ++c; + b += 4; + } + return b; + }, gb = (a) => { + a = a.getArg(X.C, 0); + return fb(a); + }; + f.incrementExceptionRefcount = (a) => { + a = gb(a); + hb(a); + }; + f.decrementExceptionRefcount = (a) => { + a = gb(a); + ib(a); + }; + f.getExceptionMessage = (a) => { + var b = gb(a); + a = jb(); + var c = kb(4), d = kb(4); + lb(b, c, d); + b = E[c >> 2]; + d = E[d >> 2]; + c = b ? Ya(b) : ""; + W(b); + if (d) { + var e = d ? Ya(d) : ""; + W(d); + } + mb(a); + return [c, e]; + }; + for (var nb = Array(256), Y = 0; 256 > Y; ++Y) + nb[Y] = String.fromCharCode(Y); + wa = nb; + Q = f.BindingError = class extends Error { + constructor(a) { + super(a); + this.name = "BindingError"; + } + }; + R = f.InternalError = class extends Error { + constructor(a) { + super(a); + this.name = "InternalError"; + } + }; + U.push(0, 1, void 0, 1, null, 1, true, 1, false, 1); + f.count_emval_handles = () => U.length / 2 - 5 - T.length; + Ra = f.UnboundTypeError = ((a, b) => { + var c = Da(b, function(d) { + this.name = b; + this.message = d; + d = Error(d).stack; + void 0 !== d && (this.stack = this.toString() + "\n" + d.replace(/^Error(:[^\n]*)?\n/, "")); + }); + c.prototype = Object.create(a.prototype); + c.prototype.constructor = c; + c.prototype.toString = function() { + return void 0 === this.message ? this.name : `${this.name}: ${this.message}`; + }; + return c; + })(Error, "UnboundTypeError"); + var pb = { l: () => { + oa(""); + }, k: () => { + }, i: (a, b, c, d) => { + b = L(b); + S(a, { name: b, fromWireType: function(e) { + return !!e; + }, toWireType: function(e, h) { + return h ? c : d; + }, argPackAdvance: 8, readValueFromPointer: function(e) { + return this.fromWireType(z[e]); + }, F: null }); + }, h: (a) => S(a, Ba), e: (a, b, c) => { + b = L(b); + S(a, { name: b, fromWireType: (d) => d, toWireType: (d, e) => e, argPackAdvance: 8, readValueFromPointer: Ca(b, c), F: null }); + }, d: (a, b, c, d, e, h, l) => { + var k = Ja(b, c); + a = L(a); + a = Va(a); + e = Qa(d, e); + Ia(a, function() { + Ua(`Cannot call ${a} due to unbound types`, k); + }, b - 1); + ya( + k, + (g) => { + var m = a; + var n = a; + g = [g[0], null].concat(g.slice(1)); + var w = e, p = g.length; + if (2 > p) + throw new Q("argTypes array size mismatch! Must at least get return value and 'this' types!"); + var C = null !== g[1] && false, M = Fa(g), Ma = "void" !== g[0].name; + w = [n, xa, w, h, Ea, g[0], g[1]]; + for (var v = 0; v < p - 2; ++v) + w.push(g[v + 2]); + if (!M) + for (v = C ? 1 : 2; v < g.length; ++v) + null !== g[v].F && w.push(g[v].F); + M = Fa(g); + v = g.length; + var y = "", G = ""; + for (p = 0; p < v - 2; ++p) + y += (0 !== p ? ", " : "") + "arg" + p, G += (0 !== p ? ", " : "") + "arg" + p + "Wired"; + y = ` + return function (${y}) { + if (arguments.length !== ${v - 2}) { + throwBindingError('function ' + humanName + ' called with ' + arguments.length + ' arguments, expected ${v - 2}'); + }`; + M && (y += "var destructors = [];\n"); + var Na = M ? "destructors" : "null", fa = "humanName throwBindingError invoker fn runDestructors retType classParam".split(" "); + C && (y += "var thisWired = classParam['toWireType'](" + Na + ", this);\n"); + for (p = 0; p < v - 2; ++p) + y += "var arg" + p + "Wired = argType" + p + "['toWireType'](" + Na + ", arg" + p + ");\n", fa.push("argType" + p); + C && (G = "thisWired" + (0 < G.length ? ", " : "") + G); + y += (Ma || l ? "var rv = " : "") + "invoker(fn" + (0 < G.length ? ", " : "") + G + ");\n"; + if (M) + y += "runDestructors(destructors);\n"; + else + for (p = C ? 1 : 2; p < g.length; ++p) + C = 1 === p ? "thisWired" : "arg" + (p - 2) + "Wired", null !== g[p].F && (y += `${C}_dtor(${C}); +`, fa.push(`${C}_dtor`)); + Ma && (y += "var ret = retType['fromWireType'](rv);\nreturn ret;\n"); + let [Oa, qb] = [fa, y + "}\n"]; + Oa.push(qb); + g = Ga(Oa)(...w); + n = Da(n, g); + g = b - 1; + if (!f.hasOwnProperty(m)) + throw new R("Replacing nonexistent public symbol"); + void 0 !== f[m].D && void 0 !== g ? f[m].D[g] = n : (f[m] = n, f[m].G = g); + return []; + } + ); + }, b: (a, b, c, d, e) => { + b = L(b); + -1 === e && (e = 4294967295); + e = (k) => k; + if (0 === d) { + var h = 32 - 8 * c; + e = (k) => k << h >>> h; + } + var l = b.includes("unsigned") ? function(k, g) { + return g >>> 0; + } : function(k, g) { + return g; + }; + S(a, { name: b, fromWireType: e, toWireType: l, argPackAdvance: 8, readValueFromPointer: Wa(b, c, 0 !== d), F: null }); + }, a: (a, b, c) => { + function d(h) { + return new e(x.buffer, E[h + 4 >> 2], E[h >> 2]); + } + var e = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array][b]; + c = L(c); + S(a, { + name: c, + fromWireType: d, + argPackAdvance: 8, + readValueFromPointer: d + }, { H: true }); + }, f: (a, b) => { + b = L(b); + var c = "std::string" === b; + S(a, { name: b, fromWireType: function(d) { + var e = E[d >> 2], h = d + 4; + if (c) + for (var l = h, k = 0; k <= e; ++k) { + var g = h + k; + if (k == e || 0 == z[g]) { + l = l ? Ya(l, g - l) : ""; + if (void 0 === m) + var m = l; + else + m += String.fromCharCode(0), m += l; + l = g + 1; + } + } + else { + m = Array(e); + for (k = 0; k < e; ++k) + m[k] = String.fromCharCode(z[h + k]); + m = m.join(""); + } + W(d); + return m; + }, toWireType: function(d, e) { + e instanceof ArrayBuffer && (e = new Uint8Array(e)); + var h, l = "string" == typeof e; + if (!(l || e instanceof Uint8Array || e instanceof Uint8ClampedArray || e instanceof Int8Array)) + throw new Q("Cannot pass non-string to std::string"); + var k; + if (c && l) + for (h = k = 0; h < e.length; ++h) { + var g = e.charCodeAt(h); + 127 >= g ? k++ : 2047 >= g ? k += 2 : 55296 <= g && 57343 >= g ? (k += 4, ++h) : k += 3; + } + else + k = e.length; + h = k; + k = ob(4 + h + 1); + g = k + 4; + E[k >> 2] = h; + if (c && l) { + if (l = g, g = h + 1, h = z, 0 < g) { + g = l + g - 1; + for (var m = 0; m < e.length; ++m) { + var n = e.charCodeAt(m); + if (55296 <= n && 57343 >= n) { + var w = e.charCodeAt(++m); + n = 65536 + ((n & 1023) << 10) | w & 1023; + } + if (127 >= n) { + if (l >= g) + break; + h[l++] = n; + } else { + if (2047 >= n) { + if (l + 1 >= g) + break; + h[l++] = 192 | n >> 6; + } else { + if (65535 >= n) { + if (l + 2 >= g) + break; + h[l++] = 224 | n >> 12; + } else { + if (l + 3 >= g) + break; + h[l++] = 240 | n >> 18; + h[l++] = 128 | n >> 12 & 63; + } + h[l++] = 128 | n >> 6 & 63; + } + h[l++] = 128 | n & 63; + } + } + h[l] = 0; + } + } else if (l) + for (l = 0; l < h; ++l) { + m = e.charCodeAt(l); + if (255 < m) + throw W(g), new Q("String has UTF-16 code units that do not fit in 8 bits"); + z[g + l] = m; + } + else + for (l = 0; l < h; ++l) + z[g + l] = e[l]; + null !== d && d.push(W, k); + return k; + }, argPackAdvance: 8, readValueFromPointer: V, F(d) { + W(d); + } }); + }, c: (a, b, c) => { + c = L(c); + if (2 === b) { + var d = $a; + var e = ab; + var h = bb; + var l = (k) => B[k >> 1]; + } else + 4 === b && (d = cb, e = db, h = eb, l = (k) => E[k >> 2]); + S(a, { name: c, fromWireType: (k) => { + for (var g = E[k >> 2], m, n = k + 4, w = 0; w <= g; ++w) { + var p = k + 4 + w * b; + if (w == g || 0 == l(p)) + n = d(n, p - n), void 0 === m ? m = n : (m += String.fromCharCode(0), m += n), n = p + b; + } + W(k); + return m; + }, toWireType: (k, g) => { + if ("string" != typeof g) + throw new Q(`Cannot pass non-string to C++ string type ${c}`); + var m = h(g), n = ob(4 + m + b); + E[n >> 2] = m / b; + e(g, n + 4, m + b); + null !== k && k.push(W, n); + return n; + }, argPackAdvance: 8, readValueFromPointer: V, F(k) { + W(k); + } }); + }, j: (a, b) => { + b = L(b); + S(a, { + I: true, + name: b, + argPackAdvance: 0, + fromWireType: () => { + }, + toWireType: () => { + } + }); + }, n: (a, b, c) => z.copyWithin(a, b, b + c), g: (a, b) => { + var c = O[a]; + if (void 0 === c) + throw a = `${"_emval_take_value"} has unknown type ${Ta(a)}`, new Q(a); + a = c; + a = a.readValueFromPointer(b); + return Aa(a); + }, m: (a) => { + var b = z.length; + a >>>= 0; + if (2147483648 < a) + return false; + for (var c = 1; 4 >= c; c *= 2) { + var d = b * (1 + 0.2 / c); + d = Math.min(d, a + 100663296); + var e = Math; + d = Math.max(a, d); + a: { + e = (e.min.call(e, 2147483648, d + (65536 - d % 65536) % 65536) - u.buffer.byteLength + 65535) / 65536; + try { + u.grow(e); + ia(); + var h = 1; + break a; + } catch (l) { + } + h = void 0; + } + if (h) + return true; + } + return false; + } }, X = function() { + function a(c) { + X = c.exports; + u = X.o; + ia(); + Ka = X.t; + ka.unshift(X.p); + F--; + f.monitorRunDependencies?.(F); + 0 == F && (null !== H && (clearInterval(H), H = null), I && (c = I, I = null, c())); + return X; + } + var b = { a: pb }; + F++; + f.monitorRunDependencies?.(F); + if (f.instantiateWasm) + try { + return f.instantiateWasm(b, a); + } catch (c) { + r(`Module.instantiateWasm callback failed with error: ${c}`), q(c); + } + J || (J = qa("zstd_codec.wasm") ? "zstd_codec.wasm" : f.locateFile ? f.locateFile("zstd_codec.wasm", "") : "zstd_codec.wasm"); + va(b, function(c) { + a(c.instance); + }).catch(q); + return {}; + }(), ob = (a) => (ob = X.q)(a), W = (a) => (W = X.r)(a), Sa = (a) => (Sa = X.s)(a), pa = () => (pa = X.u)(), mb = (a) => (mb = X.v)(a), kb = (a) => (kb = X.w)(a), jb = () => (jb = X.x)(), ib = (a) => (ib = X.y)(a), hb = (a) => (hb = X.z)(a), fb = (a) => (fb = X.A)(a), lb = (a, b, c) => (lb = X.B)(a, b, c), Z; + I = function rb() { + Z || sb(); + Z || (I = rb); + }; + function sb() { + function a() { + if (!Z && (Z = true, f.calledRun = true, !da)) { + ma = true; + K(ka); + aa(f); + f.onRuntimeInitialized?.(); + if (f.postRun) + for ("function" == typeof f.postRun && (f.postRun = [f.postRun]); f.postRun.length; ) { + var b = f.postRun.shift(); + la.unshift(b); + } + K(la); + } + } + if (!(0 < F)) { + if (f.preRun) + for ("function" == typeof f.preRun && (f.preRun = [f.preRun]); f.preRun.length; ) + na(); + K(ja); + 0 < F || (f.setStatus ? (f.setStatus("Running..."), setTimeout(function() { + setTimeout(function() { + f.setStatus(""); + }, 1); + a(); + }, 1)) : a()); + } + } + if (f.preInit) + for ("function" == typeof f.preInit && (f.preInit = [f.preInit]); 0 < f.preInit.length; ) + f.preInit.pop()(); + sb(); + moduleRtn = ba; + return moduleRtn; + }; + })(); + zstd_codec_default = zstd_codec; + zstd_codec_default2 = __toBinary("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IAdBgBNyIgg7AAULIAIhBANAIAQgBUYiB0UEQCAEKAIAIARBBGohBC8ABUGAGHFBgAhGDQELCyAHBEAgBiAIQf9ncUGACHIiCDsABQsDQCACIAVGIgRFBEAgAigCACACQQRqIQIvAAVBwAFxQcAARg0BCwsgBARAIAYgCEG//gNxQcAAcjsABQsgAyAGNgIUCyAMIANBFGoQHwwBCyADIAAQTCICNgIMIAJFDQMgCiADQQxqEB8LIABB0QAQEUUNAAsgAyAAEJkBIgE2AhxBACECIAFFDQIgAEHFABARRQ0CCyADQQxqIAAgCxAnIABBmANqQRQQEiADKQIMIQ4gAygCHCEBQStBAEEBQQFBARAWIgIgATYCECACIA43AgggAkGs0AE2AgAMAQtBACECCyADQSBqJAAgAgsTACAAQZgDakEQEBIgASkCABBICyIAIABBCEEAQQFBAUEBEBYiACABNwIIIABBqJgBNgIAIAALzQEBBH8jAEEwayIBJAAgAUEANgIsAkAgACABQSxqEK8BDQAgASgCLCICQQFrIAAoAgAiBCAAKAIEEDpPDQAgAUEgaiAEIAIQKiEDIAAgACgCACACajYCACABIAMpAwA3AxggAUEQakHbGhAOIQIgASABKQMYNwMIIAEgAikCADcDACABQQhqIAEQmgEEQCMAQRBrIgIkACAAQZgDakEQEBIgAkEIakHfJBAOKQMAEEggAkEQaiQAIQMMAQsgACADEEchAwsgAUEwaiQAIAMLPwAgAEGYA2pBEBASIAEoAgAhASACKAIAIQJBLUEAQQFBAUEBEBYiACACNgIMIAAgATYCCCAAQZjRATYCACAACwsAIABCADcCACAAC60DAgV/AX4jAEEQayIDJAACQAJAAkACQAJAAkAgACgCACIBIAAoAgQiBEEAEBlBygBrQR93DggBAgQEBAMEAAQLIAAgAUEBajYCACAAEB0iAUUNBCABQQAgAEHFABARGyECDAQLIAAgAUEBajYCACAAQQhqIQEgACgCCCAAKAIMEB4hBANAIABBxQAQEUUEQCADIAAQTCIFNgIIIAVFDQUgASADQQhqEB8MAQsLIANBCGoiAiAAIAQQJyAAQZgDakEQEBIgAikCACEGQSlBAEEBQQFBARAWIgAgBjcCCCAAQYzSATYCACAAIQIMAwsgASAEQQEQGUHa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IgRB/wFxIgJrdjYAACABIAJBA3ZqIgUgByADIAtqLQAAQQJ0aigCACIGIAcgAyAKai0AAEECdGooAgAiAXYgAXIgByADIAhqLQAAQQJ0aigCACICdiAQIAIgASAGamoiAXZyIAJyIgZBICABIARBB3FqIgFB/wFxIgJrdjYAACABQQdxIQQgBSACQQN2aiEBIANBBksgA0EGayEDDQALCyABIAZBAXZBgICAgHhyQSAgBEH/////B2siAkEPcSIDa3Y2AAAgCSABIANBA3ZqIgEgASAJSxsiASAJTw0AIAJBB3FBAEcgAGsgAWohDAsgDAsEAEEBCw0AIAAgAUECdGooAgALGwAgASgCEEF/RgRAIAFBADYCDCABIAA2AhALCzABAX8gAC8ABSICQcABcUGAAUcEQCACQf8BcUHAAEkPCyAAIAEgACgCACgCABEBAAv6AQEFfyABIAIoAgQiBUYEfyACKAIAIQIjAEEQayIEJAAgBCABNgIMIAQgBTYCCAJAAn8CQAJAIARBCGoiAyAEQQxqIgYgAygCACAGKAIAELYBGygCACIDQQRPBEAgACACckEDcQ0BA0AgACgCACACKAIARw0CIAJBBGohAiAAQQRqIQAgA0EEayIDQQNLDQALCyADRQ0BCwNAIAAtAAAiBiACLQAAIgdGBEAgAkEBaiECIABBAWohACADQQFrIgMNAQwCCwsgBiAHawwBC0EACyIADQBBACEAIAEgBUYNAEF/QQEgASAFSRshAAsgBEEQaiQAIAAFQQELRQsNACAAKAIAIABBDGpGC+8DAQZ/AkAgAEUNACAAKAKQ6wENACAAKAKE6wEhBCAAKAKA6wEhAwJAIAAoApTrASIBRQ0AIAEoArjVASEFIAEoArTVASECAkACQCABKAIAIgYEQCACRQ0BIAUgBiACEQAAIAUgASACEQAADAMLIAJFDQEgBSABIAIRAAAMAgsgBhAVCyABEBULIABBADYCpOsBIABCADcClOsBAkAgACgCuOsBIgFFDQAgAwRAIAQgASADEQAADAELIAEQFQsgAEEANgK46wECQCAAKALc6wEiAUUNAAJAAkACQCAAKALg6wFBBWsOAwABAgMLIAEoAgAQFSABKAIwEBUgASgCPBAVIAEQFQwCCyABKAIAEBUgASgCHBAVIAEoAigQFSABEBUMAQsgASgC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NwMIIAAgAUEIahAaGiABIABBABC6AiIDNgIcIANFDQAgAyECIAAoAgAgACgCBEEAEBlByQBHDQAgASAAQQAQRiICNgIYIAIEfyAAIAFBHGogAUEYahBKBUEACyECCyABQTBqJAAgAguGAQECfyMAQRBrIgIkAAJAAkAgACgCACAAKAIEQQAQGSIBQcQARwRAIAFB/wFxQdQARw0BIAIgABCYASIBNgIMIAFFDQIgAEGUAWogAkEMahAfDAILIAIgABDmASIBNgIIIAFFDQEgAEGUAWogAkEIahAfDAELIAAQ4gEhAQsgAkEQaiQAIAELDwAgACAAKAIAIAFyNgIACzEBAX8gAEIANwIMIAAgAEEcajYCCCAAIABBDGoiATYCBCAAIAE2AgAgAEIANwIUIAALPwAgAEGYA2pBEBASIAEoAgAhASACKAIAIQJBGkEAQQFBAUEBEBYiACACNgIMIAAgATYCCCAAQdjOATYCACAACyIAIABBKkEAQQFBAUEBEBYiACABNgIIIABBrLgBNgIAIAALPwEBfwJAIAAgAUYNAANAIAAgAUEBayIBTw0BIAAtAAAhAiAAIAEtAAA6AAAgASACOgAAIABBAWohAAwACwALCxcAIABBMGtBCkkgAEEgckHhAGtBBklyCwkAIAAgARCjAgsEACAACykAIABBBUEAQQFBAUEBEBYiACACNwIMIAAgATYCCCAAQfzeATYCACAACxwAIAAgACgCACABajYCACAAIAAoAgQgAWs2AgQLRQEDfyMAIQEGQBBTIgIQuQEiAEHUkwE2AgAgAEEEakGKFBDwASAAQZiUATYCABkgASQAIAIQUgkACyAAQbiUAUELEFAACxYAIAAgASgCCCIAIAAoAgAoAhgRAAAL9wMBBn8jAEEQayIGJAACQCAAQcDpAWogASACIAAoAuzqARCbASIBQYh/Sw0AIAEEQEG4fyEBDAELAkAgACgCrOsBQQFHDQAgACgCqOsBIgNFDQAgACgCmOsBRQ0AIAYgACgC3OkBIgQ2AgwgAygCBEEBayIFIAZBDGpBBBDlAadxIQEgAygCACEDA0AgAyABQQJ0aigCACIHRQ0BIAQgBygCqNUBIghHBEAgASAFcUEBaiEBIAgNAQsLAkAgACgClOsBIgFFDQAgASgCuNUBIQQgASgCtNUBIQMCQAJAIAEoAgAi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ASABKAIMIA1qNgIMIAEoAgQhAyANQYCABEkNACABQQE2AiQgASADIAEoAgBrQQN1NgIoCyADIAk2AgAgAyANOwEEIAwhByAIIQwgCkEDayIFQYCABEkNAwwCCwJAIAUgGE8NACAALwAAIAUvAABHDQAgAEECaiEAIAVBAmohBQsgBSAUSQR/IAUgAC0AACAFLQAARmoFIAULIAhrCyEQIAQgA2shCSABKAIMIQUCQAJAIAQgEU0EQCADKQAAISAgBSADKQAINwAIIAUgIDcAACABKAIMIQYgCUEQTQRAIAEgBiAJajYCDCABKAIEIQMMAwsgAykAECEgIAYgAykAGDcAGCAGICA3ABAgCUEhSA0BIAYgCWohACADQRBqIQMgBkEgaiEFA0AgAykAECEgIAUgAykAGDcACCAFICA3AAAgAykAICEgIAUgAykAKDcAGCAFICA3ABAgA0EgaiEDIAVBIGoiBSAASQ0ACwwBCyADIBFNBEAgAykAACEgIAUgAykACDcACCAFICA3AAAgBSARIANrIghqIQAgCEERTgRAIAVBEGohBQNAIAMpABAhICAFIAMpABg3AAggBSAgNwAAIAMpACAhICAFIAMpACg3ABggBSAgNwAQIANBIGohAyAFQSBqIgUgAEkNAAsLIAAhBSARIQMLIAMgBE8NACAGIANrQQAhBiAEIANrQQdxIgAEQANAIAUgAy0AADoAACAFQQFqIQUgA0EBaiEDIAZBAWoiBiAARw0ACwtBB0kNAANAIAUgAy0AADoAACAFIAMtAAE6AAEgBSADLQACOgACIAUgAy0AAzoAAyAFIAMtAAQ6AAQgBSADLQAFOgAFIAUgAy0ABjoABiAFIAMtAAc6AAcgBUEIaiEFIANBCGoiAyAERw0ACwsgASABKAIMIAlqNgIMIAEoAgQhAyAJQYCABEkNACABQQE2AiQgASADIAEoAgBrQQN1NgIoCyAQQQRqIQogA0EBNgIAIAMgCTsBBCAMIQggEEEBaiIFQf//A00NAQsgAUECNgIkIAEgAyABKAIAa0EDdTYCKCAIIQwLIAMgBTsBBiABIANBCGoiADYCBAJAIAQgCmoiAyAXSw0AIBMgDiAPQQJqIgZqKQAAIiBC48iVvcub741PfiAjiKdBAnRqIAY2AgAgEyADQQJrIgQpAABC48iVvcub741PfiAj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IABB3wAQEUUNASAAIAIQlgIhAwwBCyABIAFBIGpB7RoQDikCADcDCCAAIAFBCGoQGkUNACABQShqIgIgAEEAECggASgCLEUNACAAQfAAEBFFDQAgABCXARogAiAAQQAQKCAAQd8AEBFFDQAgACACEJYCIQMLIAFBQGskACADC88OAgZ/AX4jAEGwAmsiASQAAkAgAEHMABARRQ0AAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAiAyAAKAIEIgRBABAZQf8BcUHBAGsOORMWFhQWFhYWFhYWFhYWFhYWFhYYFRYWFhYWFhYWFhIWAwECEBEPFgQHCBYJCg0OFhYWBQYWFgALDBYLIAAgA0EBajYCACABIAFBqAJqQYkMEA4pAgA3AwAgACABEDQhAgwXCyABIAFBoAJqQZEbEA4pAgA3AxAgACABQRBqEBoEQCABQQA2ApQBIAAgAUGUAWoQpQIhAgwXCyABIAFBmAJqQY0bEA4pAgA3AwggACABQQhqEBpFDRYgAUEBNgKUASAAIAFBlAFqEKUCIQIMFgsgACADQQFqNgIAIAEgAUGQAmpBzg8QDikCADcDGCAAIAFBGGoQNCECDBULIAAgA0EBajYCACABIAFBiAJqQccPEA4pAgA3AyAgACABQSBqEDQhAgwUCyAAIANBAWo2AgAgASABQYACakHFDxAOKQIANwMoIAAgAUEoahA0IQIMEwsgACADQQFqNgIAIAEgAUH4AWpB9woQDikCADcDMCAAIAFBMGoQNCECDBILIAAgA0EBajYCACABIAFB8AFqQe4KEA4pAgA3AzggACABQThqEDQhAgwRCyAAIANBAWo2AgAgASABQegBakHPKRAOKQIANwNAIAAgAUFAaxA0IQIMEAsgACADQQFqNgIAIAEgAUHgAWpBkwoQDikCADcDSCAAIAFByABqEDQhAgwPCyAAIANBAWo2AgAgASABQdgBakHIqAEQDikCADcDUCAAIAFB0ABqEDQhAgwOCyAAIANBAWo2AgAgASABQdABakGrERAOKQIANwNYIAAgAUHYAGoQNCECDA0LIAAgA0EBajYCACABIAFByAFqQckSEA4pAgA3A2AgACABQeAAahA0IQIMDAsgACADQQFqNgIAIAEgAUHAAWpBghIQDikC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AkEBayICDQALC0EAC38CAX8BfiAAvSIDQjSIp0H/D3EiAkH/D0cEfCACRQRAIAEgAEQAAAAAAAAAAGEEf0EABSAARAAAAAAAAPBDoiABEOcCIQAgASgCAEFAags2AgAgAA8LIAEgAkH+B2s2AgAgA0L/////////h4B/g0KAgICAgICA8D+EvwUgAAsLpAUCBn4EfyABIAEoAgBBB2pBeHEiAUEQajYCACAAIAEpAwAhAiABKQMIIQcjAEEgayIIJAAgB0L///////8/gyEEAn4gB0IwiEL//wGDIgOnIgpBgfgAa0H9D00EQCAEQgSGIAJCPIiEIQMgCkGA+ABrrSEEAkAgAkL//////////w+DIgJCgYCAgICAgIAIWgRAIANCAXwhAwwBCyACQoCAgICAgICACFINACADQgGDIAN8IQMLQgAgAyADQv////////8HViIAGyECIACtIAR8DAELIAIgBIRQIANC//8BUnJFBEAgBEIEhiACQjyIhEKAgICAgICABIQhAkL/DwwBCyAKQf6HAUsEQEIAIQJC/w8MAQtBgPgAQYH4ACADUCIBGyIAIAprIglB8ABKBEBCACECQgAMAQsgAiEDIAQgBEKAgICAgIDAAIQgARsiBSEGAkBBgAEgCWsiAUHAAHEEQCACIAFBQGqthiEGQgAhAwwBCyABRQ0AIAYgAa0iBIYgA0HAACABa62IhCEGIAMgBIYhAwsgCCADNwMQIAggBjcDGAJAIAlBwABxBEAgBSAJQUBqrYghAkIAIQUMAQsgCUUNACAFQcAAIAlrrYYgAiAJrSIDiIQhAiAFIAOIIQULIAggAjcDACAIIAU3AwggCCkDCEIEhiAIKQMAIgNCPIiEIQICQCAAIApHIAgpAxAgCCkDGIRCAFJxrSADQv//////////D4OEIgNCgYCAgICAgIAIWgRAIAJCAXwhAgwBCyADQoCAgICAgICACFINACACQgGDIAJ8IQILIAJCgICAgICAgAiFIAIgAkL/////////B1YiABshAiAArQshAyAIQSBqJAAgB0KAgICAgICAgIB/gyADQjSGhCAChL85AwAL+RcDEn8BfAN+IwBBsARrIgwkACAMQQA2AiwCQCABvSIZQgBTBEBBASERQboJIRMgAZoiAb0hGQwBCyAEQYAQcQRAQQEhEUG9CSETDAELQcAJ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QCAIIQ0MAQsgCCANTw0AIA0gCGshBAJAIAtFDQBBACEBIAtBBE8EQCALQXxxIQoDQCABIAdqIgIgBEEAIAItAAAiDBsgDGo6AAAgAiAEQQAgAi0AASIMGyAMajoAASACIARBACACLQACIgwbIAxqOgACIAIgBEEAIAItAAMiAhsgAmo6AAMgAUEEaiIBIApHDQALCyALQQNxIgJFDQADQCABIAdqIgogBEEAIAotAAAiChsgCmo6AAAgAUEBaiEBIAVBAWoiBSACRw0ACwsCQCAEIA1PDQAgDSEBIAhBA3EiBQRAQQAhAgNAIAMgAUECdGogAyABIARrQQJ0aigCADYCACABQQFrIQEgAkEBaiICIAVHDQALCyAIQQFrQQNJDQADQCADIAFBAnRqIAMgASAEa0ECdGooAgA2AgAgAyABQQFrIgJBAnRqIAMgAiAEa0ECdGooAgA2AgAgAyABQQJrIgJBAnRqIAMgAiAEa0ECdGooAgA2AgAgAyABQQNrIgJBAnRqIAMgAiAEa0ECdGooAgA2AgAgAUEEayIBIARLDQALCyADQQRqQQAgBEECdBAYGgtBVCANIAZBAWpLDQEaIAAgCUH/gYB4cSANQRB0QYCA/AdxcjYCACANQQFqIhFBA3EhB0EAIQVBACECQQAhASANQQNPBEAgEUF8cSEGIANBNGohCANAIAMgAkECdCIEaigCACEJIAQgCGogATYCACADIARBBHIiCmooAgAhDCAIIApqIAEgCWoiATYCACADIARBCHIiCWooAgAhCiAIIAlqIAEgDGoiATYCACADIARBDHIiBGooAgAhCSAEIAhqIAEgCmoiATYCACABIAlqIQEgAkEEaiICIAZHDQALCyAHBEADQCADIAJBAnRqIgggATYCNCACQQFqIQIgCCgCACABaiEBIAVBAWoiBSAHRw0ACwtBACECIAtBA0oEQCALQQNrIQQgA0E0aiEBIANB1AlqIQggA0HUB2ohBQNAIAEgAiAIai0AAEECdGoiByAHKAIAIgdBAWo2AgAgBSAHaiACOgAAIAEgCCACQQFyIgdqLQAAQQJ0aiIGIAYoAgAiBkEBajYCACAFIAZqIAc6AAAgASAIIAJBAnIiB2otAABBAnRqIgYgBigCACIGQQFqNgIAIAUgBmogBzoAACABIAggAkEDciIHai0AAEECdGoi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Sw0AIANBIGogFyACa00NAQsgCCAIKAJ4NgIQIAggCCkDcDcDCCACIBcgCEEIaiAIQewAaiALIBAgFSATEFYhAwwBCyACIAdqIQEgBSkAACEoIAIgBSkACDcACCACICg3AAACQCAHQRFJDQAgBSkAECEoIAIgBSkAGDcAGCACICg3ABAgB0EQa0ERSA0AIAVBEGohByACQSBqIQUDQCAHKQAQISggBSAHKQAYNwAIIAUgKDcAACAHKQAgISggBSAHKQAoNwAYIAUgKDcAECAHQSBqIQcgBUEgaiIFIAFJDQALCyABIABrIQcgCCAGNgJsIAEgEGsgAEkEQCABIBVrIABJBEBBbCEDDAYLIBMgEyAHIBBrIgVqIgYgBGpPBEAgASAGIAQQHBoMAgsgASAGQQAgBWsQHCAIIAQgBWoiBDYCdCAQIQcgBWshAQsgAEEQTwRAIAcpAAAhKCABIAcpAAg3AAggASAoNwAAIARBEUgNASABIARqIQAgAUEQaiEBA0AgBykAECEoIAEgBykAGDcACCABICg3AAAgBykAICEoIAEgBykAKDcAGCABICg3ABAgB0EgaiEHIAFBIGoiASAASQ0ACwwBCwJAIABBB00EQCABIActAAA6AAAgASAHLQABOgABIAEgBy0AAjoAAiABIActAAM6AAMgASAHIABBAnQiAEHgiwFqKAIAaiIEKAAANgAEIAQgAEGAjAFqKAIAayEHDAELIAEgBykAADcAAAsgCCgCdCIAQQlJDQAgACABaiEFIAFBCGoiBCAHQQhqIgdrQQ9MBEADQCAEIAcpAAA3AAAgB0EIaiEHIARBCGoiBCAFSQ0ADAILAAsgBykAACEoIAQgBykACDcACCAEICg3AAAgAEEZSA0AIAFBGGohAQNAIAcpABAhKCABIAcpABg3AAggASAoNwAAIAcpACAhKCABIAcpACg3ABggASAoNwAQIAdBIGohByABQSBqIgEgBUkNAAsLIANBiH9LDQMgAiADaiECIA9BAWsiD0UNASAIKAI4IgFBIEsNACAIKAI8IgMgCCgCRE8EQCAIIAFBB3EiADYCOCAIIAMgAUEDdmsiATYCPCAIIAEoAAA2AjQgACEBDAELIAMgCCgCQCIARg0AIAggASADIABrIAFBA3YiASADIAFrIABJGyIAQQN0ayIBNgI4IAggAyAAayIA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IApBjAJqIBcgDiAYIBYQViEGDAELIAQgGWohCyAEIAlqIQMgEygCCCECIBkpAAAhKCAJIBkpAAg3AAggCSAoNwAAAkAgBEERSQ0AIAwpAAAhKCAJIAwpAAg3ABggCSAoNwAQIARBEGtBEUgNACAJQSBqIQQgDCEVA0AgFSkAECEoIAQgFSkAGDcACCAEICg3AAAgFSkAICEoIAQgFSkAKDcAGCAEICg3ABAgFUEgaiEVIARBIGoiBCADSQ0ACwsgAyACayEEIAogCzYCjAIgAyAOayACSQRAIAIgAyAYa0sNCSAWIBYgBCAOayIEaiILIBJqTwRAIAMgCyASEBwaDAILIAQgEmohEiADIAtBACAEaxAcIARrIQMgDiEECyACQRBPBEAgBCkAACEoIAMgBCkACDcACCADICg3AAAgEkERSA0BIAMgEmohAiADQRBqIQMDQCAEKQAQISggAyAEKQAYNwAIIAMgKDcAACAEKQAgISggAyAEKQAoNwAYIAMgKDcAECAEQSBqIQQgA0EgaiIDIAJJDQALDAELAkAgAkEHTQRAIAMgBC0AADoAACADIAQtAAE6AAEgAyAELQACOgACIAMgBC0AAzoAAyADIAQgAkECdCICQeCLAWooAgBqIgQoAAA2AAQgBCACQYCMAWooAgBrIQQMAQsgAyAEKQAANwAACyASQQlJDQAgAyASaiELIANBCGoiAiAEQQhqIgRrQQ9MBEADQCACIAQpAAA3AAAgBEEIaiEEIAJBCGoiAiALSQ0ADAILAAsgBCkAACEoIAIgBCkACDcACCACICg3AAAgEkEZSA0AIANBGGohAwNAIAQpABAhKCADIAQpABg3AAggAyAoNwAAIAQpACAhKCADIAQpACg3ABggAyAoNwAQIARBIGohBCADQSBqIgMgC0kNAAsLIAZBiH9LBEAgBiENDAgLIBMgBzYCCCATIBQ2AgQgEyAPNgIAIA8gHWohBCAXIQggBiAJagwDCyAVQSBrIQYCQAJAIAggFUkNACACIBMoAgQiCyAEaiIJaiAGSw0AIAlBIGogGiACa00NAQsgCiATKAIINgJQIAogEykCADcDSCACIBogBiAKQcgAaiAKQYwCaiAIIA4gGCAWEPIBIQkMAgsgAiAEaiESIBMoAgghBiADKQAAISggAiADKQAINwAIIAIgKDcAAAJAIARB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IAEoAmAgASgCXCIGIAEoAlgiBSABKAJUIgcgASgCUCIIIAEoAkwiCSABKAJIIgogASgCRCILIAEoAkAiDCABKAI8Ig0gASgCOCIOIAEoAjQiDyABKAIwIhAgASgCLCIRIAEoAigiEiABKAIkIhMgASgCICIUIAEoAhwiFSABKAIYIhYgASgCFCIXIAEoAhAiGCABKAIMIAEoAgggASgCBCABKAIAampqampqampqampqampqampqampqampqampqampqampqamoiBEGAIE8EfyABIAEoAgAgBEELdmdBH3MiAnZBAWoiBDYCACABIAEoAgQgAnZBAWoiGTYCBCABIAEoAgggAnZBAWoiGjYCCCABIAEoAgwgAnZBAWoiGzYCDCABIAYgAnZBAWoiBjYCXCABIAUgAnZBAWoiBTYCWCABIAcgAnZBAWoiBzYCVCABIAggAnZBAWoiCDYCUCABIAkgAnZBAWoiCTYCTCABIAogAnZBAWoiCjYCSCABIAsgAnZBAWoiCzYCRCABIAwgAnZBAWoiDDYCQCABIA0gAnZBAWoiDTYCPCABIA4gAnZBAWoiDjYCOCABIA8gAnZBAWoiDzYCNCABIBAgAnZBAWoiEDYCMCABIBEgAnZBAWoiETYCLCABIBIgAnZBAWoiEjYCKCABIBMgAnZBAWoiEzYCJCABIBQgAnZBAWoiFDYCICABIBUgAnZBAWoiFTYCHCABIBYgAnZBAWoiFjYCGCABIBcgAnZBAWoiFzYCFCABIBggAnZBAWoiGDYCECABIAEoAmAgAnZBAWoiHDYCYCABIAEoAmQgAnZBAWoiHjYCZCABIAEoAmggAnZBAWoiHzYCaCABIAEoAmwgAnZBAWoiIDYCbCABIAEoAnAgAnZBAWoiITYCcCABIAEoAnQgAnZBAWoiIjYCdCABIAEoAnggAnZBAWoiIzYCeCABIAEoAnwgAnZBAWoiJDYCfCABIAEoAoABIAJ2QQFqIiU2AoABIAEgASgChAEgAnZBAWoiJjYChAEgASABKAKIASACdkEBaiInNgKIASABIAEoAowBIAJ2QQFqIgE2AowBIAEgJyAmICUgJCAjICIgISAgIB8gHiAcIAYgBSAHIAggCSAKIAsgDCANIA4gDyAQIBEgEiATIBQgFSAWIBcgGCAbIBogBCAZampqampqampqampqampqampqampqampqampqampqampqamoFIAQLNgIcAkAgACgCCCICKALQASACKALMASACKALIASACKALEASACKALAASACKAK8ASACKAK4ASACKAK0ASACKAKwASACKAKsASACKAKoASACKAKkASACKAKgASACKAKcASACKAKYASACKAKUASACKAKQASACKAKMASACKAKIASACKAKEASACKAKAASACKAJ8IAIoAnggAigCdCACKAJwIAIoAmwgAigCaCACKAJkIAIoAmAgAigCXCACKAJYIAIoAlQgAigCUCACKAJMIAIoAkggAigCRCACKAJAIAIoAjwgAigCOCACKAI0IAIoAjAgAigCLCACKAIoIAIoAiQgAigCICACKAIcIAIoAhggAigCFCACKAIQIAIoAgwgAigCCCACKAIEIAIoAgBqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqIgRBgCBJDQAgBEELdmdBH3MhBUEAIQFBACEEA0AgAiABQQJ0aiIGIAYoAgAgBXZBAWoiBzYCACAEIAdqIQQgAUE0Rg0BIAYgBigCBCAFdkEBaiIHNgIEIAYgBigCCCAFdkEBaiIINgIIIAYgBigCDCAFdkEBaiIGNgIMIAYgCCAEIAdqamohBCABQQRqIQEMAAsACyAAIAQ2AiAgACgCDCIBKAJ8IAEoAnggASgCdCABKAJwIAEoAmwgASgCaCABKAJkIAEoAmAiAiABKAJcIgYgASgCWCIFIAEoAlQiByABKAJQIgggASgCTCIJIAEoAkgiCiABKAJEIgsgASgCQCIMIAEoAjwiDSABKAI4Ig4gASgCNCIPIAEoAjAiECABKAIsIhEgASgCKCISIAEoAiQiEyABKAIgIhQgASgCHCIVIAEoAhgiFiABKAIUIhcgASgCECIYIAEoAgwiGSABKAIIIhogASgCBCIbIAEoAgAiHGpqampqampqampqampqampqampqampqampqampqamoiBEGAIEkNACABIAIgBEELdmdBH3MiAnZBAWoiBDYCYCABIAYgAnZBAWoiBjYCXCABIAUgAnZBAWoiBTYCWCABIAcgAnZBAWoiBzYCVCABIAggAnZBAWoiCDYCUCABIAkgAnZBAWoiCTYCTCABIAogAnZBAWoiCjYCSCABIAsg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ayAHSxsgACgCGBsiFCAAKAIMIhxPBEAgACABIAIgAyAEEP4BDwsgAigCACIGQQAgBiAFIBRrIglJIgcbIQVBACAGIAcbIR0gAigCBCIGQQAgBiAJSSIJGyEOQQAgBiAJGyEgAkAgAyAAKALMASIGIAZFakEBaiIhaiIPQQFqIgggAyAEaiISQQhrIhlPDQAgACgCCCIVIBwgFCAUIBxJGyIQaiEeIAsgEGohHyAUIBVqISMgACgCXCEMIAtBAmohJCASQSBrIRdBICAAKALAASIEayETQcAAIARrrSEnQQQgACgCyAEiACAAQQVrQQNPG0EFayEYA0AgA0GAAWohFiADQQFqIQkgFSALIAwCfwJAAkACQAJAAkAgGA4EAAECAwQLIAMpAAFCgICA2Mub741PfiAniKchESADKQAAQoCAgNjLm++NT34gJ4inDAQLIAMpAAFCgIDs/Mub741PfiAniKchESADKQAAQoCA7PzLm++NT34gJ4inDAMLIAMpAAFCgMaV/cub741PfiAniKchESADKQAAQoDGlf3Lm++NT34gJ4inDAILIAMpAAFC48iVvcub741PfiAniKchESADKQAAQuPIlb3Lm++NT34gJ4inDAELIAMoAAFBsfPd8XlsIBN2IREgAygAAEGx893xeWwgE3YLIgpBAnRqKAIAIgAgEEkbIRogBSALaiElICEhBiADIQcCfwNAIAghDSAVIAsgECAPIgQgJWsiCEsiJhshIgJ/IAVFIBAgCGtBBElyRQRAIAggImooAAAMAQsgBCgAAEEBcwsgDCAKQQJ0aiAHIAtrIg82AgAgBCgAACIKRgRAQQVBBCAEQQFrLQAAIAggImoiBkEBay0AAEYiABshCiAGIABrIQggBCAAayEHIB4gEiAmGyEbQQEhFiAFIQ0gDgwCCwJAAkAgACAUSQ0AIAcoAAAgACAaaigAAEcNACAJIQQMAQsgDCARQQJ0aiIHKAIAIQACfwJAAkACQAJAAkAgGA4EAQIDBAALIApBsfPd8XlsIBN2DAQLIAQpAABCgICA2Mub741PfiAniKcMAwsgBCkAAEKAgOz8y5vvjU9+ICeIpwwCCyAEKQAAQoDGlf3Lm++NT34gJ4inDAELIAQpAABC48iVvcub741PfiAniKcLIQogByAJIAtrIg82AgACQCAAIBRJDQAgCSgAACAVIAsgACAQSRsiGiAAaigAAEcNACAKIREgCSEHDAELIAwgCkECdGooAgAhAAJ/AkACQAJAAkACQCAYDgQBAgMEAAsgDSgAAEGx893xeWwgE3YMBAsgDSkAAEKAgIDYy5vvjU9+ICeIpwwDCyANKQAAQoCA7PzLm++NT34gJ4inDAILIA0pAABCgMaV/cub741PfiAniKcMAQsgDSkAAELjyJW9y5vvjU9+ICeIpwshESAVIAsgACAQSRshGiAGIA1qIQggBCAGaiIPIBZPBEAgFkGAAWohFiAGQQFqIQYLIA0hCSAEIQcgCCAZSQ0BDAQLCyAeIBIgACAcSSIGGyEbIA8gAGsiDUEDaiEWQQQhCgJ/AkAgACAaaiIIICMgHyAGGyIJTSADIAdPcg0AA0AgB0EBayIGLQAAIAhBAWsiAC0AAEcNASAKQQFqIQogACAJSwRAIAAhCCAGIgcgA0sNAQsLIAAhCCAGIQcgBAwBCyAECyEJIAULIQYgByAKaiAIIApqIBIgGyAfEA8gCmohDiAHIANrIQUgASgCDCEAAkACQCAHIBdNBEAgAykAACEoIAAgAykACDcACCAAICg3AAAgASgCDCEEIAVBEE0EQCABIAQgBWo2AgwgASgCBCEADAMLIAMpABAhKCAEIAMpABg3ABggBCAoNwAQIAVBIUgNASAEIAVqIQggA0EQaiEAIARBIGohAwNAIAApABAhKCADIAApABg3AAggAyAoNwAAIAApACAhKCADIAApACg3ABggAyAoNwAQIABBIGohACADQSBqIgMgCEkNAAsMAQsgAyAXTQRAIAMpAAAhKCAAIAMpAAg3AAggACAoNwAAIAAgFyADayIIaiEEIAhBEU4EQCAAQRBqIQADQCADKQAQISggACADKQAYNwAIIAAgKDcAACADKQAgISggACADKQAoNwAYIAAgKDcAECADQSBqIQMgAEEgaiIAIARJDQALCyAXIQMgBCEACyADIAdPDQBBACEKIAMhBCAHIANrQQdxIggEQANAIAAgBC0AADoAACAAQQFqIQAgBEEBaiEEIApBAWoiCiAIRw0ACwsgAyAHa0F4Sw0AA0AgACAELQAAOgAAIAAgBC0AAToAASAAIAQtAAI6AAIgACAELQADOgADIAAgBC0ABDoABCAAIAQtAAU6AAUgACAELQAGOgAGIAAg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agUgBAsgBmsLQQRqIQoCQCAAIANNBEAgACEFDAELIAAhCSAHIQQgACEFIA0gEEwNAANAIAlBAWsiBS0AACAEQQFrIgQtAABHBEAgCSEFDAILIApBAWohCiADIAVPDQEgBSEJIAQgE0sNAAsLIAAgB2siBkEDaiEJIAUgA2shCCABKAIMIQACQAJAIAUgC00EQCADKQAAISUgACADKQAINwAIIAAgJTcAACABKAIMIQQgCEEQTQRAIAEgBCAIajYCDCABKAIEIQAMAwsgAykAECElIAQgAykAGDcAGCAEICU3ABAgCEEhSA0BIAQgCGohByADQRBqIQAgBEEgaiEDA0AgACkAECElIAMgACkAGDcACCADICU3AAAgACkAICElIAMgACkAKDcAGCADICU3ABAgAEEgaiEAIANBIGoiAyAHSQ0ACwwBCyADIAtNBEAgAykAACElIAAgAykACDcACCAAICU3AAAgACALIANrIgdqIQQgB0ERTgRAIABBEGohAANAIAMpABAhJSAAIAMpABg3AAggACAlNwAAIAMpACAhJSAAIAMpACg3ABggACAlNwAQIANBIGohAyAAQSBqIgAgBEkNAAsLIAshAyAEIQALIAMgBU8NAEEAIQ0gAyEEIAUgA2tBB3EiBwRAA0AgACAELQAAOgAAIABBAWohACAEQQFqIQQgDUEBaiINIAdHDQALCyADIAVrQXhLDQADQCAAIAQtAAA6AAAgACAELQABOgABIAAgBC0AAjoAAiAAIAQtAAM6AAMgACAELQAEOgAEIAAgBC0ABToABSAAIAQtAAY6AAYgACAELQAHOgAHIABBCGohACAEQQhqIgQgBUcNAAsLIAEgASgCDCAIajYCDCABKAIEIQAgCEGAgARJDQAgAUEBNgIkIAEgACABKAIAa0EDdTYCKAsgACAJNgIAIAAgCDsBBCAMIQggBiEMIApBA2siA0H//wNNDQELIAFBAjYCJCABIAAgASgCAGtBA3U2AiggBiEMCyAAIAM7AQYgASAAQQhqIgM2AgQCQCAFIApqIgAgEksNACAUIBEgHWopAABCgMaV/cub741PfiAmiKdBAnRqIBFBAmo2AgAgFCAAQQJrIgQpAABCgMaV/cub741PfiAmiKdBAnRqIAQgD2s2AgAgDCEFIAghBANAAkAgBCEMIAUhBCAZIAAgD2siCCAMayIFa0EDSQ0AIAUgHiAPIAUgEEkiBRtqIgYoAAAgACgAAEcNACAAQQRqIAZBBGogDiAXIA4gBRsgExAPIQYgACALTQRAIAApAAAhJSABKAIMIgMgACkACDcACCADICU3AAAgASgCBCEDCyADQQE2AgAgA0EAOwEEIAZBAWoiBUGAgARPBEAgAUECNgIkIAEgAyABKAIAa0EDdTYCKAsgAyAFOwEGIAEgA0EIaiIDNgIEIBQgACkAAEKAxpX9y5vvjU9+ICaIp0ECdGogCDYCACAMIQUgBCEIIAZBBGogAGoiACASTQ0BDAILCyAMIQggBCEMCyAAIQMgACAYaiIGIBJNDQALDAILIAZFIARBHUtyRQRAQQQgBHQhBUEAIQADQCAAQUBrIgAgBUkNAAsLIBIgAyAYaiIGSQRAIAMhAAwCCyAPQQJqIR0gCyAWaiEeIA5BAWshHyAOQQNrIRUgDkEgayELIBBBAWshGSADIAkgGkZqIQBBOCAEa60hJ0HAACAHa60hJgNAIBwgACkAAEKAgOz8y5vvjU9+IiUgJ4inIgRBBnZB/P//H3FqKAIAIgogBHMhByAAQYACaiEFIBghCQJAAkACfwNAIBQgJSAmiKdBAnRqIhEoAgAhDSAGIgQpAAAhJSARIAAgD2siETYCAAJAIBkgESAMa0EBaiIGa0EDSQ0AIBYgBiAba2ogBiAPaiAGIBBJIgYbIiAoAAAgACgAAUcNACAAQQVqICBBBGogDiAXIA4gBhsgExAPIQcgAEEBaiIFIANrIQkgASgCDCEEAkACQCAFIAtNBEAgAykAACElIAQgAykACDcACCAEICU3AAAgASgCDCEEIAlBEE0EQCABIAQgCWo2AgwgASgCBCEADAMLIAMpABAhJSAEIAMpABg3ABggBCAlNwAQIAlBIUgNASAEIAlqIQYgA0EQaiEAIARBIGohAwNAIAApABAhJSADIAApABg3AAggAyAlNwAAIAApACAhJSADIAApACg3ABggAyAlNwAQIABBIGohACADQSBqIgMgBkkNAAsMAQsgAyALTQRAIAMpAAAhJSAEIAMpAAg3AAggBCAlNwAAIAQgCyADayIKaiEGIApBEU4EQCAEQRBqIQQDQCADKQAQISUgBCADKQAYNwAIIAQgJTcAACADKQAgISUgBCADKQAoNwAYIAQgJTcAECADQSBqIQMgBEEgaiIEIAZJDQALCyAGIQQgCyEDCyADIAVPDQAgACADa0EAIQAgBSADa0EHcSIKBEADQCAEIAMtAAA6AAAgBEEBaiEEIANBAWohAyAAQQFqIgAgCkcNAAsLQQdJDQADQCAEIAMtAAA6AAAgBCADLQABOgABIAQgAy0AAjoAAiAEIAMtAAM6AAMgBCADLQAEOgAEIAQgAy0ABToABSAEIAMtAAY6AAYgBCADLQAHOgAHIARBCGohBCADQQhqIgMgBUcNAAsLIAEgASgCDCAJajYCDCABKAIEIQAgCUGAgARJDQAgAUEBNgIkIAEgACABKAIAa0EDdTYCKAsgB0EEaiEKIABBATYCACAAIAk7AQQgDCEGIAdBAWoiA0H//wNLDQMMBAsCQCAHQf8BcQ0AIApBCHYiBiAhTQ0AIAYgFmoiBygAACAAKAAARyANIBBLcg0AIABBBGogB0EEaiAOIBcgExAPQQRqIQogESAGIBtqayEGIAAhBQJAIAAgA00NAANAIABBAWsiBS0AACAHQQFrIgctAABHBEAgACEFDAILIApBAWohCiADIAVPDQEgBSEAIAcgGksNAAsLIAZBA2ohCSAFIANrIQggASgCDCEAAkACQCAFIAtNBEAgAykAACElIAAgAykACDcACCAAICU3AAAgASgCDCEEIAhBEE0EQCABIAQgCGo2AgwgASgCBCEADAMLIAMpABAhJSAEIAMpABg3ABggBCAlNwAQIAhBIUgNASAEIAhqIQcgA0EQaiEAIARBIGohAwNAIAApABAhJSADIAApABg3AAggAyAlNwAAIAApACAhJSADIAApACg3ABggAyAlNwAQIABBIGohACADQSBqIgMgB0kNAAsMAQsgAyALTQRAIAMpAAAhJSAAIAMpAAg3AAggACAlNwAAIAAgCyADayIHaiEEIAdBEU4EQCAAQRBqIQADQCADKQAQISUgACADKQAYNwAIIAAgJTcAACADKQAgISUgACADKQAoNwAYIAAgJTcAECADQSBqIQMgAEEgaiIAIARJDQALCyALIQMgBCEACyADIAVPDQBBACENIAMhBCAFIANrQQdxIgcEQANAIAAgBC0AADoAACAAQQFqIQAgBEEBaiEEIA1BAWoiDSAHRw0ACwsgAyAFa0F4Sw0AA0AgACAELQAAOgAAIAAgBC0A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IAMgBU8NASAFIQAgByAaSw0ACwsgBkEDaiEJIAUgA2shCCABKAIMIQACQAJAIAUgC00EQCADKQAAISUgACADKQAINwAIIAAgJTcAACABKAIMIQQgCEEQTQRAIAEgBCAIajYCDCABKAIEIQAMAwsgAykAECElIAQgAykAGDcAGCAEICU3ABAgCEEhSA0BIAQgCGohByADQRBqIQAgBEEgaiEDA0AgACkAECElIAMgACkAGDcACCADICU3AAAgACkAICElIAMgACkAKDcAGCADICU3ABAgAEEgaiEAIANBIGoiAyAHSQ0ACwwBCyADIAtNBEAgAykAACElIAAgAykACDcACCAAICU3AAAgACALIANrIgdqIQQgB0ERTgRAIABBEGohAANAIAMpABAhJSAAIAMpABg3AAggACAlNwAAIAMpACAhJSAAIAMpACg3ABggACAlNwAQIANBIGohAyAAQSBqIgAgBEkNAAsLIAshAyAEIQALIAMgBU8NAEEAIQ0gAyEEIAUgA2tBB3EiBwRAA0AgACAELQAAOgAAIABBAWohACAEQQFqIQQgDUEBaiINIAdHDQALCyADIAVrQXhLDQADQCAAIAQtAAA6AAAgACAELQABOgABIAAgBC0AAjoAAiAAIAQtAAM6AAMgACAELQAEOgAEIAAgBC0ABToABSAAIAQtAAY6AAYgACAELQAHOgAHIABBCGohACAEQQhqIgQgBUcNAAsLIAEgASgCDCAIajYCDCABKAIEIQAgCEGAgARJDQAgAUEBNgIkIAEgACABKAIAa0EDdTYCKAsgACAJNgIAIAAgCDsBBCAMIQggBiEMIApBA2siA0H//wNNDQQMAwsCQAJAIA0gEE0NACANIA9qIgcoAAAgACgAAEcNACAHQQRqIQUgAEEEaiIGIBVPBEAgBiEEDAILIAYiBCgAACIIIAUoAAAiCUcEQCAIIAlzaEEDdgwECwNAIAVBBGohBSAEQQRqIgQgFU8NAiAEKAAAIgggBSgAACIJRg0ACyAEIAggCXNoQQN2aiAGawwDCyASIAQgCSAEIAVPIgBqIglqIgZJBEAgAyEADAcLIAUgAEEIdGohBSAcICVCgICA2Mub741PfiIlICeIpyIAQQZ2Qfz//x9xaigCACIKIABzIQcgBCEADAELCwJAIAQgH08NACAFLwAAIAQvAABHDQAgBUECaiEFIARBAmohBAsgBCAOSQR/IAQgBS0AACAELQAARmoFIAQLIAZrC0EEaiEKAkAgACADTQRAIAAhBQwBCyAAIQkgByEEIAAhBSANIBBMDQADQCAJQQFrIgUtAAAgBEEBayIELQAARwRAIAkhBQwCCyAKQQFqIQogAyAFTw0BIAUhCSAEIBNLDQALCyAAIAdrIgZBA2ohCSAFIANrIQggASgCDCEAAkACQCAFIAtNBEAgAykAACElIAAgAykACDcACCAAICU3AAAgASgCDCEEIAhBEE0EQCABIAQgCGo2AgwgASgCBCEADAMLIAMpABAhJSAEIAMpABg3ABggBCAlNwAQIAhBIUgNASAEIAhqIQcgA0EQaiEAIARBIGohAwNAIAApABAhJSADIAApABg3AAggAyAlNwAAIAApACAhJSADIAApACg3ABggAyAlNwAQIABBIGohACADQSBqIgMgB0kNAAsMAQsgAyALTQRAIAMpAAAhJSAAIAMpAAg3AAggACAlNwAAIAAgCyADayIHaiEEIAdBEU4EQCAAQRBqIQADQCADKQAQISUgACADKQAYNwAIIAAgJTcAACADKQAgISUgACADKQAoNwAYIAAgJTcAECADQSBqIQMgAEEgaiIAIARJDQALCyALIQMgBCEACyADIAVPDQBBACENIAMhBCAFIANrQQdxIgcEQANAIAAgBC0AADoAACAAQQFqIQAgBEEBaiEEIA1BAWoiDSAHRw0ACwsgAyAFa0F4Sw0AA0AgACAELQAAOgAAIAAgBC0AAToAASAAIAQtAAI6AAIgACAELQADOgADIAAgBC0ABDoABCAAIAQtAAU6AAUgACAELQAGOgAGIAAgBC0ABzoAByAAQQhqIQAgBEEIaiIEIAVHDQALCyABIAEoAgwgCGo2AgwgASgCBCEAIAhBgIAESQ0AIAFBATYCJCABIAAgASgCAGtBA3U2AigLIAAgCTYCACAAIAg7AQQgDCEIIAYhDCAKQQNrIgNB//8DTQ0BCyABQQI2AiQgASAAIAEoAgBrQQN1NgIoIAYhDAsgACADOwEGIAEgAEEIaiIDNgIEAkAgBSAKaiIAIBJLDQAgFCARIB1qKQAAQoCAgNjLm++NT34gJoinQQJ0aiARQQJqNgIAIBQgAEECayIEKQAAQoCAgNjLm++NT34gJoinQQJ0aiAE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BiAXSQ0ACwwCCwJAIBJFDQAgCEEeSQRAQQQgCHQhBkEAIQADQCAAQUBrIgAgBkkNAAsLIAVBHUsNAEEEIAV0IQZBACEAA0AgAEFAayIAIAZJDQALCyADIAkgCkZqIgYgF08NASANIBNqISAgDEEgayENIAxBAWshGiAMQQNrIRIgD0EBayEdQTggBWutISpBOCAIa60hKEHAACARa60hJkHAACALa60hJwNAIBUgBikAACIlQuPIlb3Lm++NT34iKSAniKdBAnRqIgAoAgAhCiAZICVCgIDs/Mub741PfiIrICaIp0ECdGoiESgCACEJIB8gKSAoiKciG0EGdkH8//8fcWooAgAhBSAiICsgKoinIiFBBnZB/P//H3FqKAIAIQggESAGIA5rIhE2AgAgACARNgIAAkACQAJAAkAgHSARQQFqIgsgBGsiAGtBA0kNACATIAAgFmtqIAAgDmogACAPSSIAGyIeKAAAIAYoAAFHDQAgBkEFaiAeQQRqIAwgFCAMIAAbIBAQDyEKIAZBAWoiBSADayEJIAEoAgwhAAJAAkAgBSANTQRAIAMpAAAhJSAAIAMpAAg3AAggACAlNwAAIAEoAgwhACAJQRBNBEAgASAAIAlqNgIMIAEoAgQhAwwDCyADKQAQISUgACADKQAYNwAYIAAgJTcAECAJQSFIDQEgACAJaiEGIANBEGohAyAAQSBqIQADQCADKQAQISUgACADKQAYNwAIIAAgJTcAACADKQAgISUgACADKQAoNwAYIAAgJTcAECADQSBqIQMgAEEgaiIAIAZJDQALDAELIAMgDU0EQCADKQAAISUgACADKQAINwAIIAAgJTcAACAAIA0gA2siC2ohCCALQRFOBEAgAEEQaiEAA0AgAykAECElIAAgAykAGDcACCAAICU3AAAgAykAICElIAAgAykAKDcAGCAAICU3ABAgA0EgaiEDIABBIGoiACAISQ0ACwsgDSEDIAghAAsgAyAFTw0AIAYgA2tBACEGIAUgA2tBB3EiCwRAA0AgACADLQAAOgAAIABBAWohACADQQFqIQMgBkEBaiIGIAtHDQALC0EHSQ0AA0AgACADLQAAOgAAIAAgAy0AAToAASAAIAMtAAI6AAIgACADLQADOgADIAAgAy0ABDoABCAAIAMtAAU6AAUgACADLQAGOgAGIAAgAy0ABzoA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BSEHIAlBBGogA2oiAyEGIAMgF00NAQwCCwsgBCEHIAUhBCADIQYLIAYgF0kNAAsMAQsCQCASRQ0AIAhBHkkEQEEEIAh0IQZBACEAA0AgAEFAayIAIAZJDQALCyAFQR1LDQBBBCAFdCEGQQAhAANAIABBQGsiACAGSQ0ACwsgAyAJIApGaiIGIBdPDQAgDSATaiEgIAxBIGshDSAMQQFrIRogDEEDayESIA9BAWshHUE4IAVrrSEqQTggCGutIShBwAAgEWutISZBwAAgC2utIScDQCAVIAYpAAAiJULjyJW9y5vvjU9+IikgJ4inQQJ0aiIAKAIAIQogGSAlQoCAgNjLm++NT34iKyAmiKdBAnRqIhEoAgAhCSAfICkgKIinIhtBBnZB/P//H3FqKAIAIQUgIiArICqIpyIhQQZ2Qfz//x9xaigCACEIIBEgBiAOayIRNgIAIAAgETYCAAJAAkACQAJAIB0gEUEBaiILIARrIgBrQQNJDQAgEyAAIBZraiAAIA5qIAAgD0kiABsiHigAACAGKAABRw0AIAZBBWogHkEEaiAMIBQgDCAAGyAQEA8hCiAGQQFqIgUgA2shCSABKAIMIQACQAJAIAUgDU0EQCADKQAAISUgACADKQAINwAIIAAgJTcAACABKAIMIQAgCUEQTQRAIAEgACAJajYCDCABKAIEIQMMAwsgAykAECElIAAgAykAGDcAGCAAICU3ABAgCUEhSA0BIAAgCWohBiADQRBqIQMgAEEgaiEAA0AgAykAECElIAAgAykAGDcACCAAICU3AAAgAykAICElIAAgAykAKDcAGCAAICU3ABAgA0EgaiEDIABBIGoiACAGSQ0ACwwBCyADIA1NBEAgAykAACElIAAgAykACDcACCAAICU3AAAgACANIANrIgtqIQggC0ERTgRAIABBEGohAANAIAMpABAhJSAAIAMpABg3AAggACAlNwAAIAMpACAhJSAAIAMpACg3ABggACAlNwAQIANBIGohAyAAQSBqIgAgCEkNAAsLIA0hAyAIIQALIAMgBU8NACAGIANrQQAhBiAFIANrQQdxIgsEQANAIAAgAy0AADoAACAAQQFqIQAgA0EBaiEDIAZBAWoiBiALRw0ACwtBB0kNAANAIAAgAy0AADoAACAAIAMtAAE6AAEgACADLQACOgACIAAgAy0AAzoA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dGogBjYCACAVICVC48iVvcub741PfiAniKdBAnRqIAY2AgAgBCEIIAUhByAJQQRqIANqIgMhBiADIBdNDQEMAgsLIAQhByAFIQQgAyEGCyAGIBdJDQALCyACIAc2AgQgAiAENgIAIAwgA2sLVwEBfyMAQRBrIgIkACABIAJBCGpBsicQDiIBKAIAIAEoAgQQECEBIAAoAgggARAXIAEgAkH0IxAOIgEoAgAgASgCBBAQIQEgACgCDCABEBcgAkEQaiQACz0BAX8jAEEQayICJAAgAEEIaiABIAJBCGpB+yIQDiIAKAIAIAAoAgQQECIAEC8gAEHdABAkGiACQRBqJAALNwEBfyMAQRBrIgIkACABIAJBCGpB8yUQDiIBKAIAIAEoAgQQECEBIAAoAgggARAXIAJBEGokAAu5AgECfyMAQTBrIgMkACABQSgQIiAAQRBqIAEQLyABQSkQISAAKAIIIgIEQCACIAEgAigCACgCFBEAAAsgACgCICICQQFxBEAgASADQShqQbIKEA4iAigCACACKAIEEBAaIAAoAiAhAgsgAkECcQR/IAEgA0EgakHSFRAOIgIoAgAgAigCBBAQGiAAKAIgBSACC0EEcQRAIAEgA0EYakHBCxAOIgIoAgAgAigCBBAQGgsCQCABAn8CQAJAIAAtACRBAWsOAgABAwsgA0EUaiECIANBEGpBvCUQDgwBCyADQQxqIQIgA0EIakG4JRAOCygCACACKAIAEBAaCyAAKAIYIgIEQCACIAEQFwsgACgCHARAIAEgA0H5JRAOIgEoAgAgASgCBBAQIQEgACgCHCABEBcLIANBMGokAAtdAQJ/IwBBEGsiAyQAAkAgACgCCCICRQ0AIAIgASACKAIAKAIQEQAAIAAoAgggARBcDQAgASADQQhqQc4pEA4iAigCACACKAIEEBAaCyAAKAIMIAEQFyADQRBqJAALVQEBfyMAQRBrIgIkACAAKAIIIAEQFyABIAJBCGpBkCUQDiIBKAIAIAEoAgQQECAAKAIMIAAoAhAQECACQY4lEA4iACgCACAAKAIEEBAaIAJBEGokAAsbACABIAAoAgggACgCDBAQIQEgACgCECABEBcLRQEBfyMAQRBrIgIkACABIAJBCGpB/goQDiIBKAIAIAEoAgQQECIBQSgQIiAAKAIIIAFBE0EAEC0gAUEpECEg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QRBrIgIkACABIAJBCGpBiAgQDiIBKAIAIAEoAgQQECEBIAAoAggiACABIAAoAgAoAhARAAAgAkEQaiQACzcBAX8jAEEQayICJAAgASACQQhqQYsjEA4iASgCACABKAIEEBAhASAAKAIIIAEQFyACQRBqJAALZAECfyMAQRBrIgIkACAALQAMRQRAIAEgAkEIakGCKRAOIgMoAgAgAygCBBAQGgsgASACQZQLEA4iASgCACABKAIEEBAiAUEoECIgACgCCCABQRNBABAtIAFBKRAhIAJBEGokAAs0ACABIAAoAgggACgCDBAQIgFBKBAiIAAoAhAgARAXIAFBKRAhIAEgACgCFCAAKAIYEBAaC00BAX8jAEEQayICJAAgASACQQhqQawaEA4iASgCACABKAIEEBAhASAAKAIIIAEQFyABIAJBqhoQDiIAKAIAIAAoAgQQEBogAkEQaiQAC10BAX8jAEEQayICJAAgACgCCCABEBcgASACQQhqQbEaEA4iASgCACABKAIEEBAhASAAKAIMIgAEQCAAIAEQFwsgASACQaoaEA4iACgCACAAKAIEEBAaIAJBEGokAAuoAQEDfyMAQSBrIgMkACABKAIAIAEoAgQiBEUEQBAxAAsgBGpBAWssAABB3QBHBEAgASADQRhqQc4pEA4iAigCACACKAIEEBAaCyABIANBEGpBuBoQDiIBKAIAIAEoAgQQECEBIAAoAgwiAgRAIAIgARAXCyABIANBCGpBqhoQDiIBKAIAIAEoAgQQECEBIAAoAggiACABIAAoAgAoAhQRAAAgA0EgaiQACxYAIAAoAggiACABIAAoAgAoAhARAAALXQECfyMAQRBrIgIkAAJAIAAoAgwgARA+RQRAIAAoAgwgARBDRQ0BCyABIAJBCGpBjiUQDiIDKAIAIAMoAgQQEBoLIAAoAgwiACABIAAoAgAoAhQRAAAgAkEQaiQAC5sBAQJ/IwBBIGsiAiQAIAAoAgwiAyABIAMoAgAoAhARAAAgAQJ/AkAgACgCDCABED5FBEAgACgCDCABEENFDQELIAJBHGohAyACQRhqQZElEA4MAQsgAkEUaiEDIAJBEGpBzikQDgsoAgAgAygCABAQIQEgACgCCCABEBcgASACQQhqQbkkEA4iACgCACAAKAIEEBAaIAJBIGokAAsfACABIAAoAgggACgCDBAQQSAQJCEBIAAoAhAgARAXC1MBAn8jAEEQayICJAAgAC0AEEUEQCACQQhqIABBEGpBARA7IQMGQCAAKAIMIgAgASAAKAIAKAIUEQAAGSACJAAgAxAlCQALIAMQJQsgAkEQaiQAC1MBAn8jAEEQayICJAAgAC0AEEUEQCACQQhqIABBEGpBARA7IQMGQCAAKAIMIgAgASAAKAIAKAIQEQAAGSACJAAgAxAlCQALIAMQJQsgAkEQaiQAC1cBAn8jAEEQayICJAAgAC0AEEUEQCACQQhqIABBEGpBARA7IQMGQCAAKAIMIgAgASAAKAIAKAIMEQEAIQAZIAIkACADECUJAAsgAxAlCyACQRBqJAAgAAtMAQN/IwBBEGsiAiQAIAAtABBFBEAgAkEIaiAAQRBqQQEQOyEEBkAgACgCDCABEEMhAxkgAiQAIAQQJQkACyAEECULIAJBEGokACADC0wBA38jAEEQayICJAAgAC0AEEUEQCACQQhqIABBEGpBARA7IQQGQCAAKAIMIAEQPiEDGSACJAAgBBAlCQALIAQQJQsgAkEQaiQAIAMLTAEDfyMAQRBrIgIkACAALQAQRQRAIAJBCGogAEEQakEBEDshBAZAIAAoAgwgARBcIQMZIAIkACAEECUJAAsgBBAlCyACQRBqJAAgAwuUAQECfyMAQRBrIgMkACAAKAIMQQRPBEAgAUEoECIgASAAKAIIIAAoAgwQEEEpECELAkAgACgCECICLQAAQe4ARgRAIAEQpAIgA0EIaiAAKAIQQQFqIAAoAhRBAWsQKikDABAuGgwBCyABIAIgACgCFBAQGgsgACgCDCICQQNNBEAgASAAKAIIIAIQEBoLIANBEGokAAs2AQF/IwBBEGsiAiQAIAEgAkEIakGuFUHDFSAALQAHGxAOIgAoAgAgACgCBBAQGiACQRBqJAAL2QEBBX8jAEEwayICJAAgACgCDEEITwRAIAAoAgghBSACQSxqIQNBACEAA0AgAEEIRkUEQCADQVBBqX8gACAFaiIELAABIgZBMGtBCkkbIAZqQQlBACAELAAAIgRBMGtBCk8bIARqQQR0ajoAACADQQFqIQMgAEECaiEADAELCyACQSxqIAMQ1QEgAkIANwMgIAJCADcDGCACQgA3AxAgAiACKgIsuzkDACABIAJBCGogAkEQaiIAIABBGEGqFSACEO8BECoiACgCACAAKAIEEBAaCyACQTBqJAAL3wEBBX8jAEFAaiICJAAgACgCDEEQTwRAIAAoAgghBSACQThqIQNBACEAA0AgAEEQRkUEQCADQVBBqX8gACAFaiIELAABIgZBMGtBCkkbIAZqQQlBACAELAAAIgRBMGtBCk8bIARqQQR0ajoAACADQQFqIQMgAEECaiEADAELCyACQThqIAMQ1QEgAkIANwMoIAJCADcDICACQgA3AxggAkIANwMQIAIgAisDODkDACABIAJBCGogAkEQaiIAIABBIEHsGSACEO8BECoiACgCACAAKAIEEBAaCyACQUBrJAAL2gEBBX8jAEHgAGsiAiQAIAAoAgxBIE8EQCAAKAIIIQUgAkHQAGohA0EAIQADQCAAQSBGRQRAIANBUEGpfyAAIAVqIgQsAAEiBkEwa0EKSRsgBmpBCUEAIAQsAAAiBEEwa0EKTxsgBGpBBHRqOgAAIANBAWohAyAAQQJqIQAMAQsLIAJB0ABqIAMQ1QEgAkEgaiIAQQBBKhAYGiACIAIpA1A3AwAgAiACKQNYNwMIIAEgAkEYaiAAIABBKkHwGiACEO8BECoiACgCACAAKAIEEBAaCyACQeAAaiQAC00BAX8jAEEQayICJAAgASACQQhqQfIiEA4iASgCACABKAIEEBAhASAAKAIIIAEQFyABIAJBySUQDiIAKAIAIAAoAgQQEBogAkEQaiQAC1sBAX8jAEEQayICJAAgASACQQhqQakaEA4iASgCACABKAIEEBAhASAAKAIIIgAtAARBNEYEQCAAIAEQrgILIAEgAkGKCBAOIgAoAgAgACgCBBAQGiACQRBqJAALaQEBfyMAQRBrIgIkACABQSgQIiAAKAIIIAEQFyABQSkQIQJAIAAoAgwtAABB7gBGBEAgARCkAiACQQhqIAAoAgxBAWogACgCEEEBaxAqKQMAEC4aDAELIAEgACkCDBAuGgsgAkEQaiQACzUBAX8gACgCDCABEFsgASgCDCICIAAoAgxJBEAgACgCCCACEFoiACABIAAoAgAoAhQRAAALCzUBAX8gACgCDCABEFsgASgCDCICIAAoAgxJBEAgACgCCCACEFoiACABIAAoAgAoAhARAAALCzgBAX8gACgCDCABEFsgASgCDCICIAAoAgxJBH8gACgCCCACEFoiACABIAAoAgAoAgwRAQAFIAALCy0BAn8gACgCDCABEFsgASgCDCIDIAAoAgxJBH8gACgCCCADEFogARBDBSACCwstAQJ/IAAoAgwgARBbIAEoAgwiAyAAKAIMSQR/IAAoAgggAxBaIAEQPgUgAgsLLQECfyAAKAIMIAEQWyABKAIMIgMgACgCDEkEfyAAKAIIIAMQWiABEFwFIAILC3ABAn8jAEEgayICJAAgAkEYaiABQRRqQQAQRSEDBkAgAEEIaiABIAJBEGpB8yIQDiIAKAIAIAAoAgQQECIAEC8ZIAIkACADEDAJAAsgACACQQhqQaQhEA4iACgCACAAKAIEEBAaIAMQMCACQSBqJAALJAECfyAAKAIEIgAQTUEBaiIBECMiAgR/IAIgACABEBQFQQALCxQAIAAoAgggARAXIAAoAgwgARAXC3cBAn8jAEEQayIDJAACQCAAKAIIIgItAARBC0YEQCACKAIIEKcCDQELAkAgAiABED5FBEAgACgCCCABEENFDQELIAEgA0EIakGOJRAOIgIoAgAgAigCBBAQGgsgACgCCCIAIAEgACgCACgCFBEAAAsgA0EQaiQAC/MBAQJ/IwBBMGsiAiQAIAECfwJAIAAoAggiAy0ABEELRgRAIAMoAggQpwINAQsgAyABIAMoAgAoAhARAAAgACgCCCABED4EQCABIAJBKGpBzikQDiIDKAIAIAMoAgQQEBoLAkAgACgCCCABED5FBEAgACgCCCABEENFDQELIAEgAkEgakGRJRAOIgAoAgAgACgCBBAQGgsgAkEcaiEAIAJBGGpBxiQQDgwBCyACQQxqIQAgASACQRBqQeAiEA4iASgCACABKAIEEBAgAygCDCADKAIQEBAaIAJBCGpBpCEQDgsoAgAgACgCABAQGiACQTBqJAALpgEBAn8jAEEgayICJAAgAC0AEEUEQCACQRhqIABBEGpBARA7IQMGQAJAIAJBEGogACgCCCAAKAIMIAEQqAIgAigCFCIARQ0AAkAgACABED5FBEAgAigCFCABEENFDQELIAEgAkEIakGOJRAOIgAoAgAgACgCBBAQGgsgAigCFCIAIAEgACgCACgCFBEAAAsZIAIkACADECUJAAsgAxAlCyACQSBqJAAL8AEBAn8jAEEwayICJAAgAC0AEEUEQCACQShqIABBEGpBARA7IQMCQAJA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C0EBOgAAQQAhAQwBCyADKAKoBCABSwRAIAMgATYCqAQLIAMgATYCrAQLIAMgATYC+AVBACEBIAUNASADKAKsBCAJayIBIAMoAqQESQRAIAtBAToAAEEAIQEMAgsgAygCqAQgAUsEQCADIAE2AqgECyADIAE2AqwEDAELIAMgBjYCsAQgA0IANwL0BQsgA0EBNgLgBSADIAE2AvwFIANCADcDkARBRCECIARFDQBBACESIB0hFCAhISggBEEBRgRAIAMpA8gEQgF9IUwgAygCvAEhBCADKALcAUEAIQEgAygC2AEiBQRAIExC/wFWIExC/4EEVmogTEL+////D1ZqIQELIB1BEkkEQEG6fyECDAILQQBKQQJ0QSBBACAFQQBHIExBASAEdK1YcSIFG3IgAUEGdHIhBkEAIQIgLygCAEUEQCAhQajqvmk2AABBBCECCyACICFqIAY6AAAgAkEBciESIAVFBEAgEiAhaiAEQQN0QdAAazoAACACQQJyIRILAkACQAJAAkACQCABQQFrDgMBAgMACyAFRQ0DIBIgIWogTDwAACASQQFqIRIMAwsgEiAhaiBMp0GAAms7AAAgEkECaiESDAILIBIgIWogTD4AACASQQRqIRIMAQsgEiAhaiBMNwAAIBJBCHIhEgsgA0ECNgIAIBIgIWohKCAdIBJrIRRBAiEECyAPBEACQCADKALAEUEARyADKALYECIBIBpHciIGRQRAIAMoAuQQIQEgAygC6BAhBSADKALgECECDAELIAMgAygC5BAiBTYC6BAgAyADQdwQaiIEKAIAIgI2AuAQIAMgASACayIBNgLkECAEIBogAWs2AgAgASAFa0EHSw0AIAMgATYC6BAgASEFCyADIA8gGmoiBDYC2BAgBCACIAVqTSABIAJqIBpNckUEQCADIAQgAmsiAiABIAEgAkobNgLoEAsgBgRAIAMgATYC9BAgA0EANgLAEQsCQCADKAKMAkEBRw0AAkAgGiADKAKQBiIBRgRAIAMoApwGIQEgAygCoAYhBSADKAKYBiECDAELIAMgAygCnAYiBTYCoAYgAyADKAKUBiICNgKYBiADIAEgAmsiATYCnAYgAyAaIAFrNgKUBiABIAVrQQdLDQAgAyABNgKgBiABIQULIAMgBDYCkAYgBCACIAVqTSABIAJqIBpNcg0AIAMgBCACayICIAEgASACShs2AqAGCyADKAK8ASEBIAMoAsQEIRAgAygC3AEEQCA1IBogDxCSAQsgA0HkBWohHkEBIAF0ITEgA0GoFGohGyADQYAVaiE2IAhBnAFqITwgCEEMaiE9IANB3BBqITIgA0HUFGohHCAoIQ4DQCAaIQwgFEEGSQRAQbp/IQIMAwsCfyAMIA8gECI3IA8gEEkbIhBqIhogMigCACIBayIEQYCAgIB6TQRAIAMoAvAQDAELIAMgAygCoAQ2AqgEIAMgAygC7BBBAWo2AuwQIDIgDEEBIAMoAsABIAMoAtQBQQVLa3QiAkEBIAMoArwBdCIEIAIgBEsbIAwgAWsiASACQQFrcSIEakECIAIgAkECTRtBACAEQQJJG2oiAms2AgAgAyABIAJrIgIgAygC4BBqNgLgECADQQIgAygC6BAiASACayABIAJBAmoiBEkbNgLoECADQQIgAygC5BAiASACayABIARJGzYC5BAgAygCtBFBASADKALEAXQgAhDIASADKALUASEBAkACQCADKALEEQ0AIAFBAUYNASABQQNrQQJLDQAgAygCvAJBAUYNAQtBASADKALAAXQhBiADKAK8ESELIAFBBkYEQEEAIQVBACEHIAZBEEgNASAGQRBtIQkDQCALIAVBAnRqIgFBASABKAIAIgYgAmtBACAEIAZNGyAGQQFGGzYCACABQQEgASgCBCIGIAJrQQAgBCAGTRsgBkEBRhs2AgQgAUEBIAEoAggiBiACa0EAIAQgBk0bIAZBAUYbNgIIIAFBASABKAIMIgYgAmtBACAEIAZNGyAGQQFGGzYCDCABQQEgASgCECIGIAJrQQAgBCAGTRsgBkEBRhs2AhAgAUEBIAEoAhQiBiACa0EAIAQgBk0bIAZBAUYbNgIUIAFBASABKAIYIgYgAmtBACAEIAZNGyAGQQFGGzYCGCABQQEgASgCHCIGIAJrQQAgBCAGTRsgBkEBRhs2AhwgAUEBIAEoAiAiBiACa0EAIAQgBk0bIAZBAUYbNgIgIAFBASABKAIkIgYgAmtBACAEIAZNGyAGQQFGGzYCJCABQQEgASgCKCIGIAJrQQAgBCAGTRsgBkEBRhs2AiggAUEBIAEoAiwiBiACa0EAIAQgBk0bIAZBAUYbNgIsIAFBASABKAIwIgYgAmtBACAEIAZNGyAGQQFGGzYCMCABQQEgASgCNCIGIAJrQQAgBCAGTRsgBkEBRhs2AjQgAUEBIAEoAjgiBiACa0EAIAQgBk0bIAZBAUYbNgI4IAFBASABKAI8IgEgAmtBACABIARPGyABQQFGGzYCPCAFQRBqIQUgB0EBaiIHIAlHDQALDAELIAsgBiACEMgBCyADKAL4ECIBBEAgOygCAEEBIAF0IAIQyAELIAMoAqQEIgEgAygCqARLBEAgAyABNgKoBAsgA0EANgKMEiADQQA2AvAQIAMgAygC9BAiASACayICQQAgASACTxs2AvQQIBogMigCACIBayEEQQALIQICQCACIDFqIARPBEAgAiADKALkEEYNAQtBACECIANBADYCjBIgA0EANgLwEAsCQCAMIAFrIgQgAiAxak0EQCADKALoECEBDAELIAMoAugQIgEgBCAxayICSQRAIAMgAjYC6BAgAiEBCyABIAMoAuQQSwRAIAMgATYC5BALIANBADYCjBIgA0EANgLwEAsgASADKAL0EEsEQCADIAE2AvQQCyAPIDdNIRkCQAJAAkACQCADKALsAQRAIAMgDCAQEMsBIgJBiH9LDQcgAg0CAkAgAygC3AUNACADKALoBSADKALkBWtBH0sNACADKALwBSADKALsBWtBCUsNACAMIBAQygFFDQAgDiAMLQAAOgADIA4gEEENdjoAAiAOIBBBA3QgGXJBAnI7AABBBCECDAQLAkACQCAeIAMoAtAQIAMoAtQQIC8gCEEIaiADKAK4EhCiAiICQYh/Sw0AIAgoAghBAkYhJyAOIBRqIS0gAygC1BAiFkGQDmohPiAWQbwZaiE/IBZBjAhqIUAgFkEEaiEzIBZBjA5qIUEgFkG4GWohQiAWQYgIaiFDIAMoAugFIjhBCGshRCADKALsASE5IAMoAvwFIR8gAygC+AUhIyADKAL0BSEkIAMoAvAFIUUgAygC7AUhIiADKAK4EiETIAMoAtAQITRBASEsIBZBighqIUYgFkG6GWohRyAWQY4OaiFIIA4hCyAMISkgAygC5AUiKiEEAkADQEEAIQlBgIABQcgBQQAgJxsiAWshSUGACCABayFKIAtBA2ohFSBFICJrITogLSALa0EDayEwQQAhCgNAAn8gKiA4RgRAQQEhICA6DAELIAQgCkEDdGoiAiBERiEgIAIvAQQhASAKQQFqIQogOiADKAKM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KAK86QEhBwwQCyADKALk6wEiBEUEQCAcKAIADAILIAMoApDrAQ0ZIAMoAtzrASAEIAlBCGogCUEUahDOAiIEDRQMFgsgA0EBNgK06wEgA0IANwPQ6wEgA0IANwLk6wEgA0EANgLY6wEgA0EANgLA6wEgICAJKAIQNgIIICAgCSkCCDcCAEEACyADKALs6gEQmwEhBgJAIAMoAqzrAUUNACADKAKo6wEiBEUNACADKAKY6wFFDQAgCSADKALc6QEiBTYCMCAEKAIEQQFrIhUgCUEwakEEEOUBp3EhByAEKAIAIQQDQCAEIAdBAnRqKAIAIhBFDQEgBSAQKAKo1QEiI0cEQCAHIBVxQQFqIQcgIw0BCwsCQCADKAKU6wEiBEUNACAEKAK41QEhByAEKAK01QEhBQJAAkACQCAEKAIAIhUEQCAFRQ0CIAcgFSAFEQAADAELIAVFDQILIAcgBCAFEQAADAILIBUQFQsgBBAVCyADQQA2ApTrASADQX82AqTrASADIBA2ApjrASADIAMoAtzpATYCnOsBCyAGQYl/TwRAIApBBEkEQCAGIQQMGwsgBiEEIBIoAAAiB0HblcEWaiIOQQJLDRoCfwJAAkACQCADKAKk6wFBAWoOAwIAAQALIAMoApTrASIBBEACQCABKAK41QEhBCABKAK01QEhAgJAAkAgASgCACIGBEAgAkUNASAEIAYgAhEAACAEIAEgAhEAAAwDCyACRQ0BIAQgASACEQAADAILIAYQFQsgARAVCwtBACEFIANBADYCpOsBIANCADcClOsBQQAMAgsgA0EANgKk6wELIAMoApjrASIBRQRAQQAhBUEADAELIAEoAgQhBSABKAIICyEGQUAhBCADKAKQ6wENGgJAIAMoAuDrASIIIAdB4JXBFmoiB0YiAg0AIAMoAtzrASEBAkACQAJAIAhBBWsOAwABAgMLIAEEQCABKAIAEBUgASgCMBAVIAEoAjwQFSABEBULDAILIAEEQCABKAIAEBUgASgCHBAVIAEoAigQFSABEBULDAELIAEEQCABKAIAIggEQCAIKALEqQEgCCAIKALAqQERAAALIAEoAiQiCARAIAEoAmQgCCABKAJgEQAACyABKAIwIggEQCABKAJkIAggASgCYBEAAAsgASgCZCABIAEoAmARAAALCwJAAkACQAJAAkACQCAODgMB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AEcNACAFQQJqIQUgCEECaiEICyAEIAhLBH8gCCAFLQAAIAgtAABGagUgCAsgAmsLIBZqIgJJBEAgACALQQN0aiIFIAI2AgQgBSAYIA1rNgIAIAIgDWogESACIBEgDWtLGyERIAtBAWohCyACQYAgSw0CIAIiByADaiAERg0CCyAbIA0gEnFBA3RqIQUCQAJAIAIgHGotAAAgAiADai0AAEkEQCAQIA02AgAgDSAPSw0BIBdBDGohEAwECyAGIA02AgAgDSAPSwRAIAUhBiACIQwMAgsgF0EMaiEGDAMLIAIhCSAFQQRqIhAhBQsgCkEBayIKRQ0BIAUoAgAiDSAOTw0ACwsgBkEANgIAIBBBADYCACABIBFBCGs2AhwLIBdBEGokACALC3YBAn8jAEEgayICJAAGQAZAIAJBGGohAyACQQxqIAFBBGogASgCABDtAiEBGAEgAyABIAARAAAZIAIkACABLAALQQBIBEAgASgCABAVCwkACyACKAIcIAJBADYCHCABLAALQQBIBEAgASgCABAVCyACQSBqJAALxxUBGH8jAEEQayIcJAACQCABKAIEIg8gASgCHCINaiADSw0AAn8gAyAPayIJIA1NBEAgCQwBCwNAIAEgDSAPaiAEIAlBA0EBED0gDWoiDSAJSQ0ACyADIAEoAgQiD2sLIQwgASAJNgIcIAEoAhAiCSAMQQEgASgCuAF0IghrIAkgDCAJayAISxsgASgCGBshDiABKAK8ASEdIAEoAlwgAygAACIQQbHz3fF5bEEgIAEoAsABa3ZBAnRqIh4oAgAhDUH/HyABKALMASIJIAlB/x9PGyETIAdBAWshCSAPIAEoAgwiEmohGSABKAIIIhYgEmohGiABKAJkIR8gASgCxAEhGwJAIAZBfEsEQAwBCyAMIBJrIRQgBEEBayEXIARBA2shESADQQNqIQggDCAOayEYIAwCfyAGQQNGBEAgBSgCAEEBawwBCyAFIAZBAnRqKAIACyIHayEKAkACfwJAAkAgFCAHQQFrIhVLBEAgCiAOSQ0EIAMgB2soAAAgEHNB////B3ENBCAIIAdrIQcgCCARTwRAIAghCwwDCyAIKAAAIgsgBygAACIKRw0BIAghCwNAIAdBBGohByALQQRqIgsgEU8NAyALKAAAIgogBygAACIQRg0ACyALIAogEHNoQQN2aiAIawwDCyAKIBJrQXxLIBUgGE9yDQMgCiAWaiIHKAAAIBBzQf///wdxDQMgCCAHQQNqIAQgGiAZEA8MAgsgCiALc2hBA3YMAQsCQCALIBdPDQAgBy8AACALLwAARw0AIAdBAmohByALQQJqIQsLIAQgC0sEfyALIActAAAgCy0AAEZqBSALCyAIawtBACELQQNqIgcgCU0NACAAIAc2AgRBASELIABBATYCACAHIBNLDQIgByIJIANqIARGDQILIAwCfyAGQQFqIgdBA0cEQCAFIAdBAnRqKAIADAELIAUoAgBBAWsLIgdrIQoCQCAJAn8gFCAHQQFrIhBNBEAgECAYTwRAIAkhBwwDCyAKIBJrQXxLBEAgCSEHDAMLIAogFmoiBygAACADKAAAc0H///8HcQRAIAkhBwwDCyAIIAdBA2ogBCAaIBkQDwwBCyAKIA5JBEAgCSEHDAILIAMgB2soAAAgAygAAHNB////B3EEQCAJIQcMAgsgCCAHayEKAkAgCCARTwRAIAghBwwBCyAIKAAAIgcgCigAACIQRgRAIAghBwNAIApBBGohCiAHQQRqIgcgEU8NAiAHKAAAIhAgCigAACIVRg0ACyAHIBAgFXNoQQN2aiAIawwCCyAHIBBzaEEDdgwBCwJAIAcgF08NACAKLwAAIAcvAABHDQAgCkECaiEKIAdBAmohBwsgBCAHSwR/IAcgCi0AACAHLQAARmoFIAcLIAhrC0EDaiIHTwRAIAkhBwwBCyAAIAtBA3RqIgkgBzYCBCAJQQI2AgAgC0EBaiELIAMgB2ogBEYgByATS3INAgsgDAJ/IAZBAmoiBkEDRwRAIAUgBkECdGooAgAMAQsgBSgCAEEBawsiBmshBSAHAn8gFCAGQQFrIglNBEAgCSAYTwRAIAchCQwDCyAFIBJrQXxLBEAgByEJDAMLIAUgFmoiBSgAACADKAAAc0H///8HcQRAIAchCQwDCyAIIAVBA2ogBCAaIBkQDwwBCyAFIA5JBEAgByEJDAILIAMgBmsoAAAgAygAAHNB////B3EEQCAHIQkMAgsgCCAGayEFAkAgCCARTwRAIAghBgwBCyAIKAAAIgYgBSgAACIJRgRAIAghBgNAIAVBBGohBSAGQQRqIgYgEU8NAiAGKAAAIgkgBSgAACIKRg0ACyAGIAkgCnNoQQN2aiAIawwCCyAGIAlzaEEDdgwBCwJAIAYgF08NACAFLwAAIAYvAABHDQAgBUECaiEFIAZBAmohBgsgBCAGSwR/IAYgBS0AACAGLQAARmoFIAYLIAhrC0EDaiIJTwRAIAchCQwBCyAAIAtBA3RqIgUgCTYCBCAFQQM2AgAgC0EBaiELIAMgCWogBEYgCSATS3INAQtBASAOIA5BAU0bIRQgAQJ/AkAgCUECSw0AQSAgASgCIGshBiADKAAAIQ4gASgCYCEKAkAgAigCACIFIAxPDQAgDCAFIghrQQNxIhEEQEEAIQcDQCAKIAggD2ooAABBgPqerQNsIAZ2QQJ0aiAINgIAIAhBAWohCCAHQQFqIgcgEUcNAAsLIAUgDGtBfEsNAANAIAogCCAPaigAAEGA+p6tA2wgBnZBAnRqIAg2AgAgCiAPIAhBAWoiBWooAABBgPqerQNsIAZ2QQJ0aiAFNgIAIAogDyAIQQJqIgVqKAAAQYD6nq0DbCAGdkECdGogBTYCACAKIA8gCEEDaiIFaigAAEGA+p6tA2wgBnZBAnRqIAU2AgAgCEEEaiIIIAxJDQALCyACIAw2AgAgCiAOQYD6nq0DbCAGdkECdGooAgAiAiAUSQ0AIAwgAmsiBUH//w9LDQACfwJAAkAgAiASTwRAIAIgD2ohBiADIARBA2siAk8EQCADIQgMAwsgBigAACIHIA5HDQEgAyEIA0AgBkEEaiEGIAhBBGoiCCACTw0DIAgoAAAiByAGKAAAIgpGDQALIAggByAKc2hBA3ZqIANrDAMLIAMgAiAWaiAEIBogGRAPDAILIAcgDnNoQQN2DAELAkAgCCAEQQFrTw0AIAYvAAAgCC8AAEcNACAGQQJqIQYgCEECaiEICyAEIAhLBH8gCCAGLQAAIAgtAABGagUgCAsgA2sLIghBA0kNACAAIAg2AgQgACAFQQNqNgIAIAggE00EQEEBIQsgCCEJIAMgCGogBEcNAQtBASELIAxBAWoMAQsgDEEJaiEKIB8gDEF/IB1BAWt0QX9zIhNxQQN0aiIRQQRqIQcgHiAMNgIAAkAgDSAUSQ0AIAwgE2siAkEAIAIgDE0bIRdBASAbdCEYIAxBA2ohHSAEQQFrIR4gBEEDayEQQQAhDEEAIQIDQCADIAwgAiACIAxLGyIOaiEFAn8CQCASIA0gDmpNBEAgDSAPaiAOaiEGIAUgEE8EQCAFIQgMAgsgBSIIKAAAIhsgBigAACIVRwRAIBUgG3NoQQN2IA5qIQggDwwDCwNAIAZBBGohBiAIQQRqIgggEE8NAiAIKAAAIhsgBigAACIVRg0ACyAIIBUgG3NoQQN2aiAFayAOaiEIIA8MAgsgFiAPIAUgDSAWaiAOaiAEIBogGRAPIA5qIgggDWogEkkbDAELAkAgCCAeTw0AIAYvAAAgCC8AAEcNACAGQQJqIQYgCEECaiEICyAEIAhLBH8gCCAGLQAAIAgtAABGagUgCAsgBWsgDmohCCAPCyEFIAggCUsEQCAAIAtBA3RqIgYgCDYCBCAGIB0gDWs2AgAgCCANaiAKIAggCiANa0sbIQogC0EBaiELIAhBgCBLDQIgCCEJIAMgCGogBEYNAgsgHyANIBNxQQN0aiEGAkACQCAFIA1qIAhqLQAAIAMgCGotAABJBEAgESANNgIAIA0gF0sNASAcQQxqIREMBAsgByANNgIAIA0gF0sEQCAGIQcgCCECDAILIBxBDGohBwwDCyAIIQwgBkEEaiIRIQYLIBhBAWsiGEUNASAGKAIAIg0gFE8NAAsLIAdBADYCACARQQA2AgAgCkEIaws2AhwLIBxBEGokACALC9YQARh/IwBBEGsiGiQAAkAgASgCBCIQIAEoAhwiDGogA0sNAAJ/IAMgEGsiAiAMTQRAIAIMAQsDQCABIAwgEGogBCACQQRBARA9IAxqIgwgAkkNAAsgAyABKAIEIhBrCyEJIAEgAjYCHCABKAIQIgIgCUEBIAEoArgBdCIIayACIAkgAmsgCEsbIAEoAhgbIQ8gASgCvAEhGyABKAJcIAMoAAAiDkGx893xeWxBICABKALAAWt2QQJ0aiIcKAIAIQwgB0EBayEHIBAgASgCDCISaiEYIAEoAggiFyASaiEZIAEoAmQhHyABKALEASEdAkAgBkF8SwRADAELIAEoAswBIghB/x9JIQsgCSASayERIAhB/x8gCxshFCAEQQFrIRUgBEEDayENIANBBGohCCAJIA9rIRYgCQJ/IAZBA0YEQCAFKAIAQQFrDAELIAUgBkECdGooAgALIgJrIQoCQAJ/AkACQCARIAJBAWsiE0sEQEEAIQsgCiAPSQ0EIA4gAyACaygAAEcNBCAIIAJrIQsgCCANTwRAIAghAgwDCyAIKAAAIgIgCygAACIKRw0BIAghAgNAIAtBBGohCyACQQRqIgIgDU8NAyACKAAAIgogCygAACIORg0ACyACIAogDnNoQQN2aiAIawwDC0EAIQsgCiASa0F8SyATIBZPcg0DIA4gCiAXaiICKAAARw0DIAggAkEEaiAEIBkgGBAPDAILIAIgCnNoQQN2DAELAkAgAiAVTw0AIAsvAAAgAi8AAEcNACALQQJqIQsgAkECaiECCyACIARJBH8gAiALLQAAIAItAABGagUgAgsgCGsLQQAhC0EEaiICIAdNDQAgACACNgIEQQEhCyAAQQE2AgAgAiAUSw0CIAIiByADaiAERg0CCyAJAn8gBkEBaiICQQNHBEAgBSACQQJ0aigCAAwBCyAFKAIAQQFrCyICayEKAkAgBwJ/IBEgAkEBayIOTQRAIA4gFk8EQCAHIQIMAwsgCiASa0F8SwRAIAchAgwDCyADKAAAIAogF2oiAigAAEcEQCAHIQIMAwsgCCACQQRqIAQgGSAYEA8MAQsgCiAPSQRAIAchAgwCCyADKAAAIAMgAmsoAABHBEAgByECDAILIAggAmshCgJAIAggDU8EQCAIIQIMAQsgCCgAACICIAooAAAiDkYEQCAIIQIDQCAKQQRqIQogAkEEaiICIA1PDQIgAigAACIOIAooAAAiE0YNAAsgAiAOIBNzaEEDdmogCGsMAgsgAiAOc2hBA3YMAQsCQCACIBVPDQAgCi8AACACLwAARw0AIApBAmohCiACQQJqIQILIAIgBEkEfyACIAotAAAgAi0AAEZqBSACCyAIawtBBGoiAk8EQCAHIQIMAQsgACALQQN0aiIHIAI2AgQgB0ECNgIAIAtBAWohCyACIANqIARGIAIgFEtyDQILIAkCfyAGQQJqIgZBA0cEQCAFIAZBAnRqKAIADAELIAUoAgBBAWsLIgZrIQUgAgJ/IBEgBkEBayIHTQRAIAcgFk8EQCACIQcMAwsgBSASa0F8SwRAIAIhBwwDCyADKAAAIAUgF2oiBSgAAEcEQCACIQcMAwsgCCAFQQRqIAQgGSAYEA8MAQsgBSAPSQRAIAIhBwwCCyADKAAAIAMgBmsoAABHBEAgAiEHDAILIAggBmshBQJAIAggDU8EQCAIIQYMAQsgCCgAACIGIAUoAAAiB0YEQCAIIQYDQCAFQQRqIQUgBkEEaiIGIA1PDQIgBigAACIHIAUoAAAiCkYNAAsgBiAHIApzaEEDdmogCGsMAgsgBiAHc2hBA3YMAQsCQCAGIBVPDQAgBS8AACAGLwAARw0AIAVBAmohBSAGQQJqIQYLIAQgBksEfyAGIAUtAAAgBi0AAEZqBSAGCyAIawtBBGoiB08EQCACIQcMAQsgACALQQN0aiICIAc2AgQgAkEDNgIAIAtBAWohCyADIAdqIARGIAcgFEtyDQELIAlBCWohCiAfIAlBfyAbQQFrdEF/cyIUcUEDdGoiEUEEaiEIIBwgCTYCAAJAIAxBASAPIA9BAU0bIhtJDQAgCSAUayICQQAgAiAJTRshFUEBIB10IRYgCUEDaiEcIARBAWshHSAEQQNrIQ5BACECQQAhDwNAIAMgAiAPIAIgD0kbIg1qIQYCfwJAIBIgDCANak0EQCAMIBBqIA1qIQkgBiAOTwRAIAYhBQwCCyAGIgUoAAAiEyAJKAAAIh5HBEAgEyAec2hBA3YgDWohBSAQDAMLA0AgCUEEaiEJIAVBBGoiBSAOTw0CIAUoAAAiEyAJKAAAIh5GDQALIAUgEyAec2hBA3ZqIAZrIA1qIQUgEAwCCyAXIBAgBiAMIBdqIA1qIAQgGSAYEA8gDWoiBSAMaiASSRsMAQsCQCAFIB1PDQAgCS8AACAFLwAARw0AIAlBAmohCSAFQQJqIQULIAQgBUsEfyAFIAktAAAgBS0AAEZqBSAFCyAGayANaiEFIBALIQYgBSAHSwRAIAAgC0EDdGoiByAFNgIEIAcgHCAMazYCACAFIAxqIAogBSAKIAxrSxshCiALQQFqIQsgBUGAIEsNAiAFIQcgAyAFaiAERg0CCyAfIAwgFHFBA3RqIQkCQAJAIAYgDGogBWotAAAgAyAFai0AAEkEQCARIAw2AgAgDCAVSw0BIBpBDGohEQwECyAIIAw2AgAgDCAVSwRAIAkhCCAFIQ8MAgsgGkEMaiEIDAMLIAUhAiAJQQRqIhEhCQsgFkEBayIWRQ0BIAkoAgAiDCAbTw0ACwsgCEEANgIAIBFBADYCACABIApBCGs2AhwLIBpBEGokACALC+UQAhh/AX4jAEEQayIaJAACQCABKAIEIhAgASgCHCIMaiADSw0AAn8gAyAQayICIAxNBEAgAgwBCwNAIAEgDCAQaiAEIAJBBUEBED0gDGoiDCACSQ0ACyADIAEoAgQiEGsLIQkgASACNgIcIAEoAhAiAiAJQQEgASgCuAF0IghrIAIgCSACayAISxsgASgCGBshDyABKAK8ASEbIAEoAlwgAykAACIgQoCAgNjLm++NT35BwAAgASgCwAFrrYinQQJ0aiIcKAIAIQwgB0EBayEHIBAgASgCDCISaiEYIAEoAggiFyASaiEZIAEoAmQhHyABKALEASEdAkAgBkF8SwRADAELIAEoAswBIghB/x9JIQsgCSASayERIAhB/x8gCxshFCAgpyEOIARBAWshFSAEQQNrIQ0gA0EEaiEIIAkgD2shFiAJAn8gBkEDRgRAIAUoAgBBAWsMAQsgBSAGQQJ0aigCAAsiAmshCgJAAn8CQAJAIBEgAkEBayITSwRAQQAhCyAKIA9JDQQgAyACaygAACAORw0EIAggAmshCyAIIA1PBEAgCCECDAMLIAsoAAAiAiAgQiCIpyIKRw0BIAghAgNAIAtBBGohCyACQQRqIgIgDU8NAyACKAAAIgogCygAACIORg0ACyACIAogDnNoQQN2aiAIawwDC0EAIQsgCiASa0F8SyATIBZPcg0DIAogF2oiAigAACAORw0DIAggAkEEaiAEIBkgGBAPDAILIAIgCnNoQQN2DAELAkAgAiAVTw0AIAsvAAAgAi8AAEcNACALQQJqIQsgAkECaiECCyACIARJBH8gAiALLQAAIAItAABGagUgAgsgCGsLQQAhC0EEaiICIAdNDQAgACACNgIEQQEhCyAAQQE2AgAgAiAUSw0CIAIiByADaiAERg0CCyAJAn8gBkEBaiICQQNHBEAgBSACQQJ0aigCAAwBCyAFKAIAQQFrCyICayEKAkAgBwJ/IBEgAkEBayIOTQRAIA4gFk8EQCAHIQIMAwsgCiASa0F8SwRAIAchAgwDCyADKAAAIAogF2oiAigAAEcEQCAHIQIMAwsgCCACQQRqIAQgGSAYEA8MAQsgCiAPSQRAIAchAgwCCyADKAAAIAMgAmsoAABHBEAgByECDAILIAggAmshCgJAIAggDU8EQCAIIQIMAQsgCCgAACICIAooAAAiDkYEQCAIIQIDQCAKQQRqIQogAkEEaiICIA1PDQIgAigAACIOIAooAAAiE0YNAAsgAiAOIBNzaEEDdmogCGsMAgsgAiAOc2hBA3YMAQsCQCACIBVPDQAgCi8AACACLwAARw0AIApBAmohCiACQQJqIQILIAIgBEkEfyACIAotAAAgAi0AAEZqBSACCyAIawtBBGoiAk8EQCAHIQIMAQsgACALQQN0aiIHIAI2AgQgB0ECNgIAIAtBAWohCyACIANqIARGIAIgFEtyDQILIAkCfyAGQQJqIgZBA0cEQCAFIAZBAnRqKAIADAELIAUoAgBBAWsLIgZrIQUgAgJ/IBEgBkEBayIHTQRAIAcgFk8EQCACIQcMAwsgBSASa0F8SwRAIAIhBwwDCyADKAAAIAUgF2oiBSgAAEcEQCACIQcMAwsgCCAFQQRqIAQgGSAYEA8MAQsgBSAPSQRAIAIhBwwCCyADKAAAIAMgBmsoAABHBEAgAiEHDAILIAggBmshBQJAIAggDU8EQCAIIQYMAQsgCCgAACIGIAUoAAAiB0YEQCAIIQYDQCAFQQRqIQUgBkEEaiIGIA1PDQIgBigAACIHIAUoAAAiCkYNAAsgBiAHIApzaEEDdmogCGsMAgsgBiAHc2hBA3YMAQsCQCAGIBVPDQAgBS8AACAGLwAARw0AIAVBAmohBSAGQQJqIQYLIAQgBksEfyAGIAUtAAAgBi0AAEZqBSAGCyAIawtBBGoiB08EQCACIQcMAQsgACALQQN0aiICIAc2AgQgAkEDNgIAIAtBAWohCyADIAdqIARGIAcgFEtyDQELIAlBCWohCiAfIAlBfyAbQQFrdEF/cyIUcUEDdGoiEUEEaiEIIBwgCTYCAAJAIAxBASAPIA9BAU0bIhtJDQAgCSAUayICQQAgAiAJTRshFUEBIB10IRYgCUEDaiEcIARBAWshHSAEQQNrIQ5BACECQQAhDwNAIAMgAiAPIAIgD0kbIg1qIQYCfwJAIBIgDCANak0EQCAMIBBqIA1qIQkgBiAOTwRAIAYhBQwCCyAGIgUoAAAiEyAJKAAAIh5HBEAgEyAec2hBA3YgDWohBSAQDAMLA0AgCUEEaiEJIAVBBGoiBSAOTw0CIAUoAAAiEyAJKAAAIh5GDQALIAUgEyAec2hBA3ZqIAZrIA1qIQUgEAwCCyAXIBAgBiAMIBdqIA1qIAQgGSAYEA8gDWoiBSAMaiASSRsMAQsCQCAFIB1PDQAgCS8AACAFLwAARw0AIAlBAmohCSAFQQJqIQULIAQgBUsEfyAFIAktAAAgBS0AAEZqBSAFCyAGayANaiEFIBALIQYgBSAHSwRAIAAgC0EDdGoiByAFNgIEIAcgHCAMazYCACAFIAxqIAogBSAKIAxrSxshCiALQQFqIQsgBUGAIEsNAiAFIQcgAyAFaiAERg0CCyAfIAwgFHFBA3RqIQkCQAJAIAYgDGogBWotAAAgAyAFai0AAEkEQCARIAw2AgAgDCAVSw0BIBpBDGohEQwECyAIIAw2AgAgDCAVSwRAIAkhCCAFIQ8MAgsgGkEMaiEIDAMLIAUhAiAJQQRqIhEhCQsgFkEBayIWRQ0BIAkoAgAiDCAbTw0ACwsgCEEANgIAIBFBADYCACABIApBCGs2AhwLIBpBEGokACALC+UQAhh/AX4jAEEQayIaJAACQCABKAIEIhAgASgCHCIMaiADSw0AAn8gAyAQayICIAxNBEAgAgwBCwNAIAEgDCAQaiAEIAJBBkEBED0gDGoiDCACSQ0ACyADIAEoAgQiEGsLIQkgASACNgIcIAEoAhAiAiAJQQEgASgCuAF0IghrIAIgCSACayAISxsgASgCGBshDyABKAK8ASEbIAEoAlwgAykAACIgQoCA7PzLm++NT35BwAAgASgCwAFrrYinQQJ0aiIcKAIAIQwgB0EBayEHIBAgASgCDCISaiEYIAEoAggiFyASaiEZIAEoAmQhHyABKALEASEdAkAgBkF8SwRADAELIAEoAswBIghB/x9JIQsgCSASayERIAhB/x8gCxshFCAgpyEOIARBAWshFSAEQQNrIQ0gA0EEaiEIIAkgD2shFiAJAn8gBkEDRgRAIAUoAgBBAWsMAQsgBSAGQQJ0aigCAAsiAmshCgJAAn8CQAJAIBEgAkEBayITSwRAQQAhCyAKIA9JDQQgAyACaygAACAORw0EIAggAmshCyAIIA1PBEAgCCECDAMLIAsoAAAiAiAgQiCIpyIKRw0BIAghAgNAIAtBBGohCyACQQRqIgIgDU8NAyACKAAAIgogCygAACIORg0ACyACIAogDnNoQQN2aiAIawwDC0EAIQsgCiASa0F8SyATIBZPcg0DIAogF2oiAigAACAORw0DIAggAkEEaiAEIBkgGBAPDAILIAIgCnNoQQN2DAELAkAgAiAVTw0AIAsvAAAgAi8AAEcNACALQQJqIQsgAkECaiECCyACIARJBH8gAiALLQAAIAItAABGagUgAgsgCGsLQQAhC0EEaiICIAdNDQAgACACNgIEQQEhCyAAQQE2AgAgAiAUSw0CIAIiByADaiAERg0CCyAJAn8gBkEBaiICQQNHBEAgBSACQQJ0aigCAAwBCyAFKAIAQQFrCyICayEKAkAgBwJ/IBEgAkEBayIOTQRAIA4gFk8EQCAHIQIMAwsgCiASa0F8SwRAIAchAgwDCyADKAAAIAogF2oiAigAAEcEQCAHIQIMAwsgCCACQQRqIAQgGSAYEA8MAQsgCiAPSQRAIAchAgwCCyADKAAAIAMgAmsoAABHBEAgByECDAILIAggAmshCgJAIAggDU8EQCAIIQIMAQsgCCgAACICIAooAAAiDkYEQCAIIQIDQCAKQQRqIQogAkEEaiICIA1PDQIgAigAACIOIAooAAAiE0YNAAsgAiAOIBNzaEEDdmogCGsMAgsgAiAOc2hBA3YMAQsCQCACIBVPDQAgCi8AACACLwAARw0AIApBAmohCiACQQJqIQILIAIgBEkEfyACIAotAAAgAi0AAEZqBSACCyAIawtBBGoiAk8EQCAHIQIMAQsgACALQQN0aiIHIAI2AgQgB0ECNgIAIAtBAWohCyACIANqIARGIAIgFEtyDQILIAkCfyAGQQJqIgZBA0cEQCAFIAZBAnRqKAIADAELIAUoAgBBAWsLIgZrIQUgAgJ/IBEgBkEBayIHTQRAIAcgFk8EQCACIQcMAwsgBSASa0F8SwRAIAIhBwwDCyADKAAAIAUgF2oiBSgAAEcEQCACIQcMAwsgCCAFQQRqIAQgGSAYEA8MAQsgBSAPSQRAIAIhBwwCCyADKAAAIAMgBmsoAABHBEAgAiEHDAILIAggBmshBQJAIAggDU8EQCAIIQYMAQsgCCgAACIGIAUoAAAiB0YEQCAIIQYDQCAFQQRqIQUgBkEEaiIGIA1PDQIgBigAACIHIAUoAAAiCkYNAAsgBiAHIApzaEEDdmogCGsMAgsgBiAHc2hBA3YMAQsCQCAGIBVPDQAgBS8AACAGLwAARw0AIAVBAmohBSAGQQJqIQYLIAQgBksEfyAGIAUtAAAgBi0AAEZqBSAGCyAIawtBBGoiB08EQCACIQcMAQsgACALQQN0aiICIAc2AgQgAkEDNgIAIAtBAWohCyADIAdqIARGIAcgFEtyDQELIAlBCWohCiAfIAlBfyAbQQFrdEF/cyIUcUEDdGoiEUEEaiEIIBwgCTYCAAJAIAxBASAPIA9BAU0bIhtJDQAgCSAUayICQQAgAiAJTRshFUEBIB10IRYgCUEDaiEcIARBAWshHSAEQQNrIQ5BACECQQAhDwNAIAMgAiAPIAIgD0kbIg1qIQYCfwJAIBIgDCANak0EQCAMIBBqIA1qIQkgBiAOTwRAIAYhBQwCCyAGIgUoAAAiEyAJKAAAIh5HBEAgEyAec2hBA3YgDWohBSAQDAMLA0AgCUEEaiEJIAVBBGoiBSAOTw0CIAUoAAAiEyAJKAAAIh5GDQALIAUgEyAec2hBA3ZqIAZrIA1qIQUgEAwCCyAXIBAgBiAMIBdqIA1qIAQgGSAYEA8gDWoiBSAMaiASSRsMAQsCQCAFIB1PDQAgCS8AACAFLwAARw0AIAlBAmohCSAFQQJqIQULIAQgBUsEfyAFIAktAAAgBS0AAEZqBSAFCyAGayANaiEFIBALIQYgBSAHSwRAIAAgC0EDdGoiByAFNgIEIAcgHCAMazYCACAFIAxqIAogBSAKIAxrSxshCiALQQFqIQsgBUGAIEsNAiAFIQcgAyAFaiAERg0CCyAfIAwgFHFBA3RqIQkCQAJAIAYgDGogBWotAAAgAyAFai0AAEkEQCARIAw2AgAgDCAVSw0BIBpBDGohEQwECyAIIAw2AgAgDCAVSwRAIAkhCCAFIQ8MAgsgGkEMaiEIDAMLIAUhAiAJQQRqIhEhCQsgFkEBayIWRQ0BIAkoAgAiDCAbTw0ACwsgCEEANgIAIBFBADYCACABIApBCGs2AhwLIBpBEGokACALC/QXAR9/IwBBEGsiHyQAAkAgASgCBCIOIAEoAhwiCGogA0sNAAJ/IAMgDmsiCSAITQRAIAkMAQsDQCABIAggDmogBCAJQQNBABA9IAhqIgggCUkNAAsgAyABKAIEIg5rCyEMIAEgCTYCHCABKAJcIAMoAAAiEUGx893xeWxBICABKALAAWt2QQJ0aiIgKAIAIQ8gASgCZCEjIAEoArwBISEgASgCtAEiFSgCECEaIBUoArwBISUgASgCECIJIAxBASABKAK4AXQiCGsgCSAMIAlrIAhLGyABKAIYGyIQIBUoAgAiHCAVKAIEIiRrIiJrIR1B/x8gASgCzAEiCSAJQf8fTxshEiAHQQFrIQkgDiABKAIMIhNqIR4gASgCxAEhGyAVKALAASEmAkAgBkF8SwRADAELIAwgE2shFiAkIB1rIRcgBEEBayEYIARBA2shDSADQQNqIQggDCAaIB1qayEZIAwCfyAGQQNGBEAgBSgCAEEBawwBCyAFIAZBAnRqKAIACyIHayEKAkACfwJAAkAgFiAHQQFrIhRLBEAgCiAQSQ0EIAMgB2soAAAgEXNB////B3ENBCAIIAdrIQsgCCANTwRAIAghBwwDCyAIKAAAIgcgCygAACIKRw0BIAghBwNAIAtBBGohCyAHQQRqIgcgDU8NAyAHKAAAIgogCygAACIRRg0ACyAHIAogEXNoQQN2aiAIawwDCyAKIBNrQXxLIBQgGU9yDQMgCiAXaiIHKAAAIBFzQf///wdxDQMgCCAHQQNqIAQgHCAeEA8MAgsgByAKc2hBA3YMAQsCQCAHIBhPDQAgCy8AACAHLwAARw0AIAtBAmohCyAHQQJqIQcLIAQgB0sEfyAHIAstAAAgBy0AAEZqBSAHCyAIawtBACELQQNqIgcgCU0NACAAIAc2AgRBASELIABBATYCACAHIBJLDQIgByIJIANqIARGDQILIAwCfyAGQQFqIgdBA0cEQCAFIAdBAnRqKAIADAELIAUoAgBBAWsLIgdrIQoCQCAJAn8gFiAHQQFrIhFNBEAgESAZTwRAIAkhBwwDCyAKIBNrQXxLBEAgCSEHDAMLIAogF2oiBygAACADKAAAc0H///8HcQRAIAkhBwwDCyAIIAdBA2ogBCAcIB4QDwwBCyAKIBBJBEAgCSEHDAILIAMgB2soAAAgAygAAHNB////B3EEQCAJIQcMAgsgCCAHayEKAkAgCCANTwRAIAghBwwBCyAIKAAAIgcgCigAACIRRgRAIAghBwNAIApBBGohCiAHQQRqIgcgDU8NAiAHKAAAIhEgCigAACIURg0ACyAHIBEgFHNoQQN2aiAIawwCCyAHIBFzaEEDdgwBCwJAIAcgGE8NACAKLwAAIAcvAABHDQAgCkECaiEKIAdBAmohBwsgBCAHSwR/IAcgCi0AACAHLQAARmoFIAcLIAhrC0EDaiIHTwRAIAkhBwwBCyAAIAtBA3RqIgkgBzYCBCAJQQI2AgAgC0EBaiELIAMgB2ogBEYgByASS3INAgsgDAJ/IAZBAmoiBkEDRwRAIAUgBkECdGooAgAMAQsgBSgCAEEBawsiBmshBSAHAn8gFiAGQQFrIglNBEAgCSAZTwRAIAchCQwDCyAFIBNrQXxLBEAgByEJDAMLIAUgF2oiBSgAACADKAAAc0H///8HcQRAIAchCQwDCyAIIAVBA2ogBCAcIB4QDwwBCyAFIBBJBEAgByEJDAILIAMgBmsoAAAgAygAAHNB////B3EEQCAHIQkMAgsgCCAGayEFAkAgCCANTwRAIAghBgwBCyAIKAAAIgYgBSgAACIJRgRAIAghBgNAIAVBBGohBSAGQQRqIgYgDU8NAiAGKAAAIgkgBSgAACIKRg0ACyAGIAkgCnNoQQN2aiAIawwCCyAGIAlzaEEDdgwBCwJAIAYgGE8NACAFLwAAIAYvAABHDQAgBUECaiEFIAZBAmohBgsgBCAGSwR/IAYgBS0AACAGLQAARmoFIAYLIAhrC0EDaiIJTwRAIAchCQwBCyAAIAtBA3RqIgUgCTYCBCAFQQM2AgAgC0EBaiELIAMgCWogBEYgCSASS3INAQtBASAQIBBBAU0bIRMgAQJ/AkAgCUECSw0AQSAgASgCIGshByADKAAAIRAgASgCYCENAkAgAigCACIGIAxPDQAgDCAGIghrQQNxIgoEQEEAIQUDQCANIAggDmooAABBgPqerQNsIAd2QQJ0aiAINgIAIAhBAWohCCAFQQFqIgUgCkcNAAsLIAYgDGtBfEsNAANAIA0gCCAOaigAAEGA+p6tA2wgB3ZBAnRqIAg2AgAgDSAOIAhBAWoiBWooAABBgPqerQNsIAd2QQJ0aiAFNgIAIA0gDiAIQQJqIgVqKAAAQYD6nq0DbCAHdkECdGogBTYCACANIA4gCEEDaiIFaigAAEGA+p6tA2wgB3ZBAnRqIAU2AgAgCEEEaiIIIAxJDQALCyACIAw2AgAgDSAQQYD6nq0DbCAHdkECdGooAgAiAiATSQ0AIAwgAmsiBUH//w9LDQAgAiAOaiEGAn8CQCADIARBA2siAk8EQCADIQgMAQsgECAGKAAAIgdGBEAgAyEIA0AgBkEEaiEGIAhBBGoiCCACTw0CIAgoAAAiByAGKAAAIg1GDQALIAggByANc2hBA3ZqIANrDAILIAcgEHNoQQN2DAELAkAgCCAEQQFrTw0AIAYvAAAgCC8AAEcNACAGQQJqIQYgCEECaiEICyAEIAhLBH8gCCAGLQAAIAgtAABGagUgCAsgA2sLIghBA0kNACAAIAg2AgQgACAFQQNqNgIAIAggEk0EQEEBIQsgCCEJIAMgCGogBEcNAQtBASELIAxBAWoMAQsgDEEJaiESICMgDEF/ICFBAWt0QX9zIhZxQQN0aiEKQQEgG3QhAiAgIAw2AgACQAJAAkAgDyATSQRAIApCADcCAAwBCyAMIBZrIgVBACAFIAxNGyEXIApBBGohByAMQQNqIREgBEEBayEgIARBA2shGEEAIQ1BACEQA0AgDiAPaiIhIA0gECANIBBJGyIZaiEGIAkCfwJAIAMgGWoiBSAYTwRAIAUhCAwBCyAFIggoAAAiGyAGKAAAIhRHBEAgFCAbc2hBA3YMAgsDQCAGQQRqIQYgCEEEaiIIIBhPDQEgCCgAACIbIAYoAAAiFEYNAAsgCCAUIBtzaEEDdmogBWsMAQsCQCAIICBPDQAgBi8AACAILwAARw0AIAZBAmohBiAIQQJqIQgLIAQgCEsEfyAIIAYtAAAgCC0AAEZqBSAICyAFawsgGWoiBUkEQCAAIAtBA3RqIgYgBTYCBCAGIBEgD2s2AgAgBSAPaiASIAUgEiAPa0sbIRIgC0EBaiELIAMgBWogBEYgBUGAIEtyDQMgBSEJCyAjIA8gFnFBA3RqIQYCQAJAAkAgBSAhai0AACADIAVqLQAASQRAIAogDzYCACAPIBdLDQEgH0EMaiEKDAMLIAcgDzYCACAPIBdLBEAgBiEHIAUhEAwCCyAfQQxqIQcMAgsgBSENIAZBBGoiCiEGCyACQQFrIgJFDQAgBigCACIPIBNPDQELCyAHQQA2AgAgCkEANgIAIAJFDQILIBUoAlwgAygAAEGx893xeWxBICAma3ZBAnRqKAIAIgYgGk0NASAiQX8gJUEBa3RBf3MiB2sgGiAiIBprIAdLGyENIA4gHWohECAVKAJkIQogDEEDaiEMQQAhDkEAIQ8DQCAJIAMgDiAPIA4gD0kbIgVqIAYgJGoiCCAFaiAEIBwgHhAPIAVqIgVJBEAgACALQQN0aiIJIAU2AgQgCSAMIAYgHWoiCWs2AgAgBSAJaiASIAUgEiAJa0sbIRIgC0EBaiELIAVBgCBLDQMgBSIJIANqIARGDQMLIAYgDU0NAiACQQFrIgJFDQIgBSAOIAggBiAQaiAFIAZqICJJGyAFai0AACADIAVqLQAASSIIGyEOIA8gBSAIGyEPIAogBiAHcUEDdGogCEECdGooAgAiBiAaSw0ACwwBCyAHQQA2AgAgCkEANgIACyASQQhrCzYCHAsgH0EQaiQAIAsLlhMBIH8jAEEQayIiJAACQCABKAIEIhUgASgCHCIIaiADSw0AAn8gAyAVayICIAhNBEAgAgwBCwNAIAEgCCAVaiAEIAJBBEEAED0gCGoiCCACSQ0ACyADIAEoAgQiFWsLIQ0gASACNgIcIAEoAlwgAygAACIOQbHz3fF5bEEgIAEoAsABa3ZBAnRqIhYoAgAhDCABKAJkISQgASgCvAEhECABKAK0ASIXKAIQIRsgFygCvAEhJiABKAIQIgggDUEBIAEoArgBdCICayAIIA0gCGsgAksbIAEoAhgbIhwgFygCACIfIBcoAgQiJWsiI2shICAHQQFrIQIgFSABKAIMIhFqISEgASgCxAEhEiAXKALAASEnAkAgBkF8SwRADAELIAEoAswBIglB/x9JIQggDSARayEYICUgIGshGSAJQf8fIAgbIRogBEEBayEdIARBA2shDyADQQRqIQggDSAbICBqayEeIA0CfyAGQQNGBEAgBSgCAEEBawwBCyAFIAZBAnRqKAIACyIHayEJAkACfwJAAkAgGCAHQQFrIgtLBEAgCSAcSQ0EIA4gAyAHaygAAEcNBCAIIAdrIQogCCAPTwRAIAghBwwDCyAIKAAAIgsgCigAACIHRw0BIAghBwNAIApBBGohCiAHQQRqIgcgD08NAyAHKAAAIgkgCigAACILRg0ACyAHIAkgC3NoQQN2aiAIawwDCyAJIBFrQXxLIAsgHk9yDQMgDiAJIBlqIgcoAABHDQMgCCAHQQRqIAQgHyAhEA8MAgsgByALc2hBA3YMAQsCQCAHIB1PDQAgCi8AACAHLwAARw0AIApBAmohCiAHQQJqIQcLIAQgB0sEfyAHIAotAAAgBy0AAEZqBSAHCyAIawtBACEKQQRqIgcgAk0NACAAIAc2AgRBASEKIABBATYCACAHIBpLDQIgByICIANqIARGDQILIA0CfyAGQQFqIgdBA0cEQCAFIAdBAnRqKAIADAELIAUoAgBBAWsLIgdrIQkCQCACAn8gGCAHQQFrIgtNBEAgCyAeTwRAIAIhBwwDCyAJIBFrQXxLBEAgAiEHDAMLIAMoAAAgCSAZaiIHKAAARwRAIAIhBwwDCyAIIAdBBGogBCAfICEQDwwBCyAJIBxJBEAgAiEHDAILIAMoAAAgAyAHaygAAEcEQCACIQcMAgsgCCAHayEOAkAgCCAPTwRAIAghBwwBCyAIKAAAIgsgDigAACIHRgRAIAghBwNAIA5BBGohDiAHQQRqIgcgD08NAiAHKAAAIgkgDigAACILRg0ACyAHIAkgC3NoQQN2aiAIawwCCyAHIAtzaEEDdgwBCwJAIAcgHU8NACAOLwAAIAcvAABHDQAgDkECaiEOIAdBAmohBwsgBCAHSwR/IAcgDi0AACAHLQAARmoFIAcLIAhrC0EEaiIHTwRAIAIhBwwBCyAAIApBA3RqIgIgBzYCBCACQQI2AgAgCkEBaiEKIAMgB2ogBEYgByAaS3INAgsgDQJ/IAZBAmoiAkEDRwRAIAUgAkECdGooAgAMAQsgBSgCAEEBawsiBmshBSAHAn8gGCAGQQFrIgJNBEAgAiAeTwRAIAchAgwDCyAFIBFrQXxLBEAgByECDAMLIAMoAAAgBSAZaiICKAAARwRAIAchAgwDCyAIIAJBBGogBCAfICEQDwwBCyAFIBxJBEAgByECDAILIAMoAAAgAyAGaygAAEcEQCAHIQIMAgsgCCAGayEFAkAgCCAPTwRAIAghBgwBCyAIKAAAIgYgBSgAACICRgRAIAghBgNAIAVBBGohBSAGQQRqIgYgD08NAiAGKAAAIgsgBSgAACICRg0ACyAGIAIgC3NoQQN2aiAIawwCCyACIAZzaEEDdgwBCwJAIAYgHU8NACAFLwAAIAYvAABHDQAgBUECaiEFIAZBAmohBgsgBCAGSwR/IAYgBS0AACAGLQAARmoFIAYLIAhrC0EEaiICTwRAIAchAgwBCyAAIApBA3RqIgUgAjYCBCAFQQM2AgAgCkEBaiEKIAIgA2ogBEYgAiAaS3INAQsgDUEJaiETICQgDUF/IBBBAWt0QX9zIhFxQQN0aiEUQQEgEnQhDyAWIA02AgACQAJAAkBBASAcIBxBAU0bIh0gDEsEQCAUQgA3AgAMAQsgDSARayIFQQAgBSANTRshGCAUQQRqIQsgDUEDaiEeIARBAWshDiAEQQNrIRlBACEHQQAhBgNAIAwgFWoiFiAHIAYgBiAHSxsiGmohCSACAn8CQCADIBpqIgUgGU8EQCAFIQgMAQsgBSIIKAAAIhAgCSgAACISRwRAIBAgEnNoQQN2DAILA0AgCUEEaiEJIAhBBGoiCCAZTw0BIAgoAAAiECAJKAAAIhJGDQALIAggECASc2hBA3ZqIAVrDAELAkAgCCAOTw0AIAkvAAAgCC8AAEcNACAJQQJqIQkgCEECaiEICyAEIAhLBH8gCCAJLQAAIAgtAABGagUgCAsgBWsLIBpqIgVJBEAgACAKQQN0aiICIAU2AgQgAiAeIAxrNgIAIAUgDGogEyAFIBMgDGtLGyETIApBAWohCiADIAVqIARGIAVBgCBLcg0DIAUhAgsgJCAMIBFxQQN0aiEJAkACQAJAIAUgFmotAAAgAyAFai0AAEkEQCAUIAw2AgAgDCAYSw0BICJBDGohFAwDCyALIAw2AgAgDCAYSwRAIAkhCyAFIQYMAgsgIkEMaiELDAILIAUhByAJQQRqIhQhCQsgD0EBayIPRQ0AIAkoAgAiDCAdTw0BCwsgC0EANgIAIBRBADYCACAPRQ0CCyAXKAJcIAMoAABBsfPd8XlsQSAgJ2t2QQJ0aigCACIJIBtNDQEgI0F/ICZBAWt0QX9zIhZrIBsgIyAbayAWSxshECAVICBqIRIgFygCZCELIA1BA2ohCEEAIQxBACEGA0AgAiADIAwgBiAGIAxLGyIFaiAJICVqIgcgBWogBCAfICEQDyAFaiIFSQRAIAAgCkEDdGoiAiAFNgIEIAIgCCAJICBqIgJrNgIAIAIgBWogEyAFIBMgAmtLGyETIApBAWohCiAFQYAgSw0DIAUiAiADaiAERg0DCyAJIBBNDQIgD0EBayIPRQ0CIAUgDCAHIAkgEmogBSAJaiAjSRsgBWotAAAgAyAFai0AAEkiBxshDCAGIAUgBxshBiALIAkgFnFBA3RqIAdBAnRqKAIAIgkgG0sNAAsMAQsgC0EANgIAIBRBADYCAAsgASATQQhrNgIcCyAiQRBqJAAgCgugEwIgfwJ+IwBBEGsiIiQAAkAgASgCBCIVIAEoAhwiCGogA0sNAAJ/IAMgFWsiAiAITQRAIAIMAQsDQCABIAggFWogBCACQQVBABA9IAhqIgggAkkNAAsgAyABKAIEIhVrCyENIAEgAjYCHCABKAJcIAMpAAAiKEKAgIDYy5vvjU9+IilBwAAgASgCwAFrrYinQQJ0aiIWKAIAIQwgASgCZCEkIAEoArwBIRAgASgCtAEiFygCECEbIBcoArwBISYgASgCECIIIA1BASABKAK4AXQiAmsgCCANIAhrIAJLGyABKAIYGyIcIBcoAgAiHyAXKAIEIiVrIiNrISAgB0EBayECIBUgASgCDCIRaiEhIAEoAsQBIRIgFygCwAEhJwJAIAZBfEsEQAwBCyABKALMASIJQf8fSSEIIA0gEWshGCAlICBrIRkgCUH/HyAIGyEaICinIQkgBEEBayEdIARBA2shDyADQQRqIQggDSAbICBqayEeIA0CfyAGQQNGBEAgBSgCAEEBawwBCyAFIAZBAnRqKAIACyIHayEOAkACfwJAAkAgGCAHQQFrIgtLBEAgDiAcSQ0EIAMgB2soAAAgCUcNBCAIIAdrIQogCCAPTwRAIAghBwwDCyAKKAAAIgsgKEIgiKciB0cNASAIIQcDQCAKQQRqIQogB0EEaiIHIA9PDQMgBygAACIJIAooAAAiC0YNAAsgByAJIAtzaEEDdmogCGsMAwsgDiARa0F8SyALIB5Pcg0DIA4gGWoiBygAACAJRw0DIAggB0EEaiAEIB8gIRAPDAILIAcgC3NoQQN2DAELAkAgByAdTw0AIAovAAAgBy8AAEcNACAKQQJqIQogB0ECaiEHCyAEIAdLBH8gByAKLQAAIActAABGagUgBwsgCGsLQQAhCkEEaiIHIAJNDQAgACAHNgIEQQEhCiAAQQE2AgAgByAaSw0CIAciAiADaiAERg0CCyANAn8gBkEBaiIHQQNHBEAgBSAHQQJ0aigCAAwBCyAFKAIAQQFrCyIHayEJAkAgAgJ/IBggB0EBayILTQRAIAsgHk8EQCACIQcMAwsgCSARa0F8SwRAIAIhBwwDCyADKAAAIAkgGWoiBygAAEcEQCACIQcMAwsgCCAHQQRqIAQgHyAhEA8MAQsgCSAcSQRAIAIhBwwCCyADKAAAIAMgB2soAABHBEAgAiEHDAILIAggB2shDgJAIAggD08EQCAIIQcMAQsgCCgAACILIA4oAAAiB0YEQCAIIQcDQCAOQQRqIQ4gB0EEaiIHIA9PDQIgBygAACIJIA4oAAAiC0YNAAsgByAJIAtzaEEDdmogCGsMAgsgByALc2hBA3YMAQsCQCAHIB1PDQAgDi8AACAHLwAARw0AIA5BAmohDiAHQQJqIQcLIAQgB0sEfyAHIA4tAAAgBy0AAEZqBSAHCyAIawtBBGoiB08EQCACIQcMAQsgACAKQQN0aiICIAc2AgQgAkECNgIAIApBAWohCiADIAdqIARGIAcgGktyDQILIA0CfyAGQQJqIgJBA0cEQCAFIAJBAnRqKAIADAELIAUoAgBBAWsLIgZrIQUgBwJ/IBggBkEBayICTQRAIAIgHk8EQCAHIQIMAwsgBSARa0F8SwRAIAchAgwDCyADKAAAIAUgGWoiAigAAEcEQCAHIQIMAwsgCCACQQRqIAQgHyAhEA8MAQsgBSAcSQRAIAchAgwCCyADKAAAIAMgBmsoAABHBEAgByECDAILIAggBmshBQJAIAggD08EQCAIIQYMAQsgCCgAACIGIAUoAAAiAkYEQCAIIQYDQCAFQQRqIQUgBkEEaiIGIA9PDQIgBigAACILIAUoAAAiAkYNAAsgBiACIAtzaEEDdmogCGsMAgsgAiAGc2hBA3YMAQsCQCAGIB1PDQAgBS8AACAGLwAARw0AIAVBAmohBSAGQQJqIQYLIAQgBksEfyAGIAUtAAAgBi0AAEZqBSAGCyAIawtBBGoiAk8EQCAHIQIMAQsgACAKQQN0aiIFIAI2AgQgBUEDNgIAIApBAWohCiACIANqIARGIAIgGktyDQELIA1BCWohEyAkIA1BfyAQQQFrdEF/cyIRcUEDdGohFEEBIBJ0IQ8gFiANNgIAAkACQAJAQQEgHCAcQQFNGyIdIAxLBEAgFEIANwIADAELIA0gEWsiBUEAIAUgDU0bIRggFEEEaiELIA1BA2ohHiAEQQFrIQ4gBEEDayEZQQAhB0EAIQYDQCAMIBVqIhYgByAGIAYgB0sbIhpqIQkgAgJ/AkAgAyAaaiIFIBlPBEAgBSEIDAELIAUiCCgAACIQIAkoAAAiEkcEQCAQIBJzaEEDdgwCCwNAIAlBBGohCSAIQQRqIgggGU8NASAIKAAAIhAgCSgAACISRg0ACyAIIBAgEnNoQQN2aiAFawwBCwJAIAggDk8NACAJLwAAIAgvAABHDQAgCUECaiEJIAhBAmohCAsgBCAISwR/IAggCS0AACAILQAARmoFIAgLIAVrCyAaaiIFSQRAIAAgCkEDdGoiAiAFNgIEIAIgHiAMazYCACAFIAxqIBMgBSATIAxrSxshEyAKQQFqIQogAyAFaiAERiAFQYAgS3INAyAFIQILICQgDCARcUEDdGohCQJAAkACQCAFIBZqLQAAIAMgBWotAABJBEAgFCAMNgIAIAwgGEsNASAiQQxqIRQMAwsgCyAMNgIAIAwgGEsEQCAJIQsgBSEGDAILICJBDGohCwwCCyAFIQcgCUEEaiIUIQkLIA9BAWsiD0UNACAJKAIAIgwgHU8NAQsLIAtBADYCACAUQQA2AgAgD0UNAgsgFygCXCApQcAAICdrrYinQQJ0aigCACIJIBtNDQEgI0F/ICZBAWt0QX9zIhZrIBsgIyAbayAWSxshECAVICBqIRIgFygCZCELIA1BA2ohCEEAIQxBACEGA0AgAiADIAwgBiAGIAxLGyIFaiAJICVqIgcgBWogBCAfICEQDyAFaiIFSQRAIAAgCkEDdGoiAiAFNgIEIAIgCCAJICBqIgJrNgIAIAIgBWogEyAFIBMgAmtLGyETIApBAWohCiAFQYAgSw0DIAUiAiADaiAERg0DCyAJIBBNDQIgD0EBayIPRQ0CIAUgDCAHIAkgEmogBSAJaiAjSRsgBWotAAAgAyAFai0AAEkiBxshDCAGIAUgBxshBiALIAkgFnFBA3RqIAdBAnRqKAIAIgkgG0sNAAsMAQsgC0EANgIAIBRBADYCAAsgASATQQhrNgIcCyAiQRBqJAAgCgugEwIgfwJ+IwBBEGsiIiQAAkAgASgCBCIVIAEoAhwiCGogA0sNAAJ/IAMgFWsiAiAITQRAIAIMAQsDQCABIAggFWogBCACQQZBABA9IAhqIgggAkkNAAsgAyABKAIEIhVrCyENIAEgAjYCHCABKAJcIAMpAAAiKEKAgOz8y5vvjU9+IilBwAAgASgCwAFrrYinQQJ0aiIWKAIAIQwgASgCZCEkIAEoArwBIRAgASgCtAEiFygCECEbIBcoArwBISYgASgCECIIIA1BASABKAK4AXQiAmsgCCANIAhrIAJLGyABKAIYGyIcIBcoAgAiHyAXKAIEIiVrIiNrISAgB0EBayECIBUgASgCDCIRaiEhIAEoAsQBIRIgFygCwAEhJwJAIAZBfEsEQAwBCyABKALMASIJQf8fSSEIIA0gEWshGCAlICBrIRkgCUH/HyAIGyEaICinIQkgBEEBayEdIARBA2shDyADQQRqIQggDSAbICBqayEeIA0CfyAGQQNGBEAgBSgCAEEBawwBCyAFIAZBAnRqKAIACyIHayEOAkACfwJAAkAgGCAHQQFrIgtLBEAgDiAcSQ0EIAMgB2soAAAgCUcNBCAIIAdrIQogCCAPTwRAIAghBwwDCyAKKAAAIgsgKEIgiKciB0cNASAIIQcDQCAKQQRqIQogB0EEaiIHIA9PDQMgBygAACIJIAooAAAiC0YNAAsgByAJIAtzaEEDdmogCGsMAwsgDiARa0F8SyALIB5Pcg0DIA4gGWoiBygAACAJRw0DIAggB0EEaiAEIB8gIRAPDAILIAcgC3NoQQN2DAELAkAgByAdTw0AIAovAAAgBy8AAEcNACAKQQJqIQogB0ECaiEHCyAEIAdLBH8gByAKLQAAIActAABGagUgBwsgCGsLQQAhCkEEaiIHIAJNDQAgACAHNgIEQQEhCiAAQQE2AgAgByAaSw0CIAciAiADaiAERg0CCyANAn8gBkEBaiIHQQNHBEAgBSAHQQJ0aigCAAwBCyAFKAIAQQFrCyIHayEJAkAgAgJ/IBggB0EBayILTQRAIAsgHk8EQCACIQcMAwsgCSARa0F8SwRAIAIhBwwDCyADKAAAIAkgGWoiBygAAEcEQCACIQcMAwsgCCAHQQRqIAQgHyAhEA8MAQsgCSAcSQRAIAIhBwwCCyADKAAAIAMgB2soAABHBEAgAiEHDAILIAggB2shDgJAIAggD08EQCAIIQcMAQsgCCgAACILIA4oAAAiB0YEQCAIIQcDQCAOQQRqIQ4gB0EEaiIHIA9PDQIgBygAACIJIA4oAAAiC0YNAAsgByAJIAtzaEEDdmogCGsMAgsgByALc2hBA3YMAQsCQCAHIB1PDQAgDi8AACAHLwAARw0AIA5BAmohDiAHQQJqIQcLIAQgB0sEfyAHIA4tAAAgBy0AAEZqBSAHCyAIawtBBGoiB08EQCACIQcMAQsgACAKQQN0aiICIAc2AgQgAkECNgIAIApBAWohCiADIAdqIARGIAcgGktyDQILIA0CfyAGQQJqIgJBA0cEQCAFIAJBAnRqKAIADAELIAUoAgBBAWsLIgZrIQUgBwJ/IBggBkEBayICTQRAIAIgHk8EQCAHIQIMAwsgBSARa0F8SwRAIAchAgwDCyADKAAAIAUgGWoiAigAAEcEQCAHIQIMAwsgCCACQQRqIAQgHyAhEA8MAQsgBSAcSQRAIAchAgwCCyADKAAAIAMgBmsoAABHBEAgByECDAILIAggBmshBQJAIAggD08EQCAIIQYMAQsgCCgAACIGIAUoAAAiAkYEQCAIIQYDQCAFQQRqIQUgBkEEaiIGIA9PDQIgBigAACILIAUoAAAiAkYNAAsgBiACIAtzaEEDdmogCGsMAgsgAiAGc2hBA3YMAQsCQCAGIB1PDQAgBS8AACAGLwAARw0AIAVBAmohBSAGQQJqIQYLIAQgBksEfyAGIAUtAAAgBi0AAEZqBSAGCyAIawtBBGoiAk8EQCAHIQIMAQsgACAKQQN0aiIFIAI2AgQgBUEDNgIAIApBAWohCiACIANqIARGIAIgGktyDQELIA1BCWohEyAkIA1BfyAQQQFrdEF/cyIRcUEDdGohFEEBIBJ0IQ8gFiANNgIAAkACQAJAQQEgHCAcQQFNGyIdIAxLBEAgFEIANwIADAELIA0gEWsiBUEAIAUgDU0bIRggFEEEaiELIA1BA2ohHiAEQQFrIQ4gBEEDayEZQQAhB0EAIQYDQCAMIBVqIhYgByAGIAYgB0sbIhpqIQkgAgJ/AkAgAyAaaiIFIBlPBEAgBSEIDAELIAUiCCgAACIQIAkoAAAiEkcEQCAQIBJzaEEDdgwCCwNAIAlBBGohCSAIQQRqIgggGU8NASAIKAAAIhAgCSgAACISRg0ACyAIIBAgEnNoQQN2aiAFawwBCwJAIAggDk8NACAJLwAAIAgvAABHDQAgCUECaiEJIAhBAmohCAsgBCAISwR/IAggCS0AACAILQAARmoFIAgLIAVrCyAaaiIFSQRAIAAgCkEDdGoiAiAFNgIEIAIgHiAMazYCACAFIAxqIBMgBSATIAxrSxshEyAKQQFqIQogAyAFaiAERiAFQYAgS3INAyAFIQILICQgDCARcUEDdGohCQJAAkACQCAFIBZqLQAAIAMgBWotAABJBEAgFCAMNgIAIAwgGEsNASAiQQxqIRQMAwsgCyAMNgIAIAwgGEsEQCAJIQsgBSEGDAILICJBDGohCwwCCyAFIQcgCUEEaiIUIQkLIA9BAWsiD0UNACAJKAIAIgwgHU8NAQsLIAtBADYCACAUQQA2AgAgD0UNAgsgFygCXCApQcAAICdrrYinQQJ0aigCACIJIBtNDQEgI0F/ICZBAWt0QX9zIhZrIBsgIyAbayAWSxshECAVICBqIRIgFygCZCELIA1BA2ohCEEAIQxBACEGA0AgAiADIAwgBiAGIAxLGyIFaiAJICVqIgcgBWogBCAfICEQDyAFaiIFSQRAIAAgCkEDdGoiAiAFNgIEIAIgCCAJICBqIgJrNgIAIAIgBWogEyAFIBMgAmtLGyETIApBAWohCiAFQYAgSw0DIAUiAiADaiAERg0DCyAJIBBNDQIgD0EBayIPRQ0CIAUgDCAHIAkgEmogBSAJaiAjSRsgBWotAAAgAyAFai0AAEkiBxshDCAGIAUgBxshBiALIAkgFnFBA3RqIAdBAnRqKAIAIgkgG0sNAAsMAQsgC0EANgIAIBRBADYCAAsgASATQQhrNgIcCyAiQRBqJAAgCgsRACAAIAEgAiADIARBABD1AQvVHQIdfwJ+IwBBEGsiDCQAIAIoAgQhDSACKAIAIQ4gAEEANgLcASAAKALEASELQQRBBiAAKALIASIFIAVBBk8bIgUgBUEETRshFyADIAAoAgQiECAAKAIMIhVqIhggA0ZqIQUCQCAAKAIcIgcgB0EIIAMgBGoiCUEPayIfIAcgEGoiBmsiBCAEQQhPG0EAIAYgCUEQayITTRtqIg9PDQBBGCAAKAIkIgRrIQhBOCAEa60hIyAAKQNQIiKnIQogC0EETQRAIBdBBWshBANAIAcgEGohBiAAIAdBB3FBAnRqAn8CQAJAAkAgBA4CAAECCyAGKQAAQoCAgNjLm++NT34gIoUgI4inDAILIAYpAABCgIDs/Mub741PfiAihSAjiKcMAQsgBigAAEGx893xeWwgCnMgCHYLNgIsIAdBAWoiByAPRw0ACwwBCyALQQVGBEAgF0EFayEEA0AgByAQaiEGIAAgB0EHcUECdGoCfwJAAkACQCAEDgIAAQILIAYpAABCgICA2Mub741PfiAihSAjiKcMAgsgBikAAEKAgOz8y5vvjU9+ICKFICOIpwwBCyAGKAAAQbHz3fF5bCAKcyAIdgs2AiwgB0EBaiIHIA9HDQALDAELIBdBBWshBANAIAcgEGohBiAAIAdBB3FBAnRqAn8CQAJAAkAgBA4CAQIACyAGKAAAQbHz3fF5bCAKcyAIdgwCCyAGKQAAQoCAgNjLm++NT34gIoUgI4inDAELIAYpAABCgIDs/Mub741PfiAihSAjiKcLNgIsIAdBAWoiByAPRw0ACwsgBSATSQRAQQRBBiALIAtBBk8bIgQgBEEETRshESAAKAIIIhYgACgCEGohICAVIBZqIRogCUEBayEhIAlBA2shHSAJQSBrIRkgFUEBayEbQQEgACgCuAF0IRQgF0EEayEcA0AgBUEBaiEIAn9BACAbIAUgEGsiB0EBaiILIA5rIgprQQNJDQAaQQAgDiALIAAoAhAiBiALIBRrIAYgCyAGayAUSxsgACgCGBtrSw0AGkEAIAgoAAAgCiAWIBAgCiAVSSIKG2oiBigAAEcNABogBUEFaiAGQQRqIAkgGiAJIAobIBgQD0EEagshBCAMQf+T69wDNgIMAkACQAJ/AkACQAJAIBxBAWsOAgECAAsCQAJAAkAgEUEFaw4CAQIACyAAIAUgCSAMQQxqEGoMBAsgACAFIAkgDEEMahBpDAMLIAAgBSAJIAxBDGoQaAwCCwJAAkACQCARQQVrDgIBAgALIAAgBSAJIAxBDGoQZwwDCyAAIAUgCSAMQQxqEGYMAgsgACAFIAkgDEEMahBlDAELAkACQAJAIBFBBWsOAgECAAsgACAFIAkgDEEMahBkDAILIAAgBSAJIAxBDGoQYwwBCyAAIAUgCSAMQQxqEGILIgsgBCAEIAtJIgQbIgtBBE8EQCAFIAggBBshCiAMKAIMQQEgBBshBAJAIAUgE08NAANAIAdBAWohDyAFQQFqIQYCQCAERQRAQQAhBAwBCyAbIA8gDmsiEmtBA0kNACAOIA8gACgCECIIIA8gFGsgCCAPIAhrIBRLGyAAKAIYG2tLDQAgBigAACASIBYgECASIBVJIhIbaiIIKAAARw0AIAVBBWogCEEEaiAJIBogCSASGyAYEA8iCEF7Sw0AIARnIAtBA2xqQR5rIAhBBGoiCEEDbE4NAEEBIQQgBiEKIAghCwsgDEH/k+vcAzYCCAJ/AkACfwJAAkACQCAcQQFrDgIBAgALAkACQAJAIBFBBWsOAgECAAsgACAGIAkgDEEIahBqDAQLIAAgBiAJIAxBCGoQaQwDCyAAIAYgCSAMQQhqEGgMAgsCQAJAAkAgEUEFaw4CAQIACyAAIAYgCSAMQQhqEGcMAwsgACAGIAkgDEEIahBmDAILIAAgBiAJIAxBCGoQZQwBCwJAAkACQCARQQVrDgIBAgALIAAgBiAJIAxBCGoQZAwCCyAAIAYgCSAMQQhqEGMMAQsgACAGIAkgDEEIahBiCyISQQRJDQAgDCgCCCIIZyASQQJ0akEfayAEZyALQQJ0akEba0wNACAPIQcgBiEFIBIhCyAIDAELIAYgE08NAiAHQQJqIQcgBUECaiEGAkAgBEUEQEEAIQQMAQsgGyAHIA5rIg9rQQNJDQAgDiAHIAAoAhAiCCAHIBRrIAggByAIayAUSxsgACgCGBtrSw0AIAYoAAAgDyAWIBAgDyAVSSIPG2oiCCgAAEcNACAFQQZqIAhBBGogCSAaIAkgDxsgGBAPIgVBe0sNACAEZyALQQJ0akEeayAFQQRqIgVBAnRODQBBASEEIAYhCiAFIQsLIAxB/5Pr3AM2AgQCfwJAAkACQCAcQQFrDgIBAgALAkACQAJAIBFBBWsOAgECAAsgACAGIAkgDEEEahBqDAQLIAAgBiAJIAxBBGoQaQwDCyAAIAYgCSAMQQRqEGgMAgsCQAJAAkAgEUEFaw4CAQIACyAAIAYgCSAMQQRqEGcMAwsgACAGIAkgDEEEahBmDAILIAAgBiAJIAxBBGoQZQwBCwJAAkACQCARQQVrDgIBAgALIAAgBiAJIAxBBGoQZAwCCyAAIAYgCSAMQQRqEGMMAQsgACAGIAkgDEEEahBiCyIIQQRJDQIgDCgCBCIPZyAIQQJ0akEfayAEZyALQQJ0akEYa0wNAiAGIQUgCCELIA8LIQQgBSEKIAUgE0kNAAsLAn8gBEEESQRAIA4hCCANDAELIARBA2shCAJAIAMgCk8NACAWIBAgCiAEIBBqa0EDaiIFIBVJIgYbIAVqIgUgICAYIAYbIg1NDQADQCAKQQFrIgYtAAAgBUEBayIFLQAARw0BIAtBAWohCyADIAZJBEAgBiEKIAUgDUsNAQsLIAYhCgsgDgshBiAKIANrIQ8gASgCDCEFAkACQCAKIBlNBEAgAykAACEiIAUgAykACDcACCAFICI3AAAgASgCDCENIA9BEE0EQCABIA0gD2o2AgwgASgCBCEFDAMLIAMpABAhIiANIAMpABg3ABggDSAiNwAQIA9BIUgNASANIA9qIQ4gA0EQaiEFIA1BIGohAwNAIAUpABAhIiADIAUpABg3AAggAyAiNwAAIAUpACAhIiADIAUpACg3ABggAyAiNwAQIAVBIGohBSADQSBqIgMgDkkNAAsMAQsgAyAZTQRAIAMpAAAhIiAFIAMpAAg3AAggBSAiNwAAIAUgGSADayINaiEOIA1BEU4EQCAFQRBqIQUDQCADKQAQISIgBSADKQAYNwAIIAUgIjcAACADKQAgISIgBSADKQAoNwAYIAUgIjcAECADQSBqIQMgBUEgaiIFIA5JDQALCyAOIQUgGSEDCyADIApPDQBBACEOIAMhByAKIANrQQdxIg0EQANAIAUgBy0AADoAACAFQQFqIQUgB0EBaiEHIA5BAWoiDiANRw0ACwsgAyAKa0F4Sw0AA0AgBSAHLQAAOgAAIAUgBy0AAToAASAFIActAAI6AAIgBSAHLQADOgADIAUgBy0ABDoABCAFIActAAU6AAUgBSAHLQAGOgAGIAUgBy0ABzoAByAFQQhqIQUgB0EIaiIHIApHDQALCyABIAEoAgwgD2o2AgwgASgCBCEFIA9BgIAESQ0AIAFBATYCJCABIAUgASgCAGtBA3U2AigLIAUgBDYCACAFIA87AQQgC0EDayIDQYCABE8EQCABQQI2AiQgASAFIAEoAgBrQQN1NgIoCyAFIAM7AQYgASAFQQhqIgQ2AgQgCiALaiEDIAAoAtwBBEAgACgCHCIFIAVBCCAfIAUgEGoiCmsiDiAOQQhPG0EAIAogE00baiINSQRAQRggACgCJCIOayEKQTggDmutISMgACkDUCIipyEOA0AgBSAQaiELIAAgBUEHcUECdGoCfwJAAkACQCAXQQVrDgIBAgALIAsoAABBsfPd8XlsIA5zIAp2DAILIAspAABCgICA2Mub741PfiAihSAjiKcMAQsgCykAAEKAgOz8y5vvjU9+ICKFICOIpws2AiwgBUEBaiIFIA1HDQALCyAAQQA2AtwBCyAGIQ0gCCEOIBMgAyIFSQ0CA0AgBiEOIAghBiAbIAMgEGsiCCAOayIKa0EDSQ0CIA4gCCAAKAIQIgUgCCAUayAFIAggBWsgFEsbIAAoAhgba0sNAiADKAAAIBYgECAKIBVJIg0bIApqIgUoAABHDQIgBUEEaiIKIQcgA0EEaiIIIQUgCgJ/AkAgCCAaIAkgDRsiEiAKa2oiDSAJIAkgDUsbIh5BA2siDyAITQ0AIAgoAAAiCyAKKAAAIg1HBEAgCyANc2hBA3YMAgsDQCAHQQRqIQcgBUEEaiIFIA9PDQEgBSgAACILIAcoAAAiDUYNAAsgBSALIA1zaEEDdmogCGsMAQsCQCAFIB5BAWtPDQAgBy8AACAFLwAARw0AIAdBAmohByAFQQJqIQULIAUgHkkEfyAFIActAAAgBS0AAEZqBSAFCyAIawsiC2ogEkYEQCAYIQcgCCALaiIKIQUCfwJAIAogHU8NACAKKAAAIg0gBygAACIIRwRAIAggDXNoQQN2DAILA0AgB0EEaiEHIAVBBGoiBSAdTw0BIAUoAAAiDSAHKAAAIghGDQALIAUgCCANc2hBA3ZqIAprDAELAkAgBSAhTw0AIAcvAAAgBS8AAEcNACAHQQJqIQcgBUECaiEFCyAFIAlJBH8gBSAHLQAAIAUtAABGagUgBQsgCmsLIAtqIQsLIAMgGU0EQCADKQAAISIgASgCDCIEIAMpAAg3AAggBCAiNwAAIAEoAgQhBAsgBEEBNgIAIARBADsBBCALQQFqIgVBgIAETwRAIAFBAjYCJCABIAQgASgCAGtBA3U2AigLIAQgBTsBBiABIARBCGoiBDYCBCAOIQggBiENIAtBBGogA2oiAyEFIAMgE00NAAsMAgsgACAFIANrIgRB/xFLNgLcASAEQQh2IAVqQQFqIQUMAQsgDiENIAYhDiADIQULIAUgE0kNAAsLIAIgDTYCBCACIA42AgAgDEEQaiQAIAkgA2sLmRoCHX8CfiMAQRBrIg4kACACKAIEIQwgAigCACELIABBADYC3AEgACgCxAEhD0EEQQYgACgCyAEiCSAJQQZPGyIJIAlBBE0bIRUgAyAAKAIEIhAgACgCDCISaiIYIANGaiEFAkAgACgCHCIGIAZBCCADIARqIgpBD2siHyAGIBBqIgRrIgkgCUEITxtBACAEIApBEGsiEU0baiIETw0AQRggACgCJCIHayEJQTggB2utISIgACkDUCIjpyEHIA9BBE0EQCAVQQVrIQ0DQCAGIBBqIQggACAGQQdxQQJ0agJ/AkACQAJAIA0OAgABAgsgCCkAAEKAgIDYy5vvjU9+ICOFICKIpwwCCyAIKQAAQoCA7PzLm++NT34gI4UgIoinDAELIAgoAABBsfPd8XlsIAdzIAl2CzYCLCAGQQFqIgYgBEcNAAsMAQsgD0EFRgRAIBVBBWshDQNAIAYgEGohCCAAIAZBB3FBAnRqAn8CQAJAAkAgDQ4CAAECCyAIKQAAQoCAgNjLm++NT34gI4UgIoinDAILIAgpAABCgIDs/Mub741PfiAjhSAiiKcMAQsgCCgAAEGx893xeWwgB3MgCXYLNgIsIAZBAWoiBiAERw0ACwwBCyAVQQVrIQ0DQCAGIBBqIQggACAGQQdxQQJ0agJ/AkACQAJAIA0OAgECAAsgCCgAAEGx893xeWwgB3MgCXYMAgsgCCkAAEKAgIDYy5vvjU9+ICOFICKIpwwBCyAIKQAAQoCA7PzLm++NT34gI4UgIoinCzYCLCAGQQFqIgYgBEcNAAsLIAUgEUkEQEEEQQYgDyAPQQZPGyIEIARBBE0bIRMgACgCCCIWIAAoAhBqISAgEiAWaiEZIApBAWshISAKQQNrIR0gCkEgayEXIBJBAWshGkEBIAAoArgBdCEUIBVBBGshHgNAIAVBAWohDQJ/QQAgGiAFIBBrIgZBAWoiCSALayIHa0EDSQ0AGkEAIAsgCSAAKAIQIgggCSAUayAIIAkgCGsgFEsbIAAoAhgba0sNABpBACANKAAAIBYgECAHIBJJIgkbIAdqIgcoAABHDQAaIAVBBWogB0EEaiAKIBkgCiAJGyAYEA9BBGoLIQQgDkH/k+vcAzYCDAJAAkACfwJAAkACQCAeQQFrDgIBAgALAkACQAJAIBNBBWsOAgECAAsgACAFIAogDkEMahBqDAQLIAAgBSAKIA5BDGoQaQwDCyAAIAUgCiAOQQxqEGgMAgsCQAJAAkAgE0EFaw4CAQIACyAAIAUgCiAOQQxqEGcMAwsgACAFIAogDkEMahBmDAILIAAgBSAKIA5BDGoQZQwBCwJAAkACQCATQQVrDgIBAgALIAAgBSAKIA5BDGoQZAwCCyAAIAUgCiAOQQxqEGMMAQsgACAFIAogDkEMahBiCyIIIAQgBCAISSIIGyIHQQRPBEAgBSANIAgbIgkhBCAOKAIMQQEgCBsiDSEPIAchCAJAIAUgEU8NAANAIAZBAWohBiAFQQFqIQQCQCANRQRAQQAhDQwBCyAaIAYgC2siCGtBA0kNACALIAYgACgCECIPIAYgFGsgDyAGIA9rIBRLGyAAKAIYG2tLDQAgBCgAACAIIBYgECAIIBJJIggbaiIPKAAARw0AIAVBBWogD0EEaiAKIBkgCiAIGyAYEA8iBUF7Sw0AIA1nIAdBA2xqQR5rIAVBBGoiBUEDbE4NAEEBIQ0gBCEJIAUhBwsgDkH/k+vcAzYCCAJAAn8CQAJAAkAgHkEBaw4CAQIACwJAAkACQCATQQVrDgIBAgALIAAgBCAKIA5BCGoQagwECyAAIAQgCiAOQQhqEGkMAwsgACAEIAogDkEIahBoDAILAkACQAJAIBNBBWsOAgECAAsgACAEIAogDkEIahBnDAMLIAAgBCAKIA5BCGoQZgwCCyAAIAQgCiAOQQhqEGUMAQsCQAJAAkAgE0EFaw4CAQIACyAAIAQgCiAOQQhqEGQMAgsgACAEIAogDkEIahBjDAELIAAgBCAKIA5BCGoQYgsiCEEESQ0AIA4oAggiD2cgCEECdGpBH2sgDWcgB0ECdGpBG2tMDQAgCCEHIA8hDSAEIgUhCSAFIBFJDQEMAgsLIAkhBCANIQ8gByEICwJ/IA9BBEkEQCALIQcgDAwBCyAPQQNrIQcCQCADIARPDQAgFiAQIAQgDyAQamtBA2oiCSASSSIMGyAJaiIFICAgGCAMGyIMTQ0AA0AgBEEBayIJLQAAIAVBAWsiBS0AAEcNASAIQQFqIQggAyAJSQRAIAkhBCAFIAxLDQELCyAJIQQLIAsLIQkgBCADayEMIAEoAgwhBQJAAkAgBCAXTQRAIAMpAAAhIiAFIAMpAAg3AAggBSAiNwAAIAEoAgwhCyAMQRBNBEAgASALIAxqNgIMIAEoAgQhBQwDCyADKQAQISIgCyADKQAYNwAYIAsgIjcAECAMQSFIDQEgCyAMaiEGIANBEGohBSALQSBqIQMDQCAFKQAQISIgAyAFKQAYNwAIIAMgIjcAACAFKQAgISIgAyAFKQAoNwAYIAMgIjcAECAFQSBqIQUgA0EgaiIDIAZJDQALDAELIAMgF00EQCADKQAAISIgBSADKQAINwAIIAUgIjcAACAFIBcgA2siBmohCyAGQRFOBEAgBUEQaiEFA0AgAykAECEiIAUgAykAGDcACCAFICI3AAAgAykAICEiIAUgAykAKDcAGCAFICI3ABAgA0EgaiEDIAVBIGoiBSALSQ0ACwsgCyEFIBchAwsgAyAETw0AQQAhCyADIQYgBCADa0EHcSINBEADQCAFIAYtAAA6AAAgBUEBaiEFIAZBAWohBiALQQFqIgsgDUcNAAsLIAMgBGtBeEsNAANAIAUgBi0AADoAACAFIAYtAAE6AAEgBSAGLQACOgACIAUgBi0AAzoAAyAFIAYtAAQ6AAQgBSAGLQAFOgAFIAUgBi0ABjoABiAFIAYtAAc6AAcgBUEIaiEFIAZBCGoiBiAERw0ACwsgASABKAIMIAxqNgIMIAEoAgQhBSAMQYCABEkNACABQQE2AiQgASAFIAEoAgBrQQN1NgIoCyAFIA82AgAgBSAMOwEEIAhBA2siA0GAgARPBEAgAUECNgIkIAEgBSABKAIAa0EDdTYCKAsgBSADOwEGIAEgBUEIaiINNgIEIAQgCGohAyAAKALcAQRAIAAoAhwiBSAFQQggHyAFIBBqIgRrIgsgC0EITxtBACAEIBFNG2oiC0kEQEEYIAAoAiQiBGshDEE4IARrrSEiIAApA1AiI6chCANAIAUgEGohBCAAIAVBB3FBAnRqAn8CQAJAAkAgFUEFaw4CAQIACyAEKAAAQbHz3fF5bCAIcyAMdgwCCyAEKQAAQoCAgNjLm++NT34gI4UgIoinDAELIAQpAABCgIDs/Mub741PfiAjhSAiiKcLNgIsIAVBAWoiBSALRw0ACwsgAEEANgLcAQsgCSEMIAchCyARIAMiBUkNAgNAIAkhCyAHIQkgGiADIBBrIgQgC2siB2tBA0kNAiALIAQgACgCECIFIAQgFGsgBSAEIAVrIBRLGyAAKAIYG2tLDQIgAygAACAWIBAgByASSSIEGyAHaiIHKAAARw0CIAdBBGoiDCEGIANBBGoiByEFIAwCfwJAIAcgGSAKIAQbIgggDGtqIgQgCiAEIApJGyIEQQNrIg8gB00NACAHKAAAIhsgDCgAACIcRwRAIBsgHHNoQQN2DAILA0AgBkEEaiEGIAVBBGoiBSAPTw0BIAUoAAAiGyAGKAAAIhxGDQALIAUgGyAcc2hBA3ZqIAdrDAELAkAgBSAEQQFrTw0AIAYvAAAgBS8AAEcNACAGQQJqIQYgBUECaiEFCyAEIAVLBH8gBSAGLQAAIAUtAABGagUgBQsgB2sLIgRqIAhGBEAgGCEGIAQgB2oiByEFAn8CQCAHIB1PDQAgBygAACIMIAYoAAAiCEcEQCAIIAxzaEEDdgwCCwNAIAZBBGohBiAFQQRqIgUgHU8NASAFKAAAIgwgBigAACIIRg0ACyAFIAggDHNoQQN2aiAHawwBCwJAIAUgIU8NACAGLwAAIAUvAABHDQAgBkECaiEGIAVBAmohBQsgBSAKSQR/IAUgBi0AACAFLQAARmoFIAULIAdrCyAEaiEECyADIBdNBEAgAykAACEiIAEoAgwiByADKQAINwAIIAcgIjcAACABKAIEIQ0LIA1BATYCACANQQA7AQQgBEEBaiIHQYCABE8EQCABQQI2AiQgASANIAEoAgBrQQN1NgIoCyANIAc7AQYgASANQQhqIg02AgQgCyEHIAkhDCAEQQRqIANqIgMhBSADIBFNDQALDAILIAAgBSADayIEQf8RSzYC3AEgBEEIdiAFakEBaiEFDAELIAshDCAJIQsgAyEFCyAFIBFJDQALCyACIAw2AgQgAiALNgIAIA5BEGokACAKIANrC5YWAh1/An4jAEEQayIPJAAgAigCBCEGIAIoAgAhCiAAQQA2AtwBIAAoAsQBIQlBBEEGIAAoAsgBIgUgBUEGTxsiBSAFQQRNGyEOIAMgACgCBCIQIAAoAgwiEmoiFiADRmohBQJAIAAoAhwiCCAIQQggAyAEaiINQQ9rIhwgCCAQaiIHayIEIARBCE8bQQAgByANQRBrIhNNG2oiC08NAEEYIAAoAiQiBGshDEE4IARrrSEjIAApA1AiIqchESAJQQRNBEAgDkEFayEEA0AgCCAQaiEHIAAgCEEHcUECdGoCfwJAAkACQCAEDgIAAQILIAcpAABCgICA2Mub741PfiAihSAjiKcMAgsgBykAAEKAgOz8y5vvjU9+ICKFICOIpwwBCyAHKAAAQbHz3fF5bCARcyAMdgs2AiwgCEEBaiIIIAtHDQALDAELIAlBBUYEQCAOQQVrIQQDQCAIIBBqIQcgACAIQQdxQQJ0agJ/AkACQAJAIAQOAgABAgsgBykAAEKAgIDYy5vvjU9+ICKFICOIpwwCCyAHKQAAQoCA7PzLm++NT34gIoUgI4inDAELIAcoAABBsfPd8XlsIBFzIAx2CzYCLCAIQQFqIgggC0cNAAsMAQsgDkEFayEEA0AgCCAQaiEHIAAgCEEHcUECdGoCfwJAAkACQCAEDgIBAgALIAcoAABBsfPd8XlsIBFzIAx2DAILIAcpAABCgICA2Mub741PfiAihSAjiKcMAQsgBykAAEKAgOz8y5vvjU9+ICKFICOIpws2AiwgCEEBaiIIIAtHDQALCyAFIBNJBEBBBEEGIAkgCUEGTxsiBCAEQQRNGyEXIAAoAggiFCAAKAIQaiEdIBIgFGohGCANQQFrIR4gDUEDayEZIA1BIGshESASQQFrIRpBASAAKAK4AXQhFSAOQQVrIR8gDkEEayEgA0ACQAJ/AkACQAJAIBogBSAQa0EBaiIJIAprIgdrQQNJDQAgCiAJIAAoAhAiBCAJIBVrIAQgCSAEayAVSxsgACgCGBtrSw0AIAVBAWoiBCgAACAUIBAgByASSSIJGyAHaiIHKAAARw0AIAVBBWogB0EEaiANIBggDSAJGyAWEA9BBGohDkEBIQwMAQsgD0H/k+vcAzYCDAJ/AkACQAJAICBBAWsOAgECAAsCQAJAAkAgF0EFaw4CAQIACyAAIAUgDSAPQQxqEGoMBAsgACAFIA0gD0EMahBpDAMLIAAgBSANIA9BDGoQaAwCCwJAAkACQCAXQQVrDgIBAgALIAAgBSANIA9BDGoQZwwDCyAAIAUgDSAPQQxqEGYMAgsgACAFIA0gD0EMahBlDAELAkACQAJAIBdBBWsOAgECAAsgACAFIA0gD0EMahBkDAILIAAgBSANIA9BDGoQYwwBCyAAIAUgDSAPQQxqEGILIg5BA00EQCAAIAUgA2siBEH/EUs2AtwBIARBCHYgBWpBAWohBQwECyAPKAIMIgxBBE8NASAFIQQLIAohCSAGDAELIAxBA2shCQJAAkAgAyAFTw0AIBQgECAFIAwgEGprQQNqIgcgEkkiBBsgB2oiBiAdIBYgBBsiB00NAANAIAVBAWsiBC0AACAGQQFrIgYtAABHDQEgDkEBaiEOIAMgBE8NAiAEIQUgBiAHSw0ACwwBCyAFIQQLIAoLIQcgBCADayELIAEoAgwhBQJAAkAgBCARTQRAIAMpAAAhIiAFIAMpAAg3AAggBSAiNwAAIAEoAgwhBiALQRBNBEAgASAGIAtqNgIMIAEoAgQhBQwDCyADKQAQISIgBiADKQAYNwAYIAYgIjcAECALQSFIDQEgBiALaiEKIANBEGohBSAGQSBqIQMDQCAFKQAQISIgAyAFKQAYNwAIIAMgIjcAACAFKQAgISIgAyAFKQAoNwAYIAMgIjcAECAFQSBqIQUgA0EgaiIDIApJDQALDAELIAMgEU0EQCADKQAAISIgBSADKQAINwAIIAUgIjcAACAFIBEgA2siBmohCiAGQRFOBEAgBUEQaiEFA0AgAykAECEiIAUgAykAGDcACCAFICI3AAAgAykAICEiIAUgAykAKDcAGCAFICI3ABAgA0EgaiEDIAVBIGoiBSAKSQ0ACwsgCiEFIBEhAwsgAyAETw0AQQAhCCADIQYgBCADa0EHcSIKBEADQCAFIAYtAAA6AAAgBUEBaiEFIAZBAWohBiAIQQFqIgggCkcNAAsLIAMgBGtBeEsNAANAIAUgBi0AADoAACAFIAYtAAE6AAEgBSAGLQACOgACIAUgBi0AAzoAAyAFIAYtAAQ6AAQgBSAGLQAFOgAFIAUgBi0ABjoABiAFIAYtAAc6AAcgBUEIaiEFIAZBCGoiBiAERw0ACwsgASABKAIMIAtqNgIMIAEoAgQhBSALQYCABEkNACABQQE2AiQgASAFIAEoAgBrQQN1NgIoCyAFIAw2AgAgBSALOwEEIA5BA2siA0GAgARPBEAgAUECNgIkIAEgBSABKAIAa0EDdTYCKAsgBSADOwEGIAEgBUEIaiIINgIEIAQgDmohAyAAKALcAQRAIAAoAhwiBSAFQQggHCAFIBBqIgprIgQgBEEITxtBACAKIBNNG2oiDEkEQEEYIAAoAiQiBGshCkE4IARrrSEjIAApA1AiIqchBANAIAUgEGohBiAAIAVBB3FBAnRqAn8CQAJAAkAgHw4CAQIACyAGKAAAQbHz3fF5bCAEcyAKdgwCCyAGKQAAQoCAgNjLm++NT34gIoUgI4inDAELIAYpAABCgIDs/Mub741PfiAihSAjiKcLNgIsIAVBAWoiBSAMRw0ACwsgAEEANgLcAQsgByEGIAkhCiATIAMiBUkNAANAAkAgByEKIAkhByAaIAMgEGsiBiAKayIFa0EDSQ0AIAogBiAAKAIQIgQgBiAVayAEIAYgBGsgFUsbIAAoAhgba0sNACADKAAAIBQgECAFIBJJIgsbIAVqIgQoAABHDQAgBEEEaiIJIQYgA0EEaiIMIQUgCQJ/AkAgDCAYIA0gCxsiISAJa2oiBCANIAQgDUkbIhtBA2siDiAMTQ0AIAwoAAAiCyAJKAAAIgRHBEAgBCALc2hBA3YMAgsDQCAGQQRqIQYgBUEEaiIFIA5PDQEgBSgAACILIAYoAAAiBEYNAAsgBSAEIAtzaEEDdmogDGsMAQsCQCAFIBtBAWtPDQAgBi8AACAFLwAARw0AIAZBAmohBiAFQQJqIQULIAUgG0kEfyAFIAYtAAAgBS0AAEZqBSAFCyAMawsiBGogIUYEQCAWIQYgBCAMaiIJIQUCfwJAIAkgGU8NACAJKAAAIgsgBigAACIMRwRAIAsgDHNoQQN2DAILA0AgBkEEaiEGIAVBBGoiBSAZTw0BIAUoAAAiCyAGKAAAIgxGDQALIAUgCyAMc2hBA3ZqIAlrDAELAkAgBSAeTw0AIAYvAAAgBS8AAEcNACAGQQJqIQYgBUECaiEFCyAFIA1JBH8gBSAGLQAAIAUtAABGagUgBQsgCWsLIARqIQQLIAMgEU0EQCADKQAAISIgASgCDCIFIAMpAAg3AAggBSAiNwAAIAEoAgQhCAsgCEEBNgIAIAhBADsBBCAEQQFqIgVBgIAETwRAIAFBAjYCJCABIAggASgCAGtBA3U2AigLIAggBTsBBiABIAhBCGoiCDYCBCAKIQkgByEGIARBBGogA2oiAyEFIAMgE00NAQwCCwsgCiEGIAchCiADIQULIAUgE0kNAAsLIAIgBjYCBCACIAo2AgAgD0EQaiQAIA0gA2sLxRQCGn8BfiMAQRBrIg8kACACKAIEIQ4gAigCACELIABBADYC3AEgAyAAKAIEIhEgACgCDCITaiIWIANGaiIFIAMgBGoiDEEIayIUSQRAIAAoAggiFSAAKAIQaiEdIBMgFWohGCAMQQFrIR4gDEEDayEcIAxBIGshFyATQQFrIRlBASAAKAK4AXQhEkEEQQYgACgCyAEiBCAEQQZPGyIEIARBBE0bQQRrIRoDQCAFQQFqIQZBACEKAkAgGSAFIBFrIgRBAWoiByALayIIa0EDSQ0AIAsgByAAKAIQIgkgByASayAJIAcgCWsgEksbIAAoAhgba0sNACAGKAAAIBUgESAIIBNJIgcbIAhqIggoAABHDQAgBUEFaiAIQQRqIAwgGCAMIAcbIBYQD0EEaiEKCyAPQf+T69wDNgIMAkACQAJ/AkACQAJAIBpBAWsOAgECAAsgACAFIAwgD0EMahD4AQwCCyAAIAUgDCAPQQxqEPcBDAELIAAgBSAMIA9BDGoQ9gELIgkgCiAJIApLIgcbIglBBE8EQCAFIAYgBxshBiAPKAIMQQEgBxshCgJAIAUgFE8NAANAIARBAWohCCAFQQFqIQcCQCAKRQRAQQAhCgwBCyAZIAggC2siDWtBA0kNACALIAggACgCECIQIAggEmsgECAIIBBrIBJLGyAAKAIYG2tLDQAgBygAACANIBUgESANIBNJIg0baiIQKAAARw0AIAVBBWogEEEEaiAMIBggDCANGyAWEA8iDUF7Sw0AIApnIAlBA2xqQR5rIA1BBGoiDUEDbE4NAEEBIQogByEGIA0hCQsgD0H/k+vcAzYCCAJ/AkACfwJAAkACQCAaQQFrDgIBAgALIAAgByAMIA9BCGoQ+AEMAgsgACAHIAwgD0EIahD3AQwBCyAAIAcgDCAPQQhqEPYBCyINQQRJDQAgDygCCCIQZyANQQJ0akEfayAKZyAJQQJ0akEba0wNACAIIQQgECEKIA0hCSAHDAELIAcgFE8NAiAEQQJqIQQgBUECaiEHAkAgCkUEQEEAIQoMAQsgGSAEIAtrIghrQQNJDQAgCyAEIAAoAhAiDSAEIBJrIA0gBCANayASSxsgACgCGBtrSw0AIAcoAAAgCCAVIBEgCCATSSIIG2oiDSgAAEcNACAFQQZqIA1BBGogDCAYIAwgCBsgFhAPIgVBe0sNACAKZyAJQQJ0akEeayAFQQRqIgVBAnRODQBBASEKIAchBiAFIQkLIA9B/5Pr3AM2AgQCfwJAAkACQCAaQQFrDgIBAgALIAAgByAMIA9BBGoQ+AEMAgsgACAHIAwgD0EEahD3AQwBCyAAIAcgDCAPQQRqEPYBCyIIQQRJDQIgDygCBCINZyAIQQJ0akEfayAKZyAJQQJ0akEYa0wNAiANIQogCCEJIAcLIgUhBiAFIBRJDQALCwJ/IApBBEkEQCALIQggDgwBCyAKQQNrIQgCQCADIAZPDQAgFSARIAYgCiARamtBA2oiBCATSSIHGyAEaiIFIB0gFiAHGyIHTQ0AA0AgBkEBayIELQAAIAVBAWsiBS0AAEcNASAJQQFqIQkgAyAESQRAIAQhBiAFIAdLDQELCyAEIQYLIAsLIQcgBiADayEOIAEoAgwhBQJAAkAgBiAXTQRAIAMpAAAhHyAFIAMpAAg3AAggBSAfNwAAIAEoAgwhBCAOQRBNBEAgASAEIA5qNgIMIAEoAgQhBQwDCyADKQAQIR8gBCADKQAYNwAYIAQgHzcAECAOQSFIDQEgBCAOaiELIANBEGohBSAEQSBqIQMDQCAFKQAQIR8gAyAFKQAYNwAIIAMgHzcAACAFKQAgIR8gAyAFKQAoNwAYIAMgHzcAECAFQSBqIQUgA0EgaiIDIAtJDQALDAELIAMgF00EQCADKQAAIR8gBSADKQAINwAIIAUgHzcAACAFIBcgA2siC2ohBCALQRFOBEAgBUEQaiEFA0AgAykAECEfIAUgAykAGDcACCAFIB83AAAgAykAICEfIAUgAykAKDcAGCAFIB83ABAgA0EgaiEDIAVBIGoiBSAESQ0ACwsgBCEFIBchAwsgAyAGTw0AQQAhCyAGIAMiBGtBB3EiDQRAA0AgBSAELQAAOgAAIAVBAWohBSAEQQFqIQQgC0EBaiILIA1HDQALCyADIAZrQXhLDQADQCAFIAQtAAA6AAAgBSAELQABOgABIAUgBC0AAjoAAiAFIAQtAAM6AAMgBSAELQAEOgAEIAUgBC0ABToABSAFIAQtAAY6AAYgBSAELQAHOgAHIAVBCGohBSAEQQhqIgQgBkcNAAsLIAEgASgCDCAOajYCDCABKAIEIQUgDkGAgARJDQAgAUEBNgIkIAEgBSABKAIAa0EDdTYCKAsgBSAKNgIAIAUgDjsBBCAJQQNrIgNBgIAETwRAIAFBAjYCJCABIAUgASgCAGtBA3U2AigLIAUgAzsBBiABIAVBCGoiCjYCBCAGIAlqIQMgACgC3AEEQCAAQQA2AtwBCyAHIQ4gCCELIBQgAyIFSQ0CA0AgByELIAghByAZIAMgEWsiBCALayIFa0EDSQ0CIAsgBCAAKAIQIgYgBCASayAGIAQgBmsgEksbIAAoAhgba0sNAiADKAAAIBUgESAFIBNJIgkbIAVqIgQoAABHDQIgBEEEaiIIIQQgA0EEaiIGIQUgCAJ/AkAgBiAYIAwgCRsiDiAIa2oiCSAMIAkgDEkbIglBA2siDSAGTQ0AIAYoAAAiECAIKAAAIhtHBEAgECAbc2hBA3YMAgsDQCAEQQRqIQQgBUEEaiIFIA1PDQEgBSgAACIQIAQoAAAiG0YNAAsgBSAQIBtzaEEDdmogBmsMAQsCQCAFIAlBAWtPDQAgBC8AACAFLwAARw0AIARBAmohBCAFQQJqIQULIAUgCUkEfyAFIAQtAAAgBS0AAEZqBSAFCyAGawsiCWogDkYEQCAWIQQgBiAJaiIGIQUCfwJAIAYgHE8NACAGKAAAIgggBCgAACIORwRAIAggDnNoQQN2DAILA0AgBEEEaiEEIAVBBGoiBSAcTw0BIAUoAAAiCCAEKAAAIg5GDQALIAUgCCAOc2hBA3ZqIAZrDAELAkAgBSAeTw0AIAQvAAAgBS8AAEcNACAEQQJqIQQgBUECaiEFCyAFIAxJBH8gBSAELQAAIAUtAABGagUgBQsgBmsLIAlqIQkLIAMgF00EQCADKQAAIR8gASgCDCIEIAMpAAg3AAggBCAfNwAAIAEoAgQhCgsgCkEBNgIAIApBADsBBCAJQQFqIgRBgIAETwRAIAFBAjYCJCABIAogASgCAGtBA3U2AigLIAogBDsBBiABIApBCGoiCjYCBCALIQggByEOIAlBBGogA2oiAyEFIAMgFE0NAAsMAgsgACAFIANrIgRB/xFLNgLcASAEQQh2IAVqQQFqIQUMAQsgCyEOIAchCyADIQULIAUgFEkNAAsLIAIgDjYCBCACIAs2AgAgD0EQaiQAIAwgA2sLvBQCGn8BfiMAQRBrIg8kACACKAIEIQ4gAigCACELIABBADYC3AEgAyAAKAIEIhEgACgCDCITaiIWIANGaiIFIAMgBGoiDEEIayIUSQRAIAAoAggiFSAAKAIQaiEdIBMgFWohGCAMQQFrIR4gDEEDayEcIAxBIGshFyATQQFrIRlBASAAKAK4AXQhEkEEQQYgACgCyAEiBCAEQQZPGyIEIARBBE0bQQRrIRoDQCAFQQFqIQZBACEKAkAgGSAFIBFrIgRBAWoiByALayIIa0EDSQ0AIAsgByAAKAIQIgkgByASayAJIAcgCWsgEksbIAAoAhgba0sNACAGKAAAIBUgESAIIBNJIgcbIAhqIggoAABHDQAgBUEFaiAIQQRqIAwgGCAMIAcbIBYQD0EEaiEKCyAPQf+T69wDNgIMAkACQAJ/AkACQAJAIBpBAWsOAgECAAsgACAFIAwgD0EMahBtDAILIAAgBSAMIA9BDGoQbAwBCyAAIAUgDCAPQQxqEGsLIgkgCiAJIApLIgcbIglBBE8EQCAFIAYgBxshBiAPKAIMQQEgBxshCgJAIAUgFE8NAANAIARBAWohCCAFQQFqIQcCQCAKRQRAQQAhCgwBCyAZIAggC2siDWtBA0kNACALIAggACgCECIQIAggEmsgECAIIBBrIBJLGyAAKAIYG2tLDQAgBygAACANIBUgESANIBNJIg0baiIQKAAARw0AIAVBBWogEEEEaiAMIBggDCANGyAWEA8iDUF7Sw0AIApnIAlBA2xqQR5rIA1BBGoiDUEDbE4NAEEBIQogByEGIA0hCQsgD0H/k+vcAzYCCAJ/AkACfwJAAkACQCAaQQFrDgIBAgALIAAgByAMIA9BCGoQbQwCCyAAIAcgDCAPQQhqEGwMAQsgACAHIAwgD0EIahBrCyINQQRJDQAgDygCCCIQZyANQQJ0akEfayAKZyAJQQJ0akEba0wNACAIIQQgECEKIA0hCSAHDAELIAcgFE8NAiAEQQJqIQQgBUECaiEHAkAgCkUEQEEAIQoMAQsgGSAEIAtrIghrQQNJDQAgCyAEIAAoAhAiDSAEIBJrIA0gBCANayASSxsgACgCGBtrSw0AIAcoAAAgCCAVIBEgCCATSSIIG2oiDSgAAEcNACAFQQZqIA1BBGogDCAYIAwgCBsgFhAPIgVBe0sNACAKZyAJQQJ0akEeayAFQQRqIgVBAnRODQBBASEKIAchBiAFIQkLIA9B/5Pr3AM2AgQCfwJAAkACQCAaQQFrDgIBAgALIAAgByAMIA9BBGoQbQwCCyAAIAcgDCAPQQRqEGwMAQsgACAHIAwgD0EEahBrCyIIQQRJDQIgDygCBCINZyAIQQJ0akEfayAKZyAJQQJ0akEYa0wNAiANIQogCCEJIAcLIgUhBiAFIBRJDQALCwJ/IApBBEkEQCALIQggDgwBCyAKQQNrIQgCQCADIAZPDQAgFSARIAYgCiARamtBA2oiBCATSSIHGyAEaiIFIB0gFiAHGyIHTQ0AA0AgBkEBayIELQAAIAVBAWsiBS0AAEcNASAJQQFqIQkgAyAESQRAIAQhBiAFIAdLDQELCyAEIQYLIAsLIQcgBiADayEOIAEoAgwhBQJAAkAgBiAXTQRAIAMpAAAhHyAFIAMpAAg3AAggBSAfNwAAIAEoAgwhBCAOQRBNBEAgASAEIA5qNgIMIAEoAgQhBQwDCyADKQAQIR8gBCADKQAYNwAYIAQgHzcAECAOQSFIDQEgBCAOaiELIANBEGohBSAEQSBqIQMDQCAFKQAQIR8gAyAFKQAYNwAIIAMgHzcAACAFKQAgIR8gAyAFKQAoNwAYIAMgHzcAECAFQSBqIQUgA0EgaiIDIAtJDQALDAELIAMgF00EQCADKQAAIR8gBSADKQAINwAIIAUgHzcAACAFIBcgA2siC2ohBCALQRFOBEAgBUEQaiEFA0AgAykAECEfIAUgAykAGDcACCAFIB83AAAgAykAICEfIAUgAykAKDcAGCAFIB83ABAgA0EgaiEDIAVBIGoiBSAESQ0ACwsgBCEFIBchAwsgAyAGTw0AQQAhCyAGIAMiBGtBB3EiDQRAA0AgBSAELQAAOgAAIAVBAWohBSAEQQFqIQQgC0EBaiILIA1HDQALCyADIAZrQXhLDQADQCAFIAQtAAA6AAAgBSAELQABOgABIAUgBC0AAjoAAiAFIAQtAAM6AAMgBSAELQAEOgAEIAUgBC0ABToABSAFIAQtAAY6AAYgBSAELQAHOgAHIAVBCGohBSAEQQhqIgQgBkcNAAsLIAEgASgCDCAOajYCDCABKAIEIQUgDkGAgARJDQAgAUEBNgIkIAEgBSABKAIAa0EDdTYCKAsgBSAKNgIAIAUgDjsBBCAJQQNrIgNBgIAETwRAIAFBAjYCJCABIAUgASgCAGtBA3U2AigLIAUgAzsBBiABIAVBCGoiCjYCBCAGIAlqIQMgACgC3AEEQCAAQQA2AtwBCyAHIQ4gCCELIBQgAyIFSQ0CA0AgByELIAghByAZIAMgEWsiBCALayIFa0EDSQ0CIAsgBCAAKAIQIgYgBCASayAGIAQgBmsgEksbIAAoAhgba0sNAiADKAAAIBUgESAFIBNJIgkbIAVqIgQoAABHDQIgBEEEaiIIIQQgA0EEaiIGIQUgCAJ/AkAgBiAYIAwgCRsiDiAIa2oiCSAMIAkgDEkbIglBA2siDSAGTQ0AIAYoAAAiECAIKAAAIhtHBEAgECAbc2hBA3YMAgsDQCAEQQRqIQQgBUEEaiIFIA1PDQEgBSgAACIQIAQoAAAiG0YNAAsgBSAQIBtzaEEDdmogBmsMAQsCQCAFIAlBAWtPDQAgBC8AACAFLwAARw0AIARBAmohBCAFQQJqIQULIAUgCUkEfyAFIAQtAAAgBS0AAEZqBSAFCyAGawsiCWogDkYEQCAWIQQgBiAJaiIGIQUCfwJAIAYgHE8NACAGKAAAIgggBCgAACIORwRAIAggDnNoQQN2DAILA0AgBEEEaiEEIAVBBGoiBSAcTw0BIAUoAAAiCCAEKAAAIg5GDQALIAUgCCAOc2hBA3ZqIAZrDAELAkAgBSAeTw0AIAQvAAAgBS8AAEcNACAEQQJqIQQgBUECaiEFCyAFIAxJBH8gBSAELQAAIAUtAABGagUgBQsgBmsLIAlqIQkLIAMgF00EQCADKQAAIR8gASgCDCIEIAMpAAg3AAggBCAfNwAAIAEoAgQhCgsgCkEBNgIAIApBADsBBCAJQQFqIgRBgIAETwRAIAFBAjYCJCABIAogASgCAGtBA3U2AigLIAogBDsBBiABIApBCGoiCjYCBCALIQggByEOIAlBBGogA2oiAyEFIAMgFE0NAAsMAgsgACAFIANrIgRB/xFLNgLcASAEQQh2IAVqQQFqIQUMAQsgCyEOIAchCyADIQULIAUgFEkNAAsLIAIgDjYCBCACIAs2AgAgD0EQaiQAIAwgA2sLlRICGn8BfiMAQRBrIg8kACACKAIEIQkgAigCACEKIABBADYC3AEgAyAAKAIEIhAgACgCDCIRaiIWIANGaiIFIAMgBGoiDUEIayITSQRAIAAoAggiFCAAKAIQaiEdIBEgFGohFyANQQFrIR4gDUEDayEbIA1BIGshFSARQQFrIRhBASAAKAK4AXQhEkEEQQYgACgCyAEiBCAEQQZPGyIEIARBBE0bQQRrIRwDQCAFQQFqIQtBACEGAkAgGCAFIBBrIgRBAWoiDCAKayIHa0EDSQ0AIAogDCAAKAIQIgggDCASayAIIAwgCGsgEksbIAAoAhgba0sNACALKAAAIBQgECAHIBFJIgwbIAdqIgcoAABHDQAgBUEFaiAHQQRqIA0gFyANIAwbIBYQD0EEaiEGCyAPQf+T69wDNgIMAkACQAJ/AkACQAJAIBxBAWsOAgECAAsgACAFIA0gD0EMahBtDAILIAAgBSANIA9BDGoQbAwBCyAAIAUgDSAPQQxqEGsLIgggBiAGIAhJIggbIgdBBE8EQCAFIAsgCBsiDCEGIA8oAgxBASAIGyILIQ4gByEIAkAgBSATTw0AA0AgBEEBaiEEIAVBAWohBgJAIAtFBEBBACELDAELIBggBCAKayIIa0EDSQ0AIAogBCAAKAIQIg4gBCASayAOIAQgDmsgEksbIAAoAhgba0sNACAGKAAAIAggFCAQIAggEUkiCBtqIg4oAABHDQAgBUEFaiAOQQRqIA0gFyANIAgbIBYQDyIFQXtLDQAgC2cgB0EDbGpBHmsgBUEEaiIFQQNsTg0AQQEhCyAGIQwgBSEHCyAPQf+T69wDNgIIAkACfwJAAkACQCAcQQFrDgIBAgALIAAgBiANIA9BCGoQbQwCCyAAIAYgDSAPQQhqEGwMAQsgACAGIA0gD0EIahBrCyIIQQRJDQAgDygCCCIOZyAIQQJ0akEfayALZyAHQQJ0akEba0wNACAIIQcgDiELIAYiBSEMIAUgE0kNAQwCCwsgDCEGIAshDiAHIQgLAn8gDkEESQRAIAohByAJDAELIA5BA2shBwJAIAMgBk8NACAUIBAgBiAOIBBqa0EDaiIEIBFJIgwbIARqIgUgHSAWIAwbIgxNDQADQCAGQQFrIgQtAAAgBUEBayIFLQAARw0BIAhBAWohCCADIARJBEAgBCEGIAUgDEsNAQsLIAQhBgsgCgshDCAGIANrIQkgASgCDCEFAkACQCAGIBVNBEAgAykAACEfIAUgAykACDcACCAFIB83AAAgASgCDCEEIAlBEE0EQCABIAQgCWo2AgwgASgCBCEFDAMLIAMpABAhHyAEIAMpABg3ABggBCAfNwAQIAlBIUgNASAEIAlqIQogA0EQaiEFIARBIGohAwNAIAUpABAhHyADIAUpABg3AAggAyAfNwAAIAUpACAhHyADIAUpACg3ABggAyAfNwAQIAVBIGohBSADQSBqIgMgCkkNAAsMAQsgAyAVTQRAIAMpAAAhHyAFIAMpAAg3AAggBSAfNwAAIAUgFSADayIKaiEEIApBEU4EQCAFQRBqIQUDQCADKQAQIR8gBSADKQAYNwAIIAUgHzcAACADKQAgIR8gBSADKQAoNwAYIAUgHzcAECADQSBqIQMgBUEgaiIFIARJDQALCyAEIQUgFSEDCyADIAZPDQBBACEKIAYgAyIEa0EHcSILBEADQCAFIAQtAAA6AAAgBUEBaiEFIARBAWohBCAKQQFqIgogC0cNAAsLIAMgBmtBeEsNAANAIAUgBC0AADoAACAFIAQtAAE6AAEgBSAELQACOgACIAUgBC0AAzoAAyAFIAQtAAQ6AAQgBSAELQAFOgAFIAUgBC0ABjoABiAFIAQtAAc6AAcgBUEIaiEFIARBCGoiBCAGRw0ACwsgASABKAIMIAlqNgIMIAEoAgQhBSAJQYCABEkNACABQQE2AiQgASAFIAEoAgBrQQN1NgIoCyAFIA42AgAgBSAJOwEEIAhBA2siA0GAgARPBEAgAUECNgIkIAEgBSABKAIAa0EDdTYCKAsgBSADOwEGIAEgBUEIaiILNgIEIAYgCGohAyAAKALcAQRAIABBADYC3AELIAwhCSAHIQogEyADIgVJDQIDQCAMIQogByEMIBggAyAQayIEIAprIgdrQQNJDQIgCiAEIAAoAhAiBSAEIBJrIAUgBCAFayASSxsgACgCGBtrSw0CIAMoAAAgFCAQIAcgEUkiBhsgB2oiBCgAAEcNAiAEQQRqIgkhBCADQQRqIgchBSAJAn8CQCAHIBcgDSAGGyIIIAlraiIGIA0gBiANSRsiBkEDayIOIAdNDQAgBygAACIZIAkoAAAiGkcEQCAZIBpzaEEDdgwCCwNAIARBBGohBCAFQQRqIgUgDk8NASAFKAAAIhkgBCgAACIaRg0ACyAFIBkgGnNoQQN2aiAHawwBCwJAIAUgBkEBa08NACAELwAAIAUvAABHDQAgBEECaiEEIAVBAmohBQsgBSAGSQR/IAUgBC0AACAFLQAARmoFIAULIAdrCyIGaiAIRgRAIBYhBCAGIAdqIgchBQJ/AkAgByAbTw0AIAcoAAAiCSAEKAAAIghHBEAgCCAJc2hBA3YMAgsDQCAEQQRqIQQgBUEEaiIFIBtPDQEgBSgAACIJIAQoAAAiCEYNAAsgBSAIIAlzaEEDdmogB2sMAQsCQCAFIB5PDQAgBC8AACAFLwAARw0AIARBAmohBCAFQQJqIQULIAUgDUkEfyAFIAQtAAAgBS0AAEZqBSAFCyAHawsgBmohBgsgAyAVTQRAIAMpAAAhHyABKAIMIgQgAykACDcACCAEIB83AAAgASgCBCELCyALQQE2AgAgC0EAOwEEIAZBAWoiBEGAgARPBEAgAUECNgIkIAEgCyABKAIAa0EDdTYCKAsgCyAEOwEGIAEgC0EIaiILNgIEIAohByAMIQkgBkEEaiADaiIDIQUgAyATTQ0ACwwCCyAAIAUgA2siBEH/EUs2AtwBIARBCHYgBWpBAWohBQwBCyAKIQkgDCEKIAMhBQsgBSATSQ0ACwsgAiAJNgIEIAIgCjYCACAPQRBqJAAgDSADawsDAAALqA8CGn8BfiMAQRBrIg8kACACKAIEIQYgAigCACEIIABBADYC3AEgAyAAKAIEIhAgACgCDCIRaiIVIANGaiIFIAMgBGoiDEEIayIWSQRAIAAoAggiEyAAKAIQaiEbIBEgE2ohFyAMQQFrIRwgDEEDayEYIAxBIGshEiARQQFrIRlBASAAKAK4AXQhFEEEQQYgACgCyAEiBCAEQQZPGyIEIARBBE0bQQRrIR0DQAJAAn8CQAJAAkAgGSAFIBBrQQFqIgkgCGsiDWtBA0kNACAIIAkgACgCECIEIAkgFGsgBCAJIARrIBRLGyAAKAIYG2tLDQAgBUEBaiIHKAAAIA0gEyAQIA0gEUkiDRtqIgQoAABHDQAgBUEFaiAEQQRqIAwgFyAMIA0bIBUQD0EEaiEOQQEhCgwBCyAPQf+T69wDNgIMAn8CQAJAAkAgHUEBaw4CAQIACyAAIAUgDCAPQQxqEG0MAgsgACAFIAwgD0EMahBsDAELIAAgBSAMIA9BDGoQawsiDkEDTQRAIAAgBSADayIEQf8RSzYC3AEgBEEIdiAFakEBaiEFDAQLIA8oAgwiCkEETw0BIAUhBwsgCCEJIAYMAQsgCkEDayEJAkACQCADIAVPDQAgEyAQIAUgCiAQamtBA2oiDSARSSIEGyANaiIGIBsgFSAEGyIETQ0AA0AgBUEBayIHLQAAIAZBAWsiBi0AAEcNASAOQQFqIQ4gAyAHTw0CIAchBSAEIAZJDQALDAELIAUhBwsgCAshDSAHIANrIQsgASgCDCEFAkACQCAHIBJNBEAgAykAACEfIAUgAykACDcACCAFIB83AAAgASgCDCEIIAtBEE0EQCABIAggC2o2AgwgASgCBCEFDAMLIAMpABAhHyAIIAMpABg3ABggCCAfNwAQIAtBIUgNASAIIAtqIQQgA0EQaiEFIAhBIGohAwNAIAUpABAhHyADIAUpABg3AAggAyAfNwAAIAUpACAhHyADIAUpACg3ABggAyAfNwAQIAVBIGohBSADQSBqIgMgBEkNAAsMAQsgAyASTQRAIAMpAAAhHyAFIAMpAAg3AAggBSAfNwAAIAUgEiADayIIaiEEIAhBEU4EQCAFQRBqIQUDQCADKQAQIR8gBSADKQAYNwAIIAUgHzcAACADKQAgIR8gBSADKQAoNwAYIAUgHzcAECADQSBqIQMgBUEgaiIFIARJDQALCyAEIQUgEiEDCyADIAdPDQBBACEEIAMhBiAHIANrQQdxIggEQANAIAUgBi0AADoAACAFQQFqIQUgBkEBaiEGIARBAWoiBCAIRw0ACwsgAyAHa0F4Sw0AA0AgBSAGLQAAOgAAIAUgBi0AAToAASAFIAYtAAI6AAIgBSAGLQADOgADIAUgBi0ABDoABCAFIAYtAAU6AAUgBSAGLQAGOgAGIAUgBi0ABzoAByAFQQhqIQUgBkEIaiIGIAdHDQALCyABIAEoAgwgC2o2AgwgASgCBCEFIAtBgIAESQ0AIAFBATYCJCABIAUgASgCAGtBA3U2AigLIAUgCjYCACAFIAs7AQQgDkEDayIDQYCABE8EQCABQQI2AiQgASAFIAEoAgBrQQN1NgIoCyAFIAM7AQYgASAFQQhqIgQ2AgQgByAOaiEDIAAoAtwBBEAgAEEANgLcAQsgDSEGIAkhCCAWIAMiBUkNAANAAkAgDSEIIAkhDSAZIAMgEGsiCSAIayIGa0EDSQ0AIAggCSAAKAIQIgUgCSAUayAFIAkgBWsgFEsbIAAoAhgba0sNACADKAAAIBMgECAGIBFJIgcbIAZqIgUoAABHDQAgBUEEaiIJIQYgA0EEaiIKIQUgCQJ/AkAgCiAXIAwgBxsiHiAJa2oiByAMIAcgDEkbIhpBA2siDiAKTQ0AIAooAAAiCyAJKAAAIgdHBEAgByALc2hBA3YMAgsDQCAGQQRqIQYgBUEEaiIFIA5PDQEgBSgAACILIAYoAAAiB0YNAAsgBSAHIAtzaEEDdmogCmsMAQsCQCAFIBpBAWtPDQAgBi8AACAFLwAARw0AIAZBAmohBiAFQQJqIQULIAUgGkkEfyAFIAYtAAAgBS0AAEZqBSAFCyAKawsiB2ogHkYEQCAVIQYgByAKaiIJIQUCfwJAIAkgGE8NACAJKAAAIgsgBigAACIKRwRAIAogC3NoQQN2DAILA0AgBkEEaiEGIAVBBGoiBSAYTw0BIAUoAAAiCyAGKAAAIgpGDQALIAUgCiALc2hBA3ZqIAlrDAELAkAgBSAcTw0AIAYvAAAgBS8AAEcNACAGQQJqIQYgBUECaiEFCyAFIAxJBH8gBSAGLQAAIAUtAABGagUgBQsgCWsLIAdqIQcLIAMgEk0EQCADKQAAIR8gASgCDCIEIAMpAAg3AAggBCAfNwAAIAEoAgQhBAsgBEEBNgIAIARBADsBBCAHQQFqIgVBgIAETwRAIAFBAjYCJCABIAQgASgCAGtBA3U2AigLIAQgBTsBBiABIARBCGoiBDYCBCAIIQkgDSEGIAdBBGogA2oiAyEFIAMgFk0NAQwCCwsgCCEGIA0hCCADIQULIAUgFkkNAAsLIAIgBjYCBCACIAg2AgAgD0EQaiQAIAwgA2sL1BUCHX8CfiMAQRBrIg4kACACKAIEIQYgAigCACEJIAAoArQBIgUoAgAhFSAFKAIEIRYgBSgCDCEHIABBADYC3AEgACgCxAEhDEEEQQYgACgCyAEiBSAFQQZPGyIFIAVBBE0bIRMgAyADIAAoAgQiDyAAKAIMIhJqIhdrIAcgFmoiHCAVa0ZqIQUCQCAAKAIcIgggCEEIIAMgBGoiDUEPayIdIAggD2oiB2siBCAEQQhPG0EAIAcgDUEQayIUTRtqIgpPDQBBGCAAKAIkIgRrIQtBOCAEa60hIyAAKQNQIiKnIRAgDEEETQRAIBNBBWshBANAIAggD2ohByAAIAhBB3FBAnRqAn8CQAJAAkAgBA4CAAECCyAHKQAAQoCAgNjLm++NT34gIoUgI4inDAILIAcpAABCgIDs/Mub741PfiAihSAjiKcMAQsgBygAAEGx893xeWwgEHMgC3YLNgIsIAhBAWoiCCAKRw0ACwwBCyAMQQVGBEAgE0EFayEEA0AgCCAPaiEHIAAgCEEHcUECdGoCfwJAAkACQCAEDgIAAQILIAcpAABCgICA2Mub741PfiAihSAjiKcMAgsgBykAAEKAgOz8y5vvjU9+ICKFICOIpwwBCyAHKAAAQbHz3fF5bCAQcyALdgs2AiwgCEEBaiIIIApHDQALDAELIBNBBWshBANAIAggD2ohByAAIAhBB3FBAnRqAn8CQAJAAkAgBA4CAQIACyAHKAAAQbHz3fF5bCAQcyALdgwCCyAHKQAAQoCAgNjLm++NT34gIoUgI4inDAELIAcpAABCgIDs/Mub741PfiAihSAjiKcLNgIsIAhBAWoiCCAKRw0ACwsgBSAUSQRAQQRBBiAMIAxBBk8bIgQgBEEETRshGCANQQFrIR4gDUEDayEZIA1BIGshECAWIBYgFWsgEmoiH2shGiATQQVrISADQAJAAn8CQAJAAkAgBSAJIA9qa0EBaiIEIBJrQXxLDQAgFiAEIB9raiAEIA9qIAQgEkkiDBsiBygAACAFQQFqIgQoAABHDQAgBUEFaiAHQQRqIA0gFSANIAwbIBcQD0EEaiERQQEhCwwBCyAOQf+T69wDNgIMAn8CQAJAAkAgE0EFaw4CAQIACwJAAkACQCAYQQVrDgIBAgALIAAgBSANIA5BDGoQdgwECyAAIAUgDSAOQQxqEHUMAwsgACAFIA0gDkEMahB0DAILAkACQAJAIBhBBWsOAgECAAsgACAFIA0gDkEMahBzDAMLIAAgBSANIA5BDGoQcgwCCyAAIAUgDSAOQQxqEHEMAQsCQAJAAkAgGEEFaw4CAQIACyAAIAUgDSAOQQxqEHAMAgsgACAFIA0gDkEMahBvDAELIAAgBSANIA5BDGoQbgsiEUEDTQRAIAAgBSADayIEQf8PSzYC3AEgBEEIdiAFakEBaiEFDAQLIA4oAgwiC0EETw0BIAUhBAsgCSEMIAYMAQsgC0EDayEMAkACQCADIAVPDQAgGiAPIAUgCyAPamtBA2oiByASSSIEGyAHaiIGIBwgFyAEGyIHTQ0AA0AgBUEBayIELQAAIAZBAWsiBi0AAEcNASARQQFqIREgAyAETw0CIAQhBSAGIAdLDQALDAELIAUhBAsgCQshByAEIANrIQogASgCDCEFAkACQCAEIBBNBEAgAykAACEiIAUgAykACDcACCAFICI3AAAgASgCDCEGIApBEE0EQCABIAYgCmo2AgwgASgCBCEFDAMLIAMpABAhIiAGIAMpABg3ABggBiAiNwAQIApBIUgNASAGIApqIQkgA0EQaiEFIAZBIGohAwNAIAUpABAhIiADIAUpABg3AAggAyAiNwAAIAUpACAhIiADIAUpACg3ABggAyAiNwAQIAVBIGohBSADQSBqIgMgCUkNAAsMAQsgAyAQTQRAIAMpAAAhIiAFIAMpAAg3AAggBSAiNwAAIAUgECADayIGaiEJIAZBEU4EQCAFQRBqIQUDQCADKQAQISIgBSADKQAYNwAIIAUgIjcAACADKQAgISIgBSADKQAoNwAYIAUgIjcAECADQSBqIQMgBUEgaiIFIAlJDQALCyAJIQUgECEDCyADIARPDQBBACEIIAMhBiAEIANrQQdxIgkEQANAIAUgBi0AADoAACAFQQFqIQUgBkEBaiEGIAhBAWoiCCAJRw0ACwsgAyAEa0F4Sw0AA0AgBSAGLQAAOgAAIAUgBi0AAToAASAFIAYtAAI6AAIgBSAGLQADOgADIAUgBi0ABDoABCAFIAYtAAU6AAUgBSAGLQAGOgAGIAUgBi0ABzoAByAFQQhqIQUgBkEIaiIGIARHDQALCyABIAEoAgwgCmo2AgwgASgCBCEFIApBgIAESQ0AIAFBATYCJCABIAUgASgCAGtBA3U2AigLIAUgCzYCACAFIAo7AQQgEUEDayIDQYCABE8EQCABQQI2AiQgASAFIAEoAgBrQQN1NgIoCyAFIAM7AQYgASAFQQhqIgg2AgQgBCARaiEDIAAoAtwBBEAgACgCHCIFIAVBCCAdIAUgD2oiCWsiBCAEQQhPG0EAIAkgFE0baiILSQRAQRggACgCJCIEayEJQTggBGutISMgACkDUCIipyEEA0AgBSAPaiEGIAAgBUEHcUECdGoCfwJAAkACQCAgDgIBAgALIAYoAABBsfPd8XlsIARzIAl2DAILIAYpAABCgICA2Mub741PfiAihSAjiKcMAQsgBikAAEKAgOz8y5vvjU9+ICKFICOIpws2AiwgBUEBaiIFIAtHDQALCyAAQQA2AtwBCyAHIQYgDCEJIBQgAyIFSQ0AA0ACQCAHIQkgDCEHIAMgCSAPamsiBCASa0F8Sw0AIBogDyAEIBJJIgobIARqIgQoAAAgAygAAEcNACAEQQRqIgwhBiADQQRqIgshBSAMAn8CQCALIBUgDSAKGyIhIAxraiIEIA0gBCANSRsiG0EDayIRIAtNDQAgCygAACIKIAwoAAAiBEcEQCAEIApzaEEDdgwCCwNAIAZBBGohBiAFQQRqIgUgEU8NASAFKAAAIgogBigAACIERg0ACyAFIAQgCnNoQQN2aiALawwBCwJAIAUgG0EBa08NACAGLwAAIAUvAABHDQAgBkECaiEGIAVBAmohBQsgBSAbSQR/IAUgBi0AACAFLQAARmoFIAULIAtrCyIEaiAhRgRAIBchBiAEIAtqIgwhBQJ/AkAgDCAZTw0AIAwoAAAiCiAGKAAAIgtHBEAgCiALc2hBA3YMAgsDQCAGQQRqIQYgBUEEaiIFIBlPDQEgBSgAACIKIAYoAAAiC0YNAAsgBSAKIAtzaEEDdmogDGsMAQsCQCAFIB5PDQAgBi8AACAFLwAARw0AIAZBAmohBiAFQQJqIQULIAUgDUkEfyAFIAYtAAAgBS0AAEZqBSAFCyAMawsgBGohBAsgAyAQTQRAIAMpAAAhIiABKAIMIgUgAykACDcACCAFICI3AAAgASgCBCEICyAIQQE2AgAgCEEAOwEEIARBAWoiBUGAgARPBEAgAUECNgIkIAEgCCABKAIAa0EDdTYCKAsgCCAFOwEGIAEgCEEIaiIINgIEIAkhDCAHIQYgBEEEaiADaiIDIQUgAyAUTQ0BDAILCyAJIQYgByEJIAMhBQsgBSAUSQ0ACwsgAiAGNgIEIAIgCTYCACAOQRBqJAAgDSADawuPHAIhfwJ+IwBBEGsiDSQAIAIoAgQhDCACKAIAIQsgACgCtAEiBSgCACEVIAUoAgQhFiAFKAIMIQUgAEEANgLcASAAKALEASEPQQRBBiAAKALIASIIIAhBBk8bIgggCEEETRshFyADIAMgACgCBCIQIAAoAgwiEmoiG2sgBSAWaiIiIBVrRmohBQJAIAAoAhwiBiAGQQggAyAEaiIJQQ9rIiMgBiAQaiIEayIIIAhBCE8bQQAgBCAJQRBrIhNNG2oiBE8NAEEYIAAoAiQiB2shCEE4IAdrrSEmIAApA1AiJ6chCiAPQQRNBEAgF0EFayEOA0AgBiAQaiEHIAAgBkEHcUECdGoCfwJAAkACQCAODgIAAQILIAcpAABCgICA2Mub741PfiAnhSAmiKcMAgsgBykAAEKAgOz8y5vvjU9+ICeFICaIpwwBCyAHKAAAQbHz3fF5bCAKcyAIdgs2AiwgBkEBaiIGIARHDQALDAELIA9BBUYEQCAXQQVrIQ4DQCAGIBBqIQcgACAGQQdxQQJ0agJ/AkACQAJAIA4OAgABAgsgBykAAEKAgIDYy5vvjU9+ICeFICaIpwwCCyAHKQAAQoCA7PzLm++NT34gJ4UgJoinDAELIAcoAABBsfPd8XlsIApzIAh2CzYCLCAGQQFqIgYgBEcNAAsMAQsgF0EFayEOA0AgBiAQaiEHIAAgBkEHcUECdGoCfwJAAkACQCAODgIBAgALIAcoAABBsfPd8XlsIApzIAh2DAILIAcpAABCgICA2Mub741PfiAnhSAmiKcMAQsgBykAAEKAgOz8y5vvjU9+ICeFICaIpws2AiwgBkEBaiIGIARHDQALCyAFIBNJBEBBBEEGIA8gD0EGTxsiBCAEQQRNGyEUIAlBIGshGCAWIBYgFWsgEmoiH2shICAJQQFrISEgCUEDayEcA0AgBUEBaiEIAn9BACAFIAsgEGoiGWtBAWoiBCASa0F8Sw0AGkEAIBYgBCAfa2ogBCAQaiAEIBJJIgQbIgcoAAAgCCgAAEcNABogBUEFaiAHQQRqIAkgFSAJIAQbIBsQD0EEagshBiANQf+T69wDNgIMAkACQAJ/AkACQAJAIBdBBGsiJEEBaw4CAQIACwJAAkACQCAUQQVrDgIBAgALIAAgBSAJIA1BDGoQdgwECyAAIAUgCSANQQxqEHUMAwsgACAFIAkgDUEMahB0DAILAkACQAJAIBRBBWsOAgECAAsgACAFIAkgDUEMahBzDAMLIAAgBSAJIA1BDGoQcgwCCyAAIAUgCSANQQxqEHEMAQsCQAJAAkAgFEEFaw4CAQIACyAAIAUgCSANQQxqEHAMAgsgACAFIAkgDUEMahBvDAELIAAgBSAJIA1BDGoQbgsiBCAGIAQgBksiBBsiDkEETwRAIAUgCCAEGyEHIA0oAgxBASAEGyERAkAgBSATTw0AA0ACQCAFQQFqIgggGWsiBCASa0F8Sw0AIBYgBCAfa2ogBCAQaiAEIBJJIg8bIgQoAAAgCCgAAEcNACAEQQRqIgYhBCAFQQVqIgohBSAGAn8CQCAKIBUgCSAPGyIaIAZraiIPIAkgCSAPSxsiD0EDayIlIApNDQAgCigAACIdIAYoAAAiHkcEQCAdIB5zaEEDdgwCCwNAIARBBGohBCAFQQRqIgUgJU8NASAFKAAAIh0gBCgAACIeRg0ACyAFIB0gHnNoQQN2aiAKawwBCwJAIAUgD0EBa08NACAELwAAIAUvAABHDQAgBEECaiEEIAVBAmohBQsgBSAPSQR/IAUgBC0AACAFLQAARmoFIAULIAprCyIPaiAaRgRAIBshBCAKIA9qIgohBQJ/AkAgCiAcTw0AIAooAAAiBiAEKAAAIhpHBEAgBiAac2hBA3YMAgsDQCAEQQRqIQQgBUEEaiIFIBxPDQEgBSgAACIGIAQoAAAiGkYNAAsgBSAGIBpzaEEDdmogCmsMAQsCQCAFICFPDQAgBC8AACAFLwAARw0AIARBAmohBCAFQQJqIQULIAUgCUkEfyAFIAQtAAAgBS0AAEZqBSAFCyAKawsgD2ohDwsgD0F7Sw0AIBFnIA5BA2xqQR5rIA9BBGoiBEEDbE4NAEEBIREgCCEHIAQhDgsgDUH/k+vcAzYCCAJ/AkACQAJAICRBAWsOAgECAAsCQAJAAkAgFEEFaw4CAQIACyAAIAggCSANQQhqEHYMBAsgACAIIAkgDUEIahB1DAMLIAAgCCAJIA1BCGoQdAwCCwJAAkACQCAUQQVrDgIBAgALIAAgCCAJIA1BCGoQcwwDCyAAIAggCSANQQhqEHIMAgsgACAIIAkgDUEIahBxDAELAkACQAJAIBRBBWsOAgECAAsgACAIIAkgDUEIahBwDAILIAAgCCAJIA1BCGoQbwwBCyAAIAggCSANQQhqEG4LIgRBBEkNASANKAIIIgVnIARBAnRqQR9rIBFnIA5BAnRqQRtrTA0BIAQhDiAFIREgCCIFIQcgBSATRw0ACyATIQcLAn8gEUEESQRAIAshCiAMDAELIBFBA2shCgJAIAMgB08NACAgIBAgByAQIBFqa0EDaiIEIBJJIggbIARqIgUgIiAbIAgbIghNDQADQCAHQQFrIgQtAAAgBUEBayIFLQAARw0BIA5BAWohDiADIARJBEAgBCEHIAUgCEsNAQsLIAQhBwsgCwshCCAHIANrIQsgASgCDCEFAkACQCAHIBhNBEAgAykAACEmIAUgAykACDcACCAFICY3AAAgASgCDCEEIAtBEE0EQCABIAQgC2o2AgwgASgCBCEFDAMLIAMpABAhJiAEIAMpABg3ABggBCAmNwAQIAtBIUgNASAEIAtqIQwgA0EQaiEFIARBIGohAwNAIAUpABAhJiADIAUpABg3AAggAyAmNwAAIAUpACAhJiADIAUpACg3ABggAyAmNwAQIAVBIGohBSADQSBqIgMgDEkNAAsMAQsgAyAYTQRAIAMpAAAhJiAFIAMpAAg3AAggBSAmNwAAIAUgGCADayIMaiEEIAxBEU4EQCAFQRBqIQUDQCADKQAQISYgBSADKQAYNwAIIAUgJjcAACADKQAgISYgBSADKQAoNwAYIAUgJjcAECADQSBqIQMgBUEgaiIFIARJDQALCyAEIQUgGCEDCyADIAdPDQBBACEEIAMhBiAHIANrQQdxIgwEQANAIAUgBi0AADoAACAFQQFqIQUgBkEBaiEGIARBAWoiBCAMRw0ACwsgAyAHa0F4Sw0AA0AgBSAGLQAAOgAAIAUgBi0AAToAASAFIAYtAAI6AAIgBSAGLQADOgADIAUgBi0ABDoABCAFIAYtAAU6AAUgBSAGLQAGOgAGIAUgBi0ABzoAByAFQQhqIQUgBkEIaiIGIAdHDQALCyABIAEoAgwgC2o2AgwgASgCBCEFIAtBgIAESQ0AIAFBATYCJCABIAUgASgCAGtBA3U2AigLIAUgETYCACAFIAs7AQQgDkEDayIDQYCABE8EQCABQQI2AiQgASAFIAEoAgBrQQN1NgIoCyAFIAM7AQYgASAFQQhqIgQ2AgQgByAOaiEDIAAoAtwBBEAgACgCHCIFIAVBCCAjIAUgEGoiC2siByAHQQhPG0EAIAsgE00baiIHSQRAQRggACgCJCILayEMQTggC2utISYgACkDUCInpyEOA0AgBSAQaiELIAAgBUEHcUECdGoCfwJAAkACQCAXQQVrDgIBAgALIAsoAABBsfPd8XlsIA5zIAx2DAILIAspAABCgICA2Mub741PfiAnhSAmiKcMAQsgCykAAEKAgOz8y5vvjU9+ICeFICaIpws2AiwgBUEBaiIFIAdHDQALCyAAQQA2AtwBCyAIIQwgCiELIBMgAyIFSQ0CA0AgCCELIAohCCADIAsgEGprIgUgEmtBfEsNAiAgIBAgBSASSSIHGyAFaiIFKAAAIAMoAABHDQIgBUEEaiIKIQYgA0EEaiIMIQUgCgJ/AkAgDCAVIAkgBxsiDiAKa2oiByAJIAcgCUkbIgdBA2siESAMTQ0AIAwoAAAiDyAKKAAAIhlHBEAgDyAZc2hBA3YMAgsDQCAGQQRqIQYgBUEEaiIFIBFPDQEgBSgAACIPIAYoAAAiGUYNAAsgBSAPIBlzaEEDdmogDGsMAQsCQCAFIAdBAWtPDQAgBi8AACAFLwAARw0AIAZBAmohBiAFQQJqIQULIAUgB0kEfyAFIAYtAAAgBS0AAEZqBSAFCyAMawsiB2ogDkYEQCAbIQYgByAMaiIMIQUCfwJAIAwgHE8NACAMKAAAIgogBigAACIORwRAIAogDnNoQQN2DAILA0AgBkEEaiEGIAVBBGoiBSAcTw0BIAUoAAAiCiAGKAAAIg5GDQALIAUgCiAOc2hBA3ZqIAxrDAELAkAgBSAhTw0AIAYvAAAgBS8AAEcNACAGQQJqIQYgBUECaiEFCyAFIAlJBH8gBSAGLQAAIAUtAABGagUgBQsgDGsLIAdqIQcLIAMgGE0EQCADKQAAISYgASgCDCIEIAMpAAg3AAggBCAmNwAAIAEoAgQhBAsgBEEBNgIAIARBADsBBCAHQQFqIgVBgIAETwRAIAFBAjYCJCABIAQgASgCAGtBA3U2AigLIAQgBTsBBiABIARBCGoiBDYCBCALIQogCCEMIAdBBGogA2oiAyEFIAMgE00NAAsMAgsgACAFIANrIgRB/w9LNgLcASAEQQh2IAVqQQFqIQUMAQsgCyEMIAghCyADIQULIAUgE0kNAAsLIAIgDDYCBCACIAs2AgAgDUEQaiQAIAkgA2sLBAAjAAukHwIifwJ+IwBBEGsiCyQAIAIoAgQhDyACKAIAIQ0gACgCtAEiBSgCACEWIAUoAgQhFyAFKAIMIQUgAEEANgLcASAAKALEASEOQQRBBiAAKALIASIGIAZBBk8bIgYgBkEETRshGCADIAMgACgCBCIQIAAoAgwiE2oiGWsgBSAXaiIkIBZrRmohBQJAIAAoAhwiBiAGQQggAyAEaiIHQQ9rIiUgBiAQaiIEayIJIAlBCE8bQQAgBCAHQRBrIhVNG2oiBE8NAEEYIAAoAiQiCGshCUE4IAhrrSEnIAApA1AiKKchDCAOQQRNBEAgGEEFayEKA0AgBiAQaiEIIAAgBkEHcUECdGoCfwJAAkACQCAKDgIAAQILIAgpAABCgICA2Mub741PfiAohSAniKcMAgsgCCkAAEKAgOz8y5vvjU9+ICiFICeIpwwBCyAIKAAAQbHz3fF5bCAMcyAJdgs2AiwgBkEBaiIGIARHDQALDAELIA5BBUYEQCAYQQVrIQoDQCAGIBBqIQggACAGQQdxQQJ0agJ/AkACQAJAIAoOAgABAgsgCCkAAEKAgIDYy5vvjU9+ICiFICeIpwwCCyAIKQAAQoCA7PzLm++NT34gKIUgJ4inDAELIAgoAABBsfPd8XlsIAxzIAl2CzYCLCAGQQFqIgYgBEcNAAsMAQsgGEEFayEKA0AgBiAQaiEIIAAgBkEHcUECdGoCfwJAAkACQCAKDgIBAgALIAgoAABBsfPd8XlsIAxzIAl2DAILIAgpAABCgICA2Mub741PfiAohSAniKcMAQsgCCkAAEKAgOz8y5vvjU9+ICiFICeIpws2AiwgBkEBaiIGIARHDQALCyAFIBVJBEBBBEEGIA4gDkEGTxsiBCAEQQRNGyEUIAdBIGshGiAXIBcgFmsgE2oiHWshICAHQQFrISEgB0EDayEcA0AgBUEBaiEJAn9BACAFIA0gEGoiImtBAWoiBCATa0F8Sw0AGkEAIBcgBCAda2ogBCAQaiAEIBNJIgQbIggoAAAgCSgAAEcNABogBUEFaiAIQQRqIAcgFiAHIAQbIBkQD0EEagshBiALQf+T69wDNgIMAkACQAJ/AkACQAJAIBhBBGsiI0EBaw4CAQIACwJAAkACQCAUQQVrDgIBAgALIAAgBSAHIAtBDGoQdgwECyAAIAUgByALQQxqEHUMAwsgACAFIAcgC0EMahB0DAILAkACQAJAIBRBBWsOAgECAAsgACAFIAcgC0EMahBzDAMLIAAgBSAHIAtBDGoQcgwCCyAAIAUgByALQQxqEHEMAQsCQAJAAkAgFEEFaw4CAQIACyAAIAUgByALQQxqEHAMAgsgACAFIAcgC0EMahBvDAELIAAgBSAHIAtBDGoQbgsiCiAGIAYgCkkiBBsiCEEETwRAIAUgCSAEGyEJIAsoAgxBASAEGyERAkAgBSAVTw0AA0ACQCAFQQFqIgQgImsiBiATa0F8Sw0AIBcgBiAda2ogBiAQaiAGIBNJIg4bIgYoAAAgBCgAAEcNACAGQQRqIhIhCiAFQQVqIgwhBiASAn8CQCAMIBYgByAOGyIbIBJraiIOIAcgByAOSxsiDkEDayImIAxNDQAgDCgAACIeIBIoAAAiH0cEQCAeIB9zaEEDdgwCCwNAIApBBGohCiAGQQRqIgYgJk8NASAGKAAAIh4gCigAACIfRg0ACyAGIB4gH3NoQQN2aiAMawwBCwJAIAYgDkEBa08NACAKLwAAIAYvAABHDQAgCkECaiEKIAZBAmohBgsgBiAOSQR/IAYgCi0AACAGLQAARmoFIAYLIAxrCyIOaiAbRgRAIBkhCiAMIA5qIgwhBgJ/AkAgDCAcTw0AIAwoAAAiEiAKKAAAIhtHBEAgEiAbc2hBA3YMAgsDQCAKQQRqIQogBkEEaiIGIBxPDQEgBigAACISIAooAAAiG0YNAAsgBiASIBtzaEEDdmogDGsMAQsCQCAGICFPDQAgCi8AACAGLwAARw0AIApBAmohCiAGQQJqIQYLIAYgB0kEfyAGIAotAAAgBi0AAEZqBSAGCyAMawsgDmohDgsgDkF7Sw0AIBFnIAhBA2xqQR5rIA5BBGoiBkEDbE4NAEEBIREgBCEJIAYhCAsgC0H/k+vcAzYCCAJ/AkACfwJAAkACQCAjQQFrDgIBAgALAkACQAJAIBRBBWsOAgECAAsgACAEIAcgC0EIahB2DAQLIAAgBCAHIAtBCGoQdQwDCyAAIAQgByALQQhqEHQMAgsCQAJAAkAgFEEFaw4CAQIACyAAIAQgByALQQhqEHMMAwsgACAEIAcgC0EIahByDAILIAAgBCAHIAtBCGoQcQwBCwJAAkACQCAUQQVrDgIBAgALIAAgBCAHIAtBCGoQcAwCCyAAIAQgByALQQhqEG8MAQsgACAEIAcgC0EIahBuCyIGQQRJDQAgCygCCCIMZyAGQQJ0akEfayARZyAIQQJ0akEba0wNACAMIREgBiEIIAQMAQsgBCAVTw0CAkAgBUECaiIEICJrIgYgE2tBfEsNACAXIAYgHWtqIAYgEGogBiATSSIGGyIMKAAAIAQoAABHDQAgBUEGaiAMQQRqIAcgFiAHIAYbIBkQDyIFQXtLDQAgEWcgCEECdGpBHmsgBUEEaiIFQQJ0Tg0AQQEhESAEIQkgBSEICyALQf+T69wDNgIEAn8CQAJAAkAgI0EBaw4CAQIACwJAAkACQCAUQQVrDgIBAgALIAAgBCAHIAtBBGoQdgwECyAAIAQgByALQQRqEHUMAwsgACAEIAcgC0EEahB0DAILAkACQAJAIBRBBWsOAgECAAsgACAEIAcgC0EEahBzDAMLIAAgBCAHIAtBBGoQcgwCCyAAIAQgByALQQRqEHEMAQsCQAJAAkAgFEEFaw4CAQIACyAAIAQgByALQQRqEHAMAgsgACAEIAcgC0EEahBvDAELIAAgBCAHIAtBBGoQbgsiBkEESQ0CIAsoAgQiDGcgBkECdGpBH2sgEWcgCEECdGpBGGtMDQIgDCERIAYhCCAECyIFIQkgBSAVSQ0ACwsCfyARQQRJBEAgDSEMIA8MAQsgEUEDayEMAkAgAyAJTw0AICAgECAJIBAgEWprQQNqIgQgE0kiBhsgBGoiBSAkIBkgBhsiBk0NAANAIAlBAWsiBC0AACAFQQFrIgUtAABHDQEgCEEBaiEIIAMgBEkEQCAEIQkgBSAGSw0BCwsgBCEJCyANCyEEIAkgA2shDSABKAIMIQUCQAJAIAkgGk0EQCADKQAAIScgBSADKQAINwAIIAUgJzcAACABKAIMIQYgDUEQTQRAIAEgBiANajYCDCABKAIEIQUMAwsgAykAECEnIAYgAykAGDcAGCAGICc3ABAgDUEhSA0BIAYgDWohDyADQRBqIQUgBkEgaiEDA0AgBSkAECEnIAMgBSkAGDcACCADICc3AAAgBSkAICEnIAMgBSkAKDcAGCADICc3ABAgBUEgaiEFIANBIGoiAyAPSQ0ACwwBCyADIBpNBEAgAykAACEnIAUgAykACDcACCAFICc3AAAgBSAaIANrIg9qIQYgD0ERTgRAIAVBEGohBQNAIAMpABAhJyAFIAMpABg3AAggBSAnNwAAIAMpACAhJyAFIAMpACg3ABggBSAnNwAQIANBIGohAyAFQSBqIgUgBkkNAAsLIAYhBSAaIQMLIAMgCU8NAEEAIQogCSADIgZrQQdxIg8EQANAIAUgBi0AADoAACAFQQFqIQUgBkEBaiEGIApBAWoiCiAPRw0ACwsgAyAJa0F4Sw0AA0AgBSAGLQAAOgAAIAUgBi0AAToAASAFIAYtAAI6AAIgBSAGLQADOgADIAUgBi0ABDoABCAFIAYtAAU6AAUgBSAGLQAGOgAGIAUgBi0ABzoAByAFQQhqIQUgBkEIaiIGIAlHDQALCyABIAEoAgwgDWo2AgwgASgCBCEFIA1BgIAESQ0AIAFBATYCJCABIAUgASgCAGtBA3U2AigLIAUgETYCACAFIA07AQQgCEEDayIDQYCABE8EQCABQQI2AiQgASAFIAEoAgBrQQN1NgIoCyAFIAM7AQYgASAFQQhqIgo2AgQgCCAJaiEDIAAoAtwBBEAgACgCHCIFIAVBCCAlIAUgEGoiBmsiDSANQQhPG0EAIAYgFU0baiINSQRAQRggACgCJCIGayEJQTggBmutIScgACkDUCIopyEIA0AgBSAQaiEGIAAgBUEHcUECdGoCfwJAAkACQCAYQQVrDgIBAgALIAYoAABBsfPd8XlsIAhzIAl2DAILIAYpAABCgICA2Mub741PfiAohSAniKcMAQsgBikAAEKAgOz8y5vvjU9+ICiFICeIpws2AiwgBUEBaiIFIA1HDQALCyAAQQA2AtwBCyAEIQ8gDCENIBUgAyIFSQ0CA0AgBCENIAwhBCADIA0gEGprIgUgE2tBfEsNAiAgIBAgBSATSSIIGyAFaiIFKAAAIAMoAABHDQIgBUEEaiIPIQYgA0EEaiIJIQUgDwJ/AkAgCSAWIAcgCBsiDCAPa2oiCCAHIAcgCEsbIghBA2siESAJTQ0AIAkoAAAiEiAPKAAAIg5HBEAgDiASc2hBA3YMAgsDQCAGQQRqIQYgBUEEaiIFIBFPDQEgBSgAACISIAYoAAAiDkYNAAsgBSAOIBJzaEEDdmogCWsMAQsCQCAFIAhBAWtPDQAgBi8AACAFLwAARw0AIAZBAmohBiAFQQJqIQULIAUgCEkEfyAFIAYtAAAgBS0AAEZqBSAFCyAJawsiCGogDEYEQCAZIQYgCCAJaiIJIQUCfwJAIAkgHE8NACAJKAAAIg8gBigAACIMRwRAIAwgD3NoQQN2DAILA0AgBkEEaiEGIAVBBGoiBSAcTw0BIAUoAAAiDyAGKAAAIgxGDQALIAUgDCAPc2hBA3ZqIAlrDAELAkAgBSAhTw0AIAYvAAAgBS8AAEcNACAGQQJqIQYgBUECaiEFCyAFIAdJBH8gBSAGLQAAIAUtAABGagUgBQsgCWsLIAhqIQgLIAMgGk0EQCADKQAAIScgASgCDCIFIAMpAAg3AAggBSAnNwAAIAEoAgQhCgsgCkEBNgIAIApBADsBBCAIQQFqIgVBgIAETwRAIAFBAjYCJCABIAogASgCAGtBA3U2AigLIAogBTsBBiABIApBCGoiCjYCBCANIQwgBCEPIAhBBGogA2oiAyEFIAMgFU0NAAsMAgsgACAFIANrIgRB/w9LNgLcASAEQQh2IAVqQQFqIQUMAQsgDSEPIAQhDSADIQULIAUgFUkNAAsLIAIgDzYCBCACIA02AgAgC0EQaiQAIAcgA2sL1BUCHX8CfiMAQRBrIg4kACACKAIEIQYgAigCACEJIAAoArQBIgUoAgAhFSAFKAIEIRYgBSgCDCEHIABBADYC3AEgACgCxAEhDEEEQQYgACgCyAEiBSAFQQZPGyIFIAVBBE0bIRMgAyADIAAoAgQiDyAAKAIMIhJqIhdrIAcgFmoiHCAVa0ZqIQUCQCAAKAIcIgggCEEIIAMgBGoiDUEPayIdIAggD2oiB2siBCAEQQhPG0EAIAcgDUEQayIUTRtqIgpPDQBBGCAAKAIkIgRrIQtBOCAEa60hIyAAKQNQIiKnIRAgDEEETQRAIBNBBWshBANAIAggD2ohByAAIAhBB3FBAnRqAn8CQAJAAkAgBA4CAAECCyAHKQAAQoCAgNjLm++NT34gIoUgI4inDAILIAcpAABCgIDs/Mub741PfiAihSAjiKcMAQsgBygAAEGx893xeWwgEHMgC3YLNgIsIAhBAWoiCCAKRw0ACwwBCyAMQQVGBEAgE0EFayEEA0AgCCAPaiEHIAAgCEEHcUECdGoCfwJAAkACQCAEDgIAAQILIAcpAABCgICA2Mub741PfiAihSAjiKcMAgsgBykAAEKAgOz8y5vvjU9+ICKFICOIpwwBCyAHKAAAQbHz3fF5bCAQcyALdgs2AiwgCEEBaiIIIApHDQALDAELIBNBBWshBANAIAggD2ohByAAIAhBB3FBAnRqAn8CQAJAAkAgBA4CAQIACyAHKAAAQbHz3fF5bCAQcyALdgwCCyAHKQAAQoCAgNjLm++NT34gIoUgI4inDAELIAcpAABCgIDs/Mub741PfiAihSAjiKcLNgIsIAhBAWoiCCAKRw0ACwsgBSAUSQRAQQRBBiAMIAxBBk8bIgQgBEEETRshGCANQQFrIR4gDUEDayEZIA1BIGshECAWIBYgFWsgEmoiH2shGiATQQVrISADQAJAAn8CQAJAAkAgBSAJIA9qa0EBaiIEIBJrQXxLDQAgFiAEIB9raiAEIA9qIAQgEkkiDBsiBygAACAFQQFqIgQoAABHDQAgBUEFaiAHQQRqIA0gFSANIAwbIBcQD0EEaiERQQEhCwwBCyAOQf+T69wDNgIMAn8CQAJAAkAgE0EFaw4CAQIACwJAAkACQCAYQQVrDgIBAgALIAAgBSANIA5BDGoQfwwECyAAIAUgDSAOQQxqEH4MAwsgACAFIA0gDkEMahB9DAILAkACQAJAIBhBBWsOAgECAAsgACAFIA0gDkEMahB8DAMLIAAgBSANIA5BDGoQewwCCyAAIAUgDSAOQQxqEHoMAQsCQAJAAkAgGEEFaw4CAQIACyAAIAUgDSAOQQxqEHkMAgsgACAFIA0gDkEMahB4DAELIAAgBSANIA5BDGoQdwsiEUEDTQRAIAAgBSADayIEQf8PSzYC3AEgBEEIdiAFakEBaiEFDAQLIA4oAgwiC0EETw0BIAUhBAsgCSEMIAYMAQsgC0EDayEMAkACQCADIAVPDQAgGiAPIAUgCyAPamtBA2oiByASSSIEGyAHaiIGIBwgFyAEGyIHTQ0AA0AgBUEBayIELQAAIAZBAWsiBi0AAEcNASARQQFqIREgAyAETw0CIAQhBSAGIAdLDQALDAELIAUhBAsgCQshByAEIANrIQogASgCDCEFAkACQCAEIBBNBEAgAykAACEiIAUgAykACDcACCAFICI3AAAgASgCDCEGIApBEE0EQCABIAYgCmo2AgwgASgCBCEFDAMLIAMpABAhIiAGIAMpABg3ABggBiAiNwAQIApBIUgNASAGIApqIQkgA0EQaiEFIAZBIGohAwNAIAUpABAhIiADIAUpABg3AAggAyAiNwAAIAUpACAhIiADIAUpACg3ABggAyAiNwAQIAVBIGohBSADQSBqIgMgCUkNAAsMAQsgAyAQTQRAIAMpAAAhIiAFIAMpAAg3AAggBSAiNwAAIAUgECADayIGaiEJIAZBEU4EQCAFQRBqIQUDQCADKQAQISIgBSADKQAYNwAIIAUgIjcAACADKQAgISIgBSADKQAoNwAYIAUgIjcAECADQSBqIQMgBUEgaiIFIAlJDQALCyAJIQUgECEDCyADIARPDQBBACEIIAMhBiAEIANrQQdxIgkEQANAIAUgBi0AADoAACAFQQFqIQUgBkEBaiEGIAhBAWoiCCAJRw0ACwsgAyAEa0F4Sw0AA0AgBSAGLQAAOgAAIAUgBi0AAToAASAFIAYtAAI6AAIgBSAGLQADOgADIAUgBi0ABDoABCAFIAYtAAU6AAUgBSAGLQAGOgAGIAUgBi0ABzoAByAFQQhqIQUgBkEIaiIGIARHDQALCyABIAEoAgwgCmo2AgwgASgCBCEFIApBgIAESQ0AIAFBATYCJCABIAUgASgCAGtBA3U2AigLIAUgCzYCACAFIAo7AQQgEUEDayIDQYCABE8EQCABQQI2AiQgASAFIAEoAgBrQQN1NgIoCyAFIAM7AQYgASAFQQhqIgg2AgQgBCARaiEDIAAoAtwBBEAgACgCHCIFIAVBCCAdIAUgD2oiCWsiBCAEQQhPG0EAIAkgFE0baiILSQRAQRggACgCJCIEayEJQTggBGutISMgACkDUCIipyEEA0AgBSAPaiEGIAAgBUEHcUECdGoCfwJAAkACQCAgDgIBAgALIAYoAABBsfPd8XlsIARzIAl2DAILIAYpAABCgICA2Mub741PfiAihSAjiKcMAQsgBikAAEKAgOz8y5vvjU9+ICKFICOIpws2AiwgBUEBaiIFIAtHDQALCyAAQQA2AtwBCyAHIQYgDCEJIBQgAyIFSQ0AA0ACQCAHIQkgDCEHIAMgCSAPamsiBCASa0F8Sw0AIBogDyAEIBJJIgobIARqIgQoAAAgAygAAEcNACAEQQRqIgwhBiADQQRqIgshBSAMAn8CQCALIBUgDSAKGyIhIAxraiIEIA0gBCANSRsiG0EDayIRIAtNDQAgCygAACIKIAwoAAAiBEcEQCAEIApzaEEDdgwCCwNAIAZBBGohBiAFQQRqIgUgEU8NASAFKAAAIgogBigAACIERg0ACyAFIAQgCnNoQQN2aiALawwBCwJAIAUgG0EBa08NACAGLwAAIAUvAABHDQAgBkECaiEGIAVBAmohBQsgBSAbSQR/IAUgBi0AACAFLQAARmoFIAULIAtrCyIEaiAhRgRAIBchBiAEIAtqIgwhBQJ/AkAgDCAZTw0AIAwoAAAiCiAGKAAAIgtHBEAgCiALc2hBA3YMAgsDQCAGQQRqIQYgBUEEaiIFIBlPDQEgBSgAACIKIAYoAAAiC0YNAAsgBSAKIAtzaEEDdmogDGsMAQsCQCAFIB5PDQAgBi8AACAFLwAARw0AIAZBAmohBiAFQQJqIQULIAUgDUkEfyAFIAYtAAAgBS0AAEZqBSAFCyAMawsgBGohBAsgAyAQTQRAIAMpAAAhIiABKAIMIgUgAykACDcACCAFICI3AAAgASgCBCEICyAIQQE2AgAgCEEAOwEEIARBAWoiBUGAgARPBEAgAUECNgIkIAEgCCABKAIAa0EDdTYCKAsgCCAFOwEGIAEgCEEIaiIINgIEIAkhDCAHIQYgBEEEaiADaiIDIQUgAyAUTQ0BDAILCyAJIQYgByEJIAMhBQsgBSAUSQ0ACwsgAiAGNgIEIAIgCTYCACAOQRBqJAAgDSADawuPHAIhfwJ+IwBBEGsiDSQAIAIoAgQhDCACKAIAIQsgACgCtAEiBSgCACEVIAUoAgQhFiAFKAIMIQUgAEEANgLcASAAKALEASEPQQRBBiAAKALIASIIIAhBBk8bIgggCEEETRshFyADIAMgACgCBCIQIAAoAgwiEmoiG2sgBSAWaiIiIBVrRmohBQJAIAAoAhwiBiAGQQggAyAEaiIJQQ9rIiMgBiAQaiIEayIIIAhBCE8bQQAgBCAJQRBrIhNNG2oiBE8NAEEYIAAoAiQiB2shCEE4IAdrrSEmIAApA1AiJ6chCiAPQQRNBEAgF0EFayEOA0AgBiAQaiEHIAAgBkEHcUECdGoCfwJAAkACQCAODgIAAQILIAcpAABCgICA2Mub741PfiAnhSAmiKcMAgsgBykAAEKAgOz8y5vvjU9+ICeFICaIpwwBCyAHKAAAQbHz3fF5bCAKcyAIdgs2AiwgBkEBaiIGIARHDQALDAELIA9BBUYEQCAXQQVrIQ4DQCAGIBBqIQcgACAGQQdxQQJ0agJ/AkACQAJAIA4OAgABAgsgBykAAEKAgIDYy5vvjU9+ICeFICaIpwwCCyAHKQAAQoCA7PzLm++NT34gJ4UgJoinDAELIAcoAABBsfPd8XlsIApzIAh2CzYCLCAGQQFqIgYgBEcNAAsMAQsgF0EFayEOA0AgBiAQaiEHIAAgBkEHcUECdGoCfwJAAkACQCAODgIBAgALIAcoAABBsfPd8XlsIApzIAh2DAILIAcpAABCgICA2Mub741PfiAnhSAmiKcMAQsgBykAAEKAgOz8y5vvjU9+ICeFICaIpws2AiwgBkEBaiIGIARHDQALCyAFIBNJBEBBBEEGIA8gD0EGTxsiBCAEQQRNGyEUIAlBIGshGCAWIBYgFWsgEmoiH2shICAJQQFrISEgCUEDayEcA0AgBUEBaiEIAn9BACAFIAsgEGoiGWtBAWoiBCASa0F8Sw0AGkEAIBYgBCAfa2ogBCAQaiAEIBJJIgQbIgcoAAAgCCgAAEcNABogBUEFaiAHQQRqIAkgFSAJIAQbIBsQD0EEagshBiANQf+T69wDNgIMAkACQAJ/AkACQAJAIBdBBGsiJEEBaw4CAQIACwJAAkACQCAUQQVrDgIBAgALIAAgBSAJIA1BDGoQfwwECyAAIAUgCSANQQxqEH4MAwsgACAFIAkgDUEMahB9DAILAkACQAJAIBRBBWsOAgECAAsgACAFIAkgDUEMahB8DAMLIAAgBSAJIA1BDGoQewwCCyAAIAUgCSANQQxqEHoMAQsCQAJAAkAgFEEFaw4CAQIACyAAIAUgCSANQQxqEHkMAgsgACAFIAkgDUEMahB4DAELIAAgBSAJIA1BDGoQdwsiBCAGIAQgBksiBBsiDkEETwRAIAUgCCAEGyEHIA0oAgxBASAEGyERAkAgBSATTw0AA0ACQCAFQQFqIgggGWsiBCASa0F8Sw0AIBYgBCAfa2ogBCAQaiAEIBJJIg8bIgQoAAAgCCgAAEcNACAEQQRqIgYhBCAFQQVqIgohBSAGAn8CQCAKIBUgCSAPGyIaIAZraiIPIAkgCSAPSxsiD0EDayIlIApNDQAgCigAACIdIAYoAAAiHkcEQCAdIB5zaEEDdgwCCwNAIARBBGohBCAFQQRqIgUgJU8NASAFKAAAIh0gBCgAACIeRg0ACyAFIB0gHnNoQQN2aiAKawwBCwJAIAUgD0EBa08NACAELwAAIAUvAABHDQAgBEECaiEEIAVBAmohBQsgBSAPSQR/IAUgBC0AACAFLQAARmoFIAULIAprCyIPaiAaRgRAIBshBCAKIA9qIgohBQJ/AkAgCiAcTw0AIAooAAAiBiAEKAAAIhpHBEAgBiAac2hBA3YMAgsDQCAEQQRqIQQgBUEEaiIFIBxPDQEgBSgAACIGIAQoAAAiGkYNAAsgBSAGIBpzaEEDdmogCmsMAQsCQCAFICFPDQAgBC8AACAFLwAARw0AIARBAmohBCAFQQJqIQULIAUgCUkEfyAFIAQtAAAgBS0AAEZqBSAFCyAKawsgD2ohDwsgD0F7Sw0AIBFnIA5BA2xqQR5rIA9BBGoiBEEDbE4NAEEBIREgCCEHIAQhDgsgDUH/k+vcAzYCCAJ/AkACQAJAICRBAWsOAgECAAsCQAJAAkAgFEEFaw4CAQIACyAAIAggCSANQQhqEH8MBAsgACAIIAkgDUEIahB+DAMLIAAgCCAJIA1BCGoQfQwCCwJAAkACQCAUQQVrDgIBAgALIAAgCCAJIA1BCGoQfAwDCyAAIAggCSANQQhqEHsMAgsgACAIIAkgDUEIahB6DAELAkACQAJAIBRBBWsOAgECAAsgACAIIAkgDUEIahB5DAILIAAgCCAJIA1BCGoQeAwBCyAAIAggCSANQQhqEHcLIgRBBEkNASANKAIIIgVnIARBAnRqQR9rIBFnIA5BAnRqQRtrTA0BIAQhDiAFIREgCCIFIQcgBSATRw0ACyATIQcLAn8gEUEESQRAIAshCiAMDAELIBFBA2shCgJAIAMgB08NACAgIBAgByAQIBFqa0EDaiIEIBJJIggbIARqIgUgIiAbIAgbIghNDQADQCAHQQFrIgQtAAAgBUEBayIFLQAARw0BIA5BAWohDiADIARJBEAgBCEHIAUgCEsNAQsLIAQhBwsgCwshCCAHIANrIQsgASgCDCEFAkACQCAHIBhNBEAgAykAACEmIAUgAykACDcACCAFICY3AAAgASgCDCEEIAtBEE0EQCABIAQgC2o2AgwgASgCBCEFDAMLIAMpABAhJiAEIAMpABg3ABggBCAmNwAQIAtBIUgNASAEIAtqIQwgA0EQaiEFIARBIGohAwNAIAUpABAhJiADIAUpABg3AAggAyAmNwAAIAUpACAhJiADIAUpACg3ABggAyAmNwAQIAVBIGohBSADQSBqIgMgDEkNAAsMAQsgAyAYTQRAIAMpAAAhJiAFIAMpAAg3AAggBSAmNwAAIAUgGCADayIMaiEEIAxBEU4EQCAFQRBqIQUDQCADKQAQISYgBSADKQAYNwAIIAUgJjcAACADKQAgISYgBSADKQAoNwAYIAUgJjcAECADQSBqIQMgBUEgaiIFIARJDQALCyAEIQUgGCEDCyADIAdPDQBBACEEIAMhBiAHIANrQQdxIgwEQANAIAUgBi0AADoAACAFQQFqIQUgBkEBaiEGIARBAWoiBCAMRw0ACwsgAyAHa0F4Sw0AA0AgBSAGLQAAOgAAIAUgBi0AAToAASAFIAYtAAI6AAIgBSAGLQADOgADIAUgBi0ABDoABCAFIAYtAAU6AAUgBSAGLQAGOgAGIAUgBi0ABzoAByAFQQhqIQUgBkEIaiIGIAdHDQALCyABIAEoAgwgC2o2AgwgASgCBCEFIAtBgIAESQ0AIAFBATYCJCABIAUgASgCAGtBA3U2AigLIAUgETYCACAFIAs7AQQgDkEDayIDQYCABE8EQCABQQI2AiQgASAFIAEoAgBrQQN1NgIoCyAFIAM7AQYgASAFQQhqIgQ2AgQgByAOaiEDIAAoAtwBBEAgACgCHCIFIAVBCCAjIAUgEGoiC2siByAHQQhPG0EAIAsgE00baiIHSQRAQRggACgCJCILayEMQTggC2utISYgACkDUCInpyEOA0AgBSAQaiELIAAgBUEHcUECdGoCfwJAAkACQCAXQQVrDgIBAgALIAsoAABBsfPd8XlsIA5zIAx2DAILIAspAABCgICA2Mub741PfiAnhSAmiKcMAQsgCykAAEKAgOz8y5vvjU9+ICeFICaIpws2AiwgBUEBaiIFIAdHDQALCyAAQQA2AtwBCyAIIQwgCiELIBMgAyIFSQ0CA0AgCCELIAohCCADIAsgEGprIgUgEmtBfEsNAiAgIBAgBSASSSIHGyAFaiIFKAAAIAMoAABHDQIgBUEEaiIKIQYgA0EEaiIMIQUgCgJ/AkAgDCAVIAkgBxsiDiAKa2oiByAJIAcgCUkbIgdBA2siESAMTQ0AIAwoAAAiDyAKKAAAIhlHBEAgDyAZc2hBA3YMAgsDQCAGQQRqIQYgBUEEaiIFIBFPDQEgBSgAACIPIAYoAAAiGUYNAAsgBSAPIBlzaEEDdmogDGsMAQsCQCAFIAdBAWtPDQAgBi8AACAFLwAARw0AIAZBAmohBiAFQQJqIQULIAUgB0kEfyAFIAYtAAAgBS0AAEZqBSAFCyAMawsiB2ogDkYEQCAbIQYgByAMaiIMIQUCfwJAIAwgHE8NACAMKAAAIgogBigAACIORwRAIAogDnNoQQN2DAILA0AgBkEEaiEGIAVBBGoiBSAcTw0BIAUoAAAiCiAGKAAAIg5GDQALIAUgCiAOc2hBA3ZqIAxrDAELAkAgBSAhTw0AIAYvAAAgBS8AAEcNACAGQQJqIQYgBUECaiEFCyAFIAlJBH8gBSAGLQAAIAUtAABGagUgBQsgDGsLIAdqIQcLIAMgGE0EQCADKQAAISYgASgCDCIEIAMpAAg3AAggBCAmNwAAIAEoAgQhBAsgBEEBNgIAIARBADsBBCAHQQFqIgVBgIAETwRAIAFBAjYCJCABIAQgASgCAGtBA3U2AigLIAQgBTsBBiABIARBCGoiBDYCBCALIQogCCEMIAdBBGogA2oiAyEFIAMgE00NAAsMAgsgACAFIANrIgRB/w9LNgLcASAEQQh2IAVqQQFqIQUMAQsgCyEMIAghCyADIQULIAUgE0kNAAsLIAIgDDYCBCACIAs2AgAgDUEQaiQAIAkgA2sLEAAjACAAa0FwcSIAJAAgAAukHwIifwJ+IwBBEGsiCyQAIAIoAgQhDyACKAIAIQ0gACgCtAEiBSgCACEWIAUoAgQhFyAFKAIMIQUgAEEANgLcASAAKALEASEOQQRBBiAAKALIASIGIAZBBk8bIgYgBkEETRshGCADIAMgACgCBCIQIAAoAgwiE2oiGWsgBSAXaiIkIBZrRmohBQJAIAAoAhwiBiAGQQggAyAEaiIHQQ9rIiUgBiAQaiIEayIJIAlBCE8bQQAgBCAHQRBrIhVNG2oiBE8NAEEYIAAoAiQiCGshCUE4IAhrrSEnIAApA1AiKKchDCAOQQRNBEAgGEEFayEKA0AgBiAQaiEIIAAgBkEHcUECdGoCfwJAAkACQCAKDgIAAQILIAgpAABCgICA2Mub741PfiAohSAniKcMAgsgCCkAAEKAgOz8y5vvjU9+ICiFICeIpwwBCyAIKAAAQbHz3fF5bCAMcyAJdgs2AiwgBkEBaiIGIARHDQALDAELIA5BBUYEQCAYQQVrIQoDQCAGIBBqIQggACAGQQdxQQJ0agJ/AkACQAJAIAoOAgABAgsgCCkAAEKAgIDYy5vvjU9+ICiFICeIpwwCCyAIKQAAQoCA7PzLm++NT34gKIUgJ4inDAELIAgoAABBsfPd8XlsIAxzIAl2CzYCLCAGQQFqIgYgBEcNAAsMAQsgGEEFayEKA0AgBiAQaiEIIAAgBkEHcUECdGoCfwJAAkACQCAKDgIBAgALIAgoAABBsfPd8XlsIAxzIAl2DAILIAgpAABCgICA2Mub741PfiAohSAniKcMAQsgCCkAAEKAgOz8y5vvjU9+ICiFICeIpws2AiwgBkEBaiIGIARHDQALCyAFIBVJBEBBBEEGIA4gDkEGTxsiBCAEQQRNGyEUIAdBIGshGiAXIBcgFmsgE2oiHWshICAHQQFrISEgB0EDayEcA0AgBUEBaiEJAn9BACAFIA0gEGoiImtBAWoiBCATa0F8Sw0AGkEAIBcgBCAda2ogBCAQaiAEIBNJIgQbIggoAAAgCSgAAEcNABogBUEFaiAIQQRqIAcgFiAHIAQbIBkQD0EEagshBiALQf+T69wDNgIMAkACQAJ/AkACQAJAIBhBBGsiI0EBaw4CAQIACwJAAkACQCAUQQVrDgIBAgALIAAgBSAHIAtBDGoQfwwECyAAIAUgByALQQxqEH4MAwsgACAFIAcgC0EMahB9DAILAkACQAJAIBRBBWsOAgECAAsgACAFIAcgC0EMahB8DAMLIAAgBSAHIAtBDGoQewwCCyAAIAUgByALQQxqEHoMAQsCQAJAAkAgFEEFaw4CAQIACyAAIAUgByALQQxqEHkMAgsgACAFIAcgC0EMahB4DAELIAAgBSAHIAtBDGoQdwsiCiAGIAYgCkkiBBsiCEEETwRAIAUgCSAEGyEJIAsoAgxBASAEGyERAkAgBSAVTw0AA0ACQCAFQQFqIgQgImsiBiATa0F8Sw0AIBcgBiAda2ogBiAQaiAGIBNJIg4bIgYoAAAgBCgAAEcNACAGQQRqIhIhCiAFQQVqIgwhBiASAn8CQCAMIBYgByAOGyIbIBJraiIOIAcgByAOSxsiDkEDayImIAxNDQAgDCgAACIeIBIoAAAiH0cEQCAeIB9zaEEDdgwCCwNAIApBBGohCiAGQQRqIgYgJk8NASAGKAAAIh4gCigAACIfRg0ACyAGIB4gH3NoQQN2aiAMawwBCwJAIAYgDkEBa08NACAKLwAAIAYvAABHDQAgCkECaiEKIAZBAmohBgsgBiAOSQR/IAYgCi0AACAGLQAARmoFIAYLIAxrCyIOaiAbRgRAIBkhCiAMIA5qIgwhBgJ/AkAgDCAcTw0AIAwoAAAiEiAKKAAAIhtHBEAgEiAbc2hBA3YMAgsDQCAKQQRqIQogBkEEaiIGIBxPDQEgBigAACISIAooAAAiG0YNAAsgBiASIBtzaEEDdmogDGsMAQsCQCAGICFPDQAgCi8AACAGLwAARw0AIApBAmohCiAGQQJqIQYLIAYgB0kEfyAGIAotAAAgBi0AAEZqBSAGCyAMawsgDmohDgsgDkF7Sw0AIBFnIAhBA2xqQR5rIA5BBGoiBkEDbE4NAEEBIREgBCEJIAYhCAsgC0H/k+vcAzYCCAJ/AkACfwJAAkACQCAjQQFrDgIBAgALAkACQAJAIBRBBWsOAgECAAsgACAEIAcgC0EIahB/DAQLIAAgBCAHIAtBCGoQfgwDCyAAIAQgByALQQhqEH0MAgsCQAJAAkAgFEEFaw4CAQIACyAAIAQgByALQQhqEHwMAwsgACAEIAcgC0EIahB7DAILIAAgBCAHIAtBCGoQegwBCwJAAkACQCAUQQVrDgIBAgALIAAgBCAHIAtBCGoQeQwCCyAAIAQgByALQQhqEHgMAQsgACAEIAcgC0EIahB3CyIGQQRJDQAgCygCCCIMZyAGQQJ0akEfayARZyAIQQJ0akEba0wNACAMIREgBiEIIAQMAQsgBCAVTw0CAkAgBUECaiIEICJrIgYgE2tBfEsNACAXIAYgHWtqIAYgEGogBiATSSIGGyIMKAAAIAQoAABHDQAgBUEGaiAMQQRqIAcgFiAHIAYbIBkQDyIFQXtLDQAgEWcgCEECdGpBHmsgBUEEaiIFQQJ0Tg0AQQEhESAEIQkgBSEICyALQf+T69wDNgIEAn8CQAJAAkAgI0EBaw4CAQIACwJAAkACQCAUQQVrDgIBAgALIAAgBCAHIAtBBGoQfwwECyAAIAQgByALQQRqEH4MAwsgACAEIAcgC0EEahB9DAILAkACQAJAIBRBBWsOAgECAAsgACAEIAcgC0EEahB8DAMLIAAgBCAHIAtBBGoQewwCCyAAIAQgByALQQRqEHoMAQsCQAJAAkAgFEEFaw4CAQIACyAAIAQgByALQQRqEHkMAgsgACAEIAcgC0EEahB4DAELIAAgBCAHIAtBBGoQdwsiBkEESQ0CIAsoAgQiDGcgBkECdGpBH2sgEWcgCEECdGpBGGtMDQIgDCERIAYhCCAECyIFIQkgBSAVSQ0ACwsCfyARQQRJBEAgDSEMIA8MAQsgEUEDayEMAkAgAyAJTw0AICAgECAJIBAgEWprQQNqIgQgE0kiBhsgBGoiBSAkIBkgBhsiBk0NAANAIAlBAWsiBC0AACAFQQFrIgUtAABHDQEgCEEBaiEIIAMgBEkEQCAEIQkgBSAGSw0BCwsgBCEJCyANCyEEIAkgA2shDSABKAIMIQUCQAJAIAkgGk0EQCADKQAAIScgBSADKQAINwAIIAUgJzcAACABKAIMIQYgDUEQTQRAIAEgBiANajYCDCABKAIEIQUMAwsgAykAECEnIAYgAykAGDcAGCAGICc3ABAgDUEhSA0BIAYgDWohDyADQRBqIQUgBkEgaiEDA0AgBSkAECEnIAMgBSkAGDcACCADICc3AAAgBSkAICEnIAMgBSkAKDcAGCADICc3ABAgBUEgaiEFIANBIGoiAyAPSQ0ACwwBCyADIBpNBEAgAykAACEnIAUgAykACDcACCAFICc3AAAgBSAaIANrIg9qIQYgD0ERTgRAIAVBEGohBQNAIAMpABAhJyAFIAMpABg3AAggBSAnNwAAIAMpACAhJyAFIAMpACg3ABggBSAnNwAQIANBIGohAyAFQSBqIgUgBkkNAAsLIAYhBSAaIQMLIAMgCU8NAEEAIQogCSADIgZrQQdxIg8EQANAIAUgBi0AADoAACAFQQFqIQUgBkEBaiEGIApBAWoiCiAPRw0ACwsgAyAJa0F4Sw0AA0AgBSAGLQAAOgAAIAUgBi0AAToAASAFIAYtAAI6AAIgBSAGLQADOgADIAUgBi0ABDoABCAFIAYtAAU6AAUgBSAGLQAGOgAGIAUgBi0ABzoAByAFQQhqIQUgBkEIaiIGIAlHDQALCyABIAEoAgwgDWo2AgwgASgCBCEFIA1BgIAESQ0AIAFBATYCJCABIAUgASgCAGtBA3U2AigLIAUgETYCACAFIA07AQQgCEEDayIDQYCABE8EQCABQQI2AiQgASAFIAEoAgBrQQN1NgIoCyAFIAM7AQYgASAFQQhqIgo2AgQgCCAJaiEDIAAoAtwBBEAgACgCHCIFIAVBCCAlIAUgEGoiBmsiDSANQQhPG0EAIAYgFU0baiINSQRAQRggACgCJCIGayEJQTggBmutIScgACkDUCIopyEIA0AgBSAQaiEGIAAgBUEHcUECdGoCfwJAAkACQCAYQQVrDgIBAgALIAYoAABBsfPd8XlsIAhzIAl2DAILIAYpAABCgICA2Mub741PfiAohSAniKcMAQsgBikAAEKAgOz8y5vvjU9+ICiFICeIpws2AiwgBUEBaiIFIA1HDQALCyAAQQA2AtwBCyAEIQ8gDCENIBUgAyIFSQ0CA0AgBCENIAwhBCADIA0gEGprIgUgE2tBfEsNAiAgIBAgBSATSSIIGyAFaiIFKAAAIAMoAABHDQIgBUEEaiIPIQYgA0EEaiIJIQUgDwJ/AkAgCSAWIAcgCBsiDCAPa2oiCCAHIAcgCEsbIghBA2siESAJTQ0AIAkoAAAiEiAPKAAAIg5HBEAgDiASc2hBA3YMAgsDQCAGQQRqIQYgBUEEaiIFIBFPDQEgBSgAACISIAYoAAAiDkYNAAsgBSAOIBJzaEEDdmogCWsMAQsCQCAFIAhBAWtPDQAgBi8AACAFLwAARw0AIAZBAmohBiAFQQJqIQULIAUgCEkEfyAFIAYtAAAgBS0AAEZqBSAFCyAJawsiCGogDEYEQCAZIQYgCCAJaiIJIQUCfwJAIAkgHE8NACAJKAAAIg8gBigAACIMRwRAIAwgD3NoQQN2DAILA0AgBkEEaiEGIAVBBGoiBSAcTw0BIAUoAAAiDyAGKAAAIgxGDQALIAUgDCAPc2hBA3ZqIAlrDAELAkAgBSAhTw0AIAYvAAAgBS8AAEcNACAGQQJqIQYgBUECaiEFCyAFIAdJBH8gBSAGLQAAIAUtAABGagUgBQsgCWsLIAhqIQgLIAMgGk0EQCADKQAAIScgASgCDCIFIAMpAAg3AAggBSAnNwAAIAEoAgQhCgsgCkEBNgIAIApBADsBBCAIQQFqIgVBgIAETwRAIAFBAjYCJCABIAogASgCAGtBA3U2AigLIAogBTsBBiABIApBCGoiCjYCBCANIQwgBCEPIAhBBGogA2oiAyEFIAMgFU0NAAsMAgsgACAFIANrIgRB/w9LNgLcASAEQQh2IAVqQQFqIQUMAQsgDSEPIAQhDSADIQULIAUgFUkNAAsLIAIgDzYCBCACIA02AgAgC0EQaiQAIAcgA2sLoBUCGX8CfiMAQRBrIg0kACACKAIEIRUgAigCACETIABBADYC3AEgEyADIAAoAgQiECAAKAIMIgdqIhggA0ZqIgUgEGsiCCAHIAhBASAAKAK4AXQiCmsgByAIIAdrIApLGyAAKAIYG2siB0shFiAHIBVJIRkgACgCxAEhCUEEQQYgACgCyAEiByAHQQZPGyIHIAdBBE0bIQgCQCAAKAIcIgYgBkEIIAMgBGoiDEEPayIbIAYgEGoiBGsiByAHQQhPG0EAIAQgDEEQayISTRtqIgdPDQBBGCAAKAIkIgRrIQpBOCAEa60hHiAAKQNQIh+nIQ4gCUEETQRAIAhBBWshCwNAIAYgEGohBCAAIAZBB3FBAnRqAn8CQAJAAkAgCw4CAAECCyAEKQAAQoCAgNjLm++NT34gH4UgHoinDAILIAQpAABCgIDs/Mub741PfiAfhSAeiKcMAQsgBCgAAEGx893xeWwgDnMgCnYLNgIsIAZBAWoiBiAHRw0ACwwBCyAJQQVGBEAgCEEFayELA0AgBiAQaiEEIAAgBkEHcUECdGoCfwJAAkACQCALDgIAAQILIAQpAABCgICA2Mub741PfiAfhSAeiKcMAgsgBCkAAEKAgOz8y5vvjU9+IB+FIB6IpwwBCyAEKAAAQbHz3fF5bCAOcyAKdgs2AiwgBkEBaiIGIAdHDQALDAELIAhBBWshCwNAIAYgEGohBCAAIAZBB3FBAnRqAn8CQAJAAkAgCw4CAQIACyAEKAAAQbHz3fF5bCAOcyAKdgwCCyAEKQAAQoCAgNjLm++NT34gH4UgHoinDAELIAQpAABCgIDs/Mub741PfiAfhSAeiKcLNgIsIAZBAWoiBiAHRw0ACwtBACATIBYbIQdBACAVIBkbIQogBSASSQRAQQRBBiAJIAlBBk8bIgQgBEEETRshFyAMQSBrIQ4gDEEBayEaIAxBA2shFCAIQQVrIRwgCEEEayEdA0ACQAJ/An8CQAJAIAdFDQAgBUEBaiIEIAdrKAAAIAUoAAFHDQAgBUEFaiIIIAdrIQYgCCAUTwRAIAghBQwCCyAIIgUoAAAiCyAGKAAAIglHBEAgCSALc2hBA3YMAwsDQCAGQQRqIQYgBUEEaiIFIBRPDQIgBSgAACILIAYoAAAiCUYNAAsgBSAJIAtzaEEDdmogCGsMAgsgDUH/k+vcAzYCDAJ/AkACQAJAIB1BAWsOAgECAAsCQAJAAkAgF0EFaw4CAQIACyAAIAUgDCANQQxqEIgBDAQLIAAgBSAMIA1BDGoQhwEMAwsgACAFIAwgDUEMahCGAQwCCwJAAkACQCAXQQVrDgIBAgALIAAgBSAMIA1BDGoQhQEMAwsgACAFIAwgDUEMahCEAQwCCyAAIAUgDCANQQxqEIMBDAELAkACQAJAIBdBBWsOAgECAAsgACAFIAwgDUEMahCCAQwCCyAAIAUgDCANQQxqEIEBDAELIAAgBSAMIA1BDGoQgAELIgtBA00EQCAAIAUgA2siBEH/D0s2AtwBIARBCHYgBWpBAWohBQwECyANKAIMIhFBBEkEQCAFIQQgBwwDCwJAIAMgBU8EQCAFIQQMAQsgBSEEIAVBAyARayIIaiAYTQ0AA0AgBUEBayIELQAAIAQgCGoiCi0AAEcEQCAFIQQMAgsgC0EBaiELIAMgBE8NASAEIQUgCiAYSw0ACwsgByEKIBFBA2sMAgsCQCAFIBpPDQAgBi8AACAFLwAARw0AIAZBAmohBiAFQQJqIQULIAUgDEkEfyAFIAYtAAAgBS0AAEZqBSAFCyAIawtBBGohC0EBIREgBwshCCAEIANrIQ8gASgCDCEFAkACQCAEIA5NBEAgAykAACEeIAUgAykACDcACCAFIB43AAAgASgCDCEHIA9BEE0EQCABIAcgD2o2AgwgASgCBCEFDAMLIAMpABAhHiAHIAMpABg3ABggByAeNwAQIA9BIUgNASAHIA9qIQkgA0EQaiEFIAdBIGohBgNAIAUpABAhHiAGIAUpABg3AAggBiAeNwAAIAUpACAhHiAGIAUpACg3ABggBiAeNwAQIAVBIGohBSAGQSBqIgYgCUkNAAsMAQsgAyAOTQRAIAMpAAAhHiAFIAMpAAg3AAggBSAeNwAAIAUgDiADayIGaiEHIAZBEU4EQCAFQRBqIQUDQCADKQAQIR4gBSADKQAYNwAIIAUgHjcAACADKQAgIR4gBSADKQAoNwAYIAUgHjcAECADQSBqIQMgBUEgaiIFIAdJDQALCyAHIQUgDiEDCyADIARPDQBBACEJIAQgAyIGa0EHcSIHBEADQCAFIAYtAAA6AAAgBUEBaiEFIAZBAWohBiAJQQFqIgkgB0cNAAsLIAMgBGtBeEsNAANAIAUgBi0AADoAACAFIAYtAAE6AAEgBSAGLQACOgACIAUgBi0AAzoAAyAFIAYtAAQ6AAQgBSAGLQAFOgAFIAUgBi0ABjoABiAFIAYtAAc6AAcgBUEIaiEFIAZBCGoiBiAERw0ACwsgASABKAIMIA9qNgIMIAEoAgQhBSAPQYCABEkNACABQQE2AiQgASAFIAEoAgBrQQN1NgIoCyAFIBE2AgAgBSAPOwEEIAtBA2siA0GAgARPBEAgAUECNgIkIAEgBSABKAIAa0EDdTYCKAsgBSADOwEGIAEgBUEIaiIJNgIEIAAoAtwBBEAgACgCHCIFIAVBCCAbIAUgEGoiA2siByAHQQhPG0EAIAMgEk0baiIHSQRAQRggACgCJCIDayEPQTggA2utIR4gACkDUCIfpyERA0AgBSAQaiEDIAAgBUEHcUECdGoCfwJAAkACQCAcDgIBAgALIAMoAABBsfPd8XlsIBFzIA92DAILIAMpAABCgICA2Mub741PfiAfhSAeiKcMAQsgAykAAEKAgOz8y5vvjU9+IB+FIB6Ipws2AiwgBUEBaiIFIAdHDQALCyAAQQA2AtwBCyAEIAtqIQMgCkUEQCAIIQcgAyEFDAELIAohBCAIIQcgEiADIgVJDQADQCAEIQcgCCEEIAMoAAAgAyAHaygAAEcEQCAHIQogBCEHIAMhBQwCCyADQQRqIgggB2shBgJ/AkAgCCAUTwRAIAghBQwBCyAIIgUoAAAiCiAGKAAAIgtHBEAgCiALc2hBA3YMAgsDQCAGQQRqIQYgBUEEaiIFIBRPDQEgBSgAACIKIAYoAAAiC0YNAAsgBSAKIAtzaEEDdmogCGsMAQsCQCAFIBpPDQAgBi8AACAFLwAARw0AIAZBAmohBiAFQQJqIQULIAUgDEkEfyAFIAYtAAAgBS0AAEZqBSAFCyAIawshBSADIA5NBEAgAykAACEeIAEoAgwiCCADKQAINwAIIAggHjcAACABKAIEIQkLIAlBATYCACAJQQA7AQQgBUEBaiIIQYCABE8EQCABQQI2AiQgASAJIAEoAgBrQQN1NgIoCyAJIAg7AQYgASAJQQhqIgk2AgQgBUEEaiADaiEDIARFBEAgBCEKIAMhBQwCCyAHIQggBCEKIBIgAyIFTw0ACwsgBSASSQ0ACwsgAiAHIBNBACAWGyAHGzYCACACIAogEyAVQQAgGRsiACAHGyAAIBYbIAobNgIEIA1BEGokACAMIANrC6caAht/An4jAEEQayIMJAAgAigCBCEXIAIoAgAhFiAAQQA2AtwBIBYgAyAAKAIEIg8gACgCDCIFaiIcIANGaiIGIA9rIgggBSAIQQEgACgCuAF0IgdrIAUgCCAFayAHSxsgACgCGBtrIgVLIRggBSAXSSEdIAAoAsQBIQ1BBEEGIAAoAsgBIgUgBUEGTxsiBSAFQQRNGyEUAkAgACgCHCIFIAVBCCADIARqIgtBD2siHyAFIA9qIgRrIgggCEEITxtBACAEIAtBEGsiEE0baiIITw0AQRggACgCJCIEayEHQTggBGutISAgACkDUCIhpyEJIA1BBE0EQCAUQQVrIQoDQCAFIA9qIQQgACAFQQdxQQJ0agJ/AkACQAJAIAoOAgABAgsgBCkAAEKAgIDYy5vvjU9+ICGFICCIpwwCCyAEKQAAQoCA7PzLm++NT34gIYUgIIinDAELIAQoAABBsfPd8XlsIAlzIAd2CzYCLCAFQQFqIgUgCEcNAAsMAQsgDUEFRgRAIBRBBWshCgNAIAUgD2ohBCAAIAVBB3FBAnRqAn8CQAJAAkAgCg4CAAECCyAEKQAAQoCAgNjLm++NT34gIYUgIIinDAILIAQpAABCgIDs/Mub741PfiAhhSAgiKcMAQsgBCgAAEGx893xeWwgCXMgB3YLNgIsIAVBAWoiBSAIRw0ACwwBCyAUQQVrIQoDQCAFIA9qIQQgACAFQQdxQQJ0agJ/AkACQAJAIAoOAgECAAsgBCgAAEGx893xeWwgCXMgB3YMAgsgBCkAAEKAgIDYy5vvjU9+ICGFICCIpwwBCyAEKQAAQoCA7PzLm++NT34gIYUgIIinCzYCLCAFQQFqIgUgCEcNAAsLQQAgFiAYGyEJQQAgFyAdGyEKIAYgEEkEQEEEQQYgDSANQQZPGyIEIARBBE0bIRIgC0EgayEVIAtBAWshGSALQQNrIRMgFEEEayEeA0BBACAJayERIAZBAWohDQJ/QQAgCUUNABpBACANIAlrKAAAIAYoAAFHDQAaIAZBBWoiCCARaiEEAn8CQCAIIBNPBEAgCCEFDAELIAgiBSgAACIHIAQoAAAiDkcEQCAHIA5zaEEDdgwCCwNAIARBBGohBCAFQQRqIgUgE08NASAFKAAAIgcgBCgAACIORg0ACyAFIAcgDnNoQQN2aiAIawwBCwJAIAUgGU8NACAELwAAIAUvAABHDQAgBEECaiEEIAVBAmohBQsgBSALSQR/IAUgBC0AACAFLQAARmoFIAULIAhrC0EEagshBSAMQf+T69wDNgIMAkACfwJAAkACQCAeQQFrDgIBAgALAkACQAJAIBJBBWsOAgECAAsgACAGIAsgDEEMahCIAQwECyAAIAYgCyAMQQxqEIcBDAMLIAAgBiALIAxBDGoQhgEMAgsCQAJAAkAgEkEFaw4CAQIACyAAIAYgCyAMQQxqEIUBDAMLIAAgBiALIAxBDGoQhAEMAgsgACAGIAsgDEEMahCDAQwBCwJAAkACQCASQQVrDgIBAgALIAAgBiALIAxBDGoQggEMAgsgACAGIAsgDEEMahCBAQwBCyAAIAYgCyAMQQxqEIABCyIEIAUgBCAFSyIEGyIHQQRPBEAgBiANIAQbIg0hBSAMKAIMQQEgBBsiCCEEIAchDgJAIAYgEE8NAANAIAZBAWohBQJAIAhFBEBBACEIDAELIAlFDQAgBSgAACAFIBFqKAAARw0AIAZBBWoiDiARaiEEIAhnIAdBA2xqQR5rAn8CQAJAIA4gE08EQCAOIQYMAQsgDiIGKAAAIhogBCgAACIbRwRAIBogG3NoQQN2QQRyDAMLA0AgBEEEaiEEIAZBBGoiBiATTw0BIAYoAAAiGiAEKAAAIhtGDQALIAYgGiAbc2hBA3ZqIQYMAQsCQCAGIBlPDQAgBC8AACAGLwAARw0AIARBAmohBCAGQQJqIQYLIAYgC08NACAGIAQtAAAgBi0AAEZqIQYLIAYgDmsiBEF7Sw0BIARBBGoLIgZBA2xODQBBASEIIAUhDSAGIQcLIAxB/5Pr3AM2AggCQAJ/AkACQAJAIB5BAWsOAgECAAsCQAJAAkAgEkEFaw4CAQIACyAAIAUgCyAMQQhqEIgBDAQLIAAgBSALIAxBCGoQhwEMAwsgACAFIAsgDEEIahCGAQwCCwJAAkACQCASQQVrDgIBAgALIAAgBSALIAxBCGoQhQEMAwsgACAFIAsgDEEIahCEAQwCCyAAIAUgCyAMQQhqEIMBDAELAkACQAJAIBJBBWsOAgECAAsgACAFIAsgDEEIahCCAQwCCyAAIAUgCyAMQQhqEIEBDAELIAAgBSALIAxBCGoQgAELIg5BBEkNACAMKAIIIgRnIA5BAnRqQR9rIAhnIAdBAnRqQRtrTA0AIAUhBiAOIQcgBCEIIAUhDSAFIBBJDQEMAgsLIA0hBSAIIQQgByEOCwJ/IARBBEkEQCAFIQcgCSENIAoMAQsCQCADIAVPBEAgBSEHDAELIAUhByAFQQMgBGsiCGogHE0NAANAIAVBAWsiBy0AACAHIAhqIgYtAABHBEAgBSEHDAILIA5BAWohDiADIAdPDQEgByEFIAYgHEsNAAsLIARBA2shDSAJCyEIIAcgA2shCiABKAIMIQUCQAJAIAcgFU0EQCADKQAAISAgBSADKQAINwAIIAUgIDcAACABKAIMIQYgCkEQTQRAIAEgBiAKajYCDCABKAIEIQUMAwsgAykAECEgIAYgAykAGDcAGCAGICA3ABAgCkEhSA0BIAYgCmohCSADQRBqIQUgBkEgaiEGA0AgBSkAECEgIAYgBSkAGDcACCAGICA3AAAgBSkAICEgIAYgBSkAKDcAGCAGICA3ABAgBUEgaiEFIAZBIGoiBiAJSQ0ACwwBCyADIBVNBEAgAykAACEgIAUgAykACDcACCAFICA3AAAgBSAVIANrIglqIQYgCUERTgRAIAVBEGohBQNAIAMpABAhICAFIAMpABg3AAggBSAgNwAAIAMpACAhICAFIAMpACg3ABggBSAgNwAQIANBIGohAyAFQSBqIgUgBkkNAAsLIAYhBSAVIQMLIAMgB08NAEEAIQkgByADIgZrQQdxIhEEQANAIAUgBi0AADoAACAFQQFqIQUgBkEBaiEGIAlBAWoiCSARRw0ACwsgAyAHa0F4Sw0AA0AgBSAGLQAAOgAAIAUgBi0AAToAASAFIAYtAAI6AAIgBSAGLQADOgADIAUgBi0ABDoABCAFIAYtAAU6AAUgBSAGLQAGOgAGIAUgBi0ABzoAByAFQQhqIQUgBkEIaiIGIAdHDQALCyABIAEoAgwgCmo2AgwgASgCBCEFIApBgIAESQ0AIAFBATYCJCABIAUgASgCAGtBA3U2AigLIAUgBDYCACAFIAo7AQQgDkEDayIDQYCABE8EQCABQQI2AiQgASAFIAEoAgBrQQN1NgIoCyAFIAM7AQYgASAFQQhqIgQ2AgQgACgC3AEEQCAAKAIcIgUgBUEIIB8gBSAPaiIDayIGIAZBCE8bQQAgAyAQTRtqIglJBEBBGCAAKAIkIgNrIQpBOCADa60hICAAKQNQIiGnIREDQCAFIA9qIQMgACAFQQdxQQJ0agJ/AkACQAJAIBRBBWsOAgECAAsgAygAAEGx893xeWwgEXMgCnYMAgsgAykAAEKAgIDYy5vvjU9+ICGFICCIpwwBCyADKQAAQoCA7PzLm++NT34gIYUgIIinCzYCLCAFQQFqIgUgCUcNAAsLIABBADYC3AELIAcgDmohAyAIRQRAIAghCiANIQkgAyEGDAILIAghCiANIQkgECADIgZJDQEDQCAIIQkgDSEIIAMoAAAgAyAJaygAAEcEQCAJIQogCCEJIAMhBgwDCyADQQRqIgcgCWshBgJ/AkAgByATTwRAIAchBQwBCyAHIgUoAAAiCiAGKAAAIg1HBEAgCiANc2hBA3YMAgsDQCAGQQRqIQYgBUEEaiIFIBNPDQEgBSgAACIKIAYoAAAiDUYNAAsgBSAKIA1zaEEDdmogB2sMAQsCQCAFIBlPDQAgBi8AACAFLwAARw0AIAZBAmohBiAFQQJqIQULIAUgC0kEfyAFIAYtAAAgBS0AAEZqBSAFCyAHawshBSADIBVNBEAgAykAACEgIAEoAgwiBCADKQAINwAIIAQgIDcAACABKAIEIQQLIARBATYCACAEQQA7AQQgBUEBaiIGQYCABE8EQCABQQI2AiQgASAEIAEoAgBrQQN1NgIoCyAEIAY7AQYgASAEQQhqIgQ2AgQgBUEEaiADaiEDIAhFBEAgCCEKIAMhBgwDCyAJIQ0gCCEKIBAgAyIGTw0ACwwBCyAAIAYgA2siBEH/D0s2AtwBIARBCHYgBmpBAWohBgsgBiAQSQ0ACwsgAiAJIBZBACAYGyAJGzYCACACIAogFiAXQQAgHRsiACAJGyAAIBgbIAobNgIEIAxBEGokACALIANrCwYAIAAkAAvIHgIcfwJ+IwBBEGsiCyQAIAIoAgQhGiACKAIAIRggAEEANgLcASAYIAMgACgCBCITIAAoAgwiCWoiHiADRmoiBSATayIHIAkgB0EBIAAoArgBdCIGayAJIAcgCWsgBksbIAAoAhgbayIJSyEbIAkgGkkhHyAAKALEASEIQQRBBiAAKALIASIJIAlBBk8bIgkgCUEETRshFQJAIAAoAhwiBiAGQQggAyAEaiIKQQ9rIiAgBiATaiIEayIJIAlBCE8bQQAgBCAKQRBrIhFNG2oiCU8NAEEYIAAoAiQiBGshB0E4IARrrSEhIAApA1AiIqchDCAIQQRNBEAgFUEFayENA0AgBiATaiEEIAAgBkEHcUECdGoCfwJAAkACQCANDgIAAQILIAQpAABCgICA2Mub741PfiAihSAhiKcMAgsgBCkAAEKAgOz8y5vvjU9+ICKFICGIpwwBCyAEKAAAQbHz3fF5bCAMcyAHdgs2AiwgBkEBaiIGIAlHDQALDAELIAhBBUYEQCAVQQVrIQ0DQCAGIBNqIQQgACAGQQdxQQJ0agJ/AkACQAJAIA0OAgABAgsgBCkAAEKAgIDYy5vvjU9+ICKFICGIpwwCCyAEKQAAQoCA7PzLm++NT34gIoUgIYinDAELIAQoAABBsfPd8XlsIAxzIAd2CzYCLCAGQQFqIgYgCUcNAAsMAQsgFUEFayENA0AgBiATaiEEIAAgBkEHcUECdGoCfwJAAkACQCANDgIBAgALIAQoAABBsfPd8XlsIAxzIAd2DAILIAQpAABCgICA2Mub741PfiAihSAhiKcMAQsgBCkAAEKAgOz8y5vvjU9+ICKFICGIpws2AiwgBkEBaiIGIAlHDQALC0EAIBggGxshDEEAIBogHxshDSAFIBFJBEBBBEEGIAggCEEGTxsiBCAEQQRNGyEQIApBIGshFiAKQQFrIRkgCkEDayESIBVBBGshHANAQQAgDGshFyAFQQFqIQcCf0EAIAxFDQAaQQAgByAMaygAACAFKAABRw0AGiAFQQVqIgkgF2ohBAJ/AkAgCSASTwRAIAkhBgwBCyAJIgYoAAAiCCAEKAAAIg5HBEAgCCAOc2hBA3YMAgsDQCAEQQRqIQQgBkEEaiIGIBJPDQEgBigAACIIIAQoAAAiDkYNAAsgBiAIIA5zaEEDdmogCWsMAQsCQCAGIBlPDQAgBC8AACAGLwAARw0AIARBAmohBCAGQQJqIQYLIAYgCkkEfyAGIAQtAAAgBi0AAEZqBSAGCyAJawtBBGoLIQYgC0H/k+vcAzYCDAJAAn8CQAJAAkAgHEEBaw4CAQIACwJAAkACQCAQQQVrDgIBAgALIAAgBSAKIAtBDGoQiAEMBAsgACAFIAogC0EMahCHAQwDCyAAIAUgCiALQQxqEIYBDAILAkACQAJAIBBBBWsOAgECAAsgACAFIAogC0EMahCFAQwDCyAAIAUgCiALQQxqEIQBDAILIAAgBSAKIAtBDGoQgwEMAQsCQAJAAkAgEEEFaw4CAQIACyAAIAUgCiALQQxqEIIBDAILIAAgBSAKIAtBDGoQgQEMAQsgACAFIAogC0EMahCAAQsiBCAGIAQgBksiBBsiDkEETwRAIAUgByAEGyEJIAsoAgxBASAEGyEEAkAgBSARTw0AA0AgBUEBaiEIAkAgBEUEQEEAIQQMAQsgDEUNACAIKAAAIAggF2ooAABHDQAgBUEFaiIPIBdqIQcgBGcgDkEDbGpBHmsCfwJAAkAgDyASTwRAIA8hBgwBCyAPIgYoAAAiFCAHKAAAIh1HBEAgFCAdc2hBA3ZBBHIMAwsDQCAHQQRqIQcgBkEEaiIGIBJPDQEgBigAACIUIAcoAAAiHUYNAAsgBiAUIB1zaEEDdmohBgwBCwJAIAYgGU8NACAHLwAAIAYvAABHDQAgB0ECaiEHIAZBAmohBgsgBiAKTw0AIAYgBy0AACAGLQAARmohBgsgBiAPayIHQXtLDQEgB0EEagsiBkEDbE4NAEEBIQQgCCEJIAYhDgsgC0H/k+vcAzYCCAJ/AkACfwJAAkACQCAcQQFrDgIBAgALAkACQAJAIBBBBWsOAgECAAsgACAIIAogC0EIahCIAQwECyAAIAggCiALQQhqEIcBDAMLIAAgCCAKIAtBCGoQhgEMAgsCQAJAAkAgEEEFaw4CAQIACyAAIAggCiALQQhqEIUBDAMLIAAgCCAKIAtBCGoQhAEMAgsgACAIIAogC0EIahCDAQwBCwJAAkACQCAQQQVrDgIBAgALIAAgCCAKIAtBCGoQggEMAgsgACAIIAogC0EIahCBAQwBCyAAIAggCiALQQhqEIABCyIGQQRJDQAgCygCCCIHZyAGQQJ0akEfayAEZyAOQQJ0akEba0wNACAIIQUgBiEOIAcMAQsgCCARTw0CIAVBAmohBwJAIARFBEBBACEEDAELIAxFDQAgBygAACAHIBdqKAAARw0AIAVBBmoiCCAXaiEGIARnIA5BAnRqQR5rAn8CQAJAIAggEk8EQCAIIQUMAQsgCCIFKAAAIg8gBigAACIURwRAIA8gFHNoQQN2QQRyDAMLA0AgBkEEaiEGIAVBBGoiBSASTw0BIAUoAAAiDyAGKAAAIhRGDQALIAUgDyAUc2hBA3ZqIQUMAQsCQCAFIBlPDQAgBi8AACAFLwAARw0AIAZBAmohBiAFQQJqIQULIAUgCk8NACAFIAYtAAAgBS0AAEZqIQULIAUgCGsiBUF7Sw0BIAVBBGoLIgVBAnRODQBBASEEIAchCSAFIQ4LIAtB/5Pr3AM2AgQCfwJAAkACQCAcQQFrDgIBAgALAkACQAJAIBBBBWsOAgECAAsgACAHIAogC0EEahCIAQwECyAAIAcgCiALQQRqEIcBDAMLIAAgByAKIAtBBGoQhgEMAgsCQAJAAkAgEEEFaw4CAQIACyAAIAcgCiALQQRqEIUBDAMLIAAgByAKIAtBBGoQhAEMAgsgACAHIAogC0EEahCDAQwBCwJAAkACQCAQQQVrDgIBAgALIAAgByAKIAtBBGoQggEMAgsgACAHIAogC0EEahCBAQwBCyAAIAcgCiALQQRqEIABCyIGQQRJDQIgCygCBCIIZyAGQQJ0akEfayAEZyAOQQJ0akEYa0wNAiAHIQUgBiEOIAgLIQQgBSEJIAUgEUkNAAsLAn8gBEEESQRAIAkhCCANIQcgDAwBCwJAIAMgCU8EQCAJIQgMAQtBAyAEayIFIAkiCGogHk0NAANAIAlBAWsiCC0AACAFIAhqIgctAABHBEAgCSEIDAILIA5BAWohDiADIAhPDQEgCCEJIAcgHksNAAsLIAwhByAEQQNrCyEJIAggA2shDSABKAIMIQUCQAJAIAggFk0EQCADKQAAISEgBSADKQAINwAIIAUgITcAACABKAIMIQYgDUEQTQRAIAEgBiANajYCDCABKAIEIQUMAwsgAykAECEhIAYgAykAGDcAGCAGICE3ABAgDUEhSA0BIAYgDWohDCADQRBqIQUgBkEgaiEGA0AgBSkAECEhIAYgBSkAGDcACCAGICE3AAAgBSkAICEhIAYgBSkAKDcAGCAGICE3ABAgBUEgaiEFIAZBIGoiBiAMSQ0ACwwBCyADIBZNBEAgAykAACEhIAUgAykACDcACCAFICE3AAAgBSAWIANrIgxqIQYgDEERTgRAIAVBEGohBQNAIAMpABAhISAFIAMpABg3AAggBSAhNwAAIAMpACAhISAFIAMpACg3ABggBSAhNwAQIANBIGohAyAFQSBqIgUgBkkNAAsLIAYhBSAWIQMLIAMgCE8NAEEAIQwgCCADIgZrQQdxIg8EQANAIAUgBi0AADoAACAFQQFqIQUgBkEBaiEGIAxBAWoiDCAPRw0ACwsgAyAIa0F4Sw0AA0AgBSAGLQAAOgAAIAUgBi0AAToAASAFIAYtAAI6AAIgBSAGLQADOgADIAUgBi0ABDoABCAFIAYtAAU6AAUgBSAGLQAGOgAGIAUgBi0ABzoAByAFQQhqIQUgBkEIaiIGIAhHDQALCyABIAEoAgwgDWo2AgwgASgCBCEFIA1BgIAESQ0AIAFBATYCJCABIAUgASgCAGtBA3U2AigLIAUgBDYCACAFIA07AQQgDkEDayIDQYCABE8EQCABQQI2AiQgASAFIAEoAgBrQQN1NgIoCyAFIAM7AQYgASAFQQhqIgQ2AgQgACgC3AEEQCAAKAIcIgUgBUEIICAgBSATaiIDayIGIAZBCE8bQQAgAyARTRtqIgxJBEBBGCAAKAIkIgNrIQ1BOCADa60hISAAKQNQIiKnIQ8DQCAFIBNqIQMgACAFQQdxQQJ0agJ/AkACQAJAIBVBBWsOAgECAAsgAygAAEGx893xeWwgD3MgDXYMAgsgAykAAEKAgIDYy5vvjU9+ICKFICGIpwwBCyADKQAAQoCA7PzLm++NT34gIoUgIYinCzYCLCAFQQFqIgUgDEcNAAsLIABBADYC3AELIAggDmohAyAHRQRAIAchDSAJIQwgAyEFDAILIAchDSAJIQwgESADIgVJDQEDQCAHIQwgCSEHIAMoAAAgAyAMaygAAEcEQCAMIQ0gByEMIAMhBQwDCyADQQRqIgkgDGshBgJ/AkAgCSASTwRAIAkhBQwBCyAJIgUoAAAiDSAGKAAAIghHBEAgCCANc2hBA3YMAgsDQCAGQQRqIQYgBUEEaiIFIBJPDQEgBSgAACINIAYoAAAiCEYNAAsgBSAIIA1zaEEDdmogCWsMAQsCQCAFIBlPDQAgBi8AACAFLwAARw0AIAZBAmohBiAFQQJqIQULIAUgCkkEfyAFIAYtAAAgBS0AAEZqBSAFCyAJawshBSADIBZNBEAgAykAACEhIAEoAgwiBCADKQAINwAIIAQgITcAACABKAIEIQQLIARBATYCACAEQQA7AQQgBUEBaiIJQYCABE8EQCABQQI2AiQgASAEIAEoAgBrQQN1NgIoCyAEIAk7AQYgASAEQQhqIgQ2AgQgBUEEaiADaiEDIAdFBEAgByENIAMhBQwDCyAMIQkgByENIBEgAyIFTw0ACwwBCyAAIAUgA2siBEH/D0s2AtwBIARBCHYgBWpBAWohBQsgBSARSQ0ACwsgAiAMIBhBACAbGyAMGzYCACACIA0gGCAaQQAgHxsiACAMGyAAIBsbIA0bNgIEIAtBEGokACAKIANrC/AOAhp/AX4jAEEQayIPJAAgAigCBCEGIAIoAgAhCCAAKAK0ASIFKAIAIRMgBSgCBCEUIAUoAgwhBSAAQQA2AtwBIAMgAyAAKAIEIhAgACgCDCIRaiIVayAFIBRqIhogE2tGaiIFIAMgBGoiC0EIayIWSQRAIAtBAWshGyALQQNrIRcgC0EgayESIBQgFCATayARaiIcayEYQQRBBiAAKALIASIEIARBBk8bIgQgBEEETRtBBGshHQNAAkACfwJAAkACQCAFIAggEGprQQFqIgQgEWtBfEsNACAUIAQgHGtqIAQgEGogBCARSSINGyIEKAAAIAVBAWoiBygAAEcNACAFQQVqIARBBGogCyATIAsgDRsgFRAPQQRqIQ5BASEJDAELIA9B/5Pr3AM2AgwCfwJAAkACQCAdQQFrDgIBAgALIAAgBSALIA9BDGoQiwEMAgsgACAFIAsgD0EMahCKAQwBCyAAIAUgCyAPQQxqEIkBCyIOQQNNBEAgACAFIANrIgRB/w9LNgLcASAEQQh2IAVqQQFqIQUMBAsgDygCDCIJQQRPDQEgBSEHCyAIIQwgBgwBCyAJQQNrIQwCQAJAIAMgBU8NACAYIBAgBSAJIBBqa0EDaiINIBFJIgQbIA1qIgYgGiAVIAQbIgRNDQADQCAFQQFrIgctAAAgBkEBayIGLQAARw0BIA5BAWohDiADIAdPDQIgByEFIAQgBkkNAAsMAQsgBSEHCyAICyENIAcgA2shCiABKAIMIQUCQAJAIAcgEk0EQCADKQAAIR8gBSADKQAINwAIIAUgHzcAACABKAIMIQggCkEQTQRAIAEgCCAKajYCDCABKAIEIQUMAwsgAykAECEfIAggAykAGDcAGCAIIB83ABAgCkEhSA0BIAggCmohBCADQRBqIQUgCEEgaiEDA0AgBSkAECEfIAMgBSkAGDcACCADIB83AAAgBSkAICEfIAMgBSkAKDcAGCADIB83ABAgBUEgaiEFIANBIGoiAyAESQ0ACwwBCyADIBJNBEAgAykAACEfIAUgAykACDcACCAFIB83AAAgBSASIANrIghqIQQgCEERTgRAIAVBEGohBQNAIAMpABAhHyAFIAMpABg3AAggBSAfNwAAIAMpACAhHyAFIAMpACg3ABggBSAfNwAQIANBIGohAyAFQSBqIgUgBEkNAAsLIAQhBSASIQMLIAMgB08NAEEAIQQgAyEGIAcgA2tBB3EiCARAA0AgBSAGLQAAOgAAIAVBAWohBSAGQQFqIQYgBEEBaiIEIAhHDQALCyADIAdrQXhLDQADQCAFIAYtAAA6AAAgBSAGLQABOgABIAUgBi0AAjoAAiAFIAYtAAM6AAMgBSAGLQAEOgAEIAUgBi0ABToABSAFIAYtAAY6AAYgBSAGLQAHOgAHIAVBCGohBSAGQQhqIgYgB0cNAAsLIAEgASgCDCAKajYCDCABKAIEIQUgCkGAgARJDQAgAUEBNgIkIAEgBSABKAIAa0EDdTYCKAsgBSAJNgIAIAUgCjsBBCAOQQNrIgNBgIAETwRAIAFBAjYCJCABIAUgASgCAGtBA3U2AigLIAUgAzsBBiABIAVBCGoiBDYCBCAHIA5qIQMgACgC3AEEQCAAQQA2AtwBCyANIQYgDCEIIBYgAyIFSQ0AA0ACQCANIQggDCENIAMgCCAQamsiBSARa0F8Sw0AIBggECAFIBFJIgcbIAVqIgUoAAAgAygAAEcNACAFQQRqIgwhBiADQQRqIgkhBSAMAn8CQCAJIBMgCyAHGyIeIAxraiIHIAsgByALSRsiGUEDayIOIAlNDQAgCSgAACIKIAwoAAAiB0cEQCAHIApzaEEDdgwCCwNAIAZBBGohBiAFQQRqIgUgDk8NASAFKAAAIgogBigAACIHRg0ACyAFIAcgCnNoQQN2aiAJawwBCwJAIAUgGUEBa08NACAGLwAAIAUvAABHDQAgBkECaiEGIAVBAmohBQsgBSAZSQR/IAUgBi0AACAFLQAARmoFIAULIAlrCyIHaiAeRgRAIBUhBiAHIAlqIgwhBQJ/AkAgDCAXTw0AIAwoAAAiCiAGKAAAIglHBEAgCSAKc2hBA3YMAgsDQCAGQQRqIQYgBUEEaiIFIBdPDQEgBSgAACIKIAYoAAAiCUYNAAsgBSAJIApzaEEDdmogDGsMAQsCQCAFIBtPDQAgBi8AACAFLwAARw0AIAZBAmohBiAFQQJqIQULIAUgC0kEfyAFIAYtAAAgBS0AAEZqBSAFCyAMawsgB2ohBwsgAyASTQRAIAMpAAAhHyABKAIMIgQgAykACDcACCAEIB83AAAgASgCBCEECyAEQQE2AgAgBEEAOwEEIAdBAWoiBUGAgARPBEAgAUECNgIkIAEgBCABKAIAa0EDdTYCKAsgBCAFOwEGIAEgBEEIaiIENgIEIAghDCANIQYgB0EEaiADaiIDIQUgAyAWTQ0BDAILCyAIIQYgDSEIIAMhBQsgBSAWSQ0ACwsgAiAGNgIEIAIgCDYCACAPQRBqJAAgCyADawuYFAIffwF+IwBBEGsiECQAIAIoAgQhCiACKAIAIQsgACgCtAEiBSgCACEVIAUoAgQhFiAFKAIMIQUgAEEANgLcASADIAMgACgCBCITIAAoAgwiEmoiGGsgBSAWaiIeIBVrRmoiBSADIARqIgxBCGsiFEkEQEEEQQYgACgCyAEiBCAEQQZPGyIEIARBBE0bIR8gDEEgayEXIBYgFiAVayASaiIaayEbIAxBAWshHCAMQQNrIRkDQCAFQQFqIQZBACEEAkAgBSALIBNqIiBrQQFqIgggEmtBfEsNACAWIAggGmtqIAggE2ogCCASSSIJGyIIKAAAIAYoAABHDQAgBUEFaiAIQQRqIAwgFSAMIAkbIBgQD0EEaiEECyAQQf+T69wDNgIMAkACQAJ/AkACQAJAIB9BBGsiIUEBaw4CAQIACyAAIAUgDCAQQQxqEIsBDAILIAAgBSAMIBBBDGoQigEMAQsgACAFIAwgEEEMahCJAQsiByAEIAQgB0kiBBsiDUEETwRAIAUgBiAEGyEGIBAoAgxBASAEGyERAkAgBSAUTw0AA0ACQCAFQQFqIgQgIGsiCCASa0F8Sw0AIBYgCCAaa2ogCCATaiAIIBJJIg4bIggoAAAgBCgAAEcNACAIQQRqIgghByAFQQVqIgkhBSAIAn8CQCAJIBUgDCAOGyIiIAhraiIOIAwgDCAOSxsiHUEDayIjIAlNDQAgCSgAACIPIAgoAAAiDkcEQCAOIA9zaEEDdgwCCwNAIAdBBGohByAFQQRqIgUgI08NASAFKAAAIg8gBygAACIORg0ACyAFIA4gD3NoQQN2aiAJawwBCwJAIAUgHUEBa08NACAHLwAAIAUvAABHDQAgB0ECaiEHIAVBAmohBQsgBSAdSQR/IAUgBy0AACAFLQAARmoFIAULIAlrCyIPaiAiRgRAIBghByAJIA9qIgghBQJ/AkAgCCAZTw0AIAgoAAAiDiAHKAAAIglHBEAgCSAOc2hBA3YMAgsDQCAHQQRqIQcgBUEEaiIFIBlPDQEgBSgAACIOIAcoAAAiCUYNAAsgBSAJIA5zaEEDdmogCGsMAQsCQCAFIBxPDQAgBy8AACAFLwAARw0AIAdBAmohByAFQQJqIQULIAUgDEkEfyAFIActAAAgBS0AAEZqBSAFCyAIawsgD2ohDwsgD0F7Sw0AIBFnIA1BA2xqQR5rIA9BBGoiBUEDbE4NAEEBIREgBCEGIAUhDQsgEEH/k+vcAzYCCAJ/AkACQAJAICFBAWsOAgECAAsgACAEIAwgEEEIahCLAQwCCyAAIAQgDCAQQQhqEIoBDAELIAAgBCAMIBBBCGoQiQELIgdBBEkNASAQKAIIIgVnIAdBAnRqQR9rIBFnIA1BAnRqQRtrTA0BIAchDSAFIREgBCIFIQYgBSAURw0ACyAUIQYLAn8gEUEESQRAIAshCSAKDAELIBFBA2shCQJAIAMgBk8NACAbIBMgBiARIBNqa0EDaiIFIBJJIgQbIAVqIgUgHiAYIAQbIghNDQADQCAGQQFrIgQtAAAgBUEBayIFLQAARw0BIA1BAWohDSADIARJBEAgBCEGIAUgCEsNAQsLIAQhBgsgCwshCCAGIANrIQogASgCDCEFAkACQCAGIBdNBEAgAykAACEkIAUgAykACDcACCAFICQ3AAAgASgCDCELIApBEE0EQCABIAogC2o2AgwgASgCBCEFDAMLIAMpABAhJCALIAMpABg3ABggCyAkNwAQIApBIUgNASAKIAtqIQQgA0EQaiEFIAtBIGohAwNAIAUpABAhJCADIAUpABg3AAggAyAkNwAAIAUpACAhJCADIAUpACg3ABggAyAkNwAQIAVBIGohBSADQSBqIgMgBEkNAAsMAQsgAyAXTQRAIAMpAAAhJCAFIAMpAAg3AAggBSAkNwAAIAUgFyADayILaiEEIAtBEU4EQCAFQRBqIQUDQCADKQAQISQgBSADKQAYNwAIIAUgJDcAACADKQAgISQgBSADKQAoNwAYIAUgJDcAECADQSBqIQMgBUEgaiIFIARJDQALCyAEIQUgFyEDCyADIAZPDQBBACEHIAYgAyIEa0EHcSILBEADQCAFIAQtAAA6AAAgBUEBaiEFIARBAWohBCAHQQFqIgcgC0cNAAsLIAMgBmtBeEsNAANAIAUgBC0AADoAACAFIAQtAAE6AAEgBSAELQACOgACIAUgBC0AAzoAAyAFIAQtAAQ6AAQgBSAELQAFOgAFIAUgBC0ABjoABiAFIAQtAAc6AAcgBUEIaiEFIARBCGoiBCAGRw0ACwsgASABKAIMIApqNgIMIAEoAgQhBSAKQYCABEkNACABQQE2AiQgASAFIAEoAgBrQQN1NgIoCyAFIBE2AgAgBSAKOwEEIA1BA2siA0GAgARPBEAgAUECNgIkIAEgBSABKAIAa0EDdTYCKAsgBSADOwEGIAEgBUEIaiIHNgIEIAYgDWohAyAAKALcAQRAIABBADYC3AELIAghCiAJIQsgFCADIgVJDQIDQCAIIQsgCSEIIAMgCyATamsiBCASa0F8Sw0CIBsgEyAEIBJJIgYbIARqIgQoAAAgAygAAEcNAiAEQQRqIgkhBCADQQRqIgohBSAJAn8CQCAKIBUgDCAGGyIOIAlraiIGIAwgBiAMSRsiD0EDayIRIApNDQAgCigAACINIAkoAAAiBkcEQCAGIA1zaEEDdgwCCwNAIARBBGohBCAFQQRqIgUgEU8NASAFKAAAIg0gBCgAACIGRg0ACyAFIAYgDXNoQQN2aiAKawwBCwJAIAUgD0EBa08NACAELwAAIAUvAABHDQAgBEECaiEEIAVBAmohBQsgBSAPSQR/IAUgBC0AACAFLQAARmoFIAULIAprCyIGaiAORgRAIBghBCAGIApqIgkhBQJ/AkAgCSAZTw0AIAkoAAAiDSAEKAAAIgpHBEAgCiANc2hBA3YMAgsDQCAEQQRqIQQgBUEEaiIFIBlPDQEgBSgAACINIAQoAAAiCkYNAAsgBSAKIA1zaEEDdmogCWsMAQsCQCAFIBxPDQAgBC8AACAFLwAARw0AIARBAmohBCAFQQJqIQULIAUgDEkEfyAFIAQtAAAgBS0AAEZqBSAFCyAJawsgBmohBgsgAyAXTQRAIAMpAAAhJCABKAIMIgQgAykACDcACCAEICQ3AAAgASgCBCEHCyAHQQE2AgAgB0EAOwEEIAZBAWoiBEGAgARPBEAgAUECNgIkIAEgByABKAIAa0EDdTYCKAsgByAEOwEGIAEgB0EIaiIHNgIEIAshCSAIIQogBkEEaiADaiIDIQUgAyAUTQ0ACwwCCyAAIAUgA2siBEH/D0s2AtwBIARBCHYgBWpBAWohBQwBCyALIQogCCELIAMhBQsgBSAUSQ0ACwsgAiAKNgIEIAIgCzYCACAQQRBqJAAgDCADawufFgIgfwF+IwBBEGsiDiQAIAIoAgQhDCACKAIAIQ0gACgCtAEiBSgCACEUIAUoAgQhFSAFKAIMIQUgAEEANgLcASADIAMgACgCBCITIAAoAgwiEmoiF2sgBSAVaiIiIBRrRmoiBSADIARqIgtBCGsiFkkEQEEEQQYgACgCyAEiBCAEQQZPGyIEIARBBE0bISMgC0EgayEYIBUgFSAUayASaiIbayEeIAtBAWshHyALQQNrIRoDQCAFQQFqIQZBACEEAkAgBSANIBNqIiBrQQFqIgcgEmtBfEsNACAVIAcgG2tqIAcgE2ogByASSSIHGyIJKAAAIAYoAABHDQAgBUEFaiAJQQRqIAsgFCALIAcbIBcQD0EEaiEECyAOQf+T69wDNgIMAkACQAJ/AkACQAJAICNBBGsiIUEBaw4CAQIACyAAIAUgCyAOQQxqEIsBDAILIAAgBSALIA5BDGoQigEMAQsgACAFIAsgDkEMahCJAQsiCCAEIAQgCEkiBBsiCUEETwRAIAUgBiAEGyEGIA4oAgxBASAEGyEQAkAgBSAWTw0AA0ACQCAFQQFqIgcgIGsiBCASa0F8Sw0AIBUgBCAba2ogBCATaiAEIBJJIg8bIgQoAAAgBygAAEcNACAEQQRqIhEhCCAFQQVqIgohBCARAn8CQCAKIBQgCyAPGyIZIBFraiIPIAsgCyAPSxsiD0EDayIkIApNDQAgCigAACIcIBEoAAAiHUcEQCAcIB1zaEEDdgwCCwNAIAhBBGohCCAEQQRqIgQgJE8NASAEKAAAIhwgCCgAACIdRg0ACyAEIBwgHXNoQQN2aiAKawwBCwJAIAQgD0EBa08NACAILwAAIAQvAABHDQAgCEECaiEIIARBAmohBAsgBCAPSQR/IAQgCC0AACAELQAARmoFIAQLIAprCyIPaiAZRgRAIBchCCAKIA9qIgohBAJ/AkAgCiAaTw0AIAooAAAiESAIKAAAIhlHBEAgESAZc2hBA3YMAgsDQCAIQQRqIQggBEEEaiIEIBpPDQEgBCgAACIRIAgoAAAiGUYNAAsgBCARIBlzaEEDdmogCmsMAQsCQCAEIB9PDQAgCC8AACAELwAARw0AIAhBAmohCCAEQQJqIQQLIAQgC0kEfyAEIAgtAAAgBC0AAEZqBSAECyAKawsgD2ohDwsgD0F7Sw0AIBBnIAlBA2xqQR5rIA9BBGoiBEEDbE4NAEEBIRAgByEGIAQhCQsgDkH/k+vcAzYCCAJ/AkACfwJAAkACQCAhQQFrDgIBAgALIAAgByALIA5BCGoQiwEMAgsgACAHIAsgDkEIahCKAQwBCyAAIAcgCyAOQQhqEIkBCyIEQQRJDQAgDigCCCIKZyAEQQJ0akEfayAQZyAJQQJ0akEba0wNACAKIRAgBCEJIAcMAQsgByAWTw0CAkAgBUECaiIHICBrIgQgEmtBfEsNACAVIAQgG2tqIAQgE2ogBCASSSIEGyIKKAAAIAcoAABHDQAgBUEGaiAKQQRqIAsgFCALIAQbIBcQDyIEQXtLDQAgEGcgCUECdGpBHmsgBEEEaiIEQQJ0Tg0AQQEhECAHIQYgBCEJCyAOQf+T69wDNgIEAn8CQAJAAkAgIUEBaw4CAQIACyAAIAcgCyAOQQRqEIsBDAILIAAgByALIA5BBGoQigEMAQsgACAHIAsgDkEEahCJAQsiBEEESQ0CIA4oAgQiCmcgBEECdGpBH2sgEGcgCUECdGpBGGtMDQIgCiEQIAQhCSAHCyIFIQYgBSAWSQ0ACwsCfyAQQQRJBEAgDSEKIAwMAQsgEEEDayEKAkAgAyAGTw0AIB4gEyAGIBAgE2prQQNqIgQgEkkiBxsgBGoiBSAiIBcgBxsiB00NAANAIAZBAWsiBC0AACAFQQFrIgUtAABHDQEgCUEBaiEJIAMgBEkEQCAEIQYgBSAHSw0BCwsgBCEGCyANCyEHIAYgA2shDSABKAIMIQUCQAJAIAYgGE0EQCADKQAAISUgBSADKQAINwAIIAUgJTcAACABKAIMIQQgDUEQTQRAIAEgBCANajYCDCABKAIEIQUMAwsgAykAECElIAQgAykAGDcAGCAEICU3ABAgDUEhSA0BIAQgDWohDCADQRBqIQUgBEEgaiEDA0AgBSkAECElIAMgBSkAGDcACCADICU3AAAgBSkAICElIAMgBSkAKDcAGCADICU3ABAgBUEgaiEFIANBIGoiAyAMSQ0ACwwBCyADIBhNBEAgAykAACElIAUgAykACDcACCAFICU3AAAgBSAYIANrIgxqIQQgDEERTgRAIAVBEGohBQNAIAMpABAhJSAFIAMpABg3AAggBSAlNwAAIAMpACAhJSAFIAMpACg3ABggBSAlNwAQIANBIGohAyAFQSBqIgUgBEkNAAsLIAQhBSAYIQMLIAMgBk8NAEEAIQggBiADIgRrQQdxIgwEQANAIAUgBC0AADoAACAFQQFqIQUgBEEBaiEEIAhBAWoiCCAMRw0ACwsgAyAGa0F4Sw0AA0AgBSAELQAAOgAAIAUgBC0AAToAASAFIAQtAAI6AAIgBSAELQADOgADIAUgBC0ABDoABCAFIAQtAAU6AAUgBSAELQAGOgAGIAUgBC0ABzoAByAFQQhqIQUgBEEIaiIEIAZHDQALCyABIAEoAgwgDWo2AgwgASgCBCEFIA1BgIAESQ0AIAFBATYCJCABIAUgASgCAGtBA3U2AigLIAUgEDYCACAFIA07AQQgCUEDayIDQYCABE8EQCABQQI2AiQgASAFIAEoAgBrQQN1NgIoCyAFIAM7AQYgASAFQQhqIgg2AgQgBiAJaiEDIAAoAtwBBEAgAEEANgLcAQsgByEMIAohDSAWIAMiBUkNAgNAIAchDSAKIQcgAyANIBNqayIEIBJrQXxLDQIgHiATIAQgEkkiCRsgBGoiBCgAACADKAAARw0CIARBBGoiDCEEIANBBGoiBiEFIAwCfwJAIAYgFCALIAkbIgogDGtqIgkgCyAJIAtJGyIJQQNrIhAgBk0NACAGKAAAIhEgDCgAACIPRwRAIA8gEXNoQQN2DAILA0AgBEEEaiEEIAVBBGoiBSAQTw0BIAUoAAAiESAEKAAAIg9GDQALIAUgDyARc2hBA3ZqIAZrDAELAkAgBSAJQQFrTw0AIAQvAAAgBS8AAEcNACAEQQJqIQQgBUECaiEFCyAFIAlJBH8gBSAELQAAIAUtAABGagUgBQsgBmsLIglqIApGBEAgFyEEIAYgCWoiBiEFAn8CQCAGIBpPDQAgBigAACIMIAQoAAAiCkcEQCAKIAxzaEEDdgwCCwNAIARBBGohBCAFQQRqIgUgGk8NASAFKAAAIgwgBCgAACIKRg0ACyAFIAogDHNoQQN2aiAGawwBCwJAIAUgH08NACAELwAAIAUvAABHDQAgBEECaiEEIAVBAmohBQsgBSALSQR/IAUgBC0AACAFLQAARmoFIAULIAZrCyAJaiEJCyADIBhNBEAgAykAACElIAEoAgwiBCADKQAINwAIIAQgJTcAACABKAIEIQgLIAhBATYCACAIQQA7AQQgCUEBaiIEQYCABE8EQCABQQI2AiQgASAIIAEoAgBrQQN1NgIoCyAIIAQ7AQYgASAIQQhqIgg2AgQgDSEKIAchDCAJQQRqIANqIgMhBSADIBZNDQALDAILIAAgBSADayIEQf8PSzYC3AEgBEEIdiAFakEBaiEFDAELIA0hDCAHIQ0gAyEFCyAFIBZJDQALCyACIAw2AgQgAiANNgIAIA5BEGokACALIANrC/AOAhp/AX4jAEEQayIPJAAgAigCBCEGIAIoAgAhCCAAKAK0ASIFKAIAIRMgBSgCBCEUIAUoAgwhBSAAQQA2AtwBIAMgAyAAKAIEIhAgACgCDCIRaiIVayAFIBRqIhogE2tGaiIFIAMgBGoiC0EIayIWSQRAIAtBAWshGyALQQNrIRcgC0EgayESIBQgFCATayARaiIcayEYQQRBBiAAKALIASIEIARBBk8bIgQgBEEETRtBBGshHQNAAkACfwJAAkACQCAFIAggEGprQQFqIgQgEWtBfEsNACAUIAQgHGtqIAQgEGogBCARSSINGyIEKAAAIAVBAWoiBygAAEcNACAFQQVqIARBBGogCyATIAsgDRsgFRAPQQRqIQ5BASEJDAELIA9B/5Pr3AM2AgwCfwJAAkACQCAdQQFrDgIBAgALIAAgBSALIA9BDGoQjgEMAgsgACAFIAsgD0EMahCNAQwBCyAAIAUgCyAPQQxqEIwBCyIOQQNNBEAgACAFIANrIgRB/w9LNgLcASAEQQh2IAVqQQFqIQUMBAsgDygCDCIJQQRPDQEgBSEHCyAIIQwgBgwBCyAJQQNrIQwCQAJAIAMgBU8NACAYIBAgBSAJIBBqa0EDaiINIBFJIgQbIA1qIgYgGiAVIAQbIgRNDQADQCAFQQFrIgctAAAgBkEBayIGLQAARw0BIA5BAWohDiADIAdPDQIgByEFIAQgBkkNAAsMAQsgBSEHCyAICyENIAcgA2shCiABKAIMIQUCQAJAIAcgEk0EQCADKQAAIR8gBSADKQAINwAIIAUgHzcAACABKAIMIQggCkEQTQRAIAEgCCAKajYCDCABKAIEIQUMAwsgAykAECEfIAggAykAGDcAGCAIIB83ABAgCkEhSA0BIAggCmohBCADQRBqIQUgCEEgaiEDA0AgBSkAECEfIAMgBSkAGDcACCADIB83AAAgBSkAICEfIAMgBSkAKDcAGCADIB83ABAgBUEgaiEFIANBIGoiAyAESQ0ACwwBCyADIBJNBEAgAykAACEfIAUgAykACDcACCAFIB83AAAgBSASIANrIghqIQQgCEERTgRAIAVBEGohBQNAIAMpABAhHyAFIAMpABg3AAggBSAfNwAAIAMpACAhHyAFIAMpACg3ABggBSAfNwAQIANBIGohAyAFQSBqIgUgBEkNAAsLIAQhBSASIQMLIAMgB08NAEEAIQQgAyEGIAcgA2tBB3EiCARAA0AgBSAGLQAAOgAAIAVBAWohBSAGQQFqIQYgBEEBaiIEIAhHDQALCyADIAdrQXhLDQADQCAFIAYtAAA6AAAgBSAGLQABOgABIAUgBi0AAjoAAiAFIAYtAAM6AAMgBSAGLQAEOgAEIAUgBi0ABToABSAFIAYtAAY6AAYgBSAGLQAHOgAHIAVBCGohBSAGQQhqIgYgB0cNAAsLIAEgASgCDCAKajYCDCABKAIEIQUgCkGAgARJDQAgAUEBNgIkIAEgBSABKAIAa0EDdTYCKAsgBSAJNgIAIAUgCjsBBCAOQQNrIgNBgIAETwRAIAFBAjYCJCABIAUgASgCAGtBA3U2AigLIAUgAzsBBiABIAVBCGoiBDYCBCAHIA5qIQMgACgC3AEEQCAAQQA2AtwBCyANIQYgDCEIIBYgAyIFSQ0AA0ACQCANIQggDCENIAMgCCAQamsiBSARa0F8Sw0AIBggECAFIBFJIgcbIAVqIgUoAAAgAygAAEcNACAFQQRqIgwhBiADQQRqIgkhBSAMAn8CQCAJIBMgCyAHGyIeIAxraiIHIAsgByALSRsiGUEDayIOIAlNDQAgCSgAACIKIAwoAAAiB0cEQCAHIApzaEEDdgwCCwNAIAZBBGohBiAFQQRqIgUgDk8NASAFKAAAIgogBigAACIHRg0ACyAFIAcgCnNoQQN2aiAJawwBCwJAIAUgGUEBa08NACAGLwAAIAUvAABHDQAgBkECaiEGIAVBAmohBQsgBSAZSQR/IAUgBi0AACAFLQAARmoFIAULIAlrCyIHaiAeRgRAIBUhBiAHIAlqIgwhBQJ/AkAgDCAXTw0AIAwoAAAiCiAGKAAAIglHBEAgCSAKc2hBA3YMAgsDQCAGQQRqIQYgBUEEaiIFIBdPDQEgBSgAACIKIAYoAAAiCUYNAAsgBSAJIApzaEEDdmogDGsMAQsCQCAFIBtPDQAgBi8AACAFLwAARw0AIAZBAmohBiAFQQJqIQULIAUgC0kEfyAFIAYtAAAgBS0AAEZqBSAFCyAMawsgB2ohBwsgAyASTQRAIAMpAAAhHyABKAIMIgQgAykACDcACCAEIB83AAAgASgCBCEECyAEQQE2AgAgBEEAOwEEIAdBAWoiBUGAgARPBEAgAUECNgIkIAEgBCABKAIAa0EDdTYCKAsgBCAFOwEGIAEgBEEIaiIENgIEIAghDCANIQYgB0EEaiADaiIDIQUgAyAWTQ0BDAILCyAIIQYgDSEIIAMhBQsgBSAWSQ0ACwsgAiAGNgIEIAIgCDYCACAPQRBqJAAgCyADawuYFAIffwF+IwBBEGsiECQAIAIoAgQhCiACKAIAIQsgACgCtAEiBSgCACEVIAUoAgQhFiAFKAIMIQUgAEEANgLcASADIAMgACgCBCITIAAoAgwiEmoiGGsgBSAWaiIeIBVrRmoiBSADIARqIgxBCGsiFEkEQEEEQQYgACgCyAEiBCAEQQZPGyIEIARBBE0bIR8gDEEgayEXIBYgFiAVayASaiIaayEbIAxBAWshHCAMQQNrIRkDQCAFQQFqIQZBACEEAkAgBSALIBNqIiBrQQFqIgggEmtBfEsNACAWIAggGmtqIAggE2ogCCASSSIJGyIIKAAAIAYoAABHDQAgBUEFaiAIQQRqIAwgFSAMIAkbIBgQD0EEaiEECyAQQf+T69wDNgIMAkACQAJ/AkACQAJAIB9BBGsiIUEBaw4CAQIACyAAIAUgDCAQQQxqEI4BDAILIAAgBSAMIBBBDGoQjQEMAQsgACAFIAwgEEEMahCMAQsiByAEIAQgB0kiBBsiDUEETwRAIAUgBiAEGyEGIBAoAgxBASAEGyERAkAgBSAUTw0AA0ACQCAFQQFqIgQgIGsiCCASa0F8Sw0AIBYgCCAaa2ogCCATaiAIIBJJIg4bIggoAAAgBCgAAEcNACAIQQRqIgghByAFQQVqIgkhBSAIAn8CQCAJIBUgDCAOGyIiIAhraiIOIAwgDCAOSxsiHUEDayIjIAlNDQAgCSgAACIPIAgoAAAiDkcEQCAOIA9zaEEDdgwCCwNAIAdBBGohByAFQQRqIgUgI08NASAFKAAAIg8gBygAACIORg0ACyAFIA4gD3NoQQN2aiAJawwBCwJAIAUgHUEBa08NACAHLwAAIAUvAABHDQAgB0ECaiEHIAVBAmohBQsgBSAdSQR/IAUgBy0AACAFLQAARmoFIAULIAlrCyIPaiAiRgRAIBghByAJIA9qIgghBQJ/AkAgCCAZTw0AIAgoAAAiDiAHKAAAIglHBEAgCSAOc2hBA3YMAgsDQCAHQQRqIQcgBUEEaiIFIBlPDQEgBSgAACIOIAcoAAAiCUYNAAsgBSAJIA5zaEEDdmogCGsMAQsCQCAFIBxPDQAgBy8AACAFLwAARw0AIAdBAmohByAFQQJqIQULIAUgDEkEfyAFIActAAAgBS0AAEZqBSAFCyAIawsgD2ohDwsgD0F7Sw0AIBFnIA1BA2xqQR5rIA9BBGoiBUEDbE4NAEEBIREgBCEGIAUhDQsgEEH/k+vcAzYCCAJ/AkACQAJAICFBAWsOAgECAAsgACAEIAwgEEEIahCOAQwCCyAAIAQgDCAQQQhqEI0BDAELIAAgBCAMIBBBCGoQjAELIgdBBEkNASAQKAIIIgVnIAdBAnRqQR9rIBFnIA1BAnRqQRtrTA0BIAchDSAFIREgBCIFIQYgBSAURw0ACyAUIQYLAn8gEUEESQRAIAshCSAKDAELIBFBA2shCQJAIAMgBk8NACAbIBMgBiARIBNqa0EDaiIFIBJJIgQbIAVqIgUgHiAYIAQbIghNDQADQCAGQQFrIgQtAAAgBUEBayIFLQAARw0BIA1BAWohDSADIARJBEAgBCEGIAUgCEsNAQsLIAQhBgsgCwshCCAGIANrIQogASgCDCEFAkACQCAGIBdNBEAgAykAACEkIAUgAykACDcACCAFICQ3AAAgASgCDCELIApBEE0EQCABIAogC2o2AgwgASgCBCEFDAMLIAMpABAhJCALIAMpABg3ABggCyAkNwAQIApBIUgNASAKIAtqIQQgA0EQaiEFIAtBIGohAwNAIAUpABAhJCADIAUpABg3AAggAyAkNwAAIAUpACAhJCADIAUpACg3ABggAyAkNwAQIAVBIGohBSADQSBqIgMgBEkNAAsMAQsgAyAXTQRAIAMpAAAhJCAFIAMpAAg3AAggBSAkNwAAIAUgFyADayILaiEEIAtBEU4EQCAFQRBqIQUDQCADKQAQISQgBSADKQAYNwAIIAUgJDcAACADKQAgISQgBSADKQAoNwAYIAUgJDcAECADQSBqIQMgBUEgaiIFIARJDQALCyAEIQUgFyEDCyADIAZPDQBBACEHIAYgAyIEa0EHcSILBEADQCAFIAQtAAA6AAAgBUEBaiEFIARBAWohBCAHQQFqIgcgC0cNAAsLIAMgBmtBeEsNAANAIAUgBC0AADoAACAFIAQtAAE6AAEgBSAELQACOgACIAUgBC0AAzoAAyAFIAQtAAQ6AAQgBSAELQAFOgAFIAUgBC0ABjoABiAFIAQtAAc6AAcgBUEIaiEFIARBCGoiBCAGRw0ACwsgASABKAIMIApqNgIMIAEoAgQhBSAKQYCABEkNACABQQE2AiQgASAFIAEoAgBrQQN1NgIoCyAFIBE2AgAgBSAKOwEEIA1BA2siA0GAgARPBEAgAUECNgIkIAEgBSABKAIAa0EDdTYCKAsgBSADOwEGIAEgBUEIaiIHNgIEIAYgDWohAyAAKALcAQRAIABBADYC3AELIAghCiAJIQsgFCADIgVJDQIDQCAIIQsgCSEIIAMgCyATamsiBCASa0F8Sw0CIBsgEyAEIBJJIgYbIARqIgQoAAAgAygAAEcNAiAEQQRqIgkhBCADQQRqIgohBSAJAn8CQCAKIBUgDCAGGyIOIAlraiIGIAwgBiAMSRsiD0EDayIRIApNDQAgCigAACINIAkoAAAiBkcEQCAGIA1zaEEDdgwCCwNAIARBBGohBCAFQQRqIgUgEU8NASAFKAAAIg0gBCgAACIGRg0ACyAFIAYgDXNoQQN2aiAKawwBCwJAIAUgD0EBa08NACAELwAAIAUvAABHDQAgBEECaiEEIAVBAmohBQsgBSAPSQR/IAUgBC0AACAFLQAARmoFIAULIAprCyIGaiAORgRAIBghBCAGIApqIgkhBQJ/AkAgCSAZTw0AIAkoAAAiDSAEKAAAIgpHBEAgCiANc2hBA3YMAgsDQCAEQQRqIQQgBUEEaiIFIBlPDQEgBSgAACINIAQoAAAiCkYNAAsgBSAKIA1zaEEDdmogCWsMAQsCQCAFIBxPDQAgBC8AACAFLwAARw0AIARBAmohBCAFQQJqIQULIAUgDEkEfyAFIAQtAAAgBS0AAEZqBSAFCyAJawsgBmohBgsgAyAXTQRAIAMpAAAhJCABKAIMIgQgAykACDcACCAEICQ3AAAgASgCBCEHCyAHQQE2AgAgB0EAOwEEIAZBAWoiBEGAgARPBEAgAUECNgIkIAEgByABKAIAa0EDdTYCKAsgByAEOwEGIAEgB0EIaiIHNgIEIAshCSAIIQogBkEEaiADaiIDIQUgAyAUTQ0ACwwCCyAAIAUgA2siBEH/D0s2AtwBIARBCHYgBWpBAWohBQwBCyALIQogCCELIAMhBQsgBSAUSQ0ACwsgAiAKNgIEIAIgCzYCACAQQRBqJAAgDCADawufFgIgfwF+IwBBEGsiDiQAIAIoAgQhDCACKAIAIQ0gACgCtAEiBSgCACEUIAUoAgQhFSAFKAIMIQUgAEEANgLcASADIAMgACgCBCITIAAoAgwiEmoiF2sgBSAVaiIiIBRrRmoiBSADIARqIgtBCGsiFkkEQEEEQQYgACgCyAEiBCAEQQZPGyIEIARBBE0bISMgC0EgayEYIBUgFSAUayASaiIbayEeIAtBAWshHyALQQNrIRoDQCAFQQFqIQZBACEEAkAgBSANIBNqIiBrQQFqIgcgEmtBfEsNACAVIAcgG2tqIAcgE2ogByASSSIHGyIJKAAAIAYoAABHDQAgBUEFaiAJQQRqIAsgFCALIAcbIBcQD0EEaiEECyAOQf+T69wDNgIMAkACQAJ/AkACQAJAICNBBGsiIUEBaw4CAQIACyAAIAUgCyAOQQxqEI4BDAILIAAgBSALIA5BDGoQjQEMAQsgACAFIAsgDkEMahCMAQsiCCAEIAQgCEkiBBsiCUEETwRAIAUgBiAEGyEGIA4oAgxBASAEGyEQAkAgBSAWTw0AA0ACQCAFQQFqIgcgIGsiBCASa0F8Sw0AIBUgBCAba2ogBCATaiAEIBJJIg8bIgQoAAAgBygAAEcNACAEQQRqIhEhCCAFQQVqIgohBCARAn8CQCAKIBQgCyAPGyIZIBFraiIPIAsgCyAPSxsiD0EDayIkIApNDQAgCigAACIcIBEoAAAiHUcEQCAcIB1zaEEDdgwCCwNAIAhBBGohCCAEQQRqIgQgJE8NASAEKAAAIhwgCCgAACIdRg0ACyAEIBwgHXNoQQN2aiAKawwBCwJAIAQgD0EBa08NACAILwAAIAQvAABHDQAgCEECaiEIIARBAmohBAsgBCAPSQR/IAQgCC0AACAELQAARmoFIAQLIAprCyIPaiAZRgRAIBchCCAKIA9qIgohBAJ/AkAgCiAaTw0AIAooAAAiESAIKAAAIhlHBEAgESAZc2hBA3YMAgsDQCAIQQRqIQggBEEEaiIEIBpPDQEgBCgAACIRIAgoAAAiGUYNAAsgBCARIBlzaEEDdmogCmsMAQsCQCAEIB9PDQAgCC8AACAELwAARw0AIAhBAmohCCAEQQJqIQQLIAQgC0kEfyAEIAgtAAAgBC0AAEZqBSAECyAKawsgD2ohDwsgD0F7Sw0AIBBnIAlBA2xqQR5rIA9BBGoiBEEDbE4NAEEBIRAgByEGIAQhCQsgDkH/k+vcAzYCCAJ/AkACfwJAAkACQCAhQQFrDgIBAgALIAAgByALIA5BCGoQjgEMAgsgACAHIAsgDkEIahCNAQwBCyAAIAcgCyAOQQhqEIwBCyIEQQRJDQAgDigCCCIKZyAEQQJ0akEfayAQZyAJQQJ0akEba0wNACAKIRAgBCEJIAcMAQsgByAWTw0CAkAgBUECaiIHICBrIgQgEmtBfEsNACAVIAQgG2tqIAQgE2ogBCASSSIEGyIKKAAAIAcoAABHDQAgBUEGaiAKQQRqIAsgFCALIAQbIBcQDyIEQXtLDQAgEGcgCUECdGpBHmsgBEEEaiIEQQJ0Tg0AQQEhECAHIQYgBCEJCyAOQf+T69wDNgIEAn8CQAJAAkAgIUEBaw4CAQIACyAAIAcgCyAOQQRqEI4BDAILIAAgByALIA5BBGoQjQEMAQsgACAHIAsgDkEEahCMAQsiBEEESQ0CIA4oAgQiCmcgBEECdGpBH2sgEGcgCUECdGpBGGtMDQIgCiEQIAQhCSAHCyIFIQYgBSAWSQ0ACwsCfyAQQQRJBEAgDSEKIAwMAQsgEEEDayEKAkAgAyAGTw0AIB4gEyAGIBAgE2prQQNqIgQgEkkiBxsgBGoiBSAiIBcgBxsiB00NAANAIAZBAWsiBC0AACAFQQFrIgUtAABHDQEgCUEBaiEJIAMgBEkEQCAEIQYgBSAHSw0BCwsgBCEGCyANCyEHIAYgA2shDSABKAIMIQUCQAJAIAYgGE0EQCADKQAAISUgBSADKQAINwAIIAUgJTcAACABKAIMIQQgDUEQTQRAIAEgBCANajYCDCABKAIEIQUMAwsgAykAECElIAQgAykAGDcAGCAEICU3ABAgDUEhSA0BIAQgDWohDCADQRBqIQUgBEEgaiEDA0AgBSkAECElIAMgBSkAGDcACCADICU3AAAgBSkAICElIAMgBSkAKDcAGCADICU3ABAgBUEgaiEFIANBIGoiAyAMSQ0ACwwBCyADIBhNBEAgAykAACElIAUgAykACDcACCAFICU3AAAgBSAYIANrIgxqIQQgDEERTgRAIAVBEGohBQNAIAMpABAhJSAFIAMpABg3AAggBSAlNwAAIAMpACAhJSAFIAMpACg3ABggBSAlNwAQIANBIGohAyAFQSBqIgUgBEkNAAsLIAQhBSAYIQMLIAMgBk8NAEEAIQggBiADIgRrQQdxIgwEQANAIAUgBC0AADoAACAFQQFqIQUgBEEBaiEEIAhBAWoiCCAMRw0ACwsgAyAGa0F4Sw0AA0AgBSAELQAAOgAAIAUgBC0AAToAASAFIAQtAAI6AAIgBSAELQADOgADIAUgBC0ABDoABCAFIAQtAAU6AAUgBSAELQAGOgAGIAUgBC0ABzoAByAFQQhqIQUgBEEIaiIEIAZHDQALCyABIAEoAgwgDWo2AgwgASgCBCEFIA1BgIAESQ0AIAFBATYCJCABIAUgASgCAGtBA3U2AigLIAUgEDYCACAFIA07AQQgCUEDayIDQYCABE8EQCABQQI2AiQgASAFIAEoAgBrQQN1NgIoCyAFIAM7AQYgASAFQQhqIgg2AgQgBiAJaiEDIAAoAtwBBEAgAEEANgLcAQsgByEMIAohDSAWIAMiBUkNAgNAIAchDSAKIQcgAyANIBNqayIEIBJrQXxLDQIgHiATIAQgEkkiCRsgBGoiBCgAACADKAAARw0CIARBBGoiDCEEIANBBGoiBiEFIAwCfwJAIAYgFCALIAkbIgogDGtqIgkgCyAJIAtJGyIJQQNrIhAgBk0NACAGKAAAIhEgDCgAACIPRwRAIA8gEXNoQQN2DAILA0AgBEEEaiEEIAVBBGoiBSAQTw0BIAUoAAAiESAEKAAAIg9GDQALIAUgDyARc2hBA3ZqIAZrDAELAkAgBSAJQQFrTw0AIAQvAAAgBS8AAEcNACAEQQJqIQQgBUECaiEFCyAFIAlJBH8gBSAELQAAIAUtAABGagUgBQsgBmsLIglqIApGBEAgFyEEIAYgCWoiBiEFAn8CQCAGIBpPDQAgBigAACIMIAQoAAAiCkcEQCAKIAxzaEEDdgwCCwNAIARBBGohBCAFQQRqIgUgGk8NASAFKAAAIgwgBCgAACIKRg0ACyAFIAogDHNoQQN2aiAGawwBCwJAIAUgH08NACAELwAAIAUvAABHDQAgBEECaiEEIAVBAmohBQsgBSALSQR/IAUgBC0AACAFLQAARmoFIAULIAZrCyAJaiEJCyADIBhNBEAgAykAACElIAEoAgwiBCADKQAINwAIIAQgJTcAACABKAIEIQgLIAhBATYCACAIQQA7AQQgCUEBaiIEQYCABE8EQCABQQI2AiQgASAIIAEoAgBrQQN1NgIoCyAIIAQ7AQYgASAIQQhqIgg2AgQgDSEKIAchDCAJQQRqIANqIgMhBSADIBZNDQALDAILIAAgBSADayIEQf8PSzYC3AEgBEEIdiAFakEBaiEFDAELIA0hDCAHIQ0gAyEFCyAFIBZJDQALCyACIAw2AgQgAiANNgIAIA5BEGokACALIANrC58WAiB/AX4jAEEQayIOJAAgAigCBCEMIAIoAgAhDSAAKAK0ASIFKAIAIRQgBSgCBCEVIAUoAgwhBSAAQQA2AtwBIAMgAyAAKAIEIhMgACgCDCISaiIXayAFIBVqIiIgFGtGaiIFIAMgBGoiC0EIayIWSQRAQQRBBiAAKALIASIEIARBBk8bIgQgBEEETRshIyALQSBrIRggFSAVIBRrIBJqIhtrIR4gC0EBayEfIAtBA2shGgNAIAVBAWohBkEAIQQCQCAFIA0gE2oiIGtBAWoiByASa0F8Sw0AIBUgByAba2ogByATaiAHIBJJIgcbIgkoAAAgBigAAEcNACAFQQVqIAlBBGogCyAUIAsgBxsgFxAPQQRqIQQLIA5B/5Pr3AM2AgwCQAJAAn8CQAJAAkAgI0EEayIhQQFrDgIBAgALIAAgBSALIA5BDGoQ/AEMAgsgACAFIAsgDkEMahD7AQwBCyAAIAUgCyAOQQxqEPoBCyIIIAQgBCAISSIEGyIJQQRPBEAgBSAGIAQbIQYgDigCDEEBIAQbIRACQCAFIBZPDQADQAJAIAVBAWoiByAgayIEIBJrQXxLDQAgFSAEIBtraiAEIBNqIAQgEkkiDxsiBCgAACAHKAAARw0AIARBBGoiESEIIAVBBWoiCiEEIBECfwJAIAogFCALIA8bIhkgEWtqIg8gCyALIA9LGyIPQQNrIiQgCk0NACAKKAAAIhwgESgAACIdRwRAIBwgHXNoQQN2DAILA0AgCEEEaiEIIARBBGoiBCAkTw0BIAQoAAAiHCAIKAAAIh1GDQALIAQgHCAdc2hBA3ZqIAprDAELAkAgBCAPQQFrTw0AIAgvAAAgBC8AAEcNACAIQQJqIQggBEECaiEECyAEIA9JBH8gBCAILQAAIAQtAABGagUgBAsgCmsLIg9qIBlGBEAgFyEIIAogD2oiCiEEAn8CQCAKIBpPDQAgCigAACIRIAgoAAAiGUcEQCARIBlzaEEDdgwCCwNAIAhBBGohCCAEQQRqIgQgGk8NASAEKAAAIhEgCCgAACIZRg0ACyAEIBEgGXNoQQN2aiAKawwBCwJAIAQgH08NACAILwAAIAQvAABHDQAgCEECaiEIIARBAmohBAsgBCALSQR/IAQgCC0AACAELQAARmoFIAQLIAprCyAPaiEPCyAPQXtLDQAgEGcgCUEDbGpBHmsgD0EEaiIEQQNsTg0AQQEhECAHIQYgBCEJCyAOQf+T69wDNgIIAn8CQAJ/AkACQAJAICFBAWsOAgECAAsgACAHIAsgDkEIahD8AQwCCyAAIAcgCyAOQQhqEPsBDAELIAAgByALIA5BCGoQ+gELIgRBBEkNACAOKAIIIgpnIARBAnRqQR9rIBBnIAlBAnRqQRtrTA0AIAohECAEIQkgBwwBCyAHIBZPDQICQCAFQQJqIgcgIGsiBCASa0F8Sw0AIBUgBCAba2ogBCATaiAEIBJJIgQbIgooAAAgBygAAEcNACAFQQZqIApBBGogCyAUIAsgBBsgFxAPIgRBe0sNACAQZyAJQQJ0akEeayAEQQRqIgRBAnRODQBBASEQIAchBiAEIQkLIA5B/5Pr3AM2AgQCfwJAAkACQCAhQQFrDgIBAgALIAAgByALIA5BBGoQ/AEMAgsgACAHIAsgDkEEahD7AQwBCyAAIAcgCyAOQQRqEPoBCyIEQQRJDQIgDigCBCIKZyAEQQJ0akEfayAQZyAJQQJ0akEYa0wNAiAKIRAgBCEJIAcLIgUhBiAFIBZJDQALCwJ/IBBBBEkEQCANIQogDAwBCyAQQQNrIQoCQCADIAZPDQAgHiATIAYgECATamtBA2oiBCASSSIHGyAEaiIFICIgFyAHGyIHTQ0AA0AgBkEBayIELQAAIAVBAWsiBS0AAEcNASAJQQFqIQkgAyAESQRAIAQhBiAFIAdLDQELCyAEIQYLIA0LIQcgBiADayENIAEoAgwhBQJAAkAgBiAYTQRAIAMpAAAhJSAFIAMpAAg3AAggBSAlNwAAIAEoAgwhBCANQRBNBEAgASAEIA1qNgIMIAEoAgQhBQwDCyADKQAQISUgBCADKQAYNwAYIAQgJTcAECANQSFIDQEgBCANaiEMIANBEGohBSAEQSBqIQMDQCAFKQAQISUgAyAFKQAYNwAIIAMgJTcAACAFKQAgISUgAyAFKQAoNwAYIAMgJTcAECAFQSBqIQUgA0EgaiIDIAxJDQALDAELIAMgGE0EQCADKQAAISUgBSADKQAINwAIIAUgJTcAACAFIBggA2siDGohBCAMQRFOBEAgBUEQaiEFA0AgAykAECElIAUgAykAGDcACCAFICU3AAAgAykAICElIAUgAykAKDcAGCAFICU3ABAgA0EgaiEDIAVBIGoiBSAESQ0ACwsgBCEFIBghAwsgAyAGTw0AQQAhCCAGIAMiBGtBB3EiDARAA0AgBSAELQAAOgAAIAVBAWohBSAEQQFqIQQgCEEBaiIIIAxHDQALCyADIAZrQXhLDQADQCAFIAQtAAA6AAAgBSAELQABOgABIAUgBC0AAjoAAiAFIAQtAAM6AAMgBSAELQAEOgAEIAUgBC0ABToABSAFIAQtAAY6AAYgBSAELQAHOgAHIAVBCGohBSAEQQhqIgQgBkcNAAsLIAEgASgCDCANajYCDCABKAIEIQUgDUGAgARJDQAgAUEBNgIkIAEgBSABKAIAa0EDdTYCKAsgBSAQNgIAIAUgDTsBBCAJQQNrIgNBgIAETwRAIAFBAjYCJCABIAUgASgCAGtBA3U2AigLIAUgAzsBBiABIAVBCGoiCDYCBCAGIAlqIQMgACgC3AEEQCAAQQA2AtwBCyAHIQwgCiENIBYgAyIFSQ0CA0AgByENIAohByADIA0gE2prIgQgEmtBfEsNAiAeIBMgBCASSSIJGyAEaiIEKAAAIAMoAABHDQIgBEEEaiIMIQQgA0EEaiIGIQUgDAJ/AkAgBiAUIAsgCRsiCiAMa2oiCSALIAkgC0kbIglBA2siECAGTQ0AIAYoAAAiESAMKAAAIg9HBEAgDyARc2hBA3YMAgsDQCAEQQRqIQQgBUEEaiIFIBBPDQEgBSgAACIRIAQoAAAiD0YNAAsgBSAPIBFzaEEDdmogBmsMAQsCQCAFIAlBAWtPDQAgBC8AACAFLwAARw0AIARBAmohBCAFQQJqIQULIAUgCUkEfyAFIAQtAAAgBS0AAEZqBSAFCyAGawsiCWogCkYEQCAXIQQgBiAJaiIGIQUCfwJAIAYgGk8NACAGKAAAIgwgBCgAACIKRwRAIAogDHNoQQN2DAILA0AgBEEEaiEEIAVBBGoiBSAaTw0BIAUoAAAiDCAEKAAAIgpGDQALIAUgCiAMc2hBA3ZqIAZrDAELAkAgBSAfTw0AIAQvAAAgBS8AAEcNACAEQQJqIQQgBUECaiEFCyAFIAtJBH8gBSAELQAAIAUtAABGagUgBQsgBmsLIAlqIQkLIAMgGE0EQCADKQAAISUgASgCDCIEIAMpAAg3AAggBCAlNwAAIAEoAgQhCAsgCEEBNgIAIAhBADsBBCAJQQFqIgRBgIAETwRAIAFBAjYCJCABIAggASgCAGtBA3U2AigLIAggBDsBBiABIAhBCGoiCDYCBCANIQogByEMIAlBBGogA2oiAyEFIAMgFk0NAAsMAgsgACAFIANrIgRB/w9LNgLcASAEQQh2IAVqQQFqIQUMAQsgDSEMIAchDSADIQULIAUgFkkNAAsLIAIgDDYCBCACIA02AgAgDkEQaiQAIAsgA2sLrA4CFX8BfiMAQRBrIg4kACACKAIEIRMgAigCACEQIABBADYC3AFBACAQIBAgAyAAKAIEIgggACgCDCIHaiIVIANGaiIFIAhrIgggByAIQQEgACgCuAF0IglrIAcgCCAHayAJSxsgACgCGBtrIghLIhYbIQdBACATIAggE0kiGBshCSADIARqIgxBCGsiFCAFSwRAIAxBIGshDyAMQQFrIRcgDEEDayERQQRBBiAAKALIASIEIARBBk8bIgQgBEEETRtBBGshGQNAAkACfwJ/AkACQCAHRQ0AIAVBAWoiBCAHaygAACAFKAABRw0AIAVBBWoiCCAHayEGIAggEU8EQCAIIQUMAgsgCCIFKAAAIgogBigAACILRwRAIAogC3NoQQN2DAMLA0AgBkEEaiEGIAVBBGoiBSARTw0CIAUoAAAiCiAGKAAAIgtGDQALIAUgCiALc2hBA3ZqIAhrDAILIA5B/5Pr3AM2AgwCfwJAAkACQCAZQQFrDgIBAgALIAAgBSAMIA5BDGoQkQEMAgsgACAFIAwgDkEMahCQAQwBCyAAIAUgDCAOQQxqEI8BCyILQQNNBEAgACAFIANrIgRB/w9LNgLcASAEQQh2IAVqQQFqIQUMBAsgDigCDCISQQRJBEAgBSEEIAcMAwsCQCADIAVPBEAgBSEEDAELIAUhBCAFQQMgEmsiCGogFU0NAANAIAVBAWsiBC0AACAEIAhqIgktAABHBEAgBSEEDAILIAtBAWohCyADIARPDQEgBCEFIAkgFUsNAAsLIAchCSASQQNrDAILAkAgBSAXTw0AIAYvAAAgBS8AAEcNACAGQQJqIQYgBUECaiEFCyAFIAxJBH8gBSAGLQAAIAUtAABGagUgBQsgCGsLQQRqIQtBASESIAcLIQggBCADayENIAEoAgwhBQJAAkAgBCAPTQRAIAMpAAAhGiAFIAMpAAg3AAggBSAaNwAAIAEoAgwhByANQRBNBEAgASAHIA1qNgIMIAEoAgQhBQwDCyADKQAQIRogByADKQAYNwAYIAcgGjcAECANQSFIDQEgByANaiEKIANBEGohBSAHQSBqIQYDQCAFKQAQIRogBiAFKQAYNwAIIAYgGjcAACAFKQAgIRogBiAFKQAoNwAYIAYgGjcAECAFQSBqIQUgBkEgaiIGIApJDQALDAELIAMgD00EQCADKQAAIRogBSADKQAINwAIIAUgGjcAACAFIA8gA2siBmohByAGQRFOBEAgBUEQaiEFA0AgAykAECEaIAUgAykAGDcACCAFIBo3AAAgAykAICEaIAUgAykAKDcAGCAFIBo3ABAgA0EgaiEDIAVBIGoiBSAHSQ0ACwsgByEFIA8hAwsgAyAETw0AQQAhCiADIQYgBCADa0EHcSIHBEADQCAFIAYtAAA6AAAgBUEBaiEFIAZBAWohBiAKQQFqIgogB0cNAAsLIAMgBGtBeEsNAANAIAUgBi0AADoAACAFIAYtAAE6AAEgBSAGLQACOgACIAUgBi0AAzoAAyAFIAYtAAQ6AAQgBSAGLQAFOgAFIAUgBi0ABjoABiAFIAYtAAc6AAcgBUEIaiEFIAZBCGoiBiAERw0ACwsgASABKAIMIA1qNgIMIAEoAgQhBSANQYCABEkNACABQQE2AiQgASAFIAEoAgBrQQN1NgIoCyAFIBI2AgAgBSANOwEEIAtBA2siA0GAgARPBEAgAUECNgIkIAEgBSABKAIAa0EDdTYCKAsgBSADOwEGIAEgBUEIaiIKNgIEIAAoAtwBBEAgAEEANgLcAQsgBCALaiEDIAlFBEAgCCEHIAMhBQwBCyAJIQQgCCEHIBQgAyIFSQ0AA0AgBCEHIAghBCADKAAAIAMgB2soAABHBEAgByEJIAghByADIQUMAgsgA0EEaiIIIAdrIQYCfwJAIAggEU8EQCAIIQUMAQsgCCIFKAAAIgkgBigAACILRwRAIAkgC3NoQQN2DAILA0AgBkEEaiEGIAVBBGoiBSARTw0BIAUoAAAiCSAGKAAAIgtGDQALIAUgCSALc2hBA3ZqIAhrDAELAkAgBSAXTw0AIAYvAAAgBS8AAEcNACAGQQJqIQYgBUECaiEFCyAFIAxJBH8gBSAGLQAAIAUtAABGagUgBQsgCGsLIQUgAyAPTQRAIAMpAAAhGiABKAIMIgggAykACDcACCAIIBo3AAAgASgCBCEKCyAKQQE2AgAgCkEAOwEEIAVBAWoiCEGAgARPBEAgAUECNgIkIAEgCiABKAIAa0EDdTYCKAsgCiAIOwEGIAEgCkEIaiIKNgIEIAVBBGogA2ohAyAERQRAIAQhCSADIQUMAgsgByEIIAQhCSAUIAMiBU8NAAsLIAUgFEkNAAsLIAIgByAQQQAgFhsgBxs2AgAgAiAJIBAgE0EAIBgbIgAgBxsgACAWGyAJGzYCBCAOQRBqJAAgDCADawuaEgIXfwF+IwBBEGsiDiQAIAIoAgQhFCACKAIAIRMgAEEANgLcAUEAIBMgEyADIAAoAgQiCCAAKAIMIgVqIhggA0ZqIgYgCGsiCCAFIAhBASAAKAK4AXQiB2sgBSAIIAVrIAdLGyAAKAIYG2siBUsiGRshCUEAIBQgBSAUSSIbGyEKIAMgBGoiDUEIayIQIAZLBEAgDUEgayERIA1BAWshFSANQQNrIQ9BBEEGIAAoAsgBIgQgBEEGTxsiBCAEQQRNG0EEayEaA0BBACEFQQAgCWshEiAGQQFqIQwCQCAJRQ0AIAwgCWsoAAAgBigAAUcNACAGQQVqIgggEmohBAJ/AkAgCCAPTwRAIAghBQwBCyAIIgUoAAAiByAEKAAAIgtHBEAgByALc2hBA3YMAgsDQCAEQQRqIQQgBUEEaiIFIA9PDQEgBSgAACIHIAQoAAAiC0YNAAsgBSAHIAtzaEEDdmogCGsMAQsCQCAFIBVPDQAgBC8AACAFLwAARw0AIARBAmohBCAFQQJqIQULIAUgDUkEfyAFIAQtAAAgBS0AAEZqBSAFCyAIawtBBGohBQsgDkH/k+vcAzYCDAJAAn8CQAJAAkAgGkEBaw4CAQIACyAAIAYgDSAOQQxqEJEBDAILIAAgBiANIA5BDGoQkAEMAQsgACAGIA0gDkEMahCPAQsiBCAFIAQgBUsiBBsiB0EETwRAIAYgDCAEGyIMIQUgDigCDEEBIAQbIgghBCAHIQsCQCAGIBBPDQADQCAGQQFqIQUCQCAIRQRAQQAhCAwBCyAJRQ0AIAUoAAAgBSASaigAAEcNACAGQQVqIgsgEmohBCAIZyAHQQNsakEeawJ/AkACQCALIA9PBEAgCyEGDAELIAsiBigAACIWIAQoAAAiF0cEQCAWIBdzaEEDdkEEcgwDCwNAIARBBGohBCAGQQRqIgYgD08NASAGKAAAIhYgBCgAACIXRg0ACyAGIBYgF3NoQQN2aiEGDAELAkAgBiAVTw0AIAQvAAAgBi8AAEcNACAEQQJqIQQgBkECaiEGCyAGIA1PDQAgBiAELQAAIAYtAABGaiEGCyAGIAtrIgRBe0sNASAEQQRqCyIGQQNsTg0AQQEhCCAFIQwgBiEHCyAOQf+T69wDNgIIAkACfwJAAkACQCAaQQFrDgIBAgALIAAgBSANIA5BCGoQkQEMAgsgACAFIA0gDkEIahCQAQwBCyAAIAUgDSAOQQhqEI8BCyILQQRJDQAgDigCCCIEZyALQQJ0akEfayAIZyAHQQJ0akEba0wNACAFIQYgCyEHIAQhCCAFIQwgBSAQSQ0BDAILCyAMIQUgCCEEIAchCwsCfyAEQQRJBEAgBSEHIAkhDCAKDAELAkAgAyAFTwRAIAUhBwwBCyAFIQcgBUEDIARrIghqIBhNDQADQCAFQQFrIgctAAAgByAIaiIGLQAARwRAIAUhBwwCCyALQQFqIQsgAyAHTw0BIAchBSAGIBhLDQALCyAEQQNrIQwgCQshCCAHIANrIQogASgCDCEFAkACQCAHIBFNBEAgAykAACEcIAUgAykACDcACCAFIBw3AAAgASgCDCEGIApBEE0EQCABIAYgCmo2AgwgASgCBCEFDAMLIAMpABAhHCAGIAMpABg3ABggBiAcNwAQIApBIUgNASAGIApqIQkgA0EQaiEFIAZBIGohBgNAIAUpABAhHCAGIAUpABg3AAggBiAcNwAAIAUpACAhHCAGIAUpACg3ABggBiAcNwAQIAVBIGohBSAGQSBqIgYgCUkNAAsMAQsgAyARTQRAIAMpAAAhHCAFIAMpAAg3AAggBSAcNwAAIAUgESADayIJaiEGIAlBEU4EQCAFQRBqIQUDQCADKQAQIRwgBSADKQAYNwAIIAUgHDcAACADKQAgIRwgBSADKQAoNwAYIAUgHDcAECADQSBqIQMgBUEgaiIFIAZJDQALCyAGIQUgESEDCyADIAdPDQBBACEJIAcgAyIGa0EHcSISBEADQCAFIAYtAAA6AAAgBUEBaiEFIAZBAWohBiAJQQFqIgkgEkcNAAsLIAMgB2tBeEsNAANAIAUgBi0AADoAACAFIAYtAAE6AAEgBSAGLQACOgACIAUgBi0AAzoAAyAFIAYtAAQ6AAQgBSAGLQAFOgAFIAUgBi0ABjoABiAFIAYtAAc6AAcgBUEIaiEFIAZBCGoiBiAHRw0ACwsgASABKAIMIApqNgIMIAEoAgQhBSAKQYCABEkNACABQQE2AiQgASAFIAEoAgBrQQN1NgIoCyAFIAQ2AgAgBSAKOwEEIAtBA2siA0GAgARPBEAgAUECNgIkIAEgBSABKAIAa0EDdTYCKAsgBSADOwEGIAEgBUEIaiIENgIEIAAoAtwBBEAgAEEANgLcAQsgByALaiEDIAhFBEAgCCEKIAwhCSADIQYMAgsgCCEKIAwhCSAQIAMiBkkNAQNAIAghCSAMIQggAygAACADIAlrKAAARwRAIAkhCiAIIQkgAyEGDAMLIANBBGoiByAJayEGAn8CQCAHIA9PBEAgByEFDAELIAciBSgAACIKIAYoAAAiDEcEQCAKIAxzaEEDdgwCCwNAIAZBBGohBiAFQQRqIgUgD08NASAFKAAAIgogBigAACIMRg0ACyAFIAogDHNoQQN2aiAHawwBCwJAIAUgFU8NACAGLwAAIAUvAABHDQAgBkECaiEGIAVBAmohBQsgBSANSQR/IAUgBi0AACAFLQAARmoFIAULIAdrCyEFIAMgEU0EQCADKQAAIRwgASgCDCIEIAMpAAg3AAggBCAcNwAAIAEoAgQhBAsgBEEBNgIAIARBADsBBCAFQQFqIgZBgIAETwRAIAFBAjYCJCABIAQgASgCAGtBA3U2AigLIAQgBjsBBiABIARBCGoiBDYCBCAFQQRqIANqIQMgCEUEQCAIIQogAyEGDAMLIAkhDCAIIQogECADIgZPDQALDAELIAAgBiADayIEQf8PSzYC3AEgBEEIdiAGakEBaiEGCyAGIBBJDQALCyACIAkgE0EAIBkbIAkbNgIAIAIgCiATIBRBACAbGyIAIAkbIAAgGRsgChs2AgQgDkEQaiQAIA0gA2sLohUCGH8BfiMAQRBrIg0kACACKAIEIRcgAigCACEVIABBADYC3AFBACAVIBUgAyAAKAIEIgggACgCDCIKaiIaIANGaiIFIAhrIgcgCiAHQQEgACgCuAF0IghrIAogByAKayAISxsgACgCGBtrIghLIhsbIQpBACAXIAggF0kiHBshDiADIARqIgxBCGsiEiAFSwRAIAxBIGshEyAMQQFrIRYgDEEDayEQQQRBBiAAKALIASIEIARBBk8bIgQgBEEETRtBBGshGANAQQAhBkEAIAprIRQgBUEBaiELAkAgCkUNACALIAprKAAAIAUoAAFHDQAgBUEFaiIIIBRqIQQCfwJAIAggEE8EQCAIIQYMAQsgCCIGKAAAIgkgBCgAACIHRwRAIAcgCXNoQQN2DAILA0AgBEEEaiEEIAZBBGoiBiAQTw0BIAYoAAAiCSAEKAAAIgdGDQALIAYgByAJc2hBA3ZqIAhrDAELAkAgBiAWTw0AIAQvAAAgBi8AAEcNACAEQQJqIQQgBkECaiEGCyAGIAxJBH8gBiAELQAAIAYtAABGagUgBgsgCGsLQQRqIQYLIA1B/5Pr3AM2AgwCQAJ/AkACQAJAIBhBAWsOAgECAAsgACAFIAwgDUEMahCRAQwCCyAAIAUgDCANQQxqEJABDAELIAAgBSAMIA1BDGoQjwELIgQgBiAEIAZLIgQbIg9BBE8EQCAFIAsgBBshCCANKAIMQQEgBBshBAJAIAUgEk8NAANAIAVBAWohCwJAIARFBEBBACEEDAELIApFDQAgCygAACALIBRqKAAARw0AIAVBBWoiCSAUaiEHIARnIA9BA2xqQR5rAn8CQAJAIAkgEE8EQCAJIQYMAQsgCSIGKAAAIhkgBygAACIRRwRAIBEgGXNoQQN2QQRyDAMLA0AgB0EEaiEHIAZBBGoiBiAQTw0BIAYoAAAiGSAHKAAAIhFGDQALIAYgESAZc2hBA3ZqIQYMAQsCQCAGIBZPDQAgBy8AACAGLwAARw0AIAdBAmohByAGQQJqIQYLIAYgDE8NACAGIActAAAgBi0AAEZqIQYLIAYgCWsiB0F7Sw0BIAdBBGoLIgZBA2xODQBBASEEIAshCCAGIQ8LIA1B/5Pr3AM2AggCfwJAAn8CQAJAAkAgGEEBaw4CAQIACyAAIAsgDCANQQhqEJEBDAILIAAgCyAMIA1BCGoQkAEMAQsgACALIAwgDUEIahCPAQsiBkEESQ0AIA0oAggiB2cgBkECdGpBH2sgBGcgD0ECdGpBG2tMDQAgCyEFIAYhDyAHDAELIAsgEk8NAiAFQQJqIQkCQCAERQRAQQAhBAwBCyAKRQ0AIAkoAAAgCSAUaigAAEcNACAFQQZqIgcgFGohBiAEZyAPQQJ0akEeawJ/AkACQCAHIBBPBEAgByEFDAELIAciBSgAACIRIAYoAAAiC0cEQCALIBFzaEEDdkEEcgwDCwNAIAZBBGohBiAFQQRqIgUgEE8NASAFKAAAIhEgBigAACILRg0ACyAFIAsgEXNoQQN2aiEFDAELAkAgBSAWTw0AIAYvAAAgBS8AAEcNACAGQQJqIQYgBUECaiEFCyAFIAxPDQAgBSAGLQAAIAUtAABGaiEFCyAFIAdrIgVBe0sNASAFQQRqCyIFQQJ0Tg0AQQEhBCAJIQggBSEPCyANQf+T69wDNgIEAn8CQAJAAkAgGEEBaw4CAQIACyAAIAkgDCANQQRqEJEBDAILIAAgCSAMIA1BBGoQkAEMAQsgACAJIAwgDUEEahCPAQsiBkEESQ0CIA0oAgQiB2cgBkECdGpBH2sgBGcgD0ECdGpBGGtMDQIgCSEFIAYhDyAHCyEEIAUhCCAFIBJJDQALCwJ/IARBBEkEQCAIIQkgDiEHIAoMAQsCQCADIAhPBEAgCCEJDAELQQMgBGsiByAIIglqIBpNDQADQCAIQQFrIgktAAAgByAJaiIFLQAARwRAIAghCQwCCyAPQQFqIQ8gAyAJTw0BIAkhCCAFIBpLDQALCyAKIQcgBEEDawshCCAJIANrIQsgASgCDCEFAkACQCAJIBNNBEAgAykAACEdIAUgAykACDcACCAFIB03AAAgASgCDCEGIAtBEE0EQCABIAYgC2o2AgwgASgCBCEFDAMLIAMpABAhHSAGIAMpABg3ABggBiAdNwAQIAtBIUgNASAGIAtqIQogA0EQaiEFIAZBIGohBgNAIAUpABAhHSAGIAUpABg3AAggBiAdNwAAIAUpACAhHSAGIAUpACg3ABggBiAdNwAQIAVBIGohBSAGQSBqIgYgCkkNAAsMAQsgAyATTQRAIAMpAAAhHSAFIAMpAAg3AAggBSAdNwAAIAUgEyADayIGaiEKIAZBEU4EQCAFQRBqIQUDQCADKQAQIR0gBSADKQAYNwAIIAUgHTcAACADKQAgIR0gBSADKQAoNwAYIAUgHTcAECADQSBqIQMgBUEgaiIFIApJDQALCyAKIQUgEyEDCyADIAlPDQBBACEKIAkgAyIGa0EHcSIOBEADQCAFIAYtAAA6AAAgBUEBaiEFIAZBAWohBiAKQQFqIgogDkcNAAsLIAMgCWtBeEsNAANAIAUgBi0AADoAACAFIAYtAAE6AAEgBSAGLQACOgACIAUgBi0AAzoAAyAFIAYtAAQ6AAQgBSAGLQAFOgAFIAUgBi0ABjoABiAFIAYtAAc6AAcgBUEIaiEFIAZBCGoiBiAJRw0ACwsgASABKAIMIAtqNgIMIAEoAgQhBSALQYCABEkNACABQQE2AiQgASAFIAEoAgBrQQN1NgIoCyAFIAQ2AgAgBSALOwEEIA9BA2siA0GAgARPBEAgAUECNgIkIAEgBSABKAIAa0EDdTYCKAsgBSADOwEGIAEgBUEIaiIENgIEIAAoAtwBBEAgAEEANgLcAQsgCSAPaiEDIAdFBEAgByEOIAghCiADIQUMAgsgByEOIAghCiASIAMiBUkNAQNAIAchCiAIIQcgAygAACADIAprKAAARwRAIAohDiAHIQogAyEFDAMLIANBBGoiCCAKayEGAn8CQCAIIBBPBEAgCCEFDAELIAgiBSgAACIJIAYoAAAiDkcEQCAJIA5zaEEDdgwCCwNAIAZBBGohBiAFQQRqIgUgEE8NASAFKAAAIgkgBigAACIORg0ACyAFIAkgDnNoQQN2aiAIawwBCwJAIAUgFk8NACAGLwAAIAUvAABHDQAgBkECaiEGIAVBAmohBQsgBSAMSQR/IAUgBi0AACAFLQAARmoFIAULIAhrCyEFIAMgE00EQCADKQAAIR0gASgCDCIEIAMpAAg3AAggBCAdNwAAIAEoAgQhBAsgBEEBNgIAIARBADsBBCAFQQFqIghBgIAETwRAIAFBAjYCJCABIAQgASgCAGtBA3U2AigLIAQgCDsBBiABIARBCGoiBDYCBCAFQQRqIANqIQMgB0UEQCAHIQ4gAyEFDAMLIAohCCAHIQ4gEiADIgVPDQALDAELIAAgBSADayIEQf8PSzYC3AEgBEEIdiAFakEBaiEFCyAFIBJJDQALCyACIAogFUEAIBsbIAobNgIAIAIgDiAVIBdBACAcGyIAIAobIAAgGxsgDhs2AgQgDUEQaiQAIAwgA2sLC/TZAS0AQYAIC4Uqb3BlcmF0b3J+AHsuLi59AG9wZXJhdG9yfHwAb3BlcmF0b3J8AE9wZXJhdGlvbiBtYWRlIG5vIHByb2dyZXNzIG92ZXIgbXVsdGlwbGUgY2FsbHMsIGR1ZSB0byBpbnB1dCBiZWluZyBlbXB0eQBBbGxvY2F0aW9uIGVycm9yIDogbm90IGVub3VnaCBtZW1vcnkAIGltYWdpbmFyeQBUeQBueAAgY29tcGxleABEeAAtKyAgIDBYMHgALTBYKzBYIDBYLTB4KzB4IDB4AHR3AHRocm93AHpzdGQgY29kZWMgZXJyb3I6IG91dHB1dCBidWZmZXIgb3ZlcmZsb3cAb3BlcmF0b3IgbmV3AER3AER2AFR1AENvbnRleHQgc2hvdWxkIGJlIGluaXQgZmlyc3QAIGNvbnN0AGNvbnN0X2Nhc3QAcmVpbnRlcnByZXRfY2FzdABzdGF0aWNfY2FzdABkeW5hbWljX2Nhc3QAdW5zaWduZWQgc2hvcnQAIG5vZXhjZXB0AHVuc2lnbmVkIGludABfQml0SW50AGZyZWVfcmVzdWx0AG9wZXJhdG9yIGNvX2F3YWl0AHN0cnVjdAAgcmVzdHJpY3QAU3JjIHNpemUgaXMgaW5jb3JyZWN0AG9iamNfb2JqZWN0AGZsb2F0AF9GbG9hdABzdGQ6Om51bGxwdHJfdAB3Y2hhcl90AGNoYXI4X3QAY2hhcjE2X3QAdWludDY0X3QAY2hhcjMyX3QAVXQAVHQAU3QAZGVjb21wcmVzcwBVbnN1cHBvcnRlZCBjb21iaW5hdGlvbiBvZiBwYXJhbWV0ZXJzAHRoaXMAZ3MAcmVxdWlyZXMAQ2Fubm90IGNyZWF0ZSBEaWN0aW9uYXJ5IGZyb20gcHJvdmlkZWQgc2FtcGxlcwBUcwBudWxscHRyAHNyAFVua25vd24gZnJhbWUgZGVzY3JpcHRvcgBvcGVyYXRvcgBhbGxvY2F0b3IAenN0ZCBjb2RlYyBlcnJvcjogY29udGVudCBzaXplIGVycm9yAFVuc3VwcG9ydGVkIGZyYW1lIHBhcmFtZXRlcgBVbnN1cHBvcnRlZCBwYXJhbWV0ZXIAenN0ZCBjb2RlYyBlcnJvcjogY2Fubm90IGFsbG9jYXRlIG91dHB1dCBidWZmZXIAenN0ZCBjb2RlYyBlcnJvcjogY291bGQgbm90IGV4cGFuZCBvdXRwdXQgYnVmZmVyAE9wZXJhdGlvbiBvbiBOVUxMIGRlc3RpbmF0aW9uIGJ1ZmZlcgB1bnNpZ25lZCBjaGFyAHJxAHNwAGZwAFRwACBhdXRvAG9iamNwcm90bwBzbwBEbwBzdGQ6OmV4Y2VwdGlvbgBIZWFkZXIgb2YgTGl0ZXJhbHMnIGJsb2NrIGRvZXNuJ3QgcmVzcGVjdCBmb3JtYXQgc3BlY2lmaWNhdGlvbgB1bmlvbgBkbgBuYW4AVG4ARG4AUmVzdG9yZWQgZGF0YSBkb2Vzbid0IG1hdGNoIGNoZWNrc3VtAGVudW0AYmFzaWNfaW9zdHJlYW0AYmFzaWNfb3N0cmVhbQBiYXNpY19pc3RyZWFtAHVsAHRsAGJvb2wAT3BlcmF0aW9uIG1hZGUgbm8gcHJvZ3Jlc3Mgb3ZlciBtdWx0aXBsZSBjYWxscywgZHVlIHRvIG91dHB1dCBidWZmZXIgYmVpbmcgZnVsbABEZXN0aW5hdGlvbiBidWZmZXIgaXMgdG9vIHNtYWxsAFNwZWNpZmllZCBtYXhTeW1ib2xWYWx1ZSBpcyB0b28gc21hbGwAaWwAc3RyaW5nIGxpdGVyYWwAVWwAeXB0bmsAVGsAcGkAbGkAd29ya1NwYWNlIGJ1ZmZlciBpcyBub3QgbGFyZ2UgZW5vdWdoAERpY3Rpb25hcnkgbWlzbWF0Y2gARGVzdGluYXRpb24gYnVmZmVyIGlzIHdyb25nAFNvdXJjZSBidWZmZXIgaXMgd3JvbmcAdW5zaWduZWQgbG9uZyBsb25nAHVuc2lnbmVkIGxvbmcAc3RkOjp3c3RyaW5nAGJhc2ljX3N0cmluZwBzdGQ6OnN0cmluZwBzdGQ6OnUxNnN0cmluZwBzdGQ6OnUzMnN0cmluZwBBbiBJL08gZXJyb3Igb2NjdXJyZWQgd2hlbiByZWFkaW5nL3NlZWtpbmcARnJhbWUgcmVxdWlyZXMgdG9vIG11Y2ggbWVtb3J5IGZvciBkZWNvZGluZwBfX3V1aWRvZgBpbmYAaGFsZgAlYWYAdHJ1ZQBvcGVyYXRvciBkZWxldGUAZmFsc2UAZGVjbHR5cGUAIHZvbGF0aWxlAGxvbmcgZG91YmxlAF9ibG9ja19pbnZva2UARnJhbWUgaW5kZXggaXMgdG9vIGxhcmdlAFVuc3VwcG9ydGVkIG1heCBTeW1ib2wgVmFsdWUgOiB0b28gbGFyZ2UAT3BlcmF0aW9uIG5vdCBhdXRob3JpemVkIGF0IGN1cnJlbnQgcHJvY2Vzc2luZyBzdGFnZQBCbG9jay1sZXZlbCBleHRlcm5hbCBzZXF1ZW5jZSBwcm9kdWNlciByZXR1cm5lZCBhbiBlcnJvciBjb2RlAFVuc3BlY2lmaWVkIGVycm9yIGNvZGUAVGUAc3RkAFBhcmFtZXRlciBpcyBvdXQgb2YgYm91bmQAdm9pZABFeHRlcm5hbCBzZXF1ZW5jZXMgYXJlIG5vdCB2YWxpZAB0YWJsZUxvZyByZXF1aXJlcyB0b28gbXVjaCBtZW1vcnkgOiB1bnN1cHBvcnRlZABWZXJzaW9uIG5vdCBzdXBwb3J0ZWQARGljdGlvbmFyeSBpcyBjb3JydXB0ZWQATm8gZXJyb3IgZGV0ZWN0ZWQARGF0YSBjb3JydXB0aW9uIGRldGVjdGVkAHBsZWRnZWQgYnVmZmVyIHN0YWJpbGl0eSBjb25kaXRpb24gaXMgbm90IHJlc3BlY3RlZAAndW5uYW1lZABzdGQ6OmJhZF9hbGxvYwBtYwBVYgAnbGFtYmRhACVhAGJhc2ljXwBvcGVyYXRvcl4Ab3BlcmF0b3IgbmV3W10Ab3BlcmF0b3JbXQBvcGVyYXRvciBkZWxldGVbXQBwaXhlbCB2ZWN0b3JbAHNaAF9fX19aAGZwVAAkVFQAJFQAclEAc1AARE8Ac3JOAF9HTE9CQUxfX04ATkFOACROAGZMACVMYUwAVWE5ZW5hYmxlX2lmSQBJTkYAUkUAT0UAYjFFAGIwRQBEQwBvcGVyYXRvcj8AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2hvcnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGludD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8ZmxvYXQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDhfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDE2X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDE2X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQ2NF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ2NF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MzJfdD4Ab3BlcmF0b3I+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGNoYXI+ADxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+ACwgc3RkOjphbGxvY2F0b3I8Y2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgY2hhcj4Ac3RkOjpiYXNpY19zdHJpbmc8dW5zaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2lnbmVkIGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGxvbmc+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGxvbmc+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGRvdWJsZT4Ab3BlcmF0b3I+PgBvcGVyYXRvcjw9PgBvcGVyYXRvci0+AG9wZXJhdG9yfD0Ab3BlcmF0b3I9AG9wZXJhdG9yXj0Ab3BlcmF0b3I+PQBvcGVyYXRvcj4+PQBvcGVyYXRvcj09AG9wZXJhdG9yPD0Ab3BlcmF0b3I8PD0Ab3BlcmF0b3IvPQBvcGVyYXRvci09AG9wZXJhdG9yKz0Ab3BlcmF0b3IqPQBvcGVyYXRvciY9AG9wZXJhdG9yJT0Ab3BlcmF0b3IhPQBvcGVyYXRvcjwAdGVtcGxhdGU8AGlkPABvcGVyYXRvcjw8AC48ACI8AFthYmk6ACBbZW5hYmxlX2lmOgBzdGQ6OgB1bnNpZ25lZCBfX2ludDEyOABfX2Zsb2F0MTI4AGRlY2ltYWwxMjgAZGVjaW1hbDY0AGRlY2ltYWwzMgAwAG9wZXJhdG9yLwBvcGVyYXRvci4Ac2l6ZW9mLi4uAG9wZXJhdG9yLQAtaW4tAG9wZXJhdG9yLS0Ab3BlcmF0b3IsAG9wZXJhdG9yKwBvcGVyYXRvcisrAG9wZXJhdG9yKgBvcGVyYXRvci0+KgA6OioAb3BlcmF0b3IuKgAgZGVjbHR5cGUoYXV0bykAKG51bGwpAChhbm9ueW1vdXMgbmFtZXNwYWNlKQBFcnJvciAoZ2VuZXJpYykAb3BlcmF0b3IoKQAgKAAnYmxvY2stbGl0ZXJhbCcAb3BlcmF0b3ImAG9wZXJhdG9yJiYAICYmACAmAG9wZXJhdG9yJQA+IgBvcGVyYXRvciEAdGhyb3cgAG5vZXhjZXB0IAAgYXQgb2Zmc2V0IAB0aGlzIAAgcmVxdWlyZXMgAG9wZXJhdG9yIAByZWZlcmVuY2UgdGVtcG9yYXJ5IGZvciAAdGVtcGxhdGUgcGFyYW1ldGVyIG9iamVjdCBmb3IgAHR5cGVpbmZvIGZvciAAdGhyZWFkLWxvY2FsIHdyYXBwZXIgcm91dGluZSBmb3IgAHRocmVhZC1sb2NhbCBpbml0aWFsaXphdGlvbiByb3V0aW5lIGZvciAAdHlwZWluZm8gbmFtZSBmb3IgAGNvbnN0cnVjdGlvbiB2dGFibGUgZm9yIABndWFyZCB2YXJpYWJsZSBmb3IgAFZUVCBmb3IgAGNvdmFyaWFudCByZXR1cm4gdGh1bmsgdG8gAG5vbi12aXJ0dWFsIHRodW5rIHRvIABpbnZvY2F0aW9uIGZ1bmN0aW9uIGZvciBibG9jayBpbiAAYWxpZ25vZiAAc2l6ZW9mIAA+IHR5cGVuYW1lIABpbml0aWFsaXplciBmb3IgbW9kdWxlIAA6OmZyaWVuZCAAdHlwZWlkIAB1bnNpZ25lZCAAID8gACAtPiAAID0gAHpzdGQgY29kZWMgZXJyb3I6IAAgOiAAc2l6ZW9mLi4uIAAgLi4uIAAsIABvcGVyYXRvciIiIAB8FgAAOBUAAHBwcAB8FgAAOBUAAARJAABwcHBpAAAAALBIAAB2cABOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRQAAACRLAAD3FAAATlN0M19fMjEyYmFzaWNfc3RyaW5nSWhOU18xMWNoYXJfdHJhaXRzSWhFRU5TXzlhbGxvY2F0b3JJaEVFRUUAACRLAABAFQAATlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRUUAACRLAACIFQAATlN0M19fMjEyYmFzaWNfc3RyaW5nSURzTlNfMTFjaGFyX3RyYWl0c0lEc0VFTlNfOWFsbG9jYXRvcklEc0VFRUUAAAAkSwAA0BUAAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0lEaU5TXzExY2hhcl90cmFpdHNJRGlFRU5TXzlhbGxvY2F0b3JJRGlFRUVFAAAAJEsAABwWAABOMTBlbXNjcmlwdGVuM3ZhbEUAACRLAABoFgAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJY0VFAAAkSwAAhBYAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWFFRQAAJEsAAKwWAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0loRUUAACRLAADUFgAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJc0VFAAAkSwAA/BYAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXRFRQAAJEsAACQXAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lpRUUAACRLAABMFwAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJakVFAAAkSwAAdBcAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWxFRQAAJEsAAJwXAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0ltRUUAACRLAADEFwAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJeEVFAAAkSwAA7BcAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXlFRQAAJEsAABQYAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lmRUUAACRLAAA8GAAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJZEVFAAAkSwAAZBgAAAAAAAAhAAAAIQAAACIAAAAjAAAAJAAAACUAAAAmAAAAJwAAACgAAAApAAAAKgAAACoAAAArAAAALAAAAC0AAAAuAAAALwAAADAAAAAxAAAAMQAAADIAAAAyAAAAMwAAADQAAAA1AAAANgAAADcAAAA4AAAAOQAAADkAQZQyCwk6AAAAOwAAADwAQbAyC90xPQAAAD4AAAA/AAAAQAAAAEEAAABCAAAAQwAAAEQAAABFAAAARgAAAEcAAABIAAAAAQAEAAMAAgACAAIAAgACAAIAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQD//////////////////wAAAAAAABMAAAAMAAAADQAAAAEAAAAGAAAAAQAAAAEAAAATAAAADQAAAA4AAAABAAAABwAAAAAAAAABAAAAFAAAAA8AAAAQAAAAAQAAAAYAAAAAAAAAAQAAABUAAAAQAAAAEQAAAAEAAAAFAAAAAAAAAAIAAAAVAAAAEgAAABIAAAABAAAABQAAAAAAAAACAAAAFQAAABIAAAATAAAAAwAAAAUAAAACAAAAAwAAABUAAAASAAAAEwAAAAMAAAAFAAAABAAAAAQAAAAVAAAAEwAAABQAAAAEAAAABQAAAAgAAAAEAAAAFQAAABMAAAAUAAAABAAAAAUAAAAQAAAABQAAABYAAAAUAAAAFQAAAAQAAAAFAAAAEAAAAAUAAAAWAAAAFQAAABYAAAAFAAAABQAAABAAAAAFAAAAFgAAABUAAAAWAAAABgAAAAUAAAAQAAAABQAAABYAAAAWAAAAFwAAAAYAAAAFAAAAIAAAAAUAAAAWAAAAFgAAABYAAAAEAAAABQAAACAAAAAGAAAAFgAAABYAAAAXAAAABQAAAAUAAAAgAAAABgAAABYAAAAXAAAAFwAAAAYAAAAFAAAAIAAAAAYAAAAWAAAAFgAAABYAAAAFAAAABQAAADAAAAAHAAAAFwAAABcAAAAWAAAABQAAAAQAAABAAAAABwAAABcAAAAXAAAAFgAAAAYAAAADAAAAQAAAAAgAAAAXAAAAGAAAABYAAAAHAAAAAwAAAAABAAAJAAAAGQAAABkAAAAXAAAABwAAAAMAAAAAAQAACQAAABoAAAAaAAAAGAAAAAcAAAADAAAAAAIAAAkAAAAbAAAAGwAAABkAAAAJAAAAAwAAAOcDAAAJAAAAEgAAAAwAAAANAAAAAQAAAAUAAAABAAAAAQAAABIAAAANAAAADgAAAAEAAAAGAAAAAAAAAAEAAAASAAAADgAAAA4AAAABAAAABQAAAAAAAAACAAAAEgAAABAAAAAQAAAAAQAAAAQAAAAAAAAAAgAAABIAAAAQAAAAEQAAAAMAAAAFAAAAAgAAAAMAAAASAAAAEQAAABIAAAAFAAAABQAAAAIAAAADAAAAEgAAABIAAAATAAAAAwAAAAUAAAAEAAAABAAAABIAAAASAAAAEwAAAAQAAAAEAAAABAAAAAQAAAASAAAAEgAAABMAAAAEAAAABAAAAAgAAAAFAAAAEgAAABIAAAATAAAABQAAAAQAAAAIAAAABQAAABIAAAASAAAAEwAAAAYAAAAEAAAACAAAAAUAAAASAAAAEgAAABMAAAAFAAAABAAAAAwAAAAGAAAAEgAAABMAAAATAAAABwAAAAQAAAAMAAAABgAAABIAAAASAAAAEwAAAAQAAAAEAAAAEAAAAAcAAAASAAAAEgAAABMAAAAEAAAAAwAAACAAAAAHAAAAEgAAABIAAAATAAAABgAAAAMAAACAAAAABwAAABIAAAATAAAAEwAAAAYAAAADAAAAgAAAAAgAAAASAAAAEwAAABMAAAAIAAAAAwAAAAABAAAIAAAAEgAAABMAAAATAAAABgAAAAMAAACAAAAACQAAABIAAAATAAAAEwAAAAgAAAADAAAAAAEAAAkAAAASAAAAEwAAABMAAAAKAAAAAwAAAAACAAAJAAAAEgAAABMAAAATAAAADAAAAAMAAAAAAgAACQAAABIAAAATAAAAEwAAAA0AAAADAAAA5wMAAAkAAAARAAAADAAAAAwAAAABAAAABQAAAAEAAAABAAAAEQAAAAwAAAANAAAAAQAAAAYAAAAAAAAAAQAAABEAAAANAAAADwAAAAEAAAAFAAAAAAAAAAEAAAARAAAADwAAABAAAAACAAAABQAAAAAAAAACAAAAEQAAABEAAAARAAAAAgAAAAQAAAAAAAAAAgAAABEAAAAQAAAAEQAAAAMAAAAEAAAAAgAAAAMAAAARAAAAEAAAABEAAAADAAAABAAAAAQAAAAEAAAAEQAAABAAAAARAAAAAwAAAAQAAAAIAAAABQAAABEAAAAQAAAAEQAAAAQAAAAEAAAACAAAAAUAAAARAAAAEAAAABEAAAAFAAAABAAAAAgAAAAFAAAAEQAAABAAAAARAAAABgAAAAQAAAAIAAAABQAAABEAAAARAAAAEQAAAAUAAAAEAAAACAAAAAYAAAARAAAAEgAAABEAAAAHAAAABAAAAAwAAAAGAAAAEQAAABIAAAARAAAAAwAAAAQAAAAMAAAABwAAABEAAAASAAAAEQAAAAQAAAADAAAAIAAAAAcAAAARAAAAEgAAABEAAAAGAAAAAwAAAAABAAAHAAAAEQAAABIAAAARAAAABgAAAAMAAACAAAAACAAAABEAAAASAAAAEQAAAAgAAAADAAAAAAEAAAgAAAARAAAAEgAAABEAAAAKAAAAAwAAAAACAAAIAAAAEQAAABIAAAARAAAABQAAAAMAAAAAAQAACQAAABEAAAASAAAAEQAAAAcAAAADAAAAAAIAAAkAAAARAAAAEgAAABEAAAAJAAAAAwAAAAACAAAJAAAAEQAAABIAAAARAAAACwAAAAMAAADnAwAACQAAAA4AAAAMAAAADQAAAAEAAAAFAAAAAQAAAAEAAAAOAAAADgAAAA8AAAABAAAABQAAAAAAAAABAAAADgAAAA4AAAAPAAAAAQAAAAQAAAAAAAAAAQAAAA4AAAAOAAAADwAAAAIAAAAEAAAAAAAAAAIAAAAOAAAADgAAAA4AAAAEAAAABAAAAAIAAAADAAAADgAAAA4AAAAOAAAAAwAAAAQAAAAEAAAABAAAAA4AAAAOAAAADgAAAAQAAAAEAAAACAAAAAUAAAAOAAAADgAAAA4AAAAGAAAABAAAAAgAAAAFAAAADgAAAA4AAAAOAAAACAAAAAQAAAAIAAAABQAAAA4AAAAPAAAADgAAAAUAAAAEAAAACAAAAAYAAAAOAAAADwAAAA4AAAAJAAAABAAAAAgAAAAGAAAADgAAAA8AAAAOAAAAAwAAAAQAAAAMAAAABwAAAA4AAAAPAAAADgAAAAQAAAADAAAAGAAAAAcAAAAOAAAADwAAAA4AAAAFAAAAAwAAACAAAAAIAAAADgAAAA8AAAAPAAAABgAAAAMAAABAAAAACAAAAA4AAAAPAAAADwAAAAcAAAADAAAAAAEAAAgAAAAOAAAADwAAAA8AAAAFAAAAAwAAADAAAAAJAAAADgAAAA8AAAAPAAAABgAAAAMAAACAAAAACQAAAA4AAAAPAAAADwAAAAcAAAADAAAAAAEAAAkAAAAOAAAADwAAAA8AAAAIAAAAAwAAAAABAAAJAAAADgAAAA8AAAAPAAAACAAAAAMAAAAAAgAACQAAAA4AAAAPAAAADwAAAAkAAAADAAAAAAIAAAkAAAAOAAAADwAAAA8AAAAKAAAAAwAAAOcDAAAJAAAAAAAAAGs4BwANsgcAnPIHAHBkCABgrgoAsHELADCqDAAAAAAAAAgAAAAHAABqBgAAAAYAAK0FAABqBQAAMQUAAAAFAADUBAAArQQAAIoEAABqBAAATAQAADEEAAAXBAAAAAQAAOkDAADUAwAAwAMAAK0DAACbAwAAigMAAHkDAABqAwAAWwMAAEwDAAA+AwAAMQMAACQDAAAXAwAACwMAAAADAAD0AgAA6QIAAN4CAADUAgAAygIAAMACAAC2AgAArQIAAKQCAACbAgAAkgIAAIoCAACCAgAAeQIAAHICAABqAgAAYgIAAFsCAABTAgAATAIAAEUCAAA+AgAANwIAADECAAAqAgAAJAIAAB4CAAAXAgAAEQIAAAsCAAAFAgAAAAIAAPoBAAD0AQAA7wEAAOkBAADkAQAA3gEAANkBAADUAQAAzwEAAMoBAADFAQAAwAEAALsBAAC2AQAAsgEAAK0BAACoAQAApAEAAJ8BAACbAQAAlwEAAJIBAACOAQAAigEAAIYBAACCAQAAfgEAAHkBAAB1AQAAcgEAAG4BAABqAQAAZgEAAGIBAABeAQAAWwEAAFcBAABTAQAAUAEAAEwBAABJAQAARQEAAEIBAAA+AQAAOwEAADcBAAA0AQAAMQEAAC4BAAAqAQAAJwEAACQBAAAhAQAAHgEAABoBAAAXAQAAFAEAABEBAAAOAQAACwEAAAgBAAAFAQAAAgEAAAABAAD9AAAA+gAAAPcAAAD0AAAA8QAAAO8AAADsAAAA6QAAAOYAAADkAAAA4QAAAN4AAADcAAAA2QAAANcAAADUAAAA0QAAAM8AAADMAAAAygAAAMcAAADFAAAAwgAAAMAAAAC+AAAAuwAAALkAAAC2AAAAtAAAALIAAACvAAAArQAAAKsAAACoAAAApgAAAKQAAACiAAAAnwAAAJ0AAACbAAAAmQAAAJcAAACVAAAAkgAAAJAAAACOAAAAjAAAAIoAAACIAAAAhgAAAIQAAACCAAAAgAAAAH4AAAB7AAAAeQAAAHcAAAB1AAAAcwAAAHIAAABwAAAAbgAAAGwAAABqAAAAaAAAAGYAAABkAAAAYgAAAGAAAABeAAAAXQAAAFsAAABZAAAAVwAAAFUAAABTAAAAUgAAAFAAAABOAAAATAAAAEoAAABJAAAARwAAAEUAAABDAAAAQgAAAEAAAAA+AAAAPQAAADsAAAA5AAAANwAAADYAAAA0AAAAMgAAADEAAAAvAAAALgAAACwAAAAqAAAAKQAAACcAAAAlAAAAJAAAACIAAAAhAAAAHwAAAB4AAAAcAAAAGgAAABkAAAAXAAAAFgAAABQAAAATAAAAEQAAABAAAAAOAAAADQAAAAsAAAAKAAAACAAAAAcAAAAFAAAABAAAAAIAAAABAAAAAQABAAEAAQABAAEAAgACAAIAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEA/////////////wAAAAAAAAQAAwACAAIAAgACAAIAAgACAAIAAgACAAIAAQABAAEAAgACAAIAAgACAAIAAgACAAIAAwACAAEAAQABAAEAAQD//////////wAAAAAAAAAAAQAEAAMAAgACAAIAAgACAAIAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQD//////////////////wAAAAAAAFx3d18s97j1EsR6ayZfk4TMDHPKqa1Htt6xTxFLu2Ww0J86jH5OWDQFa+JqfOGXTgSmmbxD1wM6TwTEIiQEzc6eJSSFxXbedsrqrVv2KIWcKXUJ4gY3VoaJ2HWjX0cCKebrpTmXKrOvOeaDONoUJ86e5iIXgq8eAii2IIZiewMA9cqIXUWNmgRAgZXmEddWhR9cYPx0rvcEIDq9aDQMn4KeFyXGhcj9TxuvPYoE3nOEskZWsCKIAFFfzNGyEl3XabxUkRUZSp2MA0C9q/QQzMORc7nsHNxt0C4wgO3n5ki+RzXgzjHbgTQQ0qHafPbDrMyWf4wdd8tl3SNXBXdxso6+lM1EDZWJxyuxADfc6k+TgvG97RFfSF56dmT9RiouHnz6LthxymkpLrq7XpPpRp0rguYFfrZW4KADnXNVP9eUA1qbtr0QcM30gpvX/PleRWHBSYdKtZyGJdKFYfqk0Ti76buUbxZ1tPFZCXJINRSkuiZruoBH7XoSI+A5RCbO0AjVeGB0bTaEvhftcjyXzqgBC0OaoiPDIe6Ar+MX1mKZW/eMnB3pDKu8TZrR5o4OU3JdP/UMjPYuBlWoQBZoOsBnCTGcn05uSaAUm7VyBFh4d4U4O8IkOCdTtVzUOpK/Zoa6kiRaGq5HWZYinlYE4zVvC4dGKhhlRxKUCekltrpswSKFWS6arN3yJGZmbghycTd4O1DKA1DfCT1WeNvBwIidKPysZRjVWPEkUsaucXYX12fpQaLYefuapNnKAeHhK2sYKW4vaCVmUG7AekVTlTl0uzrCtP9dA96qVB9Zsp1CCRB9A6gCKMXzJQsfOCfLajuCT+5RJV7098KAldmiDovh4bS8nFHtOwoBuz2CUvQPZ9I9T2HtQp17xVdiwBOTW0IUXosAuBShSz3BERwx/sFoVUyjPnboZl3wYsLxKpiLt/t1qvp2iO4qu3LR0KRiipeaRLejlD3BfANdwZ26u23x4JIdHxCGx5u3oAepgYbXuavJYimvGvbZesvT/Bb9LCFNYkRnW4yG1910nIlQ5iVjdMOn9CoEuso+WkY5pbFOytUFO/DbCb66clQrNlpOd82D0SkSIqFH36L1jqEMS1C5bkXivd/73zRG474vK81Gw5idgf74rvJhnVnUdlJ/NeNTxHk4SKUkubSSkYgmgAjs24IXZ5baKKqajlhAfPNOs5+8UQa5N4jW5fDTQfdkwbpwS3AKWhO82ipi92jYnAarwLngibo3vPZSNTIBSsFHu5jurEt5AE/VaXpjfd4HcV4l8rY7ea+ImLWZh2tGxvNZO3+qFsaIwv2j/ELPY8qBS2eiNs5a2IjniSN502sFDS3TnU5sOVzlpsDmcUVQ+77M6JFeETKrltE4j94Yy4q/BiZnAYjl2mb7FyOHF2A7g2QoydHyFny4nGaL5XRqdtu+FxTGhZ9liQzqEWCFrdrIrn7+tmW1pHYScyP2hdBppGzpo4NWNvCquPckhG90u03BrOT0WnU4BoZE5r31B3g9OXa7W49tvhfcNdxEzfADCWwZ8f3qcrZn8YJM7ZP/dqadPQXFBBAdUgKSzJzQmro3UfuseilN5YRFNBRqd0sLCo40C+Jx1CAI3EY9uDw4dBgc4e+hx+7tl6pC3BsL5TCzMuBwzlUZ2R3VOSmPuM0UpdO5Ddk/I5Enm3oPxUwKZ3ul38YFKn3Ad/qm0EZmi3fjSWe1R9qOnLMo79utSNQ+k/QLfav2aoSvSW5m6wjyWg5qzTQ19yJmXm5b70LKrn0ppjlV0/OuLYapHo6PSSKH5nLVwD0JUxyY9fuGv7+wCfoVnyFmYemxMIP7xL1m1Odw6ajyNW5zZlrvusG30lnbzZaJbdJH0sfWoxveyOo5Turyr6OfsYucU9gI1V9MDvkJhTOv+1ZZTqN18z4dFY4vLsGuP7jpkTYXeWMBv1aNWrjjikBnEjiCg20JwL0bkA+5Zey8MynTanyV1YosL167diht9GwahQ85ctrCoU0G5sOJU/ocEAwqxTDF+6OEr47XfpmLKOK5gTfEBT2o3vbCc9deW0w2jiIEETmkDd8+ep1WZ2gk2v7cjqGzqbenZ3ZeHXlDoZ84T0zczac9AsGLsMyxKeU6vrR6+U/n2zJhTnVF3zmoQlRjcd5Svj9ksW8vd4F6z0IKHpbq8p7Yg12085s+bkrP5D3u55UyLFRIaM0vZnhMZuHO5MRoTEeLVEeZC4vtpXc31yX8tzbWsRXJANrSsNl1usIhoWSKYM9da18MV/lfJTPz3O7UzhgkkjtjSrMEsODdNsFaL0tdsIPMWNJCjqLdJLRemM05lzZH32IXzuSFJLTgtOfRqPnB8OEWvw5WB2eRw46znczyLW66YhY62Hf/9PnLxLwrfdDX2Xj0QSzg4UxV7035zH4SgXWNBYo8yzYztamRT1z0CyzEOGOISPTNkwhkaKVeV7w07IBAqo609STzOX9S/44f7dnpFKLFjAX8JJJBd/5MsAC6uq9Szw8Sn5owEmJiZezzWKUvvtp6i+xLQjOkrqYTJWJBmKdMMtWijbikKFUkO3OH0sOuaG1+aUSaKLtJL76TEHutij0uY+y7UIOC6uEjB9ls8yuwMXSee4lHcIozy/2eIVYGfKLwEQM755bbwJG/F9uypYVOa/3UjJ1ApksFcbD62d+pH4P+1kAeeX2t6401r1g+XqYlDo3rgIXgFN/Ty7srq81+8lH3DPTYEyZPoU0rBAAAAAIAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAABgAAAAIAAAABAAAAAQAAAAIAAAADAAAABAAAAAQAAAAEAAAAAwAAAAIAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAQaDkAAsUAQEBAQICAwMEBgcICQoLDA0ODxAAQcHkAAs/AQIDBAUGBwgJCgsMDQ4PEBARERISExMUFBQUFRUVFRYWFhYWFhYWFxcXFxcXFxcYGBgYGBgYGBgYGBgYGBgYAEGg5QALFQEBAQECAgMDBAQFBwgJCgsMDQ4PEABBweUAC6wCAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAgISEiIiMjJCQkJCUlJSUmJiYmJiYmJicnJycnJycnKCgoKCgoKCgoKCgoKCgoKCkpKSkpKSkpKSkpKSkpKSkqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgAAAAABAAAAAQAAAAUAAAANAAAAHQAAAD0AAAB9AAAA/QAAAP0BAAD9AwAA/QcAAP0PAAD9HwAA/T8AAP1/AAD9/wAA/f8BAP3/AwD9/wcA/f8PAP3/HwD9/z8A/f9/AP3//wD9//8B/f//A/3//wf9//8P/f//H/3//z/9//9/AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8AAAAAAAAAAAEAAAABAEH45wAL9wIBAAAAAQAAAJYAAADYAAAAfQEAAHcAAACqAAAAzQAAAAICAABwAAAAsQAAAMcAAAAbAgAAbgAAAMUAAADCAAAAhAIAAGsAAADdAAAAwAAAAN8CAABrAAAAAAEAAL0AAABxAwAAagAAAGcBAAC8AAAAjwQAAG0AAABGAgAAuwAAACIGAAByAAAAsAIAALsAAACwBgAAegAAADkDAAC6AAAArQcAAIgAAADQAwAAuQAAAFMIAACWAAAAnAQAALoAAAAWCAAArwAAAGEFAAC5AAAAwwYAAMoAAACEBQAAuQAAAJ8GAADKAAAAAAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAASAAAAFAAAABYAAAAYAAAAHAAAACAAAAAoAAAAMAAAAEAAAACAAAAAAAEAAAACAAAABAAAAAgAAAAQAAAAIAAAAEAAAACAAAAAAAEAQYDrAAsUAQEBAQICAwMEBgcICQoLDA0ODxAAQaDrAAuGBAEAAQEGAAAAAAAABAAAAAAQAAAEAAAAACAAAAUBAAAAAAAABQMAAAAAAAAFBAAAAAAAAAUGAAAAAAAABQcAAAAAAAAFCQAAAAAAAAUKAAAAAAAABQwAAAAAAAAGDgAAAAAAAQUQAAAAAAABBRQAAAAAAAEFFgAAAAAAAgUcAAAAAAADBSAAAAAAAAQFMAAAACAABgVAAAAAAAAHBYAAAAAAAAgGAAEAAAAACgYABAAAAAAMBgAQAAAgAAAEAAAAAAAAAAQBAAAAAAAABQIAAAAgAAAFBAAAAAAAAAUFAAAAIAAABQcAAAAAAAAFCAAAACAAAAUKAAAAAAAABQsAAAAAAAAGDQAAACAAAQUQAAAAAAABBRIAAAAgAAEFFgAAAAAAAgUYAAAAIAADBSAAAAAAAAMFKAAAAAAABgRAAAAAEAAGBEAAAAAgAAcFgAAAAAAACQYAAgAAAAALBgAIAAAwAAAEAAAAABAAAAQBAAAAIAAABQIAAAAgAAAFAwAAACAAAAUFAAAAIAAABQYAAAAgAAAFCAAAACAAAAUJAAAAIAAABQsAAAAgAAAFDAAAAAAAAAYPAAAAIAABBRIAAAAgAAEFFAAAACAAAgUYAAAAIAACBRwAAAAgAAMFKAAAACAABAUwAAAAAAAQBgAAAQAAAA8GAIAAAAAADgYAQAAAAAANBgAgAEG07wALowMBAAAAAQAAAAUAAAANAAAAHQAAAD0AAAB9AAAA/QAAAP0BAAD9AwAA/QcAAP0PAAD9HwAA/T8AAP1/AAD9/wAA/f8BAP3/AwD9/wcA/f8PAP3/HwD9/z8A/f9/AP3//wD9//8B/f//A/3//wf9//8P/f//H/3//z/9//9/AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8BAAEBBQAAAAAAAAUAAAAAAAAGBD0AAAAAAAkF/QEAAAAADwX9fwAAAAAVBf3/HwAAAAMFBQAAAAAABwR9AAAAAAAMBf0PAAAAABIF/f8DAAAAFwX9/38AAAAFBR0AAAAAAAgE/QAAAAAADgX9PwAAAAAUBf3/DwAAAAIFAQAAABAABwR9AAAAAAALBf0HAAAAABEF/f8BAAAAFgX9/z8AAAAEBQ0AAAAQAAgE/QAAAAAADQX9HwAAAAATBf3/BwAAAAEFAQAAABAABgQ9AAAAAAAKBf0DAAAAABAF/f8AAAAAHAX9//8PAAAbBf3//wcAABoF/f//AwAAGQX9//8BAAAYBf3//wBB4PIAC9MBAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJQAAACcAAAApAAAAKwAAAC8AAAAzAAAAOwAAAEMAAABTAAAAYwAAAIMAAAADAQAAAwIAAAMEAAADCAAAAxAAAAMgAAADQAAAA4AAAAMAAQBB4PQACxUBAQEBAgIDAwQEBQcICQoLDA0ODxAAQYD1AAuGBAEAAQEGAAAAAAAABgMAAAAAAAAEBAAAACAAAAUFAAAAAAAABQYAAAAAAAAFCAAAAAAAAAUJAAAAAAAABQsAAAAAAAAGDQAAAAAAAAYQAAAAAAAABhMAAAAAAAAGFgAAAAAAAAYZAAAAAAAABhwAAAAAAAAGHwAAAAAAAAYiAAAAAAABBiUAAAAAAAEGKQAAAAAAAgYvAAAAAAADBjsAAAAAAAQGUwAAAAAABwaDAAAAAAAJBgMCAAAQAAAEBAAAAAAAAAQFAAAAIAAABQYAAAAAAAAFBwAAACAAAAUJAAAAAAAABQoAAAAAAAAGDAAAAAAAAAYPAAAAAAAABhIAAAAAAAAGFQAAAAAAAAYYAAAAAAAABhsAAAAAAAAGHgAAAAAAAAYhAAAAAAABBiMAAAAAAAEGJwAAAAAAAgYrAAAAAAADBjMAAAAAAAQGQwAAAAAABQZjAAAAAAAIBgMBAAAgAAAEBAAAADAAAAQEAAAAEAAABAUAAAAgAAAFBwAAACAAAAUIAAAAIAAABQoAAAAgAAAFCwAAAAAAAAYOAAAAAAAABhEAAAAAAAAGFAAAAAAAAAYXAAAAAAAABhoAAAAAAAAGHQAAAAAAAAYgAAAAAAAQBgMAAQAAAA8GA4AAAAAADgYDQAAAAAANBgMgAAAAAAwGAxAAAAAACwYDCAAAAAAKBgMEAEGU+QALgQEBAAAAAwAAAAcAAAAPAAAAHwAAAD8AAAB/AAAA/wAAAP8BAAD/AwAA/wcAAP8PAAD/HwAA/z8AAP9/AAD//wAA//8BAP//AwD//wcA//8PAP//HwD//z8A//9/AP///wD///8B////A////wf///8P////H////z////9/SQAAAEoAQaD6AAuFAQEAAAABAAAAAgAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAAABAAAAAgAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAAABAAAAAgAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAAABAAAAAgEAAAABAAAAAQAAAAEAAAABAAAASwAAAEwAQbT7AAt2AQAAAAIAAAAIAAAAAQAEAAMAAgACAAIAAgACAAIAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQD//////////////////wBBtPwAC88BAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAiAAAAJAAAACYAAAAoAAAALAAAADAAAAA4AAAAQAAAAFAAAABgAAAAgAAAAAABAAAAAgAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAAABAEGU/gALbQEAAAADAAAABwAAAA8AAAAfAAAAPwAAAH8AAAD/AAAA/wEAAP8DAAD/BwAA/w8AAP8fAAD/PwAA/38AAP//AAD//wEA//8DAP//BwD//w8A//8fAP//PwD//38A////AP///wH///8DAQAAAAEAQZD/AAs1AQAAAAIAAAADAAAABAAAAAcAAAAIAAAADwAAABAAAAAfAAAAIAAAAD8AAABAAAAAfwAAAIAAQdj/AAsNAQAAAAEAAAACAAAAAgBB8P8AC+kCAQAAAAEAAAACAAAAAgAAACYAAACCAAAAIQUAAEoAAABnCAAAJgAAAMABAACAAAAASQUAAEoAAAC+CAAAKQAAACwCAACAAAAASQUAAEoAAAC+CAAALwAAAMoCAACAAAAAigUAAEoAAACECQAANQAAAHMDAACAAAAAnQUAAEoAAACgCQAAPQAAAIEDAACAAAAA6wUAAEsAAAA+CgAARAAAAJ4DAACAAAAATQYAAEsAAACqCgAASwAAALMDAACAAAAAwQYAAE0AAAAfDQAATQAAAFMEAACAAAAAIwgAAFEAAACmDwAAVAAAAJkEAACAAAAASwkAAFcAAACxEgAAWAAAANoEAACAAAAAbwkAAF0AAAAjFAAAVAAAAEUFAACAAAAAVAoAAGoAAACMFAAAagAAAK8FAACAAAAAdgkAAHwAAABOEAAAfAAAANICAACAAAAAYwcAAJEAAACQBwAAkgAAAAEAAAAEAAAACABB5IIBC5YCAQAAAAIAAAAEAAAAAAAAAAIAAAAEAAAACAAAAAQAAwACAAIAAgACAAIAAgACAAIAAgACAAIAAQABAAEAAgACAAIAAgACAAIAAgACAAIAAwACAAEAAQABAAEAAQD//////////wAAAAAAAAAAAQABAAEAAQABAAEAAgACAAIAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEA/////////////wAAAAAAAAEABAADAAIAAgACAAIAAgACAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEA//////////////////8AQcCFAQtNAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAwAAAAMAAAAE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AGIAAABjAAAAZAAAAJ4AAABOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGUxNkZsb2F0TGl0ZXJhbEltcGxJZEVFAMxKAAC4VQAAbEsAAAAAAABgVgAAXQAAAF4AAABfAAAAYAAAAJ8AAABiAAAAYwAAAGQAAACgAAAATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMTZGbG9hdExpdGVyYWxJbXBsSWVFRQDMSgAAKFYAAGxLAAAAAAAAzFYAAF0AAABeAAAAXwAAAGAAAAChAAAAYgAAAGMAAABkAAAAogAAAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZTEzU3RyaW5nTGl0ZXJhbEUAAADMSgAAmFYAAGxLAAB2AAAAAAAAADxXAABdAAAAXgAAAF8AAABgAAAAowAAAGIAAABjAAAAZAAAAKQAAABOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGUxNVVubmFtZWRUeXBlTmFtZUUAzEoAAAhXAABsSwAAAAAAALRXAABdAAAAXgAAAF8AAABgAAAApQAAAGIAAABjAAAAZAAAAKYAAABOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGUyNlN5bnRoZXRpY1RlbXBsYXRlUGFyYW1OYW1lRQAAzEoAAHRXAABsSwAAAAAAAChYAABdAAAAXgAAAF8AAABgAAAApwAAAKgAAABjAAAAZAAAAKkAAABOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGUyMVR5cGVUZW1wbGF0ZVBhcmFtRGVjbEUAAADMSgAA7FcAAGxLAAAAAAAAqFgAAF0AAABeAAAAXwAAAGAAAACqAAAAqwAAAGMAAABkAAAArAAAAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZTMyQ29uc3RyYWluZWRUeXBlVGVtcGxhdGVQYXJhbURlY2xFAAAAAMxKAABgWAAAbEsAAAAAAAAgWQAAXQAAAF4AAABfAAAAYAAAAK0AAACuAAAAYwAAAGQAAACvAAAATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMjROb25UeXBlVGVtcGxhdGVQYXJhbURlY2xFAAAAAMxKAADgWAAAbEsA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"); + DEFAULT_CLEVEL = 1; + MAX_CLEVEL = 22; + init3 = () => zstd_codec_default({ noInitialRun: true, wasmBinary: zstd_codec_default2 }); + Zstd = (_a4 = class { + constructor(level = DEFAULT_CLEVEL) { + __publicField(this, "level"); + if (!Number.isInteger(level)) { + throw Error(`Invalid acceleration "${level}". Must be a positive integer.`); + } + this.level = level; + } + static fromConfig({ level }) { + return new _a4(level); + } + async encode(data) { + if (!emscriptenModule3) { + emscriptenModule3 = init3(); + } + let level = this.level; + if (level <= 0) { + level = DEFAULT_CLEVEL; + } + if (level > MAX_CLEVEL) { + level = MAX_CLEVEL; + } + const module = await emscriptenModule3; + const view = module.compress(data, level); + const result = new Uint8Array(view); + module.free_result(); + return result; + } + async decode(data, out) { + if (!emscriptenModule3) { + emscriptenModule3 = init3(); + } + const module = await emscriptenModule3; + try { + const view = module.decompress(data); + const result = new Uint8Array(view); + module.free_result(); + if (out !== void 0) { + out.set(result); + return out; + } + return result; + } catch (err2) { + throw new Error(module.getExceptionMessage(err2).toString()); + } + } + }, __publicField(_a4, "codecId", "zstd"), __publicField(_a4, "DEFAULT_CLEVEL", DEFAULT_CLEVEL), __publicField(_a4, "MAX_CLEVEL", MAX_CLEVEL), _a4); + zstd_default = Zstd; + } +}); + +// ../../node_modules/gl-matrix/esm/common.js +var EPSILON = 1e-6; +var ARRAY_TYPE = typeof Float32Array !== "undefined" ? Float32Array : Array; +var RANDOM = Math.random; +var degree = Math.PI / 180; +if (!Math.hypot) Math.hypot = function() { + var y = 0, i = arguments.length; + while (i--) { + y += arguments[i] * arguments[i]; + } + return Math.sqrt(y); +}; + +// ../../node_modules/gl-matrix/esm/mat3.js +var mat3_exports = {}; +__export(mat3_exports, { + add: () => add, + adjoint: () => adjoint, + clone: () => clone, + copy: () => copy, + create: () => create, + determinant: () => determinant, + equals: () => equals, + exactEquals: () => exactEquals, + frob: () => frob, + fromMat2d: () => fromMat2d, + fromMat4: () => fromMat4, + fromQuat: () => fromQuat, + fromRotation: () => fromRotation, + fromScaling: () => fromScaling, + fromTranslation: () => fromTranslation, + fromValues: () => fromValues, + identity: () => identity, + invert: () => invert, + mul: () => mul, + multiply: () => multiply, + multiplyScalar: () => multiplyScalar, + multiplyScalarAndAdd: () => multiplyScalarAndAdd, + normalFromMat4: () => normalFromMat4, + projection: () => projection, + rotate: () => rotate, + scale: () => scale, + set: () => set, + str: () => str, + sub: () => sub, + subtract: () => subtract, + translate: () => translate, + transpose: () => transpose +}); +function create() { + var out = new ARRAY_TYPE(9); + if (ARRAY_TYPE != Float32Array) { + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[5] = 0; + out[6] = 0; + out[7] = 0; + } + out[0] = 1; + out[4] = 1; + out[8] = 1; + return out; +} +function fromMat4(out, a) { + out[0] = a[0]; + out[1] = a[1]; + out[2] = a[2]; + out[3] = a[4]; + out[4] = a[5]; + out[5] = a[6]; + out[6] = a[8]; + out[7] = a[9]; + out[8] = a[10]; + return out; +} +function clone(a) { + var out = new ARRAY_TYPE(9); + out[0] = a[0]; + out[1] = a[1]; + out[2] = a[2]; + out[3] = a[3]; + out[4] = a[4]; + out[5] = a[5]; + out[6] = a[6]; + out[7] = a[7]; + out[8] = a[8]; + return out; +} +function copy(out, a) { + out[0] = a[0]; + out[1] = a[1]; + out[2] = a[2]; + out[3] = a[3]; + out[4] = a[4]; + out[5] = a[5]; + out[6] = a[6]; + out[7] = a[7]; + out[8] = a[8]; + return out; +} +function fromValues(m00, m01, m02, m10, m11, m12, m20, m21, m22) { + var out = new ARRAY_TYPE(9); + out[0] = m00; + out[1] = m01; + out[2] = m02; + out[3] = m10; + out[4] = m11; + out[5] = m12; + out[6] = m20; + out[7] = m21; + out[8] = m22; + return out; +} +function set(out, m00, m01, m02, m10, m11, m12, m20, m21, m22) { + out[0] = m00; + out[1] = m01; + out[2] = m02; + out[3] = m10; + out[4] = m11; + out[5] = m12; + out[6] = m20; + out[7] = m21; + out[8] = m22; + return out; +} +function identity(out) { + out[0] = 1; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 1; + out[5] = 0; + out[6] = 0; + out[7] = 0; + out[8] = 1; + return out; +} +function transpose(out, a) { + if (out === a) { + var a01 = a[1], a02 = a[2], a12 = a[5]; + out[1] = a[3]; + out[2] = a[6]; + out[3] = a01; + out[5] = a[7]; + out[6] = a02; + out[7] = a12; + } else { + out[0] = a[0]; + out[1] = a[3]; + out[2] = a[6]; + out[3] = a[1]; + out[4] = a[4]; + out[5] = a[7]; + out[6] = a[2]; + out[7] = a[5]; + out[8] = a[8]; + } + return out; +} +function invert(out, a) { + var a00 = a[0], a01 = a[1], a02 = a[2]; + var a10 = a[3], a11 = a[4], a12 = a[5]; + var a20 = a[6], a21 = a[7], a22 = a[8]; + var b01 = a22 * a11 - a12 * a21; + var b11 = -a22 * a10 + a12 * a20; + var b21 = a21 * a10 - a11 * a20; + var det = a00 * b01 + a01 * b11 + a02 * b21; + if (!det) { + return null; + } + det = 1 / det; + out[0] = b01 * det; + out[1] = (-a22 * a01 + a02 * a21) * det; + out[2] = (a12 * a01 - a02 * a11) * det; + out[3] = b11 * det; + out[4] = (a22 * a00 - a02 * a20) * det; + out[5] = (-a12 * a00 + a02 * a10) * det; + out[6] = b21 * det; + out[7] = (-a21 * a00 + a01 * a20) * det; + out[8] = (a11 * a00 - a01 * a10) * det; + return out; +} +function adjoint(out, a) { + var a00 = a[0], a01 = a[1], a02 = a[2]; + var a10 = a[3], a11 = a[4], a12 = a[5]; + var a20 = a[6], a21 = a[7], a22 = a[8]; + out[0] = a11 * a22 - a12 * a21; + out[1] = a02 * a21 - a01 * a22; + out[2] = a01 * a12 - a02 * a11; + out[3] = a12 * a20 - a10 * a22; + out[4] = a00 * a22 - a02 * a20; + out[5] = a02 * a10 - a00 * a12; + out[6] = a10 * a21 - a11 * a20; + out[7] = a01 * a20 - a00 * a21; + out[8] = a00 * a11 - a01 * a10; + return out; +} +function determinant(a) { + var a00 = a[0], a01 = a[1], a02 = a[2]; + var a10 = a[3], a11 = a[4], a12 = a[5]; + var a20 = a[6], a21 = a[7], a22 = a[8]; + return a00 * (a22 * a11 - a12 * a21) + a01 * (-a22 * a10 + a12 * a20) + a02 * (a21 * a10 - a11 * a20); +} +function multiply(out, a, b) { + var a00 = a[0], a01 = a[1], a02 = a[2]; + var a10 = a[3], a11 = a[4], a12 = a[5]; + var a20 = a[6], a21 = a[7], a22 = a[8]; + var b00 = b[0], b01 = b[1], b02 = b[2]; + var b10 = b[3], b11 = b[4], b12 = b[5]; + var b20 = b[6], b21 = b[7], b22 = b[8]; + out[0] = b00 * a00 + b01 * a10 + b02 * a20; + out[1] = b00 * a01 + b01 * a11 + b02 * a21; + out[2] = b00 * a02 + b01 * a12 + b02 * a22; + out[3] = b10 * a00 + b11 * a10 + b12 * a20; + out[4] = b10 * a01 + b11 * a11 + b12 * a21; + out[5] = b10 * a02 + b11 * a12 + b12 * a22; + out[6] = b20 * a00 + b21 * a10 + b22 * a20; + out[7] = b20 * a01 + b21 * a11 + b22 * a21; + out[8] = b20 * a02 + b21 * a12 + b22 * a22; + return out; +} +function translate(out, a, v) { + var a00 = a[0], a01 = a[1], a02 = a[2], a10 = a[3], a11 = a[4], a12 = a[5], a20 = a[6], a21 = a[7], a22 = a[8], x = v[0], y = v[1]; + out[0] = a00; + out[1] = a01; + out[2] = a02; + out[3] = a10; + out[4] = a11; + out[5] = a12; + out[6] = x * a00 + y * a10 + a20; + out[7] = x * a01 + y * a11 + a21; + out[8] = x * a02 + y * a12 + a22; + return out; +} +function rotate(out, a, rad) { + var a00 = a[0], a01 = a[1], a02 = a[2], a10 = a[3], a11 = a[4], a12 = a[5], a20 = a[6], a21 = a[7], a22 = a[8], s = Math.sin(rad), c = Math.cos(rad); + out[0] = c * a00 + s * a10; + out[1] = c * a01 + s * a11; + out[2] = c * a02 + s * a12; + out[3] = c * a10 - s * a00; + out[4] = c * a11 - s * a01; + out[5] = c * a12 - s * a02; + out[6] = a20; + out[7] = a21; + out[8] = a22; + return out; +} +function scale(out, a, v) { + var x = v[0], y = v[1]; + out[0] = x * a[0]; + out[1] = x * a[1]; + out[2] = x * a[2]; + out[3] = y * a[3]; + out[4] = y * a[4]; + out[5] = y * a[5]; + out[6] = a[6]; + out[7] = a[7]; + out[8] = a[8]; + return out; +} +function fromTranslation(out, v) { + out[0] = 1; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 1; + out[5] = 0; + out[6] = v[0]; + out[7] = v[1]; + out[8] = 1; + return out; +} +function fromRotation(out, rad) { + var s = Math.sin(rad), c = Math.cos(rad); + out[0] = c; + out[1] = s; + out[2] = 0; + out[3] = -s; + out[4] = c; + out[5] = 0; + out[6] = 0; + out[7] = 0; + out[8] = 1; + return out; +} +function fromScaling(out, v) { + out[0] = v[0]; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = v[1]; + out[5] = 0; + out[6] = 0; + out[7] = 0; + out[8] = 1; + return out; +} +function fromMat2d(out, a) { + out[0] = a[0]; + out[1] = a[1]; + out[2] = 0; + out[3] = a[2]; + out[4] = a[3]; + out[5] = 0; + out[6] = a[4]; + out[7] = a[5]; + out[8] = 1; + return out; +} +function fromQuat(out, q) { + var x = q[0], y = q[1], z = q[2], w = q[3]; + var x2 = x + x; + var y2 = y + y; + var z2 = z + z; + var xx = x * x2; + var yx = y * x2; + var yy = y * y2; + var zx = z * x2; + var zy = z * y2; + var zz = z * z2; + var wx = w * x2; + var wy = w * y2; + var wz = w * z2; + out[0] = 1 - yy - zz; + out[3] = yx - wz; + out[6] = zx + wy; + out[1] = yx + wz; + out[4] = 1 - xx - zz; + out[7] = zy - wx; + out[2] = zx - wy; + out[5] = zy + wx; + out[8] = 1 - xx - yy; + return out; +} +function normalFromMat4(out, a) { + var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3]; + var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7]; + var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11]; + var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15]; + var b00 = a00 * a11 - a01 * a10; + var b01 = a00 * a12 - a02 * a10; + var b02 = a00 * a13 - a03 * a10; + var b03 = a01 * a12 - a02 * a11; + var b04 = a01 * a13 - a03 * a11; + var b05 = a02 * a13 - a03 * a12; + var b06 = a20 * a31 - a21 * a30; + var b07 = a20 * a32 - a22 * a30; + var b08 = a20 * a33 - a23 * a30; + var b09 = a21 * a32 - a22 * a31; + var b10 = a21 * a33 - a23 * a31; + var b11 = a22 * a33 - a23 * a32; + var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; + if (!det) { + return null; + } + det = 1 / det; + out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det; + out[1] = (a12 * b08 - a10 * b11 - a13 * b07) * det; + out[2] = (a10 * b10 - a11 * b08 + a13 * b06) * det; + out[3] = (a02 * b10 - a01 * b11 - a03 * b09) * det; + out[4] = (a00 * b11 - a02 * b08 + a03 * b07) * det; + out[5] = (a01 * b08 - a00 * b10 - a03 * b06) * det; + out[6] = (a31 * b05 - a32 * b04 + a33 * b03) * det; + out[7] = (a32 * b02 - a30 * b05 - a33 * b01) * det; + out[8] = (a30 * b04 - a31 * b02 + a33 * b00) * det; + return out; +} +function projection(out, width, height) { + out[0] = 2 / width; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = -2 / height; + out[5] = 0; + out[6] = -1; + out[7] = 1; + out[8] = 1; + return out; +} +function str(a) { + return "mat3(" + a[0] + ", " + a[1] + ", " + a[2] + ", " + a[3] + ", " + a[4] + ", " + a[5] + ", " + a[6] + ", " + a[7] + ", " + a[8] + ")"; +} +function frob(a) { + return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]); +} +function add(out, a, b) { + out[0] = a[0] + b[0]; + out[1] = a[1] + b[1]; + out[2] = a[2] + b[2]; + out[3] = a[3] + b[3]; + out[4] = a[4] + b[4]; + out[5] = a[5] + b[5]; + out[6] = a[6] + b[6]; + out[7] = a[7] + b[7]; + out[8] = a[8] + b[8]; + return out; +} +function subtract(out, a, b) { + out[0] = a[0] - b[0]; + out[1] = a[1] - b[1]; + out[2] = a[2] - b[2]; + out[3] = a[3] - b[3]; + out[4] = a[4] - b[4]; + out[5] = a[5] - b[5]; + out[6] = a[6] - b[6]; + out[7] = a[7] - b[7]; + out[8] = a[8] - b[8]; + return out; +} +function multiplyScalar(out, a, b) { + out[0] = a[0] * b; + out[1] = a[1] * b; + out[2] = a[2] * b; + out[3] = a[3] * b; + out[4] = a[4] * b; + out[5] = a[5] * b; + out[6] = a[6] * b; + out[7] = a[7] * b; + out[8] = a[8] * b; + return out; +} +function multiplyScalarAndAdd(out, a, b, scale6) { + out[0] = a[0] + b[0] * scale6; + out[1] = a[1] + b[1] * scale6; + out[2] = a[2] + b[2] * scale6; + out[3] = a[3] + b[3] * scale6; + out[4] = a[4] + b[4] * scale6; + out[5] = a[5] + b[5] * scale6; + out[6] = a[6] + b[6] * scale6; + out[7] = a[7] + b[7] * scale6; + out[8] = a[8] + b[8] * scale6; + return out; +} +function exactEquals(a, b) { + return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8]; +} +function equals(a, b) { + var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5], a6 = a[6], a7 = a[7], a8 = a[8]; + var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7], b8 = b[8]; + return Math.abs(a0 - b0) <= EPSILON * Math.max(1, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= EPSILON * Math.max(1, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= EPSILON * Math.max(1, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= EPSILON * Math.max(1, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= EPSILON * Math.max(1, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= EPSILON * Math.max(1, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= EPSILON * Math.max(1, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= EPSILON * Math.max(1, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= EPSILON * Math.max(1, Math.abs(a8), Math.abs(b8)); +} +var mul = multiply; +var sub = subtract; + +// ../../node_modules/gl-matrix/esm/mat4.js +var mat4_exports = {}; +__export(mat4_exports, { + add: () => add2, + adjoint: () => adjoint2, + clone: () => clone2, + copy: () => copy2, + create: () => create2, + determinant: () => determinant2, + equals: () => equals2, + exactEquals: () => exactEquals2, + frob: () => frob2, + fromQuat: () => fromQuat3, + fromQuat2: () => fromQuat2, + fromRotation: () => fromRotation2, + fromRotationTranslation: () => fromRotationTranslation, + fromRotationTranslationScale: () => fromRotationTranslationScale, + fromRotationTranslationScaleOrigin: () => fromRotationTranslationScaleOrigin, + fromScaling: () => fromScaling2, + fromTranslation: () => fromTranslation2, + fromValues: () => fromValues2, + fromXRotation: () => fromXRotation, + fromYRotation: () => fromYRotation, + fromZRotation: () => fromZRotation, + frustum: () => frustum, + getRotation: () => getRotation, + getScaling: () => getScaling, + getTranslation: () => getTranslation, + identity: () => identity2, + invert: () => invert2, + lookAt: () => lookAt, + mul: () => mul2, + multiply: () => multiply2, + multiplyScalar: () => multiplyScalar2, + multiplyScalarAndAdd: () => multiplyScalarAndAdd2, + ortho: () => ortho, + orthoNO: () => orthoNO, + orthoZO: () => orthoZO, + perspective: () => perspective, + perspectiveFromFieldOfView: () => perspectiveFromFieldOfView, + perspectiveNO: () => perspectiveNO, + perspectiveZO: () => perspectiveZO, + rotate: () => rotate2, + rotateX: () => rotateX, + rotateY: () => rotateY, + rotateZ: () => rotateZ, + scale: () => scale2, + set: () => set2, + str: () => str2, + sub: () => sub2, + subtract: () => subtract2, + targetTo: () => targetTo, + translate: () => translate2, + transpose: () => transpose2 +}); +function create2() { + var out = new ARRAY_TYPE(16); + if (ARRAY_TYPE != Float32Array) { + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 0; + out[6] = 0; + out[7] = 0; + out[8] = 0; + out[9] = 0; + out[11] = 0; + out[12] = 0; + out[13] = 0; + out[14] = 0; + } + out[0] = 1; + out[5] = 1; + out[10] = 1; + out[15] = 1; + return out; +} +function clone2(a) { + var out = new ARRAY_TYPE(16); + out[0] = a[0]; + out[1] = a[1]; + out[2] = a[2]; + out[3] = a[3]; + out[4] = a[4]; + out[5] = a[5]; + out[6] = a[6]; + out[7] = a[7]; + out[8] = a[8]; + out[9] = a[9]; + out[10] = a[10]; + out[11] = a[11]; + out[12] = a[12]; + out[13] = a[13]; + out[14] = a[14]; + out[15] = a[15]; + return out; +} +function copy2(out, a) { + out[0] = a[0]; + out[1] = a[1]; + out[2] = a[2]; + out[3] = a[3]; + out[4] = a[4]; + out[5] = a[5]; + out[6] = a[6]; + out[7] = a[7]; + out[8] = a[8]; + out[9] = a[9]; + out[10] = a[10]; + out[11] = a[11]; + out[12] = a[12]; + out[13] = a[13]; + out[14] = a[14]; + out[15] = a[15]; + return out; +} +function fromValues2(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) { + var out = new ARRAY_TYPE(16); + out[0] = m00; + out[1] = m01; + out[2] = m02; + out[3] = m03; + out[4] = m10; + out[5] = m11; + out[6] = m12; + out[7] = m13; + out[8] = m20; + out[9] = m21; + out[10] = m22; + out[11] = m23; + out[12] = m30; + out[13] = m31; + out[14] = m32; + out[15] = m33; + return out; +} +function set2(out, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) { + out[0] = m00; + out[1] = m01; + out[2] = m02; + out[3] = m03; + out[4] = m10; + out[5] = m11; + out[6] = m12; + out[7] = m13; + out[8] = m20; + out[9] = m21; + out[10] = m22; + out[11] = m23; + out[12] = m30; + out[13] = m31; + out[14] = m32; + out[15] = m33; + return out; +} +function identity2(out) { + out[0] = 1; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 0; + out[5] = 1; + out[6] = 0; + out[7] = 0; + out[8] = 0; + out[9] = 0; + out[10] = 1; + out[11] = 0; + out[12] = 0; + out[13] = 0; + out[14] = 0; + out[15] = 1; + return out; +} +function transpose2(out, a) { + if (out === a) { + var a01 = a[1], a02 = a[2], a03 = a[3]; + var a12 = a[6], a13 = a[7]; + var a23 = a[11]; + out[1] = a[4]; + out[2] = a[8]; + out[3] = a[12]; + out[4] = a01; + out[6] = a[9]; + out[7] = a[13]; + out[8] = a02; + out[9] = a12; + out[11] = a[14]; + out[12] = a03; + out[13] = a13; + out[14] = a23; + } else { + out[0] = a[0]; + out[1] = a[4]; + out[2] = a[8]; + out[3] = a[12]; + out[4] = a[1]; + out[5] = a[5]; + out[6] = a[9]; + out[7] = a[13]; + out[8] = a[2]; + out[9] = a[6]; + out[10] = a[10]; + out[11] = a[14]; + out[12] = a[3]; + out[13] = a[7]; + out[14] = a[11]; + out[15] = a[15]; + } + return out; +} +function invert2(out, a) { + var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3]; + var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7]; + var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11]; + var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15]; + var b00 = a00 * a11 - a01 * a10; + var b01 = a00 * a12 - a02 * a10; + var b02 = a00 * a13 - a03 * a10; + var b03 = a01 * a12 - a02 * a11; + var b04 = a01 * a13 - a03 * a11; + var b05 = a02 * a13 - a03 * a12; + var b06 = a20 * a31 - a21 * a30; + var b07 = a20 * a32 - a22 * a30; + var b08 = a20 * a33 - a23 * a30; + var b09 = a21 * a32 - a22 * a31; + var b10 = a21 * a33 - a23 * a31; + var b11 = a22 * a33 - a23 * a32; + var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; + if (!det) { + return null; + } + det = 1 / det; + out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det; + out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det; + out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det; + out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det; + out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det; + out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det; + out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det; + out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det; + out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det; + out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det; + out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det; + out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det; + out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det; + out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det; + out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det; + out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det; + return out; +} +function adjoint2(out, a) { + var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3]; + var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7]; + var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11]; + var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15]; + out[0] = a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22); + out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22)); + out[2] = a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12); + out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12)); + out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22)); + out[5] = a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22); + out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12)); + out[7] = a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12); + out[8] = a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21); + out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21)); + out[10] = a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11); + out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11)); + out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21)); + out[13] = a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21); + out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11)); + out[15] = a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11); + return out; +} +function determinant2(a) { + var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3]; + var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7]; + var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11]; + var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15]; + var b00 = a00 * a11 - a01 * a10; + var b01 = a00 * a12 - a02 * a10; + var b02 = a00 * a13 - a03 * a10; + var b03 = a01 * a12 - a02 * a11; + var b04 = a01 * a13 - a03 * a11; + var b05 = a02 * a13 - a03 * a12; + var b06 = a20 * a31 - a21 * a30; + var b07 = a20 * a32 - a22 * a30; + var b08 = a20 * a33 - a23 * a30; + var b09 = a21 * a32 - a22 * a31; + var b10 = a21 * a33 - a23 * a31; + var b11 = a22 * a33 - a23 * a32; + return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; +} +function multiply2(out, a, b) { + var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3]; + var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7]; + var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11]; + var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15]; + var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3]; + out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30; + out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31; + out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32; + out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33; + b0 = b[4]; + b1 = b[5]; + b2 = b[6]; + b3 = b[7]; + out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30; + out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31; + out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32; + out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33; + b0 = b[8]; + b1 = b[9]; + b2 = b[10]; + b3 = b[11]; + out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30; + out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31; + out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32; + out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33; + b0 = b[12]; + b1 = b[13]; + b2 = b[14]; + b3 = b[15]; + out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30; + out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31; + out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32; + out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33; + return out; +} +function translate2(out, a, v) { + var x = v[0], y = v[1], z = v[2]; + var a00, a01, a02, a03; + var a10, a11, a12, a13; + var a20, a21, a22, a23; + if (a === out) { + out[12] = a[0] * x + a[4] * y + a[8] * z + a[12]; + out[13] = a[1] * x + a[5] * y + a[9] * z + a[13]; + out[14] = a[2] * x + a[6] * y + a[10] * z + a[14]; + out[15] = a[3] * x + a[7] * y + a[11] * z + a[15]; + } else { + a00 = a[0]; + a01 = a[1]; + a02 = a[2]; + a03 = a[3]; + a10 = a[4]; + a11 = a[5]; + a12 = a[6]; + a13 = a[7]; + a20 = a[8]; + a21 = a[9]; + a22 = a[10]; + a23 = a[11]; + out[0] = a00; + out[1] = a01; + out[2] = a02; + out[3] = a03; + out[4] = a10; + out[5] = a11; + out[6] = a12; + out[7] = a13; + out[8] = a20; + out[9] = a21; + out[10] = a22; + out[11] = a23; + out[12] = a00 * x + a10 * y + a20 * z + a[12]; + out[13] = a01 * x + a11 * y + a21 * z + a[13]; + out[14] = a02 * x + a12 * y + a22 * z + a[14]; + out[15] = a03 * x + a13 * y + a23 * z + a[15]; + } + return out; +} +function scale2(out, a, v) { + var x = v[0], y = v[1], z = v[2]; + out[0] = a[0] * x; + out[1] = a[1] * x; + out[2] = a[2] * x; + out[3] = a[3] * x; + out[4] = a[4] * y; + out[5] = a[5] * y; + out[6] = a[6] * y; + out[7] = a[7] * y; + out[8] = a[8] * z; + out[9] = a[9] * z; + out[10] = a[10] * z; + out[11] = a[11] * z; + out[12] = a[12]; + out[13] = a[13]; + out[14] = a[14]; + out[15] = a[15]; + return out; +} +function rotate2(out, a, rad, axis) { + var x = axis[0], y = axis[1], z = axis[2]; + var len4 = Math.hypot(x, y, z); + var s, c, t; + var a00, a01, a02, a03; + var a10, a11, a12, a13; + var a20, a21, a22, a23; + var b00, b01, b02; + var b10, b11, b12; + var b20, b21, b22; + if (len4 < EPSILON) { + return null; + } + len4 = 1 / len4; + x *= len4; + y *= len4; + z *= len4; + s = Math.sin(rad); + c = Math.cos(rad); + t = 1 - c; + a00 = a[0]; + a01 = a[1]; + a02 = a[2]; + a03 = a[3]; + a10 = a[4]; + a11 = a[5]; + a12 = a[6]; + a13 = a[7]; + a20 = a[8]; + a21 = a[9]; + a22 = a[10]; + a23 = a[11]; + b00 = x * x * t + c; + b01 = y * x * t + z * s; + b02 = z * x * t - y * s; + b10 = x * y * t - z * s; + b11 = y * y * t + c; + b12 = z * y * t + x * s; + b20 = x * z * t + y * s; + b21 = y * z * t - x * s; + b22 = z * z * t + c; + out[0] = a00 * b00 + a10 * b01 + a20 * b02; + out[1] = a01 * b00 + a11 * b01 + a21 * b02; + out[2] = a02 * b00 + a12 * b01 + a22 * b02; + out[3] = a03 * b00 + a13 * b01 + a23 * b02; + out[4] = a00 * b10 + a10 * b11 + a20 * b12; + out[5] = a01 * b10 + a11 * b11 + a21 * b12; + out[6] = a02 * b10 + a12 * b11 + a22 * b12; + out[7] = a03 * b10 + a13 * b11 + a23 * b12; + out[8] = a00 * b20 + a10 * b21 + a20 * b22; + out[9] = a01 * b20 + a11 * b21 + a21 * b22; + out[10] = a02 * b20 + a12 * b21 + a22 * b22; + out[11] = a03 * b20 + a13 * b21 + a23 * b22; + if (a !== out) { + out[12] = a[12]; + out[13] = a[13]; + out[14] = a[14]; + out[15] = a[15]; + } + return out; +} +function rotateX(out, a, rad) { + var s = Math.sin(rad); + var c = Math.cos(rad); + var a10 = a[4]; + var a11 = a[5]; + var a12 = a[6]; + var a13 = a[7]; + var a20 = a[8]; + var a21 = a[9]; + var a22 = a[10]; + var a23 = a[11]; + if (a !== out) { + out[0] = a[0]; + out[1] = a[1]; + out[2] = a[2]; + out[3] = a[3]; + out[12] = a[12]; + out[13] = a[13]; + out[14] = a[14]; + out[15] = a[15]; + } + out[4] = a10 * c + a20 * s; + out[5] = a11 * c + a21 * s; + out[6] = a12 * c + a22 * s; + out[7] = a13 * c + a23 * s; + out[8] = a20 * c - a10 * s; + out[9] = a21 * c - a11 * s; + out[10] = a22 * c - a12 * s; + out[11] = a23 * c - a13 * s; + return out; +} +function rotateY(out, a, rad) { + var s = Math.sin(rad); + var c = Math.cos(rad); + var a00 = a[0]; + var a01 = a[1]; + var a02 = a[2]; + var a03 = a[3]; + var a20 = a[8]; + var a21 = a[9]; + var a22 = a[10]; + var a23 = a[11]; + if (a !== out) { + out[4] = a[4]; + out[5] = a[5]; + out[6] = a[6]; + out[7] = a[7]; + out[12] = a[12]; + out[13] = a[13]; + out[14] = a[14]; + out[15] = a[15]; + } + out[0] = a00 * c - a20 * s; + out[1] = a01 * c - a21 * s; + out[2] = a02 * c - a22 * s; + out[3] = a03 * c - a23 * s; + out[8] = a00 * s + a20 * c; + out[9] = a01 * s + a21 * c; + out[10] = a02 * s + a22 * c; + out[11] = a03 * s + a23 * c; + return out; +} +function rotateZ(out, a, rad) { + var s = Math.sin(rad); + var c = Math.cos(rad); + var a00 = a[0]; + var a01 = a[1]; + var a02 = a[2]; + var a03 = a[3]; + var a10 = a[4]; + var a11 = a[5]; + var a12 = a[6]; + var a13 = a[7]; + if (a !== out) { + out[8] = a[8]; + out[9] = a[9]; + out[10] = a[10]; + out[11] = a[11]; + out[12] = a[12]; + out[13] = a[13]; + out[14] = a[14]; + out[15] = a[15]; + } + out[0] = a00 * c + a10 * s; + out[1] = a01 * c + a11 * s; + out[2] = a02 * c + a12 * s; + out[3] = a03 * c + a13 * s; + out[4] = a10 * c - a00 * s; + out[5] = a11 * c - a01 * s; + out[6] = a12 * c - a02 * s; + out[7] = a13 * c - a03 * s; + return out; +} +function fromTranslation2(out, v) { + out[0] = 1; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 0; + out[5] = 1; + out[6] = 0; + out[7] = 0; + out[8] = 0; + out[9] = 0; + out[10] = 1; + out[11] = 0; + out[12] = v[0]; + out[13] = v[1]; + out[14] = v[2]; + out[15] = 1; + return out; +} +function fromScaling2(out, v) { + out[0] = v[0]; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 0; + out[5] = v[1]; + out[6] = 0; + out[7] = 0; + out[8] = 0; + out[9] = 0; + out[10] = v[2]; + out[11] = 0; + out[12] = 0; + out[13] = 0; + out[14] = 0; + out[15] = 1; + return out; +} +function fromRotation2(out, rad, axis) { + var x = axis[0], y = axis[1], z = axis[2]; + var len4 = Math.hypot(x, y, z); + var s, c, t; + if (len4 < EPSILON) { + return null; + } + len4 = 1 / len4; + x *= len4; + y *= len4; + z *= len4; + s = Math.sin(rad); + c = Math.cos(rad); + t = 1 - c; + out[0] = x * x * t + c; + out[1] = y * x * t + z * s; + out[2] = z * x * t - y * s; + out[3] = 0; + out[4] = x * y * t - z * s; + out[5] = y * y * t + c; + out[6] = z * y * t + x * s; + out[7] = 0; + out[8] = x * z * t + y * s; + out[9] = y * z * t - x * s; + out[10] = z * z * t + c; + out[11] = 0; + out[12] = 0; + out[13] = 0; + out[14] = 0; + out[15] = 1; + return out; +} +function fromXRotation(out, rad) { + var s = Math.sin(rad); + var c = Math.cos(rad); + out[0] = 1; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 0; + out[5] = c; + out[6] = s; + out[7] = 0; + out[8] = 0; + out[9] = -s; + out[10] = c; + out[11] = 0; + out[12] = 0; + out[13] = 0; + out[14] = 0; + out[15] = 1; + return out; +} +function fromYRotation(out, rad) { + var s = Math.sin(rad); + var c = Math.cos(rad); + out[0] = c; + out[1] = 0; + out[2] = -s; + out[3] = 0; + out[4] = 0; + out[5] = 1; + out[6] = 0; + out[7] = 0; + out[8] = s; + out[9] = 0; + out[10] = c; + out[11] = 0; + out[12] = 0; + out[13] = 0; + out[14] = 0; + out[15] = 1; + return out; +} +function fromZRotation(out, rad) { + var s = Math.sin(rad); + var c = Math.cos(rad); + out[0] = c; + out[1] = s; + out[2] = 0; + out[3] = 0; + out[4] = -s; + out[5] = c; + out[6] = 0; + out[7] = 0; + out[8] = 0; + out[9] = 0; + out[10] = 1; + out[11] = 0; + out[12] = 0; + out[13] = 0; + out[14] = 0; + out[15] = 1; + return out; +} +function fromRotationTranslation(out, q, v) { + var x = q[0], y = q[1], z = q[2], w = q[3]; + var x2 = x + x; + var y2 = y + y; + var z2 = z + z; + var xx = x * x2; + var xy = x * y2; + var xz = x * z2; + var yy = y * y2; + var yz = y * z2; + var zz = z * z2; + var wx = w * x2; + var wy = w * y2; + var wz = w * z2; + out[0] = 1 - (yy + zz); + out[1] = xy + wz; + out[2] = xz - wy; + out[3] = 0; + out[4] = xy - wz; + out[5] = 1 - (xx + zz); + out[6] = yz + wx; + out[7] = 0; + out[8] = xz + wy; + out[9] = yz - wx; + out[10] = 1 - (xx + yy); + out[11] = 0; + out[12] = v[0]; + out[13] = v[1]; + out[14] = v[2]; + out[15] = 1; + return out; +} +function fromQuat2(out, a) { + var translation = new ARRAY_TYPE(3); + var bx = -a[0], by = -a[1], bz = -a[2], bw = a[3], ax = a[4], ay = a[5], az = a[6], aw = a[7]; + var magnitude = bx * bx + by * by + bz * bz + bw * bw; + if (magnitude > 0) { + translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2 / magnitude; + translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2 / magnitude; + translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2 / magnitude; + } else { + translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2; + translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2; + translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2; + } + fromRotationTranslation(out, a, translation); + return out; +} +function getTranslation(out, mat) { + out[0] = mat[12]; + out[1] = mat[13]; + out[2] = mat[14]; + return out; +} +function getScaling(out, mat) { + var m11 = mat[0]; + var m12 = mat[1]; + var m13 = mat[2]; + var m21 = mat[4]; + var m22 = mat[5]; + var m23 = mat[6]; + var m31 = mat[8]; + var m32 = mat[9]; + var m33 = mat[10]; + out[0] = Math.hypot(m11, m12, m13); + out[1] = Math.hypot(m21, m22, m23); + out[2] = Math.hypot(m31, m32, m33); + return out; +} +function getRotation(out, mat) { + var scaling = new ARRAY_TYPE(3); + getScaling(scaling, mat); + var is1 = 1 / scaling[0]; + var is2 = 1 / scaling[1]; + var is3 = 1 / scaling[2]; + var sm11 = mat[0] * is1; + var sm12 = mat[1] * is2; + var sm13 = mat[2] * is3; + var sm21 = mat[4] * is1; + var sm22 = mat[5] * is2; + var sm23 = mat[6] * is3; + var sm31 = mat[8] * is1; + var sm32 = mat[9] * is2; + var sm33 = mat[10] * is3; + var trace = sm11 + sm22 + sm33; + var S = 0; + if (trace > 0) { + S = Math.sqrt(trace + 1) * 2; + out[3] = 0.25 * S; + out[0] = (sm23 - sm32) / S; + out[1] = (sm31 - sm13) / S; + out[2] = (sm12 - sm21) / S; + } else if (sm11 > sm22 && sm11 > sm33) { + S = Math.sqrt(1 + sm11 - sm22 - sm33) * 2; + out[3] = (sm23 - sm32) / S; + out[0] = 0.25 * S; + out[1] = (sm12 + sm21) / S; + out[2] = (sm31 + sm13) / S; + } else if (sm22 > sm33) { + S = Math.sqrt(1 + sm22 - sm11 - sm33) * 2; + out[3] = (sm31 - sm13) / S; + out[0] = (sm12 + sm21) / S; + out[1] = 0.25 * S; + out[2] = (sm23 + sm32) / S; + } else { + S = Math.sqrt(1 + sm33 - sm11 - sm22) * 2; + out[3] = (sm12 - sm21) / S; + out[0] = (sm31 + sm13) / S; + out[1] = (sm23 + sm32) / S; + out[2] = 0.25 * S; + } + return out; +} +function fromRotationTranslationScale(out, q, v, s) { + var x = q[0], y = q[1], z = q[2], w = q[3]; + var x2 = x + x; + var y2 = y + y; + var z2 = z + z; + var xx = x * x2; + var xy = x * y2; + var xz = x * z2; + var yy = y * y2; + var yz = y * z2; + var zz = z * z2; + var wx = w * x2; + var wy = w * y2; + var wz = w * z2; + var sx = s[0]; + var sy = s[1]; + var sz = s[2]; + out[0] = (1 - (yy + zz)) * sx; + out[1] = (xy + wz) * sx; + out[2] = (xz - wy) * sx; + out[3] = 0; + out[4] = (xy - wz) * sy; + out[5] = (1 - (xx + zz)) * sy; + out[6] = (yz + wx) * sy; + out[7] = 0; + out[8] = (xz + wy) * sz; + out[9] = (yz - wx) * sz; + out[10] = (1 - (xx + yy)) * sz; + out[11] = 0; + out[12] = v[0]; + out[13] = v[1]; + out[14] = v[2]; + out[15] = 1; + return out; +} +function fromRotationTranslationScaleOrigin(out, q, v, s, o) { + var x = q[0], y = q[1], z = q[2], w = q[3]; + var x2 = x + x; + var y2 = y + y; + var z2 = z + z; + var xx = x * x2; + var xy = x * y2; + var xz = x * z2; + var yy = y * y2; + var yz = y * z2; + var zz = z * z2; + var wx = w * x2; + var wy = w * y2; + var wz = w * z2; + var sx = s[0]; + var sy = s[1]; + var sz = s[2]; + var ox = o[0]; + var oy = o[1]; + var oz = o[2]; + var out0 = (1 - (yy + zz)) * sx; + var out1 = (xy + wz) * sx; + var out2 = (xz - wy) * sx; + var out4 = (xy - wz) * sy; + var out5 = (1 - (xx + zz)) * sy; + var out6 = (yz + wx) * sy; + var out8 = (xz + wy) * sz; + var out9 = (yz - wx) * sz; + var out10 = (1 - (xx + yy)) * sz; + out[0] = out0; + out[1] = out1; + out[2] = out2; + out[3] = 0; + out[4] = out4; + out[5] = out5; + out[6] = out6; + out[7] = 0; + out[8] = out8; + out[9] = out9; + out[10] = out10; + out[11] = 0; + out[12] = v[0] + ox - (out0 * ox + out4 * oy + out8 * oz); + out[13] = v[1] + oy - (out1 * ox + out5 * oy + out9 * oz); + out[14] = v[2] + oz - (out2 * ox + out6 * oy + out10 * oz); + out[15] = 1; + return out; +} +function fromQuat3(out, q) { + var x = q[0], y = q[1], z = q[2], w = q[3]; + var x2 = x + x; + var y2 = y + y; + var z2 = z + z; + var xx = x * x2; + var yx = y * x2; + var yy = y * y2; + var zx = z * x2; + var zy = z * y2; + var zz = z * z2; + var wx = w * x2; + var wy = w * y2; + var wz = w * z2; + out[0] = 1 - yy - zz; + out[1] = yx + wz; + out[2] = zx - wy; + out[3] = 0; + out[4] = yx - wz; + out[5] = 1 - xx - zz; + out[6] = zy + wx; + out[7] = 0; + out[8] = zx + wy; + out[9] = zy - wx; + out[10] = 1 - xx - yy; + out[11] = 0; + out[12] = 0; + out[13] = 0; + out[14] = 0; + out[15] = 1; + return out; +} +function frustum(out, left, right, bottom, top, near, far) { + var rl = 1 / (right - left); + var tb = 1 / (top - bottom); + var nf = 1 / (near - far); + out[0] = near * 2 * rl; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 0; + out[5] = near * 2 * tb; + out[6] = 0; + out[7] = 0; + out[8] = (right + left) * rl; + out[9] = (top + bottom) * tb; + out[10] = (far + near) * nf; + out[11] = -1; + out[12] = 0; + out[13] = 0; + out[14] = far * near * 2 * nf; + out[15] = 0; + return out; +} +function perspectiveNO(out, fovy, aspect, near, far) { + var f = 1 / Math.tan(fovy / 2), nf; + out[0] = f / aspect; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 0; + out[5] = f; + out[6] = 0; + out[7] = 0; + out[8] = 0; + out[9] = 0; + out[11] = -1; + out[12] = 0; + out[13] = 0; + out[15] = 0; + if (far != null && far !== Infinity) { + nf = 1 / (near - far); + out[10] = (far + near) * nf; + out[14] = 2 * far * near * nf; + } else { + out[10] = -1; + out[14] = -2 * near; + } + return out; +} +var perspective = perspectiveNO; +function perspectiveZO(out, fovy, aspect, near, far) { + var f = 1 / Math.tan(fovy / 2), nf; + out[0] = f / aspect; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 0; + out[5] = f; + out[6] = 0; + out[7] = 0; + out[8] = 0; + out[9] = 0; + out[11] = -1; + out[12] = 0; + out[13] = 0; + out[15] = 0; + if (far != null && far !== Infinity) { + nf = 1 / (near - far); + out[10] = far * nf; + out[14] = far * near * nf; + } else { + out[10] = -1; + out[14] = -near; + } + return out; +} +function perspectiveFromFieldOfView(out, fov, near, far) { + var upTan = Math.tan(fov.upDegrees * Math.PI / 180); + var downTan = Math.tan(fov.downDegrees * Math.PI / 180); + var leftTan = Math.tan(fov.leftDegrees * Math.PI / 180); + var rightTan = Math.tan(fov.rightDegrees * Math.PI / 180); + var xScale = 2 / (leftTan + rightTan); + var yScale = 2 / (upTan + downTan); + out[0] = xScale; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 0; + out[5] = yScale; + out[6] = 0; + out[7] = 0; + out[8] = -((leftTan - rightTan) * xScale * 0.5); + out[9] = (upTan - downTan) * yScale * 0.5; + out[10] = far / (near - far); + out[11] = -1; + out[12] = 0; + out[13] = 0; + out[14] = far * near / (near - far); + out[15] = 0; + return out; +} +function orthoNO(out, left, right, bottom, top, near, far) { + var lr = 1 / (left - right); + var bt = 1 / (bottom - top); + var nf = 1 / (near - far); + out[0] = -2 * lr; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 0; + out[5] = -2 * bt; + out[6] = 0; + out[7] = 0; + out[8] = 0; + out[9] = 0; + out[10] = 2 * nf; + out[11] = 0; + out[12] = (left + right) * lr; + out[13] = (top + bottom) * bt; + out[14] = (far + near) * nf; + out[15] = 1; + return out; +} +var ortho = orthoNO; +function orthoZO(out, left, right, bottom, top, near, far) { + var lr = 1 / (left - right); + var bt = 1 / (bottom - top); + var nf = 1 / (near - far); + out[0] = -2 * lr; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 0; + out[5] = -2 * bt; + out[6] = 0; + out[7] = 0; + out[8] = 0; + out[9] = 0; + out[10] = nf; + out[11] = 0; + out[12] = (left + right) * lr; + out[13] = (top + bottom) * bt; + out[14] = near * nf; + out[15] = 1; + return out; +} +function lookAt(out, eye, center, up) { + var x0, x1, x2, y0, y1, y2, z0, z1, z2, len4; + var eyex = eye[0]; + var eyey = eye[1]; + var eyez = eye[2]; + var upx = up[0]; + var upy = up[1]; + var upz = up[2]; + var centerx = center[0]; + var centery = center[1]; + var centerz = center[2]; + if (Math.abs(eyex - centerx) < EPSILON && Math.abs(eyey - centery) < EPSILON && Math.abs(eyez - centerz) < EPSILON) { + return identity2(out); + } + z0 = eyex - centerx; + z1 = eyey - centery; + z2 = eyez - centerz; + len4 = 1 / Math.hypot(z0, z1, z2); + z0 *= len4; + z1 *= len4; + z2 *= len4; + x0 = upy * z2 - upz * z1; + x1 = upz * z0 - upx * z2; + x2 = upx * z1 - upy * z0; + len4 = Math.hypot(x0, x1, x2); + if (!len4) { + x0 = 0; + x1 = 0; + x2 = 0; + } else { + len4 = 1 / len4; + x0 *= len4; + x1 *= len4; + x2 *= len4; + } + y0 = z1 * x2 - z2 * x1; + y1 = z2 * x0 - z0 * x2; + y2 = z0 * x1 - z1 * x0; + len4 = Math.hypot(y0, y1, y2); + if (!len4) { + y0 = 0; + y1 = 0; + y2 = 0; + } else { + len4 = 1 / len4; + y0 *= len4; + y1 *= len4; + y2 *= len4; + } + out[0] = x0; + out[1] = y0; + out[2] = z0; + out[3] = 0; + out[4] = x1; + out[5] = y1; + out[6] = z1; + out[7] = 0; + out[8] = x2; + out[9] = y2; + out[10] = z2; + out[11] = 0; + out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez); + out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez); + out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez); + out[15] = 1; + return out; +} +function targetTo(out, eye, target, up) { + var eyex = eye[0], eyey = eye[1], eyez = eye[2], upx = up[0], upy = up[1], upz = up[2]; + var z0 = eyex - target[0], z1 = eyey - target[1], z2 = eyez - target[2]; + var len4 = z0 * z0 + z1 * z1 + z2 * z2; + if (len4 > 0) { + len4 = 1 / Math.sqrt(len4); + z0 *= len4; + z1 *= len4; + z2 *= len4; + } + var x0 = upy * z2 - upz * z1, x1 = upz * z0 - upx * z2, x2 = upx * z1 - upy * z0; + len4 = x0 * x0 + x1 * x1 + x2 * x2; + if (len4 > 0) { + len4 = 1 / Math.sqrt(len4); + x0 *= len4; + x1 *= len4; + x2 *= len4; + } + out[0] = x0; + out[1] = x1; + out[2] = x2; + out[3] = 0; + out[4] = z1 * x2 - z2 * x1; + out[5] = z2 * x0 - z0 * x2; + out[6] = z0 * x1 - z1 * x0; + out[7] = 0; + out[8] = z0; + out[9] = z1; + out[10] = z2; + out[11] = 0; + out[12] = eyex; + out[13] = eyey; + out[14] = eyez; + out[15] = 1; + return out; +} +function str2(a) { + return "mat4(" + a[0] + ", " + a[1] + ", " + a[2] + ", " + a[3] + ", " + a[4] + ", " + a[5] + ", " + a[6] + ", " + a[7] + ", " + a[8] + ", " + a[9] + ", " + a[10] + ", " + a[11] + ", " + a[12] + ", " + a[13] + ", " + a[14] + ", " + a[15] + ")"; +} +function frob2(a) { + return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15]); +} +function add2(out, a, b) { + out[0] = a[0] + b[0]; + out[1] = a[1] + b[1]; + out[2] = a[2] + b[2]; + out[3] = a[3] + b[3]; + out[4] = a[4] + b[4]; + out[5] = a[5] + b[5]; + out[6] = a[6] + b[6]; + out[7] = a[7] + b[7]; + out[8] = a[8] + b[8]; + out[9] = a[9] + b[9]; + out[10] = a[10] + b[10]; + out[11] = a[11] + b[11]; + out[12] = a[12] + b[12]; + out[13] = a[13] + b[13]; + out[14] = a[14] + b[14]; + out[15] = a[15] + b[15]; + return out; +} +function subtract2(out, a, b) { + out[0] = a[0] - b[0]; + out[1] = a[1] - b[1]; + out[2] = a[2] - b[2]; + out[3] = a[3] - b[3]; + out[4] = a[4] - b[4]; + out[5] = a[5] - b[5]; + out[6] = a[6] - b[6]; + out[7] = a[7] - b[7]; + out[8] = a[8] - b[8]; + out[9] = a[9] - b[9]; + out[10] = a[10] - b[10]; + out[11] = a[11] - b[11]; + out[12] = a[12] - b[12]; + out[13] = a[13] - b[13]; + out[14] = a[14] - b[14]; + out[15] = a[15] - b[15]; + return out; +} +function multiplyScalar2(out, a, b) { + out[0] = a[0] * b; + out[1] = a[1] * b; + out[2] = a[2] * b; + out[3] = a[3] * b; + out[4] = a[4] * b; + out[5] = a[5] * b; + out[6] = a[6] * b; + out[7] = a[7] * b; + out[8] = a[8] * b; + out[9] = a[9] * b; + out[10] = a[10] * b; + out[11] = a[11] * b; + out[12] = a[12] * b; + out[13] = a[13] * b; + out[14] = a[14] * b; + out[15] = a[15] * b; + return out; +} +function multiplyScalarAndAdd2(out, a, b, scale6) { + out[0] = a[0] + b[0] * scale6; + out[1] = a[1] + b[1] * scale6; + out[2] = a[2] + b[2] * scale6; + out[3] = a[3] + b[3] * scale6; + out[4] = a[4] + b[4] * scale6; + out[5] = a[5] + b[5] * scale6; + out[6] = a[6] + b[6] * scale6; + out[7] = a[7] + b[7] * scale6; + out[8] = a[8] + b[8] * scale6; + out[9] = a[9] + b[9] * scale6; + out[10] = a[10] + b[10] * scale6; + out[11] = a[11] + b[11] * scale6; + out[12] = a[12] + b[12] * scale6; + out[13] = a[13] + b[13] * scale6; + out[14] = a[14] + b[14] * scale6; + out[15] = a[15] + b[15] * scale6; + return out; +} +function exactEquals2(a, b) { + return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8] && a[9] === b[9] && a[10] === b[10] && a[11] === b[11] && a[12] === b[12] && a[13] === b[13] && a[14] === b[14] && a[15] === b[15]; +} +function equals2(a, b) { + var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3]; + var a4 = a[4], a5 = a[5], a6 = a[6], a7 = a[7]; + var a8 = a[8], a9 = a[9], a10 = a[10], a11 = a[11]; + var a12 = a[12], a13 = a[13], a14 = a[14], a15 = a[15]; + var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3]; + var b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7]; + var b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11]; + var b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15]; + return Math.abs(a0 - b0) <= EPSILON * Math.max(1, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= EPSILON * Math.max(1, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= EPSILON * Math.max(1, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= EPSILON * Math.max(1, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= EPSILON * Math.max(1, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= EPSILON * Math.max(1, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= EPSILON * Math.max(1, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= EPSILON * Math.max(1, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= EPSILON * Math.max(1, Math.abs(a8), Math.abs(b8)) && Math.abs(a9 - b9) <= EPSILON * Math.max(1, Math.abs(a9), Math.abs(b9)) && Math.abs(a10 - b10) <= EPSILON * Math.max(1, Math.abs(a10), Math.abs(b10)) && Math.abs(a11 - b11) <= EPSILON * Math.max(1, Math.abs(a11), Math.abs(b11)) && Math.abs(a12 - b12) <= EPSILON * Math.max(1, Math.abs(a12), Math.abs(b12)) && Math.abs(a13 - b13) <= EPSILON * Math.max(1, Math.abs(a13), Math.abs(b13)) && Math.abs(a14 - b14) <= EPSILON * Math.max(1, Math.abs(a14), Math.abs(b14)) && Math.abs(a15 - b15) <= EPSILON * Math.max(1, Math.abs(a15), Math.abs(b15)); +} +var mul2 = multiply2; +var sub2 = subtract2; + +// ../../node_modules/gl-matrix/esm/vec3.js +var vec3_exports = {}; +__export(vec3_exports, { + add: () => add3, + angle: () => angle, + bezier: () => bezier, + ceil: () => ceil, + clone: () => clone3, + copy: () => copy3, + create: () => create3, + cross: () => cross, + dist: () => dist, + distance: () => distance, + div: () => div, + divide: () => divide, + dot: () => dot, + equals: () => equals3, + exactEquals: () => exactEquals3, + floor: () => floor, + forEach: () => forEach, + fromValues: () => fromValues3, + hermite: () => hermite, + inverse: () => inverse, + len: () => len, + length: () => length, + lerp: () => lerp, + max: () => max, + min: () => min, + mul: () => mul3, + multiply: () => multiply3, + negate: () => negate, + normalize: () => normalize, + random: () => random, + rotateX: () => rotateX2, + rotateY: () => rotateY2, + rotateZ: () => rotateZ2, + round: () => round, + scale: () => scale3, + scaleAndAdd: () => scaleAndAdd, + set: () => set3, + sqrDist: () => sqrDist, + sqrLen: () => sqrLen, + squaredDistance: () => squaredDistance, + squaredLength: () => squaredLength, + str: () => str3, + sub: () => sub3, + subtract: () => subtract3, + transformMat3: () => transformMat3, + transformMat4: () => transformMat4, + transformQuat: () => transformQuat, + zero: () => zero +}); +function create3() { + var out = new ARRAY_TYPE(3); + if (ARRAY_TYPE != Float32Array) { + out[0] = 0; + out[1] = 0; + out[2] = 0; + } + return out; +} +function clone3(a) { + var out = new ARRAY_TYPE(3); + out[0] = a[0]; + out[1] = a[1]; + out[2] = a[2]; + return out; +} +function length(a) { + var x = a[0]; + var y = a[1]; + var z = a[2]; + return Math.hypot(x, y, z); +} +function fromValues3(x, y, z) { + var out = new ARRAY_TYPE(3); + out[0] = x; + out[1] = y; + out[2] = z; + return out; +} +function copy3(out, a) { + out[0] = a[0]; + out[1] = a[1]; + out[2] = a[2]; + return out; +} +function set3(out, x, y, z) { + out[0] = x; + out[1] = y; + out[2] = z; + return out; +} +function add3(out, a, b) { + out[0] = a[0] + b[0]; + out[1] = a[1] + b[1]; + out[2] = a[2] + b[2]; + return out; +} +function subtract3(out, a, b) { + out[0] = a[0] - b[0]; + out[1] = a[1] - b[1]; + out[2] = a[2] - b[2]; + return out; +} +function multiply3(out, a, b) { + out[0] = a[0] * b[0]; + out[1] = a[1] * b[1]; + out[2] = a[2] * b[2]; + return out; +} +function divide(out, a, b) { + out[0] = a[0] / b[0]; + out[1] = a[1] / b[1]; + out[2] = a[2] / b[2]; + return out; +} +function ceil(out, a) { + out[0] = Math.ceil(a[0]); + out[1] = Math.ceil(a[1]); + out[2] = Math.ceil(a[2]); + return out; +} +function floor(out, a) { + out[0] = Math.floor(a[0]); + out[1] = Math.floor(a[1]); + out[2] = Math.floor(a[2]); + return out; +} +function min(out, a, b) { + out[0] = Math.min(a[0], b[0]); + out[1] = Math.min(a[1], b[1]); + out[2] = Math.min(a[2], b[2]); + return out; +} +function max(out, a, b) { + out[0] = Math.max(a[0], b[0]); + out[1] = Math.max(a[1], b[1]); + out[2] = Math.max(a[2], b[2]); + return out; +} +function round(out, a) { + out[0] = Math.round(a[0]); + out[1] = Math.round(a[1]); + out[2] = Math.round(a[2]); + return out; +} +function scale3(out, a, b) { + out[0] = a[0] * b; + out[1] = a[1] * b; + out[2] = a[2] * b; + return out; +} +function scaleAndAdd(out, a, b, scale6) { + out[0] = a[0] + b[0] * scale6; + out[1] = a[1] + b[1] * scale6; + out[2] = a[2] + b[2] * scale6; + return out; +} +function distance(a, b) { + var x = b[0] - a[0]; + var y = b[1] - a[1]; + var z = b[2] - a[2]; + return Math.hypot(x, y, z); +} +function squaredDistance(a, b) { + var x = b[0] - a[0]; + var y = b[1] - a[1]; + var z = b[2] - a[2]; + return x * x + y * y + z * z; +} +function squaredLength(a) { + var x = a[0]; + var y = a[1]; + var z = a[2]; + return x * x + y * y + z * z; +} +function negate(out, a) { + out[0] = -a[0]; + out[1] = -a[1]; + out[2] = -a[2]; + return out; +} +function inverse(out, a) { + out[0] = 1 / a[0]; + out[1] = 1 / a[1]; + out[2] = 1 / a[2]; + return out; +} +function normalize(out, a) { + var x = a[0]; + var y = a[1]; + var z = a[2]; + var len4 = x * x + y * y + z * z; + if (len4 > 0) { + len4 = 1 / Math.sqrt(len4); + } + out[0] = a[0] * len4; + out[1] = a[1] * len4; + out[2] = a[2] * len4; + return out; +} +function dot(a, b) { + return a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; +} +function cross(out, a, b) { + var ax = a[0], ay = a[1], az = a[2]; + var bx = b[0], by = b[1], bz = b[2]; + out[0] = ay * bz - az * by; + out[1] = az * bx - ax * bz; + out[2] = ax * by - ay * bx; + return out; +} +function lerp(out, a, b, t) { + var ax = a[0]; + var ay = a[1]; + var az = a[2]; + out[0] = ax + t * (b[0] - ax); + out[1] = ay + t * (b[1] - ay); + out[2] = az + t * (b[2] - az); + return out; +} +function hermite(out, a, b, c, d, t) { + var factorTimes2 = t * t; + var factor1 = factorTimes2 * (2 * t - 3) + 1; + var factor2 = factorTimes2 * (t - 2) + t; + var factor3 = factorTimes2 * (t - 1); + var factor4 = factorTimes2 * (3 - 2 * t); + out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4; + out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4; + out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4; + return out; +} +function bezier(out, a, b, c, d, t) { + var inverseFactor = 1 - t; + var inverseFactorTimesTwo = inverseFactor * inverseFactor; + var factorTimes2 = t * t; + var factor1 = inverseFactorTimesTwo * inverseFactor; + var factor2 = 3 * t * inverseFactorTimesTwo; + var factor3 = 3 * factorTimes2 * inverseFactor; + var factor4 = factorTimes2 * t; + out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4; + out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4; + out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4; + return out; +} +function random(out, scale6) { + scale6 = scale6 || 1; + var r = RANDOM() * 2 * Math.PI; + var z = RANDOM() * 2 - 1; + var zScale = Math.sqrt(1 - z * z) * scale6; + out[0] = Math.cos(r) * zScale; + out[1] = Math.sin(r) * zScale; + out[2] = z * scale6; + return out; +} +function transformMat4(out, a, m) { + var x = a[0], y = a[1], z = a[2]; + var w = m[3] * x + m[7] * y + m[11] * z + m[15]; + w = w || 1; + out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w; + out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w; + out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w; + return out; +} +function transformMat3(out, a, m) { + var x = a[0], y = a[1], z = a[2]; + out[0] = x * m[0] + y * m[3] + z * m[6]; + out[1] = x * m[1] + y * m[4] + z * m[7]; + out[2] = x * m[2] + y * m[5] + z * m[8]; + return out; +} +function transformQuat(out, a, q) { + var qx = q[0], qy = q[1], qz = q[2], qw = q[3]; + var x = a[0], y = a[1], z = a[2]; + var uvx = qy * z - qz * y, uvy = qz * x - qx * z, uvz = qx * y - qy * x; + var uuvx = qy * uvz - qz * uvy, uuvy = qz * uvx - qx * uvz, uuvz = qx * uvy - qy * uvx; + var w2 = qw * 2; + uvx *= w2; + uvy *= w2; + uvz *= w2; + uuvx *= 2; + uuvy *= 2; + uuvz *= 2; + out[0] = x + uvx + uuvx; + out[1] = y + uvy + uuvy; + out[2] = z + uvz + uuvz; + return out; +} +function rotateX2(out, a, b, rad) { + var p = [], r = []; + p[0] = a[0] - b[0]; + p[1] = a[1] - b[1]; + p[2] = a[2] - b[2]; + r[0] = p[0]; + r[1] = p[1] * Math.cos(rad) - p[2] * Math.sin(rad); + r[2] = p[1] * Math.sin(rad) + p[2] * Math.cos(rad); + out[0] = r[0] + b[0]; + out[1] = r[1] + b[1]; + out[2] = r[2] + b[2]; + return out; +} +function rotateY2(out, a, b, rad) { + var p = [], r = []; + p[0] = a[0] - b[0]; + p[1] = a[1] - b[1]; + p[2] = a[2] - b[2]; + r[0] = p[2] * Math.sin(rad) + p[0] * Math.cos(rad); + r[1] = p[1]; + r[2] = p[2] * Math.cos(rad) - p[0] * Math.sin(rad); + out[0] = r[0] + b[0]; + out[1] = r[1] + b[1]; + out[2] = r[2] + b[2]; + return out; +} +function rotateZ2(out, a, b, rad) { + var p = [], r = []; + p[0] = a[0] - b[0]; + p[1] = a[1] - b[1]; + p[2] = a[2] - b[2]; + r[0] = p[0] * Math.cos(rad) - p[1] * Math.sin(rad); + r[1] = p[0] * Math.sin(rad) + p[1] * Math.cos(rad); + r[2] = p[2]; + out[0] = r[0] + b[0]; + out[1] = r[1] + b[1]; + out[2] = r[2] + b[2]; + return out; +} +function angle(a, b) { + var ax = a[0], ay = a[1], az = a[2], bx = b[0], by = b[1], bz = b[2], mag1 = Math.sqrt(ax * ax + ay * ay + az * az), mag2 = Math.sqrt(bx * bx + by * by + bz * bz), mag = mag1 * mag2, cosine = mag && dot(a, b) / mag; + return Math.acos(Math.min(Math.max(cosine, -1), 1)); +} +function zero(out) { + out[0] = 0; + out[1] = 0; + out[2] = 0; + return out; +} +function str3(a) { + return "vec3(" + a[0] + ", " + a[1] + ", " + a[2] + ")"; +} +function exactEquals3(a, b) { + return a[0] === b[0] && a[1] === b[1] && a[2] === b[2]; +} +function equals3(a, b) { + var a0 = a[0], a1 = a[1], a2 = a[2]; + var b0 = b[0], b1 = b[1], b2 = b[2]; + return Math.abs(a0 - b0) <= EPSILON * Math.max(1, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= EPSILON * Math.max(1, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= EPSILON * Math.max(1, Math.abs(a2), Math.abs(b2)); +} +var sub3 = subtract3; +var mul3 = multiply3; +var div = divide; +var dist = distance; +var sqrDist = squaredDistance; +var len = length; +var sqrLen = squaredLength; +var forEach = function() { + var vec = create3(); + return function(a, stride, offset, count, fn, arg) { + var i, l; + if (!stride) { + stride = 3; + } + if (!offset) { + offset = 0; + } + if (count) { + l = Math.min(count * stride + offset, a.length); + } else { + l = a.length; + } + for (i = offset; i < l; i += stride) { + vec[0] = a[i]; + vec[1] = a[i + 1]; + vec[2] = a[i + 2]; + fn(vec, vec, arg); + a[i] = vec[0]; + a[i + 1] = vec[1]; + a[i + 2] = vec[2]; + } + return a; + }; +}(); + +// ../../node_modules/gl-matrix/esm/vec4.js +var vec4_exports = {}; +__export(vec4_exports, { + add: () => add4, + ceil: () => ceil2, + clone: () => clone4, + copy: () => copy4, + create: () => create4, + cross: () => cross2, + dist: () => dist2, + distance: () => distance2, + div: () => div2, + divide: () => divide2, + dot: () => dot2, + equals: () => equals4, + exactEquals: () => exactEquals4, + floor: () => floor2, + forEach: () => forEach2, + fromValues: () => fromValues4, + inverse: () => inverse2, + len: () => len2, + length: () => length2, + lerp: () => lerp2, + max: () => max2, + min: () => min2, + mul: () => mul4, + multiply: () => multiply4, + negate: () => negate2, + normalize: () => normalize2, + random: () => random2, + round: () => round2, + scale: () => scale4, + scaleAndAdd: () => scaleAndAdd2, + set: () => set4, + sqrDist: () => sqrDist2, + sqrLen: () => sqrLen2, + squaredDistance: () => squaredDistance2, + squaredLength: () => squaredLength2, + str: () => str4, + sub: () => sub4, + subtract: () => subtract4, + transformMat4: () => transformMat42, + transformQuat: () => transformQuat2, + zero: () => zero2 +}); +function create4() { + var out = new ARRAY_TYPE(4); + if (ARRAY_TYPE != Float32Array) { + out[0] = 0; + out[1] = 0; + out[2] = 0; + out[3] = 0; + } + return out; +} +function clone4(a) { + var out = new ARRAY_TYPE(4); + out[0] = a[0]; + out[1] = a[1]; + out[2] = a[2]; + out[3] = a[3]; + return out; +} +function fromValues4(x, y, z, w) { + var out = new ARRAY_TYPE(4); + out[0] = x; + out[1] = y; + out[2] = z; + out[3] = w; + return out; +} +function copy4(out, a) { + out[0] = a[0]; + out[1] = a[1]; + out[2] = a[2]; + out[3] = a[3]; + return out; +} +function set4(out, x, y, z, w) { + out[0] = x; + out[1] = y; + out[2] = z; + out[3] = w; + return out; +} +function add4(out, a, b) { + out[0] = a[0] + b[0]; + out[1] = a[1] + b[1]; + out[2] = a[2] + b[2]; + out[3] = a[3] + b[3]; + return out; +} +function subtract4(out, a, b) { + out[0] = a[0] - b[0]; + out[1] = a[1] - b[1]; + out[2] = a[2] - b[2]; + out[3] = a[3] - b[3]; + return out; +} +function multiply4(out, a, b) { + out[0] = a[0] * b[0]; + out[1] = a[1] * b[1]; + out[2] = a[2] * b[2]; + out[3] = a[3] * b[3]; + return out; +} +function divide2(out, a, b) { + out[0] = a[0] / b[0]; + out[1] = a[1] / b[1]; + out[2] = a[2] / b[2]; + out[3] = a[3] / b[3]; + return out; +} +function ceil2(out, a) { + out[0] = Math.ceil(a[0]); + out[1] = Math.ceil(a[1]); + out[2] = Math.ceil(a[2]); + out[3] = Math.ceil(a[3]); + return out; +} +function floor2(out, a) { + out[0] = Math.floor(a[0]); + out[1] = Math.floor(a[1]); + out[2] = Math.floor(a[2]); + out[3] = Math.floor(a[3]); + return out; +} +function min2(out, a, b) { + out[0] = Math.min(a[0], b[0]); + out[1] = Math.min(a[1], b[1]); + out[2] = Math.min(a[2], b[2]); + out[3] = Math.min(a[3], b[3]); + return out; +} +function max2(out, a, b) { + out[0] = Math.max(a[0], b[0]); + out[1] = Math.max(a[1], b[1]); + out[2] = Math.max(a[2], b[2]); + out[3] = Math.max(a[3], b[3]); + return out; +} +function round2(out, a) { + out[0] = Math.round(a[0]); + out[1] = Math.round(a[1]); + out[2] = Math.round(a[2]); + out[3] = Math.round(a[3]); + return out; +} +function scale4(out, a, b) { + out[0] = a[0] * b; + out[1] = a[1] * b; + out[2] = a[2] * b; + out[3] = a[3] * b; + return out; +} +function scaleAndAdd2(out, a, b, scale6) { + out[0] = a[0] + b[0] * scale6; + out[1] = a[1] + b[1] * scale6; + out[2] = a[2] + b[2] * scale6; + out[3] = a[3] + b[3] * scale6; + return out; +} +function distance2(a, b) { + var x = b[0] - a[0]; + var y = b[1] - a[1]; + var z = b[2] - a[2]; + var w = b[3] - a[3]; + return Math.hypot(x, y, z, w); +} +function squaredDistance2(a, b) { + var x = b[0] - a[0]; + var y = b[1] - a[1]; + var z = b[2] - a[2]; + var w = b[3] - a[3]; + return x * x + y * y + z * z + w * w; +} +function length2(a) { + var x = a[0]; + var y = a[1]; + var z = a[2]; + var w = a[3]; + return Math.hypot(x, y, z, w); +} +function squaredLength2(a) { + var x = a[0]; + var y = a[1]; + var z = a[2]; + var w = a[3]; + return x * x + y * y + z * z + w * w; +} +function negate2(out, a) { + out[0] = -a[0]; + out[1] = -a[1]; + out[2] = -a[2]; + out[3] = -a[3]; + return out; +} +function inverse2(out, a) { + out[0] = 1 / a[0]; + out[1] = 1 / a[1]; + out[2] = 1 / a[2]; + out[3] = 1 / a[3]; + return out; +} +function normalize2(out, a) { + var x = a[0]; + var y = a[1]; + var z = a[2]; + var w = a[3]; + var len4 = x * x + y * y + z * z + w * w; + if (len4 > 0) { + len4 = 1 / Math.sqrt(len4); + } + out[0] = x * len4; + out[1] = y * len4; + out[2] = z * len4; + out[3] = w * len4; + return out; +} +function dot2(a, b) { + return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3]; +} +function cross2(out, u, v, w) { + var A = v[0] * w[1] - v[1] * w[0], B = v[0] * w[2] - v[2] * w[0], C = v[0] * w[3] - v[3] * w[0], D = v[1] * w[2] - v[2] * w[1], E = v[1] * w[3] - v[3] * w[1], F = v[2] * w[3] - v[3] * w[2]; + var G = u[0]; + var H = u[1]; + var I = u[2]; + var J = u[3]; + out[0] = H * F - I * E + J * D; + out[1] = -(G * F) + I * C - J * B; + out[2] = G * E - H * C + J * A; + out[3] = -(G * D) + H * B - I * A; + return out; +} +function lerp2(out, a, b, t) { + var ax = a[0]; + var ay = a[1]; + var az = a[2]; + var aw = a[3]; + out[0] = ax + t * (b[0] - ax); + out[1] = ay + t * (b[1] - ay); + out[2] = az + t * (b[2] - az); + out[3] = aw + t * (b[3] - aw); + return out; +} +function random2(out, scale6) { + scale6 = scale6 || 1; + var v1, v2, v3, v42; + var s1, s2; + do { + v1 = RANDOM() * 2 - 1; + v2 = RANDOM() * 2 - 1; + s1 = v1 * v1 + v2 * v2; + } while (s1 >= 1); + do { + v3 = RANDOM() * 2 - 1; + v42 = RANDOM() * 2 - 1; + s2 = v3 * v3 + v42 * v42; + } while (s2 >= 1); + var d = Math.sqrt((1 - s1) / s2); + out[0] = scale6 * v1; + out[1] = scale6 * v2; + out[2] = scale6 * v3 * d; + out[3] = scale6 * v42 * d; + return out; +} +function transformMat42(out, a, m) { + var x = a[0], y = a[1], z = a[2], w = a[3]; + out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w; + out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w; + out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w; + out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w; + return out; +} +function transformQuat2(out, a, q) { + var x = a[0], y = a[1], z = a[2]; + var qx = q[0], qy = q[1], qz = q[2], qw = q[3]; + var ix = qw * x + qy * z - qz * y; + var iy = qw * y + qz * x - qx * z; + var iz = qw * z + qx * y - qy * x; + var iw = -qx * x - qy * y - qz * z; + out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy; + out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz; + out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx; + out[3] = a[3]; + return out; +} +function zero2(out) { + out[0] = 0; + out[1] = 0; + out[2] = 0; + out[3] = 0; + return out; +} +function str4(a) { + return "vec4(" + a[0] + ", " + a[1] + ", " + a[2] + ", " + a[3] + ")"; +} +function exactEquals4(a, b) { + return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3]; +} +function equals4(a, b) { + var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3]; + var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3]; + return Math.abs(a0 - b0) <= EPSILON * Math.max(1, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= EPSILON * Math.max(1, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= EPSILON * Math.max(1, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= EPSILON * Math.max(1, Math.abs(a3), Math.abs(b3)); +} +var sub4 = subtract4; +var mul4 = multiply4; +var div2 = divide2; +var dist2 = distance2; +var sqrDist2 = squaredDistance2; +var len2 = length2; +var sqrLen2 = squaredLength2; +var forEach2 = function() { + var vec = create4(); + return function(a, stride, offset, count, fn, arg) { + var i, l; + if (!stride) { + stride = 4; + } + if (!offset) { + offset = 0; + } + if (count) { + l = Math.min(count * stride + offset, a.length); + } else { + l = a.length; + } + for (i = offset; i < l; i += stride) { + vec[0] = a[i]; + vec[1] = a[i + 1]; + vec[2] = a[i + 2]; + vec[3] = a[i + 3]; + fn(vec, vec, arg); + a[i] = vec[0]; + a[i + 1] = vec[1]; + a[i + 2] = vec[2]; + a[i + 3] = vec[3]; + } + return a; + }; +}(); + +// ../../node_modules/gl-matrix/esm/vec2.js +var vec2_exports = {}; +__export(vec2_exports, { + add: () => add5, + angle: () => angle2, + ceil: () => ceil3, + clone: () => clone5, + copy: () => copy5, + create: () => create5, + cross: () => cross3, + dist: () => dist3, + distance: () => distance3, + div: () => div3, + divide: () => divide3, + dot: () => dot3, + equals: () => equals5, + exactEquals: () => exactEquals5, + floor: () => floor3, + forEach: () => forEach3, + fromValues: () => fromValues5, + inverse: () => inverse3, + len: () => len3, + length: () => length3, + lerp: () => lerp3, + max: () => max3, + min: () => min3, + mul: () => mul5, + multiply: () => multiply5, + negate: () => negate3, + normalize: () => normalize3, + random: () => random3, + rotate: () => rotate3, + round: () => round3, + scale: () => scale5, + scaleAndAdd: () => scaleAndAdd3, + set: () => set5, + sqrDist: () => sqrDist3, + sqrLen: () => sqrLen3, + squaredDistance: () => squaredDistance3, + squaredLength: () => squaredLength3, + str: () => str5, + sub: () => sub5, + subtract: () => subtract5, + transformMat2: () => transformMat2, + transformMat2d: () => transformMat2d, + transformMat3: () => transformMat32, + transformMat4: () => transformMat43, + zero: () => zero3 +}); +function create5() { + var out = new ARRAY_TYPE(2); + if (ARRAY_TYPE != Float32Array) { + out[0] = 0; + out[1] = 0; + } + return out; +} +function clone5(a) { + var out = new ARRAY_TYPE(2); + out[0] = a[0]; + out[1] = a[1]; + return out; +} +function fromValues5(x, y) { + var out = new ARRAY_TYPE(2); + out[0] = x; + out[1] = y; + return out; +} +function copy5(out, a) { + out[0] = a[0]; + out[1] = a[1]; + return out; +} +function set5(out, x, y) { + out[0] = x; + out[1] = y; + return out; +} +function add5(out, a, b) { + out[0] = a[0] + b[0]; + out[1] = a[1] + b[1]; + return out; +} +function subtract5(out, a, b) { + out[0] = a[0] - b[0]; + out[1] = a[1] - b[1]; + return out; +} +function multiply5(out, a, b) { + out[0] = a[0] * b[0]; + out[1] = a[1] * b[1]; + return out; +} +function divide3(out, a, b) { + out[0] = a[0] / b[0]; + out[1] = a[1] / b[1]; + return out; +} +function ceil3(out, a) { + out[0] = Math.ceil(a[0]); + out[1] = Math.ceil(a[1]); + return out; +} +function floor3(out, a) { + out[0] = Math.floor(a[0]); + out[1] = Math.floor(a[1]); + return out; +} +function min3(out, a, b) { + out[0] = Math.min(a[0], b[0]); + out[1] = Math.min(a[1], b[1]); + return out; +} +function max3(out, a, b) { + out[0] = Math.max(a[0], b[0]); + out[1] = Math.max(a[1], b[1]); + return out; +} +function round3(out, a) { + out[0] = Math.round(a[0]); + out[1] = Math.round(a[1]); + return out; +} +function scale5(out, a, b) { + out[0] = a[0] * b; + out[1] = a[1] * b; + return out; +} +function scaleAndAdd3(out, a, b, scale6) { + out[0] = a[0] + b[0] * scale6; + out[1] = a[1] + b[1] * scale6; + return out; +} +function distance3(a, b) { + var x = b[0] - a[0], y = b[1] - a[1]; + return Math.hypot(x, y); +} +function squaredDistance3(a, b) { + var x = b[0] - a[0], y = b[1] - a[1]; + return x * x + y * y; +} +function length3(a) { + var x = a[0], y = a[1]; + return Math.hypot(x, y); +} +function squaredLength3(a) { + var x = a[0], y = a[1]; + return x * x + y * y; +} +function negate3(out, a) { + out[0] = -a[0]; + out[1] = -a[1]; + return out; +} +function inverse3(out, a) { + out[0] = 1 / a[0]; + out[1] = 1 / a[1]; + return out; +} +function normalize3(out, a) { + var x = a[0], y = a[1]; + var len4 = x * x + y * y; + if (len4 > 0) { + len4 = 1 / Math.sqrt(len4); + } + out[0] = a[0] * len4; + out[1] = a[1] * len4; + return out; +} +function dot3(a, b) { + return a[0] * b[0] + a[1] * b[1]; +} +function cross3(out, a, b) { + var z = a[0] * b[1] - a[1] * b[0]; + out[0] = out[1] = 0; + out[2] = z; + return out; +} +function lerp3(out, a, b, t) { + var ax = a[0], ay = a[1]; + out[0] = ax + t * (b[0] - ax); + out[1] = ay + t * (b[1] - ay); + return out; +} +function random3(out, scale6) { + scale6 = scale6 || 1; + var r = RANDOM() * 2 * Math.PI; + out[0] = Math.cos(r) * scale6; + out[1] = Math.sin(r) * scale6; + return out; +} +function transformMat2(out, a, m) { + var x = a[0], y = a[1]; + out[0] = m[0] * x + m[2] * y; + out[1] = m[1] * x + m[3] * y; + return out; +} +function transformMat2d(out, a, m) { + var x = a[0], y = a[1]; + out[0] = m[0] * x + m[2] * y + m[4]; + out[1] = m[1] * x + m[3] * y + m[5]; + return out; +} +function transformMat32(out, a, m) { + var x = a[0], y = a[1]; + out[0] = m[0] * x + m[3] * y + m[6]; + out[1] = m[1] * x + m[4] * y + m[7]; + return out; +} +function transformMat43(out, a, m) { + var x = a[0]; + var y = a[1]; + out[0] = m[0] * x + m[4] * y + m[12]; + out[1] = m[1] * x + m[5] * y + m[13]; + return out; +} +function rotate3(out, a, b, rad) { + var p0 = a[0] - b[0], p1 = a[1] - b[1], sinC = Math.sin(rad), cosC = Math.cos(rad); + out[0] = p0 * cosC - p1 * sinC + b[0]; + out[1] = p0 * sinC + p1 * cosC + b[1]; + return out; +} +function angle2(a, b) { + var x1 = a[0], y1 = a[1], x2 = b[0], y2 = b[1], mag = Math.sqrt(x1 * x1 + y1 * y1) * Math.sqrt(x2 * x2 + y2 * y2), cosine = mag && (x1 * x2 + y1 * y2) / mag; + return Math.acos(Math.min(Math.max(cosine, -1), 1)); +} +function zero3(out) { + out[0] = 0; + out[1] = 0; + return out; +} +function str5(a) { + return "vec2(" + a[0] + ", " + a[1] + ")"; +} +function exactEquals5(a, b) { + return a[0] === b[0] && a[1] === b[1]; +} +function equals5(a, b) { + var a0 = a[0], a1 = a[1]; + var b0 = b[0], b1 = b[1]; + return Math.abs(a0 - b0) <= EPSILON * Math.max(1, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= EPSILON * Math.max(1, Math.abs(a1), Math.abs(b1)); +} +var len3 = length3; +var sub5 = subtract5; +var mul5 = multiply5; +var div3 = divide3; +var dist3 = distance3; +var sqrDist3 = squaredDistance3; +var sqrLen3 = squaredLength3; +var forEach3 = function() { + var vec = create5(); + return function(a, stride, offset, count, fn, arg) { + var i, l; + if (!stride) { + stride = 2; + } + if (!offset) { + offset = 0; + } + if (count) { + l = Math.min(count * stride + offset, a.length); + } else { + l = a.length; + } + for (i = offset; i < l; i += stride) { + vec[0] = a[i]; + vec[1] = a[i + 1]; + fn(vec, vec, arg); + a[i] = vec[0]; + a[i + 1] = vec[1]; + } + return a; + }; +}(); + +// package.json +var package_default = { + name: "@niivue/niivue", + version: "0.65.0", + description: "minimal webgl2 nifti image viewer", + types: "./build/niivue/index.d.ts", + main: "./build/niivue/index.js", + type: "module", + unpkg: "./dist/index.min.js", + module: "./build/niivue/index.js", + exports: { + ".": { + import: "./build/niivue/index.js", + types: "./build/niivue/index.d.ts" + }, + "./drawing": { + import: "./build/drawing/index.js", + types: "./build/drawing/index.d.ts" + }, + "./utils": { + import: "./build/utils/index.js", + types: "./build/utils/index.d.ts" + }, + "./min": { + import: "./build/index.min.js" + } + }, + scripts: { + dev: "vite", + "build:umd": "vite build --config vite.config.js --base=./ && vite build --config vite.config_inject.js --base=./", + build: "tsup --config tsup.config.ts && npm run build:forTests && npm run build:min && npm run build:umd", + "build:forTests": "tsup --config tsup.config.tests.ts && npm run build:mindemos", + "build:min": "node bundle.js", + "build:mindemos": "node bundleForDemos.js", + demo: "npm run build:forTests && rm -rf demos/dist && cp -r dist demos/dist && npx http-server demos/ --cors", + "demo-win": "npm run build && npx http-server demos/", + test: "npm run build:forTests && npm run test:unit && jest --maxWorkers=1", + "test-win": "npm run build-win && jest", + "test-playwright": 'npx playwright test --grep-invert "niivue demo file:"', + "test-demos": "npx playwright test playwright/e2e/test.demos.spec.ts", + docs: "typedoc && rm -rf ../docs/docs/api && cp -r devdocs ../docs/docs/api", + "test:unit": "vitest --run --coverage", + "serve-docs": "npx http-server devdocs", + pub: "npm run build && npm publish --access public", + lint: "eslint .", + "lint:ts": "tsc --noEmit", + "lint:fix": "eslint --fix .", + "lint:debug": "DEBUG=eslint:cli-engine eslint .", + "pretest-playwright": "npm run build:forTests && node preplaywrighttest.cjs && tsc --incremental -p playwright/e2e/tsconfig.json", + "pretest-demos": "npm run build:forTests && node preplaywrighttest.cjs && tsc --incremental -p playwright/e2e/tsconfig.json" + }, + files: [ + "src", + "build", + "dist" + ], + repository: { + type: "git", + url: "git+https://github.com/niivue/niivue.git" + }, + keywords: [ + "niivue", + "webgl2", + "nifti", + "image", + "viewer" + ], + author: "niivue authors", + license: "BSD-2-Clause", + bugs: { + url: "https://github.com/niivue/niivue/issues" + }, + homepage: "https://github.com/niivue/niivue#readme", + dependencies: { + "@lukeed/uuid": "^2.0.1", + "@ungap/structured-clone": "^1.2.0", + "array-equal": "^1.0.2", + fflate: "^0.8.2", + "gl-matrix": "^3.4.3", + "nifti-reader-js": "^0.8.0", + zarrita: "^0.5.0" + }, + devDependencies: { + "@playwright/test": "^1.45.2", + "@rollup/plugin-commonjs": "^26.0.1", + "@types/array-equal": "^1.0.2", + "@types/node": "^20.14.11", + "@types/ungap__structured-clone": "^1.2.0", + "@typescript-eslint/eslint-plugin": "^7.16.1", + "@typescript-eslint/parser": "^7.16.1", + "@vitest/coverage-v8": "^3.1.3", + eslint: "^8.57.0", + "eslint-config-prettier": "^9.1.0", + "eslint-config-standard": "^17.1.0", + "eslint-plugin-prettier": "^5.2.1", + "eslint-plugin-tsdoc": "^0.3.0", + express: "^4.19.2", + "happy-dom": "^15.11.6", + "http-server": "^14.1.1", + prettier: "^3.3.3", + "regenerator-runtime": "^0.14.1", + terser: "^5.31.3", + tsup: "^8.1.2", + typedoc: "^0.28.5", + "typedoc-docusaurus-theme": "^1.4.0", + "typedoc-plugin-markdown": "^4.7.0", + typescript: "^5.5.3", + vite: "^5.3.4", + vitest: "^3.1.3" + }, + optionalDependencies: { + "@rollup/rollup-linux-x64-gnu": "^4.18.1" + } +}; + +// src/orientCube.ts +var orientCube = new Float32Array([ + -1, + -1, + -1, + 0.28, + 0.28, + 0.28, + -1, + -1, + -1, + 0.28, + 0.28, + 0.28, + -1, + 1, + -1, + 0.28, + 0.28, + 0.28, + 1, + -1, + -1, + 0.28, + 0.28, + 0.28, + 1, + 1, + -1, + 0.28, + 0.28, + 0.28, + 1, + 1, + -1, + 0.28, + 0.28, + 0.28, + -1, + -1, + 1, + 0.8, + 0.8, + 0.8, + -1, + -1, + 1, + 0.8, + 0.8, + 0.8, + 1, + -1, + 1, + 0.8, + 0.8, + 0.8, + -1, + 1, + 1, + 0.8, + 0.8, + 0.8, + 1, + 1, + 1, + 0.8, + 0.8, + 0.8, + 1, + 1, + 1, + 0.8, + 0.8, + 0.8, + -1, + 1, + -1, + 0, + 0, + 0.74, + -1, + 1, + -1, + 0, + 0, + 0.74, + -1, + 1, + 1, + 0, + 0, + 0.74, + 1, + 1, + -1, + 0, + 0, + 0.74, + 1, + 1, + 1, + 0, + 0, + 0.74, + 1, + 1, + 1, + 0, + 0, + 0.74, + -1, + -1, + -1, + 0.42, + 0, + 0.42, + -1, + -1, + -1, + 0.42, + 0, + 0.42, + 1, + -1, + -1, + 0.42, + 0, + 0.42, + -1, + -1, + 1, + 0.42, + 0, + 0.42, + 1, + -1, + 1, + 0.42, + 0, + 0.42, + 1, + -1, + 1, + 0.42, + 0, + 0.42, + -1, + -1, + -1, + 0.64, + 0, + 0, + -1, + -1, + -1, + 0.64, + 0, + 0, + -1, + -1, + 1, + 0.64, + 0, + 0, + -1, + 1, + -1, + 0.64, + 0, + 0, + -1, + 1, + 1, + 0.64, + 0, + 0, + -1, + 1, + 1, + 0.64, + 0, + 0, + 1, + -1, + -1, + 0, + 0.5, + 0, + 1, + -1, + -1, + 0, + 0.5, + 0, + 1, + 1, + -1, + 0, + 0.5, + 0, + 1, + -1, + 1, + 0, + 0.5, + 0, + 1, + 1, + 1, + 0, + 0.5, + 0, + 1, + 1, + 1, + 0, + 0.5, + 0, + // P + -0.45, + 1, + -0.8, + 0, + 0, + 0, + -0.45, + 1, + -0.8, + 0, + 0, + 0, + -0.45, + 1, + 0.8, + 0, + 0, + 0, + -0.25, + 1, + -0.8, + 0, + 0, + 0, + -0.25, + 1, + 0.8, + 0, + 0, + 0, + -0.25, + 1, + 0.8, + 0, + 0, + 0, + -0.25, + 1, + 0.6, + 0, + 0, + 0, + -0.25, + 1, + 0.6, + 0, + 0, + 0, + -0.25, + 1, + 0.8, + 0, + 0, + 0, + 0.45, + 1, + 0.6, + 0, + 0, + 0, + 0.25, + 1, + 0.8, + 0, + 0, + 0, + 0.25, + 1, + 0.8, + 0, + 0, + 0, + 0.25, + 1, + 0.1, + 0, + 0, + 0, + 0.25, + 1, + 0.1, + 0, + 0, + 0, + 0.25, + 1, + 0.6, + 0, + 0, + 0, + 0.45, + 1, + 0.1, + 0, + 0, + 0, + 0.45, + 1, + 0.6, + 0, + 0, + 0, + 0.45, + 1, + 0.6, + 0, + 0, + 0, + -0.25, + 1, + -0.1, + 0, + 0, + 0, + -0.25, + 1, + -0.1, + 0, + 0, + 0, + -0.25, + 1, + 0.1, + 0, + 0, + 0, + 0.25, + 1, + -0.1, + 0, + 0, + 0, + 0.45, + 1, + 0.1, + 0, + 0, + 0, + 0.45, + 1, + 0.1, + 0, + 0, + 0, + // A + 0.45, + -1, + -0.8, + 0, + 0, + 0, + 0.45, + -1, + -0.8, + 0, + 0, + 0, + 0.05, + -1, + 0.8, + 0, + 0, + 0, + 0.25, + -1, + -0.8, + 0, + 0, + 0, + -0.15, + -1, + 0.8, + 0, + 0, + 0, + -0.15, + -1, + 0.8, + 0, + 0, + 0, + -0.25, + -1, + -0.8, + 0, + 0, + 0, + -0.25, + -1, + -0.8, + 0, + 0, + 0, + 0.05, + -1, + 0.8, + 0, + 0, + 0, + -0.45, + -1, + -0.8, + 0, + 0, + 0, + -0.15, + -1, + 0.8, + 0, + 0, + 0, + -0.15, + -1, + 0.8, + 0, + 0, + 0, + 0.13, + -1, + -0.3, + 0, + 0, + 0, + 0.13, + -1, + -0.3, + 0, + 0, + 0, + 0.07, + -1, + -0.1, + 0, + 0, + 0, + -0.33, + -1, + -0.3, + 0, + 0, + 0, + -0.27, + -1, + -0.1, + 0, + 0, + 0, + -0.27, + -1, + -0.1, + 0, + 0, + 0, + // S + -0.45, + 0.6, + 1, + 0, + 0, + 0, + -0.45, + 0.6, + 1, + 0, + 0, + 0, + -0.45, + 0.4, + 1, + 0, + 0, + 0, + -0.25, + 0.8, + 1, + 0, + 0, + 0, + -0.25, + 0.4, + 1, + 0, + 0, + 0, + -0.25, + 0.4, + 1, + 0, + 0, + 0, + -0.25, + 0.8, + 1, + 0, + 0, + 0, + -0.25, + 0.8, + 1, + 0, + 0, + 0, + -0.25, + 0.6, + 1, + 0, + 0, + 0, + 0.25, + 0.8, + 1, + 0, + 0, + 0, + 0.45, + 0.6, + 1, + 0, + 0, + 0, + 0.45, + 0.6, + 1, + 0, + 0, + 0, + 0.25, + 0.8, + 1, + 0, + 0, + 0, + 0.25, + 0.8, + 1, + 0, + 0, + 0, + 0.25, + -0.1, + 1, + 0, + 0, + 0, + 0.45, + 0.6, + 1, + 0, + 0, + 0, + 0.45, + 0.1, + 1, + 0, + 0, + 0, + 0.45, + 0.1, + 1, + 0, + 0, + 0, + -0.25, + 0.1, + 1, + 0, + 0, + 0, + -0.25, + 0.1, + 1, + 0, + 0, + 0, + -0.45, + -0.1, + 1, + 0, + 0, + 0, + 0.25, + 0.1, + 1, + 0, + 0, + 0, + 0.25, + -0.1, + 1, + 0, + 0, + 0, + 0.25, + -0.1, + 1, + 0, + 0, + 0, + -0.45, + -0.1, + 1, + 0, + 0, + 0, + -0.45, + -0.1, + 1, + 0, + 0, + 0, + -0.45, + -0.6, + 1, + 0, + 0, + 0, + -0.25, + -0.1, + 1, + 0, + 0, + 0, + -0.25, + -0.8, + 1, + 0, + 0, + 0, + -0.25, + -0.8, + 1, + 0, + 0, + 0, + -0.25, + -0.6, + 1, + 0, + 0, + 0, + -0.25, + -0.6, + 1, + 0, + 0, + 0, + -0.25, + -0.8, + 1, + 0, + 0, + 0, + 0.45, + -0.6, + 1, + 0, + 0, + 0, + 0.25, + -0.8, + 1, + 0, + 0, + 0, + 0.25, + -0.8, + 1, + 0, + 0, + 0, + 0.25, + -0.4, + 1, + 0, + 0, + 0, + 0.25, + -0.4, + 1, + 0, + 0, + 0, + 0.25, + -0.6, + 1, + 0, + 0, + 0, + 0.45, + -0.4, + 1, + 0, + 0, + 0, + 0.45, + -0.6, + 1, + 0, + 0, + 0, + 0.45, + -0.6, + 1, + 0, + 0, + 0, + // I + -0.1, + -0.8, + -1, + 0, + 0, + 0, + -0.1, + -0.8, + -1, + 0, + 0, + 0, + -0.1, + 0.8, + -1, + 0, + 0, + 0, + 0.1, + -0.8, + -1, + 0, + 0, + 0, + 0.1, + 0.8, + -1, + 0, + 0, + 0, + 0.1, + 0.8, + -1, + 0, + 0, + 0, + // L + -1, + -0.45, + -0.8, + 0, + 0, + 0, + -1, + -0.45, + -0.8, + 0, + 0, + 0, + -1, + -0.45, + 0.8, + 0, + 0, + 0, + -1, + -0.25, + -0.8, + 0, + 0, + 0, + -1, + -0.25, + 0.8, + 0, + 0, + 0, + -1, + -0.25, + 0.8, + 0, + 0, + 0, + -1, + -0.25, + -0.8, + 0, + 0, + 0, + -1, + -0.25, + -0.8, + 0, + 0, + 0, + -1, + -0.25, + -0.6, + 0, + 0, + 0, + -1, + 0.45, + -0.8, + 0, + 0, + 0, + -1, + 0.45, + -0.6, + 0, + 0, + 0, + -1, + 0.45, + -0.6, + 0, + 0, + 0, + // R + 1, + 0.45, + -0.8, + 0, + 0, + 0, + 1, + 0.45, + -0.8, + 0, + 0, + 0, + 1, + 0.45, + 0.8, + 0, + 0, + 0, + 1, + 0.25, + -0.8, + 0, + 0, + 0, + 1, + 0.25, + 0.8, + 0, + 0, + 0, + 1, + 0.25, + 0.8, + 0, + 0, + 0, + 1, + 0.25, + 0.6, + 0, + 0, + 0, + 1, + 0.25, + 0.6, + 0, + 0, + 0, + 1, + 0.25, + 0.8, + 0, + 0, + 0, + 1, + -0.45, + 0.6, + 0, + 0, + 0, + 1, + -0.25, + 0.8, + 0, + 0, + 0, + 1, + -0.25, + 0.8, + 0, + 0, + 0, + 1, + -0.25, + 0.1, + 0, + 0, + 0, + 1, + -0.25, + 0.1, + 0, + 0, + 0, + 1, + -0.25, + 0.6, + 0, + 0, + 0, + 1, + -0.45, + 0.1, + 0, + 0, + 0, + 1, + -0.45, + 0.6, + 0, + 0, + 0, + 1, + -0.45, + 0.6, + 0, + 0, + 0, + 1, + 0.25, + -0.1, + 0, + 0, + 0, + 1, + 0.25, + -0.1, + 0, + 0, + 0, + 1, + 0.25, + 0.1, + 0, + 0, + 0, + 1, + -0.25, + -0.1, + 0, + 0, + 0, + 1, + -0.45, + 0.1, + 0, + 0, + 0, + 1, + -0.45, + 0.1, + 0, + 0, + 0, + 1, + -0.25, + -0.8, + 0, + 0, + 0, + 1, + -0.25, + -0.8, + 0, + 0, + 0, + 1, + -0.05, + -0.1, + 0, + 0, + 0, + 1, + -0.45, + -0.8, + 0, + 0, + 0, + 1, + -0.25, + -0.1, + 0, + 0, + 0, + 1, + -0.25, + -0.1, + 0, + 0, + 0 +]); + +// src/niivue-object3D.ts +var _NiivueObject3D = class _NiivueObject3D { + constructor(id, vertexBuffer, mode, indexCount, indexBuffer = null, vao = null) { + __publicField(this, "sphereIdx", []); + __publicField(this, "sphereVtx", []); + __publicField(this, "renderShaders", []); + __publicField(this, "isVisible", true); + __publicField(this, "isPickable", true); + __publicField(this, "vertexBuffer"); + __publicField(this, "indexCount"); + __publicField(this, "indexBuffer"); + __publicField(this, "vao"); + __publicField(this, "mode"); + __publicField(this, "glFlags", 0); + __publicField(this, "id"); + __publicField(this, "colorId"); + __publicField(this, "modelMatrix", mat4_exports.create()); + __publicField(this, "scale", [1, 1, 1]); + __publicField(this, "position", [0, 0, 0]); + __publicField(this, "rotation", [0, 0, 0]); + __publicField(this, "rotationRadians", 0); + __publicField(this, "extentsMin", []); + __publicField(this, "extentsMax", []); + // TODO needed through NVImage + __publicField(this, "furthestVertexFromOrigin"); + __publicField(this, "originNegate"); + __publicField(this, "fieldOfViewDeObliqueMM"); + // TODO needed through crosshairs in NiiVue + __publicField(this, "mm"); + this.vertexBuffer = vertexBuffer; + this.indexCount = indexCount; + this.indexBuffer = indexBuffer; + this.vao = vao; + this.mode = mode; + this.id = id; + this.colorId = [ + (id >> 0 & 255) / 255, + (id >> 8 & 255) / 255, + (id >> 16 & 255) / 255, + (id >> 24 & 255) / 255 + ]; + } +}; +__publicField(_NiivueObject3D, "BLEND", 1); +__publicField(_NiivueObject3D, "CULL_FACE", 2); +__publicField(_NiivueObject3D, "CULL_FRONT", 4); +__publicField(_NiivueObject3D, "CULL_BACK", 8); +__publicField(_NiivueObject3D, "ENABLE_DEPTH_TEST", 16); +__publicField(_NiivueObject3D, "generateCrosshairs", function(gl, id, xyzMM, xyzMin, xyzMax, radius, sides = 20, gap = 0) { + const geometry = _NiivueObject3D.generateCrosshairsGeometry(gl, xyzMM, xyzMin, xyzMax, radius, sides, gap); + return new _NiivueObject3D( + id, + geometry.vertexBuffer, + gl.TRIANGLES, + geometry.indexCount, + geometry.indexBuffer, + geometry.vao + ); +}); +// not included in public docs +__publicField(_NiivueObject3D, "generateCrosshairsGeometry", function(gl, xyzMM, xyzMin, xyzMax, radius, sides = 20, gap = 0) { + const vertices = []; + const indices = []; + const gapX = radius * gap; + if (gapX <= 0) { + let start = vec3_exports.fromValues(xyzMin[0], xyzMM[1], xyzMM[2]); + let dest = vec3_exports.fromValues(xyzMax[0], xyzMM[1], xyzMM[2]); + _NiivueObject3D.makeCylinder(vertices, indices, start, dest, radius, sides); + start = vec3_exports.fromValues(xyzMM[0], xyzMin[1], xyzMM[2]); + dest = vec3_exports.fromValues(xyzMM[0], xyzMax[1], xyzMM[2]); + _NiivueObject3D.makeCylinder(vertices, indices, start, dest, radius, sides); + start = vec3_exports.fromValues(xyzMM[0], xyzMM[1], xyzMin[2]); + dest = vec3_exports.fromValues(xyzMM[0], xyzMM[1], xyzMax[2]); + _NiivueObject3D.makeCylinder(vertices, indices, start, dest, radius, sides); + } else { + let start = vec3_exports.fromValues(xyzMin[0], xyzMM[1], xyzMM[2]); + let dest = vec3_exports.fromValues(xyzMM[0] - gapX, xyzMM[1], xyzMM[2]); + _NiivueObject3D.makeCylinder(vertices, indices, start, dest, radius, sides, false); + start = vec3_exports.fromValues(xyzMM[0] + gapX, xyzMM[1], xyzMM[2]); + dest = vec3_exports.fromValues(xyzMax[0], xyzMM[1], xyzMM[2]); + _NiivueObject3D.makeCylinder(vertices, indices, start, dest, radius, sides, false); + start = vec3_exports.fromValues(xyzMM[0], xyzMin[1], xyzMM[2]); + dest = vec3_exports.fromValues(xyzMM[0], xyzMM[1] - gapX, xyzMM[2]); + _NiivueObject3D.makeCylinder(vertices, indices, start, dest, radius, sides, false); + start = vec3_exports.fromValues(xyzMM[0], xyzMM[1] + gapX, xyzMM[2]); + dest = vec3_exports.fromValues(xyzMM[0], xyzMax[1], xyzMM[2]); + _NiivueObject3D.makeCylinder(vertices, indices, start, dest, radius, sides, false); + start = vec3_exports.fromValues(xyzMM[0], xyzMM[1], xyzMin[2]); + dest = vec3_exports.fromValues(xyzMM[0], xyzMM[1], xyzMM[2] - gapX); + _NiivueObject3D.makeCylinder(vertices, indices, start, dest, radius, sides, false); + start = vec3_exports.fromValues(xyzMM[0], xyzMM[1], xyzMM[2] + gapX); + dest = vec3_exports.fromValues(xyzMM[0], xyzMM[1], xyzMax[2]); + _NiivueObject3D.makeCylinder(vertices, indices, start, dest, radius, sides, false); + } + const vertexBuffer = gl.createBuffer(); + if (vertexBuffer === null) { + throw new Error("could not instantiate vertex buffer"); + } + gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer); + gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW); + const indexBuffer = gl.createBuffer(); + if (indexBuffer === null) { + throw new Error("could not instantiate index buffer"); + } + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, indexBuffer); + gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint32Array(indices), gl.STATIC_DRAW); + const vao = gl.createVertexArray(); + gl.bindVertexArray(vao); + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, indexBuffer); + gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer); + gl.enableVertexAttribArray(0); + gl.vertexAttribPointer(0, 3, gl.FLOAT, false, 0, 0); + gl.bindVertexArray(null); + return { + vertexBuffer, + indexBuffer, + indexCount: indices.length, + vao + }; +}); +__publicField(_NiivueObject3D, "getFirstPerpVector", function(v1) { + const v2 = vec3_exports.fromValues(0, 0, 0); + if (v1[0] === 0) { + v2[0] = 1; + } else if (v1[1] === 0) { + v2[1] = 1; + } else if (v1[2] === 0) { + v2[2] = 1; + } else { + v2[0] = v1[2]; + v2[1] = v1[2]; + v2[2] = -(v1[0] + v1[1]); + vec3_exports.normalize(v2, v2); + } + return v2; +}); +__publicField(_NiivueObject3D, "subdivide", function(verts, faces) { + let nv = verts.length / 3; + let nf = faces.length / 3; + const n = nf; + const vNew = vec3_exports.create(); + const nNew = vec3_exports.create(); + for (let faceIndex = 0; faceIndex < n; faceIndex++) { + const fx = faces[faceIndex * 3 + 0]; + const fy = faces[faceIndex * 3 + 1]; + const fz = faces[faceIndex * 3 + 2]; + const vx = vec3_exports.fromValues(verts[fx * 3 + 0], verts[fx * 3 + 1], verts[fx * 3 + 2]); + const vy = vec3_exports.fromValues(verts[fy * 3 + 0], verts[fy * 3 + 1], verts[fy * 3 + 2]); + const vz = vec3_exports.fromValues(verts[fz * 3 + 0], verts[fz * 3 + 1], verts[fz * 3 + 2]); + vec3_exports.add(vNew, vx, vy); + vec3_exports.normalize(nNew, vNew); + verts.push(...nNew); + vec3_exports.add(vNew, vy, vz); + vec3_exports.normalize(nNew, vNew); + verts.push(...nNew); + vec3_exports.add(vNew, vx, vz); + vec3_exports.normalize(nNew, vNew); + verts.push(...nNew); + let face = [nv, nv + 1, nv + 2]; + faces.push(...face); + face = [fx, nv, nv + 2]; + faces.push(...face); + face = [nv, fy, nv + 1]; + faces.push(...face); + faces[faceIndex * 3 + 0] = nv + 2; + faces[faceIndex * 3 + 1] = nv + 1; + faces[faceIndex * 3 + 2] = fz; + nf = nf + 3; + nv = nv + 3; + } +}); +__publicField(_NiivueObject3D, "weldVertices", function(verts, faces) { + const nv = verts.length / 3; + let nUnique = 0; + const remap = new Int32Array(nv); + for (let i = 0; i < nv - 1; i++) { + if (remap[i] !== 0) { + continue; + } + remap[i] = nUnique; + let v = i * 3; + const x = verts[v]; + const y = verts[v + 1]; + const z = verts[v + 2]; + for (let j = i + 1; j < nv; j++) { + v += 3; + if (x === verts[v] && y === verts[v + 1] && z === verts[v + 2]) { + remap[j] = nUnique; + } + } + nUnique++; + } + if (nUnique === nv) { + return verts; + } + const nf = faces.length; + for (let f = 0; f < nf; f++) { + faces[f] = remap[faces[f]]; + } + const vtx = verts.slice(0, nUnique * 3 - 1); + for (let i = 0; i < nv - 1; i++) { + const v = i * 3; + const r = remap[i] * 3; + vtx[r] = verts[v]; + vtx[r + 1] = verts[v + 1]; + vtx[r + 2] = verts[v + 2]; + } + return vtx; +}); +__publicField(_NiivueObject3D, "makeSphere", function(vertices, indices, radius, origin = [0, 0, 0]) { + let vtx = [ + 0, + 0, + 1, + 0.894, + 0, + 0.447, + 0.276, + 0.851, + 0.447, + -0.724, + 0.526, + 0.447, + -0.724, + -0.526, + 0.447, + 0.276, + -0.851, + 0.447, + 0.724, + 0.526, + -0.447, + -0.276, + 0.851, + -0.447, + -0.894, + 0, + -0.447, + -0.276, + -0.851, + -0.447, + 0.724, + -0.526, + -0.447, + 0, + 0, + -1 + ]; + const idx = [ + 0, + 1, + 2, + 0, + 2, + 3, + 0, + 3, + 4, + 0, + 4, + 5, + 0, + 5, + 1, + 7, + 6, + 11, + 8, + 7, + 11, + 9, + 8, + 11, + 10, + 9, + 11, + 6, + 10, + 11, + 6, + 2, + 1, + 7, + 3, + 2, + 8, + 4, + 3, + 9, + 5, + 4, + 10, + 1, + 5, + 6, + 7, + 2, + 7, + 8, + 3, + 8, + 9, + 4, + 9, + 10, + 5, + 10, + 6, + 1 + ]; + _NiivueObject3D.subdivide(vtx, idx); + _NiivueObject3D.subdivide(vtx, idx); + vtx = _NiivueObject3D.weldVertices(vtx, idx); + for (let i = 0; i < vtx.length; i++) { + vtx[i] = vtx[i] * radius; + } + const nvtx = vtx.length / 3; + let j = 0; + for (let i = 0; i < nvtx; i++) { + vtx[j] = vtx[j] + origin[0]; + j++; + vtx[j] = vtx[j] + origin[1]; + j++; + vtx[j] = vtx[j] + origin[2]; + j++; + } + const idx0 = Math.floor(vertices.length / 3); + for (let i = 0; i < idx.length; i++) { + idx[i] = idx[i] + idx0; + } + indices.push(...idx); + vertices.push(...vtx); +}); +__publicField(_NiivueObject3D, "makeCylinder", function(vertices, indices, start, dest, radius, sides = 20, endcaps = true) { + if (sides < 3) { + sides = 3; + } + const v1 = vec3_exports.create(); + vec3_exports.subtract(v1, dest, start); + vec3_exports.normalize(v1, v1); + const v2 = _NiivueObject3D.getFirstPerpVector(v1); + const v3 = vec3_exports.create(); + vec3_exports.cross(v3, v1, v2); + vec3_exports.normalize(v3, v3); + let num_v = 2 * sides; + let num_f = 2 * sides; + if (endcaps) { + num_f += 2 * sides; + num_v += 2; + } + const idx0 = Math.floor(vertices.length / 3); + const idx = new Uint32Array(num_f * 3); + const vtx = new Float32Array(num_v * 3); + function setV(i, vec3) { + vtx[i * 3 + 0] = vec3[0]; + vtx[i * 3 + 1] = vec3[1]; + vtx[i * 3 + 2] = vec3[2]; + } + function setI(i, a, b, c) { + idx[i * 3 + 0] = a + idx0; + idx[i * 3 + 1] = b + idx0; + idx[i * 3 + 2] = c + idx0; + } + const startPole = 2 * sides; + const destPole = startPole + 1; + if (endcaps) { + setV(startPole, start); + setV(destPole, dest); + } + const pt1 = vec3_exports.create(); + const pt2 = vec3_exports.create(); + for (let i = 0; i < sides; i++) { + const c = Math.cos(i / sides * 2 * Math.PI); + const s = Math.sin(i / sides * 2 * Math.PI); + pt1[0] = radius * (c * v2[0] + s * v3[0]); + pt1[1] = radius * (c * v2[1] + s * v3[1]); + pt1[2] = radius * (c * v2[2] + s * v3[2]); + vec3_exports.add(pt2, start, pt1); + setV(i, pt2); + vec3_exports.add(pt2, dest, pt1); + setV(i + sides, pt2); + let nxt = 0; + if (i < sides - 1) { + nxt = i + 1; + } + setI(i * 2, i, nxt, i + sides); + setI(i * 2 + 1, nxt, nxt + sides, i + sides); + if (endcaps) { + setI(sides * 2 + i, i, startPole, nxt); + setI(sides * 2 + i + sides, destPole, i + sides, nxt + sides); + } + } + indices.push(...idx); + vertices.push(...vtx); +}); +__publicField(_NiivueObject3D, "makeColoredCylinder", function(vertices, indices, colors, start, dest, radius, rgba255 = [192, 0, 0, 255], sides = 20, endcaps = false) { + let nv = vertices.length / 3; + _NiivueObject3D.makeCylinder(vertices, indices, start, dest, radius, sides, endcaps); + nv = vertices.length / 3 - nv; + const clrs = []; + for (let i = 0; i < nv * 4 - 1; i += 4) { + clrs[i] = rgba255[0]; + clrs[i + 1] = rgba255[1]; + clrs[i + 2] = rgba255[2]; + clrs[i + 3] = rgba255[3]; + } + colors.push(...clrs); +}); +__publicField(_NiivueObject3D, "makeColoredSphere", function(vertices, indices, colors, radius, origin = [0, 0, 0], rgba255 = [0, 0, 192, 255]) { + let nv = vertices.length / 3; + _NiivueObject3D.makeSphere(vertices, indices, radius, origin); + nv = vertices.length / 3 - nv; + const clrs = []; + for (let i = 0; i < nv * 4 - 1; i += 4) { + clrs[i] = rgba255[0]; + clrs[i + 1] = rgba255[1]; + clrs[i + 2] = rgba255[2]; + clrs[i + 3] = rgba255[3]; + } + colors.push(...clrs); +}); +var NiivueObject3D = _NiivueObject3D; + +// ../../node_modules/@lukeed/uuid/dist/index.mjs +var IDX = 256; +var HEX = []; +var BUFFER; +while (IDX--) HEX[IDX] = (IDX + 256).toString(16).substring(1); +function v4() { + var i = 0, num, out = ""; + if (!BUFFER || IDX + 16 > 256) { + BUFFER = Array(i = 256); + while (i--) BUFFER[i] = 256 * Math.random() | 0; + i = IDX = 0; + } + for (; i < 16; i++) { + num = BUFFER[IDX + i]; + if (i == 6) out += HEX[num & 15 | 64]; + else if (i == 8) out += HEX[num & 63 | 128]; + else out += HEX[num]; + if (i & 1 && i > 1 && i < 11) out += "-"; + } + IDX++; + return out; +} + +// src/logger.ts +var _Log = class _Log { + constructor({ name = "niivue", level = "info" } = {}) { + __publicField(this, "level"); + __publicField(this, "name"); + this.name = `${name}`; + this.level = level; + } + debug(...args) { + if (_Log.levels[this.level] > _Log.levels.debug) { + return; + } + console.debug(`${this.name}-debug`, ...args); + } + info(...args) { + if (_Log.levels[this.level] > _Log.levels.info) { + return; + } + console.info(`${this.name}-info`, ...args); + } + warn(...args) { + if (_Log.levels[this.level] > _Log.levels.warn) { + return; + } + console.warn(`${this.name}-warn`, ...args); + } + error(...args) { + if (_Log.levels[this.level] > _Log.levels.error) { + return; + } + console.error(`${this.name}-error`, ...args); + } + fatal(...args) { + if (_Log.levels[this.level] > _Log.levels.fatal) { + return; + } + console.error(`${this.name}-fatal`, ...args); + } + setLogLevel(level) { + this.level = level; + } + setName(name) { + this.name = name; + } +}; +// map 'debug' 'info' 'warn' 'error' 'fatal' 'silent' to numbers +// for comparison +__publicField(_Log, "levels", { + debug: 0, + info: 1, + warn: 2, + error: 3, + fatal: 4, + silent: Infinity +}); +var Log = _Log; +var log = new Log({ name: "niivue", level: "info" }); + +// src/cmaps/index.ts +var cmaps_exports = {}; +__export(cmaps_exports, { + $itksnap: () => itksnap_default, + $slicer3d: () => slicer3d_default, + actc: () => actc_default, + afni_blues_inv: () => afni_blues_inv_default, + afni_reds_inv: () => afni_reds_inv_default, + batlow: () => batlow_default, + bcgwhw: () => bcgwhw_default, + bcgwhw_dark: () => bcgwhw_dark_default, + blue: () => blue_default, + blue2cyan: () => blue2cyan_default, + blue2magenta: () => blue2magenta_default, + blue2red: () => blue2red_default, + bluegrn: () => bluegrn_default, + bone: () => bone_default, + bronze: () => bronze_default, + cet_l17: () => cet_l17_default, + cividis: () => cividis_default, + cool: () => cool_default, + copper: () => copper_default, + copper2: () => copper2_default, + ct_airways: () => ct_airways_default, + ct_artery: () => ct_artery_default, + ct_bones: () => ct_bones_default, + ct_brain: () => ct_brain_default, + ct_brain_gray: () => ct_brain_gray_default, + ct_cardiac: () => ct_cardiac_default, + ct_head: () => ct_head_default, + ct_kidneys: () => ct_kidneys_default, + ct_liver: () => ct_liver_default, + ct_muscles: () => ct_muscles_default, + ct_scalp: () => ct_scalp_default, + ct_skull: () => ct_skull_default, + ct_soft: () => ct_soft_default, + ct_soft_tissue: () => ct_soft_tissue_default, + ct_surface: () => ct_surface_default, + ct_vessels: () => ct_vessels_default, + ct_w_contrast: () => ct_w_contrast_default, + cubehelix: () => cubehelix_default, + electric_blue: () => electric_blue_default, + freesurfer: () => freesurfer_default, + ge_color: () => ge_color_default, + gold: () => gold_default, + gray: () => gray_default, + green: () => green_default, + green2cyan: () => green2cyan_default, + green2orange: () => green2orange_default, + hot: () => hot_default, + hotiron: () => hotiron_default, + hsv: () => hsv_default, + inferno: () => inferno_default, + jet: () => jet_default, + kry: () => kry_default, + linspecer: () => linspecer_default, + lipari: () => lipari_default, + magma: () => magma_default, + mako: () => mako_default, + navia: () => navia_default, + nih: () => nih_default, + plasma: () => plasma_default, + random: () => random_default, + red: () => red_default, + redyell: () => redyell_default, + rocket: () => rocket_default, + roi_i256: () => roi_i256_default, + surface: () => surface_default, + thermal: () => thermal_default, + turbo: () => turbo_default, + violet: () => violet_default, + viridis: () => viridis_default, + warm: () => warm_default, + winter: () => winter_default, + x_rain: () => x_rain_default +}); + +// src/cmaps/_itksnap.json +var itksnap_default = { + R: [ + 0, + 255, + 0, + 0, + 255, + 0, + 255, + 255, + 0, + 205, + 210, + 102, + 0, + 0, + 46, + 255, + 106, + 221, + 233, + 165, + 255, + 147, + 218, + 75, + 255, + 60, + 255, + 255, + 218, + 0, + 188, + 255, + 255, + 222, + 127, + 139, + 124, + 255, + 70, + 0, + 238, + 238, + 240, + 245, + 184, + 32, + 255, + 25, + 112, + 34, + 248, + 245, + 255, + 144, + 173, + 65, + 255, + 250, + 128, + 50, + 244, + 255, + 123, + 255, + 173, + 255, + 127, + 255, + 143, + 220, + 253, + 255, + 0, + 0, + 128, + 255, + 250, + 148, + 178, + 255, + 135, + 100, + 240, + 250, + 255, + 107, + 135, + 0, + 139, + 245, + 186, + 255, + 255, + 0, + 210, + 255, + 47, + 72, + 175, + 128, + 176, + 255, + 139, + 240, + 255, + 216, + 119, + 219, + 72, + 255, + 199, + 154, + 189, + 240, + 230, + 0, + 85, + 64, + 153, + 205, + 250, + 95, + 0, + 255, + 224, + 176, + 138, + 30, + 240, + 152, + 160 + ], + G: [ + 0, + 0, + 255, + 0, + 255, + 255, + 0, + 239, + 0, + 133, + 180, + 205, + 0, + 139, + 139, + 228, + 90, + 160, + 150, + 42, + 250, + 112, + 112, + 0, + 182, + 179, + 235, + 228, + 165, + 128, + 143, + 105, + 218, + 184, + 255, + 69, + 252, + 255, + 130, + 100, + 130, + 232, + 255, + 222, + 134, + 178, + 20, + 25, + 128, + 139, + 248, + 255, + 160, + 238, + 255, + 105, + 99, + 240, + 0, + 205, + 164, + 255, + 104, + 165, + 216, + 192, + 255, + 140, + 188, + 20, + 245, + 250, + 206, + 255, + 0, + 250, + 128, + 0, + 34, + 127, + 206, + 149, + 230, + 235, + 245, + 142, + 206, + 0, + 0, + 245, + 85, + 228, + 222, + 191, + 105, + 248, + 79, + 61, + 238, + 128, + 224, + 240, + 0, + 255, + 215, + 191, + 136, + 112, + 209, + 0, + 21, + 205, + 183, + 248, + 230, + 250, + 107, + 224, + 50, + 92, + 250, + 158, + 128, + 69, + 255, + 196, + 43, + 144, + 128, + 251, + 82 + ], + B: [ + 0, + 0, + 0, + 255, + 0, + 255, + 255, + 213, + 205, + 63, + 140, + 170, + 128, + 139, + 87, + 225, + 205, + 221, + 122, + 42, + 250, + 219, + 214, + 130, + 193, + 113, + 205, + 196, + 32, + 128, + 143, + 180, + 185, + 135, + 0, + 19, + 0, + 224, + 180, + 0, + 238, + 170, + 240, + 179, + 11, + 170, + 147, + 112, + 144, + 34, + 255, + 250, + 122, + 144, + 47, + 225, + 71, + 230, + 0, + 50, + 96, + 240, + 238, + 0, + 230, + 203, + 212, + 0, + 143, + 60, + 230, + 240, + 209, + 127, + 128, + 205, + 114, + 211, + 34, + 80, + 235, + 237, + 140, + 215, + 238, + 35, + 250, + 139, + 139, + 220, + 211, + 181, + 173, + 255, + 30, + 220, + 79, + 139, + 238, + 0, + 230, + 245, + 0, + 255, + 0, + 216, + 153, + 147, + 204, + 255, + 133, + 50, + 107, + 255, + 250, + 154, + 47, + 208, + 204, + 92, + 210, + 160, + 0, + 0, + 255, + 222, + 226, + 255, + 128, + 152, + 45 + ], + A: [ + 0, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255 + ], + I: [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130 + ] +}; + +// src/cmaps/_slicer3d.json +var slicer3d_default = { + labels: [ + "background", + "tissue", + "bone", + "skin", + "connective tissue", + "blood", + "organ", + "mass", + "muscle", + "foreign object", + "waste", + "teeth", + "fat", + "gray matter", + "white matter", + "nerve", + "vein", + "artery", + "capillary", + "ligament", + "tendon", + "cartilage", + "meniscus", + "lymph node", + "lymphatic vessel", + "cerebro-spinal fluid", + "bile", + "urine", + "feces", + "gas", + "fluid", + "edema", + "bleeding", + "necrosis", + "clot", + "embolism", + "head", + "central nervous system", + "brain", + "gray matter of brain", + "telencephalon", + "cerebral cortex", + "right frontal lobe", + "left frontal lobe", + "right temporal lobe", + "left temporal lobe", + "right parietal lobe", + "left parietal lobe", + "right occipital lobe", + "left occipital lobe", + "right insular lobe", + "left insular lobe", + "right limbic lobe", + "left limbic lobe", + "right striatum", + "left striatum", + "right caudate nucleus", + "left caudate nucleus", + "right putamen", + "left putamen", + "right pallidum", + "left pallidum", + "right amygdaloid complex", + "left amygdaloid complex", + "diencephalon", + "thalamus", + "right thalamus", + "left thalamus", + "pineal gland", + "midbrain", + "substantia nigra", + "right substantia nigra", + "left substantia nigra", + "cerebral white matter", + "right superior longitudinal fasciculus", + "left superior longitudinal fasciculus", + "right inferior longitudinal fasciculus", + "left inferior longitudinal fasciculus", + "right arcuate fasciculus", + "left arcuate fasciculus", + "right uncinate fasciculus", + "left uncinate fasciculus", + "right cingulum bundle", + "left cingulum bundle", + "projection fibers", + "right corticospinal tract", + "left corticospinal tract", + "right optic radiation", + "left optic radiation", + "right medial lemniscus", + "left medial lemniscus", + "right superior cerebellar peduncle", + "left superior cerebellar peduncle", + "right middle cerebellar peduncle", + "left middle cerebellar peduncle", + "right inferior cerebellar peduncle", + "left inferior cerebellar peduncle", + "optic chiasm", + "right optic tract", + "left optic tract", + "right fornix", + "left fornix", + "commissural fibers", + "corpus callosum", + "posterior commissure", + "cerebellar white matter", + "CSF space", + "ventricles of brain", + "right lateral ventricle", + "left lateral ventricle", + "right third ventricle", + "left third ventricle", + "cerebral aqueduct", + "fourth ventricle", + "subarachnoid space", + "spinal cord", + "gray matter of spinal cord", + "white matter of spinal cord", + "endocrine system of brain", + "pituitary gland", + "adenohypophysis", + "neurohypophysis", + "meninges", + "dura mater", + "arachnoid", + "pia mater", + "muscles of head", + "salivary glands", + "lips", + "nose", + "tongue", + "soft palate", + "right inner ear", + "left inner ear", + "right external ear", + "left external ear", + "right middle ear", + "left middle ear", + "right eyeball", + "left eyeball", + "skull", + "right frontal bone", + "left frontal bone", + "right parietal bone", + "left parietal bone", + "right temporal bone", + "left temporal bone", + "right sphenoid bone", + "left sphenoid bone", + "right ethmoid bone", + "left ethmoid bone", + "occipital bone", + "maxilla", + "right zygomatic bone", + "right lacrimal bone", + "vomer bone", + "right palatine bone", + "left palatine bone", + "mandible", + "neck", + "muscles of neck", + "pharynx", + "larynx", + "thyroid gland", + "right parathyroid glands", + "left parathyroid glands", + "skeleton of neck", + "hyoid bone", + "cervical vertebral column", + "thorax", + "trachea", + "bronchi", + "right lung", + "left lung", + "superior lobe of right lung", + "superior lobe of left lung", + "middle lobe of right lung", + "inferior lobe of right lung", + "inferior lobe of left lung", + "pleura", + "heart", + "right atrium", + "left atrium", + "atrial septum", + "ventricular septum", + "right ventricle of heart", + "left ventricle of heart", + "mitral valve", + "tricuspid valve", + "aortic valve", + "pulmonary valve", + "aorta", + "pericardium", + "pericardial cavity", + "esophagus", + "thymus", + "mediastinum", + "skin of thoracic wall", + "muscles of thoracic wall", + "skeleton of thorax", + "thoracic vertebral column", + "ribs", + "sternum", + "right clavicle", + "left clavicle", + "abdominal cavity", + "abdomen", + "peritoneum", + "omentum", + "peritoneal cavity", + "retroperitoneal space", + "stomach", + "duodenum", + "small bowel", + "colon", + "anus", + "liver", + "biliary tree", + "gallbladder", + "pancreas", + "spleen", + "urinary system", + "right kidney", + "left kidney", + "right ureter", + "left ureter", + "urinary bladder", + "urethra", + "right adrenal gland", + "left adrenal gland", + "female internal genitalia", + "uterus", + "right fallopian tube", + "left fallopian tube", + "right ovary", + "left ovary", + "vagina", + "male internal genitalia", + "prostate", + "right seminal vesicle", + "left seminal vesicle", + "right deferent duct", + "left deferent duct", + "skin of abdominal wall", + "muscles of abdominal wall", + "skeleton of abdomen", + "lumbar vertebral column", + "female external genitalia", + "male external genitalia", + "skeleton of upper limb", + "muscles of upper limb", + "right upper limb", + "left upper limb", + "right shoulder", + "left shoulder", + "right arm" + ], + R: [ + 0, + 128, + 241, + 177, + 111, + 216, + 221, + 144, + 192, + 220, + 78, + 255, + 230, + 200, + 250, + 244, + 0, + 216, + 183, + 183, + 152, + 111, + 178, + 68, + 111, + 85, + 0, + 214, + 78, + 218, + 170, + 140, + 188, + 216, + 145, + 150, + 177, + 244, + 250, + 200, + 68, + 128, + 83, + 83, + 162, + 162, + 141, + 141, + 182, + 182, + 188, + 188, + 154, + 154, + 177, + 177, + 30, + 30, + 210, + 210, + 48, + 48, + 98, + 98, + 69, + 166, + 122, + 122, + 253, + 145, + 46, + 0, + 0, + 250, + 127, + 127, + 159, + 159, + 125, + 125, + 106, + 106, + 154, + 154, + 126, + 201, + 201, + 78, + 78, + 174, + 174, + 139, + 139, + 148, + 148, + 186, + 186, + 99, + 156, + 156, + 64, + 64, + 138, + 97, + 126, + 194, + 85, + 88, + 88, + 88, + 88, + 88, + 88, + 88, + 88, + 244, + 200, + 250, + 82, + 57, + 60, + 92, + 255, + 255, + 255, + 255, + 201, + 70, + 188, + 177, + 166, + 182, + 229, + 229, + 174, + 174, + 201, + 201, + 194, + 194, + 241, + 203, + 203, + 229, + 229, + 255, + 255, + 209, + 209, + 248, + 248, + 255, + 196, + 255, + 255, + 255, + 242, + 242, + 222, + 177, + 213, + 184, + 150, + 62, + 62, + 62, + 242, + 250, + 255, + 177, + 182, + 175, + 197, + 197, + 172, + 172, + 202, + 224, + 224, + 255, + 206, + 210, + 203, + 233, + 195, + 181, + 152, + 159, + 166, + 218, + 225, + 224, + 255, + 184, + 211, + 47, + 255, + 173, + 188, + 255, + 226, + 253, + 244, + 205, + 205, + 186, + 177, + 255, + 234, + 204, + 180, + 216, + 255, + 205, + 204, + 255, + 221, + 0, + 139, + 249, + 157, + 203, + 185, + 185, + 247, + 247, + 222, + 124, + 249, + 249, + 244, + 255, + 255, + 227, + 213, + 213, + 193, + 216, + 230, + 245, + 245, + 241, + 241, + 177, + 171, + 217, + 212, + 185, + 185, + 198, + 194, + 177, + 177, + 177, + 177, + 177 + ], + G: [ + 0, + 174, + 214, + 122, + 184, + 101, + 130, + 238, + 104, + 245, + 63, + 250, + 220, + 200, + 250, + 214, + 151, + 101, + 156, + 214, + 189, + 184, + 212, + 172, + 197, + 188, + 145, + 230, + 63, + 255, + 250, + 224, + 65, + 191, + 60, + 98, + 122, + 214, + 250, + 200, + 131, + 174, + 146, + 146, + 115, + 115, + 93, + 93, + 166, + 166, + 135, + 135, + 150, + 150, + 140, + 140, + 111, + 111, + 157, + 157, + 129, + 129, + 153, + 153, + 110, + 113, + 101, + 101, + 135, + 92, + 101, + 108, + 108, + 250, + 150, + 150, + 116, + 116, + 102, + 102, + 174, + 174, + 146, + 146, + 126, + 160, + 160, + 152, + 152, + 140, + 140, + 126, + 126, + 120, + 120, + 135, + 135, + 106, + 171, + 171, + 123, + 123, + 95, + 113, + 161, + 195, + 188, + 106, + 106, + 106, + 106, + 106, + 106, + 106, + 106, + 214, + 200, + 250, + 174, + 157, + 143, + 162, + 244, + 244, + 244, + 244, + 121, + 163, + 91, + 122, + 84, + 105, + 147, + 147, + 122, + 122, + 112, + 112, + 142, + 142, + 213, + 179, + 179, + 204, + 204, + 243, + 243, + 185, + 185, + 223, + 223, + 230, + 172, + 255, + 250, + 237, + 217, + 217, + 198, + 122, + 124, + 105, + 208, + 162, + 162, + 162, + 206, + 210, + 255, + 122, + 228, + 216, + 165, + 165, + 138, + 138, + 164, + 186, + 186, + 245, + 110, + 115, + 108, + 138, + 100, + 85, + 55, + 63, + 70, + 123, + 130, + 97, + 244, + 122, + 171, + 150, + 244, + 121, + 95, + 239, + 202, + 232, + 217, + 179, + 179, + 124, + 122, + 255, + 234, + 142, + 119, + 132, + 253, + 167, + 168, + 224, + 130, + 145, + 150, + 180, + 108, + 136, + 102, + 102, + 182, + 182, + 154, + 186, + 186, + 186, + 170, + 181, + 190, + 153, + 141, + 141, + 123, + 146, + 158, + 172, + 172, + 172, + 172, + 124, + 85, + 198, + 188, + 135, + 135, + 175, + 98, + 122, + 122, + 122, + 122, + 122 + ], + B: [ + 0, + 128, + 145, + 101, + 210, + 79, + 101, + 144, + 88, + 20, + 0, + 220, + 70, + 235, + 210, + 49, + 206, + 79, + 220, + 211, + 207, + 210, + 242, + 100, + 131, + 255, + 30, + 130, + 0, + 255, + 250, + 228, + 28, + 216, + 66, + 83, + 101, + 49, + 225, + 215, + 98, + 128, + 164, + 164, + 105, + 105, + 137, + 137, + 110, + 110, + 166, + 166, + 201, + 201, + 190, + 190, + 85, + 85, + 166, + 166, + 126, + 126, + 112, + 112, + 53, + 137, + 38, + 38, + 192, + 109, + 131, + 112, + 112, + 225, + 88, + 88, + 163, + 163, + 154, + 154, + 155, + 155, + 83, + 83, + 55, + 133, + 133, + 141, + 141, + 103, + 103, + 177, + 177, + 72, + 72, + 135, + 135, + 24, + 108, + 108, + 147, + 147, + 74, + 158, + 197, + 164, + 255, + 215, + 215, + 215, + 215, + 215, + 215, + 215, + 215, + 49, + 215, + 225, + 128, + 110, + 83, + 109, + 209, + 209, + 209, + 209, + 77, + 117, + 95, + 101, + 94, + 107, + 118, + 118, + 90, + 90, + 73, + 73, + 0, + 0, + 144, + 77, + 77, + 109, + 109, + 152, + 152, + 85, + 85, + 131, + 131, + 138, + 68, + 167, + 160, + 145, + 123, + 123, + 101, + 101, + 109, + 108, + 243, + 114, + 114, + 114, + 142, + 139, + 207, + 101, + 255, + 244, + 145, + 145, + 115, + 115, + 140, + 162, + 162, + 217, + 84, + 89, + 81, + 112, + 73, + 57, + 13, + 27, + 38, + 97, + 104, + 76, + 209, + 154, + 143, + 103, + 209, + 88, + 76, + 172, + 134, + 158, + 154, + 108, + 108, + 161, + 101, + 220, + 194, + 178, + 153, + 105, + 229, + 142, + 143, + 199, + 101, + 30, + 98, + 111, + 162, + 116, + 83, + 83, + 164, + 164, + 132, + 223, + 150, + 150, + 147, + 158, + 165, + 130, + 113, + 113, + 103, + 127, + 140, + 147, + 147, + 151, + 151, + 92, + 68, + 131, + 102, + 134, + 134, + 125, + 79, + 101, + 101, + 101, + 101, + 101 + ], + A: [ + 0, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255 + ], + I: [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255 + ] +}; + +// src/cmaps/actc.json +var actc_default = { + R: [0, 0, 24, 248, 255], + G: [0, 0, 177, 254, 0], + B: [0, 136, 0, 0, 0], + A: [0, 32, 64, 78, 128], + I: [0, 64, 128, 156, 255] +}; + +// src/cmaps/batlow.json +var batlow_default = { + R: [1, 10, 15, 17, 21, 27, 36, 49, 65, 82, 99, 118, 140, 161, 183, 203, 222, 238, 248, 253, 253, 253, 252, 250], + G: [25, 42, 56, 68, 79, 88, 97, 105, 111, 116, 122, 127, 133, 138, 142, 146, 150, 155, 162, 170, 178, 186, 195, 204], + B: [89, 92, 95, 96, 98, 98, 96, 91, 83, 74, 64, 55, 46, 43, 49, 62, 79, 100, 126, 151, 175, 199, 223, 250], + A: [0, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64], + I: [0, 11, 22, 33, 44, 55, 66, 77, 88, 99, 110, 121, 133, 144, 155, 166, 177, 188, 199, 210, 221, 232, 243, 255] +}; + +// src/cmaps/bcgwhw_dark.json +var bcgwhw_dark_default = { + R: [ + 0, + 248, + 242, + 235, + 229, + 222, + 212, + 202, + 193, + 183, + 173, + 145, + 117, + 78, + 39, + 0, + 0, + 0, + 0, + 0, + 0, + 64, + 128, + 191, + 255, + 255, + 255, + 255, + 255, + 238, + 221, + 204, + 214, + 224, + 235, + 245, + 255, + 249, + 242, + 236, + 229, + 223, + 217, + 210, + 204, + 197, + 191, + 184, + 176, + 169, + 161, + 154, + 146, + 139, + 132, + 124, + 117, + 109, + 102, + 0 + ], + G: [ + 0, + 251, + 247, + 243, + 239, + 235, + 235, + 235, + 235, + 235, + 235, + 216, + 197, + 174, + 150, + 127, + 153, + 178, + 204, + 229, + 255, + 255, + 255, + 255, + 255, + 220, + 185, + 150, + 115, + 77, + 38, + 0, + 31, + 61, + 92, + 122, + 153, + 138, + 122, + 107, + 92, + 77, + 61, + 46, + 31, + 15, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + B: [ + 0, + 254, + 253, + 252, + 251, + 250, + 251, + 252, + 253, + 254, + 255, + 226, + 198, + 132, + 66, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 40, + 80, + 120, + 160, + 200, + 199, + 198, + 197, + 196, + 196, + 195, + 194, + 193, + 192, + 191, + 184, + 176, + 169, + 161, + 154, + 146, + 139, + 132, + 124, + 117, + 109, + 102, + 0 + ], + A: [ + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256 + ], + I: [ + 0, + 4, + 8, + 12, + 16, + 20, + 24, + 28, + 32, + 36, + 40, + 44, + 48, + 52, + 56, + 60, + 64, + 68, + 72, + 76, + 80, + 84, + 88, + 92, + 96, + 100, + 104, + 108, + 112, + 116, + 120, + 124, + 128, + 132, + 136, + 140, + 144, + 148, + 152, + 156, + 160, + 164, + 168, + 172, + 176, + 180, + 184, + 188, + 192, + 196, + 200, + 204, + 208, + 212, + 216, + 220, + 224, + 228, + 232, + 236, + 240, + 244, + 248, + 255 + ] +}; + +// src/cmaps/bcgwhw.json +var bcgwhw_default = { + R: [ + 255, + 248, + 242, + 235, + 229, + 222, + 212, + 202, + 193, + 183, + 173, + 145, + 117, + 78, + 39, + 0, + 0, + 0, + 0, + 0, + 0, + 64, + 128, + 191, + 255, + 255, + 255, + 255, + 255, + 238, + 221, + 204, + 214, + 224, + 235, + 245, + 255, + 249, + 242, + 236, + 229, + 223, + 217, + 210, + 204, + 197, + 191, + 184, + 176, + 169, + 161, + 154, + 146, + 139, + 132, + 124, + 117, + 109, + 102, + 0 + ], + G: [ + 255, + 251, + 247, + 243, + 239, + 235, + 235, + 235, + 235, + 235, + 235, + 216, + 197, + 174, + 150, + 127, + 153, + 178, + 204, + 229, + 255, + 255, + 255, + 255, + 255, + 220, + 185, + 150, + 115, + 77, + 38, + 0, + 31, + 61, + 92, + 122, + 153, + 138, + 122, + 107, + 92, + 77, + 61, + 46, + 31, + 15, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + B: [ + 255, + 254, + 253, + 252, + 251, + 250, + 251, + 252, + 253, + 254, + 255, + 226, + 198, + 132, + 66, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 40, + 80, + 120, + 160, + 200, + 199, + 198, + 197, + 196, + 196, + 195, + 194, + 193, + 192, + 191, + 184, + 176, + 169, + 161, + 154, + 146, + 139, + 132, + 124, + 117, + 109, + 102, + 0 + ], + A: [ + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256, + 256 + ], + I: [ + 0, + 4, + 8, + 12, + 16, + 20, + 24, + 28, + 32, + 36, + 40, + 44, + 48, + 52, + 56, + 60, + 64, + 68, + 72, + 76, + 80, + 84, + 88, + 92, + 96, + 100, + 104, + 108, + 112, + 116, + 120, + 124, + 128, + 132, + 136, + 140, + 144, + 148, + 152, + 156, + 160, + 164, + 168, + 172, + 176, + 180, + 184, + 188, + 192, + 196, + 200, + 204, + 208, + 212, + 216, + 220, + 224, + 228, + 232, + 236, + 240, + 244, + 248, + 255 + ] +}; + +// src/cmaps/blue2red.json +var blue2red_default = { + R: [0, 0, 0, 0, 196, 255], + G: [0, 32, 128, 128, 128, 32], + B: [0, 255, 196, 0, 0, 0], + A: [0, 128, 64, 64, 64, 128], + I: [0, 1, 64, 128, 192, 255] +}; + +// src/cmaps/blue2magenta.json +var blue2magenta_default = { + R: [0, 255], + G: [0, 0], + B: [255, 255], + A: [0, 128], + I: [0, 255] +}; + +// src/cmaps/blue2cyan.json +var blue2cyan_default = { + R: [0, 0], + G: [0, 255], + B: [255, 255], + A: [0, 128], + I: [0, 255] +}; + +// src/cmaps/bluegrn.json +var bluegrn_default = { + R: [0, 0, 0, 0], + G: [0, 1, 128, 255], + B: [0, 222, 127, 32], + A: [0, 0, 64, 128], + I: [0, 1, 128, 255] +}; + +// src/cmaps/blue.json +var blue_default = { + R: [0, 0, 0], + G: [0, 0, 0], + B: [0, 128, 255], + A: [0, 64, 128], + I: [0, 128, 255] +}; + +// src/cmaps/bone.json +var bone_default = { + R: [0, 103, 255], + G: [0, 126, 255], + B: [0, 165, 255], + A: [0, 76, 128], + I: [0, 153, 255] +}; + +// src/cmaps/bronze.json +var bronze_default = { + R: [0, 43, 103, 199, 216, 255], + G: [0, 0, 37, 155, 213, 255], + B: [0, 0, 20, 97, 201, 255], + A: [0, 44, 48, 54, 56, 56], + I: [0, 64, 128, 196, 240, 255] +}; + +// src/cmaps/cet_l17.json +var cet_l17_default = { + R: [ + 0, + 9, + 24, + 33, + 40, + 46, + 52, + 57, + 62, + 66, + 70, + 74, + 78, + 81, + 85, + 88, + 91, + 94, + 98, + 101, + 103, + 106, + 109, + 112, + 114, + 117, + 119, + 121, + 124, + 126, + 128, + 130, + 133, + 135, + 137, + 139, + 141, + 143, + 145, + 147, + 149, + 151, + 153, + 155, + 157, + 159, + 161, + 163, + 164, + 166, + 168, + 169, + 171, + 172, + 174, + 175, + 177, + 178, + 180, + 181, + 183, + 184, + 186, + 187, + 189, + 190, + 191, + 193, + 194, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 222, + 223, + 224, + 224, + 225, + 226, + 226, + 227, + 228, + 228, + 229, + 229, + 230, + 231, + 231, + 232, + 233, + 233, + 234, + 234, + 235, + 235, + 236, + 236, + 236, + 237, + 237, + 237, + 238, + 238, + 238, + 239, + 239, + 239, + 240, + 240, + 240, + 241, + 241, + 241, + 242, + 242, + 242, + 243, + 243, + 243, + 243, + 243, + 243, + 243, + 243, + 244, + 244, + 244, + 244, + 244, + 244, + 244, + 244, + 244, + 244, + 244, + 245, + 245, + 245, + 245, + 245, + 245, + 245, + 245, + 245, + 245, + 245, + 245, + 245, + 245, + 245, + 245, + 244, + 244, + 244, + 244, + 244, + 244, + 244, + 244, + 244, + 244, + 244, + 244, + 244, + 244, + 244, + 243, + 243, + 243, + 243, + 243, + 243, + 243, + 243, + 243, + 243, + 243, + 243, + 242, + 242, + 242, + 242, + 242, + 242, + 242, + 242, + 241, + 242, + 242, + 242, + 242, + 242, + 242, + 242, + 242, + 242, + 242, + 242, + 242, + 242, + 242, + 242, + 242, + 242, + 242, + 242, + 242, + 242, + 242, + 242, + 243, + 243, + 244, + 244, + 245, + 246, + 246, + 247, + 247, + 248, + 249, + 249, + 250, + 250, + 251, + 251, + 252, + 252, + 253, + 253, + 254, + 254, + 254 + ], + G: [ + 42, + 41, + 41, + 41, + 40, + 40, + 40, + 39, + 39, + 39, + 38, + 38, + 37, + 37, + 36, + 36, + 35, + 35, + 34, + 34, + 33, + 32, + 32, + 31, + 30, + 30, + 30, + 30, + 29, + 29, + 29, + 29, + 28, + 28, + 28, + 27, + 27, + 27, + 26, + 26, + 26, + 25, + 25, + 25, + 24, + 24, + 24, + 24, + 24, + 25, + 25, + 26, + 27, + 27, + 28, + 28, + 29, + 30, + 30, + 31, + 31, + 32, + 33, + 33, + 34, + 34, + 35, + 36, + 36, + 37, + 38, + 39, + 40, + 42, + 43, + 44, + 45, + 47, + 48, + 49, + 50, + 51, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 62, + 63, + 64, + 65, + 66, + 68, + 69, + 71, + 72, + 73, + 75, + 76, + 77, + 79, + 80, + 81, + 83, + 84, + 85, + 87, + 88, + 89, + 90, + 92, + 93, + 94, + 95, + 97, + 98, + 100, + 101, + 102, + 104, + 105, + 107, + 108, + 109, + 111, + 112, + 113, + 115, + 116, + 117, + 119, + 120, + 121, + 122, + 124, + 125, + 126, + 128, + 129, + 130, + 132, + 133, + 134, + 136, + 137, + 138, + 140, + 141, + 142, + 144, + 145, + 146, + 147, + 149, + 150, + 151, + 153, + 154, + 155, + 156, + 158, + 159, + 160, + 161, + 163, + 164, + 165, + 167, + 168, + 169, + 170, + 172, + 173, + 174, + 175, + 176, + 178, + 179, + 180, + 181, + 183, + 184, + 185, + 186, + 187, + 189, + 190, + 191, + 192, + 193, + 194, + 196, + 197, + 198, + 199, + 200, + 201, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 238, + 239, + 240, + 241, + 241, + 242, + 243, + 244, + 244, + 245, + 246, + 247, + 248, + 248, + 249, + 250, + 251, + 251, + 252, + 253, + 254, + 255 + ], + B: [ + 167, + 167, + 166, + 166, + 166, + 165, + 165, + 165, + 164, + 164, + 164, + 163, + 163, + 162, + 162, + 162, + 161, + 161, + 161, + 160, + 160, + 160, + 159, + 159, + 158, + 158, + 157, + 157, + 156, + 155, + 155, + 154, + 154, + 153, + 153, + 152, + 151, + 151, + 150, + 150, + 149, + 149, + 148, + 147, + 147, + 146, + 146, + 145, + 144, + 144, + 143, + 143, + 142, + 141, + 141, + 140, + 139, + 139, + 138, + 137, + 137, + 136, + 135, + 135, + 134, + 133, + 133, + 132, + 131, + 131, + 130, + 130, + 129, + 128, + 128, + 127, + 127, + 126, + 125, + 125, + 124, + 124, + 123, + 123, + 122, + 121, + 121, + 120, + 119, + 119, + 118, + 118, + 117, + 116, + 116, + 116, + 115, + 115, + 114, + 114, + 113, + 113, + 113, + 112, + 112, + 111, + 111, + 110, + 110, + 109, + 109, + 109, + 108, + 108, + 107, + 107, + 106, + 106, + 106, + 106, + 106, + 105, + 105, + 105, + 105, + 105, + 105, + 105, + 104, + 104, + 104, + 104, + 104, + 103, + 103, + 103, + 103, + 103, + 102, + 102, + 102, + 103, + 103, + 103, + 103, + 104, + 104, + 104, + 104, + 104, + 105, + 105, + 105, + 105, + 106, + 106, + 106, + 106, + 106, + 107, + 107, + 107, + 107, + 108, + 108, + 109, + 110, + 111, + 111, + 112, + 113, + 113, + 114, + 115, + 115, + 116, + 117, + 117, + 118, + 119, + 120, + 120, + 121, + 122, + 122, + 123, + 124, + 125, + 126, + 128, + 129, + 130, + 131, + 132, + 134, + 135, + 136, + 137, + 138, + 140, + 141, + 142, + 143, + 144, + 146, + 147, + 148, + 149, + 150, + 152, + 153, + 155, + 157, + 158, + 160, + 162, + 163, + 165, + 167, + 168, + 170, + 172, + 173, + 175, + 177, + 178, + 180, + 182, + 183, + 185, + 187, + 188, + 190, + 193, + 196, + 199, + 201, + 204, + 207, + 210, + 212, + 215, + 218, + 221, + 224, + 226, + 229, + 232, + 235, + 238, + 240, + 243, + 246, + 249, + 252, + 255 + ], + A: [ + 0, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64 + ], + I: [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255 + ] +}; + +// src/cmaps/cividis.json +var cividis_default = { + R: [0, 86, 166, 255], + G: [32, 92, 156, 233], + B: [76, 108, 117, 69], + A: [0, 56, 80, 88], + I: [0, 64, 192, 255] +}; + +// src/cmaps/cool.json +var cool_default = { + R: [0, 0, 0], + G: [127, 196, 254], + B: [255, 255, 255], + A: [0, 64, 128], + I: [0, 128, 255] +}; + +// src/cmaps/copper2.json +var copper2_default = { + R: [0, 61, 122, 183, 244, 255], + G: [0, 41, 81, 122, 163, 255], + B: [0, 25, 51, 76, 102, 255], + A: [0, 25, 51, 71, 102, 128], + I: [0, 51, 102, 153, 204, 255] +}; + +// src/cmaps/copper.json +var copper_default = { + R: [0, 61, 122, 183, 244, 255], + G: [0, 41, 81, 122, 163, 203], + B: [0, 25, 51, 76, 102, 127], + A: [0, 25, 51, 71, 102, 128], + I: [0, 51, 102, 153, 204, 255] +}; + +// src/cmaps/ct_airways.json +var ct_airways_default = { + min: -643, + max: -235, + R: [0, 0, 0], + G: [154, 154, 154], + B: [179, 179, 101], + A: [0, 32, 0], + I: [0, 163, 255] +}; + +// src/cmaps/ct_artery.json +var ct_artery_default = { + min: 114, + max: 800, + R: [0, 255, 255, 255], + G: [0, 0, 129, 255], + B: [0, 0, 0, 255], + A: [0, 64, 88, 228], + I: [0, 80, 160, 255] +}; + +// src/cmaps/ct_bones.json +var ct_bones_default = { + min: 180, + max: 600, + R: [0, 0, 113, 255], + G: [0, 0, 109, 250], + B: [0, 0, 101, 245], + A: [0, 0, 100, 160], + I: [0, 1, 128, 255] +}; + +// src/cmaps/ct_brain_gray.json +var ct_brain_gray_default = { + min: -10, + max: 110, + R: [0, 127, 255], + G: [0, 127, 255], + B: [0, 127, 255], + A: [0, 48, 128], + I: [0, 124, 255] +}; + +// src/cmaps/ct_brain.json +var ct_brain_default = { + min: -10, + max: 110, + R: [0, 199, 255], + G: [0, 127, 255], + B: [0, 127, 255], + A: [0, 48, 128], + I: [0, 124, 255] +}; + +// src/cmaps/ct_cardiac.json +var ct_cardiac_default = { + min: -80, + max: 1e3, + R: [0, 189, 150, 150, 150, 150, 255], + G: [0, 169, 54, 54, 54, 54, 240], + B: [0, 153, 52, 52, 52, 52, 242], + A: [0, 32, 64, 0, 0, 64, 64], + I: [0, 1, 82, 92, 234, 242, 255] +}; + +// src/cmaps/ct_head.json +var ct_head_default = { + min: -590, + max: 600, + R: [0, 241, 241, 248, 248, 178, 178, 232, 255, 255, 255], + G: [0, 156, 156, 222, 222, 36, 36, 51, 255, 255, 255], + B: [0, 130, 130, 169, 169, 24, 24, 37, 255, 255, 255], + A: [0, 8, 0, 0, 0, 64, 64, 0, 0, 222, 222], + I: [0, 2, 3, 64, 122, 142, 172, 182, 252, 253, 255] +}; + +// src/cmaps/ct_kidneys.json +var ct_kidneys_default = { + min: 114, + max: 302, + R: [0, 255, 255], + G: [0, 129, 255], + B: [0, 0, 255], + A: [0, 88, 228], + I: [0, 103, 255] +}; + +// src/cmaps/ct_liver.json +var ct_liver_default = { + min: -23, + max: 246, + R: [0, 44, 255, 255, 255], + G: [0, 128, 90, 255, 255], + B: [0, 0, 70, 0, 255], + A: [0, 0, 82, 184, 228], + I: [0, 64, 131, 196, 255] +}; + +// src/cmaps/ct_muscles.json +var ct_muscles_default = { + min: -100, + max: 246, + R: [0, 128, 159, 255, 255, 255, 255], + G: [0, 0, 56, 90, 0, 255, 255], + B: [0, 0, 41, 70, 0, 0, 255], + A: [0, 63, 105, 135, 167, 184, 228], + I: [0, 100, 128, 155, 180, 209, 255] +}; + +// src/cmaps/ct_scalp.json +var ct_scalp_default = { + min: -590, + max: 600, + R: [0, 241, 241, 248, 248, 178, 232, 255, 255], + G: [0, 156, 156, 222, 222, 36, 51, 255, 255], + B: [0, 130, 130, 169, 169, 24, 37, 255, 255], + A: [0, 63, 105, 135, 167, 184, 228, 228, 228], + I: [0, 1, 52, 127, 137, 162, 172, 252, 255] +}; + +// src/cmaps/ct_skull.json +var ct_skull_default = { + min: 140, + max: 1024, + R: [0, 2, 113, 255], + G: [0, 1, 109, 250], + B: [0, 1, 101, 245], + A: [0, 1, 96, 168], + I: [0, 1, 128, 255] +}; + +// src/cmaps/ct_soft.json +var ct_soft_default = { + min: -923, + max: 679, + R: [0, 0, 0, 0, 0, 255, 255, 255], + G: [154, 154, 154, 154, 0, 0, 254, 255], + B: [179, 179, 179, 179, 0, 0, 0, 255], + A: [0, 3, 8, 0, 0, 10, 15, 20], + I: [0, 30, 62, 88, 170, 200, 232, 255] +}; + +// src/cmaps/ct_soft_tissue.json +var ct_soft_tissue_default = { + min: -10, + max: 110, + R: [0, 199, 255], + G: [0, 127, 255], + B: [0, 127, 255], + A: [0, 48, 128], + I: [0, 124, 255] +}; + +// src/cmaps/ct_surface.json +var ct_surface_default = { + min: -600, + max: 100, + R: [0, 134, 255], + G: [0, 109, 250], + B: [0, 101, 245], + A: [0, 60, 148], + I: [0, 128, 255] +}; + +// src/cmaps/ct_vessels.json +var ct_vessels_default = { + min: 114, + max: 246, + R: [0, 255, 255], + G: [0, 128, 255], + B: [0, 128, 255], + A: [0, 64, 96], + I: [0, 87, 255] +}; + +// src/cmaps/ct_w_contrast.json +var ct_w_contrast_default = { + min: 50, + max: 1e3, + R: [98, 210, 169, 128, 255], + G: [94, 26, 77, 128, 255], + B: [45, 21, 74, 128, 255], + A: [0, 25, 0, 4, 168], + I: [0, 41, 87, 154, 255] +}; + +// src/cmaps/cubehelix.json +var cubehelix_default = { + R: [ + 0, + 13, + 21, + 26, + 27, + 25, + 22, + 21, + 22, + 28, + 39, + 54, + 75, + 98, + 124, + 148, + 171, + 189, + 202, + 210, + 213, + 211, + 206, + 200, + 195, + 193, + 195, + 201, + 211, + 225, + 240, + 255 + ], + G: [ + 0, + 5, + 11, + 20, + 31, + 44, + 58, + 72, + 86, + 99, + 109, + 116, + 120, + 122, + 122, + 122, + 121, + 121, + 124, + 129, + 137, + 147, + 161, + 175, + 190, + 205, + 218, + 229, + 238, + 245, + 251, + 255 + ], + B: [ + 0, + 14, + 30, + 46, + 61, + 71, + 77, + 78, + 75, + 68, + 60, + 52, + 48, + 47, + 53, + 65, + 83, + 105, + 131, + 157, + 183, + 205, + 222, + 235, + 241, + 243, + 242, + 240, + 239, + 240, + 245, + 255 + ], + A: [ + 0, + 4, + 8, + 12, + 17, + 21, + 25, + 29, + 33, + 37, + 41, + 45, + 50, + 54, + 58, + 62, + 66, + 70, + 74, + 78, + 83, + 87, + 91, + 95, + 99, + 103, + 107, + 111, + 116, + 120, + 124, + 128 + ], + I: [ + 0, + 8, + 16, + 25, + 33, + 41, + 49, + 58, + 66, + 74, + 82, + 90, + 99, + 107, + 115, + 123, + 132, + 140, + 148, + 156, + 165, + 173, + 181, + 189, + 197, + 206, + 214, + 222, + 230, + 239, + 247, + 255 + ] +}; + +// src/cmaps/electric_blue.json +var electric_blue_default = { + R: [0, 10, 136, 255], + G: [0, 39, 220, 255], + B: [0, 223, 253, 255], + A: [0, 48, 64, 70], + I: [0, 92, 192, 255] +}; + +// src/cmaps/freesurfer.json +var freesurfer_default = { + R: [ + 0, + 245, + 205, + 120, + 196, + 220, + 230, + 0, + 122, + 236, + 12, + 204, + 42, + 119, + 220, + 103, + 60, + 255, + 165, + 160, + 0, + 245, + 205, + 120, + 196, + 220, + 230, + 0, + 122, + 236, + 13, + 220, + 103, + 255, + 165, + 160, + 0, + 120, + 200, + 255, + 255, + 164, + 164, + 164, + 234, + 0, + 0, + 0, + 0, + 0 + ], + G: [ + 0, + 245, + 62, + 18, + 58, + 248, + 148, + 118, + 186, + 13, + 48, + 182, + 204, + 159, + 216, + 255, + 60, + 165, + 42, + 32, + 200, + 245, + 62, + 18, + 58, + 248, + 148, + 118, + 186, + 13, + 48, + 216, + 255, + 165, + 42, + 32, + 200, + 190, + 70, + 148, + 148, + 108, + 108, + 108, + 169, + 0, + 0, + 0, + 0, + 0 + ], + B: [ + 0, + 245, + 78, + 134, + 250, + 164, + 34, + 14, + 220, + 176, + 255, + 142, + 164, + 176, + 20, + 255, + 60, + 0, + 42, + 240, + 200, + 245, + 78, + 134, + 250, + 164, + 34, + 14, + 220, + 176, + 255, + 20, + 255, + 0, + 42, + 240, + 221, + 150, + 255, + 10, + 10, + 226, + 226, + 226, + 30, + 64, + 112, + 160, + 208, + 255 + ], + A: [ + 0, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64 + ], + I: [ + 0, + 2, + 3, + 4, + 5, + 7, + 8, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 24, + 26, + 28, + 30, + 31, + 41, + 42, + 43, + 44, + 46, + 47, + 49, + 50, + 51, + 52, + 53, + 54, + 58, + 60, + 62, + 63, + 72, + 77, + 78, + 79, + 80, + 81, + 82, + 85, + 251, + 252, + 253, + 254, + 255 + ] +}; + +// src/cmaps/ge_color.json +var ge_color_default = { + R: [0, 0, 128, 255, 255], + G: [0, 128, 0, 128, 255], + B: [0, 125, 255, 0, 255], + A: [0, 32, 64, 96, 128], + I: [0, 63, 128, 192, 255] +}; + +// src/cmaps/gold.json +var gold_default = { + R: [0, 142, 227, 255], + G: [0, 85, 170, 255], + B: [0, 14, 76, 255], + A: [0, 42, 84, 128], + I: [0, 85, 170, 255] +}; + +// src/cmaps/gray.json +var gray_default = { + R: [0, 255], + G: [0, 255], + B: [0, 255], + A: [0, 128], + I: [0, 255] +}; + +// src/cmaps/green.json +var green_default = { + R: [0, 0, 0], + G: [0, 128, 255], + B: [0, 0, 0], + A: [0, 64, 128], + I: [0, 128, 255] +}; + +// src/cmaps/green2cyan.json +var green2cyan_default = { + R: [0, 0, 0], + G: [72, 72, 255], + B: [0, 255, 255], + A: [0, 64, 128], + I: [0, 88, 255] +}; + +// src/cmaps/green2orange.json +var green2orange_default = { + R: [0, 255, 255], + G: [72, 88, 255], + B: [0, 0, 0], + A: [0, 64, 128], + I: [0, 88, 255] +}; + +// src/cmaps/hotiron.json +var hotiron_default = { + R: [0, 255, 255, 255], + G: [0, 0, 126, 255], + B: [0, 0, 0, 255], + A: [0, 64, 96, 128], + I: [0, 128, 191, 255] +}; + +// src/cmaps/hot.json +var hot_default = { + R: [3, 255, 255, 255], + G: [0, 0, 255, 255], + B: [0, 0, 0, 255], + A: [0, 48, 96, 128], + I: [0, 95, 191, 255] +}; + +// src/cmaps/hsv.json +var hsv_default = { + R: [255, 255, 0, 0, 0, 255, 255], + G: [0, 255, 255, 255, 0, 0, 0], + B: [0, 0, 0, 255, 255, 255, 0], + A: [0, 14, 28, 43, 57, 71, 85], + I: [0, 43, 85, 128, 170, 213, 255] +}; + +// src/cmaps/inferno.json +var inferno_default = { + R: [0, 120, 237, 240], + G: [0, 28, 105, 249], + B: [4, 109, 37, 33], + A: [0, 56, 80, 88], + I: [0, 64, 192, 255] +}; + +// src/cmaps/jet.json +var jet_default = { + R: [0, 0, 127, 255, 127], + G: [0, 127, 255, 127, 0], + B: [127, 255, 127, 0, 0], + A: [0, 32, 64, 96, 128], + I: [0, 63, 128, 192, 255] +}; + +// src/cmaps/kry.json +var kry_default = { + R: [0, 255, 255], + G: [0, 0, 255], + B: [0, 0, 0], + A: [0, 64, 64], + I: [0, 86, 255] +}; + +// src/cmaps/linspecer.json +var linspecer_default = { + R: [94, 50, 90, 152, 215, 238, 249, 254, 252, 241, 209, 158], + G: [79, 131, 186, 214, 240, 244, 237, 210, 157, 100, 57, 1], + B: [162, 189, 167, 164, 155, 169, 168, 123, 86, 68, 79, 66], + A: [0, 12, 23, 35, 47, 58, 70, 81, 93, 105, 116, 128], + I: [0, 23, 46, 70, 93, 116, 139, 162, 185, 209, 232, 255] +}; + +// src/cmaps/lipari.json +var lipari_default = { + R: [3, 7, 13, 25, 45, 67, 84, 98, 110, 124, 138, 154, 173, 191, 210, 225, 233, 233, 231, 229, 230, 235, 243, 253], + G: [19, 33, 48, 63, 77, 87, 92, 94, 95, 96, 96, 97, 99, 101, 106, 118, 133, 149, 163, 177, 192, 208, 225, 245], + B: [38, 58, 79, 99, 114, 122, 122, 120, 117, 113, 110, 105, 101, 97, 94, 96, 103, 112, 122, 134, 149, 169, 192, 218], + A: [0, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64], + I: [0, 11, 22, 33, 44, 55, 66, 77, 88, 99, 110, 121, 133, 144, 155, 166, 177, 188, 199, 210, 221, 232, 243, 255] +}; + +// src/cmaps/magma.json +var magma_default = { + R: [0, 148, 183, 223, 247, 252], + G: [0, 44, 55, 74, 112, 253], + B: [4, 128, 121, 104, 92, 191], + A: [0, 44, 53, 64, 75, 107], + I: [0, 107, 128, 154, 179, 255] +}; + +// src/cmaps/mako.json +var mako_default = { + R: [11, 59, 55, 222], + G: [4, 45, 165, 245], + B: [5, 91, 172, 229], + A: [0, 23, 70, 107], + I: [0, 56, 167, 255] +}; + +// src/cmaps/navia.json +var navia_default = { + R: [3, 5, 6, 8, 12, 19, 28, 36, 42, 48, 54, 61, 68, 76, 86, 96, 110, 129, 154, 181, 205, 224, 239, 252], + G: [19, 32, 44, 58, 72, 86, 98, 108, 116, 122, 128, 134, 141, 149, 157, 167, 178, 191, 204, 216, 225, 232, 239, 244], + B: [39, 60, 82, 104, 123, 137, 144, 145, 142, 138, 134, 130, 126, 121, 116, 110, 105, 104, 112, 131, 155, 178, 198, 217], + A: [0, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64], + I: [0, 11, 22, 33, 44, 55, 66, 77, 88, 99, 110, 121, 133, 144, 155, 166, 177, 188, 199, 210, 221, 232, 243, 255] +}; + +// src/cmaps/nih.json +var nih_default = { + R: [0, 85, 0, 0, 0, 0, 0, 0, 85, 255, 255, 255, 172], + G: [0, 0, 0, 0, 85, 170, 255, 255, 255, 255, 85, 0, 0], + B: [0, 170, 85, 255, 255, 170, 170, 0, 85, 0, 0, 0, 0], + A: [0, 5, 10, 21, 26, 32, 37, 42, 48, 53, 64, 72, 85], + I: [0, 15, 31, 63, 79, 95, 111, 127, 143, 159, 191, 217, 255] +}; + +// src/cmaps/plasma.json +var plasma_default = { + R: [13, 156, 237, 240], + G: [8, 23, 121, 249], + B: [135, 158, 83, 33], + A: [0, 56, 80, 88], + I: [0, 64, 192, 255] +}; + +// src/cmaps/random.json +var random_default = { + R: [ + 208, + 71, + 33, + 192, + 32, + 195, + 208, + 173, + 233, + 202, + 25, + 210, + 145, + 89, + 87, + 245, + 246, + 38, + 3, + 25, + 57, + 167, + 245, + 86, + 227, + 208, + 81, + 64, + 90, + 199, + 140, + 48, + 212, + 180, + 70, + 120, + 9, + 192, + 245, + 177, + 65, + 157, + 9, + 193, + 100, + 181, + 125, + 145, + 62, + 8, + 108, + 36, + 140, + 237, + 242, + 248, + 161, + 189, + 41, + 114, + 65, + 121, + 97, + 50, + 238, + 149, + 44, + 214, + 124, + 167, + 40, + 167, + 127, + 178, + 231, + 30, + 173, + 244, + 193, + 203, + 204, + 238, + 139, + 135, + 71, + 234, + 234, + 217, + 66, + 14, + 129, + 19, + 97, + 165, + 112, + 244, + 35, + 73, + 192, + 12, + 149, + 71, + 33, + 192, + 32, + 195, + 208, + 173, + 233, + 202, + 25, + 210, + 145, + 89, + 87, + 245, + 246, + 38, + 3, + 25, + 57, + 167, + 245, + 86, + 227, + 208, + 81, + 64, + 90, + 199, + 140, + 48, + 212, + 180, + 70, + 120, + 9, + 192, + 245, + 177, + 65, + 157, + 9, + 193, + 100, + 181, + 125, + 145, + 62, + 8, + 108, + 36, + 140, + 237, + 242, + 248, + 161, + 189, + 41, + 114, + 65, + 121, + 97, + 50, + 238, + 149, + 44, + 214, + 124, + 167, + 40, + 167, + 127, + 178, + 231, + 30, + 173, + 244, + 193, + 203, + 204, + 238, + 139, + 135, + 71, + 234, + 234, + 217, + 66, + 14, + 129, + 19, + 97, + 165, + 112, + 244, + 35, + 73, + 192, + 12, + 149, + 71, + 33, + 192, + 32, + 195, + 208, + 173, + 233, + 202, + 25, + 210, + 145, + 89, + 87, + 245, + 246, + 38, + 3, + 25, + 57, + 167, + 245, + 86, + 227, + 208, + 81, + 64, + 90, + 199, + 140, + 48, + 212, + 180, + 70, + 120, + 9, + 192, + 245, + 177, + 65, + 157, + 9, + 193, + 100, + 181, + 125, + 145, + 62, + 8, + 108, + 36, + 140, + 237, + 242, + 248 + ], + G: [ + 182, + 46, + 78, + 199, + 79, + 89, + 41, + 208, + 135, + 20, + 154, + 35, + 21, + 43, + 230, + 113, + 191, + 147, + 208, + 37, + 28, + 27, + 86, + 203, + 25, + 209, + 148, + 187, + 139, + 111, + 48, + 102, + 76, + 110, + 106, + 130, + 37, + 160, + 34, + 222, + 90, + 165, + 245, + 222, + 102, + 47, + 19, + 130, + 4, + 232, + 137, + 211, + 240, + 11, + 140, + 21, + 42, + 22, + 241, + 61, + 99, + 115, + 199, + 166, + 114, + 190, + 204, + 60, + 233, + 66, + 115, + 230, + 125, + 103, + 203, + 125, + 13, + 176, + 94, + 131, + 39, + 198, + 167, + 124, + 67, + 175, + 254, + 1, + 15, + 198, + 62, + 237, + 159, + 31, + 218, + 58, + 244, + 47, + 61, + 67, + 94, + 46, + 78, + 199, + 79, + 89, + 41, + 208, + 135, + 20, + 154, + 35, + 21, + 43, + 230, + 113, + 191, + 147, + 208, + 37, + 28, + 27, + 86, + 203, + 25, + 209, + 148, + 187, + 139, + 111, + 48, + 102, + 76, + 110, + 106, + 130, + 37, + 160, + 34, + 222, + 90, + 165, + 245, + 222, + 102, + 47, + 19, + 130, + 4, + 232, + 137, + 211, + 240, + 11, + 140, + 21, + 42, + 22, + 241, + 61, + 99, + 115, + 199, + 166, + 114, + 190, + 204, + 60, + 233, + 66, + 115, + 230, + 125, + 103, + 203, + 125, + 13, + 176, + 94, + 131, + 39, + 198, + 167, + 124, + 67, + 175, + 254, + 1, + 15, + 198, + 62, + 237, + 159, + 31, + 218, + 58, + 244, + 47, + 61, + 67, + 94, + 46, + 78, + 199, + 79, + 89, + 41, + 208, + 135, + 20, + 154, + 35, + 21, + 43, + 230, + 113, + 191, + 147, + 208, + 37, + 28, + 27, + 86, + 203, + 25, + 209, + 148, + 187, + 139, + 111, + 48, + 102, + 76, + 110, + 106, + 130, + 37, + 160, + 34, + 222, + 90, + 165, + 245, + 222, + 102, + 47, + 19, + 130, + 4, + 232, + 137, + 211, + 240, + 11, + 140, + 21 + ], + B: [ + 191, + 154, + 43, + 10, + 207, + 204, + 164, + 231, + 136, + 58, + 239, + 30, + 147, + 230, + 101, + 111, + 150, + 35, + 128, + 57, + 252, + 79, + 173, + 120, + 25, + 126, + 81, + 85, + 8, + 7, + 122, + 237, + 190, + 152, + 246, + 182, + 130, + 219, + 67, + 76, + 167, + 178, + 235, + 250, + 28, + 61, + 186, + 250, + 199, + 67, + 58, + 50, + 86, + 182, + 108, + 77, + 89, + 112, + 59, + 125, + 226, + 50, + 205, + 227, + 125, + 128, + 104, + 27, + 59, + 66, + 53, + 133, + 159, + 203, + 97, + 125, + 139, + 159, + 158, + 7, + 215, + 47, + 140, + 226, + 223, + 231, + 44, + 110, + 184, + 61, + 233, + 47, + 67, + 148, + 22, + 120, + 173, + 156, + 117, + 181, + 94, + 154, + 43, + 10, + 207, + 204, + 164, + 231, + 136, + 58, + 239, + 30, + 147, + 230, + 101, + 111, + 150, + 35, + 128, + 57, + 252, + 79, + 173, + 120, + 25, + 126, + 81, + 85, + 8, + 7, + 122, + 237, + 190, + 152, + 246, + 182, + 130, + 219, + 67, + 76, + 167, + 178, + 235, + 250, + 28, + 61, + 186, + 250, + 199, + 67, + 58, + 50, + 86, + 182, + 108, + 77, + 89, + 112, + 59, + 125, + 226, + 50, + 205, + 227, + 125, + 128, + 104, + 27, + 59, + 66, + 53, + 133, + 159, + 203, + 97, + 125, + 139, + 159, + 158, + 7, + 215, + 47, + 140, + 226, + 223, + 231, + 44, + 110, + 184, + 61, + 233, + 47, + 67, + 148, + 22, + 120, + 173, + 156, + 117, + 181, + 94, + 154, + 43, + 10, + 207, + 204, + 164, + 231, + 136, + 58, + 239, + 30, + 147, + 230, + 101, + 111, + 150, + 35, + 128, + 57, + 252, + 79, + 173, + 120, + 25, + 126, + 81, + 85, + 8, + 7, + 122, + 237, + 190, + 152, + 246, + 182, + 130, + 219, + 67, + 76, + 167, + 178, + 235, + 250, + 28, + 61, + 186, + 250, + 199, + 67, + 58, + 50, + 86, + 182, + 108, + 77 + ], + A: [ + 0, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64 + ], + I: [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255 + ] +}; + +// src/cmaps/red.json +var red_default = { + R: [0, 128, 255], + G: [0, 0, 0], + B: [0, 0, 0], + A: [0, 64, 128], + I: [0, 128, 255] +}; + +// src/cmaps/redyell.json +var redyell_default = { + R: [192, 224, 255], + G: [1, 128, 255], + B: [0, 0, 0], + A: [0, 64, 128], + I: [0, 128, 255] +}; + +// src/cmaps/rocket.json +var rocket_default = { + R: [3, 112, 144, 188, 236, 246, 255], + G: [5, 31, 29, 22, 76, 158, 250], + B: [26, 87, 91, 86, 62, 117, 235], + A: [0, 30, 38, 49, 67, 85, 107], + I: [0, 73, 92, 118, 160, 205, 255] +}; + +// src/cmaps/surface.json +var surface_default = { + R: [1, 240, 255], + G: [1, 128, 255], + B: [1, 128, 255], + A: [0, 76, 128], + I: [0, 153, 255] +}; + +// src/cmaps/thermal.json +var thermal_default = { + R: [0, 5, 18, 34, 53, 72, 90, 107, 126, 144, 161, 178, 194, 209, 222, 233, 242, 248, 251, 251, 249, 244, 241, 252], + G: [0, 4, 10, 11, 9, 11, 17, 23, 30, 36, 43, 50, 59, 70, 83, 98, 117, 136, 157, 177, 199, 220, 240, 254], + B: [3, 24, 50, 76, 96, 106, 109, 110, 108, 104, 97, 89, 79, 67, 55, 42, 26, 12, 6, 22, 47, 79, 121, 164], + A: [0, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64], + I: [0, 11, 22, 33, 44, 55, 66, 77, 88, 99, 110, 121, 133, 144, 155, 166, 177, 188, 199, 210, 221, 232, 243, 255] +}; + +// src/cmaps/turbo.json +var turbo_default = { + R: [48, 48, 64, 70, 65, 25, 132, 195, 244, 254, 218, 122], + G: [18, 18, 64, 107, 150, 226, 255, 241, 199, 158, 57, 4], + B: [59, 59, 162, 227, 255, 187, 81, 52, 58, 47, 7, 3], + A: [0, 22, 26, 30, 34, 43, 52, 57, 63, 67, 77, 86], + I: [0, 1, 16, 32, 49, 83, 118, 140, 164, 181, 219, 255] +}; + +// src/cmaps/violet.json +var violet_default = { + R: [0, 128, 255], + G: [0, 0, 0], + B: [0, 128, 255], + A: [0, 64, 128], + I: [0, 128, 255] +}; + +// src/cmaps/viridis.json +var viridis_default = { + R: [68, 49, 53, 253], + G: [1, 104, 183, 231], + B: [84, 142, 121, 37], + A: [0, 56, 80, 88], + I: [0, 64, 192, 255] +}; + +// src/cmaps/warm.json +var warm_default = { + R: [255, 255, 255], + G: [127, 196, 254], + B: [0, 0, 0], + A: [0, 64, 128], + I: [0, 128, 255] +}; + +// src/cmaps/winter.json +var winter_default = { + R: [0, 0, 0], + G: [0, 128, 255], + B: [255, 196, 128], + A: [0, 64, 128], + I: [0, 128, 255] +}; + +// src/cmaps/x_rain.json +var x_rain_default = { + R: [3, 64, 0, 0, 255, 255, 255], + G: [0, 0, 0, 255, 255, 192, 3], + B: [0, 32, 48, 56, 64, 96, 128], + A: [0, 8, 16, 24, 32, 52, 80], + I: [0, 32, 64, 96, 160, 192, 255] +}; + +// src/cmaps/afni_blues_inv.json +var afni_blues_inv_default = { + min: 0, + max: 0, + R: [0, 37], + G: [242, 0], + B: [255, 255], + A: [0, 64], + I: [0, 255] +}; + +// src/cmaps/afni_reds_inv.json +var afni_reds_inv_default = { + R: [255, 255], + G: [255, 11], + B: [0, 0], + A: [0, 64], + I: [0, 255] +}; + +// src/cmaps/roi_i256.json +var roi_i256_default = { + min: 0, + max: 0, + R: [ + 65, + 10, + 223, + 120, + 216, + 207, + 251, + 93, + 252, + 217, + 21, + 253, + 131, + 165, + 173, + 143, + 144, + 217, + 86, + 89, + 63, + 254, + 172, + 1, + 142, + 107, + 42, + 78, + 221, + 8, + 222, + 71, + 127, + 126, + 167, + 33, + 104, + 2, + 208, + 216, + 0, + 251, + 7, + 105, + 2, + 101, + 248, + 190, + 253, + 62, + 255, + 224, + 166, + 37, + 110, + 138, + 45, + 34, + 6, + 37, + 69, + 201, + 43, + 122, + 199, + 37, + 173, + 194, + 103, + 211, + 75, + 159, + 96, + 4, + 239, + 98, + 110, + 193, + 253, + 166, + 40, + 255, + 48, + 130, + 140, + 243, + 101, + 9, + 177, + 220, + 133, + 32, + 4, + 81, + 48, + 48, + 210, + 109, + 60, + 132, + 1, + 119, + 1, + 159, + 247, + 33, + 212, + 187, + 253, + 144, + 196, + 254, + 168, + 79, + 64, + 196, + 39, + 97, + 73, + 173, + 104, + 216, + 217, + 43, + 101, + 119, + 254, + 5, + 237, + 103, + 203, + 122, + 57, + 87, + 251, + 164, + 19, + 75, + 200, + 2, + 252, + 150, + 66, + 0, + 255, + 157, + 23, + 254, + 55, + 16, + 240, + 161, + 69, + 253, + 207, + 195, + 5, + 60, + 255, + 251, + 200, + 217, + 134, + 123, + 253, + 180, + 27, + 246, + 130, + 136, + 250, + 232, + 4, + 125, + 140, + 22, + 253, + 255, + 13, + 180, + 123, + 61, + 254, + 111, + 10, + 185, + 76, + 192, + 255, + 223, + 186, + 61, + 198, + 5, + 172, + 13, + 83, + 172, + 171, + 6, + 23, + 73, + 134, + 133, + 109, + 61, + 213, + 55, + 57, + 132, + 36, + 209, + 2, + 144, + 1, + 253, + 68, + 155, + 3, + 160, + 2, + 77, + 121, + 70, + 67, + 176, + 223, + 131, + 4, + 162, + 232, + 255, + 150, + 94, + 235, + 191, + 207, + 10, + 246, + 0, + 225, + 4, + 209, + 116, + 57, + 112, + 172, + 253, + 1, + 6, + 92, + 227, + 73, + 62, + 135, + 223 + ], + G: [ + 162, + 50, + 112, + 245, + 4, + 124, + 176, + 243, + 56, + 125, + 183, + 139, + 182, + 68, + 189, + 4, + 225, + 10, + 20, + 223, + 7, + 46, + 31, + 193, + 225, + 250, + 219, + 41, + 2, + 100, + 83, + 181, + 34, + 150, + 72, + 223, + 168, + 248, + 80, + 253, + 7, + 117, + 214, + 2, + 248, + 10, + 3, + 59, + 179, + 160, + 90, + 244, + 146, + 4, + 207, + 4, + 125, + 255, + 96, + 100, + 1, + 208, + 130, + 51, + 116, + 181, + 236, + 53, + 244, + 5, + 165, + 28, + 181, + 86, + 96, + 42, + 254, + 1, + 134, + 194, + 214, + 92, + 41, + 204, + 137, + 86, + 207, + 3, + 143, + 3, + 100, + 239, + 164, + 94, + 65, + 251, + 131, + 244, + 173, + 57, + 143, + 107, + 217, + 53, + 210, + 0, + 148, + 250, + 45, + 198, + 81, + 40, + 61, + 218, + 252, + 88, + 171, + 0, + 248, + 24, + 248, + 4, + 41, + 100, + 187, + 46, + 208, + 145, + 43, + 168, + 121, + 46, + 175, + 250, + 125, + 107, + 233, + 112, + 207, + 231, + 174, + 215, + 53, + 9, + 43, + 153, + 52, + 124, + 128, + 65, + 210, + 147, + 255, + 147, + 63, + 200, + 148, + 254, + 0, + 179, + 241, + 42, + 239, + 2, + 230, + 8, + 82, + 135, + 87, + 16, + 3, + 87, + 86, + 151, + 254, + 8, + 255, + 86, + 53, + 19, + 7, + 192, + 171, + 201, + 253, + 247, + 197, + 103, + 251, + 126, + 0, + 149, + 54, + 183, + 61, + 126, + 79, + 113, + 10, + 103, + 184, + 75, + 11, + 195, + 222, + 136, + 149, + 131, + 8, + 99, + 240, + 177, + 252, + 255, + 198, + 16, + 7, + 68, + 178, + 66, + 191, + 150, + 73, + 26, + 211, + 109, + 78, + 209, + 240, + 254, + 1, + 166, + 247, + 131, + 2, + 0, + 167, + 127, + 133, + 10, + 43, + 99, + 235, + 3, + 214, + 142, + 176, + 82, + 132, + 38, + 10, + 249, + 255, + 215, + 44, + 81 + ], + B: [ + 176, + 182, + 248, + 37, + 117, + 35, + 96, + 69, + 32, + 152, + 108, + 20, + 237, + 250, + 2, + 89, + 141, + 216, + 111, + 251, + 211, + 149, + 10, + 44, + 214, + 103, + 31, + 251, + 3, + 32, + 252, + 246, + 97, + 1, + 219, + 167, + 197, + 4, + 36, + 116, + 206, + 118, + 106, + 43, + 205, + 204, + 114, + 69, + 127, + 205, + 87, + 80, + 41, + 251, + 145, + 204, + 253, + 161, + 247, + 1, + 149, + 9, + 43, + 253, + 97, + 72, + 136, + 161, + 171, + 181, + 26, + 255, + 108, + 80, + 218, + 214, + 231, + 255, + 84, + 31, + 109, + 4, + 218, + 3, + 217, + 36, + 68, + 85, + 241, + 39, + 221, + 2, + 240, + 2, + 173, + 42, + 206, + 5, + 110, + 46, + 103, + 27, + 212, + 184, + 2, + 207, + 246, + 45, + 116, + 72, + 110, + 253, + 38, + 105, + 248, + 159, + 243, + 81, + 192, + 93, + 141, + 145, + 24, + 157, + 234, + 131, + 57, + 178, + 62, + 75, + 65, + 176, + 148, + 40, + 253, + 66, + 76, + 240, + 51, + 154, + 17, + 251, + 139, + 253, + 207, + 9, + 114, + 49, + 200, + 254, + 96, + 73, + 138, + 118, + 204, + 102, + 137, + 89, + 145, + 161, + 4, + 112, + 66, + 234, + 147, + 178, + 212, + 205, + 185, + 11, + 203, + 131, + 2, + 250, + 118, + 169, + 1, + 185, + 154, + 53, + 171, + 197, + 61, + 175, + 249, + 96, + 15, + 254, + 95, + 5, + 222, + 75, + 246, + 194, + 2, + 61, + 180, + 25, + 133, + 165, + 15, + 233, + 59, + 35, + 221, + 140, + 109, + 7, + 114, + 255, + 198, + 0, + 115, + 168, + 252, + 23, + 242, + 80, + 75, + 142, + 137, + 255, + 12, + 182, + 68, + 201, + 4, + 111, + 37, + 228, + 83, + 248, + 24, + 192, + 249, + 5, + 54, + 223, + 160, + 122, + 160, + 114, + 145, + 119, + 252, + 31, + 253, + 250, + 10, + 214, + 8, + 47, + 0, + 142, + 222, + 70 + ], + A: [ + 0, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64 + ], + I: [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255 + ] +}; + +// src/colortables.ts +var ColorTables = class { + /** + * Sets cluts to alphabetically sorted cmaps + */ + constructor() { + __publicField(this, "gamma", 1); + __publicField(this, "version", 0.1); + __publicField(this, "cluts", {}); + const cmapKeys = Object.keys(cmaps_exports); + const cmapsSorted = cmapKeys.filter((k) => !k.startsWith("$")).sort(new Intl.Collator("en").compare); + for (const key of cmapsSorted) { + this.cluts[key] = cmaps_exports[key]; + } + } + addColormap(key, cmap) { + this.cluts[key] = cmap; + } + colormaps() { + return Object.keys(this.cluts); + } + // for backward compatibility: prior to v0.34 "colormaps" used to be "colorMaps" + colorMaps() { + return this.colormaps(); + } + // returns key name if it exists, otherwise returns default "gray" + colormapFromKey(name) { + let cmap = this.cluts[name]; + if (cmap !== void 0) { + return cmap; + } + cmap = this.cluts[name.toLowerCase()]; + if (cmap !== void 0) { + return cmap; + } + if (name.length > 0) { + log.warn("No color map named " + name); + } + return { + min: 0, + max: 0, + R: [0, 255], + G: [0, 255], + B: [0, 255], + A: [0, 255], + I: [0, 255] + }; + } + // not included in public docs + colormap(key = "", isInvert = false) { + const cmap = this.colormapFromKey(key); + return this.makeLut(cmap.R, cmap.G, cmap.B, cmap.A, cmap.I, isInvert); + } + makeLabelLut(cm, alphaFill = 255, maxIdx = Infinity) { + if (cm.R === void 0 || cm.G === void 0 || cm.B === void 0) { + throw new Error(`Invalid colormap table: ${cm}`); + } + const nLabels = cm.R.length; + const idxs = cm.I ?? [...Array(nLabels).keys()]; + let hasInvalid = false; + for (let i = 0; i < idxs.length; i++) { + if (idxs[i] > maxIdx) { + hasInvalid = true; + idxs[i] = maxIdx; + } + } + if (hasInvalid) { + log.warn(`Some colormap indices clamped to match label range.`); + } + if (nLabels !== cm.G.length || nLabels !== cm.B.length || nLabels !== idxs.length) { + throw new Error( + `colormap does not make sense: ${cm} Rs ${cm.R.length} Gs ${cm.G.length} Bs ${cm.B.length} Is ${idxs.length}` + ); + } + let As = new Uint8ClampedArray(nLabels).fill(alphaFill); + As[0] = 0; + if (cm.A !== void 0) { + As = Uint8ClampedArray.from(cm.A); + } + const mnIdx = Math.min(...idxs); + const mxIdx = Math.max(...idxs); + const nLabelsDense = mxIdx - mnIdx + 1; + const lut = new Uint8ClampedArray(nLabelsDense * 4).fill(0); + for (let i = 0; i < nLabels; i++) { + let k = (idxs[i] - mnIdx) * 4; + lut[k++] = cm.R[i]; + lut[k++] = cm.G[i]; + lut[k++] = cm.B[i]; + lut[k++] = As[i]; + } + const cmap = { + lut, + min: mnIdx, + max: mxIdx + }; + if (cm.labels) { + const nL = cm.labels.length; + if (nL === nLabelsDense) { + cmap.labels = cm.labels; + } else if (nL === nLabels) { + cmap.labels = Array(nLabelsDense).fill("?"); + for (let i = 0; i < nLabels; i++) { + const idx = idxs[i]; + cmap.labels[idx] = cm.labels[i]; + } + } + } + return cmap; + } + async makeLabelLutFromUrl(name, alphaFill = 255, maxIdx = Infinity) { + const response = await fetch(name); + const cm = await response.json(); + return this.makeLabelLut(cm, alphaFill, maxIdx); + } + // not included in public docs + // The drawing colormap is a variant of the label colormap with precisely 256 colors + makeDrawLut(name) { + let cmap = typeof name === "object" ? name : cmaps_exports[name]; + if (cmap === void 0) { + log.warn("colormap undefined ", name); + cmap = this.colormapFromKey(""); + } + const cm = this.makeLabelLut(cmap, 255); + if (cm.labels === void 0) { + cm.labels = []; + } + if (cm.labels.length < 256) { + const j = cm.labels.length; + for (let i = j; i < 256; i++) { + cm.labels.push(i.toString()); + } + } + const lut = new Uint8ClampedArray(256 * 4); + let k = 0; + for (let i = 0; i < 256; i++) { + lut[k++] = 255; + lut[k++] = 0; + lut[k++] = 0; + lut[k++] = 255; + } + lut[3] = 0; + const explicitLUTbytes = Math.min(cm.lut.length, 256 * 4); + if (explicitLUTbytes > 0) { + for (let i = 0; i < explicitLUTbytes; i++) { + lut[i] = cm.lut[i]; + } + } + return { + lut, + labels: cm.labels + }; + } + // not included in public docs + makeLut(Rsi, Gsi, Bsi, Asi, Isi, isInvert) { + const nIdx = Rsi.length; + const Rs = [...Rsi]; + const Gs = [...Gsi]; + const Bs = [...Bsi]; + if (!Isi) { + Isi = new Array(nIdx); + for (let i = 0; i < nIdx; i++) { + Isi[i] = i / (nIdx - 1) * 255; + } + } + if (!Asi) { + Asi = new Array(nIdx).fill(64); + Asi[0] = 0; + } + let As = Uint8ClampedArray.from(Asi); + let Is = Uint8ClampedArray.from(Isi); + if (isInvert) { + for (let i = 0; i < nIdx; i++) { + Rs[i] = Rsi[nIdx - 1 - i]; + Gs[i] = Gsi[nIdx - 1 - i]; + Bs[i] = Bsi[nIdx - 1 - i]; + As[i] = 255 - Asi[nIdx - 1 - i]; + Is[i] = 255 - Isi[nIdx - 1 - i]; + } + } + const lut = new Uint8ClampedArray(256 * 4); + if (typeof Is === "undefined") { + Is = new Uint8ClampedArray(nIdx).fill(0); + for (let i = 0; i < nIdx; i++) { + Is[i] = Math.round(i * 255 / (nIdx - 1)); + } + } + if (typeof As === "undefined") { + As = new Uint8ClampedArray(nIdx).fill(64); + As[0] = 0; + } + for (let i = 0; i < nIdx - 1; i++) { + const idxLo = Is[i]; + let idxHi = Is[i + 1]; + if (i === 0 && idxLo !== 0) { + log.warn("colormap issue: indices expected to start with 0 not ", idxLo); + } + if (i === Is.length - 2 && idxHi !== 255) { + log.warn("padding colormap: indices expected end with 255 not ", idxHi); + idxHi = 255; + } + const idxRng = idxHi - idxLo; + let k = idxLo * 4; + for (let j = idxLo; j <= idxHi; j++) { + const f = (j - idxLo) / idxRng; + lut[k++] = Rs[i] + f * (Rs[i + 1] - Rs[i]); + lut[k++] = Gs[i] + f * (Gs[i + 1] - Gs[i]); + lut[k++] = Bs[i] + f * (Bs[i + 1] - Bs[i]); + lut[k++] = As[i] + f * (As[i + 1] - As[i]); + } + } + if (this.gamma === 1) { + return lut; + } + for (let i = 0; i < 255 * 4; i++) { + if (i % 4 === 3) { + continue; + } + lut[i] = Math.pow(lut[i] / 255, 1 / this.gamma) * 255; + } + return lut; + } +}; +var cmapper = new ColorTables(); + +// src/nvmesh-utilities.ts +var NVMeshUtilities = class { + static getClusterBoundaryU8(u82, faces) { + const border = new Array(u82.length).fill(false); + const binary = new Array(u82.length).fill(false); + for (let i = 0; i < u82.length; i++) { + if (u82[i] > 0) { + binary[i] = true; + } + } + const nTri = faces.length / 3; + let j = 0; + for (let i = 0; i < nTri; i++) { + const v0 = faces[j]; + const v1 = faces[j + 1]; + const v2 = faces[j + 2]; + j += 3; + if (binary[v0] === binary[v1] && binary[v0] === binary[v2] && binary[v1] === binary[v2]) { + continue; + } + border[v0] = true; + border[v1] = true; + border[v2] = true; + } + return border; + } + static async gzip(data) { + const stream = new CompressionStream("gzip"); + const writer = stream.writable.getWriter(); + writer.write(data).catch(console.error); + const closePromise = writer.close().catch(console.error); + const response = new Response(stream.readable); + const result = new Uint8Array(await response.arrayBuffer()); + await closePromise; + return result; + } + static createMZ3(vertices, indices, compress = false, colors = null) { + const magic = 23117; + const isRGBA = colors instanceof Uint8Array && colors.length === vertices.length / 3 * 4; + const attr = isRGBA ? 7 : 3; + const nface = indices.length / 3; + const nvert = vertices.length / 3; + const nskip = 0; + const headerSize = 16; + const indexSize = nface * 3 * 4; + const vertexSize = nvert * 3 * 4; + const colorSize = isRGBA ? colors.length : 0; + const totalSize = headerSize + indexSize + vertexSize + colorSize; + const buffer = new ArrayBuffer(totalSize); + const writer = new DataView(buffer); + writer.setUint16(0, magic, true); + writer.setUint16(2, attr, true); + writer.setUint32(4, nface, true); + writer.setUint32(8, nvert, true); + writer.setUint32(12, nskip, true); + let offset = headerSize; + new Uint32Array(buffer, offset, indices.length).set(indices); + offset += indexSize; + new Float32Array(buffer, offset, vertices.length).set(vertices); + if (isRGBA) { + offset += vertexSize; + new Uint8Array(buffer, offset, colors.length).set(colors); + } + if (compress) { + throw new Error("Call async createMZ3Async() for compression"); + } + return buffer; + } + static async createMZ3Async(vertices, indices, compress = false, colors = null) { + const buffer = this.createMZ3(vertices, indices, compress, colors); + if (compress) { + return await this.gzip(new Uint8Array(buffer)); + } + return buffer; + } + static createOBJ(vertices, indices) { + let objContent = ""; + for (let i = 0; i < vertices.length; i += 3) { + objContent += `v ${vertices[i]} ${vertices[i + 1]} ${vertices[i + 2]} +`; + } + for (let i = 0; i < indices.length; i += 3) { + objContent += `f ${indices[i] + 1} ${indices[i + 1] + 1} ${indices[i + 2] + 1} +`; + } + const encoder = new TextEncoder(); + const arrayBuffer = encoder.encode(objContent).buffer; + return arrayBuffer; + } + static createSTL(vertices, indices) { + const numTriangles = indices.length / 3; + const bufferLength = 84 + numTriangles * 50; + const arrayBuffer = new ArrayBuffer(bufferLength); + const dataView = new DataView(arrayBuffer); + for (let i = 0; i < 80; i++) { + dataView.setUint8(i, 0); + } + dataView.setUint32(80, numTriangles, true); + let offset = 84; + for (let i = 0; i < indices.length; i += 3) { + const i0 = indices[i] * 3; + const i1 = indices[i + 1] * 3; + const i2 = indices[i + 2] * 3; + dataView.setFloat32(offset, 0, true); + dataView.setFloat32(offset + 4, 0, true); + dataView.setFloat32(offset + 8, 0, true); + offset += 12; + dataView.setFloat32(offset, vertices[i0], true); + dataView.setFloat32(offset + 4, vertices[i0 + 1], true); + dataView.setFloat32(offset + 8, vertices[i0 + 2], true); + offset += 12; + dataView.setFloat32(offset, vertices[i1], true); + dataView.setFloat32(offset + 4, vertices[i1 + 1], true); + dataView.setFloat32(offset + 8, vertices[i1 + 2], true); + offset += 12; + dataView.setFloat32(offset, vertices[i2], true); + dataView.setFloat32(offset + 4, vertices[i2 + 1], true); + dataView.setFloat32(offset + 8, vertices[i2 + 2], true); + offset += 12; + dataView.setUint16(offset, 0, true); + offset += 2; + } + return arrayBuffer; + } + static downloadArrayBuffer(buffer, filename) { + const blob = new Blob([buffer], { type: "application/octet-stream" }); + const url = URL.createObjectURL(blob); + const a = document.createElement("a"); + a.href = url; + a.download = filename; + document.body.appendChild(a); + a.style.display = "none"; + a.click(); + setTimeout(() => { + document.body.removeChild(a); + URL.revokeObjectURL(url); + }, 0); + } + static async saveMesh(vertices, indices, filename = ".mz3", compress = false) { + let buff = new ArrayBuffer(0); + if (/\.obj$/i.test(filename)) { + buff = this.createOBJ(vertices, indices); + } else if (/\.stl$/i.test(filename)) { + buff = this.createSTL(vertices, indices); + } else { + if (!/\.mz3$/i.test(filename)) { + filename += ".mz3"; + } + buff = await this.createMZ3Async(vertices, indices, compress); + } + if (filename.length > 4) { + this.downloadArrayBuffer(buff, filename); + } + return buff; + } + static getClusterBoundary(rgba8, faces) { + const rgba32 = new Uint32Array(rgba8.buffer); + const border = new Array(rgba32.length).fill(false); + const nTri = faces.length / 3; + let j = 0; + for (let i = 0; i < nTri; i++) { + const v0 = faces[j]; + const v1 = faces[j + 1]; + const v2 = faces[j + 2]; + j += 3; + if (rgba32[v0] === rgba32[v1] && rgba32[v0] === rgba32[v2] && rgba32[v1] === rgba32[v2]) { + continue; + } + border[v0] = true; + border[v1] = true; + border[v2] = true; + } + return border; + } + // return spatial extremes for vertices + static getExtents(pts) { + if (!ArrayBuffer.isView(pts) && !Array.isArray(pts) || pts.length < 3) { + return { mxDx: 0, extentsMin: 0, extentsMax: 0 }; + } + let mxDx = 0; + const mn = vec3_exports.fromValues(pts[0], pts[1], pts[2]); + const mx = vec3_exports.fromValues(pts[0], pts[1], pts[2]); + for (let i = 0; i < pts.length; i += 3) { + const v = vec3_exports.fromValues(pts[i], pts[i + 1], pts[i + 2]); + mxDx = Math.max(mxDx, vec3_exports.len(v)); + vec3_exports.min(mn, mn, v); + vec3_exports.max(mx, mx, v); + } + const extentsMin = [mn[0], mn[1], mn[2]]; + const extentsMax = [mx[0], mx[1], mx[2]]; + return { mxDx, extentsMin, extentsMax }; + } + // determine vector orthogonal to plane defined by triangle + // triangle winding determines front/back face + static generateNormals(pts, tris) { + const normal = []; + let ctr; + const normalsDataLength = pts.length; + let qx; + let qy; + let qz; + let px; + let py; + let pz; + let index1; + let index2; + let index3; + const norms = new Float32Array(normalsDataLength); + const numIndices = tris.length; + for (ctr = 0; ctr < numIndices; ctr += 3) { + index1 = tris[ctr] * 3; + index2 = tris[ctr + 1] * 3; + index3 = tris[ctr + 2] * 3; + const p1 = [pts[index1], pts[index1 + 1], pts[index1 + 2]]; + const p2 = [pts[index2], pts[index2 + 1], pts[index2 + 2]]; + const p3 = [pts[index3], pts[index3 + 1], pts[index3 + 2]]; + qx = p2[0] - p1[0]; + qy = p2[1] - p1[1]; + qz = p2[2] - p1[2]; + px = p3[0] - p1[0]; + py = p3[1] - p1[1]; + pz = p3[2] - p1[2]; + normal[0] = py * qz - pz * qy; + normal[1] = pz * qx - px * qz; + normal[2] = px * qy - py * qx; + norms[index1] += normal[0]; + norms[index1 + 1] += normal[1]; + norms[index1 + 2] += normal[2]; + norms[index2] += normal[0]; + norms[index2 + 1] += normal[1]; + norms[index2 + 2] += normal[2]; + norms[index3] += normal[0]; + norms[index3 + 1] += normal[1]; + norms[index3 + 2] += normal[2]; + } + for (ctr = 0; ctr < normalsDataLength; ctr += 3) { + normal[0] = -1 * norms[ctr]; + normal[1] = -1 * norms[ctr + 1]; + normal[2] = -1 * norms[ctr + 2]; + let len4 = normal[0] * normal[0] + normal[1] * normal[1] + normal[2] * normal[2]; + if (len4 > 0) { + len4 = 1 / Math.sqrt(len4); + normal[0] *= len4; + normal[1] *= len4; + normal[2] *= len4; + } + norms[ctr] = normal[0]; + norms[ctr + 1] = normal[1]; + norms[ctr + 2] = normal[2]; + } + return norms; + } +}; + +// src/nvutilities.ts +var import_array_equal = __toESM(require_array_equal(), 1); +var _dataView, _index, _localFiles, _centralDirectories, _endOfCentralDirectory; +var Zip = class { + constructor(arrayBuffer) { + __privateAdd(this, _dataView); + __privateAdd(this, _index, 0); + __privateAdd(this, _localFiles, []); + __privateAdd(this, _centralDirectories, []); + __privateAdd(this, _endOfCentralDirectory); + __privateSet(this, _dataView, new DataView(arrayBuffer)); + this.read(); + } + async extract(entry) { + const buffer = new Uint8Array(__privateGet(this, _dataView).buffer.slice(entry.startsAt, entry.startsAt + entry.compressedSize)); + if (entry.compressionMethod === 0) { + return buffer; + } else if (entry.compressionMethod === 8) { + const stream = new DecompressionStream("deflate-raw"); + const writer = stream.writable.getWriter(); + writer.write(buffer).catch(console.error); + const closePromise = writer.close().catch(console.error); + const response = new Response(stream.readable); + const result = new Uint8Array(await response.arrayBuffer()); + await closePromise; + return result; + } + throw new Error(`Unsupported compression method: ${entry.compressionMethod}`); + } + read() { + while (!__privateGet(this, _endOfCentralDirectory) && __privateGet(this, _index) < __privateGet(this, _dataView).byteLength) { + const signature = __privateGet(this, _dataView).getUint32(__privateGet(this, _index), true); + if (signature === 67324752) { + const entry = this.readLocalFile(__privateGet(this, _index)); + entry.extract = this.extract.bind(this, entry); + __privateGet(this, _localFiles).push(entry); + const hasDataDescriptor = (entry.generalPurpose & 8) !== 0; + entry.startsAt = __privateGet(this, _index) + 30 + entry.fileNameLength + entry.extraLength; + if (entry.compressedSize === 0 && hasDataDescriptor) { + let scanIndex = entry.startsAt; + while (scanIndex + 20 <= __privateGet(this, _dataView).byteLength) { + const possibleSignature = __privateGet(this, _dataView).getUint32(scanIndex, true); + if (possibleSignature === 134695760) { + const nextPK = __privateGet(this, _dataView).getUint16(scanIndex + 16, true) === 19280; + if (nextPK) { + scanIndex += 4; + break; + } + } + scanIndex++; + } + entry.crc = __privateGet(this, _dataView).getUint32(scanIndex, true); + entry.compressedSize = __privateGet(this, _dataView).getUint32(scanIndex + 4, true); + entry.uncompressedSize = __privateGet(this, _dataView).getUint32(scanIndex + 8, true); + __privateSet(this, _index, scanIndex + 12); + } else { + __privateSet(this, _index, entry.startsAt + entry.compressedSize); + } + } else if (signature === 33639248) { + const entry = this.readCentralDirectory(__privateGet(this, _index)); + __privateGet(this, _centralDirectories).push(entry); + __privateSet(this, _index, __privateGet(this, _index) + (46 + entry.fileNameLength + entry.extraLength + entry.fileCommentLength)); + } else if (signature === 101010256) { + __privateSet(this, _endOfCentralDirectory, this.readEndCentralDirectory(__privateGet(this, _index))); + break; + } else if (signature === 101075792) { + __privateSet(this, _endOfCentralDirectory, this.readEndCentralDirectory64(__privateGet(this, _index))); + break; + } else { + console.error(`Unexpected ZIP signature 0x${signature.toString(16).padStart(8, "0")} at index ${__privateGet(this, _index)}`); + break; + } + } + } + readLocalFile(offset) { + let compressedSize = __privateGet(this, _dataView).getUint32(offset + 18, true); + let uncompressedSize = __privateGet(this, _dataView).getUint32(offset + 22, true); + const fileNameLength = __privateGet(this, _dataView).getUint16(offset + 26, true); + const extraLength = __privateGet(this, _dataView).getUint16(offset + 28, true); + const extraOffset = offset + 30 + fileNameLength; + const extra = this.readString(extraOffset, extraLength); + if (compressedSize === 4294967295 && uncompressedSize === 4294967295) { + let zip64Offset = extraOffset; + let foundZip64 = false; + while (zip64Offset < extraOffset + extraLength - 4) { + const fieldSignature = __privateGet(this, _dataView).getUint16(zip64Offset, true); + const fieldLength = __privateGet(this, _dataView).getUint16(zip64Offset + 2, true); + zip64Offset += 4; + if (fieldSignature === 1) { + if (fieldLength >= 16) { + uncompressedSize = Number(__privateGet(this, _dataView).getBigUint64(zip64Offset, true)); + zip64Offset += 8; + compressedSize = Number(__privateGet(this, _dataView).getBigUint64(zip64Offset, true)); + foundZip64 = true; + break; + } else { + throw new Error( + `ZIP64 extra field found but is too small (expected at least 16 bytes, got ${fieldLength}).` + ); + } + } + zip64Offset += fieldLength; + } + if (!foundZip64) { + throw new Error("ZIP64 format missing extra field with signature 0x0001."); + } + } + return { + signature: this.readString(offset, 4), + version: __privateGet(this, _dataView).getUint16(offset + 4, true), + generalPurpose: __privateGet(this, _dataView).getUint16(offset + 6, true), + compressionMethod: __privateGet(this, _dataView).getUint16(offset + 8, true), + lastModifiedTime: __privateGet(this, _dataView).getUint16(offset + 10, true), + lastModifiedDate: __privateGet(this, _dataView).getUint16(offset + 12, true), + crc: __privateGet(this, _dataView).getUint32(offset + 14, true), + compressedSize, + uncompressedSize, + fileNameLength, + extraLength, + fileName: this.readString(offset + 30, fileNameLength), + extra: this.readString(offset + 30 + fileNameLength, extraLength) + }; + } + readCentralDirectory(offset) { + return { + versionCreated: __privateGet(this, _dataView).getUint16(offset + 4, true), + versionNeeded: __privateGet(this, _dataView).getUint16(offset + 6, true), + fileNameLength: __privateGet(this, _dataView).getUint16(offset + 28, true), + extraLength: __privateGet(this, _dataView).getUint16(offset + 30, true), + fileCommentLength: __privateGet(this, _dataView).getUint16(offset + 32, true), + diskNumber: __privateGet(this, _dataView).getUint16(offset + 34, true), + internalAttributes: __privateGet(this, _dataView).getUint16(offset + 36, true), + externalAttributes: __privateGet(this, _dataView).getUint32(offset + 38, true), + offset: __privateGet(this, _dataView).getUint32(offset + 42, true), + comments: this.readString(offset + 46, __privateGet(this, _dataView).getUint16(offset + 32, true)) + }; + } + readEndCentralDirectory(offset) { + const commentLength = __privateGet(this, _dataView).getUint16(offset + 20, true); + return { + numberOfDisks: __privateGet(this, _dataView).getUint16(offset + 4, true), + centralDirectoryStartDisk: __privateGet(this, _dataView).getUint16(offset + 6, true), + numberCentralDirectoryRecordsOnThisDisk: __privateGet(this, _dataView).getUint16(offset + 8, true), + numberCentralDirectoryRecords: __privateGet(this, _dataView).getUint16(offset + 10, true), + centralDirectorySize: __privateGet(this, _dataView).getUint32(offset + 12, true), + centralDirectoryOffset: __privateGet(this, _dataView).getUint32(offset + 16, true), + commentLength, + comment: this.readString(offset + 22, commentLength) + }; + } + readEndCentralDirectory64(offset) { + const commentLength = Number(__privateGet(this, _dataView).getBigUint64(offset + 0, true)); + return { + numberOfDisks: __privateGet(this, _dataView).getUint32(offset + 16, true), + centralDirectoryStartDisk: __privateGet(this, _dataView).getUint32(offset + 20, true), + numberCentralDirectoryRecordsOnThisDisk: Number(__privateGet(this, _dataView).getBigUint64(offset + 24, true)), + numberCentralDirectoryRecords: Number(__privateGet(this, _dataView).getBigUint64(offset + 32, true)), + centralDirectorySize: Number(__privateGet(this, _dataView).getBigUint64(offset + 40, true)), + centralDirectoryOffset: Number(__privateGet(this, _dataView).getBigUint64(offset + 48, true)), + commentLength, + comment: "" + }; + } + readString(offset, length4) { + return Array.from({ length: length4 }, (_, i) => String.fromCharCode(__privateGet(this, _dataView).getUint8(offset + i))).join(""); + } + get entries() { + return __privateGet(this, _localFiles); + } +}; +_dataView = new WeakMap(); +_index = new WeakMap(); +_localFiles = new WeakMap(); +_centralDirectories = new WeakMap(); +_endOfCentralDirectory = new WeakMap(); +var NVUtilities = class _NVUtilities { + static arrayBufferToBase64(arrayBuffer) { + const bytes = new Uint8Array(arrayBuffer); + return _NVUtilities.uint8tob64(bytes); + } + static async decompress(data) { + const format = data[0] === 31 && data[1] === 139 && data[2] === 8 ? "gzip" : data[0] === 120 && (data[1] === 1 || data[1] === 94 || data[1] === 156 || data[1] === 218) ? "deflate" : "deflate-raw"; + const stream = new DecompressionStream(format); + const writer = stream.writable.getWriter(); + writer.write(data).catch(console.error); + const closePromise = writer.close().catch(console.error); + const response = new Response(stream.readable); + const result = new Uint8Array(await response.arrayBuffer()); + await closePromise; + return result; + } + static async decompressToBuffer(data) { + const decompressed = await _NVUtilities.decompress(data); + return decompressed.buffer.slice(decompressed.byteOffset, decompressed.byteOffset + decompressed.byteLength); + } + static async readMatV4(buffer, isReplaceDots = false) { + let len4 = buffer.byteLength; + if (len4 < 40) { + throw new Error("File too small to be MAT v4: bytes = " + buffer.byteLength); + } + let reader = new DataView(buffer); + let magic = reader.getUint16(0, true); + let _buffer = buffer; + if (magic === 35615 || magic === 8075) { + const raw = await this.decompress(new Uint8Array(buffer)); + reader = new DataView(raw.buffer); + magic = reader.getUint16(0, true); + _buffer = raw.buffer; + len4 = _buffer.byteLength; + } + const textDecoder = new TextDecoder("utf-8"); + const bytes = new Uint8Array(_buffer); + let pos = 0; + const mat = {}; + function getTensDigit(v) { + return Math.floor(v / 10) % 10; + } + function readArray(tagDataType, tagBytesStart, tagBytesEnd) { + const byteArray = new Uint8Array(bytes.subarray(tagBytesStart, tagBytesEnd)); + if (tagDataType === 1) { + return new Float32Array(byteArray.buffer); + } + if (tagDataType === 2) { + return new Int32Array(byteArray.buffer); + } + if (tagDataType === 3) { + return new Int16Array(byteArray.buffer); + } + if (tagDataType === 4) { + return new Uint16Array(byteArray.buffer); + } + if (tagDataType === 5) { + return new Uint8Array(byteArray.buffer); + } + return new Float64Array(byteArray.buffer); + } + function readTag2() { + const mtype = reader.getUint32(pos, true); + const mrows = reader.getUint32(pos + 4, true); + const ncols = reader.getUint32(pos + 8, true); + const imagf = reader.getUint32(pos + 12, true); + const namlen = reader.getUint32(pos + 16, true); + pos += 20; + if (imagf !== 0) { + throw new Error("Matlab V4 reader does not support imaginary numbers"); + } + const tagArrayItems = mrows * ncols; + if (tagArrayItems < 1) { + throw new Error("mrows * ncols must be greater than one"); + } + const byteArray = new Uint8Array(bytes.subarray(pos, pos + namlen)); + let tagName = textDecoder.decode(byteArray).trim().replaceAll("\0", ""); + if (isReplaceDots) { + tagName = tagName.replaceAll(".", "_"); + } + const tagDataType = getTensDigit(mtype); + let tagBytesPerItem = 8; + if (tagDataType >= 1 && tagDataType <= 2) { + tagBytesPerItem = 4; + } else if (tagDataType >= 3 && tagDataType <= 4) { + tagBytesPerItem = 2; + } else if (tagDataType === 5) { + tagBytesPerItem = 1; + } else if (tagDataType !== 0) { + throw new Error("impossible Matlab v4 datatype"); + } + pos += namlen; + if (mtype > 50) { + throw new Error("Does not appear to be little-endian V4 Matlab file"); + } + const posEnd = pos + tagArrayItems * tagBytesPerItem; + mat[tagName] = readArray(tagDataType, pos, posEnd); + pos = posEnd; + } + while (pos + 20 < len4) { + readTag2(); + } + return mat; + } + // readMatV4() + static b64toUint8(base64) { + const binaryString = atob(base64); + const length4 = binaryString.length; + const bytes = new Uint8Array(length4); + for (let i = 0; i < length4; i++) { + bytes[i] = binaryString.charCodeAt(i); + } + return bytes; + } + /* + https://gist.github.com/jonleighton/958841 + MIT LICENSE + Copyright 2011 Jon Leighton + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + static uint8tob64(bytes) { + let base64 = ""; + const encodings = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + const byteLength = bytes.byteLength; + const byteRemainder = byteLength % 3; + const mainLength = byteLength - byteRemainder; + let a, b, c, d; + let chunk; + for (let i = 0; i < mainLength; i = i + 3) { + chunk = bytes[i] << 16 | bytes[i + 1] << 8 | bytes[i + 2]; + a = (chunk & 16515072) >> 18; + b = (chunk & 258048) >> 12; + c = (chunk & 4032) >> 6; + d = chunk & 63; + base64 += encodings[a] + encodings[b] + encodings[c] + encodings[d]; + } + if (byteRemainder === 1) { + chunk = bytes[mainLength]; + a = (chunk & 252) >> 2; + b = (chunk & 3) << 4; + base64 += encodings[a] + encodings[b] + "=="; + } else if (byteRemainder === 2) { + chunk = bytes[mainLength] << 8 | bytes[mainLength + 1]; + a = (chunk & 64512) >> 10; + b = (chunk & 1008) >> 4; + c = (chunk & 15) << 2; + base64 += encodings[a] + encodings[b] + encodings[c] + "="; + } + return base64; + } + // https://stackoverflow.com/questions/34156282/how-do-i-save-json-to-local-text-file + static download(content, fileName, contentType) { + const a = document.createElement("a"); + const contentArray = Array.isArray(content) ? content : [content]; + const file = new Blob(contentArray, { type: contentType }); + a.href = URL.createObjectURL(file); + a.download = fileName; + a.click(); + } + static readFileAsync(file) { + return new Promise((resolve2, reject) => { + const reader = new FileReader(); + reader.onload = () => { + resolve2(reader.result); + }; + reader.onerror = reject; + reader.readAsArrayBuffer(file); + }); + } + static blobToBase64(blob) { + return new Promise((resolve2) => { + const reader = new FileReader(); + reader.onloadend = () => resolve2(reader.result); + reader.readAsDataURL(blob); + }); + } + static async decompressBase64String(base64) { + const compressed = atob(base64); + const compressedBuffer = new ArrayBuffer(compressed.length); + const compressedView = new Uint8Array(compressedBuffer); + for (let i = 0; i < compressed.length; i++) { + compressedView[i] = compressed.charCodeAt(i); + } + return _NVUtilities.decompressArrayBuffer(compressedView); + } + static async compressToBase64String(string) { + const buf = await _NVUtilities.compressStringToArrayBuffer(string); + return _NVUtilities.uint8tob64(new Uint8Array(buf)); + } + /** + * Converts a string into a Uint8Array for use with compression/decompression methods (101arrowz/fflate: MIT License) + * @param str The string to encode + * @param latin1 Whether or not to interpret the data as Latin-1. This should + * not need to be true unless decoding a binary string. + * @returns The string encoded in UTF-8/Latin-1 binary + */ + static strToU8(str6, latin1) { + if (latin1) { + const ar2 = new Uint8Array(str6.length); + for (let i = 0; i < str6.length; ++i) { + ar2[i] = str6.charCodeAt(i); + } + return ar2; + } + const l = str6.length; + const slc2 = (v, s, e) => { + if (s == null || s < 0) { + s = 0; + } + if (e == null || e > v.length) { + e = v.length; + } + return new Uint8Array(v.subarray(s, e)); + }; + let ar = new Uint8Array(str6.length + (str6.length >> 1)); + let ai = 0; + const w = (v) => { + ar[ai++] = v; + }; + for (let i = 0; i < l; ++i) { + if (ai + 5 > ar.length) { + const n = new Uint8Array(ai + 8 + (l - i << 1)); + n.set(ar); + ar = n; + } + let c = str6.charCodeAt(i); + if (c < 128 || latin1) { + w(c); + } else if (c < 2048) { + w(192 | c >> 6); + w(128 | c & 63); + } else if (c > 55295 && c < 57344) { + c = 65536 + (c & 1023 << 10) | str6.charCodeAt(++i) & 1023; + w(240 | c >> 18); + w(128 | c >> 12 & 63); + w(128 | c >> 6 & 63); + w(128 | c & 63); + } else { + c = 65536 + (c & 1023 << 10) | str6.charCodeAt(++i) & 1023; + w(240 | c >> 18); + w(128 | c >> 12 & 63); + w(128 | c >> 6 & 63); + w(128 | c & 63); + } + } + return slc2(ar, 0, ai); + } + static async compress(data, format = "gzip") { + const stream = new CompressionStream(format); + const writer = stream.writable.getWriter(); + writer.write(data).catch(console.error); + const closePromise = writer.close().catch(console.error); + const response = new Response(stream.readable); + const result = await response.arrayBuffer(); + await closePromise; + return result; + } + static async compressStringToArrayBuffer(input) { + const uint8Array = this.strToU8(input); + return await this.compress(uint8Array); + } + static isArrayBufferCompressed(buffer) { + if (buffer && buffer.byteLength) { + const arr = new Uint8Array(buffer); + const magicNumber = arr[0] << 8 | arr[1]; + return magicNumber === 8075; + } else { + return false; + } + } + /** + * Converts a Uint8Array to a string (101arrowz/fflate: MIT License) + * @param dat The data to decode to string + * @param latin1 Whether or not to interpret the data as Latin-1. This should + * not need to be true unless encoding to binary string. + * @returns The original UTF-8/Latin-1 string + */ + static strFromU8(dat, latin1) { + if (latin1) { + let r = ""; + for (let i = 0; i < dat.length; i += 16384) { + r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384)); + } + return r; + } else { + const slc2 = (v, s2, e) => { + if (s2 == null || s2 < 0) { + s2 = 0; + } + if (e == null || e > v.length) { + e = v.length; + } + return new Uint8Array(v.subarray(s2, e)); + }; + const dutf8 = (d) => { + for (let r2 = "", i = 0; ; ) { + let c = d[i++]; + const eb = (c > 127) + (c > 223) + (c > 239); + if (i + eb > d.length) { + return { s: r2, r: slc2(d, i - 1) }; + } + if (!eb) { + r2 += String.fromCharCode(c); + } else if (eb === 3) { + c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | d[i++] & 63) - 65536; + r2 += String.fromCharCode(55296 | c >> 10, 56320 | c & 1023); + } else if (eb & 1) { + r2 += String.fromCharCode((c & 31) << 6 | d[i++] & 63); + } else { + r2 += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | d[i++] & 63); + } + } + }; + const { s, r } = dutf8(dat); + if (r.length) { + throw new Error("Unexpected trailing bytes in UTF-8 decoding"); + } + return s; + } + } + static async decompressArrayBuffer(buffer) { + const decompressed = await this.decompress(new Uint8Array(buffer)); + return this.strFromU8(decompressed); + } + static arraysAreEqual(a, b) { + return (0, import_array_equal.default)(a, b); + } + /** + * Generate a pre-filled number array. + * + * @param start - start value + * @param stop - stop value + * @param step - step value + * @returns filled number array + */ + static range(start, stop, step) { + return Array.from({ length: (stop - start) / step + 1 }, (_, i) => start + i * step); + } + /** + * convert spherical AZIMUTH, ELEVATION to Cartesian + * @param azimuth - azimuth number + * @param elevation - elevation number + * @returns the converted [x, y, z] coordinates + * @example + * xyz = NVUtilities.sph2cartDeg(42, 42) + */ + static sph2cartDeg(azimuth, elevation) { + const Phi = -elevation * (Math.PI / 180); + const Theta = (azimuth - 90) % 360 * (Math.PI / 180); + const ret = [Math.cos(Phi) * Math.cos(Theta), Math.cos(Phi) * Math.sin(Theta), Math.sin(Phi)]; + const len4 = Math.sqrt(ret[0] * ret[0] + ret[1] * ret[1] + ret[2] * ret[2]); + if (len4 <= 0) { + return ret; + } + ret[0] /= len4; + ret[1] /= len4; + ret[2] /= len4; + return ret; + } + static vox2mm(XYZ, mtx) { + const sform = mat4_exports.clone(mtx); + mat4_exports.transpose(sform, sform); + const pos = vec4_exports.fromValues(XYZ[0], XYZ[1], XYZ[2], 1); + vec4_exports.transformMat4(pos, pos, sform); + const pos3 = vec3_exports.fromValues(pos[0], pos[1], pos[2]); + return pos3; + } +}; + +// src/nvmesh-loaders.ts +var utiltiesLogger = log; +var NVMeshLoaders = class _NVMeshLoaders { + // read undocumented AFNI tract.niml format streamlines + static readTRACT(buffer) { + const len4 = buffer.byteLength; + if (len4 < 20) { + throw new Error("File too small to be niml.tract: bytes = " + len4); + } + const reader = new DataView(buffer); + const bytes = new Uint8Array(buffer); + let pos = 0; + function readStr() { + while (pos < len4 && bytes[pos] !== 60) { + pos++; + } + const startPos = pos; + while (pos < len4 && bytes[pos] !== 62) { + pos++; + } + pos++; + if (pos - startPos < 1) { + return ""; + } + return new TextDecoder().decode(buffer.slice(startPos, pos - 1)).trim(); + } + let line = readStr(); + function readNumericTag(TagName) { + const pos2 = line.indexOf(TagName); + if (pos2 < 0) { + return 0; + } + const spos = line.indexOf('"', pos2) + 1; + const epos = line.indexOf('"', spos); + const str6 = line.slice(spos, epos); + return parseInt(str6); + } + const n_tracts = readNumericTag("N_tracts="); + if (!line.startsWith(" ValuesArray (entries for that group) + * @param groups - ValuesArray describing groups; groups[i].id defines the ordering + * @returns ValuesArray - one entry per tag where vals is the concatenation of each group's vals in groups[] order + * + * @throws Error when: + * - groups is empty or missing + * - any group in groups is missing from dpgMap + * - any group contains duplicate entries for a tag + * - tag coverage differs between groups (missing tag in any group) + * - any entry has invalid/unconvertible vals + */ + static assembleDpgFromMap(dpgMap, groups) { + if (!Array.isArray(groups) || groups.length === 0) { + throw new Error('assembleDpgFromMap: "groups" is empty or missing; cannot assemble dpg.'); + } + for (let gi = 0; gi < groups.length; gi++) { + const gid = String(groups[gi].id); + if (!dpgMap[gid]) { + throw new Error(`assembleDpgFromMap: missing dpgMap entry for group "${gid}".`); + } + if (!Array.isArray(dpgMap[gid])) { + throw new Error(`assembleDpgFromMap: dpgMap["${gid}"] is not an array.`); + } + } + const firstGroupId = String(groups[0].id); + const firstEntries = dpgMap[firstGroupId]; + const tagOrder = []; + const tagSet = /* @__PURE__ */ new Set(); + for (const e of firstEntries) { + if (!e || typeof e.id !== "string") { + throw new Error(`assembleDpgFromMap: invalid entry in group "${firstGroupId}".`); + } + if (tagSet.has(e.id)) { + throw new Error(`assembleDpgFromMap: duplicate tag "${e.id}" in group "${firstGroupId}".`); + } + tagSet.add(e.id); + tagOrder.push(e.id); + } + if (tagSet.size === 0) { + throw new Error(`assembleDpgFromMap: no tags found in group "${firstGroupId}".`); + } + for (let gi = 1; gi < groups.length; gi++) { + const gid = String(groups[gi].id); + const entries = dpgMap[gid]; + const idsSeen = /* @__PURE__ */ new Map(); + for (const e of entries) { + if (!e || typeof e.id !== "string") { + throw new Error(`assembleDpgFromMap: invalid entry in group "${gid}".`); + } + idsSeen.set(e.id, (idsSeen.get(e.id) || 0) + 1); + } + for (const [id, count] of idsSeen.entries()) { + if (count > 1) { + throw new Error(`assembleDpgFromMap: multiple entries for tag "${id}" in group "${gid}".`); + } + } + if (idsSeen.size !== tagSet.size) { + throw new Error( + `assembleDpgFromMap: tag coverage mismatch for group "${gid}". Expected ${tagSet.size} tags but found ${idsSeen.size}.` + ); + } + for (const t of tagSet) { + if (!idsSeen.has(t)) { + throw new Error(`assembleDpgFromMap: group "${gid}" missing tag "${t}".`); + } + } + } + const result = []; + for (const tag of tagOrder) { + const perGroupArrays = []; + let totalLen = 0; + for (let gi = 0; gi < groups.length; gi++) { + const gid = String(groups[gi].id); + const entries = dpgMap[gid]; + const matches = entries.filter((e) => e.id === tag); + if (matches.length === 0) { + throw new Error(`assembleDpgFromMap: missing tag "${tag}" for group "${gid}".`); + } + if (matches.length > 1) { + throw new Error(`assembleDpgFromMap: multiple entries for tag "${tag}" in group "${gid}".`); + } + const entry = matches[0]; + if (entry.vals instanceof Float32Array) { + perGroupArrays.push(entry.vals); + totalLen += entry.vals.length; + } else { + try { + const conv = Float32Array.from(entry.vals); + perGroupArrays.push(conv); + totalLen += conv.length; + } catch (err2) { + throw new Error(`assembleDpgFromMap: invalid vals for tag "${tag}" in group "${gid}".`); + } + } + } + const merged = new Float32Array(totalLen); + let off = 0; + for (const arr of perGroupArrays) { + merged.set(arr, off); + off += arr.length; + } + result.push({ + id: tag, + vals: merged + // Note: global_min/global_max/cal_min/cal_max are not computed here. + // If you want to propagate or compute them, add logic to compute per-tag aggregated values. + }); + } + return result; + } + // read TRX format tractogram + // https://github.com/tee-ar-ex/trx-spec/blob/master/specifications.md + static async readTRX(buffer) { + function decodeFloat16(binary) { + "use strict"; + const exponent = (binary & 31744) >> 10; + const fraction = binary & 1023; + return (binary >> 15 ? -1 : 1) * (exponent ? exponent === 31 ? fraction ? NaN : Infinity : Math.pow(2, exponent - 15) * (1 + fraction / 1024) : 6103515625e-14 * (fraction / 1024)); + } + let noff = 0; + let npt = 0; + let pts = new Float32Array([]); + const offsetPt0 = []; + const dpgMap = {}; + const groups = []; + const dps = []; + const dpv = []; + let header = []; + let isOverflowUint64 = false; + const zip = new Zip(buffer); + for (let i = 0; i < zip.entries.length; i++) { + const entry = zip.entries[i]; + if (entry.uncompressedSize === 0) { + continue; + } + const parts = entry.fileName.split("/"); + const fname = parts.slice(-1)[0]; + if (fname.startsWith(".")) { + continue; + } + const dname = parts.slice(-3)[0]; + const pname = parts.slice(-2)[0]; + const tag = fname.split(".")[0]; + const data = await entry.extract(); + if (fname.includes("header.json")) { + const jsonString = new TextDecoder().decode(data); + header = JSON.parse(jsonString); + continue; + } + let nval = 0; + let vals = []; + if (fname.endsWith(".uint64") || fname.endsWith(".int64")) { + nval = data.length / 8; + vals = new Uint32Array(nval); + const u32 = new Uint32Array(data.buffer); + let j = 0; + for (let i2 = 0; i2 < nval; i2++) { + vals[i2] = u32[j]; + if (u32[j + 1] !== 0) { + isOverflowUint64 = true; + } + j += 2; + } + } else if (fname.endsWith(".uint32")) { + vals = new Uint32Array(data.buffer); + } else if (fname.endsWith(".uint16")) { + vals = new Uint16Array(data.buffer); + } else if (fname.endsWith(".uint8")) { + vals = new Uint8Array(data.buffer); + } else if (fname.endsWith(".int32")) { + vals = new Int32Array(data.buffer); + } else if (fname.endsWith(".int16")) { + vals = new Int16Array(data.buffer); + } else if (fname.endsWith(".int8")) { + vals = new Int8Array(data.buffer); + } else if (fname.endsWith(".float64")) { + vals = new Float64Array(data.buffer); + } else if (fname.endsWith(".float32")) { + vals = new Float32Array(data.buffer); + } else if (fname.endsWith(".float16")) { + nval = data.length / 2; + vals = new Float32Array(nval); + const u162 = new Uint16Array(data.buffer); + const lut = new Float32Array(65536); + for (let i2 = 0; i2 < 65536; i2++) { + lut[i2] = decodeFloat16(i2); + } + for (let i2 = 0; i2 < nval; i2++) { + vals[i2] = lut[u162[i2]]; + } + } else { + continue; + } + nval = vals.length; + if (pname.includes("groups")) { + groups.push({ + id: tag, + vals: Float32Array.from(vals.slice()) + }); + continue; + } + if (dname.includes("dpg")) { + const key = String(pname); + if (!dpgMap[key]) { + dpgMap[key] = []; + } + dpgMap[key].push({ + id: tag, + vals: Float32Array.from(vals.slice()) + }); + continue; + } + if (pname.includes("dpv")) { + dpv.push({ + id: tag, + vals: Float32Array.from(vals.slice()) + }); + continue; + } + if (pname.includes("dps")) { + dps.push({ + id: tag, + vals: Float32Array.from(vals.slice()) + }); + continue; + } + if (fname.startsWith("offsets.")) { + noff = nval; + for (let i2 = 0; i2 < nval; i2++) { + offsetPt0[i2] = vals[i2]; + } + } + if (fname.startsWith("positions.3.")) { + npt = nval; + pts = new Float32Array(vals); + } + } + if (noff === 0 || npt === 0) { + throw new Error("Failure reading TRX format (no offsets or points)."); + } + if (isOverflowUint64) { + throw new Error("Too many vertices: JavaScript does not support 64 bit integers"); + } + let dpg = []; + if (groups.length > 0 && dpgMap && Object.keys(dpgMap).length > 0) { + dpg = this.assembleDpgFromMap(dpgMap, groups); + } + offsetPt0[noff] = npt / 3; + return { + pts, + offsetPt0: new Uint32Array(offsetPt0), + dpg, + dps, + dpv, + groups, + header + }; + } + // readTRX() + // issue1426 MRtrix data per streamline as ASCII text + static readTXT(buffer, n_count = 0) { + const text = new TextDecoder("utf-8").decode(buffer); + const lines = text.split(/\r?\n|\r/).filter((l) => l.trim().length > 0); + if (n_count <= 0) { + n_count = lines.length; + } + const vals = new Float32Array(n_count); + for (let i = 0; i < n_count && i < lines.length; i++) { + const v = parseFloat(lines[i].trim()); + vals[i] = Number.isFinite(v) ? v : 0; + } + return vals; + } + // read mrtrix tsf format Track Scalar Files - these are are DPV + // https://mrtrix.readthedocs.io/en/dev/getting_started/image_data.html#track-scalar-file-format-tsf + static readTSF(buffer, n_vert = 0) { + const vals = new Float32Array(n_vert); + const len4 = buffer.byteLength; + if (len4 < 20) { + throw new Error("File too small to be TSF: bytes = " + len4); + } + const bytes = new Uint8Array(buffer); + let pos = 0; + function readStr() { + while (pos < len4 && bytes[pos] === 10) { + pos++; + } + const startPos = pos; + while (pos < len4 && bytes[pos] !== 10) { + pos++; + } + pos++; + if (pos - startPos < 1) { + return ""; + } + return new TextDecoder().decode(buffer.slice(startPos, pos - 1)); + } + let line = readStr(); + if (!line.includes("mrtrix track scalars")) { + throw new Error("Not a valid TSF file"); + } + let offset = -1; + while (pos < len4 && !line.includes("END")) { + line = readStr(); + if (line.toLowerCase().startsWith("file:")) { + offset = parseInt(line.split(" ").pop()); + } + if (line.toLowerCase().startsWith("datatype:") && !line.endsWith("Float32LE")) { + throw new Error("Only supports TSF files with Float32LE"); + } + } + if (offset < 20) { + throw new Error("Not a valid TSF file (missing file offset)"); + } + pos = offset; + const reader = new DataView(buffer); + let npt = 0; + while (pos + 4 <= len4 && npt < n_vert) { + const ptx = reader.getFloat32(pos, true); + pos += 4; + if (!isFinite(ptx)) { + if (!isNaN(ptx)) { + break; + } + } else { + vals[npt++] = ptx; + } + } + return vals; + } + // readTSF + // read mrtrix tck format streamlines + // https://mrtrix.readthedocs.io/en/latest/getting_started/image_data.html#tracks-file-format-tck + static readTCK(buffer) { + const len4 = buffer.byteLength; + if (len4 < 20) { + throw new Error("File too small to be TCK: bytes = " + len4); + } + const bytes = new Uint8Array(buffer); + let pos = 0; + function readStr() { + while (pos < len4 && bytes[pos] === 10) { + pos++; + } + const startPos = pos; + while (pos < len4 && bytes[pos] !== 10) { + pos++; + } + pos++; + if (pos - startPos < 1) { + return ""; + } + return new TextDecoder().decode(buffer.slice(startPos, pos - 1)); + } + let line = readStr(); + if (!line.includes("mrtrix tracks")) { + throw new Error("Not a valid TCK file"); + } + let offset = -1; + while (pos < len4 && !line.includes("END")) { + line = readStr(); + if (line.toLowerCase().startsWith("file:")) { + offset = parseInt(line.split(" ").pop()); + } + } + if (offset < 20) { + throw new Error("Not a valid TCK file (missing file offset)"); + } + pos = offset; + const reader = new DataView(buffer); + let npt = 0; + let offsetPt0 = new Uint32Array(len4 / (4 * 4)); + let noffset = 0; + let npt3 = 0; + let pts = new Float32Array(len4 / 4); + offsetPt0[0] = 0; + while (pos + 12 < len4) { + const ptx = reader.getFloat32(pos, true); + pos += 4; + const pty = reader.getFloat32(pos, true); + pos += 4; + const ptz = reader.getFloat32(pos, true); + pos += 4; + if (!isFinite(ptx)) { + offsetPt0[noffset++] = npt; + if (!isNaN(ptx)) { + break; + } + } else { + pts[npt3++] = ptx; + pts[npt3++] = pty; + pts[npt3++] = ptz; + npt++; + } + } + pts = pts.slice(0, npt3); + offsetPt0 = offsetPt0.slice(0, noffset); + return { + pts, + offsetPt0 + }; + } + // readTCK() + // not included in public docs + // read trackvis trk format streamlines + // http://trackvis.org/docs/?subsect=fileformat + static async readTRK(buffer) { + let reader = new DataView(buffer); + let magic = reader.getUint32(0, true); + if (magic !== 1128354388) { + let raw; + if (magic === 4247762216) { + throw new Error("zstd TRK decompression is not supported"); + } else { + raw = await NVUtilities.decompress(new Uint8Array(buffer)); + } + buffer = raw.buffer; + reader = new DataView(buffer); + magic = reader.getUint32(0, true); + } + const vers = reader.getUint32(992, true); + const hdr_sz = reader.getUint32(996, true); + if (vers > 2 || hdr_sz !== 1e3 || magic !== 1128354388) { + throw new Error("Not a valid TRK file"); + } + const n_scalars = reader.getInt16(36, true); + const dpv = []; + for (let i2 = 0; i2 < n_scalars; i2++) { + const arr = new Uint8Array(buffer.slice(38 + i2 * 20, 58 + i2 * 20)); + const str6 = new TextDecoder().decode(arr).split("\0").shift(); + dpv.push({ + id: str6.trim(), + // TODO can we guarantee this? + vals: [] + }); + } + const voxel_sizeX = reader.getFloat32(12, true); + const voxel_sizeY = reader.getFloat32(16, true); + const voxel_sizeZ = reader.getFloat32(20, true); + const zoomMat = mat4_exports.fromValues( + 1 / voxel_sizeX, + 0, + 0, + -0.5, + 0, + 1 / voxel_sizeY, + 0, + -0.5, + 0, + 0, + 1 / voxel_sizeZ, + -0.5, + 0, + 0, + 0, + 1 + ); + const n_properties = reader.getInt16(238, true); + const dps = []; + for (let i2 = 0; i2 < n_properties; i2++) { + const arr = new Uint8Array(buffer.slice(240 + i2 * 20, 260 + i2 * 20)); + const str6 = new TextDecoder().decode(arr).split("\0").shift(); + dps.push({ + id: str6.trim(), + // TODO can we guarantee this? + vals: [] + }); + } + const mat = mat4_exports.create(); + for (let i2 = 0; i2 < 16; i2++) { + mat[i2] = reader.getFloat32(440 + i2 * 4, true); + } + if (mat[15] === 0) { + log.warn("TRK vox_to_ras not set"); + mat4_exports.identity(mat); + } + const vox2mmMat = mat4_exports.create(); + mat4_exports.mul(vox2mmMat, zoomMat, mat); + let i322 = null; + let f32 = null; + i322 = new Int32Array(buffer.slice(hdr_sz)); + f32 = new Float32Array(i322.buffer); + const ntracks = i322.length; + if (ntracks < 1) { + throw new Error("Empty TRK file."); + } + let i = 0; + let npt = 0; + let offsetPt0 = new Uint32Array(i322.length / 4); + let noffset = 0; + let pts = new Float32Array(i322.length); + let npt3 = 0; + while (i < ntracks) { + const n_pts = i322[i]; + i = i + 1; + offsetPt0[noffset++] = npt; + for (let j = 0; j < n_pts; j++) { + const ptx = f32[i + 0]; + const pty = f32[i + 1]; + const ptz = f32[i + 2]; + i += 3; + pts[npt3++] = ptx * vox2mmMat[0] + pty * vox2mmMat[1] + ptz * vox2mmMat[2] + vox2mmMat[3]; + pts[npt3++] = ptx * vox2mmMat[4] + pty * vox2mmMat[5] + ptz * vox2mmMat[6] + vox2mmMat[7]; + pts[npt3++] = ptx * vox2mmMat[8] + pty * vox2mmMat[9] + ptz * vox2mmMat[10] + vox2mmMat[11]; + if (n_scalars > 0) { + for (let s = 0; s < n_scalars; s++) { + dpv[s].vals.push(f32[i]); + i++; + } + } + npt++; + } + if (n_properties > 0) { + for (let j = 0; j < n_properties; j++) { + dps[j].vals.push(f32[i]); + i++; + } + } + } + const dps32 = []; + for (let i2 = 0; i2 < dps.length; i2++) { + dps32.push({ + id: dps[i2].id, + vals: Float32Array.from(dps[i2].vals) + }); + } + const dpv32 = []; + for (let i2 = 0; i2 < dpv.length; i2++) { + dpv32.push({ + id: dpv[i2].id, + vals: Float32Array.from(dpv[i2].vals) + }); + } + offsetPt0[noffset++] = npt; + pts = pts.slice(0, npt3); + offsetPt0 = offsetPt0.slice(0, noffset); + return { + pts, + offsetPt0, + dps: dps32, + dpv: dpv32 + }; + } + // readTRK() + // read legacy VTK text format file + static readTxtVTK(buffer) { + const enc = new TextDecoder("utf-8"); + const txt = enc.decode(buffer); + const lines = txt.split("\n"); + const n = lines.length; + if (n < 7 || !lines[0].startsWith("# vtk DataFile")) { + throw new Error("Invalid VTK image"); + } + if (!lines[2].startsWith("ASCII")) { + throw new Error("Not ASCII VTK mesh"); + } + let pos = 3; + while (lines[pos].length < 1) { + pos++; + } + if (!lines[pos].includes("POLYDATA")) { + throw new Error("Not ASCII VTK polydata"); + } + pos++; + while (lines[pos].length < 1) { + pos++; + } + if (!lines[pos].startsWith("POINTS")) { + throw new Error("Not VTK POINTS"); + } + let items = lines[pos].trim().split(/\s+/); + const nvert = parseInt(items[1]); + const nvert3 = nvert * 3; + const positions = new Float32Array(nvert * 3); + let v = 0; + while (v < nvert * 3) { + pos++; + const str6 = lines[pos].trim(); + const pts = str6.trim().split(/\s+/); + for (let i = 0; i < pts.length; i++) { + if (v >= nvert3) { + break; + } + positions[v] = parseFloat(pts[i]); + v++; + } + } + const tris = []; + pos++; + while (lines[pos].length < 1) { + pos++; + } + if (lines[pos].startsWith("METADATA")) { + while (lines[pos].length > 1) { + pos++; + } + pos++; + } + items = lines[pos].trim().split(/\s+/); + pos++; + if (items[0].includes("LINES")) { + const n_count = parseInt(items[1]); + if (n_count < 1) { + throw new Error("Corrupted VTK ASCII"); + } + let str6 = lines[pos].trim(); + const offsetPt0 = []; + let pts = []; + if (str6.startsWith("OFFSETS")) { + pos++; + let c = 0; + while (c < n_count) { + str6 = lines[pos].trim(); + pos++; + const items2 = str6.trim().split(/\s+/); + for (let i = 0; i < items2.length; i++) { + offsetPt0[c] = parseInt(items2[i]); + c++; + if (c >= n_count) { + break; + } + } + } + pts = Array.from(positions); + } else { + let lineToInts = function() { + str6 = lines[pos].trim(); + const items2 = str6.trim().split(/\s+/); + asciiInts = []; + for (let i = 0; i < items2.length; i++) { + asciiInts.push(parseInt(items2[i])); + } + asciiIntsPos = 0; + pos++; + }; + let npt = 0; + offsetPt0[0] = 0; + let asciiInts = []; + let asciiIntsPos = 0; + lineToInts(); + for (let c = 0; c < n_count; c++) { + if (asciiIntsPos >= asciiInts.length) { + lineToInts(); + } + const numPoints = asciiInts[asciiIntsPos++]; + npt += numPoints; + offsetPt0[c + 1] = npt; + for (let i = 0; i < numPoints; i++) { + if (asciiIntsPos >= asciiInts.length) { + lineToInts(); + } + const idx = asciiInts[asciiIntsPos++] * 3; + pts.push(positions[idx + 0]); + pts.push(positions[idx + 1]); + pts.push(positions[idx + 2]); + } + } + } + return { + pts: Float32Array.from(pts), + offsetPt0: Uint32Array.from(offsetPt0) + }; + } else if (items[0].includes("TRIANGLE_STRIPS")) { + const nstrip = parseInt(items[1]); + for (let i = 0; i < nstrip; i++) { + const str6 = lines[pos].trim(); + pos++; + const vs = str6.trim().split(/\s+/); + const ntri = parseInt(vs[0]) - 2; + let k = 1; + for (let t = 0; t < ntri; t++) { + if (t % 2) { + tris.push(parseInt(vs[k + 2])); + tris.push(parseInt(vs[k + 1])); + tris.push(parseInt(vs[k])); + } else { + tris.push(parseInt(vs[k])); + tris.push(parseInt(vs[k + 1])); + tris.push(parseInt(vs[k + 2])); + } + k += 1; + } + } + } else if (items[0].includes("POLYGONS")) { + const npoly = parseInt(items[1]); + for (let i = 0; i < npoly; i++) { + const str6 = lines[pos].trim(); + pos++; + const vs = str6.trim().split(/\s+/); + const ntri = parseInt(vs[0]) - 2; + const fx = parseInt(vs[1]); + let fy = parseInt(vs[2]); + for (let t = 0; t < ntri; t++) { + const fz = parseInt(vs[3 + t]); + tris.push(fx); + tris.push(fy); + tris.push(fz); + fy = fz; + } + } + } else { + throw new Error("Unsupported ASCII VTK datatype " + items[0]); + } + const indices = new Uint32Array(tris); + return { + positions, + indices + }; + } + // readTxtVTK() + // read mesh overlay to influence vertex colors + static async readLayer(name = "", buffer, nvmesh, opacity = 0.5, colormap = "warm", colormapNegative = "winter", useNegativeCmap = false, cal_min = null, cal_max = null, outlineBorder = 0) { + const layer = { + ...NVMeshLayerDefaults, + colormapInvert: false, + colormapType: 0, + // COLORMAP_TYPE.MIN_TO_MAX + isTransparentBelowCalMin: true, + isAdditiveBlend: false, + colorbarVisible: true, + colormapLabel: null + }; + const isReadColortables = true; + const re = /(?:\.([^.]+))?$/; + let ext = re.exec(name)[1]; + ext = ext.toUpperCase(); + if (ext === "GZ") { + ext = re.exec(name.slice(0, -3))[1]; + ext = ext.toUpperCase(); + } + const n_vert = nvmesh.vertexCount / 3; + if (nvmesh.offsetPt0) { + const splitResult = name.split("/"); + let tag = "Unknown"; + if (splitResult.length > 1) { + const tag1 = splitResult.pop(); + if (tag1) { + tag = tag.split(".").slice(0, -1).join("."); + } + } + if (ext === "TXT") { + const n_count = nvmesh.offsetPt0.length - 1; + const vals2 = _NVMeshLoaders.readTXT(buffer, n_count); + if (vals2.length !== n_count) { + throw new Error(`TXT file has ${vals2.length} items, expected one per streamline (${n_count}).`); + } + if (!nvmesh.dps) { + nvmesh.dps = []; + } + const mn3 = vals2.reduce((acc, current) => Math.min(acc, current)); + const mx3 = vals2.reduce((acc, current) => Math.max(acc, current)); + nvmesh.dps.push({ + id: tag, + vals: Float32Array.from(vals2.slice()), + global_min: mn3, + global_max: mx3, + cal_min: mn3, + cal_max: mx3 + }); + return layer; + } + if (ext !== "TSF") { + throw new Error("readLayer for streamlines only supports TSF and TXT files."); + } + const npt = nvmesh.pts.length / 3; + const vals = _NVMeshLoaders.readTSF(buffer, npt); + if (!nvmesh.dpv) { + nvmesh.dpv = []; + } + const mn2 = vals.reduce((acc, current) => Math.min(acc, current)); + const mx2 = vals.reduce((acc, current) => Math.max(acc, current)); + nvmesh.dpv.push({ + id: tag, + vals: Float32Array.from(vals.slice()), + global_min: mn2, + global_max: mx2, + cal_min: mn2, + cal_max: mx2 + }); + return layer; + } + if (n_vert < 3) { + log.error("n_vert < 3 in layer"); + return; + } + if (ext === "MZ3") { + const obj = await _NVMeshLoaders.readMZ3(buffer, n_vert); + layer.values = obj.scalars; + if ("colormapLabel" in obj) { + layer.colormapLabel = obj.colormapLabel; + } + } else if (ext === "ANNOT") { + if (!isReadColortables) { + layer.values = _NVMeshLoaders.readANNOT(buffer, n_vert); + } else { + const obj = _NVMeshLoaders.readANNOT(buffer, n_vert, true); + if (!(obj instanceof Uint32Array)) { + layer.values = obj.scalars; + layer.colormapLabel = obj.colormapLabel; + } else { + layer.values = obj; + } + } + } else if (ext === "CRV" || ext === "CURV" || ext === "THICKNESS" || ext === "AREA") { + layer.values = _NVMeshLoaders.readCURV(buffer, n_vert); + layer.isTransparentBelowCalMin = false; + } else if (ext === "GII") { + const obj = await _NVMeshLoaders.readGII(buffer, n_vert); + layer.values = obj.scalars; + layer.colormapLabel = obj.colormapLabel; + } else if (ext === "MGH" || ext === "MGZ") { + if (!isReadColortables) { + layer.values = await _NVMeshLoaders.readMGH(buffer, n_vert); + } else { + const obj = await _NVMeshLoaders.readMGH(buffer, n_vert, true); + if ("scalars" in obj) { + layer.values = obj.scalars; + layer.colormapLabel = obj.colormapLabel; + } else { + layer.values = obj; + } + } + } else if (ext === "NII") { + layer.values = await _NVMeshLoaders.readNII( + buffer, + nvmesh.pts, + nvmesh.anatomicalStructurePrimary + ); + } else if (ext === "SMP") { + layer.values = await _NVMeshLoaders.readSMP(buffer, n_vert); + } else if (ext === "STC") { + layer.values = _NVMeshLoaders.readSTC(buffer, n_vert); + } else if (_NVMeshLoaders.isCurv(buffer)) { + layer.values = _NVMeshLoaders.readCURV(buffer, n_vert); + layer.isTransparentBelowCalMin = false; + } else { + log.warn("Unknown layer overlay format " + name); + return layer; + } + if (!layer.values) { + log.error("no values in layer"); + return; + } + layer.nFrame4D = layer.values.length / n_vert; + layer.frame4D = 0; + layer.outlineBorder = outlineBorder; + let mn = layer.values[0]; + let mx = layer.values[0]; + for (let i = 0; i < layer.values.length; i++) { + mn = Math.min(mn, layer.values[i]); + mx = Math.max(mx, layer.values[i]); + } + layer.global_min = mn; + layer.global_max = mx; + layer.cal_min = cal_min || 0; + if (!cal_min) { + layer.cal_min = mn; + } + layer.cal_max = cal_max || 0; + if (!cal_max) { + layer.cal_max = mx; + } + layer.cal_minNeg = NaN; + layer.cal_maxNeg = NaN; + layer.opacity = opacity; + layer.colormap = colormap; + layer.colormapNegative = colormapNegative; + layer.useNegativeCmap = useNegativeCmap; + return layer; + } + // readLayer() + // read brainvoyager smp format file + // https://support.brainvoyager.com/brainvoyager/automation-development/84-file-formats/40-the-format-of-smp-files + static async readSMP(buffer, n_vert) { + const len4 = buffer.byteLength; + let reader = new DataView(buffer); + let vers = reader.getUint16(0, true); + if (vers > 5) { + const raw = await NVUtilities.decompress(new Uint8Array(buffer)); + reader = new DataView(raw.buffer); + vers = reader.getUint16(0, true); + buffer = raw.buffer; + } + if (vers > 5) { + log.error("Unsupported or invalid BrainVoyager SMP version " + vers); + } + const nvert = reader.getUint32(2, true); + if (nvert !== n_vert) { + log.error("SMP file has " + nvert + " vertices, background mesh has " + n_vert); + } + const nMaps = reader.getUint16(6, true); + const scalars = new Float32Array(nvert * nMaps); + const maps = []; + let pos = 9; + function readStr() { + const startPos = pos; + while (pos < len4 && reader.getUint8(pos) !== 0) { + pos++; + } + pos++; + return new TextDecoder().decode(buffer.slice(startPos, pos - 1)); + } + const _filenameSRF = readStr(); + for (let i = 0; i < nMaps; i++) { + const m = {}; + m.mapType = reader.getUint32(pos, true); + pos += 4; + if (vers >= 3 && m.mapType === 3) { + m.nLags = reader.getUint32(pos, true); + pos += 4; + m.mnLag = reader.getUint32(pos, true); + pos += 4; + m.mxLag = reader.getUint32(pos, true); + pos += 4; + m.ccOverlay = reader.getUint32(pos, true); + pos += 4; + } + m.clusterSize = reader.getUint32(pos, true); + pos += 4; + m.clusterCheck = reader.getUint8(pos); + pos += 1; + m.critThresh = reader.getFloat32(pos, true); + pos += 4; + m.maxThresh = reader.getFloat32(pos, true); + pos += 4; + if (vers >= 4) { + m.includeValuesGreaterThreshMax = reader.getUint32(pos, true); + pos += 4; + } + m.df1 = reader.getUint32(pos, true); + pos += 4; + m.df2 = reader.getUint32(pos, true); + pos += 4; + if (vers >= 5) { + m.posNegFlag = reader.getUint32(pos, true); + pos += 4; + } else { + m.posNegFlag = 3; + } + m.cortexBonferroni = reader.getUint32(pos, true); + pos += 4; + m.posMinRGB = [0, 0, 0]; + m.posMaxRGB = [0, 0, 0]; + m.negMinRGB = [0, 0, 0]; + m.negMaxRGB = [0, 0, 0]; + if (vers >= 2) { + m.posMinRGB[0] = reader.getUint8(pos); + pos++; + m.posMinRGB[1] = reader.getUint8(pos); + pos++; + m.posMinRGB[2] = reader.getUint8(pos); + pos++; + m.posMaxRGB[0] = reader.getUint8(pos); + pos++; + m.posMaxRGB[1] = reader.getUint8(pos); + pos++; + m.posMaxRGB[2] = reader.getUint8(pos); + pos++; + if (vers >= 4) { + m.negMinRGB[0] = reader.getUint8(pos); + pos++; + m.negMinRGB[1] = reader.getUint8(pos); + pos++; + m.negMinRGB[2] = reader.getUint8(pos); + pos++; + m.negMaxRGB[0] = reader.getUint8(pos); + pos++; + m.negMaxRGB[1] = reader.getUint8(pos); + pos++; + m.negMaxRGB[2] = reader.getUint8(pos); + pos++; + } + m.enableSMPColor = reader.getUint8(pos); + pos++; + if (vers >= 4) { + m.lut = readStr(); + } + m.colorAlpha = reader.getFloat32(pos, true); + pos += 4; + } + m.name = readStr(); + const scalarsNew = new Float32Array(buffer, pos, nvert); + scalars.set(scalarsNew, i * nvert); + pos += nvert * 4; + maps.push(m); + } + return scalars; + } + // readSMP() + // read mne stc format file, not to be confused with brainvoyager stc format + // https://github.com/mne-tools/mne-python/blob/main/mne/source_estimate.py#L211-L365 + static readSTC(buffer, n_vert) { + const reader = new DataView(buffer); + const n_vertex = reader.getInt32(8, false); + if (n_vertex !== n_vert) { + throw new Error("Overlay has " + n_vertex + " vertices, expected " + n_vert); + } + let pos = 12 + n_vertex * 4; + const n_time = reader.getUint32(pos, false); + pos += 4; + const f32 = new Float32Array(n_time * n_vertex); + for (let i = 0; i < n_time * n_vertex; i++) { + f32[i] = reader.getFloat32(pos, false); + pos += 4; + } + return f32; + } + // readSTC() + static isCurv(buffer) { + const view = new DataView(buffer); + const sig0 = view.getUint8(0); + const sig1 = view.getUint8(1); + const sig2 = view.getUint8(2); + if (sig0 !== 255 || sig1 !== 255 || sig2 !== 255) { + utiltiesLogger.debug("Unable to recognize file type: does not appear to be FreeSurfer format."); + return false; + } + return true; + } + // read freesurfer curv big-endian format + // https://github.com/bonilhamusclab/MRIcroS/blob/master/%2BfileUtils/%2Bpial/readPial.m + // http://www.grahamwideman.com/gw/brain/fs/surfacefileformats.htm + static readCURV(buffer, n_vert) { + const view = new DataView(buffer); + const sig0 = view.getUint8(0); + const sig1 = view.getUint8(1); + const sig2 = view.getUint8(2); + const n_vertex = view.getUint32(3, false); + const n_time = view.getUint32(11, false); + if (sig0 !== 255 || sig1 !== 255 || sig2 !== 255) { + utiltiesLogger.debug("Unable to recognize file type: does not appear to be FreeSurfer format."); + } + if (n_vert !== n_vertex) { + throw new Error("CURV file has different number of vertices ( " + n_vertex + ")than mesh (" + n_vert + ")"); + } + if (buffer.byteLength < 15 + 4 * n_vertex * n_time) { + throw new Error("CURV file smaller than specified"); + } + const f32 = new Float32Array(n_time * n_vertex); + let pos = 15; + for (let i = 0; i < n_time * n_vertex; i++) { + f32[i] = view.getFloat32(pos, false); + pos += 4; + } + let mn = f32[0]; + let mx = f32[0]; + for (let i = 0; i < f32.length; i++) { + mn = Math.min(mn, f32[i]); + mx = Math.max(mx, f32[i]); + } + const scale6 = 1 / (mx - mn); + for (let i = 0; i < f32.length; i++) { + f32[i] = 1 - (f32[i] - mn) * scale6; + } + return f32; + } + // readCURV() + // read freesurfer Annotation file provides vertex colors + // https://surfer.nmr.mgh.harvard.edu/fswiki/LabelsClutsAnnotationFiles + static readANNOT(buffer, n_vert, isReadColortables = false) { + const view = new DataView(buffer); + const n_vertex = view.getUint32(0, false); + const n_vertexDecimated = this.decimateLayerVertices(n_vertex, n_vert); + if (n_vert !== n_vertexDecimated) { + throw new Error("ANNOT file has different number of vertices than mesh"); + } + if (buffer.byteLength < 4 + 8 * n_vertex) { + throw new Error("ANNOT file smaller than specified"); + } + let pos = 0; + const rgba32 = new Uint32Array(n_vertex); + for (let i = 0; i < n_vertex; i++) { + const idx = view.getUint32(pos += 4, false); + rgba32[idx] = view.getUint32(pos += 4, false); + } + if (!isReadColortables) { + return rgba32; + } + let tag = 0; + try { + tag = view.getInt32(pos += 4, false); + } catch (error) { + return rgba32; + } + const TAG_OLD_COLORTABLE = 1; + if (tag !== TAG_OLD_COLORTABLE) { + return rgba32; + } + const ctabversion = view.getInt32(pos += 4, false); + if (ctabversion > 0) { + return rgba32; + } + const maxstruc = view.getInt32(pos += 4, false); + const len4 = view.getInt32(pos += 4, false); + pos += len4; + const num_entries = view.getInt32(pos += 4, false); + if (num_entries < 1) { + return rgba32; + } + const LUT4 = { + R: Array(maxstruc).fill(0), + G: Array(maxstruc).fill(0), + B: Array(maxstruc).fill(0), + A: Array(maxstruc).fill(0), + I: Array(maxstruc).fill(0), + labels: Array(maxstruc).fill("") + }; + for (let i = 0; i < num_entries; i++) { + const struc = view.getInt32(pos += 4, false); + const labelLen = view.getInt32(pos += 4, false); + pos += 4; + let txt = ""; + for (let c = 0; c < labelLen; c++) { + const val = view.getUint8(pos++); + if (val === 0) { + break; + } + txt += String.fromCharCode(val); + } + pos -= 4; + const R = view.getInt32(pos += 4, false); + const G = view.getInt32(pos += 4, false); + const B = view.getInt32(pos += 4, false); + const A = view.getInt32(pos += 4, false); + if (struc < 0 || struc >= maxstruc) { + log.warn("annot entry out of range"); + continue; + } + LUT4.R[struc] = R; + LUT4.G[struc] = G; + LUT4.B[struc] = B; + LUT4.A[struc] = A; + LUT4.I[struc] = (A << 24) + (B << 16) + (G << 8) + R; + LUT4.labels[struc] = txt; + } + const scalars = new Float32Array(n_vertex); + scalars.fill(-1); + let nError = 0; + for (let i = 0; i < n_vert; i++) { + const RGB = rgba32[i]; + for (let c = 0; c < maxstruc; c++) { + if (LUT4.I[c] === RGB) { + scalars[i] = c; + break; + } + } + if (scalars[i] < 0) { + nError++; + scalars[i] = 0; + } + } + if (nError > 0) { + log.error(`annot vertex colors do not match ${nError} of ${n_vertex} vertices.`); + } + for (let i = 0; i < maxstruc; i++) { + LUT4.I[i] = i; + } + const colormapLabel = cmapper.makeLabelLut(LUT4); + return { + scalars, + colormapLabel + }; + } + // readANNOT() + // read BrainNet viewer format + // https://www.nitrc.org/projects/bnv/ + static readNV(buffer) { + const len4 = buffer.byteLength; + const bytes = new Uint8Array(buffer); + let pos = 0; + function readStr() { + while (pos < len4 && bytes[pos] === 10) { + pos++; + } + const startPos = pos; + while (pos < len4 && bytes[pos] !== 10) { + pos++; + } + pos++; + if (pos - startPos < 1) { + return ""; + } + return new TextDecoder().decode(buffer.slice(startPos, pos - 1)); + } + let nvert = 0; + let ntri = 0; + let v = 0; + let t = 0; + let positions; + let indices; + while (pos < len4) { + const line = readStr(); + if (line.startsWith("#")) { + continue; + } + const items = line.trim().split(/\s+/); + if (nvert < 1) { + nvert = parseInt(items[0]); + positions = new Float32Array(nvert * 3); + continue; + } + if (v < nvert * 3) { + positions[v] = parseFloat(items[0]); + positions[v + 1] = parseFloat(items[1]); + positions[v + 2] = parseFloat(items[2]); + v += 3; + continue; + } + if (ntri < 1) { + ntri = parseInt(items[0]); + indices = new Uint32Array(ntri * 3); + continue; + } + if (t >= ntri * 3) { + break; + } + indices[t + 2] = parseInt(items[0]) - 1; + indices[t + 1] = parseInt(items[1]) - 1; + indices[t + 0] = parseInt(items[2]) - 1; + t += 3; + } + return { + positions, + indices + }; + } + // readNV() + // read ASCII Patch File format + // https://afni.nimh.nih.gov/pub/dist/doc/htmldoc/demos/Bootcamp/CD.html#cd + // http://www.grahamwideman.com/gw/brain/fs/surfacefileformats.htm + static readASC(buffer) { + const len4 = buffer.byteLength; + const bytes = new Uint8Array(buffer); + let pos = 0; + function readStr() { + while (pos < len4 && bytes[pos] === 10) { + pos++; + } + const startPos = pos; + while (pos < len4 && bytes[pos] !== 10) { + pos++; + } + pos++; + if (pos - startPos < 1) { + return ""; + } + return new TextDecoder().decode(buffer.slice(startPos, pos - 1)); + } + let line = readStr(); + if (!line.startsWith("#!ascii")) { + log.warn("Invalid ASC mesh"); + } + line = readStr(); + let items = line.trim().split(/\s+/); + const nvert = parseInt(items[0]); + const ntri = parseInt(items[1]); + const positions = new Float32Array(nvert * 3); + let j = 0; + for (let i = 0; i < nvert; i++) { + line = readStr(); + items = line.trim().split(/\s+/); + positions[j] = parseFloat(items[0]); + positions[j + 1] = parseFloat(items[1]); + positions[j + 2] = parseFloat(items[2]); + j += 3; + } + const indices = new Uint32Array(ntri * 3); + j = 0; + for (let i = 0; i < ntri; i++) { + line = readStr(); + items = line.trim().split(/\s+/); + indices[j] = parseInt(items[0]); + indices[j + 1] = parseInt(items[1]); + indices[j + 2] = parseInt(items[2]); + j += 3; + } + return { + positions, + indices + }; + } + // readASC() + // read legacy VTK format + static readVTK(buffer) { + const len4 = buffer.byteLength; + if (len4 < 20) { + throw new Error("File too small to be VTK: bytes = " + buffer.byteLength); + } + const bytes = new Uint8Array(buffer); + let pos = 0; + function readStr(isSkipBlank = true) { + if (isSkipBlank) { + while (pos < len4 && bytes[pos] === 10) { + pos++; + } + } + const startPos = pos; + while (pos < len4 && bytes[pos] !== 10) { + pos++; + } + pos++; + if (pos - startPos < 1) { + return ""; + } + return new TextDecoder().decode(buffer.slice(startPos, pos - 1)); + } + let line = readStr(); + if (!line.startsWith("# vtk DataFile")) { + throw new Error("Invalid VTK mesh"); + } + line = readStr(false); + line = readStr(); + if (line.startsWith("ASCII")) { + return _NVMeshLoaders.readTxtVTK(buffer); + } else if (!line.startsWith("BINARY")) { + throw new Error("Invalid VTK image, expected ASCII or BINARY " + line); + } + line = readStr(); + if (!line.includes("POLYDATA")) { + throw new Error("Only able to read VTK POLYDATA " + line); + } + line = readStr(); + if (!line.includes("POINTS") || !line.includes("double") && !line.includes("float")) { + log.warn("Only able to read VTK float or double POINTS" + line); + } + const isFloat64 = line.includes("double"); + let items = line.trim().split(/\s+/); + const nvert = parseInt(items[1]); + const nvert3 = nvert * 3; + const positions = new Float32Array(nvert3); + const reader = new DataView(buffer); + if (isFloat64) { + for (let i = 0; i < nvert3; i++) { + positions[i] = reader.getFloat64(pos, false); + pos += 8; + } + } else { + for (let i = 0; i < nvert3; i++) { + positions[i] = reader.getFloat32(pos, false); + pos += 4; + } + } + line = readStr(); + items = line.trim().split(/\s+/); + const tris = []; + if (items[0].includes("LINES")) { + const n_count = parseInt(items[1]); + const posOK = pos; + line = readStr(); + if (line.startsWith("OFFSETS")) { + let isInt64 = false; + if (line.includes("int64")) { + isInt64 = true; + } + const offsetPt02 = new Uint32Array(n_count); + if (isInt64) { + let isOverflowInt32 = false; + for (let c = 0; c < n_count; c++) { + let idx = reader.getInt32(pos, false); + if (idx !== 0) { + isOverflowInt32 = true; + } + pos += 4; + idx = reader.getInt32(pos, false); + pos += 4; + offsetPt02[c] = idx; + } + if (isOverflowInt32) { + log.warn("int32 overflow: JavaScript does not support int64"); + } + } else { + for (let c = 0; c < n_count; c++) { + const idx = reader.getInt32(pos, false); + pos += 4; + offsetPt02[c] = idx; + } + } + const pts2 = positions; + return { + pts: pts2, + offsetPt0: offsetPt02 + }; + } + pos = posOK; + let npt = 0; + const offsetPt0 = []; + const pts = []; + offsetPt0.push(npt); + for (let c = 0; c < n_count; c++) { + const numPoints = reader.getInt32(pos, false); + pos += 4; + npt += numPoints; + offsetPt0.push(npt); + for (let i = 0; i < numPoints; i++) { + const idx = reader.getInt32(pos, false) * 3; + pos += 4; + pts.push(positions[idx + 0]); + pts.push(positions[idx + 1]); + pts.push(positions[idx + 2]); + } + } + return { + pts: Float32Array.from(pts), + offsetPt0: Uint32Array.from(offsetPt0) + }; + } else if (items[0].includes("TRIANGLE_STRIPS")) { + const nstrip = parseInt(items[1]); + for (let i = 0; i < nstrip; i++) { + const ntri = reader.getInt32(pos, false) - 2; + pos += 4; + for (let t = 0; t < ntri; t++) { + if (t % 2) { + tris.push(reader.getInt32(pos + 8, false)); + tris.push(reader.getInt32(pos + 4, false)); + tris.push(reader.getInt32(pos, false)); + } else { + tris.push(reader.getInt32(pos, false)); + tris.push(reader.getInt32(pos + 4, false)); + tris.push(reader.getInt32(pos + 8, false)); + } + pos += 4; + } + pos += 8; + } + } else if (items[0].includes("POLYGONS")) { + const npoly = parseInt(items[1]); + const byteOffsetAfterPoly = pos; + const maybeOffsetsLine = readStr(); + if (maybeOffsetsLine.startsWith("OFFSETS")) { + let isInt64 = maybeOffsetsLine.includes("int64"); + const offset = new Uint32Array(npoly); + let is32bitOverflow = false; + for (let i = 0; i < npoly; i++) { + if (isInt64) { + if (reader.getInt32(pos, false) !== 0) { + is32bitOverflow = true; + } + pos += 4; + } + offset[i] = reader.getInt32(pos, false); + pos += 4; + } + if (!Number.isSafeInteger(npoly) || npoly >= 2147483648 || is32bitOverflow) { + throw new Error(`values exceed 2GB limit`); + } + const connLine = readStr(); + if (!connLine.startsWith("CONNECTIVITY")) { + throw new Error("Expected CONNECTIVITY after OFFSETS"); + } + isInt64 = connLine.includes("int64"); + const numIndices = offset[npoly - 1]; + const connectivity = new Uint32Array(numIndices); + for (let i = 0; i < numIndices; i++) { + if (isInt64) { + pos += 4; + } + connectivity[i] = reader.getInt32(pos, false); + pos += 4; + } + for (let i = 0; i < npoly; i++) { + const start = i === 0 ? 0 : offset[i - 1]; + const end = offset[i]; + for (let t = 1; t < end - start - 1; t++) { + tris.push(connectivity[start]); + tris.push(connectivity[start + t]); + tris.push(connectivity[start + t + 1]); + } + } + } else { + pos = byteOffsetAfterPoly; + for (let i = 0; i < npoly; i++) { + const ntri = reader.getInt32(pos, false) - 2; + if (i === 0 && ntri > 65535) { + throw new Error("Invalid VTK binary polygons using little-endian data (MRtrix)"); + } + pos += 4; + const fx = reader.getInt32(pos, false); + pos += 4; + let fy = reader.getInt32(pos, false); + pos += 4; + for (let t = 0; t < ntri; t++) { + const fz = reader.getInt32(pos, false); + pos += 4; + tris.push(fx, fy, fz); + fy = fz; + } + } + } + } else { + throw new Error("Unsupported binary VTK datatype " + items[0]); + } + const indices = new Uint32Array(tris); + return { + positions, + indices + }; + } + // readVTK() + static readWRL(buffer) { + const wrlText = new TextDecoder("utf-8").decode(buffer); + const coordRegex = /coord\s+Coordinate\s*\{\s*point\s*\[([\s\S]*?)\]/; + const indexRegex = /coordIndex\s*\[([\s\S]*?)\]/; + const colorRegex = /color\s+Color\s*\{\s*color\s*\[([\s\S]*?)\]/; + const coordMatch = coordRegex.exec(wrlText); + const indexMatch = indexRegex.exec(wrlText); + const colorMatch = colorRegex.exec(wrlText); + if (!coordMatch || !indexMatch) { + throw new Error("Invalid WRL file: Could not find vertices or indices."); + } + const positions = new Float32Array( + coordMatch[1].trim().split(/[\s,]+/).map(Number) + ); + let colors = null; + if (colorMatch) { + colors = new Float32Array( + colorMatch[1].trim().split(/[\s,]+/).map(Number) + ); + const nVert = positions.length / 3; + if (colors.length !== nVert * 3) { + console.warn(`Unexpected color count: expected ${nVert * 3}, got ${colors.length}`); + colors = null; + } + } + const indices = new Uint32Array( + indexMatch[1].trim().split(/[\s,]+/).map(Number).filter((v) => v !== -1) + ); + return { positions, indices, colors }; + } + // readWRL() + // read brainsuite DFS format + // http://brainsuite.org/formats/dfs/ + static readDFS(buffer) { + const reader = new DataView(buffer); + const magic = reader.getUint32(0, true); + const LE = reader.getUint16(4, true); + if (magic !== 1599292996 || LE !== 17740) { + log.warn("Not a little-endian brainsuite DFS mesh"); + } + const hdrBytes = reader.getUint32(12, true); + const nface = reader.getUint32(24, true); + const nvert = reader.getUint32(28, true); + const vcoffset = reader.getUint32(48, true); + let pos = hdrBytes; + const indices = new Uint32Array(buffer, pos, nface * 3); + pos += nface * 3 * 4; + const positions = new Float32Array(buffer, pos, nvert * 3); + for (let i = 0; i < nvert * 3; i += 3) { + const tmp = positions[i]; + positions[i] = positions[i + 1]; + positions[i + 1] = tmp; + } + let colors; + if (vcoffset >= 0) { + colors = new Float32Array(buffer, vcoffset, nvert * 3); + } + return { + positions, + indices, + colors + }; + } + // read surfice MZ3 format + // https://github.com/neurolabusc/surf-ice/tree/master/mz3 + static async readMZ3(buffer, n_vert = 0) { + if (buffer.byteLength < 20) { + throw new Error("File too small to be mz3: bytes = " + buffer.byteLength); + } + let reader = new DataView(buffer); + let _buffer = buffer; + let magic = reader.getUint16(0, true); + if (magic === 35615 || magic === 8075) { + const raw = await NVUtilities.decompress(new Uint8Array(buffer)); + reader = new DataView(raw.buffer); + magic = reader.getUint16(0, true); + _buffer = raw.buffer; + } + const attr = reader.getUint16(2, true); + const nface = reader.getUint32(4, true); + let nvert = reader.getUint32(8, true); + const nskip = reader.getUint32(12, true); + utiltiesLogger.debug("MZ3 magic %d attr %d face %d vert %d skip %d", magic, attr, nface, nvert, nskip); + if (magic !== 23117) { + throw new Error("Invalid MZ3 file"); + } + const isFace = (attr & 1) !== 0; + const isVert = (attr & 2) !== 0; + const isRGBA = (attr & 4) !== 0; + let isSCALAR = (attr & 8) !== 0; + const isDOUBLE = (attr & 16) !== 0; + const isAOMAP = (attr & 32) !== 0; + const isLOOKUP = (attr & 64) !== 0; + utiltiesLogger.debug( + `isFace=${isFace} isVert=${isVert} isRGBA=${isRGBA} isSCALAR=${isSCALAR} isDOUBLE=${isDOUBLE} isAOMAP=${isAOMAP} isLOOKUP=${isLOOKUP}` + ); + if (attr > 127) { + throw new Error("Unsupported future version of MZ3 file"); + } + let bytesPerScalar = 4; + if (isDOUBLE) { + bytesPerScalar = 8; + } + let NSCALAR = 0; + if (n_vert > 0 && !isFace && nface < 1 && !isRGBA) { + isSCALAR = true; + } + if (isSCALAR) { + const nv = n_vert || nvert; + const FSizeWoScalars = 16 + nskip + (isFace ? nface * 12 : 0) + (isVert ? nv * 12 : 0) + (isRGBA ? nv * 4 : 0); + const scalarFloats = Math.floor((_buffer.byteLength - FSizeWoScalars) / bytesPerScalar); + if (nvert !== n_vert && scalarFloats % n_vert === 0) { + nvert = n_vert; + } + NSCALAR = Math.floor(scalarFloats / nvert); + if (NSCALAR < 1) { + log.warn("Corrupt MZ3: file reports NSCALAR but not enough bytes"); + isSCALAR = false; + } + } + if (nvert < 3 && n_vert < 3) { + throw new Error("Not a mesh MZ3 file (maybe scalar)"); + } + if (n_vert > 0 && n_vert !== nvert) { + log.warn("Layer has " + nvert + "vertices, but background mesh has " + n_vert); + } + let filepos = 16 + nskip; + const view = new DataView(_buffer); + let indices = null; + if (isFace) { + indices = new Uint32Array(nface * 3); + for (let i = 0; i < nface * 3; i++) { + indices[i] = view.getUint32(filepos, true); + filepos += 4; + } + } + let positions = null; + if (isVert) { + positions = new Float32Array(nvert * 3); + for (let i = 0; i < nvert * 3; i++) { + positions[i] = view.getFloat32(filepos, true); + filepos += 4; + } + } + let colors = null; + if (isRGBA) { + colors = new Float32Array(nvert * 3); + for (let i = 0; i < nvert; i++) { + for (let j = 0; j < 3; j++) { + colors[i * 3 + j] = view.getUint8(filepos++) / 255; + } + filepos++; + } + } + let scalars = new Float32Array(); + if (isSCALAR && NSCALAR > 0) { + if (isDOUBLE) { + const flt64 = new Float64Array(NSCALAR * nvert); + for (let i = 0; i < NSCALAR * nvert; i++) { + flt64[i] = view.getFloat64(filepos, true); + filepos += 8; + } + scalars = Float32Array.from(flt64); + } else { + scalars = new Float32Array(NSCALAR * nvert); + for (let i = 0; i < NSCALAR * nvert; i++) { + scalars[i] = view.getFloat32(filepos, true); + filepos += 4; + } + } + } + if (n_vert > 0 && isLOOKUP && isSCALAR) { + const decoder = new TextDecoder("utf-8"); + const jsonBytes = new Uint8Array(_buffer, 16, nskip); + const jsonText = decoder.decode(jsonBytes); + const colormap = JSON.parse(jsonText); + const colormapLabel = cmapper.makeLabelLut(colormap); + return { scalars, colormapLabel }; + } + if (n_vert > 0 && isRGBA && isSCALAR) { + let mx = scalars[0]; + for (let i = 0; i < nvert; i++) { + mx = Math.max(mx, scalars[i]); + } + const Labels = { R: [], G: [], B: [], A: [], I: [], labels: [] }; + for (let i = 0; i <= mx; i++) { + for (let v = 0; v < nvert; v++) { + if (i === scalars[v]) { + const v3 = v * 3; + Labels.I.push(i); + Labels.R.push(colors[v3] * 255); + Labels.G.push(colors[v3 + 1] * 255); + Labels.B.push(colors[v3 + 2] * 255); + Labels.A.push(255); + Labels.labels.push(`${i}`); + break; + } + } + } + const colormapLabel = cmapper.makeLabelLut(Labels); + return { scalars, colormapLabel }; + } + if (n_vert > 0) { + return { scalars }; + } + return { positions, indices, scalars, colors }; + } + // read PLY format + // https://en.wikipedia.org/wiki/PLY_(file_format) + static readPLY(buffer) { + const len4 = buffer.byteLength; + const bytes = new Uint8Array(buffer); + let pos = 0; + function readStr() { + while (pos < len4 && bytes[pos] === 10) { + pos++; + } + const startPos = pos; + while (pos < len4 && bytes[pos] !== 10) { + pos++; + } + pos++; + if (pos - startPos < 1) { + return ""; + } + return new TextDecoder().decode(buffer.slice(startPos, pos - 1)); + } + let line = readStr(); + if (!line.startsWith("ply")) { + throw new Error("Not a valid PLY file"); + } + line = readStr(); + const isAscii = line.includes("ascii"); + function dataTypeBytes(str6) { + if (str6 === "char" || str6 === "uchar" || str6 === "int8" || str6 === "uint8") { + return 1; + } + if (str6 === "short" || str6 === "ushort" || str6 === "int16" || str6 === "uint16") { + return 2; + } + if (str6 === "int" || str6 === "uint" || str6 === "int32" || str6 === "uint32" || str6 === "float" || str6 === "float32") { + return 4; + } + if (str6 === "double") { + return 8; + } + throw new Error("Unknown data type: " + str6); + } + const isLittleEndian = line.includes("binary_little_endian"); + let nvert = 0; + let vertIsDouble = false; + let vertStride = 0; + let indexStrideBytes = 0; + let indexCountBytes = 0; + let indexBytes = 0; + let indexPaddingBytes = 0; + let nIndexPadding = 0; + let nface = 0; + while (pos < len4 && !line.startsWith("end_header")) { + line = readStr(); + if (line.startsWith("comment")) { + continue; + } + let items = line.split(/\s/); + if (line.startsWith("element vertex")) { + nvert = parseInt(items[items.length - 1]); + line = readStr(); + items = line.split(/\s/); + while (line.startsWith("property")) { + const datatype = items[1]; + if (items[2] === "x" && datatype.startsWith("double")) { + vertIsDouble = true; + } else if (items[2] === "x" && !datatype.startsWith("float")) { + log.error("Error: expect ply xyz to be float or double: " + line); + } + vertStride += dataTypeBytes(datatype); + line = readStr(); + items = line.split(/\s/); + } + } + if (line.startsWith("element face")) { + nface = parseInt(items[items.length - 1]); + line = readStr(); + items = line.split(/\s/); + while (line.startsWith("property")) { + if (items[1] === "list") { + indexCountBytes = dataTypeBytes(items[2]); + indexBytes = dataTypeBytes(items[3]); + indexStrideBytes += indexCountBytes + 3 * indexBytes; + } else { + const bytes2 = dataTypeBytes(items[1]); + indexStrideBytes += bytes2; + if (indexBytes === 0) { + indexPaddingBytes += bytes2; + nIndexPadding++; + } + } + line = readStr(); + items = line.split(/\s/); + } + } + } + if (isAscii) { + if (nface < 1) { + log.error(`Malformed ply format: faces ${nface} `); + } + const positions2 = new Float32Array(nvert * 3); + let v = 0; + for (let i = 0; i < nvert; i++) { + line = readStr(); + const items = line.split(/\s/); + positions2[v] = parseFloat(items[0]); + positions2[v + 1] = parseFloat(items[1]); + positions2[v + 2] = parseFloat(items[2]); + v += 3; + } + let indices2 = new Uint32Array(nface * 3); + let f = 0; + for (let i = 0; i < nface; i++) { + line = readStr(); + const items = line.split(/\s/); + const nTri = parseInt(items[nIndexPadding]) - 2; + if (nTri < 1) { + break; + } + if (f + nTri * 3 > indices2.length) { + const c = new Uint32Array(indices2.length + indices2.length); + c.set(indices2); + indices2 = c.slice(); + } + const idx0 = parseInt(items[nIndexPadding + 1]); + let idx1 = parseInt(items[nIndexPadding + 2]); + for (let j2 = 0; j2 < nTri; j2++) { + const idx2 = parseInt(items[nIndexPadding + 3 + j2]); + indices2[f + 0] = idx0; + indices2[f + 1] = idx1; + indices2[f + 2] = idx2; + idx1 = idx2; + f += 3; + } + } + if (indices2.length !== f) { + indices2 = indices2.slice(0, f); + } + return { + positions: positions2, + indices: indices2 + }; + } + if (vertStride < 12 || indexCountBytes < 1 || indexBytes < 1 || nface < 1) { + log.warn( + `Malformed ply format: stride ${vertStride} count ${indexCountBytes} iBytes ${indexBytes} iStrideBytes ${indexStrideBytes} iPadBytes ${indexPaddingBytes} faces ${nface}` + ); + } + const reader = new DataView(buffer); + let positions; + if (pos % 4 === 0 && vertStride === 12 && isLittleEndian) { + positions = new Float32Array(buffer, pos, nvert * 3); + pos += nvert * vertStride; + } else { + positions = new Float32Array(nvert * 3); + let v = 0; + for (let i = 0; i < nvert; i++) { + if (vertIsDouble) { + positions[v] = reader.getFloat64(pos, isLittleEndian); + positions[v + 1] = reader.getFloat64(pos + 8, isLittleEndian); + positions[v + 2] = reader.getFloat64(pos + 16, isLittleEndian); + } else { + positions[v] = reader.getFloat32(pos, isLittleEndian); + positions[v + 1] = reader.getFloat32(pos + 4, isLittleEndian); + positions[v + 2] = reader.getFloat32(pos + 8, isLittleEndian); + } + v += 3; + pos += vertStride; + } + } + const indices = new Uint32Array(nface * 3); + let isTriangular = true; + let j = 0; + if (indexCountBytes === 1 && indexBytes === 4 && indexStrideBytes === 13) { + for (let i = 0; i < nface; i++) { + const nIdx = reader.getUint8(pos); + pos += indexCountBytes; + if (nIdx !== 3) { + isTriangular = false; + } + indices[j] = reader.getUint32(pos, isLittleEndian); + pos += 4; + indices[j + 1] = reader.getUint32(pos, isLittleEndian); + pos += 4; + indices[j + 2] = reader.getUint32(pos, isLittleEndian); + pos += 4; + j += 3; + } + } else { + let startPos = pos; + for (let i = 0; i < nface; i++) { + pos = startPos + indexPaddingBytes; + let nIdx = 0; + if (indexCountBytes === 1) { + nIdx = reader.getUint8(pos); + } else if (indexCountBytes === 2) { + nIdx = reader.getUint16(pos, isLittleEndian); + } else if (indexCountBytes === 4) { + nIdx = reader.getUint32(pos, isLittleEndian); + } + pos += indexCountBytes; + if (nIdx !== 3) { + isTriangular = false; + } + for (let k = 0; k < 3; k++) { + if (indexBytes === 1) { + indices[j] = reader.getUint8(pos); + } else if (indexBytes === 2) { + indices[j] = reader.getUint16(pos, isLittleEndian); + } else if (indexBytes === 4) { + indices[j] = reader.getUint32(pos, isLittleEndian); + } + j++; + pos += indexBytes; + } + startPos += indexStrideBytes; + } + } + if (!isTriangular) { + log.warn("Only able to read PLY meshes limited to triangles."); + } + return { + positions, + indices + }; + } + // readPLY() + // FreeSurfer can convert meshes to ICO/TRI format text files + // https://github.com/dfsp-spirit/freesurferformats/blob/434962608108c75d4337d5e7a5096e3bd4ee6ee6/R/read_fs_surface.R#L1090 + // detect TRI format that uses same extension + // http://paulbourke.net/dataformats/tri/ + static readICO(buffer) { + const enc = new TextDecoder("utf-8"); + const txt = enc.decode(buffer); + const lines = txt.split("\n"); + let header = lines[0].trim().split(/\s+/); + if (header.length > 1) { + log.warn("This is not a valid FreeSurfer ICO/TRI mesh."); + } + const num_v = parseInt(header[0]); + const positions = new Float32Array(num_v * 3); + let line = 1; + for (let i = 0; i < num_v; i++) { + const items = lines[line].trim().split(/\s+/); + line++; + let idx = parseInt(items[0]) - 1; + const x = parseFloat(items[1]); + const y = parseFloat(items[2]); + const z = parseFloat(items[3]); + if (idx < 0 || idx >= num_v) { + log.error("ICO vertices corrupted"); + break; + } + idx *= 3; + positions[idx] = x; + positions[idx + 1] = y; + positions[idx + 2] = z; + } + header = lines[line].trim().split(/\s+/); + line++; + const num_f = parseInt(header[0]); + const indices = new Uint32Array(num_f * 3); + for (let i = 0; i < num_f; i++) { + const items = lines[line].trim().split(/\s+/); + line++; + let idx = parseInt(items[0]) - 1; + const x = parseInt(items[1]) - 1; + const y = parseInt(items[2]) - 1; + const z = parseInt(items[3]) - 1; + if (idx < 0 || idx >= num_f) { + log.error("ICO indices corrupted"); + break; + } + idx *= 3; + indices[idx] = x; + indices[idx + 1] = y; + indices[idx + 2] = z; + } + for (let j = 0; j < indices.length; j += 3) { + const tri = indices[j]; + indices[j] = indices[j + 1]; + indices[j + 1] = tri; + } + return { + positions, + indices + }; + } + // readICO() + // While BYU and FreeSurfer GEO are related + // - BYU can have multiple parts + // - BYU faces not always triangular + // http://www.grahamwideman.com/gw/brain/fs/surfacefileformats.htm#GeoFile + // http://www.eg-models.de/formats/Format_Byu.html + // https://github.com/dfsp-spirit/freesurferformats/blob/dafaf88a601dac90fa3c9aae4432f003f5344546/R/read_fs_surface.R#L924 + // https://github.com/dfsp-spirit/freesurferformats/blob/434962608108c75d4337d5e7a5096e3bd4ee6ee6/R/read_fs_surface.R#L1144 + // n.b. AFNI uses the '.g' extension for this format 'ConvertSurface -i_gii L.surf.gii -o_byu L' + static readGEO(buffer, isFlipWinding = false) { + const enc = new TextDecoder("utf-8"); + const txt = enc.decode(buffer); + const lines = txt.split("\n"); + const header = lines[0].trim().split(/\s+/); + const num_p = parseInt(header[0]); + let num_v = parseInt(header[1]); + let num_f = parseInt(header[2]); + const num_c = parseInt(header[3]); + if (num_p > 1 || num_c !== num_f * 3) { + log.warn("Multi-part BYU/GEO header or not a triangular mesh."); + } + const pts = []; + num_v *= 3; + let v = 0; + let line = 2; + while (v < num_v) { + const items = lines[line].trim().split(/\s+/); + line++; + for (let i = 0; i < items.length; i++) { + pts.push(parseFloat(items[i])); + v++; + if (v >= num_v) { + break; + } + } + } + const t = []; + num_f *= 3; + let f = 0; + while (f < num_f) { + const items = lines[line].trim().split(/\s+/); + line++; + for (let i = 0; i < items.length; i++) { + t.push(Math.abs(parseInt(items[i])) - 1); + f++; + if (f >= num_f) { + break; + } + } + } + if (isFlipWinding) { + for (let j = 0; j < t.length; j += 3) { + const tri = t[j]; + t[j] = t[j + 1]; + t[j + 1] = tri; + } + } + const positions = new Float32Array(pts); + const indices = new Uint32Array(t); + return { + positions, + indices + }; + } + // readGEO() + // read OFF format + // https://en.wikipedia.org/wiki/OFF_(file_format) + static readOFF(buffer) { + const enc = new TextDecoder("utf-8"); + const txt = enc.decode(buffer); + const lines = txt.split("\n"); + const pts = []; + const t = []; + let i = 0; + if (!lines[i].includes("OFF")) { + log.warn("File does not start with OFF"); + } else { + i++; + } + let items = lines[i].trim().split(/\s+/); + const num_v = parseInt(items[0]); + const num_f = parseInt(items[1]); + i++; + for (let j = 0; j < num_v; j++) { + const str6 = lines[i]; + items = str6.trim().split(/\s+/); + pts.push(parseFloat(items[0])); + pts.push(parseFloat(items[1])); + pts.push(parseFloat(items[2])); + i++; + } + for (let j = 0; j < num_f; j++) { + const str6 = lines[i]; + items = str6.trim().split(/\s+/); + const n = parseInt(items[0]); + if (n !== 3) { + log.warn("Only able to read OFF files with triangular meshes"); + } + t.push(parseInt(items[1])); + t.push(parseInt(items[2])); + t.push(parseInt(items[3])); + i++; + } + const positions = new Float32Array(pts); + const indices = new Uint32Array(t); + return { + positions, + indices + }; + } + // readOFF() + static readOBJMNI(buffer) { + const enc = new TextDecoder("utf-8"); + const txt = enc.decode(buffer); + const items = txt.trim().split(/\s*,\s*|\s+/); + if (items.length < 1 || items[0] !== "P") { + log.warn("This is not a valid MNI OBJ mesh."); + } + let j = 6; + const nVert = parseInt(items[j++]); + const nVertX3 = nVert * 3; + const positions = new Float32Array(nVertX3); + for (let i = 0; i < nVertX3; i++) { + positions[i] = parseFloat(items[j++]); + } + j += nVertX3; + const nTri = parseInt(items[j++]); + const colour_flag = parseInt(items[j++]); + if (nTri < 1 || colour_flag < 0 || colour_flag > 2) { + log.warn("This is not a valid MNI OBJ mesh."); + } + let num_c = 1; + if (colour_flag === 1) { + num_c = nTri; + } else if (colour_flag === 1) { + num_c = nVert; + } + j += num_c * 4; + j += nTri; + const nTriX3 = nTri * 3; + const indices = new Uint32Array(nTriX3); + for (let i = 0; i < nTriX3; i++) { + indices[i] = parseInt(items[j++]); + } + return { + positions, + indices + }; + } + // readOBJMNI() + static async readOBJ(buffer) { + const headerBytes = new Uint8Array(buffer, 0, 2); + if (headerBytes[0] === 31 && headerBytes[1] === 139) { + buffer = await NVUtilities.decompressToBuffer(new Uint8Array(buffer)); + } + const enc = new TextDecoder("utf-8"); + const txt = enc.decode(buffer); + if (txt[0] === "P") { + return this.readOBJMNI(buffer); + } + const lines = txt.split("\n"); + const n = lines.length; + const pts = []; + const tris = []; + for (let i = 0; i < n; i++) { + const str6 = lines[i]; + if (str6[0] === "v" && str6[1] === " ") { + const items = str6.trim().split(/\s+/); + pts.push(parseFloat(items[1])); + pts.push(parseFloat(items[2])); + pts.push(parseFloat(items[3])); + } + if (str6[0] === "f") { + const items = str6.trim().split(/\s+/); + const new_t = items.length - 3; + if (new_t < 1) { + break; + } + let tn = items[1].split("/"); + const t0 = parseInt(tn[0]) - 1; + tn = items[2].split("/"); + let tprev = parseInt(tn[0]) - 1; + for (let j = 0; j < new_t; j++) { + tn = items[3 + j].split("/"); + const tcurr = parseInt(tn[0]) - 1; + tris.push(t0); + tris.push(tprev); + tris.push(tcurr); + tprev = tcurr; + } + } + } + const positions = new Float32Array(pts); + const indices = new Uint32Array(tris); + let min4 = indices[0]; + let max5 = indices[0]; + for (let i = 1; i < indices.length; i++) { + if (indices[i] < min4) { + min4 = indices[i]; + } + if (indices[i] > max5) { + max5 = indices[i]; + } + } + if (max5 - min4 + 1 > positions.length / 3) { + throw new Error("Not a valid OBJ file"); + } + for (let i = 0; i < indices.length; i++) { + indices[i] -= min4; + } + return { + positions, + indices + }; + } + // readOBJ() + // read FreeSurfer big endian format + static readFreeSurfer(buffer) { + const bytes = new Uint8Array(buffer); + if (bytes[0] === 35 && bytes[1] === 33 && bytes[2] === 97) { + return _NVMeshLoaders.readASC(buffer); + } + const view = new DataView(buffer); + const sig0 = view.getUint32(0, false); + const sig1 = view.getUint32(4, false); + if (sig0 !== 4294966883 || sig1 !== 1919246708) { + utiltiesLogger.debug("Unable to recognize file type: does not appear to be FreeSurfer format."); + } + let offset = 0; + while (view.getUint8(offset) !== 10) { + offset++; + } + offset += 2; + let nv = view.getUint32(offset, false); + offset += 4; + let nf = view.getUint32(offset, false); + offset += 4; + nv *= 3; + const positions = new Float32Array(nv); + for (let i = 0; i < nv; i++) { + positions[i] = view.getFloat32(offset, false); + offset += 4; + } + nf *= 3; + const indices = new Uint32Array(nf); + for (let i = 0; i < nf; i++) { + indices[i] = view.getUint32(offset, false); + offset += 4; + } + const head0 = view.getUint32(offset, false); + offset += 4; + let isHeadOK = head0 === 20; + if (!isHeadOK) { + const head1 = view.getUint32(offset, false); + offset += 4; + const head2 = view.getUint32(offset, false); + offset += 4; + isHeadOK = head0 === 2 && head1 === 0 && head2 === 20; + } + if (!isHeadOK) { + log.warn("Unknown FreeSurfer Mesh extension code."); + } else { + const footer = new TextDecoder().decode(buffer.slice(offset)).trim(); + const strings = footer.split("\n"); + for (let s = 0; s < strings.length; s++) { + if (!strings[s].startsWith("cras")) { + continue; + } + const cras = strings[s].split("=")[1].trim(); + const FreeSurferTranlate = cras.split(" ").map(Number); + const nvert = Math.floor(positions.length / 3); + let i = 0; + for (let v = 0; v < nvert; v++) { + positions[i] += FreeSurferTranlate[0]; + i++; + positions[i] += FreeSurferTranlate[1]; + i++; + positions[i] += FreeSurferTranlate[2]; + i++; + } + } + } + return { + positions, + indices + }; + } + // readFreeSurfer() + // read brainvoyager SRF format + // https://support.brainvoyager.com/brainvoyager/automation-development/84-file-formats/344-users-guide-2-3-the-format-of-srf-files + static async readSRF(buffer) { + const bytes = new Uint8Array(buffer); + if (bytes[0] === 35 && bytes[1] === 33 && bytes[2] === 97) { + return _NVMeshLoaders.readASC(buffer); + } + if (bytes[0] === 31 && bytes[1] === 139) { + const raw = await NVUtilities.decompress(new Uint8Array(buffer)); + buffer = raw.buffer; + } + const reader = new DataView(buffer); + const ver = reader.getFloat32(0, true); + const nVert = reader.getUint32(8, true); + const nTri = reader.getUint32(12, true); + const oriX = reader.getFloat32(16, true); + const oriY = reader.getFloat32(20, true); + const oriZ = reader.getFloat32(24, true); + const positions = new Float32Array(nVert * 3); + let pos = 28; + let j = 1; + for (let i = 0; i < nVert; i++) { + positions[j] = -reader.getFloat32(pos, true) + oriX; + j += 3; + pos += 4; + } + j = 2; + for (let i = 0; i < nVert; i++) { + positions[j] = -reader.getFloat32(pos, true) + oriY; + j += 3; + pos += 4; + } + j = 0; + for (let i = 0; i < nVert; i++) { + positions[j] = -reader.getFloat32(pos, true) + oriZ; + j += 3; + pos += 4; + } + pos = 28 + 4 * 6 * nVert; + const rVex = reader.getFloat32(pos, true); + const gVex = reader.getFloat32(pos + 4, true); + const bVex = reader.getFloat32(pos + 8, true); + const rCave = reader.getFloat32(pos + 16, true); + const gCave = reader.getFloat32(pos + 20, true); + const bCave = reader.getFloat32(pos + 24, true); + pos += 8 * 4; + const colors = new Float32Array(nVert * 3); + const colorsIdx = new Uint32Array(buffer, pos, nVert); + j = 0; + for (let i = 0; i < nVert; i++) { + const c = colorsIdx[i]; + if (c > 1056964608) { + colors[j + 0] = (c >> 16 & 255) / 255; + colors[j + 1] = (c >> 8 & 255) / 255; + colors[j + 2] = (c & 255) / 255; + } + if (c === 0) { + colors[j + 0] = rVex; + colors[j + 1] = gVex; + colors[j + 2] = bVex; + } + if (c === 1) { + colors[j + 0] = rCave; + colors[j + 1] = gCave; + colors[j + 2] = bCave; + } + j += 3; + } + pos += nVert * 4; + for (let i = 0; i < nVert; i++) { + const nNearest = reader.getUint32(pos, true); + pos += 4 + 4 * nNearest; + } + const indices = new Uint32Array(nTri * 3); + for (let i = 0; i < nTri * 3; i++) { + indices[i] = reader.getInt32(pos, true); + pos += 4; + } + if (ver !== 4) { + log.warn("Not valid SRF"); + } + return { + positions, + indices, + colors + }; + } + // readSRF() + // read STL ASCII format file + // http://paulbourke.net/dataformats/stl/ + static readTxtSTL(buffer) { + const enc = new TextDecoder("utf-8"); + const txt = enc.decode(buffer); + const lines = txt.split("\n"); + if (!lines[0].startsWith("solid")) { + throw new Error("Not a valid STL file"); + } + const pts = []; + for (let i = 1; i < lines.length; i++) { + if (!lines[i].includes("vertex")) { + continue; + } + const items = lines[i].trim().split(/\s+/); + for (let j = 1; j < items.length; j++) { + pts.push(parseFloat(items[j])); + } + } + const npts = Math.floor(pts.length / 3); + if (npts * 3 !== pts.length) { + throw new Error("Unable to parse ASCII STL file."); + } + const positions = new Float32Array(pts); + const indices = new Uint32Array(npts); + for (let i = 0; i < npts; i++) { + indices[i] = i; + } + return { + positions, + indices + }; + } + // readTxtSTL() + // read STL format, nb this format does not reuse vertices + // https://en.wikipedia.org/wiki/STL_(file_format) + static readSTL(buffer) { + if (buffer.byteLength < 80 + 4 + 50) { + throw new Error("File too small to be STL: bytes = " + buffer.byteLength); + } + const reader = new DataView(buffer); + const sig = reader.getUint32(0, true); + if (sig === 1768714099) { + return _NVMeshLoaders.readTxtSTL(buffer); + } + const ntri = reader.getUint32(80, true); + const ntri3 = 3 * ntri; + if (buffer.byteLength < 80 + 4 + ntri * 50) { + throw new Error("STL file too small to store triangles = " + ntri); + } + const indices = new Uint32Array(ntri3); + const positions = new Float32Array(ntri3 * 3); + let pos = 80 + 4 + 12; + let v = 0; + for (let i = 0; i < ntri; i++) { + for (let j = 0; j < 9; j++) { + positions[v] = reader.getFloat32(pos, true); + v += 1; + pos += 4; + } + pos += 14; + } + for (let i = 0; i < ntri3; i++) { + indices[i] = i; + } + return { + positions, + indices + }; + } + // readSTL() + static decimateLayerVertices(nVertLayer, nVertMesh) { + if (nVertLayer % nVertMesh === 0) { + return nVertLayer; + } + const V0 = 12; + const orderLayer = Math.round(Math.log((nVertLayer - 2) / (V0 - 2)) / Math.log(4)); + const orderMesh = Math.round(Math.log((nVertMesh - 2) / (V0 - 2)) / Math.log(4)); + const nVLayer = Math.pow(4, orderLayer) * (V0 - 2) + 2; + const nVMesh = Math.pow(4, orderMesh) * (V0 - 2) + 2; + if (nVLayer !== nVertLayer || nVMesh !== nVertMesh) { + return nVertLayer; + } + return nVertMesh; + } + // read NIfTI2 format with embedded CIfTI + // this variation very specific to connectome workbench + // https://brainder.org/2015/04/03/the-nifti-2-file-format/ + static async readNII2(buffer, n_vert = 0, anatomicalStructurePrimary = "") { + let scalars = new Float32Array(); + const len4 = buffer.byteLength; + let isLittleEndian = true; + const reader = new DataView(buffer); + let magic = reader.getUint16(0, isLittleEndian); + if (magic === 469893120) { + isLittleEndian = false; + magic = reader.getUint16(0, isLittleEndian); + } + if (magic !== 540) { + throw new Error("Not a valid NIfTI-2 dataset"); + } + const voxoffset = Number(reader.getBigInt64(168, isLittleEndian)); + const scl_slope = reader.getFloat64(176, isLittleEndian); + const scl_inter = reader.getFloat64(184, isLittleEndian); + if (scl_slope !== 1 || scl_inter !== 0) { + log.warn("ignoring scale slope and intercept"); + } + const intent_code = reader.getUint32(504, isLittleEndian); + const datatype = reader.getUint16(12, isLittleEndian); + if (datatype !== 2 && datatype !== 4 && datatype !== 8 && datatype !== 16) { + throw new Error("Unsupported NIfTI datatype " + datatype); + } + let nvert = 1; + const dim = [1, 1, 1, 1, 1, 1, 1, 1]; + for (let i = 1; i < 8; i++) { + dim[i] = Math.max(Number(reader.getBigInt64(16 + i * 8, isLittleEndian)), 1); + nvert *= dim[i]; + } + if (intent_code >= 3e3 && intent_code <= 3099 && voxoffset > 580) { + let readStrX = function() { + while (pos < len4 && bytes[pos] === 10) { + pos++; + } + const startPos = pos; + while (pos < len4 && bytes[pos] !== 10) { + pos++; + } + pos++; + if (pos - startPos < 1) { + return ""; + } + return new TextDecoder().decode(buffer.slice(startPos, pos - 1)).trim(); + }, readStr = function() { + let line2 = readStrX(); + if (!line2.startsWith("<") || line2.endsWith(">")) { + return line2; + } + while (pos < len4 && !line2.endsWith(">")) { + line2 += readStrX(); + } + return line2; + }, readNumericTag = function(TagName, asString = false) { + const tpos = line.indexOf(TagName); + if (tpos < 0) { + return 1; + } + const spos = line.indexOf('"', tpos) + 1; + const epos = line.indexOf('"', spos); + const str6 = line.slice(spos, epos); + if (asString) { + return str6; + } + return parseInt(str6); + }; + let indexOffset = 0; + let indexCount = 0; + let surfaceNumberOfVertices = 0; + let brainStructure = ""; + let vertexIndices = new Uint32Array(); + const bytes = new Uint8Array(buffer); + let pos = 552; + let line; + const nFrame4D = dim[5]; + const scalars2 = new Float32Array(n_vert * nFrame4D); + while (pos < len4) { + line = readStr(); + if (line.includes("")) { + break; + } + if (line.includes("")) { + line = readStr(); + } + if (!line.startsWith("") || !line.endsWith("")) { + log.warn("Unable to find CIfTI "); + return scalars2; + } + line = line.slice(15, -16); + const items = line.trim().split(/\s+/); + if (items.length < indexCount) { + log.error("Error parsing VertexIndices"); + } + vertexIndices = new Uint32Array(indexCount); + for (let i = 0; i < indexCount; i++) { + vertexIndices[i] = parseInt(items[i]); + } + } + } + if (surfaceNumberOfVertices === 0 || vertexIndices.length === 0) { + log.warn("Unable to find CIfTI structure that matches the mesh."); + return scalars2; + } + if (datatype !== 16) { + log.warn("Only able to read float32 CIfTI (only known datatype)."); + return scalars2; + } + const vals = new Float32Array(indexCount * nFrame4D); + const off = voxoffset + nFrame4D * indexOffset * 4; + for (let i = 0; i < indexCount * nFrame4D; i++) { + vals[i] = reader.getFloat32(off + i * 4, isLittleEndian); + } + let j = 0; + for (let i = 0; i < indexCount; i++) { + for (let f = 0; f < nFrame4D; f++) { + scalars2[vertexIndices[i] + f * n_vert] = vals[j]; + j++; + } + } + log.debug( + "CIfTI diagnostics", + surfaceNumberOfVertices, + brainStructure, + indexOffset, + indexCount, + indexOffset, + anatomicalStructurePrimary + ); + return scalars2; + } + nvert = this.decimateLayerVertices(nvert, n_vert); + if (nvert % n_vert !== 0) { + throw new Error("Vertices in layer (" + nvert + ") is not a multiple of number of vertices (" + n_vert + ")"); + } + if (isLittleEndian) { + if (datatype === 16) { + scalars = new Float32Array(buffer, voxoffset, nvert); + } else if (datatype === 8) { + scalars = new Int32Array(buffer, voxoffset, nvert); + } else if (datatype === 4) { + scalars = new Int16Array(buffer, voxoffset, nvert); + } + } else { + if (datatype === 16) { + scalars = new Float32Array(nvert); + for (let i = 0; i < nvert; i++) { + scalars[i] = reader.getFloat32(voxoffset + i * 4, isLittleEndian); + } + } else if (datatype === 8) { + scalars = new Int32Array(nvert); + for (let i = 0; i < nvert; i++) { + scalars[i] = reader.getInt32(voxoffset + i * 4, isLittleEndian); + } + } else if (datatype === 4) { + scalars = new Int16Array(nvert); + for (let i = 0; i < nvert; i++) { + scalars[i] = reader.getInt16(voxoffset + i * 2, isLittleEndian); + } + } + } + if (datatype === 2) { + scalars = new Uint8Array(buffer, voxoffset, nvert); + } + return scalars; + } + // readNII2() + // read NIfTI1/2 as vertex colors + // https://brainder.org/2012/09/23/the-nifti-file-format/#:~:text=In%20the%20nifti%20format%2C%20the,seventh%2C%20are%20for%20other%20uses. + static async readNII(buffer, pts, anatomicalStructurePrimary = "") { + const n_mesh_vert = pts.length / 3; + let scalars = new Float32Array(); + let isLittleEndian = true; + let reader = new DataView(buffer); + let magic = reader.getUint16(0, isLittleEndian); + if (magic === 540 || magic === 469893120) { + return _NVMeshLoaders.readNII2(buffer, n_mesh_vert, anatomicalStructurePrimary); + } + if (magic === 23553) { + isLittleEndian = false; + magic = reader.getUint16(0, isLittleEndian); + } + if (magic !== 348) { + const raw = await NVUtilities.decompress(new Uint8Array(buffer)); + reader = new DataView(raw.buffer); + buffer = raw.buffer; + magic = reader.getUint16(0, isLittleEndian); + if (magic === 540 || magic === 469893120) { + return _NVMeshLoaders.readNII2(buffer, n_mesh_vert, anatomicalStructurePrimary); + } + if (magic === 23553) { + isLittleEndian = false; + magic = reader.getUint16(0, isLittleEndian); + } + } + if (magic !== 348) { + log.error("Not a valid NIfTI image."); + } + const voxoffset = reader.getFloat32(108, isLittleEndian); + const scl_slope = reader.getFloat32(112, isLittleEndian); + const scl_inter = reader.getFloat32(116, isLittleEndian); + const qform_code = reader.getUint16(252, isLittleEndian); + const sform_code = reader.getUint16(254, isLittleEndian); + const datatype = reader.getUint16(70, isLittleEndian); + if (datatype !== 2 && datatype !== 4 && datatype !== 8 && datatype !== 16) { + throw new Error("Unsupported NIfTI datatype " + datatype); + } + const sform = mat4_exports.create(); + for (let i = 0; i < 12; i++) { + sform[i] = reader.getFloat32(280 + i * 4, isLittleEndian); + } + let n_vox = 1; + const dim = new Array(8); + for (let i = 0; i < 8; i++) { + dim[i] = reader.getUint16(40 + i * 2, isLittleEndian); + if (i < 1) { + continue; + } + n_vox *= dim[i] || 1; + } + let is3D = false; + let nvertD = this.decimateLayerVertices(n_vox, n_mesh_vert); + if (nvertD % n_mesh_vert !== 0) { + if (dim[0] >= 3 && dim[1] > 1 && dim[2] > 1 && dim[3] > 1) { + is3D = true; + nvertD = dim[1] * dim[2] * dim[3]; + } else { + throw new Error("Voxels in layer (" + n_vox + ") is not a multiple of number of vertices (" + n_mesh_vert + ")"); + } + } + n_vox = nvertD; + if (isLittleEndian) { + if (datatype === 16) { + scalars = new Float32Array(buffer, voxoffset, n_vox); + } else if (datatype === 8) { + scalars = new Int32Array(buffer, voxoffset, n_vox); + } else if (datatype === 4) { + scalars = new Int16Array(buffer, voxoffset, n_vox); + } + } else { + if (datatype === 16) { + scalars = new Float32Array(n_vox); + for (let i = 0; i < n_vox; i++) { + scalars[i] = reader.getFloat32(voxoffset + i * 4, isLittleEndian); + } + } else if (datatype === 8) { + scalars = new Int32Array(n_vox); + for (let i = 0; i < n_vox; i++) { + scalars[i] = reader.getInt32(voxoffset + i * 4, isLittleEndian); + } + } else if (datatype === 4) { + scalars = new Int16Array(n_vox); + for (let i = 0; i < n_vox; i++) { + scalars[i] = reader.getInt16(voxoffset + i * 2, isLittleEndian); + } + } + } + if (datatype === 2) { + scalars = new Uint8Array(buffer, voxoffset, n_vox); + } + if (scl_slope !== 1 || scl_inter !== 0) { + const f32 = new Float32Array(n_vox); + for (let i = 0; i < n_vox; i++) { + f32[i] = scalars[i] * scl_slope + scl_inter; + } + scalars = f32; + } + for (let i = 0; i < n_vox; i++) { + if (isNaN(scalars[i])) { + scalars[i] = 0; + } + } + if (is3D) { + let transformMat4homogeneous = function(xyz, m) { + const out = [0, 0, 0]; + out[0] = m[0] * xyz[0] + m[1] * xyz[1] + m[2] * xyz[2] + m[3]; + out[1] = m[4] * xyz[0] + m[5] * xyz[1] + m[6] * xyz[2] + m[7]; + out[2] = m[8] * xyz[0] + m[9] * xyz[1] + m[10] * xyz[2] + m[11]; + return out; + }; + const f32 = new Float32Array(n_vox); + log.warn("Sampling voxel intensities at mesh vertices (assumes precise alignment)."); + if (qform_code > sform_code || sform_code <= 0) { + log.warn(`Requires valid sform (sform_code = ${sform_code})`); + } + const sformInv = mat4_exports.create(); + mat4_exports.invert(sformInv, sform); + const nx = dim[1]; + const ny = dim[2]; + const nz = dim[3]; + const nxy = nx * ny; + let j = 0; + let k = 0; + let nOK = 0; + while (k < n_mesh_vert) { + const xyz = [pts[j], pts[j + 1], pts[j + 2]]; + const ijk = transformMat4homogeneous(xyz, sformInv); + j += 3; + k += 1; + const ixf = Math.floor(ijk[0]); + const iyf = Math.floor(ijk[1]); + const izf = Math.floor(ijk[2]); + const ixc = Math.ceil(ijk[0]); + const iyc = Math.ceil(ijk[1]); + const izc = Math.ceil(ijk[2]); + if (ixf < 0 || ixc >= nx || iyf < 0 || iyc >= ny || izf < 0 || izc >= nz) { + continue; + } + const base = ixf + iyf * nx + izf * nxy; + const vs = new Float32Array(8); + vs[0] = scalars[base]; + vs[1] = scalars[base + 1]; + vs[2] = scalars[base + nx]; + vs[3] = scalars[base + nx + 1]; + vs[4] = scalars[base + nxy]; + vs[5] = scalars[base + nxy + 1]; + vs[6] = scalars[base + nxy + nx]; + vs[7] = scalars[base + nxy + nx + 1]; + let maxv = vs[0]; + let minv = maxv; + for (let i = 1; i < 8; i++) { + maxv = Math.max(maxv, vs[i]); + minv = Math.min(minv, vs[i]); + } + if (Math.abs(minv) > maxv) { + maxv = minv; + } + f32[k - 1] = maxv; + nOK++; + } + const fractionOK = nOK / n_mesh_vert; + if (fractionOK < 0.1) { + log.warn(`${nOK} of ${n_mesh_vert} vertices in range (${(fractionOK * 100).toFixed(1)}%)`); + } + scalars = f32; + } + return scalars; + } + // readNII(); + // read MGH format as vertex colors (not voxel-based image) + // https://surfer.nmr.mgh.harvard.edu/fswiki/FsTutorial/MghFormat + static async readMGH(buffer, n_vert = 0, isReadColortables = false) { + let reader = new DataView(buffer); + let raw = buffer; + if (reader.getUint8(0) === 31 && reader.getUint8(1) === 139) { + const decompressed = await NVUtilities.decompress(new Uint8Array(buffer)); + raw = new ArrayBuffer(decompressed.byteLength); + new Uint8Array(raw).set(new Uint8Array(decompressed)); + reader = new DataView(decompressed.buffer); + } + const version2 = reader.getInt32(0, false); + const width = Math.max(1, reader.getInt32(4, false)); + const height = Math.max(1, reader.getInt32(8, false)); + const depth = Math.max(1, reader.getInt32(12, false)); + const nframes = Math.max(1, reader.getInt32(16, false)); + const mtype = reader.getInt32(20, false); + let voxoffset = 284; + const isLittleEndian = false; + if (version2 !== 1 || mtype < 0 || mtype > 4) { + log.warn("Not a valid MGH file"); + } + let nvert = width * height * depth * nframes; + let scalars = []; + nvert = this.decimateLayerVertices(nvert, n_vert); + if (nvert % n_vert !== 0) { + log.warn("Vertices in layer (" + nvert + ") is not a multiple of number of vertices (" + n_vert + ")"); + return scalars; + } + if (mtype === 3) { + scalars = new Float32Array(nvert); + for (let i = 0; i < nvert; i++) { + scalars[i] = reader.getFloat32(voxoffset + i * 4, isLittleEndian); + } + } else if (mtype === 1) { + scalars = new Int32Array(nvert); + for (let i = 0; i < nvert; i++) { + scalars[i] = reader.getInt32(voxoffset + i * 4, isLittleEndian); + } + } else if (mtype === 4) { + scalars = new Int16Array(nvert); + for (let i = 0; i < nvert; i++) { + scalars[i] = reader.getInt16(voxoffset + i * 2, isLittleEndian); + } + } else if (mtype === 0) { + scalars = new Uint8Array(buffer, voxoffset, nvert); + } + if (!isReadColortables) { + return scalars; + } + let bytesPerVertex = 4; + if (mtype === 4) { + bytesPerVertex = 2; + } + if (mtype === 0) { + bytesPerVertex = 1; + } + voxoffset += bytesPerVertex * nvert; + voxoffset += 4 * 4; + const TAG_OLD_COLORTABLE = 1; + const TAG_OLD_USEREALRAS = 2; + const TAG_OLD_SURF_GEOM = 20; + const TAG_OLD_MGH_XFORM = 30; + const nBytes = raw.byteLength; + let colormapLabel; + while (voxoffset < nBytes - 8) { + const tagType = reader.getInt32(voxoffset += 4, isLittleEndian); + let plen = 0; + switch (tagType) { + case TAG_OLD_MGH_XFORM: + plen = reader.getInt32(voxoffset += 4, isLittleEndian) - 1; + break; + case TAG_OLD_SURF_GEOM: + // these don't take lengths at all + case TAG_OLD_USEREALRAS: + plen = 0; + break; + case TAG_OLD_COLORTABLE: + plen = 0; + { + let version3 = reader.getInt32(voxoffset += 4, isLittleEndian); + if (version3 > 0) { + log.warn("unsupported CTABreadFromBinaryV1"); + return scalars; + } + version3 = -version3; + if (version3 !== 2) { + log.warn("CTABreadFromBinary: unknown version"); + return scalars; + } + const nentries = reader.getInt32(voxoffset += 4, isLittleEndian); + if (nentries < 0) { + log.warn("CTABreadFromBinaryV2: nentries was ", nentries); + return scalars; + } + const len4 = reader.getInt32(voxoffset += 4, isLittleEndian); + voxoffset += len4; + const num_entries_to_read = reader.getInt32(voxoffset += 4, isLittleEndian); + if (num_entries_to_read < 0) { + return scalars; + } + const Labels = { R: [], G: [], B: [], A: [], I: [], labels: [] }; + for (let i = 0; i < num_entries_to_read; i++) { + const structure = reader.getInt32(voxoffset += 4, isLittleEndian); + const labelLen = reader.getInt32(voxoffset += 4, isLittleEndian); + let pos = voxoffset + 4; + let txt = ""; + for (let c = 0; c < labelLen; c++) { + const val = reader.getUint8(pos++); + if (val === 0) { + break; + } + txt += String.fromCharCode(val); + } + voxoffset += labelLen; + const R = reader.getInt32(voxoffset += 4, isLittleEndian); + const G = reader.getInt32(voxoffset += 4, isLittleEndian); + const B = reader.getInt32(voxoffset += 4, isLittleEndian); + const A = 255 - reader.getInt32(voxoffset += 4, isLittleEndian); + Labels.I.push(structure); + Labels.R.push(R); + Labels.G.push(G); + Labels.B.push(B); + Labels.A.push(A); + Labels.labels.push(txt); + } + colormapLabel = cmapper.makeLabelLut(Labels); + } + break; + default: + plen = reader.getInt32(voxoffset += 8, isLittleEndian); + } + voxoffset += plen; + } + return { + scalars, + colormapLabel + // TODO can we guarantee this? + }; + } + // readMGH() + // read X3D format mesh + // https://en.wikipedia.org/wiki/X3D + static readX3D(buffer) { + const len4 = buffer.byteLength; + if (len4 < 20) { + throw new Error("File too small to be X3D: bytes = " + len4); + } + const bytes = new Uint8Array(buffer); + let pos = 0; + function readStr() { + while (pos < len4 && bytes[pos] !== 60) { + pos++; + } + const startP = pos; + while (pos < len4 && bytes[pos] !== 62) { + pos++; + } + const endP = pos; + return new TextDecoder().decode(buffer.slice(startP, endP + 1)).trim(); + } + let line = readStr(); + function readStringTag(TagName) { + const fpos = line.indexOf(TagName + "="); + if (fpos < 0) { + return ""; + } + const delimiter = line[fpos + TagName.length + 1]; + const spos = line.indexOf(delimiter, fpos) + 1; + const epos = line.indexOf(delimiter, spos); + return line.slice(spos, epos); + } + function readNumericTag(TagName) { + const fpos = line.indexOf(TagName + "="); + if (fpos < 0) { + return 1; + } + const delimiter = line[fpos + TagName.length + 1]; + const spos = line.indexOf(delimiter, fpos) + 1; + const epos = line.indexOf(delimiter, spos); + let str6 = line.slice(spos, epos).trim(); + str6 = str6.replace(/,\s*$/, ""); + const items = str6.trim().split(/\s*,\s*|\s+/); + if (items.length < 2) { + return parseFloat(str6); + } + let ret = new Array(items.length); + let j = 0; + for (let i = 0; i < items.length; i++) { + const v = parseFloat(items[i]); + if (!isFinite(v)) { + continue; + } + ret[j] = v; + j++; + } + ret = ret.slice(0, j); + return ret; + } + if (!line.includes("xml version")) { + log.warn("Not a X3D image"); + } + let positions = []; + let indices = []; + let rgba255 = []; + let color = []; + let translation = [0, 0, 0, 0]; + let rotation = [0, 0, 0, 0]; + let rgba = [255, 255, 255, 255]; + let rgbaGlobal = [255, 255, 255, 255]; + const appearanceStyles = {}; + function readAppearance() { + if (!line.endsWith("/>")) { + if (line.startsWith("")) { + while (pos < len4 && !line.endsWith("")) { + line += readStr(); + } + } else { + while (pos < len4 && !line.endsWith("/>")) { + line += readStr(); + } + } + } + const ref = readStringTag("USE"); + if (ref.length > 1) { + if (ref in appearanceStyles) { + rgba = appearanceStyles[ref]; + } else { + log.warn("Unable to find DEF for " + ref); + } + return; + } + const diffuseColor = readNumericTag("diffuseColor"); + if (diffuseColor.length < 3) { + return; + } + rgba[0] = Math.round(diffuseColor[0] * 255); + rgba[1] = Math.round(diffuseColor[1] * 255); + rgba[2] = Math.round(diffuseColor[2] * 255); + const def = readStringTag("DEF"); + if (def.length < 1) { + return; + } + appearanceStyles[def] = rgba; + } + while (pos < len4) { + line = readStr(); + rgba = rgbaGlobal.slice(); + if (line.startsWith("= 0) { + indices.push(coordIndex[triStart] + idx0); + indices.push(coordIndex[j - 1] + idx0); + indices.push(coordIndex[j - 0] + idx0); + j += 1; + } else { + j += 3; + triStart = j - 2; + } + } + } else { + while (j < coordIndex.length) { + if (coordIndex[j] >= 0) { + indices.push(coordIndex[j - 2] + idx0); + indices.push(coordIndex[j - 1] + idx0); + indices.push(coordIndex[j - 0] + idx0); + j += 1; + } else { + j += 3; + } + } + } + positions = [...positions, ...point]; + const npt = Math.floor(point.length / 3); + const rgbas = Array(npt).fill(rgba).flat(); + if (color.length === npt * 3) { + let c3 = 0; + let c4 = 0; + for (let i = 0; i < npt; i++) { + for (let j2 = 0; j2 < 3; j2++) { + rgbas[c4] = Math.round(color[c3] * 255); + c3++; + c4++; + } + c4++; + } + } + rgba255 = [...rgba255, ...rgbas]; + } else if (height < 0) { + NiivueObject3D.makeColoredSphere(positions, indices, rgba255, radius, translation, rgba); + } else { + const r = mat4_exports.create(); + mat4_exports.fromRotation(r, rotation[3], [rotation[0], rotation[1], rotation[2]]); + const pti = vec4_exports.fromValues(0, -height * 0.5, 0, 1); + const ptj = vec4_exports.fromValues(0, +height * 0.5, 0, 1); + vec4_exports.transformMat4(pti, pti, r); + vec4_exports.transformMat4(ptj, ptj, r); + vec4_exports.add(pti, pti, translation); + vec4_exports.add(ptj, ptj, translation); + const pti3 = vec3_exports.fromValues(pti[0], pti[1], pti[2]); + const ptj3 = vec3_exports.fromValues(ptj[0], ptj[1], ptj[2]); + NiivueObject3D.makeColoredCylinder(positions, indices, rgba255, pti3, ptj3, radius, rgba); + } + } + } + return { + positions: Float32Array.from(positions), + indices: Uint32Array.from(indices), + rgba255: Uint8Array.from(rgba255) + }; + } + // readX3D() + // read GIfTI format mesh + // https://www.nitrc.org/projects/gifti/ + static async readGII(buffer, n_vert = 0) { + let len4 = buffer.byteLength; + if (len4 < 20) { + throw new Error("File too small to be GII: bytes = " + len4); + } + let chars = new TextDecoder("ascii").decode(buffer); + if (chars[0].charCodeAt(0) === 31) { + const raw = await NVUtilities.decompress(new Uint8Array(buffer)); + buffer = raw.buffer; + chars = new TextDecoder("ascii").decode(raw.buffer); + } + let pos = 0; + function readXMLtag() { + let isEmptyTag = true; + let startPos = pos; + while (isEmptyTag) { + while (pos < len4 && chars[pos] !== "<") { + pos++; + } + startPos = pos; + while (pos < len4 && chars[pos] !== ">") { + pos++; + } + isEmptyTag = chars[pos - 1] === "/"; + if (startPos + 1 < len4 && chars[startPos + 1] === "/") { + pos += 1; + isEmptyTag = true; + } + if (pos >= len4) { + break; + } + } + const tagString = new TextDecoder().decode(buffer.slice(startPos + 1, pos)).trim(); + const startTag = tagString.split(" ")[0].trim(); + const contentStartPos = pos; + let contentEndPos = pos; + let endPos = pos; + if (chars[startPos + 1] !== "?" && chars[startPos + 1] !== "!") { + const endTag = ""; + contentEndPos = chars.indexOf(endTag, contentStartPos); + endPos = contentEndPos + endTag.length - 1; + } + return { + name: tagString, + startPos, + contentStartPos, + contentEndPos, + endPos + }; + } + let tag = readXMLtag(); + if (!tag.name.startsWith("?xml")) { + throw new Error("readGII: Invalid XML file"); + } + while (!tag.name.startsWith("GIFTI") && tag.endPos < len4) { + tag = readXMLtag(); + } + if (!tag.name.startsWith("GIFTI") || tag.contentStartPos === tag.contentEndPos) { + throw new Error("readGII: XML file does not include GIFTI tag"); + } + len4 = tag.contentEndPos; + let positions = new Float32Array(); + let indices = new Uint32Array(); + let scalars = new Float32Array(); + let anatomicalStructurePrimary = ""; + let isIdx = false; + let isPts = false; + let isVectors = false; + let isColMajor = false; + let Dims = [1, 1, 1]; + const FreeSurferTranlate = [0, 0, 0]; + let dataType = 0; + let isGzip = false; + let isASCII = false; + let nvert = 0; + let isDataSpaceScanner = false; + tag.endPos = tag.contentStartPos; + let line = ""; + function readNumericTag(TagName, isFloat = false) { + const pos2 = line.indexOf(TagName); + if (pos2 < 0) { + return 1; + } + const spos = line.indexOf('"', pos2) + 1; + const epos = line.indexOf('"', spos); + const str6 = line.slice(spos, epos); + if (isFloat) { + return parseFloat(str6); + } else { + return parseInt(str6); + } + } + function readBracketTag(TagName) { + const pos2 = line.indexOf(TagName); + if (pos2 < 0) { + return ""; + } + const spos = pos2 + TagName.length; + const epos = line.indexOf("]", spos); + return line.slice(spos, epos); + } + const Labels = { R: [], G: [], B: [], A: [], I: [], labels: [] }; + while (tag.endPos < len4 && tag.name.length > 1) { + tag = readXMLtag(); + if (tag.name.startsWith("Label Key")) { + line = tag.name; + Labels.I.push(readNumericTag("Key=")); + Labels.R.push(Math.round(255 * readNumericTag("Red=", true))); + Labels.G.push(Math.round(255 * readNumericTag("Green=", true))); + Labels.B.push(Math.round(255 * readNumericTag("Blue=", true))); + Labels.A.push(Math.round(255 * readNumericTag("Alpha", true))); + line = new TextDecoder().decode(buffer.slice(tag.contentStartPos + 1, tag.contentEndPos)).trim(); + Labels.labels.push(readBracketTag(" 1) { + const hasAlpha = Labels.A.some((a) => a > 0); + if (!hasAlpha) { + Labels.A.fill(255); + } + colormapLabel = cmapper.makeLabelLut(Labels); + } + if (n_vert > 0) { + return { scalars, colormapLabel, anatomicalStructurePrimary }; + } + if (positions.length > 2 && !isDataSpaceScanner && (FreeSurferTranlate[0] !== 0 || FreeSurferTranlate[1] !== 0 || FreeSurferTranlate[2] !== 0)) { + nvert = Math.floor(positions.length / 3); + let i = 0; + for (let v = 0; v < nvert; v++) { + positions[i] += FreeSurferTranlate[0]; + i++; + positions[i] += FreeSurferTranlate[1]; + i++; + positions[i] += FreeSurferTranlate[2]; + i++; + } + } + return { + positions, + indices, + scalars, + colormapLabel, + anatomicalStructurePrimary + }; + } + // readGII() +}; + +// src/nvlabel.ts +var LabelTextAlignment = /* @__PURE__ */ ((LabelTextAlignment2) => { + LabelTextAlignment2["LEFT"] = "left"; + LabelTextAlignment2["RIGHT"] = "right"; + LabelTextAlignment2["CENTER"] = "center"; + return LabelTextAlignment2; +})(LabelTextAlignment || {}); +var LabelLineTerminator = /* @__PURE__ */ ((LabelLineTerminator2) => { + LabelLineTerminator2["NONE"] = "none"; + LabelLineTerminator2["CIRCLE"] = "circle"; + LabelLineTerminator2["RING"] = "ring"; + return LabelLineTerminator2; +})(LabelLineTerminator || {}); +var LabelAnchorPoint = /* @__PURE__ */ ((LabelAnchorPoint2) => { + LabelAnchorPoint2[LabelAnchorPoint2["NONE"] = 0 /* NONE */] = "NONE"; + LabelAnchorPoint2[LabelAnchorPoint2["TOPLEFT"] = 9] = "TOPLEFT"; + LabelAnchorPoint2[LabelAnchorPoint2["TOPCENTER"] = 10] = "TOPCENTER"; + LabelAnchorPoint2[LabelAnchorPoint2["TOPRIGHT"] = 12] = "TOPRIGHT"; + LabelAnchorPoint2[LabelAnchorPoint2["MIDDLELEFT"] = 17] = "MIDDLELEFT"; + LabelAnchorPoint2[LabelAnchorPoint2["MIDDLECENTER"] = 18] = "MIDDLECENTER"; + LabelAnchorPoint2[LabelAnchorPoint2["MIDDLERIGHT"] = 20] = "MIDDLERIGHT"; + LabelAnchorPoint2[LabelAnchorPoint2["BOTTOMLEFT"] = 33] = "BOTTOMLEFT"; + LabelAnchorPoint2[LabelAnchorPoint2["BOTTOMCENTER"] = 34] = "BOTTOMCENTER"; + LabelAnchorPoint2[LabelAnchorPoint2["BOTTOMRIGHT"] = 36] = "BOTTOMRIGHT"; + return LabelAnchorPoint2; +})(LabelAnchorPoint || {}); +var NVLabel3DStyle = class { + /** + * @param textColor - Color of text + * @param textScale - Text Size (0.0..1.0) + * @param lineWidth - Line width + * @param lineColor - Line color + * @param bulletScale - Bullet size respective of text + * @param bulletColor - Bullet color + * @param backgroundColor - Background color of label + */ + constructor(textColor = [1, 1, 1, 1], textScale = 1, textAlignment = "left" /* LEFT */, lineWidth = 0, lineColor = [0, 0, 0], lineTerminator = "none" /* NONE */, bulletScale, bulletColor, backgroundColor) { + __publicField(this, "textColor"); + __publicField(this, "textScale"); + __publicField(this, "textAlignment"); + __publicField(this, "lineWidth"); + __publicField(this, "lineColor"); + __publicField(this, "lineTerminator"); + __publicField(this, "bulletScale"); + __publicField(this, "bulletColor"); + __publicField(this, "backgroundColor"); + this.textColor = textColor; + this.textScale = textScale; + this.textAlignment = textAlignment; + this.lineWidth = lineWidth; + this.lineColor = lineColor; + this.lineTerminator = lineTerminator; + this.bulletScale = bulletScale; + this.bulletColor = bulletColor; + this.backgroundColor = backgroundColor; + } +}; +var NVLabel3D = class { + /** + * @param text - The text of the label + * @param style - The style of the label + * @param points - An array of points label for label lines + */ + constructor(text, style, points, anchor, onClick) { + __publicField(this, "text"); + __publicField(this, "style"); + __publicField(this, "points"); + __publicField(this, "anchor"); + __publicField(this, "onClick"); + this.text = text; + this.style = style; + this.points = points; + this.anchor = anchor || 0 /* NONE */; + this.onClick = onClick; + } +}; + +// ../../node_modules/@ungap/structured-clone/esm/types.js +var VOID = -1; +var PRIMITIVE = 0; +var ARRAY = 1; +var OBJECT = 2; +var DATE = 3; +var REGEXP = 4; +var MAP = 5; +var SET = 6; +var ERROR = 7; +var BIGINT = 8; + +// ../../node_modules/@ungap/structured-clone/esm/deserialize.js +var env = typeof self === "object" ? self : globalThis; +var deserializer = ($, _) => { + const as = (out, index) => { + $.set(index, out); + return out; + }; + const unpair = (index) => { + if ($.has(index)) + return $.get(index); + const [type, value] = _[index]; + switch (type) { + case PRIMITIVE: + case VOID: + return as(value, index); + case ARRAY: { + const arr = as([], index); + for (const index2 of value) + arr.push(unpair(index2)); + return arr; + } + case OBJECT: { + const object = as({}, index); + for (const [key, index2] of value) + object[unpair(key)] = unpair(index2); + return object; + } + case DATE: + return as(new Date(value), index); + case REGEXP: { + const { source, flags } = value; + return as(new RegExp(source, flags), index); + } + case MAP: { + const map = as(/* @__PURE__ */ new Map(), index); + for (const [key, index2] of value) + map.set(unpair(key), unpair(index2)); + return map; + } + case SET: { + const set7 = as(/* @__PURE__ */ new Set(), index); + for (const index2 of value) + set7.add(unpair(index2)); + return set7; + } + case ERROR: { + const { name, message } = value; + return as(new env[name](message), index); + } + case BIGINT: + return as(BigInt(value), index); + case "BigInt": + return as(Object(BigInt(value)), index); + case "ArrayBuffer": + return as(new Uint8Array(value).buffer, value); + case "DataView": { + const { buffer } = new Uint8Array(value); + return as(new DataView(buffer), value); + } + } + return as(new env[type](value), index); + }; + return unpair; +}; +var deserialize = (serialized) => deserializer(/* @__PURE__ */ new Map(), serialized)(0); + +// ../../node_modules/@ungap/structured-clone/esm/serialize.js +var EMPTY = ""; +var { toString } = {}; +var { keys } = Object; +var typeOf = (value) => { + const type = typeof value; + if (type !== "object" || !value) + return [PRIMITIVE, type]; + const asString = toString.call(value).slice(8, -1); + switch (asString) { + case "Array": + return [ARRAY, EMPTY]; + case "Object": + return [OBJECT, EMPTY]; + case "Date": + return [DATE, EMPTY]; + case "RegExp": + return [REGEXP, EMPTY]; + case "Map": + return [MAP, EMPTY]; + case "Set": + return [SET, EMPTY]; + case "DataView": + return [ARRAY, asString]; + } + if (asString.includes("Array")) + return [ARRAY, asString]; + if (asString.includes("Error")) + return [ERROR, asString]; + return [OBJECT, asString]; +}; +var shouldSkip = ([TYPE, type]) => TYPE === PRIMITIVE && (type === "function" || type === "symbol"); +var serializer = (strict, json, $, _) => { + const as = (out, value) => { + const index = _.push(out) - 1; + $.set(value, index); + return index; + }; + const pair = (value) => { + if ($.has(value)) + return $.get(value); + let [TYPE, type] = typeOf(value); + switch (TYPE) { + case PRIMITIVE: { + let entry = value; + switch (type) { + case "bigint": + TYPE = BIGINT; + entry = value.toString(); + break; + case "function": + case "symbol": + if (strict) + throw new TypeError("unable to serialize " + type); + entry = null; + break; + case "undefined": + return as([VOID], value); + } + return as([TYPE, entry], value); + } + case ARRAY: { + if (type) { + let spread = value; + if (type === "DataView") { + spread = new Uint8Array(value.buffer); + } else if (type === "ArrayBuffer") { + spread = new Uint8Array(value); + } + return as([type, [...spread]], value); + } + const arr = []; + const index = as([TYPE, arr], value); + for (const entry of value) + arr.push(pair(entry)); + return index; + } + case OBJECT: { + if (type) { + switch (type) { + case "BigInt": + return as([type, value.toString()], value); + case "Boolean": + case "Number": + case "String": + return as([type, value.valueOf()], value); + } + } + if (json && "toJSON" in value) + return pair(value.toJSON()); + const entries = []; + const index = as([TYPE, entries], value); + for (const key of keys(value)) { + if (strict || !shouldSkip(typeOf(value[key]))) + entries.push([pair(key), pair(value[key])]); + } + return index; + } + case DATE: + return as([TYPE, value.toISOString()], value); + case REGEXP: { + const { source, flags } = value; + return as([TYPE, { source, flags }], value); + } + case MAP: { + const entries = []; + const index = as([TYPE, entries], value); + for (const [key, entry] of value) { + if (strict || !(shouldSkip(typeOf(key)) || shouldSkip(typeOf(entry)))) + entries.push([pair(key), pair(entry)]); + } + return index; + } + case SET: { + const entries = []; + const index = as([TYPE, entries], value); + for (const entry of value) { + if (strict || !shouldSkip(typeOf(entry))) + entries.push(pair(entry)); + } + return index; + } + } + const { message } = value; + return as([TYPE, { name: type, message }], value); + }; + return pair; +}; +var serialize = (value, { json, lossy } = {}) => { + const _ = []; + return serializer(!(json || lossy), !!json, /* @__PURE__ */ new Map(), _)(value), _; +}; + +// ../../node_modules/fflate/esm/browser.js +var u8 = Uint8Array; +var u16 = Uint16Array; +var i32 = Int32Array; +var fleb = new u8([ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 3, + 3, + 3, + 3, + 4, + 4, + 4, + 4, + 5, + 5, + 5, + 5, + 0, + /* unused */ + 0, + 0, + /* impossible */ + 0 +]); +var fdeb = new u8([ + 0, + 0, + 0, + 0, + 1, + 1, + 2, + 2, + 3, + 3, + 4, + 4, + 5, + 5, + 6, + 6, + 7, + 7, + 8, + 8, + 9, + 9, + 10, + 10, + 11, + 11, + 12, + 12, + 13, + 13, + /* unused */ + 0, + 0 +]); +var clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]); +var freb = function(eb, start) { + var b = new u16(31); + for (var i = 0; i < 31; ++i) { + b[i] = start += 1 << eb[i - 1]; + } + var r = new i32(b[30]); + for (var i = 1; i < 30; ++i) { + for (var j = b[i]; j < b[i + 1]; ++j) { + r[j] = j - b[i] << 5 | i; + } + } + return { b, r }; +}; +var _a = freb(fleb, 2); +var fl = _a.b; +var revfl = _a.r; +fl[28] = 258, revfl[258] = 28; +var _b = freb(fdeb, 0); +var fd = _b.b; +var revfd = _b.r; +var rev = new u16(32768); +for (i = 0; i < 32768; ++i) { + x = (i & 43690) >> 1 | (i & 21845) << 1; + x = (x & 52428) >> 2 | (x & 13107) << 2; + x = (x & 61680) >> 4 | (x & 3855) << 4; + rev[i] = ((x & 65280) >> 8 | (x & 255) << 8) >> 1; +} +var x; +var i; +var hMap = function(cd, mb, r) { + var s = cd.length; + var i = 0; + var l = new u16(mb); + for (; i < s; ++i) { + if (cd[i]) + ++l[cd[i] - 1]; + } + var le = new u16(mb); + for (i = 1; i < mb; ++i) { + le[i] = le[i - 1] + l[i - 1] << 1; + } + var co; + if (r) { + co = new u16(1 << mb); + var rvb = 15 - mb; + for (i = 0; i < s; ++i) { + if (cd[i]) { + var sv = i << 4 | cd[i]; + var r_1 = mb - cd[i]; + var v = le[cd[i] - 1]++ << r_1; + for (var m = v | (1 << r_1) - 1; v <= m; ++v) { + co[rev[v] >> rvb] = sv; + } + } + } + } else { + co = new u16(s); + for (i = 0; i < s; ++i) { + if (cd[i]) { + co[i] = rev[le[cd[i] - 1]++] >> 15 - cd[i]; + } + } + } + return co; +}; +var flt = new u8(288); +for (i = 0; i < 144; ++i) + flt[i] = 8; +var i; +for (i = 144; i < 256; ++i) + flt[i] = 9; +var i; +for (i = 256; i < 280; ++i) + flt[i] = 7; +var i; +for (i = 280; i < 288; ++i) + flt[i] = 8; +var i; +var fdt = new u8(32); +for (i = 0; i < 32; ++i) + fdt[i] = 5; +var i; +var flrm = /* @__PURE__ */ hMap(flt, 9, 1); +var fdrm = /* @__PURE__ */ hMap(fdt, 5, 1); +var max4 = function(a) { + var m = a[0]; + for (var i = 1; i < a.length; ++i) { + if (a[i] > m) + m = a[i]; + } + return m; +}; +var bits = function(d, p, m) { + var o = p / 8 | 0; + return (d[o] | d[o + 1] << 8) >> (p & 7) & m; +}; +var bits16 = function(d, p) { + var o = p / 8 | 0; + return (d[o] | d[o + 1] << 8 | d[o + 2] << 16) >> (p & 7); +}; +var shft = function(p) { + return (p + 7) / 8 | 0; +}; +var slc = function(v, s, e) { + if (s == null || s < 0) + s = 0; + if (e == null || e > v.length) + e = v.length; + return new u8(v.subarray(s, e)); +}; +var ec = [ + "unexpected EOF", + "invalid block type", + "invalid length/literal", + "invalid distance", + "stream finished", + "no stream handler", + , + "no callback", + "invalid UTF-8 data", + "extra field too long", + "date not in range 1980-2099", + "filename too long", + "stream finishing", + "invalid zip data" + // determined by unknown compression method +]; +var err = function(ind, msg, nt) { + var e = new Error(msg || ec[ind]); + e.code = ind; + if (Error.captureStackTrace) + Error.captureStackTrace(e, err); + if (!nt) + throw e; + return e; +}; +var inflt = function(dat, st, buf, dict) { + var sl = dat.length, dl = dict ? dict.length : 0; + if (!sl || st.f && !st.l) + return buf || new u8(0); + var noBuf = !buf; + var resize = noBuf || st.i != 2; + var noSt = st.i; + if (noBuf) + buf = new u8(sl * 3); + var cbuf = function(l2) { + var bl = buf.length; + if (l2 > bl) { + var nbuf = new u8(Math.max(bl * 2, l2)); + nbuf.set(buf); + buf = nbuf; + } + }; + var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n; + var tbts = sl * 8; + do { + if (!lm) { + final = bits(dat, pos, 1); + var type = bits(dat, pos + 1, 3); + pos += 3; + if (!type) { + var s = shft(pos) + 4, l = dat[s - 4] | dat[s - 3] << 8, t = s + l; + if (t > sl) { + if (noSt) + err(0); + break; + } + if (resize) + cbuf(bt + l); + buf.set(dat.subarray(s, t), bt); + st.b = bt += l, st.p = pos = t * 8, st.f = final; + continue; + } else if (type == 1) + lm = flrm, dm = fdrm, lbt = 9, dbt = 5; + else if (type == 2) { + var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4; + var tl = hLit + bits(dat, pos + 5, 31) + 1; + pos += 14; + var ldt = new u8(tl); + var clt = new u8(19); + for (var i = 0; i < hcLen; ++i) { + clt[clim[i]] = bits(dat, pos + i * 3, 7); + } + pos += hcLen * 3; + var clb = max4(clt), clbmsk = (1 << clb) - 1; + var clm = hMap(clt, clb, 1); + for (var i = 0; i < tl; ) { + var r = clm[bits(dat, pos, clbmsk)]; + pos += r & 15; + var s = r >> 4; + if (s < 16) { + ldt[i++] = s; + } else { + var c = 0, n = 0; + if (s == 16) + n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1]; + else if (s == 17) + n = 3 + bits(dat, pos, 7), pos += 3; + else if (s == 18) + n = 11 + bits(dat, pos, 127), pos += 7; + while (n--) + ldt[i++] = c; + } + } + var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit); + lbt = max4(lt); + dbt = max4(dt); + lm = hMap(lt, lbt, 1); + dm = hMap(dt, dbt, 1); + } else + err(1); + if (pos > tbts) { + if (noSt) + err(0); + break; + } + } + if (resize) + cbuf(bt + 131072); + var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1; + var lpos = pos; + for (; ; lpos = pos) { + var c = lm[bits16(dat, pos) & lms], sym = c >> 4; + pos += c & 15; + if (pos > tbts) { + if (noSt) + err(0); + break; + } + if (!c) + err(2); + if (sym < 256) + buf[bt++] = sym; + else if (sym == 256) { + lpos = pos, lm = null; + break; + } else { + var add6 = sym - 254; + if (sym > 264) { + var i = sym - 257, b = fleb[i]; + add6 = bits(dat, pos, (1 << b) - 1) + fl[i]; + pos += b; + } + var d = dm[bits16(dat, pos) & dms], dsym = d >> 4; + if (!d) + err(3); + pos += d & 15; + var dt = fd[dsym]; + if (dsym > 3) { + var b = fdeb[dsym]; + dt += bits16(dat, pos) & (1 << b) - 1, pos += b; + } + if (pos > tbts) { + if (noSt) + err(0); + break; + } + if (resize) + cbuf(bt + 131072); + var end = bt + add6; + if (bt < dt) { + var shift = dl - dt, dend = Math.min(dt, end); + if (shift + bt < 0) + err(3); + for (; bt < dend; ++bt) + buf[bt] = dict[shift + bt]; + } + for (; bt < end; ++bt) + buf[bt] = buf[bt - dt]; + } + } + st.l = lm, st.p = lpos, st.b = bt, st.f = final; + if (lm) + final = 1, st.m = lbt, st.d = dm, st.n = dbt; + } while (!final); + return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt); +}; +var et = /* @__PURE__ */ new u8(0); +var gzs = function(d) { + if (d[0] != 31 || d[1] != 139 || d[2] != 8) + err(6, "invalid gzip data"); + var flg = d[3]; + var st = 10; + if (flg & 4) + st += (d[10] | d[11] << 8) + 2; + for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++]) + ; + return st + (flg & 2); +}; +var gzl = function(d) { + var l = d.length; + return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16 | d[l - 1] << 24) >>> 0; +}; +var zls = function(d, dict) { + if ((d[0] & 15) != 8 || d[0] >> 4 > 7 || (d[0] << 8 | d[1]) % 31) + err(6, "invalid zlib data"); + if ((d[1] >> 5 & 1) == +!dict) + err(6, "invalid zlib data: " + (d[1] & 32 ? "need" : "unexpected") + " dictionary"); + return (d[1] >> 3 & 4) + 2; +}; +var Inflate = /* @__PURE__ */ function() { + function Inflate2(opts, cb) { + if (typeof opts == "function") + cb = opts, opts = {}; + this.ondata = cb; + var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768); + this.s = { i: 0, b: dict ? dict.length : 0 }; + this.o = new u8(32768); + this.p = new u8(0); + if (dict) + this.o.set(dict); + } + Inflate2.prototype.e = function(c) { + if (!this.ondata) + err(5); + if (this.d) + err(4); + if (!this.p.length) + this.p = c; + else if (c.length) { + var n = new u8(this.p.length + c.length); + n.set(this.p), n.set(c, this.p.length), this.p = n; + } + }; + Inflate2.prototype.c = function(final) { + this.s.i = +(this.d = final || false); + var bts = this.s.b; + var dt = inflt(this.p, this.s, this.o); + this.ondata(slc(dt, bts, this.s.b), this.d); + this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length; + this.p = slc(this.p, this.s.p / 8 | 0), this.s.p &= 7; + }; + Inflate2.prototype.push = function(chunk, final) { + this.e(chunk), this.c(final); + }; + return Inflate2; +}(); +function inflateSync(data, opts) { + return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary); +} +var Gunzip = /* @__PURE__ */ function() { + function Gunzip2(opts, cb) { + this.v = 1; + this.r = 0; + Inflate.call(this, opts, cb); + } + Gunzip2.prototype.push = function(chunk, final) { + Inflate.prototype.e.call(this, chunk); + this.r += chunk.length; + if (this.v) { + var p = this.p.subarray(this.v - 1); + var s = p.length > 3 ? gzs(p) : 4; + if (s > p.length) { + if (!final) + return; + } else if (this.v > 1 && this.onmember) { + this.onmember(this.r - p.length); + } + this.p = p.subarray(s), this.v = 0; + } + Inflate.prototype.c.call(this, final); + if (this.s.f && !this.s.l && !final) { + this.v = shft(this.s.p) + 9; + this.s = { i: 0 }; + this.o = new u8(0); + this.push(new u8(0), final); + } + }; + return Gunzip2; +}(); +function gunzipSync(data, opts) { + var st = gzs(data); + if (st + 8 > data.length) + err(6, "invalid gzip data"); + return inflt(data.subarray(st, -8), { i: 2 }, opts && opts.out || new u8(gzl(data)), opts && opts.dictionary); +} +function unzlibSync(data, opts) { + return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary); +} +function decompressSync(data, opts) { + return data[0] == 31 && data[1] == 139 && data[2] == 8 ? gunzipSync(data, opts) : (data[0] & 15) != 8 || data[0] >> 4 > 7 || (data[0] << 8 | data[1]) % 31 ? inflateSync(data, opts) : unzlibSync(data, opts); +} +var td = typeof TextDecoder != "undefined" && /* @__PURE__ */ new TextDecoder(); +var tds = 0; +try { + td.decode(et, { stream: true }); + tds = 1; +} catch (e) { +} + +// ../../node_modules/nifti-reader-js/dist/nifti-extension.js +var NIFTIEXTENSION = class { + constructor(esize, ecode, edata, littleEndian) { + __publicField(this, "esize"); + __publicField(this, "ecode"); + __publicField(this, "edata"); + __publicField(this, "littleEndian"); + if (esize % 16 != 0) { + throw new Error("This does not appear to be a NIFTI extension"); + } + this.esize = esize; + this.ecode = ecode; + this.edata = edata; + this.littleEndian = littleEndian; + } + /** + * Returns extension as ArrayBuffer. + * @returns {ArrayBuffer} + */ + toArrayBuffer() { + let byteArray = new Uint8Array(this.esize); + let data = new Uint8Array(this.edata); + byteArray.set(data, 8); + let view = new DataView(byteArray.buffer); + view.setInt32(0, this.esize, this.littleEndian); + view.setInt32(4, this.ecode, this.littleEndian); + return byteArray.buffer; + } +}; + +// ../../node_modules/nifti-reader-js/dist/utilities.js +var _Utils = class _Utils { + /*** Static methods ***/ + static getStringAt(data, start, end) { + var str6 = "", ctr, ch; + for (ctr = start; ctr < end; ctr += 1) { + ch = data.getUint8(ctr); + if (ch !== 0) { + str6 += String.fromCharCode(ch); + } + } + return str6; + } + static getIntAt(data, start, littleEndian) { + return data.getInt32(start, littleEndian); + } + static getFloatAt(data, start, littleEndian) { + return data.getFloat32(start, littleEndian); + } + static getDoubleAt(data, start, littleEndian) { + return data.getFloat64(start, littleEndian); + } + static getInt64At(dataView, index, littleEndian) { + const low = dataView.getUint32(index, littleEndian); + const high = dataView.getInt32(index + 4, littleEndian); + let result; + if (littleEndian) { + result = high * 2 ** 32 + low; + } else { + result = low * 2 ** 32 + high; + } + if (high < 0) { + result += -1 * 2 ** 32 * 2 ** 32; + } + return result; + } + static getUint64At(dataView, index, littleEndian) { + const low = dataView.getUint32(index + (littleEndian ? 0 : 4), littleEndian); + const high = dataView.getUint32(index + (littleEndian ? 4 : 0), littleEndian); + return littleEndian ? high * 2 ** 32 + low : low * 2 ** 32 + high; + } + static getExtensionsAt(data, start, littleEndian, voxOffset) { + let extensions = []; + let extensionByteIndex = start; + while (extensionByteIndex < voxOffset) { + let extensionLittleEndian = littleEndian; + let esize = _Utils.getIntAt(data, extensionByteIndex, littleEndian); + if (!esize) { + break; + } + if (esize + extensionByteIndex > voxOffset) { + extensionLittleEndian = !extensionLittleEndian; + esize = _Utils.getIntAt(data, extensionByteIndex, extensionLittleEndian); + if (esize + extensionByteIndex > voxOffset) { + throw new Error("This does not appear to be a valid NIFTI extension"); + } + } + if (esize % 16 != 0) { + throw new Error("This does not appear to be a NIFTI extension"); + } + let ecode = _Utils.getIntAt(data, extensionByteIndex + 4, extensionLittleEndian); + let edata = data.buffer.slice(extensionByteIndex + 8, extensionByteIndex + esize); + let extension = new NIFTIEXTENSION(esize, ecode, edata, extensionLittleEndian); + extensions.push(extension); + extensionByteIndex += esize; + } + return extensions; + } + static toArrayBuffer(buffer) { + var ab, view, i; + ab = new ArrayBuffer(buffer.length); + view = new Uint8Array(ab); + for (i = 0; i < buffer.length; i += 1) { + view[i] = buffer[i]; + } + return ab; + } + static isString(obj) { + return typeof obj === "string" || obj instanceof String; + } + static formatNumber(num, shortFormat = void 0) { + let val; + if (_Utils.isString(num)) { + val = Number(num); + } else { + val = num; + } + if (shortFormat) { + val = val.toPrecision(5); + } else { + val = val.toPrecision(7); + } + return parseFloat(val); + } + // http://stackoverflow.com/questions/18638900/javascript-crc32 + static makeCRCTable() { + let c; + let crcTable = []; + for (var n = 0; n < 256; n++) { + c = n; + for (var k = 0; k < 8; k++) { + c = c & 1 ? 3988292384 ^ c >>> 1 : c >>> 1; + } + crcTable[n] = c; + } + return crcTable; + } + static crc32(dataView) { + if (!_Utils.crcTable) { + _Utils.crcTable = _Utils.makeCRCTable(); + } + const crcTable = _Utils.crcTable; + let crc = 0 ^ -1; + for (var i = 0; i < dataView.byteLength; i++) { + crc = crc >>> 8 ^ crcTable[(crc ^ dataView.getUint8(i)) & 255]; + } + return (crc ^ -1) >>> 0; + } +}; +/*** Static Pseudo-constants ***/ +__publicField(_Utils, "crcTable", null); +__publicField(_Utils, "GUNZIP_MAGIC_COOKIE1", 31); +__publicField(_Utils, "GUNZIP_MAGIC_COOKIE2", 139); +__publicField(_Utils, "getByteAt", function(data, start) { + return data.getUint8(start); +}); +__publicField(_Utils, "getShortAt", function(data, start, littleEndian) { + return data.getInt16(start, littleEndian); +}); +var Utils = _Utils; + +// ../../node_modules/nifti-reader-js/dist/nifti1.js +var _NIFTI1 = class _NIFTI1 { + constructor() { + __publicField(this, "littleEndian", false); + __publicField(this, "dim_info", 0); + __publicField(this, "dims", []); + __publicField(this, "intent_p1", 0); + __publicField(this, "intent_p2", 0); + __publicField(this, "intent_p3", 0); + __publicField(this, "intent_code", 0); + __publicField(this, "datatypeCode", 0); + __publicField(this, "numBitsPerVoxel", 0); + __publicField(this, "slice_start", 0); + __publicField(this, "slice_end", 0); + __publicField(this, "slice_code", 0); + __publicField(this, "pixDims", []); + __publicField(this, "vox_offset", 0); + __publicField(this, "scl_slope", 1); + __publicField(this, "scl_inter", 0); + __publicField(this, "xyzt_units", 0); + __publicField(this, "cal_max", 0); + __publicField(this, "cal_min", 0); + __publicField(this, "slice_duration", 0); + __publicField(this, "toffset", 0); + __publicField(this, "description", ""); + __publicField(this, "aux_file", ""); + __publicField(this, "intent_name", ""); + __publicField(this, "qform_code", 0); + __publicField(this, "sform_code", 0); + __publicField(this, "quatern_a", 0); + __publicField(this, "quatern_b", 0); + __publicField(this, "quatern_c", 0); + __publicField(this, "quatern_d", 0); + __publicField(this, "qoffset_x", 0); + __publicField(this, "qoffset_y", 0); + __publicField(this, "qoffset_z", 0); + __publicField(this, "affine", [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [0, 0, 0, 1] + ]); + __publicField(this, "qfac", 1); + __publicField(this, "quatern_R"); + __publicField(this, "magic", "0"); + __publicField(this, "isHDR", false); + __publicField(this, "extensionFlag", [0, 0, 0, 0]); + __publicField(this, "extensionSize", 0); + __publicField(this, "extensionCode", 0); + __publicField(this, "extensions", []); + /** + * Returns a human-readable string of datatype. + * @param {number} code + * @returns {string} + */ + __publicField(this, "getDatatypeCodeString", function(code) { + if (code === _NIFTI1.TYPE_UINT8) { + return "1-Byte Unsigned Integer"; + } else if (code === _NIFTI1.TYPE_INT16) { + return "2-Byte Signed Integer"; + } else if (code === _NIFTI1.TYPE_INT32) { + return "4-Byte Signed Integer"; + } else if (code === _NIFTI1.TYPE_FLOAT32) { + return "4-Byte Float"; + } else if (code === _NIFTI1.TYPE_FLOAT64) { + return "8-Byte Float"; + } else if (code === _NIFTI1.TYPE_RGB24) { + return "RGB"; + } else if (code === _NIFTI1.TYPE_INT8) { + return "1-Byte Signed Integer"; + } else if (code === _NIFTI1.TYPE_UINT16) { + return "2-Byte Unsigned Integer"; + } else if (code === _NIFTI1.TYPE_UINT32) { + return "4-Byte Unsigned Integer"; + } else if (code === _NIFTI1.TYPE_INT64) { + return "8-Byte Signed Integer"; + } else if (code === _NIFTI1.TYPE_UINT64) { + return "8-Byte Unsigned Integer"; + } else { + return "Unknown"; + } + }); + /** + * Returns a human-readable string of transform type. + * @param {number} code + * @returns {string} + */ + __publicField(this, "getTransformCodeString", function(code) { + if (code === _NIFTI1.XFORM_SCANNER_ANAT) { + return "Scanner"; + } else if (code === _NIFTI1.XFORM_ALIGNED_ANAT) { + return "Aligned"; + } else if (code === _NIFTI1.XFORM_TALAIRACH) { + return "Talairach"; + } else if (code === _NIFTI1.XFORM_MNI_152) { + return "MNI"; + } else { + return "Unknown"; + } + }); + /** + * Returns a human-readable string of spatial and temporal units. + * @param {number} code + * @returns {string} + */ + __publicField(this, "getUnitsCodeString", function(code) { + if (code === _NIFTI1.UNITS_METER) { + return "Meters"; + } else if (code === _NIFTI1.UNITS_MM) { + return "Millimeters"; + } else if (code === _NIFTI1.UNITS_MICRON) { + return "Microns"; + } else if (code === _NIFTI1.UNITS_SEC) { + return "Seconds"; + } else if (code === _NIFTI1.UNITS_MSEC) { + return "Milliseconds"; + } else if (code === _NIFTI1.UNITS_USEC) { + return "Microseconds"; + } else if (code === _NIFTI1.UNITS_HZ) { + return "Hz"; + } else if (code === _NIFTI1.UNITS_PPM) { + return "PPM"; + } else if (code === _NIFTI1.UNITS_RADS) { + return "Rads"; + } else { + return "Unknown"; + } + }); + __publicField(this, "nifti_mat33_mul", function(A, B) { + var C = [ + [0, 0, 0], + [0, 0, 0], + [0, 0, 0] + ], i, j; + for (i = 0; i < 3; i += 1) { + for (j = 0; j < 3; j += 1) { + C[i][j] = A[i][0] * B[0][j] + A[i][1] * B[1][j] + A[i][2] * B[2][j]; + } + } + return C; + }); + __publicField(this, "nifti_mat33_determ", function(R) { + var r11, r12, r13, r21, r22, r23, r31, r32, r33; + r11 = R[0][0]; + r12 = R[0][1]; + r13 = R[0][2]; + r21 = R[1][0]; + r22 = R[1][1]; + r23 = R[1][2]; + r31 = R[2][0]; + r32 = R[2][1]; + r33 = R[2][2]; + return r11 * r22 * r33 - r11 * r32 * r23 - r21 * r12 * r33 + r21 * r32 * r13 + r31 * r12 * r23 - r31 * r22 * r13; + }); + } + /*** Prototype Methods ***/ + /** + * Reads the header data. + * @param {ArrayBuffer} data + */ + readHeader(data) { + var rawData = new DataView(data), magicCookieVal = Utils.getIntAt(rawData, 0, this.littleEndian), ctr, ctrOut, ctrIn, index; + if (magicCookieVal !== _NIFTI1.MAGIC_COOKIE) { + this.littleEndian = true; + magicCookieVal = Utils.getIntAt(rawData, 0, this.littleEndian); + } + if (magicCookieVal !== _NIFTI1.MAGIC_COOKIE) { + throw new Error("This does not appear to be a NIFTI file!"); + } + this.dim_info = Utils.getByteAt(rawData, 39); + for (ctr = 0; ctr < 8; ctr += 1) { + index = 40 + ctr * 2; + this.dims[ctr] = Utils.getShortAt(rawData, index, this.littleEndian); + } + this.intent_p1 = Utils.getFloatAt(rawData, 56, this.littleEndian); + this.intent_p2 = Utils.getFloatAt(rawData, 60, this.littleEndian); + this.intent_p3 = Utils.getFloatAt(rawData, 64, this.littleEndian); + this.intent_code = Utils.getShortAt(rawData, 68, this.littleEndian); + this.datatypeCode = Utils.getShortAt(rawData, 70, this.littleEndian); + this.numBitsPerVoxel = Utils.getShortAt(rawData, 72, this.littleEndian); + this.slice_start = Utils.getShortAt(rawData, 74, this.littleEndian); + for (ctr = 0; ctr < 8; ctr += 1) { + index = 76 + ctr * 4; + this.pixDims[ctr] = Utils.getFloatAt(rawData, index, this.littleEndian); + } + this.vox_offset = Utils.getFloatAt(rawData, 108, this.littleEndian); + this.scl_slope = Utils.getFloatAt(rawData, 112, this.littleEndian); + this.scl_inter = Utils.getFloatAt(rawData, 116, this.littleEndian); + this.slice_end = Utils.getShortAt(rawData, 120, this.littleEndian); + this.slice_code = Utils.getByteAt(rawData, 122); + this.xyzt_units = Utils.getByteAt(rawData, 123); + this.cal_max = Utils.getFloatAt(rawData, 124, this.littleEndian); + this.cal_min = Utils.getFloatAt(rawData, 128, this.littleEndian); + this.slice_duration = Utils.getFloatAt(rawData, 132, this.littleEndian); + this.toffset = Utils.getFloatAt(rawData, 136, this.littleEndian); + this.description = Utils.getStringAt(rawData, 148, 228); + this.aux_file = Utils.getStringAt(rawData, 228, 252); + this.qform_code = Utils.getShortAt(rawData, 252, this.littleEndian); + this.sform_code = Utils.getShortAt(rawData, 254, this.littleEndian); + this.quatern_b = Utils.getFloatAt(rawData, 256, this.littleEndian); + this.quatern_c = Utils.getFloatAt(rawData, 260, this.littleEndian); + this.quatern_d = Utils.getFloatAt(rawData, 264, this.littleEndian); + this.quatern_a = Math.sqrt(1 - (Math.pow(this.quatern_b, 2) + Math.pow(this.quatern_c, 2) + Math.pow(this.quatern_d, 2))); + this.qoffset_x = Utils.getFloatAt(rawData, 268, this.littleEndian); + this.qoffset_y = Utils.getFloatAt(rawData, 272, this.littleEndian); + this.qoffset_z = Utils.getFloatAt(rawData, 276, this.littleEndian); + if (this.qform_code < 1 && this.sform_code < 1) { + this.affine[0][0] = this.pixDims[1]; + this.affine[1][1] = this.pixDims[2]; + this.affine[2][2] = this.pixDims[3]; + } + if (this.qform_code > 0 && this.sform_code < this.qform_code) { + const a = this.quatern_a; + const b = this.quatern_b; + const c = this.quatern_c; + const d = this.quatern_d; + this.qfac = this.pixDims[0] === 0 ? 1 : this.pixDims[0]; + this.quatern_R = [ + [a * a + b * b - c * c - d * d, 2 * b * c - 2 * a * d, 2 * b * d + 2 * a * c], + [2 * b * c + 2 * a * d, a * a + c * c - b * b - d * d, 2 * c * d - 2 * a * b], + [2 * b * d - 2 * a * c, 2 * c * d + 2 * a * b, a * a + d * d - c * c - b * b] + ]; + for (ctrOut = 0; ctrOut < 3; ctrOut += 1) { + for (ctrIn = 0; ctrIn < 3; ctrIn += 1) { + this.affine[ctrOut][ctrIn] = this.quatern_R[ctrOut][ctrIn] * this.pixDims[ctrIn + 1]; + if (ctrIn === 2) { + this.affine[ctrOut][ctrIn] *= this.qfac; + } + } + } + this.affine[0][3] = this.qoffset_x; + this.affine[1][3] = this.qoffset_y; + this.affine[2][3] = this.qoffset_z; + } else if (this.sform_code > 0) { + for (ctrOut = 0; ctrOut < 3; ctrOut += 1) { + for (ctrIn = 0; ctrIn < 4; ctrIn += 1) { + index = 280 + (ctrOut * 4 + ctrIn) * 4; + this.affine[ctrOut][ctrIn] = Utils.getFloatAt(rawData, index, this.littleEndian); + } + } + } + this.affine[3][0] = 0; + this.affine[3][1] = 0; + this.affine[3][2] = 0; + this.affine[3][3] = 1; + this.intent_name = Utils.getStringAt(rawData, 328, 344); + this.magic = Utils.getStringAt(rawData, 344, 348); + this.isHDR = this.magic === String.fromCharCode.apply(null, _NIFTI1.MAGIC_NUMBER2); + if (rawData.byteLength > _NIFTI1.MAGIC_COOKIE) { + this.extensionFlag[0] = Utils.getByteAt(rawData, 348); + this.extensionFlag[1] = Utils.getByteAt(rawData, 348 + 1); + this.extensionFlag[2] = Utils.getByteAt(rawData, 348 + 2); + this.extensionFlag[3] = Utils.getByteAt(rawData, 348 + 3); + let isExtensionCapable = true; + if (!this.isHDR && this.vox_offset <= 352) + isExtensionCapable = false; + if (rawData.byteLength <= 352 + 16) + isExtensionCapable = false; + if (isExtensionCapable && this.extensionFlag[0]) { + this.extensions = Utils.getExtensionsAt(rawData, this.getExtensionLocation(), this.littleEndian, this.vox_offset); + this.extensionSize = this.extensions[0].esize; + this.extensionCode = this.extensions[0].ecode; + } + } + } + /** + * Returns a formatted string of header fields. + * @returns {string} + */ + toFormattedString() { + var fmt = Utils.formatNumber, string = ""; + string += "Dim Info = " + this.dim_info + "\n"; + string += "Image Dimensions (1-8): " + this.dims[0] + ", " + this.dims[1] + ", " + this.dims[2] + ", " + this.dims[3] + ", " + this.dims[4] + ", " + this.dims[5] + ", " + this.dims[6] + ", " + this.dims[7] + "\n"; + string += "Intent Parameters (1-3): " + this.intent_p1 + ", " + this.intent_p2 + ", " + this.intent_p3 + "\n"; + string += "Intent Code = " + this.intent_code + "\n"; + string += "Datatype = " + this.datatypeCode + " (" + this.getDatatypeCodeString(this.datatypeCode) + ")\n"; + string += "Bits Per Voxel = " + this.numBitsPerVoxel + "\n"; + string += "Slice Start = " + this.slice_start + "\n"; + string += "Voxel Dimensions (1-8): " + fmt(this.pixDims[0]) + ", " + fmt(this.pixDims[1]) + ", " + fmt(this.pixDims[2]) + ", " + fmt(this.pixDims[3]) + ", " + fmt(this.pixDims[4]) + ", " + fmt(this.pixDims[5]) + ", " + fmt(this.pixDims[6]) + ", " + fmt(this.pixDims[7]) + "\n"; + string += "Image Offset = " + this.vox_offset + "\n"; + string += "Data Scale: Slope = " + fmt(this.scl_slope) + " Intercept = " + fmt(this.scl_inter) + "\n"; + string += "Slice End = " + this.slice_end + "\n"; + string += "Slice Code = " + this.slice_code + "\n"; + string += "Units Code = " + this.xyzt_units + " (" + this.getUnitsCodeString(_NIFTI1.SPATIAL_UNITS_MASK & this.xyzt_units) + ", " + this.getUnitsCodeString(_NIFTI1.TEMPORAL_UNITS_MASK & this.xyzt_units) + ")\n"; + string += "Display Range: Max = " + fmt(this.cal_max) + " Min = " + fmt(this.cal_min) + "\n"; + string += "Slice Duration = " + this.slice_duration + "\n"; + string += "Time Axis Shift = " + this.toffset + "\n"; + string += 'Description: "' + this.description + '"\n'; + string += 'Auxiliary File: "' + this.aux_file + '"\n'; + string += "Q-Form Code = " + this.qform_code + " (" + this.getTransformCodeString(this.qform_code) + ")\n"; + string += "S-Form Code = " + this.sform_code + " (" + this.getTransformCodeString(this.sform_code) + ")\n"; + string += "Quaternion Parameters: b = " + fmt(this.quatern_b) + " c = " + fmt(this.quatern_c) + " d = " + fmt(this.quatern_d) + "\n"; + string += "Quaternion Offsets: x = " + this.qoffset_x + " y = " + this.qoffset_y + " z = " + this.qoffset_z + "\n"; + string += "S-Form Parameters X: " + fmt(this.affine[0][0]) + ", " + fmt(this.affine[0][1]) + ", " + fmt(this.affine[0][2]) + ", " + fmt(this.affine[0][3]) + "\n"; + string += "S-Form Parameters Y: " + fmt(this.affine[1][0]) + ", " + fmt(this.affine[1][1]) + ", " + fmt(this.affine[1][2]) + ", " + fmt(this.affine[1][3]) + "\n"; + string += "S-Form Parameters Z: " + fmt(this.affine[2][0]) + ", " + fmt(this.affine[2][1]) + ", " + fmt(this.affine[2][2]) + ", " + fmt(this.affine[2][3]) + "\n"; + string += 'Intent Name: "' + this.intent_name + '"\n'; + if (this.extensionFlag[0]) { + string += "Extension: Size = " + this.extensionSize + " Code = " + this.extensionCode + "\n"; + } + return string; + } + /** + * Returns the qform matrix. + * @returns {Array.>} + */ + getQformMat() { + return this.convertNiftiQFormToNiftiSForm(this.quatern_b, this.quatern_c, this.quatern_d, this.qoffset_x, this.qoffset_y, this.qoffset_z, this.pixDims[1], this.pixDims[2], this.pixDims[3], this.pixDims[0]); + } + /** + * Converts qform to an affine. (See http://nifti.nimh.nih.gov/pub/dist/src/niftilib/nifti1_io.c) + * @param {number} qb + * @param {number} qc + * @param {number} qd + * @param {number} qx + * @param {number} qy + * @param {number} qz + * @param {number} dx + * @param {number} dy + * @param {number} dz + * @param {number} qfac + * @returns {Array.>} + */ + convertNiftiQFormToNiftiSForm(qb, qc, qd, qx, qy, qz, dx, dy, dz, qfac) { + var R = [ + [0, 0, 0, 0], + [0, 0, 0, 0], + [0, 0, 0, 0], + [0, 0, 0, 0] + ], a, b = qb, c = qc, d = qd, xd, yd, zd; + R[3][0] = R[3][1] = R[3][2] = 0; + R[3][3] = 1; + a = 1 - (b * b + c * c + d * d); + if (a < 1e-7) { + a = 1 / Math.sqrt(b * b + c * c + d * d); + b *= a; + c *= a; + d *= a; + a = 0; + } else { + a = Math.sqrt(a); + } + xd = dx > 0 ? dx : 1; + yd = dy > 0 ? dy : 1; + zd = dz > 0 ? dz : 1; + if (qfac < 0) { + zd = -zd; + } + R[0][0] = (a * a + b * b - c * c - d * d) * xd; + R[0][1] = 2 * (b * c - a * d) * yd; + R[0][2] = 2 * (b * d + a * c) * zd; + R[1][0] = 2 * (b * c + a * d) * xd; + R[1][1] = (a * a + c * c - b * b - d * d) * yd; + R[1][2] = 2 * (c * d - a * b) * zd; + R[2][0] = 2 * (b * d - a * c) * xd; + R[2][1] = 2 * (c * d + a * b) * yd; + R[2][2] = (a * a + d * d - c * c - b * b) * zd; + R[0][3] = qx; + R[1][3] = qy; + R[2][3] = qz; + return R; + } + /** + * Converts sform to an orientation string (e.g., XYZ+--). (See http://nifti.nimh.nih.gov/pub/dist/src/niftilib/nifti1_io.c) + * @param {Array.>} R + * @returns {string} + */ + convertNiftiSFormToNEMA(R) { + var xi, xj, xk, yi, yj, yk, zi, zj, zk, val, detQ, detP, i, j, k, p, q, r, ibest, jbest, kbest, pbest, qbest, rbest, M, vbest, Q, P, iChar, jChar, kChar, iSense, jSense, kSense; + k = 0; + Q = [ + [0, 0, 0], + [0, 0, 0], + [0, 0, 0] + ]; + P = [ + [0, 0, 0], + [0, 0, 0], + [0, 0, 0] + ]; + xi = R[0][0]; + xj = R[0][1]; + xk = R[0][2]; + yi = R[1][0]; + yj = R[1][1]; + yk = R[1][2]; + zi = R[2][0]; + zj = R[2][1]; + zk = R[2][2]; + val = Math.sqrt(xi * xi + yi * yi + zi * zi); + if (val === 0) { + return null; + } + xi /= val; + yi /= val; + zi /= val; + val = Math.sqrt(xj * xj + yj * yj + zj * zj); + if (val === 0) { + return null; + } + xj /= val; + yj /= val; + zj /= val; + val = xi * xj + yi * yj + zi * zj; + if (Math.abs(val) > 1e-4) { + xj -= val * xi; + yj -= val * yi; + zj -= val * zi; + val = Math.sqrt(xj * xj + yj * yj + zj * zj); + if (val === 0) { + return null; + } + xj /= val; + yj /= val; + zj /= val; + } + val = Math.sqrt(xk * xk + yk * yk + zk * zk); + if (val === 0) { + xk = yi * zj - zi * yj; + yk = zi * xj - zj * xi; + zk = xi * yj - yi * xj; + } else { + xk /= val; + yk /= val; + zk /= val; + } + val = xi * xk + yi * yk + zi * zk; + if (Math.abs(val) > 1e-4) { + xk -= val * xi; + yk -= val * yi; + zk -= val * zi; + val = Math.sqrt(xk * xk + yk * yk + zk * zk); + if (val === 0) { + return null; + } + xk /= val; + yk /= val; + zk /= val; + } + val = xj * xk + yj * yk + zj * zk; + if (Math.abs(val) > 1e-4) { + xk -= val * xj; + yk -= val * yj; + zk -= val * zj; + val = Math.sqrt(xk * xk + yk * yk + zk * zk); + if (val === 0) { + return null; + } + xk /= val; + yk /= val; + zk /= val; + } + Q[0][0] = xi; + Q[0][1] = xj; + Q[0][2] = xk; + Q[1][0] = yi; + Q[1][1] = yj; + Q[1][2] = yk; + Q[2][0] = zi; + Q[2][1] = zj; + Q[2][2] = zk; + detQ = this.nifti_mat33_determ(Q); + if (detQ === 0) { + return null; + } + vbest = -666; + ibest = pbest = qbest = rbest = 1; + jbest = 2; + kbest = 3; + for (i = 1; i <= 3; i += 1) { + for (j = 1; j <= 3; j += 1) { + if (i !== j) { + for (k = 1; k <= 3; k += 1) { + if (!(i === k || j === k)) { + P[0][0] = P[0][1] = P[0][2] = P[1][0] = P[1][1] = P[1][2] = P[2][0] = P[2][1] = P[2][2] = 0; + for (p = -1; p <= 1; p += 2) { + for (q = -1; q <= 1; q += 2) { + for (r = -1; r <= 1; r += 2) { + P[0][i - 1] = p; + P[1][j - 1] = q; + P[2][k - 1] = r; + detP = this.nifti_mat33_determ(P); + if (detP * detQ > 0) { + M = this.nifti_mat33_mul(P, Q); + val = M[0][0] + M[1][1] + M[2][2]; + if (val > vbest) { + vbest = val; + ibest = i; + jbest = j; + kbest = k; + pbest = p; + qbest = q; + rbest = r; + } + } + } + } + } + } + } + } + } + } + iChar = jChar = kChar = iSense = jSense = kSense = ""; + switch (ibest * pbest) { + case 1: + iChar = "X"; + iSense = "+"; + break; + case -1: + iChar = "X"; + iSense = "-"; + break; + case 2: + iChar = "Y"; + iSense = "+"; + break; + case -2: + iChar = "Y"; + iSense = "-"; + break; + case 3: + iChar = "Z"; + iSense = "+"; + break; + case -3: + iChar = "Z"; + iSense = "-"; + break; + } + switch (jbest * qbest) { + case 1: + jChar = "X"; + jSense = "+"; + break; + case -1: + jChar = "X"; + jSense = "-"; + break; + case 2: + jChar = "Y"; + jSense = "+"; + break; + case -2: + jChar = "Y"; + jSense = "-"; + break; + case 3: + jChar = "Z"; + jSense = "+"; + break; + case -3: + jChar = "Z"; + jSense = "-"; + break; + } + switch (kbest * rbest) { + case 1: + kChar = "X"; + kSense = "+"; + break; + case -1: + kChar = "X"; + kSense = "-"; + break; + case 2: + kChar = "Y"; + kSense = "+"; + break; + case -2: + kChar = "Y"; + kSense = "-"; + break; + case 3: + kChar = "Z"; + kSense = "+"; + break; + case -3: + kChar = "Z"; + kSense = "-"; + break; + } + return iChar + jChar + kChar + iSense + jSense + kSense; + } + /** + * Returns the byte index of the extension. + * @returns {number} + */ + getExtensionLocation() { + return _NIFTI1.MAGIC_COOKIE + 4; + } + /** + * Returns the extension size. + * @param {DataView} data + * @returns {number} + */ + getExtensionSize(data) { + return Utils.getIntAt(data, this.getExtensionLocation(), this.littleEndian); + } + /** + * Returns the extension code. + * @param {DataView} data + * @returns {number} + */ + getExtensionCode(data) { + return Utils.getIntAt(data, this.getExtensionLocation() + 4, this.littleEndian); + } + /** + * Adds an extension + * @param {NIFTIEXTENSION} extension + * @param {number} index + */ + addExtension(extension, index = -1) { + if (index == -1) { + this.extensions.push(extension); + } else { + this.extensions.splice(index, 0, extension); + } + this.vox_offset += extension.esize; + } + /** + * Removes an extension + * @param {number} index + */ + removeExtension(index) { + let extension = this.extensions[index]; + if (extension) { + this.vox_offset -= extension.esize; + } + this.extensions.splice(index, 1); + } + /** + * Returns header as ArrayBuffer. + * @param {boolean} includeExtensions - should extension bytes be included + * @returns {ArrayBuffer} + */ + toArrayBuffer(includeExtensions = false) { + const SHORT_SIZE = 2; + const FLOAT32_SIZE = 4; + let byteSize = 348 + 4; + if (includeExtensions) { + for (let extension of this.extensions) { + byteSize += extension.esize; + } + } + let byteArray = new Uint8Array(byteSize); + let view = new DataView(byteArray.buffer); + view.setInt32(0, 348, this.littleEndian); + view.setUint8(39, this.dim_info); + for (let i = 0; i < 8; i++) { + view.setUint16(40 + SHORT_SIZE * i, this.dims[i], this.littleEndian); + } + view.setFloat32(56, this.intent_p1, this.littleEndian); + view.setFloat32(60, this.intent_p2, this.littleEndian); + view.setFloat32(64, this.intent_p3, this.littleEndian); + view.setInt16(68, this.intent_code, this.littleEndian); + view.setInt16(70, this.datatypeCode, this.littleEndian); + view.setInt16(72, this.numBitsPerVoxel, this.littleEndian); + view.setInt16(74, this.slice_start, this.littleEndian); + for (let i = 0; i < 8; i++) { + view.setFloat32(76 + FLOAT32_SIZE * i, this.pixDims[i], this.littleEndian); + } + view.setFloat32(108, this.vox_offset, this.littleEndian); + view.setFloat32(112, this.scl_slope, this.littleEndian); + view.setFloat32(116, this.scl_inter, this.littleEndian); + view.setInt16(120, this.slice_end, this.littleEndian); + view.setUint8(122, this.slice_code); + view.setUint8(123, this.xyzt_units); + view.setFloat32(124, this.cal_max, this.littleEndian); + view.setFloat32(128, this.cal_min, this.littleEndian); + view.setFloat32(132, this.slice_duration, this.littleEndian); + view.setFloat32(136, this.toffset, this.littleEndian); + byteArray.set(new TextEncoder().encode(this.description), 148); + byteArray.set(new TextEncoder().encode(this.aux_file), 228); + view.setInt16(252, this.qform_code, this.littleEndian); + view.setInt16(254, this.sform_code, this.littleEndian); + view.setFloat32(256, this.quatern_b, this.littleEndian); + view.setFloat32(260, this.quatern_c, this.littleEndian); + view.setFloat32(264, this.quatern_d, this.littleEndian); + view.setFloat32(268, this.qoffset_x, this.littleEndian); + view.setFloat32(272, this.qoffset_y, this.littleEndian); + view.setFloat32(276, this.qoffset_z, this.littleEndian); + const flattened = this.affine.flat(); + for (let i = 0; i < 12; i++) { + view.setFloat32(280 + FLOAT32_SIZE * i, flattened[i], this.littleEndian); + } + byteArray.set(new TextEncoder().encode(this.intent_name), 328); + byteArray.set(new TextEncoder().encode(this.magic), 344); + if (includeExtensions) { + byteArray.set(Uint8Array.from([1, 0, 0, 0]), 348); + let extensionByteIndex = this.getExtensionLocation(); + for (const extension of this.extensions) { + view.setInt32(extensionByteIndex, extension.esize, extension.littleEndian); + view.setInt32(extensionByteIndex + 4, extension.ecode, extension.littleEndian); + byteArray.set(new Uint8Array(extension.edata), extensionByteIndex + 8); + extensionByteIndex += extension.esize; + } + } else { + byteArray.set(new Uint8Array(4).fill(0), 348); + } + return byteArray.buffer; + } +}; +/*** Static Pseudo-constants ***/ +// datatype codes +__publicField(_NIFTI1, "TYPE_NONE", 0); +__publicField(_NIFTI1, "TYPE_BINARY", 1); +__publicField(_NIFTI1, "TYPE_UINT8", 2); +__publicField(_NIFTI1, "TYPE_INT16", 4); +__publicField(_NIFTI1, "TYPE_INT32", 8); +__publicField(_NIFTI1, "TYPE_FLOAT32", 16); +__publicField(_NIFTI1, "TYPE_COMPLEX64", 32); +__publicField(_NIFTI1, "TYPE_FLOAT64", 64); +__publicField(_NIFTI1, "TYPE_RGB24", 128); +__publicField(_NIFTI1, "TYPE_INT8", 256); +__publicField(_NIFTI1, "TYPE_UINT16", 512); +__publicField(_NIFTI1, "TYPE_UINT32", 768); +__publicField(_NIFTI1, "TYPE_INT64", 1024); +__publicField(_NIFTI1, "TYPE_UINT64", 1280); +__publicField(_NIFTI1, "TYPE_FLOAT128", 1536); +__publicField(_NIFTI1, "TYPE_COMPLEX128", 1792); +__publicField(_NIFTI1, "TYPE_COMPLEX256", 2048); +// transform codes +__publicField(_NIFTI1, "XFORM_UNKNOWN", 0); +__publicField(_NIFTI1, "XFORM_SCANNER_ANAT", 1); +__publicField(_NIFTI1, "XFORM_ALIGNED_ANAT", 2); +__publicField(_NIFTI1, "XFORM_TALAIRACH", 3); +__publicField(_NIFTI1, "XFORM_MNI_152", 4); +// unit codes +__publicField(_NIFTI1, "SPATIAL_UNITS_MASK", 7); +__publicField(_NIFTI1, "TEMPORAL_UNITS_MASK", 56); +__publicField(_NIFTI1, "UNITS_UNKNOWN", 0); +__publicField(_NIFTI1, "UNITS_METER", 1); +__publicField(_NIFTI1, "UNITS_MM", 2); +__publicField(_NIFTI1, "UNITS_MICRON", 3); +__publicField(_NIFTI1, "UNITS_SEC", 8); +__publicField(_NIFTI1, "UNITS_MSEC", 16); +__publicField(_NIFTI1, "UNITS_USEC", 24); +__publicField(_NIFTI1, "UNITS_HZ", 32); +__publicField(_NIFTI1, "UNITS_PPM", 40); +__publicField(_NIFTI1, "UNITS_RADS", 48); +// nifti1 codes +__publicField(_NIFTI1, "MAGIC_COOKIE", 348); +__publicField(_NIFTI1, "STANDARD_HEADER_SIZE", 348); +__publicField(_NIFTI1, "MAGIC_NUMBER_LOCATION", 344); +__publicField(_NIFTI1, "MAGIC_NUMBER", [110, 43, 49]); +// n+1 (.nii) +__publicField(_NIFTI1, "MAGIC_NUMBER2", [110, 105, 49]); +// ni1 (.hdr/.img) +__publicField(_NIFTI1, "EXTENSION_HEADER_SIZE", 8); +var NIFTI1 = _NIFTI1; + +// ../../node_modules/nifti-reader-js/dist/nifti2.js +var _NIFTI2 = class _NIFTI2 { + constructor() { + __publicField(this, "littleEndian", false); + __publicField(this, "dim_info", 0); + __publicField(this, "dims", []); + __publicField(this, "intent_p1", 0); + __publicField(this, "intent_p2", 0); + __publicField(this, "intent_p3", 0); + __publicField(this, "intent_code", 0); + __publicField(this, "datatypeCode", 0); + __publicField(this, "numBitsPerVoxel", 0); + __publicField(this, "slice_start", 0); + __publicField(this, "slice_end", 0); + __publicField(this, "slice_code", 0); + __publicField(this, "pixDims", []); + __publicField(this, "vox_offset", 0); + __publicField(this, "scl_slope", 1); + __publicField(this, "scl_inter", 0); + __publicField(this, "xyzt_units", 0); + __publicField(this, "cal_max", 0); + __publicField(this, "cal_min", 0); + __publicField(this, "slice_duration", 0); + __publicField(this, "toffset", 0); + __publicField(this, "description", ""); + __publicField(this, "aux_file", ""); + __publicField(this, "intent_name", ""); + __publicField(this, "qform_code", 0); + __publicField(this, "sform_code", 0); + __publicField(this, "quatern_b", 0); + __publicField(this, "quatern_c", 0); + __publicField(this, "quatern_d", 0); + __publicField(this, "qoffset_x", 0); + __publicField(this, "qoffset_y", 0); + __publicField(this, "qoffset_z", 0); + __publicField(this, "affine", [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [0, 0, 0, 1] + ]); + __publicField(this, "magic", "0"); + __publicField(this, "extensionFlag", [0, 0, 0, 0]); + __publicField(this, "extensions", []); + __publicField(this, "extensionSize", 0); + __publicField(this, "extensionCode", 0); + /** + * Returns the byte index of the extension. + * @returns {number} + */ + __publicField(this, "getExtensionLocation", function() { + return _NIFTI2.MAGIC_COOKIE + 4; + }); + /** + * Returns the extension size. + * @param {DataView} data + * @returns {number} + */ + __publicField(this, "getExtensionSize", NIFTI1.prototype.getExtensionSize); + /** + * Returns the extension code. + * @param {DataView} data + * @returns {number} + */ + __publicField(this, "getExtensionCode", NIFTI1.prototype.getExtensionCode); + /** + * Adds an extension + * @param {NIFTIEXTENSION} extension + * @param {number} index + */ + __publicField(this, "addExtension", NIFTI1.prototype.addExtension); + /** + * Removes an extension + * @param {number} index + */ + __publicField(this, "removeExtension", NIFTI1.prototype.removeExtension); + /** + * Returns a human-readable string of datatype. + * @param {number} code + * @returns {string} + */ + __publicField(this, "getDatatypeCodeString", NIFTI1.prototype.getDatatypeCodeString); + /** + * Returns a human-readable string of transform type. + * @param {number} code + * @returns {string} + */ + __publicField(this, "getTransformCodeString", NIFTI1.prototype.getTransformCodeString); + /** + * Returns a human-readable string of spatial and temporal units. + * @param {number} code + * @returns {string} + */ + __publicField(this, "getUnitsCodeString", NIFTI1.prototype.getUnitsCodeString); + /** + * Returns the qform matrix. + * @returns {Array.>} + */ + __publicField(this, "getQformMat", NIFTI1.prototype.getQformMat); + /** + * Converts qform to an affine. (See http://nifti.nimh.nih.gov/pub/dist/src/niftilib/nifti1_io.c) + * @param {number} qb + * @param {number} qc + * @param {number} qd + * @param {number} qx + * @param {number} qy + * @param {number} qz + * @param {number} dx + * @param {number} dy + * @param {number} dz + * @param {number} qfac + * @returns {Array.>} + */ + __publicField(this, "convertNiftiQFormToNiftiSForm", NIFTI1.prototype.convertNiftiQFormToNiftiSForm); + /** + * Converts sform to an orientation string (e.g., XYZ+--). (See http://nimh.nih.gov/pub/dist/src/niftilib/nifti1_io.c) + * @param {Array.>} R + * @returns {string} + */ + __publicField(this, "convertNiftiSFormToNEMA", NIFTI1.prototype.convertNiftiSFormToNEMA); + __publicField(this, "nifti_mat33_mul", NIFTI1.prototype.nifti_mat33_mul); + __publicField(this, "nifti_mat33_determ", NIFTI1.prototype.nifti_mat33_determ); + } + // ni2\0 + /*** Prototype Methods ***/ + /** + * Reads the header data. + * @param {ArrayBuffer} data + */ + readHeader(data) { + var rawData = new DataView(data), magicCookieVal = Utils.getIntAt(rawData, 0, this.littleEndian), ctr, ctrOut, ctrIn, index, array; + if (magicCookieVal !== _NIFTI2.MAGIC_COOKIE) { + this.littleEndian = true; + magicCookieVal = Utils.getIntAt(rawData, 0, this.littleEndian); + } + if (magicCookieVal !== _NIFTI2.MAGIC_COOKIE) { + throw new Error("This does not appear to be a NIFTI file!"); + } + this.magic = Utils.getStringAt(rawData, 4, 12); + this.datatypeCode = Utils.getShortAt(rawData, 12, this.littleEndian); + this.numBitsPerVoxel = Utils.getShortAt(rawData, 14, this.littleEndian); + for (ctr = 0; ctr < 8; ctr += 1) { + index = 16 + ctr * 8; + this.dims[ctr] = Utils.getInt64At(rawData, index, this.littleEndian); + } + this.intent_p1 = Utils.getDoubleAt(rawData, 80, this.littleEndian); + this.intent_p2 = Utils.getDoubleAt(rawData, 88, this.littleEndian); + this.intent_p3 = Utils.getDoubleAt(rawData, 96, this.littleEndian); + for (ctr = 0; ctr < 8; ctr += 1) { + index = 104 + ctr * 8; + this.pixDims[ctr] = Utils.getDoubleAt(rawData, index, this.littleEndian); + } + this.vox_offset = Utils.getInt64At(rawData, 168, this.littleEndian); + this.scl_slope = Utils.getDoubleAt(rawData, 176, this.littleEndian); + this.scl_inter = Utils.getDoubleAt(rawData, 184, this.littleEndian); + this.cal_max = Utils.getDoubleAt(rawData, 192, this.littleEndian); + this.cal_min = Utils.getDoubleAt(rawData, 200, this.littleEndian); + this.slice_duration = Utils.getDoubleAt(rawData, 208, this.littleEndian); + this.toffset = Utils.getDoubleAt(rawData, 216, this.littleEndian); + this.slice_start = Utils.getInt64At(rawData, 224, this.littleEndian); + this.slice_end = Utils.getInt64At(rawData, 232, this.littleEndian); + this.description = Utils.getStringAt(rawData, 240, 240 + 80); + this.aux_file = Utils.getStringAt(rawData, 320, 320 + 24); + this.qform_code = Utils.getIntAt(rawData, 344, this.littleEndian); + this.sform_code = Utils.getIntAt(rawData, 348, this.littleEndian); + this.quatern_b = Utils.getDoubleAt(rawData, 352, this.littleEndian); + this.quatern_c = Utils.getDoubleAt(rawData, 360, this.littleEndian); + this.quatern_d = Utils.getDoubleAt(rawData, 368, this.littleEndian); + this.qoffset_x = Utils.getDoubleAt(rawData, 376, this.littleEndian); + this.qoffset_y = Utils.getDoubleAt(rawData, 384, this.littleEndian); + this.qoffset_z = Utils.getDoubleAt(rawData, 392, this.littleEndian); + for (ctrOut = 0; ctrOut < 3; ctrOut += 1) { + for (ctrIn = 0; ctrIn < 4; ctrIn += 1) { + index = 400 + (ctrOut * 4 + ctrIn) * 8; + this.affine[ctrOut][ctrIn] = Utils.getDoubleAt(rawData, index, this.littleEndian); + } + } + this.affine[3][0] = 0; + this.affine[3][1] = 0; + this.affine[3][2] = 0; + this.affine[3][3] = 1; + this.slice_code = Utils.getIntAt(rawData, 496, this.littleEndian); + this.xyzt_units = Utils.getIntAt(rawData, 500, this.littleEndian); + this.intent_code = Utils.getIntAt(rawData, 504, this.littleEndian); + this.intent_name = Utils.getStringAt(rawData, 508, 508 + 16); + this.dim_info = Utils.getByteAt(rawData, 524); + if (rawData.byteLength > _NIFTI2.MAGIC_COOKIE) { + this.extensionFlag[0] = Utils.getByteAt(rawData, 540); + this.extensionFlag[1] = Utils.getByteAt(rawData, 540 + 1); + this.extensionFlag[2] = Utils.getByteAt(rawData, 540 + 2); + this.extensionFlag[3] = Utils.getByteAt(rawData, 540 + 3); + if (this.extensionFlag[0]) { + this.extensions = Utils.getExtensionsAt(rawData, this.getExtensionLocation(), this.littleEndian, this.vox_offset); + this.extensionSize = this.extensions[0].esize; + this.extensionCode = this.extensions[0].ecode; + } + } + } + /** + * Returns a formatted string of header fields. + * @returns {string} + */ + toFormattedString() { + var fmt = Utils.formatNumber, string = ""; + string += "Datatype = " + +this.datatypeCode + " (" + this.getDatatypeCodeString(this.datatypeCode) + ")\n"; + string += "Bits Per Voxel = = " + this.numBitsPerVoxel + "\n"; + string += "Image Dimensions (1-8): " + this.dims[0] + ", " + this.dims[1] + ", " + this.dims[2] + ", " + this.dims[3] + ", " + this.dims[4] + ", " + this.dims[5] + ", " + this.dims[6] + ", " + this.dims[7] + "\n"; + string += "Intent Parameters (1-3): " + this.intent_p1 + ", " + this.intent_p2 + ", " + this.intent_p3 + "\n"; + string += "Voxel Dimensions (1-8): " + fmt(this.pixDims[0]) + ", " + fmt(this.pixDims[1]) + ", " + fmt(this.pixDims[2]) + ", " + fmt(this.pixDims[3]) + ", " + fmt(this.pixDims[4]) + ", " + fmt(this.pixDims[5]) + ", " + fmt(this.pixDims[6]) + ", " + fmt(this.pixDims[7]) + "\n"; + string += "Image Offset = " + this.vox_offset + "\n"; + string += "Data Scale: Slope = " + fmt(this.scl_slope) + " Intercept = " + fmt(this.scl_inter) + "\n"; + string += "Display Range: Max = " + fmt(this.cal_max) + " Min = " + fmt(this.cal_min) + "\n"; + string += "Slice Duration = " + this.slice_duration + "\n"; + string += "Time Axis Shift = " + this.toffset + "\n"; + string += "Slice Start = " + this.slice_start + "\n"; + string += "Slice End = " + this.slice_end + "\n"; + string += 'Description: "' + this.description + '"\n'; + string += 'Auxiliary File: "' + this.aux_file + '"\n'; + string += "Q-Form Code = " + this.qform_code + " (" + this.getTransformCodeString(this.qform_code) + ")\n"; + string += "S-Form Code = " + this.sform_code + " (" + this.getTransformCodeString(this.sform_code) + ")\n"; + string += "Quaternion Parameters: b = " + fmt(this.quatern_b) + " c = " + fmt(this.quatern_c) + " d = " + fmt(this.quatern_d) + "\n"; + string += "Quaternion Offsets: x = " + this.qoffset_x + " y = " + this.qoffset_y + " z = " + this.qoffset_z + "\n"; + string += "S-Form Parameters X: " + fmt(this.affine[0][0]) + ", " + fmt(this.affine[0][1]) + ", " + fmt(this.affine[0][2]) + ", " + fmt(this.affine[0][3]) + "\n"; + string += "S-Form Parameters Y: " + fmt(this.affine[1][0]) + ", " + fmt(this.affine[1][1]) + ", " + fmt(this.affine[1][2]) + ", " + fmt(this.affine[1][3]) + "\n"; + string += "S-Form Parameters Z: " + fmt(this.affine[2][0]) + ", " + fmt(this.affine[2][1]) + ", " + fmt(this.affine[2][2]) + ", " + fmt(this.affine[2][3]) + "\n"; + string += "Slice Code = " + this.slice_code + "\n"; + string += "Units Code = " + this.xyzt_units + " (" + this.getUnitsCodeString(NIFTI1.SPATIAL_UNITS_MASK & this.xyzt_units) + ", " + this.getUnitsCodeString(NIFTI1.TEMPORAL_UNITS_MASK & this.xyzt_units) + ")\n"; + string += "Intent Code = " + this.intent_code + "\n"; + string += 'Intent Name: "' + this.intent_name + '"\n'; + string += "Dim Info = " + this.dim_info + "\n"; + return string; + } + /** + * Returns header as ArrayBuffer. + * @param {boolean} includeExtensions - should extension bytes be included + * @returns {ArrayBuffer} + */ + toArrayBuffer(includeExtensions = false) { + const INT64_SIZE = 8; + const DOUBLE_SIZE = 8; + let byteSize = 540 + 4; + if (includeExtensions) { + for (let extension of this.extensions) { + byteSize += extension.esize; + } + } + let byteArray = new Uint8Array(byteSize); + let view = new DataView(byteArray.buffer); + view.setInt32(0, 540, this.littleEndian); + byteArray.set(new TextEncoder().encode(this.magic), 4); + view.setInt16(12, this.datatypeCode, this.littleEndian); + view.setInt16(14, this.numBitsPerVoxel, this.littleEndian); + for (let i = 0; i < 8; i++) { + view.setBigInt64(16 + INT64_SIZE * i, BigInt(this.dims[i]), this.littleEndian); + } + view.setFloat64(80, this.intent_p1, this.littleEndian); + view.setFloat64(88, this.intent_p2, this.littleEndian); + view.setFloat64(96, this.intent_p3, this.littleEndian); + for (let i = 0; i < 8; i++) { + view.setFloat64(104 + DOUBLE_SIZE * i, this.pixDims[i], this.littleEndian); + } + view.setBigInt64(168, BigInt(this.vox_offset), this.littleEndian); + view.setFloat64(176, this.scl_slope, this.littleEndian); + view.setFloat64(184, this.scl_inter, this.littleEndian); + view.setFloat64(192, this.cal_max, this.littleEndian); + view.setFloat64(200, this.cal_min, this.littleEndian); + view.setFloat64(208, this.slice_duration, this.littleEndian); + view.setFloat64(216, this.toffset, this.littleEndian); + view.setBigInt64(224, BigInt(this.slice_start), this.littleEndian); + view.setBigInt64(232, BigInt(this.slice_end), this.littleEndian); + byteArray.set(new TextEncoder().encode(this.description), 240); + byteArray.set(new TextEncoder().encode(this.aux_file), 320); + view.setInt32(344, this.qform_code, this.littleEndian); + view.setInt32(348, this.sform_code, this.littleEndian); + view.setFloat64(352, this.quatern_b, this.littleEndian); + view.setFloat64(360, this.quatern_c, this.littleEndian); + view.setFloat64(368, this.quatern_d, this.littleEndian); + view.setFloat64(376, this.qoffset_x, this.littleEndian); + view.setFloat64(384, this.qoffset_y, this.littleEndian); + view.setFloat64(392, this.qoffset_z, this.littleEndian); + const flattened = this.affine.flat(); + for (let i = 0; i < 12; i++) { + view.setFloat64(400 + DOUBLE_SIZE * i, flattened[i], this.littleEndian); + } + view.setInt32(496, this.slice_code, this.littleEndian); + view.setInt32(500, this.xyzt_units, this.littleEndian); + view.setInt32(504, this.intent_code, this.littleEndian); + byteArray.set(new TextEncoder().encode(this.intent_name), 508); + view.setUint8(524, this.dim_info); + if (includeExtensions) { + byteArray.set(Uint8Array.from([1, 0, 0, 0]), 540); + let extensionByteIndex = this.getExtensionLocation(); + for (const extension of this.extensions) { + view.setInt32(extensionByteIndex, extension.esize, extension.littleEndian); + view.setInt32(extensionByteIndex + 4, extension.ecode, extension.littleEndian); + byteArray.set(new Uint8Array(extension.edata), extensionByteIndex + 8); + extensionByteIndex += extension.esize; + } + } else { + byteArray.set(new Uint8Array(4).fill(0), 540); + } + return byteArray.buffer; + } +}; +/*** Static Pseudo-constants ***/ +__publicField(_NIFTI2, "MAGIC_COOKIE", 540); +__publicField(_NIFTI2, "MAGIC_NUMBER_LOCATION", 4); +__publicField(_NIFTI2, "MAGIC_NUMBER", [110, 43, 50, 0, 13, 10, 26, 10]); +// n+2\0 +__publicField(_NIFTI2, "MAGIC_NUMBER2", [110, 105, 50, 0, 13, 10, 26, 10]); +var NIFTI2 = _NIFTI2; + +// ../../node_modules/nifti-reader-js/dist/nifti.js +function isNIFTI1(data, isHdrImgPairOK = false) { + var buf, mag1, mag2, mag3; + if (data.byteLength < NIFTI1.STANDARD_HEADER_SIZE) { + return false; + } + buf = new DataView(data); + if (buf) + mag1 = buf.getUint8(NIFTI1.MAGIC_NUMBER_LOCATION); + mag2 = buf.getUint8(NIFTI1.MAGIC_NUMBER_LOCATION + 1); + mag3 = buf.getUint8(NIFTI1.MAGIC_NUMBER_LOCATION + 2); + if (isHdrImgPairOK && mag1 === NIFTI1.MAGIC_NUMBER2[0] && mag2 === NIFTI1.MAGIC_NUMBER2[1] && mag3 === NIFTI1.MAGIC_NUMBER2[2]) + return true; + return !!(mag1 === NIFTI1.MAGIC_NUMBER[0] && mag2 === NIFTI1.MAGIC_NUMBER[1] && mag3 === NIFTI1.MAGIC_NUMBER[2]); +} +function isNIFTI2(data, isHdrImgPairOK = false) { + var buf, mag1, mag2, mag3; + if (data.byteLength < NIFTI1.STANDARD_HEADER_SIZE) { + return false; + } + buf = new DataView(data); + mag1 = buf.getUint8(NIFTI2.MAGIC_NUMBER_LOCATION); + mag2 = buf.getUint8(NIFTI2.MAGIC_NUMBER_LOCATION + 1); + mag3 = buf.getUint8(NIFTI2.MAGIC_NUMBER_LOCATION + 2); + if (isHdrImgPairOK && mag1 === NIFTI2.MAGIC_NUMBER2[0] && mag2 === NIFTI2.MAGIC_NUMBER2[1] && mag3 === NIFTI2.MAGIC_NUMBER2[2]) + return true; + return !!(mag1 === NIFTI2.MAGIC_NUMBER[0] && mag2 === NIFTI2.MAGIC_NUMBER[1] && mag3 === NIFTI2.MAGIC_NUMBER[2]); +} +function isCompressed(data) { + var buf, magicCookie1, magicCookie2; + if (data) { + buf = new DataView(data); + magicCookie1 = buf.getUint8(0); + magicCookie2 = buf.getUint8(1); + if (magicCookie1 === Utils.GUNZIP_MAGIC_COOKIE1) { + return true; + } + if (magicCookie2 === Utils.GUNZIP_MAGIC_COOKIE2) { + return true; + } + } + return false; +} +function decompress(data) { + return decompressSync(new Uint8Array(data)).buffer; +} +async function decompressAsync(data) { + const uint8Data = new Uint8Array(data); + const format = uint8Data[0] === 31 && uint8Data[1] === 139 && uint8Data[2] === 8 ? "gzip" : uint8Data[0] === 120 && (uint8Data[1] === 1 || uint8Data[1] === 94 || uint8Data[1] === 156 || uint8Data[1] === 218) ? "deflate" : "deflate-raw"; + const stream = new DecompressionStream(format); + const writer = stream.writable.getWriter(); + writer.write(uint8Data).catch(console.error); + const closePromise = writer.close().catch(console.error); + const response = new Response(stream.readable); + const result = await response.arrayBuffer(); + await closePromise; + return result; +} +async function decompressHeaderAsync(data, minOutputBytes = Infinity) { + const detectFormat = (data2) => { + if (data2[0] === 31 && data2[1] === 139 && data2[2] === 8) + return "gzip"; + if (data2[0] === 120 && [1, 94, 156, 218].includes(data2[1])) + return "deflate"; + return "deflate-raw"; + }; + const uint8Data = new Uint8Array(data); + const format = detectFormat(uint8Data); + const stream = new DecompressionStream(format); + const limitStream = new TransformStream({ + transform(chunk, controller) { + controller.enqueue(chunk); + }, + flush(controller) { + controller.terminate(); + } + }); + const { readable, writable } = stream; + const writer = writable.getWriter(); + const limitedReader = readable.pipeThrough(limitStream).getReader(); + writer.write(uint8Data).catch((err2) => { + if (!(err2 instanceof Error && err2.name === "AbortError")) { + console.error("Error during write:", err2); + } + }); + const chunks = []; + let totalBytes = 0; + try { + while (totalBytes < minOutputBytes) { + const { done, value } = await limitedReader.read(); + if (done) + break; + const remainingSpace = minOutputBytes - totalBytes; + const chunk = value.subarray(0, Math.min(value.length, remainingSpace)); + chunks.push(chunk); + totalBytes += chunk.length; + if (totalBytes >= minOutputBytes) { + await Promise.all([ + limitedReader.cancel().catch(() => { + }), + writer.abort().catch(() => { + }) + ]); + break; + } + } + } catch (err2) { + if (!(err2 instanceof Error && err2.name === "AbortError")) { + console.error("Error during decompression:", err2); + } + } finally { + await Promise.allSettled([ + limitedReader.cancel().catch(() => { + }), + writer.close().catch(() => { + }) + ]); + } + return chunks.length === 1 ? chunks[0].buffer : chunks.reduce((acc, chunk) => { + const combined = new Uint8Array(acc.byteLength + chunk.byteLength); + combined.set(new Uint8Array(acc), 0); + combined.set(chunk, acc.byteLength); + return combined.buffer; + }, new ArrayBuffer(0)); +} +function readHeader(data, isHdrImgPairOK = false) { + let header = null; + if (isCompressed(data)) { + data = decompress(data); + } + if (isNIFTI1(data, isHdrImgPairOK)) { + header = new NIFTI1(); + } else if (isNIFTI2(data, isHdrImgPairOK)) { + header = new NIFTI2(); + } + if (header) { + header.readHeader(data); + } else { + throw new Error("That file does not appear to be NIFTI!"); + } + return header; +} +async function readHeaderAsync(data, isHdrImgPairOK = false) { + if (!isCompressed(data)) { + return readHeader(data, isHdrImgPairOK); + } + let header = null; + let dat = await decompressHeaderAsync(data, 540); + let isLitteEndian = true; + let isVers1 = true; + var rawData = new DataView(dat); + const sigLittle = rawData.getInt32(0, true); + const sigBig = rawData.getInt32(0, false); + if (sigLittle === 348) { + } else if (sigBig === 348) { + isLitteEndian = false; + } else if (sigLittle === 540) { + isVers1 = false; + } else if (sigBig === 540) { + isVers1 = false; + isLitteEndian = false; + } else { + throw new Error("That file does not appear to be NIFTI!"); + } + let vox_offset = Math.round(rawData.getFloat32(108, isLitteEndian)); + if (NIFTI2) { + vox_offset = Utils.getUint64At(rawData, 168, isLitteEndian); + } + if (vox_offset > dat.byteLength) { + dat = await decompressHeaderAsync(data, vox_offset); + } + if (isVers1) { + header = new NIFTI1(); + } else { + header = new NIFTI2(); + } + header.readHeader(dat); + return header; +} +function hasExtension(header) { + return header.extensionFlag[0] != 0; +} +function readImage(header, data) { + var imageOffset = header.vox_offset, timeDim = 1, statDim = 1; + if (header.dims[4]) { + timeDim = header.dims[4]; + } + if (header.dims[5]) { + statDim = header.dims[5]; + } + var imageSize = header.dims[1] * header.dims[2] * header.dims[3] * timeDim * statDim * (header.numBitsPerVoxel / 8); + return data.slice(imageOffset, imageOffset + imageSize); +} + +// ../../node_modules/zarrita/dist/src/errors.js +var NodeNotFoundError = class extends Error { + constructor(context, options = {}) { + super(`Node not found: ${context}`, options); + this.name = "NodeNotFoundError"; + } +}; +var KeyError = class extends Error { + constructor(path) { + super(`Missing key: ${path}`); + this.name = "KeyError"; + } +}; + +// ../../node_modules/zarrita/dist/src/typedarray.js +var _bytes; +var BoolArray = class { + constructor(x, byteOffset, length4) { + __privateAdd(this, _bytes); + if (typeof x === "number") { + __privateSet(this, _bytes, new Uint8Array(x)); + } else if (x instanceof ArrayBuffer) { + __privateSet(this, _bytes, new Uint8Array(x, byteOffset, length4)); + } else { + __privateSet(this, _bytes, new Uint8Array(Array.from(x, (v) => v ? 1 : 0))); + } + } + get BYTES_PER_ELEMENT() { + return 1; + } + get byteOffset() { + return __privateGet(this, _bytes).byteOffset; + } + get byteLength() { + return __privateGet(this, _bytes).byteLength; + } + get buffer() { + return __privateGet(this, _bytes).buffer; + } + get length() { + return __privateGet(this, _bytes).length; + } + get(idx) { + let value = __privateGet(this, _bytes)[idx]; + return typeof value === "number" ? value !== 0 : value; + } + set(idx, value) { + __privateGet(this, _bytes)[idx] = value ? 1 : 0; + } + fill(value) { + __privateGet(this, _bytes).fill(value ? 1 : 0); + } + *[Symbol.iterator]() { + for (let i = 0; i < this.length; i++) { + yield this.get(i); + } + } +}; +_bytes = new WeakMap(); +var _encoder; +var ByteStringArray = class { + constructor(chars, x, byteOffset, length4) { + __publicField(this, "_data"); + __publicField(this, "chars"); + __privateAdd(this, _encoder); + this.chars = chars; + __privateSet(this, _encoder, new TextEncoder()); + if (typeof x === "number") { + this._data = new Uint8Array(x * chars); + } else if (x instanceof ArrayBuffer) { + if (length4) + length4 = length4 * chars; + this._data = new Uint8Array(x, byteOffset, length4); + } else { + let values = Array.from(x); + this._data = new Uint8Array(values.length * chars); + for (let i = 0; i < values.length; i++) { + this.set(i, values[i]); + } + } + } + get BYTES_PER_ELEMENT() { + return this.chars; + } + get byteOffset() { + return this._data.byteOffset; + } + get byteLength() { + return this._data.byteLength; + } + get buffer() { + return this._data.buffer; + } + get length() { + return this.byteLength / this.BYTES_PER_ELEMENT; + } + get(idx) { + const view = new Uint8Array(this.buffer, this.byteOffset + this.chars * idx, this.chars); + return new TextDecoder().decode(view).replace(/\x00/g, ""); + } + set(idx, value) { + const view = new Uint8Array(this.buffer, this.byteOffset + this.chars * idx, this.chars); + view.fill(0); + view.set(__privateGet(this, _encoder).encode(value)); + } + fill(value) { + const encoded = __privateGet(this, _encoder).encode(value); + for (let i = 0; i < this.length; i++) { + this._data.set(encoded, i * this.chars); + } + } + *[Symbol.iterator]() { + for (let i = 0; i < this.length; i++) { + yield this.get(i); + } + } +}; +_encoder = new WeakMap(); +var _data; +var _UnicodeStringArray = class _UnicodeStringArray { + constructor(chars, x, byteOffset, length4) { + __privateAdd(this, _data); + __publicField(this, "chars"); + this.chars = chars; + if (typeof x === "number") { + __privateSet(this, _data, new Int32Array(x * chars)); + } else if (x instanceof ArrayBuffer) { + if (length4) + length4 *= chars; + __privateSet(this, _data, new Int32Array(x, byteOffset, length4)); + } else { + const values = x; + const d = new _UnicodeStringArray(chars, 1); + __privateSet(this, _data, new Int32Array(function* () { + for (let str6 of values) { + d.set(0, str6); + yield* __privateGet(d, _data); + } + }())); + } + } + get BYTES_PER_ELEMENT() { + return __privateGet(this, _data).BYTES_PER_ELEMENT * this.chars; + } + get byteLength() { + return __privateGet(this, _data).byteLength; + } + get byteOffset() { + return __privateGet(this, _data).byteOffset; + } + get buffer() { + return __privateGet(this, _data).buffer; + } + get length() { + return __privateGet(this, _data).length / this.chars; + } + get(idx) { + const offset = this.chars * idx; + let result = ""; + for (let i = 0; i < this.chars; i++) { + result += String.fromCodePoint(__privateGet(this, _data)[offset + i]); + } + return result.replace(/\u0000/g, ""); + } + set(idx, value) { + const offset = this.chars * idx; + const view = __privateGet(this, _data).subarray(offset, offset + this.chars); + view.fill(0); + for (let i = 0; i < this.chars; i++) { + view[i] = value.codePointAt(i) ?? 0; + } + } + fill(value) { + this.set(0, value); + let encoded = __privateGet(this, _data).subarray(0, this.chars); + for (let i = 1; i < this.length; i++) { + __privateGet(this, _data).set(encoded, i * this.chars); + } + } + *[Symbol.iterator]() { + for (let i = 0; i < this.length; i++) { + yield this.get(i); + } + } +}; +_data = new WeakMap(); +var UnicodeStringArray = _UnicodeStringArray; + +// ../../node_modules/zarrita/dist/src/util.js +function json_decode_object(bytes) { + const str6 = new TextDecoder().decode(bytes); + return JSON.parse(str6); +} +function byteswap_inplace(view, bytes_per_element2) { + const numFlips = bytes_per_element2 / 2; + const endByteIndex = bytes_per_element2 - 1; + let t = 0; + for (let i = 0; i < view.length; i += bytes_per_element2) { + for (let j = 0; j < numFlips; j += 1) { + t = view[i + j]; + view[i + j] = view[i + endByteIndex - j]; + view[i + endByteIndex - j] = t; + } + } +} +function get_ctr(data_type) { + if (data_type === "v2:object") { + return globalThis.Array; + } + let match = data_type.match(/v2:([US])(\d+)/); + if (match) { + let [, kind, chars] = match; + return (kind === "U" ? UnicodeStringArray : ByteStringArray).bind(null, Number(chars)); + } + let ctr = { + int8: Int8Array, + int16: Int16Array, + int32: Int32Array, + int64: globalThis.BigInt64Array, + uint8: Uint8Array, + uint16: Uint16Array, + uint32: Uint32Array, + uint64: globalThis.BigUint64Array, + float16: globalThis.Float16Array, + float32: Float32Array, + float64: Float64Array, + bool: BoolArray + }[data_type]; + assert(ctr, `Unknown or unsupported data_type: ${data_type}`); + return ctr; +} +function get_strides(shape, order) { + const rank = shape.length; + if (typeof order === "string") { + order = order === "C" ? Array.from({ length: rank }, (_, i) => i) : Array.from({ length: rank }, (_, i) => rank - 1 - i); + } + assert(rank === order.length, "Order length must match the number of dimensions."); + let step = 1; + let stride = new Array(rank); + for (let i = order.length - 1; i >= 0; i--) { + stride[order[i]] = step; + step *= shape[order[i]]; + } + return stride; +} +function create_chunk_key_encoder({ name, configuration }) { + if (name === "default") { + const separator = configuration?.separator ?? "/"; + return (chunk_coords) => ["c", ...chunk_coords].join(separator); + } + if (name === "v2") { + const separator = configuration?.separator ?? "."; + return (chunk_coords) => chunk_coords.join(separator) || "0"; + } + throw new Error(`Unknown chunk key encoding: ${name}`); +} +function coerce_dtype(dtype) { + if (dtype === "|O") { + return { data_type: "v2:object" }; + } + let match = dtype.match(/^([<|>])(.*)$/); + assert(match, `Invalid dtype: ${dtype}`); + let [, endian, rest] = match; + let data_type = { + b1: "bool", + i1: "int8", + u1: "uint8", + i2: "int16", + u2: "uint16", + i4: "int32", + u4: "uint32", + i8: "int64", + u8: "uint64", + f2: "float16", + f4: "float32", + f8: "float64" + }[rest] ?? (rest.startsWith("S") || rest.startsWith("U") ? `v2:${rest}` : void 0); + assert(data_type, `Unsupported or unknown dtype: ${dtype}`); + if (endian === "|") { + return { data_type }; + } + return { data_type, endian: endian === "<" ? "little" : "big" }; +} +function v2_to_v3_array_metadata(meta, attributes = {}) { + let codecs = []; + let dtype = coerce_dtype(meta.dtype); + if (meta.order === "F") { + codecs.push({ name: "transpose", configuration: { order: "F" } }); + } + if ("endian" in dtype && dtype.endian === "big") { + codecs.push({ name: "bytes", configuration: { endian: "big" } }); + } + for (let { id, ...configuration } of meta.filters ?? []) { + codecs.push({ name: id, configuration }); + } + if (meta.compressor) { + let { id, ...configuration } = meta.compressor; + codecs.push({ name: id, configuration }); + } + return { + zarr_format: 3, + node_type: "array", + shape: meta.shape, + data_type: dtype.data_type, + chunk_grid: { + name: "regular", + configuration: { + chunk_shape: meta.chunks + } + }, + chunk_key_encoding: { + name: "v2", + configuration: { + separator: meta.dimension_separator ?? "." + } + }, + codecs, + fill_value: meta.fill_value, + attributes + }; +} +function v2_to_v3_group_metadata(_meta, attributes = {}) { + return { + zarr_format: 3, + node_type: "group", + attributes + }; +} +function is_dtype(dtype, query) { + if (query !== "number" && query !== "bigint" && query !== "boolean" && query !== "object" && query !== "string") { + return dtype === query; + } + let is_boolean = dtype === "bool"; + if (query === "boolean") + return is_boolean; + let is_string = dtype.startsWith("v2:U") || dtype.startsWith("v2:S"); + if (query === "string") + return is_string; + let is_bigint = dtype === "int64" || dtype === "uint64"; + if (query === "bigint") + return is_bigint; + let is_object = dtype === "v2:object"; + if (query === "object") + return is_object; + return !is_string && !is_bigint && !is_boolean && !is_object; +} +function is_sharding_codec(codec) { + return codec?.name === "sharding_indexed"; +} +function ensure_correct_scalar(metadata) { + if ((metadata.data_type === "uint64" || metadata.data_type === "int64") && metadata.fill_value != null) { + return BigInt(metadata.fill_value); + } + return metadata.fill_value; +} +function rethrow_unless(error, ...errors) { + if (!errors.some((ErrorClass) => error instanceof ErrorClass)) { + throw error; + } +} +function assert(expression, msg = "") { + if (!expression) { + throw new Error(msg); + } +} +async function decompress2(data, { format, signal }) { + const response = data instanceof Response ? data : new Response(data); + assert(response.body, "Response does not contain body."); + try { + const decompressedResponse = new Response(response.body.pipeThrough(new DecompressionStream(format), { signal })); + const buffer = await decompressedResponse.arrayBuffer(); + return buffer; + } catch { + signal?.throwIfAborted(); + throw new Error(`Failed to decode ${format}`); + } +} + +// ../../node_modules/zarrita/dist/src/codecs/bitround.js +var BitroundCodec = class _BitroundCodec { + constructor(configuration, _meta) { + __publicField(this, "kind", "array_to_array"); + assert(configuration.keepbits >= 0, "keepbits must be zero or positive"); + } + static fromConfig(configuration, meta) { + return new _BitroundCodec(configuration, meta); + } + /** + * Encode a chunk of data with bit-rounding. + * @param _arr - The chunk to encode + */ + encode(_arr) { + throw new Error("`BitroundCodec.encode` is not implemented. Please open an issue at https://github.com/manzt/zarrita.js/issues."); + } + /** + * Decode a chunk of data (no-op). + * @param arr - The chunk to decode + * @returns The decoded chunk + */ + decode(arr) { + return arr; + } +}; + +// ../../node_modules/zarrita/dist/src/codecs/bytes.js +var LITTLE_ENDIAN_OS = system_is_little_endian(); +function system_is_little_endian() { + const a = new Uint32Array([305419896]); + const b = new Uint8Array(a.buffer, a.byteOffset, a.byteLength); + return !(b[0] === 18); +} +function bytes_per_element(TypedArray) { + if ("BYTES_PER_ELEMENT" in TypedArray) { + return TypedArray.BYTES_PER_ELEMENT; + } + return 4; +} +var _stride, _TypedArray, _BYTES_PER_ELEMENT, _shape, _endian; +var _BytesCodec = class _BytesCodec { + constructor(configuration, meta) { + __publicField(this, "kind", "array_to_bytes"); + __privateAdd(this, _stride); + __privateAdd(this, _TypedArray); + __privateAdd(this, _BYTES_PER_ELEMENT); + __privateAdd(this, _shape); + __privateAdd(this, _endian); + __privateSet(this, _endian, configuration?.endian); + __privateSet(this, _TypedArray, get_ctr(meta.data_type)); + __privateSet(this, _shape, meta.shape); + __privateSet(this, _stride, get_strides(meta.shape, "C")); + const sample = new (__privateGet(this, _TypedArray))(0); + __privateSet(this, _BYTES_PER_ELEMENT, sample.BYTES_PER_ELEMENT); + } + static fromConfig(configuration, meta) { + return new _BytesCodec(configuration, meta); + } + encode(arr) { + let bytes = new Uint8Array(arr.data.buffer); + if (LITTLE_ENDIAN_OS && __privateGet(this, _endian) === "big") { + byteswap_inplace(bytes, bytes_per_element(__privateGet(this, _TypedArray))); + } + return bytes; + } + decode(bytes) { + if (LITTLE_ENDIAN_OS && __privateGet(this, _endian) === "big") { + byteswap_inplace(bytes, bytes_per_element(__privateGet(this, _TypedArray))); + } + return { + data: new (__privateGet(this, _TypedArray))(bytes.buffer, bytes.byteOffset, bytes.byteLength / __privateGet(this, _BYTES_PER_ELEMENT)), + shape: __privateGet(this, _shape), + stride: __privateGet(this, _stride) + }; + } +}; +_stride = new WeakMap(); +_TypedArray = new WeakMap(); +_BYTES_PER_ELEMENT = new WeakMap(); +_shape = new WeakMap(); +_endian = new WeakMap(); +var BytesCodec = _BytesCodec; + +// ../../node_modules/zarrita/dist/src/codecs/crc32c.js +var Crc32cCodec = class _Crc32cCodec { + constructor() { + __publicField(this, "kind", "bytes_to_bytes"); + } + static fromConfig() { + return new _Crc32cCodec(); + } + encode(_) { + throw new Error("Not implemented"); + } + decode(arr) { + return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength - 4); + } +}; + +// ../../node_modules/zarrita/dist/src/codecs/gzip.js +var GzipCodec = class _GzipCodec { + constructor() { + __publicField(this, "kind", "bytes_to_bytes"); + } + static fromConfig(_) { + return new _GzipCodec(); + } + encode(_bytes2) { + throw new Error("Gzip encoding is not enabled by default. Please register a custom codec with `numcodecs/gzip`."); + } + async decode(bytes) { + const buffer = await decompress2(bytes, { format: "gzip" }); + return new Uint8Array(buffer); + } +}; + +// ../../node_modules/zarrita/dist/src/codecs/json2.js +function throw_on_nan_replacer(_key, value) { + assert(!Number.isNaN(value), "JsonCodec allow_nan is false but NaN was encountered during encoding."); + assert(value !== Number.POSITIVE_INFINITY, "JsonCodec allow_nan is false but Infinity was encountered during encoding."); + assert(value !== Number.NEGATIVE_INFINITY, "JsonCodec allow_nan is false but -Infinity was encountered during encoding."); + return value; +} +function sort_keys_replacer(_key, value) { + return value instanceof Object && !Array.isArray(value) ? Object.keys(value).sort().reduce((sorted, key) => { + sorted[key] = value[key]; + return sorted; + }, {}) : value; +} +var _encoder_config, _decoder_config; +var _JsonCodec = class _JsonCodec { + constructor(configuration = {}) { + __publicField(this, "configuration"); + __publicField(this, "kind", "array_to_bytes"); + __privateAdd(this, _encoder_config); + __privateAdd(this, _decoder_config); + this.configuration = configuration; + const { encoding = "utf-8", skipkeys = false, ensure_ascii = true, check_circular = true, allow_nan = true, sort_keys = true, indent, strict = true } = configuration; + let separators = configuration.separators; + if (!separators) { + if (!indent) { + separators = [",", ":"]; + } else { + separators = [", ", ": "]; + } + } + __privateSet(this, _encoder_config, { + encoding, + skipkeys, + ensure_ascii, + check_circular, + allow_nan, + indent, + separators, + sort_keys + }); + __privateSet(this, _decoder_config, { strict }); + } + static fromConfig(configuration) { + return new _JsonCodec(configuration); + } + encode(buf) { + const { indent, encoding, ensure_ascii, check_circular, allow_nan, sort_keys } = __privateGet(this, _encoder_config); + assert(encoding === "utf-8", "JsonCodec does not yet support non-utf-8 encoding."); + const replacer_functions = []; + assert(check_circular, "JsonCodec does not yet support skipping the check for circular references during encoding."); + if (!allow_nan) { + replacer_functions.push(throw_on_nan_replacer); + } + if (sort_keys) { + replacer_functions.push(sort_keys_replacer); + } + const items = Array.from(buf.data); + items.push("|O"); + items.push(buf.shape); + let replacer = void 0; + if (replacer_functions.length) { + replacer = (key, value) => { + let new_value = value; + for (let sub_replacer of replacer_functions) { + new_value = sub_replacer(key, new_value); + } + return new_value; + }; + } + let json_str = JSON.stringify(items, replacer, indent); + if (ensure_ascii) { + json_str = json_str.replace(/[\u007F-\uFFFF]/g, (chr) => { + const full_str = `0000${chr.charCodeAt(0).toString(16)}`; + const sub_str = full_str.substring(full_str.length - 4); + return `\\u${sub_str}`; + }); + } + return new TextEncoder().encode(json_str); + } + decode(bytes) { + const { strict } = __privateGet(this, _decoder_config); + assert(strict, "JsonCodec does not yet support non-strict decoding."); + const items = json_decode_object(bytes); + const shape = items.pop(); + items.pop(); + assert(shape, "0D not implemented for JsonCodec."); + const stride = get_strides(shape, "C"); + const data = items; + return { data, shape, stride }; + } +}; +_encoder_config = new WeakMap(); +_decoder_config = new WeakMap(); +var JsonCodec = _JsonCodec; + +// ../../node_modules/zarrita/dist/src/codecs/transpose.js +function proxy(arr) { + if (arr instanceof BoolArray || arr instanceof ByteStringArray || arr instanceof UnicodeStringArray) { + const arrp = new Proxy(arr, { + get(target, prop) { + return target.get(Number(prop)); + }, + set(target, prop, value) { + target.set(Number(prop), value); + return true; + } + }); + return arrp; + } + return arr; +} +function empty_like(chunk, order) { + let data; + if (chunk.data instanceof ByteStringArray || chunk.data instanceof UnicodeStringArray) { + data = new chunk.constructor( + // @ts-expect-error + chunk.data.length, + chunk.data.chars + ); + } else { + data = new chunk.constructor(chunk.data.length); + } + return { + data, + shape: chunk.shape, + stride: get_strides(chunk.shape, order) + }; +} +function convert_array_order(src, target) { + let out = empty_like(src, target); + let n_dims = src.shape.length; + let size = src.data.length; + let index = Array(n_dims).fill(0); + let src_data = proxy(src.data); + let out_data = proxy(out.data); + for (let src_idx = 0; src_idx < size; src_idx++) { + let out_idx = 0; + for (let dim = 0; dim < n_dims; dim++) { + out_idx += index[dim] * out.stride[dim]; + } + out_data[out_idx] = src_data[src_idx]; + index[0] += 1; + for (let dim = 0; dim < n_dims; dim++) { + if (index[dim] === src.shape[dim]) { + if (dim + 1 === n_dims) { + break; + } + index[dim] = 0; + index[dim + 1] += 1; + } + } + } + return out; +} +function get_order(chunk) { + let rank = chunk.shape.length; + assert(rank === chunk.stride.length, "Shape and stride must have the same length."); + return chunk.stride.map((s, i) => ({ stride: s, index: i })).sort((a, b) => b.stride - a.stride).map((entry) => entry.index); +} +function matches_order(chunk, target) { + let source = get_order(chunk); + assert(source.length === target.length, "Orders must match"); + return source.every((dim, i) => dim === target[i]); +} +var _order, _inverseOrder; +var _TransposeCodec = class _TransposeCodec { + constructor(configuration, meta) { + __publicField(this, "kind", "array_to_array"); + __privateAdd(this, _order); + __privateAdd(this, _inverseOrder); + let value = configuration.order ?? "C"; + let rank = meta.shape.length; + let order = new Array(rank); + let inverseOrder = new Array(rank); + if (value === "C") { + for (let i = 0; i < rank; ++i) { + order[i] = i; + inverseOrder[i] = i; + } + } else if (value === "F") { + for (let i = 0; i < rank; ++i) { + order[i] = rank - i - 1; + inverseOrder[i] = rank - i - 1; + } + } else { + order = value; + order.forEach((x, i) => { + assert(inverseOrder[x] === void 0, `Invalid permutation: ${JSON.stringify(value)}`); + inverseOrder[x] = i; + }); + } + __privateSet(this, _order, order); + __privateSet(this, _inverseOrder, inverseOrder); + } + static fromConfig(configuration, meta) { + return new _TransposeCodec(configuration, meta); + } + encode(arr) { + if (matches_order(arr, __privateGet(this, _inverseOrder))) { + return arr; + } + return convert_array_order(arr, __privateGet(this, _inverseOrder)); + } + decode(arr) { + return { + data: arr.data, + shape: arr.shape, + stride: get_strides(arr.shape, __privateGet(this, _order)) + }; + } +}; +_order = new WeakMap(); +_inverseOrder = new WeakMap(); +var TransposeCodec = _TransposeCodec; + +// ../../node_modules/zarrita/dist/src/codecs/vlen-utf8.js +var _shape2, _strides; +var _VLenUTF8 = class _VLenUTF8 { + constructor(shape) { + __publicField(this, "kind", "array_to_bytes"); + __privateAdd(this, _shape2); + __privateAdd(this, _strides); + __privateSet(this, _shape2, shape); + __privateSet(this, _strides, get_strides(shape, "C")); + } + static fromConfig(_, meta) { + return new _VLenUTF8(meta.shape); + } + encode(_chunk) { + throw new Error("Method not implemented."); + } + decode(bytes) { + let decoder = new TextDecoder(); + let view = new DataView(bytes.buffer); + let data = Array(view.getUint32(0, true)); + let pos = 4; + for (let i = 0; i < data.length; i++) { + let item_length = view.getUint32(pos, true); + pos += 4; + data[i] = decoder.decode(bytes.buffer.slice(pos, pos + item_length)); + pos += item_length; + } + return { data, shape: __privateGet(this, _shape2), stride: __privateGet(this, _strides) }; + } +}; +_shape2 = new WeakMap(); +_strides = new WeakMap(); +var VLenUTF8 = _VLenUTF8; + +// ../../node_modules/zarrita/dist/src/codecs/zlib.js +var ZlibCodec = class _ZlibCodec { + constructor() { + __publicField(this, "kind", "bytes_to_bytes"); + } + static fromConfig(_) { + return new _ZlibCodec(); + } + encode(_bytes2) { + throw new Error("Zlib encoding is not enabled by default. Please register a codec with `numcodecs/zlib`."); + } + async decode(bytes) { + const buffer = await decompress2(bytes, { format: "deflate" }); + return new Uint8Array(buffer); + } +}; + +// ../../node_modules/zarrita/dist/src/codecs.js +function create_default_registry() { + return (/* @__PURE__ */ new Map()).set("blosc", () => Promise.resolve().then(() => (init_blosc(), blosc_exports)).then((m) => m.default)).set("lz4", () => Promise.resolve().then(() => (init_lz4(), lz4_exports)).then((m) => m.default)).set("zstd", () => Promise.resolve().then(() => (init_zstd(), zstd_exports)).then((m) => m.default)).set("gzip", () => GzipCodec).set("zlib", () => ZlibCodec).set("transpose", () => TransposeCodec).set("bytes", () => BytesCodec).set("crc32c", () => Crc32cCodec).set("vlen-utf8", () => VLenUTF8).set("json2", () => JsonCodec).set("bitround", () => BitroundCodec); +} +var registry = create_default_registry(); +function create_codec_pipeline(chunk_metadata) { + let codecs; + return { + async encode(chunk) { + if (!codecs) + codecs = await load_codecs(chunk_metadata); + for (const codec of codecs.array_to_array) { + chunk = await codec.encode(chunk); + } + let bytes = await codecs.array_to_bytes.encode(chunk); + for (const codec of codecs.bytes_to_bytes) { + bytes = await codec.encode(bytes); + } + return bytes; + }, + async decode(bytes) { + if (!codecs) + codecs = await load_codecs(chunk_metadata); + for (let i = codecs.bytes_to_bytes.length - 1; i >= 0; i--) { + bytes = await codecs.bytes_to_bytes[i].decode(bytes); + } + let chunk = await codecs.array_to_bytes.decode(bytes); + for (let i = codecs.array_to_array.length - 1; i >= 0; i--) { + chunk = await codecs.array_to_array[i].decode(chunk); + } + return chunk; + } + }; +} +async function load_codecs(chunk_meta) { + let promises = chunk_meta.codecs.map(async (meta) => { + let Codec = await registry.get(meta.name)?.(); + assert(Codec, `Unknown codec: ${meta.name}`); + return { Codec, meta }; + }); + let array_to_array = []; + let array_to_bytes; + let bytes_to_bytes = []; + for await (let { Codec, meta } of promises) { + let codec = Codec.fromConfig(meta.configuration, chunk_meta); + switch (codec.kind) { + case "array_to_array": + array_to_array.push(codec); + break; + case "array_to_bytes": + array_to_bytes = codec; + break; + default: + bytes_to_bytes.push(codec); + } + } + if (!array_to_bytes) { + assert(is_typed_array_like_meta(chunk_meta), `Cannot encode ${chunk_meta.data_type} to bytes without a codec`); + array_to_bytes = BytesCodec.fromConfig({ endian: "little" }, chunk_meta); + } + return { array_to_array, array_to_bytes, bytes_to_bytes }; +} +function is_typed_array_like_meta(meta) { + return meta.data_type !== "v2:object"; +} + +// ../../node_modules/zarrita/dist/src/codecs/sharding.js +var MAX_BIG_UINT = 18446744073709551615n; +function create_sharded_chunk_getter(location, shard_shape, encode_shard_key, sharding_config) { + assert(location.store.getRange, "Store does not support range requests"); + let get_range = location.store.getRange.bind(location.store); + let index_shape = shard_shape.map((d, i) => d / sharding_config.chunk_shape[i]); + let index_codec = create_codec_pipeline({ + data_type: "uint64", + shape: [...index_shape, 2], + codecs: sharding_config.index_codecs + }); + let cache = {}; + return async (chunk_coord) => { + let shard_coord = chunk_coord.map((d, i) => Math.floor(d / index_shape[i])); + let shard_path = location.resolve(encode_shard_key(shard_coord)).path; + let index; + if (shard_path in cache) { + index = cache[shard_path]; + } else { + let checksum_size = 4; + let index_size = 16 * index_shape.reduce((a, b) => a * b, 1); + let bytes = await get_range(shard_path, { + suffixLength: index_size + checksum_size + }); + index = cache[shard_path] = bytes ? await index_codec.decode(bytes) : null; + } + if (index === null) { + return void 0; + } + let { data, shape, stride } = index; + let linear_offset = chunk_coord.map((d, i) => d % shape[i]).reduce((acc, sel, idx) => acc + sel * stride[idx], 0); + let offset = data[linear_offset]; + let length4 = data[linear_offset + 1]; + if (offset === MAX_BIG_UINT && length4 === MAX_BIG_UINT) { + return void 0; + } + return get_range(shard_path, { + offset: Number(offset), + length: Number(length4) + }); + }; +} + +// ../../node_modules/zarrita/dist/src/hierarchy.js +var Location = class _Location { + constructor(store, path = "/") { + __publicField(this, "store"); + __publicField(this, "path"); + this.store = store; + this.path = path; + } + resolve(path) { + let root2 = new URL(`file://${this.path.endsWith("/") ? this.path : `${this.path}/`}`); + return new _Location(this.store, new URL(path, root2).pathname); + } +}; +function root(store) { + return new Location(store ?? /* @__PURE__ */ new Map()); +} +var _metadata; +var Group = class extends Location { + constructor(store, path, metadata) { + super(store, path); + __publicField(this, "kind", "group"); + __privateAdd(this, _metadata); + __privateSet(this, _metadata, metadata); + } + get attrs() { + return __privateGet(this, _metadata).attributes; + } +}; +_metadata = new WeakMap(); +function get_array_order(codecs) { + const maybe_transpose_codec = codecs.find((c) => c.name === "transpose"); + return maybe_transpose_codec?.configuration?.order ?? "C"; +} +var CONTEXT_MARKER = Symbol("zarrita.context"); +function get_context(obj) { + return obj[CONTEXT_MARKER]; +} +function create_context(location, metadata) { + let { configuration } = metadata.codecs.find(is_sharding_codec) ?? {}; + let shared_context = { + encode_chunk_key: create_chunk_key_encoder(metadata.chunk_key_encoding), + TypedArray: get_ctr(metadata.data_type), + fill_value: metadata.fill_value + }; + if (configuration) { + let native_order2 = get_array_order(configuration.codecs); + return { + ...shared_context, + kind: "sharded", + chunk_shape: configuration.chunk_shape, + codec: create_codec_pipeline({ + data_type: metadata.data_type, + shape: configuration.chunk_shape, + codecs: configuration.codecs + }), + get_strides(shape) { + return get_strides(shape, native_order2); + }, + get_chunk_bytes: create_sharded_chunk_getter(location, metadata.chunk_grid.configuration.chunk_shape, shared_context.encode_chunk_key, configuration) + }; + } + let native_order = get_array_order(metadata.codecs); + return { + ...shared_context, + kind: "regular", + chunk_shape: metadata.chunk_grid.configuration.chunk_shape, + codec: create_codec_pipeline({ + data_type: metadata.data_type, + shape: metadata.chunk_grid.configuration.chunk_shape, + codecs: metadata.codecs + }), + get_strides(shape) { + return get_strides(shape, native_order); + }, + async get_chunk_bytes(chunk_coords, options) { + let chunk_key = shared_context.encode_chunk_key(chunk_coords); + let chunk_path = location.resolve(chunk_key).path; + return location.store.get(chunk_path, options); + } + }; +} +var _a5, _b2, _metadata2; +var Array2 = class extends (_b2 = Location, _a5 = CONTEXT_MARKER, _b2) { + constructor(store, path, metadata) { + super(store, path); + __publicField(this, "kind", "array"); + __privateAdd(this, _metadata2); + __publicField(this, _a5); + __privateSet(this, _metadata2, { + ...metadata, + fill_value: ensure_correct_scalar(metadata) + }); + this[CONTEXT_MARKER] = create_context(this, metadata); + } + get attrs() { + return __privateGet(this, _metadata2).attributes; + } + get shape() { + return __privateGet(this, _metadata2).shape; + } + get chunks() { + return this[CONTEXT_MARKER].chunk_shape; + } + get dtype() { + return __privateGet(this, _metadata2).data_type; + } + async getChunk(chunk_coords, options) { + let context = this[CONTEXT_MARKER]; + let maybe_bytes = await context.get_chunk_bytes(chunk_coords, options); + if (!maybe_bytes) { + let size = context.chunk_shape.reduce((a, b) => a * b, 1); + let data = new context.TypedArray(size); + data.fill(context.fill_value); + return { + data, + shape: context.chunk_shape, + stride: context.get_strides(context.chunk_shape) + }; + } + return context.codec.decode(maybe_bytes); + } + /** + * A helper method to narrow `zarr.Array` Dtype. + * + * ```typescript + * let arr: zarr.Array = zarr.open(store, { kind: "array" }); + * + * // Option 1: narrow by scalar type (e.g. "bool", "raw", "bigint", "number") + * if (arr.is("bigint")) { + * // zarr.Array<"int64" | "uint64", FetchStore> + * } + * + * // Option 3: exact match + * if (arr.is("float32")) { + * // zarr.Array<"float32", FetchStore, "/"> + * } + * ``` + */ + is(query) { + return is_dtype(this.dtype, query); + } +}; +_metadata2 = new WeakMap(); + +// ../../node_modules/zarrita/dist/src/open.js +var VERSION_COUNTER = create_version_counter(); +function create_version_counter() { + let version_counts = /* @__PURE__ */ new WeakMap(); + function get_counts(store) { + let counts = version_counts.get(store) ?? { v2: 0, v3: 0 }; + version_counts.set(store, counts); + return counts; + } + return { + increment(store, version2) { + get_counts(store)[version2] += 1; + }, + version_max(store) { + let counts = get_counts(store); + return counts.v3 > counts.v2 ? "v3" : "v2"; + } + }; +} +async function load_attrs(location) { + let meta_bytes = await location.store.get(location.resolve(".zattrs").path); + if (!meta_bytes) + return {}; + return json_decode_object(meta_bytes); +} +async function open_v2(location, options = {}) { + let loc = "store" in location ? location : new Location(location); + let attrs = {}; + if (options.attrs ?? true) + attrs = await load_attrs(loc); + if (options.kind === "array") + return open_array_v2(loc, attrs); + if (options.kind === "group") + return open_group_v2(loc, attrs); + return open_array_v2(loc, attrs).catch((err2) => { + rethrow_unless(err2, NodeNotFoundError); + return open_group_v2(loc, attrs); + }); +} +async function open_array_v2(location, attrs) { + let { path } = location.resolve(".zarray"); + let meta = await location.store.get(path); + if (!meta) { + throw new NodeNotFoundError("v2 array", { + cause: new KeyError(path) + }); + } + VERSION_COUNTER.increment(location.store, "v2"); + return new Array2(location.store, location.path, v2_to_v3_array_metadata(json_decode_object(meta), attrs)); +} +async function open_group_v2(location, attrs) { + let { path } = location.resolve(".zgroup"); + let meta = await location.store.get(path); + if (!meta) { + throw new NodeNotFoundError("v2 group", { + cause: new KeyError(path) + }); + } + VERSION_COUNTER.increment(location.store, "v2"); + return new Group(location.store, location.path, v2_to_v3_group_metadata(json_decode_object(meta), attrs)); +} +async function _open_v3(location) { + let { store, path } = location.resolve("zarr.json"); + let meta = await location.store.get(path); + if (!meta) { + throw new NodeNotFoundError("v3 array or group", { + cause: new KeyError(path) + }); + } + let meta_doc = json_decode_object(meta); + if (meta_doc.node_type === "array") { + meta_doc.fill_value = ensure_correct_scalar(meta_doc); + } + return meta_doc.node_type === "array" ? new Array2(store, location.path, meta_doc) : new Group(store, location.path, meta_doc); +} +async function open_v3(location, options = {}) { + let loc = "store" in location ? location : new Location(location); + let node = await _open_v3(loc); + VERSION_COUNTER.increment(loc.store, "v3"); + if (options.kind === void 0) + return node; + if (options.kind === "array" && node instanceof Array2) + return node; + if (options.kind === "group" && node instanceof Group) + return node; + let kind = node instanceof Array2 ? "array" : "group"; + throw new Error(`Expected node of kind ${options.kind}, found ${kind}.`); +} +async function open(location, options = {}) { + let store = "store" in location ? location.store : location; + let version_max = VERSION_COUNTER.version_max(store); + let open_primary = version_max === "v2" ? open.v2 : open.v3; + let open_secondary = version_max === "v2" ? open.v3 : open.v2; + return open_primary(location, options).catch((err2) => { + rethrow_unless(err2, NodeNotFoundError); + return open_secondary(location, options); + }); +} +open.v2 = open_v2; +open.v3 = open_v3; + +// ../../node_modules/zarrita/dist/src/indexing/util.js +function* range(start, stop, step = 1) { + if (stop === void 0) { + stop = start; + start = 0; + } + for (let i = start; i < stop; i += step) { + yield i; + } +} +function* product(...iterables) { + if (iterables.length === 0) { + return; + } + const iterators = iterables.map((it) => it[Symbol.iterator]()); + const results = iterators.map((it) => it.next()); + if (results.some((r) => r.done)) { + throw new Error("Input contains an empty iterator."); + } + for (let i = 0; ; ) { + if (results[i].done) { + iterators[i] = iterables[i][Symbol.iterator](); + results[i] = iterators[i].next(); + if (++i >= iterators.length) { + return; + } + } else { + yield results.map(({ value }) => value); + i = 0; + } + results[i] = iterators[i].next(); + } +} +function slice_indices({ start, stop, step }, length4) { + if (step === 0) { + throw new Error("slice step cannot be zero"); + } + step = step ?? 1; + const step_is_negative = step < 0; + const [lower, upper] = step_is_negative ? [-1, length4 - 1] : [0, length4]; + if (start === null) { + start = step_is_negative ? upper : lower; + } else { + if (start < 0) { + start += length4; + if (start < lower) { + start = lower; + } + } else if (start > upper) { + start = upper; + } + } + if (stop === null) { + stop = step_is_negative ? lower : upper; + } else { + if (stop < 0) { + stop += length4; + if (stop < lower) { + stop = lower; + } + } else if (stop > upper) { + stop = upper; + } + } + return [start, stop, step]; +} +function slice(start, stop, step = null) { + if (stop === void 0) { + stop = start; + start = null; + } + return { + start, + stop, + step + }; +} +function create_queue() { + const promises = []; + return { + add: (fn) => promises.push(fn()), + onIdle: () => Promise.all(promises) + }; +} + +// ../../node_modules/zarrita/dist/src/indexing/indexer.js +var IndexError = class extends Error { + constructor(msg) { + super(msg); + this.name = "IndexError"; + } +}; +function err_too_many_indices(selection, shape) { + throw new IndexError(`too many indicies for array; expected ${shape.length}, got ${selection.length}`); +} +function err_boundscheck(dim_len) { + throw new IndexError(`index out of bounds for dimension with length ${dim_len}`); +} +function err_negative_step() { + throw new IndexError("only slices with step >= 1 are supported"); +} +function check_selection_length(selection, shape) { + if (selection.length > shape.length) { + err_too_many_indices(selection, shape); + } +} +function normalize_integer_selection(dim_sel, dim_len) { + dim_sel = Math.trunc(dim_sel); + if (dim_sel < 0) { + dim_sel = dim_len + dim_sel; + } + if (dim_sel >= dim_len || dim_sel < 0) { + err_boundscheck(dim_len); + } + return dim_sel; +} +var IntDimIndexer = class { + constructor({ dim_sel, dim_len, dim_chunk_len }) { + __publicField(this, "dim_sel"); + __publicField(this, "dim_len"); + __publicField(this, "dim_chunk_len"); + __publicField(this, "nitems"); + dim_sel = normalize_integer_selection(dim_sel, dim_len); + this.dim_sel = dim_sel; + this.dim_len = dim_len; + this.dim_chunk_len = dim_chunk_len; + this.nitems = 1; + } + *[Symbol.iterator]() { + const dim_chunk_ix = Math.floor(this.dim_sel / this.dim_chunk_len); + const dim_offset = dim_chunk_ix * this.dim_chunk_len; + const dim_chunk_sel = this.dim_sel - dim_offset; + yield { dim_chunk_ix, dim_chunk_sel }; + } +}; +var SliceDimIndexer = class { + constructor({ dim_sel, dim_len, dim_chunk_len }) { + __publicField(this, "start"); + __publicField(this, "stop"); + __publicField(this, "step"); + __publicField(this, "dim_len"); + __publicField(this, "dim_chunk_len"); + __publicField(this, "nitems"); + __publicField(this, "nchunks"); + const [start, stop, step] = slice_indices(dim_sel, dim_len); + this.start = start; + this.stop = stop; + this.step = step; + if (this.step < 1) + err_negative_step(); + this.dim_len = dim_len; + this.dim_chunk_len = dim_chunk_len; + this.nitems = Math.max(0, Math.ceil((this.stop - this.start) / this.step)); + this.nchunks = Math.ceil(this.dim_len / this.dim_chunk_len); + } + *[Symbol.iterator]() { + const dim_chunk_ix_from = Math.floor(this.start / this.dim_chunk_len); + const dim_chunk_ix_to = Math.ceil(this.stop / this.dim_chunk_len); + for (const dim_chunk_ix of range(dim_chunk_ix_from, dim_chunk_ix_to)) { + const dim_offset = dim_chunk_ix * this.dim_chunk_len; + const dim_limit = Math.min(this.dim_len, (dim_chunk_ix + 1) * this.dim_chunk_len); + const dim_chunk_len = dim_limit - dim_offset; + let dim_out_offset = 0; + let dim_chunk_sel_start = 0; + if (this.start < dim_offset) { + const remainder = (dim_offset - this.start) % this.step; + if (remainder) + dim_chunk_sel_start += this.step - remainder; + dim_out_offset = Math.ceil((dim_offset - this.start) / this.step); + } else { + dim_chunk_sel_start = this.start - dim_offset; + } + const dim_chunk_sel_stop = this.stop > dim_limit ? dim_chunk_len : this.stop - dim_offset; + const dim_chunk_sel = [ + dim_chunk_sel_start, + dim_chunk_sel_stop, + this.step + ]; + const dim_chunk_nitems = Math.ceil((dim_chunk_sel_stop - dim_chunk_sel_start) / this.step); + const dim_out_sel = [ + dim_out_offset, + dim_out_offset + dim_chunk_nitems, + 1 + ]; + yield { dim_chunk_ix, dim_chunk_sel, dim_out_sel }; + } + } +}; +function normalize_selection(selection, shape) { + let normalized = []; + if (selection === null) { + normalized = shape.map((_) => slice(null)); + } else if (Array.isArray(selection)) { + normalized = selection.map((s) => s ?? slice(null)); + } + check_selection_length(normalized, shape); + return normalized; +} +var BasicIndexer = class { + constructor({ selection, shape, chunk_shape }) { + __publicField(this, "dim_indexers"); + __publicField(this, "shape"); + this.dim_indexers = normalize_selection(selection, shape).map((dim_sel, i) => { + return new (typeof dim_sel === "number" ? IntDimIndexer : SliceDimIndexer)({ + // @ts-expect-error ts inference not strong enough to know correct chunk + dim_sel, + dim_len: shape[i], + dim_chunk_len: chunk_shape[i] + }); + }); + this.shape = this.dim_indexers.filter((ixr) => ixr instanceof SliceDimIndexer).map((sixr) => sixr.nitems); + } + *[Symbol.iterator]() { + for (const dim_projections of product(...this.dim_indexers)) { + const chunk_coords = dim_projections.map((p) => p.dim_chunk_ix); + const mapping = dim_projections.map((p) => { + if ("dim_out_sel" in p) { + return { from: p.dim_chunk_sel, to: p.dim_out_sel }; + } + return { from: p.dim_chunk_sel, to: null }; + }); + yield { chunk_coords, mapping }; + } + } +}; + +// ../../node_modules/zarrita/dist/src/indexing/get.js +function unwrap(arr, idx) { + return "get" in arr ? arr.get(idx) : arr[idx]; +} +async function get(arr, selection, opts, setter2) { + let context = get_context(arr); + let indexer = new BasicIndexer({ + selection, + shape: arr.shape, + chunk_shape: arr.chunks + }); + let out = setter2.prepare(new context.TypedArray(indexer.shape.reduce((a, b) => a * b, 1)), indexer.shape, context.get_strides(indexer.shape)); + let queue = opts.create_queue?.() ?? create_queue(); + for (const { chunk_coords, mapping } of indexer) { + queue.add(async () => { + let { data, shape, stride } = await arr.getChunk(chunk_coords, opts.opts); + let chunk = setter2.prepare(data, shape, stride); + setter2.set_from_chunk(out, chunk, mapping); + }); + } + await queue.onIdle(); + return indexer.shape.length === 0 ? unwrap(out.data, 0) : out; +} + +// ../../node_modules/zarrita/dist/src/indexing/ops.js +function object_array_view(arr, offset = 0, size) { + let length4 = size ?? arr.length - offset; + return { + length: length4, + subarray(from, to = length4) { + return object_array_view(arr, offset + from, to - from); + }, + set(data, start = 0) { + for (let i = 0; i < data.length; i++) { + arr[offset + start + i] = data.get(i); + } + }, + get(index) { + return arr[offset + index]; + } + }; +} +function compat_chunk(arr) { + if (globalThis.Array.isArray(arr.data)) { + return { + // @ts-expect-error + data: object_array_view(arr.data), + stride: arr.stride, + bytes_per_element: 1 + }; + } + return { + data: new Uint8Array(arr.data.buffer, arr.data.byteOffset, arr.data.byteLength), + stride: arr.stride, + bytes_per_element: arr.data.BYTES_PER_ELEMENT + }; +} +function get_typed_array_constructor(arr) { + if ("chars" in arr) { + return arr.constructor.bind(null, arr.chars); + } + return arr.constructor; +} +function compat_scalar(arr, value) { + if (globalThis.Array.isArray(arr.data)) { + return object_array_view([value]); + } + let TypedArray = get_typed_array_constructor(arr.data); + let data = new TypedArray([value]); + return new Uint8Array(data.buffer, data.byteOffset, data.byteLength); +} +var setter = { + prepare(data, shape, stride) { + return { data, shape, stride }; + }, + set_scalar(dest, sel, value) { + let view = compat_chunk(dest); + set_scalar_binary(view, sel, compat_scalar(dest, value), view.bytes_per_element); + }, + set_from_chunk(dest, src, projections) { + let view = compat_chunk(dest); + set_from_chunk_binary(view, compat_chunk(src), view.bytes_per_element, projections); + } +}; +async function get2(arr, selection = null, opts = {}) { + return get(arr, selection, opts, setter); +} +function indices_len(start, stop, step) { + if (step < 0 && stop < start) { + return Math.floor((start - stop - 1) / -step) + 1; + } + if (start < stop) + return Math.floor((stop - start - 1) / step) + 1; + return 0; +} +function set_scalar_binary(out, out_selection, value, bytes_per_element2) { + if (out_selection.length === 0) { + out.data.set(value, 0); + return; + } + const [slice2, ...slices] = out_selection; + const [curr_stride, ...stride] = out.stride; + if (typeof slice2 === "number") { + const data = out.data.subarray(curr_stride * slice2 * bytes_per_element2); + set_scalar_binary({ data, stride }, slices, value, bytes_per_element2); + return; + } + const [from, to, step] = slice2; + const len4 = indices_len(from, to, step); + if (slices.length === 0) { + for (let i = 0; i < len4; i++) { + out.data.set(value, curr_stride * (from + step * i) * bytes_per_element2); + } + return; + } + for (let i = 0; i < len4; i++) { + const data = out.data.subarray(curr_stride * (from + step * i) * bytes_per_element2); + set_scalar_binary({ data, stride }, slices, value, bytes_per_element2); + } +} +function set_from_chunk_binary(dest, src, bytes_per_element2, projections) { + const [proj, ...projs] = projections; + const [dstride, ...dstrides] = dest.stride; + const [sstride, ...sstrides] = src.stride; + if (proj.from === null) { + if (projs.length === 0) { + dest.data.set(src.data.subarray(0, bytes_per_element2), proj.to * bytes_per_element2); + return; + } + set_from_chunk_binary({ + data: dest.data.subarray(dstride * proj.to * bytes_per_element2), + stride: dstrides + }, src, bytes_per_element2, projs); + return; + } + if (proj.to === null) { + if (projs.length === 0) { + let offset = proj.from * bytes_per_element2; + dest.data.set(src.data.subarray(offset, offset + bytes_per_element2), 0); + return; + } + set_from_chunk_binary(dest, { + data: src.data.subarray(sstride * proj.from * bytes_per_element2), + stride: sstrides + }, bytes_per_element2, projs); + return; + } + const [from, to, step] = proj.to; + const [sfrom, _, sstep] = proj.from; + const len4 = indices_len(from, to, step); + if (projs.length === 0) { + if (step === 1 && sstep === 1 && dstride === 1 && sstride === 1) { + let offset = sfrom * bytes_per_element2; + let size = len4 * bytes_per_element2; + dest.data.set(src.data.subarray(offset, offset + size), from * bytes_per_element2); + return; + } + for (let i = 0; i < len4; i++) { + let offset = sstride * (sfrom + sstep * i) * bytes_per_element2; + dest.data.set(src.data.subarray(offset, offset + bytes_per_element2), dstride * (from + step * i) * bytes_per_element2); + } + return; + } + for (let i = 0; i < len4; i++) { + set_from_chunk_binary({ + data: dest.data.subarray(dstride * (from + i * step) * bytes_per_element2), + stride: dstrides + }, { + data: src.data.subarray(sstride * (sfrom + i * sstep) * bytes_per_element2), + stride: sstrides + }, bytes_per_element2, projs); + } +} + +// ../../node_modules/@zarrita/storage/dist/src/util.js +function fetch_range(url, offset, length4, opts = {}) { + if (offset !== void 0 && length4 !== void 0) { + opts = { + ...opts, + headers: { + ...opts.headers, + Range: `bytes=${offset}-${offset + length4 - 1}` + } + }; + } + return fetch(url, opts); +} +function merge_init(storeOverrides, requestOverrides) { + return { + ...storeOverrides, + ...requestOverrides, + headers: { + ...storeOverrides.headers, + ...requestOverrides.headers + } + }; +} + +// ../../node_modules/@zarrita/storage/dist/src/fetch.js +function resolve(root2, path) { + const base = typeof root2 === "string" ? new URL(root2) : root2; + if (!base.pathname.endsWith("/")) { + base.pathname += "/"; + } + const resolved = new URL(path.slice(1), base); + resolved.search = base.search; + return resolved; +} +async function handle_response(response) { + if (response.status === 404) { + return void 0; + } + if (response.status === 200 || response.status === 206) { + return new Uint8Array(await response.arrayBuffer()); + } + throw new Error(`Unexpected response status ${response.status} ${response.statusText}`); +} +async function fetch_suffix(url, suffix_length, init4, use_suffix_request) { + if (use_suffix_request) { + return fetch(url, { + ...init4, + headers: { ...init4.headers, Range: `bytes=-${suffix_length}` } + }); + } + let response = await fetch(url, { ...init4, method: "HEAD" }); + if (!response.ok) { + return response; + } + let content_length = response.headers.get("Content-Length"); + let length4 = Number(content_length); + return fetch_range(url, length4 - suffix_length, length4, init4); +} +var _overrides, _use_suffix_request, _FetchStore_instances, merge_init_fn; +var FetchStore = class { + constructor(url, options = {}) { + __privateAdd(this, _FetchStore_instances); + __publicField(this, "url"); + __privateAdd(this, _overrides); + __privateAdd(this, _use_suffix_request); + this.url = url; + __privateSet(this, _overrides, options.overrides ?? {}); + __privateSet(this, _use_suffix_request, options.useSuffixRequest ?? false); + } + async get(key, options = {}) { + let href = resolve(this.url, key).href; + let response = await fetch(href, __privateMethod(this, _FetchStore_instances, merge_init_fn).call(this, options)); + return handle_response(response); + } + async getRange(key, range2, options = {}) { + let url = resolve(this.url, key); + let init4 = __privateMethod(this, _FetchStore_instances, merge_init_fn).call(this, options); + let response; + if ("suffixLength" in range2) { + response = await fetch_suffix(url, range2.suffixLength, init4, __privateGet(this, _use_suffix_request)); + } else { + response = await fetch_range(url, range2.offset, range2.length, init4); + } + return handle_response(response); + } +}; +_overrides = new WeakMap(); +_use_suffix_request = new WeakMap(); +_FetchStore_instances = new WeakSet(); +merge_init_fn = function(overrides) { + return merge_init(__privateGet(this, _overrides), overrides); +}; +var fetch_default = FetchStore; + +// src/nvimage/utils.ts +var isPlatformLittleEndian = () => { + const buffer = new ArrayBuffer(2); + new DataView(buffer).setInt16(0, 256, true); + return new Int16Array(buffer)[0] === 256; +}; +var ImageType = /* @__PURE__ */ ((ImageType3) => { + ImageType3[ImageType3["UNKNOWN"] = 0] = "UNKNOWN"; + ImageType3[ImageType3["NII"] = 1] = "NII"; + ImageType3[ImageType3["DCM"] = 2] = "DCM"; + ImageType3[ImageType3["DCM_MANIFEST"] = 3] = "DCM_MANIFEST"; + ImageType3[ImageType3["MIH"] = 4] = "MIH"; + ImageType3[ImageType3["MIF"] = 5] = "MIF"; + ImageType3[ImageType3["NHDR"] = 6] = "NHDR"; + ImageType3[ImageType3["NRRD"] = 7] = "NRRD"; + ImageType3[ImageType3["MHD"] = 8] = "MHD"; + ImageType3[ImageType3["MHA"] = 9] = "MHA"; + ImageType3[ImageType3["MGH"] = 10] = "MGH"; + ImageType3[ImageType3["MGZ"] = 11] = "MGZ"; + ImageType3[ImageType3["V"] = 12] = "V"; + ImageType3[ImageType3["V16"] = 13] = "V16"; + ImageType3[ImageType3["VMR"] = 14] = "VMR"; + ImageType3[ImageType3["HEAD"] = 15] = "HEAD"; + ImageType3[ImageType3["DCM_FOLDER"] = 16] = "DCM_FOLDER"; + ImageType3[ImageType3["SRC"] = 17] = "SRC"; + ImageType3[ImageType3["FIB"] = 18] = "FIB"; + ImageType3[ImageType3["BMP"] = 19] = "BMP"; + ImageType3[ImageType3["ZARR"] = 20] = "ZARR"; + ImageType3[ImageType3["NPY"] = 21] = "NPY"; + ImageType3[ImageType3["NPZ"] = 22] = "NPZ"; + ImageType3[ImageType3["HDR"] = 23] = "HDR"; + return ImageType3; +})(ImageType || {}); +var NVIMAGE_TYPE = Object.freeze({ + ...ImageType, + parse: (ext) => { + let imageType = 0 /* UNKNOWN */; + switch (ext.toUpperCase()) { + case "": + case "DCM": + imageType = 2 /* DCM */; + break; + case "TXT": + imageType = 3 /* DCM_MANIFEST */; + break; + case "FZ": + case "GQI": + case "QSDR": + case "FIB": + imageType = 18 /* FIB */; + break; + case "HDR": + case "NII": + imageType = 1 /* NII */; + break; + case "MIH": + imageType = 4 /* MIH */; + break; + case "MIF": + imageType = 5 /* MIF */; + break; + case "NHDR": + imageType = 6 /* NHDR */; + break; + case "NRRD": + imageType = 7 /* NRRD */; + break; + case "MHD": + imageType = 8 /* MHD */; + break; + case "MHA": + imageType = 9 /* MHA */; + break; + case "MGH": + imageType = 10 /* MGH */; + break; + case "MGZ": + imageType = 11 /* MGZ */; + break; + case "NPY": + imageType = 21 /* NPY */; + break; + case "NPZ": + imageType = 22 /* NPZ */; + break; + case "SRC": + imageType = 17 /* SRC */; + break; + case "V": + imageType = 12 /* V */; + break; + case "V16": + imageType = 13 /* V16 */; + break; + case "VMR": + imageType = 14 /* VMR */; + break; + case "HEAD": + imageType = 15 /* HEAD */; + break; + case "PNG": + case "BMP": + case "GIF": + case "JPG": + case "JPEG": + imageType = 19 /* BMP */; + break; + case "ZARR": + imageType = 20 /* ZARR */; + break; + } + return imageType; + } +}); +var NVImageFromUrlOptions = (url, urlImageData = "", name = "", colormap = "gray", opacity = 1, cal_min = NaN, cal_max = NaN, trustCalMinMax = true, percentileFrac = 0.02, ignoreZeroVoxels = false, useQFormNotSForm = false, colormapNegative = "", frame4D = 0, imageType = NVIMAGE_TYPE.UNKNOWN, cal_minNeg = NaN, cal_maxNeg = NaN, colorbarVisible = true, alphaThreshold = false, colormapLabel = null) => { + return { + url, + urlImageData, + name, + colormap, + colorMap: colormap, + opacity, + cal_min, + cal_max, + trustCalMinMax, + percentileFrac, + ignoreZeroVoxels, + useQFormNotSForm, + colormapNegative, + imageType, + cal_minNeg, + cal_maxNeg, + colorbarVisible, + frame4D, + alphaThreshold, + colormapLabel + }; +}; +function str2Buffer(str6, maxLen = 80) { + str6 = str6.replace(/[`$]/g, ""); + const bytes = []; + const len4 = Math.min(maxLen, str6.length); + for (let i = 0; i < len4; i++) { + const char = str6.charCodeAt(i); + bytes.push(char & 255); + } + return bytes; +} +function hdrToArrayBuffer(hdr, isDrawing8 = false, isInputEndian = false) { + const SHORT_SIZE = 2; + const FLOAT32_SIZE = 4; + let isLittleEndian = true; + if (isInputEndian) { + isLittleEndian = hdr.littleEndian; + } + const byteArray = new Uint8Array(348); + const view = new DataView(byteArray.buffer); + view.setInt32(0, 348, isLittleEndian); + view.setUint8(38, 114); + view.setUint8(39, hdr.dim_info); + for (let i = 0; i < 8; i++) { + view.setUint16(40 + SHORT_SIZE * i, hdr.dims[i], isLittleEndian); + } + view.setFloat32(56, hdr.intent_p1, isLittleEndian); + view.setFloat32(60, hdr.intent_p2, isLittleEndian); + view.setFloat32(64, hdr.intent_p3, isLittleEndian); + view.setInt16(68, hdr.intent_code, isLittleEndian); + if (isDrawing8) { + view.setInt16(70, 2, isLittleEndian); + view.setInt16(72, 8, isLittleEndian); + } else { + view.setInt16(70, hdr.datatypeCode, isLittleEndian); + view.setInt16(72, hdr.numBitsPerVoxel, isLittleEndian); + } + view.setInt16(74, hdr.slice_start, isLittleEndian); + for (let i = 0; i < 8; i++) { + view.setFloat32(76 + FLOAT32_SIZE * i, hdr.pixDims[i], isLittleEndian); + } + if (isDrawing8) { + view.setFloat32(108, 352, isLittleEndian); + view.setFloat32(112, 1, isLittleEndian); + view.setFloat32(116, 0, isLittleEndian); + } else { + view.setFloat32(108, hdr.vox_offset, isLittleEndian); + view.setFloat32(112, hdr.scl_slope, isLittleEndian); + view.setFloat32(116, hdr.scl_inter, isLittleEndian); + } + view.setInt16(120, hdr.slice_end, isLittleEndian); + view.setUint8(122, hdr.slice_code); + if (hdr.xyzt_units === 0) { + view.setUint8(123, 10); + } else { + view.setUint8(123, hdr.xyzt_units); + } + if (isDrawing8) { + view.setFloat32(124, 0, isLittleEndian); + view.setFloat32(128, 0, isLittleEndian); + } else { + view.setFloat32(124, hdr.cal_max, isLittleEndian); + view.setFloat32(128, hdr.cal_min, isLittleEndian); + } + view.setFloat32(132, hdr.slice_duration, isLittleEndian); + view.setFloat32(136, hdr.toffset, isLittleEndian); + byteArray.set(str2Buffer(hdr.description), 148); + byteArray.set(str2Buffer(hdr.aux_file), 228); + view.setInt16(252, hdr.qform_code, isLittleEndian); + if (hdr.sform_code < 1 || hdr.sform_code < 1) { + view.setInt16(254, 1, isLittleEndian); + } else { + view.setInt16(254, hdr.sform_code, isLittleEndian); + } + view.setFloat32(256, hdr.quatern_b, isLittleEndian); + view.setFloat32(260, hdr.quatern_c, isLittleEndian); + view.setFloat32(264, hdr.quatern_d, isLittleEndian); + view.setFloat32(268, hdr.qoffset_x, isLittleEndian); + view.setFloat32(272, hdr.qoffset_y, isLittleEndian); + view.setFloat32(276, hdr.qoffset_z, isLittleEndian); + const flattened = hdr.affine.flat(); + for (let i = 0; i < 12; i++) { + view.setFloat32(280 + FLOAT32_SIZE * i, flattened[i], isLittleEndian); + } + view.setInt32(344, 3222382, true); + return byteArray; +} +function getExtents(positions, forceOriginInVolume = true) { + const nV = Math.round(positions.length / 3); + const origin = vec3_exports.fromValues(0, 0, 0); + const mn = vec3_exports.create(); + const mx = vec3_exports.create(); + let mxDx = 0; + let nLoops = 1; + if (forceOriginInVolume) { + nLoops = 2; + } + for (let loop = 0; loop < nLoops; loop++) { + mxDx = 0; + for (let i = 0; i < nV; i++) { + const v = vec3_exports.fromValues(positions[i * 3], positions[i * 3 + 1], positions[i * 3 + 2]); + if (i === 0) { + vec3_exports.copy(mn, v); + vec3_exports.copy(mx, v); + } + vec3_exports.min(mn, mn, v); + vec3_exports.max(mx, mx, v); + vec3_exports.subtract(v, v, origin); + const dx = vec3_exports.len(v); + mxDx = Math.max(mxDx, dx); + } + if (loop + 1 >= nLoops) { + break; + } + let ok = true; + for (let j = 0; j < 3; ++j) { + if (mn[j] > origin[j]) { + ok = false; + } + if (mx[j] < origin[j]) { + ok = false; + } + } + if (ok) { + break; + } + vec3_exports.lerp(origin, mn, mx, 0.5); + log.debug("origin moved inside volume: ", origin); + } + const min4 = [mn[0], mn[1], mn[2]]; + const max5 = [mx[0], mx[1], mx[2]]; + const furthestVertexFromOrigin = mxDx; + return { min: min4, max: max5, furthestVertexFromOrigin, origin }; +} +function isAffineOK(mtx) { + const iOK = [false, false, false, false]; + const jOK = [false, false, false, false]; + for (let i = 0; i < 4; i++) { + for (let j = 0; j < 4; j++) { + if (isNaN(mtx[i][j])) { + return false; + } + } + } + for (let i = 0; i < 3; i++) { + for (let j = 0; j < 3; j++) { + if (mtx[i][j] === 0) { + continue; + } + iOK[i] = true; + jOK[j] = true; + } + } + for (let i = 0; i < 3; i++) { + if (!iOK[i]) { + return false; + } + if (!jOK[i]) { + return false; + } + } + return true; +} +async function uncompressStream(stream) { + const reader = stream.getReader(); + const { done, value } = await reader.read(); + if (done) { + reader.releaseLock(); + return new ReadableStream({ + start(controller) { + controller.close(); + } + }); + } + if (!value || value.length < 2) { + reader.releaseLock(); + return new ReadableStream({ + start(controller) { + if (value) { + controller.enqueue(value); + } + controller.close(); + } + }); + } + const isGzip = value[0] === 31 && value[1] === 139; + const uncompressedStream = new ReadableStream({ + async start(controller) { + try { + controller.enqueue(value); + while (true) { + const { done: done2, value: value2 } = await reader.read(); + if (done2) { + controller.close(); + reader.releaseLock(); + break; + } + controller.enqueue(value2); + } + } catch (error) { + controller.error(error); + reader.releaseLock(); + } + } + }); + if (isGzip) { + return uncompressedStream.pipeThrough(new DecompressionStream("gzip")); + } + return uncompressedStream; +} + +// src/nvimage/ImageWriter.ts +function createNiftiHeader(dims = [256, 256, 256], pixDims = [1, 1, 1], affine = [1, 0, 0, -128, 0, 1, 0, -128, 0, 0, 1, -128, 0, 0, 0, 1], datatypeCode = 2 /* DT_UINT8 */) { + const hdr = new NIFTI1(); + hdr.littleEndian = true; + hdr.dims = [3, 1, 1, 1, 0, 0, 0, 0]; + hdr.dims[0] = Math.max(3, dims.length); + for (let i = 0; i < dims.length; i++) { + hdr.dims[i + 1] = dims[i]; + } + hdr.pixDims = [1, 1, 1, 1, 1, 0, 0, 0]; + for (let i = 0; i < dims.length; i++) { + hdr.pixDims[i + 1] = pixDims[i]; + } + if (affine.length === 16) { + let k = 0; + for (let i = 0; i < 4; i++) { + for (let j = 0; j < 4; j++) { + hdr.affine[i][j] = affine[k]; + k++; + } + } + } + let bpv = 8; + if (datatypeCode === 256 /* DT_INT8 */ || datatypeCode === 2 /* DT_UINT8 */) { + bpv = 8; + } else if (datatypeCode === 512 /* DT_UINT16 */ || datatypeCode === 4 /* DT_INT16 */) { + bpv = 16; + } else if (datatypeCode === 16 /* DT_FLOAT32 */ || datatypeCode === 768 /* DT_UINT32 */ || datatypeCode === 8 /* DT_INT32 */ || datatypeCode === 2304 /* DT_RGBA32 */) { + bpv = 32; + } else if (datatypeCode === 64 /* DT_FLOAT64 */) { + bpv = 64; + } else { + log.warn("Unsupported NIfTI datatypeCode for header creation: " + datatypeCode); + } + hdr.datatypeCode = datatypeCode; + hdr.numBitsPerVoxel = bpv; + hdr.scl_inter = 0; + hdr.scl_slope = 1; + hdr.sform_code = 2; + hdr.magic = "n+1"; + hdr.vox_offset = 352; + return hdr; +} +function createNiftiArray(dims = [256, 256, 256], pixDims = [1, 1, 1], affine = [1, 0, 0, -128, 0, 1, 0, -128, 0, 0, 1, -128, 0, 0, 0, 1], datatypeCode = 2 /* DT_UINT8 */, img = new Uint8Array()) { + const hdr = createNiftiHeader(dims, pixDims, affine, datatypeCode); + const hdrBytes = hdrToArrayBuffer(hdr, false); + hdr.vox_offset = Math.max(352, hdrBytes.length); + const finalHdrBytes = hdrToArrayBuffer(hdr, false); + if (img.length < 1) { + return finalHdrBytes; + } + const paddingSize = Math.max(0, hdr.vox_offset - finalHdrBytes.length); + const padding = new Uint8Array(paddingSize); + const imgBytes = new Uint8Array(img.buffer, img.byteOffset, img.byteLength); + const totalLength = hdr.vox_offset + imgBytes.length; + const outputData = new Uint8Array(totalLength); + outputData.set(finalHdrBytes, 0); + outputData.set(padding, finalHdrBytes.length); + outputData.set(imgBytes, hdr.vox_offset); + return outputData; +} +function toUint8Array(nvImage, drawingBytes = null) { + if (!nvImage.hdr) { + throw new Error("NVImage header is not defined for toUint8Array"); + } + if (!nvImage.img && drawingBytes === null) { + throw new Error("NVImage image data is not defined for toUint8Array"); + } + const isDrawing = drawingBytes !== null; + const hdrCopy = JSON.parse(JSON.stringify(nvImage.hdr)); + const hasExtensions = nvImage.extensions && nvImage.extensions.length > 0; + const extFlag = new Uint8Array(4); + extFlag[0] = hasExtensions ? 1 : 0; + let extensionsData = new Uint8Array(0); + if (hasExtensions) { + const blocks = []; + let totalSize = 0; + for (const ext of nvImage.extensions) { + const edataBytes = new Uint8Array(ext.edata); + const block = new Uint8Array(8 + edataBytes.length); + const dv = new DataView(block.buffer); + dv.setInt32(0, ext.esize, true); + dv.setInt32(4, ext.ecode, true); + block.set(edataBytes, 8); + blocks.push(block); + totalSize += block.length; + } + extensionsData = new Uint8Array(totalSize); + let offset2 = 0; + for (const block of blocks) { + extensionsData.set(block, offset2); + offset2 += block.length; + } + } + const headerSize = 348; + hdrCopy.vox_offset = Math.max(352, headerSize + extFlag.length + extensionsData.length); + if (isDrawing) { + hdrCopy.datatypeCode = 2 /* DT_UINT8 */; + hdrCopy.numBitsPerVoxel = 8; + hdrCopy.scl_slope = 1; + hdrCopy.scl_inter = 0; + } + const hdrBytes = hdrToArrayBuffer(hdrCopy, isDrawing); + let imageBytesToSave; + if (isDrawing) { + const drawingBytesCurrent = drawingBytes; + const perm = nvImage.permRAS; + if (perm && (perm[0] !== 1 || perm[1] !== 2 || perm[2] !== 3)) { + log.debug("Reorienting drawing bytes back to native space for saving..."); + const dims = nvImage.hdr.dims; + const nVox = dims[1] * dims[2] * dims[3]; + const nVoxRAS = nvImage.dimsRAS ? nvImage.dimsRAS[1] * nvImage.dimsRAS[2] * nvImage.dimsRAS[3] : nVox; + if (drawingBytesCurrent.length !== nVoxRAS) { + console.warn( + `Drawing length (${drawingBytesCurrent.length}) does not match expected RAS voxel count (${nVoxRAS}). Cannot reorient drawing reliably.` + ); + imageBytesToSave = drawingBytesCurrent; + } else if (!nvImage.img2RASstep || !nvImage.img2RASstart || !nvImage.dimsRAS) { + console.warn( + `Missing RAS transformation info (img2RASstep, img2RASstart, dimsRAS). Cannot reorient drawing reliably.` + ); + imageBytesToSave = drawingBytesCurrent; + } else { + const step = nvImage.img2RASstep; + const start = nvImage.img2RASstart; + const dimsRAS = nvImage.dimsRAS; + const nativeData = new Uint8Array(nVox); + nativeData.fill(0); + const inputDrawingRAS = drawingBytesCurrent; + let rasIndex = 0; + for (let rz = 0; rz < dimsRAS[3]; rz++) { + const zi = start[2] + rz * step[2]; + for (let ry = 0; ry < dimsRAS[2]; ry++) { + const yi = start[1] + ry * step[1]; + for (let rx = 0; rx < dimsRAS[1]; rx++) { + const xi = start[0] + rx * step[0]; + const nativeIndex = xi + yi + zi; + if (nativeIndex >= 0 && nativeIndex < nVox) { + nativeData[nativeIndex] = inputDrawingRAS[rasIndex]; + } else if (rasIndex < inputDrawingRAS.length) { + console.warn( + `Calculated native index ${nativeIndex} is out of bounds [0..${nVox - 1}] during drawing reorientation.` + ); + } + rasIndex++; + } + } + } + imageBytesToSave = nativeData; + } + } else { + imageBytesToSave = drawingBytesCurrent; + } + } else { + if (!nvImage.img) { + throw new Error("NVImage image data is null when trying to save non-drawing."); + } + imageBytesToSave = new Uint8Array(nvImage.img.buffer, nvImage.img.byteOffset, nvImage.img.byteLength); + } + const preImageBytesSize = hdrBytes.length + extFlag.length + extensionsData.length; + const paddingSize = Math.max(0, hdrCopy.vox_offset - preImageBytesSize); + const padding = new Uint8Array(paddingSize); + const totalLength = hdrCopy.vox_offset + imageBytesToSave.length; + const outputData = new Uint8Array(totalLength); + let offset = 0; + outputData.set(hdrBytes, offset); + offset += hdrBytes.length; + outputData.set(extFlag, offset); + offset += extFlag.length; + outputData.set(extensionsData, offset); + offset += extensionsData.length; + outputData.set(padding, offset); + offset += padding.length; + outputData.set(imageBytesToSave, hdrCopy.vox_offset); + return outputData; +} +async function saveToUint8Array(nvImage, fnm, drawing8 = null) { + const odata = toUint8Array(nvImage, drawing8); + const compress = fnm.toLowerCase().endsWith(".gz"); + if (compress) { + try { + const compressedData = await NVUtilities.compress(odata, "gzip"); + return new Uint8Array(compressedData); + } catch (error) { + log.error("Compression failed:", error); + log.warn("Returning uncompressed data due to compression error."); + return odata; + } + } else { + return odata; + } +} +async function saveToDisk(nvImage, fnm = "", drawing8 = null) { + const saveData = await saveToUint8Array(nvImage, fnm, drawing8); + if (!fnm) { + log.debug("saveToDisk: empty file name, returning data as Uint8Array rather than triggering download"); + return saveData; + } + try { + const blob = new Blob([saveData.buffer], { + type: "application/octet-stream" + // Standard type for binary download + }); + const blobUrl = URL.createObjectURL(blob); + const link = document.createElement("a"); + link.setAttribute("href", blobUrl); + link.setAttribute("download", fnm); + link.style.visibility = "hidden"; + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); + setTimeout(() => URL.revokeObjectURL(blobUrl), 100); + } catch (e) { + log.error("Failed to trigger download:", e); + } + return saveData; +} + +// src/nvimage/VolumeUtils.ts +function getValues(nvImage, x, y, z, frame4D = 0, isReadImaginary = false) { + if (!nvImage.hdr) { + throw new Error("getValue: NVImage header is not defined."); + } + if (!isReadImaginary && !nvImage.img) { + throw new Error("getValue: NVImage image data is not defined."); + } + if (isReadImaginary && !nvImage.imaginary) { + log.warn("getValue: Attempted to read imaginary data, but none exists."); + return [0]; + } + const nx = nvImage.hdr.dims[1]; + const ny = nvImage.hdr.dims[2]; + const nz = nvImage.hdr.dims[3]; + const perm = nvImage.permRAS.slice(); + if (perm[0] !== 1 || perm[1] !== 2 || perm[2] !== 3) { + const pos = vec4_exports.fromValues(x, y, z, 1); + vec4_exports.transformMat4(pos, pos, nvImage.toRASvox); + x = pos[0]; + y = pos[1]; + z = pos[2]; + } + x = Math.max(0, Math.min(Math.round(x), nx - 1)); + y = Math.max(0, Math.min(Math.round(y), ny - 1)); + z = Math.max(0, Math.min(Math.round(z), nz - 1)); + frame4D = Math.max(0, frame4D); + let vx = x + y * nx + z * nx * ny; + if (nvImage.hdr.datatypeCode === 2304 /* DT_RGBA32 */) { + if (!nvImage.img) { + return [0]; + } + vx *= 4; + if (vx + 3 >= nvImage.img.length) { + log.warn(`getValue: Calculated index ${vx} out of bounds for RGBA data.`); + return [0]; + } + return [nvImage.img[vx], nvImage.img[vx + 1], nvImage.img[vx + 2], nvImage.img[vx + 3]]; + } + if (nvImage.hdr.datatypeCode === 128 /* DT_RGB24 */) { + if (!nvImage.img) { + return [0]; + } + vx *= 3; + if (vx + 2 >= nvImage.img.length) { + log.warn(`getValue: Calculated index ${vx} out of bounds for RGB data.`); + return [0]; + } + return [nvImage.img[vx], nvImage.img[vx + 1], nvImage.img[vx + 2]]; + } + const nVox3D = nx * ny * nz; + const volOffset = frame4D * nVox3D; + const finalVxIndex = vx + volOffset; + const dataArray = isReadImaginary ? nvImage.imaginary : nvImage.img; + if (finalVxIndex < 0 || finalVxIndex >= dataArray.length) { + return [0]; + } + const rawValue = dataArray[finalVxIndex]; + const slope = isNaN(nvImage.hdr.scl_slope) || nvImage.hdr.scl_slope === 0 ? 1 : nvImage.hdr.scl_slope; + const inter = isNaN(nvImage.hdr.scl_inter) ? 0 : nvImage.hdr.scl_inter; + return [slope * rawValue + inter]; +} +function getValue(nvImage, x, y, z, frame4D = 0, isReadImaginary = false) { + const vals = getValues(nvImage, x, y, z, frame4D, isReadImaginary); + if (vals.length < 3) { + return vals[0]; + } + const lum = vals[0] * 0.2126 + vals[1] * 0.7152 + vals[2] * 0.0722; + return lum; +} +function getVolumeData(nvImage, voxStartRAS = [-1, 0, 0], voxEndRAS = [0, 0, 0], dataType = "same") { + const defaultResult = [new Uint8Array(), [0, 0, 0]]; + if (!nvImage.hdr || !nvImage.img || !nvImage.dimsRAS || !nvImage.img2RASstep || !nvImage.img2RASstart) { + log.error("getVolumeData: Missing required NVImage properties (hdr, img, dimsRAS, img2RASstep/start)."); + return defaultResult; + } + voxStartRAS = voxStartRAS.slice(0, 3); + voxEndRAS = voxEndRAS.slice(0, 3); + if (Math.min(...voxStartRAS) < 0 || Math.min(...voxEndRAS) < 0) { + log.warn("getVolumeData: Invalid start or end coordinates provided."); + return defaultResult; + } + const dimsRAS = nvImage.dimsRAS.slice(1, 4); + for (let i = 0; i < 3; i++) { + voxStartRAS[i] = Math.max(0, Math.min(Math.round(voxStartRAS[i]), dimsRAS[i] - 1)); + voxEndRAS[i] = Math.max(0, Math.min(Math.round(voxEndRAS[i]), dimsRAS[i] - 1)); + if (voxEndRAS[i] < voxStartRAS[i]) { + const tmp = voxEndRAS[i]; + voxEndRAS[i] = voxStartRAS[i]; + voxStartRAS[i] = tmp; + } + } + const slabDims = [ + voxEndRAS[0] - voxStartRAS[0] + 1, + voxEndRAS[1] - voxStartRAS[1] + 1, + voxEndRAS[2] - voxStartRAS[2] + 1 + ]; + const slabNVox = slabDims[0] * slabDims[1] * slabDims[2]; + if (slabNVox <= 0) { + log.warn("getVolumeData: Calculated slab size is zero or negative."); + return defaultResult; + } + let OutputArrayConstructor = nvImage.img.constructor; + if (dataType === "uint8") { + OutputArrayConstructor = Uint8Array; + } else if (dataType === "int16") { + OutputArrayConstructor = Int16Array; + } else if (dataType === "uint16") { + OutputArrayConstructor = Uint16Array; + } else if (dataType === "float32" || dataType === "scaled" || dataType === "normalized" || dataType === "windowed") { + OutputArrayConstructor = Float32Array; + } else if (dataType === "float64") { + OutputArrayConstructor = Float64Array; + } else if (dataType !== "same") { + log.warn(`getVolumeData: Unsupported dataType '${dataType}'. Using 'same'.`); + } + let outputImg; + try { + outputImg = new OutputArrayConstructor(slabNVox); + } catch (e) { + log.error(`getVolumeData: Failed to create output array for dataType '${dataType}'.`, e); + return defaultResult; + } + const step = nvImage.img2RASstep; + const start = nvImage.img2RASstart; + const sourceImg = nvImage.img; + let outputIndex = 0; + for (let rz = voxStartRAS[2]; rz <= voxEndRAS[2]; rz++) { + const zi = start[2] + rz * step[2]; + for (let ry = voxStartRAS[1]; ry <= voxEndRAS[1]; ry++) { + const yi = start[1] + ry * step[1]; + for (let rx = voxStartRAS[0]; rx <= voxEndRAS[0]; rx++) { + const xi = start[0] + rx * step[0]; + const nativeIndex = xi + yi + zi; + let value = 0; + if (nativeIndex >= 0 && nativeIndex < sourceImg.length) { + value = sourceImg[nativeIndex]; + } + outputImg[outputIndex++] = value; + } + } + } + const slope = isNaN(nvImage.hdr.scl_slope) || nvImage.hdr.scl_slope === 0 ? 1 : nvImage.hdr.scl_slope; + const inter = isNaN(nvImage.hdr.scl_inter) ? 0 : nvImage.hdr.scl_inter; + if (dataType === "scaled" || dataType === "normalized" || dataType === "windowed") { + if (!(outputImg instanceof Float32Array)) { + log.warn(`getVolumeData: Converting output to Float32 for scaling type '${dataType}'.`); + outputImg = Float32Array.from(outputImg); + } + for (let i = 0; i < outputImg.length; i++) { + outputImg[i] = outputImg[i] * slope + inter; + } + } + if (dataType === "normalized" || dataType === "windowed") { + let minVal = nvImage.cal_min; + let maxVal = nvImage.cal_max; + if (dataType === "normalized") { + minVal = nvImage.global_min; + maxVal = nvImage.global_max; + } + const range2 = maxVal - minVal; + const scale6 = range2 === 0 ? 0 : 1 / range2; + for (let i = 0; i < outputImg.length; i++) { + outputImg[i] = (outputImg[i] - minVal) * scale6; + outputImg[i] = Math.max(0, Math.min(outputImg[i], 1)); + } + } + return [outputImg, slabDims]; +} +function setVolumeData(nvImage, voxStartRAS = [-1, 0, 0], voxEndRAS = [0, 0, 0], slabData = new Uint8Array()) { + if (!nvImage.hdr || !nvImage.img || !nvImage.dimsRAS || !nvImage.img2RASstep || !nvImage.img2RASstart) { + log.error("setVolumeData: Missing required NVImage properties (hdr, img, dimsRAS, img2RASstep/start)."); + return; + } + if (slabData.length < 1) { + log.warn("setVolumeData: Input slabData is empty."); + return; + } + voxStartRAS = voxStartRAS.slice(0, 3); + voxEndRAS = voxEndRAS.slice(0, 3); + if (Math.min(...voxStartRAS) < 0 || Math.min(...voxEndRAS) < 0) { + log.warn("setVolumeData: Invalid start or end coordinates provided."); + return; + } + const dimsRAS = nvImage.dimsRAS.slice(1, 4); + for (let i = 0; i < 3; i++) { + voxStartRAS[i] = Math.max(0, Math.min(Math.round(voxStartRAS[i]), dimsRAS[i] - 1)); + voxEndRAS[i] = Math.max(0, Math.min(Math.round(voxEndRAS[i]), dimsRAS[i] - 1)); + if (voxEndRAS[i] < voxStartRAS[i]) { + const tmp = voxEndRAS[i]; + voxEndRAS[i] = voxStartRAS[i]; + voxStartRAS[i] = tmp; + } + } + const slabDims = [ + voxEndRAS[0] - voxStartRAS[0] + 1, + voxEndRAS[1] - voxStartRAS[1] + 1, + voxEndRAS[2] - voxStartRAS[2] + 1 + ]; + const slabNVox = slabDims[0] * slabDims[1] * slabDims[2]; + if (slabNVox <= 0) { + log.warn("setVolumeData: Calculated slab size is zero or negative."); + return; + } + if (slabData.length < slabNVox) { + log.error( + `setVolumeData: Input slabData length (${slabData.length}) is less than the calculated slab size (${slabNVox}).` + ); + return; + } + const step = nvImage.img2RASstep; + const start = nvImage.img2RASstart; + const targetImg = nvImage.img; + let sourceIndex = 0; + for (let rz = voxStartRAS[2]; rz <= voxEndRAS[2]; rz++) { + const zi = start[2] + rz * step[2]; + for (let ry = voxStartRAS[1]; ry <= voxEndRAS[1]; ry++) { + const yi = start[1] + ry * step[1]; + for (let rx = voxStartRAS[0]; rx <= voxEndRAS[0]; rx++) { + const xi = start[0] + rx * step[0]; + const nativeIndex = xi + yi + zi; + if (nativeIndex >= 0 && nativeIndex < targetImg.length) { + targetImg[nativeIndex] = slabData[sourceIndex]; + } + sourceIndex++; + } + } + } +} + +// src/nvimage/ImageReaders/mgh.ts +var mgh_exports = {}; +__export(mgh_exports, { + isFreeSurferLabelImage: () => isFreeSurferLabelImage, + optimizeFreeSurferLabels: () => optimizeFreeSurferLabels, + readMgh: () => readMgh +}); +function readTag(view, offset, footerLength, tagToRead = 1) { + const end = offset + footerLength; + let pos = offset; + const results = []; + while (pos + 12 <= end) { + const tag = view.getInt32(pos, false); + const length4 = view.getInt32(pos + 8, false); + pos += 12; + if (length4 <= 0 || pos + length4 > end) { + break; + } + if (tag !== tagToRead) { + pos += length4; + continue; + } + let strLen = length4; + let contentPos = pos; + if (tagToRead === 1) { + if (pos + 4 > end) { + break; + } + strLen = view.getInt32(pos, false); + contentPos += 4; + } + if (strLen > 1 && contentPos + strLen <= end) { + const raw = new Uint8Array(view.buffer, contentPos, strLen); + const str6 = new TextDecoder("utf-8").decode(raw.slice(0, -1)); + results.push(str6); + } + pos += length4; + } + return results.join("\n\n"); +} +function optimizeFreeSurferLabels(hdr, imgRaw) { + hdr.intent_code = 1002; + if (hdr.datatypeCode !== 16 /* DT_FLOAT32 */ && hdr.datatypeCode !== 8 /* DT_INT32 */) { + return imgRaw; + } + let img = new Float32Array(imgRaw); + if (hdr.datatypeCode === 8 /* DT_INT32 */) { + img = new Int32Array(imgRaw); + } + if (isPlatformLittleEndian()) { + const u32 = new Uint32Array(imgRaw); + for (let i = 0; i < u32.length; i++) { + const val = u32[i]; + u32[i] = (val & 255) << 24 | (val & 65280) << 8 | (val & 16711680) >>> 8 | (val & 4278190080) >>> 24; + } + } + hdr.littleEndian = isPlatformLittleEndian(); + let isInteger = true; + let mn = Infinity; + let mx = -Infinity; + for (let i = 0; i < img.length; i++) { + const v = img[i]; + if (!Number.isFinite(v)) { + continue; + } + if (!Number.isInteger(v)) { + isInteger = false; + } + if (v < mn) { + mn = v; + } + if (v > mx) { + mx = v; + } + } + if (!isInteger || mn < 0 || mx > 2147483647) { + log.warn(`FreeSurfer Labels must be integers in INT32 range. range ${mn}..${mx}`); + return imgRaw; + } + if (mx > 32767) { + hdr.datatypeCode = 8 /* DT_INT32 */; + const out = new Int32Array(img.length); + for (let i = 0; i < img.length; i++) { + out[i] = Math.trunc(img[i]); + } + return out.buffer; + } else if (mx > 255) { + hdr.datatypeCode = 4 /* DT_INT16 */; + hdr.numBitsPerVoxel = 16; + const out = new Int16Array(img.length); + for (let i = 0; i < img.length; i++) { + out[i] = Math.trunc(img[i]); + } + return out.buffer; + } else { + hdr.datatypeCode = 2 /* DT_UINT8 */; + hdr.numBitsPerVoxel = 8; + const out = new Uint8Array(img.length); + for (let i = 0; i < img.length; i++) { + out[i] = Math.trunc(img[i]); + } + return out.buffer; + } +} +function isFreeSurferLabelImage(raw, hdr, expectedBytes) { + const remainingBytes = raw.byteLength - hdr.vox_offset; + if (remainingBytes < expectedBytes) { + log.error(`MGH image data size mismatch: expected ${expectedBytes}, found ${remainingBytes}`); + return false; + } + if (remainingBytes === expectedBytes) { + return false; + } + const footerStart = hdr.vox_offset + expectedBytes + 20; + const footerLength = raw.byteLength - footerStart; + if (footerLength <= 12) { + return false; + } + const tag1 = readTag(new DataView(raw), footerStart, footerLength); + if (tag1.toLowerCase().endsWith("lut.txt")) { + return true; + } + const tag3 = readTag(new DataView(raw), footerStart, footerLength, 3); + return tag3.includes("mri_label2vol"); +} +async function readMgh(nvImage, buffer) { + if (!nvImage.hdr) { + log.debug("readMgh called before nvImage.hdr was initialized. Creating default."); + nvImage.hdr = new NIFTI1(); + } + const hdr = nvImage.hdr; + hdr.littleEndian = false; + let raw = buffer; + let reader = new DataView(raw); + if (raw.byteLength >= 2 && reader.getUint8(0) === 31 && reader.getUint8(1) === 139) { + try { + raw = await NVUtilities.decompressToBuffer(new Uint8Array(buffer)); + reader = new DataView(raw); + } catch (err2) { + log.error("Failed to decompress MGZ file.", err2); + return null; + } + } + if (raw.byteLength < 284) { + log.error("File too small to be a valid MGH/MGZ header."); + return null; + } + const version2 = reader.getInt32(0, false); + const width = reader.getInt32(4, false); + const height = reader.getInt32(8, false); + const depth = reader.getInt32(12, false); + const nframes = reader.getInt32(16, false); + const mtype = reader.getInt32(20, false); + const spacingX = reader.getFloat32(30, false); + const spacingY = reader.getFloat32(34, false); + const spacingZ = reader.getFloat32(38, false); + const xr = reader.getFloat32(42, false); + const xa = reader.getFloat32(46, false); + const xs = reader.getFloat32(50, false); + const yr = reader.getFloat32(54, false); + const ya = reader.getFloat32(58, false); + const ys = reader.getFloat32(62, false); + const zr = reader.getFloat32(66, false); + const za = reader.getFloat32(70, false); + const zs = reader.getFloat32(74, false); + const cr = reader.getFloat32(78, false); + const ca = reader.getFloat32(82, false); + const cs = reader.getFloat32(86, false); + if (version2 !== 1) { + log.warn(`Unexpected MGH version: ${version2}.`); + } + if (width <= 0 || height <= 0 || depth <= 0) { + log.error(`Invalid MGH dimensions: ${width}x${height}x${depth}`); + return null; + } + switch (mtype) { + case 0: + hdr.numBitsPerVoxel = 8; + hdr.datatypeCode = 2 /* DT_UINT8 */; + break; + case 4: + hdr.numBitsPerVoxel = 16; + hdr.datatypeCode = 4 /* DT_INT16 */; + break; + case 1: + hdr.numBitsPerVoxel = 32; + hdr.datatypeCode = 8 /* DT_INT32 */; + break; + case 3: + hdr.numBitsPerVoxel = 32; + hdr.datatypeCode = 16 /* DT_FLOAT32 */; + break; + default: + log.error(`Unsupported MGH data type: ${mtype}`); + return null; + } + hdr.dims[1] = width; + hdr.dims[2] = height; + hdr.dims[3] = depth; + hdr.dims[4] = Math.max(1, nframes); + hdr.dims[0] = hdr.dims[4] > 1 ? 4 : 3; + hdr.pixDims[1] = Math.abs(spacingX); + hdr.pixDims[2] = Math.abs(spacingY); + hdr.pixDims[3] = Math.abs(spacingZ); + hdr.pixDims[4] = 0; + hdr.sform_code = 1; + hdr.qform_code = 0; + hdr.sform_code = 1; + const rot44 = mat4_exports.fromValues( + xr * hdr.pixDims[1], + yr * hdr.pixDims[2], + zr * hdr.pixDims[3], + 0, + xa * hdr.pixDims[1], + ya * hdr.pixDims[2], + za * hdr.pixDims[3], + 0, + xs * hdr.pixDims[1], + ys * hdr.pixDims[2], + zs * hdr.pixDims[3], + 0, + 0, + 0, + 0, + 1 + ); + const Pcrs = [hdr.dims[1] / 2, hdr.dims[2] / 2, hdr.dims[3] / 2, 1]; + const PxyzOffset = [0, 0, 0, 0]; + for (let i = 0; i < 3; i++) { + PxyzOffset[i] = 0; + for (let j = 0; j < 3; j++) { + PxyzOffset[i] = PxyzOffset[i] + rot44[j + i * 4] * Pcrs[j]; + } + } + hdr.affine = [ + [rot44[0], rot44[1], rot44[2], cr - PxyzOffset[0]], + [rot44[4], rot44[5], rot44[6], ca - PxyzOffset[1]], + [rot44[8], rot44[9], rot44[10], cs - PxyzOffset[2]], + [0, 0, 0, 1] + ]; + hdr.vox_offset = 284; + hdr.magic = "n+1"; + const nBytesPerVoxel = hdr.numBitsPerVoxel / 8; + const nVoxels = width * height * depth * hdr.dims[4]; + const expectedBytes = nVoxels * nBytesPerVoxel; + const imgRaw = raw.slice(hdr.vox_offset, hdr.vox_offset + expectedBytes); + if (isFreeSurferLabelImage(raw, hdr, expectedBytes)) { + return optimizeFreeSurferLabels(hdr, imgRaw); + } + return imgRaw; +} + +// src/nvimage/ImageReaders/nii.ts +var nii_exports = {}; +__export(nii_exports, { + readNifti: () => readNifti +}); +async function readNifti(nvImage, buffer, pairedImageData) { + let dataBuffer = buffer; + let imgRaw = null; + try { + if (isCompressed(dataBuffer)) { + log.debug(`Decompressing NIfTI file: ${nvImage.name}`); + dataBuffer = await decompressAsync(dataBuffer); + log.debug(`Decompression complete for: ${nvImage.name}`); + } + if (!dataBuffer || dataBuffer.byteLength === 0) { + throw new Error("Buffer became invalid after decompression attempt."); + } + nvImage.hdr = await readHeaderAsync(dataBuffer, pairedImageData != null); + if (hasExtension(nvImage.hdr)) { + nvImage.extensions = nvImage.hdr.extensions; + } + if (nvImage.hdr === null) { + throw new Error(`Failed to read NIfTI header: ${nvImage.name}`); + } + if (nvImage.hdr.cal_min === 0 && nvImage.hdr.cal_max === 255 && nvImage.hdr.datatypeCode !== 2 /* DT_UINT8 */) { + log.debug(`Resetting suspicious cal_min/max (0/255) for non-uint8 NIfTI: ${nvImage.name}`); + nvImage.hdr.cal_min = 0; + nvImage.hdr.cal_max = 0; + } + imgRaw = pairedImageData ? readImage(nvImage.hdr, pairedImageData) : readImage(nvImage.hdr, dataBuffer); + if (imgRaw === null) { + throw new Error(`nifti-reader-js readImage returned null for ${nvImage.name}`); + } + return imgRaw; + } catch (err2) { + log.error(`Error processing NIfTI file ${nvImage.name}:`, err2); + nvImage.hdr = null; + return null; + } +} + +// src/nvimage/ImageReaders/nrrd.ts +var nrrd_exports = {}; +__export(nrrd_exports, { + readNrrd: () => readNrrd +}); +async function readNrrd(nvImage, dataBuffer, pairedImgData = null) { + if (!nvImage.hdr) { + log.warn("readNrrd called before nvImage.hdr was initialized. Creating default."); + nvImage.hdr = new NIFTI1(); + } + const hdr = nvImage.hdr; + hdr.pixDims = [1, 1, 1, 1, 1, 0, 0, 0]; + const len4 = dataBuffer.byteLength; + let txt = null; + const bytes = new Uint8Array(dataBuffer); + for (let i = 1; i < len4; i++) { + if (bytes[i - 1] === 10 && bytes[i] === 10) { + const v = dataBuffer.slice(0, i - 1); + txt = new TextDecoder().decode(v); + hdr.vox_offset = i + 1; + break; + } + } + if (txt === null) { + log.error("readNrrd: could not extract txt"); + return null; + } + const lines = txt.split("\n"); + if (!lines[0].startsWith("NRRD")) { + log.error("Invalid NRRD image (magic signature missing)"); + return null; + } + const n = lines.length; + let isGz = false; + let isMicron = false; + let isDetached = false; + const mat33 = mat3_exports.fromValues(NaN, 0, 0, 0, 1, 0, 0, 0, 1); + const offset = vec3_exports.fromValues(0, 0, 0); + let rot33 = mat3_exports.create(); + for (let i = 1; i < n; i++) { + let str6 = lines[i]; + if (str6.length === 0 || str6[0] === "#") { + if (str6.startsWith("#")) { + continue; + } + if (str6.trim().length === 0) { + continue; + } + } + str6 = str6.toLowerCase(); + const items = str6.split(":"); + if (items.length < 2) { + continue; + } + const key = items[0].trim(); + let value = items[1].trim(); + value = value.replaceAll(")", " "); + value = value.replaceAll("(", " "); + value = value.trim(); + switch (key) { + case "data file": + isDetached = true; + break; + case "encoding": + if (value.includes("raw")) { + isGz = false; + } else if (value.includes("gz")) { + isGz = true; + } else { + log.error("Unsupported NRRD encoding"); + return null; + } + break; + case "type": + switch (value) { + case "uchar": + case "unsigned char": + case "uint8": + case "uint8_t": + hdr.numBitsPerVoxel = 8; + hdr.datatypeCode = 2 /* DT_UINT8 */; + break; + case "signed char": + case "int8": + case "int8_t": + hdr.numBitsPerVoxel = 8; + hdr.datatypeCode = 256 /* DT_INT8 */; + break; + case "short": + case "short int": + case "signed short": + case "signed short int": + case "int16": + case "int16_t": + hdr.numBitsPerVoxel = 16; + hdr.datatypeCode = 4 /* DT_INT16 */; + break; + case "ushort": + case "unsigned short": + case "unsigned short int": + case "uint16": + case "uint16_t": + hdr.numBitsPerVoxel = 16; + hdr.datatypeCode = 512 /* DT_UINT16 */; + break; + case "int": + case "signed int": + case "int32": + case "int32_t": + hdr.numBitsPerVoxel = 32; + hdr.datatypeCode = 8 /* DT_INT32 */; + break; + case "uint": + case "unsigned int": + case "uint32": + case "uint32_t": + hdr.numBitsPerVoxel = 32; + hdr.datatypeCode = 768 /* DT_UINT32 */; + break; + case "float": + hdr.numBitsPerVoxel = 32; + hdr.datatypeCode = 16 /* DT_FLOAT32 */; + break; + case "double": + hdr.numBitsPerVoxel = 64; + hdr.datatypeCode = 64 /* DT_FLOAT64 */; + break; + default: + log.error("Unsupported NRRD data type: " + value); + return null; + } + break; + case "spacings": + { + const values = value.split(/[ ,]+/); + for (let d = 0; d < values.length; d++) { + hdr.pixDims[d + 1] = parseFloat(values[d]); + } + } + break; + case "sizes": + { + const dims = value.split(/[ ,]+/); + hdr.dims[0] = dims.length; + for (let d = 0; d < dims.length; d++) { + hdr.dims[d + 1] = parseInt(dims[d]); + } + } + break; + case "endian": + if (value.includes("little")) { + hdr.littleEndian = true; + } else if (value.includes("big")) { + hdr.littleEndian = false; + } + break; + case "space directions": + { + const vs = value.split(/[ ,]+/); + if (vs.length === 9) { + for (let d = 0; d < 9; d++) { + mat33[d] = parseFloat(vs[d]); + } + } + } + break; + case "space origin": + { + const ts = value.split(/[ ,]+/); + if (ts.length === 3) { + offset[0] = parseFloat(ts[0]); + offset[1] = parseFloat(ts[1]); + offset[2] = parseFloat(ts[2]); + } + } + break; + case "space units": + if (value.includes("microns")) { + isMicron = true; + } + break; + case "space": + if (value.includes("right-anterior-superior") || value.includes("ras")) { + rot33 = mat3_exports.fromValues(1, 0, 0, 0, 1, 0, 0, 0, 1); + } else if (value.includes("left-anterior-superior") || value.includes("las")) { + rot33 = mat3_exports.fromValues(-1, 0, 0, 0, 1, 0, 0, 0, 1); + } else if (value.includes("left-posterior-superior") || value.includes("lps")) { + rot33 = mat3_exports.fromValues(-1, 0, 0, 0, -1, 0, 0, 0, 1); + } else { + log.warn("Unsupported NRRD space value:", value); + } + break; + default: + log.warn("Unknown:", key); + break; + } + } + if (!isNaN(mat33[0])) { + hdr.sform_code = 2; + if (isMicron) { + mat4_exports.multiplyScalar(mat33, mat33, 1e-3); + offset[0] *= 1e-3; + offset[1] *= 1e-3; + offset[2] *= 1e-3; + } + if (rot33[0] < 0) { + offset[0] = -offset[0]; + } + if (rot33[4] < 0) { + offset[1] = -offset[1]; + } + if (rot33[8] < 0) { + offset[2] = -offset[2]; + } + mat3_exports.multiply(mat33, rot33, mat33); + const mat = mat4_exports.fromValues( + mat33[0], + mat33[3], + mat33[6], + offset[0], + mat33[1], + mat33[4], + mat33[7], + offset[1], + mat33[2], + mat33[5], + mat33[8], + offset[2], + 0, + 0, + 0, + 1 + ); + if (!nvImage.vox2mm) { + return null; + } + const mm000 = nvImage.vox2mm([0, 0, 0], mat); + const mm100 = nvImage.vox2mm([1, 0, 0], mat); + vec3_exports.subtract(mm100, mm100, mm000); + const mm010 = nvImage.vox2mm([0, 1, 0], mat); + vec3_exports.subtract(mm010, mm010, mm000); + const mm001 = nvImage.vox2mm([0, 0, 1], mat); + vec3_exports.subtract(mm001, mm001, mm000); + hdr.pixDims[1] = vec3_exports.length(mm100); + hdr.pixDims[2] = vec3_exports.length(mm010); + hdr.pixDims[3] = vec3_exports.length(mm001); + hdr.affine = [ + [mat[0], mat[1], mat[2], mat[3]], + [mat[4], mat[5], mat[6], mat[7]], + [mat[8], mat[9], mat[10], mat[11]], + [0, 0, 0, 1] + ]; + } + let imgRaw = null; + const sourceBuffer = isDetached ? pairedImgData : dataBuffer; + const sourceOffset = isDetached ? 0 : hdr.vox_offset; + if (isDetached && !sourceBuffer) { + log.warn("Missing data: NRRD header describes detached data file but only one URL provided"); + return null; + } + if (!sourceBuffer || sourceOffset >= sourceBuffer.byteLength) { + log.error(`NRRD data offset (${sourceOffset}) invalid for buffer length (${sourceBuffer?.byteLength ?? 0})`); + return null; + } + let dataSection = sourceBuffer.slice(sourceOffset); + if (isGz) { + try { + log.debug("Decompressing NRRD data..."); + dataSection = await NVUtilities.decompressToBuffer(new Uint8Array(dataSection)); + log.debug("Decompression complete."); + } catch (err2) { + log.error("Failed to decompress NRRD data.", err2); + return null; + } + } + const nBytesPerVoxel = hdr.numBitsPerVoxel / 8; + const nVoxels = hdr.dims.slice(1, hdr.dims[0] + 1).reduce((acc, dim) => acc * Math.max(1, dim), 1); + const expectedBytes = nVoxels * nBytesPerVoxel; + if (dataSection.byteLength < expectedBytes) { + log.error(`NRRD image data size mismatch: expected ${expectedBytes}, found ${dataSection.byteLength}`); + return null; + } else if (dataSection.byteLength > expectedBytes) { + log.warn(`NRRD has extra ${dataSection.byteLength - expectedBytes} bytes after expected image data. Truncating.`); + dataSection = dataSection.slice(0, expectedBytes); + } + imgRaw = dataSection; + if (!hdr.datatypeCode) { + log.error("NRRD parsing failed to set datatypeCode."); + return null; + } + if (!hdr.numBitsPerVoxel) { + log.error("NRRD parsing failed to set numBitsPerVoxel."); + return null; + } + return imgRaw; +} + +// src/nvimage/index.ts +var NVImage = class _NVImage { + constructor(dataBuffer = null, name = "", colormap = "gray", opacity = 1, pairedImgData = null, cal_min = NaN, cal_max = NaN, trustCalMinMax = true, percentileFrac = 0.02, ignoreZeroVoxels = false, useQFormNotSForm = false, colormapNegative = "", frame4D = 0, imageType = NVIMAGE_TYPE.UNKNOWN, cal_minNeg = NaN, cal_maxNeg = NaN, colorbarVisible = true, colormapLabel = null, colormapType = 0) { + __publicField(this, "name"); + __publicField(this, "id"); + __publicField(this, "url"); + __publicField(this, "headers"); + __publicField(this, "_colormap"); + __publicField(this, "_opacity"); + __publicField(this, "percentileFrac"); + __publicField(this, "ignoreZeroVoxels"); + __publicField(this, "trustCalMinMax"); + __publicField(this, "colormapNegative"); + // TODO see niivue/loadDocument + __publicField(this, "colormapLabel"); + __publicField(this, "colormapInvert"); + __publicField(this, "nFrame4D"); + __publicField(this, "frame4D"); + // indexed from 0! + __publicField(this, "nTotalFrame4D"); + __publicField(this, "cal_minNeg"); + __publicField(this, "cal_maxNeg"); + __publicField(this, "colorbarVisible", true); + __publicField(this, "modulationImage", null); + __publicField(this, "modulateAlpha", 0); + // if !=0, mod transparency with expon power |Alpha| + // TODO this is some Daikon internal thing + // eslint-disable-next-line @typescript-eslint/no-explicit-any + __publicField(this, "series", []); + // for concatenating dicom images + __publicField(this, "nVox3D"); + __publicField(this, "oblique_angle"); + __publicField(this, "maxShearDeg"); + __publicField(this, "useQFormNotSForm"); + __publicField(this, "colormapType"); + __publicField(this, "pixDims"); + __publicField(this, "matRAS"); + __publicField(this, "pixDimsRAS"); + __publicField(this, "obliqueRAS"); + __publicField(this, "dimsRAS"); + __publicField(this, "permRAS"); + __publicField(this, "img2RASstep"); + __publicField(this, "img2RASstart"); + __publicField(this, "toRAS"); + __publicField(this, "toRASvox"); + __publicField(this, "frac2mm"); + __publicField(this, "frac2mmOrtho"); + __publicField(this, "extentsMinOrtho"); + __publicField(this, "extentsMaxOrtho"); + __publicField(this, "mm2ortho"); + __publicField(this, "hdr", null); + __publicField(this, "extensions"); + __publicField(this, "imageType"); + __publicField(this, "img"); + __publicField(this, "imaginary"); + // only for complex data + __publicField(this, "v1"); + // only for FIB files + __publicField(this, "fileObject"); + __publicField(this, "dims"); + __publicField(this, "onColormapChange", () => { + }); + __publicField(this, "onOpacityChange", () => { + }); + __publicField(this, "mm000"); + __publicField(this, "mm100"); + __publicField(this, "mm010"); + __publicField(this, "mm001"); + __publicField(this, "cal_min"); + __publicField(this, "cal_max"); + __publicField(this, "robust_min"); + __publicField(this, "robust_max"); + __publicField(this, "global_min"); + __publicField(this, "global_max"); + // TODO referenced by niivue/loadVolumes + __publicField(this, "urlImgData"); + __publicField(this, "isManifest"); + __publicField(this, "limitFrames4D"); + this.init( + dataBuffer, + name, + colormap, + opacity, + pairedImgData, + cal_min, + cal_max, + trustCalMinMax, + percentileFrac, + ignoreZeroVoxels, + useQFormNotSForm, + colormapNegative, + frame4D, + imageType, + cal_minNeg, + cal_maxNeg, + colorbarVisible, + colormapLabel, + colormapType + ); + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + init(dataBuffer = null, name = "", colormap = "", opacity = 1, _pairedImgData = null, cal_min = NaN, cal_max = NaN, trustCalMinMax = true, percentileFrac = 0.02, ignoreZeroVoxels = false, useQFormNotSForm = false, colormapNegative = "", frame4D = 0, imageType = NVIMAGE_TYPE.UNKNOWN, cal_minNeg = NaN, cal_maxNeg = NaN, colorbarVisible = true, colormapLabel = null, colormapType = 0, imgRaw = null) { + const isNoColormap = colormap === ""; + if (isNoColormap) { + colormap = "gray"; + } + this.name = name; + this.imageType = imageType; + this.id = v4(); + this._colormap = colormap; + this._opacity = opacity > 1 ? 1 : opacity; + this.percentileFrac = percentileFrac; + this.ignoreZeroVoxels = ignoreZeroVoxels; + this.trustCalMinMax = trustCalMinMax; + this.colormapNegative = colormapNegative; + this.colormapLabel = colormapLabel; + this.frame4D = frame4D; + this.cal_minNeg = cal_minNeg; + this.cal_maxNeg = cal_maxNeg; + this.colorbarVisible = colorbarVisible; + this.colormapType = colormapType; + this.useQFormNotSForm = useQFormNotSForm; + if (!dataBuffer) { + return; + } + if (isNoColormap && this.hdr && this.hdr.intent_code === 1002) { + colormap = "random"; + this._colormap = colormap; + } + if (this.hdr && typeof this.hdr.magic === "number") { + this.hdr.magic = "n+1"; + } + this.nFrame4D = 1; + if (this.hdr) { + for (let i = 4; i < 7; i++) { + if (this.hdr.dims[i] > 1) { + this.nFrame4D *= this.hdr.dims[i]; + } + } + } + this.frame4D = Math.min(this.frame4D, this.nFrame4D - 1); + this.nTotalFrame4D = this.nFrame4D; + if (!this.hdr || !imgRaw) { + return; + } + this.nVox3D = this.hdr.dims[1] * this.hdr.dims[2] * this.hdr.dims[3]; + const bytesPerVol = this.nVox3D * (this.hdr.numBitsPerVoxel / 8); + const nVol4D = imgRaw.byteLength / bytesPerVol; + if (nVol4D !== this.nFrame4D) { + if (nVol4D > 0 && nVol4D * bytesPerVol === imgRaw.byteLength) { + log.debug("Loading the first " + nVol4D + " of " + this.nFrame4D + " volumes"); + } else { + log.warn("This header does not match voxel data", this.hdr, imgRaw.byteLength); + } + this.nFrame4D = nVol4D; + } + if ((this.hdr.intent_code === 1007 /* NIFTI_INTENT_VECTOR */ || this.hdr.intent_code === 2003 /* NIFTI_INTENT_RGB_VECTOR */) && this.nFrame4D === 3 && this.hdr.datatypeCode === 16 /* DT_FLOAT32 */) { + imgRaw = this.float32V1asRGBA(new Float32Array(imgRaw)).buffer; + } + if (this.hdr.pixDims[1] === 0 || this.hdr.pixDims[2] === 0 || this.hdr.pixDims[3] === 0) { + log.error("pixDims not plausible", this.hdr); + } + if (isNaN(this.hdr.scl_slope) || this.hdr.scl_slope === 0) { + this.hdr.scl_slope = 1; + } + if (isNaN(this.hdr.scl_inter)) { + this.hdr.scl_inter = 0; + } + let affineOK = isAffineOK(this.hdr.affine); + if (useQFormNotSForm || !affineOK || this.hdr.qform_code > this.hdr.sform_code) { + log.debug("spatial transform based on QForm"); + const b = this.hdr.quatern_b; + const c = this.hdr.quatern_c; + const d = this.hdr.quatern_d; + const a = Math.sqrt(1 - (Math.pow(b, 2) + Math.pow(c, 2) + Math.pow(d, 2))); + const qfac = this.hdr.pixDims[0] === 0 ? 1 : this.hdr.pixDims[0]; + const quatern_R = [ + [a * a + b * b - c * c - d * d, 2 * b * c - 2 * a * d, 2 * b * d + 2 * a * c], + [2 * b * c + 2 * a * d, a * a + c * c - b * b - d * d, 2 * c * d - 2 * a * b], + [2 * b * d - 2 * a * c, 2 * c * d + 2 * a * b, a * a + d * d - c * c - b * b] + ]; + const affine = this.hdr.affine; + for (let ctrOut = 0; ctrOut < 3; ctrOut += 1) { + for (let ctrIn = 0; ctrIn < 3; ctrIn += 1) { + affine[ctrOut][ctrIn] = quatern_R[ctrOut][ctrIn] * this.hdr.pixDims[ctrIn + 1]; + if (ctrIn === 2) { + affine[ctrOut][ctrIn] *= qfac; + } + } + } + affine[0][3] = this.hdr.qoffset_x; + affine[1][3] = this.hdr.qoffset_y; + affine[2][3] = this.hdr.qoffset_z; + this.hdr.affine = affine; + } + affineOK = isAffineOK(this.hdr.affine); + if (!affineOK) { + log.debug("Defective NIfTI: spatial transform does not make sense"); + let x = this.hdr.pixDims[1]; + let y = this.hdr.pixDims[2]; + let z = this.hdr.pixDims[3]; + if (isNaN(x) || x === 0) { + x = 1; + } + if (isNaN(y) || y === 0) { + y = 1; + } + if (isNaN(z) || z === 0) { + z = 1; + } + this.hdr.pixDims[1] = x; + this.hdr.pixDims[2] = y; + this.hdr.pixDims[3] = z; + const affine = [ + [x, 0, 0, 0], + [0, y, 0, 0], + [0, 0, z, 0], + [0, 0, 0, 1] + ]; + this.hdr.affine = affine; + } + if (this.hdr.datatypeCode !== 128 /* DT_RGB24 */ && this.hdr.datatypeCode !== 2304 /* DT_RGBA32 */ && this.hdr.littleEndian !== isPlatformLittleEndian() && this.hdr.numBitsPerVoxel > 8) { + if (this.hdr.numBitsPerVoxel === 16) { + const u162 = new Uint16Array(imgRaw); + for (let i = 0; i < u162.length; i++) { + const val = u162[i]; + u162[i] = ((val & 255) << 8 | val >> 8 & 255) << 16 >> 16; + } + } else if (this.hdr.numBitsPerVoxel === 32) { + const u32 = new Uint32Array(imgRaw); + for (let i = 0; i < u32.length; i++) { + const val = u32[i]; + u32[i] = (val & 255) << 24 | (val & 65280) << 8 | val >> 8 & 65280 | val >> 24 & 255; + } + } else if (this.hdr.numBitsPerVoxel === 64) { + const numBytesPerVoxel = this.hdr.numBitsPerVoxel / 8; + const u82 = new Uint8Array(imgRaw); + for (let index = 0; index < u82.length; index += numBytesPerVoxel) { + let offset = numBytesPerVoxel - 1; + for (let x = 0; x < offset; x++) { + const theByte = u82[index + x]; + u82[index + x] = u82[index + offset]; + u82[index + offset] = theByte; + offset--; + } + } + } + } + switch (this.hdr.datatypeCode) { + case 2 /* DT_UINT8 */: + this.img = new Uint8Array(imgRaw); + break; + case 4 /* DT_INT16 */: + this.img = new Int16Array(imgRaw); + break; + case 16 /* DT_FLOAT32 */: + this.img = new Float32Array(imgRaw); + break; + case 64 /* DT_FLOAT64 */: + this.img = new Float64Array(imgRaw); + break; + case 128 /* DT_RGB24 */: + this.img = new Uint8Array(imgRaw); + break; + case 512 /* DT_UINT16 */: + this.img = new Uint16Array(imgRaw); + break; + case 2304 /* DT_RGBA32 */: + this.img = new Uint8Array(imgRaw); + break; + case 256 /* DT_INT8 */: { + const i8 = new Int8Array(imgRaw); + const vx8 = i8.length; + this.img = new Int16Array(vx8); + for (let i = 0; i < vx8; i++) { + this.img[i] = i8[i]; + } + this.hdr.datatypeCode = 4 /* DT_INT16 */; + this.hdr.numBitsPerVoxel = 16; + break; + } + case 1 /* DT_BINARY */: { + const nvox = this.hdr.dims[1] * this.hdr.dims[2] * Math.max(1, this.hdr.dims[3]) * Math.max(1, this.hdr.dims[4]); + const img1 = new Uint8Array(imgRaw); + this.img = new Uint8Array(nvox); + const lut = new Uint8Array(8); + for (let i = 0; i < 8; i++) { + lut[i] = Math.pow(2, i); + } + let i1 = -1; + for (let i = 0; i < nvox; i++) { + const bit = i % 8; + if (bit === 0) { + i1++; + } + if ((img1[i1] & lut[bit]) !== 0) { + this.img[i] = 1; + } + } + this.hdr.datatypeCode = 2 /* DT_UINT8 */; + this.hdr.numBitsPerVoxel = 8; + break; + } + case 768 /* DT_UINT32 */: { + const u32 = new Uint32Array(imgRaw); + const vx32 = u32.length; + this.img = new Float64Array(vx32); + for (let i = 0; i < vx32 - 1; i++) { + this.img[i] = u32[i]; + } + this.hdr.datatypeCode = 64 /* DT_FLOAT64 */; + break; + } + case 8 /* DT_INT32 */: { + const i322 = new Int32Array(imgRaw); + const vxi32 = i322.length; + this.img = new Float64Array(vxi32); + for (let i = 0; i < vxi32 - 1; i++) { + this.img[i] = i322[i]; + } + this.hdr.datatypeCode = 64 /* DT_FLOAT64 */; + break; + } + case 1024 /* DT_INT64 */: { + const i64 = new BigInt64Array(imgRaw); + const vx = i64.length; + this.img = new Float64Array(vx); + for (let i = 0; i < vx - 1; i++) { + this.img[i] = Number(i64[i]); + } + this.hdr.datatypeCode = 64 /* DT_FLOAT64 */; + break; + } + case 32 /* DT_COMPLEX64 */: { + const f32 = new Float32Array(imgRaw); + const nvx = Math.floor(f32.length / 2); + this.imaginary = new Float32Array(nvx); + this.img = new Float32Array(nvx); + let r = 0; + for (let i = 0; i < nvx - 1; i++) { + this.img[i] = f32[r]; + this.imaginary[i] = f32[r + 1]; + r += 2; + } + this.hdr.datatypeCode = 16 /* DT_FLOAT32 */; + break; + } + default: + throw new Error("datatype " + this.hdr.datatypeCode + " not supported"); + } + this.calculateRAS(); + if (!isNaN(cal_min)) { + this.hdr.cal_min = cal_min; + } + if (!isNaN(cal_max)) { + this.hdr.cal_max = cal_max; + } + this.calMinMax(); + } + static async new(dataBuffer = null, name = "", colormap = "", opacity = 1, pairedImgData = null, cal_min = NaN, cal_max = NaN, trustCalMinMax = true, percentileFrac = 0.02, ignoreZeroVoxels = false, useQFormNotSForm = false, colormapNegative = "", frame4D = 0, imageType = NVIMAGE_TYPE.UNKNOWN, cal_minNeg = NaN, cal_maxNeg = NaN, colorbarVisible = true, colormapLabel = null, colormapType = 0, zarrData) { + const newImg = new _NVImage(); + const re = /(?:\.([^.]+))?$/; + let ext = re.exec(name)[1] || ""; + ext = ext.toUpperCase(); + if (ext === "GZ") { + ext = re.exec(name.slice(0, -3))[1]; + ext = ext.toUpperCase(); + } + let imgRaw = null; + if (imageType === NVIMAGE_TYPE.UNKNOWN) { + imageType = NVIMAGE_TYPE.parse(ext); + } + if (dataBuffer instanceof ArrayBuffer && dataBuffer.byteLength >= 2 && imageType === NVIMAGE_TYPE.DCM) { + const u8s = new Uint8Array(dataBuffer); + const isNifti1 = u8s[0] === 92 && u8s[1] === 1 || u8s[1] === 92 && u8s[0] === 1; + if (isNifti1) { + imageType = NVIMAGE_TYPE.NII; + } + } + newImg.imageType = imageType; + switch (imageType) { + case NVIMAGE_TYPE.DCM_FOLDER: + case NVIMAGE_TYPE.DCM_MANIFEST: + case NVIMAGE_TYPE.DCM: + return; + case NVIMAGE_TYPE.FIB: + ; + [imgRaw, newImg.v1] = await newImg.readFIB(dataBuffer); + break; + case NVIMAGE_TYPE.MIH: + case NVIMAGE_TYPE.MIF: + imgRaw = await newImg.readMIF(dataBuffer, pairedImgData); + break; + case NVIMAGE_TYPE.NHDR: + case NVIMAGE_TYPE.NRRD: + imgRaw = await nrrd_exports.readNrrd(newImg, dataBuffer); + if (imgRaw === null) { + throw new Error(`Failed to parse NHDR/NRRD file ${name}`); + } + break; + case NVIMAGE_TYPE.MHD: + case NVIMAGE_TYPE.MHA: + imgRaw = await newImg.readMHA(dataBuffer, pairedImgData); + break; + case NVIMAGE_TYPE.MGH: + case NVIMAGE_TYPE.MGZ: + imgRaw = await mgh_exports.readMgh(newImg, dataBuffer); + if (imgRaw === null) { + throw new Error(`Failed to parse MGH/MGZ file ${name}`); + } + break; + case NVIMAGE_TYPE.SRC: + imgRaw = await newImg.readSRC(dataBuffer); + break; + case NVIMAGE_TYPE.V: + imgRaw = newImg.readECAT(dataBuffer); + break; + case NVIMAGE_TYPE.V16: + imgRaw = newImg.readV16(dataBuffer); + break; + case NVIMAGE_TYPE.VMR: + imgRaw = newImg.readVMR(dataBuffer); + break; + case NVIMAGE_TYPE.HEAD: + imgRaw = await newImg.readHEAD(dataBuffer, pairedImgData); + break; + case NVIMAGE_TYPE.BMP: + imgRaw = await newImg.readBMP(dataBuffer); + break; + case NVIMAGE_TYPE.NPY: + imgRaw = await newImg.readNPY(dataBuffer); + break; + case NVIMAGE_TYPE.NPZ: + imgRaw = await newImg.readNPZ(dataBuffer); + break; + case NVIMAGE_TYPE.ZARR: + imgRaw = await newImg.readZARR(dataBuffer, zarrData); + break; + case NVIMAGE_TYPE.NII: + imgRaw = await nii_exports.readNifti(newImg, dataBuffer, pairedImgData); + if (imgRaw === null) { + throw new Error(`Failed to parse NIfTI file ${name}.`); + } + break; + default: + throw new Error("Image type not supported"); + } + newImg.init( + dataBuffer, + name, + colormap, + opacity, + pairedImgData, + cal_min, + cal_max, + trustCalMinMax, + percentileFrac, + ignoreZeroVoxels, + useQFormNotSForm, + colormapNegative, + frame4D, + imageType, + cal_minNeg, + cal_maxNeg, + colorbarVisible, + colormapLabel, + colormapType, + imgRaw + ); + return newImg; + } + // not included in public docs + // detect difference between voxel grid and world space + // https://github.com/afni/afni/blob/25e77d564f2c67ff480fa99a7b8e48ec2d9a89fc/src/thd_coords.c#L717 + computeObliqueAngle(mtx44) { + const mtx = mat4_exports.clone(mtx44); + mat4_exports.transpose(mtx, mtx44); + const dxtmp = Math.sqrt(mtx[0] * mtx[0] + mtx[1] * mtx[1] + mtx[2] * mtx[2]); + const xmax = Math.max(Math.max(Math.abs(mtx[0]), Math.abs(mtx[1])), Math.abs(mtx[2])) / dxtmp; + const dytmp = Math.sqrt(mtx[4] * mtx[4] + mtx[5] * mtx[5] + mtx[6] * mtx[6]); + const ymax = Math.max(Math.max(Math.abs(mtx[4]), Math.abs(mtx[5])), Math.abs(mtx[6])) / dytmp; + const dztmp = Math.sqrt(mtx[8] * mtx[8] + mtx[9] * mtx[9] + mtx[10] * mtx[10]); + const zmax = Math.max(Math.max(Math.abs(mtx[8]), Math.abs(mtx[9])), Math.abs(mtx[10])) / dztmp; + const fig_merit = Math.min(Math.min(xmax, ymax), zmax); + let oblique_angle = Math.abs(Math.acos(fig_merit) * 180 / 3.141592653); + if (oblique_angle > 0.01) { + log.warn("Warning voxels not aligned with world space: " + oblique_angle + " degrees from plumb.\n"); + } else { + oblique_angle = 0; + } + return oblique_angle; + } + float32V1asRGBA(inImg) { + if (inImg.length !== this.nVox3D * 3) { + log.warn("float32V1asRGBA() expects " + this.nVox3D * 3 + "voxels, got ", +inImg.length); + } + const f32 = inImg.slice(); + this.hdr.datatypeCode = 2304 /* DT_RGBA32 */; + this.nFrame4D = 1; + for (let i = 4; i < 7; i++) { + this.hdr.dims[i] = 1; + } + this.hdr.dims[0] = 3; + const imgRaw = new Uint8Array(this.nVox3D * 4); + let mx = 1; + for (let i = 0; i < this.nVox3D * 3; i++) { + if (isNaN(f32[i])) { + continue; + } + mx = Math.max(mx, Math.abs(f32[i])); + } + const slope = 255 / mx; + const nVox3D2 = this.nVox3D * 2; + let j = 0; + for (let i = 0; i < this.nVox3D; i++) { + const x = f32[i]; + const y = f32[i + this.nVox3D]; + const z = f32[i + nVox3D2]; + imgRaw[j] = Math.abs(x * slope); + imgRaw[j + 1] = Math.abs(y * slope); + imgRaw[j + 2] = Math.abs(z * slope); + const xNeg = Number(x > 0) * 1; + const yNeg = Number(y > 0) * 2; + const zNeg = Number(z > 0) * 4; + let alpha = 248 + xNeg + yNeg + zNeg; + if (Math.abs(x) + Math.abs(y) + Math.abs(z) < 0.1) { + alpha = 0; + } + ; + imgRaw[j + 3] = alpha; + j += 4; + } + return imgRaw; + } + loadImgV1(isFlipX = false, isFlipY = false, isFlipZ = false) { + let v1 = this.v1; + if (!v1 && this.nFrame4D === 3 && this.img.constructor === Float32Array) { + v1 = this.img.slice(); + } + if (!v1) { + log.warn("Image does not have V1 data"); + return false; + } + if (isFlipX) { + for (let i = 0; i < this.nVox3D; i++) { + v1[i] = -v1[i]; + } + } + if (isFlipY) { + for (let i = this.nVox3D; i < 2 * this.nVox3D; i++) { + v1[i] = -v1[i]; + } + } + if (isFlipZ) { + for (let i = 2 * this.nVox3D; i < 3 * this.nVox3D; i++) { + v1[i] = -v1[i]; + } + } + this.img = this.float32V1asRGBA(v1); + return true; + } + // not included in public docs + // detect difference between voxel grid and world space + calculateOblique() { + if (!this.matRAS) { + throw new Error("matRAS not defined"); + } + if (this.pixDimsRAS === void 0) { + throw new Error("pixDimsRAS not defined"); + } + if (!this.dimsRAS) { + throw new Error("dimsRAS not defined"); + } + this.oblique_angle = this.computeObliqueAngle(this.matRAS); + const LPI = this.vox2mm([0, 0, 0], this.matRAS); + const X1mm = this.vox2mm([1 / this.pixDimsRAS[1], 0, 0], this.matRAS); + const Y1mm = this.vox2mm([0, 1 / this.pixDimsRAS[2], 0], this.matRAS); + const Z1mm = this.vox2mm([0, 0, 1 / this.pixDimsRAS[3]], this.matRAS); + vec3_exports.subtract(X1mm, X1mm, LPI); + vec3_exports.subtract(Y1mm, Y1mm, LPI); + vec3_exports.subtract(Z1mm, Z1mm, LPI); + const oblique = mat4_exports.fromValues( + X1mm[0], + X1mm[1], + X1mm[2], + 0, + Y1mm[0], + Y1mm[1], + Y1mm[2], + 0, + Z1mm[0], + Z1mm[1], + Z1mm[2], + 0, + 0, + 0, + 0, + 1 + ); + this.obliqueRAS = mat4_exports.clone(oblique); + const XY = Math.abs(90 - vec3_exports.angle(X1mm, Y1mm) * (180 / Math.PI)); + const XZ = Math.abs(90 - vec3_exports.angle(X1mm, Z1mm) * (180 / Math.PI)); + const YZ = Math.abs(90 - vec3_exports.angle(Y1mm, Z1mm) * (180 / Math.PI)); + this.maxShearDeg = Math.max(Math.max(XY, XZ), YZ); + if (this.maxShearDeg > 0.1) { + log.warn("Warning: voxels are rhomboidal, maximum shear is %f degrees.", this.maxShearDeg); + } + const dim = vec4_exports.fromValues(this.dimsRAS[1], this.dimsRAS[2], this.dimsRAS[3], 1); + const sform = mat4_exports.clone(this.matRAS); + mat4_exports.transpose(sform, sform); + const shim = vec4_exports.fromValues(-0.5, -0.5, -0.5, 0); + mat4_exports.translate(sform, sform, vec3_exports.fromValues(shim[0], shim[1], shim[2])); + sform[0] *= dim[0]; + sform[1] *= dim[0]; + sform[2] *= dim[0]; + sform[4] *= dim[1]; + sform[5] *= dim[1]; + sform[6] *= dim[1]; + sform[8] *= dim[2]; + sform[9] *= dim[2]; + sform[10] *= dim[2]; + this.frac2mm = mat4_exports.clone(sform); + const pixdimX = this.pixDimsRAS[1]; + const pixdimY = this.pixDimsRAS[2]; + const pixdimZ = this.pixDimsRAS[3]; + const oform = mat4_exports.clone(sform); + oform[0] = pixdimX * dim[0]; + oform[1] = 0; + oform[2] = 0; + oform[4] = 0; + oform[5] = pixdimY * dim[1]; + oform[6] = 0; + oform[8] = 0; + oform[9] = 0; + oform[10] = pixdimZ * dim[2]; + const originVoxel = this.mm2vox([0, 0, 0], true); + oform[12] = (-originVoxel[0] - 0.5) * pixdimX; + oform[13] = (-originVoxel[1] - 0.5) * pixdimY; + oform[14] = (-originVoxel[2] - 0.5) * pixdimZ; + this.frac2mmOrtho = mat4_exports.clone(oform); + this.extentsMinOrtho = [oform[12], oform[13], oform[14]]; + this.extentsMaxOrtho = [oform[0] + oform[12], oform[5] + oform[13], oform[10] + oform[14]]; + this.mm2ortho = mat4_exports.create(); + mat4_exports.invert(this.mm2ortho, oblique); + } + // not included in public docs + // convert AFNI head/brik space to NIfTI format + // https://github.com/afni/afni/blob/d6997e71f2b625ac1199460576d48f3136dac62c/src/thd_niftiwrite.c#L315 + THD_daxes_to_NIFTI(xyzDelta, xyzOrigin, orientSpecific) { + const hdr = this.hdr; + if (hdr === null) { + throw new Error("HDR is not set"); + } + hdr.sform_code = 2; + const ORIENT_xyz = "xxyyzzg"; + let nif_x_axnum = -1; + let nif_y_axnum = -1; + let nif_z_axnum = -1; + const axcode = ["x", "y", "z"]; + axcode[0] = ORIENT_xyz[orientSpecific[0]]; + axcode[1] = ORIENT_xyz[orientSpecific[1]]; + axcode[2] = ORIENT_xyz[orientSpecific[2]]; + const axstep = xyzDelta.slice(0, 3); + const axstart = xyzOrigin.slice(0, 3); + for (let ii = 0; ii < 3; ii++) { + if (axcode[ii] === "x") { + nif_x_axnum = ii; + } else if (axcode[ii] === "y") { + nif_y_axnum = ii; + } else { + nif_z_axnum = ii; + } + } + if (nif_x_axnum < 0 || nif_y_axnum < 0 || nif_z_axnum < 0) { + return; + } + if (nif_x_axnum === nif_y_axnum || nif_x_axnum === nif_z_axnum || nif_y_axnum === nif_z_axnum) { + return; + } + hdr.pixDims[1] = Math.abs(axstep[0]); + hdr.pixDims[2] = Math.abs(axstep[1]); + hdr.pixDims[3] = Math.abs(axstep[2]); + hdr.affine = [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [0, 0, 0, 1] + ]; + hdr.affine[0][nif_x_axnum] = -axstep[nif_x_axnum]; + hdr.affine[1][nif_y_axnum] = -axstep[nif_y_axnum]; + hdr.affine[2][nif_z_axnum] = axstep[nif_z_axnum]; + hdr.affine[0][3] = -axstart[nif_x_axnum]; + hdr.affine[1][3] = -axstart[nif_y_axnum]; + hdr.affine[2][3] = axstart[nif_z_axnum]; + } + // not included in public docs + // determine spacing voxel centers (rows, columns, slices) + SetPixDimFromSForm() { + if (!this.hdr) { + throw new Error("hdr not defined"); + } + const m = this.hdr.affine; + const mat = mat4_exports.fromValues( + m[0][0], + m[0][1], + m[0][2], + m[0][3], + m[1][0], + m[1][1], + m[1][2], + m[1][3], + m[2][0], + m[2][1], + m[2][2], + m[2][3], + m[3][0], + m[3][1], + m[3][2], + m[3][3] + ); + const mm000 = this.vox2mm([0, 0, 0], mat); + const mm100 = this.vox2mm([1, 0, 0], mat); + vec3_exports.subtract(mm100, mm100, mm000); + const mm010 = this.vox2mm([0, 1, 0], mat); + vec3_exports.subtract(mm010, mm010, mm000); + const mm001 = this.vox2mm([0, 0, 1], mat); + vec3_exports.subtract(mm001, mm001, mm000); + this.hdr.pixDims[1] = vec3_exports.length(mm100); + this.hdr.pixDims[2] = vec3_exports.length(mm010); + this.hdr.pixDims[3] = vec3_exports.length(mm001); + } + // not included in public docs + // read DICOM format image and treat it like a NIfTI + // ----------------- + // readDICOM(buf: ArrayBuffer | ArrayBuffer[]): ArrayBuffer { + // this.series = new daikon.Series() + // // parse DICOM file + // if (Array.isArray(buf)) { + // for (let i = 0; i < buf.length; i++) { + // const dataview = new DataView(buf[i]) + // const image = daikon.Series.parseImage(dataview) + // if (image === null) { + // log.error(daikon.Series.parserError) + // } else if (image.hasPixelData()) { + // // if it's part of the same series, add it + // if (this.series.images.length === 0 || image.getSeriesId() === this.series.images[0].getSeriesId()) { + // this.series.addImage(image) + // } + // } // if hasPixelData + // } // for i + // } else { + // // not a dicom folder drop + // const image = daikon.Series.parseImage(new DataView(buf)) + // if (image === null) { + // log.error(daikon.Series.parserError) + // } else if (image.hasPixelData()) { + // // if it's part of the same series, add it + // if (this.series.images.length === 0 || image.getSeriesId() === this.series.images[0].getSeriesId()) { + // this.series.addImage(image) + // } + // } + // } + // // order the image files, determines number of frames, etc. + // this.series.buildSeries() + // // output some header info + // this.hdr = new nifti.NIFTI1() + // const hdr = this.hdr + // hdr.scl_inter = 0 + // hdr.scl_slope = 1 + // if (this.series.images[0].getDataScaleIntercept()) { + // hdr.scl_inter = this.series.images[0].getDataScaleIntercept() + // } + // if (this.series.images[0].getDataScaleSlope()) { + // hdr.scl_slope = this.series.images[0].getDataScaleSlope() + // } + // hdr.dims = [3, 1, 1, 1, 0, 0, 0, 0] + // hdr.pixDims = [1, 1, 1, 1, 1, 0, 0, 0] + // hdr.dims[1] = this.series.images[0].getCols() + // hdr.dims[2] = this.series.images[0].getRows() + // hdr.dims[3] = this.series.images[0].getNumberOfFrames() + // if (this.series.images.length > 1) { + // if (hdr.dims[3] > 1) { + // log.debug('To Do: multiple slices per file and multiple files (XA30 DWI)') + // } + // hdr.dims[3] = this.series.images.length + // } + // const rc = this.series.images[0].getPixelSpacing() // TODO: order? + // hdr.pixDims[1] = rc[0] + // hdr.pixDims[2] = rc[1] + // if (this.series.images.length > 1) { + // // Multiple slices. The depth of a pixel is the physical distance between offsets. This is not the same as slice + // // spacing for tilted slices (skew). + // const p0 = vec3.fromValues(...(this.series.images[0].getImagePosition() as [number, number, number])) + // const p1 = vec3.fromValues(...(this.series.images[1].getImagePosition() as [number, number, number])) + // const n = vec3.fromValues(0, 0, 0) + // vec3.subtract(n, p0, p1) + // hdr.pixDims[3] = vec3.length(n) + // } else { + // // Single slice. Use the slice thickness as pixel depth. + // hdr.pixDims[3] = this.series.images[0].getSliceThickness() + // } + // hdr.pixDims[4] = this.series.images[0].getTR() / 1000.0 // msec -> sec + // const dt = this.series.images[0].getDataType() // 2=int,3=uint,4=float, + // const bpv = this.series.images[0].getBitsAllocated() + // hdr.numBitsPerVoxel = bpv + // this.hdr.littleEndian = this.series.images[0].littleEndian + // if (bpv === 8 && dt === 2) { + // hdr.datatypeCode = NiiDataType.DT_INT8 + // } else if (bpv === 8 && dt === 3) { + // hdr.datatypeCode = NiiDataType.DT_UINT8 + // } else if (bpv === 16 && dt === 2) { + // hdr.datatypeCode = NiiDataType.DT_INT16 + // } else if (bpv === 16 && dt === 3) { + // hdr.datatypeCode = NiiDataType.DT_UINT16 + // } else if (bpv === 32 && dt === 2) { + // hdr.datatypeCode = NiiDataType.DT_INT32 + // } else if (bpv === 32 && dt === 3) { + // hdr.datatypeCode = NiiDataType.DT_UINT32 + // } else if (bpv === 32 && dt === 4) { + // hdr.datatypeCode = NiiDataType.DT_FLOAT32 + // } else if (bpv === 64 && dt === 4) { + // hdr.datatypeCode = NiiDataType.DT_FLOAT64 + // } else if (bpv === 1) { + // hdr.datatypeCode = NiiDataType.DT_BINARY + // } else { + // log.warn('Unsupported DICOM format: ' + dt + ' ' + bpv) + // } + // const voxelDimensions = hdr.pixDims.slice(1, 4) + // const m = getBestTransform( + // this.series.images[0].getImageDirections(), + // voxelDimensions, + // this.series.images[0].getImagePosition() + // ) + // if (m) { + // hdr.sform_code = 1 + // hdr.affine = [ + // [m[0][0], m[0][1], m[0][2], m[0][3]], + // [m[1][0], m[1][1], m[1][2], m[1][3]], + // [m[2][0], m[2][1], m[2][2], m[2][3]], + // [0, 0, 0, 1] + // ] + // } + // let data + // let length = this.series.validatePixelDataLength(this.series.images[0]) + // const buffer = new Uint8Array(new ArrayBuffer(length * this.series.images.length)) + // // implementation copied from: + // // https://github.com/rii-mango/Daikon/blob/bbe08bad9758dfbdf31ca22fb79048c7bad85706/src/series.js#L496 + // for (let i = 0; i < this.series.images.length; i++) { + // if (this.series.isMosaic) { + // data = this.series.getMosaicData(this.series.images[i], this.series.images[i].getPixelDataBytes()) + // } else { + // data = this.series.images[i].getPixelDataBytes() + // } + // length = this.series.validatePixelDataLength(this.series.images[i]) + // this.series.images[i].clearPixelData() + // buffer.set(new Uint8Array(data, 0, length), length * i) + // } // for images.length + // return buffer.buffer + // } // readDICOM() + // ----------------------- + // not included in public docs + // read ECAT7 format image + // https://github.com/openneuropet/PET2BIDS/tree/28aae3fab22309047d36d867c624cd629c921ca6/ecat_validation/ecat_info + readECAT(buffer) { + this.hdr = new NIFTI1(); + const hdr = this.hdr; + hdr.dims = [3, 1, 1, 1, 0, 0, 0, 0]; + hdr.pixDims = [1, 1, 1, 1, 1, 0, 0, 0]; + const reader = new DataView(buffer); + const signature = reader.getInt32(0, false); + const filetype = reader.getInt16(50, false); + if (signature !== 1296127058 || filetype < 1 || filetype > 14) { + throw new Error("Not a valid ECAT file"); + } + let pos = 512; + let vols = 0; + const frame_duration = []; + let rawImg = new Float32Array(); + while (true) { + const hdr0 = reader.getInt32(pos, false); + const hdr3 = reader.getInt32(pos + 12, false); + if (hdr0 + hdr3 !== 31) { + break; + } + let lpos = pos + 20; + let r = 0; + let voloffset = 0; + while (r < 31) { + voloffset = reader.getInt32(lpos, false); + lpos += 16; + if (voloffset === 0) { + break; + } + r++; + let ipos = voloffset * 512; + const spos = ipos - 512; + const data_type = reader.getUint16(spos, false); + hdr.dims[1] = reader.getUint16(spos + 4, false); + hdr.dims[2] = reader.getUint16(spos + 6, false); + hdr.dims[3] = reader.getUint16(spos + 8, false); + const scale_factor = reader.getFloat32(spos + 26, false); + hdr.pixDims[1] = reader.getFloat32(spos + 34, false) * 10; + hdr.pixDims[2] = reader.getFloat32(spos + 38, false) * 10; + hdr.pixDims[3] = reader.getFloat32(spos + 42, false) * 10; + hdr.pixDims[4] = reader.getUint32(spos + 46, false) / 1e3; + frame_duration.push(hdr.pixDims[4]); + const nvox3D = hdr.dims[1] * hdr.dims[2] * hdr.dims[3]; + const newImg = new Float32Array(nvox3D); + if (data_type === 1) { + for (let i = 0; i < nvox3D; i++) { + newImg[i] = reader.getUint8(ipos) * scale_factor; + ipos++; + } + } else if (data_type === 6) { + for (let i = 0; i < nvox3D; i++) { + newImg[i] = reader.getUint16(ipos, false) * scale_factor; + ipos += 2; + } + } else if (data_type === 7) { + for (let i = 0; i < nvox3D; i++) { + newImg[i] = reader.getUint32(ipos, false) * scale_factor; + ipos += 4; + } + } else { + log.warn("Unknown ECAT data type " + data_type); + } + const prevImg = rawImg.slice(0); + rawImg = new Float32Array(prevImg.length + newImg.length); + rawImg.set(prevImg); + rawImg.set(newImg, prevImg.length); + vols++; + } + if (voloffset === 0) { + break; + } + pos += 512; + } + hdr.dims[4] = vols; + hdr.pixDims[4] = frame_duration[0]; + if (vols > 1) { + hdr.dims[0] = 4; + let isFDvaries = false; + for (let i = 0; i < vols; i++) { + if (frame_duration[i] !== frame_duration[0]) { + isFDvaries = true; + } + } + if (isFDvaries) { + log.warn("Frame durations vary"); + } + } + hdr.sform_code = 1; + hdr.affine = [ + [-hdr.pixDims[1], 0, 0, (hdr.dims[1] - 2) * 0.5 * hdr.pixDims[1]], + [0, -hdr.pixDims[2], 0, (hdr.dims[2] - 2) * 0.5 * hdr.pixDims[2]], + [0, 0, -hdr.pixDims[3], (hdr.dims[3] - 2) * 0.5 * hdr.pixDims[3]], + [0, 0, 0, 1] + ]; + hdr.numBitsPerVoxel = 32; + hdr.datatypeCode = 16 /* DT_FLOAT32 */; + return rawImg.buffer; + } + // readECAT() + readV16(buffer) { + this.hdr = new NIFTI1(); + const hdr = this.hdr; + hdr.dims = [3, 1, 1, 1, 0, 0, 0, 0]; + hdr.pixDims = [1, 1, 1, 1, 1, 0, 0, 0]; + const reader = new DataView(buffer); + hdr.dims[1] = reader.getUint16(0, true); + hdr.dims[2] = reader.getUint16(2, true); + hdr.dims[3] = reader.getUint16(4, true); + const nBytes = 2 * hdr.dims[1] * hdr.dims[2] * hdr.dims[3]; + if (nBytes + 6 !== buffer.byteLength) { + log.warn("This does not look like a valid BrainVoyager V16 file"); + } + hdr.numBitsPerVoxel = 16; + hdr.datatypeCode = 512 /* DT_UINT16 */; + log.warn("Warning: V16 files have no spatial transforms"); + hdr.affine = [ + [0, 0, -hdr.pixDims[1], (hdr.dims[1] - 2) * 0.5 * hdr.pixDims[1]], + [-hdr.pixDims[2], 0, 0, (hdr.dims[2] - 2) * 0.5 * hdr.pixDims[2]], + [0, -hdr.pixDims[3], 0, (hdr.dims[3] - 2) * 0.5 * hdr.pixDims[3]], + [0, 0, 0, 1] + ]; + hdr.littleEndian = true; + return buffer.slice(6); + } + // readV16() + async readNPY(buffer) { + function getTypeSize(dtype2) { + const typeMap = { + "|b1": 1, + // Boolean + " byte === expectedMagic[i])) { + throw new Error("Not a valid NPY file: Magic number mismatch"); + } + const headerLen = dv.getUint16(8, true); + const headerText = new TextDecoder("utf-8").decode(buffer.slice(10, 10 + headerLen)); + const shapeMatch = headerText.match(/'shape': \((.*?)\)/); + if (!shapeMatch) { + throw new Error("Invalid NPY header: Shape not found"); + } + const shape = shapeMatch[1].split(",").map((s) => s.trim()).filter((s) => s !== "").map(Number); + const dtypeMatch = headerText.match(/'descr': '([^']+)'/); + if (!dtypeMatch) { + throw new Error("Invalid NPY header: Data type not found"); + } + const dtype = dtypeMatch[1]; + const numElements = shape.reduce((a, b) => a * b, 1); + const dataStart = 10 + headerLen; + const dataBuffer = buffer.slice(dataStart, dataStart + numElements * getTypeSize(dtype)); + const width = shape.length > 0 ? shape[shape.length - 1] : 1; + const height = shape.length > 1 ? shape[shape.length - 2] : 1; + const slices = shape.length > 2 ? shape[shape.length - 3] : 1; + this.hdr = new NIFTI1(); + const hdr = this.hdr; + hdr.dims = [3, width, height, slices, 0, 0, 0, 0]; + hdr.pixDims = [1, 1, 1, 1, 1, 0, 0, 0]; + hdr.affine = [ + [hdr.pixDims[1], 0, 0, -(hdr.dims[1] - 2) * 0.5 * hdr.pixDims[1]], + [0, -hdr.pixDims[2], 0, (hdr.dims[2] - 2) * 0.5 * hdr.pixDims[2]], + [0, 0, -hdr.pixDims[3], (hdr.dims[3] - 2) * 0.5 * hdr.pixDims[3]], + [0, 0, 0, 1] + ]; + hdr.numBitsPerVoxel = getTypeSize(dtype) * 8; + hdr.datatypeCode = getDataTypeCode(dtype); + return dataBuffer; + } + async readNPZ(buffer) { + const zip = new Zip(buffer); + for (let i = 0; i < zip.entries.length; i++) { + const entry = zip.entries[i]; + if (entry.fileName.toLowerCase().endsWith(".npy")) { + const data = await entry.extract(); + return await this.readNPY(data.buffer); + } + } + } + async imageDataFromArrayBuffer(buffer) { + return new Promise((resolve2, reject) => { + const blob = new Blob([buffer]); + const url = URL.createObjectURL(blob); + const img = new Image(); + img.crossOrigin = "Anonymous"; + img.src = url; + img.onload = () => { + URL.revokeObjectURL(url); + const canvas = document.createElement("canvas"); + canvas.width = img.width; + canvas.height = img.height; + const ctx = canvas.getContext("2d"); + if (!ctx) { + reject(new Error("Failed to get 2D context")); + return; + } + ctx.drawImage(img, 0, 0); + resolve2(ctx.getImageData(0, 0, img.width, img.height)); + }; + img.onerror = (err2) => { + URL.revokeObjectURL(url); + reject(err2); + }; + }); + } + async readBMP(buffer) { + const imageData = await this.imageDataFromArrayBuffer(buffer); + const { width, height, data } = imageData; + this.hdr = new NIFTI1(); + const hdr = this.hdr; + hdr.dims = [3, width, height, 1, 0, 0, 0, 0]; + hdr.pixDims = [1, 1, 1, 1, 1, 0, 0, 0]; + hdr.affine = [ + [hdr.pixDims[1], 0, 0, -(hdr.dims[1] - 2) * 0.5 * hdr.pixDims[1]], + [0, -hdr.pixDims[2], 0, (hdr.dims[2] - 2) * 0.5 * hdr.pixDims[2]], + [0, 0, -hdr.pixDims[3], (hdr.dims[3] - 2) * 0.5 * hdr.pixDims[3]], + [0, 0, 0, 1] + ]; + hdr.numBitsPerVoxel = 8; + hdr.datatypeCode = 2304 /* DT_RGBA32 */; + let isGrayscale = true; + for (let i = 0; i < data.length; i += 4) { + if (data[i] !== data[i + 1] || data[i] !== data[i + 2]) { + isGrayscale = false; + break; + } + } + if (isGrayscale) { + hdr.datatypeCode = 2 /* DT_UINT8 */; + const grayscaleData = new Uint8Array(width * height); + for (let i = 0, j = 0; i < data.length; i += 4, j++) { + grayscaleData[j] = data[i]; + } + return grayscaleData.buffer; + } + return data.buffer; + } + async readZARR(buffer, zarrData) { + let { width, height, depth = 1, data } = zarrData ?? {}; + let expectedLength = width * height * depth * 3; + let isRGB = expectedLength === data.length; + if (!isRGB) { + expectedLength = width * height * depth; + if (depth === 3) { + isRGB = true; + depth = 1; + } + } + if (expectedLength !== data.length) { + throw new Error(`Expected RGB ${width}\xD7${height}\xD7${depth}\xD73 = ${expectedLength}, but ZARR length ${data.length}`); + } + this.hdr = new NIFTI1(); + const hdr = this.hdr; + hdr.dims = [3, width, height, depth, 1, 1, 1, 1]; + hdr.pixDims = [1, 1, 1, 1, 0, 0, 0, 0]; + hdr.affine = [ + [hdr.pixDims[1], 0, 0, -(hdr.dims[1] - 2) * 0.5 * hdr.pixDims[1]], + [0, -hdr.pixDims[2], 0, (hdr.dims[2] - 2) * 0.5 * hdr.pixDims[2]], + [0, 0, -hdr.pixDims[3], (hdr.dims[3] - 2) * 0.5 * hdr.pixDims[3]], + [0, 0, 0, 1] + ]; + if (!isRGB) { + hdr.numBitsPerVoxel = 8; + hdr.datatypeCode = 2 /* DT_UINT8 */; + if (data instanceof Uint8Array) { + const retBuffer2 = new ArrayBuffer(data.length); + const retView2 = new Uint8Array(retBuffer2); + retView2.set(data); + return retBuffer2; + } + return data; + } + hdr.numBitsPerVoxel = 24; + hdr.datatypeCode = 128 /* DT_RGB24 */; + function zxy2xyz(data2, X, Y, Z) { + const voxelCount = X * Y; + const rgb = new Uint8Array(voxelCount * Z * 3); + const offsets = new Array(Z); + for (let s = 0; s < Z; s++) { + offsets[s] = voxelCount * 3 * s; + } + let srcIndex = 0; + let dstIndex = 0; + for (let v = 0; v < voxelCount; v++) { + for (let s = 0; s < Z; s++) { + rgb[offsets[s] + dstIndex] = data2[srcIndex++]; + rgb[offsets[s] + dstIndex + 1] = data2[srcIndex++]; + rgb[offsets[s] + dstIndex + 2] = data2[srcIndex++]; + } + dstIndex += 3; + } + return rgb; + } + const retData = zxy2xyz(data, hdr.dims[1], hdr.dims[2], hdr.dims[3]); + const retBuffer = new ArrayBuffer(retData.length); + const retView = new Uint8Array(retBuffer); + retView.set(retData); + return retBuffer; + } + // not included in public docs + // read brainvoyager format VMR image + // https://support.brainvoyager.com/brainvoyager/automation-development/84-file-formats/343-developer-guide-2-6-the-format-of-vmr-files + readVMR(buffer) { + this.hdr = new NIFTI1(); + const hdr = this.hdr; + hdr.dims = [3, 1, 1, 1, 0, 0, 0, 0]; + hdr.pixDims = [1, 1, 1, 1, 1, 0, 0, 0]; + const reader = new DataView(buffer); + const version2 = reader.getUint16(0, true); + if (version2 !== 4) { + log.warn("Not a valid version 4 VMR image"); + } + hdr.dims[1] = reader.getUint16(2, true); + hdr.dims[2] = reader.getUint16(4, true); + hdr.dims[3] = reader.getUint16(6, true); + const nBytes = hdr.dims[1] * hdr.dims[2] * hdr.dims[3]; + if (version2 >= 4) { + let pos = 8 + nBytes; + const nSpatialTransforms = reader.getUint32(pos + 88, true); + pos = pos + 92; + if (nSpatialTransforms > 0) { + const len4 = buffer.byteLength; + for (let i = 0; i < nSpatialTransforms; i++) { + while (pos < len4 && reader.getUint8(pos) !== 0) { + pos++; + } + pos++; + pos += 4; + while (pos < len4 && reader.getUint8(pos) !== 0) { + pos++; + } + pos++; + const nValues = reader.getUint32(pos, true); + pos += 4; + for (let j = 0; j < nValues; j++) { + pos += 4; + } + } + } + hdr.pixDims[1] = reader.getFloat32(pos + 2, true); + hdr.pixDims[2] = reader.getFloat32(pos + 6, true); + hdr.pixDims[3] = reader.getFloat32(pos + 10, true); + } + log.warn("Warning: VMR spatial transform not implemented"); + hdr.affine = [ + [0, 0, -hdr.pixDims[1], (hdr.dims[1] - 2) * 0.5 * hdr.pixDims[1]], + [-hdr.pixDims[2], 0, 0, (hdr.dims[2] - 2) * 0.5 * hdr.pixDims[2]], + [0, -hdr.pixDims[3], 0, (hdr.dims[3] - 2) * 0.5 * hdr.pixDims[3]], + [0, 0, 0, 1] + ]; + log.debug(hdr); + hdr.numBitsPerVoxel = 8; + hdr.datatypeCode = 2 /* DT_UINT8 */; + return buffer.slice(8, 8 + nBytes); + } + // readVMR() + // not included in public docs + // read DSI-Studio FIB format image + // https://dsi-studio.labsolver.org/doc/cli_data.html + // eslint-disable-next-line @typescript-eslint/no-unused-vars + async readFIB(buffer) { + this.hdr = new NIFTI1(); + const hdr = this.hdr; + hdr.littleEndian = false; + hdr.dims = [3, 1, 1, 1, 0, 0, 0, 0]; + hdr.pixDims = [1, 1, 1, 1, 1, 0, 0, 0]; + const mat = await NVUtilities.readMatV4(buffer, true); + if (!("dimension" in mat) || !("dti_fa" in mat)) { + throw new Error("Not a valid DSIstudio FIB file"); + } + const hasV1 = "index0" in mat && "index1" in mat && "index2" in mat && "odf_vertices" in mat; + hdr.numBitsPerVoxel = 32; + hdr.datatypeCode = 16 /* DT_FLOAT32 */; + hdr.dims[1] = mat.dimension[0]; + hdr.dims[2] = mat.dimension[1]; + hdr.dims[3] = mat.dimension[2]; + hdr.dims[4] = 1; + hdr.pixDims[1] = mat.voxel_size[0]; + hdr.pixDims[2] = mat.voxel_size[1]; + hdr.pixDims[3] = mat.voxel_size[2]; + hdr.sform_code = 1; + const xmm = (hdr.dims[1] - 1) * 0.5 * hdr.pixDims[1]; + const ymm = (hdr.dims[2] - 1) * 0.5 * hdr.pixDims[2]; + const zmm = (hdr.dims[3] - 1) * 0.5 * hdr.pixDims[3]; + hdr.affine = [ + [hdr.pixDims[1], 0, 0, -xmm], + [0, -hdr.pixDims[2], 0, ymm], + [0, 0, hdr.pixDims[2], -zmm], + [0, 0, 0, 1] + ]; + hdr.littleEndian = true; + const nVox3D = hdr.dims[1] * hdr.dims[2] * hdr.dims[3]; + const nBytes3D = nVox3D * Math.ceil(hdr.numBitsPerVoxel / 8); + const nBytes = nBytes3D * hdr.dims[4]; + const buff8v1 = new Uint8Array(new ArrayBuffer(nVox3D * 4 * 3)); + if (hasV1) { + const nvox = hdr.dims[1] * hdr.dims[2] * hdr.dims[3]; + const dir0 = new Float32Array(nvox); + const dir1 = new Float32Array(nvox); + const dir2 = new Float32Array(nvox); + const idxs = mat.index0; + const dirs = mat.odf_vertices; + for (let i = 0; i < nvox; i++) { + const idx = idxs[i] * 3; + dir0[i] = dirs[idx + 0]; + dir1[i] = dirs[idx + 1]; + dir2[i] = -dirs[idx + 2]; + } + buff8v1.set(new Uint8Array(dir0.buffer, dir0.byteOffset, dir0.byteLength), 0 * nBytes3D); + buff8v1.set(new Uint8Array(dir1.buffer, dir1.byteOffset, dir1.byteLength), 1 * nBytes3D); + buff8v1.set(new Uint8Array(dir2.buffer, dir2.byteOffset, dir2.byteLength), 2 * nBytes3D); + } + if ("report" in mat) { + hdr.description = new TextDecoder().decode(mat.report.subarray(0, Math.min(79, mat.report.byteLength))); + } + const buff8 = new Uint8Array(new ArrayBuffer(nBytes)); + const arrFA = Float32Array.from(mat.dti_fa); + if ("mask" in mat) { + let slope = 1; + if ("dti_fa_slope" in mat) { + slope = mat.dti_fa_slope[0]; + } + let inter = 1; + if ("dti_fa_inter" in mat) { + inter = mat.dti_fa_inter[0]; + } + const nvox = hdr.dims[1] * hdr.dims[2] * hdr.dims[3]; + const mask = mat.mask; + const f32 = new Float32Array(nvox); + let j = 0; + for (let i = 0; i < nvox; i++) { + if (mask[i] !== 0) { + f32[i] = arrFA[j] * slope + inter; + j++; + } + } + return [f32.buffer, new Float32Array(buff8v1.buffer)]; + } + const imgFA = new Uint8Array(arrFA.buffer, arrFA.byteOffset, arrFA.byteLength); + buff8.set(imgFA, 0); + return [buff8.buffer, new Float32Array(buff8v1.buffer)]; + } + // readFIB() + // not included in public docs + // read DSI-Studio SRC format image + // https://dsi-studio.labsolver.org/doc/cli_data.html + // eslint-disable-next-line @typescript-eslint/no-unused-vars + async readSRC(buffer) { + this.hdr = new NIFTI1(); + const hdr = this.hdr; + hdr.littleEndian = false; + hdr.dims = [3, 1, 1, 1, 0, 0, 0, 0]; + hdr.pixDims = [1, 1, 1, 1, 1, 0, 0, 0]; + const mat = await NVUtilities.readMatV4(buffer); + if (!("dimension" in mat) || !("image0" in mat)) { + throw new Error("Not a valid DSIstudio SRC file"); + } + let n = 0; + let len4 = 0; + for (const [key, value] of Object.entries(mat)) { + if (!key.startsWith("image")) { + continue; + } + if (n === 0) { + len4 = value.length; + } else if (len4 !== value.length) { + len4 = -1; + } + if (value.constructor !== Uint16Array) { + throw new Error("DSIstudio SRC files always use Uint16 datatype"); + } + n++; + } + if (len4 < 1 || n < 1) { + throw new Error("SRC file not valid DSI Studio data. The image(s) should have the same length"); + } + hdr.numBitsPerVoxel = 16; + hdr.datatypeCode = 512 /* DT_UINT16 */; + hdr.dims[1] = mat.dimension[0]; + hdr.dims[2] = mat.dimension[1]; + hdr.dims[3] = mat.dimension[2]; + hdr.dims[4] = n; + if (hdr.dims[4] > 1) { + hdr.dims[0] = 4; + } + hdr.pixDims[1] = mat.voxel_size[0]; + hdr.pixDims[2] = mat.voxel_size[1]; + hdr.pixDims[3] = mat.voxel_size[2]; + hdr.sform_code = 1; + const xmm = (hdr.dims[1] - 1) * 0.5 * hdr.pixDims[1]; + const ymm = (hdr.dims[2] - 1) * 0.5 * hdr.pixDims[2]; + const zmm = (hdr.dims[3] - 1) * 0.5 * hdr.pixDims[3]; + hdr.affine = [ + [hdr.pixDims[1], 0, 0, -xmm], + [0, -hdr.pixDims[2], 0, ymm], + [0, 0, hdr.pixDims[2], -zmm], + [0, 0, 0, 1] + ]; + hdr.littleEndian = true; + const nBytes3D = hdr.dims[1] * hdr.dims[2] * hdr.dims[3] * (hdr.numBitsPerVoxel / 8); + const nBytes = nBytes3D * hdr.dims[4]; + const buff8 = new Uint8Array(new ArrayBuffer(nBytes)); + let offset = 0; + for (let i = 0; i < n; i++) { + const arr = mat[`image${i}`]; + const img8 = new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength); + buff8.set(img8, offset); + offset += nBytes3D; + } + if ("report" in mat) { + hdr.description = new TextDecoder().decode(mat.report.subarray(0, Math.min(79, mat.report.byteLength))); + } + return buff8.buffer; + } + // readSRC() + // not included in public docs + // read AFNI head/brik format image + async readHEAD(dataBuffer, pairedImgData) { + this.hdr = new NIFTI1(); + const hdr = this.hdr; + hdr.dims[0] = 3; + hdr.pixDims = [1, 1, 1, 1, 1, 0, 0, 0]; + let orientSpecific = [0, 0, 0]; + let xyzOrigin = [0, 0, 0]; + let xyzDelta = [1, 1, 1]; + const txt = new TextDecoder().decode(dataBuffer); + const lines = txt.split(/\r?\n/); + const mod = (dataBuffer.byteLength + 8) % 16; + const len4 = dataBuffer.byteLength + (16 - mod); + log.debug(dataBuffer.byteLength, "len", len4); + const extBuffer = new ArrayBuffer(len4); + new Uint8Array(extBuffer).set(new Uint8Array(dataBuffer)); + const newExtension = new NIFTIEXTENSION(len4 + 8, 42, extBuffer, true); + hdr.addExtension(newExtension); + hdr.extensionCode = 42; + hdr.extensionFlag[0] = 1; + hdr.extensionSize = len4 + 8; + const nlines = lines.length; + let i = 0; + let hasIJK_TO_DICOM_REAL = false; + while (i < nlines) { + let line = lines[i]; + i++; + if (!line.startsWith("type")) { + continue; + } + const isInt = line.includes("integer-attribute"); + const isFloat = line.includes("float-attribute"); + line = lines[i]; + i++; + if (!line.startsWith("name")) { + continue; + } + let items = line.split("= "); + const key = items[1]; + line = lines[i]; + i++; + items = line.split("= "); + let count = parseInt(items[1]); + if (count < 1) { + continue; + } + line = lines[i]; + i++; + items = line.trim().split(/\s+/); + if (isFloat || isInt) { + while (items.length < count) { + line = lines[i]; + i++; + const items2 = line.trim().split(/\s+/); + items.push(...items2); + } + for (let j = 0; j < count; j++) { + items[j] = parseFloat(items[j]); + } + } + switch (key) { + case "BYTEORDER_STRING": + if (items[0].includes("LSB_FIRST")) { + hdr.littleEndian = true; + } else if (items[0].includes("MSB_FIRST")) { + hdr.littleEndian = false; + } + break; + case "BRICK_TYPES": + { + hdr.dims[4] = count; + const datatype = parseInt(items[0]); + if (datatype === 0) { + hdr.numBitsPerVoxel = 8; + hdr.datatypeCode = 2 /* DT_UINT8 */; + } else if (datatype === 1) { + hdr.numBitsPerVoxel = 16; + hdr.datatypeCode = 4 /* DT_INT16 */; + } else if (datatype === 3) { + hdr.numBitsPerVoxel = 32; + hdr.datatypeCode = 16 /* DT_FLOAT32 */; + } else { + log.warn("Unknown BRICK_TYPES ", datatype); + } + } + break; + case "IJK_TO_DICOM_REAL": + if (count < 12) { + break; + } + hasIJK_TO_DICOM_REAL = true; + hdr.sform_code = 2; + hdr.affine = [ + [-items[0], -items[1], -items[2], -items[3]], + [-items[4], -items[5], -items[6], -items[7]], + // TODO don't reuse items for numeric values + [items[8], items[9], items[10], items[11]], + [0, 0, 0, 1] + ]; + break; + case "DATASET_DIMENSIONS": + count = Math.max(count, 3); + for (let j = 0; j < count; j++) { + hdr.dims[j + 1] = items[j]; + } + break; + case "ORIENT_SPECIFIC": + orientSpecific = items; + break; + case "ORIGIN": + xyzOrigin = items; + break; + case "DELTA": + xyzDelta = items; + break; + case "TAXIS_FLOATS": + hdr.pixDims[4] = items[0]; + break; + default: + log.warn("Unknown:", key); + } + } + if (!hasIJK_TO_DICOM_REAL) { + this.THD_daxes_to_NIFTI(xyzDelta, xyzOrigin, orientSpecific); + } else { + this.SetPixDimFromSForm(); + } + const nBytes = hdr.numBitsPerVoxel / 8 * hdr.dims[1] * hdr.dims[2] * hdr.dims[3] * hdr.dims[4]; + if (!pairedImgData) { + throw new Error("pairedImgData not set"); + } + if (pairedImgData.byteLength < nBytes) { + return await NVUtilities.decompressToBuffer(new Uint8Array(pairedImgData)); + } + return pairedImgData.slice(0); + } + // not included in public docs + // read ITK MHA format image + // https://itk.org/Wiki/ITK/MetaIO/Documentation#Reading_a_Brick-of-Bytes_.28an_N-Dimensional_volume_in_a_single_file.29 + async readMHA(buffer, pairedImgData) { + const len4 = buffer.byteLength; + if (len4 < 20) { + throw new Error("File too small to be VTK: bytes = " + buffer.byteLength); + } + const bytes = new Uint8Array(buffer); + let pos = 0; + function eol(c) { + return c === 10 || c === 13; + } + function readStr() { + while (pos < len4 && eol(bytes[pos])) { + pos++; + } + const startPos = pos; + while (pos < len4 && !eol(bytes[pos])) { + pos++; + } + if (pos - startPos < 2) { + return ""; + } + return new TextDecoder().decode(buffer.slice(startPos, pos)); + } + let line = readStr(); + this.hdr = new NIFTI1(); + const hdr = this.hdr; + hdr.pixDims = [1, 1, 1, 1, 1, 0, 0, 0]; + hdr.dims = [1, 1, 1, 1, 1, 1, 1, 1]; + hdr.littleEndian = true; + let isGz = false; + let isDetached = false; + const mat33 = mat3_exports.fromValues(NaN, 0, 0, 0, 1, 0, 0, 0, 1); + const offset = vec3_exports.fromValues(0, 0, 0); + while (line !== "") { + let items = line.split(" "); + if (items.length > 2) { + items = items.slice(2); + } + if (line.startsWith("BinaryDataByteOrderMSB") && items[0].includes("False")) { + hdr.littleEndian = true; + } + if (line.startsWith("BinaryDataByteOrderMSB") && items[0].includes("True")) { + hdr.littleEndian = false; + } + if (line.startsWith("CompressedData") && items[0].includes("True")) { + isGz = true; + } + if (line.startsWith("TransformMatrix")) { + for (let d = 0; d < 9; d++) { + mat33[d] = parseFloat(items[d]); + } + } + if (line.startsWith("Offset")) { + for (let d = 0; d < Math.min(items.length, 3); d++) { + offset[d] = parseFloat(items[d]); + } + } + if (line.startsWith("ElementSpacing")) { + for (let d = 0; d < items.length; d++) { + hdr.pixDims[d + 1] = parseFloat(items[d]); + } + } + if (line.startsWith("DimSize")) { + hdr.dims[0] = items.length; + for (let d = 0; d < items.length; d++) { + hdr.dims[d + 1] = parseInt(items[d]); + } + } + if (line.startsWith("ElementType")) { + switch (items[0]) { + case "MET_UCHAR": + hdr.numBitsPerVoxel = 8; + hdr.datatypeCode = 2 /* DT_UINT8 */; + break; + case "MET_CHAR": + hdr.numBitsPerVoxel = 8; + hdr.datatypeCode = 256 /* DT_INT8 */; + break; + case "MET_SHORT": + hdr.numBitsPerVoxel = 16; + hdr.datatypeCode = 4 /* DT_INT16 */; + break; + case "MET_USHORT": + hdr.numBitsPerVoxel = 16; + hdr.datatypeCode = 512 /* DT_UINT16 */; + break; + case "MET_INT": + hdr.numBitsPerVoxel = 32; + hdr.datatypeCode = 8 /* DT_INT32 */; + break; + case "MET_UINT": + hdr.numBitsPerVoxel = 32; + hdr.datatypeCode = 768 /* DT_UINT32 */; + break; + case "MET_FLOAT": + hdr.numBitsPerVoxel = 32; + hdr.datatypeCode = 16 /* DT_FLOAT32 */; + break; + case "MET_DOUBLE": + hdr.numBitsPerVoxel = 64; + hdr.datatypeCode = 64 /* DT_FLOAT64 */; + break; + default: + throw new Error("Unsupported MHA data type: " + items[0]); + } + } + if (line.startsWith("ObjectType") && !items[0].includes("Image")) { + log.warn("Only able to read ObjectType = Image, not " + line); + } + if (line.startsWith("ElementDataFile")) { + if (items[0] !== "LOCAL") { + isDetached = true; + } + break; + } + line = readStr(); + } + const mmMat = mat3_exports.fromValues(hdr.pixDims[1], 0, 0, 0, hdr.pixDims[2], 0, 0, 0, hdr.pixDims[3]); + mat3_exports.multiply(mat33, mat33, mmMat); + hdr.affine = [ + [-mat33[0], -mat33[3], -mat33[6], -offset[0]], + [-mat33[1], -mat33[4], -mat33[7], -offset[1]], + [mat33[2], mat33[5], mat33[8], offset[2]], + [0, 0, 0, 1] + ]; + while (bytes[pos] === 10) { + pos++; + } + hdr.vox_offset = pos; + if (isDetached && pairedImgData) { + if (isGz) { + return await NVUtilities.decompressToBuffer(new Uint8Array(pairedImgData.slice(0))); + } + return pairedImgData.slice(0); + } + if (isGz) { + return await NVUtilities.decompressToBuffer(new Uint8Array(buffer.slice(hdr.vox_offset))); + } + return buffer.slice(hdr.vox_offset); + } + // readMHA() + // not included in public docs + // read mrtrix MIF format image + // https://mrtrix.readthedocs.io/en/latest/getting_started/image_data.html#mrtrix-image-formats + async readMIF(buffer, pairedImgData) { + this.hdr = new NIFTI1(); + const hdr = this.hdr; + hdr.pixDims = [1, 1, 1, 1, 1, 0, 0, 0]; + hdr.dims = [1, 1, 1, 1, 1, 1, 1, 1]; + let len4 = buffer.byteLength; + if (len4 < 20) { + throw new Error("File too small to be MIF: bytes = " + len4); + } + let bytes = new Uint8Array(buffer); + if (bytes[0] === 31 && bytes[1] === 139) { + log.debug("MIF with GZ decompression"); + buffer = await NVUtilities.decompressToBuffer(new Uint8Array(buffer)); + len4 = buffer.byteLength; + bytes = new Uint8Array(buffer); + } + let pos = 0; + function readStr() { + while (pos < len4 && bytes[pos] === 10) { + pos++; + } + const startPos = pos; + while (pos < len4 && bytes[pos] !== 10) { + pos++; + } + pos++; + if (pos - startPos < 1) { + return ""; + } + return new TextDecoder().decode(buffer.slice(startPos, pos - 1)); + } + let line = readStr(); + if (!line.startsWith("mrtrix image")) { + throw new Error("Not a valid MIF file"); + } + const layout = []; + let isBit = false; + let nTransform = 0; + let TR = 0; + let isDetached = false; + line = readStr(); + while (pos < len4 && !line.startsWith("END")) { + let items = line.split(":"); + line = readStr(); + if (items.length < 2) { + break; + } + const tag = items[0]; + items = items[1].split(","); + for (let i = 0; i < items.length; i++) { + items[i] = items[i].trim(); + } + switch (tag) { + case "dim": + hdr.dims[0] = items.length; + for (let i = 0; i < items.length; i++) { + hdr.dims[i + 1] = parseInt(items[i]); + } + break; + case "vox": + for (let i = 0; i < items.length; i++) { + hdr.pixDims[i + 1] = parseFloat(items[i]); + if (isNaN(hdr.pixDims[i + 1])) { + hdr.pixDims[i + 1] = 0; + } + } + break; + case "layout": + for (let i = 0; i < items.length; i++) { + layout.push(parseInt(items[i])); + } + break; + case "datatype": + { + const dt = items[0]; + if (dt.startsWith("Bit")) { + isBit = true; + hdr.datatypeCode = 2 /* DT_UINT8 */; + } else if (dt.startsWith("Int8")) { + hdr.datatypeCode = 256 /* DT_INT8 */; + } else if (dt.startsWith("UInt8")) { + hdr.datatypeCode = 2 /* DT_UINT8 */; + } else if (dt.startsWith("Int16")) { + hdr.datatypeCode = 4 /* DT_INT16 */; + } else if (dt.startsWith("UInt16")) { + hdr.datatypeCode = 512 /* DT_UINT16 */; + } else if (dt.startsWith("Int32")) { + hdr.datatypeCode = 8 /* DT_INT32 */; + } else if (dt.startsWith("UInt32")) { + hdr.datatypeCode = 768 /* DT_UINT32 */; + } else if (dt.startsWith("Float32")) { + hdr.datatypeCode = 16 /* DT_FLOAT32 */; + } else if (dt.startsWith("Float64")) { + hdr.datatypeCode = 64 /* DT_FLOAT64 */; + } else { + log.warn("Unsupported datatype " + dt); + } + if (dt.includes("8")) { + hdr.numBitsPerVoxel = 8; + } else if (dt.includes("16")) { + hdr.numBitsPerVoxel = 16; + } else if (dt.includes("32")) { + hdr.numBitsPerVoxel = 32; + } else if (dt.includes("64")) { + hdr.numBitsPerVoxel = 64; + } + hdr.littleEndian = true; + if (dt.endsWith("LE")) { + hdr.littleEndian = true; + } + if (dt.endsWith("BE")) { + hdr.littleEndian = false; + } + } + break; + case "transform": + if (nTransform > 2 || items.length !== 4) { + break; + } + hdr.affine[nTransform][0] = parseFloat(items[0]); + hdr.affine[nTransform][1] = parseFloat(items[1]); + hdr.affine[nTransform][2] = parseFloat(items[2]); + hdr.affine[nTransform][3] = parseFloat(items[3]); + nTransform++; + break; + case "comments": + hdr.description = items[0].substring(0, Math.min(79, items[0].length)); + break; + /* case 'command_history': + if (items[0].startsWith('dwi2tensor')) { + isTensor = true + } + break */ + case "RepetitionTime": + TR = parseFloat(items[0]); + break; + case "file": + isDetached = !items[0].startsWith(". "); + if (!isDetached) { + items = items[0].split(" "); + hdr.vox_offset = parseInt(items[1]); + } + break; + } + } + const ndim = hdr.dims[0]; + if (ndim > 5) { + log.warn("reader only designed for a maximum of 5 dimensions (XYZTD)"); + } + let nvox = 1; + for (let i = 0; i < ndim; i++) { + nvox *= Math.max(hdr.dims[i + 1], 1); + } + for (let i = 0; i < 3; i++) { + for (let j2 = 0; j2 < 3; j2++) { + hdr.affine[i][j2] *= hdr.pixDims[j2 + 1]; + } + } + log.debug("mif affine:" + hdr.affine[0]); + if (TR > 0) { + hdr.pixDims[4] = TR; + } + if (isDetached && !pairedImgData) { + log.warn("MIH header provided without paired image data"); + } + let rawImg; + if (pairedImgData && isDetached) { + rawImg = pairedImgData.slice(0); + } else if (isBit) { + hdr.numBitsPerVoxel = 8; + const img8 = new Uint8Array(nvox); + const buffer1 = buffer.slice(hdr.vox_offset, hdr.vox_offset + Math.ceil(nvox / 8)); + const img1 = new Uint8Array(buffer1); + let j2 = 0; + for (let i = 0; i < nvox; i++) { + const bit = i % 8; + img8[i] = img1[j2] >> 7 - bit & 1; + if (bit === 7) { + j2++; + } + } + rawImg = img8.buffer; + } else { + rawImg = buffer.slice(hdr.vox_offset, hdr.vox_offset + nvox * (hdr.numBitsPerVoxel / 8)); + } + if (layout.length !== hdr.dims[0]) { + log.warn("dims does not match layout"); + } + let stride = 1; + const instride = [1, 1, 1, 1, 1]; + const inflip = [false, false, false, false, false]; + for (let i = 0; i < layout.length; i++) { + for (let j2 = 0; j2 < layout.length; j2++) { + const a = Math.abs(layout[j2]); + if (a !== i) { + continue; + } + instride[j2] = stride; + if (layout[j2] < 0 || Object.is(layout[j2], -0)) { + inflip[j2] = true; + } + stride *= hdr.dims[j2 + 1]; + } + } + let xlut = NVUtilities.range(0, hdr.dims[1] - 1, 1); + if (inflip[0]) { + xlut = NVUtilities.range(hdr.dims[1] - 1, 0, -1); + } + for (let i = 0; i < hdr.dims[1]; i++) { + xlut[i] *= instride[0]; + } + let ylut = NVUtilities.range(0, hdr.dims[2] - 1, 1); + if (inflip[1]) { + ylut = NVUtilities.range(hdr.dims[2] - 1, 0, -1); + } + for (let i = 0; i < hdr.dims[2]; i++) { + ylut[i] *= instride[1]; + } + let zlut = NVUtilities.range(0, hdr.dims[3] - 1, 1); + if (inflip[2]) { + zlut = NVUtilities.range(hdr.dims[3] - 1, 0, -1); + } + for (let i = 0; i < hdr.dims[3]; i++) { + zlut[i] *= instride[2]; + } + let tlut = NVUtilities.range(0, hdr.dims[4] - 1, 1); + if (inflip[3]) { + tlut = NVUtilities.range(hdr.dims[4] - 1, 0, -1); + } + for (let i = 0; i < hdr.dims[4]; i++) { + tlut[i] *= instride[3]; + } + let dlut = NVUtilities.range(0, hdr.dims[5] - 1, 1); + if (inflip[4]) { + dlut = NVUtilities.range(hdr.dims[5] - 1, 0, -1); + } + for (let i = 0; i < hdr.dims[5]; i++) { + dlut[i] *= instride[4]; + } + let j = 0; + let inVs; + let outVs; + switch (hdr.datatypeCode) { + case 256 /* DT_INT8 */: + inVs = new Int8Array(rawImg); + outVs = new Int8Array(nvox); + break; + case 2 /* DT_UINT8 */: + inVs = new Uint8Array(rawImg); + outVs = new Uint8Array(nvox); + break; + case 4 /* DT_INT16 */: + inVs = new Int16Array(rawImg); + outVs = new Int16Array(nvox); + break; + case 512 /* DT_UINT16 */: + inVs = new Uint16Array(rawImg); + outVs = new Uint16Array(nvox); + break; + case 8 /* DT_INT32 */: + inVs = new Int32Array(rawImg); + outVs = new Int32Array(nvox); + break; + case 768 /* DT_UINT32 */: + inVs = new Uint32Array(rawImg); + outVs = new Uint32Array(nvox); + break; + case 16 /* DT_FLOAT32 */: + inVs = new Float32Array(rawImg); + outVs = new Float32Array(nvox); + break; + case 64 /* DT_FLOAT64 */: + inVs = new Float64Array(rawImg); + outVs = new Float64Array(nvox); + break; + default: + throw new Error("unknown datatypeCode"); + } + for (let d = 0; d < hdr.dims[5]; d++) { + for (let t = 0; t < hdr.dims[4]; t++) { + for (let z = 0; z < hdr.dims[3]; z++) { + for (let y = 0; y < hdr.dims[2]; y++) { + for (let x = 0; x < hdr.dims[1]; x++) { + outVs[j] = inVs[xlut[x] + ylut[y] + zlut[z] + tlut[t] + dlut[d]]; + j++; + } + } + } + } + } + return outVs.buffer; + } + // readMIF() + // not included in public docs + // Transform to orient NIfTI image to Left->Right,Posterior->Anterior,Inferior->Superior (48 possible permutations) + calculateRAS() { + if (!this.hdr) { + throw new Error("hdr not set"); + } + const a = this.hdr.affine; + const header = this.hdr; + const absR = mat3_exports.fromValues( + Math.abs(a[0][0]), + Math.abs(a[0][1]), + Math.abs(a[0][2]), + Math.abs(a[1][0]), + Math.abs(a[1][1]), + Math.abs(a[1][2]), + Math.abs(a[2][0]), + Math.abs(a[2][1]), + Math.abs(a[2][2]) + ); + const ixyz = [1, 1, 1]; + if (absR[3] > absR[0]) { + ixyz[0] = 2; + } + if (absR[6] > absR[0] && absR[6] > absR[3]) { + ixyz[0] = 3; + } + ixyz[1] = 1; + if (ixyz[0] === 1) { + if (absR[4] > absR[7]) { + ixyz[1] = 2; + } else { + ixyz[1] = 3; + } + } else if (ixyz[0] === 2) { + if (absR[1] > absR[7]) { + ixyz[1] = 1; + } else { + ixyz[1] = 3; + } + } else { + if (absR[1] > absR[4]) { + ixyz[1] = 1; + } else { + ixyz[1] = 2; + } + } + ixyz[2] = 6 - ixyz[1] - ixyz[0]; + let perm = [1, 2, 3]; + perm[ixyz[0] - 1] = 1; + perm[ixyz[1] - 1] = 2; + perm[ixyz[2] - 1] = 3; + let rotM = mat4_exports.fromValues( + a[0][0], + a[0][1], + a[0][2], + a[0][3], + a[1][0], + a[1][1], + a[1][2], + a[1][3], + a[2][0], + a[2][1], + a[2][2], + a[2][3], + 0, + 0, + 0, + 1 + ); + this.mm000 = this.vox2mm([-0.5, -0.5, -0.5], rotM); + this.mm100 = this.vox2mm([header.dims[1] - 0.5, -0.5, -0.5], rotM); + this.mm010 = this.vox2mm([-0.5, header.dims[2] - 0.5, -0.5], rotM); + this.mm001 = this.vox2mm([-0.5, -0.5, header.dims[3] - 0.5], rotM); + const R = mat4_exports.create(); + mat4_exports.copy(R, rotM); + for (let i = 0; i < 3; i++) { + for (let j = 0; j < 3; j++) { + R[i * 4 + j] = rotM[i * 4 + perm[j] - 1]; + } + } + const flip = [0, 0, 0]; + if (R[0] < 0) { + flip[0] = 1; + } + if (R[5] < 0) { + flip[1] = 1; + } + if (R[10] < 0) { + flip[2] = 1; + } + this.dimsRAS = [header.dims[0], header.dims[perm[0]], header.dims[perm[1]], header.dims[perm[2]]]; + this.pixDimsRAS = [header.pixDims[0], header.pixDims[perm[0]], header.pixDims[perm[1]], header.pixDims[perm[2]]]; + this.permRAS = perm.slice(); + for (let i = 0; i < 3; i++) { + if (flip[i] === 1) { + this.permRAS[i] = -this.permRAS[i]; + } + } + if (this.arrayEquals(perm, [1, 2, 3]) && this.arrayEquals(flip, [0, 0, 0])) { + this.toRAS = mat4_exports.create(); + this.matRAS = mat4_exports.clone(rotM); + this.calculateOblique(); + this.img2RASstep = [1, this.dimsRAS[1], this.dimsRAS[1] * this.dimsRAS[2]]; + this.img2RASstart = [0, 0, 0]; + return; + } + mat4_exports.identity(rotM); + rotM[0 + 0 * 4] = 1 - flip[0] * 2; + rotM[1 + 1 * 4] = 1 - flip[1] * 2; + rotM[2 + 2 * 4] = 1 - flip[2] * 2; + rotM[3 + 0 * 4] = (header.dims[perm[0]] - 1) * flip[0]; + rotM[3 + 1 * 4] = (header.dims[perm[1]] - 1) * flip[1]; + rotM[3 + 2 * 4] = (header.dims[perm[2]] - 1) * flip[2]; + const residualR = mat4_exports.create(); + mat4_exports.invert(residualR, rotM); + mat4_exports.multiply(residualR, residualR, R); + this.matRAS = mat4_exports.clone(residualR); + rotM = mat4_exports.fromValues(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1); + rotM[perm[0] - 1 + 0 * 4] = -flip[0] * 2 + 1; + rotM[perm[1] - 1 + 1 * 4] = -flip[1] * 2 + 1; + rotM[perm[2] - 1 + 2 * 4] = -flip[2] * 2 + 1; + rotM[3 + 0 * 4] = flip[0]; + rotM[3 + 1 * 4] = flip[1]; + rotM[3 + 2 * 4] = flip[2]; + this.toRAS = mat4_exports.clone(rotM); + rotM[3] = 0; + rotM[7] = 0; + rotM[11] = 0; + rotM[12] = 0; + if (this.permRAS[0] === -1 || this.permRAS[1] === -1 || this.permRAS[2] === -1) { + rotM[12] = header.dims[1] - 1; + } + rotM[13] = 0; + if (this.permRAS[0] === -2 || this.permRAS[1] === -2 || this.permRAS[2] === -2) { + rotM[13] = header.dims[2] - 1; + } + rotM[14] = 0; + if (this.permRAS[0] === -3 || this.permRAS[1] === -3 || this.permRAS[2] === -3) { + rotM[14] = header.dims[3] - 1; + } + this.toRASvox = mat4_exports.clone(rotM); + log.debug(this.hdr.dims); + log.debug(this.dimsRAS); + const hdr = this.hdr; + perm = this.permRAS; + const aperm = [Math.abs(perm[0]), Math.abs(perm[1]), Math.abs(perm[2])]; + const outdim = [hdr.dims[aperm[0]], hdr.dims[aperm[1]], hdr.dims[aperm[2]]]; + const inStep = [1, hdr.dims[1], hdr.dims[1] * hdr.dims[2]]; + const outStep = [inStep[aperm[0] - 1], inStep[aperm[1] - 1], inStep[aperm[2] - 1]]; + const outStart = [0, 0, 0]; + for (let p = 0; p < 3; p++) { + if (perm[p] < 0) { + outStart[p] = outStep[p] * (outdim[p] - 1); + outStep[p] = -outStep[p]; + } + } + this.img2RASstep = outStep; + this.img2RASstart = outStart; + this.calculateOblique(); + } + // Reorient raw header data to RAS + // assume single volume, use nVolumes to specify, set nVolumes = 0 for same as input + async hdr2RAS(nVolumes = 1) { + if (!this.permRAS) { + throw new Error("permRAS undefined"); + } + if (!this.hdr) { + throw new Error("hdr undefined"); + } + const hdrBytes = hdrToArrayBuffer({ ...this.hdr, vox_offset: 352 }, false); + const hdr = await readHeaderAsync(hdrBytes.buffer, true); + if (nVolumes === 1) { + hdr.dims[0] = 3; + hdr.dims[4] = 1; + } else if (nVolumes > 1) { + hdr.dims[0] = 4; + hdr.dims[4] = nVolumes; + } + const perm = this.permRAS.slice(); + if (perm[0] === 1 && perm[1] === 2 && perm[2] === 3) { + return hdr; + } + hdr.qform_code = 0; + for (let i = 1; i < 4; i++) { + hdr.dims[i] = this.dimsRAS[i]; + } + for (let i = 0; i < this.pixDimsRAS.length; i++) { + hdr.pixDims[i] = this.pixDimsRAS[i]; + } + let k = 0; + for (let i = 0; i < 4; i++) { + for (let j = 0; j < 4; j++) { + hdr.affine[i][j] = this.matRAS[k]; + k++; + } + } + return hdr; + } + // Reorient raw image data to RAS + // note that GPU-based orient shader is much faster + // returns single 3D volume even for 4D input. Use nVolume to select volume (0 indexed) + img2RAS(nVolume = 0) { + if (!this.permRAS) { + throw new Error("permRAS undefined"); + } + if (!this.img) { + throw new Error("img undefined"); + } + if (!this.hdr) { + throw new Error("hdr undefined"); + } + const perm = this.permRAS.slice(); + if (perm[0] === 1 && perm[1] === 2 && perm[2] === 3) { + return this.img; + } + const hdr = this.hdr; + const nVox = hdr.dims[1] * hdr.dims[2] * hdr.dims[3]; + let volSkip = nVolume * nVox; + if (volSkip + nVox > this.img.length || volSkip < 0) { + volSkip = 0; + log.warn(`img2RAS nVolume (${nVolume}) out of bounds (${nVolume}+1)\xD7${nVox} > ${this.img.length}`); + } + const imgRAS = this.img.slice(0, nVox); + const aperm = [Math.abs(perm[0]), Math.abs(perm[1]), Math.abs(perm[2])]; + const outdim = [hdr.dims[aperm[0]], hdr.dims[aperm[1]], hdr.dims[aperm[2]]]; + const inStep = [1, hdr.dims[1], hdr.dims[1] * hdr.dims[2]]; + const outStep = [inStep[aperm[0] - 1], inStep[aperm[1] - 1], inStep[aperm[2] - 1]]; + const outStart = [0, 0, 0]; + for (let p = 0; p < 3; p++) { + if (perm[p] < 0) { + outStart[p] = outStep[p] * (outdim[p] - 1); + outStep[p] = -outStep[p]; + } + } + let j = 0; + for (let z = 0; z < outdim[2]; z++) { + const zi = outStart[2] + z * outStep[2]; + for (let y = 0; y < outdim[1]; y++) { + const yi = outStart[1] + y * outStep[1]; + for (let x = 0; x < outdim[0]; x++) { + const xi = outStart[0] + x * outStep[0]; + imgRAS[j] = this.img[xi + yi + zi + volSkip]; + j++; + } + } + } + return imgRAS; + } + // img2RAS() + // not included in public docs + // convert voxel location (row, column slice, indexed from 0) to world space + vox2mm(XYZ, mtx) { + const sform = mat4_exports.clone(mtx); + mat4_exports.transpose(sform, sform); + const pos = vec4_exports.fromValues(XYZ[0], XYZ[1], XYZ[2], 1); + vec4_exports.transformMat4(pos, pos, sform); + const pos3 = vec3_exports.fromValues(pos[0], pos[1], pos[2]); + return pos3; + } + // vox2mm() + // not included in public docs + // convert world space to voxel location (row, column slice, indexed from 0) + mm2vox(mm, frac = false) { + if (!this.matRAS) { + throw new Error("matRAS undefined"); + } + const sform = mat4_exports.clone(this.matRAS); + const out = mat4_exports.clone(sform); + mat4_exports.transpose(out, sform); + mat4_exports.invert(out, out); + const pos = vec4_exports.fromValues(mm[0], mm[1], mm[2], 1); + vec4_exports.transformMat4(pos, pos, out); + const pos3 = vec3_exports.fromValues(pos[0], pos[1], pos[2]); + if (frac) { + return pos3; + } + return [Math.round(pos3[0]), Math.round(pos3[1]), Math.round(pos3[2])]; + } + // vox2mm() + // not included in public docs + // returns boolean: are two arrays identical? + // TODO this won't work for complex objects. Maybe use array-equal from NPM + arrayEquals(a, b) { + return Array.isArray(a) && Array.isArray(b) && a.length === b.length && a.every((val, index) => val === b[index]); + } + // not included in public docs + // base function for niivue.setColormap() + // colormaps are continuously interpolated between 256 values (0..256) + setColormap(cm) { + this._colormap = cm; + this.calMinMax(); + if (this.onColormapChange) { + this.onColormapChange(this); + } + } + // not included in public docs + // base function for niivue.setColormap() + // label colormaps are discretely sampled from an arbitrary number of colors + setColormapLabel(cm) { + this.colormapLabel = cmapper.makeLabelLut(cm); + } + async setColormapLabelFromUrl(url) { + this.colormapLabel = await cmapper.makeLabelLutFromUrl(url); + } + get colormap() { + return this._colormap; + } + get colorMap() { + return this._colormap; + } + // TODO duplicate fields, see niivue/loadDocument + set colormap(cm) { + this.setColormap(cm); + } + set colorMap(cm) { + this.setColormap(cm); + } + get opacity() { + return this._opacity; + } + set opacity(opacity) { + this._opacity = opacity; + if (this.onOpacityChange) { + this.onOpacityChange(this); + } + } + /** + * set contrast/brightness to robust range (2%..98%) + * @param vol - volume for estimate (use -1 to use estimate on all loaded volumes; use INFINITY for current volume) + * @param isBorder - if true (default) only center of volume used for estimate + * @returns volume brightness and returns array [pct2, pct98, mnScale, mxScale] + * @see {@link https://niivue.com/demos/features/timeseries2.html | live demo usage} + */ + calMinMax(vol = Number.POSITIVE_INFINITY, isBorder = true) { + if (!this.hdr) { + throw new Error("hdr undefined"); + } + if (!this.img) { + throw new Error("img undefined"); + } + let mn = Number.POSITIVE_INFINITY; + let mx = Number.NEGATIVE_INFINITY; + let nZero = 0; + let nNan = 0; + let nVox3D = this.hdr.dims[1] * this.hdr.dims[2] * this.hdr.dims[3]; + const nVol = Math.floor(this.img.length / nVox3D); + if (vol >= nVol) { + vol = this.frame4D; + } + vol = Math.min(vol, nVol - 1); + const skipVox = vol * nVox3D; + let img = []; + if (!isBorder) { + img = new this.img.constructor(nVox3D); + for (let i = 0; i < nVox3D; i++) { + img[i] = this.img[i + skipVox]; + } + } else { + const borderFrac = 0.25; + const borders = [ + Math.floor(borderFrac * this.hdr.dims[1]), + Math.floor(borderFrac * this.hdr.dims[2]), + Math.floor(borderFrac * this.hdr.dims[3]) + ]; + const dims = [ + this.hdr.dims[1] - 2 * borders[0], + this.hdr.dims[2] - 2 * borders[1], + this.hdr.dims[3] - 2 * borders[2] + ]; + const bordersHi = [dims[0] + borders[0], dims[1] + borders[1], dims[2] + borders[2]]; + nVox3D = dims[0] * dims[1] * dims[2]; + img = new this.img.constructor(nVox3D); + let j = -1; + let i = 0; + for (let z = 0; z < this.hdr.dims[3]; z++) { + for (let y = 0; y < this.hdr.dims[2]; y++) { + for (let x = 0; x < this.hdr.dims[1]; x++) { + j++; + if (x < borders[0] || y < borders[1] || z < borders[2]) { + continue; + } + if (x >= bordersHi[0] || y >= bordersHi[1] || z >= bordersHi[2]) { + continue; + } + img[i] = this.img[j + skipVox]; + i++; + } + } + } + } + const isFastCalc = img.constructor !== Float64Array && img.constructor !== Float32Array && this.ignoreZeroVoxels; + if (isFastCalc) { + for (let i = 0; i < nVox3D; i++) { + mn = Math.min(img[i], mn); + mx = Math.max(img[i], mx); + if (img[i] === 0) { + nZero++; + } + } + } else { + for (let i = 0; i < nVox3D; i++) { + if (isNaN(img[i])) { + nNan++; + continue; + } + if (img[i] === 0) { + nZero++; + if (this.ignoreZeroVoxels) { + continue; + } + } + mn = Math.min(img[i], mn); + mx = Math.max(img[i], mx); + } + } + if (this.ignoreZeroVoxels && mn === mx && nZero > 0) { + mn = 0; + } + const mnScale = this.intensityRaw2Scaled(mn); + const mxScale = this.intensityRaw2Scaled(mx); + const cmap = cmapper.colormapFromKey(this._colormap); + let cmMin = 0; + let cmMax = 0; + if (cmap.min !== void 0) { + cmMin = cmap.min; + } + if (cmap.max !== void 0) { + cmMax = cmap.max; + } + if (cmMin === cmMax && this.trustCalMinMax && isFinite(this.hdr.cal_min) && isFinite(this.hdr.cal_max) && this.hdr.cal_max > this.hdr.cal_min) { + this.cal_min = this.hdr.cal_min; + this.cal_max = this.hdr.cal_max; + this.robust_min = this.cal_min; + this.robust_max = this.cal_max; + this.global_min = mnScale; + this.global_max = mxScale; + return [this.hdr.cal_min, this.hdr.cal_max, this.hdr.cal_min, this.hdr.cal_max]; + } + if (cmMin !== cmMax) { + this.cal_min = cmMin; + this.cal_max = cmMax; + this.robust_min = this.cal_min; + this.robust_max = this.cal_max; + return [cmMin, cmMax, cmMin, cmMax]; + } + const percentZero = 100 * nZero / (nVox3D - 0); + let isOverrideIgnoreZeroVoxels = false; + if (percentZero > 60 && !this.ignoreZeroVoxels) { + log.warn(`${Math.round(percentZero)}% of voxels are zero: ignoring zeros for cal_max`); + isOverrideIgnoreZeroVoxels = true; + this.ignoreZeroVoxels = true; + } + if (!this.ignoreZeroVoxels) { + nZero = 0; + } + nZero += nNan; + const n2pct = Math.round((nVox3D - 0 - nZero) * this.percentileFrac); + if (n2pct < 1 || mn === mx) { + if (isBorder) { + return this.calMinMax(vol, false); + } + log.debug("no variability in image intensity?"); + this.cal_min = mnScale; + this.cal_max = mxScale; + this.robust_min = this.cal_min; + this.robust_max = this.cal_max; + this.global_min = mnScale; + this.global_max = mxScale; + return [mnScale, mxScale, mnScale, mxScale]; + } + const nBins = 1001; + const scl = (nBins - 1) / (mx - mn); + const hist = new Array(nBins); + for (let i = 0; i < nBins; i++) { + hist[i] = 0; + } + if (isFastCalc) { + for (let i = 0; i < nVox3D; i++) { + hist[Math.round((img[i] - mn) * scl)]++; + } + } else if (this.ignoreZeroVoxels) { + for (let i = 0; i < nVox3D; i++) { + if (img[i] === 0) { + continue; + } + if (isNaN(img[i])) { + continue; + } + hist[Math.round((img[i] - mn) * scl)]++; + } + } else { + for (let i = 0; i < nVox3D; i++) { + if (isNaN(img[i])) { + continue; + } + hist[Math.round((img[i] - mn) * scl)]++; + } + } + let n = 0; + let lo = 0; + while (n < n2pct) { + n += hist[lo]; + lo++; + } + lo--; + n = 0; + let hi = nBins; + while (n < n2pct) { + hi--; + n += hist[hi]; + } + if (lo === hi) { + let ok = -1; + while (ok !== 0) { + if (lo > 0) { + lo--; + if (hist[lo] > 0) { + ok = 0; + } + } + if (ok !== 0 && hi < nBins - 1) { + hi++; + if (hist[hi] > 0) { + ok = 0; + } + } + if (lo === 0 && hi === nBins - 1) { + ok = 0; + } + } + } + let pct2 = this.intensityRaw2Scaled(lo / scl + mn); + let pct98 = this.intensityRaw2Scaled(hi / scl + mn); + if (this.hdr.cal_min < this.hdr.cal_max && this.hdr.cal_min >= mnScale && this.hdr.cal_max <= mxScale) { + pct2 = this.hdr.cal_min; + pct98 = this.hdr.cal_max; + } + if (isOverrideIgnoreZeroVoxels) { + pct2 = Math.min(pct2, 0); + } + this.cal_min = pct2; + this.cal_max = pct98; + if (this.hdr.intent_code === 1002 /* NIFTI_INTENT_LABEL */) { + this.cal_min = mnScale; + this.cal_max = mxScale; + } + this.robust_min = this.cal_min; + this.robust_max = this.cal_max; + this.global_min = mnScale; + this.global_max = mxScale; + return [pct2, pct98, mnScale, mxScale]; + } + // calMinMax + // not included in public docs + // convert voxel intensity from stored value to scaled intensity + intensityRaw2Scaled(raw) { + if (!this.hdr) { + throw new Error("hdr undefined"); + } + if (this.hdr.scl_slope === 0) { + this.hdr.scl_slope = 1; + } + return raw * this.hdr.scl_slope + this.hdr.scl_inter; + } + // convert voxel intensity from scaled intensity to stored value + intensityScaled2Raw(scaled) { + if (!this.hdr) { + throw new Error("hdr undefined"); + } + if (this.hdr.scl_slope === 0) { + this.hdr.scl_slope = 1; + } + return (scaled - this.hdr.scl_inter) / this.hdr.scl_slope; + } + /** + * Converts NVImage to NIfTI compliant byte array, potentially compressed. + * Delegates to ImageWriter.saveToUint8Array. + */ + async saveToUint8Array(fnm, drawing8 = null) { + return saveToUint8Array(this, fnm, drawing8); + } + /** + * save image as NIfTI volume and trigger download. + * Delegates to ImageWriter.saveToDisk. + */ + async saveToDisk(fnm = "", drawing8 = null) { + return saveToDisk(this, fnm, drawing8); + } + static async fetchDicomData(url, headers = {}) { + if (url === "") { + throw Error("url must not be empty"); + } + const absoluteUrlRE = /^(?:[a-z+]+:)?\/\//i; + let manifestUrl = absoluteUrlRE.test(url) ? url : new URL(url, window.location.href); + const extensionRE = /(?:.([^.]+))?$/; + const extension = extensionRE.exec(manifestUrl.pathname); + if (!extension) { + manifestUrl = new URL("niivue-manifest.txt", url); + } + let response = await fetch(manifestUrl, { headers }); + if (!response.ok) { + throw Error(response.statusText); + } + const text = await response.text(); + const lines = text.split("\n"); + const baseUrlRE = /(.*\/).*/; + const folderUrl = baseUrlRE.exec(manifestUrl)[0]; + const dataBuffer = []; + for (const line of lines) { + const fileUrl = new URL(line, folderUrl); + response = await fetch(fileUrl, { headers }); + if (!response.ok) { + throw Error(response.statusText); + } + const contents = await response.arrayBuffer(); + dataBuffer.push({ name: line, data: contents }); + } + return dataBuffer; + } + static async readFirstDecompressedBytes(stream, minBytes) { + const reader = stream.getReader(); + const gunzip = new Gunzip(); + const decompressedChunks = []; + let totalDecompressed = 0; + let doneReading = false; + let resolveFn; + let rejectFn; + const promise = new Promise((resolve2, reject) => { + resolveFn = resolve2; + rejectFn = reject; + return void 0; + }); + function finalize() { + const result = new Uint8Array(totalDecompressed); + let offset = 0; + for (const chunk of decompressedChunks) { + result.set(chunk, offset); + offset += chunk.length; + } + resolveFn(result); + } + gunzip.ondata = (chunk) => { + decompressedChunks.push(chunk); + totalDecompressed += chunk.length; + if (totalDecompressed >= minBytes) { + doneReading = true; + reader.cancel().catch(() => { + }); + finalize(); + } + }; + (async () => { + try { + while (!doneReading) { + const { done, value } = await reader.read(); + if (done) { + doneReading = true; + gunzip.push(new Uint8Array(), true); + return; + } + gunzip.push(value, false); + } + } catch (err2) { + rejectFn(err2); + } + })().catch(() => { + }); + return promise; + } + static extractFilenameFromUrl(url) { + const params = new URL(url).searchParams; + const contentDisposition = params.get("response-content-disposition"); + if (contentDisposition) { + const match = contentDisposition.match(/filename\*?=(?:UTF-8'')?"?([^";]+)"?/); + if (match) { + return decodeURIComponent(match[1]); + } + } + return url.split("/").pop().split("?")[0]; + } + static async loadInitialVolumesGz(url = "", headers = {}, limitFrames4D = NaN) { + if (isNaN(limitFrames4D)) { + return null; + } + const response = await fetch(url, { headers, cache: "force-cache" }); + let hdrBytes = 352; + let hdrU8s = await this.readFirstDecompressedBytes(response.body, hdrBytes); + const hdrView = new DataView(hdrU8s.buffer, hdrU8s.byteOffset, hdrU8s.byteLength); + const u162 = hdrView.getUint16(0, true); + const isNIfTI1 = u162 === 348; + const isNIfTI1be = u162 === 23553; + if (!isNIfTI1 && !isNIfTI1be) { + return null; + } + if (hdrU8s.length > 111) { + hdrBytes = hdrView.getFloat32(108, isNIfTI1); + } + if (hdrBytes > hdrU8s.length) { + hdrU8s = await this.readFirstDecompressedBytes(response.body, hdrBytes); + } + const isNifti1 = hdrU8s[0] === 92 && hdrU8s[1] === 1 || hdrU8s[1] === 92 && hdrU8s[0] === 1; + if (!isNifti1) { + return null; + } + const hdr = await readHeaderAsync(hdrU8s.buffer); + if (!hdr) { + throw new Error("Could not read NIfTI header"); + } + const nBytesPerVoxel = hdr.numBitsPerVoxel / 8; + const nVox3D = [1, 2, 3].reduce((acc, i) => acc * (hdr.dims[i] > 1 ? hdr.dims[i] : 1), 1); + const nFrame4D = [4, 5, 6].reduce((acc, i) => acc * (hdr.dims[i] > 1 ? hdr.dims[i] : 1), 1); + const volsToLoad = Math.max(Math.min(limitFrames4D, nFrame4D), 1); + const bytesToLoad = hdr.vox_offset + volsToLoad * nVox3D * nBytesPerVoxel; + if (volsToLoad === nFrame4D) { + return null; + } + const responseImg = await fetch(url, { headers, cache: "force-cache" }); + const dataBytes = await this.readFirstDecompressedBytes(responseImg.body, bytesToLoad); + return dataBytes.buffer.slice(0, bytesToLoad); + } + static async loadInitialVolumes(url = "", headers = {}, limitFrames4D = NaN) { + if (isNaN(limitFrames4D)) { + return null; + } + const response = await fetch(url, { headers, cache: "force-cache" }); + const reader = response.body.getReader(); + const { value, done } = await reader.read(); + let hdrU8s = value; + if (done || !hdrU8s || hdrU8s.length < 2) { + throw new Error("Not enough data to determine compression"); + } + const hdrView = new DataView(hdrU8s.buffer, hdrU8s.byteOffset, hdrU8s.byteLength); + const u162 = hdrView.getUint16(0, true); + const isGz = u162 === 35615; + if (isGz) { + await reader.cancel(); + return this.loadInitialVolumesGz(url, headers, limitFrames4D); + } + const isNIfTI1 = u162 === 348; + const isNIfTI1be = u162 === 23553; + if (!isNIfTI1 && !isNIfTI1be) { + await reader.cancel(); + return null; + } + let hdrBytes = 352; + if (hdrU8s.length > 111) { + hdrBytes = hdrView.getFloat32(108, isNIfTI1); + } + while (hdrU8s.length < hdrBytes) { + let concatU8s = function(arr1, arr2) { + const result = new Uint8Array(arr1.length + arr2.length); + result.set(arr1, 0); + result.set(arr2, arr1.length); + return result; + }; + const { value: value2, done: done2 } = await reader.read(); + if (done2 || !value2) { + break; + } + hdrU8s = concatU8s(hdrU8s, value2); + } + const hdr = await readHeaderAsync(hdrU8s.buffer); + if (!hdr) { + throw new Error("Could not read NIfTI header"); + } + const nBytesPerVoxel = hdr.numBitsPerVoxel / 8; + const nVox3D = [1, 2, 3].reduce((acc, i) => acc * (hdr.dims[i] > 1 ? hdr.dims[i] : 1), 1); + const nFrame4D = [4, 5, 6].reduce((acc, i) => acc * (hdr.dims[i] > 1 ? hdr.dims[i] : 1), 1); + const volsToLoad = Math.max(Math.min(limitFrames4D, nFrame4D), 1); + const bytesToLoad = hdr.vox_offset + volsToLoad * nVox3D * nBytesPerVoxel; + const imgU8s = new Uint8Array(bytesToLoad); + const hdrCopyLength = Math.min(hdrU8s.length, bytesToLoad); + imgU8s.set(hdrU8s.subarray(0, hdrCopyLength), 0); + let bytesRead = hdrCopyLength; + while (bytesRead < bytesToLoad) { + const { value: value2, done: done2 } = await reader.read(); + if (done2 || !value2) { + await reader.cancel(); + return null; + } + const remaining = Math.min(value2.length, bytesToLoad - bytesRead); + imgU8s.set(value2.subarray(0, remaining), bytesRead); + bytesRead += remaining; + } + await reader.cancel(); + return imgU8s.buffer; + } + /** + * factory function to load and return a new NVImage instance from a given URL + */ + static async loadFromUrl({ + url = "", + urlImgData = "", + headers = {}, + name = "", + colormap = "", + opacity = 1, + cal_min = NaN, + cal_max = NaN, + trustCalMinMax = true, + percentileFrac = 0.02, + ignoreZeroVoxels = false, + useQFormNotSForm = false, + colormapNegative = "", + frame4D = 0, + isManifest = false, + limitFrames4D = NaN, + imageType = NVIMAGE_TYPE.UNKNOWN, + colorbarVisible = true, + buffer = new ArrayBuffer(0) + } = {}) { + if (url === "") { + throw Error("url must not be empty"); + } + let nvimage = null; + let dataBuffer = null; + let zarrData = null; + if (url instanceof Uint8Array) { + url = url.slice().buffer; + } + if (buffer.byteLength > 0) { + url = buffer; + } + if (url instanceof ArrayBuffer) { + dataBuffer = url; + if (name !== "") { + url = name; + } else { + const bytes = new Uint8Array(dataBuffer); + url = bytes[0] === 31 && bytes[1] === 139 ? "array.nii.gz" : "array.nii"; + } + } + function getPrimaryExtension(filename) { + const match = filename.match(/\.([^.]+)(?:\.gz|\.bz2|\.xz)?$/); + return match ? match[1] : ""; + } + let ext = ""; + if (name === "") { + ext = getPrimaryExtension(url); + } else { + ext = getPrimaryExtension(name); + } + if (imageType === NVIMAGE_TYPE.UNKNOWN) { + imageType = NVIMAGE_TYPE.parse(ext); + } + if (imageType === NVIMAGE_TYPE.UNKNOWN && typeof url === "string") { + const response = await fetch(url, {}); + if (response.redirected) { + const rname = this.extractFilenameFromUrl(response.url); + if (rname && rname.length > 0) { + if (name === "") { + name = rname; + ext = getPrimaryExtension(name); + imageType = NVIMAGE_TYPE.parse(ext); + } + } + } + } + if (imageType === NVIMAGE_TYPE.ZARR) { + const urlParams = new URL(url).searchParams; + const zIndex = urlParams.get("z"); + const yIndex = urlParams.get("y"); + const xIndex = urlParams.get("x"); + const zRange = zIndex ? slice(parseInt(zIndex), parseInt(zIndex) + 1) : null; + const yRange = yIndex ? slice(parseInt(yIndex), parseInt(yIndex) + 1) : null; + const xRange = xIndex ? slice(parseInt(xIndex), parseInt(xIndex) + 1) : null; + const zarrUrl = url.split("?")[0]; + const store = new fetch_default(zarrUrl); + const root2 = root(store); + let arr; + try { + arr = await open(root2.resolve(url), { kind: "array" }); + } catch (e) { + arr = await open(root2, { kind: "array" }); + } + let view; + if (arr.shape.length === 4) { + const cRange = null; + const zDim2 = arr.shape[2]; + const yDim = arr.shape[1]; + const xDim = arr.shape[0]; + if (zRange && zRange[0] >= zDim2) { + zRange[0] = zDim2 - 1; + } + if (yRange && yRange[0] >= yDim) { + yRange[0] = yDim - 1; + } + if (xRange && xRange[0] >= xDim) { + xRange[0] = xDim - 1; + } + view = await get2(arr, [xRange, yRange, zRange, cRange]); + } else { + view = await get2(arr, [xRange, yRange, zRange]); + } + dataBuffer = view.data; + const [height, width, zDim, cDim] = view.shape; + zarrData = { + data: dataBuffer, + width, + height, + depth: zDim, + channels: cDim + }; + } + const isTestNIfTI = imageType === NVIMAGE_TYPE.DCM || NVIMAGE_TYPE.NII; + if (!dataBuffer && isTestNIfTI) { + dataBuffer = await this.loadInitialVolumes(url, headers, limitFrames4D); + } + if (!dataBuffer) { + if (isManifest) { + dataBuffer = await _NVImage.fetchDicomData(url, headers); + imageType = NVIMAGE_TYPE.DCM_MANIFEST; + } else { + const response = await fetch(url, { headers }); + if (!response.ok) { + throw Error(response.statusText); + } + if (!response.body) { + throw new Error("No readable stream available"); + } + const stream = await uncompressStream(response.body); + const chunks = []; + const reader = stream.getReader(); + while (true) { + const { done, value } = await reader.read(); + if (done) { + break; + } + chunks.push(value); + } + const totalLength = chunks.reduce((sum, chunk) => sum + chunk.length, 0); + dataBuffer = new ArrayBuffer(totalLength); + const dataView = new Uint8Array(dataBuffer); + let offset = 0; + for (const chunk of chunks) { + dataView.set(chunk, offset); + offset += chunk.length; + } + } + } + if (ext.toUpperCase() === "HEAD") { + if (urlImgData === "") { + urlImgData = url.substring(0, url.lastIndexOf("HEAD")) + "BRIK"; + } + } + if (ext.toUpperCase() === "HDR") { + if (urlImgData === "") { + urlImgData = url.substring(0, url.lastIndexOf("HDR")) + "IMG"; + } + } + let pairedImgData = null; + if (urlImgData) { + try { + let response = await fetch(urlImgData, { headers }); + if (response.status === 404 && (urlImgData.includes("BRIK") || urlImgData.includes("IMG"))) { + response = await fetch(`${urlImgData}.gz`, { headers }); + } + if (response.ok && response.body) { + const stream = await uncompressStream(response.body); + const chunks = []; + const reader = stream.getReader(); + while (true) { + const { done, value } = await reader.read(); + if (done) { + break; + } + chunks.push(value); + } + const totalLength = chunks.reduce((sum, chunk) => sum + chunk.length, 0); + pairedImgData = new ArrayBuffer(totalLength); + const dataView = new Uint8Array(pairedImgData); + let offset = 0; + for (const chunk of chunks) { + dataView.set(chunk, offset); + offset += chunk.length; + } + } + } catch (error) { + console.error("Error loading paired image data:", error); + } + } + if (!dataBuffer) { + throw new Error("Unable to load buffer properly from volume"); + } + if (!name) { + let urlParts; + try { + urlParts = new URL(url).pathname.split("/"); + } catch (e) { + urlParts = url.split("/"); + } + name = urlParts.slice(-1)[0]; + if (name.indexOf("?") > -1) { + name = name.slice(0, name.indexOf("?")); + } + } + nvimage = await this.new( + dataBuffer, + name, + colormap, + opacity, + pairedImgData, + cal_min, + cal_max, + trustCalMinMax, + percentileFrac, + ignoreZeroVoxels, + useQFormNotSForm, + colormapNegative, + frame4D, + imageType, + NaN, + NaN, + true, + null, + 0, + zarrData + ); + nvimage.url = url; + nvimage.colorbarVisible = colorbarVisible; + return nvimage; + } + // not included in public docs + // loading Nifti files + static async readFileAsync(file, bytesToLoad = NaN) { + let stream = file.stream(); + if (!isNaN(bytesToLoad)) { + let bytesRead = 0; + const limiter = new TransformStream({ + transform(chunk, controller) { + if (bytesRead >= bytesToLoad) { + controller.terminate(); + return; + } + const remainingBytes = bytesToLoad - bytesRead; + if (chunk.length > remainingBytes) { + controller.enqueue(chunk.slice(0, remainingBytes)); + controller.terminate(); + } else { + controller.enqueue(chunk); + } + bytesRead += chunk.length; + } + }); + stream = stream.pipeThrough(limiter); + } + const uncompressedStream = await uncompressStream(stream); + const chunks = []; + const reader = uncompressedStream.getReader(); + while (true) { + const { done, value } = await reader.read(); + if (done) { + break; + } + chunks.push(value); + } + const totalLength = chunks.reduce((sum, chunk) => sum + chunk.length, 0); + const result = new ArrayBuffer(totalLength); + const resultView = new Uint8Array(result); + let offset = 0; + for (const chunk of chunks) { + resultView.set(chunk, offset); + offset += chunk.length; + } + return result; + } + /** + * factory function to load and return a new NVImage instance from a file in the browser + */ + static async loadFromFile({ + file, + // file can be an array of file objects or a single file object + name = "", + colormap = "", + opacity = 1, + urlImgData = null, + cal_min = NaN, + cal_max = NaN, + trustCalMinMax = true, + percentileFrac = 0.02, + ignoreZeroVoxels = false, + useQFormNotSForm = false, + colormapNegative = "", + frame4D = 0, + limitFrames4D = NaN, + imageType = NVIMAGE_TYPE.UNKNOWN + }) { + let nvimage = null; + let dataBuffer = []; + try { + if (Array.isArray(file)) { + dataBuffer = await Promise.all(file.map((f) => this.readFileAsync(f))); + } else { + if (!isNaN(limitFrames4D)) { + const headerBuffer = await this.readFileAsync(file, 512); + const headerView = new Uint8Array(headerBuffer); + const isNifti1 = headerView[0] === 92 && headerView[1] === 1 || headerView[1] === 92 && headerView[0] === 1; + if (!isNifti1) { + dataBuffer = await this.readFileAsync(file); + } else { + const hdr = await readHeaderAsync(headerBuffer); + if (!hdr) { + throw new Error("could not read nifti header"); + } + const nBytesPerVoxel = hdr.numBitsPerVoxel / 8; + const nVox3D = [1, 2, 3].reduce((acc, i) => acc * (hdr.dims[i] > 1 ? hdr.dims[i] : 1), 1); + const nFrame4D = [4, 5, 6].reduce((acc, i) => acc * (hdr.dims[i] > 1 ? hdr.dims[i] : 1), 1); + const volsToLoad = Math.max(Math.min(limitFrames4D, nFrame4D), 1); + const bytesToLoad = hdr.vox_offset + volsToLoad * nVox3D * nBytesPerVoxel; + dataBuffer = await this.readFileAsync(file, bytesToLoad); + } + } else { + dataBuffer = await this.readFileAsync(file); + } + name = file.name; + } + let pairedImgData = null; + if (urlImgData) { + pairedImgData = await this.readFileAsync(urlImgData); + } + nvimage = await this.new( + dataBuffer, + name, + colormap, + opacity, + pairedImgData, + cal_min, + cal_max, + trustCalMinMax, + percentileFrac, + ignoreZeroVoxels, + useQFormNotSForm, + colormapNegative, + frame4D, + imageType, + NaN, + NaN, + true, + null, + 0, + null + ); + nvimage.fileObject = file; + } catch (err2) { + log.error(err2); + throw new Error("could not build NVImage"); + } + if (nvimage === null) { + throw new Error("could not build NVImage"); + } + return nvimage; + } + /** + * Creates a Uint8Array representing a NIFTI file (header + optional image data). + * Delegates to ImageWriter.createNiftiArray. + */ + static createNiftiArray(dims = [256, 256, 256], pixDims = [1, 1, 1], affine = [1, 0, 0, -128, 0, 1, 0, -128, 0, 0, 1, -128, 0, 0, 0, 1], datatypeCode = 2 /* DT_UINT8 */, img = new Uint8Array()) { + return createNiftiArray(dims, pixDims, affine, datatypeCode, img); + } + /** + * Creates a NIFTI1 header object with basic properties. + * Delegates to ImageWriter.createNiftiHeader. + */ + static createNiftiHeader(dims = [256, 256, 256], pixDims = [1, 1, 1], affine = [1, 0, 0, -128, 0, 1, 0, -128, 0, 0, 1, -128, 0, 0, 0, 1], datatypeCode = 2 /* DT_UINT8 */) { + return createNiftiHeader(dims, pixDims, affine, datatypeCode); + } + /** + * read a 3D slab of voxels from a volume + * @see {@link https://niivue.com/demos/features/slab_selection.html | live demo usage} + */ + /** + * read a 3D slab of voxels from a volume, specified in RAS coordinates. + * Delegates to VolumeUtils.getVolumeData. + */ + getVolumeData(voxStart = [-1, 0, 0], voxEnd = [0, 0, 0], dataType = "same") { + return getVolumeData(this, voxStart, voxEnd, dataType); + } + /** + * write a 3D slab of voxels from a volume + * @see {@link https://niivue.com/demos/features/slab_selection.html | live demo usage} + */ + /** + * write a 3D slab of voxels from a volume, specified in RAS coordinates. + * Delegates to VolumeUtils.setVolumeData. + * Input slabData is assumed to be in the correct raw data type for the target image. + */ + setVolumeData(voxStart = [-1, 0, 0], voxEnd = [0, 0, 0], img = new Uint8Array()) { + setVolumeData(this, voxStart, voxEnd, img); + } + /** + * factory function to load and return a new NVImage instance from a base64 encoded string + * @example + * myImage = NVImage.loadFromBase64('SomeBase64String') + */ + static async loadFromBase64({ + base64, + name = "", + colormap = "", + opacity = 1, + cal_min = NaN, + cal_max = NaN, + trustCalMinMax = true, + percentileFrac = 0.02, + ignoreZeroVoxels = false, + useQFormNotSForm = false, + colormapNegative = "", + frame4D = 0, + imageType = NVIMAGE_TYPE.UNKNOWN, + cal_minNeg = NaN, + cal_maxNeg = NaN, + colorbarVisible = true, + colormapLabel = null + }) { + function base64ToArrayBuffer(base642) { + const binary_string = window.atob(base642); + const len4 = binary_string.length; + const bytes = new Uint8Array(len4); + for (let i = 0; i < len4; i++) { + bytes[i] = binary_string.charCodeAt(i); + } + return bytes.buffer; + } + let nvimage = null; + try { + const dataBuffer = base64ToArrayBuffer(base64); + const pairedImgData = null; + nvimage = await this.new( + dataBuffer, + name, + colormap, + opacity, + pairedImgData, + cal_min, + cal_max, + trustCalMinMax, + percentileFrac, + ignoreZeroVoxels, + useQFormNotSForm, + colormapNegative, + frame4D, + imageType, + cal_minNeg, + cal_maxNeg, + colorbarVisible, + colormapLabel, + 0, + null + ); + } catch (err2) { + log.debug(err2); + } + if (nvimage === null) { + throw new Error("could not load NVImage"); + } + return nvimage; + } + /** + * make a clone of a NVImage instance and return a new NVImage + * @example + * myImage = NVImage.loadFromFile(SomeFileObject) // files can be from dialogs or drag and drop + * clonedImage = myImage.clone() + */ + clone() { + const clonedImage = new _NVImage(); + clonedImage.id = v4(); + clonedImage.hdr = Object.assign({}, this.hdr); + clonedImage.img = this.img.slice(); + clonedImage.calculateRAS(); + clonedImage.calMinMax(); + return clonedImage; + } + /** + * fill a NVImage instance with zeros for the image data + * @example + * myImage = NVImage.loadFromFile(SomeFileObject) // files can be from dialogs or drag and drop + * clonedImageWithZeros = myImage.clone().zeroImage() + */ + zeroImage() { + this.img.fill(0); + } + /** + * get nifti specific metadata about the image + */ + getImageMetadata() { + if (!this.hdr) { + throw new Error("hdr undefined"); + } + const id = this.id; + const datatypeCode = this.hdr.datatypeCode; + const dims = this.hdr.dims; + const nx = dims[1]; + const ny = dims[2]; + const nz = dims[3]; + const nt = Math.max(1, dims[4]); + const pixDims = this.hdr.pixDims; + const dx = pixDims[1]; + const dy = pixDims[2]; + const dz = pixDims[3]; + const dt = pixDims[4]; + const bpv = Math.floor(this.hdr.numBitsPerVoxel / 8); + return { id, datatypeCode, nx, ny, nz, nt, dx, dy, dz, dt, bpv }; + } + /** + * a factory function to make a zero filled image given a NVImage as a reference + * @example + * myImage = NVImage.loadFromFile(SomeFileObject) // files can be from dialogs or drag and drop + * newZeroImage = NVImage.zerosLike(myImage) + */ + static zerosLike(nvImage, dataType = "same") { + const zeroClone = nvImage.clone(); + zeroClone.zeroImage(); + if (dataType === "uint8") { + zeroClone.img = Uint8Array.from(zeroClone.img); + zeroClone.hdr.datatypeCode = 2 /* DT_UINT8 */; + zeroClone.hdr.numBitsPerVoxel = 8; + } + if (dataType === "float32") { + zeroClone.img = Float32Array.from(zeroClone.img); + zeroClone.hdr.datatypeCode = 16 /* DT_FLOAT32 */; + zeroClone.hdr.numBitsPerVoxel = 32; + } + return zeroClone; + } + /** + * Returns voxel intensity at specific native coordinates. + * Delegates to VolumeUtils.getValue. + */ + getValue(x, y, z, frame4D = 0, isReadImaginary = false) { + return getValue(this, x, y, z, frame4D, isReadImaginary); + } + /** + * Returns voxel intensities at specific native coordinates. + * Delegates to VolumeUtils.getValue. + */ + getValues(x, y, z, frame4D = 0, isReadImaginary = false) { + return getValues(this, x, y, z, frame4D, isReadImaginary); + } + /** + * Update options for image + */ + applyOptionsUpdate(options) { + this.hdr.cal_min = options.cal_min; + this.hdr.cal_max = options.cal_max; + Object.assign(this, options); + } + getImageOptions() { + const options = NVImageFromUrlOptions( + "", + // url, + "", + // urlImageData + this.name, + // name + this._colormap, + // colormap + this.opacity, + // opacity + this.hdr.cal_min, + // cal_min + this.hdr.cal_max, + // cal_max + this.trustCalMinMax, + // trustCalMinMax, + this.percentileFrac, + // percentileFrac + this.ignoreZeroVoxels, + // ignoreZeroVoxels + this.useQFormNotSForm, + // useQFormNotSForm + this.colormapNegative, + // colormapNegative + this.frame4D, + this.imageType, + // imageType + this.colormapType + ); + return options; + } + /** + * Converts NVImage to NIfTI compliant byte array. + * Handles potential re-orientation of drawing data. + * Delegates to ImageWriter.toUint8Array. + */ + toUint8Array(drawingBytes = null) { + return toUint8Array(this, drawingBytes); + } + // not included in public docs + convertVox2Frac(vox) { + const frac = vec3_exports.fromValues( + (vox[0] + 0.5) / this.dimsRAS[1], + (vox[1] + 0.5) / this.dimsRAS[2], + (vox[2] + 0.5) / this.dimsRAS[3] + ); + return frac; + } + // not included in public docs + convertFrac2Vox(frac) { + const vox = vec3_exports.fromValues( + Math.round(frac[0] * this.dims[1] - 0.5), + // dims === RAS + Math.round(frac[1] * this.dims[2] - 0.5), + // dims === RAS + Math.round(frac[2] * this.dims[3] - 0.5) + // dims === RAS + ); + return vox; + } + // not included in public docs + convertFrac2MM(frac, isForceSliceMM = false) { + const pos = vec4_exports.fromValues(frac[0], frac[1], frac[2], 1); + if (isForceSliceMM) { + vec4_exports.transformMat4(pos, pos, this.frac2mm); + } else { + vec4_exports.transformMat4(pos, pos, this.frac2mmOrtho); + } + return pos; + } + // not included in public docs + convertMM2Frac(mm, isForceSliceMM = false) { + const mm4 = vec4_exports.fromValues(mm[0], mm[1], mm[2], 1); + const d = this.dimsRAS; + const frac = vec3_exports.fromValues(0, 0, 0); + if (typeof d === "undefined") { + return frac; + } + if (!isForceSliceMM) { + const xform = mat4_exports.clone(this.frac2mmOrtho); + mat4_exports.invert(xform, xform); + vec4_exports.transformMat4(mm4, mm4, xform); + frac[0] = mm4[0]; + frac[1] = mm4[1]; + frac[2] = mm4[2]; + return frac; + } + if (d[1] < 1 || d[2] < 1 || d[3] < 1) { + return frac; + } + const sform = mat4_exports.clone(this.matRAS); + mat4_exports.invert(sform, sform); + mat4_exports.transpose(sform, sform); + vec4_exports.transformMat4(mm4, mm4, sform); + frac[0] = (mm4[0] + 0.5) / d[1]; + frac[1] = (mm4[1] + 0.5) / d[2]; + frac[2] = (mm4[2] + 0.5) / d[3]; + return frac; + } +}; + +// src/nvdocument.ts +var SLICE_TYPE = /* @__PURE__ */ ((SLICE_TYPE2) => { + SLICE_TYPE2[SLICE_TYPE2["AXIAL"] = 0] = "AXIAL"; + SLICE_TYPE2[SLICE_TYPE2["CORONAL"] = 1] = "CORONAL"; + SLICE_TYPE2[SLICE_TYPE2["SAGITTAL"] = 2] = "SAGITTAL"; + SLICE_TYPE2[SLICE_TYPE2["MULTIPLANAR"] = 3] = "MULTIPLANAR"; + SLICE_TYPE2[SLICE_TYPE2["RENDER"] = 4] = "RENDER"; + return SLICE_TYPE2; +})(SLICE_TYPE || {}); +var PEN_TYPE = /* @__PURE__ */ ((PEN_TYPE2) => { + PEN_TYPE2[PEN_TYPE2["PEN"] = 0] = "PEN"; + PEN_TYPE2[PEN_TYPE2["RECTANGLE"] = 1] = "RECTANGLE"; + PEN_TYPE2[PEN_TYPE2["ELLIPSE"] = 2] = "ELLIPSE"; + return PEN_TYPE2; +})(PEN_TYPE || {}); +var SHOW_RENDER = /* @__PURE__ */ ((SHOW_RENDER2) => { + SHOW_RENDER2[SHOW_RENDER2["NEVER"] = 0] = "NEVER"; + SHOW_RENDER2[SHOW_RENDER2["ALWAYS"] = 1] = "ALWAYS"; + SHOW_RENDER2[SHOW_RENDER2["AUTO"] = 2] = "AUTO"; + return SHOW_RENDER2; +})(SHOW_RENDER || {}); +var MULTIPLANAR_TYPE = /* @__PURE__ */ ((MULTIPLANAR_TYPE2) => { + MULTIPLANAR_TYPE2[MULTIPLANAR_TYPE2["AUTO"] = 0] = "AUTO"; + MULTIPLANAR_TYPE2[MULTIPLANAR_TYPE2["COLUMN"] = 1] = "COLUMN"; + MULTIPLANAR_TYPE2[MULTIPLANAR_TYPE2["GRID"] = 2] = "GRID"; + MULTIPLANAR_TYPE2[MULTIPLANAR_TYPE2["ROW"] = 3] = "ROW"; + return MULTIPLANAR_TYPE2; +})(MULTIPLANAR_TYPE || {}); +var DRAG_MODE = /* @__PURE__ */ ((DRAG_MODE2) => { + DRAG_MODE2[DRAG_MODE2["none"] = 0] = "none"; + DRAG_MODE2[DRAG_MODE2["contrast"] = 1] = "contrast"; + DRAG_MODE2[DRAG_MODE2["measurement"] = 2] = "measurement"; + DRAG_MODE2[DRAG_MODE2["pan"] = 3] = "pan"; + DRAG_MODE2[DRAG_MODE2["slicer3D"] = 4] = "slicer3D"; + DRAG_MODE2[DRAG_MODE2["callbackOnly"] = 5] = "callbackOnly"; + DRAG_MODE2[DRAG_MODE2["roiSelection"] = 6] = "roiSelection"; + DRAG_MODE2[DRAG_MODE2["angle"] = 7] = "angle"; + DRAG_MODE2[DRAG_MODE2["crosshair"] = 8] = "crosshair"; + DRAG_MODE2[DRAG_MODE2["windowing"] = 9] = "windowing"; + return DRAG_MODE2; +})(DRAG_MODE || {}); +var COLORMAP_TYPE = /* @__PURE__ */ ((COLORMAP_TYPE2) => { + COLORMAP_TYPE2[COLORMAP_TYPE2["MIN_TO_MAX"] = 0] = "MIN_TO_MAX"; + COLORMAP_TYPE2[COLORMAP_TYPE2["ZERO_TO_MAX_TRANSPARENT_BELOW_MIN"] = 1] = "ZERO_TO_MAX_TRANSPARENT_BELOW_MIN"; + COLORMAP_TYPE2[COLORMAP_TYPE2["ZERO_TO_MAX_TRANSLUCENT_BELOW_MIN"] = 2] = "ZERO_TO_MAX_TRANSLUCENT_BELOW_MIN"; + return COLORMAP_TYPE2; +})(COLORMAP_TYPE || {}); +var DEFAULT_OPTIONS = { + textHeight: -1, + fontSizeScaling: 0.4, + fontMinPx: 13, + colorbarHeight: 0.05, + colorbarWidth: -1, + // automatic (full width) + showColorbarBorder: true, + // show border around the colorbar + crosshairWidth: 1, + crosshairWidthUnit: "voxels", + crosshairGap: 0, + rulerWidth: 4, + show3Dcrosshair: false, + backColor: [0, 0, 0, 1], + crosshairColor: [1, 0, 0, 1], + fontColor: [0.5, 0.5, 0.5, 1], + selectionBoxColor: [1, 1, 1, 0.5], + clipPlaneColor: [0.7, 0, 0.7, 0.5], + isClipPlanesCutaway: false, + paqdUniforms: [0.3, 0.5, 0.5, 1], + // paqdUniforms: [0.3, 0.9, 1.0, 0.5], + rulerColor: [1, 0, 0, 0.8], + colorbarMargin: 0.05, + trustCalMinMax: true, + clipPlaneHotKey: "KeyC", + cycleClipPlaneHotKey: "KeyP", + viewModeHotKey: "KeyV", + doubleTouchTimeout: 500, + longTouchTimeout: 1e3, + keyDebounceTime: 50, + isNearestInterpolation: false, + isResizeCanvas: true, + atlasOutline: 0, + atlasActiveIndex: 0, + isRuler: false, + isColorbar: false, + isOrientCube: false, + tileMargin: 0, + multiplanarPadPixels: 0, + // @deprecated + multiplanarForceRender: false, + multiplanarEqualSize: false, + multiplanarShowRender: 2 /* AUTO */, + // auto is the same behaviour as multiplanarForceRender: false + isRadiologicalConvention: false, + meshThicknessOn2D: Infinity, + dragMode: 1 /* contrast */, + dragModePrimary: 8 /* crosshair */, + mouseEventConfig: void 0, + touchEventConfig: void 0, + yoke3Dto2DZoom: false, + isDepthPickMesh: false, + isCornerOrientationText: false, + isOrientationTextVisible: true, + showAllOrientationMarkers: false, + heroImageFraction: 0, + heroSliceType: 4 /* RENDER */, + sagittalNoseLeft: false, + isSliceMM: false, + isV1SliceShader: false, + forceDevicePixelRatio: 0, + logLevel: "info", + loadingText: "loading ...", + isForceMouseClickToVoxelCenters: false, + dragAndDropEnabled: true, + drawingEnabled: false, + penValue: 1, + penType: 0 /* PEN */, + floodFillNeighbors: 6, + isFilledPen: false, + thumbnail: "", + maxDrawUndoBitmaps: 8, + sliceType: 3 /* MULTIPLANAR */, + meshXRay: 0, + isAntiAlias: null, + limitFrames4D: NaN, + isAdditiveBlend: false, + showLegend: true, + legendBackgroundColor: [0.3, 0.3, 0.3, 0.5], + legendTextColor: [1, 1, 1, 1], + multiplanarLayout: 0 /* AUTO */, + renderOverlayBlend: 1, + sliceMosaicString: "", + centerMosaic: false, + penSize: 1, + // in voxels, since all drawing is done using bitmap indices + interactive: true, + clickToSegment: false, + clickToSegmentRadius: 3, + // in mm + clickToSegmentBright: true, + clickToSegmentAutoIntensity: false, + // new option, but keep clickToSegmentBright for backwards compatibility + clickToSegmentIntensityMax: NaN, + // NaN will use auto threshold (default flood fill behavior from before) + clickToSegmentIntensityMin: NaN, + // NaN will use auto threshold (default flood fill behavior from before) + // 0 will use auto threshold (default flood fill behavior from before) + // Take the voxel intensity at the click point and use this percentage +/- to threshold the flood fill operation. + // If greater than 0, clickedVoxelIntensity +/- clickedVoxelIntensity * clickToSegmentPercent will be used + // for the clickToSegmentIntensityMin and clickToSegmentIntensityMax values. + clickToSegmentPercent: 0, + clickToSegmentMaxDistanceMM: Number.POSITIVE_INFINITY, + // default value is infinity for backwards compatibility with flood fill routine. + clickToSegmentIs2D: false, + selectionBoxLineThickness: 4, + selectionBoxIsOutline: false, + scrollRequiresFocus: false, + // determines if the cavas need to be focused to scroll + showMeasureUnits: true, + // e.g. 20.2 vs 20.2 mm + measureTextJustify: "center", + // start, center, end + measureTextColor: [1, 0, 0, 1], + // red + measureLineColor: [1, 0, 0, 1], + // red + measureTextHeight: 0.06, + isAlphaClipDark: false, + gradientOrder: 1, + gradientOpacity: 0, + renderSilhouette: 0, + gradientAmount: 0, + invertScrollDirection: false, + is2DSliceShader: false, + bounds: null, + showBoundsBorder: false, + boundsBorderColor: [1, 1, 1, 1] + // white border by default +}; +var INITIAL_SCENE_DATA = { + gamma: 1, + azimuth: 110, + elevation: 10, + crosshairPos: vec3_exports.fromValues(0.5, 0.5, 0.5), + clipPlanes: [[0, 0, 0, 0]], + // start with no planes + clipPlaneDepthAziElevs: [[2, 0, 0]], + // empty by default + volScaleMultiplier: 1, + pan2Dxyzmm: vec4_exports.fromValues(0, 0, 0, 1) +}; +function diffOptions(opts, defaults) { + const diff = {}; + for (const key in opts) { + const value = opts[key]; + const def = defaults[key]; + const isArray = Array.isArray(value) && Array.isArray(def); + if (isArray && value.some((v, i) => v !== def[i]) || !isArray && value !== def) { + diff[key] = value; + } + } + return diff; +} +var NVDocument = class _NVDocument { + constructor() { + __publicField(this, "data", { + title: "Untitled document", + imageOptionsArray: [], + meshOptionsArray: [], + opts: { ...DEFAULT_OPTIONS }, + previewImageDataURL: "", + labels: [], + encodedImageBlobs: [], + encodedDrawingBlob: "" + }); + __publicField(this, "scene"); + __publicField(this, "volumes", []); + __publicField(this, "meshDataObjects"); + __publicField(this, "meshes", []); + __publicField(this, "drawBitmap", null); + __publicField(this, "imageOptionsMap", /* @__PURE__ */ new Map()); + __publicField(this, "meshOptionsMap", /* @__PURE__ */ new Map()); + __publicField(this, "completedMeasurements", []); + __publicField(this, "completedAngles", []); + __publicField(this, "_optsProxy", null); + __publicField(this, "_optsChangeCallback", null); + this.scene = { + onAzimuthElevationChange: () => { + }, + onZoom3DChange: () => { + }, + sceneData: { + ...INITIAL_SCENE_DATA, + pan2Dxyzmm: vec4_exports.fromValues(0, 0, 0, 1), + crosshairPos: vec3_exports.fromValues(0.5, 0.5, 0.5) + }, + get renderAzimuth() { + return this.sceneData.azimuth; + }, + set renderAzimuth(azimuth) { + this.sceneData.azimuth = azimuth; + if (this.onAzimuthElevationChange) { + this.onAzimuthElevationChange(this.sceneData.azimuth, this.sceneData.elevation); + } + }, + get renderElevation() { + return this.sceneData.elevation; + }, + set renderElevation(elevation) { + this.sceneData.elevation = elevation; + if (this.onAzimuthElevationChange) { + this.onAzimuthElevationChange(this.sceneData.azimuth, this.sceneData.elevation); + } + }, + get volScaleMultiplier() { + return this.sceneData.volScaleMultiplier; + }, + set volScaleMultiplier(scale6) { + this.sceneData.volScaleMultiplier = scale6; + this.onZoom3DChange(scale6); + }, + get crosshairPos() { + return this.sceneData.crosshairPos; + }, + set crosshairPos(crosshairPos) { + this.sceneData.crosshairPos = crosshairPos; + }, + get clipPlane() { + return this.sceneData.clipPlanes[0] ?? []; + }, + set clipPlane(clipPlane) { + this.sceneData.clipPlanes[0] = clipPlane; + }, + // get clipPlaneDepthAziElev(): number[] { + // return this.sceneData.clipPlaneDepthAziElevs[0] ?? [] + // }, + // set clipPlaneDepthAziElev(clipPlaneDepthAziElev: number[]) { + // this.sceneData.clipPlaneDepthAziElevs[0] = clipPlaneDepthAziElev + // }, + get clipPlanes() { + return this.sceneData.clipPlanes; + }, + set clipPlanes(planes) { + this.sceneData.clipPlanes = planes; + }, + get clipPlaneDepthAziElevs() { + return this.sceneData.clipPlaneDepthAziElevs; + }, + set clipPlaneDepthAziElevs(values) { + this.sceneData.clipPlaneDepthAziElevs = values; + }, + get pan2Dxyzmm() { + return this.sceneData.pan2Dxyzmm; + }, + /** + * Sets current 2D pan in 3D mm + */ + set pan2Dxyzmm(pan2Dxyzmm) { + this.sceneData.pan2Dxyzmm = pan2Dxyzmm; + }, + get gamma() { + return this.sceneData.gamma; + }, + /** + * Sets current gamma + */ + set gamma(newGamma) { + this.sceneData.gamma = newGamma; + } + }; + } + /** + * Title of the document + */ + get title() { + return this.data.title; + } + /** + * Gets preview image blob + * @returns dataURL of preview image + */ + get previewImageDataURL() { + return this.data.previewImageDataURL; + } + /** + * Sets preview image blob + * @param dataURL - encoded preview image + */ + set previewImageDataURL(dataURL) { + this.data.previewImageDataURL = dataURL; + } + /** + * @param title - title of document + */ + set title(title) { + this.data.title = title; + } + get imageOptionsArray() { + return this.data.imageOptionsArray; + } + /** + * Gets the base 64 encoded blobs of associated images + */ + get encodedImageBlobs() { + return this.data.encodedImageBlobs; + } + /** + * Gets the base 64 encoded blob of the associated drawing + * TODO the return type was marked as string[] here, was that an error? + */ + get encodedDrawingBlob() { + return this.data.encodedDrawingBlob; + } + /** + * Gets the options of the {@link Niivue} instance + */ + get opts() { + if (!this._optsProxy) { + this._createOptsProxy(); + } + return this._optsProxy; + } + /** + * Sets the options of the {@link Niivue} instance + */ + set opts(opts) { + this.data.opts = { ...opts }; + this._optsProxy = null; + } + /** + * Gets the 3D labels of the {@link Niivue} instance + */ + get labels() { + return this.data.labels; + } + /** + * Sets the 3D labels of the {@link Niivue} instance + */ + set labels(labels) { + this.data.labels = labels; + } + get customData() { + return this.data.customData; + } + set customData(data) { + this.data.customData = data; + } + /** + * Checks if document has an image by id + */ + hasImage(image) { + return this.volumes.find((i) => i.id === image.id) !== void 0; + } + /** + * Checks if document has an image by url + */ + hasImageFromUrl(url) { + return this.data.imageOptionsArray.find((i) => i.url === url) !== void 0; + } + /** + * Adds an image and the options an image was created with + */ + addImageOptions(image, imageOptions) { + if (!this.hasImage(image)) { + if (!imageOptions.name) { + if (imageOptions.url) { + const absoluteUrlRE = /^(?:[a-z+]+:)?\/\//i; + const url = absoluteUrlRE.test(imageOptions.url) ? new URL(imageOptions.url) : new URL(imageOptions.url, window.location.href); + imageOptions.name = url.pathname.split("/").pop(); + if (imageOptions.name.toLowerCase().endsWith(".gz")) { + imageOptions.name = imageOptions.name.slice(0, -3); + } + if (!imageOptions.name.toLowerCase().endsWith(".nii")) { + imageOptions.name += ".nii"; + } + } else { + imageOptions.name = "untitled.nii"; + } + } + } + imageOptions.imageType = NVIMAGE_TYPE.NII; + this.data.imageOptionsArray.push(imageOptions); + this.imageOptionsMap.set(image.id, this.data.imageOptionsArray.length - 1); + } + /** + * Removes image from the document as well as its options + */ + removeImage(image) { + if (this.imageOptionsMap.has(image.id)) { + const index = this.imageOptionsMap.get(image.id); + if (this.data.imageOptionsArray.length > index) { + this.data.imageOptionsArray.splice(index, 1); + } + this.imageOptionsMap.delete(image.id); + } + this.volumes = this.volumes.filter((i) => i.id !== image.id); + } + /** + * Fetch any image data that is missing from this document. + * This includes loading image blobs for `ImageFromUrlOptions` with valid `url` fields. + * After calling this, `volumes` and `imageOptionsMap` will be populated. + */ + async fetchLinkedData() { + this.data.encodedImageBlobs = []; + if (!this.imageOptionsArray?.length) { + return; + } + for (const imgOpt of this.imageOptionsArray) { + if (!imgOpt.url) { + continue; + } + try { + const response = await fetch(imgOpt.url); + if (!response.ok) { + console.warn("Failed to fetch image:", imgOpt.url); + continue; + } + const buffer = await response.arrayBuffer(); + const uint8Array = new Uint8Array(buffer); + const b64 = NVUtilities.uint8tob64(uint8Array); + this.data.encodedImageBlobs.push(b64); + console.info("fetch linked data fetched from ", imgOpt.url); + } catch (err2) { + console.warn(`Failed to fetch/encode image from ${imgOpt.url}:`, err2); + } + } + } + /** + * Returns the options for the image if it was added by url + */ + getImageOptions(image) { + return this.imageOptionsMap.has(image.id) ? this.data.imageOptionsArray[this.imageOptionsMap.get(image.id)] : null; + } + /** + * Serialise the document. + * + * @param embedImages If false, encodedImageBlobs is left empty + * (imageOptionsArray still records the URL / name). + * @param embedDrawing If false, encodedDrawingBlob is left empty + */ + json(embedImages = true, embedDrawing = true) { + const data = { + encodedImageBlobs: [], + previewImageDataURL: this.data.previewImageDataURL, + imageOptionsMap: /* @__PURE__ */ new Map() + }; + const imageOptionsArray = []; + data.sceneData = { ...this.scene.sceneData }; + delete data.sceneData.clipPlane; + delete data.sceneData.clipPlaneDepthAziElev; + delete data.sceneData.clipThick; + delete data.sceneData.clipVolumeLow; + delete data.sceneData.clipVolumeHigh; + data.opts = diffOptions(this.opts, DEFAULT_OPTIONS); + if (this.opts.meshThicknessOn2D === Infinity) { + data.opts.meshThicknessOn2D = "infinity"; + } + if (this.opts.meshThicknessOn2D === Infinity) { + data.opts.meshThicknessOn2D = "infinity"; + } + data.labels = [...this.data.labels]; + for (const label of data.labels) { + delete label.onClick; + } + data.customData = this.customData; + data.completedMeasurements = [...this.completedMeasurements]; + data.completedAngles = [...this.completedAngles]; + if (this.volumes.length) { + for (let i = 0; i < this.volumes.length; i++) { + const volume = this.volumes[i]; + let imageOptions = this.getImageOptions(volume); + if (imageOptions === null) { + log.warn("no options found for image, using options from the volume directly"); + imageOptions = { + name: volume?.name ?? "", + colormap: volume?._colormap ?? "gray", + opacity: volume?._opacity ?? 1, + pairedImgData: null, + cal_min: volume?.cal_min ?? NaN, + cal_max: volume?.cal_max ?? NaN, + trustCalMinMax: volume?.trustCalMinMax ?? true, + percentileFrac: volume?.percentileFrac ?? 0.02, + ignoreZeroVoxels: volume?.ignoreZeroVoxels ?? false, + useQFormNotSForm: volume?.useQFormNotSForm ?? false, + colormapNegative: volume?.colormapNegative ?? "", + colormapLabel: volume?.colormapLabel ?? null, + imageType: volume?.imageType ?? NVIMAGE_TYPE.NII, + frame4D: volume?.frame4D ?? 0, + limitFrames4D: volume?.limitFrames4D ?? NaN, + url: volume?.url ?? "", + urlImageData: volume?.urlImgData ?? "", + alphaThreshold: false, + cal_minNeg: volume?.cal_minNeg ?? NaN, + cal_maxNeg: volume?.cal_maxNeg ?? NaN, + colorbarVisible: volume?.colorbarVisible ?? true + }; + } else { + if (!("imageType" in imageOptions)) { + imageOptions.imageType = NVIMAGE_TYPE.NII; + } + } + imageOptions.colormap = volume.colormap; + imageOptions.colormapLabel = volume.colormapLabel; + imageOptions.opacity = volume.opacity; + imageOptions.cal_max = volume.cal_max ?? NaN; + imageOptions.cal_min = volume.cal_min ?? NaN; + imageOptionsArray.push(imageOptions); + if (embedImages) { + const blob = NVUtilities.uint8tob64(volume.toUint8Array()); + data.encodedImageBlobs.push(blob); + } + data.imageOptionsMap.set(volume.id, i); + } + } + data.imageOptionsArray = [...imageOptionsArray]; + const meshes = []; + data.connectomes = []; + for (const mesh of this.meshes) { + if (mesh.type === "connectome" /* CONNECTOME */) { + data.connectomes.push(JSON.stringify(mesh.json())); + continue; + } + const copyMesh = { + pts: mesh.pts, + tris: mesh.tris, + name: mesh.name, + rgba255: Uint8Array.from(mesh.rgba255), + opacity: mesh.opacity, + connectome: mesh.connectome, + dpg: mesh.dpg, + dps: mesh.dps, + dpv: mesh.dpv, + meshShaderIndex: mesh.meshShaderIndex, + layers: mesh.layers.map((layer) => ({ + values: layer.values, + nFrame4D: layer.nFrame4D, + frame4D: 0, + outlineBorder: layer.outlineBorder, + global_min: layer.global_min, + global_max: layer.global_max, + cal_min: layer.cal_min, + cal_max: layer.cal_max, + opacity: layer.opacity, + colormap: layer.colormap, + colormapNegative: layer.colormapNegative, + colormapLabel: layer.colormapLabel, + useNegativeCmap: layer.useNegativeCmap + })), + hasConnectome: mesh.hasConnectome, + edgeColormap: mesh.edgeColormap, + edgeColormapNegative: mesh.edgeColormapNegative, + edgeMax: mesh.edgeMax, + edgeMin: mesh.edgeMin, + edges: mesh.edges && Array.isArray(mesh.edges) ? [...mesh.edges] : [], + extentsMax: mesh.extentsMax, + extentsMin: mesh.extentsMin, + furthestVertexFromOrigin: mesh.furthestVertexFromOrigin, + nodeColormap: mesh.nodeColormap, + nodeColormapNegative: mesh.nodeColormapNegative, + nodeMaxColor: mesh.nodeMaxColor, + nodeMinColor: mesh.nodeMinColor, + nodeScale: mesh.nodeScale, + legendLineThickness: mesh.legendLineThickness, + offsetPt0: mesh.offsetPt0, + nodes: mesh.nodes + }; + if (mesh.offsetPt0 && mesh.offsetPt0.length > 0) { + copyMesh.offsetPt0 = mesh.offsetPt0; + copyMesh.fiberGroupColormap = mesh.fiberGroupColormap; + copyMesh.fiberColor = mesh.fiberColor; + copyMesh.fiberDither = mesh.fiberDither; + copyMesh.fiberRadius = mesh.fiberRadius; + copyMesh.colormap = mesh.colormap; + } + meshes.push(copyMesh); + } + data.meshesString = JSON.stringify(serialize(meshes)); + if (embedDrawing && this.drawBitmap) { + data.encodedDrawingBlob = NVUtilities.uint8tob64(this.drawBitmap); + } + return data; + } + async download(fileName, compress, opts = { embedImages: true }) { + const data = this.json(opts.embedImages); + const jsonTxt = JSON.stringify(data); + const mime = compress ? "application/gzip" : "application/json"; + const payload = compress ? await NVUtilities.compressStringToArrayBuffer(jsonTxt) : jsonTxt; + NVUtilities.download(payload, fileName, mime); + } + /** + * Deserialize mesh data objects + */ + static deserializeMeshDataObjects(document2) { + if (!document2.data.meshesString || document2.data.meshesString === "[]") { + document2.meshDataObjects = []; + return; + } + if (document2.data.meshesString) { + document2.meshDataObjects = deserialize(JSON.parse(document2.data.meshesString)); + for (const mesh of document2.meshDataObjects) { + for (const layer of mesh.layers) { + if ("colorMap" in layer) { + layer.colormap = layer.colorMap; + delete layer.colorMap; + } + if ("colorMapNegative" in layer) { + layer.colormapNegative = layer.colorMapNegative; + delete layer.colorMapNegative; + } + } + } + } + } + /** + * Factory method to return an instance of NVDocument from a URL + */ + static async loadFromUrl(url) { + const response = await fetch(url); + const buffer = await response.arrayBuffer(); + let documentData; + if (NVUtilities.isArrayBufferCompressed(buffer)) { + const documentText = await NVUtilities.decompressArrayBuffer(buffer); + documentData = JSON.parse(documentText); + } else { + const utf8decoder = new TextDecoder(); + documentData = JSON.parse(utf8decoder.decode(buffer)); + } + return _NVDocument.loadFromJSON(documentData); + } + /** + * Factory method to return an instance of NVDocument from a File object + */ + static async loadFromFile(file) { + const arrayBuffer = await NVUtilities.readFileAsync(file); + let dataString; + const document2 = new _NVDocument(); + if (NVUtilities.isArrayBufferCompressed(arrayBuffer)) { + dataString = await NVUtilities.decompressArrayBuffer(arrayBuffer); + } else { + const utf8decoder = new TextDecoder(); + dataString = utf8decoder.decode(arrayBuffer); + } + document2.data = JSON.parse(dataString); + if (document2.data.opts.meshThicknessOn2D === "infinity") { + document2.data.opts.meshThicknessOn2D = Infinity; + } + document2.scene.sceneData = { ...INITIAL_SCENE_DATA, ...document2.data.sceneData }; + _NVDocument.deserializeMeshDataObjects(document2); + return document2; + } + /** + * Factory method to return an instance of NVDocument from JSON. + * + * This will merge any saved configuration options (`opts`) with the DEFAULT_OPTIONS, + * ensuring any missing values are filled with defaults. It also restores special-case + * fields like `meshThicknessOn2D` when serialized as the string "infinity". + * + * @param data - A serialized DocumentData object + * @returns A reconstructed NVDocument instance + */ + static loadFromJSON(data) { + const document2 = new _NVDocument(); + Object.assign(document2.data, { + ...data, + imageOptionsArray: data.imageOptionsArray ?? [], + encodedImageBlobs: data.encodedImageBlobs ?? [], + labels: data.labels ?? [], + meshOptionsArray: data.meshOptionsArray ?? [], + connectomes: data.connectomes ?? [], + encodedDrawingBlob: data.encodedDrawingBlob ?? "", + previewImageDataURL: data.previewImageDataURL ?? "", + customData: data.customData ?? "", + title: data.title ?? "untitled" + }); + document2.data.opts = { + ...DEFAULT_OPTIONS, + ...data.opts || {} + }; + if (document2.data.opts.meshThicknessOn2D === "infinity") { + document2.data.opts.meshThicknessOn2D = Infinity; + } + document2.scene.sceneData = { + ...INITIAL_SCENE_DATA, + ...data.sceneData || {} + }; + const sceneData = data.sceneData || {}; + if (sceneData.clipPlane && !sceneData.clipPlanes) { + document2.scene.sceneData.clipPlanes = [sceneData.clipPlane]; + } + if (sceneData.clipPlaneDepthAziElev && !sceneData.clipPlaneDepthAziElevs) { + document2.scene.sceneData.clipPlaneDepthAziElevs = [sceneData.clipPlaneDepthAziElev]; + } + if (data.completedMeasurements) { + document2.completedMeasurements = data.completedMeasurements.map((m) => ({ + ...m, + startMM: vec3_exports.clone(m.startMM), + endMM: vec3_exports.clone(m.endMM) + })); + } + if (data.completedAngles) { + document2.completedAngles = data.completedAngles.map((a) => ({ + ...a, + firstLineMM: { + start: vec3_exports.clone(a.firstLineMM.start), + end: vec3_exports.clone(a.firstLineMM.end) + }, + secondLineMM: { + start: vec3_exports.clone(a.secondLineMM.start), + end: vec3_exports.clone(a.secondLineMM.end) + } + })); + } + if (document2.data.meshesString) { + _NVDocument.deserializeMeshDataObjects(document2); + } + return document2; + } + /** + * Factory method to return an instance of NVDocument from JSON + */ + static oldloadFromJSON(data) { + const document2 = new _NVDocument(); + document2.data = data; + if (document2.data.opts.meshThicknessOn2D === "infinity") { + document2.data.opts.meshThicknessOn2D = Infinity; + } + document2.scene.sceneData = { ...INITIAL_SCENE_DATA, ...data.sceneData }; + _NVDocument.deserializeMeshDataObjects(document2); + return document2; + } + /** + * Sets the callback function to be called when opts properties change + */ + setOptsChangeCallback(callback) { + this._optsChangeCallback = callback; + this._optsProxy = null; + } + /** + * Removes the opts change callback + */ + removeOptsChangeCallback() { + this._optsChangeCallback = null; + this._optsProxy = null; + } + /** + * Creates a Proxy wrapper around the opts object to detect changes + */ + _createOptsProxy() { + const target = this.data.opts; + this._optsProxy = new Proxy(target, { + set: (obj, prop, value) => { + const oldValue = obj[prop]; + if (oldValue !== value) { + obj[prop] = value; + if (this._optsChangeCallback && typeof prop === "string" && prop in DEFAULT_OPTIONS) { + this._optsChangeCallback(prop, value, oldValue); + } + } + return true; + }, + get: (obj, prop) => { + return obj[prop]; + } + }); + } +}; + +// src/nvmesh.ts +var NVMeshLayerDefaults = { + colormap: "gray", + opacity: 0, + nFrame4D: 0, + frame4D: 0, + outlineBorder: 0, + cal_min: 0, + cal_max: 0, + cal_minNeg: 0, + cal_maxNeg: 0, + colormapType: 0 /* MIN_TO_MAX */, + values: new Array(), + useNegativeCmap: false, + showLegend: true +}; +var NVMeshFromUrlOptions = class { + constructor(url = "", gl = null, name = "", opacity = 1, rgba255 = new Uint8Array([255, 255, 255, 255]), visible = true, layers = [], colorbarVisible = true) { + __publicField(this, "url"); + __publicField(this, "gl"); + __publicField(this, "name"); + __publicField(this, "opacity"); + __publicField(this, "rgba255"); + __publicField(this, "visible"); + __publicField(this, "layers"); + __publicField(this, "colorbarVisible"); + this.url = url; + this.gl = gl; + this.name = name; + this.opacity = opacity; + this.rgba255 = rgba255; + this.visible = visible; + this.layers = layers; + this.colorbarVisible = colorbarVisible; + } +}; +var NVMesh3 = class _NVMesh { + /** + * @param pts - a 3xN array of vertex positions (X,Y,Z coordinates). + * @param tris - a 3xN array of triangle indices (I,J,K; indexed from zero). Each triangle generated from three vertices. + * @param name - a name for this image. Default is an empty string + * @param rgba255 - the base color of the mesh. RGBA values from 0 to 255. Default is white + * @param opacity - the opacity for this mesh. default is 1 + * @param visible - whether or not this image is to be visible + * @param gl - WebGL rendering context + * @param connectome - specify connectome edges and nodes. Default is null (not a connectome). + * @param dpg - Data per group for tractography, see TRK format. Default is null (not tractograpgy) + * @param dps - Data per streamline for tractography, see TRK format. Default is null (not tractograpgy) + * @param dpv - Data per vertex for tractography, see TRK format. Default is null (not tractograpgy) + * @param groups - Groups for tractography, see TRK format. Default is null (not tractograpgy) + * @param colorbarVisible - does this mesh display a colorbar + * @param anatomicalStructurePrimary - region for mesh. Default is an empty string + */ + constructor(pts, tris, name = "", rgba255 = new Uint8Array([255, 255, 255, 255]), opacity = 1, visible = true, gl, connectome = null, dpg = null, dps = null, dpv = null, groups = null, colorbarVisible = true, anatomicalStructurePrimary = "") { + __publicField(this, "id"); + __publicField(this, "name"); + __publicField(this, "anatomicalStructurePrimary"); + __publicField(this, "colorbarVisible"); + __publicField(this, "furthestVertexFromOrigin"); + __publicField(this, "extentsMin"); + __publicField(this, "extentsMax"); + __publicField(this, "opacity"); + __publicField(this, "visible"); + __publicField(this, "meshShaderIndex", 0); + __publicField(this, "offsetPt0", null); + __publicField(this, "colormapInvert", false); + __publicField(this, "fiberGroupColormap", null); + __publicField(this, "indexBuffer"); + __publicField(this, "vertexBuffer"); + __publicField(this, "vao"); + __publicField(this, "vaoFiber"); + __publicField(this, "pts"); + __publicField(this, "tris"); + __publicField(this, "layers"); + __publicField(this, "type", "mesh" /* MESH */); + __publicField(this, "data_type"); + __publicField(this, "rgba255"); + __publicField(this, "fiberLength"); + __publicField(this, "fiberLengths"); + __publicField(this, "fiberDensity"); + __publicField(this, "fiberDither", 0.1); + __publicField(this, "fiberColor", "Global"); + __publicField(this, "fiberDecimationStride", 1); + // e.g. if 2 the 50% of streamlines visible, if 3 then 1/3rd + __publicField(this, "fiberSides", 5); + // 1=streamline, 2=imposter, >2=mesh(cylinder with fiberSides sides) + __publicField(this, "fiberRadius", 0); + // in mm, e.g. 3 means 6mm diameter fibers, ignored if fiberSides < 3 + __publicField(this, "fiberOcclusion", 0); + // value 0..1 to simulate ambient occlusion + __publicField(this, "f32PerVertex", 5); + // MUST be 5 or 7: number of float32s per vertex DEPRECATED, future releases will ALWAYS be 5 + __publicField(this, "dpsThreshold", NaN); + __publicField(this, "fiberMask"); + __publicField(this, "colormap"); + __publicField(this, "dpg"); + __publicField(this, "dps"); + __publicField(this, "dpv"); + __publicField(this, "groups"); + __publicField(this, "hasConnectome", false); + __publicField(this, "connectome"); + // TODO this should somehow get aligned with connectome + __publicField(this, "indexCount"); + __publicField(this, "vertexCount", 1); + __publicField(this, "nodeScale", 4); + __publicField(this, "edgeScale", 1); + __publicField(this, "legendLineThickness", 0); + __publicField(this, "showLegend", true); + __publicField(this, "nodeColormap", "warm"); + __publicField(this, "edgeColormap", "warm"); + __publicField(this, "nodeColormapNegative"); + __publicField(this, "edgeColormapNegative"); + __publicField(this, "nodeMinColor"); + __publicField(this, "nodeMaxColor"); + __publicField(this, "edgeMin"); + __publicField(this, "edgeMax"); + __publicField(this, "nodes"); + __publicField(this, "edges"); + __publicField(this, "points"); + this.anatomicalStructurePrimary = anatomicalStructurePrimary; + this.name = name; + this.colorbarVisible = colorbarVisible; + this.id = v4(); + const obj = NVMeshUtilities.getExtents(pts); + this.furthestVertexFromOrigin = obj.mxDx; + this.extentsMin = obj.extentsMin; + this.extentsMax = obj.extentsMax; + this.opacity = opacity > 1 ? 1 : opacity; + this.visible = visible; + this.meshShaderIndex = 0; + this.indexBuffer = gl.createBuffer(); + this.vertexBuffer = gl.createBuffer(); + this.vao = gl.createVertexArray(); + gl.bindVertexArray(this.vao); + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer); + gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer); + gl.enableVertexAttribArray(0); + gl.enableVertexAttribArray(1); + const f32PerVertex = this.f32PerVertex; + if (f32PerVertex !== 7) { + gl.vertexAttribPointer(0, 3, gl.FLOAT, false, 20, 0); + gl.vertexAttribPointer(1, 4, gl.BYTE, true, 20, 12); + gl.enableVertexAttribArray(2); + gl.vertexAttribPointer(2, 4, gl.UNSIGNED_BYTE, true, 20, 16); + } else { + gl.vertexAttribPointer(0, 3, gl.FLOAT, false, 28, 0); + gl.vertexAttribPointer(1, 3, gl.FLOAT, false, 28, 12); + gl.enableVertexAttribArray(2); + gl.vertexAttribPointer(2, 4, gl.UNSIGNED_BYTE, true, 28, 24); + } + gl.bindVertexArray(null); + this.vaoFiber = gl.createVertexArray(); + this.offsetPt0 = null; + this.hasConnectome = false; + this.colormapInvert = false; + this.fiberGroupColormap = null; + this.pts = pts; + this.layers = []; + this.type = "mesh" /* MESH */; + this.tris = tris; + if (rgba255[3] < 1) { + this.rgba255 = rgba255; + this.fiberLength = 2; + this.fiberDither = 0.1; + this.fiberColor = "Global"; + this.fiberDecimationStride = 1; + this.fiberMask = []; + this.colormap = connectome; + this.dpg = dpg; + this.dps = dps; + this.dpv = dpv; + this.groups = groups; + if (dpg) { + this.initValuesArray(dpg); + } + if (dps) { + this.initValuesArray(dps); + } + if (dpv) { + this.initValuesArray(dpv); + } + if (groups) { + this.initValuesArray(groups); + } + this.offsetPt0 = new Uint32Array(tris); + this.tris = new Uint32Array(0); + this.updateFibers(gl); + gl.bindVertexArray(this.vaoFiber); + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer); + gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer); + gl.enableVertexAttribArray(0); + gl.vertexAttribPointer(0, 3, gl.FLOAT, false, 16, 0); + gl.enableVertexAttribArray(1); + gl.vertexAttribPointer(1, 4, gl.UNSIGNED_BYTE, true, 16, 12); + gl.bindVertexArray(null); + return; + } + if (connectome) { + this.connectome = connectome; + this.hasConnectome = true; + const keysArray = Object.keys(connectome); + for (let i = 0, len4 = keysArray.length; i < len4; i++) { + this[keysArray[i]] = connectome[keysArray[i]]; + } + } + this.rgba255 = rgba255; + this.updateMesh(gl); + } + initValuesArray(va) { + for (let i = 0; i < va.length; i++) { + const mn = va[i].vals.reduce((acc, current) => Math.min(acc, current)); + const mx = va[i].vals.reduce((acc, current) => Math.max(acc, current)); + va[i].global_min = mn; + va[i].global_max = mx; + va[i].cal_min = mn; + va[i].cal_max = mx; + } + return va; + } + // given streamlines (which webGL renders as a single pixel), extrude to cylinders + linesToCylinders(gl, posClrF32, indices) { + function v4ToV3(v42) { + return vec3_exports.fromValues(v42[0], v42[1], v42[2]); + } + const primitiveRestart = Math.pow(2, 32) - 1; + const n_count = indices.length; + let n_line_vtx = 0; + let n_streamlines = 0; + for (let i = 0; i < n_count; i++) { + if (indices[i] === primitiveRestart) { + n_streamlines++; + continue; + } + n_line_vtx++; + } + const cyl_sides = this.fiberSides; + const npt = cyl_sides * n_line_vtx; + const f32PerVertex = this.f32PerVertex; + if (f32PerVertex !== 5) { + throw Error("fiberSides > 1 requires f32PerVertex == 5"); + } + const f32 = new Float32Array(npt * f32PerVertex); + const u82 = new Uint8Array(f32.buffer); + let vtx = 0; + let prevV4 = vec4_exports.create(); + let currV4 = vec4_exports.create(); + let nextV4 = vec4_exports.create(); + const v1 = vec3_exports.create(); + let prevV2 = vec3_exports.create(); + let node = 0; + const radius = this.fiberRadius; + for (let i = 0; i < n_count; i++) { + const isLineEnd = indices[i] === primitiveRestart; + if (isLineEnd && node < 1) { + continue; + } + let idx2 = indices[i] * 4; + node++; + if (node <= 1) { + prevV4 = vec4_exports.fromValues(posClrF32[idx2 + 0], posClrF32[idx2 + 1], posClrF32[idx2 + 2], posClrF32[idx2 + 3]); + currV4 = vec4_exports.clone(prevV4); + if (i + 1 < n_count && indices[i + 1] !== primitiveRestart) { + idx2 = indices[i + 1] * 4; + nextV4 = vec4_exports.fromValues(posClrF32[idx2 + 0], posClrF32[idx2 + 1], posClrF32[idx2 + 2], posClrF32[idx2 + 3]); + vec3_exports.subtract(v1, v4ToV3(prevV4), v4ToV3(nextV4)); + vec3_exports.normalize(v1, v1); + prevV2 = NiivueObject3D.getFirstPerpVector(v1); + } + continue; + } + if (isLineEnd) { + nextV4 = vec4_exports.clone(currV4); + } else { + nextV4 = vec4_exports.fromValues(posClrF32[idx2 + 0], posClrF32[idx2 + 1], posClrF32[idx2 + 2], posClrF32[idx2 + 3]); + } + vec3_exports.subtract(v1, v4ToV3(prevV4), v4ToV3(nextV4)); + vec3_exports.normalize(v1, v1); + const D = vec3_exports.create(); + vec3_exports.cross(D, prevV2, v1); + const v2 = vec3_exports.create(); + vec3_exports.cross(v2, v1, D); + prevV2 = vec3_exports.clone(prevV2); + const v3 = vec3_exports.create(); + vec3_exports.cross(v3, v1, v2); + vec3_exports.normalize(v3, v3); + const vtxXYZ = vec3_exports.create(); + for (let j = 0; j < cyl_sides; j++) { + const c = Math.cos(j / cyl_sides * 2 * Math.PI); + const s = Math.sin(j / cyl_sides * 2 * Math.PI); + vtxXYZ[0] = radius * (c * v2[0] + s * v3[0]); + vtxXYZ[1] = radius * (c * v2[1] + s * v3[1]); + vtxXYZ[2] = radius * (c * v2[2] + s * v3[2]); + vec3_exports.add(vtxXYZ, v4ToV3(currV4), vtxXYZ); + const fidx = vtx * f32PerVertex; + f32[fidx + 0] = vtxXYZ[0]; + f32[fidx + 1] = vtxXYZ[1]; + f32[fidx + 2] = vtxXYZ[2]; + const n3 = vec3_exports.create(); + vec3_exports.subtract(n3, vtxXYZ, v4ToV3(currV4)); + vec3_exports.normalize(n3, n3); + const fidxU8 = (fidx + 3) * 4; + u82[fidxU8 + 0] = n3[0] * 127; + u82[fidxU8 + 1] = n3[1] * 127; + u82[fidxU8 + 2] = n3[2] * 127; + f32[fidx + 4] = currV4[3]; + vtx++; + } + prevV4 = vec4_exports.clone(currV4); + currV4 = vec4_exports.clone(nextV4); + if (isLineEnd) { + node = 0; + } + } + const nidx = (n_line_vtx - n_streamlines) * cyl_sides * 2 * 3; + const idxs = new Uint32Array(nidx); + let idx = 0; + vtx = 0; + for (let i = 1; i < n_count; i++) { + if (indices[i] === primitiveRestart) { + vtx += cyl_sides; + continue; + } + if (indices[i - 1] === primitiveRestart) { + continue; + } + let prevStartVtx = vtx; + let startVtx = vtx + cyl_sides; + const prevStartVtxOverflow = startVtx; + const startVtxOverflow = startVtx + cyl_sides; + for (let j = 0; j < cyl_sides; j++) { + idxs[idx++] = prevStartVtx; + idxs[idx++] = startVtx++; + if (startVtx === startVtxOverflow) { + startVtx = startVtxOverflow - cyl_sides; + } + idxs[idx++] = startVtx; + idxs[idx++] = prevStartVtx++; + if (prevStartVtx === prevStartVtxOverflow) { + prevStartVtx = prevStartVtxOverflow - cyl_sides; + } + idxs[idx++] = startVtx; + idxs[idx++] = prevStartVtx; + } + vtx += cyl_sides; + } + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer); + gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, Uint32Array.from(idxs), gl.STATIC_DRAW); + gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer); + gl.bufferData(gl.ARRAY_BUFFER, u82, gl.STATIC_DRAW); + this.indexCount = nidx; + } + // linesToCylinders + createFiberDensityMap() { + if (this.fiberDensity) { + return; + } + const pts = this.pts; + const npt = pts.length / 3; + let maxExtentsRange = 0; + for (let i = 0; i < 3; i++) { + const range2 = this.extentsMax[i] - this.extentsMin[i]; + maxExtentsRange = Math.max(maxExtentsRange, range2); + } + this.fiberDensity = new Float32Array(npt); + if (maxExtentsRange === 0) { + return; + } + const bins = 64; + const binWidth = maxExtentsRange / (bins - 1); + const half = binWidth / 2; + const scale6 = (bins - 1) / maxExtentsRange; + let densityMap = new Float32Array(bins * bins * bins); + const mn = [this.extentsMin[0] - half, this.extentsMin[1] - half, this.extentsMin[2] - half]; + const xyz = [0, 0, 0]; + const prevVx = -1; + const binsXbins = bins * bins; + let j = 0; + for (let i = 0; i < npt; i++) { + xyz[0] = Math.round((pts[j++] - mn[0]) * scale6); + xyz[1] = Math.round((pts[j++] - mn[1]) * scale6); + xyz[2] = Math.round((pts[j++] - mn[2]) * scale6); + const vx = xyz[0] + xyz[1] * bins + xyz[2] * binsXbins; + if (vx === prevVx) { + continue; + } + densityMap[vx]++; + } + function blur3D(vol, dim) { + let raw = vol.slice(); + let v = -1; + const dim1 = dim - 1; + for (let z = 0; z < dim; z++) { + for (let y = 0; y < dim; y++) { + for (let x = 0; x < dim; x++) { + v++; + if (x < 1 || x >= dim1) { + continue; + } + vol[v] = raw[v - 1] + raw[v] + raw[v] + raw[v + 1]; + } + } + } + v = -1; + raw = vol.slice(); + for (let z = 0; z < dim; z++) { + for (let y = 0; y < dim; y++) { + for (let x = 0; x < dim; x++) { + v++; + if (y < 1 || y >= dim1) { + continue; + } + vol[v] = raw[v - dim] + raw[v] + raw[v] + raw[v + dim]; + } + } + } + const dimXdim = dim * dim; + v = -1; + raw = vol.slice(); + for (let z = 0; z < dim; z++) { + for (let y = 0; y < dim; y++) { + for (let x = 0; x < dim; x++) { + v++; + if (z < 1 || z >= dim1) { + continue; + } + vol[v] = raw[v - dimXdim] + raw[v] + raw[v] + raw[dimXdim]; + } + } + } + return vol; + } + densityMap = blur3D(densityMap, bins); + densityMap = blur3D(densityMap, bins); + let mx = 0; + let mn0 = Infinity; + const binsXbinsXbins = bins * bins * bins; + for (let i = 0; i < binsXbinsXbins; i++) { + if (densityMap[i] <= 0) { + continue; + } + mx = Math.max(mx, densityMap[i]); + mn0 = Math.min(mn0, densityMap[i]); + } + if (mx <= 1 || mx <= mn0) { + return; + } + j = 0; + for (let i = 0; i < binsXbinsXbins; i++) { + densityMap[i] = Math.max(0, densityMap[i] - mn0); + } + mx -= mn0; + for (let i = 0; i < npt; i++) { + xyz[0] = Math.round((pts[j++] - mn[0]) * scale6); + xyz[1] = Math.round((pts[j++] - mn[1]) * scale6); + xyz[2] = Math.round((pts[j++] - mn[2]) * scale6); + const vx = xyz[0] + xyz[1] * bins + xyz[2] * binsXbins; + this.fiberDensity[i] = densityMap[vx] / mx; + } + } + // not included in public docs + // internal function filters tractogram to identify which color and visibility of streamlines + updateFibers(gl) { + if (!this.offsetPt0 || !this.fiberLength) { + return; + } + const pts = this.pts; + const offsetPt0 = this.offsetPt0; + const n_count = offsetPt0.length - 1; + const npt = pts.length / 3; + if (!this.fiberLengths) { + this.fiberLengths = new Uint32Array(n_count); + for (let i = 0; i < n_count; i++) { + const vStart3 = offsetPt0[i] * 3; + const vEnd3 = (offsetPt0[i + 1] - 1) * 3; + let len4 = 0; + for (let j = vStart3; j < vEnd3; j += 3) { + const v = vec3_exports.fromValues(pts[j + 0] - pts[j + 3], pts[j + 1] - pts[j + 4], pts[j + 2] - pts[j + 5]); + len4 += vec3_exports.len(v); + } + this.fiberLengths[i] = len4; + } + } + const posClrF32 = new Float32Array(npt * 4); + const posClrU32 = new Uint32Array(posClrF32.buffer); + let i3 = 0; + let i4 = 0; + for (let i = 0; i < npt; i++) { + posClrF32[i4 + 0] = pts[i3 + 0]; + posClrF32[i4 + 1] = pts[i3 + 1]; + posClrF32[i4 + 2] = pts[i3 + 2]; + i3 += 3; + i4 += 4; + } + const dither = this.fiberDither; + const ditherHalf = dither * 0.5; + function rgb2int32(r, g, b) { + const ditherFrac = dither * Math.random(); + const d = 255 * (ditherFrac - ditherHalf); + r = Math.max(Math.min(r + d, 255), 0); + g = Math.max(Math.min(g + d, 255), 0); + b = Math.max(Math.min(b + d, 255), 0); + return r + (g << 8) + (b << 16); + } + function direction2rgb(x1, y1, z1, x2, y2, z2, ditherFrac) { + const v = vec3_exports.fromValues(Math.abs(x1 - x2), Math.abs(y1 - y2), Math.abs(z1 - z2)); + vec3_exports.normalize(v, v); + const r = ditherFrac - ditherHalf; + for (let j = 0; j < 3; j++) { + v[j] = 255 * Math.max(Math.min(Math.abs(v[j]) + r, 1), 0); + } + return v[0] + (v[1] << 8) + (v[2] << 16); + } + const fiberColor = this.fiberColor.toLowerCase(); + let dps = null; + let dpv = null; + if (fiberColor.startsWith("dps") && this.dps && this.dps.length > 0) { + const n = parseInt(fiberColor.substring(3)); + if (n < this.dps.length && this.dps[n].vals.length === n_count) { + dps = this.dps[n].vals; + } + } + if (fiberColor.startsWith("dpv") && this.dpv && this.dpv.length > 0) { + const n = parseInt(fiberColor.substring(3)); + if (n < this.dpv.length && this.dpv[n].vals.length === npt) { + dpv = this.dpv[n]; + } + } + const streamlineVisible = new Int16Array(n_count); + if (this.groups && this.fiberGroupColormap !== null || fiberColor.startsWith("dpg") && this.dpg.length > 0) { + const lut = new Uint8ClampedArray(this.groups.length * 4); + const groupVisible = new Array(this.groups.length).fill(false); + if (this.fiberGroupColormap) { + const cmap = this.fiberGroupColormap; + if (cmap.A === void 0) { + cmap.A = Array.from(new Uint8ClampedArray(cmap.I.length).fill(255)); + } + for (let i = 0; i < cmap.I.length; i++) { + let idx = cmap.I[i]; + if (idx < 0 || idx >= this.groups.length) { + continue; + } + if (cmap.A[i] < 1) { + continue; + } + groupVisible[idx] = true; + idx *= 4; + lut[idx] = cmap.R[i]; + lut[idx + 1] = cmap.G[i]; + lut[idx + 2] = cmap.B[i]; + lut[idx + 3] = 255; + } + } else { + if (fiberColor.startsWith("dpg") && this.dpg.length > 0) { + const n = parseInt(fiberColor.substring(3)); + const dpg = n < this.dpg.length ? this.dpg[n] : this.dpg[0]; + const lut255 = cmapper.colormap(this.colormap, this.colormapInvert); + const mn = dpg.cal_min; + const mx = dpg.cal_max; + const ngroup = this.groups.length; + for (let i = 0; i < ngroup; i++) { + const v = dpg.vals[i]; + if (v < mn) { + continue; + } + let color255 = Math.round(255 * Math.min(Math.max((v - mn) / (mx - mn), 0), 1)); + groupVisible[i] = true; + const idx = i * 4; + color255 *= 4; + lut[idx] = lut255[color255 + 0]; + lut[idx + 1] = lut255[color255 + 1]; + lut[idx + 2] = lut255[color255 + 2]; + lut[idx + 3] = 255; + } + } + } + streamlineVisible.fill(-1); + for (let i = 0; i < this.groups.length; i++) { + if (!groupVisible[i]) { + continue; + } + for (let v = 0; v < this.groups[i].vals.length; v++) { + streamlineVisible[this.groups[i].vals[v]] = i; + } + } + for (let i = 0; i < n_count; i++) { + if (streamlineVisible[i] < 0) { + continue; + } + const color = streamlineVisible[i] % 256 * 4; + const RGBA = rgb2int32(lut[color], lut[color + 1], lut[color + 2]); + const vStart = offsetPt0[i]; + const vEnd = offsetPt0[i + 1] - 1; + const vStart4 = vStart * 4 + 3; + const vEnd4 = vEnd * 4 + 3; + for (let j = vStart4; j <= vEnd4; j += 4) { + posClrU32[j] = RGBA; + } + } + } else if (dpv) { + const lut = cmapper.colormap(this.colormap, this.colormapInvert); + const mn = dpv.cal_min; + const mx = dpv.cal_max; + let v42 = 3; + for (let i = 0; i < npt; i++) { + let color = Math.min(Math.max((dpv.vals[i] - mn) / (mx - mn), 0), 1); + color = Math.round(Math.max(Math.min(255, color * 255))) * 4; + const RGBA = lut[color] + (lut[color + 1] << 8) + (lut[color + 2] << 16); + posClrU32[v42] = RGBA; + v42 += 4; + } + } else if (dps) { + const lut = cmapper.colormap(this.colormap, this.colormapInvert); + let mn = dps[0]; + let mx = dps[0]; + for (let i = 0; i < n_count; i++) { + mn = Math.min(mn, dps[i]); + mx = Math.max(mx, dps[i]); + } + if (mx === mn) { + mn -= 1; + } + for (let i = 0; i < n_count; i++) { + let color = (dps[i] - mn) / (mx - mn); + color = Math.round(Math.max(Math.min(255, color * 255))) * 4; + const RGBA = lut[color] + (lut[color + 1] << 8) + (lut[color + 2] << 16); + const vStart = offsetPt0[i]; + const vEnd = offsetPt0[i + 1] - 1; + const vStart4 = vStart * 4 + 3; + const vEnd4 = vEnd * 4 + 3; + for (let j = vStart4; j <= vEnd4; j += 4) { + posClrU32[j] = RGBA; + } + } + } else if (fiberColor.includes("fixed")) { + if (dither === 0) { + const RGBA = this.rgba255[0] + (this.rgba255[1] << 8) + (this.rgba255[2] << 16); + let v42 = 3; + for (let i = 0; i < npt; i++) { + posClrU32[v42] = RGBA; + v42 += 4; + } + } else { + for (let i = 0; i < n_count; i++) { + const RGBA = rgb2int32(this.rgba255[0], this.rgba255[1], this.rgba255[2]); + const vStart = offsetPt0[i]; + const vEnd = offsetPt0[i + 1] - 1; + const vStart4 = vStart * 4 + 3; + const vEnd4 = vEnd * 4 + 3; + for (let j = vStart4; j <= vEnd4; j += 4) { + posClrU32[j] = RGBA; + } + } + } + } else if (fiberColor.includes("local")) { + for (let i = 0; i < n_count; i++) { + const vStart = offsetPt0[i]; + const vEnd = offsetPt0[i + 1] - 1; + let v3 = vStart * 3; + const vEnd3 = vEnd * 3; + const ditherFrac = dither * Math.random(); + let RGBA = direction2rgb(pts[v3], pts[v3 + 1], pts[v3 + 2], pts[v3 + 4], pts[v3 + 5], pts[v3 + 6], ditherFrac); + let v42 = vStart * 4 + 3; + while (v3 < vEnd3) { + posClrU32[v42] = RGBA; + v42 += 4; + v3 += 3; + RGBA = direction2rgb(pts[v3 - 3], pts[v3 - 2], pts[v3 - 1], pts[v3 + 3], pts[v3 + 4], pts[v3 + 5], ditherFrac); + } + posClrU32[v42] = posClrU32[v42 - 4]; + } + } else { + for (let i = 0; i < n_count; i++) { + const vStart = offsetPt0[i]; + const vEnd = offsetPt0[i + 1] - 1; + const vStart3 = vStart * 3; + const vEnd3 = vEnd * 3; + const RGBA = direction2rgb( + pts[vStart3], + pts[vStart3 + 1], + pts[vStart3 + 2], + pts[vEnd3], + pts[vEnd3 + 1], + pts[vEnd3 + 2], + dither * Math.random() + ); + const vStart4 = vStart * 4 + 3; + const vEnd4 = vEnd * 4 + 3; + for (let j = vStart4; j <= vEnd4; j += 4) { + posClrU32[j] = RGBA; + } + } + } + if (this.fiberOcclusion > 0) { + let shadeRGBA = function(rgba, frac) { + const r = frac * (rgba & 255); + const g = frac * (rgba >> 8 & 255); + const b = frac * (rgba >> 16 & 255); + return r + (g << 8) + (b << 16); + }; + this.createFiberDensityMap(); + for (let i = 0; i < n_count; i++) { + const vStart = offsetPt0[i]; + const vEnd = offsetPt0[i + 1] - 1; + const vStart4 = vStart * 4 + 3; + const vEnd4 = vEnd * 4 + 3; + let vtx = vStart; + const bias = Math.min(this.fiberOcclusion, 0.99); + for (let j = vStart4; j <= vEnd4; j += 4) { + let shade = this.fiberDensity[vtx++]; + if (shade <= 0) { + continue; + } + shade = shade / ((1 / bias - 2) * (1 - shade) + 1); + const frac = 1 - Math.min(shade, 0.9); + let RGBA = posClrU32[j]; + RGBA = shadeRGBA(RGBA, frac); + posClrU32[j] = RGBA; + } + } + } + if (Number.isFinite(this.dpsThreshold) && this.dps) { + if (!dps) { + const n = 0; + if (this.dps[n].vals.length === n_count) { + dps = this.dps[n].vals; + } + } + if (dps) { + for (let i = 0; i < n_count; i++) { + if (dps[i] < this.dpsThreshold) { + streamlineVisible[i] = -1; + } + } + } + } + const min_mm = this.fiberLength; + const primitiveRestart = Math.pow(2, 32) - 1; + const indices = []; + let stride = -1; + for (let i = 0; i < n_count; i++) { + if (streamlineVisible[i] < 0) { + continue; + } + if (this.fiberLengths[i] < min_mm) { + continue; + } + stride++; + if (stride % this.fiberDecimationStride !== 0) { + continue; + } + for (let j = offsetPt0[i]; j < offsetPt0[i + 1]; j++) { + indices.push(j); + } + indices.push(primitiveRestart); + } + if (this.fiberSides > 2 && this.fiberRadius > 0) { + this.linesToCylinders(gl, posClrF32, indices); + } else { + this.indexCount = indices.length; + gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer); + gl.bufferData(gl.ARRAY_BUFFER, Uint32Array.from(posClrU32), gl.STATIC_DRAW); + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer); + gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, Uint32Array.from(indices), gl.STATIC_DRAW); + } + } + // updateFibers() + // given X,Y,Z coordinates in world space, return index of nearest vertex as well as + // the distance of this closest vertex to the coordinates + indexNearestXYZmm(Xmm, Ymm, Zmm) { + const pts = this.pts; + const nvtx = this.pts.length / 3; + let i = 0; + let mnDx = Infinity; + let mnIdx = 0; + for (let j = 0; j < nvtx; j++) { + const dx = Math.pow(pts[i] - Xmm, 2) + Math.pow(pts[i + 1] - Ymm, 2) + Math.pow(pts[i + 2] - Zmm, 2); + if (dx < mnDx) { + mnDx = dx; + mnIdx = j; + } + i += 3; + } + mnDx = Math.sqrt(mnDx); + return [mnIdx, mnDx]; + } + // indexNearestXYZmm() + // internal function discards GPU resources + unloadMesh(gl) { + gl.bindBuffer(gl.ARRAY_BUFFER, null); + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null); + gl.bindVertexArray(null); + gl.deleteBuffer(this.vertexBuffer); + gl.deleteBuffer(this.indexBuffer); + gl.deleteVertexArray(this.vao); + gl.deleteVertexArray(this.vaoFiber); + this.offsetPt0 = null; + this.tris = null; + this.pts = null; + if (this.layers && this.layers.length > 0) { + for (let i = 0; i < this.layers.length; i++) { + this.layers[i].values = null; + } + } + if (this.dpg && this.dpg.length > 0) { + for (let i = 0; i < this.dpg.length; i++) { + this.dpg[i].vals = null; + } + } + if (this.dps && this.dps.length > 0) { + for (let i = 0; i < this.dps.length; i++) { + this.dps[i].vals = null; + } + } + } + // apply color lookup table to convert scalar array to RGBA array + scalars2RGBA(rgba, layer, scalars, isNegativeCmap = false) { + const nValues = scalars.length; + if (4 * nValues < rgba.length) { + log.error(`colormap2RGBA incorrectly specified ${nValues}*4 != ${rgba.length}`); + return rgba; + } + const opa255 = Math.round(layer.opacity * 255); + let mn = layer.cal_min; + let mx = layer.cal_max; + let lut = cmapper.colormap(layer.colormap, this.colormapInvert); + let flip = 1; + if (isNegativeCmap) { + if (!layer.useNegativeCmap) { + return rgba; + } + flip = -1; + lut = cmapper.colormap(layer.colormapNegative, layer.colormapInvert); + mn = layer.cal_min; + mx = layer.cal_max; + if (isFinite(layer.cal_minNeg) && isFinite(layer.cal_minNeg)) { + mn = -layer.cal_minNeg; + mx = -layer.cal_maxNeg; + } + } + let mnCal = mn; + if (!layer.isTransparentBelowCalMin) { + mnCal = Number.NEGATIVE_INFINITY; + } + const isTranslucentBelowMin = layer.colormapType === 2 /* ZERO_TO_MAX_TRANSLUCENT_BELOW_MIN */; + if (layer.colormapType !== 0 /* MIN_TO_MAX */) { + mn = Math.min(mn, 0); + } + const scale255 = 255 / (mx - mn); + for (let j = 0; j < nValues; j++) { + let v = scalars[j] * flip; + if (isNaN(v)) { + continue; + } + let opa = opa255; + if (v < mnCal) { + if (v > 0 && isTranslucentBelowMin) { + opa = Math.round(layer.opacity * 255 * Math.pow(v / mnCal, 2)); + } else { + continue; + } + } + v = (v - mn) * scale255; + if (v < 0 && layer.isTransparentBelowCalMin) { + continue; + } + v = Math.min(255, Math.max(0, Math.round(v))) * 4; + const idx = j * 4; + rgba[idx + 0] = lut[v + 0]; + rgba[idx + 1] = lut[v + 1]; + rgba[idx + 2] = lut[v + 2]; + rgba[idx + 3] = opa; + } + return rgba; + } + blendColormap(u82, additiveRGBA, layer, mn, mx, lut, invert3 = false) { + const nvtx = this.pts.length / 3; + const opacity = Math.min(layer.opacity, 1); + function lerp4(x, y, a) { + return x * (1 - a) + y * a; + } + function additiveBlend(x, y) { + return Math.min(x + y, 255); + } + const scaleFlip = invert3 ? -1 : 1; + const frame = Math.min(Math.max(layer.frame4D, 0), layer.nFrame4D - 1); + const frameOffset = nvtx * frame; + let mnCal = mn; + if (!layer.isTransparentBelowCalMin) { + mnCal = Number.NEGATIVE_INFINITY; + } + if (layer.colormapType !== 0 /* MIN_TO_MAX */) { + mn = Math.min(mn, 0); + } + const scale255 = 255 / (mx - mn); + let borders = new Array(nvtx).fill(false); + if (layer.outlineBorder !== 0) { + const v255s = new Uint8Array(nvtx).fill(0); + for (let j = 0; j < nvtx; j++) { + const v = scaleFlip * layer.values[j + frameOffset]; + if (v >= mnCal) { + v255s[j] = 1; + } + } + borders = NVMeshUtilities.getClusterBoundaryU8(v255s, this.tris); + for (let j = 0; j < nvtx; j++) { + const v = scaleFlip * layer.values[j + frameOffset]; + if (v < mnCal) { + borders[j] = false; + } + } + } + const alphas = new Float32Array(256).fill(opacity); + if (mnCal > mn && layer.colormapType === 2 /* ZERO_TO_MAX_TRANSLUCENT_BELOW_MIN */) { + let minOpaque = Math.round((mnCal - mn) * scale255); + minOpaque = Math.max(minOpaque, 1); + for (let j = 1; j < minOpaque; j++) { + alphas[j] = opacity * Math.pow(j / minOpaque, 2); + } + alphas[0] = 0; + mnCal = mn + Number.EPSILON; + } + for (let j = 0; j < nvtx; j++) { + const v = scaleFlip * layer.values[j + frameOffset]; + if (v < mnCal) { + continue; + } + let v255 = Math.round((v - mn) * scale255); + if (v255 < 0 && layer.isTransparentBelowCalMin) { + continue; + } + v255 = Math.max(0, v255); + v255 = Math.min(255, v255); + let opa = alphas[v255]; + v255 *= 4; + let vtx = j * 28 + 24; + if (this.f32PerVertex !== 7) { + vtx = j * 20 + 16; + } + if (layer.isAdditiveBlend) { + const j4 = j * 4; + additiveRGBA[j4 + 0] = additiveBlend(additiveRGBA[j4 + 0], lut[v255 + 0]); + additiveRGBA[j4 + 1] = additiveBlend(additiveRGBA[j4 + 1], lut[v255 + 1]); + additiveRGBA[j4 + 2] = additiveBlend(additiveRGBA[j4 + 2], lut[v255 + 2]); + additiveRGBA[j4 + 3] = additiveBlend(additiveRGBA[j4 + 3], 255); + } else { + if (borders[j]) { + opa = layer.outlineBorder; + if (layer.outlineBorder < 0) { + u82[vtx + 0] = 0; + u82[vtx + 1] = 0; + u82[vtx + 2] = 0; + continue; + } + } + u82[vtx + 0] = lerp4(u82[vtx + 0], lut[v255 + 0], opa); + u82[vtx + 1] = lerp4(u82[vtx + 1], lut[v255 + 1], opa); + u82[vtx + 2] = lerp4(u82[vtx + 2], lut[v255 + 2], opa); + } + } + } + // blendColormap() + // internal function filters mesh to identify which color of triangulated mesh vertices + updateMesh(gl) { + if (this.offsetPt0) { + this.updateFibers(gl); + return; + } + if (this.hasConnectome) { + return; + } + if (!this.pts || !this.tris || !this.rgba255) { + log.warn("underspecified mesh"); + return; + } + function lerp4(x, y, a) { + return x * (1 - a) + y * a; + } + const posNormClr = this.generatePosNormClr(this.pts, this.tris, this.rgba255); + const nvtx = this.pts.length / 3; + const u82 = new Uint8Array(posNormClr.buffer); + let maxAdditiveBlend = 0; + const additiveRGBA = new Uint8Array(nvtx * 4); + let tris = this.tris; + if (this.layers && this.layers.length > 0) { + for (let i = 0; i < this.layers.length; i++) { + const layer = this.layers[i]; + const opacity = layer.opacity; + if (opacity <= 0 || layer.cal_min > layer.cal_max) { + continue; + } + if (layer.outlineBorder === void 0) { + layer.outlineBorder = 0; + } + if (layer.isAdditiveBlend === void 0) { + layer.isAdditiveBlend = false; + } + if (layer.colormapLabel && layer.colormapLabel.R && !layer.colormapLabel.lut) { + layer.colormapLabel = cmapper.makeLabelLut(layer.colormapLabel, 255, layer.global_max); + } + if (layer.colormapLabel && layer.colormapLabel.lut) { + const colormapLabel = layer.colormapLabel; + let minv = 0; + if (layer.colormapLabel.min) { + minv = layer.colormapLabel.min; + } + let lut2 = colormapLabel.lut; + const nLabel = Math.floor(lut2.length / 4); + if (layer.atlasValues && nLabel > 0 && nLabel === layer.atlasValues.length && layer.colormap) { + const atlasValues = layer.atlasValues; + let hasNaN = false; + let onlyNaN = true; + for (let j = 0; j < nLabel; j++) { + if (isNaN(atlasValues[j])) { + hasNaN = true; + } else { + onlyNaN = false; + } + } + if (onlyNaN) { + log.debug(`invisible mesh: all atlasValues are NaN.`); + return; + } + if (hasNaN) { + log.debug(`some vertices have NaN atlasValues (mesh will be decimated).`); + const nanVtxs = new Array(nvtx).fill(false); + for (let j = 0; j < nvtx; j++) { + const v = Math.round(layer.values[j]) - minv; + if (isNaN(atlasValues[v])) { + nanVtxs[j] = true; + } + } + const nanIdxs = new Array(tris.length).fill(false); + for (let j = 0; j < tris.length; j++) { + if (nanVtxs[tris[j]]) { + nanIdxs[j] = true; + } + } + const trisIn = this.tris; + let nTriOK = 0; + for (let j = 0; j < trisIn.length; j += 3) { + if (!nanIdxs[j] && !nanIdxs[j + 1] && !nanIdxs[j + 2]) { + nTriOK++; + } + } + if (nTriOK === 0) { + log.debug(`invisible mesh: all triangles of a vertex with a NaN atlasValue.`); + } + tris = new Uint32Array(nTriOK * 3); + let k2 = 0; + for (let j = 0; j < trisIn.length; j += 3) { + if (!nanIdxs[j] && !nanIdxs[j + 1] && !nanIdxs[j + 2]) { + tris[k2++] = trisIn[j]; + tris[k2++] = trisIn[j + 1]; + tris[k2++] = trisIn[j + 2]; + } + } + } + lut2.fill(0); + lut2 = this.scalars2RGBA(lut2, layer, atlasValues); + if (layer.useNegativeCmap) { + lut2 = this.scalars2RGBA(lut2, layer, atlasValues, true); + } + } else if (layer.atlasValues) { + log.warn(`Expected ${nLabel} atlasValues but got ${layer.atlasValues.length} for mesh layer`); + } + if (layer.showLegend && nLabel === layer.colormapLabel.labels.length) { + layer.labels = []; + for (let j = 0; j < nLabel; j++) { + const rgba = Array.from(lut2.slice(j * 4, j * 4 + 4)).map((v) => v / 255); + const labelName = layer.colormapLabel.labels[j]; + const xyzMM = [0, 0, 0]; + let count = 0; + for (let i2 = 0; i2 < nvtx; i2++) { + if (layer.values[i2] === j) { + const idx = i2 * 3; + xyzMM[0] += this.pts[idx]; + xyzMM[1] += this.pts[idx + 1]; + xyzMM[2] += this.pts[idx + 2]; + count++; + } + } + if (count > 0) { + xyzMM[0] /= count; + xyzMM[1] /= count; + xyzMM[2] /= count; + } + if (rgba[3] === 0 || !labelName || // handles empty string, null, undefined + labelName.startsWith("_")) { + continue; + } + rgba[3] = 1; + const label = new NVLabel3D( + labelName, + { + textColor: rgba, + bulletScale: 1, + bulletColor: rgba, + lineWidth: 0, + lineColor: rgba, + textScale: 1, + textAlignment: "left" /* LEFT */, + lineTerminator: "none" /* NONE */ + }, + xyzMM + ); + layer.labels.push(label); + log.debug("label for mesh layer:", label); + } + } else { + delete layer.labels; + } + const frame = Math.min(Math.max(layer.frame4D, 0), layer.nFrame4D - 1); + const frameOffset = nvtx * frame; + const rgba8 = new Uint8Array(nvtx * 4); + let k = 0; + for (let j = 0; j < nvtx; j++) { + const v = layer.values[j + frameOffset] - minv; + const idx = 4 * Math.min(Math.max(v, 0), nLabel - 1); + rgba8[k + 0] = lut2[idx + 0]; + rgba8[k + 1] = lut2[idx + 1]; + rgba8[k + 2] = lut2[idx + 2]; + rgba8[k + 3] = Math.round(lut2[idx + 3] / 255 * layer.opacity * 255); + k += 4; + } + let opaque = new Array(nvtx).fill(false); + if (layer.outlineBorder !== 0) { + opaque = NVMeshUtilities.getClusterBoundary(rgba8, this.tris); + } + k = 0; + for (let j = 0; j < nvtx; j++) { + let vtx = j * 28 + 24; + if (this.f32PerVertex !== 7) { + vtx = j * 20 + 16; + } + let opa = rgba8[k + 3] / 255; + if (opaque[j]) { + opa = layer.outlineBorder; + if (layer.outlineBorder < 0) { + u82[vtx + 0] = 0; + u82[vtx + 1] = 0; + u82[vtx + 2] = 0; + k += 4; + continue; + } + } + u82[vtx + 0] = lerp4(u82[vtx + 0], rgba8[k + 0], opa); + u82[vtx + 1] = lerp4(u82[vtx + 1], rgba8[k + 1], opa); + u82[vtx + 2] = lerp4(u82[vtx + 2], rgba8[k + 2], opa); + k += 4; + } + continue; + } + if (layer.values instanceof Uint8Array) { + const rgba8 = new Uint8Array(layer.values.buffer); + let opaque = new Array(nvtx).fill(true); + if (layer.outlineBorder !== 0) { + opaque = NVMeshUtilities.getClusterBoundary(rgba8, this.tris); + } + let k = 0; + for (let j = 0; j < layer.values.length; j++) { + let vtx = j * 28 + 24; + if (this.f32PerVertex !== 7) { + vtx = j * 20 + 16; + } + let opa = opacity; + if (opaque[j]) { + opa = layer.outlineBorder; + if (layer.outlineBorder < 0) { + u82[vtx + 0] = 0; + u82[vtx + 1] = 0; + u82[vtx + 2] = 0; + k += 4; + continue; + } + } + u82[vtx + 0] = lerp4(u82[vtx + 0], rgba8[k + 0], opa); + u82[vtx + 1] = lerp4(u82[vtx + 1], rgba8[k + 1], opa); + u82[vtx + 2] = lerp4(u82[vtx + 2], rgba8[k + 2], opa); + k += 4; + } + continue; + } + if (layer.useNegativeCmap) { + layer.cal_min = Math.max(Number.EPSILON, layer.cal_min); + layer.cal_max = Math.max(layer.cal_min + 1e-6, layer.cal_max); + } + if (layer.isTransparentBelowCalMin === void 0) { + layer.isTransparentBelowCalMin = true; + } + const lut = cmapper.colormap(layer.colormap, layer.colormapInvert); + if (layer.isAdditiveBlend) { + maxAdditiveBlend++; + } + this.blendColormap(u82, additiveRGBA, layer, layer.cal_min, layer.cal_max, lut); + if (layer.useNegativeCmap) { + const neglut = cmapper.colormap(layer.colormapNegative, layer.colormapInvert); + let mn = layer.cal_min; + let mx = layer.cal_max; + if (isFinite(layer.cal_minNeg) && isFinite(layer.cal_minNeg)) { + mn = -layer.cal_minNeg; + mx = -layer.cal_maxNeg; + } + this.blendColormap(u82, additiveRGBA, layer, mn, mx, neglut, true); + } + } + } + if (maxAdditiveBlend > 0) { + for (let j = 0; j < nvtx; j++) { + let modulate = function(x, y) { + return Math.min(x * y * (1 / 255), 255); + }; + let vtx = j * 28 + 24; + if (this.f32PerVertex !== 7) { + vtx = j * 20 + 16; + } + const v = j * 4; + const opacity = Math.min(maxAdditiveBlend, additiveRGBA[v + 3] / 255); + if (opacity <= 0) { + continue; + } + u82[vtx + 0] = modulate(u82[vtx + 0], additiveRGBA[v + 0]); + u82[vtx + 1] = modulate(u82[vtx + 1], additiveRGBA[v + 1]); + u82[vtx + 2] = modulate(u82[vtx + 2], additiveRGBA[v + 2]); + u82[vtx + 0] = lerp4(u82[vtx + 0], additiveRGBA[v + 0], opacity); + u82[vtx + 1] = lerp4(u82[vtx + 1], additiveRGBA[v + 1], opacity); + u82[vtx + 2] = lerp4(u82[vtx + 2], additiveRGBA[v + 2], opacity); + } + } + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer); + gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, Uint32Array.from(tris), gl.STATIC_DRAW); + gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer); + gl.bufferData(gl.ARRAY_BUFFER, u82, gl.STATIC_DRAW); + this.indexCount = tris.length; + this.vertexCount = this.pts.length; + } + // updateMesh() + // internal function filters mesh to identify which color of triangulated mesh vertices + reverseFaces(gl) { + if (this.offsetPt0) { + return; + } + if (this.hasConnectome) { + return; + } + const tris = this.tris || []; + for (let j = 0; j < tris.length; j += 3) { + const tri = tris[j]; + tris[j] = tris[j + 1]; + tris[j + 1] = tri; + } + this.updateMesh(gl); + } + hierarchicalOrder() { + const V0 = 12; + const F0 = 20; + const nF = this.tris.length / 3; + const order = Math.log(nF / F0) / Math.log(4); + if (nF !== Math.pow(4, order) * F0) { + return NaN; + } + const nV = this.pts.length / 3; + if (nV !== Math.pow(4, order) * (V0 - 2) + 2) { + return NaN; + } + for (let i = 0; i < 15; i += 3) { + if (this.tris[i] !== 0) { + return NaN; + } + } + for (let i = 15; i < 24; i += 3) { + if (this.tris[i] !== 3) { + return NaN; + } + } + for (let i = 24; i < 30; i += 3) { + if (this.tris[i] !== 4) { + return NaN; + } + } + return order; + } + decimateFaces(n, ntarget) { + let fac = this.tris; + const V0 = 12; + const F0 = 20; + for (let j = n - 1; j >= ntarget; j--) { + const nVjprev = Math.pow(4, j + 1) * (V0 - 2) + 2; + const nVj = Math.pow(4, j) * (V0 - 2) + 2; + const nFjprev = fac.length / 3; + const nFj = Math.pow(4, j) * F0; + log.info(`order ${j + 1} -> ${j} vertices ${nVjprev} -> ${nVj} faces ${nFjprev} -> ${nFj}`); + const remap = Array.from({ length: nVjprev }, (_, i) => i + 1); + for (let i = 0; i < nFjprev; i++) { + const v1 = fac[3 * i]; + const v2 = fac[3 * i + 1]; + const v3 = fac[3 * i + 2]; + remap[v1 - 1] = Math.min(remap[v1 - 1], v2, v3); + } + const facJ = new Uint32Array(nFj * 3); + for (let i = 0; i < nFj; i++) { + facJ[3 * i] = remap[fac[3 * i] - 1]; + facJ[3 * i + 1] = remap[fac[3 * i + 1] - 1]; + facJ[3 * i + 2] = remap[fac[3 * i + 2] - 1]; + } + fac = facJ; + } + this.tris = new Uint32Array(fac); + } + // internal function simplifies FreeSurfer triangulated mesh and overlays + decimateHierarchicalMesh(gl, order = 4) { + const inputOrder = this.hierarchicalOrder(); + if (isNaN(inputOrder)) { + log.warn("Unable to decimate mesh: it does not have a hierarchical structure"); + return false; + } + if (order >= inputOrder) { + log.warn(`Unable to decimate mesh: input order (${inputOrder}) must be larger than downsampled order (${order})`); + return false; + } + const inputVLength = this.pts.length / 3; + const V0 = 12; + const nV = Math.pow(4, order) * (V0 - 2) + 2; + this.pts = new Float32Array(this.pts.slice(0, nV * 3)); + this.decimateFaces(inputOrder, order); + if (this.layers && this.layers.length > 0) { + for (let i = 0; i < this.layers.length; i++) { + const layer = this.layers[i]; + if (layer.values instanceof Float32Array || layer.values.length !== inputVLength) { + layer.values = new Float32Array(layer.values.slice(0, nV)); + } else { + log.warn(`decimation logic needs to be updated`); + } + } + } + this.updateMesh(gl); + return true; + } + // adjust attributes of a mesh layer. invoked by niivue.setMeshLayerProperty() + // TODO this method is a bit too generic + async setLayerProperty(id, key, val, gl) { + const layer = this.layers[id]; + if (!layer || !(key in layer)) { + log.warn("mesh does not have property ", key, " for layer ", layer); + return; + } + if (key === "colormapLabel") { + if (typeof val === "object") { + layer[key] = cmapper.makeLabelLut(val, 255, layer.global_max); + } else if (typeof val === "string") { + const cmap = await cmapper.makeLabelLutFromUrl(val); + layer[key] = cmap; + this.updateMesh(gl); + return; + } else { + log.error("colormapLabel requires a string or object"); + } + } else { + layer[key] = val; + } + this.updateMesh(gl); + } + // adjust mesh attributes. invoked by niivue.setMeshProperty(() + // TODO this method is too generic + setProperty(key, val, gl) { + if (!(key in this)) { + console.warn("Mesh does not have property:", key, this); + return; + } + ; + this[key] = val; + this.updateMesh(gl); + } + // Each streamline vertex has color, normal and position attributes + // Interleaved Vertex Data https://developer.apple.com/library/archive/documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/TechniquesforWorkingwithVertexData/TechniquesforWorkingwithVertexData.html + generatePosNormClr(pts, tris, rgba255) { + if (pts.length < 3 || rgba255.length < 4) { + log.error("Catastrophic failure generatePosNormClr()"); + log.debug("this", this); + log.debug("pts", pts); + log.debug("rgba", rgba255); + } + const norms = NVMeshUtilities.generateNormals(pts, tris); + const npt = pts.length / 3; + const isPerVertexColors = npt === rgba255.length / 4; + const f32PerVertex = this.f32PerVertex; + const f32 = new Float32Array(npt * f32PerVertex); + const u82 = new Uint8Array(f32.buffer); + let p = 0; + let c = 0; + let f = 0; + let u = (f32PerVertex - 1) * 4; + for (let i = 0; i < npt; i++) { + f32[f + 0] = pts[p + 0]; + f32[f + 1] = pts[p + 1]; + f32[f + 2] = pts[p + 2]; + if (f32PerVertex !== 7) { + u82[u - 4] = norms[p + 0] * 127; + u82[u - 3] = norms[p + 1] * 127; + u82[u - 2] = norms[p + 2] * 127; + } else { + f32[f + 3] = norms[p + 0]; + f32[f + 4] = norms[p + 1]; + f32[f + 5] = norms[p + 2]; + } + u82[u] = rgba255[c + 0]; + u82[u + 1] = rgba255[c + 1]; + u82[u + 2] = rgba255[c + 2]; + u82[u + 3] = rgba255[c + 3]; + if (isPerVertexColors) { + c += 4; + } + p += 3; + f += f32PerVertex; + u += f32PerVertex * 4; + } + return f32; + } + // wrapper to read meshes, tractograms and connectomes regardless of format + static async readMesh(buffer, name, gl, opacity = 1, rgba255 = new Uint8Array([255, 255, 255, 255]), visible = true) { + let tris = new Uint32Array([]); + let pts = new Float32Array([]); + let anatomicalStructurePrimary = ""; + let obj; + const re = /(?:\.([^.]+))?$/; + let ext = re.exec(name)[1]; + ext = ext.toUpperCase(); + if (ext === "GZ") { + ext = re.exec(name.slice(0, -3))[1]; + ext = ext.toUpperCase(); + } + if (ext === "JCON") { + log.error("you should never see this message: load using nvconnectome not nvmesh"); + } + if (ext === "JSON") { + log.error("you should never see this message: load using nvconnectome not nvmesh"); + } + rgba255[3] = Math.max(1, rgba255[3]); + if (ext === "TCK" || ext === "TRK" || ext === "TT" || ext === "TRX" || ext === "TRACT") { + if (ext === "TCK") { + obj = NVMeshLoaders.readTCK(buffer); + } else if (ext === "TRACT") { + obj = NVMeshLoaders.readTRACT(buffer); + } else if (ext === "TT") { + obj = await NVMeshLoaders.readTT(buffer); + } else if (ext === "TRX") { + obj = await NVMeshLoaders.readTRX(buffer); + } else { + obj = await NVMeshLoaders.readTRK(buffer); + } + if (typeof obj === "undefined") { + const pts2 = new Float32Array([0, 0, 0, 0, 0, 0]); + const offsetPt0 = new Uint32Array([0]); + obj = { pts: pts2, offsetPt0 }; + log.error("Creating empty tracts"); + } + rgba255[3] = 0; + return new _NVMesh( + obj.pts, + obj.offsetPt0, + name, + rgba255, + // colormap, + opacity, + // opacity, + visible, + // visible, + gl, + "inferno", + obj.dpg || null, + obj.dps || null, + obj.dpv || null, + obj.groups + ); + } + if (ext === "GII") { + obj = await NVMeshLoaders.readGII(buffer); + } else if (ext === "MZ3") { + obj = await NVMeshLoaders.readMZ3(buffer); + if (!("positions" in obj)) { + log.warn("MZ3 does not have positions (statistical overlay?)"); + } + } else if (ext === "ASC") { + obj = NVMeshLoaders.readASC(buffer); + } else if (ext === "DFS") { + obj = NVMeshLoaders.readDFS(buffer); + } else if (ext === "BYU" || ext === "G") { + obj = NVMeshLoaders.readGEO(buffer); + } else if (ext === "GEO") { + obj = NVMeshLoaders.readGEO(buffer, true); + } else if (ext === "ICO" || ext === "TRI") { + obj = NVMeshLoaders.readICO(buffer); + } else if (ext === "OFF") { + obj = NVMeshLoaders.readOFF(buffer); + } else if (ext === "NV") { + obj = NVMeshLoaders.readNV(buffer); + } else if (ext === "OBJ") { + obj = await NVMeshLoaders.readOBJ(buffer); + } else if (ext === "PLY") { + obj = NVMeshLoaders.readPLY(buffer); + } else if (ext === "WRL") { + obj = NVMeshLoaders.readWRL(buffer); + } else if (ext === "X3D") { + obj = NVMeshLoaders.readX3D(buffer); + } else if (ext === "FIB" || ext === "VTK") { + obj = NVMeshLoaders.readVTK(buffer); + if ("offsetPt0" in obj) { + rgba255[3] = 0; + return new _NVMesh( + obj.pts, + obj.offsetPt0, + name, + rgba255, + // colormap, + opacity, + // opacity, + visible, + // visible, + gl, + "inferno" + ); + } + } else if (ext === "SRF") { + obj = await NVMeshLoaders.readSRF(buffer); + } else if (ext === "STL") { + obj = NVMeshLoaders.readSTL(buffer); + } else { + obj = NVMeshLoaders.readFreeSurfer(buffer); + } + if (obj.anatomicalStructurePrimary) { + anatomicalStructurePrimary = obj.anatomicalStructurePrimary; + } + if (obj instanceof Float32Array) { + throw new Error("fatal: unknown mesh type loaded"); + } + if (!("positions" in obj)) { + throw new Error("positions not loaded"); + } + if (!obj.indices) { + throw new Error("indices not loaded"); + } + pts = obj.positions; + tris = obj.indices; + if ("rgba255" in obj && obj.rgba255.length > 0) { + rgba255 = obj.rgba255; + } + if ("colors" in obj && obj.colors && obj.colors.length === pts.length) { + const n = pts.length / 3; + rgba255 = new Uint8Array(n * 4); + let c = 0; + let k = 0; + for (let i = 0; i < n; i++) { + rgba255[k++] = obj.colors[c] * 255; + rgba255[k++] = obj.colors[c + 1] * 255; + rgba255[k++] = obj.colors[c + 2] * 255; + rgba255[k++] = 255; + c += 3; + } + } + const npt = pts.length / 3; + const ntri = tris.length / 3; + if (ntri < 1 || npt < 3) { + throw new Error("Mesh should have at least one triangle and three vertices"); + } + rgba255[3] = Math.max(1, rgba255[3]); + const nvm = new _NVMesh( + pts, + tris, + name, + rgba255, + // colormap, + opacity, + // opacity, + visible, + // visible, + gl, + null, + // connectome + null, + // dpg + null, + // dps + null, + // dpv + null, + // groups + true, + // colorbarVisible + anatomicalStructurePrimary + ); + if ("scalars" in obj && obj.scalars.length > 0) { + const newLayer = await NVMeshLoaders.readLayer(name, buffer, nvm, opacity, "gray"); + if (typeof newLayer === "undefined") { + log.warn("readLayer() failed to convert scalars"); + } else { + nvm.layers.push(newLayer); + nvm.updateMesh(gl); + } + } + return nvm; + } + static async loadLayer(layer, nvmesh) { + let buffer = new Uint8Array().buffer; + function base64ToArrayBuffer(base64) { + const binary_string = window.atob(base64); + const len4 = binary_string.length; + const bytes = new Uint8Array(len4); + for (let i = 0; i < len4; i++) { + bytes[i] = binary_string.charCodeAt(i); + } + return bytes.buffer; + } + if (layer.base64 !== void 0) { + buffer = base64ToArrayBuffer(layer.base64); + } else { + if (!layer.url) { + throw new Error("layer: missing url"); + } + const response = await fetch(layer.url, { headers: layer.headers }); + if (!response.ok) { + throw Error(response.statusText); + } + buffer = await response.arrayBuffer(); + } + let layerName; + let urlParts = []; + if (layer.name && layer.name !== "") { + layerName = layer.name; + } else { + if (!layer.url) { + throw new Error("layer: missing url"); + } + try { + urlParts = new URL(layer.url).pathname.split("/"); + } catch (e) { + urlParts = layer.url.split("/"); + } finally { + layerName = urlParts.slice(-1)[0]; + } + } + if (layerName.indexOf("?") > -1) { + layerName = layerName.slice(0, layerName.indexOf("?")); + } + let opacity = 0.5; + if ("opacity" in layer) { + opacity = layer.opacity; + } + let colormap = "warm"; + if ("colormap" in layer) { + colormap = layer.colormap; + } + let colormapNegative = "winter"; + if ("colormapNegative" in layer) { + colormapNegative = layer.colormapNegative; + } + let useNegativeCmap = false; + if ("useNegativeCmap" in layer) { + useNegativeCmap = layer.useNegativeCmap; + } + let cal_min = null; + if ("cal_min" in layer) { + cal_min = layer.cal_min; + } + let cal_max = null; + if ("cal_max" in layer) { + cal_max = layer.cal_max; + } + const newLayer = await NVMeshLoaders.readLayer( + layerName, + buffer, + nvmesh, + opacity, + colormap, + colormapNegative, + useNegativeCmap, + cal_min, + cal_max + ); + if (newLayer) { + nvmesh.layers.push(newLayer); + } + } + /** + * factory function to load and return a new NVMesh instance from a given URL + */ + static async loadFromUrl({ + url = "", + headers = {}, + gl, + name = "", + opacity = 1, + rgba255 = [255, 255, 255, 255], + visible = true, + layers = [], + buffer = new ArrayBuffer(0) + } = {}) { + let urlParts = url.split("/"); + if (name === "") { + try { + urlParts = new URL(url).pathname.split("/"); + } catch (e) { + urlParts = url.split("/"); + } + name = urlParts.slice(-1)[0]; + if (name.indexOf("?") > -1) { + name = name.slice(0, name.indexOf("?")); + } + } + if (url === "") { + throw Error("url must not be empty"); + } + if (!gl) { + throw Error("gl context is null"); + } + let buff; + if (buffer.byteLength > 0) { + buff = buffer; + } else { + const response = await fetch(url, { headers }); + if (!response.ok) { + throw Error(response.statusText); + } + buff = await response.arrayBuffer(); + } + const nvmesh = await this.readMesh(buff, name, gl, opacity, new Uint8Array(rgba255), visible); + if (!layers || layers.length < 1) { + return nvmesh; + } + for (let i = 0; i < layers.length; i++) { + await _NVMesh.loadLayer(layers[i], nvmesh); + } + nvmesh.updateMesh(gl); + return nvmesh; + } + // not included in public docs + // loading Nifti files + static async readFileAsync(file) { + return new Promise((resolve2, reject) => { + const reader = new FileReader(); + reader.onload = () => { + resolve2(reader.result); + }; + reader.onerror = reject; + reader.readAsArrayBuffer(file); + }); + } + /** + * factory function to load and return a new NVMesh instance from a file in the browser + * + * @returns NVMesh instance + */ + static async loadFromFile({ + file, + gl, + name = "", + opacity = 1, + rgba255 = [255, 255, 255, 255], + visible = true, + layers = [] + } = {}) { + if (!file) { + throw new Error("file must be set"); + } + if (!gl) { + throw new Error("rendering context must be set"); + } + const buffer = await _NVMesh.readFileAsync(file); + const nvmesh = await _NVMesh.readMesh(buffer, name, gl, opacity, new Uint8Array(rgba255), visible); + if (!layers || layers.length < 1) { + return nvmesh; + } + for (let i = 0; i < layers.length; i++) { + await _NVMesh.loadLayer(layers[i], nvmesh); + } + nvmesh.updateMesh(gl); + return nvmesh; + } + /** + * load and return a new NVMesh instance from a base64 encoded string + */ + async loadFromBase64({ + base64, + gl, + name = "", + opacity = 1, + rgba255 = [255, 255, 255, 255], + visible = true, + layers = [] + } = {}) { + if (!base64) { + throw new Error("base64 must bet set"); + } + if (!gl) { + throw new Error("rendering context must be set"); + } + function base64ToArrayBuffer(base642) { + const binary_string = window.atob(base642); + const len4 = binary_string.length; + const bytes = new Uint8Array(len4); + for (let i = 0; i < len4; i++) { + bytes[i] = binary_string.charCodeAt(i); + } + return bytes.buffer; + } + const buffer = base64ToArrayBuffer(base64); + const nvmesh = await _NVMesh.readMesh(buffer, name, gl, opacity, new Uint8Array(rgba255), visible); + if (!layers || layers.length < 1) { + return nvmesh; + } + for (let i = 0; i < layers.length; i++) { + await _NVMesh.loadLayer(layers[i], nvmesh); + } + nvmesh.updateMesh(gl); + return nvmesh; + } +}; + +// src/matcaps/Shiny.jpg +var Shiny_default = "data:image/jpeg;base64,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ZwAAAAAAAAALY3JvcFJlY3RUb3Bsb25nAAAAAAA4QklNA+0AAAAAABAASAAAAAEAAQBIAAAAAQABOEJJTQQmAAAAAAAOAAAAAAAAAAAAAD+AAAA4QklNBA0AAAAAAAQAAAAeOEJJTQQZAAAAAAAEAAAAHjhCSU0D8wAAAAAACQAAAAAAAAAAAQA4QklNJxAAAAAAAAoAAQAAAAAAAAABOEJJTQP1AAAAAABIAC9mZgABAGxmZgAGAAAAAAABAC9mZgABAKGZmgAGAAAAAAABADIAAAABAFoAAAAGAAAAAAABADUAAAABAC0AAAAGAAAAAAABOEJJTQP4AAAAAABwAAD/////////////////////////////A+gAAAAA/////////////////////////////wPoAAAAAP////////////////////////////8D6AAAAAD/////////////////////////////A+gAADhCSU0EAAAAAAAAAgAAOEJJTQQCAAAAAAACAAA4QklNBDAAAAAAAAEBADhCSU0ELQAAAAAABgABAAAAMjhCSU0ECAAAAAAAEAAAAAEAAAJAAAACQAAAAAA4QklNBB4AAAAAAAQAAAAAOEJJTQQaAAAAAAM9AAAABgAAAAAAAAAAAAACAAAAAgAAAAAEAG0AYwA2ADEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAEAAAAAAABudWxsAAAAAgAAAAZib3VuZHNPYmpjAAAAAQAAAAAAAFJjdDEAAAAEAAAAAFRvcCBsb25nAAAAAAAAAABMZWZ0bG9uZwAAAAAAAAAAQnRvbWxvbmcAAAIAAAAAAFJnaHRsb25nAAACAAAAAAZzbGljZXNWbExzAAAAAU9iamMAAAABAAAAAAAFc2xpY2UAAAASAAAAB3NsaWNlSURsb25nAAAAAAAAAAdncm91cElEbG9uZwAAAAAAAAAGb3JpZ2luZW51bQAAAAxFU2xpY2VPcmlnaW4AAAANYXV0b0dlbmVyYXRlZAAAAABUeXBlZW51bQAAAApFU2xpY2VUeXBlAAAAAEltZyAAAAAGYm91bmRzT2JqYwAAAAEAAAAAAABSY3QxAAAABAAA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bnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wOkNyZWF0ZURhdGU9IjIwMTgtMDctMTJUMjA6MDc6NDcrMDE6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDE4LTA3LTEzVDE3OjU0OjI3KzAxOjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDE4LTA3LTEzVDE3OjU0OjI3KzAxOjAwIiBkYzpmb3JtYXQ9ImltYWdlL2pwZWciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3MmVhYjVmZS02NDZkLWVhNDMtODQyNC0xNWQzZTgwOWExNDQiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo0OGNjMGI3YS1iYTJkLWZmNDAtYmNkNC1jNGQzMzIyZjBiNzQiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDphYzFjM2NhNS1hYTg4LWI5NGMtOGE4MS05YmU4MjA3ZGZiODciPiA8cGhvdG9zaG9wOkRvY3VtZW50QW5jZXN0b3JzPiA8cmRmOkJhZz4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6YThjMGNhZTYtODNjYy1hYzQ4LWI2YzAtN2FiODNlOWJkMGM3PC9yZGY6bGk+IDwvcmRmOkJhZz4gPC9waG90b3Nob3A6RG9jdW1lbnRBbmNlc3RvcnM+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6YWMxYzNjYTUtYWE4OC1iOTRjLThhODEtOWJlODIwN2RmYjg3IiBzdEV2dDp3aGVuPSIyMDE4LTA3LTEyVDIwOjA3OjQ3KzAxOjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpjYmI3MzZlZC0zOTRhLTM2NDgtYThiOC02Mzk1MmY0NDcxMjIiIHN0RXZ0OndoZW49IjIwMTgtMDctMTNUMTY6MTM6NTgrMDE6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjQ2YjNkYTI3LWI4YjEtYmU0Yi1hYTQ4LTExZGM5NmZkNTIyZiIgc3RFdnQ6d2hlbj0iMjAxOC0wNy0xM1QxNzo1NDoyNyswMTowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY29udmVydGVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJmcm9tIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AgdG8gaW1hZ2UvanBlZyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iZGVyaXZlZCIgc3RFdnQ6cGFyYW1ldGVycz0iY29udmVydGVkIGZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9qcGVnIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo3MmVhYjVmZS02NDZkLWVhNDMtODQyNC0xNWQzZTgwOWExNDQiIHN0RXZ0OndoZW49IjIwMTgtMDctMTNUMTc6NTQ6MjcrMDE6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPC9yZGY6U2VxPiA8L3htcE1NOkhpc3Rvcnk+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjQ2YjNkYTI3LWI4YjEtYmU0Yi1hYTQ4LTExZGM5NmZkNTIyZiIgc3RSZWY6ZG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjg3NjM1NDk5LWZiMTItYWU0MC04NWEzLThkMWFiN2NkZGVhOSIgc3RSZWY6b3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOmFjMWMzY2E1LWFhODgtYjk0Yy04YTgxLTliZTgyMDdkZmI4NyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3hwYWNrZXQgZW5kPSJ3Ij8+/+IMWElDQ19QUk9GSUxFAAEBAAAMSExpbm8CEAAAbW50clJHQiBYWVogB84AAgAJAAYAMQAAYWNzcE1TRlQAAAAASUVDIHNSR0IAAAAAAAAAAAAAAAEAAPbWAAEAAAAA0y1IUCAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARY3BydAAAAVAAAAAzZGVzYwAAAYQAAABsd3RwdAAAAfAAAAAUYmtwdAAAAgQAAAAUclhZWgAAAhgAAAAUZ1hZWgAAAiwAAAAUYlhZWgAAAkAAAAAUZG1uZAAAAlQAAABwZG1kZAAAAsQAAACIdnVlZAAAA0wAAACGdmlldwAAA9QAAAAkbHVtaQAAA/gAAAAUbWVhcwAABAwAAAAkdGVjaAAABDAAAAAMclRSQwAABDwAAAgMZ1RSQwAABDwAAAgMYlRSQwAABDwAAAgMdGV4dAAAAABDb3B5cmlnaHQgKGMpIDE5OTggSGV3bGV0dC1Q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"; + +// src/fonts/Roboto-Regular.png +var Roboto_Regular_default = "data:image/png;base64,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"; + +// src/fonts/Roboto-Regular.json +var Roboto_Regular_default2 = { + atlas: { + type: "msdf", + distanceRange: 2, + size: 59.65625, + width: 512, + height: 256, + yOrigin: "bottom" + }, + metrics: { + emSize: 1, + lineHeight: 1.171875, + ascender: 0.927734375, + descender: -0.244140625, + underlineY: -0.09765625, + underlineThickness: 0.048828125 + }, + glyphs: [ + { unicode: 32, advance: 0.24755859375 }, + { + unicode: 33, + advance: 0.25732421875, + planeBounds: { + left: 0.056159633438645884, + bottom: -0.02437761405677056, + right: 0.20702396031135412, + top: 0.7299440203067705 + }, + atlasBounds: { + left: 488.5, + bottom: 145.5, + right: 497.5, + top: 190.5 + } + }, + { + unicode: 34, + advance: 0.31982421875, + planeBounds: { + left: 0.049409125974004715, + bottom: 0.48691155587022, + right: 0.2840869677759953, + top: 0.77187750662978 + }, + atlasBounds: { + left: 486.5, + bottom: 213.5, + right: 500.5, + top: 230.5 + } + }, + { + unicode: 35, + advance: 0.61572265625, + planeBounds: { + left: 0.037219103997511785, + bottom: -0.02169206718177056, + right: 0.6239137085024882, + top: 0.7326295671817705 + }, + atlasBounds: { + left: 66.5, + bottom: 51.5, + right: 101.5, + top: 96.5 + } + }, + { + unicode: 36, + advance: 0.5615234375, + planeBounds: { + left: 0.02956531458715296, + bottom: -0.12381369908983761, + right: 0.5324464041628472, + top: 0.8484230740898377 + }, + atlasBounds: { + left: 109.5, + bottom: 197.5, + right: 139.5, + top: 255.5 + } + }, + { + unicode: 37, + advance: 0.732421875, + planeBounds: { + left: 0.026481776289942378, + bottom: -0.030073418674698794, + right: 0.7137525987100576, + top: 0.7410109186746989 + }, + atlasBounds: { + left: 88.5, + bottom: 144.5, + right: 129.5, + top: 190.5 + } + }, + { + unicode: 38, + advance: 0.62158203125, + planeBounds: { + left: 0.03225572125458355, + bottom: -0.030073418674698794, + right: 0.6357130287454166, + top: 0.7410109186746989 + }, + atlasBounds: { + left: 130.5, + bottom: 144.5, + right: 166.5, + top: 190.5 + } + }, + { + unicode: 39, + advance: 0.17431640625, + planeBounds: { + left: 0.028244602049502358, + bottom: 0.49895501673814824, + right: 0.14558352295049765, + top: 0.7671582645118518 + }, + atlasBounds: { + left: 498.5, + bottom: 62.5, + right: 505.5, + top: 78.5 + } + }, + { + unicode: 40, + advance: 0.341796875, + planeBounds: { + left: 0.042983329377291775, + bottom: -0.250029542422407, + right: 0.34471198312270823, + top: 0.8227834486724072 + }, + atlasBounds: { + left: 0.5, + bottom: 191.5, + right: 18.5, + top: 255.5 + } + }, + { + unicode: 41, + advance: 0.34765625, + planeBounds: { + left: -0.003159248747708225, + bottom: -0.250029542422407, + right: 0.29856940499770823, + top: 0.8227834486724072 + }, + atlasBounds: { + left: 19.5, + bottom: 191.5, + right: 37.5, + top: 255.5 + } + }, + { + unicode: 42, + advance: 0.4306640625, + planeBounds: { + left: -0.011208599684062338, + bottom: 0.27785390031593765, + right: 0.44138438093406235, + top: 0.7304468809340623 + }, + atlasBounds: { + left: 449.5, + bottom: 23.5, + right: 476.5, + top: 50.5 + } + }, + { + unicode: 43, + advance: 0.56689453125, + planeBounds: { + left: 0.01353503347629649, + bottom: 0.053493525733368255, + right: 0.5499415290237036, + top: 0.6066627242666317 + }, + atlasBounds: { + left: 361.5, + bottom: 17.5, + right: 393.5, + top: 50.5 + } + }, + { + unicode: 44, + advance: 0.1962890625, + planeBounds: { + left: -0.009919475797210583, + bottom: -0.15981695975478, + right: 0.1744702570472106, + top: 0.12514899100478 + }, + atlasBounds: { + left: 498.5, + bottom: 79.5, + right: 509.5, + top: 96.5 + } + }, + { + unicode: 45, + advance: 0.27587890625, + planeBounds: { + left: -0.00527594412977999, + bottom: 0.24333249267450235, + right: 0.27969000662978, + top: 0.36067141357549765 + }, + atlasBounds: { left: 52.5, bottom: 7.5, right: 69.5, top: 14.5 } + }, + { + unicode: 46, + advance: 0.26318359375, + planeBounds: { + left: 0.051032680313645884, + bottom: -0.027092319686354116, + right: 0.20189700718635412, + top: 0.12377200718635412 + }, + atlasBounds: { + left: 501.5, + bottom: 221.5, + right: 510.5, + top: 230.5 + } + }, + { + unicode: 47, + advance: 0.412109375, + planeBounds: { + left: -0.013733006073205867, + bottom: -0.08573505127848349, + right: 0.4053345685732059, + top: 0.7356373950284835 + }, + atlasBounds: { + left: 252.5, + bottom: 206.5, + right: 277.5, + top: 255.5 + } + }, + { + unicode: 48, + advance: 0.5615234375, + planeBounds: { + left: 0.037458384830081196, + bottom: -0.030073418674698794, + right: 0.5235767714199189, + top: 0.7410109186746989 + }, + atlasBounds: { + left: 167.5, + bottom: 144.5, + right: 196.5, + top: 190.5 + } + }, + { + unicode: 49, + advance: 0.5615234375, + planeBounds: { + left: 0.06023674350936354, + bottom: -0.01998308280677056, + right: 0.37872810024063647, + top: 0.7343385515567705 + }, + atlasBounds: { + left: 488.5, + bottom: 97.5, + right: 507.5, + top: 142.5 + } + }, + { + unicode: 50, + advance: 0.5615234375, + planeBounds: { + left: 0.025334353719224725, + bottom: -0.01680925468177056, + right: 0.5449781462807752, + top: 0.7375123796817705 + }, + atlasBounds: { + left: 278.5, + bottom: 51.5, + right: 309.5, + top: 96.5 + } + }, + { + unicode: 51, + advance: 0.5615234375, + planeBounds: { + left: 0.028181041080081196, + bottom: -0.030073418674698794, + right: 0.5142994276699189, + top: 0.7410109186746989 + }, + atlasBounds: { + left: 197.5, + bottom: 144.5, + right: 226.5, + top: 190.5 + } + }, + { + unicode: 52, + advance: 0.5615234375, + planeBounds: { + left: 0.005886103858368255, + bottom: -0.02169206718177056, + right: 0.5590553023916317, + top: 0.7326295671817705 + }, + atlasBounds: { + left: 310.5, + bottom: 51.5, + right: 343.5, + top: 96.5 + } + }, + { + unicode: 53, + advance: 0.5615234375, + planeBounds: { + left: 0.055524791080081196, + bottom: -0.02657487968177056, + right: 0.5416431776699189, + top: 0.7277467546817705 + }, + atlasBounds: { + left: 344.5, + bottom: 51.5, + right: 373.5, + top: 96.5 + } + }, + { + unicode: 54, + advance: 0.5615234375, + planeBounds: { + left: 0.046003306705081196, + bottom: -0.034712090549698794, + right: 0.5321216932949189, + top: 0.7363722467996989 + }, + atlasBounds: { + left: 227.5, + bottom: 144.5, + right: 256.5, + top: 190.5 + } + }, + { + unicode: 55, + advance: 0.5615234375, + planeBounds: { + left: 0.018010134969224725, + bottom: -0.02169206718177056, + right: 0.5376539275307752, + top: 0.7326295671817705 + }, + atlasBounds: { + left: 374.5, + bottom: 51.5, + right: 405.5, + top: 96.5 + } + }, + { + unicode: 56, + advance: 0.5615234375, + planeBounds: { + left: 0.037702525455081196, + bottom: -0.030073418674698794, + right: 0.5238209120449189, + top: 0.7410109186746989 + }, + atlasBounds: { + left: 257.5, + bottom: 144.5, + right: 286.5, + top: 190.5 + } + }, + { + unicode: 57, + advance: 0.5615234375, + planeBounds: { + left: 0.029401744205081196, + bottom: -0.025434746799698794, + right: 0.5155201307949189, + top: 0.7456495905496989 + }, + atlasBounds: { + left: 287.5, + bottom: 144.5, + right: 316.5, + top: 190.5 + } + }, + { + unicode: 58, + advance: 0.2421875, + planeBounds: { + left: 0.046394008438645884, + bottom: -0.029431286627488215, + right: 0.19725833531135412, + top: 0.5572633178774882 + }, + atlasBounds: { + left: 439.5, + bottom: 61.5, + right: 448.5, + top: 96.5 + } + }, + { + unicode: 59, + advance: 0.21142578125, + planeBounds: { + left: 0.001066852327789419, + bottom: -0.16459733294591408, + right: 0.1854565851722106, + top: 0.556198895445914 + }, + atlasBounds: { + left: 406.5, + bottom: 53.5, + right: 417.5, + top: 96.5 + } + }, + { + unicode: 60, + advance: 0.50830078125, + planeBounds: { + left: 0.016948142433865897, + bottom: 0.0726146348300812, + right: 0.4527784200661341, + top: 0.5587330214199189 + }, + atlasBounds: { + left: 394.5, + bottom: 21.5, + right: 420.5, + top: 50.5 + } + }, + { + unicode: 61, + advance: 0.548828125, + planeBounds: { + left: 0.051535540940937666, + bottom: 0.17620354038436353, + right: 0.5041285215590624, + top: 0.49469489711563647 + }, + atlasBounds: { + left: 477.5, + bottom: 31.5, + right: 504.5, + top: 50.5 + } + }, + { + unicode: 62, + advance: 0.5224609375, + planeBounds: { + left: 0.047629290940937666, + bottom: 0.0731029160800812, + right: 0.5002222715590624, + top: 0.5592213026699189 + }, + atlasBounds: { + left: 421.5, + bottom: 21.5, + right: 448.5, + top: 50.5 + } + }, + { + unicode: 63, + advance: 0.47216796875, + planeBounds: { + left: 0.016704001808865897, + bottom: -0.027876153049698794, + right: 0.4525342794411341, + top: 0.7432081842996989 + }, + atlasBounds: { + left: 317.5, + bottom: 144.5, + right: 343.5, + top: 190.5 + } + }, + { + unicode: 64, + advance: 0.89794921875, + planeBounds: { + left: 0.034064457306783605, + bottom: -0.23896750384690937, + right: 0.8721996065996072, + top: 0.7165065663469093 + }, + atlasBounds: { + left: 155.5, + bottom: 198.5, + right: 205.5, + top: 255.5 + } + }, + { + unicode: 65, + advance: 0.65234375, + planeBounds: { + left: -0.008838044092129387, + bottom: -0.02169206718177056, + right: 0.6616700753421295, + top: 0.7326295671817705 + }, + atlasBounds: { + left: 237.5, + bottom: 51.5, + right: 277.5, + top: 96.5 + } + }, + { + unicode: 66, + advance: 0.62255859375, + planeBounds: { + left: 0.06464099434422473, + bottom: -0.02169206718177056, + right: 0.5842847869057752, + top: 0.7326295671817705 + }, + atlasBounds: { + left: 205.5, + bottom: 51.5, + right: 236.5, + top: 96.5 + } + }, + { + unicode: 67, + advance: 0.65087890625, + planeBounds: { + left: 0.038439807122511785, + bottom: -0.030073418674698794, + right: 0.6251344116274882, + top: 0.7410109186746989 + }, + atlasBounds: { + left: 344.5, + bottom: 144.5, + right: 379.5, + top: 190.5 + } + }, + { + unicode: 68, + advance: 0.65576171875, + planeBounds: { + left: 0.06301501010836826, + bottom: -0.02169206718177056, + right: 0.6161842086416317, + top: 0.7326295671817705 + }, + atlasBounds: { + left: 162.5, + bottom: 51.5, + right: 195.5, + top: 96.5 + } + }, + { + unicode: 69, + advance: 0.568359375, + planeBounds: { + left: 0.0652904160800812, + bottom: -0.02169206718177056, + right: 0.5514088026699189, + top: 0.7326295671817705 + }, + atlasBounds: { + left: 132.5, + bottom: 51.5, + right: 161.5, + top: 96.5 + } + }, + { + unicode: 70, + advance: 0.552734375, + planeBounds: { + left: 0.059675181705081196, + bottom: -0.02169206718177056, + right: 0.5457935682949189, + top: 0.7326295671817705 + }, + atlasBounds: { + left: 102.5, + bottom: 51.5, + right: 131.5, + top: 96.5 + } + }, + { + unicode: 71, + advance: 0.68115234375, + planeBounds: { + left: 0.040148791497511785, + bottom: -0.030073418674698794, + right: 0.6268433960024882, + top: 0.7410109186746989 + }, + atlasBounds: { + left: 380.5, + bottom: 144.5, + right: 415.5, + top: 190.5 + } + }, + { + unicode: 72, + advance: 0.712890625, + planeBounds: { + left: 0.062365588372511785, + bottom: -0.02169206718177056, + right: 0.6490601928774882, + top: 0.7326295671817705 + }, + atlasBounds: { + left: 30.5, + bottom: 51.5, + right: 65.5, + top: 96.5 + } + }, + { + unicode: 73, + advance: 0.27197265625, + planeBounds: { + left: 0.06917965680657412, + bottom: -0.02169206718177056, + right: 0.20328128069342588, + top: 0.7326295671817705 + }, + atlasBounds: { + left: 196.5, + bottom: 51.5, + right: 204.5, + top: 96.5 + } + }, + { + unicode: 74, + advance: 0.5517578125, + planeBounds: { + left: 0.007184947330081194, + bottom: -0.02657487968177056, + right: 0.4933033339199188, + top: 0.7277467546817705 + }, + atlasBounds: { left: 0.5, bottom: 51.5, right: 29.5, top: 96.5 } + }, + { + unicode: 75, + advance: 0.626953125, + planeBounds: { + left: 0.061633166497511785, + bottom: -0.02169206718177056, + right: 0.6483277710024882, + top: 0.7326295671817705 + }, + atlasBounds: { + left: 452.5, + bottom: 97.5, + right: 487.5, + top: 142.5 + } + }, + { + unicode: 76, + advance: 0.5380859375, + planeBounds: { + left: 0.06341786132300943, + bottom: -0.02169206718177056, + right: 0.5327735449269906, + top: 0.7326295671817705 + }, + atlasBounds: { + left: 423.5, + bottom: 97.5, + right: 451.5, + top: 142.5 + } + }, + { + unicode: 77, + advance: 0.873046875, + planeBounds: { + left: 0.05911847969322944, + bottom: -0.02169206718177056, + right: 0.8134401140567705, + top: 0.7326295671817705 + }, + atlasBounds: { + left: 377.5, + bottom: 97.5, + right: 422.5, + top: 142.5 + } + }, + { + unicode: 78, + advance: 0.712890625, + planeBounds: { + left: 0.062365588372511785, + bottom: -0.02169206718177056, + right: 0.6490601928774882, + top: 0.7326295671817705 + }, + atlasBounds: { + left: 341.5, + bottom: 97.5, + right: 376.5, + top: 142.5 + } + }, + { + unicode: 79, + advance: 0.6875, + planeBounds: { + left: 0.033395854136655315, + bottom: -0.030073418674698794, + right: 0.6536158646133446, + top: 0.7410109186746989 + }, + atlasBounds: { + left: 416.5, + bottom: 144.5, + right: 453.5, + top: 190.5 + } + }, + { + unicode: 80, + advance: 0.630859375, + planeBounds: { + left: 0.061550166358368255, + bottom: -0.02169206718177056, + right: 0.6147193648916317, + top: 0.7326295671817705 + }, + atlasBounds: { + left: 273.5, + bottom: 97.5, + right: 306.5, + top: 142.5 + } + }, + { + unicode: 81, + advance: 0.6875, + planeBounds: { + left: 0.030466166636655315, + bottom: -0.14391866037519643, + right: 0.6506861771133446, + top: 0.7445045978751964 + }, + atlasBounds: { + left: 214.5, + bottom: 202.5, + right: 251.5, + top: 255.5 + } + }, + { + unicode: 82, + advance: 0.61572265625, + planeBounds: { + left: 0.06350329135836826, + bottom: -0.02169206718177056, + right: 0.6166724898916317, + top: 0.7326295671817705 + }, + atlasBounds: { + left: 186.5, + bottom: 97.5, + right: 219.5, + top: 142.5 + } + }, + { + unicode: 83, + advance: 0.59326171875, + planeBounds: { + left: 0.020778681983368255, + bottom: -0.030073418674698794, + right: 0.5739478805166317, + top: 0.7410109186746989 + }, + atlasBounds: { + left: 454.5, + bottom: 144.5, + right: 487.5, + top: 190.5 + } + }, + { + unicode: 84, + advance: 0.5966796875, + planeBounds: { + left: 0.005480822747511787, + bottom: -0.02169206718177056, + right: 0.5921754272524882, + top: 0.7326295671817705 + }, + atlasBounds: { + left: 112.5, + bottom: 97.5, + right: 147.5, + top: 142.5 + } + }, + { + unicode: 85, + advance: 0.6484375, + planeBounds: { + left: 0.049098994483368255, + bottom: -0.02657487968177056, + right: 0.6022681930166317, + top: 0.7277467546817705 + }, + atlasBounds: { + left: 78.5, + bottom: 97.5, + right: 111.5, + top: 142.5 + } + }, + { + unicode: 86, + advance: 0.63623046875, + planeBounds: { + left: -0.008269192599201152, + bottom: -0.02169206718177056, + right: 0.6454762238492011, + top: 0.7326295671817705 + }, + atlasBounds: { + left: 38.5, + bottom: 97.5, + right: 77.5, + top: 142.5 + } + }, + { + unicode: 87, + advance: 0.88720703125, + planeBounds: { + left: 0.011923628617731797, + bottom: -0.02169206718177056, + right: 0.8835841838822683, + top: 0.7326295671817705 + }, + atlasBounds: { + left: 220.5, + bottom: 97.5, + right: 272.5, + top: 142.5 + } + }, + { + unicode: 88, + advance: 0.626953125, + planeBounds: { + left: 0.004098979136655316, + bottom: -0.02169206718177056, + right: 0.6243189896133446, + top: 0.7326295671817705 + }, + atlasBounds: { + left: 0.5, + bottom: 97.5, + right: 37.5, + top: 142.5 + } + }, + { + unicode: 89, + advance: 0.6005859375, + planeBounds: { + left: -0.010793598988344685, + bottom: -0.02169206718177056, + right: 0.6094264114883446, + top: 0.7326295671817705 + }, + atlasBounds: { + left: 148.5, + bottom: 97.5, + right: 185.5, + top: 142.5 + } + }, + { + unicode: 90, + advance: 0.5986328125, + planeBounds: { + left: 0.024196650733368255, + bottom: -0.02169206718177056, + right: 0.5773658492666317, + top: 0.7326295671817705 + }, + atlasBounds: { + left: 307.5, + bottom: 97.5, + right: 340.5, + top: 142.5 + } + }, + { + unicode: 91, + advance: 0.26513671875, + planeBounds: { + left: 0.05437250871693295, + bottom: -0.17280296457569408, + right: 0.27228764753306706, + top: 0.8329592145756942 + }, + atlasBounds: { + left: 59.5, + bottom: 195.5, + right: 72.5, + top: 255.5 + } + }, + { + unicode: 92, + advance: 0.41015625, + planeBounds: { + left: 0.0014037126767941326, + bottom: -0.08573505127848349, + right: 0.4204712873232059, + top: 0.7356373950284835 + }, + atlasBounds: { + left: 278.5, + bottom: 206.5, + right: 303.5, + top: 255.5 + } + }, + { + unicode: 93, + advance: 0.26513671875, + planeBounds: { + left: -0.020659233400995285, + bottom: -0.17280296457569408, + right: 0.2140186084009953, + top: 0.8329592145756942 + }, + atlasBounds: { + left: 94.5, + bottom: 195.5, + right: 108.5, + top: 255.5 + } + }, + { + unicode: 94, + advance: 0.41796875, + planeBounds: { + left: 0.006855376669722368, + bottom: 0.33229482979472236, + right: 0.40916024833027764, + top: 0.7345997014552776 + }, + atlasBounds: { + left: 486.5, + bottom: 231.5, + right: 510.5, + top: 255.5 + } + }, + { + unicode: 95, + advance: 0.451171875, + planeBounds: { + left: -0.017473255794918804, + bottom: -0.09553469482549765, + right: 0.4686451307949188, + top: 0.021804226075497646 + }, + atlasBounds: { left: 70.5, bottom: 7.5, right: 99.5, top: 14.5 } + }, + { + unicode: 96, + advance: 0.30908203125, + planeBounds: { + left: 0.00391839948107648, + bottom: 0.5860277898277895, + right: 0.2553589442689235, + top: 0.7704175226722105 + }, + atlasBounds: { left: 36.5, bottom: 3.5, right: 51.5, top: 14.5 } + }, + { + unicode: 97, + advance: 0.5439453125, + planeBounds: { + left: 0.028181041080081196, + bottom: -0.029187146002488215, + right: 0.5142994276699189, + top: 0.5575074585024882 + }, + atlasBounds: { + left: 30.5, + bottom: 15.5, + right: 59.5, + top: 50.5 + } + }, + { + unicode: 98, + advance: 0.56103515625, + planeBounds: { + left: 0.048932994205081196, + bottom: -0.032187684160555265, + right: 0.5350513807949189, + top: 0.7724220591605554 + }, + atlasBounds: { + left: 304.5, + bottom: 207.5, + right: 333.5, + top: 255.5 + } + }, + { + unicode: 99, + advance: 0.5234375, + planeBounds: { + left: 0.024518931705081196, + bottom: -0.029187146002488215, + right: 0.5106373182949189, + top: 0.5575074585024882 + }, + atlasBounds: { left: 0.5, bottom: 15.5, right: 29.5, top: 50.5 } + }, + { + unicode: 100, + advance: 0.56396484375, + planeBounds: { + left: 0.026227916080081196, + bottom: -0.032187684160555265, + right: 0.5123463026699189, + top: 0.7724220591605554 + }, + atlasBounds: { + left: 334.5, + bottom: 207.5, + right: 363.5, + top: 255.5 + } + }, + { + unicode: 101, + advance: 0.52978515625, + planeBounds: { + left: 0.026472056705081196, + bottom: -0.029187146002488215, + right: 0.5125904432949189, + top: 0.5575074585024882 + }, + atlasBounds: { + left: 468.5, + bottom: 61.5, + right: 497.5, + top: 96.5 + } + }, + { + unicode: 102, + advance: 0.34716796875, + planeBounds: { + left: 0.004575110905578838, + bottom: -0.022177918535555265, + right: 0.3733545765944212, + top: 0.7824318247855554 + }, + atlasBounds: { + left: 364.5, + bottom: 207.5, + right: 386.5, + top: 255.5 + } + }, + { + unicode: 103, + advance: 0.56103515625, + planeBounds: { + left: 0.026960337955081196, + bottom: -0.22888445766762702, + right: 0.5130787245449189, + top: 0.558962582667627 + }, + atlasBounds: { + left: 28.5, + bottom: 143.5, + right: 57.5, + top: 190.5 + } + }, + { + unicode: 104, + advance: 0.55078125, + planeBounds: { + left: 0.049826556565937666, + bottom: -0.01892352016762703, + right: 0.5024195371840624, + top: 0.768923520167627 + }, + atlasBounds: { + left: 0.5, + bottom: 143.5, + right: 27.5, + top: 190.5 + } + }, + { + unicode: 105, + advance: 0.24267578125, + planeBounds: { + left: 0.046882289688645884, + bottom: -0.01680925468177056, + right: 0.19774661656135412, + top: 0.7375123796817705 + }, + atlasBounds: { + left: 498.5, + bottom: 145.5, + right: 507.5, + top: 190.5 + } + }, + { + unicode: 106, + advance: 0.23876953125, + planeBounds: { + left: -0.048979545900995285, + bottom: -0.2324562772148376, + right: 0.1856982959009953, + top: 0.7397804959648377 + }, + atlasBounds: { + left: 140.5, + bottom: 197.5, + right: 154.5, + top: 255.5 + } + }, + { + unicode: 107, + advance: 0.5068359375, + planeBounds: { + left: 0.044294322330081196, + bottom: -0.01892352016762703, + right: 0.5304127089199189, + top: 0.768923520167627 + }, + atlasBounds: { + left: 58.5, + bottom: 143.5, + right: 87.5, + top: 190.5 + } + }, + { + unicode: 108, + advance: 0.24267578125, + planeBounds: { + left: 0.05428707868157412, + bottom: -0.01892352016762703, + right: 0.18838870256842588, + top: 0.768923520167627 + }, + atlasBounds: { + left: 477.5, + bottom: 208.5, + right: 485.5, + top: 255.5 + } + }, + { + unicode: 109, + advance: 0.87646484375, + planeBounds: { + left: 0.04430890170737297, + bottom: -0.024304333502488215, + right: 0.832155942042627, + top: 0.5623902710024882 + }, + atlasBounds: { + left: 116.5, + bottom: 15.5, + right: 163.5, + top: 50.5 + } + }, + { + unicode: 110, + advance: 0.5517578125, + planeBounds: { + left: 0.049826556565937666, + bottom: -0.024304333502488215, + right: 0.5024195371840624, + top: 0.5623902710024882 + }, + atlasBounds: { + left: 60.5, + bottom: 15.5, + right: 87.5, + top: 50.5 + } + }, + { + unicode: 111, + advance: 0.5703125, + planeBounds: { + left: 0.025090213094224725, + bottom: -0.029187146002488215, + right: 0.5447340056557752, + top: 0.5575074585024882 + }, + atlasBounds: { + left: 193.5, + bottom: 15.5, + right: 224.5, + top: 50.5 + } + }, + { + unicode: 112, + advance: 0.56103515625, + planeBounds: { + left: 0.048444712955081196, + bottom: -0.22644305141762702, + right: 0.5345630995449189, + top: 0.561403988917627 + }, + atlasBounds: { + left: 447.5, + bottom: 208.5, + right: 476.5, + top: 255.5 + } + }, + { + unicode: 113, + advance: 0.568359375, + planeBounds: { + left: 0.025983775455081196, + bottom: -0.22644305141762702, + right: 0.5121021620449189, + top: 0.561403988917627 + }, + atlasBounds: { + left: 417.5, + bottom: 208.5, + right: 446.5, + top: 255.5 + } + }, + { + unicode: 114, + advance: 0.33837890625, + planeBounds: { + left: 0.045180595002291775, + bottom: -0.024304333502488215, + right: 0.34690924874770823, + top: 0.5623902710024882 + }, + atlasBounds: { + left: 449.5, + bottom: 61.5, + right: 467.5, + top: 96.5 + } + }, + { + unicode: 115, + advance: 0.515625, + planeBounds: { + left: 0.021669814448009427, + bottom: -0.029187146002488215, + right: 0.4910254980519906, + top: 0.5575074585024882 + }, + atlasBounds: { + left: 164.5, + bottom: 15.5, + right: 192.5, + top: 50.5 + } + }, + { + unicode: 116, + advance: 0.32666015625, + planeBounds: { + left: -0.019433670483564695, + bottom: -0.02877457520298586, + right: 0.3158203892335647, + top: 0.675258950202986 + }, + atlasBounds: { + left: 418.5, + bottom: 54.5, + right: 438.5, + top: 96.5 + } + }, + { + unicode: 117, + advance: 0.55126953125, + planeBounds: { + left: 0.048117572190937666, + bottom: -0.034069958502488215, + right: 0.5007105528090624, + top: 0.5526246460024882 + }, + atlasBounds: { + left: 88.5, + bottom: 15.5, + right: 115.5, + top: 50.5 + } + }, + { + unicode: 118, + advance: 0.484375, + planeBounds: { + left: -0.002092396419918806, + bottom: -0.02080579450955998, + right: 0.4840259901699188, + top: 0.5491261070095601 + }, + atlasBounds: { + left: 331.5, + bottom: 16.5, + right: 360.5, + top: 50.5 + } + }, + { + unicode: 119, + advance: 0.75146484375, + planeBounds: { + left: -0.002649098431770561, + bottom: -0.02080579450955998, + right: 0.7516725359317705, + top: 0.5491261070095601 + }, + atlasBounds: { + left: 225.5, + bottom: 16.5, + right: 270.5, + top: 50.5 + } + }, + { + unicode: 120, + advance: 0.49560546875, + planeBounds: { + left: -0.0046143729128470395, + bottom: -0.02080579450955998, + right: 0.4982667166628471, + top: 0.5491261070095601 + }, + atlasBounds: { + left: 300.5, + bottom: 16.5, + right: 330.5, + top: 50.5 + } + }, + { + unicode: 121, + advance: 0.47314453125, + planeBounds: { + left: -0.007219349544918806, + bottom: -0.23645281704262702, + right: 0.4788990370449188, + top: 0.551394223292627 + }, + atlasBounds: { + left: 387.5, + bottom: 208.5, + right: 416.5, + top: 255.5 + } + }, + { + unicode: 122, + advance: 0.49560546875, + planeBounds: { + left: 0.018007705073009427, + bottom: -0.02080579450955998, + right: 0.4873633886769906, + top: 0.5491261070095601 + }, + atlasBounds: { + left: 271.5, + bottom: 16.5, + right: 299.5, + top: 50.5 + } + }, + { + unicode: 123, + advance: 0.33837890625, + planeBounds: { + left: 0.011572188891435306, + bottom: -0.20234398020069408, + right: 0.3468262486085647, + top: 0.8034181989506942 + }, + atlasBounds: { + left: 73.5, + bottom: 195.5, + right: 93.5, + top: 255.5 + } + }, + { + unicode: 124, + advance: 0.24365234375, + planeBounds: { + left: 0.06315671142450235, + bottom: -0.15466084787519643, + right: 0.18049563232549765, + top: 0.7337624103751964 + }, + atlasBounds: { + left: 206.5, + bottom: 202.5, + right: 213.5, + top: 255.5 + } + }, + { + unicode: 125, + advance: 0.33837890625, + planeBounds: { + left: -0.010156326733564695, + bottom: -0.20234398020069408, + right: 0.3250977329835647, + top: 0.8034181989506942 + }, + atlasBounds: { + left: 38.5, + bottom: 195.5, + right: 58.5, + top: 255.5 + } + }, + { + unicode: 126, + advance: 0.68017578125, + planeBounds: { + left: 0.046984728997511785, + bottom: 0.1766063915990047, + right: 0.6336793335024882, + top: 0.4112842334009953 + }, + atlasBounds: { left: 0.5, bottom: 0.5, right: 35.5, top: 14.5 } + } + ], + kerning: [] +}; + +// src/nvconnectome.ts +var defaultOptions = { + name: "untitled connectome", + nodeColormap: "warm", + nodeColormapNegative: "winter", + nodeMinColor: 0, + nodeMaxColor: 4, + nodeScale: 3, + edgeColormap: "warm", + edgeColormapNegative: "winter", + edgeMin: 2, + edgeMax: 6, + edgeScale: 1, + legendLineThickness: 0, + showLegend: true +}; +var NVConnectome = class _NVConnectome extends NVMesh3 { + constructor(gl, connectome) { + super(new Float32Array([]), new Uint32Array([]), connectome.name, new Uint8Array([]), 1, true, gl, connectome); + __publicField(this, "gl"); + __publicField(this, "nodesChanged"); + this.gl = gl; + this.type = "connectome" /* CONNECTOME */; + if (this.nodes) { + this.updateLabels(); + } + this.nodesChanged = new EventTarget(); + } + static convertLegacyConnectome(json) { + const connectome = { nodes: [], edges: [], ...defaultOptions }; + for (const prop in json) { + if (prop in defaultOptions) { + const key = prop; + connectome[key] = json[key]; + } + } + const nodes = json.nodes; + for (let i = 0; i < nodes.names.length; i++) { + connectome.nodes.push({ + name: nodes.names[i], + x: nodes.X[i], + y: nodes.Y[i], + z: nodes.Z[i], + colorValue: nodes.Color[i], + sizeValue: nodes.Size[i] + }); + } + for (let i = 0; i < nodes.names.length - 1; i++) { + for (let j = i + 1; j < nodes.names.length; j++) { + const colorValue = json.edges[i * nodes.names.length + j]; + connectome.edges.push({ + first: i, + second: j, + colorValue + }); + } + } + return connectome; + } + static convertFreeSurferConnectome(json, colormap = "warm") { + let isValid = true; + if (!("data_type" in json)) { + isValid = false; + } else if (json.data_type !== "fs_pointset") { + isValid = false; + } + if (!("points" in json)) { + isValid = false; + } + if (!isValid) { + throw Error("not a valid FreeSurfer json pointset"); + } + const nodes = json.points.map((p) => ({ + name: Array.isArray(p.comments) && p.comments.length > 0 && "text" in p.comments[0] ? p.comments[0].text : "", + x: p.coordinates.x, + y: p.coordinates.y, + z: p.coordinates.z, + colorValue: 1, + sizeValue: 1, + metadata: p.comments + })); + const connectome = { + ...defaultOptions, + nodeColormap: colormap, + edgeColormap: colormap, + nodes, + edges: [] + }; + return connectome; + } + updateLabels() { + const nodes = this.nodes; + if (nodes && nodes.length > 0) { + const largest = nodes.reduce((a, b) => a.sizeValue > b.sizeValue ? a : b).sizeValue; + let min4, max5; + if (typeof this.nodeMinColor !== "undefined" && isFinite(this.nodeMinColor)) { + min4 = this.nodeMinColor; + } else { + min4 = nodes[0].colorValue; + for (let i = 1; i < nodes.length; i++) { + if (nodes[i].colorValue < min4) { + min4 = nodes[i].colorValue; + } + } + } + if (typeof this.nodeMaxColor !== "undefined" && isFinite(this.nodeMaxColor)) { + max5 = this.nodeMaxColor; + } else { + max5 = nodes[0].colorValue; + for (let i = 1; i < nodes.length; i++) { + if (nodes[i].colorValue > max5) { + max5 = nodes[i].colorValue; + } + } + } + const lut = cmapper.colormap(this.nodeColormap, this.colormapInvert); + const lutNeg = cmapper.colormap(this.nodeColormapNegative, this.colormapInvert); + const hasNeg = "nodeColormapNegative" in this; + let legendLineThickness = this.legendLineThickness ? this.legendLineThickness : 0; + if (this.showLegend === false) { + legendLineThickness = 0; + } + for (let i = 0; i < nodes.length; i++) { + let color = nodes[i].colorValue; + let isNeg = false; + if (hasNeg && color < 0) { + isNeg = true; + color = -color; + } + if (min4 < max5) { + if (color < min4) { + log.warn("color value lower than min"); + continue; + } + color = (color - min4) / (max5 - min4); + } else { + color = 1; + } + color = Math.round(Math.max(Math.min(255, color * 255))) * 4; + let rgba = [lut[color], lut[color + 1], lut[color + 2], 255]; + if (isNeg) { + rgba = [lutNeg[color], lutNeg[color + 1], lutNeg[color + 2], 255]; + } + rgba = rgba.map((c) => c / 255); + log.debug("adding label for ", nodes[i]); + nodes[i].label = new NVLabel3D( + nodes[i].name, + { + textColor: rgba, + bulletScale: nodes[i].sizeValue / largest, + bulletColor: rgba, + lineWidth: legendLineThickness, + lineColor: rgba, + textScale: 1, + textAlignment: "left" /* LEFT */, + lineTerminator: "none" /* NONE */ + }, + [nodes[i].x, nodes[i].y, nodes[i].z] + ); + log.debug("label for node:", nodes[i].label); + } + } + } + addConnectomeNode(node) { + log.debug("adding node", node); + if (!this.nodes) { + throw new Error("nodes not defined"); + } + ; + this.nodes.push(node); + this.updateLabels(); + this.nodesChanged.dispatchEvent(new CustomEvent("nodeAdded", { detail: { node } })); + } + deleteConnectomeNode(node) { + const index = this.nodes.indexOf(node); + const edges = this.edges; + if (edges) { + this.edges = edges.filter((e) => e.first !== index && e.second !== index); + } + this.nodes = this.nodes.filter((n) => n !== node); + this.updateLabels(); + this.updateConnectome(this.gl); + this.nodesChanged.dispatchEvent(new CustomEvent("nodeDeleted", { detail: { node } })); + } + updateConnectomeNodeByIndex(index, updatedNode) { + ; + this.nodes[index] = updatedNode; + this.updateLabels(); + this.updateConnectome(this.gl); + this.nodesChanged.dispatchEvent(new CustomEvent("nodeChanged", { detail: { node: updatedNode } })); + } + updateConnectomeNodeByPoint(point, updatedNode) { + const nodes = this.nodes; + if (!nodes) { + throw new Error("Node to update does not exist"); + } + const node = nodes.find((node2) => NVUtilities.arraysAreEqual([node2.x, node2.y, node2.z], point)); + if (!node) { + throw new Error(`Node with point ${point} to update does not exist`); + } + const index = nodes.findIndex((n) => n === node); + this.updateConnectomeNodeByIndex(index, updatedNode); + } + addConnectomeEdge(first, second, colorValue) { + const edges = this.edges; + let edge = edges.find((f) => (f.first === first || f.second === first) && f.first + f.second === first + second); + if (edge) { + return edge; + } + edge = { first, second, colorValue }; + edges.push(edge); + this.updateConnectome(this.gl); + return edge; + } + deleteConnectomeEdge(first, second) { + const edges = this.edges; + const edge = edges.find((f) => (f.first === first || f.first === second) && f.first + f.second === first + second); + if (edge) { + this.edges = edges.filter((e) => e !== edge); + } else { + throw new Error(`edge between ${first} and ${second} not found`); + } + this.updateConnectome(this.gl); + return edge; + } + findClosestConnectomeNode(point, distance4) { + const nodes = this.nodes; + if (!nodes || nodes.length === 0) { + return null; + } + const closeNodes = nodes.map((n, i) => ({ + node: n, + distance: Math.sqrt(Math.pow(n.x - point[0], 2) + Math.pow(n.y - point[1], 2) + Math.pow(n.z - point[2], 2)), + index: i + })).filter((n) => n.distance < distance4).sort((a, b) => a.distance - b.distance); + if (closeNodes.length > 0) { + return closeNodes[0].node; + } else { + return null; + } + } + updateConnectome(gl) { + const tris = []; + const pts = []; + const rgba255 = []; + let lut = cmapper.colormap(this.nodeColormap, this.colormapInvert); + let lutNeg = cmapper.colormap(this.nodeColormapNegative, this.colormapInvert); + let hasNeg = "nodeColormapNegative" in this; + if (this.nodeMinColor === void 0) { + this.nodeMinColor = NaN; + } + if (this.nodeMaxColor === void 0) { + this.nodeMaxColor = NaN; + } + if (this.edgeMin === void 0) { + this.edgeMin = NaN; + } + if (this.edgeMax === void 0) { + this.edgeMax = NaN; + } + let min4 = this.nodeMinColor; + let max5 = this.nodeMaxColor; + if (!isFinite(min4) || !isFinite(min4)) { + const nodes2 = this.nodes; + min4 = nodes2[0].colorValue; + max5 = nodes2[0].colorValue; + for (let i = 0; i < nodes2.length; i++) { + min4 = Math.min(min4, nodes2[i].colorValue); + max5 = Math.max(max5, nodes2[i].colorValue); + } + } + const nodes = this.nodes; + const nNode = nodes.length; + for (let i = 0; i < nNode; i++) { + const radius = nodes[i].sizeValue * this.nodeScale; + if (radius <= 0) { + continue; + } + let color = nodes[i].colorValue; + let isNeg = false; + if (hasNeg && color < 0) { + isNeg = true; + color = -color; + } + if (min4 < max5) { + if (color < min4) { + continue; + } + color = (color - min4) / (max5 - min4); + } else { + color = 1; + } + color = Math.round(Math.max(Math.min(255, color * 255))) * 4; + let rgba = [lut[color], lut[color + 1], lut[color + 2], 255]; + if (isNeg) { + rgba = [lutNeg[color], lutNeg[color + 1], lutNeg[color + 2], 255]; + } + const pt = vec3_exports.fromValues(nodes[i].x, nodes[i].y, nodes[i].z); + NiivueObject3D.makeColoredSphere(pts, tris, rgba255, radius, pt, rgba); + } + lut = cmapper.colormap(this.edgeColormap, this.colormapInvert); + lutNeg = cmapper.colormap(this.edgeColormapNegative, this.colormapInvert); + hasNeg = "edgeColormapNegative" in this; + const edges = this.edges; + if (edges !== void 0 && edges.length > 0) { + min4 = this.edgeMin; + max5 = this.edgeMax; + if (!isFinite(min4) || !isFinite(min4)) { + min4 = edges[0].colorValue; + max5 = edges[0].colorValue; + for (let i = 0; i < edges.length; i++) { + min4 = Math.min(min4, edges[i].colorValue); + max5 = Math.max(max5, edges[i].colorValue); + } + } + for (const edge of edges) { + let color = edge.colorValue; + const isNeg = hasNeg && color < 0; + if (isNeg) { + color = -color; + } + const radius = color * this.edgeScale; + if (radius <= 0) { + continue; + } + if (min4 < max5) { + if (color < min4) { + continue; + } + color = (color - min4) / (max5 - min4); + } else { + color = 1; + } + color = Math.round(Math.max(Math.min(255, color * 255))) * 4; + let rgba = [lut[color], lut[color + 1], lut[color + 2], 255]; + if (isNeg) { + rgba = [lutNeg[color], lutNeg[color + 1], lutNeg[color + 2], 255]; + } + const pti = vec3_exports.fromValues(nodes[edge.first].x, nodes[edge.first].y, nodes[edge.first].z); + const ptj = vec3_exports.fromValues(nodes[edge.second].x, nodes[edge.second].y, nodes[edge.second].z); + NiivueObject3D.makeColoredCylinder(pts, tris, rgba255, pti, ptj, radius, rgba); + } + } + const pts32 = new Float32Array(pts); + const tris32 = new Uint32Array(tris); + const obj = NVMeshUtilities.getExtents(pts32); + this.furthestVertexFromOrigin = obj.mxDx; + this.extentsMin = obj.extentsMin; + this.extentsMax = obj.extentsMax; + const posNormClr = this.generatePosNormClr(pts32, tris32, new Uint8Array(rgba255)); + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer); + gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, Uint32Array.from(tris32), gl.STATIC_DRAW); + gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer); + gl.bufferData(gl.ARRAY_BUFFER, Float32Array.from(posNormClr), gl.STATIC_DRAW); + this.indexCount = tris.length; + } + updateMesh(gl) { + this.updateConnectome(gl); + this.updateLabels(); + } + json() { + const json = {}; + for (const prop in this) { + if (prop in defaultOptions || prop === "nodes" || prop === "edges") { + json[prop] = this[prop]; + } + } + return json; + } + /** + * Factory method to create connectome from options + */ + static async loadConnectomeFromUrl(gl, url) { + const response = await fetch(url); + const json = await response.json(); + return new _NVConnectome(gl, json); + } +}; + +// src/nvimage/RenderingUtils.ts +function toNiivueObject3D(nvImage, id, gl) { + if (!nvImage.dimsRAS || !nvImage.matRAS || !nvImage.pixDimsRAS || !nvImage.vox2mm) { + throw new Error("Cannot create NiivueObject3D: Missing required RAS properties or vox2mm access on NVImage."); + } + const dimsRAS = nvImage.dimsRAS; + const matRAS = nvImage.matRAS; + const pixDimsRAS = nvImage.pixDimsRAS; + const L = -0.5; + const P = -0.5; + const I = -0.5; + const R = dimsRAS[1] - 1 + 0.5; + const A = dimsRAS[2] - 1 + 0.5; + const S = dimsRAS[3] - 1 + 0.5; + const vox2mmFn = nvImage.vox2mm; + const LPI = vox2mmFn.call(nvImage, [L, P, I], matRAS); + const LAI = vox2mmFn.call(nvImage, [L, A, I], matRAS); + const LPS = vox2mmFn.call(nvImage, [L, P, S], matRAS); + const LAS = vox2mmFn.call(nvImage, [L, A, S], matRAS); + const RPI = vox2mmFn.call(nvImage, [R, P, I], matRAS); + const RAI = vox2mmFn.call(nvImage, [R, A, I], matRAS); + const RPS = vox2mmFn.call(nvImage, [R, P, S], matRAS); + const RAS = vox2mmFn.call(nvImage, [R, A, S], matRAS); + const posTex = [ + // Superior face vertices (Indices 0-3) + ...LPS, + ...[0, 0, 1], + // 0 + ...RPS, + ...[1, 0, 1], + // 1 + ...RAS, + ...[1, 1, 1], + // 2 + ...LAS, + ...[0, 1, 1], + // 3 + // Inferior face vertices (Indices 4-7) + ...LPI, + ...[0, 0, 0], + // 4 + ...LAI, + ...[0, 1, 0], + // 5 + ...RAI, + ...[1, 1, 0], + // 6 + ...RPI, + ...[1, 0, 0] + // 7 + ]; + const indexBuffer = gl.createBuffer(); + if (!indexBuffer) { + throw new Error("Failed to create GL index buffer"); + } + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, indexBuffer); + const indices = [ + 0, + 3, + 2, + 2, + 1, + 0, + // Top + 4, + 7, + 6, + 6, + 5, + 4, + // Bottom + 5, + 6, + 2, + 2, + 3, + 5, + // Front -> Corresponds to LAI(5), RAI(6), RAS(2) / RAS(2), LAS(3), LAI(5) + 4, + 0, + 1, + 1, + 7, + 4, + // Back -> Corresponds to LPI(4), LPS(0), RPS(1) / RPS(1), RPI(7), LPI(4) + 7, + 1, + 2, + 2, + 6, + 7, + // Right -> Corresponds to RPI(7), RPS(1), RAS(2) / RAS(2), RAI(6), RPI(7) + 4, + 5, + 3, + 3, + 0, + 4 + // Left -> Corresponds to LPI(4), LAI(5), LAS(3) / LAS(3), LPS(0), LPI(4) + ]; + gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(indices), gl.STATIC_DRAW); + const posTexBuffer = gl.createBuffer(); + if (!posTexBuffer) { + throw new Error("Failed to create GL vertex buffer"); + } + gl.bindBuffer(gl.ARRAY_BUFFER, posTexBuffer); + gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(posTex), gl.STATIC_DRAW); + const vao = gl.createVertexArray(); + if (!vao) { + throw new Error("Failed to create GL VAO"); + } + gl.bindVertexArray(vao); + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, indexBuffer); + gl.bindBuffer(gl.ARRAY_BUFFER, posTexBuffer); + const stride = 24; + gl.enableVertexAttribArray(0); + gl.vertexAttribPointer(0, 3, gl.FLOAT, false, stride, 0); + gl.enableVertexAttribArray(1); + gl.vertexAttribPointer(1, 3, gl.FLOAT, false, stride, 12); + gl.bindVertexArray(null); + const obj3D = new NiivueObject3D(id, posTexBuffer, gl.TRIANGLES, indices.length, indexBuffer, vao); + const allCorners = [...LPS, ...RPS, ...RAS, ...LAS, ...LPI, ...LAI, ...RAI, ...RPI]; + const extents = getExtents(allCorners); + obj3D.extentsMin = extents.min.slice(); + obj3D.extentsMax = extents.max.slice(); + obj3D.furthestVertexFromOrigin = extents.furthestVertexFromOrigin; + obj3D.originNegate = vec3_exports.clone(extents.origin); + vec3_exports.negate(obj3D.originNegate, obj3D.originNegate); + obj3D.fieldOfViewDeObliqueMM = [dimsRAS[1] * pixDimsRAS[1], dimsRAS[2] * pixDimsRAS[2], dimsRAS[3] * pixDimsRAS[3]]; + return obj3D; +} + +// src/drawing/rle.ts +function encodeRLE(data) { + const dl = data.length; + let dp = 0; + const r = new Uint8Array(dl + Math.ceil(0.01 * dl)); + const rI = new Int8Array(r.buffer); + let rp = 0; + while (dp < dl) { + let v = data[dp]; + dp++; + let rl = 1; + while (rl < 129 && dp < dl && data[dp] === v) { + dp++; + rl++; + } + if (rl > 1) { + rI[rp] = -rl + 1; + rp++; + r[rp] = v; + rp++; + continue; + } + while (dp < dl) { + if (rl > 127) { + break; + } + if (dp + 2 < dl) { + if (v !== data[dp] && data[dp + 2] === data[dp] && data[dp + 1] === data[dp]) { + break; + } + } + v = data[dp]; + dp++; + rl++; + } + r[rp] = rl - 1; + rp++; + for (let i = 0; i < rl; i++) { + r[rp] = data[dp - rl + i]; + rp++; + } + } + log.debug("PackBits " + dl + " -> " + rp + " bytes (x" + dl / rp + ")"); + return r.slice(0, rp); +} +function decodeRLE(rle, decodedlen) { + const r = new Uint8Array(rle.buffer); + const rI = new Int8Array(r.buffer); + let rp = 0; + const d = new Uint8Array(decodedlen); + let dp = 0; + while (rp < r.length) { + const hdr = rI[rp]; + rp++; + if (hdr < 0) { + const v = rI[rp]; + rp++; + for (let i = 0; i < 1 - hdr; i++) { + d[dp] = v; + dp++; + } + } else { + for (let i = 0; i < hdr + 1; i++) { + d[dp] = rI[rp]; + rp++; + dp++; + } + } + } + return d; +} + +// src/drawing/undo.ts +var drawUndo = ({ + drawUndoBitmaps, + currentDrawUndoBitmap, + drawBitmap +}) => { + const len4 = drawUndoBitmaps.length; + if (len4 < 1) { + log.debug("undo bitmaps not loaded"); + return; + } + currentDrawUndoBitmap--; + if (currentDrawUndoBitmap < 0) { + currentDrawUndoBitmap = len4 - 1; + } + if (currentDrawUndoBitmap >= len4) { + currentDrawUndoBitmap = 0; + } + if (drawUndoBitmaps[currentDrawUndoBitmap].length < 2) { + log.debug("drawUndo is misbehaving"); + return; + } + drawBitmap = decodeRLE(drawUndoBitmaps[currentDrawUndoBitmap], drawBitmap.length); + return { drawBitmap, currentDrawUndoBitmap }; +}; + +// src/drawing/masks.ts +function findBoundarySlices(sliceType, drawBitmap, dims) { + const { dimX, dimY, dimZ } = dims; + let axisSize; + if (sliceType === 0 /* AXIAL */) { + axisSize = dimZ; + } else if (sliceType === 1 /* CORONAL */) { + axisSize = dimY; + } else if (sliceType === 2 /* SAGITTAL */) { + axisSize = dimX; + } else { + return null; + } + let firstSliceWithData = -1; + let lastSliceWithData = -1; + for (let slice2 = 0; slice2 < axisSize; slice2++) { + let hasData = false; + if (sliceType === 0 /* AXIAL */) { + const offset = slice2 * dimX * dimY; + for (let i = 0; i < dimX * dimY; i++) { + if (drawBitmap[offset + i] > 0) { + hasData = true; + break; + } + } + } else if (sliceType === 1 /* CORONAL */) { + for (let z = 0; z < dimZ; z++) { + for (let x = 0; x < dimX; x++) { + const idx = x + slice2 * dimX + z * dimX * dimY; + if (drawBitmap[idx] > 0) { + hasData = true; + break; + } + } + if (hasData) { + break; + } + } + } else if (sliceType === 2 /* SAGITTAL */) { + for (let z = 0; z < dimZ; z++) { + for (let y = 0; y < dimY; y++) { + const idx = slice2 + y * dimX + z * dimX * dimY; + if (drawBitmap[idx] > 0) { + hasData = true; + break; + } + } + if (hasData) { + break; + } + } + } + if (hasData) { + if (firstSliceWithData === -1) { + firstSliceWithData = slice2; + } + lastSliceWithData = slice2; + } + } + if (firstSliceWithData === -1 || lastSliceWithData === -1) { + return null; + } + return { first: firstSliceWithData, last: lastSliceWithData }; +} +function extractSlice(sliceIndex, sliceType, drawBitmap, dims) { + const { dimX, dimY, dimZ } = dims; + let sliceData; + if (sliceType === 0 /* AXIAL */) { + sliceData = new Float32Array(dimX * dimY); + const offset = sliceIndex * dimX * dimY; + for (let i = 0; i < dimX * dimY; i++) { + sliceData[i] = drawBitmap[offset + i]; + } + } else if (sliceType === 1 /* CORONAL */) { + sliceData = new Float32Array(dimX * dimZ); + for (let z = 0; z < dimZ; z++) { + for (let x = 0; x < dimX; x++) { + const srcIdx = x + sliceIndex * dimX + z * dimX * dimY; + const dstIdx = x + z * dimX; + sliceData[dstIdx] = drawBitmap[srcIdx]; + } + } + } else if (sliceType === 2 /* SAGITTAL */) { + sliceData = new Float32Array(dimY * dimZ); + for (let z = 0; z < dimZ; z++) { + for (let y = 0; y < dimY; y++) { + const srcIdx = sliceIndex + y * dimX + z * dimX * dimY; + const dstIdx = y + z * dimY; + sliceData[dstIdx] = drawBitmap[srcIdx]; + } + } + } else { + throw new Error("Invalid slice type"); + } + return sliceData; +} +function extractIntensitySlice(sliceIndex, sliceType, imageData, dims, maxVal) { + const { dimX, dimY, dimZ } = dims; + let sliceData; + if (sliceType === 0 /* AXIAL */) { + sliceData = new Float32Array(dimX * dimY); + const offset = sliceIndex * dimX * dimY; + for (let i = 0; i < dimX * dimY; i++) { + sliceData[i] = imageData[offset + i] / maxVal; + } + } else if (sliceType === 1 /* CORONAL */) { + sliceData = new Float32Array(dimX * dimZ); + for (let z = 0; z < dimZ; z++) { + for (let x = 0; x < dimX; x++) { + const srcIdx = x + sliceIndex * dimX + z * dimX * dimY; + const dstIdx = x + z * dimX; + sliceData[dstIdx] = imageData[srcIdx] / maxVal; + } + } + } else if (sliceType === 2 /* SAGITTAL */) { + sliceData = new Float32Array(dimY * dimZ); + for (let z = 0; z < dimZ; z++) { + for (let y = 0; y < dimY; y++) { + const srcIdx = sliceIndex + y * dimX + z * dimX * dimY; + const dstIdx = y + z * dimY; + sliceData[dstIdx] = imageData[srcIdx] / maxVal; + } + } + } else { + throw new Error("Invalid slice type"); + } + return sliceData; +} +function insertColorMask(mask, sliceIndex, sliceType, drawBitmap, dims, binaryThreshold, color) { + const { dimX, dimY, dimZ } = dims; + if (sliceType === 0 /* AXIAL */) { + const offset = sliceIndex * dimX * dimY; + for (let i = 0; i < mask.length; i++) { + if (mask[i] >= binaryThreshold) { + drawBitmap[offset + i] = color; + } + } + } else if (sliceType === 1 /* CORONAL */) { + for (let z = 0; z < dimZ; z++) { + for (let x = 0; x < dimX; x++) { + const srcIdx = x + z * dimX; + const dstIdx = x + sliceIndex * dimX + z * dimX * dimY; + if (mask[srcIdx] >= binaryThreshold) { + drawBitmap[dstIdx] = color; + } + } + } + } else if (sliceType === 2 /* SAGITTAL */) { + for (let z = 0; z < dimZ; z++) { + for (let y = 0; y < dimY; y++) { + const srcIdx = y + z * dimY; + const dstIdx = sliceIndex + y * dimX + z * dimX * dimY; + if (mask[srcIdx] >= binaryThreshold) { + drawBitmap[dstIdx] = color; + } + } + } + } else { + throw new Error("Invalid slice type"); + } +} +function smoothSlice(slice2, width, height) { + if (width < 3 || height < 3) { + return; + } + const temp = new Float32Array(slice2.length); + for (let y = 0; y < height; y++) { + for (let x = 0; x < width; x++) { + const idx = x + y * width; + if (x === 0 || x === width - 1) { + temp[idx] = slice2[idx]; + } else { + temp[idx] = (slice2[idx - 1] + 2 * slice2[idx] + slice2[idx + 1]) * 0.25; + } + } + } + for (let y = 0; y < height; y++) { + for (let x = 0; x < width; x++) { + const idx = x + y * width; + if (y === 0 || y === height - 1) { + slice2[idx] = temp[idx]; + } else { + slice2[idx] = (temp[idx - width] + 2 * temp[idx] + temp[idx + width]) * 0.25; + } + } + } +} +function calculateIntensityWeight(intensity1, intensity2, targetIntensity, intensitySigma) { + const diff1 = Math.abs(targetIntensity - intensity1); + const diff2 = Math.abs(targetIntensity - intensity2); + const weight1 = Math.exp(-diff1 * diff1 / (2 * intensitySigma * intensitySigma)); + const weight2 = Math.exp(-diff2 * diff2 / (2 * intensitySigma * intensitySigma)); + const totalWeight = weight1 + weight2; + if (totalWeight < 1e-6) { + return 0.5; + } + return weight1 / totalWeight; +} +function doGeometricInterpolation(sliceLow, sliceHigh, z, sliceIndexLow, sliceIndexHigh, interpolatedSlice) { + const fracHigh = (z - sliceIndexLow) / (sliceIndexHigh - sliceIndexLow); + const fracLow = 1 - fracHigh; + for (let i = 0; i < sliceLow.length; i++) { + interpolatedSlice[i] = sliceLow[i] * fracLow + sliceHigh[i] * fracHigh; + } +} +function doIntensityGuidedInterpolation(sliceLow, sliceHigh, z, sliceIndexLow, sliceIndexHigh, interpolatedSlice, opts, intensityLow, intensityHigh, targetIntensity) { + const baseFracHigh = (z - sliceIndexLow) / (sliceIndexHigh - sliceIndexLow); + const baseFracLow = 1 - baseFracHigh; + for (let i = 0; i < sliceLow.length; i++) { + if (sliceLow[i] > 0 || sliceHigh[i] > 0) { + const intensityWeight = calculateIntensityWeight( + intensityLow[i], + intensityHigh[i], + targetIntensity[i], + opts.intensitySigma + ); + const alpha = opts.intensityWeight; + const combinedWeightLow = alpha * intensityWeight + (1 - alpha) * baseFracLow; + const combinedWeightHigh = 1 - combinedWeightLow; + interpolatedSlice[i] = sliceLow[i] * combinedWeightLow + sliceHigh[i] * combinedWeightHigh; + } else { + interpolatedSlice[i] = sliceLow[i] * baseFracLow + sliceHigh[i] * baseFracHigh; + } + } +} +function interpolateMaskSlices(drawBitmap, dims, imageData, maxVal, sliceIndexLow, sliceIndexHigh, options, refreshDrawingCallback) { + const { dimX, dimY, dimZ } = dims; + const sliceType = options.sliceType ?? 0 /* AXIAL */; + let sliceWidth, sliceHeight, maxSliceIndex; + if (sliceType === 0 /* AXIAL */) { + sliceWidth = dimX; + sliceHeight = dimY; + maxSliceIndex = dimZ - 1; + } else if (sliceType === 1 /* CORONAL */) { + sliceWidth = dimX; + sliceHeight = dimZ; + maxSliceIndex = dimY - 1; + } else if (sliceType === 2 /* SAGITTAL */) { + sliceWidth = dimY; + sliceHeight = dimZ; + maxSliceIndex = dimX - 1; + } else { + throw new Error("Invalid slice type. Must be AXIAL, CORONAL, or SAGITTAL"); + } + const opts = { + intensityWeight: options.intensityWeight ?? 0.7, + binaryThreshold: options.binaryThreshold ?? 0.375, + intensitySigma: options.intensitySigma ?? 0.1, + applySmoothingToSlices: options.applySmoothingToSlices ?? true, + useIntensityGuided: options.useIntensityGuided ?? true + }; + if (sliceIndexLow !== void 0 && sliceIndexHigh !== void 0) { + if (sliceIndexLow >= sliceIndexHigh) { + throw new Error("Low slice index must be less than high slice index"); + } + if (sliceIndexLow < 0 || sliceIndexHigh > maxSliceIndex) { + throw new Error(`Slice indices out of bounds [0, ${maxSliceIndex}]`); + } + } + const colorRanges = /* @__PURE__ */ new Map(); + for (let sliceIdx = 0; sliceIdx <= maxSliceIndex; sliceIdx++) { + const slice2 = extractSlice(sliceIdx, sliceType, drawBitmap, dims); + for (let i = 0; i < slice2.length; i++) { + const color = slice2[i]; + if (color > 0) { + if (!colorRanges.has(color)) { + colorRanges.set(color, { min: sliceIdx, max: sliceIdx }); + } else { + const range2 = colorRanges.get(color); + range2.min = Math.min(range2.min, sliceIdx); + range2.max = Math.max(range2.max, sliceIdx); + } + } + } + } + for (const [color, range2] of colorRanges) { + const colorSliceLow = sliceIndexLow !== void 0 ? Math.max(sliceIndexLow, range2.min) : range2.min; + const colorSliceHigh = sliceIndexHigh !== void 0 ? Math.min(sliceIndexHigh, range2.max) : range2.max; + if (colorSliceLow >= colorSliceHigh || colorSliceHigh - colorSliceLow < 2) { + continue; + } + const sliceLow = extractSlice(colorSliceLow, sliceType, drawBitmap, dims); + const sliceHigh = extractSlice(colorSliceHigh, sliceType, drawBitmap, dims); + const colorMaskLow = new Float32Array(sliceLow.length); + const colorMaskHigh = new Float32Array(sliceHigh.length); + for (let i = 0; i < sliceLow.length; i++) { + colorMaskLow[i] = sliceLow[i] === color ? 1 : 0; + colorMaskHigh[i] = sliceHigh[i] === color ? 1 : 0; + } + if (opts.applySmoothingToSlices) { + smoothSlice(colorMaskLow, sliceWidth, sliceHeight); + smoothSlice(colorMaskHigh, sliceWidth, sliceHeight); + } + for (let z = colorSliceLow + 1; z < colorSliceHigh; z++) { + const colorInterpolated = new Float32Array(sliceWidth * sliceHeight); + if (opts.useIntensityGuided && imageData) { + const intensityLow = extractIntensitySlice(colorSliceLow, sliceType, imageData, dims, maxVal); + const intensityHigh = extractIntensitySlice(colorSliceHigh, sliceType, imageData, dims, maxVal); + const targetIntensity = extractIntensitySlice(z, sliceType, imageData, dims, maxVal); + doIntensityGuidedInterpolation( + colorMaskLow, + colorMaskHigh, + z, + colorSliceLow, + colorSliceHigh, + colorInterpolated, + opts, + intensityLow, + intensityHigh, + targetIntensity + ); + } else { + doGeometricInterpolation(colorMaskLow, colorMaskHigh, z, colorSliceLow, colorSliceHigh, colorInterpolated); + } + insertColorMask(colorInterpolated, z, sliceType, drawBitmap, dims, opts.binaryThreshold, color); + } + } + refreshDrawingCallback(); +} + +// src/shader-srcs.ts +var vertRenderShader = `#version 300 es +#line 4 +layout(location=0) in vec3 pos; +layout(location=1) in vec3 texCoords; +uniform mat4 mvpMtx; +out vec3 vColor; +void main(void) { + gl_Position = mvpMtx * vec4(pos, 1.0); + vColor = texCoords; +}`; +var kDrawFunc = ` + vec4 drawColor(float scalar, float drawOpacity) { + float nlayer = float(textureSize(colormap, 0).y); + float layer = (nlayer - 0.5) / nlayer; + vec4 dcolor = texture(colormap, vec2((scalar * 255.0)/256.0 + 0.5/256.0, layer)).rgba; + dcolor.a *= drawOpacity; + return dcolor; +}`; +var kRenderFunc = `vec3 GetBackPosition(vec3 startPositionTex) { + vec3 startPosition = startPositionTex * volScale; + vec3 invR = 1.0 / rayDir; + vec3 tbot = invR * (vec3(0.0)-startPosition); + vec3 ttop = invR * (volScale-startPosition); + vec3 tmax = max(ttop, tbot); + vec2 t = min(tmax.xx, tmax.yz); + vec3 endPosition = startPosition + (rayDir * min(t.x, t.y)); + //convert world position back to texture position: + endPosition = endPosition / volScale; + return endPosition; +} + +float distance2Plane(in vec4 samplePos, in vec4 clipPlane) { + // treat clipPlane.a > 1 as "no clip" sentinel (keeps existing behavior) + if (clipPlane.a > 1.0) { + return 1000.0; // sentinel large distance + } + vec3 n = clipPlane.xyz; + const float EPS = 1e-6; + float nlen = length(n); + if (nlen < EPS) { + return 1000.0; // invalid plane normal + } + // signed plane value: dot(n, p-0.5) + a + float signedDist = dot(n, samplePos.xyz - 0.5) + clipPlane.a; + // perpendicular (Euclidean) distance is |signedDist| / |n| + return abs(signedDist) / nlen; +} + +// see if clip plane trims ray sampling range sampleStartEnd.x..y +void clipSampleRange(in vec3 dir, in vec4 rayStart, in vec4 clipPlane, inout vec2 sampleStartEnd, inout bool hasClip) { + const float CSR_EPS = 1e-6; + // quick exit: no clip plane + if (clipPlane.a > 1.0) + return; + hasClip = true; + // quick exit: empty range + if ((sampleStartEnd.y - sampleStartEnd.x) <= CSR_EPS) + return; + // Which side does the ray start on? (plane eqn: dot(n, p-0.5) + a = 0) + float sampleSide = dot(clipPlane.xyz, rayStart.xyz - 0.5) + clipPlane.a; + bool startsFront = (sampleSide < 0.0); + float dis = - 1.0; + // plane normal dot ray direction + float cdot = dot(dir, clipPlane.xyz); + // avoid division by 0 for near-parallel plne + if (abs(cdot) >= CSR_EPS) + dis = (-clipPlane.a - dot(clipPlane.xyz, rayStart.xyz - 0.5)) / cdot; + if (dis < 0.0 || dis > sampleStartEnd.y + CSR_EPS) { + if (startsFront) + sampleStartEnd = vec2(0.0, 0.0); + return; + } + bool frontface = (cdot > 0.0); + if (frontface) + sampleStartEnd.x = max(sampleStartEnd.x, dis); + else + sampleStartEnd.y = min(sampleStartEnd.y, dis); + // if nothing remains, mark empty + if (sampleStartEnd.y - sampleStartEnd.x <= CSR_EPS) + sampleStartEnd = vec2(0.0, 0.0); +} + +bool skipSample (float pos, vec2 sampleRange) { + return (pos < sampleRange.x || pos > sampleRange.y); +} + +float frac2ndc(vec3 frac) { +//https://stackoverflow.com/questions/7777913/how-to-render-depth-linearly-in-modern-opengl-with-gl-fragcoord-z-in-fragment-sh + vec4 pos = vec4(frac.xyz, 1.0); //fraction + vec4 dim = vec4(vec3(textureSize(volume, 0)), 1.0); + pos = pos * dim; + vec4 shim = vec4(-0.5, -0.5, -0.5, 0.0); + pos += shim; + vec4 mm = transpose(matRAS) * pos; + float z_ndc = (mvpMtx * vec4(mm.xyz, 1.0)).z; + return (z_ndc + 1.0) / 2.0; +}` + kDrawFunc; +var kRenderInit = `void main() { + if (fColor.x > 2.0) { + fColor = vec4(1.0, 0.0, 0.0, 0.5); + return; + } + fColor = vec4(0.0,0.0,0.0,0.0); + vec4 clipPlaneColorX = clipPlaneColor; + //if (clipPlaneColor.a < 0.0) + // clipPlaneColorX.a = - 1.0; + bool isColorPlaneInVolume = false; + if (clipPlaneColorX.a < 0.0) { + isColorPlaneInVolume = true; + clipPlaneColorX.a = 0.0; + } + //fColor = vec4(vColor.rgb, 1.0); return; + vec3 start = vColor; + gl_FragDepth = 1.0; + vec3 backPosition = GetBackPosition(start); + // fColor = vec4(backPosition, 1.0); return; + vec3 dir = normalize(backPosition - start); + //clipVolumeStart(start, backPosition); + dir = normalize(dir); + float len = length(backPosition - start); + float lenVox = length((texVox * start) - (texVox * backPosition)); + if ((lenVox < 0.5) || (len > 3.0)) { //length limit for parallel rays + return; + } + float sliceSize = len / lenVox; //e.g. if ray length is 1.0 and traverses 50 voxels, each voxel is 0.02 in unit cube + float stepSize = sliceSize; //quality: larger step is faster traversal, but fewer samples + float opacityCorrection = stepSize/sliceSize; + vec4 deltaDir = vec4(dir.xyz * stepSize, stepSize); + vec4 samplePos = vec4(start.xyz, 0.0); //ray position + + vec2 sampleRange = vec2(0.0, len); + bool hasClip = false; + for (int i = 0; i < MAX_CLIP_PLANES; i++) + clipSampleRange(dir, samplePos, clipPlanes[i], sampleRange, hasClip); + bool isClip = (sampleRange.x > 0.0) || ((sampleRange.y < len) && (sampleRange.y > 0.0)); + float stepSizeFast = sliceSize * 1.9; + vec4 deltaDirFast = vec4(dir.xyz * stepSizeFast, stepSizeFast); + if ((isClipCutaway) && (sampleRange.x <= 0.0) && (sampleRange.y >= len)) { + //completely clipped, but ray does not intersect plane + if (hasClip) + samplePos.a = len + 1.0; + else + sampleRange = vec2(0.0, 0.0); + } + if ((!isClipCutaway) && (sampleRange.x >= sampleRange.y)) + samplePos.a = len + 1.0; + while (samplePos.a <= len) { + if (skipSample(samplePos.a, sampleRange) ^^ isClipCutaway) { + samplePos += deltaDirFast; + continue; + } + float val = texture(volume, samplePos.xyz).a; + if (val > 0.01) + break; + samplePos += deltaDirFast; //advance ray position + } + float drawOpacityA = renderDrawAmbientOcclusionXY.y; + if ((samplePos.a >= len) && (((overlays < 1.0) && (drawOpacityA <= 0.0) ) || (backgroundMasksOverlays > 0))) { + if (isClip) + fColor += clipPlaneColorX; + return; + } + fColor = vec4(1.0, 1.0, 1.0, 1.0); + //gl_FragDepth = frac2ndc(samplePos.xyz); //crude due to fast pass resolution + if (samplePos.a > deltaDirFast.a ) + samplePos -= deltaDirFast; + //end: fast pass + vec4 colAcc = vec4(0.0,0.0,0.0,0.0); + vec4 firstHit = vec4(0.0,0.0,0.0,2.0 * len); + const float earlyTermination = 0.95; + float backNearest = len; //assume no hit + float ran = fract(sin(gl_FragCoord.x * 12.9898 + gl_FragCoord.y * 78.233) * 43758.5453); + // clip planes create steep gradients: reduce aliasing with more jitter + if (isClip) + samplePos += deltaDir * ran * 1.41; //jitter ray + else + samplePos += deltaDir * ran; //jitter ray +`; +var kRenderTail = ` + if (firstHit.a < len) { + gl_FragDepth = frac2ndc(firstHit.xyz); + vec4 paqdSample = texture(paqd, samplePos.xyz); + if (paqdSample.a > 0.0) { + //colAcc.rgb = paqdSample.rgb; + float a = max(abs(paqdUniforms[2]), abs(paqdUniforms[3])); + colAcc.rgb = mix(colAcc.rgb, paqdSample.rgb, 0.5 * paqdSample.a * a); + } + if (isClip) { + //shade voxels with clip color + if (clipPlaneColor.a < 0.0) { + float thresh = 4.0 * sliceSize; + float firstHit1 = firstHit.a + deltaDir.a; + if (isClipCutaway) { + float min1 = abs(firstHit1 - sampleRange.y); + float dx = samplePos.a - firstHit1; + if (min1 < thresh) + colAcc.rgb = mix(colAcc.rgb, clipPlaneColorX.rgb, abs(clipPlaneColor.a)); + else if (( colAcc.a > earlyTermination ) && (dx > thresh)) { + min1 = abs(firstHit1 - sampleRange.x); + if (min1 < (thresh * 0.5)) { + colAcc.rgb = mix(colAcc.rgb , clipPlaneColorX.rgb, abs(clipPlaneColor.a)*0.5); + } + + } + } else { + if (abs(firstHit1 - sampleRange.x) < thresh) + colAcc.rgb = mix(colAcc.rgb, clipPlaneColorX.rgb, abs(clipPlaneColor.a)); + } // clipPlaneColor.a < 0.0 + } + //ambient occlusion: make creases dark + float min1 = 1000.0; + float min2 = 1000.0; + // find smallest and second-smallest distances + vec4 firstHit1 = firstHit - deltaDir; + for (int i = 0; i < MAX_CLIP_PLANES; i++) { + float d = distance2Plane(firstHit1, clipPlanes[i]); + if (d < min1) { + min2 = min1; + min1 = d; + } else if (d < min2) { + min2 = d; + } + } + float thresh = 1.2 * sliceSize; + if ((isClipCutaway) && (min2 < thresh) && (sampleRange.x > 0.0)) { + if ((abs(sampleRange.x - firstHit.a) > ( 2.0 * thresh)) && ((abs(sampleRange.y - firstHit.a) > (2.0 * thresh)))) + min2 = thresh; + } + // if second is 0 -> factor 0 (black), if second >= sliceSize -> factor 1 (unchanged) + const float aoFrac = 0.5; + float factor = (1.0 - aoFrac) + aoFrac * clamp(min2 / thresh, 0.0, 1.0); + // linear darkening: multiply color by factor (or use mix(vec3(0), colAcc.rgb, factor)) + colAcc.rgb *= factor; + } + } + colAcc.a = (colAcc.a / earlyTermination) * backOpacity; + fColor = colAcc; + float renderDrawAmbientOcclusionX = renderDrawAmbientOcclusionXY.x; + float drawOpacity = renderDrawAmbientOcclusionXY.y; + if ((overlays < 1.0) && (drawOpacity <= 0.0)) + return; + //overlay pass + samplePos = vec4(start.xyz, 0.0); //ray position + //start: OPTIONAL fast pass: rapid traversal until first hit + stepSizeFast = sliceSize * 1.0; + deltaDirFast = vec4(dir.xyz * stepSizeFast, stepSizeFast); + while (samplePos.a <= len) { + float val = texture(overlay, samplePos.xyz).a; + if (drawOpacity > 0.0) + val = max(val, texture(drawing, samplePos.xyz).r); + if (val > 0.001) + break; + samplePos += deltaDirFast; //advance ray position + } + if (samplePos.a >= len) { + if (isClip && (fColor.a == 0.0)) + fColor += clipPlaneColorX; + return; + } + samplePos -= deltaDirFast; + if (samplePos.a < 0.0) + vec4 samplePos = vec4(start.xyz, 0.0); //ray position + //end: fast pass + float overFarthest = len; + colAcc = vec4(0.0, 0.0, 0.0, 0.0); + + samplePos += deltaDir * ran; //jitter ray + vec4 overFirstHit = vec4(0.0,0.0,0.0,2.0 * len); + if (backgroundMasksOverlays > 0) + samplePos = firstHit; + bool firstDraw = true; + while (samplePos.a <= len) { + vec4 colorSample = texture(overlay, samplePos.xyz); + if ((colorSample.a < 0.01) && (drawOpacity > 0.0)) { + float val = texture(drawing, samplePos.xyz).r; + vec4 draw = drawColor(val, drawOpacity); + if ((draw.a > 0.0) && (firstDraw)) { + firstDraw = false; + float sum = 0.0; + const float mn = 1.0 / 256.0; + const float sampleRadius = 1.1; + float dx = sliceSize * sampleRadius; + vec3 center = samplePos.xyz; + //six neighbors that share a face + sum += min(texture(drawing, center.xyz + cross(vec3(0.0,0.0,+dx), dir)).r, mn); + sum += min(texture(drawing, center.xyz + cross(vec3(0.0,0.0,-dx), dir)).r, mn); + sum += min(texture(drawing, center.xyz + cross(vec3(0.0,+dx,0.0), dir)).r, mn); + sum += min(texture(drawing, center.xyz + cross(vec3(0.0,-dx,0.0), dir)).r, mn); + sum += min(texture(drawing, center.xyz + cross(vec3(+dx,0.0,0.0), dir)).r, mn); + sum += min(texture(drawing, center.xyz + cross(vec3(-dx,0.0,0.0), dir)).r, mn); + //float proportion = (sum / mn) / 6.0; + + //12 neighbors that share an edge + dx = sliceSize * sampleRadius * sqrt(2.0) * 0.5; + sum += min(texture(drawing, center.xyz + cross(vec3(0.0,+dx,+dx), dir)).r, mn); + sum += min(texture(drawing, center.xyz + cross(vec3(+dx,0.0,+dx), dir)).r, mn); + sum += min(texture(drawing, center.xyz + cross(vec3(+dx,+dx,0.0), dir)).r, mn); + sum += min(texture(drawing, center.xyz + cross(vec3(0.0,-dx,-dx), dir)).r, mn); + sum += min(texture(drawing, center.xyz + cross(vec3(-dx,0.0,-dx), dir)).r, mn); + sum += min(texture(drawing, center.xyz + cross(vec3(-dx,-dx,0.0), dir)).r, mn); + + sum += min(texture(drawing, center.xyz + cross(vec3(0.0,+dx,-dx), dir)).r, mn); + sum += min(texture(drawing, center.xyz + cross(vec3(+dx,0.0,-dx), dir)).r, mn); + sum += min(texture(drawing, center.xyz + cross(vec3(+dx,-dx,0.0), dir)).r, mn); + + sum += min(texture(drawing, center.xyz + cross(vec3(0.0,-dx,+dx), dir)).r, mn); + sum += min(texture(drawing, center.xyz + cross(vec3(-dx,0.0,+dx), dir)).r, mn); + sum += min(texture(drawing, center.xyz + cross(vec3(-dx,+dx,0.0), dir)).r, mn); + float proportion = (sum / mn) / 18.0; //proportion of six neighbors is non-zero + + //a high proportion of hits means crevice + //since the AO term adds shadows that darken most voxels, it will result in dark surfaces + //the term brighten adds a little illumination to balance this + // without brighten, only the most extreme ridges will not be darker + const float brighten = 1.2; + vec3 ao = draw.rgb * (1.0 - proportion) * brighten; + draw.rgb = mix (draw.rgb, ao , renderDrawAmbientOcclusionX); + } + colorSample = draw; + } + samplePos += deltaDir; //advance ray position + if (colorSample.a >= 0.01) { + if (overFirstHit.a > len) + overFirstHit = samplePos; + colorSample.a *= renderOverlayBlend; + colorSample.a = 1.0-pow((1.0 - colorSample.a), opacityCorrection); + colorSample.rgb *= colorSample.a; + colAcc= (1.0 - colAcc.a) * colorSample + colAcc; + overFarthest = samplePos.a; + if ( colAcc.a > earlyTermination ) + break; + } + } + //if (samplePos.a >= len) { + if (colAcc.a <= 0.0) { + if (isClip && (fColor.a == 0.0)) + fColor += clipPlaneColorX; + return; + } + if (overFirstHit.a < firstHit.a) + gl_FragDepth = frac2ndc(overFirstHit.xyz); + float overMix = colAcc.a; + float overlayDepth = 0.3; + if (fColor.a <= 0.0) + overMix = 1.0; + else if (((overFarthest) > backNearest)) { + float dx = (overFarthest - backNearest)/1.73; + dx = fColor.a * pow(dx, overlayDepth); + overMix *= 1.0 - dx; + } + fColor.rgb = mix(fColor.rgb, colAcc.rgb, overMix); + fColor.a = max(fColor.a, colAcc.a); +}`; +var fragRenderSliceShader = `#version 300 es +#line 215 +#define MAX_CLIP_PLANES 6 +precision highp int; +precision highp float; +uniform vec3 rayDir; +uniform vec3 texVox; +uniform int backgroundMasksOverlays; +uniform vec3 volScale; +uniform vec4 clipPlane; +uniform vec4 clipPlanes[MAX_CLIP_PLANES]; +uniform highp sampler3D volume, overlay; +uniform highp sampler3D paqd; +uniform vec4 paqdUniforms; +uniform float overlays; +uniform float backOpacity; +uniform mat4 mvpMtx; +uniform mat4 matRAS; +uniform vec4 clipPlaneColor; +uniform float renderOverlayBlend; +uniform highp sampler3D drawing; +uniform highp sampler2D colormap; +uniform vec2 renderDrawAmbientOcclusionXY; +in vec3 vColor; +out vec4 fColor; +` + kRenderFunc + ` + void main() { + vec3 start = vColor; + gl_FragDepth = 1.0; + vec3 backPosition = GetBackPosition(start); + vec3 dir = normalize(backPosition - start); + //clipVolumeStart(start, backPosition); + float len = length(backPosition - start); + float lenVox = length((texVox * start) - (texVox * backPosition)); + if ((lenVox < 0.5) || (len > 3.0)) { //length limit for parallel rays + fColor = vec4(0.0,0.0,0.0,0.0); + return; + } + float sliceSize = len / lenVox; //e.g. if ray length is 1.0 and traverses 50 voxels, each voxel is 0.02 in unit cube + float stepSize = sliceSize; //quality: larger step is faster traversal, but fewer samples + float opacityCorrection = stepSize/sliceSize; + vec4 deltaDir = vec4(dir.xyz * stepSize, stepSize); + vec4 samplePos = vec4(start.xyz, 0.0); //ray position + vec4 colAcc = vec4(0.0,0.0,0.0,0.0); + vec4 firstHit = vec4(0.0,0.0,0.0,2.0 * len); + const float earlyTermination = 0.95; + float backNearest = len; //assume no hit + float dis = len; + //check if axial plane is closest + vec4 aClip = vec4(0.0, 0.0, 1.0, (1.0- clipPlane.z) - 0.5); + float adis = (-aClip.a - dot(aClip.xyz, samplePos.xyz-0.5)) / dot(dir,aClip.xyz); + if (adis > 0.0) + dis = min(adis, dis); + //check of coronal plane is closest + vec4 cClip = vec4(0.0, 1.0, 0.0, (1.0- clipPlane.y) - 0.5); + float cdis = (-cClip.a - dot(cClip.xyz, samplePos.xyz-0.5)) / dot(dir,cClip.xyz); + if (cdis > 0.0) + dis = min(cdis, dis); + //check if coronal slice is closest + vec4 sClip = vec4(1.0, 0.0, 0.0, (1.0- clipPlane.x) - 0.5); + float sdis = (-sClip.a - dot(sClip.xyz, samplePos.xyz-0.5)) / dot(dir,sClip.xyz); + if (sdis > 0.0) + dis = min(sdis, dis); + if ((dis > 0.0) && (dis < len)) { + samplePos = vec4(samplePos.xyz+dir * dis, dis); + colAcc = texture(volume, samplePos.xyz); + colAcc.a = earlyTermination; + firstHit = samplePos; + backNearest = min(backNearest, samplePos.a); + } + //the following are only used by overlays + vec4 clipPlaneColorX = clipPlaneColor; + bool isColorPlaneInVolume = false; + bool isClip = false; + bool isClipCutaway = false; + vec2 sampleRange; + // vec4 clipPos = applyClip(dir, samplePos, len, isClip); + float stepSizeFast = sliceSize * 1.9; + vec4 deltaDirFast = vec4(dir.xyz * stepSizeFast, stepSizeFast); + if (samplePos.a < 0.0) + vec4 samplePos = vec4(start.xyz, 0.0); //ray position + float ran = fract(sin(gl_FragCoord.x * 12.9898 + gl_FragCoord.y * 78.233) * 43758.5453); + samplePos += deltaDir * ran; //jitter ray +` + kRenderTail; +var fragRenderShader = `#version 300 es +#line 215 +#define MAX_CLIP_PLANES 6 +precision highp int; +precision highp float; +uniform vec3 rayDir; +uniform vec3 texVox; +uniform int backgroundMasksOverlays; +uniform vec3 volScale; +uniform vec4 clipPlane; +uniform vec4 clipPlanes[MAX_CLIP_PLANES]; +uniform bool isClipCutaway; +uniform highp sampler3D volume, overlay; +uniform highp sampler3D paqd; +uniform vec4 paqdUniforms; +uniform float overlays; +uniform float backOpacity; +uniform mat4 mvpMtx; +uniform mat4 matRAS; +uniform vec4 clipPlaneColor; +uniform float renderOverlayBlend; +uniform highp sampler3D drawing; +uniform highp sampler2D colormap; +uniform vec2 renderDrawAmbientOcclusionXY; +in vec3 vColor; +out vec4 fColor; +` + kRenderFunc + kRenderInit + `while (samplePos.a <= len) { + if (skipSample(samplePos.a, sampleRange) ^^ isClipCutaway) { + samplePos += deltaDirFast; + continue; + } + vec4 colorSample = texture(volume, samplePos.xyz); + samplePos += deltaDir; //advance ray position + if (colorSample.a >= 0.01) { + if (firstHit.a > len) + firstHit = samplePos; + // backNearest = min(backNearest, samplePos.a); + colorSample.a = 1.0-pow((1.0 - colorSample.a), opacityCorrection); + colorSample.rgb *= colorSample.a; + colAcc= (1.0 - colAcc.a) * colorSample + colAcc; + if ( colAcc.a > earlyTermination ) + break; + } + } + if (firstHit.a < len) + backNearest = firstHit.a; +` + kRenderTail; +var gradientOpacityLutCount = 192; +var kFragRenderGradientDecl = `#version 300 es +#line 215 +#define MAX_CLIP_PLANES 6 +precision highp int; +precision highp float; +uniform vec3 rayDir; +uniform vec3 texVox; +uniform int backgroundMasksOverlays; +uniform vec3 volScale; +uniform vec4 clipPlane; +uniform vec4 clipPlanes[MAX_CLIP_PLANES]; +uniform bool isClipCutaway; +uniform highp sampler3D volume, overlay; +uniform highp sampler3D paqd; +uniform vec4 paqdUniforms; +uniform float overlays; +uniform float backOpacity; +uniform mat4 mvpMtx; +uniform mat4 normMtx; +uniform mat4 matRAS; +uniform vec4 clipPlaneColor; +uniform float renderOverlayBlend; +uniform highp sampler3D drawing, gradient; +uniform highp sampler2D colormap; +uniform highp sampler2D matCap; +uniform vec2 renderDrawAmbientOcclusionXY; +uniform float gradientAmount; +uniform float silhouettePower; +uniform float gradientOpacity[${gradientOpacityLutCount}]; +in vec3 vColor; +out vec4 fColor; +`; +var fragRenderGradientShader = kFragRenderGradientDecl + kRenderFunc + kRenderInit + ` + float startPos = samplePos.a; + float clipCloseThresh = 5.0 * deltaDir.a; + float clipClose = sampleRange.x; + if (isClipCutaway) + clipClose = sampleRange.y; + if (!isClip) + clipClose = -1.0; + float brighten = 2.0; //modulating makes average intensity darker 0.5 * 0.5 = 0.25 + //vec4 prevGrad = vec4(0.0); + float silhouetteThreshold = 1.0 - silhouettePower; + while (samplePos.a <= len) { + if (skipSample(samplePos.a, sampleRange) ^^ isClipCutaway) { + samplePos += deltaDirFast; + continue; + } + vec4 colorSample = texture(volume, samplePos.xyz); + if (colorSample.a >= 0.0) { + vec4 grad = texture(gradient, samplePos.xyz); + grad.rgb = normalize(grad.rgb*2.0 - 1.0); + //if (grad.a < prevGrad.a) + // grad.rgb = prevGrad.rgb; + //prevGrad = grad; + vec3 n = mat3(normMtx) * grad.rgb; + n.y = - n.y; + vec4 mc = vec4(texture(matCap, n.xy * 0.5 + 0.5).rgb, 1.0) * brighten; + mc = mix(vec4(1.0), mc, gradientAmount); + if (abs(samplePos.a - clipClose) > clipCloseThresh) + colorSample.rgb *= mc.rgb; + if (firstHit.a > len) + firstHit = samplePos; + backNearest = min(backNearest, samplePos.a); + colorSample.a = 1.0-pow((1.0 - colorSample.a), opacityCorrection); + int gradIdx = int(grad.a * ${gradientOpacityLutCount}.0); + colorSample.a *= gradientOpacity[gradIdx]; + float lightNormDot = dot(grad.rgb, rayDir); + // n.b. "lightNormDor" is cosTheta, "silhouettePower" is Fresnel effect exponent + colorSample.a *= pow(1.0 - abs(lightNormDot), silhouettePower); + float viewAlign = abs(lightNormDot); // 0 = perpendicular, 1 = aligned + // linearly map silhouettePower (0..1) to a threshold range, e.g., [1.0, 0.0] + // Cull voxels that are too aligned with the view direction + if (viewAlign > silhouetteThreshold) + colorSample.a = 0.0; + colorSample.rgb *= colorSample.a; + colAcc= (1.0 - colAcc.a) * colorSample + colAcc; + if ( colAcc.a > earlyTermination ) + break; + } + samplePos += deltaDir; //advance ray position + } +` + kRenderTail; +var fragRenderGradientValuesShader = kFragRenderGradientDecl + kRenderFunc + kRenderInit + ` + float startPos = samplePos.a; + //float clipClose = clipPos.a + 3.0 * deltaDir.a; //do not apply gradients near clip plane + float brighten = 2.0; //modulating makes average intensity darker 0.5 * 0.5 = 0.25 + //vec4 prevGrad = vec4(0.0); + while (samplePos.a <= len) { + vec4 colorSample = texture(volume, samplePos.xyz); + if (colorSample.a >= 0.0) { + vec4 grad = texture(gradient, samplePos.xyz); + colorSample.rgb = abs(normalize(grad.rgb*2.0 - 1.0)); + if (firstHit.a > len) + firstHit = samplePos; + backNearest = min(backNearest, samplePos.a); + colorSample.a = 1.0-pow((1.0 - colorSample.a), opacityCorrection); + colorSample.rgb *= colorSample.a; + colAcc= (1.0 - colAcc.a) * colorSample + colAcc; + if ( colAcc.a > earlyTermination ) + break; + } + samplePos += deltaDir; //advance ray position + } +` + kRenderTail; +var vertSliceMMShader = `#version 300 es +#line 392 +layout(location=0) in vec3 pos; +uniform int axCorSag; +uniform mat4 mvpMtx; +uniform mat4 frac2mm; +uniform float slice; +out vec3 texPos; +void main(void) { + texPos = vec3(pos.x, pos.y, slice); + if (axCorSag > 1) + texPos = vec3(slice, pos.x, pos.y); + else if (axCorSag > 0) + texPos = vec3(pos.x, slice, pos.y); + vec4 mm = frac2mm * vec4(texPos, 1.0); + gl_Position = mvpMtx * mm; +}`; +var kFragSliceHead = `#version 300 es +#line 411 +precision highp int; +precision highp float; +uniform highp sampler3D volume, overlay; +uniform highp sampler3D paqd; +uniform vec4 paqdUniforms; +uniform int backgroundMasksOverlays; +uniform float overlayOutlineWidth; +uniform float overlayAlphaShader; +uniform int axCorSag; +uniform float overlays; +uniform float opacity; +uniform float drawOpacity; +uniform float drawRimOpacity; +uniform bool isAlphaClipDark; +uniform highp sampler3D drawing; +uniform highp sampler2D colormap; +in vec3 texPos; +out vec4 color; +` + kDrawFunc + ` +vec4 blendRGBA(vec4 foreground, vec4 background) { + float alphaOut = foreground.a + background.a * (1.0 - foreground.a); + vec3 colorOut = (foreground.rgb * foreground.a + background.rgb * background.a * (1.0 - foreground.a)) / alphaOut; + return vec4(colorOut, alphaOut); +} +float paqdEaseAlpha(float alpha) { + // t are alpha transitions + // y0 + // t0..t1 -> mix between y0..y1 + // t1..t2 -> mix between y1..y2 + // >t2 -> y2 + float t0 = paqdUniforms[0]; // 0.3; + float t1 = 0.5 * (paqdUniforms[0] + paqdUniforms[1]); // 0.4; + float t2 = paqdUniforms[1]; // 0.9; + float y0 = 0.0; + float y1 = abs(paqdUniforms[2]); // 1.0; + float y2 = abs(paqdUniforms[3]); //0.25; + if (alpha <= t0) { + return y0; + } else if (alpha <= t1) { + return mix(y0, y1, (alpha - t0) / (t1 - t0)); // LERP 0.0 \u2192 1.0 + } else if (alpha <= t2) { + return mix(y1, y2, (alpha - t1) / (t2 - t1)); // LERP 1.0 \u2192 0.2 + } else { + return y2; + } +} + +void main() { + //color = vec4(1.0, 0.0, 1.0, 1.0);return; + vec4 background = texture(volume, texPos); + color = vec4(background.rgb, opacity); + if ((isAlphaClipDark) && (background.a == 0.0)) color.a = 0.0; //FSLeyes clipping range + vec4 ocolor = vec4(0.0); + float overlayAlpha = overlayAlphaShader; + if (overlays > 0.0) { + ocolor = texture(overlay, texPos); + //dFdx for "boxing" issue 435 has aliasing on some implementations (coarse vs fine) + //however, this only identifies 50% of the edges due to aliasing effects + // http://www.aclockworkberry.com/shader-derivative-functions/ + // https://bgolus.medium.com/distinctive-derivative-differences-cce38d36797b + //if ((ocolor.a >= 1.0) && ((dFdx(ocolor.a) != 0.0) || (dFdy(ocolor.a) != 0.0) )) + // ocolor.rbg = vec3(0.0, 0.0, 0.0); + bool isOutlineBelowNotAboveThreshold = true; + if (isOutlineBelowNotAboveThreshold) { + if ((overlayOutlineWidth > 0.0) && (ocolor.a < 1.0)) { //check voxel neighbors for edge + vec3 vx = (overlayOutlineWidth ) / vec3(textureSize(overlay, 0)); + //6 voxel neighbors that share a face + vec3 vxR = vec3(texPos.x+vx.x, texPos.y, texPos.z); + vec3 vxL = vec3(texPos.x-vx.x, texPos.y, texPos.z); + vec3 vxA = vec3(texPos.x, texPos.y+vx.y, texPos.z); + vec3 vxP = vec3(texPos.x, texPos.y-vx.y, texPos.z); + vec3 vxS = vec3(texPos.x, texPos.y, texPos.z+vx.z); + vec3 vxI = vec3(texPos.x, texPos.y, texPos.z-vx.z); + float a = 0.0; + if (axCorSag != 2) { + a = max(a, texture(overlay, vxR).a); + a = max(a, texture(overlay, vxL).a); + } + if (axCorSag != 1) { + a = max(a, texture(overlay, vxA).a); + a = max(a, texture(overlay, vxP).a); + } + if (axCorSag != 0) { + a = max(a, texture(overlay, vxS).a); + a = max(a, texture(overlay, vxI).a); + } + bool isCheckCorners = true; + if (isCheckCorners) { + //12 voxel neighbors that share an edge + vec3 vxRA = vec3(texPos.x+vx.x, texPos.y+vx.y, texPos.z); + vec3 vxLA = vec3(texPos.x-vx.x, texPos.y+vx.y, texPos.z); + vec3 vxRP = vec3(texPos.x+vx.x, texPos.y-vx.y, texPos.z); + vec3 vxLP = vec3(texPos.x-vx.x, texPos.y-vx.y, texPos.z); + vec3 vxRS = vec3(texPos.x+vx.x, texPos.y, texPos.z+vx.z); + vec3 vxLS = vec3(texPos.x-vx.x, texPos.y, texPos.z+vx.z); + vec3 vxRI = vec3(texPos.x+vx.x, texPos.y, texPos.z-vx.z); + vec3 vxLI = vec3(texPos.x-vx.x, texPos.y, texPos.z-vx.z); + vec3 vxAS = vec3(texPos.x, texPos.y+vx.y, texPos.z+vx.z); + vec3 vxPS = vec3(texPos.x, texPos.y-vx.y, texPos.z+vx.z); + vec3 vxAI = vec3(texPos.x, texPos.y+vx.y, texPos.z-vx.z); + vec3 vxPI = vec3(texPos.x, texPos.y-vx.y, texPos.z-vx.z); + + if (axCorSag == 0) { //axial corners + a = max(a, texture(overlay, vxRA).a); + a = max(a, texture(overlay, vxLA).a); + a = max(a, texture(overlay, vxRP).a); + a = max(a, texture(overlay, vxLP).a); + } + if (axCorSag == 1) { //coronal corners + a = max(a, texture(overlay, vxRS).a); + a = max(a, texture(overlay, vxLS).a); + a = max(a, texture(overlay, vxRI).a); + a = max(a, texture(overlay, vxLI).a); + } + if (axCorSag == 2) { //sagittal corners + a = max(a, texture(overlay, vxAS).a); + a = max(a, texture(overlay, vxPS).a); + a = max(a, texture(overlay, vxAI).a); + a = max(a, texture(overlay, vxPI).a); + } + } + if (a >= 1.0) { + ocolor = vec4(0.0, 0.0, 0.0, 1.0); + overlayAlpha = 1.0; + } + } + + } else { + if ((overlayOutlineWidth > 0.0) && (ocolor.a >= 1.0)) { //check voxel neighbors for edge + vec3 vx = (overlayOutlineWidth ) / vec3(textureSize(overlay, 0)); + vec3 vxR = vec3(texPos.x+vx.x, texPos.y, texPos.z); + vec3 vxL = vec3(texPos.x-vx.x, texPos.y, texPos.z); + vec3 vxA = vec3(texPos.x, texPos.y+vx.y, texPos.z); + vec3 vxP = vec3(texPos.x, texPos.y-vx.y, texPos.z); + vec3 vxS = vec3(texPos.x, texPos.y, texPos.z+vx.z); + vec3 vxI = vec3(texPos.x, texPos.y, texPos.z-vx.z); + float a = 1.0; + if (axCorSag != 2) { + a = min(a, texture(overlay, vxR).a); + a = min(a, texture(overlay, vxL).a); + } + if (axCorSag != 1) { + a = min(a, texture(overlay, vxA).a); + a = min(a, texture(overlay, vxP).a); + } + if (axCorSag != 0) { + a = min(a, texture(overlay, vxS).a); + a = min(a, texture(overlay, vxI).a); + } + if (a < 1.0) { + ocolor = vec4(0.0, 0.0, 0.0, 1.0); + overlayAlpha = 1.0; + } + } + } //outline above threshold + } + +`; +var fragSlice2DShader = `#version 300 es +#line 411 +precision highp int; +precision highp float; +uniform highp sampler2D volume, overlay; +uniform int backgroundMasksOverlays; +uniform float overlayOutlineWidth; +uniform float overlayAlphaShader; +uniform int axCorSag; +uniform float overlays; +uniform float opacity; +uniform float drawOpacity; +uniform bool isAlphaClipDark; +uniform highp sampler2D drawing; +uniform highp sampler2D colormap; +in vec3 texPos; +out vec4 color;` + kDrawFunc + `void main() { + //color = vec4(1.0, 0.0, 1.0, 1.0);return; + vec4 background = texture(volume, texPos.xy); + color = vec4(background.rgb, opacity); + if ((isAlphaClipDark) && (background.a == 0.0)) color.a = 0.0; //FSLeyes clipping range + vec4 dcolor = drawColor(texture(drawing, texPos.xy).r, drawOpacity); + if (dcolor.a > 0.0) { + color.rgb = mix(color.rgb, dcolor.rgb, dcolor.a); + color.a = max(drawOpacity, color.a); + } +}`; +var kFragSliceTail = ` ocolor.a *= overlayAlpha; + float drawV = texture(drawing, texPos).r; + vec4 dcolor = drawColor(drawV, drawOpacity); + if (dcolor.a > 0.0) { + if (drawRimOpacity >= 0.0) { + vec3 vx = 1.0 / vec3(textureSize(drawing, 0)); + //6 voxel neighbors that share a face + vec3 offsetX = dFdx(texPos); // left-right spacing + vec3 offsetY = dFdy(texPos); // up-down spacing + float L = texture(drawing, texPos - offsetX).r; + float R = texture(drawing, texPos + offsetX).r; + float T = texture(drawing, texPos - offsetY).r; + float B = texture(drawing, texPos + offsetY).r; + if (L != drawV || R != drawV || T != drawV || B != drawV) + dcolor.a = drawRimOpacity; + } + color.rgb = mix(color.rgb, dcolor.rgb, dcolor.a); + color.a = max(drawOpacity, color.a); + } + vec4 pcolor = texture(paqd, texPos); + if (pcolor.a > 0.0) { + pcolor.a = paqdEaseAlpha(pcolor.a); + if (pcolor.a > 0.0) { + if (paqdUniforms[3] < 0.0) + ocolor = blendRGBA(pcolor, ocolor); + else + ocolor = blendRGBA(ocolor, pcolor); + } + } + if ((backgroundMasksOverlays > 0) && (background.a == 0.0)) + return; + float a = color.a + ocolor.a * (1.0 - color.a); // premultiplied alpha + if (a == 0.0) return; + color.rgb = mix(color.rgb, ocolor.rgb, ocolor.a / a); + color.a = a; +}`; +var fragSliceMMShader = kFragSliceHead + kFragSliceTail; +var fragSliceV1Shader = kFragSliceHead + ` if (ocolor.a > 0.0) { + //https://gamedev.stackexchange.com/questions/102889/is-it-possible-to-convert-vec4-to-int-in-glsl-using-opengl-es + uint alpha = uint(ocolor.a * 255.0); + vec3 xyzFlip = vec3(float((uint(1) & alpha) > uint(0)), float((uint(2) & alpha) > uint(0)), float((uint(4) & alpha) > uint(0))); + //convert from 0 and 1 to -1 and 1 + xyzFlip = (xyzFlip * 2.0) - 1.0; + //https://math.stackexchange.com/questions/1905533/find-perpendicular-distance-from-point-to-line-in-3d + //v1 principle direction of tensor for this voxel + vec3 v1 = ocolor.rgb; + //flips encode polarity to convert from 0..1 to -1..1 (27 bits vs 24 bit precision) + v1 = normalize( v1 * xyzFlip); + vec3 vxl = fract(texPos * vec3(textureSize(volume, 0))) - 0.5; + //vxl coordinates now -0.5..+0.5 so 0,0,0 is origin + vxl.x = -vxl.x; + float t = dot(vxl,v1); + vec3 P = t * v1; + float dx = length(P-vxl); + ocolor.a = 1.0 - smoothstep(0.2,0.25, dx); + //if modulation was applied, use that to scale alpha not color: + ocolor.a *= length(ocolor.rgb); + ocolor.rgb = normalize(ocolor.rgb); + //compute distance one half voxel closer to viewer: + float pan = 0.5; + if (axCorSag == 0) + vxl.z -= pan; + if (axCorSag == 1) + vxl.y -= pan; + if (axCorSag == 2) + vxl.x += pan; + t = dot(vxl,v1); + P = t * v1; + float dx2 = length(P-vxl); + ocolor.rgb += (dx2-dx-(0.5 * pan)) * 1.0; + } +` + kFragSliceTail; +var fragRectShader = `#version 300 es +#line 480 +precision highp int; +precision highp float; +uniform vec4 lineColor; +out vec4 color; +void main() { + color = lineColor; +}`; +var fragRectOutlineShader = `#version 300 es +#line 723 +precision highp int; +precision highp float; + +uniform vec4 lineColor; +uniform vec4 leftTopWidthHeight; +uniform float thickness; // line thickness in pixels +uniform vec2 canvasWidthHeight; + +out vec4 color; + +void main() { + // fragment position in screen coordinates + vec2 fragCoord = gl_FragCoord.xy; + + // canvas height + float canvasHeight = canvasWidthHeight.y; + + // 'top' and 'bottom' to match gl_FragCoord.y coordinate system + float top = canvasHeight - leftTopWidthHeight.y; + float bottom = top - leftTopWidthHeight.w; + + // left and right edges + float left = leftTopWidthHeight.x; + float right = left + leftTopWidthHeight.z; + + bool withinLeft = fragCoord.x >= left && fragCoord.x <= left + thickness; + bool withinRight = fragCoord.x <= right && fragCoord.x >= right - thickness; + bool withinTop = fragCoord.y <= top && fragCoord.y >= top - thickness; + bool withinBottom = fragCoord.y >= bottom && fragCoord.y <= bottom + thickness; + + bool isOutline = withinLeft || withinRight || withinTop || withinBottom; + + if (isOutline) { + color = lineColor; + } else { + discard; + } +}`; +var vertColorbarShader = `#version 300 es +#line 490 +layout(location=0) in vec3 pos; +uniform vec2 canvasWidthHeight; +uniform vec4 leftTopWidthHeight; +out vec2 vColor; +void main(void) { + //convert pixel x,y space 1..canvasWidth,1..canvasHeight to WebGL 1..-1,-1..1 + vec2 frac; + frac.x = (leftTopWidthHeight.x + (pos.x * leftTopWidthHeight.z)) / canvasWidthHeight.x; //0..1 + frac.y = 1.0 - ((leftTopWidthHeight.y + ((1.0 - pos.y) * leftTopWidthHeight.w)) / canvasWidthHeight.y); //1..0 + frac = (frac * 2.0) - 1.0; + gl_Position = vec4(frac, 0.0, 1.0); + vColor = pos.xy; +}`; +var fragColorbarShader = `#version 300 es +#line 506 +precision highp int; +precision highp float; +uniform highp sampler2D colormap; +uniform float layer; +in vec2 vColor; +out vec4 color; +void main() { + float nlayer = float(textureSize(colormap, 0).y); + float fmap = (0.5 + layer) / nlayer; + color = vec4(texture(colormap, vec2(vColor.x, fmap)).rgb, 1.0); +}`; +var vertRectShader = `#version 300 es +#line 520 +layout(location=0) in vec3 pos; +uniform vec2 canvasWidthHeight; +uniform vec4 leftTopWidthHeight; +void main(void) { + //convert pixel x,y space 1..canvasWidth,1..canvasHeight to WebGL 1..-1,-1..1 + vec2 frac; + frac.x = (leftTopWidthHeight.x + (pos.x * leftTopWidthHeight.z)) / canvasWidthHeight.x; //0..1 + frac.y = 1.0 - ((leftTopWidthHeight.y + ((1.0 - pos.y) * leftTopWidthHeight.w)) / canvasWidthHeight.y); //1..0 + frac = (frac * 2.0) - 1.0; + gl_Position = vec4(frac, 0.0, 1.0); +}`; +var vertLineShader = `#version 300 es +#line 534 +layout(location=0) in vec3 pos; +uniform vec2 canvasWidthHeight; +uniform float thickness; +uniform vec4 startXYendXY; +void main(void) { + vec2 posXY = mix(startXYendXY.xy, startXYendXY.zw, pos.x); + vec2 dir = normalize(startXYendXY.xy - startXYendXY.zw); + posXY += vec2(-dir.y, dir.x) * thickness * (pos.y - 0.5); + posXY.x = (posXY.x) / canvasWidthHeight.x; //0..1 + posXY.y = 1.0 - (posXY.y / canvasWidthHeight.y); //1..0 + gl_Position = vec4((posXY * 2.0) - 1.0, 0.0, 1.0); +}`; +var vertLine3DShader = `#version 300 es +#line 534 +layout(location=0) in vec3 pos; +uniform vec2 canvasWidthHeight; +uniform float thickness; +uniform vec2 startXY; +uniform vec3 endXYZ; // transformed XYZ point +void main(void) { + vec2 posXY = mix(startXY.xy, endXYZ.xy, pos.x); + vec2 startDiff = endXYZ.xy - startXY.xy; + float startDistance = length(startDiff); + vec2 diff = endXYZ.xy - posXY; + float currentDistance = length(diff); + vec2 dir = normalize(startXY.xy - endXYZ.xy); + posXY += vec2(-dir.y, dir.x) * thickness * (pos.y - 0.5); + posXY.x = (posXY.x) / canvasWidthHeight.x; //0..1 + posXY.y = 1.0 - (posXY.y / canvasWidthHeight.y); //1..0 + float z = endXYZ.z * ( 1.0 - abs(currentDistance/startDistance)); + gl_Position = vec4((posXY * 2.0) - 1.0, z, 1.0); +}`; +var vertBmpShader = `#version 300 es +#line 549 +layout(location=0) in vec3 pos; +uniform vec2 canvasWidthHeight; +uniform vec4 leftTopWidthHeight; +out vec2 vUV; +void main(void) { + //convert pixel x,y space 1..canvasWidth,1..canvasHeight to WebGL 1..-1,-1..1 + vec2 frac; + frac.x = (leftTopWidthHeight.x + (pos.x * leftTopWidthHeight.z)) / canvasWidthHeight.x; //0..1 + frac.y = 1.0 - ((leftTopWidthHeight.y + ((1.0 - pos.y) * leftTopWidthHeight.w)) / canvasWidthHeight.y); //1..0 + frac = (frac * 2.0) - 1.0; + gl_Position = vec4(frac, 0.0, 1.0); + vUV = vec2(pos.x, 1.0 - pos.y); +}`; +var fragBmpShader = `#version 300 es +#line 565 +precision highp int; +precision highp float; +uniform highp sampler2D bmpTexture; +in vec2 vUV; +out vec4 color; +void main() { + color = texture(bmpTexture, vUV); +}`; +var vertFontShader = `#version 300 es +#line 576 +layout(location=0) in vec3 pos; +uniform vec2 canvasWidthHeight; +uniform vec4 leftTopWidthHeight; +uniform vec4 uvLeftTopWidthHeight; +out vec2 vUV; +void main(void) { + //convert pixel x,y space 1..canvasWidth,1..canvasHeight to WebGL 1..-1,-1..1 + vec2 frac; + frac.x = (leftTopWidthHeight.x + (pos.x * leftTopWidthHeight.z)) / canvasWidthHeight.x; //0..1 + frac.y = 1.0 - ((leftTopWidthHeight.y + ((1.0 - pos.y) * leftTopWidthHeight.w)) / canvasWidthHeight.y); //1..0 + frac = (frac * 2.0) - 1.0; + gl_Position = vec4(frac, 0.0, 1.0); + vUV = vec2(uvLeftTopWidthHeight.x + (pos.x * uvLeftTopWidthHeight.z), uvLeftTopWidthHeight.y + ((1.0 - pos.y) * uvLeftTopWidthHeight.w) ); +}`; +var fragFontShader = `#version 300 es +#line 593 +precision highp int; +precision highp float; +uniform highp sampler2D fontTexture; +uniform vec4 fontColor; +uniform float screenPxRange; +in vec2 vUV; +out vec4 color; +float median(float r, float g, float b) { + return max(min(r, g), min(max(r, g), b)); +} +void main() { + vec3 msd = texture(fontTexture, vUV).rgb; + float sd = median(msd.r, msd.g, msd.b); + float screenPxDistance = screenPxRange*(sd - 0.5); + float opacity = clamp(screenPxDistance + 0.5, 0.0, 1.0); + color = vec4(fontColor.rgb , fontColor.a * opacity); +}`; +var vertCircleShader = `#version 300 es +layout(location=0) in vec3 pos; +uniform vec2 canvasWidthHeight; +uniform vec4 leftTopWidthHeight; +uniform vec4 uvLeftTopWidthHeight; +out vec2 vUV; +void main(void) { + //convert pixel x,y space 1..canvasWidth,1..canvasHeight to WebGL 1..-1,-1..1 + vec2 frac; + frac.x = (leftTopWidthHeight.x + (pos.x * leftTopWidthHeight.z)) / canvasWidthHeight.x; //0..1 + frac.y = 1.0 - ((leftTopWidthHeight.y + ((1.0 - pos.y) * leftTopWidthHeight.w)) / canvasWidthHeight.y); //1..0 + frac = (frac * 2.0) - 1.0; + gl_Position = vec4(frac, 0.0, 1.0); + vUV = pos.xy; +}`; +var fragCircleShader = `#version 300 es +precision highp int; +precision highp float; +uniform vec4 circleColor; +uniform float fillPercent; +in vec2 vUV; +out vec4 color; +void main() { + /* Check if the pixel is inside the circle + and color it with a gradient. Otherwise, color it + transparent */ + float distance = length(vUV-vec2(0.5,0.5)); + if ( distance < 0.5 && distance >= (1.0 - fillPercent) / 2.0){ + color = vec4(circleColor.r,circleColor.g,circleColor.b,circleColor.a) ; + }else{ + color = vec4(0.0,0.0,0.0,0.0); + } +} +`; +var vertOrientShader = `#version 300 es +#line 613 +precision highp int; +precision highp float; +in vec3 vPos; +out vec2 TexCoord; +void main() { + TexCoord = vPos.xy; + gl_Position = vec4( (vPos.xy-vec2(0.5,0.5)) * 2.0, 0.0, 1.0); +}`; +var fragOrientShaderU = `#version 300 es +uniform highp usampler3D intensityVol; +`; +var fragOrientShaderI = `#version 300 es +uniform highp isampler3D intensityVol; +`; +var fragOrientShaderF = `#version 300 es +uniform highp sampler3D intensityVol; +`; +var fragOrientShaderAtlas = `#line 1042 +precision highp int; +precision highp float; +in vec2 TexCoord; +out vec4 FragColor; +uniform bool isAdditiveBlend; +uniform float coordZ; +uniform float layer; +uniform highp sampler2D colormap; +uniform lowp sampler3D blend3D; +uniform float opacity; +uniform uint activeIndex; +uniform vec4 xyzaFrac; +uniform mat4 mtx; +float textureWidth; +float nlayer; +float layerY; + +vec4 scalar2color(uint idx) { + float fx = (float(idx) + 0.5) / textureWidth; + vec4 clr = texture(colormap, vec2(fx, layerY)).rgba; + if (clr.a > 0.0) + clr.a = 1.0; + clr.a *= opacity; + return clr; +} +void main(void) { + vec4 vx = vec4(TexCoord.x, TexCoord.y, coordZ, 1.0) * mtx; + uint idx = uint(texture(intensityVol, vx.xyz).r); + if (idx == uint(0)) { + if (layer < 1.0) { + FragColor = vec4(0.0, 0.0, 0.0, 0.0); + return; + } + FragColor = texture(blend3D, vec3(TexCoord.xy, coordZ)); + return; + } + textureWidth = float(textureSize(colormap, 0).x); + nlayer = float(textureSize(colormap, 0).y); + layerY = ((2.0 * layer) + 1.5) / nlayer; + //idx = ((idx - uint(1)) % uint(100))+uint(1); + FragColor = scalar2color(idx); + bool isBorder = false; + vx = vec4(TexCoord.x+xyzaFrac.x, TexCoord.y, coordZ, 1.0) * mtx; + uint R = uint(texture(intensityVol, vx.xyz).r); + vx = vec4(TexCoord.x-xyzaFrac.x, TexCoord.y, coordZ, 1.0) * mtx; + uint L = uint(texture(intensityVol, vx.xyz).r); + vx = vec4(TexCoord.x, TexCoord.y+xyzaFrac.y, coordZ, 1.0) * mtx; + uint A = uint(texture(intensityVol, vx.xyz).r); + vx = vec4(TexCoord.x, TexCoord.y-xyzaFrac.y, coordZ, 1.0) * mtx; + uint P = uint(texture(intensityVol, vx.xyz).r); + vx = vec4(TexCoord.x, TexCoord.y, coordZ+xyzaFrac.z, 1.0) * mtx; + uint S = uint(texture(intensityVol, vx.xyz).r); + vx = vec4(TexCoord.x, TexCoord.y, coordZ-xyzaFrac.z, 1.0) * mtx; + uint I = uint(texture(intensityVol, vx.xyz).r); + vec4 centerColor = FragColor; + FragColor.a += scalar2color(R).a; + FragColor.a += scalar2color(L).a; + FragColor.a += scalar2color(A).a; + FragColor.a += scalar2color(P).a; + FragColor.a += scalar2color(S).a; + FragColor.a += scalar2color(I).a; + FragColor.a /= 7.0; + if ((!isBorder) &&(idx == activeIndex)) { + if (centerColor.a > 0.5) + FragColor.a *= 0.4; + else + FragColor.a =0.8; + } + if (xyzaFrac.a != 0.0) { //outline + if ((idx != R) || (idx != L) || (idx != A) || (idx != P) || (idx != S) || (idx != I)) { + isBorder = true; + if (xyzaFrac.a > 0.0) + FragColor.a = xyzaFrac.a; + else + FragColor = vec4(0.0, 0.0, 0.0, 1.0); + } + } + if (layer < 1.0) return; + vec4 prevColor = texture(blend3D, vec3(TexCoord.xy, coordZ)); + // https://en.wikipedia.org/wiki/Alpha_compositing + float aout = FragColor.a + (1.0 - FragColor.a) * prevColor.a; + if (aout <= 0.0) return; + if (isAdditiveBlend) + FragColor.rgb = ((FragColor.rgb * FragColor.a) + (prevColor.rgb * prevColor.a)) / aout; + else + FragColor.rgb = ((FragColor.rgb * FragColor.a) + (prevColor.rgb * prevColor.a * (1.0 - FragColor.a))) / aout; + FragColor.a = aout; +}`; +var fragOrientShader = `#line 691 +precision highp int; +precision highp float; +in vec2 TexCoord; +out vec4 FragColor; +uniform float coordZ; +uniform float layer; +uniform float scl_slope; +uniform float scl_inter; +uniform float cal_max; +uniform float cal_min; +uniform float cal_maxNeg; +uniform float cal_minNeg; +uniform bool isAlphaThreshold; +uniform bool isColorbarFromZero; +uniform bool isAdditiveBlend; +uniform highp sampler2D colormap; +uniform lowp sampler3D blend3D; +uniform int modulation; +uniform highp sampler3D modulationVol; +uniform float opacity; +uniform mat4 mtx; +void main(void) { + vec4 vx = vec4(TexCoord.xy, coordZ, 1.0) * mtx; + if ((vx.x < 0.0) || (vx.x > 1.0) || (vx.y < 0.0) || (vx.y > 1.0) || (vx.z < 0.0) || (vx.z > 1.0)) { + //set transparent if out of range + //https://webglfundamentals.org/webgl/webgl-3d-textures-repeat-clamp.html + FragColor = texture(blend3D, vec3(TexCoord.xy, coordZ)); + return; + } + float f = (scl_slope * float(texture(intensityVol, vx.xyz).r)) + scl_inter; + float mn = cal_min; + float mx = cal_max; + if ((isAlphaThreshold) || (isColorbarFromZero)) + mn = 0.0; + float r = max(0.00001, abs(mx - mn)); + mn = min(mn, mx); + float txl = mix(0.0, 1.0, (f - mn) / r); + if (f > mn) { //issue1139: survives threshold, so round up to opaque voxel + txl = max(txl, 2.0/256.0); + } + //https://stackoverflow.com/questions/5879403/opengl-texture-coordinates-in-pixel-space + float nlayer = float(textureSize(colormap, 0).y); + //each volume has two color maps: + // (layer*2) = negative and (layer * 2) + 1 = positive + float y = ((2.0 * layer) + 1.5)/nlayer; + FragColor = texture(colormap, vec2(txl, y)).rgba; + //negative colors + mn = cal_minNeg; + mx = cal_maxNeg; + if ((isAlphaThreshold) || (isColorbarFromZero)) + mx = 0.0; + //if ((!isnan(cal_minNeg)) && ( f < mx)) { + if ((cal_minNeg < cal_maxNeg) && ( f < mx)) { + r = max(0.00001, abs(mx - mn)); + mn = min(mn, mx); + txl = 1.0 - mix(0.0, 1.0, (f - mn) / r); + //issue1139: survives threshold, so round up to opaque voxel + txl = max(txl, 2.0/256.0); + y = ((2.0 * layer) + 0.5)/nlayer; + FragColor = texture(colormap, vec2(txl, y)); + } + if (layer > 0.7) + FragColor.a = step(0.00001, FragColor.a); + //if (modulation > 10) + // FragColor.a *= texture(modulationVol, vx.xyz).r; + // FragColor.rgb *= texture(modulationVol, vx.xyz).r; + if (isAlphaThreshold) { + if ((cal_minNeg != cal_maxNeg) && ( f < 0.0) && (f > cal_maxNeg)) + FragColor.a = pow(-f / -cal_maxNeg, 2.0); + else if ((f > 0.0) && (cal_min > 0.0)) + FragColor.a *= pow(f / cal_min, 2.0); //issue435: A = (V/X)**2 + //FragColor.g = 0.0; + } else if (isColorbarFromZero) { + if ((cal_minNeg != cal_maxNeg) && ( f < 0.0) && (f > cal_maxNeg)) + FragColor.a = 0.0; + else if ((f > 0.0) && (cal_min > 0.0) && (f < cal_min)) + FragColor.a *= 0.0; + + } + if (modulation == 1) { + FragColor.rgb *= texture(modulationVol, vx.xyz).r; + } else if (modulation == 2) { + FragColor.a = texture(modulationVol, vx.xyz).r; + } + FragColor.a *= opacity; + if (layer < 1.0) return; + vec4 prevColor = texture(blend3D, vec3(TexCoord.xy, coordZ)); + // https://en.wikipedia.org/wiki/Alpha_compositing + float aout = FragColor.a + (1.0 - FragColor.a) * prevColor.a; + if (aout <= 0.0) return; + if (isAdditiveBlend) + FragColor.rgb = ((FragColor.rgb * FragColor.a) + (prevColor.rgb * prevColor.a)) / aout; + else + FragColor.rgb = ((FragColor.rgb * FragColor.a) + (prevColor.rgb * prevColor.a * (1.0 - FragColor.a))) / aout; + FragColor.a = aout; +}`; +var fragPAQDOrientShader = `#line 773 +precision highp int; +precision highp float; +in vec2 TexCoord; +out vec4 FragColor; +uniform float coordZ; +uniform float layer; +uniform float scl_slope; +uniform float scl_inter; +uniform float cal_max; +uniform float cal_min; +uniform highp sampler2D colormap; +uniform lowp sampler3D blend3D; +uniform float opacity; +uniform mat4 mtx; +uniform bool hasAlpha; +uniform int modulation; +uniform highp sampler3D modulationVol; +float textureWidth; +float nlayer; +float layerY; + +vec4 scalar2color(uint idx) { + float fx = (float(idx) + 0.5) / textureWidth; + vec4 clr = texture(colormap, vec2(fx, layerY)).rgba; + if (clr.a > 0.0) + clr.a = 1.0; + clr.a *= opacity; + return clr; +} + +vec4 paqd2color(uvec4 rgba) { + // paqd r: max prob index, g: 2nd index, b: max prob a: 2nd prob + float prob1 = float(rgba.b)/255.0; + float prob2 = float(rgba.a)/255.0; + vec4 clr1 = scalar2color(rgba.r); + vec4 clr2 = scalar2color(rgba.g); + float total = prob1 + prob2; + vec4 clr = vec4(clr1.rgb, total); + // vec4 clr = vec4(clr1.rgb, prob1); + if (total > 0.0) { + clr.rgb = mix(clr2.rgb, clr1.rgb, prob1 / total); + } + return clr; +} +void main(void) { + vec4 vx = vec4(TexCoord.xy, coordZ, 1.0) * mtx; + ivec3 voxelCoord = ivec3(vx.xyz * vec3(textureSize(intensityVol, 0))); + uvec4 rgba = texelFetch(intensityVol, voxelCoord, 0); + FragColor = vec4(0.0, 0.0, 0.0, 0.0); + if (rgba.r > uint(0)) { + textureWidth = float(textureSize(colormap, 0).x); + nlayer = float(textureSize(colormap, 0).y); + layerY = ((2.0 * layer) + 1.5) / nlayer; + FragColor = paqd2color(rgba); + return; + } + // if (layer > 2.0) return; + // FragColor = texture(blend3D, vec3(TexCoord.xy, coordZ)); +}`; +var fragRGBOrientShader = `#line 773 +precision highp int; +precision highp float; +in vec2 TexCoord; +out vec4 FragColor; +uniform float coordZ; +uniform float layer; +uniform float scl_slope; +uniform float scl_inter; +uniform float cal_max; +uniform float cal_min; +uniform highp sampler2D colormap; +uniform lowp sampler3D blend3D; +uniform float opacity; +uniform mat4 mtx; +uniform bool hasAlpha; +uniform int modulation; +uniform highp sampler3D modulationVol; +void main(void) { + vec4 vx = vec4(TexCoord.xy, coordZ, 1.0) * mtx; + uvec4 aColor = texture(intensityVol, vx.xyz); + FragColor = vec4(float(aColor.r) / 255.0, float(aColor.g) / 255.0, float(aColor.b) / 255.0, float(aColor.a) / 255.0); + if (modulation == 1) + FragColor.rgb *= texture(modulationVol, vx.xyz).r; + if (!hasAlpha) { + FragColor.a = (FragColor.r * 0.21 + FragColor.g * 0.72 + FragColor.b * 0.07); + //next line: we could binarize alpha, but see rendering of visible human + //FragColor.a = step(0.01, FragColor.a); + } + if (modulation == 2) + FragColor.a = texture(modulationVol, vx.xyz).r; + FragColor.a *= opacity; + if (layer < 1.0) return; + vec4 prevColor = texture(blend3D, vec3(TexCoord.xy, coordZ)); + // https://en.wikipedia.org/wiki/Alpha_compositing + float aout = FragColor.a + (1.0 - FragColor.a) * prevColor.a; + if (aout <= 0.0) return; + FragColor.rgb = ((FragColor.rgb * FragColor.a) + (prevColor.rgb * prevColor.a * (1.0 - FragColor.a))) / aout; + FragColor.a = aout; +}`; +var vertGrowCutShader = `#version 300 es +#line 808 +precision highp int; +precision highp float; +in vec3 vPos; +out vec2 TexCoord; +void main() { + TexCoord = vPos.xy; + gl_Position = vec4((vPos.x - 0.5) * 2.0, (vPos.y - 0.5) * 2.0, 0.0, 1.0); +}`; +var fragGrowCutShader = `#version 300 es +#line 829 + precision highp float; + precision highp int; + precision highp isampler3D; + layout(location = 0) out int label; + layout(location = 1) out int strength; + in vec2 TexCoord; + uniform int finalPass; + uniform float coordZ; + uniform lowp sampler3D in3D; + uniform highp isampler3D backTex; // background + uniform highp isampler3D labelTex; // label + uniform highp isampler3D strengthTex; // strength +void main(void) { + vec3 interpolatedTextureCoordinate = vec3(TexCoord.xy, coordZ); + ivec3 size = textureSize(backTex, 0); + ivec3 texelIndex = ivec3(floor(interpolatedTextureCoordinate * vec3(size))); + int background = texelFetch(backTex, texelIndex, 0).r; + label = texelFetch(labelTex, texelIndex, 0).r; + strength = texelFetch(strengthTex, texelIndex, 0).r; + for (int k = -1; k <= 1; k++) { + for (int j = -1; j <= 1; j++) { + for (int i = -1; i <= 1; i++) { + if (i != 0 && j != 0 && k != 0) { + ivec3 neighborIndex = texelIndex + ivec3(i,j,k); + int neighborBackground = texelFetch(backTex, neighborIndex, 0).r; + int neighborStrength = texelFetch(strengthTex, neighborIndex, 0).r; + int strengthCost = abs(neighborBackground - background); + int takeoverStrength = neighborStrength - strengthCost; + if (takeoverStrength > strength) { + strength = takeoverStrength; + label = texelFetch(labelTex, neighborIndex, 0).r; + } + } + } + } + } + if (finalPass < 1) + return; + int ok = 1; + ivec4 labelCount = ivec4(0,0,0,0); + for (int k = -1; k <= 1; k++) + for (int j = -1; j <= 1; j++) + for (int i = -1; i <= 1; i++) { + ivec3 neighborIndex = texelIndex + ivec3(i,j,k); + int ilabel = texelFetch(labelTex, neighborIndex, 0).r; + if ((ilabel < 0) || (ilabel > 3)) + ok = 0; + else + labelCount[ilabel]++; + } + if (ok != 1) { + return; + } + int maxIdx = 0; + for (int i = 1; i < 4; i++) { + if (labelCount[i] > labelCount[maxIdx]) + maxIdx = i; + } + label = maxIdx; +}`; +var vertSurfaceShader = `#version 300 es +layout(location=0) in vec3 pos; +uniform mat4 mvpMtx; +void main(void) { + gl_Position = mvpMtx * vec4(pos, 1.0); +}`; +var fragSurfaceShader = `#version 300 es +precision highp int; +precision highp float; +uniform vec4 surfaceColor; +out vec4 color; +void main() { + color = surfaceColor; +}`; +var vertFiberShader = `#version 300 es +layout(location=0) in vec3 pos; +layout(location=1) in vec4 clr; +out vec4 vClr; +uniform mat4 mvpMtx; +void main(void) { + gl_Position = mvpMtx * vec4(pos, 1.0); + vClr = clr; +}`; +var fragFiberShader = `#version 300 es +precision highp int; +precision highp float; +in vec4 vClr; +out vec4 color; +uniform float opacity; +void main() { + color = vec4(vClr.rgb, opacity); +}`; +var vertMeshShader = `#version 300 es +layout(location=0) in vec3 pos; +layout(location=1) in vec4 norm; +layout(location=2) in vec4 clr; +uniform mat4 mvpMtx; +//uniform mat4 modelMtx; +uniform mat4 normMtx; +out vec4 vClr; +out vec3 vN; +out vec4 vP; +out vec4 vPc; +void main(void) { + vec3 lightPosition = vec3(0.0, 0.0, -10.0); + vP = vec4(pos, 1.0); + vPc = mvpMtx * vec4(pos, 1.0); + gl_Position = vPc; + vN = normalize((normMtx * vec4(norm.xyz,1.0)).xyz); + //vV = -vec3(modelMtx*vec4(pos,1.0)); + vClr = clr; +}`; +var fragMeshDepthShader = `#version 300 es +precision highp int; +precision highp float; +uniform float opacity; +out vec4 color; +vec4 packFloatToVec4i(const float value) { + const vec4 bitSh = vec4(256.0*256.0*256.0, 256.0*256.0, 256.0, 1.0); + const vec4 bitMsk = vec4(0.0, 1.0/256.0, 1.0/256.0, 1.0/256.0); + vec4 res = fract(value * bitSh); + res -= res.xxyz * bitMsk; + return res; +} +void main() { + color = packFloatToVec4i(gl_FragCoord.z); +}`; +var fragMeshToonShader = `#version 300 es +precision highp int; +precision highp float; +uniform float opacity; +in vec4 vClr; +in vec3 vN; +out vec4 color; +float stepmix(float edge0, float edge1, float E, float x){ + float T = clamp(0.5 * (x - edge0 + E) / E, 0.0, 1.0); + return mix(edge0, edge1, T); +} +void main() { + vec3 r = vec3(0.0, 0.0, 1.0); + float ambient = 0.3; + float diffuse = 0.6; + float specular = 0.5; + float shininess = 50.0; + vec3 n = normalize(vN); + vec3 lightPosition = vec3(0.0, 10.0, -5.0); + vec3 l = normalize(lightPosition); + float df = max(0.0, dot(n, l)); + float sf = pow(max(dot(reflect(l, n), r), 0.0), shininess); + const float A = 0.1; + const float B = 0.3; + const float C = 0.6; + const float D = 1.0; + float E = fwidth(df); + if (df > A - E && df < A + E) df = stepmix(A, B, E, df); + else if (df > B - E && df < B + E) df = stepmix(B, C, E, df); + else if (df > C - E && df < C + E) df = stepmix(C, D, E, df); + else if (df < A) df = 0.0; + else if (df < B) df = B; + else if (df < C) df = C; + else df = D; + E = fwidth(sf); + if (sf > 0.5 - E && sf < 0.5 + E) + sf = smoothstep(0.5 - E, 0.5 + E, sf); + else + sf = step(0.5, sf); + vec3 a = vClr.rgb * ambient; + vec3 d = max(df, 0.0) * vClr.rgb * diffuse; + color.rgb = a + d + (specular * sf); + color.a = opacity; +}`; +var fragMeshOutlineShader = `#version 300 es +precision highp int; +precision highp float; +uniform float opacity; +in vec4 vClr; +in vec3 vN; +out vec4 color; +void main() { + vec3 r = vec3(0.0, 0.0, 1.0); //rayDir: for orthographic projections moving in Z direction (no need for normal matrix) + float ambient = 0.3; + float diffuse = 0.6; + float specular = 0.25; + float shininess = 10.0; + float PenWidth = 0.6; + vec3 n = normalize(vN); + vec3 lightPosition = vec3(0.0, 10.0, -5.0); + vec3 l = normalize(lightPosition); + float lightNormDot = dot(n, l); + float view = abs(dot(n,r)); //with respect to viewer + if (PenWidth < view) discard; + vec3 a = vClr.rgb * ambient; + vec3 d = max(lightNormDot, 0.0) * vClr.rgb * diffuse; + float s = specular * pow(max(dot(reflect(l, n), r), 0.0), shininess); + color.rgb = a + d + s; + color.a = opacity; +}`; +var fragMeshRimShader = `#version 300 es +precision highp int; +precision highp float; +uniform float opacity; +in vec4 vClr; +in vec3 vN; +out vec4 color; +void main() { + const float thresh = 0.4; + const vec3 viewDir = vec3(0.0, 0.0, -1.0); + vec3 n = normalize(vN); + // use abs() for two-sided lighting, max() for one sided + float cosTheta = abs(dot(n, viewDir)); + // float cosTheta = max(dot(n, viewDir), 0.0); + // optional fresnel equation - adjust exponent + // cosTheta = 1.0 - pow(1.0 - cosTheta, 2.0); + // use step for binary edges, smoothstep for feathered edges + // vec3 d = step(thresh, cosTheta) * vClr.rgb; + vec3 d = smoothstep(thresh - 0.05, thresh + 0.05, cosTheta) * vClr.rgb; + color = vec4(d, opacity); +}`; +var fragMeshContourShader = `#version 300 es +precision highp int; +precision highp float; +uniform float opacity; +in vec4 vClr; +in vec3 vN; +out vec4 color; +void main() { + const float edge0 = 0.1; + const float edge1 = 0.25; + const vec3 viewDir = vec3(0.0, 0.0, -1.0); + vec3 n = normalize(vN); + float cosTheta = abs(dot(n, viewDir)); + float alpha = 1.0 - smoothstep(edge0, edge1, cosTheta); + if (alpha <= 0.0) { + discard; + } + color = vec4(0.0, 0.0, 0.0, opacity * alpha); +}`; +var fragMeshEdgeShader = `#version 300 es +precision highp int; +precision highp float; +uniform float opacity; +in vec4 vClr; +in vec3 vN; +out vec4 color; +void main() { + vec3 r = vec3(0.0, 0.0, 1.0); //rayDir: for orthographic projections moving in Z direction (no need for normal matrix) + float diffuse = 1.0; + float specular = 0.2; + float shininess = 10.0; + vec3 n = normalize(vN); + vec3 lightPosition = vec3(0.0, 0.0, -5.0); + vec3 l = normalize(lightPosition); + float lightNormDot = max(dot(n, l), 0.0); + vec3 d = lightNormDot * vClr.rgb * diffuse; + float s = specular * pow(max(dot(reflect(l, n), r), 0.0), shininess); + color = vec4(d + s, opacity); +}`; +var fragMeshDiffuseEdgeShader = `#version 300 es +precision highp int; +precision highp float; +uniform float opacity; +in vec4 vClr; +in vec3 vN; +out vec4 color; +void main() { + float diffuse = 1.4; + vec3 l = vec3(0.0, 0.0, -1.0); + float lightNormDot = max(dot(normalize(vN), l), 0.0); + color = vec4(lightNormDot * vClr.rgb * diffuse, opacity); +}`; +var fragMeshSpecularEdgeShader = `#version 300 es +precision highp int; +precision highp float; +uniform float opacity; +in vec4 vClr; +in vec3 vN; +out vec4 color; +void main() { + float specularRGB = 0.7; + float specularWhite = 0.3; + float shininess = 10.0; + float diffuse = 1.0; + vec3 r = vec3(0.0, 0.0, 1.0); //rayDir: for orthographic projections moving in Z direction (no need for normal matrix) + vec3 n = normalize(vN); + vec3 l = vec3(0.0, 0.0, -1.0); + float lightNormDot = max(dot(n, l), 0.0); + vec3 d3 = lightNormDot * vClr.rgb * diffuse; + float s = pow(max(dot(reflect(l, n), r), 0.0), shininess); + vec3 s3 = specularRGB * s * vClr.rgb; + s *= specularWhite; + color = vec4(d3 + s3 + s, opacity); +}`; +var fragMeshShaderCrevice = `#version 300 es +precision highp int; +precision highp float; +uniform float opacity; +in vec4 vClr; +in vec3 vN; +in vec4 vPc; +out vec4 color; +void main() { + vec3 n = normalize(vN); + // Compute curvature + vec3 dx = dFdx(n); + vec3 dy = dFdy(n); + vec3 xneg = n - dx; + vec3 xpos = n + dx; + vec3 yneg = n - dy; + vec3 ypos = n + dy; + float depth = length(vPc.xyz); + float curv = (cross(xneg, xpos).y - cross(yneg, ypos).x) / depth; + //at this stage 0.5 for flat, with valleys dark and ridges bright + curv = 1.0 - (curv + 0.5); + //clamp + curv = min(max(curv, 0.0), 1.0); + // easing function + curv = pow(curv, 0.5); + //modulate ambient and diffuse with curvature + vec3 r = vec3(0.0, 0.0, 1.0); //rayDir: for orthographic projections moving in Z direction (no need for normal matrix) + float ambient = 0.6; + float diffuse = 0.6; + float specular = 0.2; + float shininess = 10.0; + vec3 lightPosition = vec3(0.0, 10.0, -2.0); + vec3 l = normalize(lightPosition); + float lightNormDot = dot(n, l); + vec3 a = vClr.rgb * ambient * curv; + vec3 d = max(lightNormDot, 0.0) * vClr.rgb * diffuse; + float s = specular * pow(max(dot(reflect(l, n), r), 0.0), shininess); + color = vec4(a + d + s, opacity); +}`; +var fragCrosscutMeshShader = `#version 300 es +precision highp int; +precision highp float; +uniform vec4 sliceMM; +uniform float thickMM ; +in vec4 vClr; +in vec4 vP; // vertex position in mm +out vec4 color; +void main() { + const float LINE_WIDTH_PX = 4.0; // target thickness in pixels + //const float LINE_THRESH_MM = 1.5; // target thickness in pixels + const float TILT_STRENGTH = 1.0; // >0 shrinks ribbon for oblique triangles + // --- signed distances to each orthogonal plane (object space) --- + vec3 d = vP.xyz - sliceMM.xyz; + vec3 ad = abs(d); + // --- derivatives to get pixel-consistent widths (per-axis) --- + vec3 fd = fwidth(vP.xyz); + //minDist is in mm not pixels + float minDist = min(ad.x, min(ad.y, ad.z)); + if (minDist > sliceMM.w) discard; + // --- per-plane obliqueness: use the two in-plane components' fwidth --- + float tiltX = length(fd.yz); // for plane with normal X + float tiltY = length(fd.xz); // for plane with normal Y + float tiltZ = length(fd.xy); // for plane with normal Z + float tfX = clamp(1.0 / (1.0 + TILT_STRENGTH * tiltX), 0.0, 1.0); + float tfY = clamp(1.0 / (1.0 + TILT_STRENGTH * tiltY), 0.0, 1.0); + float tfZ = clamp(1.0 / (1.0 + TILT_STRENGTH * tiltZ), 0.0, 1.0); + // --- half-widths for each plane (apply per-axis tilt factor) --- + vec3 halfWidth; + halfWidth.x = (LINE_WIDTH_PX * 0.5) * fd.x * tfX; + halfWidth.y = (LINE_WIDTH_PX * 0.5) * fd.y * tfY; + halfWidth.z = (LINE_WIDTH_PX * 0.5) * fd.z * tfZ; + // --- smooth alpha for each plane --- + vec3 edgeA = 1.0 - smoothstep(vec3(0.0), halfWidth, ad); + // combine planes (max of X,Y,Z ribbons) + float edgeAlpha = max(edgeA.x, max(edgeA.y, edgeA.z)); + if (edgeAlpha <= 1e-4) discard; // outside ribbons + color = vec4(vClr.rgb, vClr.a * edgeAlpha); +}`; +var fragMeshShader = `#version 300 es +precision highp int; +precision highp float; +uniform float opacity; +in vec4 vClr; +in vec3 vN; +out vec4 color; +void main() { + vec3 r = vec3(0.0, 0.0, 1.0); //rayDir: for orthographic projections moving in Z direction (no need for normal matrix) + float ambient = 0.35; + float diffuse = 0.5; + float specular = 0.2; + float shininess = 10.0; + vec3 n = normalize(vN); + vec3 lightPosition = vec3(0.0, 10.0, -5.0); + vec3 l = normalize(lightPosition); + float lightNormDot = dot(n, l); + vec3 a = vClr.rgb * ambient; + vec3 d = max(lightNormDot, 0.0) * vClr.rgb * diffuse; + float s = specular * pow(max(dot(reflect(l, n), r), 0.0), shininess); + color = vec4(a + d + s, opacity); +}`; +var fragMeshMatcapShader = `#version 300 es +precision highp int; +precision highp float; +uniform float opacity; +in vec4 vClr; +in vec3 vN; +uniform sampler2D matCap; +out vec4 color; +void main() { + vec3 n = normalize(vN); + vec2 uv = n.xy * 0.5 + 0.5; + uv.y = 1.0 - uv.y; + vec3 clr = texture(matCap,uv.xy).rgb * vClr.rgb; + color = vec4(clr, opacity); +}`; +var fragMeshMatteShader = `#version 300 es +precision highp int; +precision highp float; +uniform float opacity; +in vec4 vClr; +in vec3 vN; +out vec4 color; +void main() { + float ambient = 0.35; + float diffuse = 0.6; + vec3 n = normalize(vN); + vec3 lightPosition = vec3(0.0, 10.0, -5.0); + vec3 l = normalize(lightPosition); + float lightNormDot = dot(n, l); + vec3 a = vClr.rgb * ambient; + vec3 d = max(lightNormDot, 0.0) * vClr.rgb * diffuse; + color = vec4(a + d, opacity); +}`; +var fragMeshHemiShader = `#version 300 es +precision highp int; +precision highp float; +uniform float opacity; +in vec4 vClr; +in vec3 vN; +out vec4 color; +void main() { + vec3 r = vec3(0.0, 0.0, 1.0); //rayDir: for orthographic projections moving in Z direction (no need for normal matrix) + float ambient = 0.35; + float diffuse = 0.5; + float specular = 0.2; + float shininess = 10.0; + vec3 n = normalize(vN); + vec3 lightPosition = vec3(0.0, 10.0, -5.0); + vec3 l = normalize(lightPosition); + float lightNormDot = dot(n, l); + vec3 up = vec3(0.0, 1.0, 0.0); + float ax = dot(n, up) * 0.5 + 0.5; //Shreiner et al. (2013) OpenGL Programming Guide, 8th Ed., p 388. ISBN-10: 0321773039 + vec3 upClr = vec3(1.0, 1.0, 0.95); + vec3 downClr = vec3(0.4, 0.4, 0.6); + vec3 a = vClr.rgb * ambient; + a *= mix(downClr, upClr, ax); + vec3 d = max(lightNormDot, 0.0) * vClr.rgb * diffuse; + float s = specular * pow(max(dot(reflect(l, n), r), 0.0), shininess); + color = vec4(a + d + s, opacity); +}`; +var fragMeshShaderSHBlue = `#version 300 es +precision highp int; +precision highp float; +uniform float opacity; +in vec4 vClr; +in vec3 vN; +out vec4 color; +//Spherical harmonics constants +const float C1 = 0.429043; +const float C2 = 0.511664; +const float C3 = 0.743125; +const float C4 = 0.886227; +const float C5 = 0.247708; +//Spherical harmonics coefficients +// Ramamoorthi, R., and P. Hanrahan. 2001b. "An Efficient Representation for Irradiance Environment Maps." In Proceedings of SIGGRAPH 2001, pp. 497\u2013500. +// https://github.com/eskimoblood/processingSketches/blob/master/data/shader/shinyvert.glsl +// https://github.com/eskimoblood/processingSketches/blob/master/data/shader/shinyvert.glsl +// Constants for Eucalyptus Grove lighting +const vec3 L00 = vec3( 0.3783264, 0.4260425, 0.4504587); +const vec3 L1m1 = vec3( 0.2887813, 0.3586803, 0.4147053); +const vec3 L10 = vec3( 0.0379030, 0.0295216, 0.0098567); +const vec3 L11 = vec3(-0.1033028, -0.1031690, -0.0884924); +const vec3 L2m2 = vec3(-0.0621750, -0.0554432, -0.0396779); +const vec3 L2m1 = vec3( 0.0077820, -0.0148312, -0.0471301); +const vec3 L20 = vec3(-0.0935561, -0.1254260, -0.1525629); +const vec3 L21 = vec3(-0.0572703, -0.0502192, -0.0363410); +const vec3 L22 = vec3( 0.0203348, -0.0044201, -0.0452180); +vec3 SH(vec3 vNormal) { + vNormal = vec3(vNormal.x,vNormal.z,vNormal.y); + vec3 diffuseColor = C1 * L22 * (vNormal.x * vNormal.x - vNormal.y * vNormal.y) + + C3 * L20 * vNormal.z * vNormal.z + + C4 * L00 - + C5 * L20 + + 2.0 * C1 * L2m2 * vNormal.x * vNormal.y + + 2.0 * C1 * L21 * vNormal.x * vNormal.z + + 2.0 * C1 * L2m1 * vNormal.y * vNormal.z + + 2.0 * C2 * L11 * vNormal.x + + 2.0 * C2 * L1m1 * vNormal.y + + 2.0 * C2 * L10 * vNormal.z; + return diffuseColor; +} +void main() { + vec3 r = vec3(0.0, 0.0, 1.0); //rayDir: for orthographic projections moving in Z direction (no need for normal matrix) + float ambient = 0.3; + float diffuse = 0.6; + float specular = 0.1; + float shininess = 10.0; + vec3 n = normalize(vN); + vec3 lightPosition = vec3(0.0, 10.0, -5.0); + vec3 l = normalize(lightPosition); + float s = specular * pow(max(dot(reflect(l, n), r), 0.0), shininess); + vec3 a = vClr.rgb * ambient; + vec3 d = vClr.rgb * diffuse * SH(-reflect(n, vec3(l.x, l.y, -l.z)) ); + color = vec4(a + d + s, opacity); +}`; +var vertFlatMeshShader = `#version 300 es +layout(location=0) in vec3 pos; +layout(location=1) in vec4 norm; +layout(location=2) in vec4 clr; +uniform mat4 mvpMtx; +//uniform mat4 modelMtx; +uniform mat4 normMtx; +out vec4 vClr; +flat out vec3 vN; +void main(void) { + gl_Position = mvpMtx * vec4(pos, 1.0); + vN = normalize((normMtx * vec4(norm.xyz,1.0)).xyz); + //vV = -vec3(modelMtx*vec4(pos,1.0)); + vClr = clr; +}`; +var fragFlatMeshShader = `#version 300 es +precision highp int; +precision highp float; +uniform float opacity; +in vec4 vClr; +flat in vec3 vN; +out vec4 color; +void main() { + vec3 r = vec3(0.0, 0.0, 1.0); //rayDir: for orthographic projections moving in Z direction (no need for normal matrix) + float ambient = 0.35; + float diffuse = 0.5; + float specular = 0.2; + float shininess = 10.0; + vec3 n = normalize(vN); + vec3 lightPosition = vec3(0.0, 10.0, -5.0); + vec3 l = normalize(lightPosition); + float lightNormDot = dot(n, l); + vec3 a = vClr.rgb * ambient; + vec3 d = max(lightNormDot, 0.0) * vClr.rgb * diffuse; + float s = specular * pow(max(dot(reflect(l, n), r), 0.0), shininess); + color = vec4(a + d + s, opacity); +}`; +var fragVolumePickingShader = `#version 300 es +#line 1260 +#define MAX_CLIP_PLANES 6 +//precision highp int; +precision highp float; +uniform vec3 rayDir; +uniform vec3 volScale; +uniform vec3 texVox; +uniform vec4 clipPlane; +uniform vec4 clipPlanes[MAX_CLIP_PLANES]; +uniform bool isClipCutaway; +uniform highp sampler3D volume, overlay; +uniform highp sampler3D paqd; +uniform vec4 paqdUniforms; +uniform float overlays; +uniform mat4 matRAS; +uniform mat4 mvpMtx; +uniform float drawOpacity, renderOverlayBlend; +uniform highp sampler3D drawing; +uniform highp sampler2D colormap; +uniform int backgroundMasksOverlays; +in vec3 vColor; +out vec4 fColor; +` + kRenderFunc + ` +void main() { + int id = 254; + vec3 start = vColor; + gl_FragDepth = 1.0; + fColor = vec4(0.0, 0.0, 0.0, 0.0); //assume no hit: ID = 0 + float fid = float(id & 255)/ 255.0; + vec3 backPosition = GetBackPosition(start); + vec3 dir = normalize(backPosition - start); + //clipVolumeStart(start, backPosition); + float len = length(backPosition - start); + float lenVox = length((texVox * start) - (texVox * backPosition)); + if ((lenVox < 0.5) || (len > 3.0)) return;//discard; //length limit for parallel rays + float sliceSize = len / lenVox; //e.g. if ray length is 1.0 and traverses 50 voxels, each voxel is 0.02 in unit cube + float stepSize = sliceSize; //quality: larger step is faster traversal, but fewer samples + float opacityCorrection = stepSize/sliceSize; + dir = normalize(dir); + vec4 samplePos = vec4(start.xyz, 0.0); //ray position + bool hasClip = false; + vec2 sampleRange = vec2(0.0, len); + for (int i = 0; i < MAX_CLIP_PLANES; i++) + clipSampleRange(dir, samplePos, clipPlanes[i], sampleRange, hasClip); + bool isClip = (sampleRange.x > 0.0) || ((sampleRange.y < len) && (sampleRange.y > 0.0)); + //vec4 clipPos = applyClip(dir, samplePos, len, isClip); + if (isClip) fColor = vec4(samplePos.xyz, 253.0 / 255.0); //assume no hit: ID = 0 + if ((isClipCutaway) && (sampleRange.x <= 0.0) && (sampleRange.y >= len)) { + //completely clipped, but ray does not intersect plane + if (hasClip) + samplePos.a = len + 1.0; + else + sampleRange = vec2(0.0, 0.0); + } + //start: OPTIONAL fast pass: rapid traversal until first hit + float stepSizeFast = sliceSize * 1.9; + vec4 deltaDirFast = vec4(dir.xyz * stepSizeFast, stepSizeFast); + while (samplePos.a <= len) { + if (skipSample(samplePos.a, sampleRange) ^^ isClipCutaway) { + samplePos += deltaDirFast; + continue; + } + float val = texture(volume, samplePos.xyz).a; + if (val > 0.01) { + fColor = vec4(samplePos.rgb, fid); + gl_FragDepth = frac2ndc(samplePos.xyz); + break; + } + samplePos += deltaDirFast; //advance ray position + } + //end: fast pass + if ((overlays < 1.0) || (backgroundMasksOverlays > 0)) { + return; //background hit, no overlays + } + //overlay pass + len = min(len, samplePos.a); //only find overlay closer than background + samplePos = vec4(start.xyz, 0.0); //ray position + while (samplePos.a <= len) { + float val = texture(overlay, samplePos.xyz).a; + if (val > 0.01) { + fColor = vec4(samplePos.rgb, fid); + gl_FragDepth = frac2ndc(samplePos.xyz); + return; + } + samplePos += deltaDirFast; //advance ray position + } + //if (fColor.a == 0.0) discard; //no hit in either background or overlays + //you only get here if there is a hit with the background that is closer than any overlay +}`; +var vertOrientCubeShader = `#version 300 es +// an attribute is an input (in) to a vertex shader. +// It will receive data from a buffer +layout(location=0) in vec3 a_position; +layout(location=1) in vec3 a_color; +// A matrix to transform the positions by +uniform mat4 u_matrix; +out vec3 vColor; +// all shaders have a main function +void main() { + // Multiply the position by the matrix. + vec4 pos = vec4(a_position, 1.0); + gl_Position = u_matrix * vec4(pos); + vColor = a_color; +} +`; +var fragOrientCubeShader = `#version 300 es +precision highp float; +uniform vec4 u_color; +in vec3 vColor; +out vec4 outColor; +void main() { + outColor = vec4(vColor, 1.0); +}`; +var vertPassThroughShader = `#version 300 es +#line 1359 +precision highp int; +precision highp float; +in vec3 vPos; +out vec2 TexCoord; +void main() { + TexCoord = vPos.xy; + vec2 viewCoord = (vPos.xy - 0.5) * 2.0; + gl_Position = vec4((vPos.xy - 0.5) * 2.0, 0.0, 1.0); +}`; +var fragPassThroughShader = `#version 300 es +precision highp int; +precision highp float; +in vec2 TexCoord; +out vec4 FragColor; +uniform float coordZ; +uniform lowp sampler3D in3D; +void main(void) { + FragColor = texture(in3D, vec3(TexCoord.xy, coordZ)); +}`; +var blurVertShader = `#version 300 es +#line 286 +precision highp int; +precision highp float; +in vec3 vPos; +out vec2 TexCoord; +void main() { + TexCoord = vPos.xy; + gl_Position = vec4( (vPos.xy-vec2(0.5,0.5))* 2.0, 0.0, 1.0); +}`; +var blurFragShader = `#version 300 es +#line 298 +precision highp int; +precision highp float; +in vec2 TexCoord; +out vec4 FragColor; +uniform float coordZ; +uniform float dX; +uniform float dY; +uniform float dZ; +uniform highp sampler3D intensityVol; +void main(void) { + vec3 vx = vec3(TexCoord.xy, coordZ); + vec4 samp = texture(intensityVol,vx+vec3(+dX,+dY,+dZ)); + samp += texture(intensityVol,vx+vec3(+dX,+dY,-dZ)); + samp += texture(intensityVol,vx+vec3(+dX,-dY,+dZ)); + samp += texture(intensityVol,vx+vec3(+dX,-dY,-dZ)); + samp += texture(intensityVol,vx+vec3(-dX,+dY,+dZ)); + samp += texture(intensityVol,vx+vec3(-dX,+dY,-dZ)); + samp += texture(intensityVol,vx+vec3(-dX,-dY,+dZ)); + samp += texture(intensityVol,vx+vec3(-dX,-dY,-dZ)); + FragColor = samp*0.125; +}`; +var sobelBlurFragShader = `#version 300 es +#line 298 +precision highp int; +precision highp float; +in vec2 TexCoord; +out vec4 FragColor; +uniform float coordZ; +uniform float dX; +uniform float dY; +uniform float dZ; +uniform highp sampler3D intensityVol; +void main(void) { + vec3 vx = vec3(TexCoord.xy, coordZ); + vec4 XYZ = texture(intensityVol,vx+vec3(+dX,+dY,+dZ)); + vec4 OYZ = texture(intensityVol,vx+vec3(0.0,+dY,+dZ)); + vec4 xYZ = texture(intensityVol,vx+vec3(-dX,+dY,+dZ)); + vec4 XOZ = texture(intensityVol,vx+vec3(+dX,0.0,+dZ)); + vec4 OOZ = texture(intensityVol,vx+vec3(0.0,0.0,+dZ)); + vec4 xOZ = texture(intensityVol,vx+vec3(-dX,0.0,+dZ)); + vec4 XyZ = texture(intensityVol,vx+vec3(+dX,-dY,+dZ)); + vec4 OyZ = texture(intensityVol,vx+vec3(0.0,-dY,+dZ)); + vec4 xyZ = texture(intensityVol,vx+vec3(-dX,-dY,+dZ)); + + vec4 XYO = texture(intensityVol,vx+vec3(+dX,+dY,0.0)); + vec4 OYO = texture(intensityVol,vx+vec3(0.0,+dY,0.0)); + vec4 xYO = texture(intensityVol,vx+vec3(-dX,+dY,0.0)); + vec4 XOO = texture(intensityVol,vx+vec3(+dX,0.0,0.0)); + vec4 OOO = texture(intensityVol,vx+vec3(0.0,0.0,0.0)); + vec4 xOO = texture(intensityVol,vx+vec3(-dX,0.0,0.0)); + vec4 XyO = texture(intensityVol,vx+vec3(+dX,-dY,0.0)); + vec4 OyO = texture(intensityVol,vx+vec3(0.0,-dY,0.0)); + vec4 xyO = texture(intensityVol,vx+vec3(-dX,-dY,0.0)); + + vec4 XYz = texture(intensityVol,vx+vec3(+dX,+dY,-dZ)); + vec4 OYz = texture(intensityVol,vx+vec3(0.0,+dY,-dZ)); + vec4 xYz = texture(intensityVol,vx+vec3(-dX,+dY,-dZ)); + vec4 XOz = texture(intensityVol,vx+vec3(+dX,0.0,-dZ)); + vec4 OOz = texture(intensityVol,vx+vec3(0.0,0.0,-dZ)); + vec4 xOz = texture(intensityVol,vx+vec3(-dX,0.0,-dZ)); + vec4 Xyz = texture(intensityVol,vx+vec3(+dX,-dY,-dZ)); + vec4 Oyz = texture(intensityVol,vx+vec3(0.0,-dY,-dZ)); + vec4 xyz = texture(intensityVol,vx+vec3(-dX,-dY,-dZ)); + + vec4 blurred = vec4 (0.0, 0.0, 0.0, 0.0); + blurred.r = 2.0*(xOz.r +xOZ.r +xyO.r +xYO.r +xOO.r +XOz.r +XOZ.r +XyO.r +XYO.r +XOO.r) +xyz.r +xyZ.r +xYz.r +xYZ.r +Xyz.r +XyZ.r +XYz.r +XYZ.r; + blurred.g = 2.0*(Oyz.r +OyZ.r +xyO.r +XyO.r +OyO.r +OYz.r +OYZ.r +xYO.r +XYO.r +OYO.r) +xyz.r +Xyz.r +xyZ.r +XyZ.r +xYz.r +XYz.r +xYZ.r +XYZ.r; + blurred.b = 2.0*(Oyz.r +OYz.r +xOz.r +XOz.r +OOz.r +OyZ.r +OYZ.r +xOZ.r +XOZ.r +OOZ.r) +xyz.r +Xyz.r +xYz.r +XYz.r +xyZ.r +XyZ.r +XyZ.r +XYZ.r; + blurred.a = 0.32*(abs(blurred.r)+abs(blurred.g)+abs(blurred.b)); + // 0.0357 = 1/28 to account for weights, rescale to 2**16, + FragColor = 0.0357*blurred; +}`; +var kGradientMagnitude = ` + gradientSample.a = log2(gradientSample.r*gradientSample.r + gradientSample.g*gradientSample.g + gradientSample.b*gradientSample.b + 1.922337562475971e-06) + 18.988706873717717; +`; +var sobelFirstOrderFragShader = `#version 300 es +#line 323 +precision highp int; +precision highp float; +in vec2 TexCoord; +out vec4 FragColor; +uniform float coordZ; +uniform float dX; +uniform float dY; +uniform float dZ; +uniform highp sampler3D intensityVol; +void main(void) { + vec3 vx = vec3(TexCoord.xy, coordZ); + //Neighboring voxels 'T'op/'B'ottom, 'A'nterior/'P'osterior, 'R'ight/'L'eft + float TAR = texture(intensityVol,vx+vec3(+dX,+dY,+dZ)).r; + float TAL = texture(intensityVol,vx+vec3(+dX,+dY,-dZ)).r; + float TPR = texture(intensityVol,vx+vec3(+dX,-dY,+dZ)).r; + float TPL = texture(intensityVol,vx+vec3(+dX,-dY,-dZ)).r; + float BAR = texture(intensityVol,vx+vec3(-dX,+dY,+dZ)).r; + float BAL = texture(intensityVol,vx+vec3(-dX,+dY,-dZ)).r; + float BPR = texture(intensityVol,vx+vec3(-dX,-dY,+dZ)).r; + float BPL = texture(intensityVol,vx+vec3(-dX,-dY,-dZ)).r; + vec4 gradientSample = vec4 (0.0, 0.0, 0.0, 0.0); + gradientSample.r = BAR+BAL+BPR+BPL -TAR-TAL-TPR-TPL; + gradientSample.g = TPR+TPL+BPR+BPL -TAR-TAL-BAR-BAL; + gradientSample.b = TAL+TPL+BAL+BPL -TAR-TPR-BAR-BPR; +${kGradientMagnitude} + // 0.04242020977371934 = 1/(log2(3*8) - log2(1/(255**2*8))) // 3*8 -> max for 1st order gradient + gradientSample.a *= 0.04242020977371934; + gradientSample.rgb = normalize(gradientSample.rgb); + gradientSample.rgb = (gradientSample.rgb * 0.5)+0.5; + FragColor = gradientSample; +}`; +var sobelSecondOrderFragShader = `#version 300 es +#line 323 +precision highp int; +precision highp float; +in vec2 TexCoord; +out vec4 FragColor; +uniform float coordZ; +uniform float dX; +uniform float dY; +uniform float dZ; +uniform float dX2; +uniform float dY2; +uniform float dZ2; +uniform highp sampler3D intensityVol; +void main(void) { + vec3 vx = vec3(TexCoord.xy, coordZ); + //Neighboring voxels 'T'op/'B'ottom, 'A'nterior/'P'osterior, 'R'ight/'L'eft + vec4 TAR = texture(intensityVol,vx+vec3(+dX,+dY,+dZ)); + vec4 TAL = texture(intensityVol,vx+vec3(+dX,+dY,-dZ)); + vec4 TPR = texture(intensityVol,vx+vec3(+dX,-dY,+dZ)); + vec4 TPL = texture(intensityVol,vx+vec3(+dX,-dY,-dZ)); + vec4 BAR = texture(intensityVol,vx+vec3(-dX,+dY,+dZ)); + vec4 BAL = texture(intensityVol,vx+vec3(-dX,+dY,-dZ)); + vec4 BPR = texture(intensityVol,vx+vec3(-dX,-dY,+dZ)); + vec4 BPL = texture(intensityVol,vx+vec3(-dX,-dY,-dZ)); + vec4 T = texture(intensityVol,vx+vec3(+dX2,0.0,0.0)); + vec4 A = texture(intensityVol,vx+vec3(0.0,+dY2,0.0)); + vec4 R = texture(intensityVol,vx+vec3(0.0,0.0,+dZ2)); + vec4 B = texture(intensityVol,vx+vec3(-dX2,0.0,0.0)); + vec4 P = texture(intensityVol,vx+vec3(0.0,-dY2,0.0)); + vec4 L = texture(intensityVol,vx+vec3(0.0,0.0,-dZ2)); + vec4 gradientSample = vec4 (0.0, 0.0, 0.0, 0.0); + gradientSample.r = -4.0*B.r +8.0*(BAR.r+BAL.r+BPR.r+BPL.r) -8.0*(TAR.r+TAL.r+TPR.r+TPL.r) +4.0*T.r; + gradientSample.g = -4.0*P.g +8.0*(TPR.g+TPL.g+BPR.g+BPL.g) -8.0*(TAR.g+TAL.g+BAR.g+BAL.g) +4.0*A.g; + gradientSample.b = -4.0*L.b +8.0*(TAL.b+TPL.b+BAL.b+BPL.b) -8.0*(TAR.b+TPR.b+BAR.b+BPR.b) +4.0*R.b; +${kGradientMagnitude} + gradientSample.a *= 0.0325; + gradientSample.rgb = normalize(gradientSample.rgb); + gradientSample.rgb = (gradientSample.rgb * 0.5)+0.5; + FragColor = gradientSample; +}`; + +// src/shader.ts +var compileShader = function(gl, vert, frag) { + const vs = gl.createShader(gl.VERTEX_SHADER); + gl.shaderSource(vs, vert); + gl.compileShader(vs); + const fs = gl.createShader(gl.FRAGMENT_SHADER); + gl.shaderSource(fs, frag); + gl.compileShader(fs); + const program = gl.createProgram(); + gl.attachShader(program, vs); + gl.attachShader(program, fs); + gl.linkProgram(program); + if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { + console.log(gl.getProgramInfoLog(program)); + if (!gl.getShaderParameter(vs, gl.COMPILE_STATUS)) { + console.log("Vertex shader compilation error:", gl.getShaderInfoLog(vs)); + } + if (!gl.getShaderParameter(fs, gl.COMPILE_STATUS)) { + console.log("Fragment shader compilation error:", gl.getShaderInfoLog(fs)); + } + log.error(gl.getProgramInfoLog(program)); + throw new Error("Shader failed to link, see console for log"); + } + return program; +}; +var Shader = class { + constructor(gl, vertexSrc, fragmentSrc) { + __publicField(this, "program"); + __publicField(this, "uniforms", {}); + __publicField(this, "isMatcap"); + __publicField(this, "isCrosscut"); + this.program = compileShader(gl, vertexSrc, fragmentSrc); + const regexUniform = /uniform[^;]+[ ](\w+);/g; + const matchUniformName = /uniform[^;]+[ ](\w+);/; + const vertexUnifs = vertexSrc.match(regexUniform); + const fragUnifs = fragmentSrc.match(regexUniform); + if (vertexUnifs) { + vertexUnifs.forEach((unif) => { + const m = unif.match(matchUniformName); + this.uniforms[m[1]] = -1; + }); + } + if (fragUnifs) { + fragUnifs.forEach((unif) => { + const m = unif.match(matchUniformName); + this.uniforms[m[1]] = -1; + }); + } + for (const unif in this.uniforms) { + this.uniforms[unif] = gl.getUniformLocation(this.program, unif); + } + } + use(gl) { + gl.useProgram(this.program); + } +}; + +// src/utils/nice.ts +var nice = (x, round4) => { + const exp = Math.floor(Math.log(x) / Math.log(10)); + const f = x / Math.pow(10, exp); + let nf; + if (round4) { + if (f < 1.5) { + nf = 1; + } else if (f < 3) { + nf = 2; + } else if (f < 7) { + nf = 5; + } else { + nf = 10; + } + } else { + if (f <= 1) { + nf = 1; + } else if (f <= 2) { + nf = 2; + } else if (f <= 5) { + nf = 5; + } else { + nf = 10; + } + } + return nf * Math.pow(10, exp); +}; + +// src/utils/file-utils.ts +function readFileAsDataURL(input) { + return new Promise((resolve2, reject) => { + let filePromise; + if (input instanceof File) { + filePromise = Promise.resolve(input); + } else { + filePromise = new Promise((resolve3, reject2) => { + input.file(resolve3, reject2); + }); + } + filePromise.then((file) => { + const reader = new FileReader(); + reader.onload = () => { + if (typeof reader.result === "string") { + resolve2(reader.result); + } else { + reject(new Error("Expected a string from FileReader.result")); + } + }; + reader.onerror = () => { + reject(reader.error ?? new Error("Unknown FileReader error")); + }; + reader.readAsDataURL(file); + }).catch((err2) => reject(err2)); + }); +} + +// src/utils/image-utils.ts +function img2ras16(volume) { + const dims = volume.hdr.dims; + const perm = volume.permRAS; + const vx = dims[1] * dims[2] * dims[3]; + const img16 = new Int16Array(vx); + const layout = [0, 0, 0]; + for (let i = 0; i < 3; i++) { + for (let j2 = 0; j2 < 3; j2++) { + if (Math.abs(perm[i]) - 1 !== j2) { + continue; + } + layout[j2] = i * Math.sign(perm[i]); + } + } + let stride = 1; + const instride = [1, 1, 1]; + const inflip = [false, false, false]; + for (let i = 0; i < layout.length; i++) { + for (let j2 = 0; j2 < layout.length; j2++) { + const a = Math.abs(layout[j2]); + if (a !== i) { + continue; + } + instride[j2] = stride; + if (layout[j2] < 0 || Object.is(layout[j2], -0)) { + inflip[j2] = true; + } + stride *= dims[j2 + 1]; + } + } + let xlut = NVUtilities.range(0, dims[1] - 1, 1); + if (inflip[0]) { + xlut = NVUtilities.range(dims[1] - 1, 0, -1); + } + for (let i = 0; i < dims[1]; i++) { + xlut[i] *= instride[0]; + } + let ylut = NVUtilities.range(0, dims[2] - 1, 1); + if (inflip[1]) { + ylut = NVUtilities.range(dims[2] - 1, 0, -1); + } + for (let i = 0; i < dims[2]; i++) { + ylut[i] *= instride[1]; + } + let zlut = NVUtilities.range(0, dims[3] - 1, 1); + if (inflip[2]) { + zlut = NVUtilities.range(dims[3] - 1, 0, -1); + } + for (let i = 0; i < dims[3]; i++) { + zlut[i] *= instride[2]; + } + let j = 0; + for (let z = 0; z < dims[3]; z++) { + for (let y = 0; y < dims[2]; y++) { + for (let x = 0; x < dims[1]; x++) { + img16[xlut[x] + ylut[y] + zlut[z]] = volume.img[j]; + j++; + } + } + } + return img16; +} +function unpackFloatFromVec4i(val) { + const bitSh = [1 / (256 * 256 * 256), 1 / (256 * 256), 1 / 256, 1]; + return (val[0] * bitSh[0] + val[1] * bitSh[1] + val[2] * bitSh[2] + val[3] * bitSh[3]) / 255; +} +function intensityRaw2Scaled(hdr, raw) { + if (hdr.scl_slope === 0) { + hdr.scl_slope = 1; + } + return raw * hdr.scl_slope + hdr.scl_inter; +} + +// src/utils/math-utils.ts +function loose_label(min4, max5, ntick = 4) { + const range2 = nice(max5 - min4, false); + const d = nice(range2 / (ntick - 1), true); + const graphmin = Math.floor(min4 / d) * d; + const graphmax = Math.ceil(max5 / d) * d; + const perfect = graphmin === min4 && graphmax === max5; + return [d, graphmin, graphmax, perfect]; +} +function tickSpacing(mn, mx) { + let v = loose_label(mn, mx, 3); + if (!v[3]) { + v = loose_label(mn, mx, 5); + } + if (!v[3]) { + v = loose_label(mn, mx, 4); + } + if (!v[3]) { + v = loose_label(mn, mx, 3); + } + if (!v[3]) { + v = loose_label(mn, mx, 5); + } + return [v[0], v[1], v[2]]; +} +function deg2rad(deg) { + return deg * (Math.PI / 180); +} +function negMinMax(min4, max5, minNeg, maxNeg) { + let mn = -min4; + let mx = -max5; + if (isFinite(minNeg) && isFinite(maxNeg)) { + mn = minNeg; + mx = maxNeg; + } + if (mn > mx) { + ; + [mn, mx] = [mx, mn]; + } + return [mn, mx]; +} +function clamp(value, min4, max5) { + return Math.min(Math.max(value, min4), max5); +} + +// src/utils/webgl-utils.ts +function swizzleVec3(vec, order = [0, 1, 2]) { + const vout = vec3_exports.create(); + vout[0] = vec[order[0]]; + vout[1] = vec[order[1]]; + vout[2] = vec[order[2]]; + return vout; +} +function isRadiological(mtx) { + const vRight = vec4_exports.fromValues(1, 0, 0, 0); + const vRotated = vec4_exports.create(); + vec4_exports.transformMat4(vRotated, vRight, mtx); + return vRotated[0]; +} +function unProject(winX, winY, winZ, mvpMatrix) { + const inp = vec4_exports.fromValues(winX, winY, winZ, 1); + const finalMatrix = mat4_exports.clone(mvpMatrix); + mat4_exports.invert(finalMatrix, finalMatrix); + inp[0] = inp[0] * 2 - 1; + inp[1] = inp[1] * 2 - 1; + inp[2] = inp[2] * 2 - 1; + const out = vec4_exports.create(); + vec4_exports.transformMat4(out, inp, finalMatrix); + if (out[3] === 0) { + return out; + } + out[0] /= out[3]; + out[1] /= out[3]; + out[2] /= out[3]; + return out; +} + +// src/niivue/index.ts +var { version } = package_default; +var MESH_EXTENSIONS = [ + "ASC", + "BYU", + "DFS", + "FSM", + "PIAL", + "ORIG", + "INFLATED", + "SMOOTHWM", + "SPHERE", + "WHITE", + "G", + "GEO", + "GII", + "ICO", + "MZ3", + "NV", + "OBJ", + "OFF", + "PLY", + "SRF", + "STL", + "TCK", + "TRACT", + "TRI", + "TRK", + "TT", + "TRX", + "VTK", + "WRL", + "X3D", + "JCON", + "JSON" +]; +var LEFT_MOUSE_BUTTON = 0; +var CENTER_MOUSE_BUTTON = 1; +var RIGHT_MOUSE_BUTTON = 2; +var TEXTURE0_BACK_VOL = 33984; +var TEXTURE1_COLORMAPS = 33985; +var TEXTURE2_OVERLAY_VOL = 33986; +var TEXTURE3_FONT = 33987; +var TEXTURE4_THUMBNAIL = 33988; +var TEXTURE5_MATCAP = 33989; +var TEXTURE6_GRADIENT = 33990; +var TEXTURE7_DRAW = 33991; +var TEXTURE8_PAQD = 33992; +var TEXTURE8_GRADIENT_TEMP = 33992; +var TEXTURE9_ORIENT = 33993; +var TEXTURE10_BLEND = 33994; +var TEXTURE11_GC_BACK = 33995; +var TEXTURE12_GC_STRENGTH0 = 33996; +var TEXTURE13_GC_STRENGTH1 = 33997; +var TEXTURE14_GC_LABEL0 = 33998; +var TEXTURE15_GC_LABEL1 = 33999; +var defaultSaveImageOptions = { + filename: "", + isSaveDrawing: false, + volumeByIndex: 0 +}; +var _eventsController; +var Niivue = class { + /** + * @param options - options object to set modifiable Niivue properties + */ + constructor(options = DEFAULT_OPTIONS) { + __publicField(this, "loaders", {}); + // create a dicom loader + __publicField(this, "dicomLoader", null); + // { + // loader: (data: DicomLoaderInput) => { + // return new Promise<{name: string; data: ArrayBuffer}[]>((resolve, reject) => { + // reject('No DICOM loader provided') + // }) + // }, + // toExt: 'nii' + // } + __publicField(this, "canvas", null); + // the reference to the canvas element on the page + __publicField(this, "_gl", null); + // the gl context + __publicField(this, "isBusy", false); + // flag to indicate if the scene is busy drawing + __publicField(this, "needsRefresh", false); + // flag to indicate if the scene needs to be redrawn + __publicField(this, "colormapTexture", null); + // the GPU memory storage of the colormap + __publicField(this, "colormapLists", []); + // one entry per colorbar: min, max, tic + __publicField(this, "volumeTexture", null); + // the GPU memory storage of the volume + __publicField(this, "gradientTexture", null); + // 3D texture for volume rendering lighting + __publicField(this, "gradientTextureAmount", 0); + __publicField(this, "useCustomGradientTexture", false); + // flag to indicate if a custom gradient texture is used + __publicField(this, "renderGradientValues", false); + __publicField(this, "drawTexture", null); + // the GPU memory storage of the drawing + __publicField(this, "paqdTexture", null); + // the GPU memory storage of the probabilistic atlas + __publicField(this, "drawUndoBitmaps", []); + // array of drawBitmaps for undo + __publicField(this, "drawLut", cmapper.makeDrawLut("$itksnap")); + // the color lookup table for drawing + __publicField(this, "drawOpacity", 0.8); + // opacity of drawing (default) + __publicField(this, "drawRimOpacity", -1); + // opacity of pixels at edge of drawing (negative value to use drawOpacity) + __publicField(this, "clickToSegmentIsGrowing", false); + // flag to indicate if the clickToSegment flood fill growing is in progress with left mouse down + drag + __publicField(this, "clickToSegmentGrowingBitmap", null); + // the bitmap of the growing flood fill + __publicField(this, "clickToSegmentXY", [0, 0]); + // the x,y location of the clickToSegment flood fill + __publicField(this, "renderDrawAmbientOcclusion", 0.4); + __publicField(this, "colorbarHeight", 0); + // height in pixels, set when colorbar is drawn + __publicField(this, "drawPenLocation", [NaN, NaN, NaN]); + __publicField(this, "drawPenAxCorSag", -1); + // do not allow pen to drag between Sagittal/Coronal/Axial + __publicField(this, "drawFillOverwrites", true); + // if true, fill overwrites existing drawing + __publicField(this, "drawPenFillPts", []); + // store mouse points for filled pen + __publicField(this, "drawShapeStartLocation", [NaN, NaN, NaN]); + // start location for rectangle/ellipse drawing + __publicField(this, "drawShapePreviewBitmap", null); + // preview bitmap for shape drawing + __publicField(this, "overlayTexture", null); + __publicField(this, "overlayTextureID", null); + __publicField(this, "sliceMMShader"); + __publicField(this, "slice2DShader"); + __publicField(this, "sliceV1Shader"); + __publicField(this, "orientCubeShader"); + __publicField(this, "orientCubeShaderVAO", null); + __publicField(this, "rectShader"); + __publicField(this, "rectOutlineShader"); + __publicField(this, "renderShader"); + __publicField(this, "lineShader"); + __publicField(this, "line3DShader"); + __publicField(this, "passThroughShader"); + __publicField(this, "renderGradientShader"); + __publicField(this, "renderGradientValuesShader"); + __publicField(this, "renderSliceShader"); + __publicField(this, "renderVolumeShader"); + __publicField(this, "pickingMeshShader"); + __publicField(this, "pickingImageShader"); + __publicField(this, "colorbarShader"); + __publicField(this, "customSliceShader", null); + __publicField(this, "fontShader", null); + __publicField(this, "fiberShader"); + __publicField(this, "fontTexture", null); + __publicField(this, "circleShader"); + __publicField(this, "matCapTexture", null); + __publicField(this, "bmpShader", null); + __publicField(this, "bmpTexture", null); + // thumbnail WebGLTexture object + __publicField(this, "thumbnailVisible", false); + __publicField(this, "bmpTextureWH", 1); + // thumbnail width/height ratio + __publicField(this, "growCutShader"); + __publicField(this, "orientShaderAtlasU", null); + __publicField(this, "orientShaderAtlasI", null); + __publicField(this, "orientShaderU", null); + __publicField(this, "orientShaderI", null); + __publicField(this, "orientShaderF", null); + __publicField(this, "orientShaderRGBU", null); + __publicField(this, "orientShaderPAQD", null); + __publicField(this, "surfaceShader", null); + __publicField(this, "blurShader", null); + __publicField(this, "sobelBlurShader", null); + __publicField(this, "sobelFirstOrderShader", null); + __publicField(this, "sobelSecondOrderShader", null); + __publicField(this, "genericVAO", null); + // used for 2D slices, 2D lines, 2D Fonts + __publicField(this, "unusedVAO", null); + __publicField(this, "crosshairs3D", null); + __publicField(this, "DEFAULT_FONT_GLYPH_SHEET", Roboto_Regular_default); + // "/fonts/Roboto-Regular.png"; + __publicField(this, "DEFAULT_FONT_METRICS", Roboto_Regular_default2); + // "/fonts/Roboto-Regular.json"; + __publicField(this, "fontMetrics"); + __publicField(this, "fontMets", null); + __publicField(this, "fontPx", 12); + __publicField(this, "legendFontScaling", 1); + __publicField(this, "backgroundMasksOverlays", 0); + __publicField(this, "overlayOutlineWidth", 0); + // float, 0 for none + __publicField(this, "overlayAlphaShader", 1); + // float, 1 for opaque + __publicField(this, "position"); + __publicField(this, "extentsMin"); + __publicField(this, "extentsMax"); + // ResizeObserver + __publicField(this, "resizeObserver", null); + __publicField(this, "resizeEventListener", null); + __publicField(this, "canvasObserver", null); + // syncOpts: Record = {} + __publicField(this, "syncOpts", { + "3d": false, + // legacy option + "2d": false, + // legacy option + zoomPan: false, + cal_min: false, + cal_max: false, + clipPlane: false, + gamma: false, + sliceType: false, + crosshair: false + }); + __publicField(this, "readyForSync", false); + // UI Data + __publicField(this, "uiData", { + mousedown: false, + touchdown: false, + mouseButtonLeftDown: false, + mouseButtonCenterDown: false, + mouseButtonRightDown: false, + mouseDepthPicker: false, + clickedTile: -1, + pan2DxyzmmAtMouseDown: [0, 0, 0, 1], + prevX: 0, + prevY: 0, + currX: 0, + currY: 0, + currentTouchTime: 0, + lastTouchTime: 0, + touchTimer: null, + doubleTouch: false, + isDragging: false, + dragStart: [0, 0], + dragEnd: [0, 0], + dragClipPlaneStartDepthAziElev: [0, 0, 0], + lastTwoTouchDistance: 0, + multiTouchGesture: false, + windowX: 0, + windowY: 0, + activeDragMode: null, + activeDragButton: null, + angleFirstLine: [0, 0, 0, 0], + angleState: "none", + activeClipPlaneIndex: 0 + }); + __privateAdd(this, _eventsController, null); + __publicField(this, "back", null); + // base layer; defines image space to work in. Defined as this.volumes[0] in Niivue.loadVolumes + __publicField(this, "overlays", []); + // layers added on top of base image (e.g. masks or stat maps). Essentially everything after this.volumes[0] is an overlay. So is necessary? + __publicField(this, "deferredVolumes", []); + __publicField(this, "deferredMeshes", []); + __publicField(this, "furthestVertexFromOrigin", 100); + __publicField(this, "volScale", []); + __publicField(this, "vox", []); + __publicField(this, "mousePos", [0, 0]); + __publicField(this, "screenSlices", []); + // empty array + __publicField(this, "cuboidVertexBuffer"); + __publicField(this, "otherNV", null); + // another niivue instance that we wish to sync position with + __publicField(this, "volumeObject3D", null); + __publicField(this, "pivot3D", [0, 0, 0]); + // center for rendering rotation + __publicField(this, "furthestFromPivot", 10); + // most distant point from pivot + __publicField(this, "currentClipPlaneIndex", 0); + __publicField(this, "lastCalled", (/* @__PURE__ */ new Date()).getTime()); + __publicField(this, "selectedObjectId", -1); + __publicField(this, "CLIP_PLANE_ID", 1); + __publicField(this, "VOLUME_ID", 254); + __publicField(this, "DISTANCE_FROM_CAMERA", -0.54); + __publicField(this, "graph", { + LTWH: [0, 0, 640, 480], + opacity: 0, + vols: [0], + // e.g. timeline for background volume only, e.g. [0,2] for first and third volumes + autoSizeMultiplanar: false, + normalizeValues: false, + isRangeCalMinMax: false + }); + __publicField(this, "customLayout", []); + __publicField(this, "meshShaders", [ + { + Name: "Phong", + Frag: fragMeshShader + }, + { + Name: "Matte", + Frag: fragMeshMatteShader + }, + { + Name: "Harmonic", + Frag: fragMeshShaderSHBlue + }, + { + Name: "Hemispheric", + Frag: fragMeshHemiShader + }, + { + Name: "Crevice", + Frag: fragMeshShaderCrevice + }, + { + Name: "Edge", + Frag: fragMeshEdgeShader + }, + { + Name: "Diffuse", + Frag: fragMeshDiffuseEdgeShader + }, + { + Name: "Outline", + Frag: fragMeshOutlineShader + }, + { + Name: "Specular", + Frag: fragMeshSpecularEdgeShader + }, + { + Name: "Toon", + Frag: fragMeshToonShader + }, + { + Name: "Flat", + Frag: fragFlatMeshShader + }, + { + Name: "Matcap", + Frag: fragMeshMatcapShader + }, + { + Name: "Rim", + Frag: fragMeshRimShader + }, + { + Name: "Silhouette", + Frag: fragMeshContourShader + }, + { + Name: "Crosscut", + Frag: fragCrosscutMeshShader + } + ]); + // TODO just let users use DRAG_MODE instead + __publicField(this, "dragModes", { + contrast: 1 /* contrast */, + measurement: 2 /* measurement */, + angle: 7 /* angle */, + none: 0 /* none */, + pan: 3 /* pan */, + slicer3D: 4 /* slicer3D */, + callbackOnly: 5 /* callbackOnly */ + }); + // TODO just let users use SLICE_TYPE instead + __publicField(this, "sliceTypeAxial", 0 /* AXIAL */); + __publicField(this, "sliceTypeCoronal", 1 /* CORONAL */); + __publicField(this, "sliceTypeSagittal", 2 /* SAGITTAL */); + __publicField(this, "sliceTypeMultiplanar", 3 /* MULTIPLANAR */); + __publicField(this, "sliceTypeRender", 4 /* RENDER */); + // Event listeners + /** + * callback function to run when the right mouse button is released after dragging + * @example + * niivue.onDragRelease = () => { + * console.log('drag ended') + * } + */ + __publicField(this, "onDragRelease", () => { + }); + // function to call when contrast drag is released by default. Can be overridden by user + /** + * callback function to run when the left mouse button is released + * @example + * niivue.onMouseUp = () => { + * console.log('mouse up') + * } + */ + __publicField(this, "onMouseUp", () => { + }); + /** + * callback function to run when the crosshair location changes + * @example + * niivue.onLocationChange = (data) => { + * console.log('location changed') + * console.log('mm: ', data.mm) + * console.log('vox: ', data.vox) + * console.log('frac: ', data.frac) + * console.log('values: ', data.values) + * } + */ + __publicField(this, "onLocationChange", () => { + }); + /** + * callback function to run when the user changes the intensity range with the selection box action (right click) + * @example + * niivue.onIntensityChange = (volume) => { + * console.log('intensity changed') + * console.log('volume: ', volume) + * } + */ + __publicField(this, "onIntensityChange", () => { + }); + /** + * callback function when clickToSegment is enabled and the user clicks on the image. data contains the volume of the segmented region in mm3 and mL + * @example + * niivue.onClickToSegment = (data) => { + * console.log('clicked to segment') + * console.log('volume mm3: ', data.mm3) + * console.log('volume mL: ', data.mL) + * } + */ + __publicField(this, "onClickToSegment", () => { + }); + /** + * callback function to run when a new volume is loaded + * @example + * niivue.onImageLoaded = (volume) => { + * console.log('volume loaded') + * console.log('volume: ', volume) + * } + */ + __publicField(this, "onImageLoaded", () => { + }); + /** + * callback function to run when a new mesh is loaded + * @example + * niivue.onMeshLoaded = (mesh) => { + * console.log('mesh loaded') + * console.log('mesh: ', mesh) + * } + */ + __publicField(this, "onMeshLoaded", () => { + }); + /** + * callback function to run when the user changes the volume when a 4D image is loaded + * @example + * niivue.onFrameChange = (volume, frameNumber) => { + * console.log('frame changed') + * console.log('volume: ', volume) + * console.log('frameNumber: ', frameNumber) + * } + */ + __publicField(this, "onFrameChange", () => { + }); + /** + * callback function to run when niivue reports an error + * @example + * niivue.onError = (error) => { + * console.log('error: ', error) + * } + */ + __publicField(this, "onError", () => { + }); + /// TODO was undocumented + __publicField(this, "onColormapChange", () => { + }); + /** + * callback function to run when niivue reports detailed info + * @example + * niivue.onInfo = (info) => { + * console.log('info: ', info) + * } + */ + __publicField(this, "onInfo", () => { + }); + /** + * callback function to run when niivue reports a warning + * @example + * niivue.onWarn = (warn) => { + * console.log('warn: ', warn) + * } + */ + __publicField(this, "onWarn", () => { + }); + /** + * callback function to run when niivue reports a debug message + * @example + * niivue.onDebug = (debug) => { + * console.log('debug: ', debug) + * } + */ + __publicField(this, "onDebug", () => { + }); + /** + * callback function to run when a volume is added from a url + * @example + * niivue.onVolumeAddedFromUrl = (imageOptions, volume) => { + * console.log('volume added from url') + * console.log('imageOptions: ', imageOptions) + * console.log('volume: ', volume) + * } + */ + __publicField(this, "onVolumeAddedFromUrl", () => { + }); + __publicField(this, "onVolumeWithUrlRemoved", () => { + }); + /** + * callback function to run when updateGLVolume is called (most users will not need to use + * @example + * niivue.onVolumeUpdated = () => { + * console.log('volume updated') + * } + */ + __publicField(this, "onVolumeUpdated", () => { + }); + /** + * callback function to run when a mesh is added from a url + * @example + * niivue.onMeshAddedFromUrl = (meshOptions, mesh) => { + * console.log('mesh added from url') + * console.log('meshOptions: ', meshOptions) + * console.log('mesh: ', mesh) + * } + */ + __publicField(this, "onMeshAddedFromUrl", () => { + }); + // TODO seems redundant with onMeshLoaded + __publicField(this, "onMeshAdded", () => { + }); + __publicField(this, "onMeshWithUrlRemoved", () => { + }); + // not implemented anywhere... + __publicField(this, "onZoom3DChange", () => { + }); + /** + * callback function to run when the user changes the rotation of the 3D rendering + * @example + * niivue.onAzimuthElevationChange = (azimuth, elevation) => { + * console.log('azimuth: ', azimuth) + * console.log('elevation: ', elevation) + * } + */ + __publicField(this, "onAzimuthElevationChange", () => { + }); + /** + * callback function to run when the user changes the clip plane + * @example + * niivue.onClipPlaneChange = (clipPlane) => { + * console.log('clipPlane: ', clipPlane) + * } + */ + __publicField(this, "onClipPlaneChange", () => { + }); + __publicField(this, "onCustomMeshShaderAdded", () => { + }); + __publicField(this, "onMeshShaderChanged", () => { + }); + __publicField(this, "onMeshPropertyChanged", () => { + }); + __publicField(this, "onDicomLoaderFinishedWithImages", () => { + }); + /** + * callback function to run when the user loads a new NiiVue document + * @example + * niivue.onDocumentLoaded = (document) => { + * console.log('document: ', document) + * } + */ + __publicField(this, "onDocumentLoaded", () => { + }); + /** + * Callback for when any configuration option changes. + * @param propertyName - The name of the option that changed. + * @param newValue - The new value of the option. + * @param oldValue - The previous value of the option. + */ + __publicField(this, "onOptsChange", () => { + }); + __publicField(this, "document", new NVDocument()); + __publicField(this, "mediaUrlMap", /* @__PURE__ */ new Map()); + __publicField(this, "initialized", false); + __publicField(this, "currentDrawUndoBitmap"); + for (const name in options) { + if (typeof options[name] === "function") { + this[name] = options[name]; + } else { + this.opts[name] = DEFAULT_OPTIONS[name] === void 0 ? DEFAULT_OPTIONS[name] : options[name]; + } + } + if (this.opts.forceDevicePixelRatio === 0) { + this.uiData.dpr = window.devicePixelRatio || 1; + } else if (this.opts.forceDevicePixelRatio < 0) { + this.uiData.dpr = 1; + } else { + this.uiData.dpr = this.opts.forceDevicePixelRatio; + } + this.currentDrawUndoBitmap = this.opts.maxDrawUndoBitmaps; + if (this.opts.drawingEnabled) { + this.createEmptyDrawing(); + } + if (this.opts.thumbnail.length > 0) { + this.thumbnailVisible = true; + } + log.setLogLevel(this.opts.logLevel); + this.document.setOptsChangeCallback((propertyName, newValue, oldValue) => { + this.onOptsChange(propertyName, newValue, oldValue); + }); + } + /** Get the current scene configuration. */ + get scene() { + return this.document.scene; + } + /** Get the current visualization options. */ + get opts() { + return this.document.opts; + } + /** Get the slice mosaic layout string. */ + get sliceMosaicString() { + return this.document.opts.sliceMosaicString || ""; + } + /** Set the slice mosaic layout string. */ + set sliceMosaicString(newSliceMosaicString) { + this.document.opts.sliceMosaicString = newSliceMosaicString; + } + /** + * Get whether voxels below minimum intensity are drawn as dark or transparent. + * @returns {boolean} True if dark voxels are opaque, false if transparent. + */ + get isAlphaClipDark() { + return this.document.opts.isAlphaClipDark; + } + /** + * Set whether voxels below minimum intensity are drawn as dark or transparent. + * @param {boolean} newVal - True to make dark voxels opaque, false for transparent. + * @see {@link https://niivue.com/demos/features/segment.html | live demo usage} + */ + set isAlphaClipDark(newVal) { + this.document.opts.isAlphaClipDark = newVal; + } + /** + * Clean up event listeners and observers + * Call this when the Niivue instance is no longer needed. + * This will be called when the canvas is detached from the DOM + * @example niivue.cleanup(); + */ + cleanup() { + if (this.resizeEventListener) { + window.removeEventListener("resize", this.resizeEventListener); + this.resizeEventListener = null; + } + if (this.resizeObserver) { + this.resizeObserver.disconnect(); + this.resizeObserver = null; + } + if (this.canvasObserver) { + this.canvasObserver.disconnect(); + this.canvasObserver = null; + } + if (__privateGet(this, _eventsController)) { + __privateGet(this, _eventsController).abort(); + __privateSet(this, _eventsController, null); + } + this.document.removeOptsChangeCallback(); + } + get volumes() { + return this.document.volumes; + } + set volumes(volumes) { + this.document.volumes = volumes; + } + get meshes() { + return this.document.meshes; + } + set meshes(meshes) { + this.document.meshes = meshes; + } + get drawBitmap() { + return this.document.drawBitmap; + } + set drawBitmap(drawBitmap) { + this.document.drawBitmap = drawBitmap; + } + get volScaleMultiplier() { + return this.scene.volScaleMultiplier; + } + set volScaleMultiplier(scale6) { + this.setScale(scale6); + } + /** + * save webgl2 canvas as png format bitmap + * @param filename - filename for screen capture + * @example niivue.saveScene('test.png'); + * @see {@link https://niivue.com/demos/features/ui.html | live demo usage} + */ + async saveScene(filename = "niivue.png") { + function saveBlob(blob, name) { + const a = document.createElement("a"); + document.body.appendChild(a); + a.style.display = "none"; + const url = window.URL.createObjectURL(blob); + a.href = url; + a.download = name; + a.click(); + a.remove(); + } + const canvas = this.canvas; + if (!canvas) { + throw new Error("canvas not defined"); + } + this.drawScene(); + canvas.toBlob((blob) => { + if (!blob) { + return; + } + if (filename === "") { + filename = `niivue-screenshot-${(/* @__PURE__ */ new Date()).toString()}.png`; + filename = filename.replace(/\s/g, "_"); + } + saveBlob(blob, filename); + }); + } + /** + * attach the Niivue instance to the webgl2 canvas by element id + * @param id - the id of an html canvas element + * @param isAntiAlias - determines if anti-aliasing is requested (if not specified, AA usage depends on hardware) + * @example niivue = new Niivue().attachTo('gl') + * @example await niivue.attachTo('gl') + * @see {@link https://niivue.com/demos/features/basic.multiplanar.html | live demo usage} + */ + async attachTo(id, isAntiAlias = null) { + await this.attachToCanvas(document.getElementById(id), isAntiAlias); + log.debug("attached to element with id: ", id); + return this; + } + /** + * attach the Niivue instance to a canvas element directly + * @param canvas - the canvas element reference + * @example + * niivue = new Niivue() + * await niivue.attachToCanvas(document.getElementById(id)) + * @see {@link https://niivue.com/demos/features/dsistudio.html | live demo usage} + */ + async attachToCanvas(canvas, isAntiAlias = null) { + this.canvas = canvas; + if (isAntiAlias === null) { + isAntiAlias = navigator.hardwareConcurrency > 6; + log.debug("AntiAlias ", isAntiAlias, " Threads ", navigator.hardwareConcurrency); + } + this.gl = this.canvas.getContext("webgl2", { + alpha: true, + antialias: isAntiAlias + }); + this.uiData.max2D = this.gl.getParameter(this.gl.MAX_TEXTURE_SIZE); + this.uiData.max3D = this.gl.getParameter(this.gl.MAX_3D_TEXTURE_SIZE); + log.info("NIIVUE VERSION ", version); + log.debug(`Max texture size 2D: ${this.uiData.max2D} 3D: ${this.uiData.max3D}`); + this.canvas.parentElement.style.backgroundColor = "black"; + if (this.opts.isResizeCanvas) { + this.canvas.style.width = "100%"; + this.canvas.style.height = "100%"; + this.canvas.style.display = "block"; + this.canvas.width = this.canvas.offsetWidth; + this.canvas.height = this.canvas.offsetHeight; + this.resizeEventListener = () => { + requestAnimationFrame(() => { + this.resizeListener(); + }); + }; + window.addEventListener("resize", this.resizeEventListener); + this.resizeObserver = new ResizeObserver(() => { + requestAnimationFrame(() => { + this.resizeListener(); + }); + }); + this.resizeObserver.observe(this.canvas.parentElement); + this.canvasObserver = new MutationObserver((mutations) => { + for (const mutation of mutations) { + if (mutation.type === "childList" && mutation.removedNodes.length > 0 && Array.from(mutation.removedNodes).includes(this.canvas)) { + this.cleanup(); + break; + } + } + }); + this.canvasObserver.observe(this.canvas.parentElement, { childList: true }); + } + if (this.opts.interactive) { + this.registerInteractions(); + } + await this.init(); + this.drawScene(); + return this; + } + /** + * Sync the scene controls (orientation, crosshair location, etc.) from one Niivue instance to another. useful for using one canvas to drive another. + * @param otherNV - the other Niivue instance that is the main controller + * @example + * niivue1 = new Niivue() + * niivue2 = new Niivue() + * niivue2.syncWith(niivue1) + * @deprecated use broadcastTo instead + * @see {@link https://niivue.com/demos/features/sync.mesh.html | live demo usage} + */ + syncWith(otherNV, syncOpts = { "2d": true, "3d": true }) { + if (!(otherNV instanceof Array)) { + otherNV = [otherNV]; + } + this.otherNV = otherNV; + this.syncOpts = { ...syncOpts }; + } + /** + * Sync the scene controls (orientation, crosshair location, etc.) from one Niivue instance to others. useful for using one canvas to drive another. + * @param otherNV - the other Niivue instance(s) + * @example + * niivue1 = new Niivue() + * niivue2 = new Niivue() + * niivue3 = new Niivue() + * niivue1.broadcastTo(niivue2) + * niivue1.broadcastTo([niivue2, niivue3]) + * @see {@link https://niivue.com/demos/features/sync.mesh.html | live demo usage} + */ + broadcastTo(otherNV, syncOpts = { "2d": true, "3d": true }) { + if (!(otherNV instanceof Array)) { + otherNV = [otherNV]; + } + this.otherNV = otherNV; + this.syncOpts = syncOpts; + } + /** + * Synchronizes 3D view settings (azimuth, elevation, scale) with another Niivue instance. + * @internal + */ + doSync3d(otherNV) { + otherNV.scene.renderAzimuth = this.scene.renderAzimuth; + otherNV.scene.renderElevation = this.scene.renderElevation; + otherNV.scene.volScaleMultiplier = this.scene.volScaleMultiplier; + } + /** + * Synchronizes 2D crosshair position and pan settings with another Niivue instance. + * @internal + */ + doSync2d(otherNV) { + const thisMM = this.frac2mm(this.scene.crosshairPos); + otherNV.scene.crosshairPos = otherNV.mm2frac(thisMM); + otherNV.scene.pan2Dxyzmm = vec4_exports.clone(this.scene.pan2Dxyzmm); + } + doSyncGamma(otherNV) { + const thisGamma = this.scene.gamma; + const otherGamma = otherNV.scene.gamma; + if (thisGamma !== otherGamma) { + otherNV.setGamma(thisGamma); + } + } + /** + * Synchronizes gamma correction setting with another Niivue instance. + * @internal + */ + doSyncZoomPan(otherNV) { + otherNV.scene.pan2Dxyzmm = vec4_exports.clone(this.scene.pan2Dxyzmm); + } + /** + * Synchronizes crosshair position with another Niivue instance. + * @internal + */ + doSyncCrosshair(otherNV) { + const thisMM = this.frac2mm(this.scene.crosshairPos); + otherNV.scene.crosshairPos = otherNV.mm2frac(thisMM); + } + /** + * Synchronizes cal_min with another Niivue instance, updating GPU volume only if needed. + * @internal + */ + doSyncCalMin(otherNV) { + if (this.volumes[0].cal_min !== otherNV.volumes[0].cal_min) { + otherNV.volumes[0].cal_min = this.volumes[0].cal_min; + otherNV.updateGLVolume(); + } + } + /** + * Synchronizes cal_max with another Niivue instance, updating GPU volume only if needed. + * @internal + */ + doSyncCalMax(otherNV) { + if (this.volumes[0].cal_max !== otherNV.volumes[0].cal_max) { + otherNV.volumes[0].cal_max = this.volumes[0].cal_max; + otherNV.updateGLVolume(); + } + } + /** + * Synchronizes slice view type with another Niivue instance. + * @internal + */ + doSyncSliceType(otherNV) { + otherNV.setSliceType(this.opts.sliceType); + } + /** + * Synchronizes clip plane settings with another Niivue instance. + * @internal + */ + doSyncClipPlane(otherNV) { + otherNV.setClipPlane(this.scene.clipPlaneDepthAziElevs[this.uiData.activeClipPlaneIndex]); + } + /** + * Sync the scene controls (orientation, crosshair location, etc.) from one Niivue instance to another. useful for using one canvas to drive another. + * @internal + * @example + * niivue1 = new Niivue() + * niivue2 = new Niivue() + * niivue2.syncWith(niivue1) + * niivue2.sync() + */ + sync() { + if (!this.gl || !this.otherNV || typeof this.otherNV === "undefined") { + return; + } + if (!this.gl.canvas.matches(":focus")) { + return; + } + for (let i = 0; i < this.otherNV.length; i++) { + if (this.otherNV[i] === this) { + continue; + } + if (this.syncOpts.gamma) { + this.doSyncGamma(this.otherNV[i]); + } + if (this.syncOpts.crosshair) { + this.doSyncCrosshair(this.otherNV[i]); + } + if (this.syncOpts.zoomPan) { + this.doSyncZoomPan(this.otherNV[i]); + } + if (this.syncOpts.sliceType) { + this.doSyncSliceType(this.otherNV[i]); + } + if (this.syncOpts.cal_min) { + this.doSyncCalMin(this.otherNV[i]); + } + if (this.syncOpts.cal_max) { + this.doSyncCalMax(this.otherNV[i]); + } + if (this.syncOpts.clipPlane) { + this.doSyncClipPlane(this.otherNV[i]); + } + if (this.syncOpts["2d"]) { + this.doSync2d(this.otherNV[i]); + } + if (this.syncOpts["3d"]) { + this.doSync3d(this.otherNV[i]); + } + if (this.otherNV[i].canvas !== this.canvas) { + this.otherNV[i].drawScene(); + } + this.otherNV[i].createOnLocationChange(); + } + } + /** Not documented publicly for now + * @internal + * test if two arrays have equal values for each element + * @param a - the first array + * @param b - the second array + * @example Niivue.arrayEquals(a, b) + * + * TODO this should maybe just use array-equal from NPM + */ + arrayEquals(a, b) { + return Array.isArray(a) && Array.isArray(b) && a.length === b.length && a.every((val, index) => val === b[index]); + } + /** + * @internal + * Compute point size for screen text that scales with resolution and screen size. + * - Keeps physical font size consistent across different DPIs. + * - Uses fontSizeScaling to scale with canvas size above a reference threshold. + */ + textSizePoints() { + if (this.opts.textHeight >= 0) { + log.warn(`textHeight is deprecated (use fontMinPx and fontSizeScaling)`); + this.opts.fontMinPx = this.opts.textHeight * 217; + this.opts.fontSizeScaling = 0.4; + this.opts.textHeight = -1; + } + const dpi = this.uiData.dpr || 1; + const basePointSize = this.opts.fontMinPx; + const screenWidthPts = this.gl.canvas.width / dpi; + const screenHeightPts = this.gl.canvas.height / dpi; + const screenAreaPts = screenWidthPts * screenHeightPts; + const refAreaPts = 800 * 600; + const normalizedArea = Math.max(screenAreaPts / refAreaPts, 1); + const scale6 = Math.pow(normalizedArea, this.opts.fontSizeScaling); + const fontPx = basePointSize * scale6 * dpi; + this.fontPx = fontPx; + log.debug( + `${screenWidthPts.toFixed(0)}x${screenHeightPts.toFixed(0)} pts (dpi=${dpi}) => areaScale=${normalizedArea.toFixed(2)}, scale=${scale6.toFixed(2)}, minPx=${this.opts.fontMinPx} fontScale=${this.opts.fontSizeScaling} fontPx=${fontPx.toFixed(2)}` + ); + } + /** + * callback function to handle resize window events, redraws the scene. + * @internal + */ + resizeListener() { + if (!this.canvas || !this.gl) { + return; + } + if (!this.opts.isResizeCanvas) { + if (this.opts.forceDevicePixelRatio >= 0) { + log.warn("this.opts.forceDevicePixelRatio requires isResizeCanvas"); + } + this.drawScene(); + return; + } + this.canvas.style.width = "100%"; + this.canvas.style.height = "100%"; + this.canvas.style.display = "block"; + if (this.opts.forceDevicePixelRatio === 0) { + this.uiData.dpr = window.devicePixelRatio || 1; + } else if (this.opts.forceDevicePixelRatio < 0) { + this.uiData.dpr = 1; + } else { + this.uiData.dpr = this.opts.forceDevicePixelRatio; + } + log.debug("devicePixelRatio: " + this.uiData.dpr); + if ("width" in this.canvas.parentElement) { + this.canvas.width = this.canvas.parentElement.width * this.uiData.dpr; + this.canvas.height = this.canvas.parentElement.height * this.uiData.dpr; + } else { + this.canvas.width = this.canvas.offsetWidth * this.uiData.dpr; + this.canvas.height = this.canvas.offsetHeight * this.uiData.dpr; + } + this.gl.viewport(0, 0, this.gl.canvas.width, this.gl.canvas.height); + this.textSizePoints(); + this.drawScene(); + } + /** + * callback to handle mouse move events relative to the canvas + * @internal + * @returns the mouse position relative to the canvas + */ + getRelativeMousePosition(event, target) { + target = target || event.target; + if (!target) { + return; + } + const rect = target.getBoundingClientRect(); + return { + x: event.clientX - rect.left, + y: event.clientY - rect.top + }; + } + /** + * Returns mouse position relative to the canvas, excluding padding and borders. + * @internal + */ + getNoPaddingNoBorderCanvasRelativeMousePosition(event, target) { + target = target || event.target; + const pos = this.getRelativeMousePosition(event, target); + return pos; + } + /** + * Disables the default context menu to allow custom right-click behavior. + * @internal + */ + mouseContextMenuListener(e) { + e.preventDefault(); + } + /** + * Handles mouse down events for interaction, segmentation, and connectome label selection. + * Routes to appropriate button handler based on click type. + * @internal + */ + mouseDownListener(e) { + this.uiData.mousedown = true; + if (!this.eventInBounds(e)) { + this.opts.showBoundsBorder = false; + this.drawScene(); + return; + } else if (this.opts.bounds) { + this.opts.showBoundsBorder = true; + } + e.preventDefault(); + this.drawPenLocation = [NaN, NaN, NaN]; + this.drawPenAxCorSag = -1; + this.drawShapeStartLocation = [NaN, NaN, NaN]; + const pos = this.getNoPaddingNoBorderCanvasRelativeMousePosition(e, this.gl.canvas); + if (!(this.opts.dragMode === 7 /* angle */ && this.uiData.angleState === "drawing_second_line")) { + this.setDragStart(pos.x, pos.y); + this.setDragEnd(pos.x, pos.y); + } + log.debug("mouse down"); + log.debug(e); + if (!pos) { + return; + } + const [x, y] = [pos.x * this.uiData.dpr, pos.y * this.uiData.dpr]; + if (this.opts.clickToSegment) { + this.clickToSegmentXY = [x, y]; + } + const label = this.getLabelAtPoint([x, y]); + if (label) { + if (label.onClick) { + label.onClick(label, e); + return; + } + for (const mesh of this.meshes) { + if (mesh.type !== "connectome" /* CONNECTOME */) { + if (Array.isArray(label.points) && label.points.length === 3 && label.points.every(Number.isFinite)) { + const [x2, y2, z] = label.points; + this.scene.crosshairPos = this.mm2frac([x2, y2, z]); + this.updateGLVolume(); + } + continue; + } + for (const node of mesh.nodes) { + if (node.label === label) { + this.scene.crosshairPos = this.mm2frac([node.x, node.y, node.z]); + this.updateGLVolume(); + } + } + } + } + this.uiData.clickedTile = this.tileIndex(x, y); + if (e.button === LEFT_MOUSE_BUTTON && e.shiftKey) { + this.uiData.mouseButtonCenterDown = true; + this.setActiveDragMode(LEFT_MOUSE_BUTTON, true, e.ctrlKey); + this.handleMouseAction(this.uiData.activeDragMode, e, pos); + } else if (e.button === LEFT_MOUSE_BUTTON) { + this.uiData.mouseButtonLeftDown = true; + this.setActiveDragMode(LEFT_MOUSE_BUTTON, false, e.ctrlKey); + this.handleMouseAction(this.uiData.activeDragMode, e, pos); + } else if (e.button === RIGHT_MOUSE_BUTTON) { + this.uiData.mouseButtonRightDown = true; + this.setActiveDragMode(RIGHT_MOUSE_BUTTON, e.shiftKey, e.ctrlKey); + this.handleMouseAction(this.uiData.activeDragMode, e, pos); + } else if (e.button === CENTER_MOUSE_BUTTON) { + this.uiData.mouseButtonCenterDown = true; + this.setActiveDragMode(CENTER_MOUSE_BUTTON, e.shiftKey, e.ctrlKey); + this.handleMouseAction(this.uiData.activeDragMode, e, pos); + } + this.drawScene(); + } + /** + * Gets the appropriate drag mode for a mouse button based on configuration. + * @internal + */ + getMouseButtonDragMode(button, shiftKey, ctrlKey) { + const mouseConfig = this.opts.mouseEventConfig; + if (button === LEFT_MOUSE_BUTTON) { + if (mouseConfig?.leftButton) { + if (shiftKey && mouseConfig.leftButton.withShift !== void 0) { + return mouseConfig.leftButton.withShift; + } + if (ctrlKey && mouseConfig.leftButton.withCtrl !== void 0) { + return mouseConfig.leftButton.withCtrl; + } + return mouseConfig.leftButton.primary; + } + return ctrlKey ? 8 /* crosshair */ : this.opts.dragModePrimary; + } else if (button === RIGHT_MOUSE_BUTTON) { + if (mouseConfig?.rightButton !== void 0) { + return mouseConfig.rightButton; + } + return this.opts.dragMode; + } else if (button === CENTER_MOUSE_BUTTON) { + if (mouseConfig?.centerButton !== void 0) { + return mouseConfig.centerButton; + } + return this.opts.dragMode; + } + return this.opts.dragMode; + } + /** + * Gets the appropriate drag mode for touch events based on configuration. + * @internal + */ + getTouchDragMode(isDoubleTouch) { + const touchConfig = this.opts.touchEventConfig; + if (isDoubleTouch) { + return touchConfig?.doubleTouch ?? this.opts.dragMode; + } + return touchConfig?.singleTouch ?? this.opts.dragModePrimary; + } + /** + * Sets the active drag mode for the current interaction. + * @internal + */ + setActiveDragMode(button, shiftKey, ctrlKey) { + this.uiData.activeDragMode = this.getMouseButtonDragMode(button, shiftKey, ctrlKey); + this.uiData.activeDragButton = button; + } + /** + * Gets the currently active drag mode, or falls back to configured defaults. + * @internal + */ + getCurrentDragMode() { + if (this.uiData.activeDragMode !== null) { + return this.uiData.activeDragMode; + } + return this.opts.dragMode; + } + /** + * Clears the active drag mode. + * @internal + */ + clearActiveDragMode() { + this.uiData.activeDragMode = null; + this.uiData.activeDragButton = null; + } + /** + * Unified handler for mouse actions based on drag mode. + * @internal + */ + handleMouseAction(dragMode, e, pos) { + if (dragMode === 8 /* crosshair */) { + this.mouseDown(pos.x, pos.y); + this.mouseClick(pos.x, pos.y); + } else if (dragMode === 9 /* windowing */) { + this.uiData.windowX = e.x; + this.uiData.windowY = e.y; + } else { + this.mousePos = [pos.x * this.uiData.dpr, pos.y * this.uiData.dpr]; + if (dragMode === 0 /* none */) { + return; + } + if (dragMode === 7 /* angle */) { + if (this.uiData.angleState === "none") { + this.uiData.angleState = "drawing_first_line"; + } else if (this.uiData.angleState === "drawing_second_line") { + const finalClickPos = [pos.x * this.uiData.dpr, pos.y * this.uiData.dpr]; + const tileIdx = this.tileIndex(finalClickPos[0], finalClickPos[1]); + let sliceInfo = { sliceIndex: -1, sliceType: 0 /* AXIAL */, slicePosition: 0 }; + if (tileIdx >= 0 && tileIdx < this.screenSlices.length) { + const sliceType = this.screenSlices[tileIdx].axCorSag; + let slicePosition = 0; + if (sliceType === 0 /* AXIAL */) { + slicePosition = this.scene.crosshairPos[2]; + } else if (sliceType === 1 /* CORONAL */) { + slicePosition = this.scene.crosshairPos[1]; + } else if (sliceType === 2 /* SAGITTAL */) { + slicePosition = this.scene.crosshairPos[0]; + } + sliceInfo = { + sliceIndex: tileIdx, + sliceType, + slicePosition + }; + } + const secondLine = [ + this.uiData.angleFirstLine[2], + // start from end of first line + this.uiData.angleFirstLine[3], + finalClickPos[0], + // to final click position + finalClickPos[1] + ]; + const firstLineStartFrac = this.canvasPos2frac([this.uiData.angleFirstLine[0], this.uiData.angleFirstLine[1]]); + const firstLineEndFrac = this.canvasPos2frac([this.uiData.angleFirstLine[2], this.uiData.angleFirstLine[3]]); + const secondLineStartFrac = this.canvasPos2frac([secondLine[0], secondLine[1]]); + const secondLineEndFrac = this.canvasPos2frac([secondLine[2], secondLine[3]]); + if (firstLineStartFrac[0] >= 0 && firstLineEndFrac[0] >= 0 && secondLineStartFrac[0] >= 0 && secondLineEndFrac[0] >= 0) { + const firstLineStartMM = this.frac2mm(firstLineStartFrac); + const firstLineEndMM = this.frac2mm(firstLineEndFrac); + const secondLineStartMM = this.frac2mm(secondLineStartFrac); + const secondLineEndMM = this.frac2mm(secondLineEndFrac); + const angleToSave = { + firstLineMM: { + start: vec3_exports.fromValues(firstLineStartMM[0], firstLineStartMM[1], firstLineStartMM[2]), + end: vec3_exports.fromValues(firstLineEndMM[0], firstLineEndMM[1], firstLineEndMM[2]) + }, + secondLineMM: { + start: vec3_exports.fromValues(secondLineStartMM[0], secondLineStartMM[1], secondLineStartMM[2]), + end: vec3_exports.fromValues(secondLineEndMM[0], secondLineEndMM[1], secondLineEndMM[2]) + }, + sliceIndex: sliceInfo.sliceIndex, + sliceType: sliceInfo.sliceType, + slicePosition: sliceInfo.slicePosition, + angle: this.calculateAngleBetweenLines(this.uiData.angleFirstLine, secondLine) + }; + this.document.completedAngles.push(angleToSave); + } + this.resetAngleMeasurement(); + this.uiData.angleState = "complete"; + this.drawScene(); + return; + } else if (this.uiData.angleState === "complete") { + this.resetAngleMeasurement(); + this.uiData.angleState = "drawing_first_line"; + } + } + this.setDragStart(pos.x, pos.y); + if (!this.uiData.isDragging) { + this.uiData.pan2DxyzmmAtMouseDown = vec4_exports.clone(this.scene.pan2Dxyzmm); + } + this.uiData.isDragging = true; + this.uiData.dragClipPlaneStartDepthAziElev = this.scene.clipPlaneDepthAziElevs[this.uiData.activeClipPlaneIndex]; + } + } + /** + * calculate the the min and max voxel indices from an array of two values (used in selecting intensities with the selection box) + * @internal + * @param array - an array of two values + * @returns an array of two values representing the min and max voxel indices + */ + calculateMinMaxVoxIdx(array) { + if (array.length > 2) { + throw new Error("array must not contain more than two values"); + } + return [Math.floor(Math.min(array[0], array[1])), Math.floor(Math.max(array[0], array[1]))]; + } + /** + * Updates cal_min and cal_max based on intensity range within the drag-selected voxel region. + * Skips if no drag occurred, volume is missing, or selection has no variation. + * @internal + */ + calculateNewRange({ volIdx = 0 } = {}) { + if (this.opts.sliceType === 4 /* RENDER */ && this.sliceMosaicString.length < 1) { + return; + } + if (this.uiData.dragStart[0] === this.uiData.dragEnd[0] && this.uiData.dragStart[1] === this.uiData.dragEnd[1]) { + return; + } + let frac = this.canvasPos2frac([this.uiData.dragStart[0], this.uiData.dragStart[1]]); + if (frac[0] < 0) { + return; + } + const startVox = this.frac2vox(frac, volIdx); + frac = this.canvasPos2frac([this.uiData.dragEnd[0], this.uiData.dragEnd[1]]); + if (frac[0] < 0) { + return; + } + const endVox = this.frac2vox(frac, volIdx); + let hi = -Number.MAX_VALUE; + let lo = Number.MAX_VALUE; + const xrange = this.calculateMinMaxVoxIdx([startVox[0], endVox[0]]); + const yrange = this.calculateMinMaxVoxIdx([startVox[1], endVox[1]]); + const zrange = this.calculateMinMaxVoxIdx([startVox[2], endVox[2]]); + if (startVox[0] - endVox[0] === 0) { + xrange[1] = startVox[0] + 1; + } else if (startVox[1] - endVox[1] === 0) { + yrange[1] = startVox[1] + 1; + } else if (startVox[2] - endVox[2] === 0) { + zrange[1] = startVox[2] + 1; + } + const hdr = this.volumes[volIdx].hdr; + const img = this.volumes[volIdx].img; + if (!hdr || !img) { + return; + } + const xdim = hdr.dims[1]; + const ydim = hdr.dims[2]; + for (let z = zrange[0]; z < zrange[1]; z++) { + const zi = z * xdim * ydim; + for (let y = yrange[0]; y < yrange[1]; y++) { + const yi = y * xdim; + for (let x = xrange[0]; x < xrange[1]; x++) { + const index = zi + yi + x; + if (lo > img[index]) { + lo = img[index]; + } + if (hi < img[index]) { + hi = img[index]; + } + } + } + } + if (lo >= hi) { + return; + } + const mnScale = intensityRaw2Scaled(hdr, lo); + const mxScale = intensityRaw2Scaled(hdr, hi); + this.volumes[volIdx].cal_min = mnScale; + this.volumes[volIdx].cal_max = mxScale; + this.onIntensityChange(this.volumes[volIdx]); + } + /** + * Triggers a drag-release callback with voxel, mm, and tile info from the drag gesture. + * @internal + */ + generateMouseUpCallback(fracStart, fracEnd) { + const tileStart = this.tileIndex(this.uiData.dragStart[0], this.uiData.dragStart[1]); + const tileEnd = this.tileIndex(this.uiData.dragEnd[0], this.uiData.dragEnd[1]); + let tileIdx = -1; + if (tileStart === tileEnd) { + tileIdx = tileEnd; + } + let axCorSag = -1; + if (tileIdx >= 0) { + axCorSag = this.screenSlices[tileIdx].axCorSag; + } + const mmStart = this.frac2mm(fracStart); + const mmEnd = this.frac2mm(fracEnd); + const v = vec3_exports.create(); + vec3_exports.sub(v, vec3_exports.fromValues(mmStart[0], mmStart[1], mmStart[2]), vec3_exports.fromValues(mmEnd[0], mmEnd[1], mmEnd[2])); + const mmLength = vec3_exports.len(v); + const voxStart = this.frac2vox(fracStart); + const voxEnd = this.frac2vox(fracEnd); + this.onDragRelease({ + fracStart, + fracEnd, + voxStart, + voxEnd, + mmStart, + mmEnd, + mmLength, + tileIdx, + axCorSag + }); + } + /** + * Handles mouse up events, finalizing drag actions, invoking callbacks, and updating contrast if needed. + * @internal + */ + mouseUpListener() { + this.uiData.mousedown = false; + function isFunction(test) { + return Object.prototype.toString.call(test).indexOf("Function") > -1; + } + const uiData = { + mouseButtonRightDown: this.uiData.mouseButtonRightDown, + mouseButtonCenterDown: this.uiData.mouseButtonCenterDown, + isDragging: this.uiData.isDragging, + mousePos: this.mousePos, + fracPos: this.canvasPos2frac(this.mousePos) + // xyzMM: this.frac2mm(fracPos), + }; + this.uiData.mouseButtonRightDown = false; + const wasCenterDown = this.uiData.mouseButtonCenterDown; + this.uiData.mouseButtonCenterDown = false; + this.uiData.mouseButtonLeftDown = false; + const currentDragMode = this.getCurrentDragMode(); + if (this.drawPenFillPts.length > 0) { + this.drawPenFilled(); + } else if (this.opts.drawingEnabled && !isNaN(this.drawPenLocation[0])) { + this.drawAddUndoBitmap(); + } else if (this.opts.drawingEnabled && !isNaN(this.drawShapeStartLocation[0]) && (this.opts.penType === 1 /* RECTANGLE */ || this.opts.penType === 2 /* ELLIPSE */)) { + if (this.opts.penValue === 0) { + this.drawAddUndoBitmap(); + } else { + this.drawAddUndoBitmap(this.drawFillOverwrites); + } + this.drawShapePreviewBitmap = null; + } + this.drawPenLocation = [NaN, NaN, NaN]; + this.drawPenAxCorSag = -1; + this.drawShapeStartLocation = [NaN, NaN, NaN]; + if (this.drawShapePreviewBitmap) { + this.drawBitmap = this.drawShapePreviewBitmap; + this.drawShapePreviewBitmap = null; + this.refreshDrawing(true, false); + } + if (isFunction(this.onMouseUp)) { + this.onMouseUp(uiData); + } + if (this.uiData.isDragging) { + this.uiData.isDragging = false; + if (currentDragMode === 7 /* angle */) { + if (this.uiData.angleState === "drawing_first_line") { + this.uiData.angleFirstLine = [ + this.uiData.dragStart[0], + this.uiData.dragStart[1], + this.uiData.dragEnd[0], + this.uiData.dragEnd[1] + ]; + this.uiData.angleState = "drawing_second_line"; + this.uiData.isDragging = true; + this.drawScene(); + return; + } + if (this.uiData.angleState === "drawing_second_line") { + this.uiData.angleState = "complete"; + this.clearActiveDragMode(); + this.drawScene(); + return; + } + } + if (currentDragMode === 5 /* callbackOnly */) { + this.drawScene(); + } + const fracStart = this.canvasPos2frac([this.uiData.dragStart[0], this.uiData.dragStart[1]]); + const fracEnd = this.canvasPos2frac([this.uiData.dragEnd[0], this.uiData.dragEnd[1]]); + this.generateMouseUpCallback(fracStart, fracEnd); + if (currentDragMode === 6 /* roiSelection */) { + this.clearActiveDragMode(); + return; + } + if (currentDragMode === 1 /* contrast */) { + if (wasCenterDown) { + this.clearActiveDragMode(); + return; + } + if (this.uiData.dragStart[0] === this.uiData.dragEnd[0] && this.uiData.dragStart[1] === this.uiData.dragEnd[1]) { + this.clearActiveDragMode(); + return; + } + this.calculateNewRange({ volIdx: 0 }); + this.refreshLayers(this.volumes[0], 0); + } + if (currentDragMode === 2 /* measurement */) { + const sliceInfo = this.getCurrentSliceInfo(); + const startFrac = this.canvasPos2frac([this.uiData.dragStart[0], this.uiData.dragStart[1]]); + const endFrac = this.canvasPos2frac([this.uiData.dragEnd[0], this.uiData.dragEnd[1]]); + if (startFrac[0] >= 0 && endFrac[0] >= 0) { + const startMM = this.frac2mm(startFrac); + const endMM = this.frac2mm(endFrac); + this.document.completedMeasurements.push({ + startMM: vec3_exports.fromValues(startMM[0], startMM[1], startMM[2]), + endMM: vec3_exports.fromValues(endMM[0], endMM[1], endMM[2]), + sliceIndex: sliceInfo.sliceIndex, + sliceType: sliceInfo.sliceType, + slicePosition: sliceInfo.slicePosition, + distance: vec3_exports.distance( + vec3_exports.fromValues(startMM[0], startMM[1], startMM[2]), + vec3_exports.fromValues(endMM[0], endMM[1], endMM[2]) + ) + }); + } + this.clearActiveDragMode(); + this.drawScene(); + return; + } + } + this.clearActiveDragMode(); + this.drawScene(); + } + /** + * Handles initial touch event to simulate mouse click if not in a multi-touch gesture. + * @internal + */ + checkMultitouch(e) { + if (this.uiData.touchdown && !this.uiData.multiTouchGesture) { + const rect = this.canvas.getBoundingClientRect(); + this.mouseDown(e.touches[0].clientX - rect.left, e.touches[0].clientY - rect.top); + this.mouseClick(e.touches[0].clientX - rect.left, e.touches[0].clientY - rect.top); + } + } + /** + * Handles touch start events, detecting double taps and preparing for gesture or contrast reset. + * @internal + */ + touchStartListener(e) { + e.preventDefault(); + if (!this.uiData.touchTimer) { + this.uiData.touchTimer = setTimeout(() => { + this.resetBriCon(e); + }, this.opts.longTouchTimeout); + } + this.uiData.touchdown = true; + this.uiData.currentTouchTime = (/* @__PURE__ */ new Date()).getTime(); + const timeSinceTouch = this.uiData.currentTouchTime - this.uiData.lastTouchTime; + if (timeSinceTouch < this.opts.doubleTouchTimeout && timeSinceTouch > 0) { + this.uiData.doubleTouch = true; + this.setDragStart( + e.targetTouches[0].clientX - e.target.getBoundingClientRect().left, + e.targetTouches[0].clientY - e.target.getBoundingClientRect().top + ); + this.resetBriCon(e); + this.uiData.lastTouchTime = this.uiData.currentTouchTime; + return; + } else { + this.uiData.doubleTouch = false; + this.setDragStart(0, 0); + this.setDragEnd(0, 0); + this.uiData.lastTouchTime = this.uiData.currentTouchTime; + } + if (this.uiData.touchdown && e.touches.length < 2) { + this.uiData.multiTouchGesture = false; + } else { + this.uiData.multiTouchGesture = true; + } + setTimeout(this.checkMultitouch.bind(this), 1, e); + } + /** + * Handles touch end events, finalizing gestures and contrast adjustments, then triggers mouse up logic. + * @internal + */ + touchEndListener(e) { + e.preventDefault(); + this.uiData.touchdown = false; + this.uiData.lastTwoTouchDistance = 0; + this.uiData.multiTouchGesture = false; + if (this.uiData.touchTimer) { + clearTimeout(this.uiData.touchTimer); + this.uiData.touchTimer = null; + } + if (this.uiData.isDragging) { + this.uiData.isDragging = false; + if (this.getCurrentDragMode() === 1 /* contrast */) { + this.calculateNewRange(); + this.refreshLayers(this.volumes[0], 0); + } + const fracStart = this.canvasPos2frac([this.uiData.dragStart[0], this.uiData.dragStart[1]]); + const fracEnd = this.canvasPos2frac([this.uiData.dragEnd[0], this.uiData.dragEnd[1]]); + this.generateMouseUpCallback(fracStart, fracEnd); + } + this.mouseUpListener(); + } + /** + * Adjusts window/level (cal_min and cal_max) based on mouse or touch drag direction. + * @internal + */ + windowingHandler(x, y, volIdx = 0) { + const wx = this.uiData.windowX; + const wy = this.uiData.windowY; + let mn = this.volumes[0].cal_min; + let mx = this.volumes[0].cal_max; + const gmn = this.volumes[0].global_min; + const gmx = this.volumes[0].global_max; + if (y < wy) { + mn += 1; + mx += 1; + } else if (y > wy) { + mn -= 1; + mx -= 1; + } + if (x > wx) { + mn -= 1; + mx += 1; + } else if (x < wx) { + mn += 1; + mx -= 1; + } + if (mx - mn < 1) { + mx = mn + 1; + } + if (mn < gmn) { + mn = gmn; + } + if (mx > gmx) { + mx = gmx; + } + if (mn > mx) { + mn = mx - 1; + } + this.volumes[volIdx].cal_min = mn; + this.volumes[volIdx].cal_max = mx; + this.refreshLayers(this.volumes[volIdx], 0); + this.uiData.windowX = x; + this.uiData.windowY = y; + } + /** + * Handles mouse leaving the canvas, resetting segmentation, drawing, and drag states. + * @internal + */ + mouseLeaveListener() { + if (this.clickToSegmentIsGrowing) { + log.debug("Mouse left canvas, stopping clickToSegment preview."); + this.clickToSegmentIsGrowing = false; + this.refreshDrawing(true, false); + } + if (this.opts.drawingEnabled && !isNaN(this.drawPenLocation[0])) { + log.debug("Mouse left canvas during drawing, resetting pen state."); + this.drawPenLocation = [NaN, NaN, NaN]; + this.drawPenAxCorSag = -1; + this.drawPenFillPts = []; + } + if (this.opts.drawingEnabled && !isNaN(this.drawShapeStartLocation[0])) { + log.debug("Mouse left canvas during shape drawing, resetting shape state."); + this.drawShapeStartLocation = [NaN, NaN, NaN]; + if (this.drawShapePreviewBitmap) { + this.drawBitmap = this.drawShapePreviewBitmap; + this.drawShapePreviewBitmap = null; + this.refreshDrawing(true, false); + } + } + if (this.uiData.isDragging || this.uiData.mousedown) { + log.debug("Mouse left canvas during drag, resetting drag state."); + this.uiData.isDragging = false; + this.uiData.mouseButtonLeftDown = false; + this.uiData.mouseButtonCenterDown = false; + this.uiData.mouseButtonRightDown = false; + this.uiData.mousedown = false; + this.drawScene(); + } + this.mousePos = [-1, -1]; + } + /** + * Handles mouse move events for dragging, crosshair movement, windowing, and click-to-segment preview. + * @internal + */ + mouseMoveListener(e) { + if (this.uiData.mousedown) { + this.drawScene(); + } + const pos = this.getNoPaddingNoBorderCanvasRelativeMousePosition(e, this.gl.canvas); + if (!pos) { + return; + } + if (!this.eventInBounds(e)) { + this.updateMousePos(pos.x, pos.y); + return; + } + if (this.uiData.mousedown) { + const x = pos.x * this.uiData.dpr; + const y = pos.y * this.uiData.dpr; + const tile = this.tileIndex(x, y); + if (tile !== this.uiData.clickedTile) { + return; + } + const activeDragMode = this.getCurrentDragMode(); + if (activeDragMode === 8 /* crosshair */) { + this.mouseMove(pos.x, pos.y); + this.mouseClick(pos.x, pos.y); + this.drawScene(); + this.uiData.prevX = this.uiData.currX; + this.uiData.prevY = this.uiData.currY; + return; + } + if (activeDragMode === 9 /* windowing */) { + this.windowingHandler(pos.x, pos.y); + this.drawScene(); + this.uiData.prevX = this.uiData.currX; + this.uiData.prevY = this.uiData.currY; + return; + } + this.setDragEnd(pos.x, pos.y); + this.drawScene(); + this.uiData.prevX = this.uiData.currX; + this.uiData.prevY = this.uiData.currY; + } else if (this.getCurrentDragMode() === 7 /* angle */ && this.uiData.angleState === "drawing_second_line") { + const pos2 = this.getNoPaddingNoBorderCanvasRelativeMousePosition(e, this.gl.canvas); + if (!pos2) { + return; + } + this.setDragEnd(pos2.x, pos2.y); + this.drawScene(); + } else if (!this.uiData.mousedown && this.opts.clickToSegment) { + const pos2 = this.getNoPaddingNoBorderCanvasRelativeMousePosition(e, this.gl.canvas); + if (!pos2) { + return; + } + const x = pos2.x * this.uiData.dpr; + const y = pos2.y * this.uiData.dpr; + this.mousePos = [x, y]; + const tileIdx = this.tileIndex(x, y); + if (tileIdx >= 0 && this.opts.drawingEnabled) { + const axCorSag = this.screenSlices[tileIdx].axCorSag; + if (axCorSag <= 2 /* SAGITTAL */) { + this.clickToSegmentXY = [x, y]; + this.clickToSegmentIsGrowing = true; + this.doClickToSegment({ + x, + // Screen X + y, + // Screen Y + tileIndex: tileIdx + }); + } + } + } + } + /** + * Resets brightness and contrast to robust min/max unless in render mode or during interaction. + * @internal + */ + resetBriCon(msg = null) { + if (this.uiData.isDragging) { + return; + } + if (!this.eventInBounds(msg)) { + this.opts.showBoundsBorder = false; + return; + } + let isRender = false; + if (this.opts.sliceType === 4 /* RENDER */) { + isRender = true; + } + let x = 0; + let y = 0; + if (msg !== null) { + if ("targetTouches" in msg) { + x = msg.targetTouches[0].clientX - msg.target.getBoundingClientRect().left; + y = msg.targetTouches[0].clientY - msg.target.getBoundingClientRect().top; + } else { + x = msg.offsetX; + y = msg.offsetY; + } + x *= this.uiData.dpr; + y *= this.uiData.dpr; + if (this.inRenderTile(x, y) >= 0) { + isRender = true; + } + } + if (isRender) { + this.uiData.mouseDepthPicker = true; + this.drawScene(); + this.drawScene(); + return; + } + if (this.getCurrentDragMode() === 4 /* slicer3D */) { + return; + } + if (this.volumes.length < 1) { + return; + } + if (this.uiData.doubleTouch) { + return; + } + this.volumes[0].cal_min = this.volumes[0].robust_min; + this.volumes[0].cal_max = this.volumes[0].robust_max; + this.onIntensityChange(this.volumes[0]); + this.refreshLayers(this.volumes[0], 0); + this.drawScene(); + } + /** + * Sets the drag start position in canvas coordinates. + * @internal + */ + setDragStart(x, y) { + x *= this.uiData.dpr; + y *= this.uiData.dpr; + this.uiData.dragStart[0] = x; + this.uiData.dragStart[1] = y; + } + /** + * Sets the drag end position in canvas coordinates. + * @internal + */ + setDragEnd(x, y) { + x *= this.uiData.dpr; + y *= this.uiData.dpr; + this.uiData.dragEnd[0] = x; + this.uiData.dragEnd[1] = y; + } + /** + * Handles touch movement for crosshair, windowing, and pinch-to-zoom interactions. + * @internal + */ + touchMoveListener(e) { + if (this.uiData.touchdown && e.touches.length < 2) { + const rect = this.canvas.getBoundingClientRect(); + if (!this.uiData.isDragging) { + this.uiData.pan2DxyzmmAtMouseDown = vec4_exports.clone(this.scene.pan2Dxyzmm); + } + this.uiData.isDragging = true; + if (this.uiData.doubleTouch && this.uiData.isDragging) { + this.setDragEnd( + e.targetTouches[0].clientX - e.target.getBoundingClientRect().left, + e.targetTouches[0].clientY - e.target.getBoundingClientRect().top + ); + this.drawScene(); + return; + } + const dragMode = this.getTouchDragMode(false); + if (dragMode === 8 /* crosshair */) { + this.mouseClick(e.touches[0].clientX - rect.left, e.touches[0].clientY - rect.top); + this.mouseMove(e.touches[0].clientX - rect.left, e.touches[0].clientY - rect.top); + } else if (dragMode === 9 /* windowing */) { + this.windowingHandler(e.touches[0].pageX, e.touches[0].pageY); + this.drawScene(); + } + } else { + this.handlePinchZoom(e); + } + } + /** + * Handles pinch-to-zoom gestures for scrolling 2D slices. + * @internal + */ + handlePinchZoom(e) { + if (e.targetTouches.length === 2 && e.changedTouches.length === 2) { + const dist4 = Math.hypot(e.touches[0].pageX - e.touches[1].pageX, e.touches[0].pageY - e.touches[1].pageY); + const rect = this.canvas.getBoundingClientRect(); + this.mousePos = [e.touches[0].clientX - rect.left, e.touches[0].clientY - rect.top]; + if (dist4 < this.uiData.lastTwoTouchDistance) { + this.sliceScroll2D(-0.01, e.touches[0].clientX - rect.left, e.touches[0].clientY - rect.top); + } else { + this.sliceScroll2D(0.01, e.touches[0].clientX - rect.left, e.touches[0].clientY - rect.top); + } + this.uiData.lastTwoTouchDistance = dist4; + } + } + /** + * Cycles active clip plane + * @internal + * @returns active clip plane index + */ + cycleActiveClipPlane() { + const n = this.scene.clipPlanes.length || 6; + if (this.uiData.activeClipPlaneIndex == null) { + this.uiData.activeClipPlaneIndex = 0; + } else { + this.uiData.activeClipPlaneIndex = (this.uiData.activeClipPlaneIndex + 1) % n; + } + const idx = this.uiData.activeClipPlaneIndex; + if (!this.scene.clipPlanes[idx]) { + this.scene.clipPlanes[idx] = [0, 0, 0, 2]; + } + if (!this.scene.clipPlaneDepthAziElevs[idx]) { + this.scene.clipPlaneDepthAziElevs[idx] = [2, 0, 0]; + } + return idx; + } + /** + * Handles keyboard shortcuts for toggling clip planes and slice view modes with debounce logic. + * @internal + */ + keyUpListener(e) { + if (!this.cursorInBounds()) { + this.opts.showBoundsBorder = false; + this.drawScene(); + return; + } + const now = (/* @__PURE__ */ new Date()).getTime(); + const elapsed = now - this.lastCalled; + if (e.code === this.opts.cycleClipPlaneHotKey) { + if (elapsed > this.opts.keyDebounceTime) { + const idx = this.cycleActiveClipPlane(); + console.log("Active clip plane cycled to:", idx); + console.log("clip planes", this.scene.clipPlanes); + this.lastCalled = now; + } + } + if (e.code === this.opts.clipPlaneHotKey) { + if (elapsed > this.opts.keyDebounceTime) { + this.currentClipPlaneIndex = (this.currentClipPlaneIndex + 1) % 7; + switch (this.currentClipPlaneIndex) { + case 0: + this.scene.clipPlaneDepthAziElevs[this.uiData.activeClipPlaneIndex] = [2, 0, 0]; + break; + case 1: + this.scene.clipPlaneDepthAziElevs[this.uiData.activeClipPlaneIndex] = [0, 270, 0]; + break; + case 2: + this.scene.clipPlaneDepthAziElevs[this.uiData.activeClipPlaneIndex] = [0, 90, 0]; + break; + case 3: + this.scene.clipPlaneDepthAziElevs[this.uiData.activeClipPlaneIndex] = [0, 0, 0]; + break; + case 4: + this.scene.clipPlaneDepthAziElevs[this.uiData.activeClipPlaneIndex] = [0, 180, 0]; + break; + case 5: + this.scene.clipPlaneDepthAziElevs[this.uiData.activeClipPlaneIndex] = [0, 0, -90]; + break; + case 6: + this.scene.clipPlaneDepthAziElevs[this.uiData.activeClipPlaneIndex] = [0, 0, 90]; + break; + } + this.setClipPlane(this.scene.clipPlaneDepthAziElevs[this.uiData.activeClipPlaneIndex]); + } + this.lastCalled = now; + } else if (e.code === this.opts.viewModeHotKey) { + const now2 = (/* @__PURE__ */ new Date()).getTime(); + const elapsed2 = now2 - this.lastCalled; + if (elapsed2 > this.opts.keyDebounceTime) { + this.setSliceType((this.opts.sliceType + 1) % 5); + this.lastCalled = now2; + } + } + this.drawScene(); + } + /** + * Handles key down events for navigation, rendering controls, slice movement, and mode switching. + * @internal + */ + keyDownListener(e) { + if (!this.cursorInBounds()) { + this.opts.showBoundsBorder = false; + this.drawScene(); + return; + } + if (e.code === "KeyH" && this.opts.sliceType === 4 /* RENDER */) { + this.setRenderAzimuthElevation(this.scene.renderAzimuth - 1, this.scene.renderElevation); + } else if (e.code === "KeyL" && this.opts.sliceType === 4 /* RENDER */) { + this.setRenderAzimuthElevation(this.scene.renderAzimuth + 1, this.scene.renderElevation); + } else if (e.code === "KeyJ" && this.opts.sliceType === 4 /* RENDER */) { + this.setRenderAzimuthElevation(this.scene.renderAzimuth, this.scene.renderElevation + 1); + } else if (e.code === "KeyK" && this.opts.sliceType === 4 /* RENDER */) { + this.setRenderAzimuthElevation(this.scene.renderAzimuth, this.scene.renderElevation - 1); + } else if (e.code === "KeyH" && this.opts.sliceType !== 4 /* RENDER */) { + this.moveCrosshairInVox(-1, 0, 0); + } else if (e.code === "KeyL" && this.opts.sliceType !== 4 /* RENDER */) { + this.moveCrosshairInVox(1, 0, 0); + } else if (e.code === "KeyU" && this.opts.sliceType !== 4 /* RENDER */ && e.ctrlKey) { + this.moveCrosshairInVox(0, 0, 1); + } else if (e.code === "KeyD" && this.opts.sliceType !== 4 /* RENDER */ && e.ctrlKey) { + this.moveCrosshairInVox(0, 0, -1); + } else if (e.code === "KeyJ" && this.opts.sliceType !== 4 /* RENDER */) { + this.moveCrosshairInVox(0, -1, 0); + } else if (e.code === "KeyK" && this.opts.sliceType !== 4 /* RENDER */) { + this.moveCrosshairInVox(0, 1, 0); + } else if (e.code === "KeyM" && this.opts.sliceType !== 4 /* RENDER */) { + this.opts.dragMode++; + if (this.opts.dragMode >= 4 /* slicer3D */) { + this.opts.dragMode = 0 /* none */; + } + log.info("drag mode changed to ", DRAG_MODE[this.opts.dragMode]); + } else if (e.code === "ArrowLeft") { + this.setFrame4D(this.volumes[0].id, this.volumes[0].frame4D - 1); + } else if (e.code === "ArrowRight") { + this.setFrame4D(this.volumes[0].id, this.volumes[0].frame4D + 1); + } else if (e.code === "Slash" && e.shiftKey) { + alert(`NIIVUE VERSION: ${version}`); + } + this.drawScene(); + } + /** + * Handles scroll wheel events for slice scrolling, ROI box resizing, zooming, or segmentation thresholding. + * @internal + */ + wheelListener(e) { + if (this.thumbnailVisible) { + return; + } + if (this.opts.sliceMosaicString.length > 0) { + return; + } + if (!this.eventInBounds(e)) { + this.opts.showBoundsBorder = false; + this.drawScene(); + return; + } else if (this.opts.bounds) { + this.opts.showBoundsBorder = true; + } + e.preventDefault(); + e.stopPropagation(); + const dragStartSum = this.uiData.dragStart.reduce((a, b) => a + b, 0); + const dragEndSum = this.uiData.dragEnd.reduce((a, b) => a + b, 0); + const validDrag = dragStartSum > 0 && dragEndSum > 0; + if (this.getCurrentDragMode() === 6 /* roiSelection */ && validDrag) { + const delta = e.deltaY > 0 ? 1 : -1; + if (this.uiData.dragStart[0] < this.uiData.dragEnd[0]) { + this.uiData.dragStart[0] -= delta; + this.uiData.dragEnd[0] += delta; + } else { + this.uiData.dragStart[0] += delta; + this.uiData.dragEnd[0] -= delta; + } + if (this.uiData.dragStart[1] < this.uiData.dragEnd[1]) { + this.uiData.dragStart[1] -= delta; + this.uiData.dragEnd[1] += delta; + } else { + this.uiData.dragStart[1] += delta; + this.uiData.dragEnd[1] -= delta; + } + this.uiData.isDragging = true; + this.drawScene(); + this.uiData.isDragging = false; + const tileIdx = this.tileIndex(this.uiData.dragStart[0], this.uiData.dragStart[1]); + if (tileIdx >= 0) { + this.generateMouseUpCallback( + this.screenXY2TextureFrac(this.uiData.dragStart[0], this.uiData.dragStart[1], tileIdx), + this.screenXY2TextureFrac(this.uiData.dragEnd[0], this.uiData.dragEnd[1], tileIdx) + ); + } else { + log.warn("Could not generate drag release callback for ROI selection: Invalid tile index."); + } + return; + } + let scrollAmount = e.deltaY < 0 ? -0.01 : 0.01; + if (this.opts.invertScrollDirection) { + scrollAmount = -scrollAmount; + } + if (this.opts.clickToSegment) { + if (scrollAmount < 0) { + this.opts.clickToSegmentPercent -= 0.01; + this.opts.clickToSegmentPercent = Math.max(this.opts.clickToSegmentPercent, 0); + } else { + this.opts.clickToSegmentPercent += 0.01; + this.opts.clickToSegmentPercent = Math.min(this.opts.clickToSegmentPercent, 1); + } + const x2 = this.clickToSegmentXY[0]; + const y2 = this.clickToSegmentXY[1]; + const tileIdx = this.tileIndex(x2, y2); + if (tileIdx >= 0 && this.screenSlices[tileIdx].axCorSag <= 2 /* SAGITTAL */) { + log.debug(`Adjusting clickToSegment threshold: ${this.opts.clickToSegmentPercent.toFixed(3)}`); + this.clickToSegmentIsGrowing = true; + this.doClickToSegment({ x: x2, y: y2, tileIndex: tileIdx }); + } + return; + } + const rect = this.canvas.getBoundingClientRect(); + const x = e.clientX - rect.left; + const y = e.clientY - rect.top; + if (this.getCurrentDragMode() === 3 /* pan */ && this.inRenderTile(this.uiData.dpr * x, this.uiData.dpr * y) === -1) { + const zoomDirection = scrollAmount < 0 ? 1 : -1; + let zoom = this.scene.pan2Dxyzmm[3] * (1 + 10 * (0.01 * zoomDirection)); + zoom = Math.round(zoom * 10) / 10; + const zoomChange = this.scene.pan2Dxyzmm[3] - zoom; + if (this.opts.yoke3Dto2DZoom) { + this.scene.volScaleMultiplier = zoom; + } + this.scene.pan2Dxyzmm[3] = zoom; + const mm = this.frac2mm(this.scene.crosshairPos); + this.scene.pan2Dxyzmm[0] += zoomChange * mm[0]; + this.scene.pan2Dxyzmm[1] += zoomChange * mm[1]; + this.scene.pan2Dxyzmm[2] += zoomChange * mm[2]; + this.drawScene(); + this.canvas.focus(); + this.sync(); + return; + } + this.sliceScroll2D(scrollAmount, x, y); + } + /** + * Registers all mouse, touch, keyboard, and drag event listeners for canvas interaction. + * n.b. any event listeners registered here should also be removed in `cleanup()` + * @internal + */ + registerInteractions() { + if (!this.canvas) { + throw new Error("canvas undefined"); + } + __privateSet(this, _eventsController, new AbortController()); + const { signal } = __privateGet(this, _eventsController); + this.canvas.addEventListener("mousedown", this.mouseDownListener.bind(this), { signal }); + this.canvas.addEventListener("mouseup", this.mouseUpListener.bind(this), { signal }); + this.canvas.addEventListener("mousemove", this.mouseMoveListener.bind(this), { signal }); + this.canvas.addEventListener("mouseleave", this.mouseLeaveListener.bind(this), { signal }); + this.canvas.addEventListener("touchstart", this.touchStartListener.bind(this), { signal }); + this.canvas.addEventListener("touchend", this.touchEndListener.bind(this), { signal }); + this.canvas.addEventListener("touchmove", this.touchMoveListener.bind(this), { signal }); + this.canvas.addEventListener("wheel", this.wheelListener.bind(this), { signal }); + this.canvas.addEventListener("contextmenu", this.mouseContextMenuListener.bind(this), { signal }); + this.canvas.addEventListener("dblclick", this.resetBriCon.bind(this), { signal }); + this.canvas.addEventListener("dragenter", this.dragEnterListener.bind(this), { signal }); + this.canvas.addEventListener("dragover", this.dragOverListener.bind(this), { signal }); + this.canvas.addEventListener( + "drop", + (event) => { + this.dropListener(event).catch(console.error); + }, + { signal } + ); + this.canvas.setAttribute("tabindex", "0"); + this.canvas.addEventListener("keyup", this.keyUpListener.bind(this), { signal }); + this.canvas.addEventListener("keydown", this.keyDownListener.bind(this), { signal }); + } + /** + * Prevents default behavior when a dragged item enters the canvas. + * @internal + */ + dragEnterListener(e) { + e.stopPropagation(); + e.preventDefault(); + } + /** + * Prevents default behavior when a dragged item is over the canvas. + * @internal + */ + dragOverListener(e) { + e.stopPropagation(); + e.preventDefault(); + } + /** + * Extracts and normalizes the file extension, handling special cases like .gz and .cbor. + * @internal + */ + getFileExt(fullname, upperCase = true) { + log.debug("fullname: ", fullname); + const re = /(?:\.([^.]+))?$/; + let ext = re.exec(fullname)[1]; + ext = ext.toUpperCase(); + if (ext === "GZ") { + ext = re.exec(fullname.slice(0, -3))[1]; + ext = ext.toUpperCase(); + } else if (ext === "CBOR") { + const endExt = ext; + ext = re.exec(fullname.slice(0, -5))[1]; + ext = ext.toUpperCase(); + ext = `${ext}.${endExt}`; + } + return upperCase ? ext : ext.toLowerCase(); + } + /** + * Add an image and notify subscribers + * @see {@link https://niivue.com/demos/features/document.3d.html | live demo usage} + */ + async addVolumeFromUrl(imageOptions) { + const volume = await NVImage.loadFromUrl(imageOptions); + this.document.addImageOptions(volume, imageOptions); + volume.onColormapChange = this.onColormapChange; + this.mediaUrlMap.set(volume, imageOptions.url); + if (this.onVolumeAddedFromUrl) { + this.onVolumeAddedFromUrl(imageOptions, volume); + } + this.addVolume(volume); + return volume; + } + async addVolumesFromUrl(imageOptionsArray) { + const promises = imageOptionsArray.map(async (imageItem) => { + const ext = this.getFileExt(imageItem.name || imageItem.url); + if (ext === "DCM") { + throw new Error("DICOM files must be loaded using useDicomLoader"); + } + if (this.loaders[ext]) { + let itemToLoad = imageItem.url; + const toExt = this.loaders[ext].toExt; + let name = imageItem.name || imageItem.url; + name = name.split("/").pop(); + if (typeof imageItem.url === "string") { + const url = imageItem.url; + try { + const response = await fetch(url); + if (!response.ok) { + throw new Error(`Failed to load file: ${response.statusText}`); + } + itemToLoad = await response.arrayBuffer(); + } catch (error) { + throw new Error(`Failed to load url ${url}: ${error}`); + } + } + const buffer = await this.loaders[ext].loader(itemToLoad); + imageItem.url = buffer; + imageItem.name = `${name}.${toExt}`; + } + const imageOptions = { + url: imageItem.url, + headers: imageItem.headers, + name: imageItem.name, + colormap: imageItem.colormap ? imageItem.colormap : imageItem.colorMap, + colormapNegative: imageItem.colormapNegative ? imageItem.colormapNegative : imageItem.colorMapNegative, + opacity: imageItem.opacity, + urlImgData: imageItem.urlImgData, + cal_min: imageItem.cal_min, + cal_max: imageItem.cal_max, + trustCalMinMax: this.opts.trustCalMinMax, + isManifest: imageItem.isManifest, + frame4D: imageItem.frame4D, + limitFrames4D: imageItem.limitFrames4D || this.opts.limitFrames4D, + colorbarVisible: imageItem.colorbarVisible + }; + const volume = await NVImage.loadFromUrl(imageOptions); + this.document.addImageOptions(volume, imageOptions); + volume.onColormapChange = this.onColormapChange; + this.mediaUrlMap.set(volume, imageOptions.url); + if (this.onVolumeAddedFromUrl) { + this.onVolumeAddedFromUrl(imageOptions, volume); + } + return volume; + }); + const volumes = await Promise.all(promises); + for (let i = 0; i < volumes.length; i++) { + this.addVolume(volumes[i]); + } + return volumes; + } + /** + * Returns the media object associated with the given URL, if any. + * @internal + */ + getMediaByUrl(url) { + return [...this.mediaUrlMap.entries()].filter((v) => v[1] === url).map((v) => v[0]).pop(); + } + /** + * Remove volume by url + * @param url - Volume added by url to remove + * @see {@link https://niivue.com/demos/features/document.3d.html | live demo usage} + */ + removeVolumeByUrl(url) { + const volume = this.getMediaByUrl(url); + if (volume) { + this.removeVolume(volume); + } else { + throw new Error("No volume with URL present"); + } + } + /** + * Recursively traverses a file tree, populating file paths for directory uploads. + * Adds `_webkitRelativePath` to each file for compatibility with tools like dcm2niix. + * @internal + */ + async traverseFileTree(item, path = "", fileArray) { + return new Promise((resolve2) => { + if (item.isFile) { + item.file((file) => { + file.fullPath = path + file.name; + file._webkitRelativePath = path + file.name; + fileArray.push(file); + resolve2(fileArray); + }); + } else if (item.isDirectory) { + const dirReader = item.createReader(); + const readAllEntries = () => { + dirReader.readEntries((entries) => { + if (entries.length > 0) { + const promises = []; + for (const entry of entries) { + promises.push(this.traverseFileTree(entry, path + item.name + "/", fileArray)); + } + Promise.all(promises).then(readAllEntries).catch((e) => { + throw e; + }); + } else { + resolve2(fileArray); + } + }); + }; + readAllEntries(); + } + }); + } + /** + * Recursively reads a directory and logs the File objects contained within. + * Used for processing dropped folders via drag-and-drop. + * @internal + */ + readDirectory(directory) { + const reader = directory.createReader(); + let allEntiresInDir = []; + const getFileObjects = async (fileSystemEntries) => { + const allFileObects = []; + const getFile = async (fileEntry) => { + return new Promise((resolve2, reject) => fileEntry.file(resolve2, reject)); + }; + for (let i = 0; i < fileSystemEntries.length; i++) { + allFileObects.push(await getFile(fileSystemEntries[i])); + } + return allFileObects; + }; + const readEntries = () => { + reader.readEntries((entries) => { + if (entries.length) { + allEntiresInDir = allEntiresInDir.concat(entries); + readEntries(); + } else { + getFileObjects(allEntiresInDir).then(async () => { + }).catch((e) => { + throw e; + }); + } + }); + }; + readEntries(); + return allEntiresInDir; + } + /** + * Returns boolean: true if filename ends with mesh extension (TRK, pial, etc) + * @param url - filename + * @internal + */ + isMeshExt(url) { + const ext = this.getFileExt(url); + log.debug("dropped ext"); + log.debug(ext); + return MESH_EXTENSIONS.includes(ext); + } + /** + * Load an image or mesh from an array buffer + * @param buffer - ArrayBuffer with the entire contents of a mesh or volume + * @param name - string of filename, extension used to infer type (NIfTI, MGH, MZ3, etc) + * @see {@link http://192.168.0.150:8080/features/draganddrop.html | live demo usage} + */ + async loadFromArrayBuffer(buffer, name) { + const ext = this.getFileExt(name); + if (MESH_EXTENSIONS.includes(ext)) { + await this.addMeshFromUrl({ url: name, buffer }); + return; + } + const imageOptions = NVImageFromUrlOptions(name); + imageOptions.buffer = buffer; + imageOptions.name = name; + await this.addVolumeFromUrl(imageOptions); + } + /** + * Load a mesh or image volume from a File object + * @param file - File object selected by the user (e.g. from an HTML input element) + * @returns a Promise that resolves when the file has been loaded and added to the scene + * @see {@link https://niivue.com/demos/features/selectfont.html | live demo usage} + */ + async loadFromFile(file) { + const ext = this.getFileExt(file.name); + if (MESH_EXTENSIONS.includes(ext)) { + await NVMesh3.loadFromFile({ file, gl: this.gl, name: file.name }).then((mesh) => { + this.addMesh(mesh); + }); + return; + } + await NVImage.loadFromFile({ + file, + name: file.name + }).then((volume) => { + this.addVolume(volume); + }); + } + /** + * Registers a custom external file loader for handling specific file types in Niivue. + * + * This method allows you to define how certain file extensions are handled when loaded into Niivue. + * The provided `loader` function should return an object containing an `ArrayBuffer` of the file's contents + * and the file extension (used for inferring how Niivue should process the data). + * + * Optionally, `positions` and `indices` can be returned to support loading mesh data (e.g. `.mz3` format). + * + * @example + * const myCustomLoader = async (file) => { + * const arrayBuffer = await file.arrayBuffer() + * return { + * arrayBuffer, + * fileExt: 'iwi.cbor', + * positions: new Float32Array(...), + * indices: new Uint32Array(...) + * } + * } + * + * nv.useLoader(myCustomLoader, 'iwi.cbor', 'nii') + * + * @param loader - A function that accepts a `File` or `ArrayBuffer` and returns an object with `arrayBuffer` and `fileExt` properties. May also return `positions` and `indices` for meshes. + * @param fileExt - The original file extension (e.g. 'iwi.cbor') to associate with this loader. + * @param toExt - The target file extension Niivue should treat the file as (e.g. 'nii' or 'mz3'). + */ + useLoader(loader, fileExt, toExt) { + this.loaders = { + ...this.loaders, + [fileExt.toUpperCase()]: { + loader, + toExt + } + }; + } + /** + * Set a custom loader for handling DICOM files. + */ + useDicomLoader(loader) { + this.dicomLoader = loader; + } + /** + * Get the currently assigned DICOM loader. + */ + getDicomLoader() { + return this.dicomLoader; + } + // dicom loading is a special case because it can take a list + // of files (e.g. from a user supplied DICOM directory) or a single file. + // Our preferred DICOM loader is the WASM port of dcm2niix (implemented in a separate niivue loader module). + // useDicomLoader(loader: unknown, toExt: string) { + // this.loaders = { + // ...this.loaders, + // ['DCM']: { + // loader, + // toExt, + // }, + // } + // } + /** + * Handles file and URL drag-and-drop events on the canvas. + * Supports loading of volumes, meshes, NVD documents, and DICOM directories. + * Honors modifier keys (e.g., Shift to replace, Alt for drawing overlays). + * @internal + */ + async dropListener(e) { + if (!this.eventInBounds(e)) { + this.opts.showBoundsBorder = false; + return; + } else if (this.opts.bounds) { + this.opts.showBoundsBorder = true; + } + e.stopPropagation(); + e.preventDefault(); + if (!this.opts.dragAndDropEnabled) { + return; + } + const urlsToLoad = []; + const files = []; + const dt = e.dataTransfer; + if (!dt) { + return; + } + const url = dt.getData("text/uri-list"); + if (url) { + urlsToLoad.push(url); + const imageOptions = NVImageFromUrlOptions(url); + const ext = this.getFileExt(url); + log.debug("dropped ext"); + log.debug(ext); + if (MESH_EXTENSIONS.includes(ext)) { + this.addMeshFromUrl({ url }).catch((e2) => { + throw e2; + }); + } else if (ext === "NVD") { + this.loadDocumentFromUrl(url).catch((e2) => { + throw e2; + }); + } else { + this.addVolumeFromUrl(imageOptions).catch((e2) => { + throw e2; + }); + } + } else { + const items = dt.items; + if (items.length > 0) { + if (!e.shiftKey && !e.altKey) { + this.volumes = []; + this.overlays = []; + this.meshes = []; + } + this.closeDrawing(); + this.closePAQD(); + for (const item of Array.from(items)) { + const entry = item.webkitGetAsEntry(); + log.debug(entry); + if (!entry) { + throw new Error("could not get entry from file"); + } + if (entry.isFile) { + const ext = this.getFileExt(entry.name); + let pairedImageData; + if (entry.name.lastIndexOf("HEAD") !== -1) { + for (const pairedItem of Array.from(items)) { + const pairedEntry = pairedItem.webkitGetAsEntry(); + if (!pairedEntry) { + throw new Error("could not get paired entry"); + } + const fileBaseName = entry.name.substring(0, entry.name.lastIndexOf("HEAD")); + const pairedItemBaseName = pairedEntry.name.substring(0, pairedEntry.name.lastIndexOf("BRIK")); + if (fileBaseName === pairedItemBaseName) { + pairedImageData = pairedEntry; + } + } + } + if (entry.name.toUpperCase().lastIndexOf("HDR") !== -1) { + for (const pairedItem of Array.from(items)) { + const pairedEntry = pairedItem.webkitGetAsEntry(); + if (!pairedEntry) { + throw new Error("could not get paired entry"); + } + const fileBaseName = entry.name.substring(0, entry.name.toUpperCase().lastIndexOf("HDR")); + const pairedItemBaseName = pairedEntry.name.substring( + 0, + pairedEntry.name.toUpperCase().lastIndexOf("IMG") + ); + if (fileBaseName === pairedItemBaseName) { + pairedImageData = pairedEntry; + } + } + } + if (entry.name.lastIndexOf("BRIK") !== -1 || entry.name.toUpperCase().lastIndexOf("IMG") !== -1) { + continue; + } + if (this.loaders[ext]) { + const dataUrl = await readFileAsDataURL(entry); + await this.loadImages([ + { + url: dataUrl, + name: `${entry.name}` + } + ]); + continue; + } + if (MESH_EXTENSIONS.includes(ext)) { + ; + entry.file((file) => { + ; + (async () => { + try { + const mesh = await NVMesh3.loadFromFile({ + file, + gl: this.gl, + name: file.name + }); + this.addMesh(mesh); + } catch (e2) { + console.error("Error loading mesh:", e2); + } + })().catch((err2) => console.error(err2)); + }); + continue; + } else if (ext === "NVD") { + ; + entry.file((file) => { + ; + (async () => { + try { + const nvdoc = await NVDocument.loadFromFile(file); + await this.loadDocument(nvdoc); + log.debug("loaded document"); + } catch (e2) { + console.error(e2); + } + })().catch((err2) => console.error(err2)); + }); + break; + } + ; + entry.file((file) => { + ; + (async () => { + try { + if (pairedImageData) { + ; + pairedImageData.file((imgfile) => { + ; + (async () => { + try { + const volume = await NVImage.loadFromFile({ + file, + urlImgData: imgfile, + limitFrames4D: this.opts.limitFrames4D + }); + this.addVolume(volume); + } catch (e2) { + console.error(e2); + } + })().catch(console.error); + }); + } else { + const volume = await NVImage.loadFromFile({ + file, + urlImgData: pairedImageData, + limitFrames4D: this.opts.limitFrames4D + }); + if (e.altKey) { + log.debug("alt key detected: assuming this is a drawing overlay"); + this.drawClearAllUndoBitmaps(); + this.loadDrawing(volume); + } else { + this.addVolume(volume); + } + } + } catch (e2) { + console.error(e2); + } + })().catch(console.error); + }); + } else if (entry.isDirectory) { + this.traverseFileTree(entry, "", files).then((files2) => { + const loader = this.getDicomLoader().loader; + if (!loader) { + throw new Error("No loader for DICOM files"); + } + loader(files2).then(async (fileArrayBuffers) => { + const promises = fileArrayBuffers.map( + (loaderImage) => NVImage.loadFromUrl({ + url: loaderImage.data, + name: loaderImage.name, + limitFrames4D: this.opts.limitFrames4D + }) + ); + Promise.all(promises).then(async (loadedNvImages) => { + await this.onDicomLoaderFinishedWithImages(loadedNvImages); + }).catch((e2) => { + throw e2; + }); + }).catch((error) => { + console.error("Error loading DICOM files:", error); + }); + }).catch((e2) => { + throw e2; + }); + } + } + } + } + this.drawScene(); + } + /** + * insert a gap between slices of a mutliplanar view. + * @param pixels - spacing between tiles of multiplanar view + * @example niivue.setMultiplanarPadPixels(4) + * @see {@link https://niivue.com/demos/features/atlas.html | live demo usage} + */ + setMultiplanarPadPixels(pixels) { + this.opts.multiplanarPadPixels = pixels; + this.drawScene(); + } + /** + * control placement of 2D slices. + * @param layout - AUTO: 0, COLUMN: 1, GRID: 2, ROW: 3, + * @example niivue.setMultiplanarLayout(2) + * @see {@link https://niivue.com/demos/features/layout.html | live demo usage} + */ + setMultiplanarLayout(layout) { + if (typeof layout === "string") { + layout = parseInt(layout); + } + this.opts.multiplanarLayout = layout; + this.drawScene(); + } + /** + * determine if text appears at corner (true) or sides of 2D slice. + * @param isCornerOrientationText - controls position of text + * @example niivue.setCornerOrientationText(true) + * @see {@link https://niivue.com/demos/features/worldspace2.html | live demo usage} + */ + setCornerOrientationText(isCornerOrientationText) { + this.opts.isCornerOrientationText = isCornerOrientationText; + this.updateGLVolume(); + } + /** + * Show or hide orientation labels (e.g., L/R, A/P) in 2D slice views + * @param isOrientationTextVisible - whether orientation text should be displayed + * @example niivue.setIsOrientationTextVisible(false) + * @see {@link https://niivue.com/demos/features/basic.multiplanar.html | live demo usage} + */ + setIsOrientationTextVisible(isOrientationTextVisible) { + this.opts.isOrientationTextVisible = isOrientationTextVisible; + this.drawScene(); + } + /** + * Show or hide all four orientation labels (e.g., L/R, A/P, S/I) in 2D slice views + * @param showAllOrientationMarkers - whether all four orientation markers should be displayed + * @example niivue.setShowAllOrientationMarkers(true) + */ + setShowAllOrientationMarkers(showAllOrientationMarkers) { + this.opts.showAllOrientationMarkers = showAllOrientationMarkers; + this.drawScene(); + } + /** + * determine proportion of screen real estate devoted to rendering in multiplanar view. + * @param fraction - proportion of screen devoted to primary (hero) image (0 to disable) + * @example niivue.setHeroImage(0.5) + * @see {@link https://niivue.com/demos/features/layout.html | live demo usage} + */ + setHeroImage(fraction) { + this.opts.heroImageFraction = fraction; + this.drawScene(); + } + /** + * Set a custom slice layout. This overrides the built-in layouts. + * @param layout - Array of layout specifications for each slice view + * @example + * niivue.setCustomLayout([ + * // Left 50% - Sag + * {sliceType: 2, position: [0, 0, 0.5, 1.0]}, + * // Top right - Cor + * {sliceType: 1, position: [0.5, 0, 0.5, 0.5]}, + * // Bottom right - Ax + * {sliceType: 0, position: [0.5, 0.5, 0.5, 0.5]} + * ]) + * + * produces: + * +----------------+----------------+ + * | | | + * | | coronal | + * | | | + * | | | + * | sagittal +----------------+ + * | | | + * | | axial | + * | | | + * | | | + * +----------------+----------------+ + */ + setCustomLayout(layout) { + for (let i = 0; i < layout.length; i++) { + const [left1, top1, width1, height1] = layout[i].position; + const right1 = left1 + width1; + const bottom1 = top1 + height1; + for (let j = i + 1; j < layout.length; j++) { + const [left2, top2, width2, height2] = layout[j].position; + const right2 = left2 + width2; + const bottom2 = top2 + height2; + const horizontallyOverlaps = left1 < right2 && right1 > left2; + const verticallyOverlaps = top1 < bottom2 && bottom1 > top2; + if (horizontallyOverlaps && verticallyOverlaps) { + throw new Error(`Custom layout is invalid. Tile ${i} overlaps with tile ${j}.`); + } + } + } + this.customLayout = layout; + this.drawScene(); + } + /** + * Clear custom layout and rely on built-in layouts + */ + clearCustomLayout() { + this.customLayout = null; + this.drawScene(); + } + /** + * Get the current custom layout if set + * @returns The current custom layout or null if using built-in layouts + */ + getCustomLayout() { + return this.customLayout; + } + /** + * control whether 2D slices use radiological or neurological convention. + * @param isRadiologicalConvention - new display convention + * @example niivue.setRadiologicalConvention(true) + * @see {@link https://niivue.com/demos/features/worldspace.html | live demo usage} + */ + setRadiologicalConvention(isRadiologicalConvention) { + this.opts.isRadiologicalConvention = isRadiologicalConvention; + this.updateGLVolume(); + } + /** + * Reset scene to default settings. + * @param options - @see NiiVueOptions + * @param resetBriCon - also reset contrast (default false). + * @example niivue.nv1.setDefaults(opts, true); + * @see {@link https://niivue.com/demos/features/connectome.html | live demo usage} + */ + setDefaults(options = {}, resetBriCon = false) { + this.document.opts = { ...DEFAULT_OPTIONS }; + this.scene.sceneData = { ...INITIAL_SCENE_DATA }; + for (const name in options) { + if (typeof options[name] === "function") { + this[name] = options[name]; + } else { + this.opts[name] = DEFAULT_OPTIONS[name] === void 0 ? DEFAULT_OPTIONS[name] : options[name]; + } + } + this.scene.pan2Dxyzmm = [0, 0, 0, 1]; + if (resetBriCon && this.volumes && this.volumes.length > 0) { + for (let i = 0; i < this.volumes.length; i++) { + this.volumes[i].cal_min = this.volumes[i].robust_min; + this.volumes[i].cal_max = this.volumes[i].robust_max; + } + } + this.updateGLVolume(); + } + /** + * Limit visibility of mesh in front of a 2D image. Requires world-space mode. + * @param meshThicknessOn2D - distance from voxels for clipping mesh. Use Infinity to show entire mesh or 0.0 to hide mesh. + * @example niivue.setMeshThicknessOn2D(42) + * @see {@link https://niivue.com/demos/features/worldspace2.html | live demo usage} + */ + setMeshThicknessOn2D(meshThicknessOn2D) { + this.opts.meshThicknessOn2D = meshThicknessOn2D; + this.updateGLVolume(); + } + /** + * Create a custom multi-slice mosaic (aka lightbox, montage) view. + * @param str - description of mosaic. + * @example niivue.setSliceMosaicString("A 0 20 C 30 S 42") + * @see {@link https://niivue.com/demos/features/mosaics.html | live demo usage} + */ + setSliceMosaicString(str6) { + this.sliceMosaicString = str6; + this.updateGLVolume(); + } + /** + * control 2D slice view mode. + * @param isSliceMM - control whether 2D slices use world space (true) or voxel space (false). Beware that voxel space mode limits properties like panning, zooming and mesh visibility. + * @example niivue.setSliceMM(true) + * @see {@link https://niivue.com/demos/features/worldspace2.html | live demo usage} + */ + setSliceMM(isSliceMM) { + this.opts.isSliceMM = isSliceMM; + this.updateGLVolume(); + } + /** + * control whether voxel overlays are combined using additive (emission) or traditional (transmission) blending. + * @param isAdditiveBlend - emission (true) or transmission (false) mixing + * @example niivue.isAdditiveBlend(true) + * @see {@link https://niivue.com/demos/features/additive.voxels.html | live demo usage} + */ + setAdditiveBlend(isAdditiveBlend) { + this.opts.isAdditiveBlend = isAdditiveBlend; + this.updateGLVolume(); + } + /** + * Detect if display is using radiological or neurological convention. + * @returns radiological convention status + * @example let rc = niivue.getRadiologicalConvention() + */ + getRadiologicalConvention() { + return this.opts.isRadiologicalConvention; + } + /** + * Force WebGL canvas to use high resolution display, regardless of browser defaults. + * @param forceDevicePixelRatio - -1: block high DPI; 0= allow high DPI: >0 use specified pixel ratio + * @example niivue.setHighResolutionCapable(true); + * @see {@link https://niivue.com/demos/features/sync.mesh.html | live demo usage} + */ + setHighResolutionCapable(forceDevicePixelRatio) { + if (typeof forceDevicePixelRatio === "boolean") { + forceDevicePixelRatio = forceDevicePixelRatio ? 0 : -1; + } + this.opts.forceDevicePixelRatio = forceDevicePixelRatio; + this.resizeListener(); + this.drawScene(); + } + /** + * Start watching for changes to configuration options. + * This is a convenience method that sets up the onOptsChange callback. + * @param callback - Function to call when any option changes + * @example + * niivue.watchOptsChanges((propertyName, newValue, oldValue) => { + * console.log(`Option ${propertyName} changed from ${oldValue} to ${newValue}`) + * }) + * @see {@link https://niivue.com/demos/ | live demo usage} + */ + watchOptsChanges(callback) { + this.onOptsChange = callback; + } + /** + * Stop watching for changes to configuration options. + * This removes the current onOptsChange callback. + * @example niivue.unwatchOptsChanges() + * @see {@link https://niivue.com/demos/ | live demo usage} + */ + unwatchOptsChanges() { + this.onOptsChange = () => { + }; + } + /** + * add a new volume to the canvas + * @param volume - the new volume to add to the canvas + * @example + * niivue = new Niivue() + * niivue.addVolume(NVImage.loadFromUrl({url:'../someURL.nii.gz'})) + * @see {@link https://niivue.com/demos/features/conform.html | live demo usage} + */ + addVolume(volume) { + this.volumes.push(volume); + const idx = this.volumes.length === 1 ? 0 : this.volumes.length - 1; + this.setVolume(volume, idx); + this.onImageLoaded(volume); + log.debug("loaded volume", volume.name); + log.debug(volume); + } + /** + * add a new mesh to the canvas + * @param mesh - the new mesh to add to the canvas + * @example + * niivue = new Niivue() + * niivue.addMesh(NVMesh.loadFromUrl({url:'../someURL.gii'})) + * @see {@link https://niivue.com/demos/features/document.3d.html | live demo usage} + */ + addMesh(mesh) { + this.meshes.push(mesh); + const idx = this.meshes.length === 1 ? 0 : this.meshes.length - 1; + this.setMesh(mesh, idx); + this.onMeshLoaded(mesh); + } + /** + * get the index of a volume by its unique id. unique ids are assigned to the NVImage.id property when a new NVImage is created. + * @param id - the id string to search for + * @example + * niivue = new Niivue() + * niivue.getVolumeIndexByID(someVolume.id) + */ + getVolumeIndexByID(id) { + const n = this.volumes.length; + for (let i = 0; i < n; i++) { + const id_i = this.volumes[i].id; + if (id_i === id) { + return i; + } + } + return -1; + } + /** + * Saves the current drawing state as an RLE-compressed bitmap for undo history. + * Uses a circular buffer to limit undo memory usage. + * @internal + */ + drawAddUndoBitmap(drawFillOverwrites = true) { + if (!this.drawBitmap || this.drawBitmap.length < 1) { + log.debug("drawAddUndoBitmap error: No drawing open"); + return; + } + if (!drawFillOverwrites && this.drawUndoBitmaps.length > 0) { + const len4 = this.drawBitmap.length; + const bmp = decodeRLE(this.drawUndoBitmaps[this.currentDrawUndoBitmap], len4); + for (let i = 0; i < len4; i++) { + if (bmp[i] > 0) { + this.drawBitmap[i] = bmp[i]; + } + } + this.refreshDrawing(false); + } + this.currentDrawUndoBitmap++; + if (this.currentDrawUndoBitmap >= this.opts.maxDrawUndoBitmaps) { + this.currentDrawUndoBitmap = 0; + } + this.drawUndoBitmaps[this.currentDrawUndoBitmap] = encodeRLE(this.drawBitmap); + } + /** + * Clears all stored drawing undo bitmaps and resets the undo index. + * @internal + */ + drawClearAllUndoBitmaps() { + this.currentDrawUndoBitmap = this.opts.maxDrawUndoBitmaps; + if (!this.drawUndoBitmaps || this.drawUndoBitmaps.length < 1) { + return; + } + for (let i = this.drawUndoBitmaps.length - 1; i >= 0; i--) { + this.drawUndoBitmaps[i] = new Uint8Array(); + } + } + /** + * Restore drawing to previous state + * @example niivue.drawUndo(); + * @see {@link https://niivue.com/demos/features/draw.ui.html | live demo usage} + */ + drawUndo() { + const { drawBitmap, currentDrawUndoBitmap } = drawUndo({ + drawUndoBitmaps: this.drawUndoBitmaps, + currentDrawUndoBitmap: this.currentDrawUndoBitmap, + drawBitmap: this.drawBitmap + }); + this.drawBitmap = drawBitmap; + this.currentDrawUndoBitmap = currentDrawUndoBitmap; + this.refreshDrawing(true); + } + /** + * Loads a drawing overlay and aligns it with the current background image. + * Converts the input image to match the background's orientation and stores it as a drawable bitmap. + * Initializes the undo history and prepares the drawing texture. + * + * @param drawingBitmap - A `NVImage` object representing the drawing to load. Must match the dimensions of the background image. + * @returns `true` if the drawing was successfully loaded and aligned; `false` if dimensions are incompatible. + */ + loadDrawing(drawingBitmap) { + if (this.drawBitmap) { + log.debug("Overwriting open drawing!"); + } + if (!this.back) { + throw new Error("back undefined"); + } + this.drawClearAllUndoBitmaps(); + const dims = drawingBitmap.hdr.dims; + if (dims[1] !== this.back.hdr.dims[1] || dims[2] !== this.back.hdr.dims[2] || dims[3] !== this.back.hdr.dims[3]) { + log.debug("drawing dimensions do not match background image"); + return false; + } + if (drawingBitmap.img.constructor !== Uint8Array) { + log.debug("Drawings should be UINT8"); + } + const perm = drawingBitmap.permRAS; + const vx = dims[1] * dims[2] * dims[3]; + this.drawBitmap = new Uint8Array(vx); + if (this.opts.is2DSliceShader) { + this.drawTexture = this.r8Tex2D(this.drawTexture, TEXTURE7_DRAW, this.back.dims, true); + } else { + this.drawTexture = this.r8Tex(this.drawTexture, TEXTURE7_DRAW, this.back.dims, true); + } + const layout = [0, 0, 0]; + for (let i = 0; i < 3; i++) { + for (let j2 = 0; j2 < 3; j2++) { + if (Math.abs(perm[i]) - 1 !== j2) { + continue; + } + layout[j2] = i * Math.sign(perm[i]); + } + } + let stride = 1; + const instride = [1, 1, 1]; + const inflip = [false, false, false]; + for (let i = 0; i < layout.length; i++) { + for (let j2 = 0; j2 < layout.length; j2++) { + const a = Math.abs(layout[j2]); + if (a !== i) { + continue; + } + instride[j2] = stride; + if (layout[j2] < 0 || Object.is(layout[j2], -0)) { + inflip[j2] = true; + } + stride *= dims[j2 + 1]; + } + } + let xlut = NVUtilities.range(0, dims[1] - 1, 1); + if (inflip[0]) { + xlut = NVUtilities.range(dims[1] - 1, 0, -1); + } + for (let i = 0; i < dims[1]; i++) { + xlut[i] *= instride[0]; + } + let ylut = NVUtilities.range(0, dims[2] - 1, 1); + if (inflip[1]) { + ylut = NVUtilities.range(dims[2] - 1, 0, -1); + } + for (let i = 0; i < dims[2]; i++) { + ylut[i] *= instride[1]; + } + let zlut = NVUtilities.range(0, dims[3] - 1, 1); + if (inflip[2]) { + zlut = NVUtilities.range(dims[3] - 1, 0, -1); + } + for (let i = 0; i < dims[3]; i++) { + zlut[i] *= instride[2]; + } + const inVs = drawingBitmap.img; + const outVs = this.drawBitmap; + let j = 0; + for (let z = 0; z < dims[3]; z++) { + for (let y = 0; y < dims[2]; y++) { + for (let x = 0; x < dims[1]; x++) { + outVs[xlut[x] + ylut[y] + zlut[z]] = inVs[j]; + j++; + } + } + } + this.drawAddUndoBitmap(); + this.refreshDrawing(false); + this.drawScene(); + return true; + } + /** + * Binarize a volume by converting all non-zero voxels to 1 + * @param volume - the image volume to modify in place + * @see {@link https://niivue.com/demos/features/clusterize.html | live demo usage} + */ + binarize(volume) { + const dims = volume.hdr.dims; + const vx = dims[1] * dims[2] * dims[3]; + const img = new Uint8Array(vx); + for (let i = 0; i < vx; i++) { + if (volume.img[i] !== 0) { + img[i] = 1; + } + } + volume.img = img; + volume.hdr.datatypeCode = 2 /* DT_UINT8 */; + volume.hdr.cal_min = 0; + volume.hdr.cal_max = 1; + } + /** + * Open drawing + * @param fnm - filename of NIfTI format drawing + * @param isBinarize - if true will force drawing voxels to be either 0 or 1. + * @example niivue.loadDrawingFromUrl("../images/lesion.nii.gz"); + * @see {@link https://niivue.com/demos/features/draw.ui.html | live demo usage} + */ + async loadDrawingFromUrl(fnm, isBinarize = false) { + if (this.drawBitmap) { + log.debug("Overwriting open drawing!"); + } + this.drawClearAllUndoBitmaps(); + let ok = false; + try { + const volume = await NVImage.loadFromUrl(NVImageFromUrlOptions(fnm)); + if (isBinarize) { + await this.binarize(volume); + } + ok = this.loadDrawing(volume); + } catch (err2) { + log.error("loadDrawingFromUrl() failed to load " + fnm); + this.drawClearAllUndoBitmaps(); + } + return ok; + } + /** + * Computes one or more Otsu threshold levels for the primary volume. + * Returns raw intensity values corresponding to bin-based thresholds. + * @internal + */ + findOtsu(mlevel = 2) { + if (this.volumes.length < 1) { + return []; + } + const img = this.volumes[0].img; + const nvox = img.length; + if (nvox < 1) { + return []; + } + const nBin = 256; + const maxBin = nBin - 1; + const h = new Array(nBin).fill(0); + const mn = this.volumes[0].cal_min; + const mx = this.volumes[0].cal_max; + if (mx <= mn) { + return []; + } + const scale2raw = (mx - mn) / nBin; + function bin2raw(bin) { + return bin * scale2raw + mn; + } + const scale2bin = (nBin - 1) / Math.abs(mx - mn); + const inter = this.volumes[0].hdr.scl_inter; + const slope = this.volumes[0].hdr.scl_slope; + for (let v = 0; v < nvox; v++) { + let val = img[v] * slope + inter; + val = Math.min(Math.max(val, mn), mx); + val = Math.round((val - mn) * scale2bin); + h[val]++; + } + const P = Array(nBin).fill(0).map(() => Array(nBin).fill(0)); + const S = Array(nBin).fill(0).map(() => Array(nBin).fill(0)); + for (let i = 1; i < nBin; ++i) { + P[i][i] = h[i]; + S[i][i] = i * h[i]; + } + for (let i = 1; i < nBin - 1; ++i) { + P[1][i + 1] = P[1][i] + h[i + 1]; + S[1][i + 1] = S[1][i] + (i + 1) * h[i + 1]; + } + for (let i = 2; i < nBin; i++) { + for (let j = i + 1; j < nBin; j++) { + P[i][j] = P[1][j] - P[1][i - 1]; + S[i][j] = S[1][j] - S[1][i - 1]; + } + } + for (let i = 1; i < nBin; ++i) { + for (let j = i + 1; j < nBin; j++) { + if (P[i][j] !== 0) { + P[i][j] = S[i][j] * S[i][j] / P[i][j]; + } + } + } + let max5 = 0; + const t = [Infinity, Infinity, Infinity]; + if (mlevel > 3) { + for (let l = 0; l < nBin - 3; l++) { + for (let m = l + 1; m < nBin - 2; m++) { + for (let h2 = m + 1; h2 < nBin - 1; h2++) { + const v = P[0][l] + P[l + 1][m] + P[m + 1][h2] + P[h2 + 1][maxBin]; + if (v > max5) { + t[0] = l; + t[1] = m; + t[2] = h2; + max5 = v; + } + } + } + } + } else if (mlevel === 3) { + for (let l = 0; l < nBin - 2; l++) { + for (let h2 = l + 1; h2 < nBin - 1; h2++) { + const v = P[0][l] + P[l + 1][h2] + P[h2 + 1][maxBin]; + if (v > max5) { + t[0] = l; + t[1] = h2; + max5 = v; + } + } + } + } else { + for (let i = 0; i < nBin - 1; i++) { + const v = P[0][i] + P[i + 1][maxBin]; + if (v > max5) { + t[0] = i; + max5 = v; + } + } + } + return [bin2raw(t[0]), bin2raw(t[1]), bin2raw(t[2])]; + } + /** + * remove dark voxels in air + * @param levels - (2-4) segment brain into this many types. For example drawOtsu(2) will create a binary drawing where bright voxels are colored and dark voxels are clear. + * @example niivue.drawOtsu(3); + * @see {@link https://niivue.com/demos/features/draw.ui.html | live demo usage} + */ + drawOtsu(levels = 2) { + if (this.volumes.length === 0) { + return; + } + const nvox = this.volumes[0].img.length; + const thresholds = this.findOtsu(levels); + if (thresholds.length < 3) { + return; + } + if (!this.drawBitmap) { + this.createEmptyDrawing(); + } + const drawImg = this.drawBitmap; + const img = this.volumes[0].img; + for (let i = 0; i < nvox; i++) { + if (drawImg[i] !== 0) { + continue; + } + const v = img[i]; + if (v > thresholds[0]) { + drawImg[i] = 1; + } + if (v > thresholds[1]) { + drawImg[i] = 2; + } + if (v > thresholds[2]) { + drawImg[i] = 3; + } + } + this.drawAddUndoBitmap(); + this.refreshDrawing(true); + } + /** + * remove dark voxels in air + * @param level - (1-5) larger values for more preserved voxels + * @param volIndex - volume to dehaze + * @example niivue.removeHaze(3, 0); + * @see {@link https://niivue.com/demos/features/draw.ui.html | live demo usage} + */ + removeHaze(level = 5, volIndex = 0) { + const img = this.volumes[volIndex].img; + const hdr = this.volumes[volIndex].hdr; + const nvox = img.length; + let otsu = 2; + if (level === 5 || level === 1) { + otsu = 4; + } + if (level === 4 || level === 2) { + otsu = 3; + } + const thresholds = this.findOtsu(otsu); + if (thresholds.length < 3) { + return; + } + let threshold = thresholds[0]; + if (level === 1) { + threshold = thresholds[2]; + } + if (level === 2) { + threshold = thresholds[1]; + } + const inter = hdr.scl_inter; + const slope = hdr.scl_slope; + const mn = this.volumes[volIndex].global_min; + for (let v = 0; v < nvox; v++) { + const val = img[v] * slope + inter; + if (val < threshold) { + img[v] = mn; + } + } + this.refreshLayers(this.volumes[volIndex], 0); + this.drawScene(); + } + /** + * Save voxel-based image to disk. + * + * @param options - configuration object with the following fields: + * - `filename`: name of the NIfTI image to create + * - `isSaveDrawing`: whether to save the drawing layer or the background image + * - `volumeByIndex`: which image layer to save (0 for background) + * @returns `true` if successful when writing to disk, or a `Uint8Array` if exported as binary data + * + * @example + * niivue.saveImage({ filename: "myimage.nii.gz", isSaveDrawing: true }); + * niivue.saveImage({ filename: "myimage.nii.gz", isSaveDrawing: true }); + * @see {@link https://niivue.com/demos/features/draw.ui.html | live demo usage} + */ + async saveImage(options = defaultSaveImageOptions) { + const saveOptions = { + ...defaultSaveImageOptions, + ...options + }; + const { filename, isSaveDrawing, volumeByIndex } = saveOptions; + log.debug("saveImage", filename, isSaveDrawing, volumeByIndex); + if (this.back?.dims === void 0) { + log.debug("No voxelwise image open"); + return false; + } + if (isSaveDrawing) { + if (!this.drawBitmap) { + log.debug("No drawing open"); + return false; + } + const img2 = await this.volumes[0].saveToDisk(filename, this.drawBitmap); + return img2; + } + log.debug("saving image"); + const img = this.volumes[volumeByIndex].saveToDisk(filename); + return img; + } + /** + * Returns the index of a mesh given its ID or index. + * + * @param id - The mesh ID as a string, or an index number. + * @returns The mesh index, or -1 if not found or out of range. + */ + getMeshIndexByID(id) { + if (typeof id === "number") { + if (id >= this.meshes.length) { + return -1; + } + return id; + } + const n = this.meshes.length; + for (let i = 0; i < n; i++) { + const id_i = this.meshes[i].id; + if (id_i === id) { + return i; + } + } + return -1; + } + /** + * change property of mesh, tractogram or connectome + * @param id - identity of mesh to change + * @param key - attribute to change + * @param val - for attribute + * @example niivue.setMeshProperty(niivue.meshes[0].id, 'fiberLength', 42) + * @see {@link https://niivue.com/demos/features/meshes.html | live demo usage} + */ + setMeshProperty(id, key, val) { + const idx = this.getMeshIndexByID(id); + if (idx < 0) { + log.warn("setMeshProperty() id not loaded", id); + return; + } + this.meshes[idx].setProperty(key, val, this.gl); + this.updateGLVolume(); + this.onMeshPropertyChanged(idx, key, val); + } + /** + * returns the index of the mesh vertex that is closest to the provided coordinates + * @param mesh - identity of mesh to change + * @param Xmm - location in left/right dimension + * @param Ymm - location in posterior/anterior dimension + * @param Zmm - location in foot/head dimension + * @returns the an array where ret[0] is the mesh index and ret[1] is distance from vertex to coordinates + * @example niivue.indexNearestXYZmm(niivue.meshes[0].id, -22, 42, 13) + * @see {@link https://niivue.com/demos/features/clipplanes.html | live demo usage} + */ + indexNearestXYZmm(mesh, Xmm, Ymm, Zmm) { + const idx = this.getMeshIndexByID(mesh); + if (idx < 0) { + log.warn("indexNearestXYZmm() id not loaded", mesh); + return [NaN, NaN]; + } + return this.meshes[idx].indexNearestXYZmm(Xmm, Ymm, Zmm); + } + /** + * reduce complexity of FreeSurfer mesh + * @param mesh - identity of mesh to change + * @param order - decimation order 0..6 + * @example niivue.decimateHierarchicalMesh(niivue.meshes[0].id, 4) + * @returns boolean false if mesh is not hierarchical or of lower order + * @see {@link https://niivue.com/demos/features/meshes.html | live demo usage} + */ + decimateHierarchicalMesh(mesh, order = 3) { + const idx = this.getMeshIndexByID(mesh); + if (idx < 0) { + log.warn("reverseFaces() id not loaded", mesh); + return; + } + const ret = this.meshes[idx].decimateHierarchicalMesh(this.gl, order); + this.updateGLVolume(); + return ret; + } + /** + * reverse triangle winding of mesh (swap front and back faces) + * @param mesh - identity of mesh to change + * @example niivue.reverseFaces(niivue.meshes[0].id) + * @see {@link https://niivue.com/demos/features/meshes.html | live demo usage} + */ + reverseFaces(mesh) { + const idx = this.getMeshIndexByID(mesh); + if (idx < 0) { + log.warn("reverseFaces() id not loaded", mesh); + return; + } + this.meshes[idx].reverseFaces(this.gl); + this.updateGLVolume(); + } + /** + * reverse triangle winding of mesh (swap front and back faces) + * @param mesh - identity of mesh to change + * @param layer - selects the mesh overlay (e.g. GIfTI or STC file) + * @param key - attribute to change + * @param val - value for attribute + * @example niivue.setMeshLayerProperty(niivue.meshes[0].id, 0, 'frame4D', 22) + * @see {@link https://niivue.com/demos/features/mesh.4D.html | live demo usage} + */ + async setMeshLayerProperty(mesh, layer, key, val) { + const idx = this.getMeshIndexByID(mesh); + if (idx < 0) { + log.warn("setMeshLayerProperty() id not loaded", mesh); + return; + } + await this.meshes[idx].setLayerProperty(layer, key, val, this.gl); + this.updateGLVolume(); + } + /** + * adjust offset position and scale of 2D sliceScale + * @param xyzmmZoom - first three components are spatial, fourth is scaling + * @example niivue.setPan2Dxyzmm([5,-4, 2, 1.5]) + */ + setPan2Dxyzmm(xyzmmZoom) { + this.scene.pan2Dxyzmm = xyzmmZoom; + if (this.opts.yoke3Dto2DZoom) { + this.scene.volScaleMultiplier = xyzmmZoom[3]; + } + this.drawScene(); + } + /** + * set rotation of 3D render view + * @example niivue.setRenderAzimuthElevation(45, 15) + * @see {@link https://niivue.com/demos/features/mask.html | live demo usage} + */ + setRenderAzimuthElevation(a, e) { + this.scene.renderAzimuth = a; + this.scene.renderElevation = e; + this.onAzimuthElevationChange(a, e); + this.drawScene(); + } + /** + * get the index of an overlay by its unique id. unique ids are assigned to the NVImage.id property when a new NVImage is created. + * @param id - the id string to search for + * @see NiiVue#getVolumeIndexByID + * @example + * niivue = new Niivue() + * niivue.getOverlayIndexByID(someVolume.id) + */ + getOverlayIndexByID(id) { + const n = this.overlays.length; + for (let i = 0; i < n; i++) { + const id_i = this.overlays[i].id; + if (id_i === id) { + return i; + } + } + return -1; + } + /** + * set the index of a volume. This will change it's ordering and appearance if there are multiple volumes loaded. + * @param volume - the volume to update + * @param toIndex - the index to move the volume to. The default is the background (0 index) + * @example + * niivue = new Niivue() + * niivue.setVolume(someVolume, 1) // move it to the second position in the array of loaded volumes (0 is the first position) + */ + setVolume(volume, toIndex = 0) { + const numberOfLoadedImages = this.volumes.length; + if (toIndex > numberOfLoadedImages) { + return; + } + const volIndex = this.getVolumeIndexByID(volume.id); + if (toIndex === 0) { + this.volumes.splice(volIndex, 1); + this.volumes.unshift(volume); + this.back = this.volumes[0]; + this.overlays = this.volumes.slice(1); + } else if (toIndex < 0) { + this.volumes.splice(this.getVolumeIndexByID(volume.id), 1); + this.back = this.volumes[0]; + if (this.volumes.length > 1) { + this.overlays = this.volumes.slice(1); + } else { + this.overlays = []; + } + } else { + this.volumes.splice(volIndex, 1); + this.volumes.splice(toIndex, 0, volume); + this.overlays = this.volumes.slice(1); + this.back = this.volumes[0]; + } + this.updateGLVolume(); + } + /** + * Reorders a mesh within the internal mesh list. + * + * @param mesh - The `NVMesh` instance to reposition. + * @param toIndex - Target index to move the mesh to. + * - If `0`, moves mesh to the front. + * - If `< 0`, removes the mesh. + * - If within bounds, inserts mesh at the specified index. + */ + setMesh(mesh, toIndex = 0) { + this.meshes.forEach((m) => { + log.debug("MESH: ", m.name); + }); + const numberOfLoadedMeshes = this.meshes.length; + if (toIndex > numberOfLoadedMeshes) { + return; + } + const meshIndex = this.getMeshIndexByID(mesh.id); + if (toIndex === 0) { + this.meshes.splice(meshIndex, 1); + this.meshes.unshift(mesh); + } else if (toIndex < 0) { + this.meshes.splice(this.getMeshIndexByID(mesh.id), 1); + } else { + this.meshes.splice(meshIndex, 1); + this.meshes.splice(toIndex, 0, mesh); + } + this.updateGLVolume(); + this.meshes.forEach((m) => { + log.debug(m.name); + }); + } + /** + * Remove a volume + * @param volume - volume to delete + * @example + * niivue = new Niivue() + * niivue.removeVolume(this.volumes[3]) + * @see {@link https://niivue.com/demos/features/document.3d.html | live demo usage} + */ + removeVolume(volume) { + this.setVolume(volume, -1); + if (this.mediaUrlMap.has(volume)) { + const url = this.mediaUrlMap.get(volume); + this.onVolumeWithUrlRemoved(url); + this.mediaUrlMap.delete(volume); + } + this.drawScene(); + } + /** + * Remove a volume from the scene by its index + * @param index - index of the volume to remove + * @throws if the index is out of bounds + * @see {@link https://niivue.com/demos/features/clusterize.html | live demo usage} + */ + removeVolumeByIndex(index) { + if (index >= this.volumes.length) { + throw new Error("Index of volume out of bounds"); + } + this.removeVolume(this.volumes[index]); + } + /** + * Remove a triangulated mesh, connectome or tractogram + * @param mesh - mesh to delete + * @example + * niivue = new Niivue() + * niivue.removeMesh(this.meshes[3]) + * @see {@link https://niivue.com/demos/features/connectome.html | live demo usage} + */ + removeMesh(mesh) { + mesh.unloadMesh(this.gl); + this.setMesh(mesh, -1); + if (this.mediaUrlMap.has(mesh)) { + const url = this.mediaUrlMap.get(mesh); + this.onMeshWithUrlRemoved(url); + this.mediaUrlMap.delete(mesh); + } + } + /** + * Remove a triangulated mesh, connectome or tractogram + * @param url - URL of mesh to delete + * @example + * niivue.removeMeshByUrl('../images/cit168.mz3') + */ + removeMeshByUrl(url) { + const mesh = this.getMediaByUrl(url); + if (mesh) { + this.removeMesh(mesh); + this.mediaUrlMap.delete(mesh); + this.onMeshWithUrlRemoved(url); + } + } + /** + * Move a volume to the bottom of the stack of loaded volumes. The volume will become the background + * @param volume - the volume to move + * @example + * niivue = new Niivue() + * niivue.moveVolumeToBottom(this.volumes[3]) // move the 4th volume to the 0 position. It will be the new background + */ + moveVolumeToBottom(volume) { + this.setVolume(volume, 0); + } + /** + * Move a volume up one index position in the stack of loaded volumes. This moves it up one layer + * @param volume - the volume to move + * @example + * niivue = new Niivue() + * niivue.moveVolumeUp(this.volumes[0]) // move the background image to the second index position (it was 0 index, now will be 1) + */ + moveVolumeUp(volume) { + const volIdx = this.getVolumeIndexByID(volume.id); + this.setVolume(volume, volIdx + 1); + } + /** + * Move a volume down one index position in the stack of loaded volumes. This moves it down one layer + * @param volume - the volume to move + * @example + * niivue = new Niivue() + * niivue.moveVolumeDown(this.volumes[1]) // move the second image to the background position (it was 1 index, now will be 0) + */ + moveVolumeDown(volume) { + const volIdx = this.getVolumeIndexByID(volume.id); + this.setVolume(volume, volIdx - 1); + } + /** + * Move a volume to the top position in the stack of loaded volumes. This will be the top layer + * @param volume - the volume to move + * @example + * niivue = new Niivue() + * niivue.moveVolumeToTop(this.volumes[0]) // move the background image to the top layer position + */ + moveVolumeToTop(volume) { + this.setVolume(volume, this.volumes.length - 1); + } + /** + * Records the current mouse position in screen space (adjusted for device pixel ratio). + * @internal + */ + mouseDown(x, y) { + x *= this.uiData.dpr; + y *= this.uiData.dpr; + this.mousePos = [x, y]; + } + /** + * Updates mouse position + * @internal + */ + updateMousePos(x, y) { + x *= this.uiData.dpr; + y *= this.uiData.dpr; + this.mousePos = [x, y]; + return [x, y]; + } + /** + * and modifies 3D render view if the pointer is in the render tile. + * + * @internal + */ + mouseMove(x, y) { + x *= this.uiData.dpr; + y *= this.uiData.dpr; + const dx = (x - this.mousePos[0]) / this.uiData.dpr; + const dy = (y - this.mousePos[1]) / this.uiData.dpr; + this.mousePos = [x, y]; + if (this.inRenderTile(x, y) < 0) { + return; + } + if (Math.abs(dx) < 1 && Math.abs(dy) < 1) { + return; + } + this.scene.renderAzimuth += dx; + this.scene.renderElevation += dy; + this.drawScene(); + } + /** + * convert spherical AZIMUTH, ELEVATION to Cartesian + * @param azimuth - azimuth number + * @param elevation - elevation number + * @returns the converted [x, y, z] coordinates + * @example + * niivue = new Niivue() + * xyz = niivue.sph2cartDeg(42, 42) + * @internal + */ + sph2cartDeg(azimuth, elevation) { + const Phi = -elevation * (Math.PI / 180); + const Theta = (azimuth - 90) % 360 * (Math.PI / 180); + const ret = [Math.cos(Phi) * Math.cos(Theta), Math.cos(Phi) * Math.sin(Theta), Math.sin(Phi)]; + const len4 = Math.sqrt(ret[0] * ret[0] + ret[1] * ret[1] + ret[2] * ret[2]); + if (len4 <= 0) { + return ret; + } + ret[0] /= len4; + ret[1] /= len4; + ret[2] /= len4; + return ret; + } + /** + * Set multiple clip planes from their depth/azimuth/elevation definitions. + * + * depth: distance of clip plane from center of volume, range 0..~1.73 + * (e.g. 2.0 for no clip plane) + * azimuth: camera position in degrees around object, typically 0..360 + * (or -180..+180) + * elevation: camera height in degrees, range -90..90 + * + * This replaces the entire `clipPlanes` and `clipPlaneDepthAziElevs` arrays, + * ensuring they always have the same length. + * + * @param depthAziElevs - array of `[depth, azimuthDeg, elevationDeg]` values + * @see {@link https://niivue.com/demos/features/clipplanesmulti.html | live demo usage} + */ + setClipPlanes(depthAziElevs) { + this.scene.clipPlanes = []; + this.scene.clipPlaneDepthAziElevs = []; + for (let i = 0; i < depthAziElevs.length; i++) { + const dae = depthAziElevs[i]; + const n = this.sph2cartDeg(dae[1], dae[2]); + const d = -dae[0]; + const plane = [n[0], n[1], n[2], d]; + this.scene.clipPlanes.push(plane); + this.scene.clipPlaneDepthAziElevs.push(dae); + } + this.drawScene(); + } + /** + * Update the clip plane orientation in 3D view mode. + * @param depthAzimuthElevation - a 3-component array: + * - `depth`: distance of clip plane from center of volume (0 to ~1.73, or >2.0 to disable clipping) + * - `azimuth`: camera angle around the object in degrees (0–360 or -180–180) + * - `elevation`: camera height in degrees (-90 to 90) + * @example + * niivue = new Niivue() + * niivue.setClipPlane([42, 42]) + * @see {@link https://niivue.com/demos/features/mask.html | live demo usage} + */ + setClipPlane(depthAzimuthElevation) { + if (!depthAzimuthElevation || depthAzimuthElevation.length === 0) { + return; + } + const idx = this.uiData.activeClipPlaneIndex ?? 0; + if (!this.scene.clipPlanes) { + this.scene.clipPlanes = []; + } + if (!this.scene.clipPlaneDepthAziElevs) { + this.scene.clipPlaneDepthAziElevs = []; + } + while (this.scene.clipPlanes.length <= idx) { + this.scene.clipPlanes.push([0, 0, 0, 2]); + } + while (this.scene.clipPlaneDepthAziElevs.length <= idx) { + this.scene.clipPlaneDepthAziElevs.push([2, 0, 0]); + } + const v = this.sph2cartDeg(depthAzimuthElevation[1] + 180, depthAzimuthElevation[2]); + const plane = [v[0], v[1], v[2], depthAzimuthElevation[0]]; + this.scene.clipPlanes[idx] = plane; + this.scene.clipPlaneDepthAziElevs[idx] = depthAzimuthElevation; + this.onClipPlaneChange(plane); + this.drawScene(); + } + /** + * set the crosshair and colorbar outline color + * @param color - an RGBA array. values range from 0 to 1 + * @example + * niivue = new Niivue() + * niivue.setCrosshairColor([0, 1, 0, 0.5]) // set crosshair to transparent green + * @see {@link https://niivue.com/demos/features/colormaps.html | live demo usage} + */ + setCrosshairColor(color) { + this.opts.crosshairColor = color; + this.drawScene(); + } + /** + * set thickness of crosshair + * @example niivue.crosshairWidth(2) + * @see {@link https://niivue.com/demos/features/colormaps.html | live demo usage} + */ + setCrosshairWidth(crosshairWidth) { + this.opts.crosshairWidth = crosshairWidth; + if (this.crosshairs3D) { + this.crosshairs3D.mm[0] = NaN; + } + this.drawScene(); + } + /* + * set colors and labels for different drawing values + * @param {array} cmap a structure mapping indices to colors and labels + * @example + * let cmap = { + * R: [0, 255, 0], + * G: [0, 20, 0], + * B: [0, 20, 80], + * A: [0, 255, 255], + * labels: ["", "white-matter", "delete T1"], + * }; + * nv.setDrawColormap(cmap); + * @see {@link https://niivue.com/demos/features/draw.ui.html | live demo usage} + */ + setDrawColormap(name) { + this.drawLut = cmapper.makeDrawLut(name); + this.updateGLVolume(); + } + /** + * does dragging over a 2D slice create a drawing? + * @param trueOrFalse - enabled (true) or not (false) + * @example niivue.setDrawingEnabled(true) + * @see {@link https://niivue.com/demos/features/draw.ui.html | live demo usage} + */ + setDrawingEnabled(trueOrFalse) { + this.opts.drawingEnabled = trueOrFalse; + if (this.opts.drawingEnabled) { + if (!this.drawBitmap) { + this.createEmptyDrawing(); + } + } else { + if (this.clickToSegmentIsGrowing) { + this.clickToSegmentIsGrowing = false; + this.refreshDrawing(true, false); + } + this.drawPenLocation = [NaN, NaN, NaN]; + this.drawPenAxCorSag = -1; + this.drawPenFillPts = []; + this.drawShapeStartLocation = [NaN, NaN, NaN]; + if (this.drawShapePreviewBitmap) { + this.drawBitmap = this.drawShapePreviewBitmap; + this.drawShapePreviewBitmap = null; + } + } + this.drawScene(); + } + /** + * determine color and style of drawing + * @param penValue - sets the color of the pen + * @param isFilledPen - determines if dragging creates flood-filled shape + * @example niivue.setPenValue(1, true) + * @see {@link https://niivue.com/demos/features/draw.ui.html | live demo usage} + */ + setPenValue(penValue, isFilledPen = false) { + this.opts.penValue = penValue; + this.opts.isFilledPen = isFilledPen; + this.drawScene(); + } + /** + * control whether drawing is transparent (0), opaque (1) or translucent (between 0 and 1). + * @param opacity - translucency of drawing + * @example niivue.setDrawOpacity(0.7) + * @see {@link https://niivue.com/demos/features/draw.ui.html | live demo usage} + */ + setDrawOpacity(opacity) { + this.drawOpacity = opacity; + this.drawScene(); + } + /** + * set the selection box color. A selection box is drawn when you right click and drag to change image contrast + * @param color - an RGBA array. values range from 0 to 1 + * @example + * niivue = new Niivue() + * niivue.setSelectionBoxColor([0, 1, 0, 0.5]) // set to transparent green + * @see {@link https://niivue.com/demos/features/colormaps.html | live demo usage} + */ + setSelectionBoxColor(color) { + this.opts.selectionBoxColor = color; + } + /** + * Update the drawing bounds for this Niivue instance. + * + * @param bounds - [x1, y1, x2, y2] in normalized (0–1) coordinates. + * + * Example: + * nv.setBounds([0,0,0.5,0.5]) // top-left quarter + * nv.setBounds([0.5,0.5,1,1]) // bottom-right quarter + */ + setBounds(bounds) { + if (!Array.isArray(bounds) || bounds.length !== 4) { + throw new Error("setBounds: expected [x1,y1,x2,y2] array"); + } + this.opts.bounds = [ + [bounds[0], bounds[1]], + [bounds[2], bounds[3]] + ]; + if (this.gl) { + this.drawScene(); + } + } + /** + * Handles mouse wheel or trackpad scroll to change slices, zoom, or frame depending on context. + * @internal + */ + sliceScroll2D(posChange, x, y, isDelta = true) { + if (this.opts.scrollRequiresFocus && this.canvas !== document.activeElement) { + log.warn("Canvas element does not have focus. Scroll events will not be processed."); + return; + } + if (this.inGraphTile(x, y)) { + let vol = this.volumes[0].frame4D; + if (posChange > 0) { + vol++; + } + if (posChange < 0) { + vol--; + } + this.setFrame4D(this.volumes[0].id, vol); + return; + } + if (posChange !== 0 && this.opts.dragMode === 3 /* pan */ && this.inRenderTile(this.uiData.dpr * x, this.uiData.dpr * y) === -1) { + let zoom = this.scene.pan2Dxyzmm[3] * (1 + 10 * posChange); + zoom = Math.round(zoom * 10) / 10; + const zoomChange = this.scene.pan2Dxyzmm[3] - zoom; + if (this.opts.yoke3Dto2DZoom) { + this.scene.volScaleMultiplier = zoom; + } + this.scene.pan2Dxyzmm[3] = zoom; + const mm = this.frac2mm(this.scene.crosshairPos); + this.scene.pan2Dxyzmm[0] += zoomChange * mm[0]; + this.scene.pan2Dxyzmm[1] += zoomChange * mm[1]; + this.scene.pan2Dxyzmm[2] += zoomChange * mm[2]; + this.drawScene(); + this.canvas.focus(); + this.sync(); + return; + } + this.mouseClick(x, y, posChange, isDelta); + } + /** + * set the slice type. This changes the view mode + * @param st - sliceType is an enum of slice types to use + * @example + * niivue = new Niivue() + * niivue.setSliceType(Niivue.sliceTypeMultiplanar) + * @see {@link https://niivue.com/demos/features/basic.multiplanar.html | live demo usage} + */ + setSliceType(st) { + this.opts.sliceType = st; + this.drawScene(); + return this; + } + /** + * set the opacity of a volume given by volume index + * @param volIdx - the volume index of the volume to change + * @param newOpacity - the opacity value. valid values range from 0 to 1. 0 will effectively remove a volume from the scene + * @example + * niivue = new Niivue() + * niivue.setOpacity(0, 0.5) // make the first volume transparent + * @see {@link https://niivue.com/demos/features/atlas.html | live demo usage} + */ + setOpacity(volIdx, newOpacity) { + this.volumes[volIdx].opacity = newOpacity; + this.updateGLVolume(); + } + /** + * set the scale of the 3D rendering. Larger numbers effectively zoom. + * @param scale - the new scale value + * @example + * niivue.setScale(2) // zoom some + * @see {@link https://niivue.com/demos/features/shiny.volumes.html | live demo usage} + */ + setScale(scale6) { + this.scene.volScaleMultiplier = scale6; + this.drawScene(); + } + /** + * Set the color of the 3D clip plane. + * @param {number[]} color - An array of RGBA values. + * - **R**, **G**, **B** components range from `0.0` to `1.0`. + * - **A** (alpha) component ranges from `-1.0` to `1.0`, where: + * - `0.0–1.0` → controls background translucency. + * - `-1.0–0.0` → applies translucent shading to the volume instead of the background. + * + * @example + * niivue.setClipPlaneColor([1, 1, 1, 0.5]); // white, translucent background + * niivue.setClipPlaneColor([1, 1, 1, -0.5]); // white, translucent shading + * @see {@link https://niivue.com/demos/features/clipplanes.html | Live demo usage} + */ + setClipPlaneColor(color) { + this.opts.clipPlaneColor = color; + this.renderShader.use(this.gl); + this.gl.uniform4fv(this.renderShader.uniforms.clipPlaneColor, this.opts.clipPlaneColor); + this.drawScene(); + } + /** + * @deprecated This method has been removed. + * Use {@link setClipPlanes} instead, which generalizes clip plane configuration + * @see {@link https://niivue.com/demos/features/clipplanesmulti.html | Multiple clip plane demo} + */ + setClipPlaneThick(_thick) { + log.warn("setClipPlaneThick() has been removed. use setClipPlanes() instead."); + } + /** + * @deprecated This method has been removed. + * Use {@link setClipPlanes} instead, which generalizes clip plane configuration + * @see {@link https://niivue.com/demos/features/clipplanesmulti.html | Multiple clip plane demo} + */ + setClipVolume(_low, _high) { + log.warn("setClipVolume() has been removed. use setClipPlanes() instead."); + } + /** + * set proportion of volume rendering influenced by selected matcap. + * @param gradientAmount - amount of matcap (NaN or 0..1), default 0 (matte, surface normal does not influence color). NaN renders the gradients. + * @example + * niivue.setVolumeRenderIllumination(0.6); + * @see {@link https://niivue.com/demos/features/shiny.volumes.html | live demo usage} + * @see {@link https://niivue.com/demos/features/gradient.order.html | live demo usage} + */ + async setVolumeRenderIllumination(gradientAmount = 0) { + this.renderGradientValues = Number.isNaN(gradientAmount); + this.renderShader = this.renderVolumeShader; + if (this.renderGradientValues) { + this.renderShader = this.renderGradientValuesShader; + } else { + this.opts.gradientAmount = gradientAmount; + if (gradientAmount > 0 || this.opts.gradientOpacity > 0) { + this.renderShader = this.renderGradientShader; + } else if (gradientAmount < 0) { + this.renderShader = this.renderSliceShader; + } + } + await this.refreshLayers(this.volumes[0], 0); + this.initRenderShader(this.renderShader, gradientAmount); + this.renderShader.use(this.gl); + this.setClipPlaneColor(this.opts.clipPlaneColor); + if (Number.isNaN(gradientAmount)) { + this.gradientTextureAmount = 1; + } else { + this.gradientTextureAmount = gradientAmount; + } + if (this.volumes.length < 1) { + return; + } + this.drawScene(); + } + /** + * set volume rendering opacity influence of the gradient magnitude + * @param gradientOpacity - amount of gradient magnitude influence on opacity (0..1), default 0 (no-influence) + * @param renderSilhouette - make core transparent to enhance rims (0..1), default 0 (no-influence) + * @example + * niivue.setGradientOpacity(0.6); + * @see {@link https://niivue.com/demos/features/gradient.opacity.html | live demo usage} + */ + async setGradientOpacity(gradientOpacity = 0, renderSilhouette = 0) { + this.opts.gradientOpacity = gradientOpacity; + this.opts.renderSilhouette = renderSilhouette; + if (this.renderGradientValues) { + this.renderShader = this.renderGradientValuesShader; + } else if (this.gradientTextureAmount > 0 || gradientOpacity > 0) { + this.renderShader = this.renderGradientShader; + } else if (this.gradientTextureAmount < 0) { + this.renderShader = this.renderSliceShader; + } + this.initRenderShader(this.renderShader, this.gradientTextureAmount); + this.renderShader.use(this.gl); + if (this.gradientTextureAmount > 0) { + this.refreshLayers(this.volumes[0], 0); + } + this.drawScene(); + } + /** + * Generates a placeholder RGBA overlay of a green sphere for testing purposes only. + * @internal + * @remarks Marked for future removal — creates a test sphere, not intended for production use. + */ + overlayRGBA(volume) { + const hdr = volume.hdr; + const vox = hdr.dims[1] * hdr.dims[2] * hdr.dims[3]; + const imgRGBA = new Uint8ClampedArray(vox * 4); + const radius = 0.2 * Math.min(Math.min(hdr.dims[1], hdr.dims[2]), hdr.dims[3]); + const halfX = 0.5 * hdr.dims[1]; + const halfY = 0.5 * hdr.dims[2]; + const halfZ = 0.5 * hdr.dims[3]; + let j = 0; + for (let z = 0; z < hdr.dims[3]; z++) { + for (let y = 0; y < hdr.dims[2]; y++) { + for (let x = 0; x < hdr.dims[1]; x++) { + const dx = Math.abs(x - halfX); + const dy = Math.abs(y - halfY); + const dz = Math.abs(z - halfZ); + const dist4 = Math.sqrt(dx * dx + dy * dy + dz * dz); + let v = 0; + if (dist4 < radius) { + v = 255; + } + imgRGBA[j++] = 0; + imgRGBA[j++] = v; + imgRGBA[j++] = 0; + imgRGBA[j++] = v * 0.5; + } + } + } + return imgRGBA; + } + /** + * Convert voxel coordinates to millimeters using a transformation matrix. + * @internal + */ + vox2mm(XYZ, mtx) { + return NVUtilities.vox2mm(XYZ, mtx); + } + /** + * clone a volume and return a new volume + * @param index - the index of the volume to clone + * @returns new volume to work with, but that volume is not added to the canvas + * @example + * niivue = new Niivue() + * niivue.cloneVolume(0) + */ + cloneVolume(index) { + return this.volumes[index].clone(); + } + /** + * Loads an NVDocument from a URL and integrates it into the scene. + */ + async loadDocumentFromUrl(url) { + const document2 = await NVDocument.loadFromUrl(url); + await this.loadDocument(document2); + } + /** + * Loads an NVDocument + * @returns Niivue instance + * @see {@link https://niivue.com/demos/features/document.load.html | live demo usage} + */ + async loadDocument(document2) { + this.volumes = []; + this.meshes = []; + this.document = document2; + this.document.labels = this.document.labels ? this.document.labels : []; + const opts = { ...DEFAULT_OPTIONS, ...document2.opts }; + this.scene.pan2Dxyzmm = document2.scene.pan2Dxyzmm ? document2.scene.pan2Dxyzmm : [0, 0, 0, 1]; + this.document.opts = opts; + if (this.scene.clipPlaneDepthAziElevs) { + this.setClipPlane(this.scene.clipPlaneDepthAziElevs[this.uiData.activeClipPlaneIndex ?? 0]); + } + log.debug("load document", document2); + this.mediaUrlMap.clear(); + this.createEmptyDrawing(); + const encodedImageBlobs = document2.encodedImageBlobs; + for (let i = 0; i < document2.imageOptionsArray.length; i++) { + const imageOptions = document2.imageOptionsArray[i]; + const base64 = encodedImageBlobs[i]; + if (base64) { + if ("colorMap" in imageOptions) { + imageOptions.colormap = imageOptions.colorMap; + } + const image = await NVImage.loadFromBase64({ base64, ...imageOptions }); + if (image) { + if (image.colormapLabel) { + const length4 = Object.keys(image.colormapLabel.lut).length; + const uint8ClampedArray = new Uint8ClampedArray(length4); + for (const key in image.colormapLabel.lut) { + uint8ClampedArray[key] = image.colormapLabel.lut[key]; + } + image.colormapLabel.lut = uint8ClampedArray; + } + this.addVolume(image); + } + } + } + if (this.volumes.length > 0) { + this.back = this.volumes[0]; + } + for (const meshDataObject of document2.meshDataObjects ?? []) { + const meshInit = { gl: this.gl, ...meshDataObject }; + if (meshDataObject.offsetPt0) { + meshInit.rgba255[3] = 0; + meshInit.tris = new Uint32Array(meshDataObject.offsetPt0); + } + log.debug(meshInit); + const meshToAdd = new NVMesh3( + meshInit.pts, + meshInit.tris, + meshInit.name, + meshInit.rgba255, + meshInit.opacity, + meshInit.visible, + this.gl, + meshInit.connectome, + meshInit.dpg, + meshInit.dps, + meshInit.dpv + ); + if (meshDataObject.offsetPt0) { + meshToAdd.fiberGroupColormap = meshDataObject.fiberGroupColormap; + meshToAdd.fiberColor = meshDataObject.fiberColor; + meshToAdd.fiberDither = meshDataObject.fiberDither; + meshToAdd.fiberRadius = meshDataObject.fiberRadius; + meshToAdd.colormap = meshDataObject.colormap; + } + meshToAdd.meshShaderIndex = meshInit.meshShaderIndex; + meshToAdd.layers = meshInit.layers; + meshToAdd.updateMesh(this.gl); + log.debug(meshToAdd); + this.addMesh(meshToAdd); + } + if (document2.data.connectomes) { + for (const connectomeString of document2.data.connectomes) { + const connectome = JSON.parse(connectomeString); + const meshToAdd = this.loadConnectomeAsMesh(connectome); + meshToAdd.updateMesh(this.gl); + this.addMesh(meshToAdd); + } + } + this.createEmptyDrawing(); + const drawingBase64 = document2.encodedDrawingBlob; + if (drawingBase64) { + const drawingBitmap = await NVUtilities.b64toUint8(drawingBase64); + if (drawingBitmap) { + const dims = this.back.dims; + let expectedBytes = dims[1] * dims[2] * dims[3]; + if (drawingBitmap.length - 352 === expectedBytes) { + expectedBytes += 352; + } + if (drawingBitmap.length !== expectedBytes) { + throw new Error( + `drawBitmap size does not match the texture dimensions (${dims[1]}\xD7${dims[2]}\xD7${dims[3]}) ${expectedBytes} != ${dims[1] * dims[2] * dims[3]}.` + ); + } + this.drawBitmap = drawingBitmap; + this.refreshDrawing(); + } + } + await this.setGradientOpacity(this.opts.gradientOpacity); + await this.setVolumeRenderIllumination(this.opts.gradientAmount); + this.updateGLVolume(); + this.drawScene(); + this.onDocumentLoaded(document2); + return this; + } + /** + * generates JavaScript to load the current scene as a document + * @param canvasId - id of canvas NiiVue will be attached to + * @param esm - bundled version of NiiVue + * @example + * const javascript = this.generateLoadDocumentJavaScript("gl1"); + * const html = `