diff --git a/index.html b/index.html
index 1006d30..3a3b7b7 100644
--- a/index.html
+++ b/index.html
@@ -2,65 +2,65 @@
-
-
- FLO Scout
-
+
+
+ FLO Scout
+
-
- Copied
-
-
-
-
Loading
-
-
-
-
+
+ Copied
+
+
+
+
Loading
+
+
+
+
-
-
+
+
-
+
-
-
+ function ta(a, b, c, d) {
+ a = I("flexsearch", "id" + a, sa, function (f) {
+ (f = f.data) && f.result && d(f.id, f.content, f.result, f.limit, f.where, f.cursor, f.suggest)
+ }, b);
+ const e = ma.toString();
+ c.id = b;
+ a.postMessage({
+ register: e,
+ options: c,
+ id: b
+ });
+ return a
+ }
+ const F = {
+ encode: "icase",
+ f: "forward",
+ split: /\W+/,
+ cache: !1,
+ async: !1,
+ g: !1,
+ D: !1,
+ a: !1,
+ b: 9,
+ threshold: 0,
+ depth: 0
+ },
+ ja = {
+ memory: {
+ encode: "extra",
+ f: "strict",
+ threshold: 0,
+ b: 1
+ },
+ speed: {
+ encode: "icase",
+ f: "strict",
+ threshold: 1,
+ b: 3,
+ depth: 2
+ },
+ match: {
+ encode: "extra",
+ f: "full",
+ threshold: 1,
+ b: 3
+ },
+ score: {
+ encode: "extra",
+ f: "strict",
+ threshold: 1,
+ b: 9,
+ depth: 4
+ },
+ balance: {
+ encode: "balance",
+ f: "strict",
+ threshold: 0,
+ b: 3,
+ depth: 3
+ },
+ fast: {
+ encode: "icase",
+ f: "strict",
+ threshold: 8,
+ b: 9,
+ depth: 1
+ }
+ },
+ aa = [];
+ let na = 0;
+ const ka = {},
+ la = {};
+ v.create = function (a, b) {
+ return new v(a, b)
+ };
+ v.registerMatcher = function (a) {
+ for (const b in a) a.hasOwnProperty(b) && aa.push(q(b), a[b]);
+ return this
+ };
+ v.registerEncoder = function (a, b) {
+ U[a] = b.bind(U);
+ return this
+ };
+ v.registerLanguage = function (a, b) {
+ ka[a] = b.filter;
+ la[a] = b.stemmer;
+ return this
+ };
+ v.encode =
+ function (a, b) {
+ return U[a](b)
+ };
+ v.prototype.init = function (a, b) {
+ this.v = [];
+ if (b) {
+ var c = b.preset;
+ a = b
+ } else a || (a = F), c = a.preset;
+ b = {};
+ M(a) ? (b = ja[a], a = {}) : c && (b = ja[c]);
+ if (c = a.worker)
+ if ("undefined" === typeof Worker) a.worker = !1, this.m = null;
+ else {
+ var d = parseInt(c, 10) || 4;
+ this.C = -1;
+ this.u = 0;
+ this.o = [];
+ this.F = null;
+ this.m = Array(d);
+ for (var e = 0; e < d; e++) this.m[e] = ta(this.id, e, a, K.bind(this))
+ }
+ this.f = a.tokenize || b.f || this.f || F.f;
+ this.split = a.split || this.split || F.split;
+ this.D = a.rtl || this.D || F.D;
+ this.async = "undefined" === typeof Promise ||
+ H(c = a.async) ? this.async || F.async : c;
+ this.g = H(c = a.worker) ? this.g || F.g : c;
+ this.threshold = H(c = a.threshold) ? b.threshold || this.threshold || F.threshold : c;
+ this.b = H(c = a.resolution) ? c = b.b || this.b || F.b : c;
+ c <= this.threshold && (this.b = this.threshold + 1);
+ this.depth = "strict" !== this.f || H(c = a.depth) ? b.depth || this.depth || F.depth : c;
+ this.w = (c = H(c = a.encode) ? b.encode || F.encode : c) && U[c] && U[c].bind(U) || (O(c) ? c : this.w || !1);
+ (c = a.matcher) && this.addMatcher(c);
+ if (c = (b = a.lang) || a.filter) {
+ M(c) && (c = ka[c]);
+ if (E(c)) {
+ d = this.w;
+ e = B();
+ for (var f =
+ 0; f < c.length; f++) {
+ var g = d ? d(c[f]) : c[f];
+ e[g] = 1
+ }
+ c = e
+ }
+ this.filter = c
+ }
+ if (c = b || a.stemmer) {
+ var h;
+ b = M(c) ? la[c] : c;
+ d = this.w;
+ e = [];
+ for (h in b) b.hasOwnProperty(h) && (f = d ? d(h) : h, e.push(q(f + "($|\\W)"), d ? d(b[h]) : b[h]));
+ this.stemmer = h = e
+ }
+ this.a = e = (c = a.doc) ? S(c) : this.a || F.a;
+ this.j = ia(this.b - (this.threshold || 0));
+ this.i = B();
+ this.c = B();
+ if (e) {
+ this.h = B();
+ a.doc = null;
+ h = e.index = {};
+ b = e.keys = [];
+ d = e.field;
+ f = e.tag;
+ E(e.id) || (e.id = e.id.split(":"));
+ if (f) {
+ this.G = B();
+ g = B();
+ if (d)
+ if (M(d)) g[d] = a;
+ else if (E(d))
+ for (let l = 0; l < d.length; l++) g[d[l]] =
+ a;
+ else J(d) && (g = d);
+ E(f) || (e.tag = f = [f]);
+ for (d = 0; d < f.length; d++) this.G[f[d]] = B();
+ this.I = f;
+ d = g
+ }
+ if (d) {
+ let l;
+ E(d) || (J(d) ? (l = d, e.field = d = Object.keys(d)) : e.field = d = [d]);
+ for (e = 0; e < d.length; e++) f = d[e], E(f) || (l && (a = l[f]), b[e] = f, d[e] = f.split(":")), h[f] = new v(a), h[f].h = this.h
+ }
+ }
+ this.B = !0;
+ this.l = (this.cache = c = H(c = a.cache) ? this.cache || F.cache : c) ? new ua(c) : !1;
+ return this
+ };
+ v.prototype.encode = function (a) {
+ a && aa.length && (a = Q(a, aa));
+ a && this.v.length && (a = Q(a, this.v));
+ a && this.w && (a = this.w(a));
+ a && this.stemmer && (a = Q(a, this.stemmer));
+ return a
+ };
+ v.prototype.addMatcher = function (a) {
+ const b = this.v;
+ for (const c in a) a.hasOwnProperty(c) && b.push(q(c), a[c]);
+ return this
+ };
+ v.prototype.add = function (a, b, c, d, e) {
+ if (this.a && J(a)) return this.A("add", a, b);
+ if (b && M(b) && (a || 0 === a)) {
+ var f = "@" + a;
+ if (this.c[f] && !d) return this.update(a, b);
+ if (this.g) return ++this.C >= this.m.length && (this.C = 0), this.m[this.C].postMessage({
+ add: !0,
+ id: a,
+ content: b
+ }), this.c[f] = "" + this.C, c && c(), this;
+ if (!e) {
+ if (this.async && "function" !== typeof importScripts) {
+ let r = this;
+ f = new Promise(function (w) {
+ setTimeout(function () {
+ r.add(a,
+ b, null, d, !0);
+ r = null;
+ w()
+ })
+ });
+ if (c) f.then(c);
+ else return f;
+ return this
+ }
+ if (c) return this.add(a, b, null, d, !0), c(), this
+ }
+ b = this.encode(b);
+ if (!b.length) return this;
+ c = this.f;
+ e = O(c) ? c(b) : b.split(this.split);
+ this.filter && (e = W(e, this.filter));
+ const p = B();
+ p._ctx = B();
+ const k = e.length,
+ u = this.threshold,
+ t = this.depth,
+ A = this.b,
+ z = this.j,
+ y = this.D;
+ for (let r = 0; r < k; r++) {
+ var g = e[r];
+ if (g) {
+ var h = g.length,
+ l = (y ? r + 1 : k - r) / k,
+ m = "";
+ switch (c) {
+ case "reverse":
+ case "both":
+ for (var n = h; --n;) m = g[n] + m, V(z, p, m, a, y ? 1 : (h - n) / h, l, u, A - 1);
+ m = "";
+ case "forward":
+ for (n = 0; n < h; n++) m += g[n], V(z, p, m, a, y ? (n + 1) / h : 1, l, u, A - 1);
+ break;
+ case "full":
+ for (n = 0; n < h; n++) {
+ const w = (y ? n + 1 : h - n) / h;
+ for (let x = h; x > n; x--) m = g.substring(n, x), V(z, p, m, a, w, l, u, A - 1)
+ }
+ break;
+ default:
+ if (h = V(z, p, g, a, 1, l, u, A - 1), t && 1 < k && h >= u)
+ for (h = p._ctx[g] || (p._ctx[g] = B()), g = this.i[g] || (this.i[g] = ia(A - (u || 0))), l = r - t, m = r + t + 1, 0 > l && (l = 0), m > k && (m = k); l < m; l++) l !== r && V(g, h, e[l], a, 0, A - (l < r ? r - l : l - r), u, A - 1)
+ }
+ }
+ }
+ this.c[f] = 1;
+ this.B = !1
+ }
+ return this
+ };
+ v.prototype.A = function (a, b, c) {
+ if (E(b))
+ for (let l = 0, m = b.length; l < m; l++) {
+ if (l ===
+ m - 1) return this.A(a, b[l], c);
+ this.A(a, b[l])
+ } else {
+ const l = this.a.index,
+ m = this.a.keys;
+ var d = this.a.tag,
+ e = this.a.id;
+ let n;
+ let p;
+ for (var f = 0; f < e.length; f++) n = (n || b)[e[f]];
+ if (d) {
+ for (e = 0; e < d.length; e++) {
+ var g = d[e];
+ var h = g.split(":");
+ for (f = 0; f < h.length; f++) p = (p || b)[h[f]];
+ p = "@" + p
+ }
+ h = this.G[g];
+ h = h[p] || (h[p] = [])
+ }
+ if ("remove" === a) {
+ delete this.h[n];
+ for (let k = 0, u = m.length; k < u; k++) {
+ if (k === u - 1) return l[m[k]].remove(n, c), this;
+ l[m[k]].remove(n)
+ }
+ }
+ e = this.a.field;
+ h && (h[h.length] = b);
+ this.h[n] = b;
+ for (let k = 0, u = e.length; k <
+ u; k++) {
+ d = e[k];
+ let t;
+ for (g = 0; g < d.length; g++) t = (t || b)[d[g]];
+ d = l[m[k]];
+ g = "add" === a ? d.add : d.update;
+ k === u - 1 ? g.call(d, n, t, c) : g.call(d, n, t)
+ }
+ }
+ return this
+ };
+ v.prototype.update = function (a, b, c) {
+ if (this.a && J(a)) return this.A("update", a, b);
+ this.c["@" + a] && M(b) && (this.remove(a), this.add(a, b, c, !0));
+ return this
+ };
+ v.prototype.remove = function (a, b, c) {
+ if (this.a && J(a)) return this.A("remove", a, b);
+ var d = "@" + a;
+ if (this.c[d]) {
+ if (this.g) return this.m[this.c[d]].postMessage({
+ remove: !0,
+ id: a
+ }), delete this.c[d], b && b(), this;
+ if (!c) {
+ if (this.async &&
+ "function" !== typeof importScripts) {
+ let e = this;
+ d = new Promise(function (f) {
+ setTimeout(function () {
+ e.remove(a, null, !0);
+ e = null;
+ f()
+ })
+ });
+ if (b) d.then(b);
+ else return d;
+ return this
+ }
+ if (b) return this.remove(a, null, !0), b(), this
+ }
+ for (b = 0; b < this.b - (this.threshold || 0); b++) ba(this.j[b], a);
+ this.depth && ba(this.i, a);
+ delete this.c[d];
+ this.B = !1
+ }
+ return this
+ };
+ let L;
+ v.prototype.search = function (a, b, c, d) {
+ if (J(b)) {
+ if (E(b))
+ for (var e = 0; e < b.length; e++) b[e].query = a;
+ else b.query = a;
+ a = b;
+ b = 1E3
+ } else b && O(b) ? (c = b, b = 1E3) : b || 0 === b || (b = 1E3);
+ let f = [],
+ g = a;
+ let h, l, m;
+ if (J(a) && !E(a)) {
+ c || (c = a.callback) && (g.callback = null);
+ l = a.sort;
+ h = a.page;
+ b = a.limit;
+ var n = a.threshold;
+ m = a.suggest;
+ a = a.query
+ }
+ if (this.a) {
+ n = this.a.index;
+ const y = g.where;
+ var p = g.bool || "or",
+ k = g.field;
+ let r = p;
+ let w, x;
+ if (k) E(k) || (k = [k]);
+ else if (E(g)) {
+ var u = g;
+ k = [];
+ r = [];
+ for (var t = 0; t < g.length; t++) d = g[t], e = d.bool || p, k[t] = d.field, r[t] = e, "not" === e ? w = !0 : "and" === e && (x = !0)
+ } else k = this.a.keys;
+ p = k.length;
+ for (t = 0; t < p; t++) u && (g = u[t]), h && !M(g) && (g.page = null, g.limit = 0), f[t] = n[k[t]].search(g, 0);
+ if (this.g) {
+ this.F =
+ c;
+ this.u = 0;
+ this.o = [];
+ for (n = 0; n < this.g; n++) this.m[n].postMessage({
+ search: !0,
+ limit: b,
+ content: g
+ });
+ return
+ }
+ if (c) return c(P.call(this, a, r, f, l, b, m, y, h, x, w));
+ if (this.async) {
+ const G = this;
+ return new Promise(function (C) {
+ Promise.all(f).then(function (D) {
+ C(P.call(G, a, r, D, l, b, m, y, h, x, w))
+ })
+ })
+ }
+ return P.call(this, a, r, f, l, b, m, y, h, x, w)
+ }
+ n || (n = this.threshold || 0);
+ if (!d) {
+ if (this.async && "function" !== typeof importScripts) {
+ let y = this;
+ n = new Promise(function (r) {
+ setTimeout(function () {
+ r(y.search(g, b, null, !0));
+ y = null
+ })
+ });
+ if (c) n.then(c);
+ else return n;
+ return this
+ }
+ if (c) return c(this.search(g, b, null, !0)), this
+ }
+ if (!a || !M(a)) return f;
+ g = a;
+ if (this.cache)
+ if (this.B) {
+ if (c = this.l.get(a)) return c
+ } else this.l.clear(), this.B = !0;
+ g = this.encode(g);
+ if (!g.length) return f;
+ c = this.f;
+ c = O(c) ? c(g) : g.split(this.split);
+ this.filter && (c = W(c, this.filter));
+ u = c.length;
+ d = !0;
+ e = [];
+ const A = B();
+ let z = 0;
+ 1 < u && (this.depth && "strict" === this.f ? p = !0 : c.sort(qa));
+ if (!p || (t = this.i)) {
+ const y = this.b;
+ for (; z < u; z++) {
+ let r = c[z];
+ if (r) {
+ if (p) {
+ if (!k)
+ if (t[r]) k = r, A[r] = 1;
+ else if (!m) return f;
+ if (m && z === u - 1 && !e.length) p = !1, r = k || r, A[r] = 0;
+ else if (!k) continue
+ }
+ if (!A[r]) {
+ const w = [];
+ let x = !1,
+ G = 0;
+ const C = p ? t[k] : this.j;
+ if (C) {
+ let D;
+ for (let N = 0; N < y - n; N++)
+ if (D = C[N] && C[N][r]) w[G++] = D, x = !0
+ }
+ if (x) k = r, e[e.length] = 1 < G ? w.concat.apply([], w) : w[0];
+ else if (!m) {
+ d = !1;
+ break
+ }
+ A[r] = 1
+ }
+ }
+ }
+ } else d = !1;
+ d && (f = ha(e, b, h, m));
+ this.cache && this.l.set(a, f);
+ return f
+ };
+ v.prototype.find = function (a, b) {
+ return this.where(a, b, 1)[0] || null
+ };
+ v.prototype.where = function (a, b, c, d) {
+ const e = this.h,
+ f = [];
+ let g = 0;
+ let h;
+ var l;
+ let m;
+ if (J(a)) {
+ c || (c =
+ b);
+ var n = Object.keys(a);
+ var p = n.length;
+ h = !1;
+ if (1 === p && "id" === n[0]) return [e[a.id]];
+ if ((l = this.I) && !d)
+ for (var k = 0; k < l.length; k++) {
+ var u = l[k],
+ t = a[u];
+ if (!H(t)) {
+ m = this.G[u]["@" + t];
+ if (0 === --p) return m;
+ n.splice(n.indexOf(u), 1);
+ delete a[u];
+ break
+ }
+ }
+ l = Array(p);
+ for (k = 0; k < p; k++) l[k] = n[k].split(":")
+ } else {
+ if (O(a)) {
+ b = d || Object.keys(e);
+ c = b.length;
+ for (n = 0; n < c; n++) p = e[b[n]], a(p) && (f[g++] = p);
+ return f
+ }
+ if (H(b)) return [e[a]];
+ if ("id" === a) return [e[b]];
+ n = [a];
+ p = 1;
+ l = [a.split(":")];
+ h = !0
+ }
+ d = m || d || Object.keys(e);
+ k = d.length;
+ for (u =
+ 0; u < k; u++) {
+ t = m ? d[u] : e[d[u]];
+ let A = !0;
+ for (let z = 0; z < p; z++) {
+ h || (b = a[n[z]]);
+ const y = l[z],
+ r = y.length;
+ let w = t;
+ if (1 < r)
+ for (let x = 0; x < r; x++) w = w[y[x]];
+ else w = w[y[0]];
+ if (w !== b) {
+ A = !1;
+ break
+ }
+ }
+ if (A && (f[g++] = t, c && g === c)) break
+ }
+ return f
+ };
+ v.prototype.info = function () {
+ if (this.g)
+ for (let a = 0; a < this.g; a++) this.m[a].postMessage({
+ info: !0,
+ id: this.id
+ });
+ else return {
+ id: this.id,
+ items: this.length,
+ cache: this.cache && this.cache.s ? this.cache.s.length : !1,
+ matcher: aa.length + (this.v ? this.v.length : 0),
+ worker: this.g,
+ threshold: this.threshold,
+ depth: this.depth,
+ resolution: this.b,
+ contextual: this.depth && "strict" === this.f
+ }
+ };
+ v.prototype.clear = function () {
+ return this.destroy().init()
+ };
+ v.prototype.destroy = function () {
+ this.cache && (this.l.clear(), this.l = null);
+ this.j = this.i = this.c = null;
+ if (this.a) {
+ const a = this.a.keys;
+ for (let b = 0; b < a.length; b++) this.a.index[a[b]].destroy();
+ this.a = this.h = null
+ }
+ return this
+ };
+ v.prototype.export = function () {
+ let a;
+ if (this.a) {
+ const b = this.a.keys;
+ a = Array(b.length + 1);
+ let c = 0;
+ for (; c < b.length; c++) {
+ const d = this.a.index[b[c]];
+ a[c] = [d.j, d.i, Object.keys(d.c)]
+ }
+ a[c] = this.h
+ } else a = [this.j, this.i, Object.keys(this.c)];
+ return JSON.stringify(a)
+ };
+ v.prototype.import = function (a) {
+ a = JSON.parse(a);
+ const b = B();
+ if (this.a) {
+ var c = this.a.keys,
+ d = c.length,
+ e = a[0][2];
+ for (var f = 0; f < e.length; f++) b[e[f]] = 1;
+ for (e = 0; e < d; e++) f = this.a.index[c[e]], f.j = a[e][0], f.i = a[e][1], f.c = b, f.h = a[d];
+ this.h = a[d]
+ } else {
+ c = a[2];
+ for (d = 0; d < c.length; d++) b[c[d]] = 1;
+ this.j = a[0];
+ this.i = a[1];
+ this.c = b
+ }
+ };
+ const U = {
+ icase: function (a) {
+ return a.toLowerCase()
+ },
+ simple: function () {
+ const a = [q("[\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5]"),
+ "a", q("[\u00e8\u00e9\u00ea\u00eb]"), "e", q("[\u00ec\u00ed\u00ee\u00ef]"), "i", q("[\u00f2\u00f3\u00f4\u00f5\u00f6\u0151]"), "o", q("[\u00f9\u00fa\u00fb\u00fc\u0171]"), "u", q("[\u00fd\u0177\u00ff]"), "y", q("\u00f1"), "n", q("[\u00e7c]"), "k", q("\u00df"), "s", q(" & "), " and ", q("[-/]"), " ", q("[^a-z0-9 ]"), "", q("\\s+"), " "
+ ];
+ return function (b) {
+ b = Q(b.toLowerCase(), a);
+ return " " === b ? "" : b
+ }
+ }(),
+ advanced: function () {
+ const a = [q("ae"), "a", q("ai"), "ei", q("ay"), "ei", q("ey"), "ei", q("oe"), "o", q("ue"), "u", q("ie"), "i", q("sz"),
+ "s", q("zs"), "s", q("sh"), "s", q("ck"), "k", q("cc"), "k", q("th"), "t", q("dt"), "t", q("ph"), "f", q("pf"), "f", q("ou"), "o", q("uo"), "u"
+ ];
+ return function (b, c) {
+ if (!b) return b;
+ b = this.simple(b);
+ 2 < b.length && (b = Q(b, a));
+ c || 1 < b.length && (b = ca(b));
+ return b
+ }
+ }(),
+ extra: function () {
+ const a = [q("p"), "b", q("z"), "s", q("[cgq]"), "k", q("n"), "m", q("d"), "t", q("[vw]"), "f", q("[aeiouy]"), ""];
+ return function (b) {
+ if (!b) return b;
+ b = this.advanced(b, !0);
+ if (1 < b.length) {
+ b = b.split(" ");
+ for (let c = 0; c < b.length; c++) {
+ const d = b[c];
+ 1 < d.length && (b[c] =
+ d[0] + Q(d.substring(1), a))
+ }
+ b = b.join(" ");
+ b = ca(b)
+ }
+ return b
+ }
+ }(),
+ balance: function () {
+ const a = [q("[-/]"), " ", q("[^a-z0-9 ]"), "", q("\\s+"), " "];
+ return function (b) {
+ return ca(Q(b.toLowerCase(), a))
+ }
+ }()
+ },
+ ua = function () {
+ function a(b) {
+ this.clear();
+ this.H = !0 !== b && b
+ }
+ a.prototype.clear = function () {
+ this.cache = B();
+ this.count = B();
+ this.index = B();
+ this.s = []
+ };
+ a.prototype.set = function (b, c) {
+ if (this.H && H(this.cache[b])) {
+ let d = this.s.length;
+ if (d === this.H) {
+ d--;
+ const e = this.s[d];
+ delete this.cache[e];
+ delete this.count[e];
+ delete this.index[e]
+ }
+ this.index[b] =
+ d;
+ this.s[d] = b;
+ this.count[b] = -1;
+ this.cache[b] = c;
+ this.get(b)
+ } else this.cache[b] = c
+ };
+ a.prototype.get = function (b) {
+ const c = this.cache[b];
+ if (this.H && c) {
+ var d = ++this.count[b];
+ const f = this.index;
+ let g = f[b];
+ if (0 < g) {
+ const h = this.s;
+ for (var e = g; this.count[h[--g]] <= d && -1 !== g;);
+ g++;
+ if (g !== e) {
+ for (d = e; d > g; d--) e = h[d - 1], h[d] = e, f[e] = d;
+ h[g] = b;
+ f[b] = g
+ }
+ }
+ }
+ return c
+ };
+ return a
+ }();
+ return v
+ }(function () {
+ const I = {},
+ R = "undefined" !== typeof Blob && "undefined" !== typeof URL && URL.createObjectURL;
+ return function (v, K, S, W, P) {
+ S = R ? URL.createObjectURL(new Blob(["(" +
+ S.toString() + ")()"
+ ], {
+ type: "text/javascript"
+ })) : v + ".min.js";
+ v += "-" + K;
+ I[v] || (I[v] = []);
+ I[v][P] = new Worker(S);
+ I[v][P].onmessage = W;
+ return I[v][P]
+ }
+ }()), this);
+