Overview

URL checktext.org/
IP188.120.244.139
ASNAS29182 JSC ISPsystem
Location Russian Federation
Report completed2018-08-15 18:02:23 CEST
StatusLoading report..
urlQuery Alerts No alerts detected


Settings

UserAgentMozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Referer
Pool
Access Level


Intrusion Detection Systems

Suricata /w Emerging Threats Pro
Timestamp Severity Source IP Destination IP Alert
2018-08-15 18:01:53 CEST 1  188.120.244.139 Client IP ETPRO WEB_CLIENT Adobe Audition Session File Stack Buffer Overflow 2


Blacklists

MDL  No alerts detected
OpenPhish  No alerts detected
PhishTank  No alerts detected
Fortinet's Web Filter
Added / Verified Severity Host Comment
2018-08-15 2 checktext.org/ Malware
DNS-BH  No alerts detected
mnemonic secure dns  No alerts detected


Recent reports on same IP/ASN/Domain

Last 2 reports on IP: 188.120.244.139

Date UQ / IDS / BL URL IP
2018-06-25 21:10:40 +0200
0 - 1 - 0 www.checktext.org/ 188.120.244.139
2017-11-27 21:00:55 +0100
0 - 1 - 0 www.checktext.org/ 188.120.244.139

Last 10 reports on ASN: AS29182 JSC ISPsystem

Date UQ / IDS / BL URL IP
2018-11-19 05:09:29 +0100
0 - 1 - 0 introvent.ru/ 78.24.223.42
2018-11-19 00:24:20 +0100
0 - 8 - 0 rei.su/ 62.109.25.74
2018-11-18 18:33:40 +0100
0 - 0 - 35 mpmart.ru/ 94.250.251.129
2018-11-18 14:44:47 +0100
0 - 4 - 0 rp.spb.su/ 82.146.34.133
2018-11-18 14:12:39 +0100
0 - 4 - 0 selim13.su/ 62.109.14.83
2018-11-18 14:01:01 +0100
0 - 1 - 0 economlaza.ru/ 188.120.236.4
2018-11-18 09:38:51 +0100
0 - 0 - 0 https://zhitenev.ru/ 62.109.5.223
2018-11-18 07:06:03 +0100
3 - 2 - 12 klubnitka.com.ua/detskie-modeli 185.60.135.242
2018-11-18 07:06:01 +0100
0 - 3 - 1 vcr.cloudz.pw/download 149.154.66.238
2018-11-18 06:53:25 +0100
0 - 0 - 2 tsjee.ru/misc/ui/bkas/mybae/autolink/autolink (...) 82.146.32.56

Last 3 reports on domain: checktext.org

Date UQ / IDS / BL URL IP
2018-06-25 21:10:40 +0200
0 - 1 - 0 www.checktext.org/ 188.120.244.139
2017-11-27 21:00:55 +0100
0 - 1 - 0 www.checktext.org/ 188.120.244.139
2017-06-21 03:05:04 +0200
0 - 0 - 1 checktext.org/file.php 192.138.189.190


JavaScript

Executed Scripts (96)


Executed Evals (101)

#1 JavaScript::Eval (size: 76, repeated: 1) - SHA256: c55814621d41d421b959e77a338a10a7ee8fef651900b71a659f780275f587b7

                                        ((function() {
    var a = 2750826878;
    var b = -2158990509;
    return 426208 + '.' + (a + b)
})())
                                    

#2 JavaScript::Eval (size: 6634, repeated: 1) - SHA256: 5d985ce871dfbb14cb659cd2b27fad652cf47389b69f1a650daa84469586a20e

                                        (function() {
    "use strict";
    if (!JSZip) {
        throw "JSZip not defined";
    }
    var context = {};
    (function() {
        (function() {
            'use strict';
            var l = void 0,
                p = this;

            function q(c, d) {
                var a = c.split("."),
                    b = p;
                !(a[0] in b) && b.execScript && b.execScript("var " + a[0]);
                for (var e; a.length && (e = a.shift());) !a.length && d !== l ? b[e] = d : b = b[e] ? b[e] : b[e] = {}
            };
            var r = "undefined" !== typeof Uint8Array && "undefined" !== typeof Uint16Array && "undefined" !== typeof Uint32Array;

            function u(c) {
                var d = c.length,
                    a = 0,
                    b = Number.POSITIVE_INFINITY,
                    e, f, g, h, k, m, s, n, t;
                for (n = 0; n < d; ++n) c[n] > a && (a = c[n]), c[n] < b && (b = c[n]);
                e = 1 << a;
                f = new(r ? Uint32Array : Array)(e);
                g = 1;
                h = 0;
                for (k = 2; g <= a;) {
                    for (n = 0; n < d; ++n)
                        if (c[n] === g) {
                            m = 0;
                            s = h;
                            for (t = 0; t < g; ++t) m = m << 1 | s & 1, s >>= 1;
                            for (t = m; t < e; t += k) f[t] = g << 16 | n;
                            ++h
                        }++g;
                    h <<= 1;
                    k <<= 1
                }
                return [f, a, b]
            };

            function v(c, d) {
                this.g = [];
                this.h = 32768;
                this.c = this.f = this.d = this.k = 0;
                this.input = r ? new Uint8Array(c) : c;
                this.l = !1;
                this.i = w;
                this.p = !1;
                if (d || !(d = {})) d.index && (this.d = d.index), d.bufferSize && (this.h = d.bufferSize), d.bufferType && (this.i = d.bufferType), d.resize && (this.p = d.resize);
                switch (this.i) {
                    case x:
                        this.a = 32768;
                        this.b = new(r ? Uint8Array : Array)(32768 + this.h + 258);
                        break;
                    case w:
                        this.a = 0;
                        this.b = new(r ? Uint8Array : Array)(this.h);
                        this.e = this.u;
                        this.m = this.r;
                        this.j = this.s;
                        break;
                    default:
                        throw Error("invalid inflate mode");
                }
            }
            var x = 0,
                w = 1;
            v.prototype.t = function() {
                for (; !this.l;) {
                    var c = y(this, 3);
                    c & 1 && (this.l = !0);
                    c >>>= 1;
                    switch (c) {
                        case 0:
                            var d = this.input,
                                a = this.d,
                                b = this.b,
                                e = this.a,
                                f = l,
                                g = l,
                                h = l,
                                k = b.length,
                                m = l;
                            this.c = this.f = 0;
                            f = d[a++];
                            if (f === l) throw Error("invalid uncompressed block header: LEN (first byte)");
                            g = f;
                            f = d[a++];
                            if (f === l) throw Error("invalid uncompressed block header: LEN (second byte)");
                            g |= f << 8;
                            f = d[a++];
                            if (f === l) throw Error("invalid uncompressed block header: NLEN (first byte)");
                            h = f;
                            f = d[a++];
                            if (f === l) throw Error("invalid uncompressed block header: NLEN (second byte)");
                            h |= f << 8;
                            if (g === ~h) throw Error("invalid uncompressed block header: length verify");
                            if (a + g > d.length) throw Error("input buffer is broken");
                            switch (this.i) {
                                case x:
                                    for (; e + g > b.length;) {
                                        m = k - e;
                                        g -= m;
                                        if (r) b.set(d.subarray(a, a + m), e), e += m, a += m;
                                        else
                                            for (; m--;) b[e++] = d[a++];
                                        this.a = e;
                                        b = this.e();
                                        e = this.a
                                    }
                                    break;
                                case w:
                                    for (; e + g > b.length;) b = this.e({
                                        o: 2
                                    });
                                    break;
                                default:
                                    throw Error("invalid inflate mode");
                            }
                            if (r) b.set(d.subarray(a, a + g), e), e += g, a += g;
                            else
                                for (; g--;) b[e++] = d[a++];
                            this.d = a;
                            this.a = e;
                            this.b = b;
                            break;
                        case 1:
                            this.j(z, A);
                            break;
                        case 2:
                            B(this);
                            break;
                        default:
                            throw Error("unknown BTYPE: " + c);
                    }
                }
                return this.m()
            };
            var C = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15],
                D = r ? new Uint16Array(C) : C,
                E = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 258, 258],
                F = r ? new Uint16Array(E) : E,
                G = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 0, 0],
                H = r ? new Uint8Array(G) : G,
                I = [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577],
                J = r ? new Uint16Array(I) : I,
                K = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13],
                L = r ? new Uint8Array(K) : K,
                M = new(r ? Uint8Array : Array)(288),
                N, O;
            N = 0;
            for (O = M.length; N < O; ++N) M[N] = 143 >= N ? 8 : 255 >= N ? 9 : 279 >= N ? 7 : 8;
            var z = u(M),
                P = new(r ? Uint8Array : Array)(30),
                Q, R;
            Q = 0;
            for (R = P.length; Q < R; ++Q) P[Q] = 5;
            var A = u(P);

            function y(c, d) {
                for (var a = c.f, b = c.c, e = c.input, f = c.d, g; b < d;) {
                    g = e[f++];
                    if (g === l) throw Error("input buffer is broken");
                    a |= g << b;
                    b += 8
                }
                g = a & (1 << d) - 1;
                c.f = a >>> d;
                c.c = b - d;
                c.d = f;
                return g
            }

            function S(c, d) {
                for (var a = c.f, b = c.c, e = c.input, f = c.d, g = d[0], h = d[1], k, m, s; b < h;) {
                    k = e[f++];
                    if (k === l) break;
                    a |= k << b;
                    b += 8
                }
                m = g[a & (1 << h) - 1];
                s = m >>> 16;
                c.f = a >> s;
                c.c = b - s;
                c.d = f;
                return m & 65535
            }

            function B(c) {
                function d(a, c, b) {
                    var d, f, e, g;
                    for (g = 0; g < a;) switch (d = S(this, c), d) {
                        case 16:
                            for (e = 3 + y(this, 2); e--;) b[g++] = f;
                            break;
                        case 17:
                            for (e = 3 + y(this, 3); e--;) b[g++] = 0;
                            f = 0;
                            break;
                        case 18:
                            for (e = 11 + y(this, 7); e--;) b[g++] = 0;
                            f = 0;
                            break;
                        default:
                            f = b[g++] = d
                    }
                    return b
                }
                var a = y(c, 5) + 257,
                    b = y(c, 5) + 1,
                    e = y(c, 4) + 4,
                    f = new(r ? Uint8Array : Array)(D.length),
                    g, h, k, m;
                for (m = 0; m < e; ++m) f[D[m]] = y(c, 3);
                g = u(f);
                h = new(r ? Uint8Array : Array)(a);
                k = new(r ? Uint8Array : Array)(b);
                c.j(u(d.call(c, a, g, h)), u(d.call(c, b, g, k)))
            }
            v.prototype.j = function(c, d) {
                var a = this.b,
                    b = this.a;
                this.n = c;
                for (var e = a.length - 258, f, g, h, k; 256 !== (f = S(this, c));)
                    if (256 > f) b >= e && (this.a = b, a = this.e(), b = this.a), a[b++] = f;
                    else {
                        g = f - 257;
                        k = F[g];
                        0 < H[g] && (k += y(this, H[g]));
                        f = S(this, d);
                        h = J[f];
                        0 < L[f] && (h += y(this, L[f]));
                        b >= e && (this.a = b, a = this.e(), b = this.a);
                        for (; k--;) a[b] = a[b++-h]
                    }
                for (; 8 <= this.c;) this.c -= 8, this.d--;
                this.a = b
            };
            v.prototype.s = function(c, d) {
                var a = this.b,
                    b = this.a;
                this.n = c;
                for (var e = a.length, f, g, h, k; 256 !== (f = S(this, c));)
                    if (256 > f) b >= e && (a = this.e(), e = a.length), a[b++] = f;
                    else {
                        g = f - 257;
                        k = F[g];
                        0 < H[g] && (k += y(this, H[g]));
                        f = S(this, d);
                        h = J[f];
                        0 < L[f] && (h += y(this, L[f]));
                        b + k > e && (a = this.e(), e = a.length);
                        for (; k--;) a[b] = a[b++-h]
                    }
                for (; 8 <= this.c;) this.c -= 8, this.d--;
                this.a = b
            };
            v.prototype.e = function() {
                var c = new(r ? Uint8Array : Array)(this.a - 32768),
                    d = this.a - 32768,
                    a, b, e = this.b;
                if (r) c.set(e.subarray(32768, c.length));
                else {
                    a = 0;
                    for (b = c.length; a < b; ++a) c[a] = e[a + 32768]
                }
                this.g.push(c);
                this.k += c.length;
                if (r) e.set(e.subarray(d, d + 32768));
                else
                    for (a = 0; 32768 > a; ++a) e[a] = e[d + a];
                this.a = 32768;
                return e
            };
            v.prototype.u = function(c) {
                var d, a = this.input.length / this.d + 1 | 0,
                    b, e, f, g = this.input,
                    h = this.b;
                c && ("number" === typeof c.o && (a = c.o), "number" === typeof c.q && (a += c.q));
                2 > a ? (b = (g.length - this.d) / this.n[2], f = 258 * (b / 2) | 0, e = f < h.length ? h.length + f : h.length << 1) : e = h.length * a;
                r ? (d = new Uint8Array(e), d.set(h)) : d = h;
                return this.b = d
            };
            v.prototype.m = function() {
                var c = 0,
                    d = this.b,
                    a = this.g,
                    b, e = new(r ? Uint8Array : Array)(this.k + (this.a - 32768)),
                    f, g, h, k;
                if (0 === a.length) return r ? this.b.subarray(32768, this.a) : this.b.slice(32768, this.a);
                f = 0;
                for (g = a.length; f < g; ++f) {
                    b = a[f];
                    h = 0;
                    for (k = b.length; h < k; ++h) e[c++] = b[h]
                }
                f = 32768;
                for (g = this.a; f < g; ++f) e[c++] = d[f];
                this.g = [];
                return this.buffer = e
            };
            v.prototype.r = function() {
                var c, d = this.a;
                r ? this.p ? (c = new Uint8Array(d), c.set(this.b.subarray(0, d))) : c = this.b.subarray(0, d) : (this.b.length > d && (this.b.length = d), c = this.b);
                return this.buffer = c
            };
            q("Zlib.RawInflate", v);
            q("Zlib.RawInflate.prototype.decompress", v.prototype.t);
            var T = {
                    ADAPTIVE: w,
                    BLOCK: x
                },
                U, V, W, X;
            if (Object.keys) U = Object.keys(T);
            else
                for (V in U = [], W = 0, T) U[W++] = V;
            W = 0;
            for (X = U.length; W < X; ++W) V = U[W], q("Zlib.RawInflate.BufferType." + V, T[V]);
        }).call(this);
    }).call(context);
    var uncompress = function(input) {
        var inflate = new context.Zlib.RawInflate(input);
        return inflate.decompress();
    };
    var USE_TYPEDARRAY = (typeof Uint8Array !== 'undefined') && (typeof Uint16Array !== 'undefined') && (typeof Uint32Array !== 'undefined');
    if (!JSZip.compressions["DEFLATE"]) {
        JSZip.compressions["DEFLATE"] = {
            magic: "\x08\x00",
            uncompress: uncompress,
            uncompressInputType: USE_TYPEDARRAY ? "uint8array" : "array"
        };
    } else {
        JSZip.compressions["DEFLATE"].uncompress = uncompress;
        JSZip.compressions["DEFLATE"].uncompressInputType = USE_TYPEDARRAY ? "uint8array" : "array";
    }
})();
                                    

#3 JavaScript::Eval (size: 7180, repeated: 1) - SHA256: f88724ceca1e27d291c1b938c4cb32d0a24d1dc71535552124f0818241a6f285

                                        (function(f) {
    var A = f.Chart,
        t = f.addEvent,
        B = f.removeEvent,
        l = f.createElement,
        o = f.discardElement,
        v = f.css,
        k = f.merge,
        r = f.each,
        p = f.extend,
        D = Math.max,
        j = document,
        C = window,
        E = f.isTouchDevice,
        F = f.Renderer.prototype.symbols,
        s = f.getOptions(),
        y;
    p(s.lang, {
        printChart: "Print chart",
        downloadPNG: "Download PNG image",
        downloadJPEG: "Download JPEG image",
        downloadPDF: "Download PDF document",
        downloadSVG: "Download SVG vector image",
        contextButtonTitle: "Chart context menu"
    });
    s.navigation = {
        menuStyle: {
            border: "1px solid #A0A0A0",
            background: "#FFFFFF",
            padding: "5px 0"
        },
        menuItemStyle: {
            padding: "0 10px",
            background: "none",
            color: "#303030",
            fontSize: E ? "14px" : "11px"
        },
        menuItemHoverStyle: {
            background: "#4572A5",
            color: "#FFFFFF"
        },
        buttonOptions: {
            symbolFill: "#E0E0E0",
            symbolSize: 14,
            symbolStroke: "#666",
            symbolStrokeWidth: 3,
            symbolX: 12.5,
            symbolY: 10.5,
            align: "right",
            buttonSpacing: 3,
            height: 22,
            theme: {
                fill: "white",
                stroke: "none"
            },
            verticalAlign: "top",
            width: 24
        }
    };
    s.exporting = {
        type: "image/png",
        url: "http://export.highcharts.com/",
        buttons: {
            contextButton: {
                menuClassName: "highcharts-contextmenu",
                symbol: "menu",
                _titleKey: "contextButtonTitle",
                menuItems: [{
                    textKey: "printChart",
                    onclick: function() {
                        this.print()
                    }
                }, {
                    separator: !0
                }, {
                    textKey: "downloadPNG",
                    onclick: function() {
                        this.exportChart()
                    }
                }, {
                    textKey: "downloadJPEG",
                    onclick: function() {
                        this.exportChart({
                            type: "image/jpeg"
                        })
                    }
                }, {
                    textKey: "downloadPDF",
                    onclick: function() {
                        this.exportChart({
                            type: "application/pdf"
                        })
                    }
                }, {
                    textKey: "downloadSVG",
                    onclick: function() {
                        this.exportChart({
                            type: "image/svg+xml"
                        })
                    }
                }]
            }
        }
    };
    f.post = function(b, a, d) {
        var c, b = l("form", k({
            method: "post",
            action: b,
            enctype: "multipart/form-data"
        }, d), {
            display: "none"
        }, j.body);
        for (c in a) l("input", {
            type: "hidden",
            name: c,
            value: a[c]
        }, null, b);
        b.submit();
        o(b)
    };
    p(A.prototype, {
        getSVG: function(b) {
            var a = this,
                d, c, z, h, g = k(a.options, b);
            if (!j.createElementNS) j.createElementNS = function(a, b) {
                return j.createElement(b)
            };
            b = l("div", null, {
                position: "absolute",
                top: "-9999em",
                width: a.chartWidth + "px",
                height: a.chartHeight + "px"
            }, j.body);
            c = a.renderTo.style.width;
            h = a.renderTo.style.height;
            c = g.exporting.sourceWidth || g.chart.width || /px$/.test(c) && parseInt(c, 10) || 600;
            h = g.exporting.sourceHeight || g.chart.height || /px$/.test(h) && parseInt(h, 10) || 400;
            p(g.chart, {
                animation: !1,
                renderTo: b,
                forExport: !0,
                width: c,
                height: h
            });
            g.exporting.enabled = !1;
            g.series = [];
            r(a.series, function(a) {
                z = k(a.options, {
                    animation: !1,
                    showCheckbox: !1,
                    visible: a.visible
                });
                z.isInternal || g.series.push(z)
            });
            d = new f.Chart(g, a.callback);
            r(["xAxis", "yAxis"], function(b) {
                r(a[b], function(a, c) {
                    var g = d[b][c],
                        f = a.getExtremes(),
                        h = f.userMin,
                        f = f.userMax;
                    g && (h !== void 0 || f !== void 0) && g.setExtremes(h, f, !0, !1)
                })
            });
            c = d.container.innerHTML;
            g = null;
            d.destroy();
            o(b);
            c = c.replace(/zIndex="[^"]+"/g, "").replace(/isShadow="[^"]+"/g, "").replace(/symbolName="[^"]+"/g, "").replace(/jQuery[0-9]+="[^"]+"/g, "").replace(/url\([^#]+#/g, "url(#").replace(/<svg /, '<svg xmlns:xlink="http://www.w3.org/1999/xlink" ').replace(/ href=/g, " xlink:href=").replace(/\n/, " ").replace(/<\/svg>.*?$/, "</svg>").replace(/&nbsp;/g, "�").replace(/&shy;/g, "�").replace(/<IMG /g, "<image ").replace(/height=([^" ]+)/g, 'height="$1"').replace(/width=([^" ]+)/g, 'width="$1"').replace(/hc-svg-href="([^"]+)">/g, 'xlink:href="$1"/>').replace(/id=([^" >]+)/g, 'id="$1"').replace(/class=([^" >]+)/g, 'class="$1"').replace(/ transform /g, " ").replace(/:(path|rect)/g, "$1").replace(/style="([^"]+)"/g, function(a) {
                return a.toLowerCase()
            });
            return c = c.replace(/(url\(#highcharts-[0-9]+)&quot;/g, "$1").replace(/&quot;/g, "'")
        },
        exportChart: function(b, a) {
            var b = b || {},
                d = this.options.exporting,
                d = this.getSVG(k({
                    chart: {
                        borderRadius: 0
                    }
                }, d.chartOptions, a, {
                    exporting: {
                        sourceWidth: b.sourceWidth || d.sourceWidth,
                        sourceHeight: b.sourceHeight || d.sourceHeight
                    }
                })),
                b = k(this.options.exporting, b);
            f.post(b.url, {
                filename: b.filename || "chart",
                type: b.type,
                width: b.width || 0,
                scale: b.scale || 2,
                svg: d
            }, b.formAttributes)
        },
        print: function() {
            var b = this,
                a = b.container,
                d = [],
                c = a.parentNode,
                f = j.body,
                h = f.childNodes;
            if (!b.isPrinting) b.isPrinting = !0, r(h, function(a, b) {
                if (a.nodeType === 1) d[b] = a.style.display, a.style.display = "none"
            }), f.appendChild(a), C.focus(), C.print(), setTimeout(function() {
                c.appendChild(a);
                r(h, function(a, b) {
                    if (a.nodeType === 1) a.style.display = d[b]
                });
                b.isPrinting = !1
            }, 1E3)
        },
        contextMenu: function(b, a, d, c, f, h, g) {
            var e = this,
                k = e.options.navigation,
                q = k.menuItemStyle,
                m = e.chartWidth,
                n = e.chartHeight,
                j = "cache-" + b,
                i = e[j],
                u = D(f, h),
                w, x, o, s = function(a) {
                    e.pointer.inClass(a.target, b) || x()
                };
            if (!i) e[j] = i = l("div", {
                className: b
            }, {
                position: "absolute",
                zIndex: 1E3,
                padding: u + "px"
            }, e.container), w = l("div", null, p({
                MozBoxShadow: "3px 3px 10px #888",
                WebkitBoxShadow: "3px 3px 10px #888",
                boxShadow: "3px 3px 10px #888"
            }, k.menuStyle), i), x = function() {
                v(i, {
                    display: "none"
                });
                g && g.setState(0);
                e.openMenu = !1
            }, t(i, "mouseleave", function() {
                o = setTimeout(x, 500)
            }), t(i, "mouseenter", function() {
                clearTimeout(o)
            }), t(document, "mouseup", s), t(e, "destroy", function() {
                B(document, "mouseup", s)
            }), r(a, function(a) {
                if (a) {
                    var b = a.separator ? l("hr", null, null, w) : l("div", {
                        onmouseover: function() {
                            v(this, k.menuItemHoverStyle)
                        },
                        onmouseout: function() {
                            v(this, q)
                        },
                        onclick: function() {
                            x();
                            a.onclick.apply(e, arguments)
                        },
                        innerHTML: a.text || e.options.lang[a.textKey]
                    }, p({
                        cursor: "pointer"
                    }, q), w);
                    e.exportDivElements.push(b)
                }
            }), e.exportDivElements.push(w, i), e.exportMenuWidth = i.offsetWidth, e.exportMenuHeight = i.offsetHeight;
            a = {
                display: "block"
            };
            d + e.exportMenuWidth > m ? a.right = m - d - f - u + "px" : a.left = d - u + "px";
            c + h + e.exportMenuHeight > n && g.alignOptions.verticalAlign !== "top" ? a.bottom = n - c - u + "px" : a.top = c + h - u + "px";
            v(i, a);
            e.openMenu = !0
        },
        addButton: function(b) {
            var a = this,
                d = a.renderer,
                c = k(a.options.navigation.buttonOptions, b),
                j = c.onclick,
                h = c.menuItems,
                g, e, l = {
                    stroke: c.symbolStroke,
                    fill: c.symbolFill
                },
                q = c.symbolSize || 12;
            if (!a.btnCount) a.btnCount = 0;
            if (!a.exportDivElements) a.exportDivElements = [], a.exportSVGElements = [];
            if (c.enabled !== !1) {
                var m = c.theme,
                    n = m.states,
                    o = n && n.hover,
                    n = n && n.select,
                    i;
                delete m.states;
                j ? i = function() {
                    j.apply(a, arguments)
                } : h && (i = function() {
                    a.contextMenu(e.menuClassName, h, e.translateX, e.translateY, e.width, e.height, e);
                    e.setState(2)
                });
                c.text && c.symbol ? m.paddingLeft = f.pick(m.paddingLeft, 25) : c.text || p(m, {
                    width: c.width,
                    height: c.height,
                    padding: 0
                });
                e = d.button(c.text, 0, 0, i, m, o, n).attr({
                    title: a.options.lang[c._titleKey],
                    "stroke-linecap": "round"
                });
                e.menuClassName = b.menuClassName || "highcharts-menu-" + a.btnCount++;
                c.symbol && (g = d.symbol(c.symbol, c.symbolX - q / 2, c.symbolY - q / 2, q, q).attr(p(l, {
                    "stroke-width": c.symbolStrokeWidth || 1,
                    zIndex: 1
                })).add(e));
                e.add().align(p(c, {
                    width: e.width,
                    x: f.pick(c.x, y)
                }), !0, "spacingBox");
                y += (e.width + c.buttonSpacing) * (c.align === "right" ? -1 : 1);
                a.exportSVGElements.push(e, g)
            }
        },
        destroyExport: function(b) {
            var b = b.target,
                a, d;
            for (a = 0; a < b.exportSVGElements.length; a++)
                if (d = b.exportSVGElements[a]) d.onclick = d.ontouchstart = null, b.exportSVGElements[a] = d.destroy();
            for (a = 0; a < b.exportDivElements.length; a++) d = b.exportDivElements[a], B(d, "mouseleave"), b.exportDivElements[a] = d.onmouseout = d.onmouseover = d.ontouchstart = d.onclick = null, o(d)
        }
    });
    F.menu = function(b, a, d, c) {
        return ["M", b, a + 2.5, "L", b + d, a + 2.5, "M", b, a + c / 2 + 0.5, "L", b + d, a + c / 2 + 0.5, "M", b, a + c - 1.5, "L", b + d, a + c - 1.5]
    };
    A.prototype.callbacks.push(function(b) {
        var a, d = b.options.exporting,
            c = d.buttons;
        y = 0;
        if (d.enabled !== !1) {
            for (a in c) b.addButton(c[a]);
            t(b, "destroy", b.destroyExport)
        }
    })
})(Highcharts);
                                    

#4 JavaScript::Eval (size: 5806, repeated: 1) - SHA256: 8d1e0de076a96927e5854220eebfcf72e052c0c3785c40cf879074cc693d7ebd

                                        (function(jsPDFAPI) {
    'use strict';
    var fontName, fontSize, fontStyle, padding = 3,
        margin = 13,
        headerFunction, lastCellPos = {
            x: undefined,
            y: undefined,
            w: undefined,
            h: undefined,
            ln: undefined
        },
        pages = 1,
        setLastCellPosition = function(x, y, w, h, ln) {
            lastCellPos = {
                'x': x,
                'y': y,
                'w': w,
                'h': h,
                'ln': ln
            };
        },
        getLastCellPosition = function() {
            return lastCellPos;
        };
    jsPDFAPI.setHeaderFunction = function(func) {
        headerFunction = func;
    };
    jsPDFAPI.getTextDimensions = function(txt) {
        fontName = this.internal.getFont().fontName;
        fontSize = this.table_font_size || this.internal.getFontSize();
        fontStyle = this.internal.getFont().fontStyle;
        var px2pt = 0.264583 * 72 / 25.4,
            dimensions, text;
        text = document.createElement('font');
        text.id = "jsPDFCell";
        text.style.fontStyle = fontStyle;
        text.style.fontName = fontName;
        text.style.fontSize = fontSize + 'pt';
        text.innerText = txt;
        document.body.appendChild(text);
        dimensions = {
            w: (text.offsetWidth + 1) * px2pt,
            h: (text.offsetHeight + 1) * px2pt
        };
        document.body.removeChild(text);
        return dimensions;
    };
    jsPDFAPI.cellAddPage = function() {
        this.addPage();
        setLastCellPosition(this.margins.left, this.margins.top, undefined, undefined);
        pages += 1;
    };
    jsPDFAPI.cellInitialize = function() {
        lastCellPos = {
            x: undefined,
            y: undefined,
            w: undefined,
            h: undefined,
            ln: undefined
        };
        pages = 1;
    };
    jsPDFAPI.cell = function(x, y, w, h, txt, ln, align) {
        var curCell = getLastCellPosition();
        if (curCell.ln !== undefined) {
            if (curCell.ln === ln) {
                x = curCell.x + curCell.w;
                y = curCell.y;
            } else {
                if ((curCell.y + curCell.h + h + margin) >= this.internal.pageSize.height - this.margins.bottom) {
                    this.cellAddPage();
                    if (this.printHeaders && this.tableHeaderRow) {
                        this.printHeaderRow(ln, true);
                    }
                }
                y = (getLastCellPosition().y + getLastCellPosition().h);
            }
        }
        if (txt[0] !== undefined) {
            if (this.printingHeaderRow) {
                this.rect(x, y, w, h, 'FD');
            } else {
                this.rect(x, y, w, h);
            }
            if (align === 'right') {
                if (txt instanceof Array) {
                    for (var i = 0; i < txt.length; i++) {
                        var currentLine = txt[i];
                        var textSize = this.getStringUnitWidth(currentLine) * this.internal.getFontSize();
                        this.text(currentLine, x + w - textSize - padding, y + this.internal.getLineHeight() * (i + 1));
                    }
                }
            } else {
                this.text(txt, x + padding, y + this.internal.getLineHeight());
            }
        }
        setLastCellPosition(x, y, w, h, ln);
        return this;
    };
    jsPDFAPI.arrayMax = function(array, comparisonFn) {
        var max = array[0],
            i, ln, item;
        for (i = 0, ln = array.length; i < ln; i += 1) {
            item = array[i];
            if (comparisonFn) {
                if (comparisonFn(max, item) === -1) {
                    max = item;
                }
            } else {
                if (item > max) {
                    max = item;
                }
            }
        }
        return max;
    };
    jsPDFAPI.table = function(x, y, data, headers, config) {
        if (!data) {
            throw 'No data for PDF table';
        }
        var headerNames = [],
            headerPrompts = [],
            header, i, ln, cln, columnMatrix = {},
            columnWidths = {},
            columnData, column, columnMinWidths = [],
            j, tableHeaderConfigs = [],
            model, jln, func, autoSize = false,
            printHeaders = true,
            fontSize = 12,
            margins = {
                left: 0,
                top: 0,
                bottom: 0,
                width: this.internal.pageSize.width
            };
        if (config) {
            if (config.autoSize === true) {
                autoSize = true;
            }
            if (config.printHeaders === false) {
                printHeaders = false;
            }
            if (config.fontSize) {
                fontSize = config.fontSize;
            }
            if (config.margins) {
                margins = config.margins;
            }
        }
        this.lnMod = 0;
        lastCellPos = {
            x: undefined,
            y: undefined,
            w: undefined,
            h: undefined,
            ln: undefined
        }, pages = 1;
        this.printHeaders = printHeaders;
        this.margins = margins;
        this.setFontSize(fontSize);
        this.table_font_size = fontSize;
        if (headers === undefined || (headers === null)) {
            headerNames = Object.keys(data[0]);
        } else if (headers[0] && (typeof headers[0] !== 'string')) {
            var px2pt = 0.264583 * 72 / 25.4;
            for (i = 0, ln = headers.length; i < ln; i += 1) {
                header = headers[i];
                headerNames.push(header.name);
                headerPrompts.push(header.prompt);
                columnWidths[header.name] = header.width * px2pt;
            }
        } else {
            headerNames = headers;
        }
        if (autoSize) {
            func = function(rec) {
                return rec[header];
            };
            for (i = 0, ln = headerNames.length; i < ln; i += 1) {
                header = headerNames[i];
                columnMatrix[header] = data.map(func);
                columnMinWidths.push(this.getTextDimensions(headerPrompts[i] || header).w);
                column = columnMatrix[header];
                for (j = 0, cln = column.length; j < cln; j += 1) {
                    columnData = column[j];
                    columnMinWidths.push(this.getTextDimensions(columnData).w);
                }
                columnWidths[header] = jsPDFAPI.arrayMax(columnMinWidths);
            }
        }
        if (printHeaders) {
            var lineHeight = this.calculateLineHeight(headerNames, columnWidths, headerPrompts.length ? headerPrompts : headerNames);
            for (i = 0, ln = headerNames.length; i < ln; i += 1) {
                header = headerNames[i];
                tableHeaderConfigs.push([x, y, columnWidths[header], lineHeight, String(headerPrompts.length ? headerPrompts[i] : header)]);
            }
            this.setTableHeaderRow(tableHeaderConfigs);
            this.printHeaderRow(1, false);
        }
        for (i = 0, ln = data.length; i < ln; i += 1) {
            var lineHeight;
            model = data[i];
            lineHeight = this.calculateLineHeight(headerNames, columnWidths, model);
            for (j = 0, jln = headerNames.length; j < jln; j += 1) {
                header = headerNames[j];
                this.cell(x, y, columnWidths[header], lineHeight, model[header], i + 2, header.align);
            }
        }
        this.lastCellPos = lastCellPos;
        this.table_x = x;
        this.table_y = y;
        return this;
    };
    jsPDFAPI.calculateLineHeight = function(headerNames, columnWidths, model) {
        var header, lineHeight = 0;
        for (var j = 0; j < headerNames.length; j++) {
            header = headerNames[j];
            model[header] = this.splitTextToSize(String(model[header]), columnWidths[header] - padding);
            var h = this.internal.getLineHeight() * model[header].length + padding;
            if (h > lineHeight) lineHeight = h;
        }
        return lineHeight;
    };
    jsPDFAPI.setTableHeaderRow = function(config) {
        this.tableHeaderRow = config;
    };
    jsPDFAPI.printHeaderRow = function(lineNumber, new_page) {
        if (!this.tableHeaderRow) {
            throw 'Property tableHeaderRow does not exist.';
        }
        var tableHeaderCell, tmpArray, i, ln;
        this.printingHeaderRow = true;
        if (headerFunction !== undefined) {
            var position = headerFunction(this, pages);
            setLastCellPosition(position[0], position[1], position[2], position[3], -1);
        }
        this.setFontStyle('bold');
        var tempHeaderConf = [];
        for (i = 0, ln = this.tableHeaderRow.length; i < ln; i += 1) {
            this.setFillColor(200, 200, 200);
            tableHeaderCell = this.tableHeaderRow[i];
            if (new_page) {
                tableHeaderCell[1] = this.margins.top;
                tempHeaderConf.push(tableHeaderCell);
            }
            tmpArray = [].concat(tableHeaderCell);
            this.cell.apply(this, tmpArray.concat(lineNumber));
        }
        if (tempHeaderConf.length > 0) {
            this.setTableHeaderRow(tempHeaderConf);
        }
        this.setFontStyle('normal');
        this.printingHeaderRow = false;
    };
})(jsPDF.API);
                                    

#5 JavaScript::Eval (size: 3790, repeated: 1) - SHA256: 556fd7e95edd10b3f5629532d36c1008075a16d03c49c1818db55da6875895dd

                                        (function(n, e, A) {
    'use strict';

    function x(s, g, k) {
        return {
            restrict: "ECA",
            terminal: !0,
            priority: 400,
            transclude: "element",
            link: function(a, c, b, f, w) {
                function y() {
                    p && (p.remove(), p = null);
                    h && (h.$destroy(), h = null);
                    l && (k.leave(l, function() {
                        p = null
                    }), p = l, l = null)
                }

                function v() {
                    var b = s.current && s.current.locals;
                    if (e.isDefined(b && b.$template)) {
                        var b = a.$new(),
                            d = s.current;
                        l = w(b, function(d) {
                            k.enter(d, null, l || c, function() {
                                !e.isDefined(t) || t && !a.$eval(t) || g()
                            });
                            y()
                        });
                        h = d.scope = b;
                        h.$emit("$viewContentLoaded");
                        h.$eval(u)
                    } else y()
                }
                var h, l, p, t = b.autoscroll,
                    u = b.onload || "";
                a.$on("$routeChangeSuccess", v);
                v()
            }
        }
    }

    function z(e, g, k) {
        return {
            restrict: "ECA",
            priority: -400,
            link: function(a, c) {
                var b = k.current,
                    f = b.locals;
                c.html(f.$template);
                var w = e(c.contents());
                b.controller && (f.$scope = a, f = g(b.controller, f), b.controllerAs && (a[b.controllerAs] = f), c.data("$ngControllerController", f), c.children().data("$ngControllerController", f));
                w(a)
            }
        }
    }
    n = e.module("ngRoute", ["ng"]).provider("$route", function() {
        function s(a, c) {
            return e.extend(new(e.extend(function() {}, {
                prototype: a
            })), c)
        }

        function g(a, e) {
            var b = e.caseInsensitiveMatch,
                f = {
                    originalPath: a,
                    regexp: a
                },
                k = f.keys = [];
            a = a.replace(/([().])/g, "\\$1").replace(/(\/)?:(\w+)([\?\*])?/g, function(a, e, b, c) {
                a = "?" === c ? c : null;
                c = "*" === c ? c : null;
                k.push({
                    name: b,
                    optional: !!a
                });
                e = e || "";
                return "" + (a ? "" : e) + "(?:" + (a ? e : "") + (c && "(.+?)" || "([^/]+)") + (a || "") + ")" + (a || "")
            }).replace(/([\/$\*])/g, "\\$1");
            f.regexp = RegExp("^" + a + "$", b ? "i" : "");
            return f
        }
        var k = {};
        this.when = function(a, c) {
            k[a] = e.extend({
                reloadOnSearch: !0
            }, c, a && g(a, c));
            if (a) {
                var b = "/" == a[a.length - 1] ? a.substr(0, a.length - 1) : a + "/";
                k[b] = e.extend({
                    redirectTo: a
                }, g(b, c))
            }
            return this
        };
        this.otherwise = function(a) {
            this.when(null, a);
            return this
        };
        this.$get = ["$rootScope", "$location", "$routeParams", "$q", "$injector", "$http", "$templateCache", "$sce", function(a, c, b, f, g, n, v, h) {
            function l() {
                var d = p(),
                    m = r.current;
                if (d && m && d.$$route === m.$$route && e.equals(d.pathParams, m.pathParams) && !d.reloadOnSearch && !u) m.params = d.params, e.copy(m.params, b), a.$broadcast("$routeUpdate", m);
                else if (d || m) u = !1, a.$broadcast("$routeChangeStart", d, m), (r.current = d) && d.redirectTo && (e.isString(d.redirectTo) ? c.path(t(d.redirectTo, d.params)).search(d.params).replace() : c.url(d.redirectTo(d.pathParams, c.path(), c.search())).replace()), f.when(d).then(function() {
                    if (d) {
                        var a = e.extend({}, d.resolve),
                            c, b;
                        e.forEach(a, function(d, c) {
                            a[c] = e.isString(d) ? g.get(d) : g.invoke(d)
                        });
                        e.isDefined(c = d.template) ? e.isFunction(c) && (c = c(d.params)) : e.isDefined(b = d.templateUrl) && (e.isFunction(b) && (b = b(d.params)), b = h.getTrustedResourceUrl(b), e.isDefined(b) && (d.loadedTemplateUrl = b, c = n.get(b, {
                            cache: v
                        }).then(function(a) {
                            return a.data
                        })));
                        e.isDefined(c) && (a.$template = c);
                        return f.all(a)
                    }
                }).then(function(c) {
                    d == r.current && (d && (d.locals = c, e.copy(d.params, b)), a.$broadcast("$routeChangeSuccess", d, m))
                }, function(c) {
                    d == r.current && a.$broadcast("$routeChangeError", d, m, c)
                })
            }

            function p() {
                var a, b;
                e.forEach(k, function(f, k) {
                    var q;
                    if (q = !b) {
                        var g = c.path();
                        q = f.keys;
                        var l = {};
                        if (f.regexp)
                            if (g = f.regexp.exec(g)) {
                                for (var h = 1, p = g.length; h < p; ++h) {
                                    var n = q[h - 1],
                                        r = "string" == typeof g[h] ? decodeURIComponent(g[h]) : g[h];
                                    n && r && (l[n.name] = r)
                                }
                                q = l
                            } else q = null;
                        else q = null;
                        q = a = q
                    }
                    q && (b = s(f, {
                        params: e.extend({}, c.search(), a),
                        pathParams: a
                    }), b.$$route = f)
                });
                return b || k[null] && s(k[null], {
                    params: {},
                    pathParams: {}
                })
            }

            function t(a, c) {
                var b = [];
                e.forEach((a || "").split(":"), function(a, d) {
                    if (0 === d) b.push(a);
                    else {
                        var e = a.match(/(\w+)(.*)/),
                            f = e[1];
                        b.push(c[f]);
                        b.push(e[2] || "");
                        delete c[f]
                    }
                });
                return b.join("")
            }
            var u = !1,
                r = {
                    routes: k,
                    reload: function() {
                        u = !0;
                        a.$evalAsync(l)
                    }
                };
            a.$on("$locationChangeSuccess", l);
            return r
        }]
    });
    n.provider("$routeParams", function() {
        this.$get = function() {
            return {}
        }
    });
    n.directive("ngView", x);
    n.directive("ngView", z);
    x.$inject = ["$route", "$anchorScroll", "$animate"];
    z.$inject = ["$compile", "$controller", "$route"]
})(window, window.angular);
                                    

#6 JavaScript::Eval (size: 4298, repeated: 1) - SHA256: 9be3058fcee01a4d35906e475e44b90464efad5fd1f062d5132a0db549eb0162

                                        (function(p, h, q) {
    'use strict';

    function E(a) {
        var d = [];
        s(d, h.noop).chars(a);
        return d.join("")
    }

    function k(a) {
        var d = {};
        a = a.split(",");
        var b;
        for (b = 0; b < a.length; b++) d[a[b]] = !0;
        return d
    }

    function F(a, d) {
        function b(a, c, b, g) {
            c = h.lowercase(c);
            if (t[c])
                for (; f.last() && u[f.last()];) e("", f.last());
            v[c] && f.last() == c && e("", c);
            (g = w[c] || !!g) || f.push(c);
            var l = {};
            b.replace(G, function(a, c, d, b, e) {
                l[c] = r(d || b || e || "")
            });
            d.start && d.start(c, l, g)
        }

        function e(a, c) {
            var b = 0,
                e;
            if (c = h.lowercase(c))
                for (b = f.length - 1; 0 <= b && f[b] != c; b--);
            if (0 <= b) {
                for (e = f.length - 1; e >= b; e--) d.end && d.end(f[e]);
                f.length = b
            }
        }
        var c, g, f = [],
            l = a;
        for (f.last = function() {
                return f[f.length - 1]
            }; a;) {
            g = !0;
            if (f.last() && x[f.last()]) a = a.replace(RegExp("(.*)<\\s*\\/\\s*" + f.last() + "[^>]*>", "i"), function(c, a) {
                a = a.replace(H, "$1").replace(I, "$1");
                d.chars && d.chars(r(a));
                return ""
            }), e("", f.last());
            else {
                if (0 === a.indexOf("\x3c!--")) c = a.indexOf("--", 4), 0 <= c && a.lastIndexOf("--\x3e", c) === c && (d.comment && d.comment(a.substring(4, c)), a = a.substring(c + 3), g = !1);
                else if (y.test(a)) {
                    if (c = a.match(y)) a = a.replace(c[0], ""), g = !1
                } else if (J.test(a)) {
                    if (c = a.match(z)) a = a.substring(c[0].length), c[0].replace(z, e), g = !1
                } else K.test(a) && (c = a.match(A)) && (a = a.substring(c[0].length), c[0].replace(A, b), g = !1);
                g && (c = a.indexOf("<"), g = 0 > c ? a : a.substring(0, c), a = 0 > c ? "" : a.substring(c), d.chars && d.chars(r(g)))
            }
            if (a == l) throw L("badparse", a);
            l = a
        }
        e()
    }

    function r(a) {
        if (!a) return "";
        var d = M.exec(a);
        a = d[1];
        var b = d[3];
        if (d = d[2]) n.innerHTML = d.replace(/</g, "&lt;"), d = "textContent" in n ? n.textContent : n.innerText;
        return a + d + b
    }

    function B(a) {
        return a.replace(/&/g, "&amp;").replace(N, function(a) {
            var b = a.charCodeAt(0);
            a = a.charCodeAt(1);
            return "&#" + (1024 * (b - 55296) + (a - 56320) + 65536) + ";"
        }).replace(O, function(a) {
            return "&#" + a.charCodeAt(0) + ";"
        }).replace(/</g, "&lt;").replace(/>/g, "&gt;")
    }

    function s(a, d) {
        var b = !1,
            e = h.bind(a, a.push);
        return {
            start: function(a, g, f) {
                a = h.lowercase(a);
                !b && x[a] && (b = a);
                b || !0 !== C[a] || (e("<"), e(a), h.forEach(g, function(b, f) {
                    var g = h.lowercase(f),
                        k = "img" === a && "src" === g || "background" === g;
                    !0 !== P[g] || !0 === D[g] && !d(b, k) || (e(" "), e(f), e('="'), e(B(b)), e('"'))
                }), e(f ? "/>" : ">"))
            },
            end: function(a) {
                a = h.lowercase(a);
                b || !0 !== C[a] || (e("</"), e(a), e(">"));
                a == b && (b = !1)
            },
            chars: function(a) {
                b || e(B(a))
            }
        }
    }
    var L = h.$$minErr("$sanitize"),
        A = /^<\s*([\w:-]+)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*>/,
        z = /^<\s*\/\s*([\w:-]+)[^>]*>/,
        G = /([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,
        K = /^</,
        J = /^<\s*\//,
        H = /\x3c!--(.*?)--\x3e/g,
        y = /<!DOCTYPE([^>]*?)>/i,
        I = /<!\[CDATA\[(.*?)]]\x3e/g,
        N = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
        O = /([^\#-~| |!])/g,
        w = k("area,br,col,hr,img,wbr");
    p = k("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr");
    q = k("rp,rt");
    var v = h.extend({}, q, p),
        t = h.extend({}, p, k("address,article,aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,script,section,table,ul")),
        u = h.extend({}, q, k("a,abbr,acronym,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,samp,small,span,strike,strong,sub,sup,time,tt,u,var")),
        x = k("script,style"),
        C = h.extend({}, w, t, u, v),
        D = k("background,cite,href,longdesc,src,usemap"),
        P = h.extend({}, D, k("abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,scope,scrolling,shape,size,span,start,summary,target,title,type,valign,value,vspace,width")),
        n = document.createElement("pre"),
        M = /^(\s*)([\s\S]*?)(\s*)$/;
    h.module("ngSanitize", []).provider("$sanitize", function() {
        this.$get = ["$$sanitizeUri", function(a) {
            return function(d) {
                var b = [];
                F(d, s(b, function(b, c) {
                    return !/^unsafe/.test(a(b, c))
                }));
                return b.join("")
            }
        }]
    });
    h.module("ngSanitize").filter("linky", ["$sanitize", function(a) {
        var d = /((ftp|https?):\/\/|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>]/,
            b = /^mailto:/;
        return function(e, c) {
            function g(a) {
                a && m.push(E(a))
            }

            function f(a, b) {
                m.push("<a ");
                h.isDefined(c) && (m.push('target="'), m.push(c), m.push('" '));
                m.push('href="');
                m.push(a);
                m.push('">');
                g(b);
                m.push("</a>")
            }
            if (!e) return e;
            for (var l, k = e, m = [], n, p; l = k.match(d);) n = l[0], l[2] == l[3] && (n = "mailto:" + n), p = l.index, g(k.substr(0, p)), f(n, l[0].replace(b, "")), k = k.substring(p + l[0].length);
            g(k);
            return a(m.join(""))
        }
    }])
})(window, window.angular);
                                    

#7 JavaScript::Eval (size: 11702, repeated: 1) - SHA256: 2b960e0d6bdd5244efa9107c88dfbc4875ee8a33409cd3376a253c68baf6f43f

                                        (function(root) {
    "use strict";
    var JSZip = root.JSZip;
    var MAX_VALUE_16BITS = 65535;
    var MAX_VALUE_32BITS = -1;
    var pretty = function(str) {
        var res = '',
            code, i;
        for (i = 0; i < (str || "").length; i++) {
            code = str.charCodeAt(i);
            res += '\\x' + (code < 16 ? "0" : "") + code.toString(16).toUpperCase();
        }
        return res;
    };
    var findCompression = function(compressionMethod) {
        for (var method in JSZip.compressions) {
            if (!JSZip.compressions.hasOwnProperty(method)) {
                continue;
            }
            if (JSZip.compressions[method].magic === compressionMethod) {
                return JSZip.compressions[method];
            }
        }
        return null;
    };

    function DataReader(data) {
        this.data = null;
        this.length = 0;
        this.index = 0;
    }
    DataReader.prototype = {
        checkOffset: function(offset) {
            this.checkIndex(this.index + offset);
        },
        checkIndex: function(newIndex) {
            if (this.length < newIndex || newIndex < 0) {
                throw new Error("End of data reached (data length = " + this.length + ", asked index = " + (newIndex) + "). Corrupted zip ?");
            }
        },
        setIndex: function(newIndex) {
            this.checkIndex(newIndex);
            this.index = newIndex;
        },
        skip: function(n) {
            this.setIndex(this.index + n);
        },
        byteAt: function(i) {},
        readInt: function(size) {
            var result = 0,
                i;
            this.checkOffset(size);
            for (i = this.index + size - 1; i >= this.index; i--) {
                result = (result << 8) + this.byteAt(i);
            }
            this.index += size;
            return result;
        },
        readString: function(size) {
            return JSZip.utils.transformTo("string", this.readData(size));
        },
        readData: function(size) {},
        lastIndexOfSignature: function(sig) {},
        readDate: function() {
            var dostime = this.readInt(4);
            return new Date(((dostime >> 25) & 0x7f) + 1980, ((dostime >> 21) & 0x0f) - 1, (dostime >> 16) & 0x1f, (dostime >> 11) & 0x1f, (dostime >> 5) & 0x3f, (dostime & 0x1f) << 1);
        }
    };

    function StringReader(data, optimizedBinaryString) {
        this.data = data;
        if (!optimizedBinaryString) {
            this.data = JSZip.utils.string2binary(this.data);
        }
        this.length = this.data.length;
        this.index = 0;
    }
    StringReader.prototype = new DataReader();
    StringReader.prototype.byteAt = function(i) {
        return this.data.charCodeAt(i);
    };
    StringReader.prototype.lastIndexOfSignature = function(sig) {
        return this.data.lastIndexOf(sig);
    };
    StringReader.prototype.readData = function(size) {
        this.checkOffset(size);
        var result = this.data.slice(this.index, this.index + size);
        this.index += size;
        return result;
    };

    function Uint8ArrayReader(data) {
        if (data) {
            this.data = data;
            this.length = this.data.length;
            this.index = 0;
        }
    }
    Uint8ArrayReader.prototype = new DataReader();
    Uint8ArrayReader.prototype.byteAt = function(i) {
        return this.data[i];
    };
    Uint8ArrayReader.prototype.lastIndexOfSignature = function(sig) {
        var sig0 = sig.charCodeAt(0),
            sig1 = sig.charCodeAt(1),
            sig2 = sig.charCodeAt(2),
            sig3 = sig.charCodeAt(3);
        for (var i = this.length - 4; i >= 0; --i) {
            if (this.data[i] === sig0 && this.data[i + 1] === sig1 && this.data[i + 2] === sig2 && this.data[i + 3] === sig3) {
                return i;
            }
        }
        return -1;
    };
    Uint8ArrayReader.prototype.readData = function(size) {
        this.checkOffset(size);
        var result = this.data.subarray(this.index, this.index + size);
        this.index += size;
        return result;
    };

    function NodeBufferReader(data) {
        this.data = data;
        this.length = this.data.length;
        this.index = 0;
    }
    NodeBufferReader.prototype = new Uint8ArrayReader();
    NodeBufferReader.prototype.readData = function(size) {
        this.checkOffset(size);
        var result = this.data.slice(this.index, this.index + size);
        this.index += size;
        return result;
    };

    function ZipEntry(options, loadOptions) {
        this.options = options;
        this.loadOptions = loadOptions;
    }
    ZipEntry.prototype = {
        isEncrypted: function() {
            return (this.bitFlag & 0x0001) === 0x0001;
        },
        useUTF8: function() {
            return (this.bitFlag & 0x0800) === 0x0800;
        },
        prepareCompressedContent: function(reader, from, length) {
            return function() {
                var previousIndex = reader.index;
                reader.setIndex(from);
                var compressedFileData = reader.readData(length);
                reader.setIndex(previousIndex);
                return compressedFileData;
            };
        },
        prepareContent: function(reader, from, length, compression, uncompressedSize) {
            return function() {
                var compressedFileData = JSZip.utils.transformTo(compression.uncompressInputType, this.getCompressedContent());
                var uncompressedFileData = compression.uncompress(compressedFileData);
                if (uncompressedFileData.length !== uncompressedSize) {
                    throw new Error("Bug : uncompressed data size mismatch");
                }
                return uncompressedFileData;
            };
        },
        readLocalPart: function(reader) {
            var compression, localExtraFieldsLength;
            reader.skip(22);
            this.fileNameLength = reader.readInt(2);
            localExtraFieldsLength = reader.readInt(2);
            this.fileName = reader.readString(this.fileNameLength);
            reader.skip(localExtraFieldsLength);
            if (this.compressedSize == -1 || this.uncompressedSize == -1) {
                throw new Error("Bug or corrupted zip : didn't get enough informations from the central directory " + "(compressedSize == -1 || uncompressedSize == -1)");
            }
            compression = findCompression(this.compressionMethod);
            if (compression === null) {
                throw new Error("Corrupted zip : compression " + pretty(this.compressionMethod) + " unknown (inner file : " + this.fileName + ")");
            }
            this.decompressed = new JSZip.CompressedObject();
            this.decompressed.compressedSize = this.compressedSize;
            this.decompressed.uncompressedSize = this.uncompressedSize;
            this.decompressed.crc32 = this.crc32;
            this.decompressed.compressionMethod = this.compressionMethod;
            this.decompressed.getCompressedContent = this.prepareCompressedContent(reader, reader.index, this.compressedSize, compression);
            this.decompressed.getContent = this.prepareContent(reader, reader.index, this.compressedSize, compression, this.uncompressedSize);
            if (this.loadOptions.checkCRC32) {
                this.decompressed = JSZip.utils.transformTo("string", this.decompressed.getContent());
                if (JSZip.prototype.crc32(this.decompressed) !== this.crc32) {
                    throw new Error("Corrupted zip : CRC32 mismatch");
                }
            }
        },
        readCentralPart: function(reader) {
            this.versionMadeBy = reader.readString(2);
            this.versionNeeded = reader.readInt(2);
            this.bitFlag = reader.readInt(2);
            this.compressionMethod = reader.readString(2);
            this.date = reader.readDate();
            this.crc32 = reader.readInt(4);
            this.compressedSize = reader.readInt(4);
            this.uncompressedSize = reader.readInt(4);
            this.fileNameLength = reader.readInt(2);
            this.extraFieldsLength = reader.readInt(2);
            this.fileCommentLength = reader.readInt(2);
            this.diskNumberStart = reader.readInt(2);
            this.internalFileAttributes = reader.readInt(2);
            this.externalFileAttributes = reader.readInt(4);
            this.localHeaderOffset = reader.readInt(4);
            if (this.isEncrypted()) {
                throw new Error("Encrypted zip are not supported");
            }
            this.fileName = reader.readString(this.fileNameLength);
            this.readExtraFields(reader);
            this.parseZIP64ExtraField(reader);
            this.fileComment = reader.readString(this.fileCommentLength);
            this.dir = this.externalFileAttributes & 0x00000010 ? true : false;
        },
        parseZIP64ExtraField: function(reader) {
            if (!this.extraFields[0x0001]) {
                return;
            }
            var extraReader = new StringReader(this.extraFields[0x0001].value);
            if (this.uncompressedSize === MAX_VALUE_32BITS) {
                this.uncompressedSize = extraReader.readInt(8);
            }
            if (this.compressedSize === MAX_VALUE_32BITS) {
                this.compressedSize = extraReader.readInt(8);
            }
            if (this.localHeaderOffset === MAX_VALUE_32BITS) {
                this.localHeaderOffset = extraReader.readInt(8);
            }
            if (this.diskNumberStart === MAX_VALUE_32BITS) {
                this.diskNumberStart = extraReader.readInt(4);
            }
        },
        readExtraFields: function(reader) {
            var start = reader.index,
                extraFieldId, extraFieldLength, extraFieldValue;
            this.extraFields = this.extraFields || {};
            while (reader.index < start + this.extraFieldsLength) {
                extraFieldId = reader.readInt(2);
                extraFieldLength = reader.readInt(2);
                extraFieldValue = reader.readString(extraFieldLength);
                this.extraFields[extraFieldId] = {
                    id: extraFieldId,
                    length: extraFieldLength,
                    value: extraFieldValue
                };
            }
        },
        handleUTF8: function() {
            if (this.useUTF8()) {
                this.fileName = JSZip.prototype.utf8decode(this.fileName);
                this.fileComment = JSZip.prototype.utf8decode(this.fileComment);
            }
        }
    };

    function ZipEntries(data, loadOptions) {
        this.files = [];
        this.loadOptions = loadOptions;
        if (data) {
            this.load(data);
        }
    }
    ZipEntries.prototype = {
        checkSignature: function(expectedSignature) {
            var signature = this.reader.readString(4);
            if (signature !== expectedSignature) {
                throw new Error("Corrupted zip or bug : unexpected signature " + "(" + pretty(signature) + ", expected " + pretty(expectedSignature) + ")");
            }
        },
        readBlockEndOfCentral: function() {
            this.diskNumber = this.reader.readInt(2);
            this.diskWithCentralDirStart = this.reader.readInt(2);
            this.centralDirRecordsOnThisDisk = this.reader.readInt(2);
            this.centralDirRecords = this.reader.readInt(2);
            this.centralDirSize = this.reader.readInt(4);
            this.centralDirOffset = this.reader.readInt(4);
            this.zipCommentLength = this.reader.readInt(2);
            this.zipComment = this.reader.readString(this.zipCommentLength);
        },
        readBlockZip64EndOfCentral: function() {
            this.zip64EndOfCentralSize = this.reader.readInt(8);
            this.versionMadeBy = this.reader.readString(2);
            this.versionNeeded = this.reader.readInt(2);
            this.diskNumber = this.reader.readInt(4);
            this.diskWithCentralDirStart = this.reader.readInt(4);
            this.centralDirRecordsOnThisDisk = this.reader.readInt(8);
            this.centralDirRecords = this.reader.readInt(8);
            this.centralDirSize = this.reader.readInt(8);
            this.centralDirOffset = this.reader.readInt(8);
            this.zip64ExtensibleData = {};
            var extraDataSize = this.zip64EndOfCentralSize - 44,
                index = 0,
                extraFieldId, extraFieldLength, extraFieldValue;
            while (index < extraDataSize) {
                extraFieldId = this.reader.readInt(2);
                extraFieldLength = this.reader.readInt(4);
                extraFieldValue = this.reader.readString(extraFieldLength);
                this.zip64ExtensibleData[extraFieldId] = {
                    id: extraFieldId,
                    length: extraFieldLength,
                    value: extraFieldValue
                };
            }
        },
        readBlockZip64EndOfCentralLocator: function() {
            this.diskWithZip64CentralDirStart = this.reader.readInt(4);
            this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8);
            this.disksCount = this.reader.readInt(4);
            if (this.disksCount > 1) {
                throw new Error("Multi-volumes zip are not supported");
            }
        },
        readLocalFiles: function() {
            var i, file;
            for (i = 0; i < this.files.length; i++) {
                file = this.files[i];
                this.reader.setIndex(file.localHeaderOffset);
                this.checkSignature(JSZip.signature.LOCAL_FILE_HEADER);
                file.readLocalPart(this.reader);
                file.handleUTF8();
            }
        },
        readCentralDir: function() {
            var file;
            this.reader.setIndex(this.centralDirOffset);
            while (this.reader.readString(4) === JSZip.signature.CENTRAL_FILE_HEADER) {
                file = new ZipEntry({
                    zip64: this.zip64
                }, this.loadOptions);
                file.readCentralPart(this.reader);
                this.files.push(file);
            }
        },
        readEndOfCentral: function() {
            var offset = this.reader.lastIndexOfSignature(JSZip.signature.CENTRAL_DIRECTORY_END);
            if (offset === -1) {
                throw new Error("Corrupted zip : can't find end of central directory");
            }
            this.reader.setIndex(offset);
            this.checkSignature(JSZip.signature.CENTRAL_DIRECTORY_END);
            this.readBlockEndOfCentral();
            if (this.diskNumber === MAX_VALUE_16BITS || this.diskWithCentralDirStart === MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === MAX_VALUE_16BITS || this.centralDirRecords === MAX_VALUE_16BITS || this.centralDirSize === MAX_VALUE_32BITS || this.centralDirOffset === MAX_VALUE_32BITS) {
                this.zip64 = true;
                offset = this.reader.lastIndexOfSignature(JSZip.signature.ZIP64_CENTRAL_DIRECTORY_LOCATOR);
                if (offset === -1) {
                    throw new Error("Corrupted zip : can't find the ZIP64 end of central directory locator");
                }
                this.reader.setIndex(offset);
                this.checkSignature(JSZip.signature.ZIP64_CENTRAL_DIRECTORY_LOCATOR);
                this.readBlockZip64EndOfCentralLocator();
                this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir);
                this.checkSignature(JSZip.signature.ZIP64_CENTRAL_DIRECTORY_END);
                this.readBlockZip64EndOfCentral();
            }
        },
        prepareReader: function(data) {
            var type = JSZip.utils.getTypeOf(data);
            if (type === "string" && !JSZip.support.uint8array) {
                this.reader = new StringReader(data, this.loadOptions.optimizedBinaryString);
            } else if (type === "nodebuffer") {
                this.reader = new NodeBufferReader(data);
            } else {
                this.reader = new Uint8ArrayReader(JSZip.utils.transformTo("uint8array", data));
            }
        },
        load: function(data) {
            this.prepareReader(data);
            this.readEndOfCentral();
            this.readCentralDir();
            this.readLocalFiles();
        }
    };
    JSZip.prototype.load = function(data, options) {
        var files, zipEntries, i, input;
        options = options || {};
        if (options.base64) {
            data = JSZip.base64.decode(data);
        }
        zipEntries = new ZipEntries(data, options);
        files = zipEntries.files;
        for (i = 0; i < files.length; i++) {
            input = files[i];
            this.file(input.fileName, input.decompressed, {
                binary: true,
                optimizedBinaryString: true,
                date: input.date,
                dir: input.dir
            });
        }
        return this;
    };
}(this));
                                    

#8 JavaScript::Eval (size: 10743, repeated: 1) - SHA256: d057433d34244d0861ad4d6523e642c923bc2e4f6bff6bf1e59838887ed66c4b

                                        (function(u, f, P) {
    'use strict';
    f.module("ngAnimate", ["ng"]).factory("$$animateReflow", ["$$rAF", "$document", function(f, u) {
        return function(e) {
            return f(function() {
                e()
            })
        }
    }]).config(["$provide", "$animateProvider", function(W, H) {
        function e(f) {
            for (var e = 0; e < f.length; e++) {
                var h = f[e];
                if (h.nodeType == aa) return h
            }
        }

        function C(h) {
            return f.element(e(h))
        }
        var n = f.noop,
            h = f.forEach,
            Q = H.$$selectors,
            aa = 1,
            k = "$$ngAnimateState",
            K = "ng-animate",
            g = {
                running: !0
            };
        W.decorator("$animate", ["$delegate", "$injector", "$sniffer", "$rootElement", "$$asyncCallback", "$rootScope", "$document", function(y, u, $, L, F, I, P) {
            function R(a) {
                if (a) {
                    var b = [],
                        c = {};
                    a = a.substr(1).split(".");
                    ($.transitions || $.animations) && b.push(u.get(Q[""]));
                    for (var d = 0; d < a.length; d++) {
                        var f = a[d],
                            e = Q[f];
                        e && !c[f] && (b.push(u.get(e)), c[f] = !0)
                    }
                    return b
                }
            }

            function M(a, b, c) {
                function d(a, b) {
                    var c = a[b],
                        d = a["before" + b.charAt(0).toUpperCase() + b.substr(1)];
                    if (c || d) return "leave" == b && (d = c, c = null), t.push({
                        event: b,
                        fn: c
                    }), l.push({
                        event: b,
                        fn: d
                    }), !0
                }

                function e(b, d, f) {
                    var q = [];
                    h(b, function(a) {
                        a.fn && q.push(a)
                    });
                    var m = 0;
                    h(q, function(b, e) {
                        var h = function() {
                            a: {
                                if (d) {
                                    (d[e] || n)();
                                    if (++m < q.length) break a;
                                    d = null
                                }
                                f()
                            }
                        };
                        switch (b.event) {
                            case "setClass":
                                d.push(b.fn(a, p, A, h));
                                break;
                            case "addClass":
                                d.push(b.fn(a, p || c, h));
                                break;
                            case "removeClass":
                                d.push(b.fn(a, A || c, h));
                                break;
                            default:
                                d.push(b.fn(a, h))
                        }
                    });
                    d && 0 === d.length && f()
                }
                var w = a[0];
                if (w) {
                    var k = "setClass" == b,
                        g = k || "addClass" == b || "removeClass" == b,
                        p, A;
                    f.isArray(c) && (p = c[0], A = c[1], c = p + " " + A);
                    var B = a.attr("class") + " " + c;
                    if (T(B)) {
                        var r = n,
                            v = [],
                            l = [],
                            x = n,
                            m = [],
                            t = [],
                            B = (" " + B).replace(/\s+/g, ".");
                        h(R(B), function(a) {
                            !d(a, b) && k && (d(a, "addClass"), d(a, "removeClass"))
                        });
                        return {
                            node: w,
                            event: b,
                            className: c,
                            isClassBased: g,
                            isSetClassOperation: k,
                            before: function(a) {
                                r = a;
                                e(l, v, function() {
                                    r = n;
                                    a()
                                })
                            },
                            after: function(a) {
                                x = a;
                                e(t, m, function() {
                                    x = n;
                                    a()
                                })
                            },
                            cancel: function() {
                                v && (h(v, function(a) {
                                    (a || n)(!0)
                                }), r(!0));
                                m && (h(m, function(a) {
                                    (a || n)(!0)
                                }), x(!0))
                            }
                        }
                    }
                }
            }

            function z(a, b, c, d, e, w, g) {
                function n(d) {
                    var e = "$animate:" + d;
                    x && (x[e] && 0 < x[e].length) && F(function() {
                        c.triggerHandler(e, {
                            event: a,
                            className: b
                        })
                    })
                }

                function p() {
                    n("before")
                }

                function A() {
                    n("after")
                }

                function B() {
                    n("close");
                    g && F(function() {
                        g()
                    })
                }

                function r() {
                    r.hasBeenRun || (r.hasBeenRun = !0, w())
                }

                function v() {
                    if (!v.hasBeenRun) {
                        v.hasBeenRun = !0;
                        var d = c.data(k);
                        d && (l && l.isClassBased ? D(c, b) : (F(function() {
                            var d = c.data(k) || {};
                            z == d.index && D(c, b, a)
                        }), c.data(k, d)));
                        B()
                    }
                }
                var l = M(c, a, b);
                if (l) {
                    b = l.className;
                    var x = f.element._data(l.node),
                        x = x && x.events;
                    d || (d = e ? e.parent() : c.parent());
                    var m = c.data(k) || {};
                    e = m.active || {};
                    var t = m.totalActive || 0,
                        u = m.last;
                    if (l.isClassBased && (m.disabled || u && !u.isClassBased) || N(c, d)) r(), p(), A(), v();
                    else {
                        d = !1;
                        if (0 < t) {
                            m = [];
                            if (l.isClassBased) "setClass" == u.event ? (m.push(u), D(c, b)) : e[b] && (y = e[b], y.event == a ? d = !0 : (m.push(y), D(c, b)));
                            else if ("leave" == a && e["ng-leave"]) d = !0;
                            else {
                                for (var y in e) m.push(e[y]), D(c, y);
                                e = {};
                                t = 0
                            }
                            0 < m.length && h(m, function(a) {
                                a.cancel()
                            })
                        }!l.isClassBased || (l.isSetClassOperation || d) || (d = "addClass" == a == c.hasClass(b));
                        if (d) r(), p(), A(), B();
                        else {
                            if ("leave" == a) c.one("$destroy", function(a) {
                                a = f.element(this);
                                var b = a.data(k);
                                b && (b = b.active["ng-leave"]) && (b.cancel(), D(a, "ng-leave"))
                            });
                            c.addClass(K);
                            var z = O++;
                            t++;
                            e[b] = l;
                            c.data(k, {
                                last: l,
                                active: e,
                                index: z,
                                totalActive: t
                            });
                            p();
                            l.before(function(d) {
                                var e = c.data(k);
                                d = d || !e || !e.active[b] || l.isClassBased && e.active[b].event != a;
                                r();
                                !0 === d ? v() : (A(), l.after(v))
                            })
                        }
                    }
                } else r(), p(), A(), v()
            }

            function U(a) {
                if (a = e(a)) a = f.isFunction(a.getElementsByClassName) ? a.getElementsByClassName(K) : a.querySelectorAll("." + K), h(a, function(a) {
                    a = f.element(a);
                    (a = a.data(k)) && a.active && h(a.active, function(a) {
                        a.cancel()
                    })
                })
            }

            function D(a, b) {
                if (e(a) == e(L)) g.disabled || (g.running = !1, g.structural = !1);
                else if (b) {
                    var c = a.data(k) || {},
                        d = !0 === b;
                    !d && (c.active && c.active[b]) && (c.totalActive--, delete c.active[b]);
                    if (d || !c.totalActive) a.removeClass(K), a.removeData(k)
                }
            }

            function N(a, b) {
                if (g.disabled) return !0;
                if (e(a) == e(L)) return g.disabled || g.running;
                do {
                    if (0 === b.length) break;
                    var c = e(b) == e(L),
                        d = c ? g : b.data(k),
                        d = d && (!!d.disabled || d.running || 0 < d.totalActive);
                    if (c || d) return d;
                    if (c) break
                } while (b = b.parent());
                return !0
            }
            var O = 0;
            L.data(k, g);
            I.$$postDigest(function() {
                I.$$postDigest(function() {
                    g.running = !1
                })
            });
            var V = H.classNameFilter(),
                T = V ? function(a) {
                    return V.test(a)
                } : function() {
                    return !0
                };
            return {
                enter: function(a, b, c, d) {
                    a = f.element(a);
                    b = b && f.element(b);
                    c = c && f.element(c);
                    this.enabled(!1, a);
                    y.enter(a, b, c);
                    I.$$postDigest(function() {
                        a = C(a);
                        z("enter", "ng-enter", a, b, c, n, d)
                    })
                },
                leave: function(a, b) {
                    a = f.element(a);
                    U(a);
                    this.enabled(!1, a);
                    I.$$postDigest(function() {
                        z("leave", "ng-leave", C(a), null, null, function() {
                            y.leave(a)
                        }, b)
                    })
                },
                move: function(a, b, c, d) {
                    a = f.element(a);
                    b = b && f.element(b);
                    c = c && f.element(c);
                    U(a);
                    this.enabled(!1, a);
                    y.move(a, b, c);
                    I.$$postDigest(function() {
                        a = C(a);
                        z("move", "ng-move", a, b, c, n, d)
                    })
                },
                addClass: function(a, b, c) {
                    a = f.element(a);
                    a = C(a);
                    z("addClass", b, a, null, null, function() {
                        y.addClass(a, b)
                    }, c)
                },
                removeClass: function(a, b, c) {
                    a = f.element(a);
                    a = C(a);
                    z("removeClass", b, a, null, null, function() {
                        y.removeClass(a, b)
                    }, c)
                },
                setClass: function(a, b, c, d) {
                    a = f.element(a);
                    a = C(a);
                    z("setClass", [b, c], a, null, null, function() {
                        y.setClass(a, b, c)
                    }, d)
                },
                enabled: function(a, b) {
                    switch (arguments.length) {
                        case 2:
                            if (a) D(b);
                            else {
                                var c = b.data(k) || {};
                                c.disabled = !0;
                                b.data(k, c)
                            }
                            break;
                        case 1:
                            g.disabled = !a;
                            break;
                        default:
                            a = !g.disabled
                    }
                    return !!a
                }
            }
        }]);
        H.register("", ["$window", "$sniffer", "$timeout", "$$animateReflow", function(k, g, C, L) {
            function F(a, E) {
                S && S();
                X.push(E);
                S = L(function() {
                    h(X, function(a) {
                        a()
                    });
                    X = [];
                    S = null;
                    q = {}
                })
            }

            function I(a, E) {
                var b = e(a);
                a = f.element(b);
                Y.push(a);
                b = Date.now() + E;
                b <= ea || (C.cancel(da), ea = b, da = C(function() {
                    K(Y);
                    Y = []
                }, E, !1))
            }

            function K(a) {
                h(a, function(a) {
                    (a = a.data(m)) && (a.closeAnimationFn || n)()
                })
            }

            function R(a, E) {
                var b = E ? q[E] : null;
                if (!b) {
                    var c = 0,
                        d = 0,
                        e = 0,
                        f = 0,
                        m, Z, s, g;
                    h(a, function(a) {
                        if (a.nodeType == aa) {
                            a = k.getComputedStyle(a) || {};
                            s = a[J + B];
                            c = Math.max(M(s), c);
                            g = a[J + r];
                            m = a[J + v];
                            d = Math.max(M(m), d);
                            Z = a[p + v];
                            f = Math.max(M(Z), f);
                            var b = M(a[p + B]);
                            0 < b && (b *= parseInt(a[p + l], 10) || 1);
                            e = Math.max(b, e)
                        }
                    });
                    b = {
                        total: 0,
                        transitionPropertyStyle: g,
                        transitionDurationStyle: s,
                        transitionDelayStyle: m,
                        transitionDelay: d,
                        transitionDuration: c,
                        animationDelayStyle: Z,
                        animationDelay: f,
                        animationDuration: e
                    };
                    E && (q[E] = b)
                }
                return b
            }

            function M(a) {
                var b = 0;
                a = f.isString(a) ? a.split(/\s*,\s*/) : [];
                h(a, function(a) {
                    b = Math.max(parseFloat(a) || 0, b)
                });
                return b
            }

            function z(a) {
                var b = a.parent(),
                    c = b.data(x);
                c || (b.data(x, ++ca), c = ca);
                return c + "-" + e(a).getAttribute("class")
            }

            function U(a, b, c, d) {
                var f = z(b),
                    h = f + " " + c,
                    k = q[h] ? ++q[h].total : 0,
                    g = {};
                if (0 < k) {
                    var l = c + "-stagger",
                        g = f + " " + l;
                    (f = !q[g]) && b.addClass(l);
                    g = R(b, g);
                    f && b.removeClass(l)
                }
                d = d || function(a) {
                    return a()
                };
                b.addClass(c);
                var l = b.data(m) || {},
                    s = d(function() {
                        return R(b, h)
                    });
                d = s.transitionDuration;
                f = s.animationDuration;
                if (0 === d && 0 === f) return b.removeClass(c), !1;
                b.data(m, {
                    running: l.running || 0,
                    itemIndex: k,
                    stagger: g,
                    timings: s,
                    closeAnimationFn: n
                });
                a = 0 < l.running || "setClass" == a;
                0 < d && D(b, c, a);
                0 < f && (0 < g.animationDelay && 0 === g.animationDuration) && (e(b).style[p] = "none 0s");
                return !0
            }

            function D(a, b, c) {
                "ng-enter" != b && ("ng-move" != b && "ng-leave" != b) && c ? a.addClass(t) : e(a).style[J + r] = "none"
            }

            function N(a, b) {
                var c = J + r,
                    d = e(a);
                d.style[c] && 0 < d.style[c].length && (d.style[c] = "");
                a.removeClass(t)
            }

            function O(a) {
                var b = p;
                a = e(a);
                a.style[b] && 0 < a.style[b].length && (a.style[b] = "")
            }

            function V(a, b, c, f) {
                function g(a) {
                    b.off(z, l);
                    b.removeClass(p);
                    d(b, c);
                    a = e(b);
                    for (var fa in t) a.style.removeProperty(t[fa])
                }

                function l(a) {
                    a.stopPropagation();
                    var b = a.originalEvent || a;
                    a = b.$manualTimeStamp || b.timeStamp || Date.now();
                    b = parseFloat(b.elapsedTime.toFixed(Q));
                    Math.max(a - y, 0) >= x && b >= u && f()
                }
                var k = e(b);
                a = b.data(m);
                if (-1 != k.getAttribute("class").indexOf(c) && a) {
                    var p = "";
                    h(c.split(" "), function(a, b) {
                        p += (0 < b ? " " : "") + a + "-active"
                    });
                    var n = a.stagger,
                        s = a.timings,
                        r = a.itemIndex,
                        u = Math.max(s.transitionDuration, s.animationDuration),
                        v = Math.max(s.transitionDelay, s.animationDelay),
                        x = v * ba,
                        y = Date.now(),
                        z = A + " " + H,
                        q = "",
                        t = [];
                    if (0 < s.transitionDuration) {
                        var B = s.transitionPropertyStyle; - 1 == B.indexOf("all") && (q += w + "transition-property: " + B + ";", q += w + "transition-duration: " + s.transitionDurationStyle + ";", t.push(w + "transition-property"), t.push(w + "transition-duration"))
                    }
                    0 < r && (0 < n.transitionDelay && 0 === n.transitionDuration && (q += w + "transition-delay: " + T(s.transitionDelayStyle, n.transitionDelay, r) + "; ", t.push(w + "transition-delay")), 0 < n.animationDelay && 0 === n.animationDuration && (q += w + "animation-delay: " + T(s.animationDelayStyle, n.animationDelay, r) + "; ", t.push(w + "animation-delay")));
                    0 < t.length && (s = k.getAttribute("style") || "", k.setAttribute("style", s + "; " + q));
                    b.on(z, l);
                    b.addClass(p);
                    a.closeAnimationFn = function() {
                        g();
                        f()
                    };
                    k = (r * (Math.max(n.animationDelay, n.transitionDelay) || 0) + (v + u) * W) * ba;
                    a.running++;
                    I(b, k);
                    return g
                }
                f()
            }

            function T(a, b, c) {
                var d = "";
                h(a.split(","), function(a, e) {
                    d += (0 < e ? "," : "") + (c * b + parseInt(a, 10)) + "s"
                });
                return d
            }

            function a(a, b, c, e) {
                if (U(a, b, c, e)) return function(a) {
                    a && d(b, c)
                }
            }

            function b(a, b, c, e) {
                if (b.data(m)) return V(a, b, c, e);
                d(b, c);
                e()
            }

            function c(c, d, e, f) {
                var g = a(c, d, e);
                if (g) {
                    var h = g;
                    F(d, function() {
                        N(d, e);
                        O(d);
                        h = b(c, d, e, f)
                    });
                    return function(a) {
                        (h || n)(a)
                    }
                }
                f()
            }

            function d(a, b) {
                a.removeClass(b);
                var c = a.data(m);
                c && (c.running && c.running--, c.running && 0 !== c.running || a.removeData(m))
            }

            function G(a, b) {
                var c = "";
                a = f.isArray(a) ? a : a.split(/\s+/);
                h(a, function(a, d) {
                    a && 0 < a.length && (c += (0 < d ? " " : "") + a + b)
                });
                return c
            }
            var w = "",
                J, H, p, A;
            u.ontransitionend === P && u.onwebkittransitionend !== P ? (w = "-webkit-", J = "WebkitTransition", H = "webkitTransitionEnd transitionend") : (J = "transition", H = "transitionend");
            u.onanimationend === P && u.onwebkitanimationend !== P ? (w = "-webkit-", p = "WebkitAnimation", A = "webkitAnimationEnd animationend") : (p = "animation", A = "animationend");
            var B = "Duration",
                r = "Property",
                v = "Delay",
                l = "IterationCount",
                x = "$$ngAnimateKey",
                m = "$$ngAnimateCSS3Data",
                t = "ng-animate-block-transitions",
                Q = 3,
                W = 1.5,
                ba = 1E3,
                q = {},
                ca = 0,
                X = [],
                S, da = null,
                ea = 0,
                Y = [];
            return {
                enter: function(a, b) {
                    return c("enter", a, "ng-enter", b)
                },
                leave: function(a, b) {
                    return c("leave", a, "ng-leave", b)
                },
                move: function(a, b) {
                    return c("move", a, "ng-move", b)
                },
                beforeSetClass: function(b, c, d, e) {
                    var f = G(d, "-remove") + " " + G(c, "-add"),
                        g = a("setClass", b, f, function(a) {
                            var e = b.attr("class");
                            b.removeClass(d);
                            b.addClass(c);
                            a = a();
                            b.attr("class", e);
                            return a
                        });
                    if (g) return F(b, function() {
                        N(b, f);
                        O(b);
                        e()
                    }), g;
                    e()
                },
                beforeAddClass: function(b, c, d) {
                    var e = a("addClass", b, G(c, "-add"), function(a) {
                        b.addClass(c);
                        a = a();
                        b.removeClass(c);
                        return a
                    });
                    if (e) return F(b, function() {
                        N(b, c);
                        O(b);
                        d()
                    }), e;
                    d()
                },
                setClass: function(a, c, d, e) {
                    d = G(d, "-remove");
                    c = G(c, "-add");
                    return b("setClass", a, d + " " + c, e)
                },
                addClass: function(a, c, d) {
                    return b("addClass", a, G(c, "-add"), d)
                },
                beforeRemoveClass: function(b, c, d) {
                    var e = a("removeClass", b, G(c, "-remove"), function(a) {
                        var d = b.attr("class");
                        b.removeClass(c);
                        a = a();
                        b.attr("class", d);
                        return a
                    });
                    if (e) return F(b, function() {
                        N(b, c);
                        O(b);
                        d()
                    }), e;
                    d()
                },
                removeClass: function(a, c, d) {
                    return b("removeClass", a, G(c, "-remove"), d)
                }
            }
        }])
    }])
})(window, window.angular);
                                    

#9 JavaScript::Eval (size: 21262, repeated: 1) - SHA256: 72f6827093b27f42e628c17813ee6c8a4f8935f7cc521701fcf1c875f821c3d5

                                        (function(window, angular, undefined) {
    'use strict';
    angular.mock = {};
    angular.mock.$BrowserProvider = function() {
        this.$get = function() {
            return new angular.mock.$Browser();
        };
    };
    angular.mock.$Browser = function() {
        var self = this;
        this.isMock = true;
        self.$$url = "http://server/";
        self.$$lastUrl = self.$$url;
        self.pollFns = [];
        self.$$completeOutstandingRequest = angular.noop;
        self.$$incOutstandingRequestCount = angular.noop;
        self.onUrlChange = function(listener) {
            self.pollFns.push(function() {
                if (self.$$lastUrl != self.$$url) {
                    self.$$lastUrl = self.$$url;
                    listener(self.$$url);
                }
            });
            return listener;
        };
        self.cookieHash = {};
        self.lastCookieHash = {};
        self.deferredFns = [];
        self.deferredNextId = 0;
        self.defer = function(fn, delay) {
            delay = delay || 0;
            self.deferredFns.push({
                time: (self.defer.now + delay),
                fn: fn,
                id: self.deferredNextId
            });
            self.deferredFns.sort(function(a, b) {
                return a.time - b.time;
            });
            return self.deferredNextId++;
        };
        self.defer.now = 0;
        self.defer.cancel = function(deferId) {
            var fnIndex;
            angular.forEach(self.deferredFns, function(fn, index) {
                if (fn.id === deferId) fnIndex = index;
            });
            if (fnIndex !== undefined) {
                self.deferredFns.splice(fnIndex, 1);
                return true;
            }
            return false;
        };
        self.defer.flush = function(delay) {
            if (angular.isDefined(delay)) {
                self.defer.now += delay;
            } else {
                if (self.deferredFns.length) {
                    self.defer.now = self.deferredFns[self.deferredFns.length - 1].time;
                } else {
                    throw new Error('No deferred tasks to be flushed');
                }
            }
            while (self.deferredFns.length && self.deferredFns[0].time <= self.defer.now) {
                self.deferredFns.shift().fn();
            }
        };
        self.$$baseHref = '';
        self.baseHref = function() {
            return this.$$baseHref;
        };
    };
    angular.mock.$Browser.prototype = {
        poll: function poll() {
            angular.forEach(this.pollFns, function(pollFn) {
                pollFn();
            });
        },
        addPollFn: function(pollFn) {
            this.pollFns.push(pollFn);
            return pollFn;
        },
        url: function(url, replace) {
            if (url) {
                this.$$url = url;
                return this;
            }
            return this.$$url;
        },
        cookies: function(name, value) {
            if (name) {
                if (angular.isUndefined(value)) {
                    delete this.cookieHash[name];
                } else {
                    if (angular.isString(value) && value.length <= 4096) {
                        this.cookieHash[name] = value;
                    }
                }
            } else {
                if (!angular.equals(this.cookieHash, this.lastCookieHash)) {
                    this.lastCookieHash = angular.copy(this.cookieHash);
                    this.cookieHash = angular.copy(this.cookieHash);
                }
                return this.cookieHash;
            }
        },
        notifyWhenNoOutstandingRequests: function(fn) {
            fn();
        }
    };
    angular.mock.$ExceptionHandlerProvider = function() {
        var handler;
        this.mode = function(mode) {
            switch (mode) {
                case 'rethrow':
                    handler = function(e) {
                        throw e;
                    };
                    break;
                case 'log':
                    var errors = [];
                    handler = function(e) {
                        if (arguments.length == 1) {
                            errors.push(e);
                        } else {
                            errors.push([].slice.call(arguments, 0));
                        }
                    };
                    handler.errors = errors;
                    break;
                default:
                    throw new Error("Unknown mode '" + mode + "', only 'log'/'rethrow' modes are allowed!");
            }
        };
        this.$get = function() {
            return handler;
        };
        this.mode('rethrow');
    };
    angular.mock.$LogProvider = function() {
        var debug = true;

        function concat(array1, array2, index) {
            return array1.concat(Array.prototype.slice.call(array2, index));
        }
        this.debugEnabled = function(flag) {
            if (angular.isDefined(flag)) {
                debug = flag;
                return this;
            } else {
                return debug;
            }
        };
        this.$get = function() {
            var $log = {
                log: function() {
                    $log.log.logs.push(concat([], arguments, 0));
                },
                warn: function() {
                    $log.warn.logs.push(concat([], arguments, 0));
                },
                info: function() {
                    $log.info.logs.push(concat([], arguments, 0));
                },
                error: function() {
                    $log.error.logs.push(concat([], arguments, 0));
                },
                debug: function() {
                    if (debug) {
                        $log.debug.logs.push(concat([], arguments, 0));
                    }
                }
            };
            $log.reset = function() {
                $log.log.logs = [];
                $log.info.logs = [];
                $log.warn.logs = [];
                $log.error.logs = [];
                $log.debug.logs = [];
            };
            $log.assertEmpty = function() {
                var errors = [];
                angular.forEach(['error', 'warn', 'info', 'log', 'debug'], function(logLevel) {
                    angular.forEach($log[logLevel].logs, function(log) {
                        angular.forEach(log, function(logItem) {
                            errors.push('MOCK $log (' + logLevel + '): ' + String(logItem) + '\n' + (logItem.stack || ''));
                        });
                    });
                });
                if (errors.length) {
                    errors.unshift("Expected $log to be empty! Either a message was logged unexpectedly, or " + "an expected log message was not checked and removed:");
                    errors.push('');
                    throw new Error(errors.join('\n---------\n'));
                }
            };
            $log.reset();
            return $log;
        };
    };
    angular.mock.$IntervalProvider = function() {
        this.$get = ['$rootScope', '$q', function($rootScope, $q) {
            var repeatFns = [],
                nextRepeatId = 0,
                now = 0;
            var $interval = function(fn, delay, count, invokeApply) {
                var deferred = $q.defer(),
                    promise = deferred.promise,
                    iteration = 0,
                    skipApply = (angular.isDefined(invokeApply) && !invokeApply);
                count = (angular.isDefined(count)) ? count : 0, promise.then(null, null, fn);
                promise.$$intervalId = nextRepeatId;

                function tick() {
                    deferred.notify(iteration++);
                    if (count > 0 && iteration >= count) {
                        var fnIndex;
                        deferred.resolve(iteration);
                        angular.forEach(repeatFns, function(fn, index) {
                            if (fn.id === promise.$$intervalId) fnIndex = index;
                        });
                        if (fnIndex !== undefined) {
                            repeatFns.splice(fnIndex, 1);
                        }
                    }
                    if (!skipApply) $rootScope.$apply();
                }
                repeatFns.push({
                    nextTime: (now + delay),
                    delay: delay,
                    fn: tick,
                    id: nextRepeatId,
                    deferred: deferred
                });
                repeatFns.sort(function(a, b) {
                    return a.nextTime - b.nextTime;
                });
                nextRepeatId++;
                return promise;
            };
            $interval.cancel = function(promise) {
                if (!promise) return false;
                var fnIndex;
                angular.forEach(repeatFns, function(fn, index) {
                    if (fn.id === promise.$$intervalId) fnIndex = index;
                });
                if (fnIndex !== undefined) {
                    repeatFns[fnIndex].deferred.reject('canceled');
                    repeatFns.splice(fnIndex, 1);
                    return true;
                }
                return false;
            };
            $interval.flush = function(millis) {
                now += millis;
                while (repeatFns.length && repeatFns[0].nextTime <= now) {
                    var task = repeatFns[0];
                    task.fn();
                    task.nextTime += task.delay;
                    repeatFns.sort(function(a, b) {
                        return a.nextTime - b.nextTime;
                    });
                }
                return millis;
            };
            return $interval;
        }];
    };
    var R_ISO8061_STR = /^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?:\:?(\d\d)(?:\:?(\d\d)(?:\.(\d{3}))?)?)?(Z|([+-])(\d\d):?(\d\d)))?$/;

    function jsonStringToDate(string) {
        var match;
        if (match = string.match(R_ISO8061_STR)) {
            var date = new Date(0),
                tzHour = 0,
                tzMin = 0;
            if (match[9]) {
                tzHour = int(match[9] + match[10]);
                tzMin = int(match[9] + match[11]);
            }
            date.setUTCFullYear(int(match[1]), int(match[2]) - 1, int(match[3]));
            date.setUTCHours(int(match[4] || 0) - tzHour, int(match[5] || 0) - tzMin, int(match[6] || 0), int(match[7] || 0));
            return date;
        }
        return string;
    }

    function int(str) {
        return parseInt(str, 10);
    }

    function padNumber(num, digits, trim) {
        var neg = '';
        if (num < 0) {
            neg = '-';
            num = -num;
        }
        num = '' + num;
        while (num.length < digits) num = '0' + num;
        if (trim) num = num.substr(num.length - digits);
        return neg + num;
    }
    angular.mock.TzDate = function(offset, timestamp) {
        var self = new Date(0);
        if (angular.isString(timestamp)) {
            var tsStr = timestamp;
            self.origDate = jsonStringToDate(timestamp);
            timestamp = self.origDate.getTime();
            if (isNaN(timestamp)) throw {
                name: "Illegal Argument",
                message: "Arg '" + tsStr + "' passed into TzDate constructor is not a valid date string"
            };
        } else {
            self.origDate = new Date(timestamp);
        }
        var localOffset = new Date(timestamp).getTimezoneOffset();
        self.offsetDiff = localOffset * 60 * 1000 - offset * 1000 * 60 * 60;
        self.date = new Date(timestamp + self.offsetDiff);
        self.getTime = function() {
            return self.date.getTime() - self.offsetDiff;
        };
        self.toLocaleDateString = function() {
            return self.date.toLocaleDateString();
        };
        self.getFullYear = function() {
            return self.date.getFullYear();
        };
        self.getMonth = function() {
            return self.date.getMonth();
        };
        self.getDate = function() {
            return self.date.getDate();
        };
        self.getHours = function() {
            return self.date.getHours();
        };
        self.getMinutes = function() {
            return self.date.getMinutes();
        };
        self.getSeconds = function() {
            return self.date.getSeconds();
        };
        self.getMilliseconds = function() {
            return self.date.getMilliseconds();
        };
        self.getTimezoneOffset = function() {
            return offset * 60;
        };
        self.getUTCFullYear = function() {
            return self.origDate.getUTCFullYear();
        };
        self.getUTCMonth = function() {
            return self.origDate.getUTCMonth();
        };
        self.getUTCDate = function() {
            return self.origDate.getUTCDate();
        };
        self.getUTCHours = function() {
            return self.origDate.getUTCHours();
        };
        self.getUTCMinutes = function() {
            return self.origDate.getUTCMinutes();
        };
        self.getUTCSeconds = function() {
            return self.origDate.getUTCSeconds();
        };
        self.getUTCMilliseconds = function() {
            return self.origDate.getUTCMilliseconds();
        };
        self.getDay = function() {
            return self.date.getDay();
        };
        if (self.toISOString) {
            self.toISOString = function() {
                return padNumber(self.origDate.getUTCFullYear(), 4) + '-' + padNumber(self.origDate.getUTCMonth() + 1, 2) + '-' + padNumber(self.origDate.getUTCDate(), 2) + 'T' + padNumber(self.origDate.getUTCHours(), 2) + ':' + padNumber(self.origDate.getUTCMinutes(), 2) + ':' + padNumber(self.origDate.getUTCSeconds(), 2) + '.' + padNumber(self.origDate.getUTCMilliseconds(), 3) + 'Z';
            };
        }
        var unimplementedMethods = ['getUTCDay', 'getYear', 'setDate', 'setFullYear', 'setHours', 'setMilliseconds', 'setMinutes', 'setMonth', 'setSeconds', 'setTime', 'setUTCDate', 'setUTCFullYear', 'setUTCHours', 'setUTCMilliseconds', 'setUTCMinutes', 'setUTCMonth', 'setUTCSeconds', 'setYear', 'toDateString', 'toGMTString', 'toJSON', 'toLocaleFormat', 'toLocaleString', 'toLocaleTimeString', 'toSource', 'toString', 'toTimeString', 'toUTCString', 'valueOf'];
        angular.forEach(unimplementedMethods, function(methodName) {
            self[methodName] = function() {
                throw new Error("Method '" + methodName + "' is not implemented in the TzDate mock");
            };
        });
        return self;
    };
    angular.mock.TzDate.prototype = Date.prototype;
    angular.mock.animate = angular.module('ngAnimateMock', ['ng']).config(['$provide', function($provide) {
        var reflowQueue = [];
        $provide.value('$$animateReflow', function(fn) {
            var index = reflowQueue.length;
            reflowQueue.push(fn);
            return function cancel() {
                reflowQueue.splice(index, 1);
            };
        });
        $provide.decorator('$animate', function($delegate, $$asyncCallback) {
            var animate = {
                queue: [],
                enabled: $delegate.enabled,
                triggerCallbacks: function() {
                    $$asyncCallback.flush();
                },
                triggerReflow: function() {
                    angular.forEach(reflowQueue, function(fn) {
                        fn();
                    });
                    reflowQueue = [];
                }
            };
            angular.forEach(['enter', 'leave', 'move', 'addClass', 'removeClass', 'setClass'], function(method) {
                animate[method] = function() {
                    animate.queue.push({
                        event: method,
                        element: arguments[0],
                        args: arguments
                    });
                    $delegate[method].apply($delegate, arguments);
                };
            });
            return animate;
        });
    }]);
    angular.mock.dump = function(object) {
        return serialize(object);

        function serialize(object) {
            var out;
            if (angular.isElement(object)) {
                object = angular.element(object);
                out = angular.element('<div></div>');
                angular.forEach(object, function(element) {
                    out.append(angular.element(element).clone());
                });
                out = out.html();
            } else if (angular.isArray(object)) {
                out = [];
                angular.forEach(object, function(o) {
                    out.push(serialize(o));
                });
                out = '[ ' + out.join(', ') + ' ]';
            } else if (angular.isObject(object)) {
                if (angular.isFunction(object.$eval) && angular.isFunction(object.$apply)) {
                    out = serializeScope(object);
                } else if (object instanceof Error) {
                    out = object.stack || ('' + object.name + ': ' + object.message);
                } else {
                    out = angular.toJson(object, true);
                }
            } else {
                out = String(object);
            }
            return out;
        }

        function serializeScope(scope, offset) {
            offset = offset || '  ';
            var log = [offset + 'Scope(' + scope.$id + '): {'];
            for (var key in scope) {
                if (Object.prototype.hasOwnProperty.call(scope, key) && !key.match(/^(\$|this)/)) {
                    log.push('  ' + key + ': ' + angular.toJson(scope[key]));
                }
            }
            var child = scope.$$childHead;
            while (child) {
                log.push(serializeScope(child, offset + '  '));
                child = child.$$nextSibling;
            }
            log.push('}');
            return log.join('\n' + offset);
        }
    };
    angular.mock.$HttpBackendProvider = function() {
        this.$get = ['$rootScope', createHttpBackendMock];
    };

    function createHttpBackendMock($rootScope, $delegate, $browser) {
        var definitions = [],
            expectations = [],
            responses = [],
            responsesPush = angular.bind(responses, responses.push),
            copy = angular.copy;

        function createResponse(status, data, headers, statusText) {
            if (angular.isFunction(status)) return status;
            return function() {
                return angular.isNumber(status) ? [status, data, headers, statusText] : [200, status, data];
            };
        }

        function $httpBackend(method, url, data, callback, headers, timeout, withCredentials) {
            var xhr = new MockXhr(),
                expectation = expectations[0],
                wasExpected = false;

            function prettyPrint(data) {
                return (angular.isString(data) || angular.isFunction(data) || data instanceof RegExp) ? data : angular.toJson(data);
            }

            function wrapResponse(wrapped) {
                if (!$browser && timeout && timeout.then) timeout.then(handleTimeout);
                return handleResponse;

                function handleResponse() {
                    var response = wrapped.response(method, url, data, headers);
                    xhr.$$respHeaders = response[2];
                    callback(copy(response[0]), copy(response[1]), xhr.getAllResponseHeaders(), copy(response[3] || ''));
                }

                function handleTimeout() {
                    for (var i = 0, ii = responses.length; i < ii; i++) {
                        if (responses[i] === handleResponse) {
                            responses.splice(i, 1);
                            callback(-1, undefined, '');
                            break;
                        }
                    }
                }
            }
            if (expectation && expectation.match(method, url)) {
                if (!expectation.matchData(data)) throw new Error('Expected ' + expectation + ' with different data\n' + 'EXPECTED: ' + prettyPrint(expectation.data) + '\nGOT:      ' + data);
                if (!expectation.matchHeaders(headers)) throw new Error('Expected ' + expectation + ' with different headers\n' + 'EXPECTED: ' + prettyPrint(expectation.headers) + '\nGOT:      ' + prettyPrint(headers));
                expectations.shift();
                if (expectation.response) {
                    responses.push(wrapResponse(expectation));
                    return;
                }
                wasExpected = true;
            }
            var i = -1,
                definition;
            while ((definition = definitions[++i])) {
                if (definition.match(method, url, data, headers || {})) {
                    if (definition.response) {
                        ($browser ? $browser.defer : responsesPush)(wrapResponse(definition));
                    } else if (definition.passThrough) {
                        $delegate(method, url, data, callback, headers, timeout, withCredentials);
                    } else throw new Error('No response defined !');
                    return;
                }
            }
            throw wasExpected ? new Error('No response defined !') : new Error('Unexpected request: ' + method + ' ' + url + '\n' + (expectation ? 'Expected ' + expectation : 'No more request expected'));
        }
        $httpBackend.when = function(method, url, data, headers) {
            var definition = new MockHttpExpectation(method, url, data, headers),
                chain = {
                    respond: function(status, data, headers, statusText) {
                        definition.response = createResponse(status, data, headers, statusText);
                    }
                };
            if ($browser) {
                chain.passThrough = function() {
                    definition.passThrough = true;
                };
            }
            definitions.push(definition);
            return chain;
        };
        createShortMethods('when');
        $httpBackend.expect = function(method, url, data, headers) {
            var expectation = new MockHttpExpectation(method, url, data, headers);
            expectations.push(expectation);
            return {
                respond: function(status, data, headers, statusText) {
                    expectation.response = createResponse(status, data, headers, statusText);
                }
            };
        };
        createShortMethods('expect');
        $httpBackend.flush = function(count) {
            $rootScope.$digest();
            if (!responses.length) throw new Error('No pending request to flush !');
            if (angular.isDefined(count)) {
                while (count--) {
                    if (!responses.length) throw new Error('No more pending request to flush !');
                    responses.shift()();
                }
            } else {
                while (responses.length) {
                    responses.shift()();
                }
            }
            $httpBackend.verifyNoOutstandingExpectation();
        };
        $httpBackend.verifyNoOutstandingExpectation = function() {
            $rootScope.$digest();
            if (expectations.length) {
                throw new Error('Unsatisfied requests: ' + expectations.join(', '));
            }
        };
        $httpBackend.verifyNoOutstandingRequest = function() {
            if (responses.length) {
                throw new Error('Unflushed requests: ' + responses.length);
            }
        };
        $httpBackend.resetExpectations = function() {
            expectations.length = 0;
            responses.length = 0;
        };
        return $httpBackend;

        function createShortMethods(prefix) {
            angular.forEach(['GET', 'DELETE', 'JSONP'], function(method) {
                $httpBackend[prefix + method] = function(url, headers) {
                    return $httpBackend[prefix](method, url, undefined, headers);
                };
            });
            angular.forEach(['PUT', 'POST', 'PATCH'], function(method) {
                $httpBackend[prefix + method] = function(url, data, headers) {
                    return $httpBackend[prefix](method, url, data, headers);
                };
            });
        }
    }

    function MockHttpExpectation(method, url, data, headers) {
        this.data = data;
        this.headers = headers;
        this.match = function(m, u, d, h) {
            if (method != m) return false;
            if (!this.matchUrl(u)) return false;
            if (angular.isDefined(d) && !this.matchData(d)) return false;
            if (angular.isDefined(h) && !this.matchHeaders(h)) return false;
            return true;
        };
        this.matchUrl = function(u) {
            if (!url) return true;
            if (angular.isFunction(url.test)) return url.test(u);
            return url == u;
        };
        this.matchHeaders = function(h) {
            if (angular.isUndefined(headers)) return true;
            if (angular.isFunction(headers)) return headers(h);
            return angular.equals(headers, h);
        };
        this.matchData = function(d) {
            if (angular.isUndefined(data)) return true;
            if (data && angular.isFunction(data.test)) return data.test(d);
            if (data && angular.isFunction(data)) return data(d);
            if (data && !angular.isString(data)) return angular.equals(data, angular.fromJson(d));
            return data == d;
        };
        this.toString = function() {
            return method + ' ' + url;
        };
    }

    function createMockXhr() {
        return new MockXhr();
    }

    function MockXhr() {
        MockXhr.$$lastInstance = this;
        this.open = function(method, url, async) {
            this.$$method = method;
            this.$$url = url;
            this.$$async = async;
            this.$$reqHeaders = {};
            this.$$respHeaders = {};
        };
        this.send = function(data) {
            this.$$data = data;
        };
        this.setRequestHeader = function(key, value) {
            this.$$reqHeaders[key] = value;
        };
        this.getResponseHeader = function(name) {
            var header = this.$$respHeaders[name];
            if (header) return header;
            name = angular.lowercase(name);
            header = this.$$respHeaders[name];
            if (header) return header;
            header = undefined;
            angular.forEach(this.$$respHeaders, function(headerVal, headerName) {
                if (!header && angular.lowercase(headerName) == name) header = headerVal;
            });
            return header;
        };
        this.getAllResponseHeaders = function() {
            var lines = [];
            angular.forEach(this.$$respHeaders, function(value, key) {
                lines.push(key + ': ' + value);
            });
            return lines.join('\n');
        };
        this.abort = angular.noop;
    }
    angular.mock.$TimeoutDecorator = function($delegate, $browser) {
        $delegate.flush = function(delay) {
            $browser.defer.flush(delay);
        };
        $delegate.verifyNoPendingTasks = function() {
            if ($browser.deferredFns.length) {
                throw new Error('Deferred tasks to flush (' + $browser.deferredFns.length + '): ' + formatPendingTasksAsString($browser.deferredFns));
            }
        };

        function formatPendingTasksAsString(tasks) {
            var result = [];
            angular.forEach(tasks, function(task) {
                result.push('{id: ' + task.id + ', ' + 'time: ' + task.time + '}');
            });
            return result.join(', ');
        }
        return $delegate;
    };
    angular.mock.$RAFDecorator = function($delegate) {
        var queue = [];
        var rafFn = function(fn) {
            var index = queue.length;
            queue.push(fn);
            return function() {
                queue.splice(index, 1);
            };
        };
        rafFn.supported = $delegate.supported;
        rafFn.flush = function() {
            if (queue.length === 0) {
                throw new Error('No rAF callbacks present');
            }
            var length = queue.length;
            for (var i = 0; i < length; i++) {
                queue[i]();
            }
            queue = [];
        };
        return rafFn;
    };
    angular.mock.$AsyncCallbackDecorator = function($delegate) {
        var callbacks = [];
        var addFn = function(fn) {
            callbacks.push(fn);
        };
        addFn.flush = function() {
            angular.forEach(callbacks, function(fn) {
                fn();
            });
            callbacks = [];
        };
        return addFn;
    };
    angular.mock.$RootElementProvider = function() {
        this.$get = function() {
            return angular.element('<div ng-app></div>');
        };
    };
    angular.module('ngMock', ['ng']).provider({
        $browser: angular.mock.$BrowserProvider,
        $exceptionHandler: angular.mock.$ExceptionHandlerProvider,
        $log: angular.mock.$LogProvider,
        $interval: angular.mock.$IntervalProvider,
        $httpBackend: angular.mock.$HttpBackendProvider,
        $rootElement: angular.mock.$RootElementProvider
    }).config(['$provide', function($provide) {
        $provide.decorator('$timeout', angular.mock.$TimeoutDecorator);
        $provide.decorator('$$rAF', angular.mock.$RAFDecorator);
        $provide.decorator('$$asyncCallback', angular.mock.$AsyncCallbackDecorator);
    }]);
    angular.module('ngMockE2E', ['ng']).config(['$provide', function($provide) {
        $provide.decorator('$httpBackend', angular.mock.e2e.$httpBackendDecorator);
    }]);
    angular.mock.e2e = {};
    angular.mock.e2e.$httpBackendDecorator = ['$rootScope', '$delegate', '$browser', createHttpBackendMock];
    angular.mock.clearDataCache = function() {
        var key, cache = angular.element.cache;
        for (key in cache) {
            if (Object.prototype.hasOwnProperty.call(cache, key)) {
                var handle = cache[key].handle;
                handle && angular.element(handle.elem).off();
                delete cache[key];
            }
        }
    };
    if (window.jasmine || window.mocha) {
        var currentSpec = null,
            isSpecRunning = function() {
                return !!currentSpec;
            };
        (window.beforeEach || window.setup)(function() {
            currentSpec = this;
        });
        (window.afterEach || window.teardown)(function() {
            var injector = currentSpec.$injector;
            currentSpec.$injector = null;
            currentSpec.$modules = null;
            currentSpec = null;
            if (injector) {
                injector.get('$rootElement').off();
                injector.get('$browser').pollFns.length = 0;
            }
            angular.mock.clearDataCache();
            angular.forEach(angular.element.fragments, function(val, key) {
                delete angular.element.fragments[key];
            });
            MockXhr.$$lastInstance = null;
            angular.forEach(angular.callbacks, function(val, key) {
                delete angular.callbacks[key];
            });
            angular.callbacks.counter = 0;
        });
        window.module = angular.mock.module = function() {
            var moduleFns = Array.prototype.slice.call(arguments, 0);
            return isSpecRunning() ? workFn() : workFn;

            function workFn() {
                if (currentSpec.$injector) {
                    throw new Error('Injector already created, can not register a module!');
                } else {
                    var modules = currentSpec.$modules || (currentSpec.$modules = []);
                    angular.forEach(moduleFns, function(module) {
                        if (angular.isObject(module) && !angular.isArray(module)) {
                            modules.push(function($provide) {
                                angular.forEach(module, function(value, key) {
                                    $provide.value(key, value);
                                });
                            });
                        } else {
                            modules.push(module);
                        }
                    });
                }
            }
        };
        var ErrorAddingDeclarationLocationStack = function(e, errorForStack) {
            this.message = e.message;
            this.name = e.name;
            if (e.line) this.line = e.line;
            if (e.sourceId) this.sourceId = e.sourceId;
            if (e.stack && errorForStack) this.stack = e.stack + '\n' + errorForStack.stack;
            if (e.stackArray) this.stackArray = e.stackArray;
        };
        ErrorAddingDeclarationLocationStack.prototype.toString = Error.prototype.toString;
        window.inject = angular.mock.inject = function() {
            var blockFns = Array.prototype.slice.call(arguments, 0);
            var errorForStack = new Error('Declaration Location');
            return isSpecRunning() ? workFn.call(currentSpec) : workFn;

            function workFn() {
                var modules = currentSpec.$modules || [];
                modules.unshift('ngMock');
                modules.unshift('ng');
                var injector = currentSpec.$injector;
                if (!injector) {
                    injector = currentSpec.$injector = angular.injector(modules);
                }
                for (var i = 0, ii = blockFns.length; i < ii; i++) {
                    try {
                        injector.invoke(blockFns[i] || angular.noop, this);
                    } catch (e) {
                        if (e.stack && errorForStack) {
                            throw new ErrorAddingDeclarationLocationStack(e, errorForStack);
                        }
                        throw e;
                    } finally {
                        errorForStack = null;
                    }
                }
            }
        };
    }
})(window, window.angular);
                                    

#10 JavaScript::Eval (size: 38, repeated: 1) - SHA256: 23541a19fe61794b478a117dfa147009efcbba0ef6e6a51102c26344d73bc966

                                        0,
function(H) {
    H.D && f(H, 0);
}
                                    

#11 JavaScript::Eval (size: 30, repeated: 1) - SHA256: 0be95c11af7e840b81c90befeeb39b6ecceba90c00c03dfa47d749eda8554683

                                        0,
function(H) {
    H.Z(0);
}
                                    

#12 JavaScript::Eval (size: 30, repeated: 1) - SHA256: 83c8fff2d7e6880ee71146e46462a8d6e6ad490e34dde99af9faeeba945dc909

                                        0,
function(H) {
    H.Z(3);
}
                                    

#13 JavaScript::Eval (size: 30, repeated: 1) - SHA256: 2bda201ecaf1a9eea85e3e8851708f3d6ce3d08e67289663913433506223d24f

                                        0,
function(H) {
    H.Z(4);
}
                                    

#14 JavaScript::Eval (size: 30, repeated: 1) - SHA256: 64478f315d92ba91e4111130df9a54dc2bbb4ca4ab0657cfd6bf7ca72f1803a9

                                        0,
function(H) {
    H.Z(7);
}
                                    

#15 JavaScript::Eval (size: 31, repeated: 1) - SHA256: 9a9ddaaabfa18d58c5932db457bb9c3cd92bfb08a9212fea6c838e02c6ae9e05

                                        0,
function(H) {
    M(H, 1);
}
                                    

#16 JavaScript::Eval (size: 31, repeated: 1) - SHA256: 38ba87b978aeba7c91bb45dba3e32daed6fc1787521c4704a861b8f094d33c4a

                                        0,
function(H) {
    M(H, 2);
}
                                    

#17 JavaScript::Eval (size: 31, repeated: 1) - SHA256: ecbd39a6b910d231ee60612ca5a50a334eb0e08a7daf13783ddf2c3db2f467a1

                                        0,
function(H) {
    M(H, 4);
}
                                    

#18 JavaScript::Eval (size: 31, repeated: 1) - SHA256: 1da126263f3a3c08abb3d7cba91d64c29ed04041db790f2ac14d295d9e594eed

                                        0,
function(H) {
    l(H, 1);
}
                                    

#19 JavaScript::Eval (size: 31, repeated: 1) - SHA256: a94ddcd06442dcf650c9d0f9c67d82b16e67a8e8a6d21d9f80a72a6470195837

                                        0,
function(H) {
    l(H, 2);
}
                                    

#20 JavaScript::Eval (size: 31, repeated: 1) - SHA256: 6d5d736372c174b0d11a903ac1e12fa33690a6a4ad759bb0e123c251a7f30792

                                        0,
function(H) {
    l(H, 4);
}
                                    

#21 JavaScript::Eval (size: 187, repeated: 1) - SHA256: 08cf146f82e91269a520f9da820cb0811e4ca286853f1bdf4da13a669d394504

                                        0,
function(H, h) {
    ((h.push(H[0] << 24 | H[1] << 16 | H[2] << 8 | H[3]), h).push(H[4] << 24 | H[5] << 16 | H[6] << 8 | H[7]), h).push(H[8] << 24 | H[9] << 16 | H[10] << 8 | H[11]);
}
                                    

#22 JavaScript::Eval (size: 95, repeated: 1) - SHA256: 8a992e30c0dd6a46441530b142732a88291c9429384c070d9140c3b6fe23cc2f

                                        0,
function(H, h) {
    (h = H.a(), H = H.b(h), H[0]).removeEventListener(H[1], H[2], false);
}
                                    

#23 JavaScript::Eval (size: 83, repeated: 1) - SHA256: d7b3e43565278a6d77e59f1d81e638f62411cdfd3098cc2781c88d741170cf8a

                                        0,
function(H, h) {
    N(H, 1, 5) || (h = L(H), U(H, h.f, h.m.apply(h.X, h.W)));
}
                                    

#24 JavaScript::Eval (size: 52, repeated: 1) - SHA256: db20767d99be910ee788eb0b82c122fecb8353e7fc22eaf6dc0d5274bd5d0a38

                                        0,
function(H, h) {
    T((h = H.b(H.a()), H), h);
}
                                    

#25 JavaScript::Eval (size: 123, repeated: 1) - SHA256: db8e91c4dce5c79695b13f6e0d07d9d4b96572c3ca1ce853e1106caca291b179

                                        0,
function(H, h) {
    if (h = this.$[H], void 0 === h) {
        throw e(this, 30, 0, H), this.F;
    }
    return h();
}
                                    

#26 JavaScript::Eval (size: 518, repeated: 1) - SHA256: 75f1b655f0cc866eae5c618c19a7e35bdcf5ac0ca784b53de7a7744679720469

                                        0,
function(H, h) {
    if (this.j) {
        return H = H ? this.j().shift() : this.A().shift(), this.j().length ||
            this.A().length || (this.A = this.j = void 0, this.T--), H;
    }
    if (!((H = this.b(165), H) in this.K)) {
        throw e(this, 31), this.F;
    }
    return (U(this, 165, ((void 0 == this.R && (this.R = I(this.K, H - 4), this.g = void 0), this.g) != H >> 3 &&
        (this.g = H >> 3, h = [0, 0, 0, this.b(73)], this.H = u(this.R, this.g, h)), H) + 1), this.K[H]) ^ this.H[H % 8];
}
                                    

#27 JavaScript::Eval (size: 88, repeated: 1) - SHA256: b1236c03528b9ad1fa3459d9dd1d75ba3030e1f82f7745b0226c7b9e8b1eee44

                                        0,
function(H, h, D) {
    0 != (D = (h = H.a(), H).a(), H.b(h)) && U(H, 165, H.b(D));
}
                                    

#28 JavaScript::Eval (size: 74, repeated: 1) - SHA256: 3da84ddb9196059eb7bf4c4494d4831cab2386875d39a5bfbf27f04288d7b664

                                        0,
function(H, h, D) {
    D = (h = H.a(), H.a()), U(H, D, "" + H.b(h));
}
                                    

#29 JavaScript::Eval (size: 123, repeated: 1) - SHA256: 7afebec69e22e1933faea876090bb9f79ae8990b3fbcb6ab94e58a55459877ac

                                        0,
function(H, h, D) {
    N(H, 1, 5) ||
        (h = H.a(), D = H.a(), U(H, D, function(H) {
            return eval(H);
        }(H.b(h))));
}
                                    

#30 JavaScript::Eval (size: 88, repeated: 1) - SHA256: b36f5683dcfed5d4ba14992f07631cf6e0d4a07523728f0864bba4e84dacff8e

                                        0,
function(H, h, D) {
    U(H, (D = (h = H.a(), H).a(), h = H.$[h] && H.b(h), D), h);
}
                                    

#31 JavaScript::Eval (size: 78, repeated: 1) - SHA256: 735474dd07f7960176d1239ea118a31b80f87933e23bb8914f6783ddf3058ac3

                                        0,
function(H, h, D) {
    U(H, (h = H.a(), D = H.a(), D), H.b(D) % H.b(h));
}
                                    

#32 JavaScript::Eval (size: 78, repeated: 1) - SHA256: c9fa6c0d36a5092c61f72497904318a88d411a5249775cf98c46ffcf4143b59e

                                        0,
function(H, h, D) {
    U(H, (h = H.a(), D = H.a(), D), H.b(D) * H.b(h));
}
                                    

#33 JavaScript::Eval (size: 78, repeated: 1) - SHA256: 41d39a5167e2c9300acc0e299d121713c29723a9187ad116d8098792bad96822

                                        0,
function(H, h, D) {
    U(H, (h = H.a(), D = H.a(), D), H.b(D) + H.b(h));
}
                                    

#34 JavaScript::Eval (size: 78, repeated: 1) - SHA256: a7509fb36dfc1fba0dae50daa97664e281c95b40b0501c63d7ee1b2893b0148f

                                        0,
function(H, h, D) {
    U(H, (h = H.a(), D = H.a(), D), H.b(D) - H.b(h));
}
                                    

#35 JavaScript::Eval (size: 79, repeated: 1) - SHA256: e13ae55c3785010c689b20333afc31276032c5b5bd8511bc9de552dfe102bf2a

                                        0,
function(H, h, D) {
    U(H, (h = H.a(), D = H.a(), h = H.b(h), D), r(h));
}
                                    

#36 JavaScript::Eval (size: 244, repeated: 1) - SHA256: 780262868e5c83226f42f86d7f577ea23e1b1d2174f50b4fe36514808e6991d9

                                        0,
function(H, h, D) {
    if (3 == H.length) {
        for (D = 0; 3 > D; D++) {
            h[D] += H[D];
        }
        for (H = [13, (D = 0, 8), 13, 12, 16, 5, 3, 10, 15]; 9 > D; D++) {
            h[3](h, D % 3, H[D]);
        }
    }
}
                                    

#37 JavaScript::Eval (size: 137, repeated: 1) - SHA256: 33503707eff590aa9a41b1b9f39c7abb652c9dea28a31802806adaab7cc34817

                                        0,
function(H, h, D) {
    return (D = (h = function() {
        return D();
    }, function() {
        return H;
    }), h)[this.w] = function(c) {
        H = c;
    }, h;
}
                                    

#38 JavaScript::Eval (size: 90, repeated: 1) - SHA256: 8a5efd9bf64fc9153668e5bf2bcf1973fcc937e5b7f11878d47c9355870de520

                                        0,
function(H, h, D, B) {
    (B = (h = H.a(), D = H.a(), H.a()), U)(H, B, H.b(h) << D);
}
                                    

#39 JavaScript::Eval (size: 90, repeated: 1) - SHA256: 4b6105c8c84e106811e0f230a9921aea76af2a9c15941e2bf7c422847b195eaf

                                        0,
function(H, h, D, B) {
    (B = (h = H.a(), D = H.a(), H.a()), U)(H, B, H.b(h) >> D);
}
                                    

#40 JavaScript::Eval (size: 93, repeated: 1) - SHA256: 5de717c3f586750269619258964c2e771e04fe857ae62b0171f62d52bf2822e0

                                        0,
function(H, h, D, B) {
    (D = (h = H.a(), H).a(), B = H.a(), H).b(h)[H.b(D)] = H.b(B);
}
                                    

#41 JavaScript::Eval (size: 101, repeated: 1) - SHA256: 1822bdd8e8760906ce9c1d1d6b590a8172853118dee0fca5296893eb31d2e895

                                        0,
function(H, h, D, B) {
    (D = (h = H.a(), H).a(), B = H.a(), U)(H, B, (H.b(h) in H.b(D)) + 0);
}
                                    

#42 JavaScript::Eval (size: 108, repeated: 1) - SHA256: 543ed834b13bfac688ea7b9bd96f76d5d6c79338183c07a94ab4c1a71f02735b

                                        0,
function(H, h, D, B) {
    (h = (B = (D = (h = H.a(), H.a()), H).a(), H.b(h)) == H.b(D), U)(H, B, +h);
}
                                    

#43 JavaScript::Eval (size: 107, repeated: 1) - SHA256: b0dc07ebc5d6afb684099602c71b7b11c6c5bed0b51a93f563b4864dc2b38914

                                        0,
function(H, h, D, B) {
    (h = (B = (D = (h = H.a(), H.a()), H).a(), H.b(h)) > H.b(D), U)(H, B, +h);
}
                                    

#44 JavaScript::Eval (size: 94, repeated: 1) - SHA256: 07dec1a275b104636501a348777b4f4d5c8f64e20325c9b055b92a9acfadf307

                                        0,
function(H, h, D, B) {
    B = (D = (h = H.a(), H.a()), H.a()), U(H, B, H.b(h) | H.b(D));
}
                                    

#45 JavaScript::Eval (size: 95, repeated: 1) - SHA256: 714b3708c4e62734166269bc296db16f34e56803621dd02473fe9ad58e5d7525

                                        0,
function(H, h, D, B) {
    B = (D = (h = H.a(), H.a()), H.a()), U(H, B, H.b(h) || H.b(D));
}
                                    

#46 JavaScript::Eval (size: 111, repeated: 1) - SHA256: 0b0b787bcab9dff8b3acd2f96e3cd401ea3386be3dec19fa7e51d5d118384bd3

                                        0,
function(H, h, D, B) {
    U((h = (D = (D = (h = H.a(), H.a()), B = H.a(), H.b(D)), H).b(h), H), B, h[D]);
}
                                    

#47 JavaScript::Eval (size: 142, repeated: 1) - SHA256: caddbbec87ebf21487b58270347b1b16ff7619cf49981f2177a43bc1b2ecdf80

                                        0,
function(H, h, D, B) {
    for (; D--;) {
        165 != D && 93 != D && h.$[D] && (h.$[D] = h[B](h[H](D), this));
    }
    h[H] = this;
}
                                    

#48 JavaScript::Eval (size: 243, repeated: 1) - SHA256: 7288f1769b18358931cfb0e0854d4e480a530f1475b44630d6346131cc25a3ea

                                        0,
function(H, h, D, B) {
    if ((h = H.B.pop())) {
        for (D = H.a(); 0 < D; D--) {
            B = H.a(), h[B] = H.$[B];
        }
        H.$ = (h[h[110] = H.$[110], 6] = H.$[6], h);
    } else {
        U(H, 165, H.K.length);
    }
}
                                    

#49 JavaScript::Eval (size: 170, repeated: 1) - SHA256: 4bde93983ddd5e5cbd0cf9630afbdedc4482cb2f0e66f1e1e408c0ab6607f4e8

                                        0,
function(H, h, D, B) {
    try {
        B = H[(h + 2) % 3], H[h] = H[h] - H[(h + 1) % 3] - B ^ (1 == h ? B << D : B >>> D);
    } catch (G) {
        throw G;
    }
}
                                    

#50 JavaScript::Eval (size: 216, repeated: 1) - SHA256: 76d98beb29cfba0855459edb6f918220edf38b4bd013515a2858cd05536e58bb

                                        0,
function(H, h, D, B) {
    y(this, (((D = (B = (D = (h = H & 4, H &= 3, this.a()), this).a(), this).b(D), h) &&
            (D = Z(("" + D).replace(/\r\n/g, "\n"))), H) &&
        y(this, B, m(D.length, 2)), B), D);
}
                                    

#51 JavaScript::Eval (size: 130, repeated: 1) - SHA256: d8daa58e99d486c455192fe1aad25709bb2b5e6ac8ae2ef248089fdadac60c3d

                                        0,
function(H, h, D, B, G) {
    (D = (D = (h = H.a(), H.a()), B = H.b(H.a()), G = H.b(H.a()), H).b(D), U)(H, h, w(H, D, B, G));
}
                                    

#52 JavaScript::Eval (size: 226, repeated: 1) - SHA256: 848a7e8713bad074feae2be5fa311d1eff03d7566cccd0e5e249b14bb416663f

                                        0,
function(H, h, D, B, G) {
    (D = (G = (h = (B = (h = H.a(), D = H.a(), H).a(), H).b(h), H.b(H.a())), H).b(D), B = H.b(B), 0 !== h) &&
    (B = w(H, B, G, 1, h, D), h.addEventListener(D, B, p), U(H, 230, [h, D, B]));
}
                                    

#53 JavaScript::Eval (size: 136, repeated: 1) - SHA256: 7d7624274ff71fe27a4d6357f3059ce66c28c6b80b3ffbf65141c05960fb727a

                                        0,
function(H, h, D, B, G) {
    for (B = (h = H.a(), D = F(H), []), G = 0; G < D; G++) {
        B.push(H.a());
    }
    U(H, h, B);
}
                                    

#54 JavaScript::Eval (size: 403, repeated: 1) - SHA256: 482d6411418c0f6b86888fc31739c3b859576544bd65efa08185a7af2f994e30

                                        0,
function(H, h, D, B, G, V) {
    if (!N(H, 1, 255)) {
        if (B = (D = (h = (G = (B = (D = (h = H.a(), H).a(), H.a()), H).a(), H.b(h)), H).b(D), H.b(B)), H = H.b(G), "object" == r(h)) {
            for (V in G = [], h) {
                G.push(V);
            }
            h = G;
        }
        for (V = h.length, G = 0; G < V; G += B) {
            D(h.slice(G, G + B), H);
        }
    }
}
                                    

#55 JavaScript::Eval (size: 218, repeated: 1) - SHA256: 32d2908b82c8b04696f900971b23d40878e3e3feee1079d30a7602a09e762603

                                        0,
function(H, h, D, B, G, V) {
    return H = ((V = (B = function() {
        return B[D.L + (G[D.M] === h) - !V[D.M]];
    }, D = (G = function() {
        return B();
    }, this), D.U), G)[D.w] = function(H) {
        B[D.O] = H;
    }, G[D.w](H), G);
}
                                    

#56 JavaScript::Eval (size: 339, repeated: 1) - SHA256: 089c748037aa59e4a17e05bbc27a3c621b2a539cd0677e4ab784a625b9370c09

                                        0,
function(H, h, D, B, G, V, J) {
    N(H, 1, 5) ||
        (h = L(H), D = h.W, J = D.length, B = h.X, G = h.m, 0 == J ? (V = new(B[G])) : 1 == J ? (V = new(B[G])(D[0])) : 2 == J ? (V = new(B[G])(D[0], D[1])) : 3 == J ? (V = new(B[G])(D[0], D[1], D[2])) : 4 == J ? (V = new(B[G])(D[0], D[1], D[2], D[3])) : e(H, 22), U(H, h.f, V));
}
                                    

#57 JavaScript::Eval (size: 776, repeated: 1) - SHA256: 591b6261ce2c98ee3e53b5dd87457fca68b3d6a23f206f5b7066e244da5c77c1

                                        0,
function(H, h, D, B, G, V, J, O, C, v, k, t, d) {
    for (O = (B = (h = H.a(), D = 0), G = function(h, G) {
            for (; B < h;) {
                D |= H.a() << B, B += 8;
            }
            return D >>= (G = D & (B -= h, 1 << h) - 1, h), G;
        }, V = G(3) + 1, J = G(5), []), v = C = 0; v < J; v++) {
        k = G(1), O.push(k), C += k ? 0 : 1;
    }
    for (v = (C = (C - 1).toString(2).length, t = [], 0); v < J; v++) {
        O[v] || (t[v] = G(C));
    }
    for (v = 0; v < J; v++) {
        O[v] && (t[v] = H.a());
    }
    for (d = (v = V, []); v--;) {
        d.push(H.b(H.a()));
    }
    U(H, h, function(H, h, D, B, G) {
        for (B = 0, H.T++, h = [], D = []; B < J; B++) {
            if (!(G = t[B], O[B])) {
                for (; G >= h.length;) {
                    h.push(H.a());
                }
                G = h[G];
            }
            D.push(G);
        }
        H.j = H.V(d.slice(), H.a), H.A = H.V(D, H.a);
    });
}
                                    

#58 JavaScript::Eval (size: 294, repeated: 1) - SHA256: 8b8b803c6cd6b2e09cbcc677731bd68c277b70a76b0d80622d84a8ac00a2f53f

                                        0,
function(H, h, D, G, R, V, J) {
    if (G = (D = (h = H.a(), F(H)), ""), H.$[46]) {
        for (R = H.b(46), J = R.length, V = 0; D--;) {
            V = (V + F(H)) % J, G += B[R[V]];
        }
    } else {
        for (; D--;) {
            G += B[H.a()];
        }
    }
    U(H, h, G);
}
                                    

#59 JavaScript::Eval (size: 39, repeated: 1) - SHA256: bb6753823aebc94f3cc0c4b3c3ed5b60753622b1198ec8abd45102911d59e131

                                        0,
function($, _) {
    _._ += !_.$[_[_._] = $[0]]
}
                                    

#60 JavaScript::Eval (size: 3527, repeated: 1) - SHA256: 9d3b57302a2cc5f1e8b48a715acd3e9820f15eaa468b9d6931de90bea3d6dab0

                                        ;
(function(API) {
    'use strict'
    var getCharWidthsArray = API.getCharWidthsArray = function(text, options) {
        if (!options) {
            options = {}
        }
        var widths = options.widths ? options.widths : this.internal.getFont().metadata.Unicode.widths,
            widthsFractionOf = widths.fof ? widths.fof : 1,
            kerning = options.kerning ? options.kerning : this.internal.getFont().metadata.Unicode.kerning,
            kerningFractionOf = kerning.fof ? kerning.fof : 1
        var i, l, char_code, char_width, prior_char_code = 0,
            default_char_width = widths[0] || widthsFractionOf,
            output = []
        for (i = 0, l = text.length; i < l; i++) {
            char_code = text.charCodeAt(i)
            output.push((widths[char_code] || default_char_width) / widthsFractionOf + (kerning[char_code] && kerning[char_code][prior_char_code] || 0) / kerningFractionOf)
            prior_char_code = char_code
        }
        return output
    }
    var getArraySum = function(array) {
        var i = array.length,
            output = 0
        while (i) {;
            i--;
            output += array[i]
        }
        return output
    }
    var getStringUnitWidth = API.getStringUnitWidth = function(text, options) {
        return getArraySum(getCharWidthsArray.call(this, text, options))
    }
    var splitLongWord = function(word, widths_array, firstLineMaxLen, maxLen) {
        var answer = []
        var i = 0,
            l = word.length,
            workingLen = 0
        while (i !== l && workingLen + widths_array[i] < firstLineMaxLen) {
            workingLen += widths_array[i];
            i++;
        }
        answer.push(word.slice(0, i))
        var startOfLine = i
        workingLen = 0
        while (i !== l) {
            if (workingLen + widths_array[i] > maxLen) {
                answer.push(word.slice(startOfLine, i))
                workingLen = 0
                startOfLine = i
            }
            workingLen += widths_array[i];
            i++;
        }
        if (startOfLine !== i) {
            answer.push(word.slice(startOfLine, i))
        }
        return answer
    }
    var splitParagraphIntoLines = function(text, maxlen, options) {
        if (!options) {
            options = {}
        }
        var spaceCharWidth = getCharWidthsArray(' ', options)[0]
        var words = text.split(' ')
        var line = [],
            lines = [line],
            line_length = options.textIndent || 0,
            separator_length = 0,
            current_word_length = 0,
            word, widths_array
        var i, l, tmp
        for (i = 0, l = words.length; i < l; i++) {
            word = words[i]
            widths_array = getCharWidthsArray(word, options)
            current_word_length = getArraySum(widths_array)
            if (line_length + separator_length + current_word_length > maxlen) {
                if (current_word_length > maxlen) {
                    tmp = splitLongWord(word, widths_array, maxlen - (line_length + separator_length), maxlen)
                    line.push(tmp.shift())
                    line = [tmp.pop()]
                    while (tmp.length) {
                        lines.push([tmp.shift()])
                    }
                    current_word_length = getArraySum(widths_array.slice(word.length - line[0].length))
                } else {
                    line = [word]
                }
                lines.push(line)
                line_length = current_word_length
                separator_length = spaceCharWidth
            } else {
                line.push(word)
                line_length += separator_length + current_word_length
                separator_length = spaceCharWidth
            }
        }
        var output = []
        for (i = 0, l = lines.length; i < l; i++) {
            output.push(lines[i].join(' '))
        }
        return output
    }
    API.splitTextToSize = function(text, maxlen, options) {
        'use strict'
        if (!options) {
            options = {}
        }
        var fsize = options.fontSize || this.internal.getFontSize(),
            newOptions = (function(options) {
                var widths = {
                        0: 1
                    },
                    kerning = {}
                if (!options.widths || !options.kerning) {
                    var f = this.internal.getFont(options.fontName, options.fontStyle),
                        encoding = 'Unicode'
                    if (f.metadata[encoding]) {
                        return {
                            widths: f.metadata[encoding].widths || widths,
                            kerning: f.metadata[encoding].kerning || kerning
                        }
                    }
                } else {
                    return {
                        widths: options.widths,
                        kerning: options.kerning
                    }
                }
                return {
                    widths: widths,
                    kerning: kerning
                }
            }).call(this, options)
        var paragraphs
        if (text.match(/[\n\r]/)) {
            paragraphs = text.split(/\r\n|\r|\n/g)
        } else {
            paragraphs = [text]
        }
        var fontUnit_maxLen = 1.0 * this.internal.scaleFactor * maxlen / fsize
        newOptions.textIndent = options.textIndent ? options.textIndent * 1.0 * this.internal.scaleFactor / fsize : 0
        var i, l, output = []
        for (i = 0, l = paragraphs.length; i < l; i++) {
            output = output.concat(splitParagraphIntoLines(paragraphs[i], fontUnit_maxLen, newOptions))
        }
        return output
    }
})(jsPDF.API);
                                    

#61 JavaScript::Eval (size: 17120, repeated: 1) - SHA256: 8a94f3d0def6b471d691839261009648541882385a0787a3866bf3a67a1cd0e8

                                        ;
(function(API) {
    'use strict'
    var uncompress = function(data) {
        var decoded = '0123456789abcdef',
            encoded = 'klmnopqrstuvwxyz',
            mapping = {}
        for (var i = 0; i < encoded.length; i++) {
            mapping[encoded[i]] = decoded[i]
        }
        var undef, output = {},
            sign = 1,
            stringparts, activeobject = output,
            parentchain = [],
            parent_key_pair, keyparts = '',
            valueparts = '',
            key, datalen = data.length - 1,
            ch
        i = 1
        while (i != datalen) {
            ch = data[i]
            i += 1
            if (ch == "'") {
                if (stringparts) {
                    key = stringparts.join('')
                    stringparts = undef
                } else {
                    stringparts = []
                }
            } else if (stringparts) {
                stringparts.push(ch)
            } else if (ch == '{') {
                parentchain.push([activeobject, key])
                activeobject = {}
                key = undef
            } else if (ch == '}') {
                parent_key_pair = parentchain.pop()
                parent_key_pair[0][parent_key_pair[1]] = activeobject
                key = undef
                activeobject = parent_key_pair[0]
            } else if (ch == '-') {
                sign = -1
            } else {
                if (key === undef) {
                    if (mapping.hasOwnProperty(ch)) {
                        keyparts += mapping[ch]
                        key = parseInt(keyparts, 16) * sign
                        sign = +1
                        keyparts = ''
                    } else {
                        keyparts += ch
                    }
                } else {
                    if (mapping.hasOwnProperty(ch)) {
                        valueparts += mapping[ch]
                        activeobject[key] = parseInt(valueparts, 16) * sign
                        sign = +1
                        key = undef
                        valueparts = ''
                    } else {
                        valueparts += ch
                    }
                }
            }
        }
        return output
    }
    var encodingBlock = {
            'codePages': ['WinAnsiEncoding'],
            'WinAnsiEncoding': uncompress("{19m8n201n9q201o9r201s9l201t9m201u8m201w9n201x9o201y8o202k8q202l8r202m9p202q8p20aw8k203k8t203t8v203u9v2cq8s212m9t15m8w15n9w2dw9s16k8u16l9u17s9z17x8y17y9y}")
        },
        encodings = {
            'Unicode': {
                'Courier': encodingBlock,
                'Courier-Bold': encodingBlock,
                'Courier-BoldOblique': encodingBlock,
                'Courier-Oblique': encodingBlock,
                'Helvetica': encodingBlock,
                'Helvetica-Bold': encodingBlock,
                'Helvetica-BoldOblique': encodingBlock,
                'Helvetica-Oblique': encodingBlock,
                'Times-Roman': encodingBlock,
                'Times-Bold': encodingBlock,
                'Times-BoldItalic': encodingBlock,
                'Times-Italic': encodingBlock
            }
        },
        fontMetrics = {
            'Unicode': {
                'Courier-Oblique': uncompress("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),
                'Times-BoldItalic': uncompress("{'widths'{k3o2q4ycx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2r202m2n2n3m2o3m2p5n202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5n4l4m4m4m4n4m4o4s4p4m4q4m4r4s4s4y4t2r4u3m4v4m4w3x4x5t4y4s4z4s5k3x5l4s5m4m5n3r5o3x5p4s5q4m5r5t5s4m5t3x5u3x5v2l5w1w5x2l5y3t5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q2l6r3m6s3r6t1w6u1w6v3m6w1w6x4y6y3r6z3m7k3m7l3m7m2r7n2r7o1w7p3r7q2w7r4m7s3m7t2w7u2r7v2n7w1q7x2n7y3t202l3mcl4mal2ram3man3mao3map3mar3mas2lat4uau1uav3maw3way4uaz2lbk2sbl3t'fof'6obo2lbp3tbq3mbr1tbs2lbu1ybv3mbz3mck4m202k3mcm4mcn4mco4mcp4mcq5ycr4mcs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz2w203k6o212m6o2dw2l2cq2l3t3m3u2l17s3x19m3m}'kerning'{cl{4qu5kt5qt5rs17ss5ts}201s{201ss}201t{cks4lscmscnscoscpscls2wu2yu201ts}201x{2wu2yu}2k{201ts}2w{4qx5kx5ou5qx5rs17su5tu}2x{17su5tu5ou}2y{4qx5kx5ou5qx5rs17ss5ts}'fof'-6ofn{17sw5tw5ou5qw5rs}7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qs}3v{17su5tu5os5qs}7p{17su5tu}ck{4qu5kt5qt5rs17ss5ts}4l{4qu5kt5qt5rs17ss5ts}cm{4qu5kt5qt5rs17ss5ts}cn{4qu5kt5qt5rs17ss5ts}co{4qu5kt5qt5rs17ss5ts}cp{4qu5kt5qt5rs17ss5ts}6l{4qu5ou5qw5rt17su5tu}5q{ckuclucmucnucoucpu4lu}5r{ckuclucmucnucoucpu4lu}7q{cksclscmscnscoscps4ls}6p{4qu5ou5qw5rt17sw5tw}ek{4qu5ou5qw5rt17su5tu}el{4qu5ou5qw5rt17su5tu}em{4qu5ou5qw5rt17su5tu}en{4qu5ou5qw5rt17su5tu}eo{4qu5ou5qw5rt17su5tu}ep{4qu5ou5qw5rt17su5tu}es{17ss5ts5qs4qu}et{4qu5ou5qw5rt17sw5tw}eu{4qu5ou5qw5rt17ss5ts}ev{17ss5ts5qs4qu}6z{17sw5tw5ou5qw5rs}fm{17sw5tw5ou5qw5rs}7n{201ts}fo{17sw5tw5ou5qw5rs}fp{17sw5tw5ou5qw5rs}fq{17sw5tw5ou5qw5rs}7r{cksclscmscnscoscps4ls}fs{17sw5tw5ou5qw5rs}ft{17su5tu}fu{17su5tu}fv{17su5tu}fw{17su5tu}fz{cksclscmscnscoscps4ls}}}"),
                'Helvetica-Bold': uncompress("{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}"),
                'Courier': uncompress("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),
                'Courier-BoldOblique': uncompress("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),
                'Times-Bold': uncompress("{'widths'{k3q2q5ncx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2l202m2n2n3m2o3m2p6o202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5x4l4s4m4m4n4s4o4s4p4m4q3x4r4y4s4y4t2r4u3m4v4y4w4m4x5y4y4s4z4y5k3x5l4y5m4s5n3r5o4m5p4s5q4s5r6o5s4s5t4s5u4m5v2l5w1w5x2l5y3u5z3m6k2l6l3m6m3r6n2w6o3r6p2w6q2l6r3m6s3r6t1w6u2l6v3r6w1w6x5n6y3r6z3m7k3r7l3r7m2w7n2r7o2l7p3r7q3m7r4s7s3m7t3m7u2w7v2r7w1q7x2r7y3o202l3mcl4sal2lam3man3mao3map3mar3mas2lat4uau1yav3maw3tay4uaz2lbk2sbl3t'fof'6obo2lbp3rbr1tbs2lbu2lbv3mbz3mck4s202k3mcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3rek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3m3u2l17s4s19m3m}'kerning'{cl{4qt5ks5ot5qy5rw17sv5tv}201t{cks4lscmscnscoscpscls4wv}2k{201ts}2w{4qu5ku7mu5os5qx5ru17su5tu}2x{17su5tu5ou5qs}2y{4qv5kv7mu5ot5qz5ru17su5tu}'fof'-6o7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qu}3v{17su5tu5os5qu}fu{17su5tu5ou5qu}7p{17su5tu5ou5qu}ck{4qt5ks5ot5qy5rw17sv5tv}4l{4qt5ks5ot5qy5rw17sv5tv}cm{4qt5ks5ot5qy5rw17sv5tv}cn{4qt5ks5ot5qy5rw17sv5tv}co{4qt5ks5ot5qy5rw17sv5tv}cp{4qt5ks5ot5qy5rw17sv5tv}6l{17st5tt5ou5qu}17s{ckuclucmucnucoucpu4lu4wu}5o{ckuclucmucnucoucpu4lu4wu}5q{ckzclzcmzcnzcozcpz4lz4wu}5r{ckxclxcmxcnxcoxcpx4lx4wu}5t{ckuclucmucnucoucpu4lu4wu}7q{ckuclucmucnucoucpu4lu}6p{17sw5tw5ou5qu}ek{17st5tt5qu}el{17st5tt5ou5qu}em{17st5tt5qu}en{17st5tt5qu}eo{17st5tt5qu}ep{17st5tt5ou5qu}es{17ss5ts5qu}et{17sw5tw5ou5qu}eu{17sw5tw5ou5qu}ev{17ss5ts5qu}6z{17sw5tw5ou5qu5rs}fm{17sw5tw5ou5qu5rs}fn{17sw5tw5ou5qu5rs}fo{17sw5tw5ou5qu5rs}fp{17sw5tw5ou5qu5rs}fq{17sw5tw5ou5qu5rs}7r{cktcltcmtcntcotcpt4lt5os}fs{17sw5tw5ou5qu5rs}ft{17su5tu5ou5qu}7m{5os}fv{17su5tu5ou5qu}fw{17su5tu5ou5qu}fz{cksclscmscnscoscps4ls}}}"),
                'Helvetica': uncompress("{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}"),
                'Helvetica-BoldOblique': uncompress("{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}"),
                'Courier-Bold': uncompress("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),
                'Times-Italic': uncompress("{'widths'{k3n2q4ycx2l201n3m201o5t201s2l201t2l201u2l201w3r201x3r201y3r2k1t2l2l202m2n2n3m2o3m2p5n202q5t2r1p2s2l2t2l2u3m2v4n2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w4n3x4n3y4n3z3m4k5w4l3x4m3x4n4m4o4s4p3x4q3x4r4s4s4s4t2l4u2w4v4m4w3r4x5n4y4m4z4s5k3x5l4s5m3x5n3m5o3r5p4s5q3x5r5n5s3x5t3r5u3r5v2r5w1w5x2r5y2u5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q1w6r3m6s3m6t1w6u1w6v2w6w1w6x4s6y3m6z3m7k3m7l3m7m2r7n2r7o1w7p3m7q2w7r4m7s2w7t2w7u2r7v2s7w1v7x2s7y3q202l3mcl3xal2ram3man3mao3map3mar3mas2lat4wau1vav3maw4nay4waz2lbk2sbl4n'fof'6obo2lbp3mbq3obr1tbs2lbu1zbv3mbz3mck3x202k3mcm3xcn3xco3xcp3xcq5tcr4mcs3xct3xcu3xcv3xcw2l2m2ucy2lcz2ldl4mdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr4nfs3mft3mfu3mfv3mfw3mfz2w203k6o212m6m2dw2l2cq2l3t3m3u2l17s3r19m3m}'kerning'{cl{5kt4qw}201s{201sw}201t{201tw2wy2yy6q-t}201x{2wy2yy}2k{201tw}2w{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}2x{17ss5ts5os}2y{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}'fof'-6o6t{17ss5ts5qs}7t{5os}3v{5qs}7p{17su5tu5qs}ck{5kt4qw}4l{5kt4qw}cm{5kt4qw}cn{5kt4qw}co{5kt4qw}cp{5kt4qw}6l{4qs5ks5ou5qw5ru17su5tu}17s{2ks}5q{ckvclvcmvcnvcovcpv4lv}5r{ckuclucmucnucoucpu4lu}5t{2ks}6p{4qs5ks5ou5qw5ru17su5tu}ek{4qs5ks5ou5qw5ru17su5tu}el{4qs5ks5ou5qw5ru17su5tu}em{4qs5ks5ou5qw5ru17su5tu}en{4qs5ks5ou5qw5ru17su5tu}eo{4qs5ks5ou5qw5ru17su5tu}ep{4qs5ks5ou5qw5ru17su5tu}es{5ks5qs4qs}et{4qs5ks5ou5qw5ru17su5tu}eu{4qs5ks5qw5ru17su5tu}ev{5ks5qs4qs}ex{17ss5ts5qs}6z{4qv5ks5ou5qw5ru17su5tu}fm{4qv5ks5ou5qw5ru17su5tu}fn{4qv5ks5ou5qw5ru17su5tu}fo{4qv5ks5ou5qw5ru17su5tu}fp{4qv5ks5ou5qw5ru17su5tu}fq{4qv5ks5ou5qw5ru17su5tu}7r{5os}fs{4qv5ks5ou5qw5ru17su5tu}ft{17su5tu5qs}fu{17su5tu5qs}fv{17su5tu5qs}fw{17su5tu5qs}}}"),
                'Times-Roman': uncompress("{'widths'{k3n2q4ycx2l201n3m201o6o201s2l201t2l201u2l201w2w201x2w201y2w2k1t2l2l202m2n2n3m2o3m2p5n202q6o2r1m2s2l2t2l2u3m2v3s2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v1w3w3s3x3s3y3s3z2w4k5w4l4s4m4m4n4m4o4s4p3x4q3r4r4s4s4s4t2l4u2r4v4s4w3x4x5t4y4s4z4s5k3r5l4s5m4m5n3r5o3x5p4s5q4s5r5y5s4s5t4s5u3x5v2l5w1w5x2l5y2z5z3m6k2l6l2w6m3m6n2w6o3m6p2w6q2l6r3m6s3m6t1w6u1w6v3m6w1w6x4y6y3m6z3m7k3m7l3m7m2l7n2r7o1w7p3m7q3m7r4s7s3m7t3m7u2w7v3k7w1o7x3k7y3q202l3mcl4sal2lam3man3mao3map3mar3mas2lat4wau1vav3maw3say4waz2lbk2sbl3s'fof'6obo2lbp3mbq2xbr1tbs2lbu1zbv3mbz2wck4s202k3mcm4scn4sco4scp4scq5tcr4mcs3xct3xcu3xcv3xcw2l2m2tcy2lcz2ldl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek2wel2wem2wen2weo2wep2weq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr3sfs3mft3mfu3mfv3mfw3mfz3m203k6o212m6m2dw2l2cq2l3t3m3u1w17s4s19m3m}'kerning'{cl{4qs5ku17sw5ou5qy5rw201ss5tw201ws}201s{201ss}201t{ckw4lwcmwcnwcowcpwclw4wu201ts}2k{201ts}2w{4qs5kw5os5qx5ru17sx5tx}2x{17sw5tw5ou5qu}2y{4qs5kw5os5qx5ru17sx5tx}'fof'-6o7t{ckuclucmucnucoucpu4lu5os5rs}3u{17su5tu5qs}3v{17su5tu5qs}7p{17sw5tw5qs}ck{4qs5ku17sw5ou5qy5rw201ss5tw201ws}4l{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cm{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cn{4qs5ku17sw5ou5qy5rw201ss5tw201ws}co{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cp{4qs5ku17sw5ou5qy5rw201ss5tw201ws}6l{17su5tu5os5qw5rs}17s{2ktclvcmvcnvcovcpv4lv4wuckv}5o{ckwclwcmwcnwcowcpw4lw4wu}5q{ckyclycmycnycoycpy4ly4wu5ms}5r{cktcltcmtcntcotcpt4lt4ws}5t{2ktclvcmvcnvcovcpv4lv4wuckv}7q{cksclscmscnscoscps4ls}6p{17su5tu5qw5rs}ek{5qs5rs}el{17su5tu5os5qw5rs}em{17su5tu5os5qs5rs}en{17su5qs5rs}eo{5qs5rs}ep{17su5tu5os5qw5rs}es{5qs}et{17su5tu5qw5rs}eu{17su5tu5qs5rs}ev{5qs}6z{17sv5tv5os5qx5rs}fm{5os5qt5rs}fn{17sv5tv5os5qx5rs}fo{17sv5tv5os5qx5rs}fp{5os5qt5rs}fq{5os5qt5rs}7r{ckuclucmucnucoucpu4lu5os}fs{17sv5tv5os5qx5rs}ft{17ss5ts5qs}fu{17sw5tw5qs}fv{17sw5tw5qs}fw{17ss5ts5qs}fz{ckuclucmucnucoucpu4lu5os5rs}}}"),
                'Helvetica-Oblique': uncompress("{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}")
            }
        };
    API.events.push(['addFonts', function(fontManagementObjects) {
        var font, fontID, metrics, unicode_section, encoding = 'Unicode',
            encodingBlock
        for (fontID in fontManagementObjects.fonts) {
            if (fontManagementObjects.fonts.hasOwnProperty(fontID)) {
                font = fontManagementObjects.fonts[fontID]
                metrics = fontMetrics[encoding][font.PostScriptName]
                if (metrics) {
                    if (font.metadata[encoding]) {
                        unicode_section = font.metadata[encoding]
                    } else {
                        unicode_section = font.metadata[encoding] = {}
                    }
                    unicode_section.widths = metrics.widths
                    unicode_section.kerning = metrics.kerning
                }
                encodingBlock = encodings[encoding][font.PostScriptName]
                if (encodingBlock) {
                    if (font.metadata[encoding]) {
                        unicode_section = font.metadata[encoding]
                    } else {
                        unicode_section = font.metadata[encoding] = {}
                    }
                    unicode_section.encoding = encodingBlock
                    if (encodingBlock.codePages && encodingBlock.codePages.length) {
                        font.encoding = encodingBlock.codePages[0]
                    }
                }
            }
        }
    }])
})(jsPDF.API);
                                    

#62 JavaScript::Eval (size: 8888, repeated: 1) - SHA256: c7707db20ac201809eebc185b48a818c55ba3f549ccdf6fcf1c01c8d04542ea9

                                        ;
(function(jsPDFAPI) {
    'use strict'
    if (!String.prototype.trim) {
        String.prototype.trim = function() {
            return this.replace(/^\s+|\s+$/g, '');
        };
    }
    if (!String.prototype.trimLeft) {
        String.prototype.trimLeft = function() {
            return this.replace(/^\s+/g, '');
        };
    }
    if (!String.prototype.trimRight) {
        String.prototype.trimRight = function() {
            return this.replace(/\s+$/g, '');
        };
    }

    function PurgeWhiteSpace(array) {
        var i = 0,
            l = array.length,
            fragment, lTrimmed = false,
            rTrimmed = false
        while (!lTrimmed && i !== l) {
            fragment = array[i] = array[i].trimLeft()
            if (fragment) {
                lTrimmed = true
            };
            i++;
        }
        i = l - 1
        while (l && !rTrimmed && i !== -1) {
            fragment = array[i] = array[i].trimRight()
            if (fragment) {
                rTrimmed = true
            };
            i--;
        }
        var r = /\s+$/g,
            trailingSpace = true
        for (i = 0; i !== l; i++) {
            fragment = array[i].replace(/\s+/g, ' ')
            if (trailingSpace) {
                fragment = fragment.trimLeft()
            }
            if (fragment) {
                trailingSpace = r.test(fragment)
            }
            array[i] = fragment
        }
        return array
    }

    function Renderer(pdf, x, y, settings) {
        this.pdf = pdf
        this.x = x
        this.y = y
        this.settings = settings
        this.init()
        return this
    }
    Renderer.prototype.init = function() {
        this.paragraph = {
            'text': [],
            'style': []
        }
        this.pdf.internal.write('q')
    }
    Renderer.prototype.dispose = function() {
        this.pdf.internal.write('Q')
        return {
            'x': this.x,
            'y': this.y
        }
    }
    Renderer.prototype.splitFragmentsIntoLines = function(fragments, styles) {
        var defaultFontSize = 12,
            k = this.pdf.internal.scaleFactor,
            fontMetricsCache = {},
            ff, fs, fontMetrics, fragment, style, fragmentSpecificMetrics, fragmentLength, fragmentChopped, line = [],
            lines = [line],
            currentLineLength = 0,
            maxLineLength = this.settings.width
        while (fragments.length) {
            fragment = fragments.shift()
            style = styles.shift()
            if (fragment) {
                ff = style['font-family']
                fs = style['font-style']
                fontMetrics = fontMetricsCache[ff + fs]
                if (!fontMetrics) {
                    fontMetrics = this.pdf.internal.getFont(ff, fs).metadata.Unicode
                    fontMetricsCache[ff + fs] = fontMetrics
                }
                fragmentSpecificMetrics = {
                    'widths': fontMetrics.widths,
                    'kerning': fontMetrics.kerning,
                    'fontSize': style['font-size'] * defaultFontSize,
                    'textIndent': currentLineLength
                }
                fragmentLength = this.pdf.getStringUnitWidth(fragment, fragmentSpecificMetrics) * fragmentSpecificMetrics.fontSize / k
                if (currentLineLength + fragmentLength > maxLineLength) {
                    fragmentChopped = this.pdf.splitTextToSize(fragment, maxLineLength, fragmentSpecificMetrics)
                    line.push([fragmentChopped.shift(), style])
                    while (fragmentChopped.length) {
                        line = [
                            [fragmentChopped.shift(), style]
                        ]
                        lines.push(line)
                    }
                    currentLineLength = this.pdf.getStringUnitWidth(line[0][0], fragmentSpecificMetrics) * fragmentSpecificMetrics.fontSize / k
                } else {
                    line.push([fragment, style])
                    currentLineLength += fragmentLength
                }
            }
        }
        return lines
    }
    Renderer.prototype.RenderTextFragment = function(text, style) {
        var defaultFontSize = 12,
            font = this.pdf.internal.getFont(style['font-family'], style['font-style']);
        text = text.replace(/[^\u0000-\u00ff]/g, function(ch) {
            return "-";
        });
        this.pdf.internal.write('/' + font.id, (defaultFontSize * style['font-size']).toFixed(2), 'Tf', '(' + this.pdf.internal.pdfEscape(text) + ') Tj')
    }
    Renderer.prototype.renderParagraph = function() {
        var fragments = PurgeWhiteSpace(this.paragraph.text),
            styles = this.paragraph.style,
            blockstyle = this.paragraph.blockstyle,
            priorblockstype = this.paragraph.blockstyle || {}
        this.paragraph = {
            'text': [],
            'style': [],
            'blockstyle': {},
            'priorblockstyle': blockstyle
        }
        if (!fragments.join('').trim()) {
            return
        }
        var lines = this.splitFragmentsIntoLines(fragments, styles),
            line, maxLineHeight, defaultFontSize = 12,
            fontToUnitRatio = defaultFontSize / this.pdf.internal.scaleFactor,
            paragraphspacing_before = (Math.max((blockstyle['margin-top'] || 0) - (priorblockstype['margin-bottom'] || 0), 0) + (blockstyle['padding-top'] || 0)) * fontToUnitRatio,
            paragraphspacing_after = ((blockstyle['margin-bottom'] || 0) + (blockstyle['padding-bottom'] || 0)) * fontToUnitRatio,
            out = this.pdf.internal.write,
            i, l
        this.y += paragraphspacing_before
        out('q', 'BT', this.pdf.internal.getCoordinateString(this.x), this.pdf.internal.getVerticalCoordinateString(this.y), 'Td')
        while (lines.length) {
            line = lines.shift()
            maxLineHeight = 0
            for (i = 0, l = line.length; i !== l; i++) {
                if (line[i][0].trim()) {
                    maxLineHeight = Math.max(maxLineHeight, line[i][1]['line-height'], line[i][1]['font-size'])
                }
            }
            out(0, (-1 * defaultFontSize * maxLineHeight).toFixed(2), 'Td')
            for (i = 0, l = line.length; i !== l; i++) {
                if (line[i][0]) {
                    this.RenderTextFragment(line[i][0], line[i][1]);
                }
            }
            this.y += maxLineHeight * fontToUnitRatio;
        }
        this.settings.writePageNumber(this.pdf);
        out('ET', 'Q')
        this.y += paragraphspacing_after
    }
    Renderer.prototype.setBlockBoundary = function() {
        this.renderParagraph()
    }
    Renderer.prototype.setBlockStyle = function(css) {
        this.paragraph.blockstyle = css
    }
    Renderer.prototype.addText = function(text, css) {
        this.paragraph.text.push(text)
        this.paragraph.style.push(css)
    }
    var FontNameDB = {
            'helvetica': 'helvetica',
            'sans-serif': 'helvetica',
            'serif': 'times',
            'times': 'times',
            'times new roman': 'times',
            'monospace': 'courier',
            'courier': 'courier'
        },
        FontWeightMap = {
            "100": 'normal',
            "200": 'normal',
            "300": 'normal',
            "400": 'normal',
            "500": 'bold',
            "600": 'bold',
            "700": 'bold',
            "800": 'bold',
            "900": 'bold',
            "normal": 'normal',
            "bold": 'bold',
            "bolder": 'bold',
            "lighter": 'normal'
        },
        FontStyleMap = {
            'normal': 'normal',
            'italic': 'italic',
            'oblique': 'italic'
        },
        UnitedNumberMap = {
            'normal': 1
        }

    function ResolveFont(css_font_family_string) {
        var name, parts = css_font_family_string.split(','),
            part = parts.shift()
        while (!name && part) {
            name = FontNameDB[part.trim().toLowerCase()]
            part = parts.shift()
        }
        return name
    }

    function ResolveUnitedNumber(css_line_height_string) {
        var undef, normal = 16.00,
            value = UnitedNumberMap[css_line_height_string]
        if (value) {
            return value
        }
        value = ({
            'xx-small': 9,
            'x-small': 11,
            'small': 13,
            'medium': 16,
            'large': 19,
            'x-large': 23,
            'xx-large': 28,
            'auto': 0
        })[css_line_height_string]
        if (value !== undef) {
            return UnitedNumberMap[css_line_height_string] = value / normal
        }
        if (value = parseFloat(css_line_height_string)) {
            return UnitedNumberMap[css_line_height_string] = value / normal
        }
        value = css_line_height_string.match(/([\d\.]+)(px)/)
        if (value.length === 3) {
            return UnitedNumberMap[css_line_height_string] = parseFloat(value[1]) / normal
        }
        return UnitedNumberMap[css_line_height_string] = 1
    }

    function GetCSS(element) {
        var $e = $(element),
            css = {},
            tmp
        css['font-family'] = ResolveFont($e.css('font-family')) || 'times'
        css['font-style'] = FontStyleMap[$e.css('font-style')] || 'normal'
        tmp = FontWeightMap[$e.css('font-weight')] || 'normal'
        if (tmp === 'bold') {
            if (css['font-style'] === 'normal') {
                css['font-style'] = tmp
            } else {
                css['font-style'] = tmp + css['font-style']
            }
        }
        css['font-size'] = ResolveUnitedNumber($e.css('font-size')) || 1
        css['line-height'] = ResolveUnitedNumber($e.css('line-height')) || 1
        css['display'] = $e.css('display') === 'inline' ? 'inline' : 'block'
        if (css['display'] === 'block') {
            css['margin-top'] = ResolveUnitedNumber($e.css('margin-top')) || 0
            css['margin-bottom'] = ResolveUnitedNumber($e.css('margin-bottom')) || 0
            css['padding-top'] = ResolveUnitedNumber($e.css('padding-top')) || 0
            css['padding-bottom'] = ResolveUnitedNumber($e.css('padding-bottom')) || 0
        }
        return css
    }

    function elementHandledElsewhere(element, renderer, elementHandlers) {
        var isHandledElsewhere = false
        var i, l, t, handlers = elementHandlers['#' + element.id]
        if (handlers) {
            if (typeof handlers === 'function') {
                isHandledElsewhere = handlers(element, renderer)
            } else {
                i = 0
                l = handlers.length
                while (!isHandledElsewhere && i !== l) {
                    isHandledElsewhere = handlers[i](element, renderer);
                    i++;
                }
            }
        }
        handlers = elementHandlers[element.nodeName]
        if (!isHandledElsewhere && handlers) {
            if (typeof handlers === 'function') {
                isHandledElsewhere = handlers(element, renderer)
            } else {
                i = 0
                l = handlers.length
                while (!isHandledElsewhere && i !== l) {
                    isHandledElsewhere = handlers[i](element, renderer);
                    i++;
                }
            }
        }
        return isHandledElsewhere
    }

    function DrillForContent(element, renderer, elementHandlers) {
        var cns = element.childNodes,
            cn, fragmentCSS = GetCSS(element),
            isBlock = fragmentCSS.display === 'block'
        if (isBlock) {
            renderer.setBlockBoundary()
            renderer.setBlockStyle(fragmentCSS)
        }
        for (var i = 0, l = cns.length; i < l; i++) {
            cn = cns[i]
            if (typeof cn === 'object') {
                if (cn.nodeType === 1 && cn.nodeName != 'SCRIPT') {
                    if (!elementHandledElsewhere(cn, renderer, elementHandlers)) {
                        DrillForContent(cn, renderer, elementHandlers)
                    }
                } else if (cn.nodeType === 3) {
                    renderer.addText(cn.nodeValue, fragmentCSS)
                }
            } else if (typeof cn === 'string') {
                renderer.addText(cn, fragmentCSS)
            }
        }
        if (isBlock) {
            renderer.setBlockBoundary()
        }
    }

    function process(pdf, element, x, y, settings) {
        if (typeof element === 'string') {
            element = (function(element) {
                var framename = "jsPDFhtmlText" + Date.now().toString() + (Math.random() * 1000).toFixed(0),
                    visuallyhidden = 'position: absolute !important;' + 'clip: rect(1px 1px 1px 1px); /* IE6, IE7 */' + 'clip: rect(1px, 1px, 1px, 1px);' + 'padding:0 !important;' + 'border:0 !important;' + 'height: 1px !important;' + 'width: 1px !important; ' + 'top:auto;' + 'left:-100px;' + 'overflow: hidden;',
                    $hiddendiv = $('<div style="' + visuallyhidden + '">' + '<iframe style="height:1px;width:1px" name="' + framename + '" />' + '</div>').appendTo(document.body),
                    $frame = window.frames[framename]
                return $($frame.document.body).html(element)[0]
            })(element)
        }
        var r = new Renderer(pdf, x, y, settings),
            a = DrillForContent(element, r, settings.elementHandlers)
        return r.dispose()
    }
    jsPDFAPI.fromHTML = function(HTML, x, y, settings) {
        'use strict'
        return process(this, HTML, x, y, settings)
    }
})(jsPDF.API)
                                    

#63 JavaScript::Eval (size: 1, repeated: 1) - SHA256: f67ab10ad4e4c53121b6a5fe4da9c10ddee905b978d3788d2723d7bfacbe28a9

                                        F
                                    

#64 JavaScript::Eval (size: 87, repeated: 1) - SHA256: 7e3f918707bbe9d003f19286a596119f1b5a49c62c8a5764ef6310c2aacc2c30

                                        F = function(H, h) {
    return (h = H.a(), h) & 128 && (h = h & 127 | H.a() << 7), h;
}
                                    

#65 JavaScript::Eval (size: 1, repeated: 1) - SHA256: a83dd0ccbffe39d071cc317ddf6e97f5c6b1c87af91919271f9fa140b0508c6c

                                        I
                                    

#66 JavaScript::Eval (size: 88, repeated: 1) - SHA256: 67a1c9afccb3693623077499d2fbe61e5ab6d55aea023a690efdf1dfa10824c1

                                        I = function(H, h) {
    return H[h] << 24 | H[h + 1] << 16 | H[h + 2] << 8 | H[h + 3];
}
                                    

#67 JavaScript::Eval (size: 1, repeated: 1) - SHA256: 72dfcfb0c470ac255cde83fb8fe38de8a128188e03ea5ba5b2a93adbea1062fa

                                        L
                                    

#68 JavaScript::Eval (size: 267, repeated: 1) - SHA256: 8bd8724b4bf876c1485759cb4d22b6e937d26744a23cbe1fe67db3e82a410652

                                        L = function(H, h, D, B, G, c) {
    for (G = (((D = (h = {}, H).a(), h).f = H.a(), h).W = [], B = H.a() - 1, H.a()), c = 0; c < B; c++) {
        h.W.push(H.a());
    }
    for ((h.m = H.b(D), h).X = H.b(G); B--;) {
        h.W[B] = H.b(h.W[B]);
    }
    return h;
}
                                    

#69 JavaScript::Eval (size: 1, repeated: 1) - SHA256: 08f271887ce94707da822d5263bae19d5519cb3614e0daedc4c7ce5dab7473f1

                                        M
                                    

#70 JavaScript::Eval (size: 78, repeated: 1) - SHA256: 099745ce2a71455de64b5ac5ea0d8d14aba95f3c6c6c2df2c67b8ba422ea61b0

                                        M = function(H, h, D, B) {
    y(H, (D = H.a(), B = H.a(), B), m(H.b(D), h));
}
                                    

#71 JavaScript::Eval (size: 1, repeated: 1) - SHA256: e632b7095b0bf32c260fa4c539e9fd7b852d0de454e9be26f24d0d6f91d069d3

                                        T
                                    

#72 JavaScript::Eval (size: 85, repeated: 1) - SHA256: f8517aa943275c0adf6767cf96ad055187f21929439d12c3427c9bfad5b4f2fa

                                        T = function(H, h) {
    U(((H.B.push(H.$.slice()), H).$[165] = void 0, H), 165, h);
}
                                    

#73 JavaScript::Eval (size: 1, repeated: 1) - SHA256: a25513c7e0f6eaa80a3337ee18081b9e2ed09e00af8531c8f7bb2542764027e7

                                        U
                                    

#74 JavaScript::Eval (size: 326, repeated: 1) - SHA256: 7a2f25e899a96bfc10a4e24749aac1ed03b6b3321fe5e9a608dda6f16bbe5f0d

                                        U = function(H, h, D) {
    if (165 == h || 93 == h) {
        if (H.$[h]) {
            H.$[h][H.w](D);
        } else {
            H.$[h] = H.i(D);
        }
    } else if (144 != h && 152 != h && 50 != h && 110 != h || !H.$[h]) {
        H.$[h] = H.V(D, H.b);
    }
    73 == h && (H.R = void 0, U(H, 165, H.b(165) + 4));
}
                                    

#75 JavaScript::Eval (size: 1, repeated: 1) - SHA256: fcb5f40df9be6bae66c1d77a6c15968866a9e6cbd7314ca432b019d17392f6f4

                                        W
                                    

#76 JavaScript::Eval (size: 135, repeated: 1) - SHA256: e9a3d074c65b3301b2af1f26fd8ac2c0377c204922597baec8caefcfa88a9ce5

                                        W = function(H, h, D) {
    return z(((D = H.b(165), H).K && D < H.K.length ? (U(H, 165, H.K.length), T(H, h)) : U(H, 165, h), H), D);
}
                                    

#77 JavaScript::Eval (size: 1, repeated: 1) - SHA256: bbeebd879e1dff6918546dc0c179fdde505f2a21591c9a9c96e36b054ec5af83

                                        Z
                                    

#78 JavaScript::Eval (size: 487, repeated: 1) - SHA256: 9c1e59bfa3d74975270b8b029c223c07ee671dabcf660c895c2f6563b4f815c7

                                        Z = function(H, h, D, B, G) {
    for (B = D = (h = [], 0); B < H.length; B++) {
        G = H.charCodeAt(B), 128 > G ? (h[D++] = G) : (2048 > G ? (h[D++] = G >> 6 | 192) : (55296 == (G & 64512) &&
            B + 1 < H.length && 56320 == (H.charCodeAt(B + 1) & 64512) ? (G = 65536 + ((G & 1023) << 10) + (H.charCodeAt(++B) & 1023), h[D++] = G >> 18 | 240, h[D++] = G >> 12 & 63 | 128) : (h[D++] = G >> 12 | 224), h[D++] = G >> 6 & 63 | 128), h[D++] = G & 63 | 128);
    }
    return h;
}
                                    

#79 JavaScript::Eval (size: 2, repeated: 11) - SHA256: 4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945

                                        []
                                    

#80 JavaScript::Eval (size: 1, repeated: 1) - SHA256: ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb

                                        a
                                    

#81 JavaScript::Eval (size: 35, repeated: 1) - SHA256: 1e3606d95ce27d593157594820335681a9380f51a96147303cd8000e60a95e12

                                        document.createElement('div').style
                                    

#82 JavaScript::Eval (size: 1, repeated: 1) - SHA256: 3f79bb7b435b05321651daefd374cdc681dc06faa65e374e38337b88ca046dea

                                        e
                                    

#83 JavaScript::Eval (size: 420, repeated: 1) - SHA256: 7a9051749043d6dababe98e81854d75ea611a22e4b7f023e6d04f3fe429abae8

                                        e = function(H, h, D, B, G) {
    U(H, (3 < (D = (B = (h = [(G = H.b(93), h), G >> 8 & 255, G & 255], void 0 != B && h.push(B), 0 == H.b(110).length && (H.$[110] = void 0, U(H, 110, h)), ""), D &&
            (D.message && (B += D.message), D.stack && (B += ":" + D.stack)), H).b(6), D) &&
        (B = B.slice(0, D - 3), D -= B.length + 3, B = Z(B.replace(/\r\n/g, "\n")), y(H, 152, m(B.length, 2).concat(B), 12)), 6), D);
}
                                    

#84 JavaScript::Eval (size: 1, repeated: 1) - SHA256: acac86c0e609ca906f632b0e2dacccb2b77d22b0621f20ebece1a4835b93f6f0

                                        l
                                    

#85 JavaScript::Eval (size: 120, repeated: 1) - SHA256: 2a19df6858acb036fe8d0e460ed491f535aa0060f36ae47c6ea4178489e4f1d1

                                        l = function(H, h, D, B) {
    for (B = (D = H.a(), 0); 0 < h; h--) {
        B = B << 8 | H.a();
    }
    U(H, D, B);
}
                                    

#86 JavaScript::Eval (size: 1, repeated: 1) - SHA256: 0bfe935e70c321c7ca3afc75ce0d0ca2f98b5422e008bb31c00c6d7f1f1c0ad6

                                        u
                                    

#87 JavaScript::Eval (size: 366, repeated: 1) - SHA256: 0a97cc34296fcf89b957d80d4630402bcf5936cf81234322bf92bd83f66d047c

                                        u = function(H, h, D, B) {
    try {
        for (B = 0; 79669387488 != B;) {
            H += (h << 4 ^ h >>> 5) + h ^ B + D[B & 3], B += 2489668359, h += (H << 4 ^ H >>> 5) + H ^ B + D[B >>> 11 & 3];
        }
        return [H >>> 24, H >> 16 & 255, H >> 8 & 255, H & 255, h >>> 24, h >> 16 & 255, h >> 8 & 255, h & 255];
    } catch (G) {
        throw G;
    }
}
                                    

#88 JavaScript::Eval (size: 1228, repeated: 1) - SHA256: 3d0f3869ab4bcb8fab94cdacf6270c5b1cdba6e1977742076a9cc9356af3cca7

                                        var CHECK_RESULT_INTERVAL = 1000;
var url_requests = {};
var num_total_pages_fetched = 0;
var flag_reentering_getResults = false;
angular.module('WebAccess', []).factory('cancelAll', function() {
    return function() {
        for (url in url_requests) {
            console.log("Abort " + url);
            url_requests[url].abort();
        }
        url_requests = {};
    };
}).factory('loadApplet', ['$q', function($q) {
    return function(self_signed) {
        deferred_loadApplet = $q.defer();
        var el = document.getElementById('appletFrame');
        if (typeof self_signed == 'undefined') el.src = "applet-frame.html";
        else
            el.src = "applet-frame-self-signed.html";
        return deferred_loadApplet.promise;
    };
}]).factory('getAsync', ['$timeout', '$q', function($timeout, $q) {
    return function(url) {
        var deferred = $q.defer();
        var regex_strange_chars_preceding_html = /^([\S]*?)(?=<)/i;
        url_requests[url] = $.ajax({
            method: "POST",
            url: "/webaccess.php",
            data: {
                url: url,
                timeout: 10
            }
        }).done(function(data) {
            console.log("Done " + url);
            delete url_requests[url];
            var html = data.replace(regex_strange_chars_preceding_html, "");
            if (html.length > 500000) {}
            deferred.resolve(html);
        }).fail(function(data, status) {
            console.log("Fail " + url);
            delete url_requests[url];
            var msg = "\t\tWebAccess getPage(): URL: " + url + "\n\t\t  Error status: " + status;
            deferred.reject(msg);
        });
        return deferred.promise;
    };
}]);
                                    

#89 JavaScript::Eval (size: 11778, repeated: 1) - SHA256: 90df67f11d0b1c4f3ea54b48f41c18de40065887f53220613572d5bb9c586f53

                                        var ClassDuplicateFinder = function() {
    if (arguments.callee.instance) return arguments.callee.instance;
    arguments.callee.instance = this;
    this.engine_num_pages = {};
    this.dup_list;
    this.num_pages_added;
    this.total_pages;
    this.num_search_engines_done;
    this.num_pages_analyzed;
    this.text_blocks_4google = [];
    this.text_blocks_4yahoo = [];
    this.text_blocks_4bing = [];
    this.text_blocks_4all = [];
    this.deferred_dup_list;
    this.num_pages_analyzed = 0;
    this.results_summary = {
        'google': -1,
        'yahoo': -1,
        'bing': -1,
        'all': -1
    };
    this.static = ClassDuplicateFinder;
    this.plagiarism_map = {
        words: [],
        is_plagiarized: []
    };
    this.overall_plagiarized_ratio = 0;
    this.Regex = {
        carriage_return: /[\r\n]*/g,
        body_content: /<body[^>]*>(.*)<\/body>/i
    };
    return this;
};
ClassDuplicateFinder.getInstance = function() {
    var singleton = new ClassDuplicateFinder();
    return singleton;
};
ClassDuplicateFinder.Regex = {
    regex_blank: /^\s*$/,
    url_in_url: /.*(https?%3a%2f%2f.*)$/
};
ClassDuplicateFinder.BLOCK_SIZE_GOOGLE = 28, ClassDuplicateFinder.MAX_LENGTH_GOOGLE = 1800, ClassDuplicateFinder.BLOCK_SIZE_YAHOO = 28, ClassDuplicateFinder.MAX_LENGTH_YAHOO = 480, ClassDuplicateFinder.BLOCK_SIZE_BING = 28, ClassDuplicateFinder.MAX_LENGTH_BING = 1800, ClassDuplicateFinder.MAX_QURIES_PER_SEARCH = 5;
ClassDuplicateFinder.MAX_WORD_LENGTH = 20;
ClassDuplicateFinder.DELAY_BETWEEN_QUERIES = 5000;
angular.module('FindDuplicates', ['WebAccess', 'TextAnalysis']).value('version', '0.1').factory('DuplicateFinder', ['$injector', 'textAnalyzer', 'cancelAll', 'getAsync', '$q', '$sce', '$timeout', function($injector, textAnalyzer, cancelAll, getAsync, $q, $sce, $timeout) {
    var analyzer = textAnalyzer;
    ClassDuplicateFinder.prototype.init_plagiarism_coverage = function(text) {
        this.plagiarism_map.words = text.replace(analyzer.static.Regex.regex_punctuations, " ").replace(analyzer.static.Regex.regex_spaces, " ").replace(analyzer.static.Regex.regex_spaces_begining_end, "").split(' ');
        if (null !== this.plagiarism_map.words[this.plagiarism_map.words.length - 1].match(ClassDuplicateFinder.Regex.regex_blank)) this.plagiarism_map.words.splice(this.plagiarism_map.words.length - 1, 1);
        this.plagiarism_map.is_plagiarized = [];
        for (var i = 0; i < this.plagiarism_map.words.length; i++) {
            this.plagiarism_map.is_plagiarized[i] = false;
        }
        this.overall_plagiarized_ratio = 0;
    };
    ClassDuplicateFinder.prototype.calcOverallPlagiarismCoverage = function(plagiarism_map) {
        var num_words_plagiarized = 0;
        for (var i = 0; i < plagiarism_map.words.length; i++) {
            if (plagiarism_map.is_plagiarized[i]) num_words_plagiarized++;
        }
        var plagiarized_ratio = Math.round(100 * num_words_plagiarized / plagiarism_map.words.length);
        plagiarized_ratio = plagiarized_ratio > 100 ? 100 : plagiarized_ratio;
        return plagiarized_ratio;
    };
    ClassDuplicateFinder.prototype.calcDuplicateRatio = function(array_text, url, dup_record) {
        var deferred_dup_ratio = $.Deferred();
        var promise_html_result = getAsync(url);
        var self = this;
        promise_html_result.then(function(page_html) {
            if (null === page_html.match(/<body/i)) {
                dup_record['dup_ratio'] = "Unavailable";
                dup_record['text_length'] = -1;
                deferred_dup_ratio.reject(dup_record);
            } else {
                var time_start = Date.now();
                page_html = analyzer.static.stripNonTextDoms(page_html);
                page_html = page_html.replace(self.Regex.carriage_return, "");
                var matched_body = page_html.match(self.Regex.body_content);
                var article = null != matched_body ? angular.element(matched_body[0]).text() : angular.element(page_html).text();
                var page_plagiarism_map = {
                    words: self.plagiarism_map.words,
                    is_plagiarized: []
                };
                for (var i = 0; i < self.plagiarism_map.words.length; i++) {
                    page_plagiarism_map.is_plagiarized[i] = false;
                }
                var sentences_found = analyzer.sentencesFound(article, array_text, page_plagiarism_map);
                var page_plagiarized_ratio = 0;
                if (0 !== sentences_found) {
                    page_plagiarized_ratio = self.calcOverallPlagiarismCoverage(page_plagiarism_map);
                    for (var i = 0; i < self.plagiarism_map.words.length; i++) {
                        self.plagiarism_map.is_plagiarized[i] |= page_plagiarism_map.is_plagiarized[i];
                    }
                    self.overall_plagiarized_ratio = self.calcOverallPlagiarismCoverage(self.plagiarism_map);
                }
                if (0 !== array_text.length) {
                    dup_record['dup_ratio'] = page_plagiarized_ratio + '%';
                    dup_record['map'] = page_plagiarism_map;
                }
                analyzer.countWords(article).then(function(num_words) {
                    dup_record['num_words'] = num_words;
                    deferred_dup_ratio.resolve(dup_record);
                });
            }
        }, function() {
            dup_record['dup_ratio'] = "Unavailable";
            dup_record['text_length'] = -1;
            deferred_dup_ratio.reject(dup_record);
        });
        return deferred_dup_ratio.promise();
    };
    ClassDuplicateFinder.prototype.resetCounters = function() {
        this.results_summary['google'] = -1;
        this.results_summary['yahoo'] = -1;
        this.results_summary['bing'] = -1;
        this.results_summary['all'] = -1;
        this.overall_plagiarized_ratio = 0;
    };
    ClassDuplicateFinder.prototype.add_dup_records = function(search_results, search_engine) {
        this.total_pages += search_results.length;
        this.results_summary[search_engine] = search_results.length;
        var FINAL_MESSAGE_START = "Your text is to ",
            FINAL_MESSAGE_END = "% duplicate/plagiarized.";
        var update_links_processed = function(self, final_message) {
            self.deferred_dup_list.notify({
                'progress': "Processing " + self.num_pages_analyzed + "/" + (self.dup_list.length) + "..."
            });
            if (self.allQueriesSubmitted() && self.num_pages_analyzed >= (self.dup_list.length)) {
                $timeout(function() {
                    self.deferred_dup_list.notify({
                        'progress': ""
                    });
                    self.deferred_dup_list.resolve({
                        message: final_message,
                        plagiarism: self.plagiarism_map,
                        'dup_list': self.dup_list
                    });
                }, 1000);
            }
        };
        if (0 == this.total_pages && (-1 != this.results_summary['all'] || -1 != this.results_summary['google'] || -1 != this.results_summary['yahoo'] || -1 != this.results_summary['bing'])) {
            this.resetCounters();
            update_links_processed(this, "Nothing found.");
            return;
        }
        var text_blocks;
        switch (search_engine) {
            case 'all':
                text_blocks = this.text_blocks_4all;
                break;
            case 'google':
                text_blocks = this.text_blocks_4google;
                break;
            case 'bing':
                text_blocks = this.text_blocks_4bing;
                break;
            case 'yahoo':
                text_blocks = this.text_blocks_4yahoo;
                break;
            default:
                console.assert(false);
        }
        var last_update_time;
        var self = this;
        for (var i = 0; i < search_results.length; i++) {
            var found_in_dup_list = false;
            var j;
            for (j = 0; j < this.dup_list.length; j++) {
                if (this.dup_list[j]['link'] == search_results[i]['link']) {
                    found_in_dup_list = true;
                    break;
                }
            }
            var dup_record;
            try {
                if (found_in_dup_list) {
                    dup_record = this.dup_list[j];
                } else if ('undefined' == typeof search_results[i]['link']) continue;
                else {
                    dup_record = {};
                    dup_record['engine'] = search_engine;
                    dup_record['id'] = i;
                    dup_record['done'] = false;
                    dup_record['plain_descr'] = search_results[i]['abstract'];
                    var promise_dup_ratio = this.calcDuplicateRatio(text_blocks, search_results[i]['link'], dup_record);
                    promise_dup_ratio.then(function(_dup_record_) {
                        self.deferred_dup_list.notify({
                            'dup_record': _dup_record_
                        });
                        self.num_pages_analyzed++;
                        _dup_record_['done'] = true;
                        self.overall_plagiarized_ratio = self.calcOverallPlagiarismCoverage(self.plagiarism_map);
                        update_links_processed(self, FINAL_MESSAGE_START + self.overall_plagiarized_ratio + FINAL_MESSAGE_END);
                        if (_dup_record_['dup_ratio'] == "100%") {
                            cancelAll();
                        }
                    }, function(_dup_record_) {
                        _dup_record_['done'] = true;
                        self.num_pages_analyzed++;
                        self.overall_plagiarized_ratio = self.calcOverallPlagiarismCoverage(self.plagiarism_map);
                        update_links_processed(self, FINAL_MESSAGE_START + self.overall_plagiarized_ratio + FINAL_MESSAGE_END);
                    });
                    dup_record['title'] = search_results[i]['title'];
                    dup_record['link'] = search_results[i]['link'];
                    dup_record['url_brief'] = search_results[i]['url_brief'];
                    dup_record['safe_abstract'] = $sce.trustAsHtml(search_results[i]['abstract']);
                }
            } catch (e) {
                console.log("Exception caught: " + e.message);
            }
            if (!found_in_dup_list) {
                this.dup_list.push(dup_record);
                this.num_pages_added++;
            }
        }
        this.deferred_dup_list.notify({
            'progress': "Processing " + this.num_pages_analyzed + "/" + (this.dup_list.length) + "..."
        });
        this.engine_num_pages[search_engine] = search_results.length;
        this.engine_num_pages.total_unique = this.num_pages_added;
        this.num_search_engines_done++;
        this.deferred_dup_list.notify({
            'dup_list': this.dup_list,
            'engine_num_pages': this.engine_num_pages
        });
    };
    ClassDuplicateFinder.prototype.divideTextNew = function(text, block_size, max_length, blocks) {
        text = text.replace(/\r\n/g, "\r").replace(/\r\r/g, "\.").replace(/[\r\t]/g, " ").replace(/\.\s/g, " ").replace(/\s+/g, " ");
        var words = text.split(/[\s!?;,<>\/\-]+/);
        var curr_block = '';
        var num_words_in_block = 0;
        for (var i = 0; i < words.length; i++) {
            var w = words[i];
            if (w.length == 0) continue;
            if ((curr_block.length > 0 && curr_block.length + w.length > max_length) || num_words_in_block == block_size) {
                blocks.push(curr_block.trim().replace(/ /g, '+'));
                curr_block = '';
                num_words_in_block = 0;
            }
            curr_block += ' ' + w;
            num_words_in_block++;
        }
        if (curr_block > '') {
            if (curr_block < 15) {
                blocks[blocks.length - 1] += '+' + curr_block.trim().replace(/ /g, '+');
            } else {
                blocks.push(curr_block.trim().replace(/ /g, '+'));
            }
        }
        return blocks;
    };
    ClassDuplicateFinder.prototype.divideText = function(text, block_size, blocks) {
        console.assert(text != null && typeof text == 'string');
        if (typeof block_size == 'undefined') block_size = 1;
        text = text.replace(/\r\n/g, "\r").replace(/\r\r/g, "\.").replace(/\r/g, " ").replace(/\./g, "\. ").replace(/([\s]+)/g, " ");
        var pos = 0;
        var cur_block = "";
        var cur_block_words = 0;
        var i_prevent_deadloop = 0;
        var i;
        while (pos < text.length) {
            ++i_prevent_deadloop;
            console.assert(i_prevent_deadloop < text.length + 10, "Possibly dead loop: " + i_prevent_deadloop);
            var pos_word_head = pos;
            var cur_word = "";
            if (' ' == text[pos]) {
                pos++;
                continue;
            }
            while (pos < text.length && text[pos].match(/[ .;!?]/) == null) {
                console.assert(i_prevent_deadloop < text.length + 10, "Possibly dead loop: " + i_prevent_deadloop);
                if ('"' !== text[pos]) {
                    cur_word += text[pos];
                }++pos;
                ++i_prevent_deadloop;
            }
            if (pos < text.length) {
                cur_word += text[pos] === " " ? "+" : text[pos];
                ++pos;
            }
            if (cur_word.match(/^\s*$/) != null) {
                continue;
            }
            if (pos - pos_word_head >= ClassDuplicateFinder.MAX_WORD_LENGTH) {
                blocks.push(cur_block);
                blocks.push(cur_word);
                cur_block = "";
                cur_block_words = 0;
                continue;
            }
            cur_block += cur_word;
            cur_block_words++;
            if (cur_block_words >= block_size || (cur_block.length > 0 && cur_block.match(/[.;!?]$/) != null && cur_block_words > 3)) {
                if (cur_block.length > 0 && cur_block.match(/( |\+)$/) != null) cur_block = cur_block.substring(0, cur_block.length - 1);
                blocks.push(cur_block);
                cur_block = "";
                cur_block_words = 0;
            } else if (cur_block.length > 0 && cur_block[cur_block.length - 1].match(/\.|;/)) {
                if (blocks.length > 0) blocks[blocks.length - 1] += '+' + cur_block;
                cur_block = "";
                cur_block_words = 0;
            }
        }
        if (cur_block_words != 0 && cur_block.match(/^\s*$/) == null) {
            blocks.push(cur_block);
        }
    };
    ClassDuplicateFinder.prototype.prepareQueryStrings = function(text, block_size, max_length, text_blocks) {
        this.divideTextNew(text, block_size, max_length, text_blocks);
        var results = [];
        for (var i = 0; i < text_blocks.length; i++) results.push('"' + encodeURI(text_blocks[i]) + '"');
        return results;
    };
    ClassDuplicateFinder.prototype.getQueriesRespondedRatio = function() {
        return this.queries_responded / this.total_queries;
    };
    ClassDuplicateFinder.prototype.allQueriesSubmitted = function() {
        return this.total_queries === this.queries_submitted;
    };
    ClassDuplicateFinder.prototype.buildDuplicateList = function(text) {
        this.deferred_dup_list = jQuery.Deferred();
        if (typeof text === 'undefined' || text.match(/^\s*$/)) {
            this.deferred_dup_list.resolve();
            return;
        }
        this.num_pages_analyzed = 0;
        this.num_pages_added = 0;
        this.num_search_engines_done = 0;
        engine_num_pages = {
            'google': 0,
            'bing': 0,
            'yahoo': 0,
            'all': 0,
            'total_unique': 0
        };
        this.init_plagiarism_coverage(text);
        this.resetCounters();
        this.total_pages = 0;
        this.dup_list = [];
        var query_strings;
        this.queries_submitted = 0;
        this.queries_responded = 0;
        this.text_blocks_4all = [];
        var self = this;
        self.queries_submitted++;
        self.search_request = $.post('http://checktext.org/wp-admin/admin-ajax.php', {
            action: "search_engine",
            text: text
        }, function(resp) {
            self.search_request = undefined;
            self.text_blocks_4all = resp.sentences;
            var results = resp.data;
            console.log(results.length + " results");
            self.queries_responded++;
            self.add_dup_records(results, 'all');
            updateEngineCounters(resp.google_avail, resp.yahoo_avail, resp.bing_avail);
        }, 'json').fail(function(jqXHR, textStatus, errorThrown) {
            self.search_request = undefined;
            self.deferred_dup_list.reject(textStatus);
        });
        self.total_queries = 1;
        return this.deferred_dup_list.promise();
    };
    return ClassDuplicateFinder.getInstance();
}]);
                                    

#90 JavaScript::Eval (size: 5632, repeated: 1) - SHA256: bd2e55389d3a95654f2b3011920177a27a69c6fd46451e3b517d54462040e1ae

                                        var ClassMainTextExtractor = function() {
    if (arguments.callee.instance) return arguments.callee.instance;
    arguments.callee.instance = this;
    this.parser = new DOMParser();
};
ClassMainTextExtractor.getInstance = function() {
    var singleton = new ClassDuplicateFinder();
    return singleton;
};
ClassMainTextExtractor.prototype.removeLinkList = function(container) {
    console.assert(container instanceof jQuery);
    var all_lists = [];
    var no_other_texts = [];
    var list_items = container.find("li a");
    if (list_items.length == 0) return container;
    list_items.each(function() {
        var this_jq = $(this);
        var list = this_jq.parents("ul");
        if (list.length > 0 && -1 == all_lists.indexOf(list.get(0))) all_lists.push(list.get(0));
        list = this_jq.parents("ol");
        if (list.length > 0 && -1 == all_lists.indexOf(list.get(0))) all_lists.push(list.get(0));
    });
    for (var i = 0; i < all_lists.length; i++) {
        no_other_texts[i] = true;
        var this_list = $(all_lists[i]);
        var extractor = this;
        list_items.each(function() {
            var this_jq = $(this);
            var words_in_link = extractor.countWords(this_jq);
            if (this_list.has(this).length > 0 && extractor.countWords(this_jq.parents("li")) > words_in_link && words_in_link != 0) {
                log.debug("\t- One list removed: " + this_list.text());
                no_other_texts[i] = false;
            }
        });
        if (no_other_texts[i]) {
            this_list.remove();
            list_items = container.find("li a");
            if (list_items.length == 0) break;
        }
    };
    return container;
};
ClassMainTextExtractor.prototype.getMainContent = function(html) {
    this.total_words = this.countWords(html);
    log.debug("Total number of words = " + this.total_words);
    this.doc = $($.parseHTML(html, null, false));
    var main_content;
    main_content = this.doc.find("article");
    var h1 = this.doc.find("h1");
    if (main_content.length > 0 && h1.length > 0 && main_content.has("h1").length == 0) main_content.prepend(h1, " ");
    if (main_content.length == 0) main_content = this.doc.find("h1");
    if (main_content.length == 0) main_content = this.doc.find("h2");
    if (main_content.length == 0) main_content = this.doc.find("p");
    if (main_content.length > 0) {
        main_content = $(main_content.get(0));
        log.debug("\t<" + main_content[0].nodeName + "> found. Counting words of all siblings...")
        do {
            var temp = main_content.parent();
            if (temp.length == 0 || null == temp || 'undefined' == typeof temp) break;
            main_content = temp;
            this.printInfo(main_content, 0);
        } while (this.countWords(main_content) < this.total_words * 0.5)
    } else {
        log.debug("\t<h1> not found, counting words of whole document...");
        main_content = this.doc;
    }
    return main_content;
};
ClassMainTextExtractor.prototype.removeNonMainElements = function(container) {
    container.find("nav").remove();
    container.find("select").remove();
    container.find("noscript").remove();
    container.find("img").remove();
    container.find('meta[property="og:image"]').remove();
    this.num_invisible_elements = 0;
    var _this_ = this;
    container.find("*").filter(function() {
        var not_visible = $(this).css("display") == "none" || $(this).css("visibility") == "hidden";
        if (not_visible) {
            _this_.num_invisible_elements++;
            log.debug(_this_.num_invisible_elements + ") tag = " + this.tagName + ", text = " + $(this).text());
        }
        return not_visible;
    }).remove();
    var exclude_names = ['toc', 'nav', 'menu', 'side', 'comment', 'share', 'breadcrumb', 'skyscraper', 'right', 'video', 'related', 'time', 'date'];
    for (var i = 0; i < exclude_names.length; i++) {
        container.find("[class^='" + exclude_names[i] + "']").remove();
        container.find("[class$='" + exclude_names[i] + "']").remove();
        container.find("[id^='" + exclude_names[i] + "']").remove();
        container.find("[id$='" + exclude_names[i] + "']").remove();
    }
    var exclude_prefix = ['left'];
    for (var i = 0; i < exclude_prefix.length; i++) {
        container.find("[id^='" + exclude_prefix[i] + "']").remove();
        container.find("[class^='" + exclude_prefix[i] + "']").remove();
    }
    var exclude_names_anywhere = ['footer'];
    for (var i = 0; i < exclude_names_anywhere.length; i++) {
        container.find("[id*='" + exclude_names_anywhere[i] + "']").remove();
        container.find("[class*='" + exclude_names_anywhere[i] + "']").remove();
    }
    return container;
};
ClassMainTextExtractor.prototype.countWords = function(node) {
    if (typeof node == 'undefined ') return 0;
    var html;
    if (node instanceof jQuery) html = node.html();
    else if (typeof node == 'string') html = node;
    else
        console.assert(false);
    var text = ClassTextAnalyzer.stripHtmlTags(html);
    return ClassTextAnalyzer.getWords(text).length;
};
ClassMainTextExtractor.prototype.getNodeText = function(node) {
    if (!node instanceof jQuery) throw new Error("Bad input parameter");
    if (node.length == 0) return '';
    return ClassTextAnalyzer.stripNonBasicTags($("<div></div>").append(node).html());
};
ClassMainTextExtractor.prototype.printInfo = function(node, depth) {
    if (typeof node == 'undefined' || null == node) return;
    console.assert(node instanceof jQuery);
    var indent = "";
    for (var i = 0; i < depth; i++) {
        indent += "  ";
    }
    node = node[0];
    var message = indent + "<" + node.nodeName + "> words = " + ClassTextAnalyzer.getWords(ClassTextAnalyzer.stripHtmlTags(node.innerHTML)).length + ", " + (typeof node.attributes == 'undefined' || typeof node.attributes[0] == 'undefined' ? "" : node.attributes[0].name + '= ' + node.attributes[0].value) + ", " + (typeof node.attributes == 'undefined' || typeof node.attributes[1] == 'undefined' ? "" : node.attributes[1].name + '= ' + node.attributes[1].value);
    log.debug(message);
    $("#parser-log").append("<div><span style='width=" + (depth * 5) + "px'></span>" + message + "</div>");
};
ClassMainTextExtractor.prototype.parseChild = function(node, depth) {
    this.printInfo(node, depth);
    depth++;
    indent += "\t";
    for (var i = 0; i < node.children.length; i++) {
        var child = node.children[i];
        this.parseChild(child, depth);
    }
};
ClassMainTextExtractor.prototype.getMainArticle = function(page_html) {
    var jqMain = this.getMainContent(page_html)
    jqMain = this.removeNonMainElements(jqMain);
    jqMain = this.removeLinkList(jqMain);
    return this.getNodeText(jqMain);
};
angular.module('ImportWebText', []).value('version', '0.1').factory('instanceOfImportWebText', ['$injector', function($injector) {
    return new ClassMainTextExtractor();
}]);
                                    

#91 JavaScript::Eval (size: 25515, repeated: 1) - SHA256: 43801563a98598b275b308fcaf72fa0c2a9337febec761637d8fb855227e5867

                                        var ClassTextAnalyzer = function() {
    if (arguments.callee.instance) return arguments.callee.instance;
    arguments.callee.instance = this;
    this.static = ClassTextAnalyzer;
};
ClassTextAnalyzer.Regex = {
    scripts: /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
    styles: /<style\b[^<]*(?:(?!<\/style>)<[^<]*)*<\/style>/gi,
    tags: /<[^>]*?>/g,
    images: /<img[^>]*?>/gi,
    non_basic_tag_opening: /<(?!(p|h1|h2|h3|b|i|li|dd|dt|u|span|br))([!\w]+)([ ]+([^>]*))*[ ]*>/gi,
    tag_names: /<([\w]+)\s*[^>]*>/gi,
    non_basic_tag_closing: /<\/(?!(p|h1|h2|h3|b|i|li|dd|dt|u|span|br))([\w]+)>/g,
    non_basic_without_closing: /<(?!(br))([!\w]+)([ ]+([^>]*))*[ ]*\/>/gi,
    html_comment: /<!--([\s\S]*?)-->/gi,
    eol_tags: /<\/(div|li|dt|td|tr)>/gi,
    some_tags: /<\/?(?!((p|h1|h2|h3|b|u|i|li|dd|dt|br)\b))(\w+)([^>]|\n|\r)*?>/gi,
    multi_line_breaks: /(<br>\s*)+/gi,
    regex_ref_number: /\[[0-9]+\]/g,
    regex_blank: /^\s*$/,
    regex_ending_spaces: /\s+$/,
    regex_need_remove_return: /(\w)\n(\w)/,
    regex_abrev: /(\s([A-Z]\.)+)|(etc\.)|(inc\.)|(i\.e\.)|(e\.g\.)/g,
    regex_dot: /\./g,
    regex_sentences: /(?!<EOL>)(.*?<EOL>)/g,
    paragraph: /(((?=.*[^\s])[^\n]+)(\n|$))/g,
    regex_y_start: /\by/gi,
    regex_qu: /(qu)|(que\b)/gi,
    regex_quiet_e: /([aeiouy])([^aeiou]|dg|qu|th|nc|ns)e\b/gi,
    regex_fore_prefix: /\b(fore)(?!(st\b)|(ns))(?=[^aeiuy])/gi,
    regex_non_letterdigits: /([^a-zA-Z0-9'\s-]+)/g,
    regex_letterdigit: /[a-z0-9]/gi,
    regex_at_least_1_letter: /^(?=.*[a-zA-Z]).*$/,
    regex_spaces_begining_end: /(^\s*)|(\s*$)/gi,
    regex_multispaces: /[\s]{1,}/g,
    regex_3vowels_s: /(iou|eou|eoi)s/gi,
    regex_eau: /(eau)/gi,
    regex_co_opera: /\bcoopera/gi,
    regex_co_ord: /\bcoord/gi,
    regex_n_apostrophe_t: /n't/gi,
    regex_apostrophe_ll: /'ll/gi,
    regex_adj_forms: /([a-zA-Z\-]+i)(er|est)$/i,
    regex_2vowels: /(ae|ai|ay|au|ee|ea|eu|ei|ey|ie|ion|oo|oa|oe|oi|oy|ou|ue|ui|uy)/gi,
    regex_not_word: /^[^a-z]*$/i,
    regex_vowel: /[aeiouy]/gi,
    regex_verb_past_AddNoSyllable: /([A-Z\-]+[^TD])ED$/i,
    regex_a_word: /^[a-zA-Z\-.�]+$/i,
    regex_chars: /[^\s]/gi,
    regex_WordPartOfSpeech: /^([a-zA-Z.' _\-\u0301]+),(.*)$/gi,
    remove_spaces_start_end: /^\s*([^\s]+)\s*$/,
    carriage_return_newline: /\r\n/gi,
    regex_ellipsis_at_end_of_sentence: /([^.\s]*)[ ]+\.+(( [A-Z])|[ ]+(\r|\n))/g,
    regex_ellipsis_at_middle_of_sentence: /([^.]*)\.{2,}( ?[a-z])/g,
    regex_periods: /(\.[\b ]+\.)|[!\?\.]{2,}/g,
    regex_lack_ending_period: /([^.?!\s"]+)[ ]*?($|\r|\n)/g,
    regex_2returns: /(\w+)[ ]*(\n){2,}/g,
    has_eol: /<EOL>($|\n)/g,
    html_deocde_nbsp: /(&nbsp;)/g,
    html_deocde_lt: /(&lt;)/g,
    html_deocde_gt: /(&gt;)/g,
    paragraph_eng_tag: /((<\/p>)|(<\/h1>)|(<\/h2>)|(<\/h3>)|(<br>)|(<br\/>))/g,
    end_of_sentence: /(\.|\?|!)([^\w]|$)/g,
    useless_spaces_between_tags: /(>)\s+/g,
    escape_chars_for_regex: /([.?|\|<>()$^*+])/g,
    regex_punctuations: /[+,`\.";:()]/g,
    regex_spaces: /[\r\n\s]+/g
};
ClassTextAnalyzer.NUM_TOP_POPULAR = 10;
ClassTextAnalyzer.NonComplexWords = [];
ClassTextAnalyzer.WordNumSyllables = [];
ClassTextAnalyzer.FunctionWords = [];
ClassTextAnalyzer.fileNonComplexWords = location.host === "localhost:9876" ? '/base/resource/NonComplexLongWords.txt' : location.host === "localhost" ? '/resource/NonComplexLongWords.txt' : '/resource/NonComplexLongWords.txt';
ClassTextAnalyzer.fileWordNumSyllables = location.host === "localhost:9876" ? '/base/resource/10k_frequent_words_syllables.txt' : location.host === "localhost" ? '/resource/10k_frequent_words_syllables.txt' : '/resource/10k_frequent_words_syllables.txt';
ClassTextAnalyzer.fileFunctionWords = location.host === "localhost:9876" ? '/base/resource/function-words.txt' : location.host === "localhost" ? '/resource/function-words.txt' : '/resource/function-words.txt';
var loadArrayFromFile = function(file, array) {
    var request = new XMLHttpRequest();
    request.open('GET', file, false);
    request.send();
    var file_content = request.responseText;
    var pos = 0;
    while (pos < file_content.length) {
        var this_line = "";
        while (pos < file_content.length && file_content[pos] != '\n') {
            this_line += file_content[pos];
            pos++;
        }
        pos++;
        if (this_line.match(ClassTextAnalyzer.Regex.regex_blank)) continue;
        array.splice(array.length, 0, this_line);
    }
    if ('undefined' != typeof window) {
        console.log("File " + file + " loaded lines: " + array.length);
    } else
        self.postMessage({
            'cmd': 'console_log',
            'message': "File " + file + " loaded lines: " + array.length
        });
};
var loadFiles = function() {
    if (('undefined' != typeof window && location.host !== "localhost:9876")) return;
    if (ClassTextAnalyzer.WordNumSyllables.length == 0) {
        var request = new XMLHttpRequest();
        request.open('GET', ClassTextAnalyzer.fileWordNumSyllables, false);
        request.send();
        var file_content = request.responseText;
        var pos = 0;
        var regex_WordNumSyllables = /([a-zA-Z' -]+),([0-9])/gi;
        while (pos < file_content.length) {
            var this_line = "";
            while (pos < file_content.length && file_content[pos] != '\n') {
                this_line += file_content[pos];
                pos++;
            }
            pos++;
            if (this_line.match(ClassTextAnalyzer.Regex.regex_blank)) continue;
            var match = this_line.match(regex_WordNumSyllables);
            if (null != match) {
                var p = 0;
                var word = "";
                while (p < this_line.length && this_line[p] != ',') {
                    word += this_line[p];
                    p++;
                }
                p++;
                var n = parseInt(this_line[p], 10);
                ClassTextAnalyzer.WordNumSyllables.splice(ClassTextAnalyzer.WordNumSyllables.length, 0, {
                    "word": word,
                    "syllables": n
                });
                if ('undefined' != typeof window) {
                    console.assert(word !== "" && !isNaN(n));
                }
            } else {}
        }
        if ('undefined' != typeof window) {
            console.log("word-number_of_syllables loaded : " + ClassTextAnalyzer.WordNumSyllables.length);
        }
    }
    if (ClassTextAnalyzer.NonComplexWords.length == 0) {
        loadArrayFromFile(ClassTextAnalyzer.fileNonComplexWords, ClassTextAnalyzer.NonComplexWords);
    }
    if (ClassTextAnalyzer.FunctionWords.length == 0) {
        loadArrayFromFile(ClassTextAnalyzer.fileFunctionWords, ClassTextAnalyzer.FunctionWords);
    }
    if ('undefined' === typeof window) self.postMessage({
        'cmd': 'update_busy_text',
        'value': "Analyzing ..."
    });
};
loadFiles();
ClassTextAnalyzer.preprocessing = function(text, keep_tags) {
    if (typeof keep_tags === 'undefined' || false === keep_tags) text = jQuery("<div/>").html(text).text();
    text = text.replace(ClassTextAnalyzer.Regex.regex_ref_number, "").replace(ClassTextAnalyzer.Regex.carriage_return_newline, "\n").replace(ClassTextAnalyzer.Regex.regex_abrev, function(matched) {
        var result = matched.replace(ClassTextAnalyzer.Regex.regex_dot, '');
        return result;
    });
    return text;
};
ClassTextAnalyzer.getFunction = function(indicator) {
    return ClassTextAnalyzer[indicator];
};
ClassTextAnalyzer.indicators = [];
ClassTextAnalyzer.getInstance = function() {
    var singleton = new ClassTextAnalyzer();
    return singleton;
};
if ('undefined' !== typeof window && 'undefined' === typeof ClassTextAnalyzer.worker) {
    ClassTextAnalyzer.worker = new Worker(location.host === "localhost:9876" ? '/base/js/app/worker.js' : location.host === "localhost" ? '/js/app/worker.js' : '/js/app/worker.js');
    ClassTextAnalyzer.worker.addEventListener('message', function(e) {
        if (e.data.cmd === 'update_busy_text' && location.host !== "localhost:9876") {
            console.log("Worker thread has finished loading.");
        }
    }, true);
    ClassTextAnalyzer.worker.addEventListener('message', function(e) {
        if (typeof e.data.id === 'undefined' || e.data.cmd === 'console_log') return;
        var deferred_ = ClassTextAnalyzer.retrieveDeferred(e.data.id);
        if (deferred_ === null) return;
        if (e.data.cmd.substring(0, 7) === 'result_') {
            console.log("\tResult = " + e.data.result);
            ClassTextAnalyzer.bag.remove(e.data.id);
            deferred_.resolve(e.data['result']);
        }
    }, true);
    ClassTextAnalyzer.worker.addEventListener('message', function(e) {
        if (e.data.cmd === 'console_log') {
            return;
        }
        if (typeof e.data.id === 'undefined') return;
        var deferred_ = ClassTextAnalyzer.retrieveDeferred(e.data.id);
        if (deferred_ === null) return;
        if (e.data.cmd === 'result_calcAllIndicators') {
            console.log("\tResult = " + JSON.stringify(e.data.result) + ", time spent until analysis is done = " + (Date.now() - time_departure));
            deferred_.resolve(e.data['result']);
        }
    }, true);
}
ClassTextAnalyzer.stripNonBasicTags = function(html) {
    return html.replace(ClassTextAnalyzer.Regex.scripts, "").replace(ClassTextAnalyzer.Regex.styles, "").replace(ClassTextAnalyzer.Regex.some_tags, " ").replace(ClassTextAnalyzer.Regex.non_basic_tag_opening, "").replace(ClassTextAnalyzer.Regex.non_basic_tag_closing, "").replace(ClassTextAnalyzer.Regex.non_basic_without_closing, "").replace(ClassTextAnalyzer.Regex.html_comment, "").replace(ClassTextAnalyzer.Regex.eol_tags, "<br> ").replace(ClassTextAnalyzer.Regex.multi_line_breaks, "<br> ").replace(ClassTextAnalyzer.Regex.tag_names, "<$1>");
};
ClassTextAnalyzer.stripHtmlTags = function(html) {
    return html.replace(ClassTextAnalyzer.Regex.scripts, "").replace(ClassTextAnalyzer.Regex.styles, "").replace(ClassTextAnalyzer.Regex.tags, "").replace(ClassTextAnalyzer.Regex.images, "").replace(ClassTextAnalyzer.Regex.html_comment, "");
};
ClassTextAnalyzer.stripNonTextDoms = function(html) {
    return html.replace(ClassTextAnalyzer.Regex.scripts, "").replace(ClassTextAnalyzer.Regex.styles, "").replace(ClassTextAnalyzer.Regex.images, "");
};
ClassTextAnalyzer.getWords = function(s) {
    if (null != s && !s.match(ClassTextAnalyzer.Regex.regex_blank)) {
        s = s.replace(ClassTextAnalyzer.Regex.regex_non_letterdigits, " ");
        s = s.replace(ClassTextAnalyzer.Regex.regex_spaces_begining_end, "");
        s = s.replace(ClassTextAnalyzer.Regex.regex_multispaces, " ");
        return s.split(' ');
    } else
        return [];
};
ClassTextAnalyzer.countKeywordOccurrences = function(s, keyword) {
    if (typeof keyword === 'undefined') return 0;
    var s = s.toUpperCase();
    var k = keyword.toUpperCase();
    k = k.replace(ClassTextAnalyzer.Regex.escape_chars_for_regex, "\$1");
    var regx = new RegExp("\\b" + k + "\\b", "g");
    var results = s.match(regx);
    return results == null ? 0 : results.length;
};
ClassTextAnalyzer.prototype.submitTaskToWorker = function(indicator, text, param) {
    var deferred = jQuery.Deferred();
    var id = ClassTextAnalyzer.bag.add(deferred);
    ClassTextAnalyzer.worker.postMessage({
        'cmd': indicator,
        'text': ClassTextAnalyzer.preprocessing(text),
        'param': param,
        'html': text,
        'id': id
    });
    return deferred;
};
ClassTextAnalyzer.retrieveDeferred = function(id) {
    return ClassTextAnalyzer.bag.get(id);
};
ClassTextAnalyzer.ResultCache = {
    'countWords': {
        id: -1,
        value: -1
    },
    'countSentences': {
        id: -1,
        value: -1
    }
};
ClassTextAnalyzer.addIndicator = function(indicator, implementation, exclude) {
    if (typeof exclude === 'undefined') exclude = false;
    ClassTextAnalyzer.indicators.push({
        'indicator': indicator,
        'implementation': implementation,
        'exclude': exclude
    });
    ClassTextAnalyzer.prototype[indicator] = function(text, param, id) {
        var time_departure = Date.now();
        var deferred = this.submitTaskToWorker(indicator, text, param);
        return deferred.promise();
    };
    ClassTextAnalyzer.ResultCache[indicator] = {
        id: -1,
        value: -1
    };
    ClassTextAnalyzer[indicator] = function(text, param, id, html) {
        if (typeof id !== 'undefined' && id === ClassTextAnalyzer.ResultCache[indicator].id) return ClassTextAnalyzer.ResultCache[indicator].value;
        var pure_text, result;
        if (typeof window === 'undefined') {
            result = implementation(text, param, id, html);
        } else {
            pure_text = ClassTextAnalyzer.preprocessing(text);
            result = implementation(pure_text, param, id, text);
        }
        ClassTextAnalyzer.ResultCache[indicator].id = id;
        ClassTextAnalyzer.ResultCache[indicator].value = result;
        return result;
    };
};
ClassTextAnalyzer.addIndicator('countLetters', function(s, param, id, html) {
    if (s.match(ClassTextAnalyzer.Regex.regex_blank)) return 0;
    var letters = s.match(ClassTextAnalyzer.Regex.regex_letterdigit);
    if (null === letters) return 0;
    else
        return letters.length;
});
ClassTextAnalyzer.addIndicator('countCharacters', function(s, param, id, html) {
    if (s.match(ClassTextAnalyzer.Regex.regex_blank)) return 0;
    var chars = s.match(ClassTextAnalyzer.Regex.regex_chars);
    if (null === chars) return 0;
    else
        return chars.length;
});
ClassTextAnalyzer.addIndicator('countWords', function(s, param, id) {
    if (s.match(ClassTextAnalyzer.Regex.regex_blank)) return 0;
    return ClassTextAnalyzer.getWords(s).length;
});
ClassTextAnalyzer.addIndicator('countUniqueWords', function(s, param, id, html) {
    var arrayUniqueWords = [];
    if (s.match(ClassTextAnalyzer.Regex.regex_blank)) return 0;
    var words = ClassTextAnalyzer.getWords(s);
    if (arrayUniqueWords.length == 0 && words.length > 0) {
        arrayUniqueWords[0] = words[0];
    }
    for (var i = 0; i < words.length; i++) {
        var pos = arrayUniqueWords.binaryIndexOf(words[i]);
        if (pos >= 0) continue;
        else {
            arrayUniqueWords.splice(-pos - 1, 0, words[i]);
        }
    }
    return arrayUniqueWords.length;
});
ClassTextAnalyzer.preprocessSyllables = function(s) {
    s = s.replace(ClassTextAnalyzer.Regex.regex_y_start, 'j');
    s = s.replace(ClassTextAnalyzer.Regex.regex_qu, 'k');
    s = s.replace(ClassTextAnalyzer.Regex.regex_quiet_e, "$1$2");
    s = s.replace(ClassTextAnalyzer.Regex.regex_fore_prefix, "for");
    s = s.replace(ClassTextAnalyzer.Regex.regex_3vowels_s, "as");
    s = s.replace(ClassTextAnalyzer.Regex.regex_eau, "u");
    s = s.replace(ClassTextAnalyzer.Regex.regex_co_opera, "co-opera");
    s = s.replace(ClassTextAnalyzer.Regex.regex_co_ord, "co-ord");
    s = s.replace(ClassTextAnalyzer.Regex.regex_n_apostrophe_t, "not");
    s = s.replace(ClassTextAnalyzer.Regex.regex_apostrophe_ll, "will");
    s = s.replace(ClassTextAnalyzer.Regex.regex_adj_forms, "$1g$2");
    s = s.replace(ClassTextAnalyzer.Regex.regex_2vowels, 'a');
    return s;
};
ClassTextAnalyzer.addIndicator('countSyllables', function(s, param, id, html) {
    if (null != s.match(ClassTextAnalyzer.Regex.regex_not_word)) return 0;
    var words = ClassTextAnalyzer.getWords(s);
    var num_syllables = 0;
    for (var i = 0; i < words.length; i++) {
        num_syllables += ClassTextAnalyzer.countWordSyllables(words[i]);
    }
    return num_syllables;
});
ClassTextAnalyzer.addIndicator('countAllWordsFrequencies', function(text, param, id, html) {
    var arrayWordFreq = [];
    var words = ClassTextAnalyzer.getWords(text);
    for (var i = 0; i < words.length; i++) {
        if (null == words[i].match(ClassTextAnalyzer.Regex.regex_at_least_1_letter)) continue;
        var index = arrayWordFreq.binaryIndexOfObjectArray(words[i]);
        if (index >= 0) {
            arrayWordFreq[index].freq += 1;
        } else
            arrayWordFreq.splice(-index - 1, 0, {
                "word": words[i],
                "freq": 1
            });
    }
    arrayWordFreq.sort(function(a, b) {
        var result = b.freq - a.freq;
        if (result === 0) return a.word < b.word ? -1 : a.word > b.word ? 1 : 0;
        else
            return result;
    });
    var topPopularWordsFreq = [];
    var numTopPop = ClassTextAnalyzer.NUM_TOP_POPULAR < arrayWordFreq.length ? ClassTextAnalyzer.NUM_TOP_POPULAR : arrayWordFreq.length;
    var i = 0,
        j = 0;
    while (i < numTopPop && j < arrayWordFreq.length) {
        if (ClassTextAnalyzer.isFunctionWord(arrayWordFreq[j].word) || arrayWordFreq[j].word.length == 1) {
            j++;
            continue;
        } else {
            topPopularWordsFreq.push(arrayWordFreq[j]);
            i++;
            j++;
        }
    }
    return topPopularWordsFreq;
});
ClassTextAnalyzer.isFunctionWord = function(word) {
    return ClassTextAnalyzer.FunctionWords.binaryIndexOf(word.toUpperCase()) >= 0;
};
ClassTextAnalyzer.countWordSyllables = function(word) {
    var index = ClassTextAnalyzer.WordNumSyllables.binaryIndexOfObjectArray(word);
    if (index >= 0) {
        return ClassTextAnalyzer.WordNumSyllables[index].syllables;
    }
    var match = ClassTextAnalyzer.Regex.regex_verb_past_AddNoSyllable.exec(word);
    if (match != null) {
        var original_word = match[1];
        var index = ClassTextAnalyzer.WordNumSyllables.binaryIndexOfObjectArray(original_word);
        if (index >= 0) index = ClassTextAnalyzer.WordNumSyllables.binaryIndexOfObjectArray(original_word + 'E');
        if (index >= 0) {
            return ClassTextAnalyzer.WordNumSyllables[index].syllables;
        }
        word = original_word;
    }
    word = ClassTextAnalyzer.preprocessSyllables(word);
    var syllables = word.match(ClassTextAnalyzer.Regex.regex_vowel);
    return (null != syllables) ? syllables.length : 0;
};
ClassTextAnalyzer.addIndicator('countComplexWords', function(s, param, id, html) {
    if (null != s.match(ClassTextAnalyzer.Regex.regex_not_word)) return 0;
    var words = ClassTextAnalyzer.getWords(s);
    var num_complex_words = 0;
    for (var i = 0; i < words.length; i++) {
        if (!ClassTextAnalyzer.isNotComplex(words[i])) {
            num_complex_words++;
        }
    }
    return num_complex_words;
});
ClassTextAnalyzer.addIndicator('countPolysyllableWords', function(s, param, id, html) {
    if (null != s.match(ClassTextAnalyzer.Regex.regex_not_word)) return 0;
    var words = ClassTextAnalyzer.getWords(s);
    var num_polysyllable_words = 0;
    for (var i = 0; i < words.length; i++) {
        if (ClassTextAnalyzer.countWordSyllables(words[i]) > 2) num_polysyllable_words++;
    }
    return num_polysyllable_words;
});
ClassTextAnalyzer.addIndicator('countLexicalWords', function(s, param, id, html) {
    if (null != s.match(ClassTextAnalyzer.Regex.regex_not_word)) return 0;
    var words = ClassTextAnalyzer.getWords(s);
    var num_lexical_words = 0;
    for (var i = 0; i < words.length; i++) {
        if (null == words[i].match(ClassTextAnalyzer.Regex.regex_a_word)) continue;
        var index = ClassTextAnalyzer.FunctionWords.binaryIndexOf(words[i]);
        if (!ClassTextAnalyzer.isFunctionWord(words[i])) {
            num_lexical_words++;
            if ('undefined' != typeof window) {}
            continue;
        }
    }
    return num_lexical_words;
});
ClassTextAnalyzer.addIndicator('countSentences', function(s, param, id, html) {
    if (s.match(ClassTextAnalyzer.Regex.regex_blank)) return 0;
    if ('undefined' == typeof window) console_log(id, "countSentence(): input html = " + html);
    html = html.replace(ClassTextAnalyzer.Regex.html_deocde_nbsp, ' ');
    html = html.replace(ClassTextAnalyzer.Regex.html_deocde_lt, '<');
    html = html.replace(ClassTextAnalyzer.Regex.html_deocde_gt, '>');
    html = html.replace(ClassTextAnalyzer.Regex.useless_spaces_between_tags, "$1");
    html = html.replace(ClassTextAnalyzer.Regex.paragraph_eng_tag, "<EOL>");
    html = ClassTextAnalyzer.preprocessing(html, true);
    html = html.replace(ClassTextAnalyzer.Regex.regex_periods, '.');
    html = html.replace(ClassTextAnalyzer.Regex.regex_ending_spaces, '');
    if (null == html.match(ClassTextAnalyzer.Regex.has_eol)) {
        html = html.replace(ClassTextAnalyzer.Regex.regex_lack_ending_period, "$1\. ");
    }
    html = html.replace(ClassTextAnalyzer.Regex.end_of_sentence, "$1<EOL>");
    var sentences = html.match(ClassTextAnalyzer.Regex.regex_sentences);
    if ('undefined' !== typeof window) {} else
        console_log(id, "source html = " + html);
    if (null !== sentences) return sentences.length;
    if (ClassTextAnalyzer['countWords'](s, html, id) !== 0) return 1;
    else
        return 0;
});
ClassTextAnalyzer.addIndicator('countParagraphs', function(s, param, id, html) {
    if (s.match(ClassTextAnalyzer.Regex.regex_blank)) return 0;
    s = s.replace(ClassTextAnalyzer.Regex.regex_2returns, "$1\n");
    var paragraphs = s.match(ClassTextAnalyzer.Regex.paragraph);
    if (null !== paragraphs) {
        return paragraphs.length;
    }
    if (ClassTextAnalyzer['countWords'](s, null, id) !== 0) return 1;
    else
        return 0;
});
ClassTextAnalyzer.addIndicator('calcGunningFog', function(s, param, id, html) {
    if (null != s.match(ClassTextAnalyzer.Regex.regex_not_word)) return "0";
    var nComplexWords = ClassTextAnalyzer['countComplexWords'](s, null, id, html);
    var nWords = ClassTextAnalyzer['countWords'](s, null, id, html);
    var nSentences = ClassTextAnalyzer['countSentences'](s, param, id, html);
    return (0.4 * (nWords / nSentences + 100 * (nComplexWords / nWords))).toFixed(1);
});
ClassTextAnalyzer.addIndicator('calcKeywordDensity', function(s, keyword, id, html) {
    var num_words = ClassTextAnalyzer['countWords'](s, null, id);
    if (0 === num_words || 'undefined' === typeof keyword || keyword.match(ClassTextAnalyzer.Regex.regex_blank)) return 0;
    var num_keywords = ClassTextAnalyzer.countKeywordOccurrences(s, keyword, id, html);
    return (num_keywords.toFixed(2) / num_words * 100).toFixed(1);
});
ClassTextAnalyzer.addIndicator('calcFleschReadingEase', function(s, param, id, html) {
    var nWords = ClassTextAnalyzer['countWords'](s, null, id, html);
    var nSentences = ClassTextAnalyzer['countSentences'](s, null, id, html);
    var nSyllables = ClassTextAnalyzer['countSyllables'](s, null, id, html);
    if (0 == nWords || 0 == nSentences) return "";
    var result = 206.835 - 1.015 * (nWords / nSentences) - 84.6 * (nSyllables / nWords);
    if (result < 0) result = 0;
    return result.toFixed(1);
});
ClassTextAnalyzer.addIndicator('calcFleschKincaidGradeLevel', function(s, param, id, html) {
    var nWords = ClassTextAnalyzer['countWords'](s, null, id, html).toFixed(2);
    var nSentences = ClassTextAnalyzer['countSentences'](s, param, id, html).toFixed(2);
    var nSyllables = ClassTextAnalyzer['countSyllables'](s, null, id, html).toFixed(2);
    if (0 == nWords || 0 == nSentences) return "";
    var result = 0.39 * nWords / nSentences + 11.8 * nSyllables / nWords - 15.59;
    if (result < 0) result = 0;
    return result.toFixed(1);
});
ClassTextAnalyzer.addIndicator('calcColemanLiauIndex', function(s, param, id, html) {
    var nWords = ClassTextAnalyzer['countWords'](s, null, id, html).toFixed(2);
    var nSentences = ClassTextAnalyzer['countSentences'](s, param, id, html);
    var nLetters = ClassTextAnalyzer['countLetters'](s, null, id, html);
    if ('undefined' != typeof window) {
        console.log("calcColemanLiauIndex(): words = " + nWords + ", sentences = " + nSentences + ", nLetters = " + nLetters);
    }
    if (0 == nWords || 0 == nSentences) return "";
    var result = 5.88 * nLetters / nWords - 29.6 * nSentences / nWords - 15.8;
    if (result < 0) result = 0;
    return result.toFixed(1);
});
ClassTextAnalyzer.addIndicator('calcSMOG', function(s, param, id, html) {
    if (s.match(ClassTextAnalyzer.Regex.regex_blank)) return (3.1).toFixed(1);
    var nPolyWords = ClassTextAnalyzer['countComplexWords'](s, null, id, html).toFixed(2);
    var nSentences = ClassTextAnalyzer['countSentences'](s, param, id, html);
    if ('undefined' != typeof window) {
        console.log("calcSMOGIndex(): poly-syllable words = " + nPolyWords + ", sentences = " + nSentences);
    }
    return (1.0430 * Math.sqrt(nPolyWords * 30 / nSentences) + 3.1291).toFixed(1);
});
ClassTextAnalyzer.addIndicator('calcARI', function(s, param, id, html) {
    if (s.match(ClassTextAnalyzer.Regex.regex_blank)) return (0).toFixed(1);
    var nWords = ClassTextAnalyzer['countWords'](s, null, id, html).toFixed(2);
    var nSentences = ClassTextAnalyzer['countSentences'](s, param, id, html);
    var nChars = ClassTextAnalyzer['countCharacters'](s, null, id, html);
    if ('undefined' != typeof window) {
        console.log("calcARI(): characters = " + nChars + ", words = " + nWords + ", sentences = " + nSentences);
    }
    var result = 4.71 * nChars / nWords + 0.5 * nWords / nSentences - 21.43;
    if (result < 0) result = 0;
    return result.toFixed(1);
});
ClassTextAnalyzer.addIndicator('calcLexicalDensity', function(s, param, id, html) {
    if (s.match(ClassTextAnalyzer.Regex.regex_blank)) return 0;
    var nWords = ClassTextAnalyzer['countWords'](s, null, id, html).toFixed(2);
    var nLexicalWords = ClassTextAnalyzer['countLexicalWords'](s, null, id, html);
    if ('undefined' != typeof window) {
        console.log("calcLeicalDensity(): Lexical words = " + nLexicalWords + ", words = " + nWords);
    }
    return (nLexicalWords.toFixed(2) / nWords * 100).toFixed(1) + '%';
});
ClassTextAnalyzer.addIndicator('calcAveReadabilityGrade', function(s, param, id, html) {
    if (s.match(ClassTextAnalyzer.Regex.regex_blank)) return 0;
    var average_grade = 0;
    var grade = [];
    grade[0] = ClassTextAnalyzer['calcARI'](s, param, id, html);
    grade[1] = ClassTextAnalyzer['calcSMOG'](s, param, id, html);
    grade[2] = ClassTextAnalyzer['calcColemanLiauIndex'](s, param, id, html);
    grade[3] = ClassTextAnalyzer['calcFleschKincaidGradeLevel'](s, param, id, html);
    grade[4] = ClassTextAnalyzer['calcGunningFog'](s, param, id, html);
    var total = 0;
    for (var i = 0; i < 5; i++) {
        total += parseFloat(grade[i]);
    }
    average_grade = total / 5;
    return (average_grade).toFixed(1);
});
ClassTextAnalyzer.prototype.sentencesFound = function(text, sentences, plagiarism_coverage) {
    text = ClassTextAnalyzer.stripHtmlTags(text).replace(ClassTextAnalyzer.Regex.regex_punctuations, " ").replace(ClassTextAnalyzer.Regex.regex_spaces, " ").toUpperCase();
    var encoded_text = encodeURIComponent(text);
    var num_sentences_found = 0;
    var indexOfSentenceInText = 0;
    for (var i = 0; i < sentences.length; i++) {
        var sentence = sentences[i].replace(ClassTextAnalyzer.Regex.regex_punctuations, " ").replace(ClassTextAnalyzer.Regex.regex_spaces, " ").toUpperCase();
        var str = encodeURIComponent(sentence);
        var words = sentence.split(' ');
        if (null !== words[words.length - 1].match(ClassTextAnalyzer.Regex.regex_blank)) words.splice(words.length - 1, 1);
        var num_words = words.length;
        if (encoded_text.indexOf(str) !== -1) {
            ++num_sentences_found;
            for (var j = 0; j < words.length; j++) {
                if (words[j].length == 0) {
                    num_words--;
                    continue;
                }
                plagiarism_coverage.is_plagiarized[indexOfSentenceInText + j] = true;
            }
        }
        indexOfSentenceInText += num_words;
    }
    return num_sentences_found;
};
ClassTextAnalyzer.prototype.calcAllIndicators = function(text, param) {
    if (typeof window !== 'undefined') console.log("calcAllIndicators()... ");
    var time_departure = Date.now();
    var deferred = this.submitTaskToWorker('calcAllIndicators', text, param);
    return deferred.promise();
};
ClassTextAnalyzer.newBag = function() {
    return new Collection();
};
var Collection = function() {
    this.bag = [];
    this.current_id = 0;
};
Collection.prototype.size = function() {
    return this.bag.length;
};
Collection.prototype.add = function(obj) {
    this.current_id++;
    this.bag.push({
        'obj': obj,
        'id': this.current_id
    });
    return this.current_id;
};
Collection.prototype.get = function(id) {
    if (typeof id === 'string') id = parseInt(id, 10);
    for (var i = 0; i < this.bag.length; i++) {
        if (this.bag[i].id == id) return this.bag[i]['obj'];
    }
    return null;
};
Collection.prototype.remove = function(id) {
    if (typeof id === 'string') id = parseInt(id, 10);
    for (var i = 0; i < this.bag.length; i++) {
        if (this.bag[i].id == id) {
            this.bag.splice(i, 1);
            return;
        }
    }
    console.warn("Object of id: " + id + " is not found in bag, objects in bag = " + this.bag.length + ", Objects in bag: " + JSON.stringify(this.bag));
};
ClassTextAnalyzer.bag = ClassTextAnalyzer.newBag();
Array.prototype.binaryIndexOf = function(searchElement) {
    'use strict';
    var match = searchElement.match(ClassTextAnalyzer.Regex.remove_spaces_start_end);
    if (match != null) searchElement = match[1];
    var minIndex = 0;
    var maxIndex = this.length - 1;
    var currentIndex;
    var currentElement;
    while (minIndex <= maxIndex) {
        currentIndex = (minIndex + maxIndex) / 2 | 0;
        currentElement = this[currentIndex];
        if (currentElement < searchElement) {
            minIndex = currentIndex + 1;
        } else if (currentElement > searchElement) {
            maxIndex = currentIndex - 1;
        } else {
            return currentIndex;
        }
    }
    return -minIndex - 1;
};
Array.prototype.binaryIndexOfObjectArray = function(word) {
    'use strict';
    var minIndex = 0;
    var maxIndex = this.length - 1;
    var currentIndex;
    var currentElement;
    word = word.toUpperCase();
    while (minIndex <= maxIndex) {
        currentIndex = (minIndex + maxIndex) / 2 | 0;
        currentElement = this[currentIndex].word.toUpperCase();
        if (currentElement.localeCompare(word) < 0) {
            minIndex = currentIndex + 1;
        } else if (currentElement.localeCompare(word) > 0) {
            maxIndex = currentIndex - 1;
        } else {
            return currentIndex;
        }
    }
    return -minIndex - 1;
};
ClassTextAnalyzer.isNotComplex = function(word) {
    word = word.toUpperCase();
    var index = ClassTextAnalyzer.NonComplexWords.binaryIndexOf(word);
    if (ClassTextAnalyzer.countWordSyllables(word) < 3 || index >= 0) {
        return true;
    } else {
        return false;
    }
};
if ('undefined' !== typeof window) {
    angular.module('TextAnalysis', []).value('ta_version', '1.0').factory('textAnalyzer', ['$injector', function($injector) {
        return ClassTextAnalyzer.getInstance();
    }]);
}
var printArray = function(array1) {
    console.assert(typeof array1 == 'object');
    if (array1 == null) console.log("Array is null");
    else {
        for (var i = 0; i < array1.length; i++) {
            console.log(i + ": " + array1[i]);
        }
    }
};
                                    

#92 JavaScript::Eval (size: 21890, repeated: 1) - SHA256: 4cf4e9bb233add748125d0138e1fa12df97cef1f588362f588c565df5c1e1ad4

                                        var JSZip = function(data, options) {
    this.files = {};
    this.root = "";
    if (data) {
        this.load(data, options);
    }
};
JSZip.signature = {
    LOCAL_FILE_HEADER: "\x50\x4b\x03\x04",
    CENTRAL_FILE_HEADER: "\x50\x4b\x01\x02",
    CENTRAL_DIRECTORY_END: "\x50\x4b\x05\x06",
    ZIP64_CENTRAL_DIRECTORY_LOCATOR: "\x50\x4b\x06\x07",
    ZIP64_CENTRAL_DIRECTORY_END: "\x50\x4b\x06\x06",
    DATA_DESCRIPTOR: "\x50\x4b\x07\x08"
};
JSZip.defaults = {
    base64: false,
    binary: false,
    dir: false,
    date: null,
    compression: null
};
JSZip.support = {
    arraybuffer: (function() {
        return typeof ArrayBuffer !== "undefined" && typeof Uint8Array !== "undefined";
    })(),
    nodebuffer: (function() {
        return typeof Buffer !== "undefined";
    })(),
    uint8array: (function() {
        return typeof Uint8Array !== "undefined";
    })(),
    blob: (function() {
        if (typeof ArrayBuffer === "undefined") {
            return false;
        }
        var buffer = new ArrayBuffer(0);
        try {
            return new Blob([buffer], {
                type: "application/zip"
            }).size === 0;
        } catch (e) {}
        try {
            var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;
            var builder = new BlobBuilder();
            builder.append(buffer);
            return builder.getBlob('application/zip').size === 0;
        } catch (e) {}
        return false;
    })()
};
JSZip.prototype = (function() {
    var textEncoder, textDecoder;
    if (JSZip.support.uint8array && typeof TextEncoder === "function" && typeof TextDecoder === "function") {
        textEncoder = new TextEncoder("utf-8");
        textDecoder = new TextDecoder("utf-8");
    }
    var getRawData = function(file) {
        if (file._data instanceof JSZip.CompressedObject) {
            file._data = file._data.getContent();
            file.options.binary = true;
            file.options.base64 = false;
            if (JSZip.utils.getTypeOf(file._data) === "uint8array") {
                var copy = file._data;
                file._data = new Uint8Array(copy.length);
                if (copy.length !== 0) {
                    file._data.set(copy, 0);
                }
            }
        }
        return file._data;
    };
    var getBinaryData = function(file) {
        var result = getRawData(file),
            type = JSZip.utils.getTypeOf(result);
        if (type === "string") {
            if (!file.options.binary) {
                if (textEncoder) {
                    return textEncoder.encode(result);
                }
                if (JSZip.support.nodebuffer) {
                    return new Buffer(result, "utf-8");
                }
            }
            return file.asBinary();
        }
        return result;
    };
    var dataToString = function(asUTF8) {
        var result = getRawData(this);
        if (result === null || typeof result === "undefined") {
            return "";
        }
        if (this.options.base64) {
            result = JSZip.base64.decode(result);
        }
        if (asUTF8 && this.options.binary) {
            result = JSZip.prototype.utf8decode(result);
        } else {
            result = JSZip.utils.transformTo("string", result);
        }
        if (!asUTF8 && !this.options.binary) {
            result = JSZip.prototype.utf8encode(result);
        }
        return result;
    };
    var ZipObject = function(name, data, options) {
        this.name = name;
        this._data = data;
        this.options = options;
    };
    ZipObject.prototype = {
        asText: function() {
            return dataToString.call(this, true);
        },
        asBinary: function() {
            return dataToString.call(this, false);
        },
        asNodeBuffer: function() {
            var result = getBinaryData(this);
            return JSZip.utils.transformTo("nodebuffer", result);
        },
        asUint8Array: function() {
            var result = getBinaryData(this);
            return JSZip.utils.transformTo("uint8array", result);
        },
        asArrayBuffer: function() {
            return this.asUint8Array().buffer;
        }
    };
    var decToHex = function(dec, bytes) {
        var hex = "",
            i;
        for (i = 0; i < bytes; i++) {
            hex += String.fromCharCode(dec & 0xff);
            dec = dec >>> 8;
        }
        return hex;
    };
    var extend = function() {
        var result = {},
            i, attr;
        for (i = 0; i < arguments.length; i++) {
            for (attr in arguments[i]) {
                if (arguments[i].hasOwnProperty(attr) && typeof result[attr] === "undefined") {
                    result[attr] = arguments[i][attr];
                }
            }
        }
        return result;
    };
    var prepareFileAttrs = function(o) {
        o = o || {};
        if (o.base64 === true && o.binary == null) {
            o.binary = true;
        }
        o = extend(o, JSZip.defaults);
        o.date = o.date || new Date();
        if (o.compression !== null) o.compression = o.compression.toUpperCase();
        return o;
    };
    var fileAdd = function(name, data, o) {
        var parent = parentFolder(name),
            dataType = JSZip.utils.getTypeOf(data);
        if (parent) {
            folderAdd.call(this, parent);
        }
        o = prepareFileAttrs(o);
        if (o.dir || data === null || typeof data === "undefined") {
            o.base64 = false;
            o.binary = false;
            data = null;
        } else if (dataType === "string") {
            if (o.binary && !o.base64) {
                if (o.optimizedBinaryString !== true) {
                    data = JSZip.utils.string2binary(data);
                }
            }
        } else {
            o.base64 = false;
            o.binary = true;
            if (!dataType && !(data instanceof JSZip.CompressedObject)) {
                throw new Error("The data of '" + name + "' is in an unsupported format !");
            }
            if (dataType === "arraybuffer") {
                data = JSZip.utils.transformTo("uint8array", data);
            }
        }
        var object = new ZipObject(name, data, o);
        this.files[name] = object;
        return object;
    };
    var parentFolder = function(path) {
        if (path.slice(-1) == '/') {
            path = path.substring(0, path.length - 1);
        }
        var lastSlash = path.lastIndexOf('/');
        return (lastSlash > 0) ? path.substring(0, lastSlash) : "";
    };
    var folderAdd = function(name) {
        if (name.slice(-1) != "/") {
            name += "/";
        }
        if (!this.files[name]) {
            fileAdd.call(this, name, null, {
                dir: true
            });
        }
        return this.files[name];
    };
    var generateCompressedObjectFrom = function(file, compression) {
        var result = new JSZip.CompressedObject(),
            content;
        if (file._data instanceof JSZip.CompressedObject) {
            result.uncompressedSize = file._data.uncompressedSize;
            result.crc32 = file._data.crc32;
            if (result.uncompressedSize === 0 || file.options.dir) {
                compression = JSZip.compressions['STORE'];
                result.compressedContent = "";
                result.crc32 = 0;
            } else if (file._data.compressionMethod === compression.magic) {
                result.compressedContent = file._data.getCompressedContent();
            } else {
                content = file._data.getContent();
                result.compressedContent = compression.compress(JSZip.utils.transformTo(compression.compressInputType, content));
            }
        } else {
            content = getBinaryData(file);
            if (!content || content.length === 0 || file.options.dir) {
                compression = JSZip.compressions['STORE'];
                content = "";
            }
            result.uncompressedSize = content.length;
            result.crc32 = this.crc32(content);
            result.compressedContent = compression.compress(JSZip.utils.transformTo(compression.compressInputType, content));
        }
        result.compressedSize = result.compressedContent.length;
        result.compressionMethod = compression.magic;
        return result;
    };
    var generateZipParts = function(name, file, compressedObject, offset) {
        var data = compressedObject.compressedContent,
            utfEncodedFileName = this.utf8encode(file.name),
            useUTF8 = utfEncodedFileName !== file.name,
            o = file.options,
            dosTime, dosDate;
        dosTime = o.date.getHours();
        dosTime = dosTime << 6;
        dosTime = dosTime | o.date.getMinutes();
        dosTime = dosTime << 5;
        dosTime = dosTime | o.date.getSeconds() / 2;
        dosDate = o.date.getFullYear() - 1980;
        dosDate = dosDate << 4;
        dosDate = dosDate | (o.date.getMonth() + 1);
        dosDate = dosDate << 5;
        dosDate = dosDate | o.date.getDate();
        var header = "";
        header += "\x0A\x00";
        header += useUTF8 ? "\x00\x08" : "\x00\x00";
        header += compressedObject.compressionMethod;
        header += decToHex(dosTime, 2);
        header += decToHex(dosDate, 2);
        header += decToHex(compressedObject.crc32, 4);
        header += decToHex(compressedObject.compressedSize, 4);
        header += decToHex(compressedObject.uncompressedSize, 4);
        header += decToHex(utfEncodedFileName.length, 2);
        header += "\x00\x00";
        var fileRecord = JSZip.signature.LOCAL_FILE_HEADER + header + utfEncodedFileName;
        var dirRecord = JSZip.signature.CENTRAL_FILE_HEADER + "\x14\x00" + header + "\x00\x00" + "\x00\x00" + "\x00\x00" + (file.options.dir === true ? "\x10\x00\x00\x00" : "\x00\x00\x00\x00") + decToHex(offset, 4) + utfEncodedFileName;
        return {
            fileRecord: fileRecord,
            dirRecord: dirRecord,
            compressedObject: compressedObject
        };
    };
    var StringWriter = function() {
        this.data = [];
    };
    StringWriter.prototype = {
        append: function(input) {
            input = JSZip.utils.transformTo("string", input);
            this.data.push(input);
        },
        finalize: function() {
            return this.data.join("");
        }
    };
    var Uint8ArrayWriter = function(length) {
        this.data = new Uint8Array(length);
        this.index = 0;
    };
    Uint8ArrayWriter.prototype = {
        append: function(input) {
            if (input.length !== 0) {
                input = JSZip.utils.transformTo("uint8array", input);
                this.data.set(input, this.index);
                this.index += input.length;
            }
        },
        finalize: function() {
            return this.data;
        }
    };
    return {
        load: function(stream, options) {
            throw new Error("Load method is not defined. Is the file jszip-load.js included ?");
        },
        filter: function(search) {
            var result = [],
                filename, relativePath, file, fileClone;
            for (filename in this.files) {
                if (!this.files.hasOwnProperty(filename)) {
                    continue;
                }
                file = this.files[filename];
                fileClone = new ZipObject(file.name, file._data, extend(file.options));
                relativePath = filename.slice(this.root.length, filename.length);
                if (filename.slice(0, this.root.length) === this.root && search(relativePath, fileClone)) {
                    result.push(fileClone);
                }
            }
            return result;
        },
        file: function(name, data, o) {
            if (arguments.length === 1) {
                if (JSZip.utils.isRegExp(name)) {
                    var regexp = name;
                    return this.filter(function(relativePath, file) {
                        return !file.options.dir && regexp.test(relativePath);
                    });
                } else {
                    return this.filter(function(relativePath, file) {
                        return !file.options.dir && relativePath === name;
                    })[0] || null;
                }
            } else {
                name = this.root + name;
                fileAdd.call(this, name, data, o);
            }
            return this;
        },
        folder: function(arg) {
            if (!arg) {
                return this;
            }
            if (JSZip.utils.isRegExp(arg)) {
                return this.filter(function(relativePath, file) {
                    return file.options.dir && arg.test(relativePath);
                });
            }
            var name = this.root + arg;
            var newFolder = folderAdd.call(this, name);
            var ret = this.clone();
            ret.root = newFolder.name;
            return ret;
        },
        remove: function(name) {
            name = this.root + name;
            var file = this.files[name];
            if (!file) {
                if (name.slice(-1) != "/") {
                    name += "/";
                }
                file = this.files[name];
            }
            if (file) {
                if (!file.options.dir) {
                    delete this.files[name];
                } else {
                    var kids = this.filter(function(relativePath, file) {
                        return file.name.slice(0, name.length) === name;
                    });
                    for (var i = 0; i < kids.length; i++) {
                        delete this.files[kids[i].name];
                    }
                }
            }
            return this;
        },
        generate: function(options) {
            options = extend(options || {}, {
                base64: true,
                compression: "STORE",
                type: "base64"
            });
            JSZip.utils.checkSupport(options.type);
            var zipData = [],
                localDirLength = 0,
                centralDirLength = 0,
                writer, i;
            for (var name in this.files) {
                if (!this.files.hasOwnProperty(name)) {
                    continue;
                }
                var file = this.files[name];
                var compressionName = file.options.compression || options.compression.toUpperCase();
                var compression = JSZip.compressions[compressionName];
                if (!compression) {
                    throw new Error(compressionName + " is not a valid compression method !");
                }
                var compressedObject = generateCompressedObjectFrom.call(this, file, compression);
                var zipPart = generateZipParts.call(this, name, file, compressedObject, localDirLength);
                localDirLength += zipPart.fileRecord.length + compressedObject.compressedSize;
                centralDirLength += zipPart.dirRecord.length;
                zipData.push(zipPart);
            }
            var dirEnd = "";
            dirEnd = JSZip.signature.CENTRAL_DIRECTORY_END + "\x00\x00" + "\x00\x00" + decToHex(zipData.length, 2) + decToHex(zipData.length, 2) + decToHex(centralDirLength, 4) + decToHex(localDirLength, 4) + "\x00\x00";
            switch (options.type.toLowerCase()) {
                case "uint8array":
                case "arraybuffer":
                case "blob":
                case "nodebuffer":
                    writer = new Uint8ArrayWriter(localDirLength + centralDirLength + dirEnd.length);
                    break;
                default:
                    writer = new StringWriter(localDirLength + centralDirLength + dirEnd.length);
                    break;
            }
            for (i = 0; i < zipData.length; i++) {
                writer.append(zipData[i].fileRecord);
                writer.append(zipData[i].compressedObject.compressedContent);
            }
            for (i = 0; i < zipData.length; i++) {
                writer.append(zipData[i].dirRecord);
            }
            writer.append(dirEnd);
            var zip = writer.finalize();
            switch (options.type.toLowerCase()) {
                case "uint8array":
                case "arraybuffer":
                case "nodebuffer":
                    return JSZip.utils.transformTo(options.type.toLowerCase(), zip);
                case "blob":
                    return JSZip.utils.arrayBuffer2Blob(JSZip.utils.transformTo("arraybuffer", zip));
                case "base64":
                    return (options.base64) ? JSZip.base64.encode(zip) : zip;
                default:
                    return zip;
            }
        },
        crc32: function crc32(input, crc) {
            if (typeof input === "undefined" || !input.length) {
                return 0;
            }
            var isArray = JSZip.utils.getTypeOf(input) !== "string";
            var table = [0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91, 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F, 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433, 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01, 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683, 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B, 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D];
            if (typeof(crc) == "undefined") {
                crc = 0;
            }
            var x = 0;
            var y = 0;
            var byte = 0;
            crc = crc ^ (-1);
            for (var i = 0, iTop = input.length; i < iTop; i++) {
                byte = isArray ? input[i] : input.charCodeAt(i);
                y = (crc ^ byte) & 0xFF;
                x = table[y];
                crc = (crc >>> 8) ^ x;
            }
            return crc ^ (-1);
        },
        clone: function() {
            var newObj = new JSZip();
            for (var i in this) {
                if (typeof this[i] !== "function") {
                    newObj[i] = this[i];
                }
            }
            return newObj;
        },
        utf8encode: function(string) {
            if (textEncoder) {
                var u8 = textEncoder.encode(string);
                return JSZip.utils.transformTo("string", u8);
            }
            if (JSZip.support.nodebuffer) {
                return JSZip.utils.transformTo("string", new Buffer(string, "utf-8"));
            }
            var result = [],
                resIndex = 0;
            for (var n = 0; n < string.length; n++) {
                var c = string.charCodeAt(n);
                if (c < 128) {
                    result[resIndex++] = String.fromCharCode(c);
                } else if ((c > 127) && (c < 2048)) {
                    result[resIndex++] = String.fromCharCode((c >> 6) | 192);
                    result[resIndex++] = String.fromCharCode((c & 63) | 128);
                } else {
                    result[resIndex++] = String.fromCharCode((c >> 12) | 224);
                    result[resIndex++] = String.fromCharCode(((c >> 6) & 63) | 128);
                    result[resIndex++] = String.fromCharCode((c & 63) | 128);
                }
            }
            return result.join("");
        },
        utf8decode: function(input) {
            var result = [],
                resIndex = 0;
            var type = JSZip.utils.getTypeOf(input);
            var isArray = type !== "string";
            var i = 0;
            var c = 0,
                c1 = 0,
                c2 = 0,
                c3 = 0;
            if (textDecoder) {
                return textDecoder.decode(JSZip.utils.transformTo("uint8array", input));
            }
            if (JSZip.support.nodebuffer) {
                return JSZip.utils.transformTo("nodebuffer", input).toString("utf-8");
            }
            while (i < input.length) {
                c = isArray ? input[i] : input.charCodeAt(i);
                if (c < 128) {
                    result[resIndex++] = String.fromCharCode(c);
                    i++;
                } else if ((c > 191) && (c < 224)) {
                    c2 = isArray ? input[i + 1] : input.charCodeAt(i + 1);
                    result[resIndex++] = String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                    i += 2;
                } else {
                    c2 = isArray ? input[i + 1] : input.charCodeAt(i + 1);
                    c3 = isArray ? input[i + 2] : input.charCodeAt(i + 2);
                    result[resIndex++] = String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                    i += 3;
                }
            }
            return result.join("");
        }
    };
}());
JSZip.compressions = {
    "STORE": {
        magic: "\x00\x00",
        compress: function(content) {
            return content;
        },
        uncompress: function(content) {
            return content;
        },
        compressInputType: null,
        uncompressInputType: null
    }
};
(function() {
    JSZip.utils = {
        string2binary: function(str) {
            var result = "";
            for (var i = 0; i < str.length; i++) {
                result += String.fromCharCode(str.charCodeAt(i) & 0xff);
            }
            return result;
        },
        string2Uint8Array: function(str) {
            return JSZip.utils.transformTo("uint8array", str);
        },
        uint8Array2String: function(array) {
            return JSZip.utils.transformTo("string", array);
        },
        arrayBuffer2Blob: function(buffer) {
            JSZip.utils.checkSupport("blob");
            try {
                return new Blob([buffer], {
                    type: "application/zip"
                });
            } catch (e) {}
            try {
                var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;
                var builder = new BlobBuilder();
                builder.append(buffer);
                return builder.getBlob('application/zip');
            } catch (e) {}
            throw new Error("Bug : can't construct the Blob.");
        },
        string2Blob: function(str) {
            var buffer = JSZip.utils.transformTo("arraybuffer", str);
            return JSZip.utils.arrayBuffer2Blob(buffer);
        }
    };

    function identity(input) {
        return input;
    }

    function stringToArrayLike(str, array) {
        for (var i = 0; i < str.length; ++i) {
            array[i] = str.charCodeAt(i) & 0xFF;
        }
        return array;
    }

    function arrayLikeToString(array) {
        var chunk = 65536;
        var result = [],
            len = array.length,
            type = JSZip.utils.getTypeOf(array),
            k = 0;
        var canUseApply = true;
        try {
            switch (type) {
                case "uint8array":
                    String.fromCharCode.apply(null, new Uint8Array(0));
                    break;
                case "nodebuffer":
                    String.fromCharCode.apply(null, new Buffer(0));
                    break;
            }
        } catch (e) {
            canUseApply = false;
        }
        if (!canUseApply) {
            var resultStr = "";
            for (var i = 0; i < array.length; i++) {
                resultStr += String.fromCharCode(array[i]);
            }
            return resultStr;
        }
        while (k < len && chunk > 1) {
            try {
                if (type === "array" || type === "nodebuffer") {
                    result.push(String.fromCharCode.apply(null, array.slice(k, Math.min(k + chunk, len))));
                } else {
                    result.push(String.fromCharCode.apply(null, array.subarray(k, Math.min(k + chunk, len))));
                }
                k += chunk;
            } catch (e) {
                chunk = Math.floor(chunk / 2);
            }
        }
        return result.join("");
    }

    function arrayLikeToArrayLike(arrayFrom, arrayTo) {
        for (var i = 0; i < arrayFrom.length; i++) {
            arrayTo[i] = arrayFrom[i];
        }
        return arrayTo;
    }
    var transform = {};
    transform["string"] = {
        "string": identity,
        "array": function(input) {
            return stringToArrayLike(input, new Array(input.length));
        },
        "arraybuffer": function(input) {
            return transform["string"]["uint8array"](input).buffer;
        },
        "uint8array": function(input) {
            return stringToArrayLike(input, new Uint8Array(input.length));
        },
        "nodebuffer": function(input) {
            return stringToArrayLike(input, new Buffer(input.length));
        }
    };
    transform["array"] = {
        "string": arrayLikeToString,
        "array": identity,
        "arraybuffer": function(input) {
            return (new Uint8Array(input)).buffer;
        },
        "uint8array": function(input) {
            return new Uint8Array(input);
        },
        "nodebuffer": function(input) {
            return new Buffer(input);
        }
    };
    transform["arraybuffer"] = {
        "string": function(input) {
            return arrayLikeToString(new Uint8Array(input));
        },
        "array": function(input) {
            return arrayLikeToArrayLike(new Uint8Array(input), new Array(input.byteLength));
        },
        "arraybuffer": identity,
        "uint8array": function(input) {
            return new Uint8Array(input);
        },
        "nodebuffer": function(input) {
            return new Buffer(new Uint8Array(input));
        }
    };
    transform["uint8array"] = {
        "string": arrayLikeToString,
        "array": function(input) {
            return arrayLikeToArrayLike(input, new Array(input.length));
        },
        "arraybuffer": function(input) {
            return input.buffer;
        },
        "uint8array": identity,
        "nodebuffer": function(input) {
            return new Buffer(input);
        }
    };
    transform["nodebuffer"] = {
        "string": arrayLikeToString,
        "array": function(input) {
            return arrayLikeToArrayLike(input, new Array(input.length));
        },
        "arraybuffer": function(input) {
            return transform["nodebuffer"]["uint8array"](input).buffer;
        },
        "uint8array": function(input) {
            return arrayLikeToArrayLike(input, new Uint8Array(input.length));
        },
        "nodebuffer": identity
    };
    JSZip.utils.transformTo = function(outputType, input) {
        if (!input) {
            input = "";
        }
        if (!outputType) {
            return input;
        }
        JSZip.utils.checkSupport(outputType);
        var inputType = JSZip.utils.getTypeOf(input);
        var result = transform[inputType][outputType](input);
        return result;
    };
    JSZip.utils.getTypeOf = function(input) {
        if (typeof input === "string") {
            return "string";
        }
        if (Object.prototype.toString.call(input) === "[object Array]") {
            return "array";
        }
        if (JSZip.support.nodebuffer && Buffer.isBuffer(input)) {
            return "nodebuffer";
        }
        if (JSZip.support.uint8array && input instanceof Uint8Array) {
            return "uint8array";
        }
        if (JSZip.support.arraybuffer && input instanceof ArrayBuffer) {
            return "arraybuffer";
        }
    };
    JSZip.utils.isRegExp = function(object) {
        return Object.prototype.toString.call(object) === "[object RegExp]";
    };
    JSZip.utils.checkSupport = function(type) {
        var supported = true;
        switch (type.toLowerCase()) {
            case "uint8array":
                supported = JSZip.support.uint8array;
                break;
            case "arraybuffer":
                supported = JSZip.support.arraybuffer;
                break;
            case "nodebuffer":
                supported = JSZip.support.nodebuffer;
                break;
            case "blob":
                supported = JSZip.support.blob;
                break;
        }
        if (!supported) {
            throw new Error(type + " is not supported by this browser");
        }
    };
})();
(function() {
    JSZip.CompressedObject = function() {
        this.compressedSize = 0;
        this.uncompressedSize = 0;
        this.crc32 = 0;
        this.compressionMethod = null;
        this.compressedContent = null;
    };
    JSZip.CompressedObject.prototype = {
        getContent: function() {
            return null;
        },
        getCompressedContent: function() {
            return null;
        }
    };
})();
JSZip.base64 = (function() {
    var _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
    return {
        encode: function(input, utf8) {
            var output = "";
            var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
            var i = 0;
            while (i < input.length) {
                chr1 = input.charCodeAt(i++);
                chr2 = input.charCodeAt(i++);
                chr3 = input.charCodeAt(i++);
                enc1 = chr1 >> 2;
                enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
                enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
                enc4 = chr3 & 63;
                if (isNaN(chr2)) {
                    enc3 = enc4 = 64;
                } else if (isNaN(chr3)) {
                    enc4 = 64;
                }
                output = output + _keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4);
            }
            return output;
        },
        decode: function(input, utf8) {
            var output = "";
            var chr1, chr2, chr3;
            var enc1, enc2, enc3, enc4;
            var i = 0;
            input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
            while (i < input.length) {
                enc1 = _keyStr.indexOf(input.charAt(i++));
                enc2 = _keyStr.indexOf(input.charAt(i++));
                enc3 = _keyStr.indexOf(input.charAt(i++));
                enc4 = _keyStr.indexOf(input.charAt(i++));
                chr1 = (enc1 << 2) | (enc2 >> 4);
                chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
                chr3 = ((enc3 & 3) << 6) | enc4;
                output = output + String.fromCharCode(chr1);
                if (enc3 != 64) {
                    output = output + String.fromCharCode(chr2);
                }
                if (enc4 != 64) {
                    output = output + String.fromCharCode(chr3);
                }
            }
            return output;
        }
    };
}());
                                    

#93 JavaScript::Eval (size: 2003, repeated: 1) - SHA256: d02e0925e533cd0f366565f2b9ffe60ba7794d84e65e682be719672e56ecedea

                                        var data_file1 = "/data/google-result.html";
var data_file2 = "/data/yahoo-result.html";
var data_file3 = "/data/bing-result.html";
var data_file4 = "/data/other-url-result.html";
var data_file5 = "/data/google-dup.html";
var data_file6 = "/data/yahoo-dup.html";
var data_file7 = "/data/bing-dup.html";
angular.module('LoadResource', []).factory('loadFile', function() {
    return function(url, callback) {
        var xhr = new XMLHttpRequest();
        console.log("In loadFile() : url = " + url);
        xhr.open('GET', url, true);
        xhr.responseType = 'arraybuffer';
        xhr.onload = function(e) {
            var uInt8Array = new Uint8Array(this.response);
            console.log("\t loaded number of bytes = " + uInt8Array.length + " from " + url);
            callback(this.response);
        };
        xhr.send();
    };
}).factory('loadFileSync', function() {
    return function(url) {
        var request = new XMLHttpRequest();
        request.open('GET', url, false);
        request.send();
        return (request.response);
    };
}).factory('loadResourceAsBase64', function() {
    var _arrayBufferToBase64 = function(buffer) {
        var binary = ''
        var bytes = new Uint8Array(buffer);
        var len = bytes.byteLength;
        for (var i = 0; i < len; i++) {
            binary += String.fromCharCode(bytes[i])
        }
        return window.btoa(binary);
    };
    return function(url, callback) {
        var request = new XMLHttpRequest();
        request.open('GET', url, true);
        request.responseType = 'arraybuffer';
        request.onload = function(e) {
            callback(_arrayBufferToBase64(this.response));
        };
        request.addEventListener("error", function() {
            callback('');
        }, false);
        request.send();
    };
}).factory('getUrlMock', ['loadFileSync', function(loadFileSync) {
    getUrlMock = function(url, callback) {
        var result;
        if (url.match(/^http(s)?:\/\/www.google.com/) != null) {
            result = url.length < 200 ? loadFileSync(data_file1) : loadFileSync(data_file5);
        } else if (url.match(/^http(s)?:\/\/search.yahoo.com/) != null) {
            result = url.length < 200 ? loadFileSync(data_file2) : loadFileSync(data_file6);
        } else if (url.match(/^http(s)?:\/\/www.bing.com/) != null) {
            result = url.length < 200 ? loadFileSync(data_file3) : loadFileSync(data_file7);
        } else
            result = loadFileSync(data_file4);
        if (typeof callback == 'function') callback(result);
        else
            return result;
    };
    return getUrlMock;
}]);
                                    

#94 JavaScript::Eval (size: 65944, repeated: 1) - SHA256: 2f10d8319d45b060e18bb7cf428eb491cc0b37b4254ff12365622379150aa4bd

                                        var jsPDF = function() {
    function f(g, d, e, h) {
        g = "undefined" === typeof g ? "p" : g.toString().toLowerCase();
        "undefined" === typeof d && (d = "mm");
        "undefined" === typeof e && (e = "a4");
        "undefined" === typeof h && "undefined" === typeof zpipe && (h = !1);
        var a = e.toString().toLowerCase(),
            p = [],
            j = 0,
            m = h;
        h = {
            a3: [841.89, 1190.55],
            a4: [595.28, 841.89],
            a5: [420.94, 595.28],
            letter: [612, 792],
            legal: [612, 1008]
        };
        var u = "0 g",
            c = 0,
            q = [],
            C = 2,
            F = !1,
            H = [],
            n = {},
            x = {},
            z = 16,
            A, y, s, r, I = {
                title: "",
                subject: "",
                author: "",
                keywords: "",
                creator: ""
            },
            w = 0,
            aa = 0,
            D = {},
            G = new k(D),
            B, v = function(c) {
                return c.toFixed(2)
            },
            V = function(c) {
                var e = c.toFixed(0);
                return 10 > c ? "0" + e : e
            },
            l = function(e) {
                F ? q[c].push(e) : (p.push(e), j += e.length + 1)
            },
            N = function() {
                C++;
                H[C] = j;
                l(C + " 0 obj");
                return C
            },
            Q = function(c) {
                l("stream");
                l(c);
                l("endstream")
            },
            J, ca, R, t = function(c, e) {
                var d;
                d = c;
                var j = e,
                    a, h, b, p, g, m;
                void 0 === j && (j = {});
                a = j.sourceEncoding ? a : "Unicode";
                b = j.outputEncoding;
                if ((j.autoencode || b) && n[A].metadata && n[A].metadata[a] && n[A].metadata[a].encoding)
                    if (a = n[A].metadata[a].encoding, !b && n[A].encoding && (b = n[A].encoding), !b && a.codePages && (b = a.codePages[0]), "string" === typeof b && (b = a[b]), b) {
                        g = !1;
                        p = [];
                        a = 0;
                        for (h = d.length; a < h; a++)(m = b[d.charCodeAt(a)]) ? p.push(String.fromCharCode(m)) : p.push(d[a]), p[a].charCodeAt(0) >> 8 && (g = !0);
                        d = p.join("")
                    }
                for (a = d.length; void 0 === g && 0 !== a;) d.charCodeAt(a - 1) >> 8 && (g = !0), a--;
                if (g) {
                    p = j.noBOM ? [] : [254, 255];
                    a = 0;
                    for (h = d.length; a < h; a++) {
                        m = d.charCodeAt(a);
                        j = m >> 8;
                        if (j >> 8) throw Error("Character at position " + a.toString(10) + " of string '" + d + "' exceeds 16bits. Cannot be encoded into UCS-2 BE");
                        p.push(j);
                        p.push(m - (j << 8))
                    }
                    d = String.fromCharCode.apply(void 0, p)
                }
                return d.replace(/\\/g, "\\\\").replace(/\(/g, "\\(").replace(/\)/g, "\\)")
            },
            W = function() {
                c++;
                F = !0;
                q[c] = [];
                l(v(0.200025 * r) + " w");
                l("0 G");
                0 !== w && l(w.toString(10) + " J");
                0 !== aa && l(aa.toString(10) + " j");
                G.publish("addPage", {
                    pageNumber: c
                })
            },
            E = function(c, a) {
                var d;
                void 0 === c && (c = n[A].fontName);
                void 0 === a && (a = n[A].fontStyle);
                try {
                    d = x[c][a]
                } catch (e) {
                    d = void 0
                }
                if (!d) throw Error("Unable to look up font label for font '" + c + "', '" + a + "'. Refer to getFontList() for available fonts.");
                return d
            },
            K = function() {
                F = !1;
                p = [];
                H = [];
                l("%PDF-1.3");
                J = s * r;
                ca = y * r;
                var a, d, e, b, h;
                for (a = 1; a <= c; a++) {
                    N();
                    l("<</Type /Page");
                    l("/Parent 1 0 R");
                    l("/Resources 2 0 R");
                    l("/Contents " + (C + 1) + " 0 R>>");
                    l("endobj");
                    d = q[a].join("\n");
                    N();
                    if (m) {
                        e = [];
                        for (b = 0; b < d.length; ++b) e[b] = d.charCodeAt(b);
                        h = adler32cs.from(d);
                        d = new Deflater(6);
                        d.append(new Uint8Array(e));
                        d = d.flush();
                        e = [new Uint8Array([120, 156]), new Uint8Array(d), new Uint8Array([h & 255, h >> 8 & 255, h >> 16 & 255, h >> 24 & 255])];
                        d = "";
                        for (b in e) e.hasOwnProperty(b) && (d += String.fromCharCode.apply(null, e[b]));
                        l("<</Length " + d.length + " /Filter [/FlateDecode]>>")
                    } else l("<</Length " + d.length + ">>");
                    Q(d);
                    l("endobj")
                }
                H[1] = j;
                l("1 0 obj");
                l("<</Type /Pages");
                R = "/Kids [";
                for (b = 0; b < c; b++) R += 3 + 2 * b + " 0 R ";
                l(R + "]");
                l("/Count " + c);
                l("/MediaBox [0 0 " + v(J) + " " + v(ca) + "]");
                l(">>");
                l("endobj");
                for (var g in n) n.hasOwnProperty(g) && (a = n[g], a.objectNumber = N(), l("<</BaseFont/" + a.PostScriptName + "/Type/Font"), "string" === typeof a.encoding && l("/Encoding/" + a.encoding), l("/Subtype/Type1>>"), l("endobj"));
                G.publish("putResources");
                H[2] = j;
                l("2 0 obj");
                l("<<");
                l("/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]");
                l("/Font <<");
                for (var f in n) n.hasOwnProperty(f) && l("/" + f + " " + n[f].objectNumber + " 0 R");
                l(">>");
                l("/XObject <<");
                G.publish("putXobjectDict");
                l(">>");
                l(">>");
                l("endobj");
                G.publish("postPutResources");
                N();
                l("<<");
                l("/Producer (jsPDF 20120619)");
                I.title && l("/Title (" + t(I.title) + ")");
                I.subject && l("/Subject (" + t(I.subject) + ")");
                I.author && l("/Author (" + t(I.author) + ")");
                I.keywords && l("/Keywords (" + t(I.keywords) + ")");
                I.creator && l("/Creator (" + t(I.creator) + ")");
                g = new Date;
                l("/CreationDate (D:" + [g.getFullYear(), V(g.getMonth() + 1), V(g.getDate()), V(g.getHours()), V(g.getMinutes()), V(g.getSeconds())].join("") + ")");
                l(">>");
                l("endobj");
                N();
                l("<<");
                l("/Type /Catalog");
                l("/Pages 1 0 R");
                l("/OpenAction [3 0 R /FitH null]");
                l("/PageLayout /OneColumn");
                G.publish("putCatalog");
                l(">>");
                l("endobj");
                g = j;
                l("xref");
                l("0 " + (C + 1));
                l("0000000000 65535 f ");
                for (f = 1; f <= C; f++) a = H[f].toFixed(0), a = 10 > a.length ? Array(11 - a.length).join("0") + a : a, l(a + " 00000 n ");
                l("trailer");
                l("<<");
                l("/Size " + (C + 1));
                l("/Root " + C + " 0 R");
                l("/Info " + (C - 1) + " 0 R");
                l(">>");
                l("startxref");
                l(g);
                l("%%EOF");
                F = !0;
                return p.join("\n")
            },
            Y = function(c) {
                var a = "S";
                if ("F" === c) a = "f";
                else if ("FD" === c || "DF" === c) a = "B";
                return a
            },
            Z = function(c, a) {
                var d, e, b, j;
                switch (c) {
                    case void 0:
                        return K();
                    case "save":
                        if (navigator.getUserMedia && (void 0 === window.URL || void 0 === window.URL.createObjectURL)) return D.output("dataurlnewwindow");
                        d = K();
                        e = d.length;
                        b = new Uint8Array(new ArrayBuffer(e));
                        for (j = 0; j < e; j++) b[j] = d.charCodeAt(j);
                        d = new Blob([b], {
                            type: "application/pdf"
                        });
                        saveAs(d, a);
                        break;
                    case "datauristring":
                    case "dataurlstring":
                        return "data:application/pdf;base64," + btoa(K());
                    case "datauri":
                    case "dataurl":
                        document.location.href = "data:application/pdf;base64," + btoa(K());
                        break;
                    case "dataurlnewwindow":
                        window.open("data:application/pdf;base64," + btoa(K()));
                        break;
                    default:
                        throw Error('Output type "' + c + '" is not supported.');
                }
            };
        if ("pt" === d) r = 1;
        else if ("mm" === d) r = 72 / 25.4;
        else if ("cm" === d) r = 72 / 2.54;
        else if ("in" === d) r = 72;
        else throw "Invalid unit: " + d;
        if (h.hasOwnProperty(a)) y = h[a][1] / r, s = h[a][0] / r;
        else try {
            y = e[1], s = e[0]
        } catch (M) {
            throw "Invalid format: " + e;
        }
        if ("p" === g || "portrait" === g) g = "p", s > y && (g = s, s = y, y = g);
        else if ("l" === g || "landscape" === g) g = "l", y > s && (g = s, s = y, y = g);
        else throw "Invalid orientation: " + g;
        D.internal = {
            pdfEscape: t,
            getStyle: Y,
            getFont: function() {
                return n[E.apply(D, arguments)]
            },
            getFontSize: function() {
                return z
            },
            btoa: btoa,
            write: function(c, a, d, e) {
                l(1 === arguments.length ? c : Array.prototype.join.call(arguments, " "))
            },
            getCoordinateString: function(c) {
                return v(c * r)
            },
            getVerticalCoordinateString: function(c) {
                return v((y - c) * r)
            },
            collections: {},
            newObject: N,
            putStream: Q,
            events: G,
            scaleFactor: r,
            pageSize: {
                width: s,
                height: y
            },
            output: function(c, a) {
                return Z(c, a)
            }
        };
        D.addPage = function() {
            W();
            return this
        };
        D.text = function(c, a, d, e) {
            var b, j;
            "number" === typeof c && (b = c, j = a, c = d, a = b, d = j);
            "string" === typeof c && c.match(/[\n\r]/) && (c = c.split(/\r\n|\r|\n/g));
            "undefined" === typeof e ? e = {
                noBOM: !0,
                autoencode: !0
            } : (void 0 === e.noBOM && (e.noBOM = !0), void 0 === e.autoencode && (e.autoencode = !0));
            if ("string" === typeof c) e = t(c, e);
            else if (c instanceof Array) {
                c = c.concat();
                for (b = c.length - 1; - 1 !== b; b--) c[b] = t(c[b], e);
                e = c.join(") Tj\nT* (")
            } else throw Error('Type of text must be string or Array. "' + c + '" is not recognized.');
            l("BT\n/" + A + " " + z + " Tf\n" + z + " TL\n" + u + "\n" + v(a * r) + " " + v((y - d) * r) + " Td\n(" + e + ") Tj\nET");
            return this
        };
        D.line = function(c, a, d, e) {
            l(v(c * r) + " " + v((y - a) * r) + " m " + v(d * r) + " " + v((y - e) * r) + " l S");
            return this
        };
        D.lines = function(c, a, d, e, b) {
            var j, g, h, p, m, f, q, u;
            "number" === typeof c && (j = c, g = a, c = d, a = j, d = g);
            b = Y(b);
            e = void 0 === e ? [1, 1] : e;
            l((a * r).toFixed(3) + " " + ((y - d) * r).toFixed(3) + " m ");
            j = e[0];
            e = e[1];
            g = c.length;
            u = d;
            for (d = 0; d < g; d++) h = c[d], 2 === h.length ? (a = h[0] * j + a, u = h[1] * e + u, l((a * r).toFixed(3) + " " + ((y - u) * r).toFixed(3) + " l")) : (p = h[0] * j + a, m = h[1] * e + u, f = h[2] * j + a, q = h[3] * e + u, a = h[4] * j + a, u = h[5] * e + u, l((p * r).toFixed(3) + " " + ((y - m) * r).toFixed(3) + " " + (f * r).toFixed(3) + " " + ((y - q) * r).toFixed(3) + " " + (a * r).toFixed(3) + " " + ((y - u) * r).toFixed(3) + " c"));
            l(b);
            return this
        };
        D.rect = function(c, a, d, e, b) {
            b = Y(b);
            l([v(c * r), v((y - a) * r), v(d * r), v(-e * r), "re", b].join(" "));
            return this
        };
        D.triangle = function(c, a, d, e, b, j, h) {
            this.lines([
                [d - c, e - a],
                [b - d, j - e],
                [c - b, a - j]
            ], c, a, [1, 1], h);
            return this
        };
        D.roundedRect = function(c, a, d, e, b, j, h) {
            var g = 4 / 3 * (Math.SQRT2 - 1);
            this.lines([
                [d - 2 * b, 0],
                [b * g, 0, b, j - j * g, b, j],
                [0, e - 2 * j],
                [0, j * g, -(b * g), j, -b, j],
                [-d + 2 * b, 0],
                [-(b * g), 0, -b, -(j * g), -b, -j],
                [0, -e + 2 * j],
                [0, -(j * g), b * g, -j, b, -j]
            ], c + b, a, [1, 1], h);
            return this
        };
        D.ellipse = function(c, a, d, e, b) {
            b = Y(b);
            var j = 4 / 3 * (Math.SQRT2 - 1) * d,
                g = 4 / 3 * (Math.SQRT2 - 1) * e;
            l([v((c + d) * r), v((y - a) * r), "m", v((c + d) * r), v((y - (a - g)) * r), v((c + j) * r), v((y - (a - e)) * r), v(c * r), v((y - (a - e)) * r), "c"].join(" "));
            l([v((c - j) * r), v((y - (a - e)) * r), v((c - d) * r), v((y - (a - g)) * r), v((c - d) * r), v((y - a) * r), "c"].join(" "));
            l([v((c - d) * r), v((y - (a + g)) * r), v((c - j) * r), v((y - (a + e)) * r), v(c * r), v((y - (a + e)) * r), "c"].join(" "));
            l([v((c + j) * r), v((y - (a + e)) * r), v((c + d) * r), v((y - (a + g)) * r), v((c + d) * r), v((y - a) * r), "c", b].join(" "));
            return this
        };
        D.circle = function(c, a, d, e) {
            return this.ellipse(c, a, d, d, e)
        };
        D.setProperties = function(c) {
            for (var a in I) I.hasOwnProperty(a) && c[a] && (I[a] = c[a]);
            return this
        };
        D.setFontSize = function(c) {
            z = c;
            return this
        };
        D.setFont = function(c, a) {
            A = E(c, a);
            return this
        };
        D.setFontStyle = D.setFontType = function(c) {
            A = E(void 0, c);
            return this
        };
        D.getFontList = function() {
            var c = {},
                a, d, e;
            for (a in x)
                if (x.hasOwnProperty(a))
                    for (d in c[a] = e = [], x[a]) x[a].hasOwnProperty(d) && e.push(d);
            return c
        };
        D.setLineWidth = function(c) {
            l((c * r).toFixed(2) + " w");
            return this
        };
        D.setDrawColor = function(c, a, d, e) {
            c = void 0 === a || void 0 === e && c === a === d ? "string" === typeof c ? c + " G" : v(c / 255) + " G" : void 0 === e ? "string" === typeof c ? [c, a, d, "RG"].join(" ") : [v(c / 255), v(a / 255), v(d / 255), "RG"].join(" ") : "string" === typeof c ? [c, a, d, e, "K"].join(" ") : [v(c), v(a), v(d), v(e), "K"].join(" ");
            l(c);
            return this
        };
        D.setFillColor = function(c, a, d, e) {
            c = void 0 === a || void 0 === e && c === a === d ? "string" === typeof c ? c + " g" : v(c / 255) + " g" : void 0 === e ? "string" === typeof c ? [c, a, d, "rg"].join(" ") : [v(c / 255), v(a / 255), v(d / 255), "rg"].join(" ") : "string" === typeof c ? [c, a, d, e, "k"].join(" ") : [v(c), v(a), v(d), v(e), "k"].join(" ");
            l(c);
            return this
        };
        D.setTextColor = function(c, a, d) {
            u = 0 === c && 0 === a && 0 === d || "undefined" === typeof a ? (c / 255).toFixed(3) + " g" : [(c / 255).toFixed(3), (a / 255).toFixed(3), (d / 255).toFixed(3), "rg"].join(" ");
            return this
        };
        D.CapJoinStyles = {
            "0": 0,
            butt: 0,
            but: 0,
            bevel: 0,
            1: 1,
            round: 1,
            rounded: 1,
            circle: 1,
            2: 2,
            projecting: 2,
            project: 2,
            square: 2,
            milter: 2
        };
        D.setLineCap = function(c) {
            var a = this.CapJoinStyles[c];
            if (void 0 === a) throw Error("Line cap style of '" + c + "' is not recognized. See or extend .CapJoinStyles property for valid styles");
            w = a;
            l(a.toString(10) + " J");
            return this
        };
        D.setLineJoin = function(c) {
            var a = this.CapJoinStyles[c];
            if (void 0 === a) throw Error("Line join style of '" + c + "' is not recognized. See or extend .CapJoinStyles property for valid styles");
            aa = a;
            l(a.toString(10) + " j");
            return this
        };
        D.output = Z;
        D.save = function(c) {
            D.output("save", c)
        };
        for (B in f.API)
            if (f.API.hasOwnProperty(B))
                if ("events" === B && f.API.events.length) {
                    g = G;
                    d = f.API.events;
                    h = a = e = void 0;
                    for (h = d.length - 1; - 1 !== h; h--) e = d[h][0], a = d[h][1], g.subscribe.apply(g, [e].concat("function" === typeof a ? [a] : a))
                } else D[B] = f.API[B];
        B = [
            ["Helvetica", "helvetica", "normal"],
            ["Helvetica-Bold", "helvetica", "bold"],
            ["Helvetica-Oblique", "helvetica", "italic"],
            ["Helvetica-BoldOblique", "helvetica", "bolditalic"],
            ["Courier", "courier", "normal"],
            ["Courier-Bold", "courier", "bold"],
            ["Courier-Oblique", "courier", "italic"],
            ["Courier-BoldOblique", "courier", "bolditalic"],
            ["Times-Roman", "times", "normal"],
            ["Times-Bold", "times", "bold"],
            ["Times-Italic", "times", "italic"],
            ["Times-BoldItalic", "times", "bolditalic"]
        ];
        g = 0;
        for (d = B.length; g < d; g++) {
            h = B[g][0];
            var T = B[g][1],
                a = B[g][2];
            e = "F" + (b(n) + 1).toString(10);
            h = n[e] = {
                id: e,
                PostScriptName: h,
                fontName: T,
                fontStyle: a,
                encoding: "StandardEncoding",
                metadata: {}
            };
            var ha = e;
            void 0 === x[T] && (x[T] = {});
            x[T][a] = ha;
            G.publish("addFont", h);
            a = e;
            e = B[g][0].split("-");
            h = e[0];
            e = e[1] || "";
            void 0 === x[h] && (x[h] = {});
            x[h][e] = a
        }
        G.publish("addFonts", {
            fonts: n,
            dictionary: x
        });
        A = "F1";
        W();
        G.publish("initialized");
        return D
    }
    "undefined" === typeof btoa && (window.btoa = function(b) {
        var d = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".split(""),
            e, h, a, p, j = 0,
            m = 0,
            f = "",
            f = [];
        do e = b.charCodeAt(j++), h = b.charCodeAt(j++), a = b.charCodeAt(j++), p = e << 16 | h << 8 | a, e = p >> 18 & 63, h = p >> 12 & 63, a = p >> 6 & 63, p &= 63, f[m++] = d[e] + d[h] + d[a] + d[p]; while (j < b.length);
        f = f.join("");
        b = b.length % 3;
        return (b ? f.slice(0, b - 3) : f) + "===".slice(b || 3)
    });
    "undefined" === typeof atob && (window.atob = function(b) {
        var d, e, h, a, p, j = 0,
            m = 0;
        a = "";
        var f = [];
        if (!b) return b;
        b += "";
        do d = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(b.charAt(j++)), e = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(b.charAt(j++)), a = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(b.charAt(j++)), p = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(b.charAt(j++)), h = d << 18 | e << 12 | a << 6 | p, d = h >> 16 & 255, e = h >> 8 & 255, h &= 255, 64 === a ? f[m++] = String.fromCharCode(d) : 64 === p ? f[m++] = String.fromCharCode(d, e) : f[m++] = String.fromCharCode(d, e, h); while (j < b.length);
        return a = f.join("")
    });
    var b = "function" === typeof Object.keys ? function(b) {
            return Object.keys(b).length
        } : function(b) {
            var d = 0,
                e;
            for (e in b) b.hasOwnProperty(e) && d++;
            return d
        },
        k = function(b) {
            this.topics = {};
            this.context = b;
            this.publish = function(d, b) {
                if (this.topics[d]) {
                    var h = this.topics[d],
                        a = [],
                        p, j, g, f, c = function() {};
                    b = Array.prototype.slice.call(arguments, 1);
                    j = 0;
                    for (g = h.length; j < g; j++) f = h[j], p = f[0], f[1] && (f[0] = c, a.push(j)), p.apply(this.context, b);
                    j = 0;
                    for (g = a.length; j < g; j++) h.splice(a[j], 1)
                }
            };
            this.subscribe = function(d, b, h) {
                this.topics[d] ? this.topics[d].push([b, h]) : this.topics[d] = [
                    [b, h]
                ];
                return {
                    topic: d,
                    callback: b
                }
            };
            this.unsubscribe = function(d) {
                if (this.topics[d.topic]) {
                    var b = this.topics[d.topic],
                        h, a;
                    h = 0;
                    for (a = b.length; h < a; h++) b[h][0] === d.callback && b.splice(h, 1)
                }
            }
        };
    f.API = {
        events: []
    };
    return f
}();
(function(f) {
    var b = function() {
            var b = this.internal.collections.addImage_images,
                d;
            for (d in b) {
                var e = b[d],
                    h = this.internal.newObject(),
                    a = this.internal.write,
                    p = this.internal.putStream;
                e.n = h;
                a("<</Type /XObject");
                a("/Subtype /Image");
                a("/Width " + e.w);
                a("/Height " + e.h);
                "Indexed" === e.cs ? a("/ColorSpace [/Indexed /DeviceRGB " + (e.pal.length / 3 - 1) + " " + (h + 1) + " 0 R]") : (a("/ColorSpace /" + e.cs), "DeviceCMYK" === e.cs && a("/Decode [1 0 1 0 1 0 1 0]"));
                a("/BitsPerComponent " + e.bpc);
                "f" in e && a("/Filter /" + e.f);
                "dp" in e && a("/DecodeParms <<" + e.dp + ">>");
                if ("trns" in e && e.trns.constructor == Array)
                    for (var j = "", f = 0; f < e.trns.length; f++) j += e[j][f] + " " + e.trns[f] + " ", a("/Mask [" + j + "]");
                "smask" in e && a("/SMask " + (h + 1) + " 0 R");
                a("/Length " + e.data.length + ">>");
                p(e.data);
                a("endobj")
            }
        },
        k = function() {
            var b = this.internal.collections.addImage_images,
                d = this.internal.write,
                e, h;
            for (h in b) e = b[h], d("/I" + e.i, e.n, "0", "R")
        };
    f.addImage = function(g, d, e, h, a, p) {
        if ("object" === typeof g && 1 === g.nodeType) {
            d = document.createElement("canvas");
            d.width = g.clientWidth;
            d.height = g.clientHeight;
            var j = d.getContext("2d");
            if (!j) throw "addImage requires canvas to be supported by browser.";
            j.drawImage(g, 0, 0, d.width, d.height);
            g = d.toDataURL("image/jpeg");
            d = "JPEG"
        }
        if ("JPEG" !== d.toUpperCase()) throw Error("addImage currently only supports format 'JPEG', not '" + d + "'");
        var f;
        d = this.internal.collections.addImage_images;
        var j = this.internal.getCoordinateString,
            u = this.internal.getVerticalCoordinateString;
        "data:image/jpeg;base64," === g.substring(0, 23) && (g = atob(g.replace("data:image/jpeg;base64,", "")));
        if (d)
            if (Object.keys) f = Object.keys(d).length;
            else {
                var c = d,
                    q = 0;
                for (f in c) c.hasOwnProperty(f) && q++;
                f = q
            } else f = 0, this.internal.collections.addImage_images = d = {}, this.internal.events.subscribe("putResources", b), this.internal.events.subscribe("putXobjectDict", k);
        a: {
            var c = g,
                C;
            if (255 === !c.charCodeAt(0) || 216 === !c.charCodeAt(1) || 255 === !c.charCodeAt(2) || 224 === !c.charCodeAt(3) || 74 === !c.charCodeAt(6) || 70 === !c.charCodeAt(7) || 73 === !c.charCodeAt(8) || 70 === !c.charCodeAt(9) || 0 === !c.charCodeAt(10)) throw Error("getJpegSize requires a binary jpeg file");
            C = 256 * c.charCodeAt(4) + c.charCodeAt(5);
            for (var q = 4, F = c.length; q < F;) {
                q += C;
                if (255 !== c.charCodeAt(q)) throw Error("getJpegSize could not find the size of the image");
                if (192 === c.charCodeAt(q + 1)) {
                    C = 256 * c.charCodeAt(q + 5) + c.charCodeAt(q + 6);
                    c = 256 * c.charCodeAt(q + 7) + c.charCodeAt(q + 8);
                    c = [c, C];
                    break a
                } else q += 2, C = 256 * c.charCodeAt(q) + c.charCodeAt(q + 1)
            }
            c = void 0
        }
        g = {
            w: c[0],
            h: c[1],
            cs: "DeviceRGB",
            bpc: 8,
            f: "DCTDecode",
            i: f,
            data: g
        };
        d[f] = g;
        !a && !p && (p = a = -96);
        0 > a && (a = -72 * g.w / a / this.internal.scaleFactor);
        0 > p && (p = -72 * g.h / p / this.internal.scaleFactor);
        0 === a && (a = p * g.w / g.h);
        0 === p && (p = a * g.h / g.w);
        this.internal.write("q", j(a), "0 0", j(p), j(e), u(h + p), "cm /I" + g.i, "Do Q");
        return this
    }
})(jsPDF.API);
(function(f) {
    function b(a, b, d, e) {
        this.pdf = a;
        this.x = b;
        this.y = d;
        this.settings = e;
        this.init();
        return this
    }

    function k(b) {
        var d = a[b];
        if (d) return d;
        d = {
            "xx-small": 9,
            "x-small": 11,
            small: 13,
            medium: 16,
            large: 19,
            "x-large": 23,
            "xx-large": 28,
            auto: 0
        }[b];
        if (void 0 !== d || (d = parseFloat(b))) return a[b] = d / 16;
        d = b.match(/([\d\.]+)(px)/);
        return 3 === d.length ? a[b] = parseFloat(d[1]) / 16 : a[b] = 1
    }

    function g(a, b, f) {
        var u = a.childNodes,
            c;
        c = $(a);
        a = {};
        for (var q, C = c.css("font-family").split(","), F = C.shift(); !q && F;) q = d[F.trim().toLowerCase()], F = C.shift();
        a["font-family"] = q || "times";
        a["font-style"] = h[c.css("font-style")] || "normal";
        q = e[c.css("font-weight")] || "normal";
        "bold" === q && (a["font-style"] = "normal" === a["font-style"] ? q : q + a["font-style"]);
        a["font-size"] = k(c.css("font-size")) || 1;
        a["line-height"] = k(c.css("line-height")) || 1;
        a.display = "inline" === c.css("display") ? "inline" : "block";
        "block" === a.display && (a["margin-top"] = k(c.css("margin-top")) || 0, a["margin-bottom"] = k(c.css("margin-bottom")) || 0, a["padding-top"] = k(c.css("padding-top")) || 0, a["padding-bottom"] = k(c.css("padding-bottom")) || 0);
        if (q = "block" === a.display) b.setBlockBoundary(), b.setBlockStyle(a);
        C = 0;
        for (F = u.length; C < F; C++)
            if (c = u[C], "object" === typeof c)
                if (1 === c.nodeType && "SCRIPT" != c.nodeName) {
                    var H = c,
                        n = b,
                        x = f,
                        z = !1,
                        A = void 0,
                        y = void 0,
                        s = x["#" + H.id];
                    if (s)
                        if ("function" === typeof s) z = s(H, n);
                        else {
                            A = 0;
                            for (y = s.length; !z && A !== y;) z = s[A](H, n), A++
                        }
                    s = x[H.nodeName];
                    if (!z && s)
                        if ("function" === typeof s) z = s(H, n);
                        else {
                            A = 0;
                            for (y = s.length; !z && A !== y;) z = s[A](H, n), A++
                        }
                    z || g(c, b, f)
                } else 3 === c.nodeType && b.addText(c.nodeValue, a);
        else "string" === typeof c && b.addText(c, a);
        q && b.setBlockBoundary()
    }
    String.prototype.trim || (String.prototype.trim = function() {
        return this.replace(/^\s+|\s+$/g, "")
    });
    String.prototype.trimLeft || (String.prototype.trimLeft = function() {
        return this.replace(/^\s+/g, "")
    });
    String.prototype.trimRight || (String.prototype.trimRight = function() {
        return this.replace(/\s+$/g, "")
    });
    b.prototype.init = function() {
        this.paragraph = {
            text: [],
            style: []
        };
        this.pdf.internal.write("q")
    };
    b.prototype.dispose = function() {
        this.pdf.internal.write("Q");
        return {
            x: this.x,
            y: this.y
        }
    };
    b.prototype.splitFragmentsIntoLines = function(a, b) {
        for (var d = this.pdf.internal.scaleFactor, e = {}, c, h, g, f, k, n = [], x = [n], z = 0, A = this.settings.width; a.length;)
            if (f = a.shift(), k = b.shift(), f)
                if (c = k["font-family"], h = k["font-style"], g = e[c + h], g || (g = this.pdf.internal.getFont(c, h).metadata.Unicode, e[c + h] = g), c = {
                        widths: g.widths,
                        kerning: g.kerning,
                        fontSize: 12 * k["font-size"],
                        textIndent: z
                    }, h = this.pdf.getStringUnitWidth(f, c) * c.fontSize / d, z + h > A) {
                    f = this.pdf.splitTextToSize(f, A, c);
                    for (n.push([f.shift(), k]); f.length;) n = [
                        [f.shift(), k]
                    ], x.push(n);
                    z = this.pdf.getStringUnitWidth(n[0][0], c) * c.fontSize / d
                } else n.push([f, k]), z += h;
        return x
    };
    b.prototype.RenderTextFragment = function(a, b) {
        var d = this.pdf.internal.getFont(b["font-family"], b["font-style"]);
        this.pdf.internal.write("/" + d.id, (12 * b["font-size"]).toFixed(2), "Tf", "(" + this.pdf.internal.pdfEscape(a) + ") Tj")
    };
    b.prototype.renderParagraph = function() {
        for (var a = this.paragraph.text, b = 0, d = a.length, e, c = !1, h = !1; !c && b !== d;)(e = a[b] = a[b].trimLeft()) && (c = !0), b++;
        for (b = d - 1; d && !h && -1 !== b;)(e = a[b] = a[b].trimRight()) && (h = !0), b--;
        c = /\s+$/g;
        h = !0;
        for (b = 0; b !== d; b++) e = a[b].replace(/\s+/g, " "), h && (e = e.trimLeft()), e && (h = c.test(e)), a[b] = e;
        b = this.paragraph.style;
        e = (d = this.paragraph.blockstyle) || {};
        this.paragraph = {
            text: [],
            style: [],
            blockstyle: {},
            priorblockstyle: d
        };
        if (a.join("").trim()) {
            a = this.splitFragmentsIntoLines(a, b);
            b = 12 / this.pdf.internal.scaleFactor;
            c = (Math.max((d["margin-top"] || 0) - (e["margin-bottom"] || 0), 0) + (d["padding-top"] || 0)) * b;
            d = ((d["margin-bottom"] || 0) + (d["padding-bottom"] || 0)) * b;
            e = this.pdf.internal.write;
            var g, f;
            this.y += c;
            for (e("q", "BT", this.pdf.internal.getCoordinateString(this.x), this.pdf.internal.getVerticalCoordinateString(this.y), "Td"); a.length;) {
                c = a.shift();
                g = h = 0;
                for (f = c.length; g !== f; g++) c[g][0].trim() && (h = Math.max(h, c[g][1]["line-height"], c[g][1]["font-size"]));
                e(0, (-12 * h).toFixed(2), "Td");
                g = 0;
                for (f = c.length; g !== f; g++) c[g][0] && this.RenderTextFragment(c[g][0], c[g][1]);
                this.y += h * b
            }
            e("ET", "Q");
            this.y += d
        }
    };
    b.prototype.setBlockBoundary = function() {
        this.renderParagraph()
    };
    b.prototype.setBlockStyle = function(a) {
        this.paragraph.blockstyle = a
    };
    b.prototype.addText = function(a, b) {
        this.paragraph.text.push(a);
        this.paragraph.style.push(b)
    };
    var d = {
            helvetica: "helvetica",
            "sans-serif": "helvetica",
            serif: "times",
            times: "times",
            "times new roman": "times",
            monospace: "courier",
            courier: "courier"
        },
        e = {
            100: "normal",
            200: "normal",
            300: "normal",
            400: "normal",
            500: "bold",
            600: "bold",
            700: "bold",
            800: "bold",
            900: "bold",
            normal: "normal",
            bold: "bold",
            bolder: "bold",
            lighter: "normal"
        },
        h = {
            normal: "normal",
            italic: "italic",
            oblique: "italic"
        },
        a = {
            normal: 1
        };
    f.fromHTML = function(a, d, e, h) {
        if ("string" === typeof a) {
            var c = "jsPDFhtmlText" + Date.now().toString() + (1E3 * Math.random()).toFixed(0);
            $('<div style="position: absolute !important;clip: rect(1px 1px 1px 1px); /* IE6, IE7 */clip: rect(1px, 1px, 1px, 1px);padding:0 !important;border:0 !important;height: 1px !important;width: 1px !important; top:auto;left:-100px;overflow: hidden;"><iframe style="height:1px;width:1px" name="' + c + '" /></div>').appendTo(document.body);
            a = $(window.frames[c].document.body).html(a)[0]
        }
        d = new b(this, d, e, h);
        g(a, d, h.elementHandlers);
        return d.dispose()
    }
})(jsPDF.API);
(function(f) {
    f.addSVG = function(b, f, g, d, e) {
        if (void 0 === f || void 0 === f) throw Error("addSVG needs values for 'x' and 'y'");
        var h = document.createElement("iframe"),
            a = document.createElement("style");
        a.type = "text/css";
        a.styleSheet ? a.styleSheet.cssText = ".jsPDF_sillysvg_iframe {display:none;position:absolute;}" : a.appendChild(document.createTextNode(".jsPDF_sillysvg_iframe {display:none;position:absolute;}"));
        document.getElementsByTagName("head")[0].appendChild(a);
        h.name = "childframe";
        h.setAttribute("width", 0);
        h.setAttribute("height", 0);
        h.setAttribute("frameborder", "0");
        h.setAttribute("scrolling", "no");
        h.setAttribute("seamless", "seamless");
        h.setAttribute("class", "jsPDF_sillysvg_iframe");
        document.body.appendChild(h);
        h = (h.contentWindow || h.contentDocument).document;
        h.write(b);
        h.close();
        h = h.getElementsByTagName("svg")[0];
        b = [1, 1];
        var a = parseFloat(h.getAttribute("width")),
            p = parseFloat(h.getAttribute("height"));
        a && p && (d && e ? b = [d / a, e / p] : d ? b = [d / a, d / a] : e && (b = [e / p, e / p]));
        h = h.childNodes;
        d = 0;
        for (e = h.length; d < e; d++)
            if (a = h[d], a.tagName && "PATH" === a.tagName.toUpperCase()) {
                for (var a = a.getAttribute("d").split(" "), p = parseFloat(a[1]), j = parseFloat(a[2]), m = [], u = 3, c = a.length; u < c;) "c" === a[u] ? (m.push([parseFloat(a[u + 1]), parseFloat(a[u + 2]), parseFloat(a[u + 3]), parseFloat(a[u + 4]), parseFloat(a[u + 5]), parseFloat(a[u + 6])]), u += 7) : "l" === a[u] ? (m.push([parseFloat(a[u + 1]), parseFloat(a[u + 2])]), u += 3) : u += 1;
                a = [p, j, m];
                a[0] = a[0] * b[0] + f;
                a[1] = a[1] * b[1] + g;
                this.lines.call(this, a[2], a[0], a[1], b)
            }
        return this
    }
})(jsPDF.API);
(function(f) {
    var b = f.getCharWidthsArray = function(b, e) {
            e || (e = {});
            var h = e.widths ? e.widths : this.internal.getFont().metadata.Unicode.widths,
                a = h.fof ? h.fof : 1,
                g = e.kerning ? e.kerning : this.internal.getFont().metadata.Unicode.kerning,
                f = g.fof ? g.fof : 1,
                m, k, c, q = 0,
                C = h[0] || a,
                F = [];
            m = 0;
            for (k = b.length; m < k; m++) c = b.charCodeAt(m), F.push((h[c] || C) / a + (g[c] && g[c][q] || 0) / f), q = c;
            return F
        },
        k = function(b) {
            for (var e = b.length, h = 0; e;) e--, h += b[e];
            return h
        };
    f.getStringUnitWidth = function(d, e) {
        return k(b.call(this, d, e))
    };
    var g = function(d, e, h) {
        h || (h = {});
        var a = b(" ", h)[0],
            g = d.split(" "),
            f = [];
        d = [f];
        var m = h.textIndent || 0,
            u = 0,
            c = 0,
            q, C, F, H;
        F = 0;
        for (H = g.length; F < H; F++) {
            q = g[F];
            C = b(q, h);
            c = k(C);
            if (m + u + c > e) {
                if (c > e) {
                    for (var c = q, n = C, x = e, z = [], A = 0, y = c.length, s = 0; A !== y && s + n[A] < e - (m + u);) s += n[A], A++;
                    z.push(c.slice(0, A));
                    m = A;
                    for (s = 0; A !== y;) s + n[A] > x && (z.push(c.slice(m, A)), s = 0, m = A), s += n[A], A++;
                    m !== A && z.push(c.slice(m, A));
                    m = z;
                    f.push(m.shift());
                    for (f = [m.pop()]; m.length;) d.push([m.shift()]);
                    c = k(C.slice(q.length - f[0].length))
                } else f = [q];
                d.push(f);
                m = c
            } else f.push(q), m += u + c;
            u = a
        }
        e = [];
        F = 0;
        for (H = d.length; F < H; F++) e.push(d[F].join(" "));
        return e
    };
    f.splitTextToSize = function(b, e, h) {
        h || (h = {});
        var a = h.fontSize || this.internal.getFontSize(),
            f;
        var j = h;
        f = {
            "0": 1
        };
        var m = {};
        !j.widths || !j.kerning ? (j = this.internal.getFont(j.fontName, j.fontStyle), f = j.metadata.Unicode ? {
            widths: j.metadata.Unicode.widths || f,
            kerning: j.metadata.Unicode.kerning || m
        } : {
            widths: f,
            kerning: m
        }) : f = {
            widths: j.widths,
            kerning: j.kerning
        };
        b = b.match(/[\n\r]/) ? b.split(/\r\n|\r|\n/g) : [b];
        e = 1 * this.internal.scaleFactor * e / a;
        f.textIndent = h.textIndent ? 1 * h.textIndent * this.internal.scaleFactor / a : 0;
        m = [];
        h = 0;
        for (a = b.length; h < a; h++) m = m.concat(g(b[h], e, f));
        return m
    }
})(jsPDF.API);
(function(f) {
    var b = function(b) {
            for (var d = {}, a = 0; 16 > a; a++) d["klmnopqrstuvwxyz" [a]] = "0123456789abcdef" [a];
            for (var g = {}, f = 1, m, k = g, c = [], q, C = "", F = "", H, n = b.length - 1, a = 1; a != n;) q = b[a], a += 1, "'" == q ? m ? (H = m.join(""), m = void 0) : m = [] : m ? m.push(q) : "{" == q ? (c.push([k, H]), k = {}, H = void 0) : "}" == q ? (q = c.pop(), q[0][q[1]] = k, H = void 0, k = q[0]) : "-" == q ? f = -1 : void 0 === H ? d.hasOwnProperty(q) ? (C += d[q], H = parseInt(C, 16) * f, f = 1, C = "") : C += q : d.hasOwnProperty(q) ? (F += d[q], k[H] = parseInt(F, 16) * f, f = 1, H = void 0, F = "") : F += q;
            return g
        },
        k = {
            codePages: ["WinAnsiEncoding"],
            WinAnsiEncoding: b("{19m8n201n9q201o9r201s9l201t9m201u8m201w9n201x9o201y8o202k8q202l8r202m9p202q8p20aw8k203k8t203t8v203u9v2cq8s212m9t15m8w15n9w2dw9s16k8u16l9u17s9z17x8y17y9y}")
        },
        g = {
            Unicode: {
                Courier: k,
                "Courier-Bold": k,
                "Courier-BoldOblique": k,
                "Courier-Oblique": k,
                Helvetica: k,
                "Helvetica-Bold": k,
                "Helvetica-BoldOblique": k,
                "Helvetica-Oblique": k,
                "Times-Roman": k,
                "Times-Bold": k,
                "Times-BoldItalic": k,
                "Times-Italic": k
            }
        },
        d = {
            Unicode: {
                "Courier-Oblique": b("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),
                "Times-BoldItalic": b("{'widths'{k3o2q4ycx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2r202m2n2n3m2o3m2p5n202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5n4l4m4m4m4n4m4o4s4p4m4q4m4r4s4s4y4t2r4u3m4v4m4w3x4x5t4y4s4z4s5k3x5l4s5m4m5n3r5o3x5p4s5q4m5r5t5s4m5t3x5u3x5v2l5w1w5x2l5y3t5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q2l6r3m6s3r6t1w6u1w6v3m6w1w6x4y6y3r6z3m7k3m7l3m7m2r7n2r7o1w7p3r7q2w7r4m7s3m7t2w7u2r7v2n7w1q7x2n7y3t202l3mcl4mal2ram3man3mao3map3mar3mas2lat4uau1uav3maw3way4uaz2lbk2sbl3t'fof'6obo2lbp3tbq3mbr1tbs2lbu1ybv3mbz3mck4m202k3mcm4mcn4mco4mcp4mcq5ycr4mcs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz2w203k6o212m6o2dw2l2cq2l3t3m3u2l17s3x19m3m}'kerning'{cl{4qu5kt5qt5rs17ss5ts}201s{201ss}201t{cks4lscmscnscoscpscls2wu2yu201ts}201x{2wu2yu}2k{201ts}2w{4qx5kx5ou5qx5rs17su5tu}2x{17su5tu5ou}2y{4qx5kx5ou5qx5rs17ss5ts}'fof'-6ofn{17sw5tw5ou5qw5rs}7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qs}3v{17su5tu5os5qs}7p{17su5tu}ck{4qu5kt5qt5rs17ss5ts}4l{4qu5kt5qt5rs17ss5ts}cm{4qu5kt5qt5rs17ss5ts}cn{4qu5kt5qt5rs17ss5ts}co{4qu5kt5qt5rs17ss5ts}cp{4qu5kt5qt5rs17ss5ts}6l{4qu5ou5qw5rt17su5tu}5q{ckuclucmucnucoucpu4lu}5r{ckuclucmucnucoucpu4lu}7q{cksclscmscnscoscps4ls}6p{4qu5ou5qw5rt17sw5tw}ek{4qu5ou5qw5rt17su5tu}el{4qu5ou5qw5rt17su5tu}em{4qu5ou5qw5rt17su5tu}en{4qu5ou5qw5rt17su5tu}eo{4qu5ou5qw5rt17su5tu}ep{4qu5ou5qw5rt17su5tu}es{17ss5ts5qs4qu}et{4qu5ou5qw5rt17sw5tw}eu{4qu5ou5qw5rt17ss5ts}ev{17ss5ts5qs4qu}6z{17sw5tw5ou5qw5rs}fm{17sw5tw5ou5qw5rs}7n{201ts}fo{17sw5tw5ou5qw5rs}fp{17sw5tw5ou5qw5rs}fq{17sw5tw5ou5qw5rs}7r{cksclscmscnscoscps4ls}fs{17sw5tw5ou5qw5rs}ft{17su5tu}fu{17su5tu}fv{17su5tu}fw{17su5tu}fz{cksclscmscnscoscps4ls}}}"),
                "Helvetica-Bold": b("{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}"),
                Courier: b("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),
                "Courier-BoldOblique": b("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),
                "Times-Bold": b("{'widths'{k3q2q5ncx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2l202m2n2n3m2o3m2p6o202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5x4l4s4m4m4n4s4o4s4p4m4q3x4r4y4s4y4t2r4u3m4v4y4w4m4x5y4y4s4z4y5k3x5l4y5m4s5n3r5o4m5p4s5q4s5r6o5s4s5t4s5u4m5v2l5w1w5x2l5y3u5z3m6k2l6l3m6m3r6n2w6o3r6p2w6q2l6r3m6s3r6t1w6u2l6v3r6w1w6x5n6y3r6z3m7k3r7l3r7m2w7n2r7o2l7p3r7q3m7r4s7s3m7t3m7u2w7v2r7w1q7x2r7y3o202l3mcl4sal2lam3man3mao3map3mar3mas2lat4uau1yav3maw3tay4uaz2lbk2sbl3t'fof'6obo2lbp3rbr1tbs2lbu2lbv3mbz3mck4s202k3mcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3rek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3m3u2l17s4s19m3m}'kerning'{cl{4qt5ks5ot5qy5rw17sv5tv}201t{cks4lscmscnscoscpscls4wv}2k{201ts}2w{4qu5ku7mu5os5qx5ru17su5tu}2x{17su5tu5ou5qs}2y{4qv5kv7mu5ot5qz5ru17su5tu}'fof'-6o7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qu}3v{17su5tu5os5qu}fu{17su5tu5ou5qu}7p{17su5tu5ou5qu}ck{4qt5ks5ot5qy5rw17sv5tv}4l{4qt5ks5ot5qy5rw17sv5tv}cm{4qt5ks5ot5qy5rw17sv5tv}cn{4qt5ks5ot5qy5rw17sv5tv}co{4qt5ks5ot5qy5rw17sv5tv}cp{4qt5ks5ot5qy5rw17sv5tv}6l{17st5tt5ou5qu}17s{ckuclucmucnucoucpu4lu4wu}5o{ckuclucmucnucoucpu4lu4wu}5q{ckzclzcmzcnzcozcpz4lz4wu}5r{ckxclxcmxcnxcoxcpx4lx4wu}5t{ckuclucmucnucoucpu4lu4wu}7q{ckuclucmucnucoucpu4lu}6p{17sw5tw5ou5qu}ek{17st5tt5qu}el{17st5tt5ou5qu}em{17st5tt5qu}en{17st5tt5qu}eo{17st5tt5qu}ep{17st5tt5ou5qu}es{17ss5ts5qu}et{17sw5tw5ou5qu}eu{17sw5tw5ou5qu}ev{17ss5ts5qu}6z{17sw5tw5ou5qu5rs}fm{17sw5tw5ou5qu5rs}fn{17sw5tw5ou5qu5rs}fo{17sw5tw5ou5qu5rs}fp{17sw5tw5ou5qu5rs}fq{17sw5tw5ou5qu5rs}7r{cktcltcmtcntcotcpt4lt5os}fs{17sw5tw5ou5qu5rs}ft{17su5tu5ou5qu}7m{5os}fv{17su5tu5ou5qu}fw{17su5tu5ou5qu}fz{cksclscmscnscoscps4ls}}}"),
                Helvetica: b("{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}"),
                "Helvetica-BoldOblique": b("{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}"),
                "Courier-Bold": b("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),
                "Times-Italic": b("{'widths'{k3n2q4ycx2l201n3m201o5t201s2l201t2l201u2l201w3r201x3r201y3r2k1t2l2l202m2n2n3m2o3m2p5n202q5t2r1p2s2l2t2l2u3m2v4n2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w4n3x4n3y4n3z3m4k5w4l3x4m3x4n4m4o4s4p3x4q3x4r4s4s4s4t2l4u2w4v4m4w3r4x5n4y4m4z4s5k3x5l4s5m3x5n3m5o3r5p4s5q3x5r5n5s3x5t3r5u3r5v2r5w1w5x2r5y2u5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q1w6r3m6s3m6t1w6u1w6v2w6w1w6x4s6y3m6z3m7k3m7l3m7m2r7n2r7o1w7p3m7q2w7r4m7s2w7t2w7u2r7v2s7w1v7x2s7y3q202l3mcl3xal2ram3man3mao3map3mar3mas2lat4wau1vav3maw4nay4waz2lbk2sbl4n'fof'6obo2lbp3mbq3obr1tbs2lbu1zbv3mbz3mck3x202k3mcm3xcn3xco3xcp3xcq5tcr4mcs3xct3xcu3xcv3xcw2l2m2ucy2lcz2ldl4mdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr4nfs3mft3mfu3mfv3mfw3mfz2w203k6o212m6m2dw2l2cq2l3t3m3u2l17s3r19m3m}'kerning'{cl{5kt4qw}201s{201sw}201t{201tw2wy2yy6q-t}201x{2wy2yy}2k{201tw}2w{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}2x{17ss5ts5os}2y{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}'fof'-6o6t{17ss5ts5qs}7t{5os}3v{5qs}7p{17su5tu5qs}ck{5kt4qw}4l{5kt4qw}cm{5kt4qw}cn{5kt4qw}co{5kt4qw}cp{5kt4qw}6l{4qs5ks5ou5qw5ru17su5tu}17s{2ks}5q{ckvclvcmvcnvcovcpv4lv}5r{ckuclucmucnucoucpu4lu}5t{2ks}6p{4qs5ks5ou5qw5ru17su5tu}ek{4qs5ks5ou5qw5ru17su5tu}el{4qs5ks5ou5qw5ru17su5tu}em{4qs5ks5ou5qw5ru17su5tu}en{4qs5ks5ou5qw5ru17su5tu}eo{4qs5ks5ou5qw5ru17su5tu}ep{4qs5ks5ou5qw5ru17su5tu}es{5ks5qs4qs}et{4qs5ks5ou5qw5ru17su5tu}eu{4qs5ks5qw5ru17su5tu}ev{5ks5qs4qs}ex{17ss5ts5qs}6z{4qv5ks5ou5qw5ru17su5tu}fm{4qv5ks5ou5qw5ru17su5tu}fn{4qv5ks5ou5qw5ru17su5tu}fo{4qv5ks5ou5qw5ru17su5tu}fp{4qv5ks5ou5qw5ru17su5tu}fq{4qv5ks5ou5qw5ru17su5tu}7r{5os}fs{4qv5ks5ou5qw5ru17su5tu}ft{17su5tu5qs}fu{17su5tu5qs}fv{17su5tu5qs}fw{17su5tu5qs}}}"),
                "Times-Roman": b("{'widths'{k3n2q4ycx2l201n3m201o6o201s2l201t2l201u2l201w2w201x2w201y2w2k1t2l2l202m2n2n3m2o3m2p5n202q6o2r1m2s2l2t2l2u3m2v3s2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v1w3w3s3x3s3y3s3z2w4k5w4l4s4m4m4n4m4o4s4p3x4q3r4r4s4s4s4t2l4u2r4v4s4w3x4x5t4y4s4z4s5k3r5l4s5m4m5n3r5o3x5p4s5q4s5r5y5s4s5t4s5u3x5v2l5w1w5x2l5y2z5z3m6k2l6l2w6m3m6n2w6o3m6p2w6q2l6r3m6s3m6t1w6u1w6v3m6w1w6x4y6y3m6z3m7k3m7l3m7m2l7n2r7o1w7p3m7q3m7r4s7s3m7t3m7u2w7v3k7w1o7x3k7y3q202l3mcl4sal2lam3man3mao3map3mar3mas2lat4wau1vav3maw3say4waz2lbk2sbl3s'fof'6obo2lbp3mbq2xbr1tbs2lbu1zbv3mbz2wck4s202k3mcm4scn4sco4scp4scq5tcr4mcs3xct3xcu3xcv3xcw2l2m2tcy2lcz2ldl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek2wel2wem2wen2weo2wep2weq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr3sfs3mft3mfu3mfv3mfw3mfz3m203k6o212m6m2dw2l2cq2l3t3m3u1w17s4s19m3m}'kerning'{cl{4qs5ku17sw5ou5qy5rw201ss5tw201ws}201s{201ss}201t{ckw4lwcmwcnwcowcpwclw4wu201ts}2k{201ts}2w{4qs5kw5os5qx5ru17sx5tx}2x{17sw5tw5ou5qu}2y{4qs5kw5os5qx5ru17sx5tx}'fof'-6o7t{ckuclucmucnucoucpu4lu5os5rs}3u{17su5tu5qs}3v{17su5tu5qs}7p{17sw5tw5qs}ck{4qs5ku17sw5ou5qy5rw201ss5tw201ws}4l{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cm{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cn{4qs5ku17sw5ou5qy5rw201ss5tw201ws}co{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cp{4qs5ku17sw5ou5qy5rw201ss5tw201ws}6l{17su5tu5os5qw5rs}17s{2ktclvcmvcnvcovcpv4lv4wuckv}5o{ckwclwcmwcnwcowcpw4lw4wu}5q{ckyclycmycnycoycpy4ly4wu5ms}5r{cktcltcmtcntcotcpt4lt4ws}5t{2ktclvcmvcnvcovcpv4lv4wuckv}7q{cksclscmscnscoscps4ls}6p{17su5tu5qw5rs}ek{5qs5rs}el{17su5tu5os5qw5rs}em{17su5tu5os5qs5rs}en{17su5qs5rs}eo{5qs5rs}ep{17su5tu5os5qw5rs}es{5qs}et{17su5tu5qw5rs}eu{17su5tu5qs5rs}ev{5qs}6z{17sv5tv5os5qx5rs}fm{5os5qt5rs}fn{17sv5tv5os5qx5rs}fo{17sv5tv5os5qx5rs}fp{5os5qt5rs}fq{5os5qt5rs}7r{ckuclucmucnucoucpu4lu5os}fs{17sv5tv5os5qx5rs}ft{17ss5ts5qs}fu{17sw5tw5qs}fv{17sw5tw5qs}fw{17ss5ts5qs}fz{ckuclucmucnucoucpu4lu5os5rs}}}"),
                "Helvetica-Oblique": b("{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}")
            }
        };
    f.events.push(["addFonts", function(b) {
        var h, a, f, j;
        for (a in b.fonts)
            if (b.fonts.hasOwnProperty(a)) {
                h = b.fonts[a];
                if (f = d.Unicode[h.PostScriptName]) j = h.metadata.Unicode ? h.metadata.Unicode : h.metadata.Unicode = {}, j.widths = f.widths, j.kerning = f.kerning;
                if (f = g.Unicode[h.PostScriptName]) j = h.metadata.Unicode ? h.metadata.Unicode : h.metadata.Unicode = {}, j.encoding = f, f.codePages && f.codePages.length && (h.encoding = f.codePages[0])
            }
    }])
})(jsPDF.API);
var BlobBuilder = BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder || function(f) {
        var b = function(a) {
                return Object.prototype.toString.call(a).match(/^\[object\s(.*)\]$/)[1]
            },
            k = function() {
                this.data = []
            },
            g = function(a, b, c) {
                this.data = a;
                this.size = a.length;
                this.type = b;
                this.encoding = c
            },
            d = k.prototype,
            e = g.prototype,
            h = f.FileReaderSync,
            a = function(a) {
                this.code = this[this.name = a]
            },
            p = "NOT_FOUND_ERR SECURITY_ERR ABORT_ERR NOT_READABLE_ERR ENCODING_ERR NO_MODIFICATION_ALLOWED_ERR INVALID_STATE_ERR SYNTAX_ERR".split(" "),
            j = p.length,
            m = f.URL || f.webkitURL || f,
            u = m.createObjectURL,
            c = m.revokeObjectURL,
            q = m,
            C = f.btoa,
            F = f.atob,
            H = !1,
            n = function(a) {
                H = !a
            },
            x = f.ArrayBuffer,
            z = f.Uint8Array;
        for (k.fake = e.fake = !0; j--;) a.prototype[p[j]] = j + 1;
        try {
            z && n.apply(0, new z(1))
        } catch (A) {}
        m.createObjectURL || (q = f.URL = {});
        q.createObjectURL = function(a) {
            var b = a.type;
            null === b && (b = "application/octet-stream");
            if (a instanceof g) return b = "data:" + b, "base64" === a.encoding ? b + ";base64," + a.data : "URI" === a.encoding ? b + "," + decodeURIComponent(a.data) : C ? b + ";base64," + C(a.data) : b + "," + encodeURIComponent(a.data);
            if (u) return u.call(m, a)
        };
        q.revokeObjectURL = function(a) {
            "data:" !== a.substring(0, 5) && c && c.call(m, a)
        };
        d.append = function(c) {
            var d = this.data;
            if (z && c instanceof x)
                if (H) d.push(String.fromCharCode.apply(String, new z(c)));
                else {
                    d = "";
                    c = new z(c);
                    for (var e = 0, f = c.length; e < f; e++) d += String.fromCharCode(c[e])
                } else if ("Blob" === b(c) || "File" === b(c))
                if (h) e = new h, d.push(e.readAsBinaryString(c));
                else throw new a("NOT_READABLE_ERR");
            else c instanceof g ? "base64" === c.encoding && F ? d.push(F(c.data)) : "URI" === c.encoding ? d.push(decodeURIComponent(c.data)) : "raw" === c.encoding && d.push(c.data) : ("string" !== typeof c && (c += ""), d.push(unescape(encodeURIComponent(c))))
        };
        d.getBlob = function(a) {
            arguments.length || (a = null);
            return new g(this.data.join(""), a, "raw")
        };
        d.toString = function() {
            return "[object BlobBuilder]"
        };
        e.slice = function(a, c, b) {
            var d = arguments.length;
            3 > d && (b = null);
            return new g(this.data.slice(a, 1 < d ? c : this.data.length), b, this.encoding)
        };
        e.toString = function() {
            return "[object Blob]"
        };
        return k
    }(self),
    saveAs = saveAs || navigator.msSaveBlob && navigator.msSaveBlob.bind(navigator) || function(f) {
        var b = f.document,
            k = f.URL || f.webkitURL || f,
            g = b.createElementNS("http://www.w3.org/1999/xhtml", "a"),
            d = "download" in g,
            e = f.webkitRequestFileSystem,
            h = f.requestFileSystem || e || f.mozRequestFileSystem,
            a = function(a) {
                (f.setImmediate || f.setTimeout)(function() {
                    throw a;
                }, 0)
            },
            p = 0,
            j = [],
            m = function(c, b, d) {
                b = [].concat(b);
                for (var e = b.length; e--;) {
                    var f = c["on" + b[e]];
                    if ("function" === typeof f) try {
                        f.call(c, d || c)
                    } catch (h) {
                        a(h)
                    }
                }
            },
            u = function(a, c) {
                var k = this,
                    u = a.type,
                    n = !1,
                    x, z, A = function() {
                        var c = (f.URL || f.webkitURL || f).createObjectURL(a);
                        j.push(c);
                        return c
                    },
                    y = function() {
                        m(k, ["writestart", "progress", "write", "writeend"])
                    },
                    s = function() {
                        if (n || !x) x = A(a);
                        z && (z.location.href = x);
                        k.readyState = k.DONE;
                        y()
                    },
                    r = function(a) {
                        return function() {
                            if (k.readyState !== k.DONE) return a.apply(this, arguments)
                        }
                    },
                    I = {
                        create: !0,
                        exclusive: !1
                    },
                    w;
                k.readyState = k.INIT;
                c || (c = "download");
                if (d && (x = A(a), g.href = x, g.download = c, w = b.createEvent("MouseEvents"), w.initMouseEvent("click", !0, !1, f, 0, 0, 0, 0, 0, !1, !1, !1, !1, 0, null), g.dispatchEvent(w))) {
                    k.readyState = k.DONE;
                    y();
                    return
                }
                f.chrome && (u && "application/octet-stream" !== u) && (w = a.slice || a.webkitSlice, a = w.call(a, 0, a.size, "application/octet-stream"), n = !0);
                e && "download" !== c && (c += ".download");
                z = "application/octet-stream" === u || e ? f : f.open();
                h ? (p += a.size, h(f.TEMPORARY, p, r(function(b) {
                    b.root.getDirectory("saved", I, r(function(b) {
                        var d = function() {
                            b.getFile(c, I, r(function(c) {
                                c.createWriter(r(function(b) {
                                    b.onwriteend = function(a) {
                                        z.location.href = c.toURL();
                                        j.push(c);
                                        k.readyState = k.DONE;
                                        m(k, "writeend", a)
                                    };
                                    b.onerror = function() {
                                        var a = b.error;
                                        a.code !== a.ABORT_ERR && s()
                                    };
                                    ["writestart", "progress", "write", "abort"].forEach(function(a) {
                                        b["on" + a] = k["on" + a]
                                    });
                                    b.write(a);
                                    k.abort = function() {
                                        b.abort();
                                        k.readyState = k.DONE
                                    };
                                    k.readyState = k.WRITING
                                }), s)
                            }), s)
                        };
                        b.getFile(c, {
                            create: !1
                        }, r(function(a) {
                            a.remove();
                            d()
                        }), r(function(a) {
                            a.code === a.NOT_FOUND_ERR ? d() : s()
                        }))
                    }), s)
                }), s)) : s()
            },
            c = u.prototype;
        c.abort = function() {
            this.readyState = this.DONE;
            m(this, "abort")
        };
        c.readyState = c.INIT = 0;
        c.WRITING = 1;
        c.DONE = 2;
        c.error = c.onwritestart = c.onprogress = c.onwrite = c.onabort = c.onerror = c.onwriteend = null;
        f.addEventListener("unload", function() {
            for (var a = j.length; a--;) {
                var c = j[a];
                "string" === typeof c ? k.revokeObjectURL(c) : c.remove()
            }
            j.length = 0
        }, !1);
        return function(a, c) {
            return new u(a, c)
        }
    }(self),
    MAX_BITS = 15,
    D_CODES = 30,
    BL_CODES = 19,
    LENGTH_CODES = 29,
    LITERALS = 256,
    L_CODES = LITERALS + 1 + LENGTH_CODES,
    HEAP_SIZE = 2 * L_CODES + 1,
    END_BLOCK = 256,
    MAX_BL_BITS = 7,
    REP_3_6 = 16,
    REPZ_3_10 = 17,
    REPZ_11_138 = 18,
    Buf_size = 16,
    Z_DEFAULT_COMPRESSION = -1,
    Z_FILTERED = 1,
    Z_HUFFMAN_ONLY = 2,
    Z_DEFAULT_STRATEGY = 0,
    Z_NO_FLUSH = 0,
    Z_PARTIAL_FLUSH = 1,
    Z_FULL_FLUSH = 3,
    Z_FINISH = 4,
    Z_OK = 0,
    Z_STREAM_END = 1,
    Z_NEED_DICT = 2,
    Z_STREAM_ERROR = -2,
    Z_DATA_ERROR = -3,
    Z_BUF_ERROR = -5,
    _dist_code = [0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 16, 17, 18, 18, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29];

function Tree() {
    var f = this;
    f.build_tree = function(b) {
        var k = f.dyn_tree,
            g = f.stat_desc.static_tree,
            d = f.stat_desc.elems,
            e, h = -1,
            a;
        b.heap_len = 0;
        b.heap_max = HEAP_SIZE;
        for (e = 0; e < d; e++) 0 !== k[2 * e] ? (b.heap[++b.heap_len] = h = e, b.depth[e] = 0) : k[2 * e + 1] = 0;
        for (; 2 > b.heap_len;) a = b.heap[++b.heap_len] = 2 > h ? ++h : 0, k[2 * a] = 1, b.depth[a] = 0, b.opt_len--, g && (b.static_len -= g[2 * a + 1]);
        f.max_code = h;
        for (e = Math.floor(b.heap_len / 2); 1 <= e; e--) b.pqdownheap(k, e);
        a = d;
        do e = b.heap[1], b.heap[1] = b.heap[b.heap_len--], b.pqdownheap(k, 1), g = b.heap[1], b.heap[--b.heap_max] = e, b.heap[--b.heap_max] = g, k[2 * a] = k[2 * e] + k[2 * g], b.depth[a] = Math.max(b.depth[e], b.depth[g]) + 1, k[2 * e + 1] = k[2 * g + 1] = a, b.heap[1] = a++, b.pqdownheap(k, 1); while (2 <= b.heap_len);
        b.heap[--b.heap_max] = b.heap[1];
        e = f.dyn_tree;
        for (var h = f.stat_desc.static_tree, p = f.stat_desc.extra_bits, j = f.stat_desc.extra_base, m = f.stat_desc.max_length, u, c, q = 0, d = 0; d <= MAX_BITS; d++) b.bl_count[d] = 0;
        e[2 * b.heap[b.heap_max] + 1] = 0;
        for (a = b.heap_max + 1; a < HEAP_SIZE; a++) g = b.heap[a], d = e[2 * e[2 * g + 1] + 1] + 1, d > m && (d = m, q++), e[2 * g + 1] = d, g > f.max_code || (b.bl_count[d] ++, u = 0, g >= j && (u = p[g - j]), c = e[2 * g], b.opt_len += c * (d + u), h && (b.static_len += c * (h[2 * g + 1] + u)));
        if (0 !== q) {
            do {
                for (d = m - 1; 0 === b.bl_count[d];) d--;
                b.bl_count[d] --;
                b.bl_count[d + 1] += 2;
                b.bl_count[m] --;
                q -= 2
            } while (0 < q);
            for (d = m; 0 !== d; d--)
                for (g = b.bl_count[d]; 0 !== g;) h = b.heap[--a], h > f.max_code || (e[2 * h + 1] != d && (b.opt_len += (d - e[2 * h + 1]) * e[2 * h], e[2 * h + 1] = d), g--)
        }
        e = f.max_code;
        a = b.bl_count;
        b = [];
        g = 0;
        for (d = 1; d <= MAX_BITS; d++) b[d] = g = g + a[d - 1] << 1;
        for (a = 0; a <= e; a++)
            if (p = k[2 * a + 1], 0 !== p) {
                g = k;
                d = 2 * a;
                h = b[p] ++;
                j = 0;
                do j |= h & 1, h >>>= 1, j <<= 1; while (0 < --p);
                g[d] = j >>> 1
            }
    }
}
Tree._length_code = [0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28];
Tree.base_length = [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 0];
Tree.base_dist = [0, 1, 2, 3, 4, 6, 8, 12, 16, 24, 32, 48, 64, 96, 128, 192, 256, 384, 512, 768, 1024, 1536, 2048, 3072, 4096, 6144, 8192, 12288, 16384, 24576];
Tree.d_code = function(f) {
    return 256 > f ? _dist_code[f] : _dist_code[256 + (f >>> 7)]
};
Tree.extra_lbits = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0];
Tree.extra_dbits = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13];
Tree.extra_blbits = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7];
Tree.bl_order = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];

function StaticTree(f, b, k, g, d) {
    this.static_tree = f;
    this.extra_bits = b;
    this.extra_base = k;
    this.elems = g;
    this.max_length = d
}
StaticTree.static_ltree = [12, 8, 140, 8, 76, 8, 204, 8, 44, 8, 172, 8, 108, 8, 236, 8, 28, 8, 156, 8, 92, 8, 220, 8, 60, 8, 188, 8, 124, 8, 252, 8, 2, 8, 130, 8, 66, 8, 194, 8, 34, 8, 162, 8, 98, 8, 226, 8, 18, 8, 146, 8, 82, 8, 210, 8, 50, 8, 178, 8, 114, 8, 242, 8, 10, 8, 138, 8, 74, 8, 202, 8, 42, 8, 170, 8, 106, 8, 234, 8, 26, 8, 154, 8, 90, 8, 218, 8, 58, 8, 186, 8, 122, 8, 250, 8, 6, 8, 134, 8, 70, 8, 198, 8, 38, 8, 166, 8, 102, 8, 230, 8, 22, 8, 150, 8, 86, 8, 214, 8, 54, 8, 182, 8, 118, 8, 246, 8, 14, 8, 142, 8, 78, 8, 206, 8, 46, 8, 174, 8, 110, 8, 238, 8, 30, 8, 158, 8, 94, 8, 222, 8, 62, 8, 190, 8, 126, 8, 254, 8, 1, 8, 129, 8, 65, 8, 193, 8, 33, 8, 161, 8, 97, 8, 225, 8, 17, 8, 145, 8, 81, 8, 209, 8, 49, 8, 177, 8, 113, 8, 241, 8, 9, 8, 137, 8, 73, 8, 201, 8, 41, 8, 169, 8, 105, 8, 233, 8, 25, 8, 153, 8, 89, 8, 217, 8, 57, 8, 185, 8, 121, 8, 249, 8, 5, 8, 133, 8, 69, 8, 197, 8, 37, 8, 165, 8, 101, 8, 229, 8, 21, 8, 149, 8, 85, 8, 213, 8, 53, 8, 181, 8, 117, 8, 245, 8, 13, 8, 141, 8, 77, 8, 205, 8, 45, 8, 173, 8, 109, 8, 237, 8, 29, 8, 157, 8, 93, 8, 221, 8, 61, 8, 189, 8, 125, 8, 253, 8, 19, 9, 275, 9, 147, 9, 403, 9, 83, 9, 339, 9, 211, 9, 467, 9, 51, 9, 307, 9, 179, 9, 435, 9, 115, 9, 371, 9, 243, 9, 499, 9, 11, 9, 267, 9, 139, 9, 395, 9, 75, 9, 331, 9, 203, 9, 459, 9, 43, 9, 299, 9, 171, 9, 427, 9, 107, 9, 363, 9, 235, 9, 491, 9, 27, 9, 283, 9, 155, 9, 411, 9, 91, 9, 347, 9, 219, 9, 475, 9, 59, 9, 315, 9, 187, 9, 443, 9, 123, 9, 379, 9, 251, 9, 507, 9, 7, 9, 263, 9, 135, 9, 391, 9, 71, 9, 327, 9, 199, 9, 455, 9, 39, 9, 295, 9, 167, 9, 423, 9, 103, 9, 359, 9, 231, 9, 487, 9, 23, 9, 279, 9, 151, 9, 407, 9, 87, 9, 343, 9, 215, 9, 471, 9, 55, 9, 311, 9, 183, 9, 439, 9, 119, 9, 375, 9, 247, 9, 503, 9, 15, 9, 271, 9, 143, 9, 399, 9, 79, 9, 335, 9, 207, 9, 463, 9, 47, 9, 303, 9, 175, 9, 431, 9, 111, 9, 367, 9, 239, 9, 495, 9, 31, 9, 287, 9, 159, 9, 415, 9, 95, 9, 351, 9, 223, 9, 479, 9, 63, 9, 319, 9, 191, 9, 447, 9, 127, 9, 383, 9, 255, 9, 511, 9, 0, 7, 64, 7, 32, 7, 96, 7, 16, 7, 80, 7, 48, 7, 112, 7, 8, 7, 72, 7, 40, 7, 104, 7, 24, 7, 88, 7, 56, 7, 120, 7, 4, 7, 68, 7, 36, 7, 100, 7, 20, 7, 84, 7, 52, 7, 116, 7, 3, 8, 131, 8, 67, 8, 195, 8, 35, 8, 163, 8, 99, 8, 227, 8];
StaticTree.static_dtree = [0, 5, 16, 5, 8, 5, 24, 5, 4, 5, 20, 5, 12, 5, 28, 5, 2, 5, 18, 5, 10, 5, 26, 5, 6, 5, 22, 5, 14, 5, 30, 5, 1, 5, 17, 5, 9, 5, 25, 5, 5, 5, 21, 5, 13, 5, 29, 5, 3, 5, 19, 5, 11, 5, 27, 5, 7, 5, 23, 5];
StaticTree.static_l_desc = new StaticTree(StaticTree.static_ltree, Tree.extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);
StaticTree.static_d_desc = new StaticTree(StaticTree.static_dtree, Tree.extra_dbits, 0, D_CODES, MAX_BITS);
StaticTree.static_bl_desc = new StaticTree(null, Tree.extra_blbits, 0, BL_CODES, MAX_BL_BITS);
var MAX_MEM_LEVEL = 9,
    DEF_MEM_LEVEL = 8;

function Config(f, b, k, g, d) {
    this.good_length = f;
    this.max_lazy = b;
    this.nice_length = k;
    this.max_chain = g;
    this.func = d
}
var STORED = 0,
    FAST = 1,
    SLOW = 2,
    config_table = [new Config(0, 0, 0, 0, STORED), new Config(4, 4, 8, 4, FAST), new Config(4, 5, 16, 8, FAST), new Config(4, 6, 32, 32, FAST), new Config(4, 4, 16, 16, SLOW), new Config(8, 16, 32, 32, SLOW), new Config(8, 16, 128, 128, SLOW), new Config(8, 32, 128, 256, SLOW), new Config(32, 128, 258, 1024, SLOW), new Config(32, 258, 258, 4096, SLOW)],
    z_errmsg = "need dictionary;stream end;;;stream error;data error;;buffer error;;".split(";"),
    NeedMore = 0,
    BlockDone = 1,
    FinishStarted = 2,
    FinishDone = 3,
    PRESET_DICT = 32,
    INIT_STATE = 42,
    BUSY_STATE = 113,
    FINISH_STATE = 666,
    Z_DEFLATED = 8,
    STORED_BLOCK = 0,
    STATIC_TREES = 1,
    DYN_TREES = 2,
    MIN_MATCH = 3,
    MAX_MATCH = 258,
    MIN_LOOKAHEAD = MAX_MATCH + MIN_MATCH + 1;

function smaller(f, b, k, g) {
    var d = f[2 * b];
    f = f[2 * k];
    return d < f || d == f && g[b] <= g[k]
}

function Deflate() {
    function f() {
        var a;
        for (a = 0; a < L_CODES; a++) U[2 * a] = 0;
        for (a = 0; a < D_CODES; a++) X[2 * a] = 0;
        for (a = 0; a < BL_CODES; a++) O[2 * a] = 0;
        U[2 * END_BLOCK] = 1;
        S = la = n.opt_len = n.static_len = 0
    }

    function b(a, c) {
        var b, d = -1,
            e, f = a[1],
            h = 0,
            g = 7,
            j = 4;
        0 === f && (g = 138, j = 3);
        a[2 * (c + 1) + 1] = 65535;
        for (b = 0; b <= c; b++) e = f, f = a[2 * (b + 1) + 1], ++h < g && e == f || (h < j ? O[2 * e] += h : 0 !== e ? (e != d && O[2 * e] ++, O[2 * REP_3_6] ++) : 10 >= h ? O[2 * REPZ_3_10] ++ : O[2 * REPZ_11_138] ++, h = 0, d = e, 0 === f ? (g = 138, j = 3) : e == f ? (g = 6, j = 3) : (g = 7, j = 4))
    }

    function k(a) {
        n.pending_buf[n.pending++] = a
    }

    function g(a) {
        k(a & 255);
        k(a >>> 8 & 255)
    }

    function d(a, c) {
        L > Buf_size - c ? (P |= a << L & 65535, g(P), P = a >>> Buf_size - L, L += c - Buf_size) : (P |= a << L & 65535, L += c)
    }

    function e(a, c) {
        var b = 2 * a;
        d(c[b] & 65535, c[b + 1] & 65535)
    }

    function h(a, c) {
        var b, f = -1,
            h, g = a[1],
            j = 0,
            k = 7,
            l = 4;
        0 === g && (k = 138, l = 3);
        for (b = 0; b <= c; b++)
            if (h = g, g = a[2 * (b + 1) + 1], !(++j < k && h == g)) {
                if (j < l) {
                    do e(h, O); while (0 !== --j)
                } else 0 !== h ? (h != f && (e(h, O), j--), e(REP_3_6, O), d(j - 3, 2)) : 10 >= j ? (e(REPZ_3_10, O), d(j - 3, 3)) : (e(REPZ_11_138, O), d(j - 11, 7));
                j = 0;
                f = h;
                0 === g ? (k = 138, l = 3) : h == g ? (k = 6, l = 3) : (k = 7, l = 4)
            }
    }

    function a() {
        16 == L ? (g(P), L = P = 0) : 8 <= L && (k(P & 255), P >>>= 8, L -= 8)
    }

    function p(a, c) {
        var b, d, e;
        n.pending_buf[fa + 2 * S] = a >>> 8 & 255;
        n.pending_buf[fa + 2 * S + 1] = a & 255;
        n.pending_buf[ka + S] = c & 255;
        S++;
        0 === a ? U[2 * c] ++ : (la++, a--, U[2 * (Tree._length_code[c] + LITERALS + 1)] ++, X[2 * Tree.d_code(a)] ++);
        if (0 === (S & 8191) && 2 < M) {
            b = 8 * S;
            d = t - Q;
            for (e = 0; e < D_CODES; e++) b += X[2 * e] * (5 + Tree.extra_dbits[e]);
            if (la < Math.floor(S / 2) && b >>> 3 < Math.floor(d / 2)) return !0
        }
        return S == ba - 1
    }

    function j(a, c) {
        var b, f, h = 0,
            g, j;
        if (0 !== S) {
            do b = n.pending_buf[fa + 2 * h] << 8 & 65280 | n.pending_buf[fa + 2 * h + 1] & 255, f = n.pending_buf[ka + h] & 255, h++, 0 === b ? e(f, a) : (g = Tree._length_code[f], e(g + LITERALS + 1, a), j = Tree.extra_lbits[g], 0 !== j && (f -= Tree.base_length[g], d(f, j)), b--, g = Tree.d_code(b), e(g, c), j = Tree.extra_dbits[g], 0 !== j && (b -= Tree.base_dist[g], d(b, j))); while (h < S)
        }
        e(END_BLOCK, a);
        ga = a[2 * END_BLOCK + 1]
    }

    function m() {
        8 < L ? g(P) : 0 < L && k(P & 255);
        L = P = 0
    }

    function u(a, c, b) {
        d((STORED_BLOCK << 1) + (b ? 1 : 0), 3);
        m();
        ga = 8;
        g(c);
        g(~c);
        n.pending_buf.set(w.subarray(a, a + c), n.pending);
        n.pending += c
    }

    function c(a) {
        var c = 0 <= Q ? Q : -1,
            e = t - Q,
            g, k, l = 0;
        if (0 < M) {
            da.build_tree(n);
            ea.build_tree(n);
            b(U, da.max_code);
            b(X, ea.max_code);
            ja.build_tree(n);
            for (l = BL_CODES - 1; 3 <= l && 0 === O[2 * Tree.bl_order[l] + 1]; l--);
            n.opt_len += 3 * (l + 1) + 14;
            g = n.opt_len + 3 + 7 >>> 3;
            k = n.static_len + 3 + 7 >>> 3;
            k <= g && (g = k)
        } else g = k = e + 5;
        if (e + 4 <= g && -1 != c) u(c, e, a);
        else if (k == g) d((STATIC_TREES << 1) + (a ? 1 : 0), 3), j(StaticTree.static_ltree, StaticTree.static_dtree);
        else {
            d((DYN_TREES << 1) + (a ? 1 : 0), 3);
            c = da.max_code + 1;
            e = ea.max_code + 1;
            l += 1;
            d(c - 257, 5);
            d(e - 1, 5);
            d(l - 4, 4);
            for (g = 0; g < l; g++) d(O[2 * Tree.bl_order[g] + 1], 3);
            h(U, c - 1);
            h(X, e - 1);
            j(U, X)
        }
        f();
        a && m();
        Q = t;
        x.flush_pending()
    }

    function q() {
        var a, c, b, d;
        do {
            d = aa - E - t;
            if (0 === d && 0 === t && 0 === E) d = s;
            else if (-1 == d) d--;
            else if (t >= s + s - MIN_LOOKAHEAD) {
                w.set(w.subarray(s, s + s), 0);
                W -= s;
                t -= s;
                Q -= s;
                b = a = v;
                do c = G[--b] & 65535, G[b] = c >= s ? c - s : 0; while (0 !== --a);
                b = a = s;
                do c = D[--b] & 65535, D[b] = c >= s ? c - s : 0;
                while (0 !== --a);
                d += s
            }
            if (0 === x.avail_in) break;
            a = x.read_buf(w, t + E, d);
            E += a;
            E >= MIN_MATCH && (B = w[t] & 255, B = (B << N ^ w[t + 1] & 255) & l)
        } while (E < MIN_LOOKAHEAD && 0 !== x.avail_in)
    }

    function C(a) {
        var b = 65535,
            d;
        for (b > A - 5 && (b = A - 5);;) {
            if (1 >= E) {
                q();
                if (0 === E && a == Z_NO_FLUSH) return NeedMore;
                if (0 === E) break
            }
            t += E;
            E = 0;
            d = Q + b;
            if (0 === t || t >= d)
                if (E = t - d, t = d, c(!1), 0 === x.avail_out) return NeedMore;
            if (t - Q >= s - MIN_LOOKAHEAD && (c(!1), 0 === x.avail_out)) return NeedMore
        }
        c(a == Z_FINISH);
        return 0 === x.avail_out ? a == Z_FINISH ? FinishStarted : NeedMore : a == Z_FINISH ? FinishDone : BlockDone
    }

    function F(a) {
        var c = Y,
            b = t,
            d, e = K,
            g = t > s - MIN_LOOKAHEAD ? t - (s - MIN_LOOKAHEAD) : 0,
            f = ia,
            h = I,
            j = t + MAX_MATCH,
            k = w[b + e - 1],
            l = w[b + e];
        K >= ha && (c >>= 2);
        f > E && (f = E);
        do
            if (d = a, !(w[d + e] != l || w[d + e - 1] != k || w[d] != w[b] || w[++d] != w[b + 1])) {
                b += 2;
                d++;
                do; while (w[++b] == w[++d] && w[++b] == w[++d] && w[++b] == w[++d] && w[++b] == w[++d] && w[++b] == w[++d] && w[++b] == w[++d] && w[++b] == w[++d] && w[++b] == w[++d] && b < j);
                d = MAX_MATCH - (j - b);
                b = j - MAX_MATCH;
                if (d > e) {
                    W = a;
                    e = d;
                    if (d >= f) break;
                    k = w[b + e - 1];
                    l = w[b + e]
                }
            }
        while ((a = D[a & h] & 65535) > g && 0 !== --c);
        return e <= E ? e : E
    }

    function H(a) {
        for (var b = 0, d, e;;) {
            if (E < MIN_LOOKAHEAD) {
                q();
                if (E < MIN_LOOKAHEAD && a == Z_NO_FLUSH) return NeedMore;
                if (0 === E) break
            }
            E >= MIN_MATCH && (B = (B << N ^ w[t + (MIN_MATCH - 1)] & 255) & l, b = G[B] & 65535, D[t & I] = G[B], G[B] = t);
            K = J;
            ca = W;
            J = MIN_MATCH - 1;
            if (0 !== b && (K < Z && (t - b & 65535) <= s - MIN_LOOKAHEAD) && (T != Z_HUFFMAN_ONLY && (J = F(b)), 5 >= J && (T == Z_FILTERED || J == MIN_MATCH && 4096 < t - W))) J = MIN_MATCH - 1;
            if (K >= MIN_MATCH && J <= K) {
                e = t + E - MIN_MATCH;
                d = p(t - 1 - ca, K - MIN_MATCH);
                E -= K - 1;
                K -= 2;
                do ++t <= e && (B = (B << N ^ w[t + (MIN_MATCH - 1)] & 255) & l, b = G[B] & 65535, D[t & I] = G[B], G[B] = t); while (0 !== --K);
                R = 0;
                J = MIN_MATCH - 1;
                t++;
                if (d && (c(!1), 0 === x.avail_out)) return NeedMore
            } else if (0 !== R) {
                if ((d = p(0, w[t - 1] & 255)) && c(!1), t++, E--, 0 === x.avail_out) return NeedMore
            } else R = 1, t++, E--
        }
        0 !== R && (p(0, w[t - 1] & 255), R = 0);
        c(a == Z_FINISH);
        return 0 === x.avail_out ? a == Z_FINISH ? FinishStarted : NeedMore : a == Z_FINISH ? FinishDone : BlockDone
    }
    var n = this,
        x, z, A, y, s, r, I, w, aa, D, G, B, v, V, l, N, Q, J, ca, R, t, W, E, K, Y, Z, M, T, ha, ia, U, X, O, da = new Tree,
        ea = new Tree,
        ja = new Tree;
    n.depth = [];
    var ka, ba, S, fa, la, ga, P, L;
    n.bl_count = [];
    n.heap = [];
    U = [];
    X = [];
    O = [];
    n.pqdownheap = function(a, b) {
        for (var c = n.heap, d = c[b], e = b << 1; e <= n.heap_len;) {
            e < n.heap_len && smaller(a, c[e + 1], c[e], n.depth) && e++;
            if (smaller(a, d, c[e], n.depth)) break;
            c[b] = c[e];
            b = e;
            e <<= 1
        }
        c[b] = d
    };
    n.deflateInit = function(a, b, c, d, e, g) {
        d || (d = Z_DEFLATED);
        e || (e = DEF_MEM_LEVEL);
        g || (g = Z_DEFAULT_STRATEGY);
        a.msg = null;
        b == Z_DEFAULT_COMPRESSION && (b = 6);
        if (1 > e || e > MAX_MEM_LEVEL || d != Z_DEFLATED || 9 > c || 15 < c || 0 > b || 9 < b || 0 > g || g > Z_HUFFMAN_ONLY) return Z_STREAM_ERROR;
        a.dstate = n;
        r = c;
        s = 1 << r;
        I = s - 1;
        V = e + 7;
        v = 1 << V;
        l = v - 1;
        N = Math.floor((V + MIN_MATCH - 1) / MIN_MATCH);
        w = new Uint8Array(2 * s);
        D = [];
        G = [];
        ba = 1 << e + 6;
        n.pending_buf = new Uint8Array(4 * ba);
        A = 4 * ba;
        fa = Math.floor(ba / 2);
        ka = 3 * ba;
        M = b;
        T = g;
        a.total_in = a.total_out = 0;
        a.msg = null;
        n.pending = 0;
        n.pending_out = 0;
        z = BUSY_STATE;
        y = Z_NO_FLUSH;
        da.dyn_tree = U;
        da.stat_desc = StaticTree.static_l_desc;
        ea.dyn_tree = X;
        ea.stat_desc = StaticTree.static_d_desc;
        ja.dyn_tree = O;
        ja.stat_desc = StaticTree.static_bl_desc;
        L = P = 0;
        ga = 8;
        f();
        aa = 2 * s;
        for (a = G[v - 1] = 0; a < v - 1; a++) G[a] = 0;
        Z = config_table[M].max_lazy;
        ha = config_table[M].good_length;
        ia = config_table[M].nice_length;
        Y = config_table[M].max_chain;
        E = Q = t = 0;
        J = K = MIN_MATCH - 1;
        B = R = 0;
        return Z_OK
    };
    n.deflateEnd = function() {
        if (z != INIT_STATE && z != BUSY_STATE && z != FINISH_STATE) return Z_STREAM_ERROR;
        w = D = G = n.pending_buf = null;
        n.dstate = null;
        return z == BUSY_STATE ? Z_DATA_ERROR : Z_OK
    };
    n.deflateParams = function(a, b, c) {
        var d = Z_OK;
        b == Z_DEFAULT_COMPRESSION && (b = 6);
        if (0 > b || 9 < b || 0 > c || c > Z_HUFFMAN_ONLY) return Z_STREAM_ERROR;
        config_table[M].func != config_table[b].func && 0 !== a.total_in && (d = a.deflate(Z_PARTIAL_FLUSH));
        M != b && (M = b, Z = config_table[M].max_lazy, ha = config_table[M].good_length, ia = config_table[M].nice_length, Y = config_table[M].max_chain);
        T = c;
        return d
    };
    n.deflateSetDictionary = function(a, b, c) {
        a = c;
        var d = 0;
        if (!b || z != INIT_STATE) return Z_STREAM_ERROR;
        if (a < MIN_MATCH) return Z_OK;
        a > s - MIN_LOOKAHEAD && (a = s - MIN_LOOKAHEAD, d = c - a);
        w.set(b.subarray(d, d + a), 0);
        Q = t = a;
        B = w[0] & 255;
        B = (B << N ^ w[1] & 255) & l;
        for (b = 0; b <= a - MIN_MATCH; b++) B = (B << N ^ w[b + (MIN_MATCH - 1)] & 255) & l, D[b & I] = G[B], G[B] = b;
        return Z_OK
    };
    n.deflate = function(b, g) {
        var f, h, j;
        if (g > Z_FINISH || 0 > g) return Z_STREAM_ERROR;
        if (!b.next_out || !b.next_in && 0 !== b.avail_in || z == FINISH_STATE && g != Z_FINISH) return b.msg = z_errmsg[Z_NEED_DICT - Z_STREAM_ERROR], Z_STREAM_ERROR;
        if (0 === b.avail_out) return b.msg = z_errmsg[Z_NEED_DICT - Z_BUF_ERROR], Z_BUF_ERROR;
        x = b;
        f = y;
        y = g;
        z == INIT_STATE && (h = Z_DEFLATED + (r - 8 << 4) << 8, j = (M - 1 & 255) >> 1, 3 < j && (j = 3), h |= j << 6, 0 !== t && (h |= PRESET_DICT), z = BUSY_STATE, h += 31 - h % 31, k(h >> 8 & 255), k(h & 255));
        if (0 !== n.pending) {
            if (x.flush_pending(), 0 === x.avail_out) return y = -1, Z_OK
        } else if (0 === x.avail_in && g <= f && g != Z_FINISH) return x.msg = z_errmsg[Z_NEED_DICT - Z_BUF_ERROR], Z_BUF_ERROR;
        if (z == FINISH_STATE && 0 !== x.avail_in) return b.msg = z_errmsg[Z_NEED_DICT - Z_BUF_ERROR], Z_BUF_ERROR;
        if (0 !== x.avail_in || 0 !== E || g != Z_NO_FLUSH && z != FINISH_STATE) {
            f = -1;
            switch (config_table[M].func) {
                case STORED:
                    f = C(g);
                    break;
                case FAST:
                    a: {
                        for (f = 0;;) {
                            if (E < MIN_LOOKAHEAD) {
                                q();
                                if (E < MIN_LOOKAHEAD && g == Z_NO_FLUSH) {
                                    f = NeedMore;
                                    break a
                                }
                                if (0 === E) break
                            }
                            E >= MIN_MATCH && (B = (B << N ^ w[t + (MIN_MATCH - 1)] & 255) & l, f = G[B] & 65535, D[t & I] = G[B], G[B] = t);
                            0 !== f && (t - f & 65535) <= s - MIN_LOOKAHEAD && T != Z_HUFFMAN_ONLY && (J = F(f));
                            if (J >= MIN_MATCH)
                                if (h = p(t - W, J - MIN_MATCH), E -= J, J <= Z && E >= MIN_MATCH) {
                                    J--;
                                    do t++, B = (B << N ^ w[t + (MIN_MATCH - 1)] & 255) & l, f = G[B] & 65535, D[t & I] = G[B], G[B] = t; while (0 !== --J);
                                    t++
                                } else t += J, J = 0, B = w[t] & 255, B = (B << N ^ w[t + 1] & 255) & l;
                            else h = p(0, w[t] & 255), E--, t++;
                            if (h && (c(!1), 0 === x.avail_out)) {
                                f = NeedMore;
                                break a
                            }
                        }
                        c(g == Z_FINISH);
                        f = 0 === x.avail_out ? g == Z_FINISH ? FinishStarted : NeedMore : g == Z_FINISH ? FinishDone : BlockDone
                    }
                    break;
                case SLOW:
                    f = H(g)
            }
            if (f == FinishStarted || f == FinishDone) z = FINISH_STATE;
            if (f == NeedMore || f == FinishStarted) return 0 === x.avail_out && (y = -1), Z_OK;
            if (f == BlockDone) {
                if (g == Z_PARTIAL_FLUSH) d(STATIC_TREES << 1, 3), e(END_BLOCK, StaticTree.static_ltree), a(), 9 > 1 + ga + 10 - L && (d(STATIC_TREES << 1, 3), e(END_BLOCK, StaticTree.static_ltree), a()), ga = 7;
                else if (u(0, 0, !1), g == Z_FULL_FLUSH)
                    for (f = 0; f < v; f++) G[f] = 0;
                x.flush_pending();
                if (0 === x.avail_out) return y = -1, Z_OK
            }
        }
        return g != Z_FINISH ? Z_OK : Z_STREAM_END
    }
}

function ZStream() {
    this.total_out = this.avail_out = this.total_in = this.avail_in = this.next_out_index = this.next_in_index = 0
}
ZStream.prototype = {
    deflateInit: function(f, b) {
        this.dstate = new Deflate;
        b || (b = MAX_BITS);
        return this.dstate.deflateInit(this, f, b)
    },
    deflate: function(f) {
        return !this.dstate ? Z_STREAM_ERROR : this.dstate.deflate(this, f)
    },
    deflateEnd: function() {
        if (!this.dstate) return Z_STREAM_ERROR;
        var f = this.dstate.deflateEnd();
        this.dstate = null;
        return f
    },
    deflateParams: function(f, b) {
        return !this.dstate ? Z_STREAM_ERROR : this.dstate.deflateParams(this, f, b)
    },
    deflateSetDictionary: function(f, b) {
        return !this.dstate ? Z_STREAM_ERROR : this.dstate.deflateSetDictionary(this, f, b)
    },
    read_buf: function(f, b, k) {
        var g = this.avail_in;
        g > k && (g = k);
        if (0 === g) return 0;
        this.avail_in -= g;
        f.set(this.next_in.subarray(this.next_in_index, this.next_in_index + g), b);
        this.next_in_index += g;
        this.total_in += g;
        return g
    },
    flush_pending: function() {
        var f = this.dstate.pending;
        f > this.avail_out && (f = this.avail_out);
        0 !== f && (this.next_out.set(this.dstate.pending_buf.subarray(this.dstate.pending_out, this.dstate.pending_out + f), this.next_out_index), this.next_out_index += f, this.dstate.pending_out += f, this.total_out += f, this.avail_out -= f, this.dstate.pending -= f, 0 === this.dstate.pending && (this.dstate.pending_out = 0))
    }
};

function Deflater(f) {
    var b = new ZStream,
        k = Z_NO_FLUSH,
        g = new Uint8Array(512);
    "undefined" == typeof f && (f = Z_DEFAULT_COMPRESSION);
    b.deflateInit(f);
    b.next_out = g;
    this.append = function(d, e) {
        var f, a = [],
            p = 0,
            j = 0,
            m = 0,
            u;
        if (d.length) {
            b.next_in_index = 0;
            b.next_in = d;
            b.avail_in = d.length;
            do {
                b.next_out_index = 0;
                b.avail_out = 512;
                f = b.deflate(k);
                if (f != Z_OK) throw "deflating: " + b.msg;
                b.next_out_index && (512 == b.next_out_index ? a.push(new Uint8Array(g)) : a.push(new Uint8Array(g.subarray(0, b.next_out_index))));
                m += b.next_out_index;
                e && (0 < b.next_in_index && b.next_in_index != p) && (e(b.next_in_index), p = b.next_in_index)
            } while (0 < b.avail_in || 0 === b.avail_out);
            u = new Uint8Array(m);
            a.forEach(function(a) {
                u.set(a, j);
                j += a.length
            });
            return u
        }
    };
    this.flush = function() {
        var d, e = [],
            f = 0,
            a = 0,
            k;
        do {
            b.next_out_index = 0;
            b.avail_out = 512;
            d = b.deflate(Z_FINISH);
            if (d != Z_STREAM_END && d != Z_OK) throw "deflating: " + b.msg;
            0 < 512 - b.avail_out && e.push(new Uint8Array(g.subarray(0, b.next_out_index)));
            a += b.next_out_index
        } while (0 < b.avail_in || 0 === b.avail_out);
        b.deflateEnd();
        k = new Uint8Array(a);
        e.forEach(function(a) {
            k.set(a, f);
            f += a.length
        });
        return k
    }
}
void
function(f, b) {
    "object" === typeof module ? module.exports = b() : "function" === typeof define ? define(b) : f.adler32cs = b()
}(this, function() {
    var f = "function" === typeof ArrayBuffer && "function" === typeof Uint8Array,
        b = null,
        k;
    if (f) {
        try {
            var g = require("buffer");
            "function" === typeof g.Buffer && (b = g.Buffer)
        } catch (d) {}
        k = function(a) {
            return a instanceof ArrayBuffer || null !== b && a instanceof b
        }
    } else k = function() {
        return !1
    };
    var e;
    e = null !== b ? function(a) {
        return (new b(a, "utf8")).toString("binary")
    } : function(a) {
        return unescape(encodeURIComponent(a))
    };
    var h = function(a, b) {
            for (var d = a & 65535, e = a >>> 16, f = 0, g = b.length; f < g; f++) d = (d + (b.charCodeAt(f) & 255)) % 65521, e = (e + d) % 65521;
            return (e << 16 | d) >>> 0
        },
        a = function(a, b) {
            for (var d = a & 65535, e = a >>> 16, f = 0, g = b.length; f < g; f++) d = (d + b[f]) % 65521, e = (e + d) % 65521;
            return (e << 16 | d) >>> 0
        },
        g = {},
        p = function(a) {
            if (!(this instanceof p)) throw new TypeError("Constructor cannot called be as a function.");
            if (!isFinite(a = null == a ? 1 : +a)) throw Error("First arguments needs to be a finite number.");
            this.checksum = a >>> 0
        },
        j = p.prototype = {};
    j.constructor = p;
    var m = function(a) {
        if (!(this instanceof p)) throw new TypeError("Constructor cannot called be as a function.");
        if (null == a) throw Error("First argument needs to be a string.");
        this.checksum = h(1, a.toString())
    };
    m.prototype = j;
    p.from = m;
    m = function(a) {
        if (!(this instanceof p)) throw new TypeError("Constructor cannot called be as a function.");
        if (null == a) throw Error("First argument needs to be a string.");
        a = e(a.toString());
        this.checksum = h(1, a)
    };
    m.prototype = j;
    p.fromUtf8 = m;
    f && (m = function(b) {
        if (!(this instanceof p)) throw new TypeError("Constructor cannot called be as a function.");
        if (!k(b)) throw Error("First argument needs to be ArrayBuffer.");
        b = new Uint8Array(b);
        return this.checksum = a(1, b)
    }, m.prototype = j, p.fromBuffer = m);
    j.update = function(a) {
        if (null == a) throw Error("First argument needs to be a string.");
        a = a.toString();
        return this.checksum = h(this.checksum, a)
    };
    j.updateUtf8 = function(a) {
        if (null == a) throw Error("First argument needs to be a string.");
        a = e(a.toString());
        return this.checksum = h(this.checksum, a)
    };
    f && (j.updateBuffer = function(b) {
        if (!k(b)) throw Error("First argument needs to be ArrayBuffer.");
        b = new Uint8Array(b);
        return this.checksum = a(this.checksum, b)
    });
    j.clone = function() {
        return new u(this.checksum)
    };
    var u = g.Adler32 = p;
    g.from = function(a) {
        if (null == a) throw Error("First argument needs to be a string.");
        return h(1, a.toString())
    };
    g.fromUtf8 = function(a) {
        if (null == a) throw Error("First argument needs to be a string.");
        a = e(a.toString());
        return h(1, a)
    };
    f && (g.fromBuffer = function(b) {
        if (!k(b)) throw Error("First argument need to be ArrayBuffer.");
        b = new Uint8Array(b);
        return a(1, b)
    });
    return g
});
                                    

#95 JavaScript::Eval (size: 1, repeated: 1) - SHA256: 50e721e49c013f00c62cf59f2163542a9d8df02464efeb615d31051b0fddc326

                                        w
                                    

#96 JavaScript::Eval (size: 272, repeated: 1) - SHA256: 389ce44d9620b74016661dafe72045f222b3ebc7045cf969e5a0dea61e5e763b

                                        w = function(H, h, D, B, G, c) {
    return function() {
        var X = [6, h, D, void 0, G, c, arguments],
            P = B & 1;
        if (B & 2) {
            var b = (Q(H, X), A)(H, true, false, false);
        } else {
            P && H.J.length ? Q(H, X) : P ? (Q(H, X), A(H, true, false, false)) : (b = E(H, X));
        }
        return b;
    };
}
                                    

#97 JavaScript::Eval (size: 6, repeated: 1) - SHA256: 44ff7b02c80d38b26dd6aa31d9470aed81b32e10331a3c994fb1a9945fd847ba

                                        window
                                    

#98 JavaScript::Eval (size: 1, repeated: 1) - SHA256: a1fce4363854ff888cff4b8e7875d600c2682390412a8cf79b37d0b11148b0fa

                                        y
                                    

#99 JavaScript::Eval (size: 396, repeated: 1) - SHA256: cccd1d671a1b5b8a457e67d065199b348deda1e7e7ee4bbd6ce995e7c124db41

                                        y = function(H, h, D, B, G, c) {
    for ((G = H.b(h), 152) == h ? (h = function(H, h, D, B) {
            if (D = (h = G.length, h - 4 >> 3), G.S != D) {
                D = (G.S = D, D << 3) - 4, B = [0, 0, 0, c];
                try {
                    G.o = u(I(G, D), I(G, D + 4), B);
                } catch (V) {
                    throw V;
                }
            }
            G.push(G.o[h & 7] ^ H);
        }, c = H.b(91)) : (h = function(H) {
            G.push(H);
        }), B && h(B & 255), B = 0, H = D.length; B < H; B++) {
        h(D[B]);
    }
}
                                    

#100 JavaScript::Eval (size: 1, repeated: 1) - SHA256: 594e519ae499312b29433b7dd8a97ff068defcba9755b6d5d00e84c524d67b06

                                        z
                                    

#101 JavaScript::Eval (size: 635, repeated: 1) - SHA256: e26ec94d4b67364a99c9cd39ff968f7d5abdab8ea2cccd1fcdfe26939ef5e990

                                        z = function(H, h, D, B, G, c, X) {
    H.T++;
    try {
        for (c = (D = (B = 5001, G = void 0, H.K).length, 0);
            (--B || H.v) && (H.j || (c = H.b(165)) < D);) {
            try {
                H.j ? (G = H.a(true)) : (U(H, 93, c), X = H.a(), G = H.b(X)), G && G.call ? G(H) : e(H, 21, 0, X), H.l = true, N(H, 0, 2);
            } catch (P) {
                P != H.F && (H.b(101) ? e(H, 22, P) : U(H, 101, P));
            }
        }
        B || e(H, 33);
    } catch (P) {
        try {
            e(H, 22, P);
        } catch (b) {
            x(H, b);
        }
    }
    return D = H.b(38), h && U(H, 165, h), H.T--, D;
}
                                    

Executed Writes (6)

#1 JavaScript::Write (size: 623, repeated: 1) - SHA256: 928064f211165fe03ad0d3a02973fb76e672a4ad967ddb23eeef4f948b031426

                                        < !doctype html > < html > < body > < iframe style = "display:none"
data - ad - client = "ca-pub-6514833317345920"
id = "google_esf"
name = "google_esf"
src = "https://googleads.g.doubleclick.net/pagead/html/r20180808/r20180604/zrt_lookup.html#" > < /iframe><script>google_iframe_start_time=new Date().getTime();google_async_iframe_id="aswift_0";</script > < script > window.google_process_slots = function() {
    window.google_sa_impl({
        iframeWin: window,
        pubWin: window.parent,
        vars: window.parent['google_sv_map']['aswift_0']
    });
}; < /script><script src="http:/ / pagead2.googlesyndication.com / pagead / js / r20180808 / r20180604 / show_ads_impl.js "></script></body></html>
                                    

#2 JavaScript::Write (size: 419, repeated: 1) - SHA256: 2497694d9f0b6707a95b87c0d2de72503a7fee534100ac2e8d12bc3272697e5a

                                        < !doctype html > < html > < body > < script > google_iframe_start_time = new Date().getTime();
google_async_iframe_id = "aswift_1"; < /script><script>window.google_process_slots=function(){window.google_sa_impl({iframeWin: window, pubWin: window.parent, vars: window.parent['google_sv_map']['aswift_1']});};</script > < script src = "http://pagead2.googlesyndication.com/pagead/js/r20180808/r20180604/show_ads_impl.js" > < /script></body > < /html>
                                    

#3 JavaScript::Write (size: 54, repeated: 1) - SHA256: 166a4ec3cb90d525f7f744c7616c01b36bebd6dcecd486c8f5be14ccc0a7b3da

                                        < !doctype html > < html > < head > < /head><body></body > < /html>
                                    

#4 JavaScript::Write (size: 382, repeated: 1) - SHA256: ed5190be636529fe44951890e8fa47120431aae198c2f6684fd65620546c2fff

                                        < head > < meta http - equiv = "Content-Type"
content = "text/html; charset=UTF8" > < link rel = "stylesheet"
type = "text/css"
href = "https://translate.googleapis.com/translate_static/css/translateelement.css" > < /head><body scroll="no" style="margin:0px;overflow:hidden" dir="ltr" marginHeight=0 marginWidth=0 leftMargin=0 topMargin=0 border=0><div id=":1.menuBody" class="goog-te-menu"></div > < /body>
                                    

#5 JavaScript::Write (size: 1374, repeated: 1) - SHA256: ce74373607d000873f9c6493382eaa4dd95d51aa15fe17e1c308246690ce7f61

                                        < iframe id = "google_ads_frame1"
name = "google_ads_frame1"
frameborder = "0"
src = "https://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-6514833317345920&amp;output=html&amp;adk=1812271804&amp;adf=807048394&amp;lmt=1534348907&amp;plat=1%3A1081352%2C2%3A1082376%2C8%3A32776%2C9%3A32776%2C16%3A8388608%2C26%3A32768%2C30%3A1048576&amp;guci=1.2.0.0.2.2.0&amp;format=0x0&amp;url=http%3A%2F%2Fwww.checktext.org%2F&amp;ea=0&amp;flash=10.0.45&amp;pra=5&amp;wgl=0&amp;adsid=NT&amp;dt=1534348909767&amp;bpp=902&amp;fdt=905&amp;idt=1047&amp;shv=r20180808&amp;cbv=r20180604&amp;saldr=aa&amp;abxe=1&amp;prev_fmts=1119x90&amp;nras=1&amp;correlator=1078030122705&amp;frm=20&amp;pv=1&amp;ga_vid=826259849.1534348909&amp;ga_sid=1534348910&amp;ga_hid=1094121331&amp;ga_fc=0&amp;icsg=0&amp;dssz=0&amp;mdo=0&amp;mso=0&amp;u_tz=120&amp;u_his=1&amp;u_java=1&amp;u_h=885&amp;u_w=1176&amp;u_ah=855&amp;u_aw=1176&amp;u_cd=24&amp;u_nplug=10&amp;u_nmime=92&amp;adx=0&amp;ady=0&amp;biw=1159&amp;bih=754&amp;scr_x=0&amp;scr_y=0&amp;eid=368226400%2C21062171%2C21060853%2C21061319&amp;oid=3&amp;rx=0&amp;eae=6&amp;fc=1808&amp;brdim=%2C%2C-4%2C-4%2C1176%2C0%2C1184%2C863%2C1176%2C754&amp;vis=0&amp;rsz=%7C%7Cs%7C&amp;abl=NS&amp;ppjl=u&amp;fu=16&amp;bc=1&amp;ifi=1&amp;dtd=1073"
marginwidth = "0"
marginheight = "0"
vspace = "0"
hspace = "0"
allowtransparency = "true"
scrolling = "no"
allowfullscreen = "true" > < /iframe>
                                    

#6 JavaScript::Write (size: 1395, repeated: 1) - SHA256: 2525044b00b138ad8238a1da48f7801f2f61eedaca545add4d6d6bcaf38f0a9d

                                        < iframe id = "google_ads_frame1"
name = "google_ads_frame1"
width = "1119"
height = "90"
frameborder = "0"
src = "https://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-6514833317345920&amp;output=html&amp;h=90&amp;slotname=3849169118&amp;adk=2676872739&amp;adf=807048394&amp;w=1119&amp;fwrn=4&amp;fwrnh=100&amp;lmt=1534348907&amp;rafmt=1&amp;guci=1.2.0.0.2.2.0&amp;format=1119x90&amp;url=http%3A%2F%2Fwww.checktext.org%2F&amp;ea=0&amp;flash=10.0.45&amp;fwr=0&amp;rh=0&amp;rw=1119&amp;resp_fmts=3&amp;wgl=0&amp;adsid=NT&amp;dt=1534348909767&amp;bpp=40&amp;fdt=48&amp;idt=233&amp;shv=r20180808&amp;cbv=r20180604&amp;saldr=aa&amp;abxe=1&amp;correlator=1078030122705&amp;frm=20&amp;pv=2&amp;ga_vid=826259849.1534348909&amp;ga_sid=1534348910&amp;ga_hid=1094121331&amp;ga_fc=0&amp;icsg=0&amp;dssz=0&amp;mdo=0&amp;mso=0&amp;u_tz=120&amp;u_his=1&amp;u_java=1&amp;u_h=885&amp;u_w=1176&amp;u_ah=855&amp;u_aw=1176&amp;u_cd=24&amp;u_nplug=10&amp;u_nmime=92&amp;adx=20&amp;ady=666&amp;biw=1159&amp;bih=754&amp;scr_x=0&amp;scr_y=0&amp;eid=368226400%2C21062171%2C21060853%2C21061319&amp;oid=3&amp;rx=0&amp;eae=4&amp;fc=1808&amp;brdim=%2C%2C-4%2C-4%2C1176%2C0%2C1184%2C863%2C1176%2C754&amp;vis=0&amp;rsz=%7C%7C%7C&amp;abl=CS&amp;ppjl=u&amp;pfx=0&amp;fu=144&amp;bc=1&amp;ifi=1&amp;dtd=258"
marginwidth = "0"
marginheight = "0"
vspace = "0"
hspace = "0"
allowtransparency = "true"
scrolling = "no"
allowfullscreen = "true" > < /iframe>
                                    


HTTP Transactions (87)


Request Response
                                        
                                            GET / HTTP/1.1 
Host: checktext.org
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive

                                         
                                         188.120.244.139
HTTP/1.1 301 Moved Permanently
Content-Type: text/html; charset=UTF-8
                                        
Server: nginx/1.12.1
Date: Wed, 15 Aug 2018 16:01:44 GMT
Content-Length: 0
Connection: keep-alive
X-Powered-By: PHP/7.0.21
X-Frame-Options: SAMEORIGIN
Location: http://www.checktext.org/
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Cache-Control: s-maxage=10


--- Additional Info ---

Alerts:
  Blacklists:
    - fortinet: Malware
                                        
                                            GET / HTTP/1.1 
Host: www.checktext.org
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive

                                         
                                         188.120.244.139
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
                                        
Server: nginx/1.12.1
Date: Wed, 15 Aug 2018 16:01:44 GMT
Content-Length: 13899
Connection: keep-alive
X-Powered-By: PHP/7.0.21
Link: <http://www.checktext.org/wp-json/>; rel="https://api.w.org/", <http://www.checktext.org/>; rel=shortlink
X-Frame-Options: SAMEORIGIN
X-Mod-Pagespeed: 1.13.35.2-0
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Vary: Accept-Encoding
Content-Encoding: gzip
Cache-Control: max-age=0, no-cache, s-maxage=10


--- Additional Info ---
Magic:  gzip compressed data, from Unix
Size:   13899
Md5:    0c5029e2675e821bfa9a761221ef0b0e
Sha1:   443104f6b095775d5c5ba0f717a18e06be275d55
Sha256: e0f5301f88982dfb4da8dee1baec0095f7dcab18c25963d32c65d1b20d1b66de
                                        
                                            GET /css?family=Open+Sans%3A400italic%2C600italic%2C700italic%2C400%2C300%2C600%2C700&subset=latin%2Ccyrillic-ext%2Ccyrillic%2Cgreek-ext%2Cgreek%2Cvietnamese%2Clatin-ext&ver=234ac47d410a3b2bbd8ed3bb3daf1022 HTTP/1.1 
Host: fonts.googleapis.com
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/css,*/*;q=0.1
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         216.58.211.10
HTTP/1.1 200 OK
Content-Type: text/css; charset=utf-8
                                        
Access-Control-Allow-Origin: *
Timing-Allow-Origin: *
Expires: Wed, 15 Aug 2018 16:01:47 GMT
Date: Wed, 15 Aug 2018 16:01:47 GMT
Cache-Control: private, max-age=86400
Content-Encoding: gzip
Transfer-Encoding: chunked
Server: ESF
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN


--- Additional Info ---
Magic:  gzip compressed data, max compression
Size:   329
Md5:    2c8e944ab93ce0caa20c084ed84c7fa7
Sha1:   f9792ec9551bb05afd897129df574c646652b9d4
Sha256: f0511a1fdc21d112acb6229a2b491b0848d3c3b7de5f36cf547fbc864a32be3d
                                        
                                            GET /css?family=Droid+Serif%3A400%2C400italic%2C700%2C700italic&ver=234ac47d410a3b2bbd8ed3bb3daf1022 HTTP/1.1 
Host: fonts.googleapis.com
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/css,*/*;q=0.1
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         216.58.211.10
HTTP/1.1 200 OK
Content-Type: text/css; charset=utf-8
                                        
Access-Control-Allow-Origin: *
Timing-Allow-Origin: *
Expires: Wed, 15 Aug 2018 16:01:47 GMT
Date: Wed, 15 Aug 2018 16:01:47 GMT
Cache-Control: private, max-age=86400
Content-Encoding: gzip
Transfer-Encoding: chunked
Server: ESF
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN


--- Additional Info ---
Magic:  gzip compressed data, max compression
Size:   291
Md5:    86e128491494744c01cf3d168f4fa64a
Sha1:   7ac446a31edb3486fd64d6db60861699430af6f8
Sha256: f2b5010dca6c08e3ba83009b223981f6892a8110c10f3fbb5ca47bdd49fe9fc6
                                        
                                            GET /wp-includes/js/wp-emoji-release.min.js?ver=234ac47d410a3b2bbd8ed3bb3daf1022 HTTP/1.1 
Host: www.checktext.org
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         188.120.244.139
HTTP/1.1 200 OK
Content-Type: application/javascript; charset=UTF-8
                                        
Server: nginx/1.12.1
Date: Wed, 15 Aug 2018 16:01:45 GMT
Content-Length: 11915
Last-Modified: Tue, 19 Sep 2017 22:57:34 GMT
Connection: keep-alive
Etag: "59c1a0de-2e8b"
Accept-Ranges: bytes


--- Additional Info ---
Magic:  ASCII C++ program text, with very long lines
Size:   11915
Md5:    af2f44df3198cfda9fd515873696ad00
Sha1:   cc583f436ea6bdb172ce36105a676e2081065638
Sha256: dba6b80aceb1267fd1ed564e08a983730d272813e9b3aff85dc365c65333dd66
                                        
                                            GET /wp-content/themes/Thoughts-child/A.style.css,qver=234ac47d410a3b2bbd8ed3bb3daf1022.pagespeed.cf.g_gCeG62p0.css HTTP/1.1 
Host: www.checktext.org
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/css,*/*;q=0.1
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         188.120.244.139
HTTP/1.1 200 OK
Content-Type: text/css
                                        
Server: nginx/1.12.1
Date: Wed, 15 Aug 2018 16:01:45 GMT
Content-Length: 7191
Connection: keep-alive
X-Frame-Options: SAMEORIGIN
Accept-Ranges: bytes
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Expires: Thu, 15 Aug 2019 16:01:17 GMT
Cache-Control: max-age=31536000
Etag: W/"0"
Last-Modified: Wed, 15 Aug 2018 16:01:17 GMT
X-Original-Content-Length: 20932
Vary: Accept-Encoding
Content-Encoding: gzip


--- Additional Info ---
Magic:  gzip compressed data, from Unix, max compression
Size:   7191
Md5:    e098f244e88a5720f67e9da0cb0e5c24
Sha1:   b58713612b6089a3e390f32e516577aa63691092
Sha256: 4e997f6ca5f77f06ed6747ac75070857096fe27abd13281ba1c95c468864ff85
                                        
                                            GET /wp-content/themes/Thoughts/css/A.responsive.css,qver=234ac47d410a3b2bbd8ed3bb3daf1022.pagespeed.cf.cQggDtLSwg.css HTTP/1.1 
Host: www.checktext.org
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/css,*/*;q=0.1
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         188.120.244.139
HTTP/1.1 200 OK
Content-Type: text/css
                                        
Server: nginx/1.12.1
Date: Wed, 15 Aug 2018 16:01:45 GMT
Content-Length: 985
Connection: keep-alive
X-Frame-Options: SAMEORIGIN
Accept-Ranges: bytes
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Expires: Thu, 15 Aug 2019 16:00:49 GMT
Cache-Control: max-age=31536000
Etag: W/"0"
Last-Modified: Wed, 15 Aug 2018 16:00:49 GMT
X-Original-Content-Length: 4291
Vary: Accept-Encoding
Content-Encoding: gzip


--- Additional Info ---
Magic:  gzip compressed data, from Unix, max compression
Size:   985
Md5:    8946662bb1db68cb700e8f198db4aec5
Sha1:   e68be4bcf59ac5b4c5add5f769196210c5fb5820
Sha256: 296fb83af88230ea6026e27a7bba3cd81b49a394e24db2a6ffe0be194e3afc52
                                        
                                            GET /wp-content/plugins/bwp-minify/min/A.,qf=wp-content,_themes,_Thoughts,_css,_awesome_font.css,,wp-content,_themes,_Thoughts,_css,_prettyphoto.css.pagespeed.cf.GtUBIxfazQ.css HTTP/1.1 
Host: www.checktext.org
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/css,*/*;q=0.1
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         188.120.244.139
HTTP/1.1 200 OK
Content-Type: text/css; charset=utf-8
                                        
Server: nginx/1.12.1
Date: Wed, 15 Aug 2018 16:01:45 GMT
Content-Length: 5025
Connection: keep-alive
X-Powered-By: PHP/7.0.21
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Expires: Thu, 15 Aug 2019 16:01:17 GMT
Cache-Control: max-age=31536000
Etag: W/"0"
Last-Modified: Wed, 15 Aug 2018 16:01:17 GMT
X-Original-Content-Length: 32712
Vary: Accept-Encoding
Content-Encoding: gzip


--- Additional Info ---
Magic:  gzip compressed data, from Unix, max compression
Size:   5025
Md5:    26a031ccc5cbdbc005dc64de36fd9085
Sha1:   f93da8877cc1496da382eb538625afcdc3eb2264
Sha256: 68a1984abe71096f54a86a9ff333ae2dc37d8cf3d3ed52fe67015f65a720512c
                                        
                                            GET /wp-includes/js/jquery/jquery.js,qver=1.12.4.pagespeed.jm.pPCPAKkkss.js HTTP/1.1 
Host: www.checktext.org
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         188.120.244.139
HTTP/1.1 200 OK
Content-Type: application/javascript; charset=UTF-8
                                        
Server: nginx/1.12.1
Date: Wed, 15 Aug 2018 16:01:45 GMT
Content-Length: 33695
Connection: keep-alive
X-Frame-Options: SAMEORIGIN
Accept-Ranges: bytes
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Expires: Thu, 15 Aug 2019 16:00:49 GMT
Cache-Control: max-age=31536000
Etag: W/"0"
Last-Modified: Wed, 15 Aug 2018 16:00:49 GMT
X-Original-Content-Length: 97184
Vary: Accept-Encoding
Content-Encoding: gzip


--- Additional Info ---
Magic:  gzip compressed data, from Unix, max compression
Size:   33695
Md5:    f30f4577e68c660c0c04d3f5e81fff27
Sha1:   01eb069eec74d0192a0e6fd290251e5060cf810d
Sha256: 0c64928f23940765c36afbcffec4d122d5e4954177547c6e0f3432eda3c33d35
                                        
                                            GET /pagead/js/adsbygoogle.js HTTP/1.1 
Host: pagead2.googlesyndication.com
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         172.217.20.34
HTTP/1.1 200 OK
Content-Type: text/javascript; charset=UTF-8
                                        
P3P: policyref="http://www.googleadservices.com/pagead/p3p.xml", CP="NOI DEV PSA PSD IVA IVD OTP OUR OTR IND OTC"
Timing-Allow-Origin: *
Vary: Accept-Encoding
Date: Wed, 15 Aug 2018 16:01:47 GMT
Expires: Wed, 15 Aug 2018 16:01:47 GMT
Cache-Control: private, max-age=3600
Etag: 15999190698261066361
X-Content-Type-Options: nosniff
Content-Disposition: attachment; filename="f.txt"
Content-Encoding: gzip
Server: cafe
Content-Length: 27626
X-XSS-Protection: 1; mode=block


--- Additional Info ---
Magic:  gzip compressed data, max compression
Size:   27626
Md5:    fcb1c6dfdba5b75f272f3c520f1154b5
Sha1:   5500c167df7d9948ceb216b9a872110d48c040fa
Sha256: 77d731627171e3e3c8ea523a18118db149a44609ceff50ce50df9e61924ccb2f
                                        
                                            GET /wp-includes/js/jquery/jquery-migrate.min.js,qver=1.4.1.pagespeed.jm.C2obERNcWh.js HTTP/1.1 
Host: www.checktext.org
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         188.120.244.139
HTTP/1.1 200 OK
Content-Type: application/javascript; charset=UTF-8
                                        
Server: nginx/1.12.1
Date: Wed, 15 Aug 2018 16:01:45 GMT
Content-Length: 3957
Connection: keep-alive
X-Frame-Options: SAMEORIGIN
Accept-Ranges: bytes
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Expires: Thu, 15 Aug 2019 16:00:49 GMT
Cache-Control: max-age=31536000
Etag: W/"0"
Last-Modified: Wed, 15 Aug 2018 16:00:49 GMT
X-Original-Content-Length: 10056
Vary: Accept-Encoding
Content-Encoding: gzip


--- Additional Info ---
Magic:  gzip compressed data, from Unix, max compression
Size:   3957
Md5:    81ca6be4af504ade84cee40032242463
Sha1:   b6c916031b230d8d36cb92d545d577c0b63f73e8
Sha256: 8cb249f01c97696e8cda5c61c4775c1cd8a3721c930e7d22364fa08ccc37d351
                                        
                                            GET /wp-content/plugins/bwp-minify/min/,qf=wp-content,_plugins,_google-analytics-dashboard-for-wp,_front,_js,_tracking-analytics-events.js,,wp-content,_plugins,_google-analytics-dashboard-for-wp,_front,_js,_tracking-scrolldepth.js.pagespeed.jm.sWf1KjRlrD.js HTTP/1.1 
Host: www.checktext.org
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         188.120.244.139
HTTP/1.1 200 OK
Content-Type: application/x-javascript; charset=utf-8
                                        
Server: nginx/1.12.1
Date: Wed, 15 Aug 2018 16:01:45 GMT
Content-Length: 2032
Connection: keep-alive
X-Powered-By: PHP/7.0.21
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Expires: Thu, 15 Aug 2019 10:00:44 GMT
Cache-Control: max-age=31536000
Etag: W/"0"
Last-Modified: Wed, 15 Aug 2018 10:00:44 GMT
X-Original-Content-Length: 8723
Vary: Accept-Encoding
Content-Encoding: gzip


--- Additional Info ---
Magic:  gzip compressed data, from Unix, max compression
Size:   2032
Md5:    ff4ce3d9ec24062f46d7f4aaedab9551
Sha1:   adc212b5bbd8d6608c8e36ca1c1284b700492824
Sha256: cf863b2634009fc5c55dfc568a474483e2caa688fcd50b31c8a3d61fca41158c
                                        
                                            GET /assets/pub/shareaholic.js HTTP/1.1 
Host: dsms0mj1bbhn4.cloudfront.net
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         143.204.51.208
HTTP/1.1 200 OK
Content-Type: application/javascript
                                        
Content-Length: 2344
Connection: keep-alive
Server: nginx
Date: Wed, 15 Aug 2018 13:12:33 GMT
Last-Modified: Mon, 13 Aug 2018 12:56:42 GMT
Etag: "e26f23a0cb36d7fff5f38dd4c408e832"
Cache-Control: max-age=900, public
Content-Encoding: gzip
Accept-Ranges: bytes
Access-Control-Allow-Origin: *
X-Hello-Human: Join the fun! Apply at www.shareaholic.com/jobs
Age: 254
X-Cache: Hit from cloudfront
Via: 1.1 6cb1d4b545e7beb4ead790454f4807c7.cloudfront.net (CloudFront)
X-Amz-Cf-Id: sCxbCEuhfNfUUc5g1O7t7PGRaQP4UdDCu2wYqaG5Oidr4BGWLDc_zQ==


--- Additional Info ---
Magic:  gzip compressed data
Size:   2344
Md5:    e26f23a0cb36d7fff5f38dd4c408e832
Sha1:   86c842e9605fa9b29027b88f85a3456d3a73c35a
Sha256: 7aa15c9f532cc055978fe0ebf60acf545a3bb76bc356c0b0781712fc4edea9cd
                                        
                                            GET /ajax/libs/cookieconsent2/1.0.9/cookieconsent.min.js HTTP/1.1 
Host: cdnjs.cloudflare.com
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         104.19.196.151
HTTP/1.1 200 OK
Content-Type: application/javascript; charset=utf-8
                                        
Date: Wed, 15 Aug 2018 16:01:47 GMT
Transfer-Encoding: chunked
Connection: keep-alive
Last-Modified: Tue, 14 Nov 2017 00:28:38 GMT
Expires: Mon, 05 Aug 2019 16:01:47 GMT
Cache-Control: public, max-age=30672000
Access-Control-Allow-Origin: *
Content-Encoding: gzip
CF-Cache-Status: HIT
Vary: Accept-Encoding
Server: cloudflare
CF-RAY: 44ace1c0b6cc42a9-OSL


--- Additional Info ---
Magic:  gzip compressed data, from Unix
Size:   1946
Md5:    d927af0997aa2abe50c5fdca613f50ff
Sha1:   51224e2481c6095fdb9b5c2cefbac44d13ebc21e
Sha256: 3b08c1d74fb7f1d6ee4a8702a6448eb19f5d6f035ecf0dcacc7e7789f1a670bc
                                        
                                            GET /translate_a/element.js?cb=googleTranslateElementInit HTTP/1.1 
Host: translate.google.com
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         216.58.211.14
HTTP/1.1 200 OK
Content-Type: text/javascript; charset=UTF-8
                                        
Date: Wed, 15 Aug 2018 16:01:47 GMT
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Cache-Control: no-cache, must-revalidate
Content-Language: en
Pragma: no-cache
X-Content-Type-Options: nosniff
Content-Disposition: attachment; filename="f.txt"
Content-Encoding: gzip
Server: HTTP server (unknown)
Content-Length: 771
X-XSS-Protection: 1; mode=block


--- Additional Info ---
Magic:  gzip compressed data, max compression
Size:   771
Md5:    535888ec5cea4a6850bf4bb573ac8530
Sha1:   7470a1c3a21282e1ffb993766f10bfd3fea395a6
Sha256: e7b315694bfb98538eb707a39ddfe432344c0b75006aefcf1238780beb7dbb26
                                        
                                            GET /wp-content/plugins/bwp-minify/min/?f=wp-includes/js/hoverIntent.min.js,wp-content/themes/Thoughts/js/superfish.js,wp-content/themes/Thoughts/js/easing.js,wp-content/themes/Thoughts/js/flexslider-min.js,wp-content/themes/Thoughts/js/prettyphoto.js,wp-content/themes/Thoughts/js/fitvids.js,wp-content/themes/Thoughts/js/uniform.js,wp-content/themes/Thoughts/js/responsive.js,wp-includes/js/comment-reply.min.js,wp-content/themes/Thoughts/js/initialize.js HTTP/1.1 
Host: www.checktext.org
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         188.120.244.139
HTTP/1.1 200 OK
Content-Type: application/x-javascript; charset=utf-8
                                        
Server: nginx/1.12.1
Date: Wed, 15 Aug 2018 16:01:45 GMT
Content-Length: 16441
Connection: keep-alive
X-Powered-By: PHP/7.0.21
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff, nosniff
X-Original-Content-Length: 65070
Vary: Accept-Encoding
Content-Encoding: gzip
Etag: W/"PSA-aj-yO8xkX4irx"
Expires: Wed, 15 Aug 2018 16:06:55 GMT
Cache-Control: max-age=309


--- Additional Info ---
Magic:  gzip compressed data, from Unix, max compression
Size:   16441
Md5:    c1f5daf33f3588120524e5cf6faccc1c
Sha1:   0286c789b945e0ef6b1b181ef838c0fee8729ebc
Sha256: 6f90c0d3b06a8e5a9caad295b2d9a6c0a285d329f5fdcffed6ca527398cd410c
                                        
                                            GET /css/A.bootstrap.min.css+font-awesome.css,Mcc.FiVvP1pw0z.css.pagespeed.cf.gCyLabYf4h.css HTTP/1.1 
Host: www.checktext.org
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/css,*/*;q=0.1
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         188.120.244.139
HTTP/1.1 200 OK
Content-Type: text/css
                                        
Server: nginx/1.12.1
Date: Wed, 15 Aug 2018 16:01:45 GMT
Content-Length: 20047
Connection: keep-alive
X-Frame-Options: SAMEORIGIN
Accept-Ranges: bytes
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Expires: Wed, 27 Mar 2019 05:44:20 GMT
Cache-Control: max-age=31536000
Etag: W/"0"
Last-Modified: Tue, 27 Mar 2018 05:44:20 GMT
X-Original-Content-Length: 122550
Vary: Accept-Encoding
Content-Encoding: gzip


--- Additional Info ---
Magic:  gzip compressed data, from Unix, max compression
Size:   20047
Md5:    a4b57ab844404fbfb92f825da35d775d
Sha1:   8762f8a55ab840fdbdf18beedeaf2521c39e0d55
Sha256: 3b8eefa9668605b4a499b49fed3390ba95dfba7839fc118843407342a8b45182
                                        
                                            GET /js/lib/angular/angular-mocks.js+angular-animate.min.js+angular-route.min.js+angular-sanitize.min.js.pagespeed.jc.cy2WgyB6_X.js HTTP/1.1 
Host: www.checktext.org
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         188.120.244.139
HTTP/1.1 200 OK
Content-Type: application/javascript; charset=UTF-8
                                        
Server: nginx/1.12.1
Date: Wed, 15 Aug 2018 16:01:45 GMT
Content-Length: 13661
Connection: keep-alive
X-Frame-Options: SAMEORIGIN
Accept-Ranges: bytes
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Expires: Thu, 15 Aug 2019 16:00:49 GMT
Cache-Control: max-age=31536000
Etag: W/"0"
Last-Modified: Wed, 15 Aug 2018 16:00:49 GMT
X-Original-Content-Length: 89246
Vary: Accept-Encoding
Content-Encoding: gzip


--- Additional Info ---
Magic:  gzip compressed data, from Unix, max compression
Size:   13661
Md5:    3fb5de8f13f295bea23771e587908049
Sha1:   5092f313008815bc53af5bced2690f0e086de12d
Sha256: cd0e802cb5d82c261402ff3ff35bb0556a4147767aa3a9ccaa05065d22eb03ed
                                        
                                            GET /js/lib/JSZip/jszip.js+jszip-load.js+jszip-inflate.js.pagespeed.jc.xaLfA44a_l.js HTTP/1.1 
Host: www.checktext.org
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         188.120.244.139
HTTP/1.1 200 OK
Content-Type: application/javascript; charset=UTF-8
                                        
Server: nginx/1.12.1
Date: Wed, 15 Aug 2018 16:01:45 GMT
Content-Length: 11901
Connection: keep-alive
X-Frame-Options: SAMEORIGIN
Accept-Ranges: bytes
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Expires: Thu, 15 Aug 2019 16:00:49 GMT
Cache-Control: max-age=31536000
Etag: W/"0"
Last-Modified: Wed, 15 Aug 2018 16:00:49 GMT
X-Original-Content-Length: 90748
Vary: Accept-Encoding
Content-Encoding: gzip


--- Additional Info ---
Magic:  gzip compressed data, from Unix, max compression
Size:   11901
Md5:    18ece532aa6daceaa092c7017ff0e98d
Sha1:   40460987b912fd068338962063704eb303a83f7c
Sha256: 4c06d7a166838bb99ee76c65a35076eca0f744d9852328a69fd68ce5efbad84f
                                        
                                            GET /js/lib/JSZip/jszip-deflate.js.pagespeed.jm.9Lna4BB40c.js HTTP/1.1 
Host: www.checktext.org
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         188.120.244.139
HTTP/1.1 200 OK
Content-Type: application/javascript; charset=UTF-8
                                        
Server: nginx/1.12.1
Date: Wed, 15 Aug 2018 16:01:45 GMT
Content-Length: 4500
Connection: keep-alive
X-Frame-Options: SAMEORIGIN
Accept-Ranges: bytes
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Expires: Thu, 15 Aug 2019 16:00:49 GMT
Cache-Control: max-age=31536000
Etag: W/"0"
Last-Modified: Wed, 15 Aug 2018 16:00:49 GMT
X-Original-Content-Length: 11931
Vary: Accept-Encoding
Content-Encoding: gzip


--- Additional Info ---
Magic:  gzip compressed data, from Unix, max compression
Size:   4500
Md5:    279f4c404f65b92d4ea914a880fe03e2
Sha1:   65370dc3d5d9f292fa9fcfdecbae99334692aab2
Sha256: c763b08dc0915f0b13160b3e919c805fd27264bd4ffa685737c4cf231a5944c5
                                        
                                            GET /js/lib/angular/angular.min.js.pagespeed.jm.gWazTpqbLx.js HTTP/1.1 
Host: www.checktext.org
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         188.120.244.139
HTTP/1.1 200 OK
Content-Type: application/javascript; charset=UTF-8
                                        
Server: nginx/1.12.1
Date: Wed, 15 Aug 2018 16:01:45 GMT
Content-Length: 38460
Connection: keep-alive
X-Frame-Options: SAMEORIGIN
Accept-Ranges: bytes
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Expires: Thu, 15 Aug 2019 16:00:49 GMT
Cache-Control: max-age=31536000
Etag: W/"0"
Last-Modified: Wed, 15 Aug 2018 16:00:49 GMT
X-Original-Content-Length: 105587
Vary: Accept-Encoding
Content-Encoding: gzip


--- Additional Info ---
Magic:  gzip compressed data, from Unix, max compression
Size:   38460
Md5:    1593e472ad4e886486c581f91ee50d07
Sha1:   800a0a0e5cc16c005bfce18a8d7d79443a1d5124
Sha256: 1420e03fa25e774545d0eb689311fdaa38b035511c4f0bd8da2126c37c18e34f
                                        
                                            GET /images/xPDF-icon.png.pagespeed.ic.fup_mLZ0sm.png HTTP/1.1 
Host: www.checktext.org
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         188.120.244.139
HTTP/1.1 200 OK
Content-Type: image/png
                                        
Server: nginx/1.12.1
Date: Wed, 15 Aug 2018 16:01:45 GMT
Content-Length: 3679
Connection: keep-alive
Link: <http://www.checktext.org/images/PDF-icon.png>; rel="canonical"
X-Frame-Options: SAMEORIGIN
Accept-Ranges: bytes
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Expires: Sun, 04 Aug 2019 18:59:12 GMT
Cache-Control: max-age=31536000
Etag: W/"0"
Last-Modified: Sat, 04 Aug 2018 18:59:12 GMT
X-Original-Content-Length: 6477


--- Additional Info ---
Magic:  PNG image, 49 x 51, 8-bit/color RGBA, non-interlaced
Size:   3679
Md5:    7eea7f98b674b26edb345db777d59f74
Sha1:   149089bd800f3f977637002ab8586611e2cdc519
Sha256: 7eff4571c40856297960b4ed632b2c1c177a6e27e8c57e7eabd099d47a3dd9a1
                                        
                                            GET /js/lib/highcharts,_modules,_exporting.js+jsPDF,_jspdf.min.js.pagespeed.jc.-Gro_sJj0X.js HTTP/1.1 
Host: www.checktext.org
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         188.120.244.139
HTTP/1.1 200 OK
Content-Type: application/javascript; charset=UTF-8
                                        
Server: nginx/1.12.1
Date: Wed, 15 Aug 2018 16:01:45 GMT
Content-Length: 24871
Connection: keep-alive
X-Frame-Options: SAMEORIGIN
Accept-Ranges: bytes
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Expires: Thu, 15 Aug 2019 16:00:49 GMT
Cache-Control: max-age=31536000
Etag: W/"0"
Last-Modified: Wed, 15 Aug 2018 16:00:49 GMT
X-Original-Content-Length: 75014
Vary: Accept-Encoding
Content-Encoding: gzip


--- Additional Info ---
Magic:  gzip compressed data, from Unix, max compression
Size:   24871
Md5:    4510e14031d478614f613585d3985a26
Sha1:   2a69a6443d3a6e63a50139c2176784b883a3667b
Sha256: 3db5d9bfa5f623090c5ed374d503a07e7924fe27ddf425681010359d0a082659
                                        
                                            GET /js/lib/highcharts/highcharts.js.pagespeed.jm.ptdx6IRfug.js HTTP/1.1 
Host: www.checktext.org
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         188.120.244.139
HTTP/1.1 200 OK
Content-Type: application/javascript; charset=UTF-8
                                        
Server: nginx/1.12.1
Date: Wed, 15 Aug 2018 16:01:45 GMT
Content-Length: 53131
Connection: keep-alive
X-Frame-Options: SAMEORIGIN
Accept-Ranges: bytes
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Expires: Thu, 15 Aug 2019 16:00:49 GMT
Cache-Control: max-age=31536000
Etag: W/"0"
Last-Modified: Wed, 15 Aug 2018 16:00:49 GMT
X-Original-Content-Length: 146694
Vary: Accept-Encoding
Content-Encoding: gzip


--- Additional Info ---
Magic:  gzip compressed data, from Unix, max compression
Size:   53131
Md5:    eb224106bbb996c39b0982b05dd7c078
Sha1:   4ce15ae976eb9d2ca6c2a117e762cd34b5a00541
Sha256: 4fda0fbeebb0a0e977726de0351ec247e4a3162777b44604d3834299aa528f39
                                        
                                            GET /js/lib,_jsPDF,_jspdf.plugin.standard_fonts_metrics.js+lib,_jsPDF,_jspdf.plugin.split_text_to_size.js+lib,_jsPDF,_jspdf.plugin.cell.js+app,_jspdf.plugin.from_html.js+app,_LoadResource.js.pagespeed.jc.WQZsrQUpsw.js HTTP/1.1 
Host: www.checktext.org
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         188.120.244.139
HTTP/1.1 200 OK
Content-Type: application/javascript; charset=UTF-8
                                        
Server: nginx/1.12.1
Date: Wed, 15 Aug 2018 16:01:45 GMT
Content-Length: 10250
Connection: keep-alive
X-Frame-Options: SAMEORIGIN
Accept-Ranges: bytes
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Expires: Thu, 15 Aug 2019 16:00:49 GMT
Cache-Control: max-age=31536000
Etag: W/"0"
Last-Modified: Wed, 15 Aug 2018 16:00:49 GMT
X-Original-Content-Length: 74797
Vary: Accept-Encoding
Content-Encoding: gzip


--- Additional Info ---
Magic:  gzip compressed data, from Unix, max compression
Size:   10250
Md5:    b07d4c5c7592e2204825d88aecf4b5a6
Sha1:   fce231af52247a2756e891382da86736977a812d
Sha256: 20c8a6d779a9316a30123aab12d1babe8df3c721b1f194ebd388fb9a26cccb05
                                        
                                            GET /js/app/textAngular.js.pagespeed.jm.Rl-Nn7cUnk.js HTTP/1.1 
Host: www.checktext.org
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         188.120.244.139
HTTP/1.1 200 OK
Content-Type: application/javascript; charset=UTF-8
                                        
Server: nginx/1.12.1
Date: Wed, 15 Aug 2018 16:01:45 GMT
Content-Length: 4266
Connection: keep-alive
X-Frame-Options: SAMEORIGIN
Accept-Ranges: bytes
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Expires: Thu, 15 Aug 2019 16:00:49 GMT
Cache-Control: max-age=31536000
Etag: W/"0"
Last-Modified: Wed, 15 Aug 2018 16:00:49 GMT
X-Original-Content-Length: 34101
Vary: Accept-Encoding
Content-Encoding: gzip


--- Additional Info ---
Magic:  gzip compressed data, from Unix, max compression
Size:   4266
Md5:    e44966b4701b9f4256ee8d9279593b1a
Sha1:   1545c6f4493960d9398b6b9364672b9b415220b5
Sha256: dd43318c938b7fe3694b039d645c55f5f157f812e4a276fab707de6526c51160
                                        
                                            GET /js/app/ExtractTxtFromFile.js.pagespeed.jm.xyv96Pvx09.js HTTP/1.1 
Host: www.checktext.org
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         188.120.244.139
HTTP/1.1 200 OK
Content-Type: application/javascript; charset=UTF-8
                                        
Server: nginx/1.12.1
Date: Wed, 15 Aug 2018 16:01:45 GMT
Content-Length: 1196
Connection: keep-alive
X-Frame-Options: SAMEORIGIN
Accept-Ranges: bytes
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Expires: Thu, 15 Aug 2019 16:00:49 GMT
Cache-Control: max-age=31536000
Etag: W/"0"
Last-Modified: Wed, 15 Aug 2018 16:00:49 GMT
X-Original-Content-Length: 7213
Vary: Accept-Encoding
Content-Encoding: gzip


--- Additional Info ---
Magic:  gzip compressed data, from Unix, max compression
Size:   1196
Md5:    c52f69bfe17e176dafa2c645e8ea48cc
Sha1:   0faa419943746e270eee60d2cde5df4b70201dc2
Sha256: 111ee8cef7e2c0c1243d14a804d7224e067d99239c9a549687fe746e2ddaf1a1
                                        
                                            GET /js/lib/jsPDF/jspdf.source.js.pagespeed.jm.cqS1m1DsnK.js HTTP/1.1 
Host: www.checktext.org
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         188.120.244.139
HTTP/1.1 200 OK
Content-Type: application/javascript; charset=UTF-8
                                        
Server: nginx/1.12.1
Date: Wed, 15 Aug 2018 16:01:45 GMT
Content-Length: 31164
Connection: keep-alive
X-Frame-Options: SAMEORIGIN
Accept-Ranges: bytes
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Expires: Thu, 15 Aug 2019 16:00:49 GMT
Cache-Control: max-age=31536000
Etag: W/"0"
Last-Modified: Wed, 15 Aug 2018 16:00:49 GMT
X-Original-Content-Length: 239764
Vary: Accept-Encoding
Content-Encoding: gzip


--- Additional Info ---
Magic:  gzip compressed data, from Unix, max compression
Size:   31164
Md5:    3e85cc26f246fd358580e8126e86546f
Sha1:   94408c0d2bb55eeecc979203d6a86bb4042990cb
Sha256: 04050af1f6a1e32a78bbdeb90f04a7b6905c8de2f408e57a78964996149b96d6
                                        
                                            GET /js/app/FindDuplicates.js+webaccess.js.pagespeed.jc.ZoMu92uyH9.js HTTP/1.1 
Host: www.checktext.org
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         188.120.244.139
HTTP/1.1 200 OK
Content-Type: application/javascript; charset=UTF-8
                                        
Server: nginx/1.12.1
Date: Wed, 15 Aug 2018 16:01:45 GMT
Content-Length: 3835
Connection: keep-alive
X-Frame-Options: SAMEORIGIN
Accept-Ranges: bytes
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Expires: Thu, 15 Aug 2019 16:00:49 GMT
Cache-Control: max-age=31536000
Etag: W/"0"
Last-Modified: Wed, 15 Aug 2018 16:00:49 GMT
X-Original-Content-Length: 46986
Vary: Accept-Encoding
Content-Encoding: gzip


--- Additional Info ---
Magic:  gzip compressed data, from Unix, max compression
Size:   3835
Md5:    19d381b036124d2f8c448f2a485c69c2
Sha1:   be0ce9b8dc444079a2ebde9db1158509dd96bc97
Sha256: a605a415ab61808b38c8a28db0f1b6217c9f87e0be3085cb9191a1a9ddbcccfe
                                        
                                            GET /js/app/controller.js.pagespeed.jm.SEMu12-Pyt.js HTTP/1.1 
Host: www.checktext.org
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         188.120.244.139
HTTP/1.1 200 OK
Content-Type: application/javascript; charset=UTF-8
                                        
Server: nginx/1.12.1
Date: Wed, 15 Aug 2018 16:01:45 GMT
Content-Length: 22959
Connection: keep-alive
X-Frame-Options: SAMEORIGIN
Accept-Ranges: bytes
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Expires: Thu, 15 Aug 2019 16:00:49 GMT
Cache-Control: max-age=31536000
Etag: W/"0"
Last-Modified: Wed, 15 Aug 2018 16:00:49 GMT
X-Original-Content-Length: 78416
Vary: Accept-Encoding
Content-Encoding: gzip


--- Additional Info ---
Magic:  gzip compressed data, from Unix, max compression
Size:   22959
Md5:    55dbc23ddd3df33bf7f89638d79e75e9
Sha1:   dca2567875e1574d9e5297a60a8019147bb155dd
Sha256: 489a29d6f26fdc55f6efd149b0df86c6738d67f9bea27eab079584a7d852caa7
                                        
                                            GET /js/app/textanalyzer.js+importWebText.js.pagespeed.jc.lvb0vVnaw2.js HTTP/1.1 
Host: www.checktext.org
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         188.120.244.139
HTTP/1.1 200 OK
Content-Type: application/javascript; charset=UTF-8
                                        
Server: nginx/1.12.1
Date: Wed, 15 Aug 2018 16:01:45 GMT
Content-Length: 7517
Connection: keep-alive
X-Frame-Options: SAMEORIGIN
Accept-Ranges: bytes
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Expires: Thu, 15 Aug 2019 16:00:49 GMT
Cache-Control: max-age=31536000
Etag: W/"0"
Last-Modified: Wed, 15 Aug 2018 16:00:49 GMT
X-Original-Content-Length: 63287
Vary: Accept-Encoding
Content-Encoding: gzip


--- Additional Info ---
Magic:  gzip compressed data, from Unix, max compression
Size:   7517
Md5:    4babcfa69efe2be65ea08f98b52366d3
Sha1:   85319dd1c40ca2d363b816846312a475b1bd94b9
Sha256: 2cc8ce9d127dd5addf51ac39acfd51777af085701aad55ba070fa45decaa007f
                                        
                                            GET /js/300/addthis_widget.js HTTP/1.1 
Host: s7.addthis.com
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         104.71.216.27
HTTP/1.1 200 OK
Content-Type: application/javascript
                                        
Last-Modified: Wed, 15 Aug 2018 15:14:06 GMT
Etag: "5b74433e-571c4"
Cache-Tag: client_dist
Surrogate-Key: client_dist
Timing-Allow-Origin: *
Cache-Control: public, max-age=600
Accept-Ranges: bytes
Content-Encoding: gzip
Content-Length: 113647
Date: Wed, 15 Aug 2018 16:01:47 GMT
Connection: keep-alive
Vary: Accept-Encoding
X-Distribution: 99
X-Host: s7.addthis.com


--- Additional Info ---
Magic:  gzip compressed data, from FAT filesystem (MS-DOS, OS/2, NT)
Size:   113647
Md5:    4b7050bbdaa60abe9db359349e7d4670
Sha1:   528c78d0cccacdbf0e1567b1ae0e44e459bfd49d
Sha256: 102bcafa3f347541b92fe3fb0f5f3f40ddf4d3abff38efacfd741c6123c29094
                                        
                                            POST /GTSGIAG3 HTTP/1.1 
Host: ocsp.pki.goog
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Content-Length: 107
Content-Type: application/ocsp-request

                                         
                                         216.58.211.14
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Date: Wed, 15 Aug 2018 16:01:48 GMT
Cache-Control: public, max-age=86400
Server: ocsp_responder
Content-Length: 463
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN


--- Additional Info ---
Magic:  data
Size:   463
Md5:    7737ff6365f6be2eaece03cf133794f2
Sha1:   9fe65cde597dcb727f4ddeb71259fb5aece69811
Sha256: 168556d2805b90f08e74a80347b74bf04e80433b6a590b45ac4b5ea70f839262
                                        
                                            POST /gsr2 HTTP/1.1 
Host: ocsp.pki.goog
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Content-Length: 112
Content-Type: application/ocsp-request

                                         
                                         216.58.211.14
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Date: Wed, 15 Aug 2018 16:01:48 GMT
Cache-Control: public, max-age=86400
Server: ocsp_responder
Content-Length: 468
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN


--- Additional Info ---
Magic:  data
Size:   468
Md5:    d9d754520ae3340aa37cca6115eee05b
Sha1:   a0320372760d99c762cb2eb4b37f776625ef1b33
Sha256: 7dc8284c51c9a38dc1bf03bd28857ea5336e8f5c564eddbb1c9082ee43c93738
                                        
                                            GET /analytics.js HTTP/1.1 
Host: www.google-analytics.com
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         216.58.211.14
HTTP/1.1 200 OK
Content-Type: text/javascript
                                        
Strict-Transport-Security: max-age=10886400; includeSubDomains; preload
Timing-Allow-Origin: *
Date: Wed, 15 Aug 2018 15:22:10 GMT
Expires: Wed, 15 Aug 2018 17:22:10 GMT
Last-Modified: Fri, 18 May 2018 01:10:24 GMT
X-Content-Type-Options: nosniff
Vary: Accept-Encoding
Content-Encoding: gzip
Server: Golfe2
Content-Length: 14386
Age: 2378
Cache-Control: public, max-age=7200
Alt-Svc: quic=":443"; ma=2592000; v="44,43,39,35"


--- Additional Info ---
Magic:  gzip compressed data, max compression
Size:   14386
Md5:    b3de885583a477d4e31568948d6bebd7
Sha1:   2ce8d853244dde551c41d5207d6f71c567bde8c6
Sha256: e1bb5aa555a0d875e2a67884ceaa0629e08994a8aabadc2fac5b6915793dbf75
                                        
                                            POST /GTSGIAG3 HTTP/1.1 
Host: ocsp.pki.goog
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Content-Length: 107
Content-Type: application/ocsp-request

                                         
                                         216.58.211.14
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Date: Wed, 15 Aug 2018 16:01:48 GMT
Cache-Control: public, max-age=86400
Server: ocsp_responder
Content-Length: 463
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN


--- Additional Info ---
Magic:  data
Size:   463
Md5:    8df167316776acb736dd3d8efd2b5a39
Sha1:   d8bc1c590529e763436c8af10e7f666993b04ab0
Sha256: 59816a71de810d591bc117bc517620a48e8d7439316112732a82035240aa5a7a
                                        
                                            POST /GTSGIAG3 HTTP/1.1 
Host: ocsp.pki.goog
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Content-Length: 107
Content-Type: application/ocsp-request

                                         
                                         216.58.211.14
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Date: Wed, 15 Aug 2018 16:01:48 GMT
Cache-Control: public, max-age=86400
Server: ocsp_responder
Content-Length: 463
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN


--- Additional Info ---
Magic:  data
Size:   463
Md5:    34b7b7ce93057ea140a76e6fb17b7801
Sha1:   9de8dad972c09e27e2367168903e956a92bca129
Sha256: d7747f452a1ef4059cbd6c6570594bccdf0438e45b8492cb42f358b73a80adb6
                                        
                                            GET /plugins/ua/linkid.js HTTP/1.1 
Host: www.google-analytics.com
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         216.58.211.14
HTTP/1.1 200 OK
Content-Type: text/javascript
                                        
Accept-Ranges: bytes
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 856
Date: Wed, 15 Aug 2018 15:09:29 GMT
Expires: Wed, 15 Aug 2018 16:09:29 GMT
Last-Modified: Thu, 21 Apr 2016 03:17:22 GMT
X-Content-Type-Options: nosniff
Server: sffe
X-XSS-Protection: 1; mode=block
Cache-Control: public, max-age=3600
Age: 3140
Alt-Svc: quic=":443"; ma=2592000; v="44,43,39,35"


--- Additional Info ---
Magic:  gzip compressed data, max compression
Size:   856
Md5:    99103567b5f940f76e050fa08e175ab0
Sha1:   5a7462a01efb639b746f31cddd46af6fa8e21567
Sha256: 3fac730f3740ba563c83c99c28f49ebd79e72d180b8bad22f8b546781716f974
                                        
                                            GET /adsid/integrator.js?domain=www.checktext.org HTTP/1.1 
Host: adservice.google.com
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         172.217.20.34
HTTP/1.1 200 OK
Content-Type: application/javascript; charset=UTF-8
                                        
P3P: CP="This is not a P3P policy! See http://support.google.com/accounts/answer/151657 for more info."
Timing-Allow-Origin: *
Cache-Control: private, no-cache, no-store
X-Content-Type-Options: nosniff
Content-Disposition: attachment; filename="f.txt"
Content-Encoding: gzip
Date: Wed, 15 Aug 2018 16:01:49 GMT
Server: cafe
X-XSS-Protection: 1; mode=block
Alt-Svc: quic="googleads.g.doubleclick.net:443"; ma=2592000; v="44,43,39,35",quic=":443"; ma=2592000; v="44,43,39,35"
Transfer-Encoding: chunked


--- Additional Info ---
Magic:  gzip compressed data, max compression
Size:   104
Md5:    835dc76a57166c8b5b88275a570d1891
Sha1:   0d7e8826520cdadf8db62583b25e26149af2c8ce
Sha256: 6441b99ce0ba328cabe2ff8d6167c3ac47f8d67fc469689fd925f7b57761c333
                                        
                                            GET /adsid/integrator.js?domain=www.checktext.org HTTP/1.1 
Host: adservice.google.no
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         172.217.20.34
HTTP/1.1 200 OK
Content-Type: application/javascript; charset=UTF-8
                                        
P3P: CP="This is not a P3P policy! See http://support.google.com/accounts/answer/151657 for more info."
Timing-Allow-Origin: *
Cache-Control: private, no-cache, no-store
X-Content-Type-Options: nosniff
Content-Disposition: attachment; filename="f.txt"
Content-Encoding: gzip
Date: Wed, 15 Aug 2018 16:01:49 GMT
Server: cafe
X-XSS-Protection: 1; mode=block
Alt-Svc: quic="googleads.g.doubleclick.net:443"; ma=2592000; v="44,43,39,35",quic=":443"; ma=2592000; v="44,43,39,35"
Transfer-Encoding: chunked


--- Additional Info ---
Magic:  gzip compressed data, max compression
Size:   104
Md5:    835dc76a57166c8b5b88275a570d1891
Sha1:   0d7e8826520cdadf8db62583b25e26149af2c8ce
Sha256: 6441b99ce0ba328cabe2ff8d6167c3ac47f8d67fc469689fd925f7b57761c333
                                        
                                            GET /collect?v=1&_v=j68&a=1094121331&t=pageview&_s=1&dl=http%3A%2F%2Fwww.checktext.org%2F&ul=en-us&de=UTF-8&dt=Free%20Online%20Plagiarism%20Checker&sd=24-bit&sr=1176x885&vp=1159x754&je=1&fl=10.0%20r45&_u=KGBAgEYg~&jid=571707657&gjid=2126315485&cid=826259849.1534348909&tid=UA-75654015-4&_gid=1228457015.1534348909&z=433022809 HTTP/1.1 
Host: www.google-analytics.com
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         216.58.211.14
HTTP/1.1 200 OK
Content-Type: image/gif
                                        
Access-Control-Allow-Origin: *
Date: Tue, 07 Aug 2018 09:12:00 GMT
Pragma: no-cache
Expires: Mon, 01 Jan 1990 00:00:00 GMT
Last-Modified: Sun, 17 May 1998 03:00:00 GMT
X-Content-Type-Options: nosniff
Server: Golfe2
Content-Length: 35
Cache-Control: no-cache, no-store, must-revalidate
Age: 715789
Alt-Svc: quic=":443"; ma=2592000; v="44,43,39,35"


--- Additional Info ---
Magic:  GIF image data, version 89a, 1 x 1
Size:   35
Md5:    28d6814f309ea289f847c69cf91194c6
Sha1:   0f4e929dd5bb2564f7ab9c76338e04e292a42ace
Sha256: 8337212354871836e6763a41e615916c89bac5b3f1f0adf60ba43c7c806e1015
                                        
                                            GET /s/opensans/v15/mem8YaGs126MiZpBA-U1UQ.woff HTTP/1.1 
Host: fonts.gstatic.com
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://fonts.googleapis.com/css?family=Open+Sans%3A400italic%2C600italic%2C700italic%2C400%2C300%2C600%2C700&subset=latin%2Ccyrillic-ext%2Ccyrillic%2Cgreek-ext%2Cgreek%2Cvietnamese%2Clatin-ext&ver=234ac47d410a3b2bbd8ed3bb3daf1022
Origin: http://www.checktext.org

                                         
                                         216.58.211.3
HTTP/1.1 200 OK
Content-Type: font/woff
                                        
Accept-Ranges: bytes
Vary: Accept-Encoding
Content-Encoding: gzip
Access-Control-Allow-Origin: *
Timing-Allow-Origin: *
Content-Length: 89294
Date: Fri, 13 Jul 2018 08:26:47 GMT
Expires: Sat, 13 Jul 2019 08:26:47 GMT
Last-Modified: Wed, 11 Oct 2017 21:49:43 GMT
X-Content-Type-Options: nosniff
Server: sffe
X-XSS-Protection: 1; mode=block
Cache-Control: public, max-age=31536000
Age: 2878502


--- Additional Info ---
Magic:  gzip compressed data, max compression
Size:   89294
Md5:    2d10fc63ff112bf9ecc861cf2a47f08e
Sha1:   34a691b8581316b462ea861295a2c4565ab16ff0
Sha256: 71cc89ddbdf397619d34f9da4c5b22e96c09e3a4c874ff0cc0cce95eb33dc11b
                                        
                                            POST /GTSGIAG3 HTTP/1.1 
Host: ocsp.pki.goog
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Content-Length: 107
Content-Type: application/ocsp-request

                                         
                                         216.58.211.14
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Date: Wed, 15 Aug 2018 16:01:49 GMT
Cache-Control: public, max-age=86400
Server: ocsp_responder
Content-Length: 463
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN


--- Additional Info ---
Magic:  data
Size:   463
Md5:    c2d385af6750fee14fc06de9abe842c2
Sha1:   6b61b6dde1fa9e9fc611064c3c1f8e599a983513
Sha256: 5f009fe5067b3fd4dfd0eaa41846468ee72bfa2cb0646a71ec35f0cddbbfbefe
                                        
                                            POST /GTSGIAG3 HTTP/1.1 
Host: ocsp.pki.goog
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Content-Length: 107
Content-Type: application/ocsp-request

                                         
                                         216.58.211.14
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Date: Wed, 15 Aug 2018 16:01:49 GMT
Cache-Control: public, max-age=86400
Server: ocsp_responder
Content-Length: 463
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN


--- Additional Info ---
Magic:  data
Size:   463
Md5:    e62434f6aafabc4b4c5a2bdb980d0188
Sha1:   b8b06a23f05f45fbf8fa65ef6929c5391a6511e4
Sha256: ce46f23ba12e115a31e4a5bb02800777d35ed9f129e2e621646665489efca247
                                        
                                            GET /r/collect?t=dc&aip=1&_r=3&v=1&_v=j68&tid=UA-75654015-4&cid=826259849.1534348909&jid=571707657&gjid=2126315485&_gid=1228457015.1534348909&_u=KGBAgEYg~&z=865007090 HTTP/1.1 
Host: stats.g.doubleclick.net
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         64.233.164.154
HTTP/1.1 302 Found
Content-Type: text/html; charset=UTF-8
                                        
Location: https://www.google.com/ads/ga-audiences?v=1&aip=1&t=sr&_r=4&tid=UA-75654015-4&cid=826259849.1534348909&jid=571707657&_v=j68&z=865007090
Access-Control-Allow-Origin: *
Strict-Transport-Security: max-age=10886400; includeSubDomains; preload
Date: Wed, 15 Aug 2018 16:01:49 GMT
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Cache-Control: no-cache, no-store, must-revalidate
Last-Modified: Sun, 17 May 1998 03:00:00 GMT
Server: Golfe2
Content-Length: 364
Alt-Svc: quic=":443"; ma=2592000; v="44,43,39,35"


--- Additional Info ---
Magic:  HTML document text
Size:   364
Md5:    af4c1a1ace5e223902226b30cc03e822
Sha1:   f6728a5858b7d8f32de073bfaed503f7bffb5c88
Sha256: 017b16f0b3d9de5558977b60bbc03b19d449dd1d3358326c509e474edef7d4ca
                                        
                                            GET /translate_static/css/translateelement.css HTTP/1.1 
Host: translate.googleapis.com
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/css,*/*;q=0.1
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         216.58.211.10
HTTP/1.1 200 OK
Content-Type: text/css
                                        
Accept-Ranges: bytes
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 3619
Date: Wed, 15 Aug 2018 15:29:55 GMT
Expires: Wed, 15 Aug 2018 16:29:55 GMT
Last-Modified: Tue, 26 Jun 2018 22:15:00 GMT
X-Content-Type-Options: nosniff
Server: sffe
X-XSS-Protection: 1; mode=block
Cache-Control: public, max-age=3600
Age: 1914
Alt-Svc: quic=":443"; ma=2592000; v="44,43,39,35"


--- Additional Info ---
Magic:  gzip compressed data, max compression
Size:   3619
Md5:    bc8f584f2b5c7f9d76b422d2dd31dc07
Sha1:   84328284f26bbb14c2a196dbdc51ccc6fdc33d37
Sha256: 34550162ba6613152b7993d65296c454e0528312bde0dee387a59b9577733978
                                        
                                            GET /translate_static/js/element/main.js HTTP/1.1 
Host: translate.googleapis.com
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         216.58.211.10
HTTP/1.1 200 OK
Content-Type: text/javascript
                                        
Accept-Ranges: bytes
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 1524
Date: Wed, 15 Aug 2018 15:32:06 GMT
Expires: Wed, 15 Aug 2018 16:32:06 GMT
Last-Modified: Fri, 29 Jun 2018 18:15:00 GMT
X-Content-Type-Options: nosniff
Server: sffe
X-XSS-Protection: 1; mode=block
Cache-Control: public, max-age=3600
Age: 1783
Alt-Svc: quic=":443"; ma=2592000; v="44,43,39,35"


--- Additional Info ---
Magic:  gzip compressed data, max compression
Size:   1524
Md5:    06c912d71633c1766cca2b385d6554e2
Sha1:   31fa89466a59c6c1dba43f15352adbba91528189
Sha256: 5c1a678153f916068ca8a085991e599dbf2f74c5f0d1e86d5864145a09d67c86
                                        
                                            GET /element/TE_20180625_00/e/js/element/element_main.js HTTP/1.1 
Host: translate.googleapis.com
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         216.58.211.10
HTTP/1.1 200 OK
Content-Type: text/javascript
                                        
Accept-Ranges: bytes
Vary: Accept-Encoding
Content-Encoding: gzip
Access-Control-Allow-Origin: *
Content-Length: 87985
Date: Mon, 06 Aug 2018 01:51:11 GMT
Expires: Tue, 06 Aug 2019 01:51:11 GMT
Last-Modified: Mon, 25 Jun 2018 09:50:44 GMT
X-Content-Type-Options: nosniff
Server: sffe
X-XSS-Protection: 1; mode=block
Cache-Control: public, max-age=31536000
Age: 828638
Alt-Svc: quic=":443"; ma=2592000; v="44,43,39,35"


--- Additional Info ---
Magic:  gzip compressed data, max compression
Size:   87985
Md5:    4f7e0d4588c2d89fc0bdcb2d359bea90
Sha1:   804c30a825be1629a432e53849a856ff88f85577
Sha256: cf558465beb554b73874b1556bf498ed8d7842cb8543a2dcf7615e4ef04023ad
                                        
                                            POST /GTSGIAG3 HTTP/1.1 
Host: ocsp.pki.goog
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Content-Length: 107
Content-Type: application/ocsp-request

                                         
                                         216.58.211.14
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Date: Wed, 15 Aug 2018 16:01:49 GMT
Cache-Control: public, max-age=86400
Server: ocsp_responder
Content-Length: 463
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN


--- Additional Info ---
Magic:  data
Size:   463
Md5:    428911a7eb83c83be2cd8b7f00d6ab94
Sha1:   6137846b59d48f5b131ab663af5317fe43eccf9d
Sha256: f548cdd880759452d6570a9adfaf0e946721801c5252c53b2a5c81d7dcd7856e
                                        
                                            GET /pagead/js/r20180808/r20180604/show_ads_impl.js HTTP/1.1 
Host: pagead2.googlesyndication.com
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         172.217.20.34
HTTP/1.1 200 OK
Content-Type: text/javascript; charset=UTF-8
                                        
P3P: policyref="http://www.googleadservices.com/pagead/p3p.xml", CP="NOI DEV PSA PSD IVA IVD OTP OUR OTR IND OTC"
Timing-Allow-Origin: *
Vary: Accept-Encoding
Date: Wed, 15 Aug 2018 16:01:49 GMT
Expires: Wed, 15 Aug 2018 16:01:49 GMT
Cache-Control: private, max-age=1209600
Etag: 15582916598553066797
X-Content-Type-Options: nosniff
Content-Disposition: attachment; filename="f.txt"
Content-Encoding: gzip
Server: cafe
Content-Length: 71310
X-XSS-Protection: 1; mode=block


--- Additional Info ---
Magic:  gzip compressed data, max compression
Size:   71310
Md5:    372c882378149c92b15113a6213dc215
Sha1:   744ca196d117971832fe0034f83b3a2edc525685
Sha256: f5defc1a4d818e9e11bc4e2df273af80a9c094fb3604ccc8b8cd28420a74e395
                                        
                                            GET /ads/ga-audiences?v=1&aip=1&t=sr&_r=4&tid=UA-75654015-4&cid=826259849.1534348909&jid=571707657&_v=j68&z=865007090 HTTP/1.1 
Host: www.google.com
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         216.58.211.4
HTTP/1.1 302 Found
Content-Type: text/html; charset=UTF-8
                                        
P3P: policyref="https://www.googleadservices.com/pagead/p3p.xml", CP="NOI DEV PSA PSD IVA IVD OTP OUR OTR IND OTC"
Timing-Allow-Origin: *
Date: Wed, 15 Aug 2018 16:01:50 GMT
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Cache-Control: no-cache, must-revalidate
Location: https://www.google.no/ads/ga-audiences?v=1&aip=1&t=sr&_r=4&tid=UA-75654015-4&cid=826259849.1534348909&jid=571707657&_v=j68&z=865007090&slf_rd=1&random=1534183932
X-Content-Type-Options: nosniff
Server: cafe
Content-Length: 0
X-XSS-Protection: 1; mode=block
Alt-Svc: quic=":443"; ma=2592000; v="44,43,39,35"


--- Additional Info ---
                                        
                                            GET /pagead/js/r20180808/r20180604/osd.js HTTP/1.1 
Host: pagead2.googlesyndication.com
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         172.217.20.34
HTTP/1.1 200 OK
Content-Type: text/javascript; charset=UTF-8
                                        
P3P: policyref="https://www.googleadservices.com/pagead/p3p.xml", CP="NOI DEV PSA PSD IVA IVD OTP OUR OTR IND OTC"
Timing-Allow-Origin: *
Vary: Accept-Encoding
Date: Thu, 09 Aug 2018 05:54:37 GMT
Expires: Thu, 23 Aug 2018 05:54:37 GMT
Etag: 15787436124949168696
X-Content-Type-Options: nosniff
Content-Disposition: attachment; filename="f.txt"
Content-Encoding: gzip
Server: cafe
Content-Length: 26275
X-XSS-Protection: 1; mode=block
Cache-Control: public, max-age=1209600
Age: 554833
Alt-Svc: quic="googleads.g.doubleclick.net:443"; ma=2592000; v="44,43,39,35",quic=":443"; ma=2592000; v="44,43,39,35"


--- Additional Info ---
Magic:  gzip compressed data, max compression
Size:   26275
Md5:    3f5d4c7c51f3ed855dc88293ab6588f9
Sha1:   b7575aa838610988613f207085993313de51b12f
Sha256: f9dd5eb77b0deb9c34a1d72130e7bfb0bb954c3d4845cac23149459c59476d97
                                        
                                            GET /pub-config/r20160913/ca-pub-6514833317345920.js HTTP/1.1 
Host: pagead2.googlesyndication.com
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         172.217.20.34
HTTP/1.1 200 OK
Content-Type: text/javascript
                                        
Accept-Ranges: bytes
Vary: Accept-Encoding
Content-Length: 125
Date: Wed, 15 Aug 2018 16:01:50 GMT
Expires: Thu, 16 Aug 2018 04:01:50 GMT
Cache-Control: public, max-age=43200
Last-Modified: Wed, 15 Aug 2018 05:54:42 GMT
X-Content-Type-Options: nosniff
Content-Encoding: gzip
Server: sffe
X-XSS-Protection: 1; mode=block
Alt-Svc: quic="googleads.g.doubleclick.net:443"; ma=2592000; v="44,43,39,35",quic=":443"; ma=2592000; v="44,43,39,35"


--- Additional Info ---
Magic:  gzip compressed data, max compression
Size:   125
Md5:    21aea2dae0239adff4f9f063cdacfc76
Sha1:   ce64c497ac1dd86393da79e8cea239de113c1de7
Sha256: a59ee78166b8467dd7dd8c7acb03d8df7d16cf4a04f45c8558366df1c33b868f
                                        
                                            GET /favicon.ico HTTP/1.1 
Host: www.checktext.org
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Cookie: _ga=GA1.2.826259849.1534348909; _gid=GA1.2.1228457015.1534348909; _gat=1

                                         
                                         188.120.244.139
HTTP/1.1 200 OK
Content-Type: image/vnd.microsoft.icon
                                        
Server: nginx/1.12.1
Date: Wed, 15 Aug 2018 16:01:48 GMT
Content-Length: 894
Connection: keep-alive
X-Frame-Options: SAMEORIGIN
Last-Modified: Sat, 13 May 2017 17:38:20 GMT
Etag: "37e-54f6b49b13b00"
Accept-Ranges: bytes
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Cache-Control: s-maxage=10


--- Additional Info ---
Magic:  MS Windows icon resource - 1 icon
Size:   894
Md5:    acb83fe13768d1f3c3eaf7211ee175b5
Sha1:   b574a5071d36a5482b529fa04751b5d6926dba32
Sha256: 06fba1a4adb21e1536e735fc1a8804e626dd338d899a87cd4f53fb285d8d0dcc
                                        
                                            GET /js/app/worker.js HTTP/1.1 
Host: www.checktext.org
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Cookie: _ga=GA1.2.826259849.1534348909; _gid=GA1.2.1228457015.1534348909; _gat=1

                                         
                                         188.120.244.139
HTTP/1.1 200 OK
Content-Type: application/javascript; charset=UTF-8
                                        
Server: nginx/1.12.1
Date: Wed, 15 Aug 2018 16:01:48 GMT
Content-Length: 2610
Last-Modified: Sat, 13 May 2017 17:38:34 GMT
Connection: keep-alive
Etag: "5917449a-a32"
Accept-Ranges: bytes


--- Additional Info ---
Magic:  UTF-8 Unicode C program text, with CRLF line terminators
Size:   2610
Md5:    9c27c7fbe6d0acb3f96dbcb326812f75
Sha1:   31318f8ea5e2f3f732d6d7977f95e8536cef33e1
Sha256: 012633f0fcbd4f46861908ec841e80691bd494afbbf6fe261c6b46dfb37d5f13
                                        
                                            GET /pagead/html/r20180808/r20180604/zrt_lookup.html HTTP/1.1 
Host: googleads.g.doubleclick.net
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         172.217.20.34
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
                                        
P3P: policyref="https://googleads.g.doubleclick.net/pagead/gcn_p3p_.xml", CP="CURa ADMa DEVa TAIo PSAo PSDo OUR IND UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"
Timing-Allow-Origin: *
Vary: Accept-Encoding
Date: Thu, 09 Aug 2018 05:27:53 GMT
Expires: Thu, 23 Aug 2018 05:27:53 GMT
Etag: 15840095812326030575
X-Content-Type-Options: nosniff
Content-Encoding: gzip
Server: cafe
Content-Length: 6941
X-XSS-Protection: 1; mode=block
Cache-Control: public, max-age=1209600
Age: 556437
Alt-Svc: quic="googleads.g.doubleclick.net:443"; ma=2592000; v="44,43,39,35",quic=":443"; ma=2592000; v="44,43,39,35"


--- Additional Info ---
Magic:  gzip compressed data, max compression
Size:   6941
Md5:    0bbea400a15dacfb0f3f085ce39547c5
Sha1:   ea946733550234275b77563a7021ac64c625737b
Sha256: f589c0f5fb09d3a25b20f609194f92f4a14dd5a8528bd2b56e06d01e914a1d60
                                        
                                            GET /pagead/ads?client=ca-pub-6514833317345920&output=html&h=90&slotname=3849169118&adk=2676872739&adf=807048394&w=1119&fwrn=4&fwrnh=100&lmt=1534348907&rafmt=1&guci=1.2.0.0.2.2.0&format=1119x90&url=http%3A%2F%2Fwww.checktext.org%2F&ea=0&flash=10.0.45&fwr=0&rh=0&rw=1119&resp_fmts=3&wgl=0&adsid=NT&dt=1534348909767&bpp=40&fdt=48&idt=233&shv=r20180808&cbv=r20180604&saldr=aa&abxe=1&correlator=1078030122705&frm=20&pv=2&ga_vid=826259849.1534348909&ga_sid=1534348910&ga_hid=1094121331&ga_fc=0&icsg=0&dssz=0&mdo=0&mso=0&u_tz=120&u_his=1&u_java=1&u_h=885&u_w=1176&u_ah=855&u_aw=1176&u_cd=24&u_nplug=10&u_nmime=92&adx=20&ady=666&biw=1159&bih=754&scr_x=0&scr_y=0&eid=368226400%2C21062171%2C21060853%2C21061319&oid=3&rx=0&eae=4&fc=1808&brdim=%2C%2C-4%2C-4%2C1176%2C0%2C1184%2C863%2C1176%2C754&vis=0&rsz=%7C%7C%7C&abl=CS&ppjl=u&pfx=0&fu=144&bc=1&ifi=1&dtd=258 HTTP/1.1 
Host: googleads.g.doubleclick.net
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         172.217.20.34
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
                                        
P3P: policyref="https://googleads.g.doubleclick.net/pagead/gcn_p3p_.xml", CP="CURa ADMa DEVa TAIo PSAo PSDo OUR IND UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"
Timing-Allow-Origin: *
X-Content-Type-Options: nosniff
Content-Encoding: gzip
Date: Wed, 15 Aug 2018 16:01:50 GMT
Server: cafe
Cache-Control: private
X-XSS-Protection: 1; mode=block
Set-Cookie: test_cookie=CheckForPermission; expires=Wed, 15-Aug-2018 16:16:50 GMT; path=/; domain=.doubleclick.net
Alt-Svc: quic="googleads.g.doubleclick.net:443"; ma=2592000; v="44,43,39,35",quic=":443"; ma=2592000; v="44,43,39,35"
Expires: Wed, 15 Aug 2018 16:01:50 GMT
Transfer-Encoding: chunked


--- Additional Info ---
Magic:  gzip compressed data, max compression
Size:   18765
Md5:    ceee30fd4a32cfda30dcfcbb9ddcd21e
Sha1:   ded4535a0240d67bb58271726696b19c710a63d1
Sha256: 3b008da077e9ea39f60960ffc42997ad37f0cfb3ec9dc2dcde33269871f7eae6
                                        
                                            GET /ads/ga-audiences?v=1&aip=1&t=sr&_r=4&tid=UA-75654015-4&cid=826259849.1534348909&jid=571707657&_v=j68&z=865007090&slf_rd=1&random=1534183932 HTTP/1.1 
Host: www.google.no
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         216.58.207.227
HTTP/1.1 200 OK
Content-Type: image/gif
                                        
P3P: policyref="https://www.googleadservices.com/pagead/p3p.xml", CP="NOI DEV PSA PSD IVA IVD OTP OUR OTR IND OTC"
Timing-Allow-Origin: *
Date: Wed, 15 Aug 2018 16:01:50 GMT
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Cache-Control: no-cache, must-revalidate
X-Content-Type-Options: nosniff
Server: cafe
Content-Length: 42
X-XSS-Protection: 1; mode=block
Alt-Svc: quic=":443"; ma=2592000; v="44,43,39,35"


--- Additional Info ---
Magic:  GIF image data, version 89a, 1 x 1
Size:   42
Md5:    d89746888da2d9510b64a9f031eaecd5
Sha1:   d5fceb6532643d0d84ffe09c40c481ecdf59e15a
Sha256: ef1955ae757c8b966c83248350331bd3a30f658ced11f387f8ebf05ab3368629
                                        
                                            POST /gsorganizationvalsha2g2 HTTP/1.1 
Host: ocsp2.globalsign.com
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Content-Length: 111
Content-Type: application/ocsp-request

                                         
                                         104.18.20.226
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Date: Wed, 15 Aug 2018 16:01:51 GMT
Content-Length: 1570
Connection: keep-alive
Set-Cookie: __cfduid=d3c540405743c7e7b25d573a97cb18b001534348911; expires=Thu, 15-Aug-19 16:01:51 GMT; path=/; domain=.globalsign.com; HttpOnly
Last-Modified: Wed, 15 Aug 2018 13:24:22 GMT
Expires: Sun, 19 Aug 2018 13:24:22 GMT
Etag: "30ccddcbe30fb3af3f5a1fc212513b2570238b05"
Cache-Control: public, no-transform, must-revalidate, s-maxage=3600
CF-Cache-Status: HIT
Vary: Accept-Encoding
Server: cloudflare
CF-RAY: 44ace1d5f0194255-OSL


--- Additional Info ---
Magic:  data
Size:   1570
Md5:    11662cf63dffd45bfbf78fd5bcd8692a
Sha1:   30ccddcbe30fb3af3f5a1fc212513b2570238b05
Sha256: 9fadfcbe6a761e32173a0dd41e5a57b68747a18e777a678e419caf1a6ae64d94
                                        
                                            GET /pagead/adview?ai=CLEskbk50W5idLIq96gSdtoPIBLSgyKxSuLTmmbYHk6ui2eIKEAEgpefwF2DD3KSFmBigAf_bisgDyAEDqAMByAPJBKoEmQFP0AFTYMIDaa41rDGS5u1-Eyjffo2a8gnJiEop6PV1gDvx-taxvO9dMEhzDJtw_Qt1aPnkoK-oeRYy9sgD3o2r96WDNwFMQar7ViNr7-6JTlIqD4WKR3HFOoZy7aUo4UGagn1sk9g-PqjzncBLO49C8uE_NbRN6x3m38Wh_jgGV_Enq03MJ2uKSCO4pOIqxe_DaI6WSwi393TABJGZjePBAZIFBAgEGAGSBQQIBRgEoAYDgAeG85wJqAeOzhuoB9XJG6gH2csbqAfPzBuoB6a-G6gHmM4bqAfpzRvYBwHyBwQQ47kH0ggJCIDhgBAQARgCgAoB2BMM&sigh=obgTcjA_2M8&tpd=AGWhJmtcBtDhGkWD3XJJrrHbXZSkumx1cYjMUWG0Mn0h4V5xaQ&vis=0 HTTP/1.1 
Host: googleads.g.doubleclick.net
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: https://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-6514833317345920&output=html&h=90&slotname=3849169118&adk=2676872739&adf=807048394&w=1119&fwrn=4&fwrnh=100&lmt=1534348907&rafmt=1&guci=1.2.0.0.2.2.0&format=1119x90&url=http%3A%2F%2Fwww.checktext.org%2F&ea=0&flash=10.0.45&fwr=0&rh=0&rw=1119&resp_fmts=3&wgl=0&adsid=NT&dt=1534348909767&bpp=40&fdt=48&idt=233&shv=r20180808&cbv=r20180604&saldr=aa&abxe=1&correlator=1078030122705&frm=20&pv=2&ga_vid=826259849.1534348909&ga_sid=1534348910&ga_hid=1094121331&ga_fc=0&icsg=0&dssz=0&mdo=0&mso=0&u_tz=120&u_his=1&u_java=1&u_h=885&u_w=1176&u_ah=855&u_aw=1176&u_cd=24&u_nplug=10&u_nmime=92&adx=20&ady=666&biw=1159&bih=754&scr_x=0&scr_y=0&eid=368226400%2C21062171%2C21060853%2C21061319&oid=3&rx=0&eae=4&fc=1808&brdim=%2C%2C-4%2C-4%2C1176%2C0%2C1184%2C863%2C1176%2C754&vis=0&rsz=%7C%7C%7C&abl=CS&ppjl=u&pfx=0&fu=144&bc=1&ifi=1&dtd=258
Cookie: test_cookie=CheckForPermission

                                         
                                         172.217.20.34
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
                                        
P3P: policyref="https://googleads.g.doubleclick.net/pagead/gcn_p3p_.xml", CP="CURa ADMa DEVa TAIo PSAo PSDo OUR IND UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"
Timing-Allow-Origin: *
X-Content-Type-Options: nosniff
Date: Wed, 15 Aug 2018 16:01:51 GMT
Server: cafe
Content-Length: 0
X-XSS-Protection: 1; mode=block
Set-Cookie: IDE=AHWqTUn5lG-66qLuTBJ_pSRK6bz-_acNekqpIFDJPJfUQYZ8Xhu6kkC9_CDRO0KG; expires=Fri, 14-Aug-2020 16:01:51 GMT; path=/; domain=.doubleclick.net; HttpOnly test_cookie=; domain=.doubleclick.net; path=/; expires=Mon, 21 Jul 2008 23:59:00 GMT
Alt-Svc: quic="googleads.g.doubleclick.net:443"; ma=2592000; v="44,43,39,35",quic=":443"; ma=2592000; v="44,43,39,35"
Expires: Wed, 15 Aug 2018 16:01:51 GMT
Cache-Control: private


--- Additional Info ---
                                        
                                            GET /js/app/textanalyzer.js HTTP/1.1 
Host: www.checktext.org
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Cookie: _ga=GA1.2.826259849.1534348909; _gid=GA1.2.1228457015.1534348909; _gat=1

                                         
                                         188.120.244.139
HTTP/1.1 200 OK
Content-Type: application/javascript; charset=UTF-8
                                        
Server: nginx/1.12.1
Date: Wed, 15 Aug 2018 16:01:48 GMT
Content-Length: 52336
Last-Modified: Tue, 24 Jul 2018 22:20:06 GMT
Connection: keep-alive
Etag: "5b57a616-cc70"
Accept-Ranges: bytes


--- Additional Info ---
Magic:  UTF-8 Unicode C++ program text, with CRLF line terminators
Size:   52336
Md5:    56862344a4b58d803219199b54f313a1
Sha1:   44470911eefc0389d5581dbbd4beab1d7f030d4e
Sha256: 8279c65b7877d55b814d5183fba76ebdeab9146d6abecec20e2d8bf338078b8a
                                        
                                            POST /GTSGIAG3 HTTP/1.1 
Host: ocsp.pki.goog
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Content-Length: 107
Content-Type: application/ocsp-request

                                         
                                         216.58.211.14
HTTP/1.1 200 OK
Content-Type: application/ocsp-response
                                        
Date: Wed, 15 Aug 2018 16:01:51 GMT
Cache-Control: public, max-age=86400
Server: ocsp_responder
Content-Length: 463
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN


--- Additional Info ---
Magic:  data
Size:   463
Md5:    d55cb6b89a7368128b05d7c1917837c1
Sha1:   92724ad99b3be4ddb631478f1c66a51b482bceb2
Sha256: aa970fba65887113bc5ad41fb0b7d024e13a9d2b3543ca74d80555e999607371
                                        
                                            GET /pagead/ads?client=ca-pub-6514833317345920&output=html&adk=1812271804&adf=807048394&lmt=1534348907&plat=1%3A1081352%2C2%3A1082376%2C8%3A32776%2C9%3A32776%2C16%3A8388608%2C26%3A32768%2C30%3A1048576&guci=1.2.0.0.2.2.0&format=0x0&url=http%3A%2F%2Fwww.checktext.org%2F&ea=0&flash=10.0.45&pra=5&wgl=0&adsid=NT&dt=1534348909767&bpp=902&fdt=905&idt=1047&shv=r20180808&cbv=r20180604&saldr=aa&abxe=1&prev_fmts=1119x90&nras=1&correlator=1078030122705&frm=20&pv=1&ga_vid=826259849.1534348909&ga_sid=1534348910&ga_hid=1094121331&ga_fc=0&icsg=0&dssz=0&mdo=0&mso=0&u_tz=120&u_his=1&u_java=1&u_h=885&u_w=1176&u_ah=855&u_aw=1176&u_cd=24&u_nplug=10&u_nmime=92&adx=0&ady=0&biw=1159&bih=754&scr_x=0&scr_y=0&eid=368226400%2C21062171%2C21060853%2C21061319&oid=3&rx=0&eae=6&fc=1808&brdim=%2C%2C-4%2C-4%2C1176%2C0%2C1184%2C863%2C1176%2C754&vis=0&rsz=%7C%7Cs%7C&abl=NS&ppjl=u&fu=16&bc=1&ifi=1&dtd=1073 HTTP/1.1 
Host: googleads.g.doubleclick.net
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         172.217.20.34
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
                                        
P3P: policyref="https://googleads.g.doubleclick.net/pagead/gcn_p3p_.xml", CP="CURa ADMa DEVa TAIo PSAo PSDo OUR IND UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"
Timing-Allow-Origin: *
X-Content-Type-Options: nosniff
Content-Encoding: gzip
Date: Wed, 15 Aug 2018 16:01:51 GMT
Server: cafe
Cache-Control: private
X-XSS-Protection: 1; mode=block
Set-Cookie: test_cookie=CheckForPermission; expires=Wed, 15-Aug-2018 16:16:51 GMT; path=/; domain=.doubleclick.net
Alt-Svc: quic="googleads.g.doubleclick.net:443"; ma=2592000; v="44,43,39,35",quic=":443"; ma=2592000; v="44,43,39,35"
Expires: Wed, 15 Aug 2018 16:01:51 GMT
Transfer-Encoding: chunked


--- Additional Info ---
Magic:  gzip compressed data, max compression
Size:   699
Md5:    bb7e38c1596a2068e47f8fb4f49caf4b
Sha1:   310f2324f3d8d34fd91e954fa037e6447c9e79bb
Sha256: b632fb7d2c1db717db86f3199c3a01677e57c7959a6b2b6b6eb61f1a32844538
                                        
                                            GET /resource/10k_frequent_words_syllables.txt HTTP/1.1 
Host: www.checktext.org
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/
Cookie: _ga=GA1.2.826259849.1534348909; _gid=GA1.2.1228457015.1534348909; _gat=1

                                         
                                         188.120.244.139
HTTP/1.1 200 OK
Content-Type: text/plain; charset=UTF-8
                                        
Server: nginx/1.12.1
Date: Wed, 15 Aug 2018 16:01:48 GMT
Content-Length: 108576
Connection: keep-alive
X-Frame-Options: SAMEORIGIN
Last-Modified: Sat, 13 May 2017 17:39:02 GMT
Etag: "1a820-54f6b4c321980"
Accept-Ranges: bytes
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Cache-Control: s-maxage=10


--- Additional Info ---
Magic:  ASCII text, with CRLF line terminators
Size:   108576
Md5:    d2e707e15706d5178023b030060196b5
Sha1:   2e06755122f256697db95a0834e1d7bbccc3d9fb
Sha256: 2d8049f1ec06ee718276f4495006b31a54a02281c05efabe9cd6357d6202023a
                                        
                                            GET /metrika/watch.js HTTP/1.1 
Host: mc.yandex.ru
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         77.88.21.119
HTTP/1.1 200 OK
Content-Type: application/javascript
                                        
Server: nginx/1.12.2
Date: Wed, 15 Aug 2018 16:01:51 GMT
Content-Length: 42947
Last-Modified: Tue, 14 Aug 2018 14:39:00 GMT
Connection: keep-alive
Etag: "5b72e984-a7c3"
Content-Encoding: gzip
Expires: Wed, 15 Aug 2018 17:01:51 GMT
Cache-Control: max-age=3600
Access-Control-Allow-Origin: *
Strict-Transport-Security: max-age=31536000


--- Additional Info ---
Magic:  gzip compressed data, from Unix, last modified: Tue Jul 24 11:17:15 2018
Size:   42947
Md5:    c9269cedd5a395b55da5dd78d766c202
Sha1:   e36de1a7040e7bddb33b7f118ac304a0d1c56edf
Sha256: 43d7b8fadbaed0c32bcccdc6e6fec4eeb9ddce6fcd7e2c3625e219f97ab072a7
                                        
                                            GET /pagead/js/r20180808/r20110914/client/ext/m_js_controller.js HTTP/1.1 
Host: tpc.googlesyndication.com
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: https://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-6514833317345920&output=html&h=90&slotname=3849169118&adk=2676872739&adf=807048394&w=1119&fwrn=4&fwrnh=100&lmt=1534348907&rafmt=1&guci=1.2.0.0.2.2.0&format=1119x90&url=http%3A%2F%2Fwww.checktext.org%2F&ea=0&flash=10.0.45&fwr=0&rh=0&rw=1119&resp_fmts=3&wgl=0&adsid=NT&dt=1534348909767&bpp=40&fdt=48&idt=233&shv=r20180808&cbv=r20180604&saldr=aa&abxe=1&correlator=1078030122705&frm=20&pv=2&ga_vid=826259849.1534348909&ga_sid=1534348910&ga_hid=1094121331&ga_fc=0&icsg=0&dssz=0&mdo=0&mso=0&u_tz=120&u_his=1&u_java=1&u_h=885&u_w=1176&u_ah=855&u_aw=1176&u_cd=24&u_nplug=10&u_nmime=92&adx=20&ady=666&biw=1159&bih=754&scr_x=0&scr_y=0&eid=368226400%2C21062171%2C21060853%2C21061319&oid=3&rx=0&eae=4&fc=1808&brdim=%2C%2C-4%2C-4%2C1176%2C0%2C1184%2C863%2C1176%2C754&vis=0&rsz=%7C%7C%7C&abl=CS&ppjl=u&pfx=0&fu=144&bc=1&ifi=1&dtd=258

                                         
                                         216.58.211.1
HTTP/1.1 200 OK
Content-Type: text/javascript; charset=UTF-8
                                        
P3P: policyref="https://www.googleadservices.com/pagead/p3p.xml", CP="NOI DEV PSA PSD IVA IVD OTP OUR OTR IND OTC"
Timing-Allow-Origin: *
Vary: Accept-Encoding
Date: Wed, 08 Aug 2018 21:57:54 GMT
Expires: Wed, 22 Aug 2018 21:57:54 GMT
Etag: 10106167187193951682
X-Content-Type-Options: nosniff
Content-Disposition: attachment; filename="f.txt"
Content-Encoding: gzip
Server: cafe
Content-Length: 13259
X-XSS-Protection: 1; mode=block
Cache-Control: public, max-age=1209600
Age: 583437
Alt-Svc: quic=":443"; ma=2592000; v="44,43,39,35"


--- Additional Info ---
Magic:  gzip compressed data, max compression
Size:   13259
Md5:    85eace4dc0e49a9d59a668812944b05a
Sha1:   e74a28aad01cf9d0a3fe0dd8fb8e69abcbe0836b
Sha256: 33c05a9c6219cb2d6ddc8aeba40804e05dc34c705c3ecc9be261d613f2c7fb5e
                                        
                                            GET /pagead/js/r20180808/r20110914/abg_lite.js HTTP/1.1 
Host: tpc.googlesyndication.com
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: https://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-6514833317345920&output=html&h=90&slotname=3849169118&adk=2676872739&adf=807048394&w=1119&fwrn=4&fwrnh=100&lmt=1534348907&rafmt=1&guci=1.2.0.0.2.2.0&format=1119x90&url=http%3A%2F%2Fwww.checktext.org%2F&ea=0&flash=10.0.45&fwr=0&rh=0&rw=1119&resp_fmts=3&wgl=0&adsid=NT&dt=1534348909767&bpp=40&fdt=48&idt=233&shv=r20180808&cbv=r20180604&saldr=aa&abxe=1&correlator=1078030122705&frm=20&pv=2&ga_vid=826259849.1534348909&ga_sid=1534348910&ga_hid=1094121331&ga_fc=0&icsg=0&dssz=0&mdo=0&mso=0&u_tz=120&u_his=1&u_java=1&u_h=885&u_w=1176&u_ah=855&u_aw=1176&u_cd=24&u_nplug=10&u_nmime=92&adx=20&ady=666&biw=1159&bih=754&scr_x=0&scr_y=0&eid=368226400%2C21062171%2C21060853%2C21061319&oid=3&rx=0&eae=4&fc=1808&brdim=%2C%2C-4%2C-4%2C1176%2C0%2C1184%2C863%2C1176%2C754&vis=0&rsz=%7C%7C%7C&abl=CS&ppjl=u&pfx=0&fu=144&bc=1&ifi=1&dtd=258

                                         
                                         216.58.211.1
HTTP/1.1 200 OK
Content-Type: text/javascript; charset=UTF-8
                                        
P3P: policyref="https://www.googleadservices.com/pagead/p3p.xml", CP="NOI DEV PSA PSD IVA IVD OTP OUR OTR IND OTC"
Timing-Allow-Origin: *
Vary: Accept-Encoding
Date: Wed, 08 Aug 2018 21:54:23 GMT
Expires: Wed, 22 Aug 2018 21:54:23 GMT
Etag: 3265378505179751547
X-Content-Type-Options: nosniff
Content-Disposition: attachment; filename="f.txt"
Content-Encoding: gzip
Server: cafe
Content-Length: 13153
X-XSS-Protection: 1; mode=block
Cache-Control: public, max-age=1209600
Age: 583648
Alt-Svc: quic=":443"; ma=2592000; v="44,43,39,35"


--- Additional Info ---
Magic:  gzip compressed data, max compression
Size:   13153
Md5:    e33a188337d2f66bdc21f929597cf573
Sha1:   2d28884fc65ca4d40cc96705799a0f475e69a82a
Sha256: 5fee8a418197d24bf551343757a93601752ca3cb4b4a0d94f64367ea47e8bba0
                                        
                                            GET /images/branding/product/2x/translate_24dp.png HTTP/1.1 
Host: www.gstatic.com
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: https://translate.googleapis.com/translate_static/css/translateelement.css

                                         
                                         216.58.211.3
HTTP/1.1 200 OK
Content-Type: image/png
                                        
Accept-Ranges: bytes
Vary: Origin
Content-Length: 1847
Date: Tue, 31 Jul 2018 16:42:52 GMT
Expires: Wed, 31 Jul 2019 16:42:52 GMT
Last-Modified: Thu, 21 Apr 2016 03:17:22 GMT
X-Content-Type-Options: nosniff
Server: sffe
X-XSS-Protection: 1; mode=block
Cache-Control: public, max-age=31536000
Age: 1293540
Alt-Svc: quic=":443"; ma=2592000; v="44,43,39,35"


--- Additional Info ---
Magic:  PNG image, 48 x 48, 8-bit/color RGBA, non-interlaced
Size:   1847
Md5:    bfa09d19aea98592c45ce0a814f0eb2c
Sha1:   5db965a451d9b6b3a5156836182abe8240d4a0de
Sha256: 5fe03bfd95a2d4e640ed7d04dcb08ef991c327a5ab6f6fdb9eb06e1efc76af30
                                        
                                            GET /translate_a/l?client=te&alpha=true&hl=en&cb=_callbacks____0jkvbq4uf HTTP/1.1 
Host: translate.googleapis.com
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         216.58.211.10
HTTP/1.1 200 OK
Content-Type: text/javascript; charset=UTF-8
                                        
Date: Wed, 15 Aug 2018 16:01:52 GMT
Expires: Wed, 15 Aug 2018 16:01:52 GMT
Cache-Control: private, max-age=86400
Content-Language: en
X-Content-Type-Options: nosniff
Content-Disposition: attachment; filename="f.txt"
Content-Encoding: gzip
Server: HTTP server (unknown)
X-XSS-Protection: 1; mode=block
Alt-Svc: quic=":443"; ma=2592000; v="44,43,39,35"
Transfer-Encoding: chunked


--- Additional Info ---
Magic:  gzip compressed data, max compression
Size:   920
Md5:    e78332de3ac46b051d652b299ec5dd91
Sha1:   a31d9e608c0d1290eeaef6a075f88668f59e83c7
Sha256: 120f092f07d99919cf7b18146a60c8f0d135a7cd72402692f3abd47f3d501980
                                        
                                            GET /images/branding/product/1x/translate_24dp.png HTTP/1.1 
Host: www.gstatic.com
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         216.58.211.3
HTTP/1.1 200 OK
Content-Type: image/png
                                        
Accept-Ranges: bytes
Vary: Origin
Content-Length: 825
Date: Tue, 31 Jul 2018 23:50:10 GMT
Expires: Wed, 31 Jul 2019 23:50:10 GMT
Last-Modified: Thu, 21 Apr 2016 03:17:22 GMT
X-Content-Type-Options: nosniff
Server: sffe
X-XSS-Protection: 1; mode=block
Cache-Control: public, max-age=31536000
Age: 1267902
Alt-Svc: quic=":443"; ma=2592000; v="44,43,39,35"


--- Additional Info ---
Magic:  PNG image, 24 x 24, 8-bit/color RGBA, non-interlaced
Size:   825
Md5:    55ff382a8b09329e3230a1797eb8f5fd
Sha1:   026ae089006a674da7dcc9bf6b986c5d59e75478
Sha256: 1bb2279aed6bc1438d2b17a5ffcbac9d37864582aedeeec8d301eab162b2c213
                                        
                                            GET /images/cleardot.gif HTTP/1.1 
Host: www.google.com
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         216.58.211.4
HTTP/1.1 200 OK
Content-Type: image/gif
                                        
Accept-Ranges: bytes
Content-Length: 43
Date: Wed, 15 Aug 2018 16:01:52 GMT
Expires: Wed, 15 Aug 2018 16:01:52 GMT
Cache-Control: private, max-age=31536000
Last-Modified: Thu, 08 Dec 2016 01:00:57 GMT
X-Content-Type-Options: nosniff
Server: sffe
X-XSS-Protection: 1; mode=block
Alt-Svc: quic=":443"; ma=2592000; v="44,43,39,35"


--- Additional Info ---
Magic:  GIF image data, version 89a, 1 x 1
Size:   43
Md5:    fc94fb0c3ed8a8f909dbc7630a0987ff
Sha1:   56d45f8a17f5078a20af9962c992ca4678450765
Sha256: 2dfe28cbdb83f01c940de6a88ab86200154fd772d568035ac568664e52068363
                                        
                                            GET /translate_static/img/te_ctrl3.gif HTTP/1.1 
Host: translate.googleapis.com
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         216.58.211.10
HTTP/1.1 200 OK
Content-Type: image/gif
                                        
Accept-Ranges: bytes
Content-Length: 1412
Date: Tue, 10 Jul 2018 00:36:34 GMT
Expires: Wed, 10 Jul 2019 00:36:34 GMT
Last-Modified: Tue, 15 Aug 2017 20:15:00 GMT
X-Content-Type-Options: nosniff
Server: sffe
X-XSS-Protection: 1; mode=block
Cache-Control: public, max-age=31536000
Age: 3165918
Alt-Svc: quic=":443"; ma=2592000; v="44,43,39,35"


--- Additional Info ---
Magic:  GIF image data, version 89a, 84 x 19
Size:   1412
Md5:    9afe50090c0bc612953d081295eab5b1
Sha1:   71a4da2a622879c29176ecfa5afe1bbe3e8cfa40
Sha256: d228d0256370863119c043f1e5ca8f3930f6999bd9f250434b6d8935f45dc171
                                        
                                            GET /pagead/js/r20180808/r20110914/client/ext/m_qs_click_protection.js HTTP/1.1 
Host: tpc.googlesyndication.com
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: https://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-6514833317345920&output=html&h=90&slotname=3849169118&adk=2676872739&adf=807048394&w=1119&fwrn=4&fwrnh=100&lmt=1534348907&rafmt=1&guci=1.2.0.0.2.2.0&format=1119x90&url=http%3A%2F%2Fwww.checktext.org%2F&ea=0&flash=10.0.45&fwr=0&rh=0&rw=1119&resp_fmts=3&wgl=0&adsid=NT&dt=1534348909767&bpp=40&fdt=48&idt=233&shv=r20180808&cbv=r20180604&saldr=aa&abxe=1&correlator=1078030122705&frm=20&pv=2&ga_vid=826259849.1534348909&ga_sid=1534348910&ga_hid=1094121331&ga_fc=0&icsg=0&dssz=0&mdo=0&mso=0&u_tz=120&u_his=1&u_java=1&u_h=885&u_w=1176&u_ah=855&u_aw=1176&u_cd=24&u_nplug=10&u_nmime=92&adx=20&ady=666&biw=1159&bih=754&scr_x=0&scr_y=0&eid=368226400%2C21062171%2C21060853%2C21061319&oid=3&rx=0&eae=4&fc=1808&brdim=%2C%2C-4%2C-4%2C1176%2C0%2C1184%2C863%2C1176%2C754&vis=0&rsz=%7C%7C%7C&abl=CS&ppjl=u&pfx=0&fu=144&bc=1&ifi=1&dtd=258

                                         
                                         216.58.211.1
HTTP/1.1 200 OK
Content-Type: text/javascript; charset=UTF-8
                                        
P3P: policyref="https://www.googleadservices.com/pagead/p3p.xml", CP="NOI DEV PSA PSD IVA IVD OTP OUR OTR IND OTC"
Timing-Allow-Origin: *
Vary: Accept-Encoding
Date: Wed, 08 Aug 2018 21:56:10 GMT
Expires: Wed, 22 Aug 2018 21:56:10 GMT
Etag: 15637026049577978172
X-Content-Type-Options: nosniff
Content-Disposition: attachment; filename="f.txt"
Content-Encoding: gzip
Server: cafe
Content-Length: 3648
X-XSS-Protection: 1; mode=block
Cache-Control: public, max-age=1209600
Age: 583542
Alt-Svc: quic=":443"; ma=2592000; v="44,43,39,35"


--- Additional Info ---
Magic:  gzip compressed data, max compression
Size:   3648
Md5:    e86dfe1f8e1af543bd51e6a0606097dd
Sha1:   ed012a8e4416377d8a248292efbb30efbd64f204
Sha256: 336b693a4575e4dbd4d29ac98d80856715762ee89f85df47ea1a4ed9c24ef5f9
                                        
                                            GET /pagead/js/r20180808/r20110914/client/ext/m_window_focus_non_hydra.js HTTP/1.1 
Host: tpc.googlesyndication.com
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: https://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-6514833317345920&output=html&h=90&slotname=3849169118&adk=2676872739&adf=807048394&w=1119&fwrn=4&fwrnh=100&lmt=1534348907&rafmt=1&guci=1.2.0.0.2.2.0&format=1119x90&url=http%3A%2F%2Fwww.checktext.org%2F&ea=0&flash=10.0.45&fwr=0&rh=0&rw=1119&resp_fmts=3&wgl=0&adsid=NT&dt=1534348909767&bpp=40&fdt=48&idt=233&shv=r20180808&cbv=r20180604&saldr=aa&abxe=1&correlator=1078030122705&frm=20&pv=2&ga_vid=826259849.1534348909&ga_sid=1534348910&ga_hid=1094121331&ga_fc=0&icsg=0&dssz=0&mdo=0&mso=0&u_tz=120&u_his=1&u_java=1&u_h=885&u_w=1176&u_ah=855&u_aw=1176&u_cd=24&u_nplug=10&u_nmime=92&adx=20&ady=666&biw=1159&bih=754&scr_x=0&scr_y=0&eid=368226400%2C21062171%2C21060853%2C21061319&oid=3&rx=0&eae=4&fc=1808&brdim=%2C%2C-4%2C-4%2C1176%2C0%2C1184%2C863%2C1176%2C754&vis=0&rsz=%7C%7C%7C&abl=CS&ppjl=u&pfx=0&fu=144&bc=1&ifi=1&dtd=258

                                         
                                         216.58.211.1
HTTP/1.1 200 OK
Content-Type: text/javascript; charset=UTF-8
                                        
P3P: policyref="https://www.googleadservices.com/pagead/p3p.xml", CP="NOI DEV PSA PSD IVA IVD OTP OUR OTR IND OTC"
Timing-Allow-Origin: *
Vary: Accept-Encoding
Date: Wed, 08 Aug 2018 21:54:23 GMT
Expires: Wed, 22 Aug 2018 21:54:23 GMT
Etag: 15302377081181678529
X-Content-Type-Options: nosniff
Content-Disposition: attachment; filename="f.txt"
Content-Encoding: gzip
Server: cafe
Content-Length: 1349
X-XSS-Protection: 1; mode=block
Cache-Control: public, max-age=1209600
Age: 583649
Alt-Svc: quic=":443"; ma=2592000; v="44,43,39,35"


--- Additional Info ---
Magic:  gzip compressed data, max compression
Size:   1349
Md5:    4b37f3675e40e2029ce59f49238db339
Sha1:   86c5d1819cfa74f6a9f4f9461d16a313525a59ac
Sha256: a5e3585a884ef89e44cdce6fe44ad610f014894853ddb3adf9d7c97c7f25a282
                                        
                                            GET /simgad/14008654005269155324 HTTP/1.1 
Host: tpc.googlesyndication.com
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: https://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-6514833317345920&output=html&h=90&slotname=3849169118&adk=2676872739&adf=807048394&w=1119&fwrn=4&fwrnh=100&lmt=1534348907&rafmt=1&guci=1.2.0.0.2.2.0&format=1119x90&url=http%3A%2F%2Fwww.checktext.org%2F&ea=0&flash=10.0.45&fwr=0&rh=0&rw=1119&resp_fmts=3&wgl=0&adsid=NT&dt=1534348909767&bpp=40&fdt=48&idt=233&shv=r20180808&cbv=r20180604&saldr=aa&abxe=1&correlator=1078030122705&frm=20&pv=2&ga_vid=826259849.1534348909&ga_sid=1534348910&ga_hid=1094121331&ga_fc=0&icsg=0&dssz=0&mdo=0&mso=0&u_tz=120&u_his=1&u_java=1&u_h=885&u_w=1176&u_ah=855&u_aw=1176&u_cd=24&u_nplug=10&u_nmime=92&adx=20&ady=666&biw=1159&bih=754&scr_x=0&scr_y=0&eid=368226400%2C21062171%2C21060853%2C21061319&oid=3&rx=0&eae=4&fc=1808&brdim=%2C%2C-4%2C-4%2C1176%2C0%2C1184%2C863%2C1176%2C754&vis=0&rsz=%7C%7C%7C&abl=CS&ppjl=u&pfx=0&fu=144&bc=1&ifi=1&dtd=258

                                         
                                         216.58.211.1
HTTP/1.1 200 OK
Content-Type: image/gif
                                        
Accept-Ranges: bytes
Access-Control-Allow-Origin: *
Timing-Allow-Origin: *
Content-Length: 17308
Date: Fri, 13 Jul 2018 08:39:01 GMT
Expires: Sat, 13 Jul 2019 08:39:01 GMT
Last-Modified: Mon, 19 Jan 2015 22:30:30 GMT
X-Content-Type-Options: nosniff
x-dns-prefetch-control: off
Server: sffe
X-XSS-Protection: 1; mode=block
Cache-Control: public, max-age=31536000
Age: 2877771
Alt-Svc: quic=":443"; ma=2592000; v="44,43,39,35"


--- Additional Info ---
Magic:  GIF image data, version 89a, 728 x 90
Size:   17308
Md5:    a6e9d0df995289546dcd47831e1f85c3
Sha1:   021beae11163c6d7a1586eb20a9fce35f594d7a0
Sha256: 3bf9bc1621a806c3bac879a516b7f28001bd8e6fcb92e48ff09095846d5352ff
                                        
                                            OPTIONS /watch/45564324?wmode=7&page-url=http%3A%2F%2Fwww.checktext.org%2F&charset=utf-8&browser-info=ti%3A10%3Aj%3A1%3As%3A1176x885x24%3Af%3A10.0.45.2%3Afpr%3A65694993101%3Acn%3A1%3Aw%3A1159x754%3Az%3A120%3Ai%3A20180815180151%3Aet%3A1534348912%3Aen%3Autf-8%3Ac%3A1%3Ala%3Aen-us%3Awh%3A1%3Apv%3A1%3Als%3A252865985072%3Arqn%3A1%3Arn%3A1026925807%3Ahid%3A919733678%3Awn%3A47925%3Ahl%3A1%3Agdpr%3A14%3Av%3A1202%3Arqnl%3A1%3Ast%3A1534348912%3Au%3A1534348912811887664%3At%3AFree%20Online%20Plagiarism%20Checker HTTP/1.1 
Host: mc.yandex.ru
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Origin: http://www.checktext.org
Access-Control-Request-Method: POST

                                         
                                         77.88.21.119
HTTP/1.1 200 OK
                                        
Server: nginx/1.12.2
Date: Wed, 15 Aug 2018 16:01:52 GMT
Content-Length: 0
Connection: keep-alive
P3P: CP="NOI DEVa TAIa OUR BUS UNI STA"
Access-Control-Allow-Methods: GET, POST, OPTIONS
Access-Control-Allow-Credentials: true
Access-Control-Max-Age: 1728000
X-XSS-Protection: 1; mode=block
Strict-Transport-Security: max-age=31536000


--- Additional Info ---
                                        
                                            GET /metrika/advert.gif HTTP/1.1 
Host: mc.yandex.ru
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         77.88.21.119
HTTP/1.1 200 OK
Content-Type: image/gif
                                        
Server: nginx/1.12.2
Date: Wed, 15 Aug 2018 16:01:52 GMT
Content-Length: 61
Last-Modified: Mon, 12 Oct 2015 13:09:09 GMT
Connection: keep-alive
Etag: "561bb0f5-3d"
Content-Encoding: gzip
Expires: Wed, 15 Aug 2018 17:01:52 GMT
Cache-Control: max-age=3600
Access-Control-Allow-Origin: *
Strict-Transport-Security: max-age=31536000


--- Additional Info ---
Magic:  gzip compressed data, was "advert.gif", from Unix, last modified: Mon Oct 12 15:06:12 2015
Size:   61
Md5:    aad2d5e940637a676e25e6cc7a684a83
Sha1:   c77946775d4c1719c48eb691edfbcf873b0738f5
Sha256: d9d219b8ba39a549d43400945b848dde73269f25dab5b75b85439c451ca0a525
                                        
                                            GET /pagead/js/r20180808/r20110914/activeview/osd_listener.js HTTP/1.1 
Host: tpc.googlesyndication.com
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: https://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-6514833317345920&output=html&h=90&slotname=3849169118&adk=2676872739&adf=807048394&w=1119&fwrn=4&fwrnh=100&lmt=1534348907&rafmt=1&guci=1.2.0.0.2.2.0&format=1119x90&url=http%3A%2F%2Fwww.checktext.org%2F&ea=0&flash=10.0.45&fwr=0&rh=0&rw=1119&resp_fmts=3&wgl=0&adsid=NT&dt=1534348909767&bpp=40&fdt=48&idt=233&shv=r20180808&cbv=r20180604&saldr=aa&abxe=1&correlator=1078030122705&frm=20&pv=2&ga_vid=826259849.1534348909&ga_sid=1534348910&ga_hid=1094121331&ga_fc=0&icsg=0&dssz=0&mdo=0&mso=0&u_tz=120&u_his=1&u_java=1&u_h=885&u_w=1176&u_ah=855&u_aw=1176&u_cd=24&u_nplug=10&u_nmime=92&adx=20&ady=666&biw=1159&bih=754&scr_x=0&scr_y=0&eid=368226400%2C21062171%2C21060853%2C21061319&oid=3&rx=0&eae=4&fc=1808&brdim=%2C%2C-4%2C-4%2C1176%2C0%2C1184%2C863%2C1176%2C754&vis=0&rsz=%7C%7C%7C&abl=CS&ppjl=u&pfx=0&fu=144&bc=1&ifi=1&dtd=258

                                         
                                         216.58.211.1
HTTP/1.1 200 OK
Content-Type: text/javascript; charset=UTF-8
                                        
P3P: policyref="https://www.googleadservices.com/pagead/p3p.xml", CP="NOI DEV PSA PSD IVA IVD OTP OUR OTR IND OTC"
Timing-Allow-Origin: *
Vary: Accept-Encoding
Date: Wed, 08 Aug 2018 21:54:23 GMT
Expires: Wed, 22 Aug 2018 21:54:23 GMT
Etag: 7511437756112027181
X-Content-Type-Options: nosniff
Content-Disposition: attachment; filename="f.txt"
Content-Encoding: gzip
Server: cafe
Content-Length: 26377
X-XSS-Protection: 1; mode=block
Cache-Control: public, max-age=1209600
Age: 583649
Alt-Svc: quic=":443"; ma=2592000; v="44,43,39,35"


--- Additional Info ---
Magic:  gzip compressed data, max compression
Size:   26377
Md5:    1a789960024da5a7ae762bce2443fb22
Sha1:   c9bebdb4f123dfae57adff3a7062a9768c3ba418
Sha256: 35d4b19776c5ea68dd4ce0a8899672a88cb49cd4304a2c7aae639fa2b02fe6d2
                                        
                                            GET /watch/45564324?wmode=5&callback=_ymjsp268313059&page-url=http%3A%2F%2Fwww.checktext.org%2F&charset=utf-8&browser-info=ti%3A6%3Ati%3A10%3Aj%3A1%3As%3A1176x885x24%3Af%3A10.0.45.2%3Afpr%3A65694993101%3Acn%3A1%3Aw%3A1159x754%3Az%3A120%3Ai%3A20180815180151%3Aet%3A1534348912%3Aen%3Autf-8%3Ac%3A1%3Ala%3Aen-us%3Awh%3A1%3Apv%3A1%3Als%3A252865985072%3Arqn%3A1%3Arn%3A1026925807%3Ahid%3A919733678%3Awn%3A47925%3Ahl%3A1%3Agdpr%3A14%3Av%3A1202%3Arqnl%3A1%3Ast%3A1534348912%3Au%3A1534348912811887664%3At%3AFree%20Online%20Plagiarism%20Checker HTTP/1.1 
Host: mc.yandex.ru
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/

                                         
                                         77.88.21.119
HTTP/1.1 302 Found
                                        
Server: nginx/1.12.2
Date: Wed, 15 Aug 2018 16:01:52 GMT
Content-Length: 0
Connection: keep-alive
P3P: CP="NOI DEVa TAIa OUR BUS UNI STA"
Last-Modified: Wed, 15 Aug 2018 16:01:52 GMT
Expires: Wed, 15 Aug 2018 16:01:52 GMT
Cache-Control: private, no-cache, no-store, must-revalidate, max-age=0
Pragma: no-cache
Set-Cookie: yandexuid=6896219951534348912; domain=.yandex.ru; path=/; expires=Thu, 15-Aug-2019 16:01:52 GMT yabs-sid=753963391534348912; path=/ i=GqVO1QtmBcs0gFVN8c1Cx1PfgIJJ/oa+MpClP2qSTI6JZDhZvSkRrCot6Ue6y/cUdtUaaAYvyAtPp33Z8onq/Ey2ZL4=; Expires=Thu, 15-Aug-2019 16:01:52 GMT; Domain=.yandex.ru; Path=/; Secure; HttpOnly yp=1565884912.yrts.1534348912#1565884912.yrtsi.1534348912; domain=.yandex.ru; path=/; expires=Sat, 12-Aug-2028 16:01:52 GMT
Location: https://mc.yandex.ru/watch/45564324/1?wmode=5&callback=_ymjsp268313059&page-url=http%3A%2F%2Fwww.checktext.org%2F&charset=utf-8&browser-info=ti%3A6%3Ati%3A10%3Aj%3A1%3As%3A1176x885x24%3Af%3A10.0.45.2%3Afpr%3A65694993101%3Acn%3A1%3Aw%3A1159x754%3Az%3A120%3Ai%3A20180815180151%3Aet%3A1534348912%3Aen%3Autf-8%3Ac%3A1%3Ala%3Aen-us%3Awh%3A1%3Apv%3A1%3Als%3A252865985072%3Arqn%3A1%3Arn%3A1026925807%3Ahid%3A919733678%3Awn%3A47925%3Ahl%3A1%3Agdpr%3A14%3Av%3A1202%3Arqnl%3A1%3Ast%3A1534348912%3Au%3A1534348912811887664%3At%3AFree%20Online%20Plagiarism%20Checker
X-XSS-Protection: 1; mode=block
Strict-Transport-Security: max-age=31536000


--- Additional Info ---
                                        
                                            GET /pcs/activeview?xai=AKAOjsvRrrPCvUb9ckgDsYKWW5jDv5Pd4h6-TdFqBm_j7PVKSFBauSqlacDnjSo8JdKJU2LTR1337zw-zBxjFWB9wHVIEG6IxTUwuP7gMKG31QhyG9NIsKLnBHDcuTk&sig=Cg0ArKJSzLNfxpKDiYP6EAE&r=pv&id=osdim&ti=1&uc=0&tgt=nf&cl=0&v=r20180808 HTTP/1.1 
Host: pagead2.googlesyndication.com
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: https://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-6514833317345920&output=html&h=90&slotname=3849169118&adk=2676872739&adf=807048394&w=1119&fwrn=4&fwrnh=100&lmt=1534348907&rafmt=1&guci=1.2.0.0.2.2.0&format=1119x90&url=http%3A%2F%2Fwww.checktext.org%2F&ea=0&flash=10.0.45&fwr=0&rh=0&rw=1119&resp_fmts=3&wgl=0&adsid=NT&dt=1534348909767&bpp=40&fdt=48&idt=233&shv=r20180808&cbv=r20180604&saldr=aa&abxe=1&correlator=1078030122705&frm=20&pv=2&ga_vid=826259849.1534348909&ga_sid=1534348910&ga_hid=1094121331&ga_fc=0&icsg=0&dssz=0&mdo=0&mso=0&u_tz=120&u_his=1&u_java=1&u_h=885&u_w=1176&u_ah=855&u_aw=1176&u_cd=24&u_nplug=10&u_nmime=92&adx=20&ady=666&biw=1159&bih=754&scr_x=0&scr_y=0&eid=368226400%2C21062171%2C21060853%2C21061319&oid=3&rx=0&eae=4&fc=1808&brdim=%2C%2C-4%2C-4%2C1176%2C0%2C1184%2C863%2C1176%2C754&vis=0&rsz=%7C%7C%7C&abl=CS&ppjl=u&pfx=0&fu=144&bc=1&ifi=1&dtd=258

                                         
                                         172.217.20.34
HTTP/1.1 200 OK
Content-Type: image/gif
                                        
P3P: policyref="https://www.googleadservices.com/pagead/p3p.xml", CP="NOI DEV PSA PSD IVA IVD OTP OUR OTR IND OTC"
Timing-Allow-Origin: *
Access-Control-Allow-Origin: *
Date: Wed, 15 Aug 2018 16:01:52 GMT
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Cache-Control: no-cache, must-revalidate
X-Content-Type-Options: nosniff
Server: cafe
Content-Length: 42
X-XSS-Protection: 1; mode=block
Alt-Svc: quic="googleads.g.doubleclick.net:443"; ma=2592000; v="44,43,39,35",quic=":443"; ma=2592000; v="44,43,39,35"


--- Additional Info ---
Magic:  GIF image data, version 89a, 1 x 1
Size:   42
Md5:    d89746888da2d9510b64a9f031eaecd5
Sha1:   d5fceb6532643d0d84ffe09c40c481ecdf59e15a
Sha256: ef1955ae757c8b966c83248350331bd3a30f658ced11f387f8ebf05ab3368629
                                        
                                            GET /watch/45564324/1?wmode=5&callback=_ymjsp268313059&page-url=http%3A%2F%2Fwww.checktext.org%2F&charset=utf-8&browser-info=ti%3A6%3Ati%3A10%3Aj%3A1%3As%3A1176x885x24%3Af%3A10.0.45.2%3Afpr%3A65694993101%3Acn%3A1%3Aw%3A1159x754%3Az%3A120%3Ai%3A20180815180151%3Aet%3A1534348912%3Aen%3Autf-8%3Ac%3A1%3Ala%3Aen-us%3Awh%3A1%3Apv%3A1%3Als%3A252865985072%3Arqn%3A1%3Arn%3A1026925807%3Ahid%3A919733678%3Awn%3A47925%3Ahl%3A1%3Agdpr%3A14%3Av%3A1202%3Arqnl%3A1%3Ast%3A1534348912%3Au%3A1534348912811887664%3At%3AFree%20Online%20Plagiarism%20Checker HTTP/1.1 
Host: mc.yandex.ru
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/
Cookie: yandexuid=6896219951534348912; yabs-sid=753963391534348912; i=GqVO1QtmBcs0gFVN8c1Cx1PfgIJJ/oa+MpClP2qSTI6JZDhZvSkRrCot6Ue6y/cUdtUaaAYvyAtPp33Z8onq/Ey2ZL4=; yp=1565884912.yrts.1534348912#1565884912.yrtsi.1534348912

                                         
                                         77.88.21.119
HTTP/1.1 200 OK
Content-Type: application/javascript
                                        
Server: nginx/1.12.2
Date: Wed, 15 Aug 2018 16:01:52 GMT
Content-Length: 149
Connection: keep-alive
P3P: CP="NOI DEVa TAIa OUR BUS UNI STA"
Last-Modified: Wed, 15 Aug 2018 16:01:52 GMT
Expires: Wed, 15 Aug 2018 16:01:52 GMT
Cache-Control: private, no-cache, no-store, must-revalidate, max-age=0
Pragma: no-cache
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Strict-Transport-Security: max-age=31536000


--- Additional Info ---
Magic:  ASCII text, with no line terminators
Size:   149
Md5:    9ab2ded6c821c879dbff77173b194af0
Sha1:   971a9f9752ccc55606e074bf893c2c0cad421592
Sha256: 17cff4dc0c10aade66ddcf07f398cd829513ad9cba42ff612590ff5a21f9ef9d
                                        
                                            GET /bg/5KdFGiZjrMqKMsWhJOuJJel3qQCRBLUAy7GSORuI-sg.js HTTP/1.1 
Host: pagead2.googlesyndication.com
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: https://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-6514833317345920&output=html&h=90&slotname=3849169118&adk=2676872739&adf=807048394&w=1119&fwrn=4&fwrnh=100&lmt=1534348907&rafmt=1&guci=1.2.0.0.2.2.0&format=1119x90&url=http%3A%2F%2Fwww.checktext.org%2F&ea=0&flash=10.0.45&fwr=0&rh=0&rw=1119&resp_fmts=3&wgl=0&adsid=NT&dt=1534348909767&bpp=40&fdt=48&idt=233&shv=r20180808&cbv=r20180604&saldr=aa&abxe=1&correlator=1078030122705&frm=20&pv=2&ga_vid=826259849.1534348909&ga_sid=1534348910&ga_hid=1094121331&ga_fc=0&icsg=0&dssz=0&mdo=0&mso=0&u_tz=120&u_his=1&u_java=1&u_h=885&u_w=1176&u_ah=855&u_aw=1176&u_cd=24&u_nplug=10&u_nmime=92&adx=20&ady=666&biw=1159&bih=754&scr_x=0&scr_y=0&eid=368226400%2C21062171%2C21060853%2C21061319&oid=3&rx=0&eae=4&fc=1808&brdim=%2C%2C-4%2C-4%2C1176%2C0%2C1184%2C863%2C1176%2C754&vis=0&rsz=%7C%7C%7C&abl=CS&ppjl=u&pfx=0&fu=144&bc=1&ifi=1&dtd=258

                                         
                                         172.217.20.34
HTTP/1.1 200 OK
Content-Type: text/javascript
                                        
Accept-Ranges: bytes
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 5044
Date: Mon, 13 Aug 2018 09:45:45 GMT
Expires: Tue, 13 Aug 2019 09:45:45 GMT
Last-Modified: Mon, 06 Aug 2018 17:45:00 GMT
X-Content-Type-Options: nosniff
Server: sffe
X-XSS-Protection: 1; mode=block
Cache-Control: public, max-age=31536000
Age: 195367
Alt-Svc: quic="googleads.g.doubleclick.net:443"; ma=2592000; v="44,43,39,35",quic=":443"; ma=2592000; v="44,43,39,35"


--- Additional Info ---
Magic:  gzip compressed data, max compression
Size:   5044
Md5:    ab76b6228b6a87b07bfde1c17ad7ca07
Sha1:   d7520d998e99aee0f025008cba5391200d6d05d6
Sha256: a1e3f5bf00049e5c8075fa197bf77153181065fb8d813c0fdbb3111d0ac780c9
                                        
                                            GET /resource/NonComplexLongWords.txt HTTP/1.1 
Host: www.checktext.org
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/
Cookie: _ga=GA1.2.826259849.1534348909; _gid=GA1.2.1228457015.1534348909; _gat=1; _ym_uid=1534348912811887664; _ym_d=1534348912; _ym_isad=2; _ym_visorc_45564324=w

                                         
                                         188.120.244.139
HTTP/1.1 200 OK
Content-Type: text/plain; charset=UTF-8
                                        
Server: nginx/1.12.1
Date: Wed, 15 Aug 2018 16:01:50 GMT
Content-Length: 87988
Connection: keep-alive
X-Frame-Options: SAMEORIGIN
Last-Modified: Sat, 13 May 2017 17:39:02 GMT
Etag: "157b4-54f6b4c321980"
Accept-Ranges: bytes
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Cache-Control: s-maxage=10


--- Additional Info ---
Magic:  UTF-8 Unicode text, with CRLF line terminators
Size:   87988
Md5:    e8a56e223345190ce31eb08f20c720e9
Sha1:   85a7d69034d1077dd84d5d0b3a3b5bc5ef74c259
Sha256: 3e6e1e8415b524608979f052c51a457b6bd5a760985ac80be1968bdcc37e1d06
                                        
                                            GET /resource/function-words.txt HTTP/1.1 
Host: www.checktext.org
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/
Cookie: _ga=GA1.2.826259849.1534348909; _gid=GA1.2.1228457015.1534348909; _gat=1; _ym_uid=1534348912811887664; _ym_d=1534348912; _ym_isad=2; _ym_visorc_45564324=w

                                         
                                         188.120.244.139
HTTP/1.1 200 OK
Content-Type: text/plain; charset=UTF-8
                                        
Server: nginx/1.12.1
Date: Wed, 15 Aug 2018 16:01:51 GMT
Content-Length: 3832
Connection: keep-alive
X-Frame-Options: SAMEORIGIN
Last-Modified: Sat, 13 May 2017 17:39:00 GMT
Etag: "ef8-54f6b4c139500"
Accept-Ranges: bytes
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Cache-Control: s-maxage=10


--- Additional Info ---
Magic:  ASCII text, with CRLF line terminators
Size:   3832
Md5:    198accae561ab97bd106ecb90dcf47f8
Sha1:   be9bffd8054da36276faa58200de80e631f2ff44
Sha256: 1c3863769e670ecd2816121d6e5bad6fe6feee8906d53193002a934cc140c5b4
                                        
                                            OPTIONS /watch/45564324?page-url=http%3A%2F%2Fwww.checktext.org%2F&charset=utf-8&browser-info=ti%3A7%3Aj%3A1%3As%3A1176x885x24%3Aadb%3A2%3Af%3A10.0.45.2%3Afpr%3A65694993101%3Acn%3A1%3Aw%3A1159x754%3Az%3A120%3Ai%3A20180815180206%3Aet%3A1534348927%3Aen%3Autf-8%3Ac%3A1%3Ala%3Aen-us%3Awh%3A1%3Aar%3A1%3Anb%3A1%3Acl%3A931%3Als%3A252865985072%3Arqn%3A2%3Arn%3A1044477736%3Ahid%3A919733678%3Agdpr%3A14%3Av%3A1202%3Arqnl%3A1%3Ast%3A1534348927%3Au%3A1534348912811887664 HTTP/1.1 
Host: mc.yandex.ru
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Origin: http://www.checktext.org
Access-Control-Request-Method: POST

                                         
                                         77.88.21.119
HTTP/1.1 200 OK
                                        
Server: nginx/1.12.2
Date: Wed, 15 Aug 2018 16:02:07 GMT
Content-Length: 0
Connection: keep-alive
P3P: CP="NOI DEVa TAIa OUR BUS UNI STA"
Access-Control-Allow-Methods: GET, POST, OPTIONS
Access-Control-Allow-Credentials: true
Access-Control-Max-Age: 1728000
X-XSS-Protection: 1; mode=block
Strict-Transport-Security: max-age=31536000


--- Additional Info ---
                                        
                                            GET /watch/45564324?page-url=http%3A%2F%2Fwww.checktext.org%2F&charset=utf-8&browser-info=ti%3A4%3Aj%3A1%3As%3A1176x885x24%3Aadb%3A2%3Af%3A10.0.45.2%3Afpr%3A65694993101%3Acn%3A1%3Aw%3A1159x754%3Az%3A120%3Ai%3A20180815180206%3Aet%3A1534348927%3Aen%3Autf-8%3Ac%3A1%3Ala%3Aen-us%3Awh%3A1%3Aar%3A1%3Anb%3A1%3Acl%3A931%3Als%3A252865985072%3Arqn%3A2%3Arn%3A1044477736%3Ahid%3A919733678%3Agdpr%3A14%3Av%3A1202%3Arqnl%3A1%3Ast%3A1534348927%3Au%3A1534348912811887664 HTTP/1.1 
Host: mc.yandex.ru
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.checktext.org/
Cookie: yandexuid=6896219951534348912; yabs-sid=753963391534348912; i=GqVO1QtmBcs0gFVN8c1Cx1PfgIJJ/oa+MpClP2qSTI6JZDhZvSkRrCot6Ue6y/cUdtUaaAYvyAtPp33Z8onq/Ey2ZL4=; yp=1565884912.yrts.1534348912#1565884912.yrtsi.1534348912

                                         
                                         77.88.21.119
HTTP/1.1 200 OK
Content-Type: image/gif
                                        
Server: nginx/1.12.2
Date: Wed, 15 Aug 2018 16:02:07 GMT
Content-Length: 43
Connection: keep-alive
P3P: CP="NOI DEVa TAIa OUR BUS UNI STA"
Last-Modified: Wed, 15 Aug 2018 16:02:07 GMT
Expires: Wed, 15 Aug 2018 16:02:07 GMT
Cache-Control: private, no-cache, no-store, must-revalidate, max-age=0
Pragma: no-cache
X-XSS-Protection: 1; mode=block
Strict-Transport-Security: max-age=31536000


--- Additional Info ---
Magic:  GIF image data, version 89a, 1 x 1
Size:   43
Md5:    df3e567d6f16d040326c7a0ea29a4f41
Sha1:   ea7df583983133b62712b5e73bffbcd45cc53736
Sha256: 548f2d6f4d0d820c6c5ffbeffcbd7f0e73193e2932eefe542accc84762deec87
                                        
                                            GET /favicon.ico HTTP/1.1 
Host: www.checktext.org
                                        
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive

                                         
                                         0.0.0.0
                                        


--- Additional Info ---