← Back to team overview

launchpad-reviewers team mailing list archive

[Merge] lp:~cjwatson/launchpad/remove-google-analytics into lp:launchpad

 

Colin Watson has proposed merging lp:~cjwatson/launchpad/remove-google-analytics into lp:launchpad.

Commit message:
Remove Google Analytics.  Nobody's looking at its output any more.

Requested reviews:
  Launchpad code reviewers (launchpad-reviewers)

For more details, see:
https://code.launchpad.net/~cjwatson/launchpad/remove-google-analytics/+merge/278239

Remove Google Analytics.  Nobody's looking at its output any more.  If we do want more advanced analytics than our ordinary webstats, then I'd suggest looking at Piwik instead, which is free software and can be self-hosted.
-- 
Your team Launchpad code reviewers is requested to review the proposed merge of lp:~cjwatson/launchpad/remove-google-analytics into lp:launchpad.
=== removed directory 'lib/canonical/launchpad/icing/google-analytics'
=== removed file 'lib/canonical/launchpad/icing/google-analytics/ga-disable-gaso.diff'
--- lib/canonical/launchpad/icing/google-analytics/ga-disable-gaso.diff	2011-12-08 20:47:34 +0000
+++ lib/canonical/launchpad/icing/google-analytics/ga-disable-gaso.diff	1970-01-01 00:00:00 +0000
@@ -1,23 +0,0 @@
-Diff that was applied to a copy of http://www.google-analytics.com/ga.js
-passed through http://http://jsbeautifier.org/ to disable
-the additional JS loading from Google Analytics when the Site Overlay
-feature is used.
-
---- ga.js.orig	2011-12-08 15:37:38.000000000 -0500
-+++ ga.js	2011-12-08 15:44:43.000000000 -0500
-@@ -1180,6 +1180,7 @@
-             return i
-         };
-     var zd, Ad = function (a) {
-+        /* Disabled for security.
-             var f;
-             var e;
-             if (!zd) {
-@@ -1190,6 +1191,7 @@
-                 if (f = (e = (b = b && b[ma](d) || c && c[ma](d)) ? b[1] : I(W("GASO")), b = e) && b[ma](/^(?:\|([-0-9a-z.]{1,40})\|)?([-.\w]{10,1200})$/i), c = f) if (cd(a, "GASO", "" + b), K._gasoDomain = a.get(Ma), K._gasoCPath = a.get(N), b = "https://"; + ((c[1] || "www") + ".google.com") + "/analytics/reporting/overlay_js?gaso=" + c[2] + "&" + va()) a = J.createElement("script"), a.type = "text/javascript", a.async = h, a.src = b, a.id = "_gasojs", fa(a, g), b = J.getElementsByTagName("script")[0], b.parentNode.insertBefore(a, b);
-                 zd = h
-             }
-+        */
-         };
-     var sd = function (a, b, c) {
-             c && (b = H(b));

=== removed file 'lib/canonical/launchpad/icing/google-analytics/ga.js'
--- lib/canonical/launchpad/icing/google-analytics/ga.js	2011-12-08 20:47:34 +0000
+++ lib/canonical/launchpad/icing/google-analytics/ga.js	1970-01-01 00:00:00 +0000
@@ -1,1819 +0,0 @@
-// This file is Copyright (c) Google Inc.
-//
-// Google Analytics Tracker code.
-// Downloaded from http://www.google-analytics.com/ga.js
-// on 2011-12-01.
-//
-// Beautified through http://jsbeautifier.org/
-//
-// We are serving it as part of Launchpad for security reasons.
-// Modification from the original: disable the Site Overlay feature
-// which loads additional JS from Google.
-// See ga-disable-gaso.diff
-(function () {
-    var g = void 0,
-        h = true,
-        i = null,
-        j = false,
-        ba = encodeURIComponent,
-        ca = Infinity,
-        da = setTimeout,
-        ea = decodeURIComponent,
-        k = Math;
-
-    function fa(a, b) {
-        return a.onload = b
-    }
-    function ga(a, b) {
-        return a.name = b
-    }
-    var m = "push",
-        ha = "slice",
-        ia = "replace",
-        ja = "load",
-        ka = "floor",
-        n = "charAt",
-        la = "value",
-        p = "indexOf",
-        ma = "match",
-        r = "name",
-        oa = "host",
-        t = "toString",
-        u = "length",
-        v = "prototype",
-        w = "split",
-        pa = "stopPropagation",
-        qa = "scope",
-        x = "location",
-        y = "getString",
-        z = "substring",
-        ra = "navigator",
-        A = "join",
-        C = "toLowerCase",
-        D;
-
-    function sa(a, b) {
-        switch (b) {
-        case 0:
-            return "" + a;
-        case 1:
-            return a * 1;
-        case 2:
-            return !!a;
-        case 3:
-            return a * 1E3
-        }
-        return a
-    }
-    function E(a, b) {
-        return g == a || "-" == a && !b || "" == a
-    }
-    function ta(a) {
-        if (!a || "" == a) return "";
-        for (; a && " \n\r\t" [p](a[n](0)) > -1;) a = a[z](1);
-        for (; a && " \n\r\t" [p](a[n](a[u] - 1)) > -1;) a = a[z](0, a[u] - 1);
-        return a
-    }
-    function ua(a) {
-        var b = 1,
-            c = 0,
-            d;
-        if (!E(a)) {
-            b = 0;
-            for (d = a[u] - 1; d >= 0; d--) c = a.charCodeAt(d), b = (b << 6 & 268435455) + c + (c << 14), c = b & 266338304, b = c != 0 ? b ^ c >> 21 : b
-        }
-        return b
-    }
-
-    function va() {
-        return k.round(k.random() * 2147483647)
-    }
-    function wa() {}
-    function F(a, b) {
-        return ba instanceof Function ? b ? encodeURI(a) : ba(a) : (G(68), escape(a))
-    }
-    function H(a) {
-        a = a[w]("+")[A](" ");
-        if (ea instanceof Function) try {
-            return ea(a)
-        } catch (b) {
-            G(17)
-        } else G(68);
-        return unescape(a)
-    }
-    var xa = function (a, b, c, d) {
-            a.addEventListener ? a.addEventListener(b, c, !! d) : a.attachEvent && a.attachEvent("on" + b, c)
-        },
-        ya = function (a, b, c, d) {
-            a.removeEventListener ? a.removeEventListener(b, c, !! d) : a.detachEvent && a.detachEvent("on" + b, c)
-        };
-
-    function I(a) {
-        return a && a[u] > 0 ? a[0] : ""
-    }
-    function za(a) {
-        var b = a ? a[u] : 0;
-        return b > 0 ? a[b - 1] : ""
-    }
-    var Aa = function () {
-            this.prefix = "ga.";
-            this.I = {}
-        };
-    Aa[v].set = function (a, b) {
-        this.I[this.prefix + a] = b
-    };
-    Aa[v].get = function (a) {
-        return this.I[this.prefix + a]
-    };
-    Aa[v].contains = function (a) {
-        return this.get(a) !== g
-    };
-
-    function Ba(a) {
-        a[p]("www.") == 0 && (a = a[z](4));
-        return a[C]()
-    }
-    function Ca(a, b) {
-        var c, d = {
-            url: a,
-            protocol: "http",
-            host: "",
-            path: "",
-            c: new Aa,
-            anchor: ""
-        };
-        if (!a) return d;
-        c = a[p]("://");
-        if (c >= 0) d.protocol = a[z](0, c), a = a[z](c + 3);
-        c = a.search("/|\\?|#");
-        if (c >= 0) d.host = a[z](0, c)[C](), a = a[z](c);
-        else return d.host = a[C](), d;
-        c = a[p]("#");
-        if (c >= 0) d.anchor = a[z](c + 1), a = a[z](0, c);
-        c = a[p]("?");
-        c >= 0 && (Da(d.c, a[z](c + 1)), a = a[z](0, c));
-        d.anchor && b && Da(d.c, d.anchor);
-        a && a[n](0) == "/" && (a = a[z](1));
-        d.path = a;
-        return d
-    }
-
-    function Da(a, b) {
-        function c(b, c) {
-            a.contains(b) || a.set(b, []);
-            a.get(b)[m](c)
-        }
-        for (var d = ta(b)[w]("&"), e = 0; e < d[u]; e++) if (d[e]) {
-            var f = d[e][p]("=");
-            f < 0 ? c(d[e], "1") : c(d[e][z](0, f), d[e][z](f + 1))
-        }
-    }
-    function Ea(a, b) {
-        if (E(a)) return "-";
-        if ("[" == a[n](0) && "]" == a[n](a[u] - 1)) return "-";
-        var c = J.domain;
-        c += b && b != "/" ? b : "";
-        return a[p](c) == (a[p]("http://";) == 0 ? 7 : a[p]("https://";) == 0 ? 8 : 0) ? "0" : a
-    };
-
-    function Fa(a, b, c) {
-        k.random() * 100 >= 1 || (a = ["utmt=error", "utmerr=" + a, "utmwv=5.2.2", "utmn=" + va(), "utmsp=1"], b && a[m]("api=" + b), c && a[m]("msg=" + F(c[z](0, 100))), K.q && a[m]("aip=1"), Ga(a[A]("&")))
-    };
-    var Ha = 0;
-
-    function L(a) {
-        return (a ? "_" : "") + Ha++
-    }
-    var Ia = L(),
-        Ja = L(),
-        Ka = L(),
-        La = L(),
-        Ma = L(),
-        M = L(),
-        N = L(),
-        Na = L(),
-        Oa = L(),
-        Pa = L(),
-        Qa = L(),
-        Ra = L(),
-        Sa = L(),
-        Ta = L(),
-        Ua = L(),
-        Va = L(),
-        Wa = L(),
-        Xa = L(),
-        Ya = L(),
-        Za = L(),
-        $a = L(),
-        ab = L(),
-        bb = L(),
-        cb = L(),
-        db = L(),
-        eb = L(),
-        fb = L(),
-        gb = L(),
-        hb = L(),
-        ib = L(),
-        jb = L(),
-        kb = L(),
-        lb = L(),
-        mb = L(),
-        nb = L(),
-        O = L(h),
-        ob = L(),
-        pb = L(),
-        qb = L(),
-        rb = L(),
-        sb = L(),
-        tb = L(),
-        ub = L(),
-        vb = L(),
-        wb = L(),
-        xb = L(),
-        P = L(h),
-        yb = L(h),
-        zb = L(h),
-        Bb = L(h),
-        Cb = L(h),
-        Db = L(h),
-        Eb = L(h),
-        Fb = L(h),
-        Gb = L(h),
-        Hb = L(h),
-        Ib = L(h),
-        Q = L(h),
-        Jb = L(h),
-        Kb = L(h),
-        Lb = L(h),
-        Mb = L(h),
-        Nb = L(h),
-        Ob = L(h),
-        Pb = L(h),
-        Qb = L(h),
-        Rb = L(h),
-        Sb = L(h),
-        Tb = L(h),
-        Ub = L(h),
-        Vb = L(h),
-        Wb = L(),
-        Xb = L(),
-        Yb = L();
-    L();
-    var Zb = L(),
-        $b = L(),
-        ac = L(),
-        bc = L(),
-        cc = L(),
-        dc = L(),
-        ec = L(),
-        hc = L(),
-        ic = L(),
-        jc = L();
-    L();
-    var kc = L(),
-        lc = L();
-    var mc = function () {
-            function a(a, c, d) {
-                R(S[v], a, c, d)
-            }
-            T("_getName", Ka, 58);
-            T("_getAccount", Ia, 64);
-            T("_visitCode", P, 54);
-            T("_getClientInfo", Ta, 53, 1);
-            T("_getDetectTitle", Wa, 56, 1);
-            T("_getDetectFlash", Ua, 65, 1);
-            T("_getLocalGifPath", fb, 57);
-            T("_getServiceMode", gb, 59);
-            U("_setClientInfo", Ta, 66, 2);
-            U("_setAccount", Ia, 3);
-            U("_setNamespace", Ja, 48);
-            U("_setAllowLinker", Qa, 11, 2);
-            U("_setDetectFlash", Ua, 61, 2);
-            U("_setDetectTitle", Wa, 62, 2);
-            U("_setLocalGifPath", fb, 46, 0);
-            U("_setLocalServerMode", gb, 92, g, 0);
-            U("_setRemoteServerMode", gb, 63, g, 1);
-            U("_setLocalRemoteServerMode", gb, 47, g, 2);
-            U("_setSampleRate", eb, 45, 1);
-            U("_setCampaignTrack", Va, 36, 2);
-            U("_setAllowAnchor", Ra, 7, 2);
-            U("_setCampNameKey", Ya, 41);
-            U("_setCampContentKey", cb, 38);
-            U("_setCampIdKey", Xa, 39);
-            U("_setCampMediumKey", ab, 40);
-            U("_setCampNOKey", db, 42);
-            U("_setCampSourceKey", $a, 43);
-            U("_setCampTermKey", bb, 44);
-            U("_setCampCIdKey", Za, 37);
-            U("_setCookiePath", N, 9, 0);
-            U("_setMaxCustomVariables", hb, 0, 1);
-            U("_setVisitorCookieTimeout", Na, 28, 1);
-            U("_setSessionCookieTimeout", Oa, 26, 1);
-            U("_setCampaignCookieTimeout", Pa, 29, 1);
-            U("_setReferrerOverride", qb, 49);
-            U("_setSiteSpeedSampleRate", ic, 132);
-            a("_trackPageview", S[v].na, 1);
-            a("_trackEvent", S[v].v, 4);
-            a("_trackPageLoadTime", S[v].ma, 100);
-            a("_trackSocial", S[v].oa, 104);
-            a("_trackTrans", S[v].pa, 18);
-            a("_sendXEvent", S[v].u, 78);
-            a("_createEventTracker", S[v].V, 74);
-            a("_getVersion", S[v].$, 60);
-            a("_setDomainName", S[v].t, 6);
-            a("_setAllowHash", S[v].ea, 8);
-            a("_getLinkerUrl", S[v].Z, 52);
-            a("_link", S[v].link, 101);
-            a("_linkByPost", S[v].da, 102);
-            a("_setTrans", S[v].ha, 20);
-            a("_addTrans", S[v].O, 21);
-            a("_addItem", S[v].M, 19);
-            a("_setTransactionDelim", S[v].ia, 82);
-            a("_setCustomVar", S[v].fa, 10);
-            a("_deleteCustomVar", S[v].X, 35);
-            a("_getVisitorCustomVar", S[v].aa, 50);
-            a("_setXKey", S[v].ka, 83);
-            a("_setXValue", S[v].la, 84);
-            a("_getXKey", S[v].ba, 76);
-            a("_getXValue", S[v].ca, 77);
-            a("_clearXKey", S[v].S, 72);
-            a("_clearXValue", S[v].T, 73);
-            a("_createXObj", S[v].W, 75);
-            a("_addIgnoredOrganic", S[v].K, 15);
-            a("_clearIgnoredOrganic", S[v].P, 97);
-            a("_addIgnoredRef", S[v].L, 31);
-            a("_clearIgnoredRef", S[v].Q, 32);
-            a("_addOrganic", S[v].N, 14);
-            a("_clearOrganic", S[v].R, 70);
-            a("_cookiePathCopy", S[v].U, 30);
-            a("_get", S[v].Y, 106);
-            a("_set", S[v].ga, 107);
-            a("_addEventListener", S[v].addEventListener, 108);
-            a("_removeEventListener", S[v].removeEventListener, 109);
-            a("_initData", S[v].m, 2);
-            a("_setVar", S[v].ja, 22);
-            U("_setSessionTimeout", Oa, 27, 3);
-            U("_setCookieTimeout", Pa, 25, 3);
-            U("_setCookiePersistence", Na, 24, 1);
-            a("_setAutoTrackOutbound", wa, 79);
-            a("_setTrackOutboundSubdomains", wa, 81);
-            a("_setHrefExamineLimit", wa, 80)
-        },
-        R = function (a, b, c, d) {
-            a[b] = function () {
-                try {
-                    return G(d), c.apply(this, arguments)
-                } catch (a) {
-                    throw Fa("exc", b, a && a[r]), a;
-                }
-            }
-        },
-        T = function (a, b, c, d) {
-            S[v][a] = function () {
-                try {
-                    return G(c), sa(this.a.get(b), d)
-                } catch (e) {
-                    throw Fa("exc", a, e && e[r]), e;
-                }
-            }
-        },
-        U = function (a, b, c, d, e) {
-            S[v][a] = function (f) {
-                try {
-                    G(c), e == g ? this.a.set(b, sa(f, d)) : this.a.set(b, e)
-                } catch (l) {
-                    throw Fa("exc", a, l && l[r]), l;
-                }
-            }
-        },
-        nc = function (a, b) {
-            return {
-                type: b,
-                target: a,
-                stopPropagation: function () {
-                    throw "aborted";
-                }
-            }
-        };
-    var oc = function (a, b) {
-            return b !== "/" ? j : (a[p]("www.google.") == 0 || a[p](".google.") == 0 || a[p]("google.") == 0) && !(a[p]("google.org") > -1) ? h : j
-        },
-        pc = function (a) {
-            var b = a.get(Ma),
-                c = a[y](N, "/");
-            oc(b, c) && a[pa]()
-        };
-    var uc = function () {
-            var a = {},
-                b = {},
-                c = new qc;
-            this.g = function (a, b) {
-                c.add(a, b)
-            };
-            var d = new qc;
-            this.d = function (a, b) {
-                d.add(a, b)
-            };
-            var e = j,
-                f = j,
-                l = h;
-            this.J = function () {
-                e = h
-            };
-            this.f = function (a) {
-                this[ja]();
-                this.set(Wb, a, h);
-                a = new rc(this);
-                e = j;
-                d.execute(this);
-                e = h;
-                b = {};
-                this.i();
-                a.qa()
-            };
-            this.load = function () {
-                e && (e = j, this.sa(), sc(this), f || (f = h, c.execute(this), tc(this), sc(this)), e = h)
-            };
-            this.i = function () {
-                if (e) if (f) e = j, tc(this), e = h;
-                else this[ja]()
-            };
-            this.get = function (c) {
-                c && c[n](0) == "_" && this[ja]();
-                return b[c] !== g ? b[c] : a[c]
-            };
-            this.set = function (c, d, e) {
-                c && c[n](0) == "_" && this[ja]();
-                e ? b[c] = d : a[c] = d;
-                c && c[n](0) == "_" && this.i()
-            };
-            this.n = function (b) {
-                a[b] = this.b(b, 0) + 1
-            };
-            this.b = function (a, b) {
-                var c = this.get(a);
-                return c == g || c === "" ? b : c * 1
-            };
-            this.getString = function (a, b) {
-                var c = this.get(a);
-                return c == g ? b : c + ""
-            };
-            this.sa = function () {
-                if (l) {
-                    var b = this[y](Ma, ""),
-                        c = this[y](N, "/");
-                    oc(b, c) || (a[M] = a[Sa] && b != "" ? ua(b) : 1, l = j)
-                }
-            }
-        };
-    uc[v].stopPropagation = function () {
-        throw "aborted";
-    };
-    var rc = function (a) {
-            var b = this;
-            this.j = 0;
-            var c = a.get(Xb);
-            this.Aa = function () {
-                b.j > 0 && c && (b.j--, b.j || c())
-            };
-            this.qa = function () {
-                !b.j && c && da(c, 0)
-            };
-            a.set(Yb, b, h)
-        };
-
-    function vc(a, b) {
-        for (var b = b || [], c = 0; c < b[u]; c++) {
-            var d = b[c];
-            if ("" + a == d || d[p](a + ".") == 0) return d
-        }
-        return "-"
-    }
-    var xc = function (a, b, c) {
-            c = c ? "" : a[y](M, "1");
-            b = b[w](".");
-            if (b[u] !== 6 || wc(b[0], c)) return j;
-            var c = b[1] * 1,
-                d = b[2] * 1,
-                e = b[3] * 1,
-                f = b[4] * 1,
-                b = b[5] * 1;
-            if (!(c >= 0 && d > 0 && e > 0 && f > 0 && b >= 0)) return G(110), j;
-            a.set(P, c);
-            a.set(Cb, d);
-            a.set(Db, e);
-            a.set(Eb, f);
-            a.set(Fb, b);
-            return h
-        },
-        yc = function (a) {
-            var b = a.get(P),
-                c = a.get(Cb),
-                d = a.get(Db),
-                e = a.get(Eb),
-                f = a.b(Fb, 1);
-            b == g ? G(113) : b == NaN && G(114);
-            b >= 0 && c > 0 && d > 0 && e > 0 && f >= 0 || G(115);
-            return [a.b(M, 1), b != g ? b : "-", c || "-", d || "-", e || "-", f][A](".")
-        },
-        zc = function (a) {
-            return [a.b(M, 1), a.b(Ib, 0), a.b(Q, 1), a.b(Jb, 0)][A](".")
-        },
-        Ac = function (a, b, c) {
-            var c = c ? "" : a[y](M, "1"),
-                d = b[w](".");
-            if (d[u] !== 4 || wc(d[0], c)) d = i;
-            a.set(Ib, d ? d[1] * 1 : 0);
-            a.set(Q, d ? d[2] * 1 : 10);
-            a.set(Jb, d ? d[3] * 1 : a.get(La));
-            return d != i || !wc(b, c)
-        },
-        Bc = function (a, b) {
-            var c = F(a[y](zb, "")),
-                d = [],
-                e = a.get(O);
-            if (!b && e) {
-                for (var f = 0; f < e[u]; f++) {
-                    var l = e[f];
-                    l && l[qa] == 1 && d[m](f + "=" + F(l[r]) + "=" + F(l[la]) + "=1")
-                }
-                d[u] > 0 && (c += "|" + d[A](","))
-            }
-            return c ? a.b(M, 1) + "." + c : i
-        },
-        Cc = function (a, b, c) {
-            c = c ? "" : a[y](M, "1");
-            b = b[w](".");
-            if (b[u] < 2 || wc(b[0], c)) return j;
-            b = b[ha](1)[A](".")[w]("|");
-            b[u] > 0 && a.set(zb, H(b[0]));
-            if (b[u] <= 1) return h;
-            for (var c = b[1][w](b[1][p](",") == -1 ? "^" : ","), d = 0; d < c[u]; d++) {
-                var e = c[d][w]("=");
-                if (e[u] == 4) {
-                    var f = {};
-                    ga(f, H(e[1]));
-                    f.value = H(e[2]);
-                    f.scope = 1;
-                    a.get(O)[e[0]] = f
-                }
-            }
-            b[1][p]("^") >= 0 && G(125);
-            return h
-        },
-        Ec = function (a, b) {
-            var c = Dc(a, b);
-            return c ? [a.b(M, 1), a.b(Kb, 0), a.b(Lb, 1), a.b(Mb, 1), c][A](".") : ""
-        },
-        Dc = function (a) {
-            function b(b, e) {
-                if (!E(a.get(b))) {
-                    var f = a[y](b, ""),
-                        f = f[w](" ")[A]("%20"),
-                        f = f[w]("+")[A]("%20");
-                    c[m](e + "=" + f)
-                }
-            }
-            var c = [];
-            b(Ob, "utmcid");
-            b(Sb, "utmcsr");
-            b(Qb, "utmgclid");
-            b(Rb, "utmdclid");
-            b(Pb, "utmccn");
-            b(Tb, "utmcmd");
-            b(Ub, "utmctr");
-            b(Vb, "utmcct");
-            return c[A]("|")
-        },
-        Gc = function (a, b, c) {
-            c = c ? "" : a[y](M, "1");
-            b = b[w](".");
-            if (b[u] < 5 || wc(b[0], c)) return a.set(Kb, g), a.set(Lb, g), a.set(Mb, g), a.set(Ob, g), a.set(Pb, g), a.set(Sb, g), a.set(Tb, g), a.set(Ub, g), a.set(Vb, g), a.set(Qb, g), a.set(Rb, g), j;
-            a.set(Kb, b[1] * 1);
-            a.set(Lb, b[2] * 1);
-            a.set(Mb, b[3] * 1);
-            Fc(a, b[ha](4)[A]("."));
-            return h
-        },
-        Fc = function (a, b) {
-            function c(a) {
-                return (a = b[ma](a + "=(.*?)(?:\\|utm|$)")) && a[u] == 2 ? a[1] : g
-            }
-            function d(b, c) {
-                c && (c = e ? H(c) : c[w]("%20")[A](" "), a.set(b, c))
-            }
-            b[p]("=") == -1 && (b = H(b));
-            var e = c("utmcvr") == "2";
-            d(Ob, c("utmcid"));
-            d(Pb, c("utmccn"));
-            d(Sb, c("utmcsr"));
-            d(Tb, c("utmcmd"));
-            d(Ub, c("utmctr"));
-            d(Vb, c("utmcct"));
-            d(Qb, c("utmgclid"));
-            d(Rb, c("utmdclid"))
-        },
-        wc = function (a, b) {
-            return b ? a != b : !/^\d+$/.test(a)
-        };
-    var qc = function () {
-            this.s = []
-        };
-    qc[v].add = function (a, b) {
-        this.s[m]({
-            name: a,
-            Da: b
-        })
-    };
-    qc[v].execute = function (a) {
-        try {
-            for (var b = 0; b < this.s[u]; b++) this.s[b].Da.call(V, a)
-        } catch (c) {}
-    };
-
-    function Hc(a) {
-        a.get(eb) != 100 && a.get(P) % 1E4 >= a.get(eb) * 100 && a[pa]()
-    }
-    function Ic(a) {
-        Jc() && a[pa]()
-    }
-    function Kc(a) {
-        J[x].protocol == "file:" && a[pa]()
-    }
-    function Lc(a) {
-        a.get(pb) || a.set(pb, J.title, h);
-        a.get(ob) || a.set(ob, J[x].pathname + J[x].search, h)
-    };
-    var Mc = new function () {
-            var a = [];
-            this.set = function (b) {
-                a[b] = h
-            };
-            this.Ea = function () {
-                for (var b = [], c = 0; c < a[u]; c++) a[c] && (b[k[ka](c / 6)] ^= 1 << c % 6);
-                for (c = 0; c < b[u]; c++) b[c] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_" [n](b[c] || 0);
-                return b[A]("") + "~"
-            }
-        };
-
-    function G(a) {
-        Mc.set(a)
-    };
-    var V = window,
-        J = document,
-        Jc = function () {
-            var a = V._gaUserPrefs;
-            return a && a.ioo && a.ioo()
-        },
-        Nc = function (a, b) {
-            da(a, b)
-        },
-        W = function (a) {
-            for (var b = [], c = J.cookie[w](";"), a = RegExp("^\\s*" + a + "=\\s*(.*?)\\s*$"), d = 0; d < c[u]; d++) {
-                var e = c[d][ma](a);
-                e && b[m](e[1])
-            }
-            return b
-        },
-        X = function (a, b, c, d, e) {
-            var f;
-            f = Jc() ? j : oc(d, c) ? j : h;
-            if (f) {
-                if (b && V[ra].userAgent[p]("Firefox") >= 0) {
-                    b = b[ia](/\n|\r/g, " ");
-                    f = 0;
-                    for (var l = b[u]; f < l; ++f) {
-                        var o = b.charCodeAt(f) & 255;
-                        if (o == 10 || o == 13) b = b[z](0, f) + "?" + b[z](f + 1)
-                    }
-                }
-                b && b[u] > 2E3 && (b = b[z](0, 2E3), G(69));
-                a = a + "=" + b + "; path=" + c + "; ";
-                e && (a += "expires=" + (new Date((new Date).getTime() + e)).toGMTString() + "; ");
-                d && (a += "domain=" + d + ";");
-                J.cookie = a
-            }
-        };
-    var Oc, Pc, Qc = function () {
-            if (!Oc) {
-                var a = {},
-                    b = V[ra],
-                    c = V.screen;
-                a.H = c ? c.width + "x" + c.height : "-";
-                a.G = c ? c.colorDepth + "-bit" : "-";
-                a.language = (b && (b.language || b.browserLanguage) || "-")[C]();
-                a.javaEnabled = b && b.javaEnabled() ? 1 : 0;
-                a.characterSet = J.characterSet || J.charset || "-";
-                Oc = a
-            }
-        },
-        Rc = function () {
-            Qc();
-            for (var a = Oc, b = V[ra], a = b.appName + b.version + a.language + b.platform + b.userAgent + a.javaEnabled + a.H + a.G + (J.cookie ? J.cookie : "") + (J.referrer ? J.referrer : ""), b = a[u], c = V.history[u]; c > 0;) a += c-- ^ b++;
-            return ua(a)
-        },
-        Sc = function (a) {
-            Qc();
-            var b = Oc;
-            a.set(sb, b.H);
-            a.set(tb, b.G);
-            a.set(wb, b.language);
-            a.set(xb, b.characterSet);
-            a.set(ub, b.javaEnabled);
-            if (a.get(Ta) && a.get(Ua)) {
-                if (!(b = Pc)) {
-                    var c, d, e;
-                    d = "ShockwaveFlash";
-                    if ((b = (b = V[ra]) ? b.plugins : g) && b[u] > 0) for (c = 0; c < b[u] && !e; c++) d = b[c], d[r][p]("Shockwave Flash") > -1 && (e = d.description[w]("Shockwave Flash ")[1]);
-                    else {
-                        d = d + "." + d;
-                        try {
-                            c = new ActiveXObject(d + ".7"), e = c.GetVariable("$version")
-                        } catch (f) {}
-                        if (!e) try {
-                            c = new ActiveXObject(d + ".6"), e = "WIN 6,0,21,0", c.AllowScriptAccess = "always", e = c.GetVariable("$version")
-                        } catch (l) {}
-                        if (!e) try {
-                            c = new ActiveXObject(d), e = c.GetVariable("$version")
-                        } catch (o) {}
-                        e && (e = e[w](" ")[1][w](","), e = e[0] + "." + e[1] + " r" + e[2])
-                    }
-                    b = e ? e : "-"
-                }
-                Pc = b;
-                a.set(vb, Pc)
-            } else a.set(vb, "-")
-        };
-    var Y = function () {
-            R(Y[v], "push", Y[v][m], 5);
-            R(Y[v], "_createAsyncTracker", Y[v].Ba, 33);
-            R(Y[v], "_getAsyncTracker", Y[v].Ca, 34);
-            this.r = 0
-        };
-    Y[v].Ba = function (a, b) {
-        return K.l(a, b || "")
-    };
-    Y[v].Ca = function (a) {
-        return K.p(a)
-    };
-    Y[v].push = function (a) {
-        this.r > 0 && G(105);
-        this.r++;
-        for (var b = arguments, c = 0, d = 0; d < b[u]; d++) try {
-            if (typeof b[d] === "function") b[d]();
-            else {
-                var e = "",
-                    f = b[d][0],
-                    l = f.lastIndexOf(".");
-                l > 0 && (e = f[z](0, l), f = f[z](l + 1));
-                var o = e == "_gat" ? K : e == "_gaq" ? Tc : K.p(e);
-                o[f].apply(o, b[d][ha](1))
-            }
-        } catch (q) {
-            c++
-        }
-        this.r--;
-        return c
-    };
-    var Yc = function () {
-            function a(a, b, c, d) {
-                g == f[a] && (f[a] = {});
-                g == f[a][b] && (f[a][b] = []);
-                f[a][b][c] = d
-            }
-            function b(a, b, c) {
-                if (g != f[a] && g != f[a][b]) return f[a][b][c]
-            }
-            function c(a, b) {
-                if (g != f[a] && g != f[a][b]) {
-                    f[a][b] = g;
-                    var c = h,
-                        d;
-                    for (d = 0; d < l[u]; d++) if (g != f[a][l[d]]) {
-                        c = j;
-                        break
-                    }
-                    c && (f[a] = g)
-                }
-            }
-            function d(a) {
-                var b = "",
-                    c = j,
-                    d, e;
-                for (d = 0; d < l[u]; d++) if (e = a[l[d]], g != e) {
-                    c && (b += l[d]);
-                    for (var c = [], f = g, $ = g, $ = 0; $ < e[u]; $++) if (g != e[$]) {
-                        f = "";
-                        $ != aa && g == e[$ - 1] && (f += $[t]() + na);
-                        for (var Wc = e[$], Xc = "", Ab = g, fc = g, gc = g, Ab = 0; Ab < Wc[u]; Ab++) fc = Wc[n](Ab), gc = B[fc], Xc += g != gc ? gc : fc;
-                        f += Xc;
-                        c[m](f)
-                    }
-                    b += o + c[A](s) + q;
-                    c = j
-                } else c = h;
-                return b
-            }
-            var e = this,
-                f = [],
-                l = ["k", "v"],
-                o = "(",
-                q = ")",
-                s = "*",
-                na = "!",
-                B = {
-                    "'": "'0"
-                };
-            B[q] = "'1";
-            B[s] = "'2";
-            B[na] = "'3";
-            var aa = 1;
-            e.va = function (a) {
-                return g != f[a]
-            };
-            e.o = function () {
-                for (var a = "", b = 0; b < f[u]; b++) g != f[b] && (a += b[t]() + d(f[b]));
-                return a
-            };
-            e.ua = function (a) {
-                if (a == g) return e.o();
-                for (var b = a.o(), c = 0; c < f[u]; c++) g != f[c] && !a.va(c) && (b += c[t]() + d(f[c]));
-                return b
-            };
-            e.e = function (b, c, d) {
-                if (!Uc(d)) return j;
-                a(b, "k", c, d);
-                return h
-            };
-            e.k = function (b, c, d) {
-                if (!Vc(d)) return j;
-                a(b, "v", c, d[t]());
-                return h
-            };
-            e.getKey = function (a, c) {
-                return b(a, "k", c)
-            };
-            e.C = function (a, c) {
-                return b(a, "v", c)
-            };
-            e.A = function (a) {
-                c(a, "k")
-            };
-            e.B = function (a) {
-                c(a, "v")
-            };
-            R(e, "_setKey", e.e, 89);
-            R(e, "_setValue", e.k, 90);
-            R(e, "_getKey", e.getKey, 87);
-            R(e, "_getValue", e.C, 88);
-            R(e, "_clearKey", e.A, 85);
-            R(e, "_clearValue", e.B, 86)
-        };
-
-    function Uc(a) {
-        return typeof a == "string"
-    }
-    function Vc(a) {
-        return typeof a != "number" && (g == Number || !(a instanceof Number)) || k.round(a) != a || a == NaN || a == ca ? j : h
-    };
-    var Zc = function (a) {
-            var b = V.gaGlobal;
-            a && !b && (V.gaGlobal = b = {});
-            return b
-        },
-        $c = function () {
-            var a = Zc(h).hid;
-            if (a == i) a = va(), Zc(h).hid = a;
-            return a
-        },
-        ad = function (a) {
-            a.set(rb, $c());
-            var b = Zc();
-            if (b && b.dh == a.get(M)) {
-                var c = b.sid;
-                c && (c == "0" && G(112), a.set(Eb, c), a.get(yb) && a.set(Db, c));
-                b = b.vid;
-                a.get(yb) && b && (b = b[w]("."), b[1] * 1 || G(112), a.set(P, b[0] * 1), a.set(Cb, b[1] * 1))
-            }
-        };
-    var bd, cd = function (a, b, c) {
-            var d = a[y](Ma, ""),
-                e = a[y](N, "/"),
-                a = a.b(Na, 0);
-            X(b, c, e, d, a)
-        },
-        tc = function (a) {
-            var b = a[y](Ma, "");
-            a.b(M, 1);
-            var c = a[y](N, "/");
-            X("__utma", yc(a), c, b, a.get(Na));
-            X("__utmb", zc(a), c, b, a.get(Oa));
-            X("__utmc", "" + a.b(M, 1), c, b);
-            var d = Ec(a, h);
-            d ? X("__utmz", d, c, b, a.get(Pa)) : X("__utmz", "", c, b, -1);
-            (d = Bc(a, j)) ? X("__utmv", d, c, b, a.get(Na)) : X("__utmv", "", c, b, -1)
-        },
-        sc = function (a) {
-            var b = a.b(M, 1);
-            if (!xc(a, vc(b, W("__utma")))) return a.set(Bb, h), j;
-            var c = !Ac(a, vc(b, W("__utmb")));
-            a.set(Hb, c);
-            Gc(a, vc(b, W("__utmz")));
-            Cc(a, vc(b, W("__utmv")));
-            bd = !c;
-            return h
-        },
-        dd = function (a) {
-            !bd && !(W("__utmb")[u] > 0) && (X("__utmd", "1", a[y](N, "/"), a[y](Ma, ""), 1E4), W("__utmd")[u] == 0 && a[pa]())
-        };
-    var gd = function (a) {
-            a.get(P) == g ? ed(a) : a.get(Bb) && !a.get(kc) ? ed(a) : a.get(Hb) && fd(a)
-        },
-        hd = function (a) {
-            a.get(Nb) && !a.get(Gb) && (fd(a), a.set(Lb, a.get(Fb)))
-        },
-        ed = function (a) {
-            var b = a.get(La);
-            a.set(yb, h);
-            a.set(P, va() ^ Rc(a) & 2147483647);
-            a.set(zb, "");
-            a.set(Cb, b);
-            a.set(Db, b);
-            a.set(Eb, b);
-            a.set(Fb, 1);
-            a.set(Gb, h);
-            a.set(Ib, 0);
-            a.set(Q, 10);
-            a.set(Jb, b);
-            a.set(O, []);
-            a.set(Bb, j);
-            a.set(Hb, j)
-        },
-        fd = function (a) {
-            a.set(Db, a.get(Eb));
-            a.set(Eb, a.get(La));
-            a.n(Fb);
-            a.set(Gb, h);
-            a.set(Ib, 0);
-            a.set(Q, 10);
-            a.set(Jb, a.get(La));
-            a.set(Hb, j)
-        };
-    var id = "daum:q,eniro:search_word,naver:query,pchome:q,images.google:q,google:q,yahoo:p,yahoo:q,msn:q,bing:q,aol:query,aol:q,lycos:query,ask:q,netscape:query,cnn:query,about:terms,mamma:q,voila:rdata,virgilio:qs,live:q,baidu:wd,alice:qs,yandex:text,najdi:q,seznam:q,search:q,wp:szukaj,onet:qt,szukacz:q,yam:k,kvasir:q,ozu:q,terra:query,rambler:query".split(","),
-        od = function (a) {
-            if (a.get(Va) && !a.get(kc)) {
-                for (var b = !E(a.get(Ob)) || !E(a.get(Sb)) || !E(a.get(Qb)) || !E(a.get(Rb)), c = {}, d = 0; d < jd[u]; d++) {
-                    var e = jd[d];
-                    c[e] = a.get(e)
-                }
-                d = Ca(J[x].href, a.get(Ra));
-                if (!(za(d.c.get(a.get(db))) == "1" && b) && (d = kd(a, d) || ld(a), !d && !b && a.get(Gb) && (md(a, g, "(direct)", g, g, "(direct)", "(none)", g, g), d = h), d && (a.set(Nb, nd(a, c)), b = a.get(Sb) == "(direct)" && a.get(Pb) == "(direct)" && a.get(Tb) == "(none)", a.get(Nb) || a.get(Gb) && !b))) a.set(Kb, a.get(La)), a.set(Lb, a.get(Fb)), a.n(Mb)
-            }
-        },
-        kd = function (a, b) {
-            function c(c, d) {
-                var d = d || "-",
-                    e = za(b.c.get(a.get(c)));
-                return e && e != "-" ? H(e) : d
-            }
-            var d = za(b.c.get(a.get(Xa))) || "-",
-                e = za(b.c.get(a.get($a))) || "-",
-                f = za(b.c.get(a.get(Za))) || "-",
-                l = za(b.c.get("dclid")) || "-",
-                o = c(Ya, "(not set)"),
-                q = c(ab, "(not set)"),
-                s = c(bb),
-                na = c(cb);
-            if (E(d) && E(f) && E(l) && E(e)) return j;
-            if (E(s)) {
-                var B = Ea(a.get(qb), a.get(N)),
-                    B = Ca(B, h);
-                (B = pd(a, B)) && !E(B[1] && !B[2]) && (s = B[1])
-            }
-            md(a, d, e, f, l, o, q, s, na);
-            return h
-        },
-        ld = function (a) {
-            var b = Ea(a.get(qb), a.get(N)),
-                c = Ca(b, h);
-            if (!(b != g && b != i && b != "" && b != "0" && b != "-" && b[p]("://") >= 0) || c && c[oa][p]("google") > -1 && c.c.contains("q") && c.path == "cse") return j;
-            if ((b = pd(a, c)) && !b[2]) return md(a, g, b[0], g, g, "(organic)", "organic", b[1], g), h;
-            else if (b) return j;
-            if (a.get(Gb)) a: {
-                for (var b = a.get(kb), d = Ba(c[oa]), e = 0; e < b[u]; ++e) if (d[p](b[e]) > -1) {
-                    a = j;
-                    break a
-                }
-                md(a, g, d, g, g, "(referral)", "referral", g, "/" + c.path);
-                a = h
-            } else a = j;
-            return a
-        },
-        pd = function (a, b) {
-            for (var c = a.get(ib), d = 0; d < c[u]; ++d) {
-                var e = c[d][w](":");
-                if (b[oa][p](e[0][C]()) > -1) {
-                    var f = b.c.get(e[1]);
-                    if (f && (f = I(f), !f && b[oa][p]("google.") > -1 && (f = "(not provided)"), !e[3] || b.url[p](e[3]) > -1)) {
-                        a: {
-                            for (var c = f, d = a.get(jb), c = H(c)[C](), l = 0; l < d[u]; ++l) if (c == d[l]) {
-                                c = h;
-                                break a
-                            }
-                            c = j
-                        }
-                        return [e[2] || e[0], f, c]
-                    }
-                }
-            }
-            return i
-        },
-        md = function (a, b, c, d, e, f, l, o, q) {
-            a.set(Ob, b);
-            a.set(Sb, c);
-            a.set(Qb, d);
-            a.set(Rb, e);
-            a.set(Pb, f);
-            a.set(Tb, l);
-            a.set(Ub, o);
-            a.set(Vb, q)
-        },
-        jd = [Pb, Ob, Qb, Rb, Sb, Tb, Ub, Vb],
-        nd = function (a, b) {
-            function c(a) {
-                a = ("" + a)[w]("+")[A]("%20");
-                return a = a[w](" ")[A]("%20")
-            }
-            function d(c) {
-                var d = "" + (a.get(c) || ""),
-                    c = "" + (b[c] || "");
-                return d[u] > 0 && d == c
-            }
-            if (d(Qb) || d(Rb)) return G(131), j;
-            for (var e = 0; e < jd[u]; e++) {
-                var f = jd[e],
-                    l = b[f] || "-",
-                    f = a.get(f) || "-";
-                if (c(l) != c(f)) return h
-            }
-            return j
-        };
-    var rd = function (a) {
-            qd(a, J[x].href) ? (a.set(kc, h), G(12)) : a.set(kc, j)
-        },
-        qd = function (a, b) {
-            if (!a.get(Qa)) return j;
-            var c = Ca(b, a.get(Ra)),
-                d = I(c.c.get("__utma")),
-                e = I(c.c.get("__utmb")),
-                f = I(c.c.get("__utmc")),
-                l = I(c.c.get("__utmx")),
-                o = I(c.c.get("__utmz")),
-                q = I(c.c.get("__utmv")),
-                c = I(c.c.get("__utmk"));
-            if (ua("" + d + e + f + l + o + q) != c) {
-                d = H(d);
-                e = H(e);
-                f = H(f);
-                l = H(l);
-                a: {
-                    for (var f = d + e + f + l, s = 0; s < 3; s++) {
-                        for (var na = 0; na < 3; na++) {
-                            if (c == ua(f + o + q)) {
-                                G(127);
-                                c = [o, q];
-                                break a
-                            }
-                            var B = o[ia](/ /g, "%20"),
-                                aa = q[ia](/ /g, "%20");
-                            if (c == ua(f + B + aa)) {
-                                G(128);
-                                c = [B, aa];
-                                break a
-                            }
-                            B = B[ia](/\+/g, "%20");
-                            aa = aa[ia](/\+/g, "%20");
-                            if (c == ua(f + B + aa)) {
-                                G(129);
-                                c = [B, aa];
-                                break a
-                            }
-                            o = H(o)
-                        }
-                        q = H(q)
-                    }
-                    c = g
-                }
-                if (!c) return j;
-                o = c[0];
-                q = c[1]
-            }
-            if (!xc(a, d, h)) return j;
-            Ac(a, e, h);
-            Gc(a, o, h);
-            Cc(a, q, h);
-            sd(a, l, h);
-            return h
-        },
-        ud = function (a, b, c) {
-            var d;
-            d = yc(a) || "-";
-            var e = zc(a) || "-",
-                f = "" + a.b(M, 1) || "-",
-                l = td(a) || "-",
-                o = Ec(a, j) || "-",
-                a = Bc(a, j) || "-",
-                q = ua("" + d + e + f + l + o + a),
-                s = [];
-            s[m]("__utma=" + d);
-            s[m]("__utmb=" + e);
-            s[m]("__utmc=" + f);
-            s[m]("__utmx=" + l);
-            s[m]("__utmz=" + o);
-            s[m]("__utmv=" + a);
-            s[m]("__utmk=" + q);
-            d = s[A]("&");
-            if (!d) return b;
-            e = b[p]("#");
-            return c ? e < 0 ? b + "#" + d : b + "&" + d : (c = "", f = b[p]("?"), e > 0 && (c = b[z](e), b = b[z](0, e)), f < 0 ? b + "?" + d + c : b + "&" + d + c)
-        };
-    var vd = "|",
-        xd = function (a, b, c, d, e, f, l, o, q) {
-            var s = wd(a, b);
-            s || (s = {}, a.get(lb)[m](s));
-            s.id_ = b;
-            s.affiliation_ = c;
-            s.total_ = d;
-            s.tax_ = e;
-            s.shipping_ = f;
-            s.city_ = l;
-            s.state_ = o;
-            s.country_ = q;
-            s.items_ = s.items_ || [];
-            return s
-        },
-        yd = function (a, b, c, d, e, f, l) {
-            var a = wd(a, b) || xd(a, b, "", 0, 0, 0, "", "", ""),
-                o;
-            a: {
-                if (a && a.items_) {
-                    o = a.items_;
-                    for (var q = 0; q < o[u]; q++) if (o[q].sku_ == c) {
-                        o = o[q];
-                        break a
-                    }
-                }
-                o = i
-            }
-            q = o || {};
-            q.transId_ = b;
-            q.sku_ = c;
-            q.name_ = d;
-            q.category_ = e;
-            q.price_ = f;
-            q.quantity_ = l;
-            o || a.items_[m](q);
-            return q
-        },
-        wd = function (a, b) {
-            for (var c = a.get(lb), d = 0; d < c[u]; d++) if (c[d].id_ == b) return c[d];
-            return i
-        };
-    var zd, Ad = function (a) {
-        /* Disabled for security.
-            var f;
-            var e;
-            if (!zd) {
-                var b;
-                b = J[x].hash;
-                var c = V[r],
-                    d = /^#?gaso=([^&]*)/;
-                if (f = (e = (b = b && b[ma](d) || c && c[ma](d)) ? b[1] : I(W("GASO")), b = e) && b[ma](/^(?:\|([-0-9a-z.]{1,40})\|)?([-.\w]{10,1200})$/i), c = f) if (cd(a, "GASO", "" + b), K._gasoDomain = a.get(Ma), K._gasoCPath = a.get(N), b = "https://"; + ((c[1] || "www") + ".google.com") + "/analytics/reporting/overlay_js?gaso=" + c[2] + "&" + va()) a = J.createElement("script"), a.type = "text/javascript", a.async = h, a.src = b, a.id = "_gasojs", fa(a, g), b = J.getElementsByTagName("script")[0], b.parentNode.insertBefore(a, b);
-                zd = h
-            }
-        */
-        };
-    var sd = function (a, b, c) {
-            c && (b = H(b));
-            c = a.b(M, 1);
-            b = b[w](".");
-            !(b[u] < 2) && /^\d+$/.test(b[0]) && (b[0] = "" + c, cd(a, "__utmx", b[A](".")))
-        },
-        td = function (a, b) {
-            var c = vc(a.get(M), W("__utmx"));
-            c == "-" && (c = "");
-            return b ? F(c) : c
-        };
-    var Fd = function (a, b) {
-            var c = k.min(a.b(ic, 0), 10);
-            if (a.b(P, 0) % 100 >= c) return j;
-            c = Bd() || Cd();
-            if (c == g) return j;
-            var d = c[0];
-            if (d == g || d == ca || isNaN(d)) return j;
-            d > 0 ? Dd(c) ? b(Ed(c)) : b(Ed(c[ha](0, 1))) : xa(V, "load", function () {
-                Fd(a, b)
-            }, j);
-            return h
-        },
-        Dd = function (a) {
-            for (var b = 1; b < a[u]; b++) if (isNaN(a[b]) || a[b] == ca || a[b] < 0) return j;
-            return h
-        },
-        Ed = function (a) {
-            for (var b = new Yc, c = 0; c < a[u]; c++) b.e(14, c + 1, (isNaN(a[c]) || a[c] < 0 ? 0 : a[c] < 5E3 ? k[ka](a[c] / 10) * 10 : a[c] < 45E4 ? k[ka](a[c] / 100) * 100 : 45E4) + ""), b.k(14, c + 1, a[c]);
-            return b
-        },
-        Bd = function () {
-            var a = V.performance || V.webkitPerformance;
-            if (a = a && a.timing) {
-                var b = a.navigationStart;
-                if (b == 0) G(133);
-                else return [a.loadEventStart - b, a.domainLookupEnd - a.domainLookupStart, a.connectEnd - a.connectStart, a.responseStart - a.requestStart, a.responseEnd - a.responseStart, a.fetchStart - b]
-            }
-        },
-        Cd = function () {
-            if (V.top == V) {
-                var a = V.external,
-                    b = a && a.onloadT;
-                a && !a.isValidLoadTime && (b = g);
-                b > 2147483648 && (b = g);
-                b > 0 && a.setPageReadyTime();
-                return b == g ? g : [b]
-            }
-        };
-    var S = function (a, b, c) {
-            function d(a) {
-                return function (b) {
-                    if ((b = b.get(lc)[a]) && b[u]) for (var c = nc(e, a), d = 0; d < b[u]; d++) b[d].call(e, c)
-                }
-            }
-            var e = this;
-            this.a = new uc;
-            this.get = function (a) {
-                return this.a.get(a)
-            };
-            this.set = function (a, b, c) {
-                this.a.set(a, b, c)
-            };
-            this.set(Ia, b || "UA-XXXXX-X");
-            this.set(Ka, a || "");
-            this.set(Ja, c || "");
-            this.set(La, k.round((new Date).getTime() / 1E3));
-            this.set(N, "/");
-            this.set(Na, 63072E6);
-            this.set(Pa, 15768E6);
-            this.set(Oa, 18E5);
-            this.set(Qa, j);
-            this.set(hb, 50);
-            this.set(Ra, j);
-            this.set(Sa, h);
-            this.set(Ta, h);
-            this.set(Ua, h);
-            this.set(Va, h);
-            this.set(Wa, h);
-            this.set(Ya, "utm_campaign");
-            this.set(Xa, "utm_id");
-            this.set(Za, "gclid");
-            this.set($a, "utm_source");
-            this.set(ab, "utm_medium");
-            this.set(bb, "utm_term");
-            this.set(cb, "utm_content");
-            this.set(db, "utm_nooverride");
-            this.set(eb, 100);
-            this.set(ic, 1);
-            this.set(jc, j);
-            this.set(fb, "/__utm.gif");
-            this.set(gb, 1);
-            this.set(lb, []);
-            this.set(O, []);
-            this.set(ib, id[ha](0));
-            this.set(jb, []);
-            this.set(kb, []);
-            this.t("auto");
-            this.set(qb, this.ra());
-            this.set(lc, {
-                hit: [],
-                load: []
-            });
-            this.a.g("0", rd);
-            this.a.g("1", gd);
-            this.a.g("2", od);
-            this.a.g("3", hd);
-            this.a.g("4", d("load"));
-            this.a.g("5", Ad);
-            this.a.d("A", Ic);
-            this.a.d("B", Kc);
-            this.a.d("C", gd);
-            this.a.d("D", Hc);
-            this.a.d("E", pc);
-            this.a.d("F", Gd);
-            this.a.d("G", dd);
-            this.a.d("H", Lc);
-            this.a.d("I", Sc);
-            this.a.d("J", ad);
-            this.a.d("K", d("hit"));
-            this.a.d("L", Hd);
-            this.a.d("M", Id);
-            this.get(La) === 0 && G(111);
-            this.a.J();
-            this.w = g
-        };
-    D = S[v];
-    D.h = function () {
-        var a = this.get(mb);
-        a || (a = new Yc, this.set(mb, a));
-        return a
-    };
-    D.ta = function (a) {
-        for (var b in a) {
-            var c = a[b];
-            a.hasOwnProperty(b) && typeof c != "function" && this.set(b, c, h)
-        }
-    };
-    D.z = function (a) {
-        if (this.get(jc)) return j;
-        var b = this,
-            c = Fd(this.a, function (c) {
-                b.set(ob, a, h);
-                b.u(c)
-            });
-        this.set(jc, c);
-        return c
-    };
-    D.na = function (a) {
-        a && a != g && (a.constructor + "")[p]("String") > -1 ? (G(13), this.set(ob, a, h)) : typeof a === "object" && a !== i && this.ta(a);
-        this.w = a = this.get(ob);
-        this.a.f("page");
-        this.z(a)
-    };
-    D.v = function (a, b, c, d, e) {
-        if (a == "" || !Uc(a) || b == "" || !Uc(b)) return j;
-        if (c != g && !Uc(c)) return j;
-        if (d != g && !Vc(d)) return j;
-        this.set($b, a, h);
-        this.set(ac, b, h);
-        this.set(bc, c, h);
-        this.set(cc, d, h);
-        this.set(Zb, !! e, h);
-        this.a.f("event");
-        return h
-    };
-    D.oa = function (a, b, c, d) {
-        if (!a || !b) return j;
-        this.set(dc, a, h);
-        this.set(ec, b, h);
-        this.set(hc, c || J[x].href, h);
-        d && this.set(ob, d, h);
-        this.a.f("social");
-        return h
-    };
-    D.ma = function () {
-        this.set(ic, 10);
-        this.z(this.w)
-    };
-    D.pa = function () {
-        this.a.f("trans")
-    };
-    D.u = function (a) {
-        this.set(nb, a, h);
-        this.a.f("event")
-    };
-    D.V = function (a) {
-        this.m();
-        var b = this;
-        return {
-            _trackEvent: function (c, d, e) {
-                G(91);
-                b.v(a, c, d, e)
-            }
-        }
-    };
-    D.Y = function (a) {
-        return this.get(a)
-    };
-    D.ga = function (a, b) {
-        if (a) if (a != g && (a.constructor + "")[p]("String") > -1) this.set(a, b);
-        else if (typeof a == "object") for (var c in a) a.hasOwnProperty(c) && this.set(c, a[c])
-    };
-    D.addEventListener = function (a, b) {
-        var c = this.get(lc)[a];
-        c && c[m](b)
-    };
-    D.removeEventListener = function (a, b) {
-        for (var c = this.get(lc)[a], d = 0; c && d < c[u]; d++) if (c[d] == b) {
-            c.splice(d, 1);
-            break
-        }
-    };
-    D.$ = function () {
-        return "5.2.2"
-    };
-    D.t = function (a) {
-        this.get(Sa);
-        a = a == "auto" ? Ba(J.domain) : !a || a == "-" || a == "none" ? "" : a[C]();
-        this.set(Ma, a)
-    };
-    D.ea = function (a) {
-        this.set(Sa, !! a)
-    };
-    D.Z = function (a, b) {
-        return ud(this.a, a, b)
-    };
-    D.link = function (a, b) {
-        if (this.a.get(Qa) && a) {
-            var c = ud(this.a, a, b);
-            J[x].href = c
-        }
-    };
-    D.da = function (a, b) {
-        this.a.get(Qa) && a && a.action && (a.action = ud(this.a, a.action, b))
-    };
-    D.ha = function () {
-        this.m();
-        var a = this.a,
-            b = J.getElementById ? J.getElementById("utmtrans") : J.utmform && J.utmform.utmtrans ? J.utmform.utmtrans : i;
-        if (b && b[la]) {
-            a.set(lb, []);
-            for (var b = b[la][w]("UTM:"), c = 0; c < b[u]; c++) {
-                b[c] = ta(b[c]);
-                for (var d = b[c][w](vd), e = 0; e < d[u]; e++) d[e] = ta(d[e]);
-                "T" == d[0] ? xd(a, d[1], d[2], d[3], d[4], d[5], d[6], d[7], d[8]) : "I" == d[0] && yd(a, d[1], d[2], d[3], d[4], d[5], d[6])
-            }
-        }
-    };
-    D.O = function (a, b, c, d, e, f, l, o) {
-        return xd(this.a, a, b, c, d, e, f, l, o)
-    };
-    D.M = function (a, b, c, d, e, f) {
-        return yd(this.a, a, b, c, d, e, f)
-    };
-    D.ia = function (a) {
-        vd = a || "|"
-    };
-    D.fa = function (a, b, c, d) {
-        var e = this.a;
-        if (a <= 0 || a > e.get(hb)) a = j;
-        else if (!b || !c || F(b)[u] + F(c)[u] > 64) a = j;
-        else {
-            d != 1 && d != 2 && (d = 3);
-            var f = {};
-            ga(f, b);
-            f.value = c;
-            f.scope = d;
-            e.get(O)[a] = f;
-            a = h
-        }
-        a && this.a.i();
-        return a
-    };
-    D.X = function (a) {
-        this.a.get(O)[a] = g;
-        this.a.i()
-    };
-    D.aa = function (a) {
-        return (a = this.a.get(O)[a]) && a[qa] == 1 ? a[la] : g
-    };
-    D.ka = function (a, b, c) {
-        this.h().e(a, b, c)
-    };
-    D.la = function (a, b, c) {
-        this.h().k(a, b, c)
-    };
-    D.ba = function (a, b) {
-        return this.h().getKey(a, b)
-    };
-    D.ca = function (a, b) {
-        return this.h().C(a, b)
-    };
-    D.S = function (a) {
-        this.h().A(a)
-    };
-    D.T = function (a) {
-        this.h().B(a)
-    };
-    D.W = function () {
-        return new Yc
-    };
-    D.K = function (a) {
-        a && this.get(jb)[m](a[C]())
-    };
-    D.P = function () {
-        this.set(jb, [])
-    };
-    D.L = function (a) {
-        a && this.get(kb)[m](a[C]())
-    };
-    D.Q = function () {
-        this.set(kb, [])
-    };
-    D.N = function (a, b, c, d, e) {
-        if (a && b) {
-            a = [a, b[C]()][A](":");
-            if (d || e) a = [a, d, e][A](":");
-            d = this.get(ib);
-            d.splice(c ? 0 : d[u], 0, a)
-        }
-    };
-    D.R = function () {
-        this.set(ib, [])
-    };
-    D.U = function (a) {
-        this.a[ja]();
-        var b = this.get(N),
-            c = td(this.a);
-        this.set(N, a);
-        this.a.i();
-        sd(this.a, c);
-        this.set(N, b)
-    };
-    D.ra = function () {
-        return J.referrer
-    };
-    D.m = function () {
-        this.a[ja]()
-    };
-    D.ja = function (a) {
-        a && a != "" && (this.set(zb, a), this.a.f("var"))
-    };
-    var Gd = function (a) {
-            a.get(Wb) !== "trans" && a.b(Ib, 0) >= 500 && a[pa]();
-            if (a.get(Wb) === "event") {
-                var b = (new Date).getTime(),
-                    c = a.b(Jb, 0),
-                    d = a.b(Eb, 0),
-                    c = k[ka](0.2 * ((b - (c != d ? c : c * 1E3)) / 1E3));
-                c > 0 && (a.set(Jb, b), a.set(Q, k.min(10, a.b(Q, 0) + c)));
-                a.b(Q, 0) <= 0 && a[pa]()
-            }
-        },
-        Id = function (a) {
-            a.get(Wb) === "event" && a.set(Q, k.max(0, a.b(Q, 10) - 1))
-        };
-    var Jd = function () {
-            var a = [];
-            this.add = function (b, c, d) {
-                d && (c = F("" + c));
-                a[m](b + "=" + c)
-            };
-            this.toString = function () {
-                return a[A]("&")
-            }
-        },
-        Kd = function (a, b) {
-            (b || a.get(gb) != 2) && a.n(Ib)
-        },
-        Ld = function (a, b) {
-            b.add("utmwv", "5.2.2");
-            b.add("utms", a.get(Ib));
-            b.add("utmn", va());
-            var c = J[x].hostname;
-            E(c) || b.add("utmhn", c, h);
-            c = a.get(eb);
-            c != 100 && b.add("utmsp", c, h)
-        },
-        Nd = function (a, b) {
-            b.add("utmac", a.get(Ia));
-            a.get(Zb) && b.add("utmni", 1);
-            Md(a, b);
-            K.q && b.add("aip", 1);
-            b.add("utmu", Mc.Ea())
-        },
-        Md = function (a, b) {
-            function c(a, b) {
-                b && d[m](a + "=" + b + ";")
-            }
-            var d = [];
-            c("__utma", yc(a));
-            c("__utmz", Ec(a, j));
-            c("__utmv", Bc(a, h));
-            c("__utmx", td(a));
-            b.add("utmcc", d[A]("+"), h)
-        },
-        Od = function (a, b) {
-            a.get(Ta) && (b.add("utmcs", a.get(xb), h), b.add("utmsr", a.get(sb)), b.add("utmsc", a.get(tb)), b.add("utmul", a.get(wb)), b.add("utmje", a.get(ub)), b.add("utmfl", a.get(vb), h))
-        },
-        Pd = function (a, b) {
-            a.get(Wa) && a.get(pb) && b.add("utmdt", a.get(pb), h);
-            b.add("utmhid", a.get(rb));
-            b.add("utmr", Ea(a.get(qb), a.get(N)), h);
-            b.add("utmp", F(a.get(ob), h), h)
-        },
-        Qd = function (a, b) {
-            for (var c = a.get(mb), d = a.get(nb), e = a.get(O) || [], f = 0; f < e[u]; f++) {
-                var l = e[f];
-                l && (c || (c = new Yc), c.e(8, f, l[r]), c.e(9, f, l[la]), l[qa] != 3 && c.e(11, f, "" + l[qa]))
-            }!E(a.get($b)) && !E(a.get(ac), h) && (c || (c = new Yc), c.e(5, 1, a.get($b)), c.e(5, 2, a.get(ac)), e = a.get(bc), e != g && c.e(5, 3, e), e = a.get(cc), e != g && c.k(5, 1, e));
-            c ? b.add("utme", c.ua(d), h) : d && b.add("utme", d.o(), h)
-        },
-        Rd = function (a, b, c) {
-            var d = new Jd;
-            Kd(a, c);
-            Ld(a, d);
-            d.add("utmt", "tran");
-            d.add("utmtid", b.id_, h);
-            d.add("utmtst", b.affiliation_, h);
-            d.add("utmtto", b.total_, h);
-            d.add("utmttx", b.tax_, h);
-            d.add("utmtsp", b.shipping_, h);
-            d.add("utmtci", b.city_, h);
-            d.add("utmtrg", b.state_, h);
-            d.add("utmtco", b.country_, h);
-            !c && Nd(a, d);
-            return d[t]()
-        },
-        Sd = function (a, b, c) {
-            var d = new Jd;
-            Kd(a, c);
-            Ld(a, d);
-            d.add("utmt", "item");
-            d.add("utmtid", b.transId_, h);
-            d.add("utmipc", b.sku_, h);
-            d.add("utmipn", b.name_, h);
-            d.add("utmiva", b.category_, h);
-            d.add("utmipr", b.price_, h);
-            d.add("utmiqt", b.quantity_, h);
-            !c && Nd(a, d);
-            return d[t]()
-        },
-        Td = function (a, b) {
-            var c = a.get(Wb);
-            if (c == "page") c = new Jd, Kd(a, b), Ld(a, c), Qd(a, c), Od(a, c), Pd(a, c), b || Nd(a, c), c = [c[t]()];
-            else if (c == "event") c = new Jd, Kd(a, b), Ld(a, c), c.add("utmt", "event"), Qd(a, c), Od(a, c), Pd(a, c), !b && Nd(a, c), c = [c[t]()];
-            else if (c == "var") c = new Jd, Kd(a, b), Ld(a, c), c.add("utmt", "var"), !b && Nd(a, c), c = [c[t]()];
-            else if (c == "trans") for (var c = [], d = a.get(lb), e = 0; e < d[u]; ++e) {
-                c[m](Rd(a, d[e], b));
-                for (var f = d[e].items_, l = 0; l < f[u]; ++l) c[m](Sd(a, f[l], b))
-            } else c == "social" ? b ? c = [] : (c = new Jd, Kd(a, b), Ld(a, c), c.add("utmt", "social"), c.add("utmsn", a.get(dc), h), c.add("utmsa", a.get(ec), h), c.add("utmsid", a.get(hc), h), Qd(a, c), Od(a, c), Pd(a, c), Nd(a, c), c = [c[t]()]) : c = [];
-            return c
-        },
-        Hd = function (a) {
-            var b, c = a.get(gb),
-                d = a.get(Yb),
-                e = d && d.Aa,
-                f = 0;
-            if (c == 0 || c == 2) {
-                var l = a.get(fb) + "?";
-                b = Td(a, h);
-                for (var o = 0, q = b[u]; o < q; o++) Ga(b[o], e, l, h), f++
-            }
-            if (c == 1 || c == 2) {
-                b = Td(a);
-                o = 0;
-                for (q = b[u]; o < q; o++) try {
-                    Ga(b[o], e), f++
-                } catch (s) {
-                    s && Fa(s[r], g, s.message)
-                }
-            }
-            if (d) d.j = f
-        };
-    var Ud = "https:" == J[x].protocol ? "https://ssl.google-analytics.com"; : "http://www.google-analytics.com";,
-        Vd = function (a) {
-            ga(this, "len");
-            this.message = a + "-8192"
-        },
-        Wd = function (a) {
-            ga(this, "ff2post");
-            this.message = a + "-2036"
-        },
-        Ga = function (a, b, c, d) {
-            b = b || wa;
-            if (d || a[u] <= 2036) Xd(a, b, c);
-            else if (a[u] <= 8192) {
-                if (V[ra].userAgent[p]("Firefox") >= 0 && ![].reduce) throw new Wd(a[u]);
-                Yd(a, b) || Zd(a, b)
-            } else throw new Vd(a[u]);
-        },
-        Xd = function (a, b, c) {
-            var c = c || Ud + "/__utm.gif?",
-                d = new Image(1, 1);
-            d.src = c + a;
-            fa(d, function () {
-                fa(d, i);
-                d.onerror = i;
-                b()
-            });
-            d.onerror = function () {
-                fa(d, i);
-                d.onerror = i;
-                b()
-            }
-        },
-        Yd = function (a, b) {
-            var c, d = Ud + "/p/__utm.gif",
-                e = V.XDomainRequest;
-            if (e) c = new e, c.open("POST", d);
-            else if (e = V.XMLHttpRequest) e = new e, "withCredentials" in e && (c = e, c.open("POST", d, h), c.setRequestHeader("Content-Type", "text/plain"));
-            if (c) return c.onreadystatechange = function () {
-                c.readyState == 4 && (b(), c = i)
-            }, c.send(a), h
-        },
-        Zd = function (a, b) {
-            if (J.body) {
-                a = ba(a);
-                try {
-                    var c = J.createElement('<iframe name="' + a + '"></iframe>')
-                } catch (d) {
-                    c = J.createElement("iframe"), ga(c, a)
-                }
-                c.height = "0";
-                c.width = "0";
-                c.style.display = "none";
-                c.style.visibility = "hidden";
-                var e = J[x],
-                    e = Ud + "/u/post_iframe.html#" + ba(e.protocol + "//" + e[oa] + "/favicon.ico"),
-                    f = function () {
-                        c.src = "";
-                        c.parentNode && c.parentNode.removeChild(c)
-                    };
-                xa(V, "beforeunload", f);
-                var l = j,
-                    o = 0,
-                    q = function () {
-                        if (!l) {
-                            try {
-                                if (o > 9 || c.contentWindow[x][oa] == J[x][oa]) {
-                                    l = h;
-                                    f();
-                                    ya(V, "beforeunload", f);
-                                    b();
-                                    return
-                                }
-                            } catch (a) {}
-                            o++;
-                            da(q, 200)
-                        }
-                    };
-                xa(c, "load", q);
-                J.body.appendChild(c);
-                c.src = e
-            } else Nc(function () {
-                Zd(a, b)
-            }, 100)
-        };
-    var Z = function () {
-            this.q = j;
-            this.D = {};
-            this.F = [];
-            this.wa = 0;
-            this._gasoCPath = this._gasoDomain = g;
-            R(Z[v], "_createTracker", Z[v].l, 55);
-            R(Z[v], "_getTracker", Z[v].ya, 0);
-            R(Z[v], "_getTrackerByName", Z[v].p, 51);
-            R(Z[v], "_getTrackers", Z[v].za, 130);
-            R(Z[v], "_anonymizeIp", Z[v].xa, 16);
-            mc()
-        };
-    D = Z[v];
-    D.ya = function (a, b) {
-        return this.l(a, g, b)
-    };
-    D.l = function (a, b, c) {
-        b && G(23);
-        c && G(67);
-        b == g && (b = "~" + K.wa++);
-        a = new S(b, a, c);
-        K.D[b] = a;
-        K.F[m](a);
-        return a
-    };
-    D.p = function (a) {
-        a = a || "";
-        return K.D[a] || K.l(g, a)
-    };
-    D.za = function () {
-        return K.F[ha](0)
-    };
-    D.xa = function () {
-        this.q = h
-    };
-    var $d = function (a) {
-            if (J.webkitVisibilityState == "prerender") return j;
-            a();
-            return h
-        };
-    var K = new Z;
-    var ae = V._gat;
-    ae && typeof ae._getTracker == "function" ? K = ae : V._gat = K;
-    var Tc = new Y;
-    (function (a) {
-        if (!$d(a)) {
-            G(123);
-            var b = j,
-                c = function () {
-                    !b && $d(a) && (G(124), b = h, ya(J, "webkitvisibilitychange", c))
-                };
-            xa(J, "webkitvisibilitychange", c)
-        }
-    })(function () {
-        var a = V._gaq,
-            b = j;
-        if (a && typeof a[m] == "function" && (b = Object[v][t].call(Object(a)) == "[object Array]", !b)) {
-            Tc = a;
-            return
-        }
-        V._gaq = Tc;
-        b && Tc[m].apply(Tc, a)
-    });
-})();

=== modified file 'lib/lp/app/templates/base-layout.pt'
--- lib/lp/app/templates/base-layout.pt	2015-06-04 19:02:13 +0000
+++ lib/lp/app/templates/base-layout.pt	2015-11-21 10:33:29 +0000
@@ -55,26 +55,6 @@
     <tal:view condition="not: view/macro:is-page-contentless">
       <metal:block define-slot="head_epilogue"></metal:block>
     </tal:view>
-
-    <tal:ga condition="python: is_lpnet">
-      <tal:script
-          replace="structure string:&lt;script type='text/javascript'&gt;" />
-        var _gaq = _gaq || [];
-        _gaq.push(['_setAccount', 'UA-12833497-1']);
-        _gaq.push(['_setDomainName', '.launchpad.net']);
-        _gaq.push(['_setAllowHash', false]);
-        _gaq.push(['_trackPageview']);
-
-        (function() {
-          var ga = document.createElement('script');
-          ga.type = 'text/javascript';
-          ga.async = true;
-          ga.src = '<tal:ga-js replace="string:${icingroot}/google-analytics/ga.js" />';
-          var s = document.getElementsByTagName('script')[0];
-          s.parentNode.insertBefore(ga, s);
-        })();
-      <tal:script replace="structure string:&lt;/script&gt;" />
-    </tal:ga>
   </head>
 
   <body id="document"


Follow ups