Bu script direkt olarak kurulamaz. Başka scriptler için bir kütüphanedir ve meta yönergeleri içerir // @require https://update.greasyfork.org/scripts/456423/1128886/SpeedReaderTools.js
- const SpeedReaderTools = (() => {
- function generateRandomString32(id) {
- function generateRandomString16() {
- let e = "";
- let n = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
-
- for (let i = 0; i < 16; i++) {
- e += n.charAt(Math.floor(Math.random() * n.length));
- }
-
- return e;
- }
-
- let n = generateRandomString16(),
- i = Array(Math.ceil(16 / id.length) + 1).join(id),
- r = i.substr(0, 16),
- e = i.substr(-16, 16),
- s = 0,
- h = 0,
- u = 0;
- return n.split("").map(function (t, i) {
- return s ^= n.charCodeAt(i),
- h ^= r.charCodeAt(i),
- u ^= e.charCodeAt(i),
- t + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_" [s + h + u & 63]
- }).join("");
- }
-
- function getDecryptedTable(t, i, n) { // id, randomString, table
- for (var r = t + ":" + i, e = 0, s = 0; s < r.length; s++)
- e += r.charCodeAt(s) << s % 16;
- 0 == (e &= 2147483647) && (e = 305419896);
- var h = "",
- u = e;
-
- for (let s = 0; s < n.length; s++) {
- u = u >>> 1 ^ 1210056708 & -(1 & u);
- var o = (n.charCodeAt(s) - 32 + u) % 94 + 32;
-
- h += String.fromCharCode(o)
- }
-
- try {
- return JSON.parse(h)
- } catch (t) {}
-
- return null
- }
-
- function getDecryptionKey(t, ctbl, ptbl) { // filename, ctbl, ptbl
- var i = [0, 0];
- if (t) {
- for (var n = t.lastIndexOf("/") + 1, r = t.length - n, e = 0; e < r; e++)
- i[e % 2] += t.charCodeAt(e + n);
- i[0] %= 8,
- i[1] %= 8
- }
- var s = ptbl[i[0]],
- h = ctbl[i[1]];
-
- return [h, s];
- }
-
- class CoordDecoder {
- constructor(t, i) {
- this.It = null;
- this.kt = [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, 63, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1];
- var n = t.match(/^=([0-9]+)-([0-9]+)([-+])([0-9]+)-([-_0-9A-Za-z]+)$/),
- r = i.match(/^=([0-9]+)-([0-9]+)([-+])([0-9]+)-([-_0-9A-Za-z]+)$/);
- if (null !== n && null !== r && n[1] === r[1] && n[2] === r[2] && n[4] === r[4] && "+" === n[3] && "-" === r[3] && (this.T = parseInt(n[1], 10),
- this.j = parseInt(n[2], 10),
- this.xt = parseInt(n[4], 10),
- !(8 < this.T || 8 < this.j || 64 < this.T * this.j))) {
- var e = this.T + this.j + this.T * this.j;
- if (n[5].length === e && r[5].length === e) {
- var s = this.St(n[5]),
- h = this.St(r[5]);
- this.Ct = s.n,
- this.At = s.t,
- this.Tt = h.n,
- this.Pt = h.t,
- this.It = [];
- for (var u = 0; u < this.T * this.j; u++)
- this.It.push(s.p[h.p[u]])
- }
- }
- }
-
- St(t) {
- var i, n = [],
- r = [],
- e = [];
- for (i = 0; i < this.T; i++)
- n.push(this.kt[t.charCodeAt(i)]);
- for (i = 0; i < this.j; i++)
- r.push(this.kt[t.charCodeAt(this.T + i)]);
- for (i = 0; i < this.T * this.j; i++)
- e.push(this.kt[t.charCodeAt(this.T + this.j + i)]);
- return {
- t: n,
- n: r,
- p: e
- }
- }
-
- getCoords(t) {
- for (var i = t.width - 2 * this.T * this.xt, n = t.height - 2 * this.j * this.xt, r = Math.floor((i + this.T - 1) / this.T), e = i - (this.T - 1) * r, s = Math.floor((n + this.j - 1) / this.j), h = n - (this.j - 1) * s, u = [], o = 0; o < this.T * this.j; ++o) {
- var a = o % this.T,
- f = Math.floor(o / this.T),
- c = this.xt + a * (r + 2 * this.xt) + (this.Tt[f] < a ? e - r : 0),
- l = this.xt + f * (s + 2 * this.xt) + (this.Pt[a] < f ? h - s : 0),
- v = this.It[o] % this.T,
- d = Math.floor(this.It[o] / this.T),
- b = v * r + (this.Ct[d] < v ? e - r : 0),
- g = d * s + (this.At[v] < d ? h - s : 0),
- p = this.Tt[f] === a ? e : r,
- m = this.Pt[a] === f ? h : s;
- 0 < i && 0 < n && u.push({
- srcX: c,
- srcY: l,
- width: p,
- height: m,
- destX: b,
- destY: g
- })
- }
- return u
- }
- }
-
- return {
- generateRandomString32,
- getDecryptedTable,
- getDecryptionKey,
- CoordDecoder
- }
- })();