Skip to content

Instantly share code, notes, and snippets.

@mattrossman
Last active July 6, 2022 19:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mattrossman/c942cd8db12714f35c2318c3191a12c3 to your computer and use it in GitHub Desktop.
Save mattrossman/c942cd8db12714f35c2318c3191a12c3 to your computer and use it in GitHub Desktop.
MediaPipe Face Mesh web worker patch
/**
* Original file: https://cdn.jsdelivr.net/npm/@mediapipe/face_mesh@0.4.1633559619/face_mesh.js
*/
(function() {
/*
Copyright The Closure Library Authors.
SPDX-License-Identifier: Apache-2.0
*/
'use strict';
// PATCH: document in WorkerGlobalScope
var document = {}
var v;
function aa(a) {
var b = 0;
return function() {
return b < a.length ? {
done: !1,
value: a[b++]
} : {
done: !0
}
}
}
var ba = "function" == typeof Object.defineProperties ? Object.defineProperty : function(a, b, c) {
if (a == Array.prototype || a == Object.prototype)
return a;
a[b] = c.value;
return a
}
;
function ca(a) {
a = ["object" == typeof globalThis && globalThis, a, "object" == typeof window && window, "object" == typeof self && self, "object" == typeof global && global];
for (var b = 0; b < a.length; ++b) {
var c = a[b];
if (c && c.Math == Math)
return c
}
throw Error("Cannot find global object");
}
var G = ca(this);
function J(a, b) {
if (b)
a: {
var c = G;
a = a.split(".");
for (var d = 0; d < a.length - 1; d++) {
var e = a[d];
if (!(e in c))
break a;
c = c[e]
}
a = a[a.length - 1];
d = c[a];
b = b(d);
b != d && null != b && ba(c, a, {
configurable: !0,
writable: !0,
value: b
})
}
}
J("Symbol", function(a) {
function b(g) {
if (this instanceof b)
throw new TypeError("Symbol is not a constructor");
return new c(d + (g || "") + "_" + e++,g)
}
function c(g, f) {
this.g = g;
ba(this, "description", {
configurable: !0,
writable: !0,
value: f
})
}
if (a)
return a;
c.prototype.toString = function() {
return this.g
}
;
var d = "jscomp_symbol_" + (1E9 * Math.random() >>> 0) + "_"
, e = 0;
return b
});
J("Symbol.iterator", function(a) {
if (a)
return a;
a = Symbol("Symbol.iterator");
for (var b = "Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array".split(" "), c = 0; c < b.length; c++) {
var d = G[b[c]];
"function" === typeof d && "function" != typeof d.prototype[a] && ba(d.prototype, a, {
configurable: !0,
writable: !0,
value: function() {
return da(aa(this))
}
})
}
return a
});
function da(a) {
a = {
next: a
};
a[Symbol.iterator] = function() {
return this
}
;
return a
}
function K(a) {
var b = "undefined" != typeof Symbol && Symbol.iterator && a[Symbol.iterator];
return b ? b.call(a) : {
next: aa(a)
}
}
function L(a) {
if (!(a instanceof Array)) {
a = K(a);
for (var b, c = []; !(b = a.next()).done; )
c.push(b.value);
a = c
}
return a
}
var ea = "function" == typeof Object.create ? Object.create : function(a) {
function b() {}
b.prototype = a;
return new b
}
, fa;
if ("function" == typeof Object.setPrototypeOf)
fa = Object.setPrototypeOf;
else {
var ha;
a: {
var ia = {
a: !0
}
, ja = {};
try {
ja.__proto__ = ia;
ha = ja.a;
break a
} catch (a) {}
ha = !1
}
fa = ha ? function(a, b) {
a.__proto__ = b;
if (a.__proto__ !== b)
throw new TypeError(a + " is not extensible");
return a
}
: null
}
var ka = fa;
function M(a, b) {
a.prototype = ea(b.prototype);
a.prototype.constructor = a;
if (ka)
ka(a, b);
else
for (var c in b)
if ("prototype" != c)
if (Object.defineProperties) {
var d = Object.getOwnPropertyDescriptor(b, c);
d && Object.defineProperty(a, c, d)
} else
a[c] = b[c];
a.ea = b.prototype
}
function ma() {
this.l = !1;
this.i = null;
this.h = void 0;
this.g = 1;
this.s = this.m = 0;
this.j = null
}
function na(a) {
if (a.l)
throw new TypeError("Generator is already running");
a.l = !0
}
ma.prototype.o = function(a) {
this.h = a
}
;
function oa(a, b) {
a.j = {
U: b,
V: !0
};
a.g = a.m || a.s
}
ma.prototype.return = function(a) {
this.j = {
return: a
};
this.g = this.s
}
;
function N(a, b, c) {
a.g = c;
return {
value: b
}
}
function pa(a) {
this.g = new ma;
this.h = a
}
function qa(a, b) {
na(a.g);
var c = a.g.i;
if (c)
return ra(a, "return"in c ? c["return"] : function(d) {
return {
value: d,
done: !0
}
}
, b, a.g.return);
a.g.return(b);
return sa(a)
}
function ra(a, b, c, d) {
try {
var e = b.call(a.g.i, c);
if (!(e instanceof Object))
throw new TypeError("Iterator result " + e + " is not an object");
if (!e.done)
return a.g.l = !1,
e;
var g = e.value
} catch (f) {
return a.g.i = null,
oa(a.g, f),
sa(a)
}
a.g.i = null;
d.call(a.g, g);
return sa(a)
}
function sa(a) {
for (; a.g.g; )
try {
var b = a.h(a.g);
if (b)
return a.g.l = !1,
{
value: b.value,
done: !1
}
} catch (c) {
a.g.h = void 0,
oa(a.g, c)
}
a.g.l = !1;
if (a.g.j) {
b = a.g.j;
a.g.j = null;
if (b.V)
throw b.U;
return {
value: b.return,
done: !0
}
}
return {
value: void 0,
done: !0
}
}
function ta(a) {
this.next = function(b) {
na(a.g);
a.g.i ? b = ra(a, a.g.i.next, b, a.g.o) : (a.g.o(b),
b = sa(a));
return b
}
;
this.throw = function(b) {
na(a.g);
a.g.i ? b = ra(a, a.g.i["throw"], b, a.g.o) : (oa(a.g, b),
b = sa(a));
return b
}
;
this.return = function(b) {
return qa(a, b)
}
;
this[Symbol.iterator] = function() {
return this
}
}
function O(a, b) {
b = new ta(new pa(b));
ka && a.prototype && ka(b, a.prototype);
return b
}
function ua(a, b) {
a instanceof String && (a += "");
var c = 0
, d = !1
, e = {
next: function() {
if (!d && c < a.length) {
var g = c++;
return {
value: b(g, a[g]),
done: !1
}
}
d = !0;
return {
done: !0,
value: void 0
}
}
};
e[Symbol.iterator] = function() {
return e
}
;
return e
}
var va = "function" == typeof Object.assign ? Object.assign : function(a, b) {
for (var c = 1; c < arguments.length; c++) {
var d = arguments[c];
if (d)
for (var e in d)
Object.prototype.hasOwnProperty.call(d, e) && (a[e] = d[e])
}
return a
}
;
J("Object.assign", function(a) {
return a || va
});
J("Promise", function(a) {
function b(f) {
this.h = 0;
this.i = void 0;
this.g = [];
this.o = !1;
var h = this.j();
try {
f(h.resolve, h.reject)
} catch (k) {
h.reject(k)
}
}
function c() {
this.g = null
}
function d(f) {
return f instanceof b ? f : new b(function(h) {
h(f)
}
)
}
if (a)
return a;
c.prototype.h = function(f) {
if (null == this.g) {
this.g = [];
var h = this;
this.i(function() {
h.l()
})
}
this.g.push(f)
}
;
var e = G.setTimeout;
c.prototype.i = function(f) {
e(f, 0)
}
;
c.prototype.l = function() {
for (; this.g && this.g.length; ) {
var f = this.g;
this.g = [];
for (var h = 0; h < f.length; ++h) {
var k = f[h];
f[h] = null;
try {
k()
} catch (l) {
this.j(l)
}
}
}
this.g = null
}
;
c.prototype.j = function(f) {
this.i(function() {
throw f;
})
}
;
b.prototype.j = function() {
function f(l) {
return function(n) {
k || (k = !0,
l.call(h, n))
}
}
var h = this
, k = !1;
return {
resolve: f(this.C),
reject: f(this.l)
}
}
;
b.prototype.C = function(f) {
if (f === this)
this.l(new TypeError("A Promise cannot resolve to itself"));
else if (f instanceof b)
this.F(f);
else {
a: switch (typeof f) {
case "object":
var h = null != f;
break a;
case "function":
h = !0;
break a;
default:
h = !1
}
h ? this.u(f) : this.m(f)
}
}
;
b.prototype.u = function(f) {
var h = void 0;
try {
h = f.then
} catch (k) {
this.l(k);
return
}
"function" == typeof h ? this.G(h, f) : this.m(f)
}
;
b.prototype.l = function(f) {
this.s(2, f)
}
;
b.prototype.m = function(f) {
this.s(1, f)
}
;
b.prototype.s = function(f, h) {
if (0 != this.h)
throw Error("Cannot settle(" + f + ", " + h + "): Promise already settled in state" + this.h);
this.h = f;
this.i = h;
2 === this.h && this.D();
this.A()
}
;
b.prototype.D = function() {
var f = this;
e(function() {
if (f.B()) {
var h = G.console;
"undefined" !== typeof h && h.error(f.i)
}
}, 1)
}
;
b.prototype.B = function() {
if (this.o)
return !1;
var f = G.CustomEvent
, h = G.Event
, k = G.dispatchEvent;
if ("undefined" === typeof k)
return !0;
"function" === typeof f ? f = new f("unhandledrejection",{
cancelable: !0
}) : "function" === typeof h ? f = new h("unhandledrejection",{
cancelable: !0
}) : (f = G.document.createEvent("CustomEvent"),
f.initCustomEvent("unhandledrejection", !1, !0, f));
f.promise = this;
f.reason = this.i;
return k(f)
}
;
b.prototype.A = function() {
if (null != this.g) {
for (var f = 0; f < this.g.length; ++f)
g.h(this.g[f]);
this.g = null
}
}
;
var g = new c;
b.prototype.F = function(f) {
var h = this.j();
f.J(h.resolve, h.reject)
}
;
b.prototype.G = function(f, h) {
var k = this.j();
try {
f.call(h, k.resolve, k.reject)
} catch (l) {
k.reject(l)
}
}
;
b.prototype.then = function(f, h) {
function k(w, r) {
return "function" == typeof w ? function(y) {
try {
l(w(y))
} catch (m) {
n(m)
}
}
: r
}
var l, n, u = new b(function(w, r) {
l = w;
n = r
}
);
this.J(k(f, l), k(h, n));
return u
}
;
b.prototype.catch = function(f) {
return this.then(void 0, f)
}
;
b.prototype.J = function(f, h) {
function k() {
switch (l.h) {
case 1:
f(l.i);
break;
case 2:
h(l.i);
break;
default:
throw Error("Unexpected state: " + l.h);
}
}
var l = this;
null == this.g ? g.h(k) : this.g.push(k);
this.o = !0
}
;
b.resolve = d;
b.reject = function(f) {
return new b(function(h, k) {
k(f)
}
)
}
;
b.race = function(f) {
return new b(function(h, k) {
for (var l = K(f), n = l.next(); !n.done; n = l.next())
d(n.value).J(h, k)
}
)
}
;
b.all = function(f) {
var h = K(f)
, k = h.next();
return k.done ? d([]) : new b(function(l, n) {
function u(y) {
return function(m) {
w[y] = m;
r--;
0 == r && l(w)
}
}
var w = []
, r = 0;
do
w.push(void 0),
r++,
d(k.value).J(u(w.length - 1), n),
k = h.next();
while (!k.done)
}
)
}
;
return b
});
J("Object.is", function(a) {
return a ? a : function(b, c) {
return b === c ? 0 !== b || 1 / b === 1 / c : b !== b && c !== c
}
});
J("Array.prototype.includes", function(a) {
return a ? a : function(b, c) {
var d = this;
d instanceof String && (d = String(d));
var e = d.length;
c = c || 0;
for (0 > c && (c = Math.max(c + e, 0)); c < e; c++) {
var g = d[c];
if (g === b || Object.is(g, b))
return !0
}
return !1
}
});
J("String.prototype.includes", function(a) {
return a ? a : function(b, c) {
if (null == this)
throw new TypeError("The 'this' value for String.prototype.includes must not be null or undefined");
if (b instanceof RegExp)
throw new TypeError("First argument to String.prototype.includes must not be a regular expression");
return -1 !== this.indexOf(b, c || 0)
}
});
J("Array.prototype.keys", function(a) {
return a ? a : function() {
return ua(this, function(b) {
return b
})
}
});
var wa = this || self;
function P(a, b) {
a = a.split(".");
var c = wa;
a[0]in c || "undefined" == typeof c.execScript || c.execScript("var " + a[0]);
for (var d; a.length && (d = a.shift()); )
a.length || void 0 === b ? c[d] && c[d] !== Object.prototype[d] ? c = c[d] : c = c[d] = {} : c[d] = b
}
;function xa(a, b) {
b = String.fromCharCode.apply(null, b);
return null == a ? b : a + b
}
var ya, za = "undefined" !== typeof TextDecoder, Aa, Ba = "undefined" !== typeof TextEncoder;
function Ca(a) {
if (Ba)
a = (Aa || (Aa = new TextEncoder)).encode(a);
else {
var b = void 0;
b = void 0 === b ? !1 : b;
for (var c = 0, d = new Uint8Array(3 * a.length), e = 0; e < a.length; e++) {
var g = a.charCodeAt(e);
if (128 > g)
d[c++] = g;
else {
if (2048 > g)
d[c++] = g >> 6 | 192;
else {
if (55296 <= g && 57343 >= g) {
if (56319 >= g && e < a.length) {
var f = a.charCodeAt(++e);
if (56320 <= f && 57343 >= f) {
g = 1024 * (g - 55296) + f - 56320 + 65536;
d[c++] = g >> 18 | 240;
d[c++] = g >> 12 & 63 | 128;
d[c++] = g >> 6 & 63 | 128;
d[c++] = g & 63 | 128;
continue
} else
e--
}
if (b)
throw Error("Found an unpaired surrogate");
g = 65533
}
d[c++] = g >> 12 | 224;
d[c++] = g >> 6 & 63 | 128
}
d[c++] = g & 63 | 128
}
}
a = d.subarray(0, c)
}
return a
}
;var Da = {}
, Ea = null;
function Fa(a, b) {
void 0 === b && (b = 0);
Ga();
b = Da[b];
for (var c = Array(Math.floor(a.length / 3)), d = b[64] || "", e = 0, g = 0; e < a.length - 2; e += 3) {
var f = a[e]
, h = a[e + 1]
, k = a[e + 2]
, l = b[f >> 2];
f = b[(f & 3) << 4 | h >> 4];
h = b[(h & 15) << 2 | k >> 6];
k = b[k & 63];
c[g++] = l + f + h + k
}
l = 0;
k = d;
switch (a.length - e) {
case 2:
l = a[e + 1],
k = b[(l & 15) << 2] || d;
case 1:
a = a[e],
c[g] = b[a >> 2] + b[(a & 3) << 4 | l >> 4] + k + d
}
return c.join("")
}
function Ha(a) {
var b = a.length
, c = 3 * b / 4;
c % 3 ? c = Math.floor(c) : -1 != "=.".indexOf(a[b - 1]) && (c = -1 != "=.".indexOf(a[b - 2]) ? c - 2 : c - 1);
var d = new Uint8Array(c)
, e = 0;
Ia(a, function(g) {
d[e++] = g
});
return d.subarray(0, e)
}
function Ia(a, b) {
function c(k) {
for (; d < a.length; ) {
var l = a.charAt(d++)
, n = Ea[l];
if (null != n)
return n;
if (!/^[\s\xa0]*$/.test(l))
throw Error("Unknown base64 encoding at char: " + l);
}
return k
}
Ga();
for (var d = 0; ; ) {
var e = c(-1)
, g = c(0)
, f = c(64)
, h = c(64);
if (64 === h && -1 === e)
break;
b(e << 2 | g >> 4);
64 != f && (b(g << 4 & 240 | f >> 2),
64 != h && b(f << 6 & 192 | h))
}
}
function Ga() {
if (!Ea) {
Ea = {};
for (var a = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""), b = ["+/=", "+/", "-_=", "-_.", "-_"], c = 0; 5 > c; c++) {
var d = a.concat(b[c].split(""));
Da[c] = d;
for (var e = 0; e < d.length; e++) {
var g = d[e];
void 0 === Ea[g] && (Ea[g] = e)
}
}
}
}
;var Ja = "function" === typeof Uint8Array.prototype.slice, Ka;
function La(a, b, c) {
return b === c ? Ka || (Ka = new Uint8Array(0)) : Ja ? a.slice(b, c) : new Uint8Array(a.subarray(b, c))
}
var Q = 0
, R = 0;
function Ma(a, b) {
b = void 0 === b ? {} : b;
b = void 0 === b.v ? !1 : b.v;
this.h = null;
this.g = this.j = this.l = 0;
this.m = !1;
this.v = b;
a && Na(this, a)
}
function Na(a, b) {
b = b.constructor === Uint8Array ? b : b.constructor === ArrayBuffer ? new Uint8Array(b) : b.constructor === Array ? new Uint8Array(b) : b.constructor === String ? Ha(b) : b instanceof Uint8Array ? new Uint8Array(b.buffer,b.byteOffset,b.byteLength) : new Uint8Array(0);
a.h = b;
a.l = 0;
a.j = a.h.length;
a.g = a.l
}
Ma.prototype.reset = function() {
this.g = this.l
}
;
function Oa(a) {
for (var b = 128, c = 0, d = 0, e = 0; 4 > e && 128 <= b; e++)
b = a.h[a.g++],
c |= (b & 127) << 7 * e;
128 <= b && (b = a.h[a.g++],
c |= (b & 127) << 28,
d |= (b & 127) >> 4);
if (128 <= b)
for (e = 0; 5 > e && 128 <= b; e++)
b = a.h[a.g++],
d |= (b & 127) << 7 * e + 3;
if (128 > b) {
a = c >>> 0;
b = d >>> 0;
if (d = b & 2147483648)
a = ~a + 1 >>> 0,
b = ~b >>> 0,
0 == a && (b = b + 1 >>> 0);
a = 4294967296 * b + (a >>> 0);
return d ? -a : a
}
a.m = !0
}
Ma.prototype.i = function() {
var a = this.h
, b = a[this.g]
, c = b & 127;
if (128 > b)
return this.g += 1,
c;
b = a[this.g + 1];
c |= (b & 127) << 7;
if (128 > b)
return this.g += 2,
c;
b = a[this.g + 2];
c |= (b & 127) << 14;
if (128 > b)
return this.g += 3,
c;
b = a[this.g + 3];
c |= (b & 127) << 21;
if (128 > b)
return this.g += 4,
c;
b = a[this.g + 4];
c |= (b & 15) << 28;
if (128 > b)
return this.g += 5,
c >>> 0;
this.g += 5;
128 <= a[this.g++] && 128 <= a[this.g++] && 128 <= a[this.g++] && 128 <= a[this.g++] && this.g++;
return c
}
;
Ma.prototype.o = function() {
var a = this.h[this.g]
, b = this.h[this.g + 1];
var c = this.h[this.g + 2];
var d = this.h[this.g + 3];
this.g += 4;
c = (a << 0 | b << 8 | c << 16 | d << 24) >>> 0;
a = 2 * (c >> 31) + 1;
b = c >>> 23 & 255;
c &= 8388607;
return 255 == b ? c ? NaN : Infinity * a : 0 == b ? a * Math.pow(2, -149) * c : a * Math.pow(2, b - 150) * (c + Math.pow(2, 23))
}
;
var Pa = [];
function Qa() {
this.g = new Uint8Array(64);
this.h = 0
}
Qa.prototype.push = function(a) {
if (!(this.h + 1 < this.g.length)) {
var b = this.g;
this.g = new Uint8Array(Math.ceil(1 + 2 * this.g.length));
this.g.set(b)
}
this.g[this.h++] = a
}
;
Qa.prototype.length = function() {
return this.h
}
;
Qa.prototype.end = function() {
var a = this.g
, b = this.h;
this.h = 0;
return La(a, 0, b)
}
;
function Ra(a, b) {
for (; 127 < b; )
a.push(b & 127 | 128),
b >>>= 7;
a.push(b)
}
;function Sa(a) {
var b = {}
, c = void 0 === b.N ? !1 : b.N;
this.o = {
v: void 0 === b.v ? !1 : b.v
};
this.N = c;
b = this.o;
Pa.length ? (c = Pa.pop(),
b && (c.v = b.v),
a && Na(c, a),
a = c) : a = new Ma(a,b);
this.g = a;
this.m = this.g.g;
this.h = this.i = this.l = -1;
this.j = !1
}
Sa.prototype.reset = function() {
this.g.reset();
this.h = this.l = -1
}
;
function S(a) {
var b = a.g;
(b = b.g == b.j) || (b = a.j) || (b = a.g,
b = b.m || 0 > b.g || b.g > b.j);
if (b)
return !1;
a.m = a.g.g;
b = a.g.i();
var c = b & 7;
if (0 != c && 5 != c && 1 != c && 2 != c && 3 != c && 4 != c)
return a.j = !0,
!1;
a.i = b;
a.l = b >>> 3;
a.h = c;
return !0
}
function Ta(a) {
switch (a.h) {
case 0:
if (0 != a.h)
Ta(a);
else {
for (a = a.g; a.h[a.g] & 128; )
a.g++;
a.g++
}
break;
case 1:
1 != a.h ? Ta(a) : (a = a.g,
a.g += 8);
break;
case 2:
if (2 != a.h)
Ta(a);
else {
var b = a.g.i();
a = a.g;
a.g += b
}
break;
case 5:
5 != a.h ? Ta(a) : (a = a.g,
a.g += 4);
break;
case 3:
b = a.l;
do {
if (!S(a)) {
a.j = !0;
break
}
if (4 == a.h) {
a.l != b && (a.j = !0);
break
}
Ta(a)
} while (1);
break;
default:
a.j = !0
}
}
function Ua(a, b, c) {
var d = a.g.j
, e = a.g.i()
, g = a.g.g + e;
a.g.j = g;
c(b, a);
c = g - a.g.g;
if (0 !== c)
throw Error("Message parsing ended unexpectedly. Expected to read " + e + " bytes, instead read " + (e - c) + " bytes, either the data ended unexpectedly or the message misreported its own length");
a.g.g = g;
a.g.j = d;
return b
}
function T(a) {
return a.g.o()
}
function Va(a) {
var b = a.g.i();
a = a.g;
var c = a.g;
a.g += b;
a = a.h;
var d;
if (za)
(d = ya) || (d = ya = new TextDecoder("utf-8",{
fatal: !1
})),
d = d.decode(a.subarray(c, c + b));
else {
b = c + b;
for (var e = [], g = null, f, h, k; c < b; )
f = a[c++],
128 > f ? e.push(f) : 224 > f ? c >= b ? e.push(65533) : (h = a[c++],
194 > f || 128 !== (h & 192) ? (c--,
e.push(65533)) : e.push((f & 31) << 6 | h & 63)) : 240 > f ? c >= b - 1 ? e.push(65533) : (h = a[c++],
128 !== (h & 192) || 224 === f && 160 > h || 237 === f && 160 <= h || 128 !== ((d = a[c++]) & 192) ? (c--,
e.push(65533)) : e.push((f & 15) << 12 | (h & 63) << 6 | d & 63)) : 244 >= f ? c >= b - 2 ? e.push(65533) : (h = a[c++],
128 !== (h & 192) || 0 !== (f << 28) + (h - 144) >> 30 || 128 !== ((d = a[c++]) & 192) || 128 !== ((k = a[c++]) & 192) ? (c--,
e.push(65533)) : (f = (f & 7) << 18 | (h & 63) << 12 | (d & 63) << 6 | k & 63,
f -= 65536,
e.push((f >> 10 & 1023) + 55296, (f & 1023) + 56320))) : e.push(65533),
8192 <= e.length && (g = xa(g, e),
e.length = 0);
d = xa(g, e)
}
return d
}
function Wa(a, b, c) {
var d = a.g.i();
for (d = a.g.g + d; a.g.g < d; )
c.push(b.call(a.g))
}
function Xa(a, b) {
2 == a.h ? Wa(a, Ma.prototype.o, b) : b.push(T(a))
}
;function Ya() {
this.h = [];
this.i = 0;
this.g = new Qa
}
function Za(a, b) {
0 !== b.length && (a.h.push(b),
a.i += b.length)
}
function $a(a) {
var b = a.i + a.g.length();
if (0 === b)
return new Uint8Array(0);
b = new Uint8Array(b);
for (var c = a.h, d = c.length, e = 0, g = 0; g < d; g++) {
var f = c[g];
0 !== f.length && (b.set(f, e),
e += f.length)
}
c = a.g;
d = c.h;
0 !== d && (b.set(c.g.subarray(0, d), e),
c.h = 0);
a.h = [b];
return b
}
function U(a, b, c) {
if (null != c) {
Ra(a.g, 8 * b + 5);
a = a.g;
var d = c;
d = (c = 0 > d ? 1 : 0) ? -d : d;
0 === d ? 0 < 1 / d ? Q = R = 0 : (R = 0,
Q = 2147483648) : isNaN(d) ? (R = 0,
Q = 2147483647) : 3.4028234663852886E38 < d ? (R = 0,
Q = (c << 31 | 2139095040) >>> 0) : 1.1754943508222875E-38 > d ? (d = Math.round(d / Math.pow(2, -149)),
R = 0,
Q = (c << 31 | d) >>> 0) : (b = Math.floor(Math.log(d) / Math.LN2),
d *= Math.pow(2, -b),
d = Math.round(8388608 * d),
16777216 <= d && ++b,
R = 0,
Q = (c << 31 | b + 127 << 23 | d & 8388607) >>> 0);
c = Q;
a.push(c >>> 0 & 255);
a.push(c >>> 8 & 255);
a.push(c >>> 16 & 255);
a.push(c >>> 24 & 255)
}
}
;var ab = "function" === typeof Uint8Array;
function bb(a, b, c) {
if (null != a)
return "object" === typeof a ? ab && a instanceof Uint8Array ? c(a) : cb(a, b, c) : b(a)
}
function cb(a, b, c) {
if (Array.isArray(a)) {
for (var d = Array(a.length), e = 0; e < a.length; e++)
d[e] = bb(a[e], b, c);
Array.isArray(a) && a.W && db(d);
return d
}
d = {};
for (e in a)
d[e] = bb(a[e], b, c);
return d
}
function eb(a) {
return "number" === typeof a ? isFinite(a) ? a : String(a) : a
}
var fb = {
W: {
value: !0,
configurable: !0
}
};
function db(a) {
Array.isArray(a) && !Object.isFrozen(a) && Object.defineProperties(a, fb);
return a
}
;var gb;
function V(a, b, c) {
var d = gb;
gb = null;
a || (a = d);
d = this.constructor.ca;
a || (a = d ? [d] : []);
this.j = d ? 0 : -1;
this.m = this.g = null;
this.h = a;
a: {
d = this.h.length;
a = d - 1;
if (d && (d = this.h[a],
!(null === d || "object" != typeof d || Array.isArray(d) || ab && d instanceof Uint8Array))) {
this.l = a - this.j;
this.i = d;
break a
}
void 0 !== b && -1 < b ? (this.l = Math.max(b, a + 1 - this.j),
this.i = null) : this.l = Number.MAX_VALUE
}
if (c)
for (b = 0; b < c.length; b++)
a = c[b],
a < this.l ? (a += this.j,
(d = this.h[a]) ? db(d) : this.h[a] = hb) : (ib(this),
(d = this.i[a]) ? db(d) : this.i[a] = hb)
}
var hb = Object.freeze(db([]));
function ib(a) {
var b = a.l + a.j;
a.h[b] || (a.i = a.h[b] = {})
}
function W(a, b, c) {
return -1 === b ? null : (void 0 === c ? 0 : c) || b >= a.l ? a.i ? a.i[b] : void 0 : a.h[b + a.j]
}
function jb(a, b) {
var c = void 0 === c ? !1 : c;
var d = W(a, b, c);
null == d && (d = hb);
d === hb && (d = db([]),
X(a, b, d, c));
return d
}
function kb(a) {
var b = jb(a, 3);
a.m || (a.m = {});
if (!a.m[3]) {
for (var c = 0; c < b.length; c++)
b[c] = +b[c];
a.m[3] = !0
}
return b
}
function lb(a, b, c) {
a = W(a, b);
return null == a ? c : a
}
function Y(a, b, c) {
a = W(a, b);
a = null == a ? a : +a;
return null == a ? void 0 === c ? 0 : c : a
}
function X(a, b, c, d) {
(void 0 === d ? 0 : d) || b >= a.l ? (ib(a),
a.i[b] = c) : a.h[b + a.j] = c
}
function mb(a, b, c) {
if (-1 === c)
return null;
a.g || (a.g = {});
if (!a.g[c]) {
var d = W(a, c, !1);
d && (a.g[c] = new b(d))
}
return a.g[c]
}
function nb(a, b) {
a.g || (a.g = {});
var c = a.g[1];
if (!c) {
var d = jb(a, 1);
c = [];
for (var e = 0; e < d.length; e++)
c[e] = new b(d[e]);
a.g[1] = c
}
return c
}
function ob(a, b, c) {
var d = void 0 === d ? !1 : d;
a.g || (a.g = {});
var e = c ? pb(c, !1) : c;
a.g[b] = c;
X(a, b, e, d)
}
function qb(a, b, c, d) {
var e = nb(a, c);
b = b ? b : new c;
a = jb(a, 1);
void 0 != d ? (e.splice(d, 0, b),
a.splice(d, 0, pb(b, !1))) : (e.push(b),
a.push(pb(b, !1)))
}
V.prototype.toJSON = function() {
var a = pb(this, !1);
return cb(a, eb, Fa)
}
;
function pb(a, b) {
if (a.g)
for (var c in a.g) {
var d = a.g[c];
if (Array.isArray(d))
for (var e = 0; e < d.length; e++)
d[e] && pb(d[e], b);
else
d && pb(d, b)
}
return a.h
}
V.prototype.toString = function() {
return pb(this, !1).toString()
}
;
function rb(a, b) {
if (a = a.o) {
Za(b, b.g.end());
for (var c = 0; c < a.length; c++)
Za(b, a[c])
}
}
function sb(a, b) {
if (4 == b.h)
return !1;
var c = b.m;
Ta(b);
b.N || (b = La(b.g.h, c, b.g.g),
(c = a.o) ? c.push(b) : a.o = [b]);
return !0
}
;function tb(a) {
V.call(this, a, -1, ub)
}
M(tb, V);
tb.prototype.getRows = function() {
return W(this, 1)
}
;
tb.prototype.getCols = function() {
return W(this, 2)
}
;
tb.prototype.getPackedDataList = function() {
return kb(this)
}
;
tb.prototype.getLayout = function() {
return lb(this, 4, 0)
}
;
function vb(a, b) {
for (; S(b); )
switch (b.i) {
case 8:
var c = b.g.i();
X(a, 1, c);
break;
case 16:
c = b.g.i();
X(a, 2, c);
break;
case 29:
case 26:
Xa(b, a.getPackedDataList());
break;
case 32:
c = Oa(b.g);
X(a, 4, c);
break;
default:
if (!sb(a, b))
return a
}
return a
}
var ub = [3];
function Z(a, b) {
var c = void 0;
return new (c || (c = Promise))(function(d, e) {
function g(k) {
try {
h(b.next(k))
} catch (l) {
e(l)
}
}
function f(k) {
try {
h(b["throw"](k))
} catch (l) {
e(l)
}
}
function h(k) {
k.done ? d(k.value) : (new c(function(l) {
l(k.value)
}
)).then(g, f)
}
h((b = b.apply(a, void 0)).next())
}
)
}
;function wb(a) {
V.call(this, a)
}
M(wb, V);
function xb(a, b) {
for (; S(b); )
switch (b.i) {
case 8:
var c = b.g.i();
X(a, 1, c);
break;
case 21:
c = T(b);
X(a, 2, c);
break;
case 26:
c = Va(b);
X(a, 3, c);
break;
case 34:
c = Va(b);
X(a, 4, c);
break;
default:
if (!sb(a, b))
return a
}
return a
}
;function yb(a) {
V.call(this, a, -1, zb)
}
M(yb, V);
yb.prototype.addClassification = function(a, b) {
qb(this, a, wb, b);
return this
}
;
var zb = [1];
function Ab(a) {
V.call(this, a)
}
M(Ab, V);
function Bb(a, b) {
for (; S(b); )
switch (b.i) {
case 13:
var c = T(b);
X(a, 1, c);
break;
case 21:
c = T(b);
X(a, 2, c);
break;
case 29:
c = T(b);
X(a, 3, c);
break;
case 37:
c = T(b);
X(a, 4, c);
break;
case 45:
c = T(b);
X(a, 5, c);
break;
default:
if (!sb(a, b))
return a
}
return a
}
;function Cb(a) {
V.call(this, a, -1, Db)
}
M(Cb, V);
function Eb(a) {
a: {
var b = new Cb;
for (a = new Sa(a); S(a); )
switch (a.i) {
case 10:
var c = Ua(a, new Ab, Bb);
qb(b, c, Ab, void 0);
break;
default:
if (!sb(b, a))
break a
}
}
return b
}
var Db = [1];
function Fb(a) {
V.call(this, a)
}
M(Fb, V);
function Gb(a) {
V.call(this, a, -1, Hb)
}
M(Gb, V);
Gb.prototype.getVertexType = function() {
return lb(this, 1, 0)
}
;
Gb.prototype.getPrimitiveType = function() {
return lb(this, 2, 0)
}
;
Gb.prototype.getVertexBufferList = function() {
return kb(this)
}
;
Gb.prototype.getIndexBufferList = function() {
return jb(this, 4)
}
;
function Ib(a, b) {
for (; S(b); )
switch (b.i) {
case 8:
var c = Oa(b.g);
X(a, 1, c);
break;
case 16:
c = Oa(b.g);
X(a, 2, c);
break;
case 29:
case 26:
Xa(b, a.getVertexBufferList());
break;
case 32:
case 34:
c = b;
var d = a.getIndexBufferList();
2 == c.h ? Wa(c, Ma.prototype.i, d) : d.push(c.g.i());
break;
default:
if (!sb(a, b))
return a
}
return a
}
var Hb = [3, 4];
function Jb(a) {
V.call(this, a)
}
M(Jb, V);
Jb.prototype.getMesh = function() {
return mb(this, Gb, 1)
}
;
Jb.prototype.getPoseTransformMatrix = function() {
return mb(this, tb, 2)
}
;
function Kb(a) {
a: {
var b = new Jb;
for (a = new Sa(a); S(a); )
switch (a.i) {
case 10:
var c = Ua(a, new Gb, Ib);
ob(b, 1, c);
break;
case 18:
c = Ua(a, new tb, vb);
ob(b, 2, c);
break;
default:
if (!sb(b, a))
break a
}
}
return b
}
;function Lb(a, b, c) {
c = a.createShader(0 === c ? a.VERTEX_SHADER : a.FRAGMENT_SHADER);
a.shaderSource(c, b);
a.compileShader(c);
if (!a.getShaderParameter(c, a.COMPILE_STATUS))
throw Error("Could not compile WebGL shader.\n\n" + a.getShaderInfoLog(c));
return c
}
;function Mb(a) {
return nb(a, wb).map(function(b) {
return {
index: lb(b, 1, 0),
Y: Y(b, 2),
label: null != W(b, 3) ? lb(b, 3, "") : void 0,
displayName: null != W(b, 4) ? lb(b, 4, "") : void 0
}
})
}
;function Nb(a) {
return {
x: Y(a, 1),
y: Y(a, 2),
z: Y(a, 3),
visibility: null != W(a, 4) ? Y(a, 4) : void 0
}
}
;function Ob(a, b) {
this.h = a;
this.g = b;
this.l = 0
}
function Pb(a, b, c) {
Qb(a, b);
if ("function" === typeof a.g.canvas.transferToImageBitmap)
return Promise.resolve(a.g.canvas.transferToImageBitmap());
if (c)
return Promise.resolve(a.g.canvas);
if ("function" === typeof createImageBitmap)
return createImageBitmap(a.g.canvas);
void 0 === a.i && (a.i = document.createElement("canvas"));
return new Promise(function(d) {
a.i.height = a.g.canvas.height;
a.i.width = a.g.canvas.width;
a.i.getContext("2d", {}).drawImage(a.g.canvas, 0, 0, a.g.canvas.width, a.g.canvas.height);
d(a.i)
}
)
}
function Qb(a, b) {
var c = a.g;
if (void 0 === a.m) {
var d = Lb(c, "\n attribute vec2 aVertex;\n attribute vec2 aTex;\n varying vec2 vTex;\n void main(void) {\n gl_Position = vec4(aVertex, 0.0, 1.0);\n vTex = aTex;\n }", 0)
, e = Lb(c, "\n precision mediump float;\n varying vec2 vTex;\n uniform sampler2D sampler0;\n void main(){\n gl_FragColor = texture2D(sampler0, vTex);\n }", 1)
, g = c.createProgram();
c.attachShader(g, d);
c.attachShader(g, e);
c.linkProgram(g);
if (!c.getProgramParameter(g, c.LINK_STATUS))
throw Error("Could not compile WebGL program.\n\n" + c.getProgramInfoLog(g));
d = a.m = g;
c.useProgram(d);
e = c.getUniformLocation(d, "sampler0");
a.j = {
I: c.getAttribLocation(d, "aVertex"),
H: c.getAttribLocation(d, "aTex"),
da: e
};
a.s = c.createBuffer();
c.bindBuffer(c.ARRAY_BUFFER, a.s);
c.enableVertexAttribArray(a.j.I);
c.vertexAttribPointer(a.j.I, 2, c.FLOAT, !1, 0, 0);
c.bufferData(c.ARRAY_BUFFER, new Float32Array([-1, -1, -1, 1, 1, 1, 1, -1]), c.STATIC_DRAW);
c.bindBuffer(c.ARRAY_BUFFER, null);
a.o = c.createBuffer();
c.bindBuffer(c.ARRAY_BUFFER, a.o);
c.enableVertexAttribArray(a.j.H);
c.vertexAttribPointer(a.j.H, 2, c.FLOAT, !1, 0, 0);
c.bufferData(c.ARRAY_BUFFER, new Float32Array([0, 1, 0, 0, 1, 0, 1, 1]), c.STATIC_DRAW);
c.bindBuffer(c.ARRAY_BUFFER, null);
c.uniform1i(e, 0)
}
d = a.j;
c.useProgram(a.m);
c.canvas.width = b.width;
c.canvas.height = b.height;
c.viewport(0, 0, b.width, b.height);
c.activeTexture(c.TEXTURE0);
a.h.bindTexture2d(b.glName);
c.enableVertexAttribArray(d.I);
c.bindBuffer(c.ARRAY_BUFFER, a.s);
c.vertexAttribPointer(d.I, 2, c.FLOAT, !1, 0, 0);
c.enableVertexAttribArray(d.H);
c.bindBuffer(c.ARRAY_BUFFER, a.o);
c.vertexAttribPointer(d.H, 2, c.FLOAT, !1, 0, 0);
c.bindFramebuffer(c.DRAW_FRAMEBUFFER ? c.DRAW_FRAMEBUFFER : c.FRAMEBUFFER, null);
c.clearColor(0, 0, 0, 0);
c.clear(c.COLOR_BUFFER_BIT);
c.colorMask(!0, !0, !0, !0);
c.drawArrays(c.TRIANGLE_FAN, 0, 4);
c.disableVertexAttribArray(d.I);
c.disableVertexAttribArray(d.H);
c.bindBuffer(c.ARRAY_BUFFER, null);
a.h.bindTexture2d(0)
}
function Rb(a) {
this.g = a
}
;var Sb = new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0, 1, 4, 1, 96, 0, 0, 3, 2, 1, 0, 10, 9, 1, 7, 0, 65, 0, 253, 15, 26, 11]);
function Tb(a, b) {
return b + a
}
function Ub(a, b) {
window[a] = b
}
function Vb(a) {
var b = document.createElement("script");
b.setAttribute("src", a);
b.setAttribute("crossorigin", "anonymous");
return new Promise(function(c) {
b.addEventListener("load", function() {
c()
}, !1);
b.addEventListener("error", function() {
c()
}, !1);
document.body.appendChild(b)
}
)
}
function Wb() {
return Z(this, function b() {
return O(b, function(c) {
switch (c.g) {
case 1:
return c.m = 2,
N(c, WebAssembly.instantiate(Sb), 4);
case 4:
c.g = 3;
c.m = 0;
break;
case 2:
return c.m = 0,
c.j = null,
c.return(!1);
case 3:
return c.return(!0)
}
})
})
}
function Xb(a) {
this.g = a;
this.listeners = {};
this.j = {};
this.F = {};
this.m = {};
this.s = {};
this.G = this.o = this.R = !0;
this.C = Promise.resolve();
this.P = "";
this.B = {};
this.locateFile = a && a.locateFile || Tb;
if ("object" === typeof window)
var b = window.location.pathname.toString().substring(0, window.location.pathname.toString().lastIndexOf("/")) + "/";
else if ("undefined" !== typeof location)
b = location.pathname.toString().substring(0, location.pathname.toString().lastIndexOf("/")) + "/";
else
throw Error("solutions can only be loaded on a web page or in a web worker");
this.S = b;
if (a.options) {
b = K(Object.keys(a.options));
for (var c = b.next(); !c.done; c = b.next()) {
c = c.value;
var d = a.options[c].default;
void 0 !== d && (this.j[c] = "function" === typeof d ? d() : d)
}
}
}
v = Xb.prototype;
v.close = function() {
this.i && this.i.delete();
return Promise.resolve()
}
;
function Yb(a, b) {
return void 0 === a.g.files ? [] : "function" === typeof a.g.files ? a.g.files(b) : a.g.files
}
function Zb(a) {
return Z(a, function c() {
var d = this, e, g, f, h, k, l, n, u, w, r, y;
return O(c, function(m) {
switch (m.g) {
case 1:
e = d;
if (!d.R)
return m.return();
g = Yb(d, d.j);
return N(m, Wb(), 2);
case 2:
f = m.h;
if ("object" === typeof window)
return Ub("createMediapipeSolutionsWasm", {
locateFile: d.locateFile
}),
Ub("createMediapipeSolutionsPackedAssets", {
locateFile: d.locateFile
}),
l = g.filter(function(t) {
return void 0 !== t.data
}),
n = g.filter(function(t) {
return void 0 === t.data
}),
u = Promise.all(l.map(function(t) {
var x = $b(e, t.url);
if (void 0 !== t.path) {
var z = t.path;
x = x.then(function(E) {
e.overrideFile(z, E);
return Promise.resolve(E)
})
}
return x
})),
w = Promise.all(n.map(function(t) {
return void 0 === t.simd || t.simd && f || !t.simd && !f ? Vb(e.locateFile(t.url, e.S)) : Promise.resolve()
})).then(function() {
return Z(e, function x() {
var z, E, F = this;
return O(x, function(I) {
if (1 == I.g)
return z = window.createMediapipeSolutionsWasm,
E = window.createMediapipeSolutionsPackedAssets,
N(I, z(E), 2);
F.h = I.h;
I.g = 0
})
})
}),
r = function() {
return Z(e, function x() {
var z = this;
return O(x, function(E) {
z.g.graph && z.g.graph.url ? E = N(E, $b(z, z.g.graph.url), 0) : (E.g = 0,
E = void 0);
return E
})
})
}(),
N(m, Promise.all([w, u, r]), 7);
if ("function" !== typeof importScripts)
throw Error("solutions can only be loaded on a web page or in a web worker");
h = g.filter(function(t) {
return void 0 === t.simd || t.simd && f || !t.simd && !f
}).map(function(t) {
return e.locateFile(t.url, e.S)
});
// PATCH: `locateFile` behavior
globalThis["createMediapipeSolutionsPackedAssets"] = {
locateFile: e.locateFile,
}
importScripts.apply(null, L(h));
return N(m, createMediapipeSolutionsWasm(Module), 6);
case 6:
d.h = m.h;
d.l = new OffscreenCanvas(1,1);
y = d.l.getContext("webgl2", {})
d.D = y
d.h.canvas = d.l
d.h.createContext(d.l, !0, !0, {})
m.g = 4;
break;
case 7:
d.l = document.createElement("canvas");
y = d.l.getContext("webgl2", {});
if (!y && (y = d.l.getContext("webgl", {}),
!y))
return alert("Failed to create WebGL canvas context when passing video frame."),
m.return();
d.D = y;
d.h.canvas = d.l;
d.h.createContext(d.l, !0, !0, {});
case 4:
d.i = new d.h.SolutionWasm,
d.R = !1,
m.g = 0
}
})
})
}
function ac(a) {
return Z(a, function c() {
var d = this, e, g, f, h, k, l, n, u;
return O(c, function(w) {
if (1 == w.g) {
if (d.g.graph && d.g.graph.url && d.P === d.g.graph.url)
return w.return();
d.o = !0;
if (!d.g.graph || !d.g.graph.url) {
w.g = 2;
return
}
d.P = d.g.graph.url;
return N(w, $b(d, d.g.graph.url), 3)
}
2 != w.g && (e = w.h,
d.i.loadGraph(e));
g = K(Object.keys(d.B));
for (f = g.next(); !f.done; f = g.next())
h = f.value,
d.i.overrideFile(h, d.B[h]);
d.B = {};
if (d.g.listeners)
for (k = K(d.g.listeners),
l = k.next(); !l.done; l = k.next())
n = l.value,
bc(d, n);
u = d.j;
d.j = {};
d.setOptions(u);
w.g = 0
})
})
}
v.reset = function() {
return Z(this, function b() {
var c = this;
return O(b, function(d) {
c.i && (c.i.reset(),
c.m = {},
c.s = {});
d.g = 0
})
})
}
;
v.setOptions = function(a, b) {
var c = this;
if (b = b || this.g.options) {
for (var d = [], e = [], g = {}, f = K(Object.keys(a)), h = f.next(); !h.done; g = {
K: g.K,
L: g.L
},
h = f.next()) {
var k = h.value;
k in this.j && this.j[k] === a[k] || (this.j[k] = a[k],
h = b[k],
void 0 !== h && (h.onChange && (g.K = h.onChange,
g.L = a[k],
d.push(function(l) {
return function() {
return Z(c, function u() {
var w, r = this;
return O(u, function(y) {
if (1 == y.g)
return N(y, l.K(l.L), 2);
w = y.h;
!0 === w && (r.o = !0);
y.g = 0
})
})
}
}(g))),
h.graphOptionXref && (k = {
valueNumber: 1 === h.type ? a[k] : 0,
valueBoolean: 0 === h.type ? a[k] : !1,
valueString: 2 === h.type ? a[k] : ""
},
h = Object.assign(Object.assign(Object.assign({}, {
calculatorName: "",
calculatorIndex: 0
}), h.graphOptionXref), k),
e.push(h))))
}
if (0 !== d.length || 0 !== e.length)
this.o = !0,
this.A = (void 0 === this.A ? [] : this.A).concat(e),
this.u = (void 0 === this.u ? [] : this.u).concat(d)
}
}
;
function cc(a) {
return Z(a, function c() {
var d = this, e, g, f, h, k, l, n;
return O(c, function(u) {
switch (u.g) {
case 1:
if (!d.o)
return u.return();
if (!d.u) {
u.g = 2;
break
}
e = K(d.u);
g = e.next();
case 3:
if (g.done) {
u.g = 5;
break
}
f = g.value;
return N(u, f(), 4);
case 4:
g = e.next();
u.g = 3;
break;
case 5:
d.u = void 0;
case 2:
if (d.A) {
h = new d.h.GraphOptionChangeRequestList;
k = K(d.A);
for (l = k.next(); !l.done; l = k.next())
n = l.value,
h.push_back(n);
d.i.changeOptions(h);
h.delete();
d.A = void 0
}
d.o = !1;
u.g = 0
}
})
})
}
v.initialize = function() {
return Z(this, function b() {
var c = this;
return O(b, function(d) {
return 1 == d.g ? N(d, Zb(c), 2) : 3 != d.g ? N(d, ac(c), 3) : N(d, cc(c), 0)
})
})
}
;
function $b(a, b) {
return Z(a, function d() {
var e = this, g, f;
return O(d, function(h) {
if (b in e.F)
return h.return(e.F[b]);
g = e.locateFile(b, "");
f = fetch(g).then(function(k) {
return k.arrayBuffer()
});
e.F[b] = f;
return h.return(f)
})
})
}
v.overrideFile = function(a, b) {
this.i ? this.i.overrideFile(a, b) : this.B[a] = b
}
;
v.clearOverriddenFiles = function() {
this.B = {};
this.i && this.i.clearOverriddenFiles()
}
;
v.send = function(a, b) {
return Z(this, function d() {
var e = this, g, f, h, k, l, n, u, w, r;
return O(d, function(y) {
switch (y.g) {
case 1:
if (!e.g.inputs)
return y.return();
g = 1E3 * (void 0 === b || null === b ? performance.now() : b);
return N(y, e.C, 2);
case 2:
return N(y, e.initialize(), 3);
case 3:
f = new e.h.PacketDataList;
h = K(Object.keys(a));
for (k = h.next(); !k.done; k = h.next())
if (l = k.value,
n = e.g.inputs[l]) {
a: {
var m = e;
var t = a[l];
switch (n.type) {
case "video":
var x = m.m[n.stream];
x || (x = new Ob(m.h,m.D),
m.m[n.stream] = x);
m = x;
0 === m.l && (m.l = m.h.createTexture());
if ("undefined" !== typeof HTMLVideoElement && t instanceof HTMLVideoElement) {
var z = t.videoWidth;
x = t.videoHeight
} else
"undefined" !== typeof HTMLImageElement && t instanceof HTMLImageElement ? (z = t.naturalWidth,
x = t.naturalHeight) : (z = t.width,
x = t.height);
x = {
glName: m.l,
width: z,
height: x
};
z = m.g;
z.canvas.width = x.width;
z.canvas.height = x.height;
z.activeTexture(z.TEXTURE0);
m.h.bindTexture2d(m.l);
z.texImage2D(z.TEXTURE_2D, 0, z.RGBA, z.RGBA, z.UNSIGNED_BYTE, t);
m.h.bindTexture2d(0);
m = x;
break a;
case "detections":
x = m.m[n.stream];
x || (x = new Rb(m.h),
m.m[n.stream] = x);
m = x;
m.data || (m.data = new m.g.DetectionListData);
m.data.reset(t.length);
for (x = 0; x < t.length; ++x) {
z = t[x];
var E = m.data
, F = E.setBoundingBox
, I = x;
var H = z.T;
var p = new Fb;
X(p, 1, H.Z);
X(p, 2, H.$);
X(p, 3, H.height);
X(p, 4, H.width);
X(p, 5, H.rotation);
X(p, 6, H.X);
var A = H = new Ya;
U(A, 1, W(p, 1));
U(A, 2, W(p, 2));
U(A, 3, W(p, 3));
U(A, 4, W(p, 4));
U(A, 5, W(p, 5));
var C = W(p, 6);
if (null != C && null != C) {
Ra(A.g, 48);
var q = A.g
, B = C;
C = 0 > B;
B = Math.abs(B);
var D = B >>> 0;
B = Math.floor((B - D) / 4294967296);
B >>>= 0;
C && (B = ~B >>> 0,
D = (~D >>> 0) + 1,
4294967295 < D && (D = 0,
B++,
4294967295 < B && (B = 0)));
Q = D;
R = B;
C = Q;
for (D = R; 0 < D || 127 < C; )
q.push(C & 127 | 128),
C = (C >>> 7 | D << 25) >>> 0,
D >>>= 7;
q.push(C)
}
rb(p, A);
H = $a(H);
F.call(E, I, H);
if (z.O)
for (E = 0; E < z.O.length; ++E)
p = z.O[E],
A = p.visibility ? !0 : !1,
F = m.data,
I = F.addNormalizedLandmark,
H = x,
p = Object.assign(Object.assign({}, p), {
visibility: A ? p.visibility : 0
}),
A = new Ab,
X(A, 1, p.x),
X(A, 2, p.y),
X(A, 3, p.z),
p.visibility && X(A, 4, p.visibility),
q = p = new Ya,
U(q, 1, W(A, 1)),
U(q, 2, W(A, 2)),
U(q, 3, W(A, 3)),
U(q, 4, W(A, 4)),
U(q, 5, W(A, 5)),
rb(A, q),
p = $a(p),
I.call(F, H, p);
if (z.M)
for (E = 0; E < z.M.length; ++E) {
F = m.data;
I = F.addClassification;
H = x;
p = z.M[E];
A = new wb;
X(A, 2, p.Y);
p.index && X(A, 1, p.index);
p.label && X(A, 3, p.label);
p.displayName && X(A, 4, p.displayName);
q = p = new Ya;
D = W(A, 1);
if (null != D && null != D)
if (Ra(q.g, 8),
C = q.g,
0 <= D)
Ra(C, D);
else {
for (B = 0; 9 > B; B++)
C.push(D & 127 | 128),
D >>= 7;
C.push(1)
}
U(q, 2, W(A, 2));
C = W(A, 3);
null != C && (C = Ca(C),
Ra(q.g, 26),
Ra(q.g, C.length),
Za(q, q.g.end()),
Za(q, C));
C = W(A, 4);
null != C && (C = Ca(C),
Ra(q.g, 34),
Ra(q.g, C.length),
Za(q, q.g.end()),
Za(q, C));
rb(A, q);
p = $a(p);
I.call(F, H, p)
}
}
m = m.data;
break a;
default:
m = {}
}
}
u = m;
w = n.stream;
switch (n.type) {
case "video":
f.pushTexture2d(Object.assign(Object.assign({}, u), {
stream: w,
timestamp: g
}));
break;
case "detections":
r = u;
r.stream = w;
r.timestamp = g;
f.pushDetectionList(r);
break;
default:
throw Error("Unknown input config type: '" + n.type + "'");
}
}
e.i.send(f);
return N(y, e.C, 4);
case 4:
f.delete(),
y.g = 0
}
})
})
}
;
function dc(a, b, c) {
return Z(a, function e() {
var g, f, h, k, l, n, u = this, w, r, y, m, t, x, z, E;
return O(e, function(F) {
switch (F.g) {
case 1:
if (!c)
return F.return(b);
g = {};
f = 0;
h = K(Object.keys(c));
for (k = h.next(); !k.done; k = h.next())
l = k.value,
n = c[l],
"string" !== typeof n && "texture" === n.type && void 0 !== b[n.stream] && ++f;
1 < f && (u.G = !1);
w = K(Object.keys(c));
k = w.next();
case 2:
if (k.done) {
F.g = 4;
break
}
r = k.value;
y = c[r];
if ("string" === typeof y)
return z = g,
E = r,
N(F, ec(u, r, b[y]), 14);
m = b[y.stream];
if ("detection_list" === y.type) {
if (m) {
var I = m.getRectList();
for (var H = m.getLandmarksList(), p = m.getClassificationsList(), A = [], C = 0; C < I.size(); ++C) {
var q = I.get(C);
a: {
var B = new Fb;
for (q = new Sa(q); S(q); )
switch (q.i) {
case 13:
var D = T(q);
X(B, 1, D);
break;
case 21:
D = T(q);
X(B, 2, D);
break;
case 29:
D = T(q);
X(B, 3, D);
break;
case 37:
D = T(q);
X(B, 4, D);
break;
case 45:
D = T(q);
X(B, 5, D);
break;
case 48:
D = Oa(q.g);
X(B, 6, D);
break;
default:
if (!sb(B, q))
break a
}
}
B = {
Z: Y(B, 1),
$: Y(B, 2),
height: Y(B, 3),
width: Y(B, 4),
rotation: Y(B, 5, 0),
X: lb(B, 6, 0)
};
q = nb(Eb(H.get(C)), Ab).map(Nb);
var la = p.get(C);
a: for (D = new yb,
la = new Sa(la); S(la); )
switch (la.i) {
case 10:
D.addClassification(Ua(la, new wb, xb));
break;
default:
if (!sb(D, la))
break a
}
B = {
T: B,
O: q,
M: Mb(D)
};
A.push(B)
}
I = A
} else
I = [];
g[r] = I;
F.g = 7;
break
}
if ("proto_list" === y.type) {
if (m) {
I = Array(m.size());
for (H = 0; H < m.size(); H++)
I[H] = m.get(H);
m.delete()
} else
I = [];
g[r] = I;
F.g = 7;
break
}
if (void 0 === m) {
F.g = 3;
break
}
if ("float_list" === y.type) {
g[r] = m;
F.g = 7;
break
}
if ("proto" === y.type) {
g[r] = m;
F.g = 7;
break
}
if ("texture" !== y.type)
throw Error("Unknown output config type: '" + y.type + "'");
t = u.s[r];
t || (t = new Ob(u.h,u.D),
u.s[r] = t);
return N(F, Pb(t, m, u.G), 13);
case 13:
x = F.h,
g[r] = x;
case 7:
y.transform && g[r] && (g[r] = y.transform(g[r]));
F.g = 3;
break;
case 14:
z[E] = F.h;
case 3:
k = w.next();
F.g = 2;
break;
case 4:
return F.return(g)
}
})
})
}
function ec(a, b, c) {
return Z(a, function e() {
var g = this, f;
return O(e, function(h) {
return "number" === typeof c || c instanceof Uint8Array || c instanceof g.h.Uint8BlobList ? h.return(c) : c instanceof g.h.Texture2dDataOut ? (f = g.s[b],
f || (f = new Ob(g.h,g.D),
g.s[b] = f),
h.return(Pb(f, c, g.G))) : h.return(void 0)
})
})
}
function bc(a, b) {
for (var c = b.name || "$", d = [].concat(L(b.wants)), e = new a.h.StringList, g = K(b.wants), f = g.next(); !f.done; f = g.next())
e.push_back(f.value);
g = a.h.PacketListener.implement({
onResults: function(h) {
for (var k = {}, l = 0; l < b.wants.length; ++l)
k[d[l]] = h.get(l);
var n = a.listeners[c];
n && (a.C = dc(a, k, b.outs).then(function(u) {
u = n(u);
for (var w = 0; w < b.wants.length; ++w) {
var r = k[d[w]];
"object" === typeof r && r.hasOwnProperty && r.hasOwnProperty("delete") && r.delete()
}
u && (a.C = u)
}))
}
});
a.i.attachMultiListener(e, g);
e.delete()
}
v.onResults = function(a, b) {
this.listeners[b || "$"] = a
}
;
P("Solution", Xb);
P("OptionType", {
BOOL: 0,
NUMBER: 1,
aa: 2,
0: "BOOL",
1: "NUMBER",
2: "STRING"
});
function fc(a) {
a = Kb(a);
var b = a.getMesh();
if (!b)
return a;
var c = new Float32Array(b.getVertexBufferList());
b.getVertexBufferList = function() {
return c
}
;
var d = new Uint32Array(b.getIndexBufferList());
b.getIndexBufferList = function() {
return d
}
;
return a
}
;var gc = {
files: [{
url: "face_mesh_solution_packed_assets_loader.js"
}, {
simd: !0,
url: "face_mesh_solution_simd_wasm_bin.js"
}, {
simd: !1,
url: "face_mesh_solution_wasm_bin.js"
}],
graph: {
url: "face_mesh.binarypb"
},
listeners: [{
wants: ["multi_face_geometry", "image_transformed", "multi_face_landmarks"],
outs: {
image: "image_transformed",
multiFaceGeometry: {
type: "proto_list",
stream: "multi_face_geometry",
transform: function(a) {
return a.map(fc)
}
},
multiFaceLandmarks: {
type: "proto_list",
stream: "multi_face_landmarks",
transform: function(a) {
return a.map(function(b) {
return nb(Eb(b), Ab).map(Nb)
})
}
}
}
}],
inputs: {
image: {
type: "video",
stream: "input_frames_gpu"
}
},
options: {
useCpuInference: {
type: 0,
graphOptionXref: {
calculatorType: "InferenceCalculator",
fieldName: "use_cpu_inference"
},
default: "iPad Simulator;iPhone Simulator;iPod Simulator;iPad;iPhone;iPod".split(";").includes(navigator.platform) || navigator.userAgent.includes("Mac") && "ontouchend"in document
},
enableFaceGeometry: {
type: 0,
graphOptionXref: {
calculatorName: "EnableFaceGeometryConstant",
calculatorType: "ConstantSidePacketCalculator",
fieldName: "bool_value"
}
},
selfieMode: {
type: 0,
graphOptionXref: {
calculatorType: "GlScalerCalculator",
calculatorIndex: 1,
fieldName: "flip_horizontal"
}
},
maxNumFaces: {
type: 1,
graphOptionXref: {
calculatorType: "ConstantSidePacketCalculator",
calculatorName: "ConstantSidePacketCalculatorNumFaces",
fieldName: "int_value"
}
},
refineLandmarks: {
type: 0,
graphOptionXref: {
calculatorType: "ConstantSidePacketCalculator",
calculatorName: "ConstantSidePacketCalculatorRefineLandmarks",
fieldName: "bool_value"
}
},
minDetectionConfidence: {
type: 1,
graphOptionXref: {
calculatorType: "TensorsToDetectionsCalculator",
calculatorName: "facelandmarkfrontgpu__facedetectionshortrangegpu__facedetectionshortrangecommon__TensorsToDetectionsCalculator",
fieldName: "min_score_thresh"
}
},
minTrackingConfidence: {
type: 1,
graphOptionXref: {
calculatorType: "ThresholdingCalculator",
calculatorName: "facelandmarkfrontgpu__facelandmarkgpu__ThresholdingCalculator",
fieldName: "threshold"
}
},
cameraNear: {
type: 1,
graphOptionXref: {
calculatorType: "FaceGeometryEnvGeneratorCalculator",
fieldName: "near"
}
},
cameraFar: {
type: 1,
graphOptionXref: {
calculatorType: "FaceGeometryEnvGeneratorCalculator",
fieldName: "far"
}
},
cameraVerticalFovDegrees: {
type: 1,
graphOptionXref: {
calculatorType: "FaceGeometryEnvGeneratorCalculator",
fieldName: "vertical_fov_degrees"
}
}
}
};
var hc = [[61, 146], [146, 91], [91, 181], [181, 84], [84, 17], [17, 314], [314, 405], [405, 321], [321, 375], [375, 291], [61, 185], [185, 40], [40, 39], [39, 37], [37, 0], [0, 267], [267, 269], [269, 270], [270, 409], [409, 291], [78, 95], [95, 88], [88, 178], [178, 87], [87, 14], [14, 317], [317, 402], [402, 318], [318, 324], [324, 308], [78, 191], [191, 80], [80, 81], [81, 82], [82, 13], [13, 312], [312, 311], [311, 310], [310, 415], [415, 308]]
, ic = [[263, 249], [249, 390], [390, 373], [373, 374], [374, 380], [380, 381], [381, 382], [382, 362], [263, 466], [466, 388], [388, 387], [387, 386], [386, 385], [385, 384], [384, 398], [398, 362]]
, jc = [[276, 283], [283, 282], [282, 295], [295, 285], [300, 293], [293, 334], [334, 296], [296, 336]]
, kc = [[33, 7], [7, 163], [163, 144], [144, 145], [145, 153], [153, 154], [154, 155], [155, 133], [33, 246], [246, 161], [161, 160], [160, 159], [159, 158], [158, 157], [157, 173], [173, 133]]
, lc = [[46, 53], [53, 52], [52, 65], [65, 55], [70, 63], [63, 105], [105, 66], [66, 107]]
, mc = [[10, 338], [338, 297], [297, 332], [332, 284], [284, 251], [251, 389], [389, 356], [356, 454], [454, 323], [323, 361], [361, 288], [288, 397], [397, 365], [365, 379], [379, 378], [378, 400], [400, 377], [377, 152], [152, 148], [148, 176], [176, 149], [149, 150], [150, 136], [136, 172], [172, 58], [58, 132], [132, 93], [93, 234], [234, 127], [127, 162], [162, 21], [21, 54], [54, 103], [103, 67], [67, 109], [109, 10]]
, nc = [].concat(L(hc), L(ic), L(jc), L(kc), L(lc), L(mc));
function oc(a) {
a = a || {};
a = Object.assign(Object.assign({}, gc), a);
this.g = new Xb(a)
}
v = oc.prototype;
v.close = function() {
this.g.close();
return Promise.resolve()
}
;
v.onResults = function(a) {
this.g.onResults(a)
}
;
v.initialize = function() {
return Z(this, function b() {
var c = this;
return O(b, function(d) {
return N(d, c.g.initialize(), 0)
})
})
}
;
v.reset = function() {
this.g.reset()
}
;
v.send = function(a) {
return Z(this, function c() {
var d = this;
return O(c, function(e) {
return N(e, d.g.send(a), 0)
})
})
}
;
v.setOptions = function(a) {
this.g.setOptions(a)
}
;
P("FACE_GEOMETRY", {
Layout: {
COLUMN_MAJOR: 0,
ROW_MAJOR: 1,
0: "COLUMN_MAJOR",
1: "ROW_MAJOR"
},
PrimitiveType: {
TRIANGLE: 0,
0: "TRIANGLE"
},
VertexType: {
VERTEX_PT: 0,
0: "VERTEX_PT"
},
DEFAULT_CAMERA_PARAMS: {
verticalFovDegrees: 63,
near: 1,
far: 1E4
}
});
P("FaceMesh", oc);
P("FACEMESH_LIPS", hc);
P("FACEMESH_LEFT_EYE", ic);
P("FACEMESH_LEFT_EYEBROW", jc);
P("FACEMESH_LEFT_IRIS", [[474, 475], [475, 476], [476, 477], [477, 474]]);
P("FACEMESH_RIGHT_EYE", kc);
P("FACEMESH_RIGHT_EYEBROW", lc);
P("FACEMESH_RIGHT_IRIS", [[469, 470], [470, 471], [471, 472], [472, 469]]);
P("FACEMESH_FACE_OVAL", mc);
P("FACEMESH_CONTOURS", nc);
P("FACEMESH_TESSELATION", [[127, 34], [34, 139], [139, 127], [11, 0], [0, 37], [37, 11], [232, 231], [231, 120], [120, 232], [72, 37], [37, 39], [39, 72], [128, 121], [121, 47], [47, 128], [232, 121], [121, 128], [128, 232], [104, 69], [69, 67], [67, 104], [175, 171], [171, 148], [148, 175], [118, 50], [50, 101], [101, 118], [73, 39], [39, 40], [40, 73], [9, 151], [151, 108], [108, 9], [48, 115], [115, 131], [131, 48], [194, 204], [204, 211], [211, 194], [74, 40], [40, 185], [185, 74], [80, 42], [42, 183], [183, 80], [40, 92], [92, 186], [186, 40], [230, 229], [229, 118], [118, 230], [202, 212], [212, 214], [214, 202], [83, 18], [18, 17], [17, 83], [76, 61], [61, 146], [146, 76], [160, 29], [29, 30], [30, 160], [56, 157], [157, 173], [173, 56], [106, 204], [204, 194], [194, 106], [135, 214], [214, 192], [192, 135], [203, 165], [165, 98], [98, 203], [21, 71], [71, 68], [68, 21], [51, 45], [45, 4], [4, 51], [144, 24], [24, 23], [23, 144], [77, 146], [146, 91], [91, 77], [205, 50], [50, 187], [187, 205], [201, 200], [200, 18], [18, 201], [91, 106], [106, 182], [182, 91], [90, 91], [91, 181], [181, 90], [85, 84], [84, 17], [17, 85], [206, 203], [203, 36], [36, 206], [148, 171], [171, 140], [140, 148], [92, 40], [40, 39], [39, 92], [193, 189], [189, 244], [244, 193], [159, 158], [158, 28], [28, 159], [247, 246], [246, 161], [161, 247], [236, 3], [3, 196], [196, 236], [54, 68], [68, 104], [104, 54], [193, 168], [168, 8], [8, 193], [117, 228], [228, 31], [31, 117], [189, 193], [193, 55], [55, 189], [98, 97], [97, 99], [99, 98], [126, 47], [47, 100], [100, 126], [166, 79], [79, 218], [218, 166], [155, 154], [154, 26], [26, 155], [209, 49], [49, 131], [131, 209], [135, 136], [136, 150], [150, 135], [47, 126], [126, 217], [217, 47], [223, 52], [52, 53], [53, 223], [45, 51], [51, 134], [134, 45], [211, 170], [170, 140], [140, 211], [67, 69], [69, 108], [108, 67], [43, 106], [106, 91], [91, 43], [230, 119], [119, 120], [120, 230], [226, 130], [130, 247], [247, 226], [63, 53], [53, 52], [52, 63], [238, 20], [20, 242], [242, 238], [46, 70], [70, 156], [156, 46], [78, 62], [62, 96], [96, 78], [46, 53], [53, 63], [63, 46], [143, 34], [34, 227], [227, 143], [123, 117], [117, 111], [111, 123], [44, 125], [125, 19], [19, 44], [236, 134], [134, 51], [51, 236], [216, 206], [206, 205], [205, 216], [154, 153], [153, 22], [22, 154], [39, 37], [37, 167], [167, 39], [200, 201], [201, 208], [208, 200], [36, 142], [142, 100], [100, 36], [57, 212], [212, 202], [202, 57], [20, 60], [60, 99], [99, 20], [28, 158], [158, 157], [157, 28], [35, 226], [226, 113], [113, 35], [160, 159], [159, 27], [27, 160], [204, 202], [202, 210], [210, 204], [113, 225], [225, 46], [46, 113], [43, 202], [202, 204], [204, 43], [62, 76], [76, 77], [77, 62], [137, 123], [123, 116], [116, 137], [41, 38], [38, 72], [72, 41], [203, 129], [129, 142], [142, 203], [64, 98], [98, 240], [240, 64], [49, 102], [102, 64], [64, 49], [41, 73], [73, 74], [74, 41], [212, 216], [216, 207], [207, 212], [42, 74], [74, 184], [184, 42], [169, 170], [170, 211], [211, 169], [170, 149], [149, 176], [176, 170], [105, 66], [66, 69], [69, 105], [122, 6], [6, 168], [168, 122], [123, 147], [147, 187], [187, 123], [96, 77], [77, 90], [90, 96], [65, 55], [55, 107], [107, 65], [89, 90], [90, 180], [180, 89], [101, 100], [100, 120], [120, 101], [63, 105], [105, 104], [104, 63], [93, 137], [137, 227], [227, 93], [15, 86], [86, 85], [85, 15], [129, 102], [102, 49], [49, 129], [14, 87], [87, 86], [86, 14], [55, 8], [8, 9], [9, 55], [100, 47], [47, 121], [121, 100], [145, 23], [23, 22], [22, 145], [88, 89], [89, 179], [179, 88], [6, 122], [122, 196], [196, 6], [88, 95], [95, 96], [96, 88], [138, 172], [172, 136], [136, 138], [215, 58], [58, 172], [172, 215], [115, 48], [48, 219], [219, 115], [42, 80], [80, 81], [81, 42], [195, 3], [3, 51], [51, 195], [43, 146], [146, 61], [61, 43], [171, 175], [175, 199], [199, 171], [81, 82], [82, 38], [38, 81], [53, 46], [46, 225], [225, 53], [144, 163], [163, 110], [110, 144], [52, 65], [65, 66], [66, 52], [229, 228], [228, 117], [117, 229], [34, 127], [127, 234], [234, 34], [107, 108], [108, 69], [69, 107], [109, 108], [108, 151], [151, 109], [48, 64], [64, 235], [235, 48], [62, 78], [78, 191], [191, 62], [129, 209], [209, 126], [126, 129], [111, 35], [35, 143], [143, 111], [117, 123], [123, 50], [50, 117], [222, 65], [65, 52], [52, 222], [19, 125], [125, 141], [141, 19], [221, 55], [55, 65], [65, 221], [3, 195], [195, 197], [197, 3], [25, 7], [7, 33], [33, 25], [220, 237], [237, 44], [44, 220], [70, 71], [71, 139], [139, 70], [122, 193], [193, 245], [245, 122], [247, 130], [130, 33], [33, 247], [71, 21], [21, 162], [162, 71], [170, 169], [169, 150], [150, 170], [188, 174], [174, 196], [196, 188], [216, 186], [186, 92], [92, 216], [2, 97], [97, 167], [167, 2], [141, 125], [125, 241], [241, 141], [164, 167], [167, 37], [37, 164], [72, 38], [38, 12], [12, 72], [38, 82], [82, 13], [13, 38], [63, 68], [68, 71], [71, 63], [226, 35], [35, 111], [111, 226], [101, 50], [50, 205], [205, 101], [206, 92], [92, 165], [165, 206], [209, 198], [198, 217], [217, 209], [165, 167], [167, 97], [97, 165], [220, 115], [115, 218], [218, 220], [133, 112], [112, 243], [243, 133], [239, 238], [238, 241], [241, 239], [214, 135], [135, 169], [169, 214], [190, 173], [173, 133], [133, 190], [171, 208], [208, 32], [32, 171], [125, 44], [44, 237], [237, 125], [86, 87], [87, 178], [178, 86], [85, 86], [86, 179], [179, 85], [84, 85], [85, 180], [180, 84], [83, 84], [84, 181], [181, 83], [201, 83], [83, 182], [182, 201], [137, 93], [93, 132], [132, 137], [76, 62], [62, 183], [183, 76], [61, 76], [76, 184], [184, 61], [57, 61], [61, 185], [185, 57], [212, 57], [57, 186], [186, 212], [214, 207], [207, 187], [187, 214], [34, 143], [143, 156], [156, 34], [79, 239], [239, 237], [237, 79], [123, 137], [137, 177], [177, 123], [44, 1], [1, 4], [4, 44], [201, 194], [194, 32], [32, 201], [64, 102], [102, 129], [129, 64], [213, 215], [215, 138], [138, 213], [59, 166], [166, 219], [219, 59], [242, 99], [99, 97], [97, 242], [2, 94], [94, 141], [141, 2], [75, 59], [59, 235], [235, 75], [24, 110], [110, 228], [228, 24], [25, 130], [130, 226], [226, 25], [23, 24], [24, 229], [229, 23], [22, 23], [23, 230], [230, 22], [26, 22], [22, 231], [231, 26], [112, 26], [26, 232], [232, 112], [189, 190], [190, 243], [243, 189], [221, 56], [56, 190], [190, 221], [28, 56], [56, 221], [221, 28], [27, 28], [28, 222], [222, 27], [29, 27], [27, 223], [223, 29], [30, 29], [29, 224], [224, 30], [247, 30], [30, 225], [225, 247], [238, 79], [79, 20], [20, 238], [166, 59], [59, 75], [75, 166], [60, 75], [75, 240], [240, 60], [147, 177], [177, 215], [215, 147], [20, 79], [79, 166], [166, 20], [187, 147], [147, 213], [213, 187], [112, 233], [233, 244], [244, 112], [233, 128], [128, 245], [245, 233], [128, 114], [114, 188], [188, 128], [114, 217], [217, 174], [174, 114], [131, 115], [115, 220], [220, 131], [217, 198], [198, 236], [236, 217], [198, 131], [131, 134], [134, 198], [177, 132], [132, 58], [58, 177], [143, 35], [35, 124], [124, 143], [110, 163], [163, 7], [7, 110], [228, 110], [110, 25], [25, 228], [356, 389], [389, 368], [368, 356], [11, 302], [302, 267], [267, 11], [452, 350], [350, 349], [349, 452], [302, 303], [303, 269], [269, 302], [357, 343], [343, 277], [277, 357], [452, 453], [453, 357], [357, 452], [333, 332], [332, 297], [297, 333], [175, 152], [152, 377], [377, 175], [347, 348], [348, 330], [330, 347], [303, 304], [304, 270], [270, 303], [9, 336], [336, 337], [337, 9], [278, 279], [279, 360], [360, 278], [418, 262], [262, 431], [431, 418], [304, 408], [408, 409], [409, 304], [310, 415], [415, 407], [407, 310], [270, 409], [409, 410], [410, 270], [450, 348], [348, 347], [347, 450], [422, 430], [430, 434], [434, 422], [313, 314], [314, 17], [17, 313], [306, 307], [307, 375], [375, 306], [387, 388], [388, 260], [260, 387], [286, 414], [414, 398], [398, 286], [335, 406], [406, 418], [418, 335], [364, 367], [367, 416], [416, 364], [423, 358], [358, 327], [327, 423], [251, 284], [284, 298], [298, 251], [281, 5], [5, 4], [4, 281], [373, 374], [374, 253], [253, 373], [307, 320], [320, 321], [321, 307], [425, 427], [427, 411], [411, 425], [421, 313], [313, 18], [18, 421], [321, 405], [405, 406], [406, 321], [320, 404], [404, 405], [405, 320], [315, 16], [16, 17], [17, 315], [426, 425], [425, 266], [266, 426], [377, 400], [400, 369], [369, 377], [322, 391], [391, 269], [269, 322], [417, 465], [465, 464], [464, 417], [386, 257], [257, 258], [258, 386], [466, 260], [260, 388], [388, 466], [456, 399], [399, 419], [419, 456], [284, 332], [332, 333], [333, 284], [417, 285], [285, 8], [8, 417], [346, 340], [340, 261], [261, 346], [413, 441], [441, 285], [285, 413], [327, 460], [460, 328], [328, 327], [355, 371], [371, 329], [329, 355], [392, 439], [439, 438], [438, 392], [382, 341], [341, 256], [256, 382], [429, 420], [420, 360], [360, 429], [364, 394], [394, 379], [379, 364], [277, 343], [343, 437], [437, 277], [443, 444], [444, 283], [283, 443], [275, 440], [440, 363], [363, 275], [431, 262], [262, 369], [369, 431], [297, 338], [338, 337], [337, 297], [273, 375], [375, 321], [321, 273], [450, 451], [451, 349], [349, 450], [446, 342], [342, 467], [467, 446], [293, 334], [334, 282], [282, 293], [458, 461], [461, 462], [462, 458], [276, 353], [353, 383], [383, 276], [308, 324], [324, 325], [325, 308], [276, 300], [300, 293], [293, 276], [372, 345], [345, 447], [447, 372], [352, 345], [345, 340], [340, 352], [274, 1], [1, 19], [19, 274], [456, 248], [248, 281], [281, 456], [436, 427], [427, 425], [425, 436], [381, 256], [256, 252], [252, 381], [269, 391], [391, 393], [393, 269], [200, 199], [199, 428], [428, 200], [266, 330], [330, 329], [329, 266], [287, 273], [273, 422], [422, 287], [250, 462], [462, 328], [328, 250], [258, 286], [286, 384], [384, 258], [265, 353], [353, 342], [342, 265], [387, 259], [259, 257], [257, 387], [424, 431], [431, 430], [430, 424], [342, 353], [353, 276], [276, 342], [273, 335], [335, 424], [424, 273], [292, 325], [325, 307], [307, 292], [366, 447], [447, 345], [345, 366], [271, 303], [303, 302], [302, 271], [423, 266], [266, 371], [371, 423], [294, 455], [455, 460], [460, 294], [279, 278], [278, 294], [294, 279], [271, 272], [272, 304], [304, 271], [432, 434], [434, 427], [427, 432], [272, 407], [407, 408], [408, 272], [394, 430], [430, 431], [431, 394], [395, 369], [369, 400], [400, 395], [334, 333], [333, 299], [299, 334], [351, 417], [417, 168], [168, 351], [352, 280], [280, 411], [411, 352], [325, 319], [319, 320], [320, 325], [295, 296], [296, 336], [336, 295], [319, 403], [403, 404], [404, 319], [330, 348], [348, 349], [349, 330], [293, 298], [298, 333], [333, 293], [323, 454], [454, 447], [447, 323], [15, 16], [16, 315], [315, 15], [358, 429], [429, 279], [279, 358], [14, 15], [15, 316], [316, 14], [285, 336], [336, 9], [9, 285], [329, 349], [349, 350], [350, 329], [374, 380], [380, 252], [252, 374], [318, 402], [402, 403], [403, 318], [6, 197], [197, 419], [419, 6], [318, 319], [319, 325], [325, 318], [367, 364], [364, 365], [365, 367], [435, 367], [367, 397], [397, 435], [344, 438], [438, 439], [439, 344], [272, 271], [271, 311], [311, 272], [195, 5], [5, 281], [281, 195], [273, 287], [287, 291], [291, 273], [396, 428], [428, 199], [199, 396], [311, 271], [271, 268], [268, 311], [283, 444], [444, 445], [445, 283], [373, 254], [254, 339], [339, 373], [282, 334], [334, 296], [296, 282], [449, 347], [347, 346], [346, 449], [264, 447], [447, 454], [454, 264], [336, 296], [296, 299], [299, 336], [338, 10], [10, 151], [151, 338], [278, 439], [439, 455], [455, 278], [292, 407], [407, 415], [415, 292], [358, 371], [371, 355], [355, 358], [340, 345], [345, 372], [372, 340], [346, 347], [347, 280], [280, 346], [442, 443], [443, 282], [282, 442], [19, 94], [94, 370], [370, 19], [441, 442], [442, 295], [295, 441], [248, 419], [419, 197], [197, 248], [263, 255], [255, 359], [359, 263], [440, 275], [275, 274], [274, 440], [300, 383], [383, 368], [368, 300], [351, 412], [412, 465], [465, 351], [263, 467], [467, 466], [466, 263], [301, 368], [368, 389], [389, 301], [395, 378], [378, 379], [379, 395], [412, 351], [351, 419], [419, 412], [436, 426], [426, 322], [322, 436], [2, 164], [164, 393], [393, 2], [370, 462], [462, 461], [461, 370], [164, 0], [0, 267], [267, 164], [302, 11], [11, 12], [12, 302], [268, 12], [12, 13], [13, 268], [293, 300], [300, 301], [301, 293], [446, 261], [261, 340], [340, 446], [330, 266], [266, 425], [425, 330], [426, 423], [423, 391], [391, 426], [429, 355], [355, 437], [437, 429], [391, 327], [327, 326], [326, 391], [440, 457], [457, 438], [438, 440], [341, 382], [382, 362], [362, 341], [459, 457], [457, 461], [461, 459], [434, 430], [430, 394], [394, 434], [414, 463], [463, 362], [362, 414], [396, 369], [369, 262], [262, 396], [354, 461], [461, 457], [457, 354], [316, 403], [403, 402], [402, 316], [315, 404], [404, 403], [403, 315], [314, 405], [405, 404], [404, 314], [313, 406], [406, 405], [405, 313], [421, 418], [418, 406], [406, 421], [366, 401], [401, 361], [361, 366], [306, 408], [408, 407], [407, 306], [291, 409], [409, 408], [408, 291], [287, 410], [410, 409], [409, 287], [432, 436], [436, 410], [410, 432], [434, 416], [416, 411], [411, 434], [264, 368], [368, 383], [383, 264], [309, 438], [438, 457], [457, 309], [352, 376], [376, 401], [401, 352], [274, 275], [275, 4], [4, 274], [421, 428], [428, 262], [262, 421], [294, 327], [327, 358], [358, 294], [433, 416], [416, 367], [367, 433], [289, 455], [455, 439], [439, 289], [462, 370], [370, 326], [326, 462], [2, 326], [326, 370], [370, 2], [305, 460], [460, 455], [455, 305], [254, 449], [449, 448], [448, 254], [255, 261], [261, 446], [446, 255], [253, 450], [450, 449], [449, 253], [252, 451], [451, 450], [450, 252], [256, 452], [452, 451], [451, 256], [341, 453], [453, 452], [452, 341], [413, 464], [464, 463], [463, 413], [441, 413], [413, 414], [414, 441], [258, 442], [442, 441], [441, 258], [257, 443], [443, 442], [442, 257], [259, 444], [444, 443], [443, 259], [260, 445], [445, 444], [444, 260], [467, 342], [342, 445], [445, 467], [459, 458], [458, 250], [250, 459], [289, 392], [392, 290], [290, 289], [290, 328], [328, 460], [460, 290], [376, 433], [433, 435], [435, 376], [250, 290], [290, 392], [392, 250], [411, 416], [416, 433], [433, 411], [341, 463], [463, 464], [464, 341], [453, 464], [464, 465], [465, 453], [357, 465], [465, 412], [412, 357], [343, 412], [412, 399], [399, 343], [360, 363], [363, 440], [440, 360], [437, 399], [399, 456], [456, 437], [420, 456], [456, 363], [363, 420], [401, 435], [435, 288], [288, 401], [372, 383], [383, 353], [353, 372], [339, 255], [255, 249], [249, 339], [448, 261], [261, 255], [255, 448], [133, 243], [243, 190], [190, 133], [133, 155], [155, 112], [112, 133], [33, 246], [246, 247], [247, 33], [33, 130], [130, 25], [25, 33], [398, 384], [384, 286], [286, 398], [362, 398], [398, 414], [414, 362], [362, 463], [463, 341], [341, 362], [263, 359], [359, 467], [467, 263], [263, 249], [249, 255], [255, 263], [466, 467], [467, 260], [260, 466], [75, 60], [60, 166], [166, 75], [238, 239], [239, 79], [79, 238], [162, 127], [127, 139], [139, 162], [72, 11], [11, 37], [37, 72], [121, 232], [232, 120], [120, 121], [73, 72], [72, 39], [39, 73], [114, 128], [128, 47], [47, 114], [233, 232], [232, 128], [128, 233], [103, 104], [104, 67], [67, 103], [152, 175], [175, 148], [148, 152], [119, 118], [118, 101], [101, 119], [74, 73], [73, 40], [40, 74], [107, 9], [9, 108], [108, 107], [49, 48], [48, 131], [131, 49], [32, 194], [194, 211], [211, 32], [184, 74], [74, 185], [185, 184], [191, 80], [80, 183], [183, 191], [185, 40], [40, 186], [186, 185], [119, 230], [230, 118], [118, 119], [210, 202], [202, 214], [214, 210], [84, 83], [83, 17], [17, 84], [77, 76], [76, 146], [146, 77], [161, 160], [160, 30], [30, 161], [190, 56], [56, 173], [173, 190], [182, 106], [106, 194], [194, 182], [138, 135], [135, 192], [192, 138], [129, 203], [203, 98], [98, 129], [54, 21], [21, 68], [68, 54], [5, 51], [51, 4], [4, 5], [145, 144], [144, 23], [23, 145], [90, 77], [77, 91], [91, 90], [207, 205], [205, 187], [187, 207], [83, 201], [201, 18], [18, 83], [181, 91], [91, 182], [182, 181], [180, 90], [90, 181], [181, 180], [16, 85], [85, 17], [17, 16], [205, 206], [206, 36], [36, 205], [176, 148], [148, 140], [140, 176], [165, 92], [92, 39], [39, 165], [245, 193], [193, 244], [244, 245], [27, 159], [159, 28], [28, 27], [30, 247], [247, 161], [161, 30], [174, 236], [236, 196], [196, 174], [103, 54], [54, 104], [104, 103], [55, 193], [193, 8], [8, 55], [111, 117], [117, 31], [31, 111], [221, 189], [189, 55], [55, 221], [240, 98], [98, 99], [99, 240], [142, 126], [126, 100], [100, 142], [219, 166], [166, 218], [218, 219], [112, 155], [155, 26], [26, 112], [198, 209], [209, 131], [131, 198], [169, 135], [135, 150], [150, 169], [114, 47], [47, 217], [217, 114], [224, 223], [223, 53], [53, 224], [220, 45], [45, 134], [134, 220], [32, 211], [211, 140], [140, 32], [109, 67], [67, 108], [108, 109], [146, 43], [43, 91], [91, 146], [231, 230], [230, 120], [120, 231], [113, 226], [226, 247], [247, 113], [105, 63], [63, 52], [52, 105], [241, 238], [238, 242], [242, 241], [124, 46], [46, 156], [156, 124], [95, 78], [78, 96], [96, 95], [70, 46], [46, 63], [63, 70], [116, 143], [143, 227], [227, 116], [116, 123], [123, 111], [111, 116], [1, 44], [44, 19], [19, 1], [3, 236], [236, 51], [51, 3], [207, 216], [216, 205], [205, 207], [26, 154], [154, 22], [22, 26], [165, 39], [39, 167], [167, 165], [199, 200], [200, 208], [208, 199], [101, 36], [36, 100], [100, 101], [43, 57], [57, 202], [202, 43], [242, 20], [20, 99], [99, 242], [56, 28], [28, 157], [157, 56], [124, 35], [35, 113], [113, 124], [29, 160], [160, 27], [27, 29], [211, 204], [204, 210], [210, 211], [124, 113], [113, 46], [46, 124], [106, 43], [43, 204], [204, 106], [96, 62], [62, 77], [77, 96], [227, 137], [137, 116], [116, 227], [73, 41], [41, 72], [72, 73], [36, 203], [203, 142], [142, 36], [235, 64], [64, 240], [240, 235], [48, 49], [49, 64], [64, 48], [42, 41], [41, 74], [74, 42], [214, 212], [212, 207], [207, 214], [183, 42], [42, 184], [184, 183], [210, 169], [169, 211], [211, 210], [140, 170], [170, 176], [176, 140], [104, 105], [105, 69], [69, 104], [193, 122], [122, 168], [168, 193], [50, 123], [123, 187], [187, 50], [89, 96], [96, 90], [90, 89], [66, 65], [65, 107], [107, 66], [179, 89], [89, 180], [180, 179], [119, 101], [101, 120], [120, 119], [68, 63], [63, 104], [104, 68], [234, 93], [93, 227], [227, 234], [16, 15], [15, 85], [85, 16], [209, 129], [129, 49], [49, 209], [15, 14], [14, 86], [86, 15], [107, 55], [55, 9], [9, 107], [120, 100], [100, 121], [121, 120], [153, 145], [145, 22], [22, 153], [178, 88], [88, 179], [179, 178], [197, 6], [6, 196], [196, 197], [89, 88], [88, 96], [96, 89], [135, 138], [138, 136], [136, 135], [138, 215], [215, 172], [172, 138], [218, 115], [115, 219], [219, 218], [41, 42], [42, 81], [81, 41], [5, 195], [195, 51], [51, 5], [57, 43], [43, 61], [61, 57], [208, 171], [171, 199], [199, 208], [41, 81], [81, 38], [38, 41], [224, 53], [53, 225], [225, 224], [24, 144], [144, 110], [110, 24], [105, 52], [52, 66], [66, 105], [118, 229], [229, 117], [117, 118], [227, 34], [34, 234], [234, 227], [66, 107], [107, 69], [69, 66], [10, 109], [109, 151], [151, 10], [219, 48], [48, 235], [235, 219], [183, 62], [62, 191], [191, 183], [142, 129], [129, 126], [126, 142], [116, 111], [111, 143], [143, 116], [118, 117], [117, 50], [50, 118], [223, 222], [222, 52], [52, 223], [94, 19], [19, 141], [141, 94], [222, 221], [221, 65], [65, 222], [196, 3], [3, 197], [197, 196], [45, 220], [220, 44], [44, 45], [156, 70], [70, 139], [139, 156], [188, 122], [122, 245], [245, 188], [139, 71], [71, 162], [162, 139], [149, 170], [170, 150], [150, 149], [122, 188], [188, 196], [196, 122], [206, 216], [216, 92], [92, 206], [164, 2], [2, 167], [167, 164], [242, 141], [141, 241], [241, 242], [0, 164], [164, 37], [37, 0], [11, 72], [72, 12], [12, 11], [12, 38], [38, 13], [13, 12], [70, 63], [63, 71], [71, 70], [31, 226], [226, 111], [111, 31], [36, 101], [101, 205], [205, 36], [203, 206], [206, 165], [165, 203], [126, 209], [209, 217], [217, 126], [98, 165], [165, 97], [97, 98], [237, 220], [220, 218], [218, 237], [237, 239], [239, 241], [241, 237], [210, 214], [214, 169], [169, 210], [140, 171], [171, 32], [32, 140], [241, 125], [125, 237], [237, 241], [179, 86], [86, 178], [178, 179], [180, 85], [85, 179], [179, 180], [181, 84], [84, 180], [180, 181], [182, 83], [83, 181], [181, 182], [194, 201], [201, 182], [182, 194], [177, 137], [137, 132], [132, 177], [184, 76], [76, 183], [183, 184], [185, 61], [61, 184], [184, 185], [186, 57], [57, 185], [185, 186], [216, 212], [212, 186], [186, 216], [192, 214], [214, 187], [187, 192], [139, 34], [34, 156], [156, 139], [218, 79], [79, 237], [237, 218], [147, 123], [123, 177], [177, 147], [45, 44], [44, 4], [4, 45], [208, 201], [201, 32], [32, 208], [98, 64], [64, 129], [129, 98], [192, 213], [213, 138], [138, 192], [235, 59], [59, 219], [219, 235], [141, 242], [242, 97], [97, 141], [97, 2], [2, 141], [141, 97], [240, 75], [75, 235], [235, 240], [229, 24], [24, 228], [228, 229], [31, 25], [25, 226], [226, 31], [230, 23], [23, 229], [229, 230], [231, 22], [22, 230], [230, 231], [232, 26], [26, 231], [231, 232], [233, 112], [112, 232], [232, 233], [244, 189], [189, 243], [243, 244], [189, 221], [221, 190], [190, 189], [222, 28], [28, 221], [221, 222], [223, 27], [27, 222], [222, 223], [224, 29], [29, 223], [223, 224], [225, 30], [30, 224], [224, 225], [113, 247], [247, 225], [225, 113], [99, 60], [60, 240], [240, 99], [213, 147], [147, 215], [215, 213], [60, 20], [20, 166], [166, 60], [192, 187], [187, 213], [213, 192], [243, 112], [112, 244], [244, 243], [244, 233], [233, 245], [245, 244], [245, 128], [128, 188], [188, 245], [188, 114], [114, 174], [174, 188], [134, 131], [131, 220], [220, 134], [174, 217], [217, 236], [236, 174], [236, 198], [198, 134], [134, 236], [215, 177], [177, 58], [58, 215], [156, 143], [143, 124], [124, 156], [25, 110], [110, 7], [7, 25], [31, 228], [228, 25], [25, 31], [264, 356], [356, 368], [368, 264], [0, 11], [11, 267], [267, 0], [451, 452], [452, 349], [349, 451], [267, 302], [302, 269], [269, 267], [350, 357], [357, 277], [277, 350], [350, 452], [452, 357], [357, 350], [299, 333], [333, 297], [297, 299], [396, 175], [175, 377], [377, 396], [280, 347], [347, 330], [330, 280], [269, 303], [303, 270], [270, 269], [151, 9], [9, 337], [337, 151], [344, 278], [278, 360], [360, 344], [424, 418], [418, 431], [431, 424], [270, 304], [304, 409], [409, 270], [272, 310], [310, 407], [407, 272], [322, 270], [270, 410], [410, 322], [449, 450], [450, 347], [347, 449], [432, 422], [422, 434], [434, 432], [18, 313], [313, 17], [17, 18], [291, 306], [306, 375], [375, 291], [259, 387], [387, 260], [260, 259], [424, 335], [335, 418], [418, 424], [434, 364], [364, 416], [416, 434], [391, 423], [423, 327], [327, 391], [301, 251], [251, 298], [298, 301], [275, 281], [281, 4], [4, 275], [254, 373], [373, 253], [253, 254], [375, 307], [307, 321], [321, 375], [280, 425], [425, 411], [411, 280], [200, 421], [421, 18], [18, 200], [335, 321], [321, 406], [406, 335], [321, 320], [320, 405], [405, 321], [314, 315], [315, 17], [17, 314], [423, 426], [426, 266], [266, 423], [396, 377], [377, 369], [369, 396], [270, 322], [322, 269], [269, 270], [413, 417], [417, 464], [464, 413], [385, 386], [386, 258], [258, 385], [248, 456], [456, 419], [419, 248], [298, 284], [284, 333], [333, 298], [168, 417], [417, 8], [8, 168], [448, 346], [346, 261], [261, 448], [417, 413], [413, 285], [285, 417], [326, 327], [327, 328], [328, 326], [277, 355], [355, 329], [329, 277], [309, 392], [392, 438], [438, 309], [381, 382], [382, 256], [256, 381], [279, 429], [429, 360], [360, 279], [365, 364], [364, 379], [379, 365], [355, 277], [277, 437], [437, 355], [282, 443], [443, 283], [283, 282], [281, 275], [275, 363], [363, 281], [395, 431], [431, 369], [369, 395], [299, 297], [297, 337], [337, 299], [335, 273], [273, 321], [321, 335], [348, 450], [450, 349], [349, 348], [359, 446], [446, 467], [467, 359], [283, 293], [293, 282], [282, 283], [250, 458], [458, 462], [462, 250], [300, 276], [276, 383], [383, 300], [292, 308], [308, 325], [325, 292], [283, 276], [276, 293], [293, 283], [264, 372], [372, 447], [447, 264], [346, 352], [352, 340], [340, 346], [354, 274], [274, 19], [19, 354], [363, 456], [456, 281], [281, 363], [426, 436], [436, 425], [425, 426], [380, 381], [381, 252], [252, 380], [267, 269], [269, 393], [393, 267], [421, 200], [200, 428], [428, 421], [371, 266], [266, 329], [329, 371], [432, 287], [287, 422], [422, 432], [290, 250], [250, 328], [328, 290], [385, 258], [258, 384], [384, 385], [446, 265], [265, 342], [342, 446], [386, 387], [387, 257], [257, 386], [422, 424], [424, 430], [430, 422], [445, 342], [342, 276], [276, 445], [422, 273], [273, 424], [424, 422], [306, 292], [292, 307], [307, 306], [352, 366], [366, 345], [345, 352], [268, 271], [271, 302], [302, 268], [358, 423], [423, 371], [371, 358], [327, 294], [294, 460], [460, 327], [331, 279], [279, 294], [294, 331], [303, 271], [271, 304], [304, 303], [436, 432], [432, 427], [427, 436], [304, 272], [272, 408], [408, 304], [395, 394], [394, 431], [431, 395], [378, 395], [395, 400], [400, 378], [296, 334], [334, 299], [299, 296], [6, 351], [351, 168], [168, 6], [376, 352], [352, 411], [411, 376], [307, 325], [325, 320], [320, 307], [285, 295], [295, 336], [336, 285], [320, 319], [319, 404], [404, 320], [329, 330], [330, 349], [349, 329], [334, 293], [293, 333], [333, 334], [366, 323], [323, 447], [447, 366], [316, 15], [15, 315], [315, 316], [331, 358], [358, 279], [279, 331], [317, 14], [14, 316], [316, 317], [8, 285], [285, 9], [9, 8], [277, 329], [329, 350], [350, 277], [253, 374], [374, 252], [252, 253], [319, 318], [318, 403], [403, 319], [351, 6], [6, 419], [419, 351], [324, 318], [318, 325], [325, 324], [397, 367], [367, 365], [365, 397], [288, 435], [435, 397], [397, 288], [278, 344], [344, 439], [439, 278], [310, 272], [272, 311], [311, 310], [248, 195], [195, 281], [281, 248], [375, 273], [273, 291], [291, 375], [175, 396], [396, 199], [199, 175], [312, 311], [311, 268], [268, 312], [276, 283], [283, 445], [445, 276], [390, 373], [373, 339], [339, 390], [295, 282], [282, 296], [296, 295], [448, 449], [449, 346], [346, 448], [356, 264], [264, 454], [454, 356], [337, 336], [336, 299], [299, 337], [337, 338], [338, 151], [151, 337], [294, 278], [278, 455], [455, 294], [308, 292], [292, 415], [415, 308], [429, 358], [358, 355], [355, 429], [265, 340], [340, 372], [372, 265], [352, 346], [346, 280], [280, 352], [295, 442], [442, 282], [282, 295], [354, 19], [19, 370], [370, 354], [285, 441], [441, 295], [295, 285], [195, 248], [248, 197], [197, 195], [457, 440], [440, 274], [274, 457], [301, 300], [300, 368], [368, 301], [417, 351], [351, 465], [465, 417], [251, 301], [301, 389], [389, 251], [394, 395], [395, 379], [379, 394], [399, 412], [412, 419], [419, 399], [410, 436], [436, 322], [322, 410], [326, 2], [2, 393], [393, 326], [354, 370], [370, 461], [461, 354], [393, 164], [164, 267], [267, 393], [268, 302], [302, 12], [12, 268], [312, 268], [268, 13], [13, 312], [298, 293], [293, 301], [301, 298], [265, 446], [446, 340], [340, 265], [280, 330], [330, 425], [425, 280], [322, 426], [426, 391], [391, 322], [420, 429], [429, 437], [437, 420], [393, 391], [391, 326], [326, 393], [344, 440], [440, 438], [438, 344], [458, 459], [459, 461], [461, 458], [364, 434], [434, 394], [394, 364], [428, 396], [396, 262], [262, 428], [274, 354], [354, 457], [457, 274], [317, 316], [316, 402], [402, 317], [316, 315], [315, 403], [403, 316], [315, 314], [314, 404], [404, 315], [314, 313], [313, 405], [405, 314], [313, 421], [421, 406], [406, 313], [323, 366], [366, 361], [361, 323], [292, 306], [306, 407], [407, 292], [306, 291], [291, 408], [408, 306], [291, 287], [287, 409], [409, 291], [287, 432], [432, 410], [410, 287], [427, 434], [434, 411], [411, 427], [372, 264], [264, 383], [383, 372], [459, 309], [309, 457], [457, 459], [366, 352], [352, 401], [401, 366], [1, 274], [274, 4], [4, 1], [418, 421], [421, 262], [262, 418], [331, 294], [294, 358], [358, 331], [435, 433], [433, 367], [367, 435], [392, 289], [289, 439], [439, 392], [328, 462], [462, 326], [326, 328], [94, 2], [2, 370], [370, 94], [289, 305], [305, 455], [455, 289], [339, 254], [254, 448], [448, 339], [359, 255], [255, 446], [446, 359], [254, 253], [253, 449], [449, 254], [253, 252], [252, 450], [450, 253], [252, 256], [256, 451], [451, 252], [256, 341], [341, 452], [452, 256], [414, 413], [413, 463], [463, 414], [286, 441], [441, 414], [414, 286], [286, 258], [258, 441], [441, 286], [258, 257], [257, 442], [442, 258], [257, 259], [259, 443], [443, 257], [259, 260], [260, 444], [444, 259], [260, 467], [467, 445], [445, 260], [309, 459], [459, 250], [250, 309], [305, 289], [289, 290], [290, 305], [305, 290], [290, 460], [460, 305], [401, 376], [376, 435], [435, 401], [309, 250], [250, 392], [392, 309], [376, 411], [411, 433], [433, 376], [453, 341], [341, 464], [464, 453], [357, 453], [453, 465], [465, 357], [343, 357], [357, 412], [412, 343], [437, 343], [343, 399], [399, 437], [344, 360], [360, 440], [440, 344], [420, 437], [437, 456], [456, 420], [360, 420], [420, 363], [363, 360], [361, 401], [401, 288], [288, 361], [265, 372], [372, 353], [353, 265], [390, 339], [339, 249], [249, 390], [339, 448], [448, 255], [255, 339]]);
P("matrixDataToMatrix", function(a) {
for (var b = a.getCols(), c = a.getRows(), d = a.getPackedDataList(), e = [], g = 0; g < c; g++)
e.push(Array(b));
for (g = 0; g < c; g++)
for (var f = 0; f < b; f++) {
var h = 1 === a.getLayout() ? g * b + f : f * c + g;
e[g][f] = d[h]
}
return e
});
P("VERSION", "0.4.1633559619");
}
).call(this);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment