I did take a backup from it since i saw the "Youtube will not work after 30.6.2017" message for the first time.
But when i ftp it back and start it i only get a black screen.
Noticed there are some interresting files in the youtube app folder.
For example the js\main.js
Content of this file is:
Code: Select all
(function() {
var k = !0,
m = null,
n = !1,
o, p = this;
function q(a) {
for (var a = a.split("."), b = p, c; c = a.shift();)
if (b[c] != m) b = b[c];
else return m;
return b
}
function r(a) {
var b = typeof a;
if ("object" == b)
if (a) {
if (a instanceof Array) return "array";
if (a instanceof Object) return b;
var c = Object.prototype.toString.call(a);
if ("[object Window]" == c) return "object";
if ("[object Array]" == c || "number" == typeof a.length && "undefined" != typeof a.splice && "undefined" != typeof a.propertyIsEnumerable && !a.propertyIsEnumerable("splice")) return "array";
if ("[object Function]" == c || "undefined" != typeof a.call && "undefined" != typeof a.propertyIsEnumerable && !a.propertyIsEnumerable("call")) return "function"
} else return "null";
else if ("function" == b && "undefined" == typeof a.call) return "object";
return b
}
function s(a) {
return "string" == typeof a
}
var u = "closure_uid_" + Math.floor(2147483648 * Math.random()).toString(36),
v = 0,
aa = Date.now || function() {
return +new Date
};
function x(a, b) {
var c = a.split("."),
d = p;
!(c[0] in d) && d.execScript && d.execScript("var " + c[0]);
for (var f; c.length && (f = c.shift());) !c.length && void 0 !== b ? d[f] = b : d = d[f] ? d[f] : d[f] = {}
}
function y(a, b) {
function c() {}
c.prototype = b.prototype;
a.m = b.prototype;
a.prototype = new c
};
function ba() {
for (var a = 0, b = 0; 64 > b; ++b) a = 31 * a + "http://www.youtube.com/leanbacklite?action_get_js&vendor=samsung".charCodeAt(b), a %= 4294967296;
return a
};
var z = Array.prototype,
ca = z.indexOf ? function(a, b, c) {
return z.indexOf.call(a, b, c)
} : function(a, b, c) {
c = c == m ? 0 : 0 > c ? Math.max(0, a.length + c) : c;
if (s(a)) return !s(b) || 1 != b.length ? -1 : a.indexOf(b, c);
for (; c < a.length; c++)
if (c in a && a[c] === b) return c;
return -1
},
da = z.forEach ? function(a, b, c) {
z.forEach.call(a, b, c)
} : function(a, b, c) {
for (var d = a.length, f = s(a) ? a.split("") : a, e = 0; e < d; e++) e in f && b.call(c, f[e], e, a)
};
function ea(a, b) {
var c = ca(a, b);
0 <= c && z.splice.call(a, c, 1)
}
function fa(a, b, c) {
return 2 >= arguments.length ? z.slice.call(a, b) : z.slice.call(a, b, c)
};
var A, B, C, D;
function ga() {
return p.navigator ? p.navigator.userAgent : m
}
D = C = B = A = n;
var E;
if (E = ga()) {
var ha = p.navigator;
A = 0 == E.indexOf("Opera");
B = !A && -1 != E.indexOf("MSIE");
C = !A && -1 != E.indexOf("WebKit");
D = !A && !C && "Gecko" == ha.product
}
var ia = A,
F = B,
G = D,
H = C,
I;
a: {
var J = "",
K;
if (ia && p.opera) var L = p.opera.version,
J = "function" == typeof L ? L() : L;
else if (G ? K = /rv\:([^\);]+)(\)|;)/ : F ? K = /MSIE\s+([^\);]+)(\)|;)/ : H && (K = /WebKit\/(\S+)/), K) var ja = K.exec(ga()),
J = ja ? ja[1] : "";
if (F) {
var M, ka = p.document;
M = ka ? ka.documentMode : void 0;
if (M > parseFloat(J)) {
I = "" + M;
break a
}
}
I = J
}
var la = I,
ma = {};
function N(a) {
var b;
if (!(b = ma[a])) {
b = 0;
for (var c = ("" + la).replace(/^[\s\xa0]+|[\s\xa0]+$/g, "").split("."), d = ("" + a).replace(/^[\s\xa0]+|[\s\xa0]+$/g, "").split("."), f = Math.max(c.length, d.length), e = 0; 0 == b && e < f; e++) {
var g = c[e] || "",
i = d[e] || "",
l = RegExp("(\\d*)(\\D*)", "g"),
h = RegExp("(\\d*)(\\D*)", "g");
do {
var t = l.exec(g) || ["", "", ""],
j = h.exec(i) || ["", "", ""];
if (0 == t[0].length && 0 == j[0].length) break;
b = ((0 == t[1].length ? 0 : parseInt(t[1], 10)) < (0 == j[1].length ? 0 : parseInt(j[1], 10)) ? -1 : (0 == t[1].length ? 0 : parseInt(t[1],
10)) > (0 == j[1].length ? 0 : parseInt(j[1], 10)) ? 1 : 0) || ((0 == t[2].length) < (0 == j[2].length) ? -1 : (0 == t[2].length) > (0 == j[2].length) ? 1 : 0) || (t[2] < j[2] ? -1 : t[2] > j[2] ? 1 : 0)
} while (0 == b)
}
b = ma[a] = 0 <= b
}
return b
}
var na = {};
function O() {
return na[9] || (na[9] = F && !!document.documentMode && 9 <= document.documentMode)
};
!F || O();
!G && !F || F && O() || G && N("1.9.1");
F && N("9");
function P(a) {
P[" "](a);
return a
}
P[" "] = function() {};
!F || O();
var oa = !F || O(),
pa = F && !N("8");
!H || N("528");
G && N("1.9b") || F && N("8") || ia && N("9.5") || H && N("528");
G && !N("8") || F && N("9");
function Q() {}
Q.prototype.s = n;
Q.prototype.j = function() {
this.s || (this.s = k, this.g())
};
Q.prototype.g = function() {
this.v && qa.apply(m, this.v);
if (this.t)
for (; this.t.length;) this.t.shift()()
};
function qa(a) {
for (var b = 0, c = arguments.length; b < c; ++b) {
var d = arguments[b],
f = d,
e = r(f);
"array" == e || "object" == e && "number" == typeof f.length ? qa.apply(m, d) : d && "function" == typeof d.j && d.j()
}
};
function S(a, b) {
this.type = a;
this.a = this.b = b
}
y(S, Q);
S.prototype.g = function() {
delete this.type;
delete this.b;
delete this.a
};
S.prototype.l = n;
S.prototype.n = function() {};
function T(a, b) {
a && ra(this, a, b)
}
y(T, S);
T.prototype.b = m;
T.prototype.c = m;
function ra(a, b, c) {
var d = a.type = b.type;
S.call(a, d);
a.b = b.target || b.srcElement;
a.a = c;
if ((c = b.relatedTarget) && G) try {
P(c.nodeName)
} catch (f) {}
a.c = b;
b.defaultPrevented && a.n();
delete a.l
}
T.prototype.n = function() {
T.m.n.call(this);
var a = this.c;
if (a.preventDefault) a.preventDefault();
else if (a.returnValue = n, pa) try {
if (a.ctrlKey || 112 <= a.keyCode && 123 >= a.keyCode) a.keyCode = -1
} catch (b) {}
};
T.prototype.g = function() {
T.m.g.call(this);
this.a = this.b = this.c = m
};
function U() {}
var sa = 0;
U.prototype.key = 0;
U.prototype.f = n;
U.prototype.a = n;
U.prototype.handleEvent = function(a) {
return this.b ? this.h.call(this.p || this.src, a) : this.h.handleEvent.call(this.h, a)
};
var V = {},
W = {},
X = {},
Y = {};
function ta(a, b, c, d, f) {
if (b) {
if ("array" == r(b)) {
for (var e = 0; e < b.length; e++) ta(a, b[e], c, d, f);
return m
}
var d = !!d,
g = W;
b in g || (g[b] = {
d: 0,
e: 0
});
g = g[b];
d in g || (g[d] = {
d: 0,
e: 0
}, g.d++);
var g = g[d],
i = a[u] || (a[u] = ++v),
l;
g.e++;
if (g[i]) {
l = g[i];
for (e = 0; e < l.length; e++)
if (g = l[e], g.h == c && g.p == f) {
if (g.f) break;
return l[e].key
}
} else l = g[i] = [], g.d++;
e = ua();
e.src = a;
var h = g = new U;
if ("function" == r(c)) h.b = k;
else if (c && c.handleEvent && "function" == r(c.handleEvent)) h.b = n;
else throw Error("Invalid listener argument");
h.h = c;
h.c =
e;
h.src = a;
h.type = b;
h.capture = !!d;
h.p = f;
h.a = n;
h.key = ++sa;
h.f = n;
c = g.key;
e.key = c;
l.push(g);
V[c] = g;
X[i] || (X[i] = []);
X[i].push(g);
a.addEventListener ? (a == p || !a.u) && a.addEventListener(b, e, d) : a.attachEvent(b in Y ? Y[b] : Y[b] = "on" + b, e);
return c
}
throw Error("Invalid event type");
}
function ua() {
var a = va,
b = oa ? function(c) {
return a.call(b.src, b.key, c)
} : function(c) {
c = a.call(b.src, b.key, c);
if (!c) return c
};
return b
}
function wa(a, b, c, d, f) {
if ("array" == r(b))
for (var e = 0; e < b.length; e++) wa(a, b[e], c, d, f);
else a = ta(a, b, c, d, f), V[a].a = k
}
function xa(a, b, c, d) {
if (!d.k && d.q) {
for (var f = 0, e = 0; f < d.length; f++) d[f].f ? d[f].c.src = m : (f != e && (d[e] = d[f]), e++);
d.length = e;
d.q = n;
0 == e && (delete W[a][b][c], W[a][b].d--, 0 == W[a][b].d && (delete W[a][b], W[a].d--), 0 == W[a].d && delete W[a])
}
}
function ya(a, b, c, d, f) {
var e = 1,
b = b[u] || (b[u] = ++v);
if (a[b]) {
a.e--;
a = a[b];
a.k ? a.k++ : a.k = 1;
try {
for (var g = a.length, i = 0; i < g; i++) {
var l = a[i];
l && !l.f && (e &= za(l, f) !== n)
}
} finally {
a.k--, xa(c, d, b, a)
}
}
return Boolean(e)
}
function za(a, b) {
if (a.a) {
var c = a.key;
if (V[c]) {
var d = V[c];
if (!d.f) {
var f = d.src,
e = d.type,
g = d.c,
i = d.capture;
f.removeEventListener ? (f == p || !f.u) && f.removeEventListener(e, g, i) : f.detachEvent && f.detachEvent(e in Y ? Y[e] : Y[e] = "on" + e, g);
f = f[u] || (f[u] = ++v);
g = W[e][i][f];
if (X[f]) {
var l = X[f];
ea(l, d);
0 == l.length && delete X[f]
}
d.f = k;
g.q = k;
xa(e, i, f, g);
delete V[c]
}
}
}
return a.handleEvent(b)
}
function va(a, b) {
if (!V[a]) return k;
var c = V[a],
d = c.type,
f = W;
if (!(d in f)) return k;
var f = f[d],
e, g;
if (!oa) {
e = b || q("window.event");
var i = k in f,
l = n in f;
if (i) {
if (0 > e.keyCode || void 0 != e.returnValue) return k;
a: {
var h = n;
if (0 == e.keyCode) try {
e.keyCode = -1;
break a
} catch (t) {
h = k
}
if (h || void 0 == e.returnValue) e.returnValue = k
}
}
h = new T;
ra(h, e, this);
e = k;
try {
if (i) {
for (var j = [], R = h.a; R; R = R.parentNode) j.push(R);
g = f[k];
g.e = g.d;
for (var w = j.length - 1; !h.l && 0 <= w && g.e; w--) h.a = j[w], e &= ya(g, j[w], d, k, h);
if (l) {
g = f[n];
g.e = g.d;
for (w =
0; !h.l && w < j.length && g.e; w++) h.a = j[w], e &= ya(g, j[w], d, n, h)
}
} else e = za(c, h)
} finally {
j && (j.length = 0), h.j()
}
return e
}
d = new T(b, this);
try {
e = za(c, d)
} finally {
d.j()
}
return e
};
function Aa(a) {
return a.dataset ? a.dataset[Ba()] : a.getAttribute("data-loaded")
}
var Ca = {};
function Ba() {
return Ca.loaded || (Ca.loaded = "loaded".replace(/\-([a-z])/g, function(a, b) {
return b.toUpperCase()
}))
};
function Z() {
this.a = [];
this.b = {}
}
y(Z, Q);
o = Z.prototype;
o.r = 1;
o.i = 0;
o.z = function(a, b, c) {
var d = this.b[a];
d || (d = this.b[a] = []);
var f = this.r;
this.a[f] = a;
this.a[f + 1] = b;
this.a[f + 2] = c;
this.r = f + 3;
d.push(f);
return f
};
o.o = function(a) {
if (0 != this.i) return this.c || (this.c = []), this.c.push(a), n;
var b = this.a[a];
if (b) {
var c = this.b[b];
c && ea(c, a);
delete this.a[a];
delete this.a[a + 1];
delete this.a[a + 2]
}
return !!b
};
o.w = function(a, b) {
var c = this.b[a];
if (c) {
this.i++;
for (var d = fa(arguments, 1), f = 0, e = c.length; f < e; f++) {
var g = c[f];
this.a[g + 1].apply(this.a[g + 2], d)
}
this.i--;
if (this.c && 0 == this.i)
for (; c = this.c.pop();) this.o(c);
return 0 != f
}
return n
};
o.clear = function(a) {
if (a) {
var b = this.b[a];
b && (da(b, this.o, this), delete this.b[a])
} else this.a.length = 0, this.b = {}
};
o.g = function() {
Z.m.g.call(this);
delete this.a;
delete this.b;
delete this.c
};
var $ = window.yt && window.yt.config_ || {};
x("yt.config_", $);
x("yt.tokens_", window.yt && window.yt.tokens_ || {});
x("yt.globals_", window.yt && window.yt.globals_ || {});
x("yt.msgs_", window.yt && window.yt.msgs_ || {});
x("yt.timeouts_", window.yt && window.yt.timeouts_ || []);
x("yt.intervals_", window.yt && window.yt.intervals_ || []);
eval("/*@cc_on!@*/false");
var Da = q("yt.pubsub.instance_") || new Z;
Z.prototype.subscribe = Z.prototype.z;
Z.prototype.unsubscribeByKey = Z.prototype.o;
Z.prototype.publish = Z.prototype.w;
Z.prototype.clear = Z.prototype.clear;
x("yt.pubsub.instance_", Da);
function Ea(a, b) {
var c = q("yt.pubsub.instance_");
c && c.publish.apply(c, arguments)
};
function Fa() {
var a = "scriptload-" + ba(),
b = document.getElementById(a),
c = b && Aa(b);
if (!c && (!b || c)) {
b && (a = "scriptload-" + (Math.floor(2147483648 * Math.random()).toString(36) + Math.abs(Math.floor(2147483648 * Math.random()) ^ aa()).toString(36)));
var d = Ga(a, function() {
if (!Aa(d)) {
var b = d;
b.dataset ? b.dataset[Ba()] = "true" : b.setAttribute("data-loaded", "true");
Ea(a);
var b = a,
c = q("yt.pubsub.instance_");
c && c.clear(b)
}
})
}
}
function Ga(a, b) {
var c = document.createElement("script");
c.id = a;
c.onload = b;
c.onreadystatechange = function() {
if ("loaded" == c.readyState || "complete" == c.readyState) c.onload()
};
c.src = "http://www.youtube.com/leanbacklite?action_get_js&vendor=samsung";
var d = document.getElementsByTagName("head")[0];
d.insertBefore(c, d.firstChild);
return c
};
x("yt.tv.leanbacklite.samsung.exitOnBack", function() {
(new Common.API.Widget).sendReturnEvent()
});
x("yt.tv.leanbacklite.samsung.getVersion", function() {
return "3.1"
});
x("yt.setConfig", function(a) {
var b = arguments;
if (1 < b.length) {
var c = b[0];
$[c] = b[1]
} else
for (c in b = b[0], b) $[c] = b[c]
});
x("yt.getConfig", function(a, b) {
return a in $ ? $[a] : b
});
wa(window, "load", function() {
(new Common.API.Widget).sendReadyEvent();
Fa()
});
wa(window, "show", function() {
var a;
a = s("pluginObjectNNavi") ? document.getElementById("pluginObjectNNavi") : "pluginObjectNNavi";
var b = new Common.API.Plugin,
c = new Common.API.TVKeyValue;
b.SetBannerState(1);
a.SetBannerState(2);
b.unregistKey(c.KEY_VOL_UP);
b.unregistKey(c.KEY_VOL_DOWN);
b.unregistKey(c.KEY_MUTE);
b.unregistKey(c.KEY_MENU);
b.unregistKey(c.KEY_INFOLINK);
b.unregistKey(c.KEY_EXIT)
});
})();
When you go there you get this output:
Code: Select all
(function() {
var f, h = this;
function k(a) {
return "string" == typeof a
}
function l(a) {
a = a.split(".");
for (var b = h, c; c = a.shift();)
if (null != b[c]) b = b[c];
else return null;
return b
}
function aa() {}
function n(a) {
var b = typeof a;
if ("object" == b)
if (a) {
if (a instanceof Array) return "array";
if (a instanceof Object) return b;
var c = Object.prototype.toString.call(a);
if ("[object Window]" == c) return "object";
if ("[object Array]" == c || "number" == typeof a.length && "undefined" != typeof a.splice && "undefined" != typeof a.propertyIsEnumerable && !a.propertyIsEnumerable("splice")) return "array";
if ("[object Function]" == c || "undefined" != typeof a.call && "undefined" != typeof a.propertyIsEnumerable && !a.propertyIsEnumerable("call")) return "function"
} else return "null";
else if ("function" == b && "undefined" == typeof a.call) return "object";
return b
}
function ba(a) {
var b = n(a);
return "array" == b || "object" == b && "number" == typeof a.length
}
function p(a) {
return "function" == n(a)
}
function ca(a, b, c) {
return a.call.apply(a.bind, arguments)
}
function da(a, b, c) {
if (!a) throw Error();
if (2 < arguments.length) {
var d = Array.prototype.slice.call(arguments, 2);
return function() {
var c = Array.prototype.slice.call(arguments);
Array.prototype.unshift.apply(c, d);
return a.apply(b, c)
}
}
return function() {
return a.apply(b, arguments)
}
}
function q(a, b, c) {
Function.prototype.bind && -1 != Function.prototype.bind.toString().indexOf("native code") ? q = ca : q = da;
return q.apply(null, arguments)
}
function t(a, b) {
var c = a.split("."),
d = h;
c[0] in d || !d.execScript || d.execScript("var " + c[0]);
for (var e; c.length && (e = c.shift());) c.length || void 0 === b ? d[e] && d[e] !== Object.prototype[e] ? d = d[e] : d = d[e] = {} : d[e] = b
}
function u(a, b) {
function c() {}
c.prototype = b.prototype;
a.L = b.prototype;
a.prototype = new c;
a.prototype.constructor = a;
a.R = function(a, c, g) {
for (var d = Array(arguments.length - 2), e = 2; e < arguments.length; e++) d[e - 2] = arguments[e];
return b.prototype[c].apply(a, d)
}
};
function ea(a, b) {
for (var c = a.split("%s"), d = "", e = Array.prototype.slice.call(arguments, 1); e.length && 1 < c.length;) d += c.shift() + e.shift();
return d + c.join("%s")
}
var fa = String.prototype.trim ? function(a) {
return a.trim()
} : function(a) {
return a.replace(/^[\s\xa0]+|[\s\xa0]+$/g, "")
};
function v(a, b) {
return a < b ? -1 : a > b ? 1 : 0
};
var ha = Array.prototype.indexOf ? function(a, b, c) {
return Array.prototype.indexOf.call(a, b, c)
} : function(a, b, c) {
c = null == c ? 0 : 0 > c ? Math.max(0, a.length + c) : c;
if (k(a)) return k(b) && 1 == b.length ? a.indexOf(b, c) : -1;
for (; c < a.length; c++)
if (c in a && a[c] === b) return c;
return -1
},
ia = Array.prototype.forEach ? function(a, b, c) {
Array.prototype.forEach.call(a, b, c)
} : function(a, b, c) {
for (var d = a.length, e = k(a) ? a.split("") : a, g = 0; g < d; g++) g in e && b.call(c, e[g], g, a)
};
function ja(a) {
return Array.prototype.concat.apply([], arguments)
}
function ka(a) {
var b = a.length;
if (0 < b) {
for (var c = Array(b), d = 0; d < b; d++) c[d] = a[d];
return c
}
return []
};
function w() {
this.c = this.c;
this.f = this.f
}
w.prototype.c = !1;
w.prototype.dispose = function() {
this.c || (this.c = !0, this.s())
};
w.prototype.s = function() {
if (this.f)
for (; this.f.length;) this.f.shift()()
};
var x;
a: {
var la = h.navigator;
if (la) {
var ma = la.userAgent;
if (ma) {
x = ma;
break a
}
}
x = ""
}
function y(a) {
return -1 != x.indexOf(a)
};
function na(a) {
var b = [],
c = 0,
d;
for (d in a) b[c++] = a[d];
return b
}
function oa(a) {
var b = [],
c = 0,
d;
for (d in a) b[c++] = d;
return b
};
function pa(a, b) {
var c = qa;
return Object.prototype.hasOwnProperty.call(c, a) ? c[a] : c[a] = b(a)
};
var ra = y("Opera"),
z = y("Trident") || y("MSIE"),
sa = y("Edge"),
A = y("Gecko") && !(-1 != x.toLowerCase().indexOf("webkit") && !y("Edge")) && !(y("Trident") || y("MSIE")) && !y("Edge"),
B = -1 != x.toLowerCase().indexOf("webkit") && !y("Edge");
function ta() {
var a = h.document;
return a ? a.documentMode : void 0
}
var C;
a: {
var D = "",
E = function() {
var a = x;
if (A) return /rv\:([^\);]+)(\)|;)/.exec(a);
if (sa) return /Edge\/([\d\.]+)/.exec(a);
if (z) return /\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(a);
if (B) return /WebKit\/(\S+)/.exec(a);
if (ra) return /(?:Version)[ \/]?(\S+)/.exec(a)
}();
E && (D = E ? E[1] : "");
if (z) {
var F = ta();
if (null != F && F > parseFloat(D)) {
C = String(F);
break a
}
}
C = D
}
var ua = C,
qa = {};
function G(a) {
return pa(a, function() {
for (var b = 0, c = fa(String(ua)).split("."), d = fa(String(a)).split("."), e = Math.max(c.length, d.length), g = 0; 0 == b && g < e; g++) {
var m = c[g] || "",
r = d[g] || "";
do {
m = /(\d*)(\D*)(.*)/.exec(m) || ["", "", "", ""];
r = /(\d*)(\D*)(.*)/.exec(r) || ["", "", "", ""];
if (0 == m[0].length && 0 == r[0].length) break;
b = v(0 == m[1].length ? 0 : parseInt(m[1], 10), 0 == r[1].length ? 0 : parseInt(r[1], 10)) || v(0 == m[2].length, 0 == r[2].length) || v(m[2], r[2]);
m = m[3];
r = r[3]
} while (0 == b)
}
return 0 <= b
})
}
var va;
var wa = h.document;
va = wa && z ? ta() || ("CSS1Compat" == wa.compatMode ? parseInt(ua, 10) : 5) : void 0;
z && G("9");
!B || G("528");
A && G("1.9b") || z && G("8") || ra && G("9.5") || B && G("528");
A && !G("8") || z && G("9");
function xa(a, b, c) {
this.f = c;
this.c = a;
this.g = b;
this.b = 0;
this.a = null
}
xa.prototype.get = function() {
if (0 < this.b) {
this.b--;
var a = this.a;
this.a = a.next;
a.next = null
} else a = this.c();
return a
};
function ya(a) {
h.setTimeout(function() {
throw a;
}, 0)
}
var H;
function za() {
var a = h.MessageChannel;
"undefined" === typeof a && "undefined" !== typeof window && window.postMessage && window.addEventListener && !y("Presto") && (a = function() {
var a = document.createElement("IFRAME");
a.style.display = "none";
a.src = "";
document.documentElement.appendChild(a);
var b = a.contentWindow,
a = b.document;
a.open();
a.write("");
a.close();
var c = "callImmediate" + Math.random(),
d = "file:" == b.location.protocol ? "*" : b.location.protocol + "//" + b.location.host,
a = q(function(a) {
if (("*" == d || a.origin == d) && a.data == c) this.port1.onmessage()
},
this);
b.addEventListener("message", a, !1);
this.port1 = {};
this.port2 = {
postMessage: function() {
b.postMessage(c, d)
}
}
});
if ("undefined" !== typeof a && !y("Trident") && !y("MSIE")) {
var b = new a,
c = {},
d = c;
b.port1.onmessage = function() {
if (void 0 !== c.next) {
c = c.next;
var a = c.w;
c.w = null;
a()
}
};
return function(a) {
d.next = {
w: a
};
d = d.next;
b.port2.postMessage(0)
}
}
return "undefined" !== typeof document && "onreadystatechange" in document.createElement("SCRIPT") ? function(a) {
var b = document.createElement("SCRIPT");
b.onreadystatechange = function() {
b.onreadystatechange = null;
b.parentNode.removeChild(b);
b = null;
a();
a = null
};
document.documentElement.appendChild(b)
} : function(a) {
h.setTimeout(a, 0)
}
};
function Aa() {
this.b = this.a = null
}
var Ca = new xa(function() {
return new Ba
}, function(a) {
a.reset()
}, 100);
Aa.prototype.remove = function() {
var a = null;
this.a && (a = this.a, this.a = this.a.next, this.a || (this.b = null), a.next = null);
return a
};
function Ba() {
this.next = this.b = this.a = null
}
Ba.prototype.set = function(a, b) {
this.a = a;
this.b = b;
this.next = null
};
Ba.prototype.reset = function() {
this.next = this.b = this.a = null
};
function Da(a) {
I || Ea();
Fa || (I(), Fa = !0);
var b = Ga,
c = Ca.get();
c.set(a, void 0);
b.b ? b.b.next = c : b.a = c;
b.b = c
}
var I;
function Ea() {
if (-1 != String(h.Promise).indexOf("[native code]")) {
var a = h.Promise.resolve(void 0);
I = function() {
a.then(Ha)
}
} else I = function() {
var a = Ha;
!p(h.setImmediate) || h.Window && h.Window.prototype && !y("Edge") && h.Window.prototype.setImmediate == h.setImmediate ? (H || (H = za()), H(a)) : h.setImmediate(a)
}
}
var Fa = !1,
Ga = new Aa;
function Ha() {
for (var a; a = Ga.remove();) {
try {
a.a.call(a.b)
} catch (c) {
ya(c)
}
var b = Ca;
b.g(a);
b.b < b.f && (b.b++, a.next = b.a, b.a = a)
}
Fa = !1
};
function Ia(a, b, c) {
if (p(a)) c && (a = q(a, c));
else if (a && "function" == typeof a.handleEvent) a = q(a.handleEvent, a);
else throw Error("Invalid listener argument");
return 2147483647 < Number(b) ? -1 : h.setTimeout(a, b || 0)
};
function J(a, b, c) {
w.call(this);
this.b = a;
this.m = b || 0;
this.g = c;
this.i = q(this.j, this)
}
u(J, w);
J.prototype.a = 0;
J.prototype.s = function() {
J.L.s.call(this);
0 != this.a && h.clearTimeout(this.a);
this.a = 0;
delete this.b;
delete this.g
};
J.prototype.start = function(a) {
0 != this.a && h.clearTimeout(this.a);
this.a = 0;
this.a = Ia(this.i, void 0 !== a ? a : this.m)
};
J.prototype.j = function() {
this.a = 0;
this.b && this.b.call(this.g)
};
!A && !z || z && 9 <= Number(va) || A && G("1.9.1");
z && G("9");
function K(a) {
var b = document;
return k(a) ? b.getElementById(a) : a
};
var Ja = "StopIteration" in h ? h.StopIteration : {
message: "StopIteration",
stack: ""
};
function Ka() {}
Ka.prototype.next = function() {
throw Ja;
};
Ka.prototype.N = function() {
return this
};
function L(a) {
w.call(this);
this.j = 1;
this.g = [];
this.i = 0;
this.a = [];
this.b = {};
this.m = !!a
}
u(L, w);
f = L.prototype;
f.O = function(a, b, c) {
var d = this.b[a];
d || (d = this.b[a] = []);
var e = this.j;
this.a[e] = a;
this.a[e + 1] = b;
this.a[e + 2] = c;
this.j = e + 3;
d.push(e);
return e
};
f.u = function(a) {
var b = this.a[a];
if (b) {
var c = this.b[b];
if (0 != this.i) this.g.push(a), this.a[a + 1] = aa;
else {
if (c) {
var d = ha(c, a);
0 <= d && Array.prototype.splice.call(c, d, 1)
}
delete this.a[a];
delete this.a[a + 1];
delete this.a[a + 2]
}
}
return !!b
};
f.P = function(a) {
var b = this.b[a];
if (b) {
for (var c = Array(arguments.length - 1), d = 1, e = arguments.length; d < e; d++) c[d - 1] = arguments[d];
if (this.m)
for (d = 0; d < b.length; d++) {
var g = b[d];
La(this.a[g + 1], this.a[g + 2], c)
} else {
this.i++;
try {
for (d = 0, e = b.length; d < e; d++) g = b[d], this.a[g + 1].apply(this.a[g + 2], c)
} finally {
if (this.i--, 0 < this.g.length && 0 == this.i)
for (; g = this.g.pop();) this.u(g)
}
}
return 0 != d
}
return !1
};
function La(a, b, c) {
Da(function() {
a.apply(b, c)
})
}
f.clear = function(a) {
if (a) {
var b = this.b[a];
b && (ia(b, this.u, this), delete this.b[a])
} else this.a.length = 0, this.b = {}
};
f.s = function() {
L.L.s.call(this);
this.clear();
this.g.length = 0
};
function M(a, b) {
this.b = {};
this.a = [];
this.f = this.c = 0;
var c = arguments.length;
if (1 < c) {
if (c % 2) throw Error("Uneven number of arguments");
for (var d = 0; d < c; d += 2) this.set(arguments[d], arguments[d + 1])
} else if (a) {
a instanceof M ? (c = a.l(), d = a.h()) : (c = oa(a), d = na(a));
for (var e = 0; e < c.length; e++) this.set(c[e], d[e])
}
}
f = M.prototype;
f.h = function() {
N(this);
for (var a = [], b = 0; b < this.a.length; b++) a.push(this.b[this.a[b]]);
return a
};
f.l = function() {
N(this);
return this.a.concat()
};
f.clear = function() {
this.b = {};
this.f = this.c = this.a.length = 0
};
f.remove = function(a) {
return O(this.b, a) ? (delete this.b[a], this.c--, this.f++, this.a.length > 2 * this.c && N(this), !0) : !1
};
function N(a) {
var b, c;
if (a.c != a.a.length) {
for (b = c = 0; c < a.a.length;) {
var d = a.a[c];
O(a.b, d) && (a.a[b++] = d);
c++
}
a.a.length = b
}
if (a.c != a.a.length) {
var e = {};
for (b = c = 0; c < a.a.length;) d = a.a[c], O(e, d) || (a.a[b++] = d, e[d] = 1), c++;
a.a.length = b
}
}
f.get = function(a, b) {
return O(this.b, a) ? this.b[a] : b
};
f.set = function(a, b) {
O(this.b, a) || (this.c++, this.a.push(a), this.f++);
this.b[a] = b
};
f.forEach = function(a, b) {
for (var c = this.l(), d = 0; d < c.length; d++) {
var e = c[d],
g = this.get(e);
a.call(b, g, e, this)
}
};
f.N = function(a) {
N(this);
var b = 0,
c = this.f,
d = this,
e = new Ka;
e.next = function() {
if (c != d.f) throw Error("The map has changed since the iterator was created");
if (b >= d.a.length) throw Ja;
var e = d.a[b++];
return a ? e : d.b[e]
};
return e
};
function O(a, b) {
return Object.prototype.hasOwnProperty.call(a, b)
};
function Ma(a) {
if (a.h && "function" == typeof a.h) return a.h();
if (k(a)) return a.split("");
if (ba(a)) {
for (var b = [], c = a.length, d = 0; d < c; d++) b.push(a[d]);
return b
}
return na(a)
};
var Na = /^(?:([^:/?#.]+):)?(?:\/\/(?:([^/?#]*)@)?([^/#?]*?)(?::([0-9]+))?(?=[/#?]|$))?([^?#]+)?(?:\?([^#]*))?(?:#([\s\S]*))?$/;
function Oa(a, b) {
if (a)
for (var c = a.split("&"), d = 0; d < c.length; d++) {
var e = c[d].indexOf("="),
g = null;
if (0 <= e) {
var m = c[d].substring(0, e);
g = c[d].substring(e + 1)
} else m = c[d];
b(m, g ? decodeURIComponent(g.replace(/\+/g, " ")) : "")
}
};
function P(a, b) {
this.f = this.m = this.c = "";
this.j = null;
this.g = this.i = "";
this.a = !1;
if (a instanceof P) {
this.a = void 0 !== b ? b : a.a;
Pa(this, a.c);
this.m = a.m;
this.f = a.f;
Qa(this, a.j);
this.i = a.i;
var c = a.b;
var d = new Q;
d.c = c.c;
c.a && (d.a = new M(c.a), d.b = c.b);
Ra(this, d);
this.g = a.g
} else a && (c = String(a).match(Na)) ? (this.a = !!b, Pa(this, c[1] || "", !0), this.m = R(c[2] || ""), this.f = R(c[3] || "", !0), Qa(this, c[4]), this.i = R(c[5] || "", !0), Ra(this, c[6] || "", !0), this.g = R(c[7] || "")) : (this.a = !!b, this.b = new Q(null, 0, this.a))
}
P.prototype.toString = function() {
var a = [],
b = this.c;
b && a.push(S(b, Sa, !0), ":");
var c = this.f;
if (c || "file" == b) a.push("//"), (b = this.m) && a.push(S(b, Sa, !0), "@"), a.push(encodeURIComponent(String(c)).replace(/%25([0-9a-fA-F]{2})/g, "%$1")), c = this.j, null != c && a.push(":", String(c));
if (c = this.i) this.f && "/" != c.charAt(0) && a.push("/"), a.push(S(c, "/" == c.charAt(0) ? Ta : Ua, !0));
(c = this.b.toString()) && a.push("?", c);
(c = this.g) && a.push("#", S(c, Va));
return a.join("")
};
function Pa(a, b, c) {
a.c = c ? R(b, !0) : b;
a.c && (a.c = a.c.replace(/:$/, ""))
}
function Qa(a, b) {
if (b) {
b = Number(b);
if (isNaN(b) || 0 > b) throw Error("Bad port number " + b);
a.j = b
} else a.j = null
}
function Ra(a, b, c) {
b instanceof Q ? (a.b = b, Wa(a.b, a.a)) : (c || (b = S(b, Xa)), a.b = new Q(b, 0, a.a))
}
function R(a, b) {
return a ? b ? decodeURI(a.replace(/%25/g, "%2525")) : decodeURIComponent(a) : ""
}
function S(a, b, c) {
return k(a) ? (a = encodeURI(a).replace(b, Ya), c && (a = a.replace(/%25([0-9a-fA-F]{2})/g, "%$1")), a) : null
}
function Ya(a) {
a = a.charCodeAt(0);
return "%" + (a >> 4 & 15).toString(16) + (a & 15).toString(16)
}
var Sa = /[#\/\?@]/g,
Ua = /[\#\?:]/g,
Ta = /[\#\?]/g,
Xa = /[\#\?@]/g,
Va = /#/g;
function Q(a, b, c) {
this.b = this.a = null;
this.c = a || null;
this.f = !!c
}
function T(a) {
a.a || (a.a = new M, a.b = 0, a.c && Oa(a.c, function(b, c) {
Za(a, decodeURIComponent(b.replace(/\+/g, " ")), c)
}))
}
function Za(a, b, c) {
T(a);
a.c = null;
b = U(a, b);
var d = a.a.get(b);
d || a.a.set(b, d = []);
d.push(c);
a.b = a.b + 1
}
f = Q.prototype;
f.remove = function(a) {
T(this);
a = U(this, a);
return O(this.a.b, a) ? (this.c = null, this.b = this.b - this.a.get(a).length, this.a.remove(a)) : !1
};
f.clear = function() {
this.a = this.c = null;
this.b = 0
};
function V(a, b) {
T(a);
b = U(a, b);
return O(a.a.b, b)
}
f.forEach = function(a, b) {
T(this);
this.a.forEach(function(c, d) {
ia(c, function(c) {
a.call(b, c, d, this)
}, this)
}, this)
};
f.l = function() {
T(this);
for (var a = this.a.h(), b = this.a.l(), c = [], d = 0; d < b.length; d++)
for (var e = a[d], g = 0; g < e.length; g++) c.push(b[d]);
return c
};
f.h = function(a) {
T(this);
var b = [];
if (k(a)) V(this, a) && (b = ja(b, this.a.get(U(this, a))));
else {
a = this.a.h();
for (var c = 0; c < a.length; c++) b = ja(b, a[c])
}
return b
};
f.set = function(a, b) {
T(this);
this.c = null;
a = U(this, a);
V(this, a) && (this.b = this.b - this.a.get(a).length);
this.a.set(a, [b]);
this.b = this.b + 1;
return this
};
f.get = function(a, b) {
var c = a ? this.h(a) : [];
return 0 < c.length ? String(c[0]) : b
};
function $a(a, b, c) {
a.remove(b);
0 < c.length && (a.c = null, a.a.set(U(a, b), ka(c)), a.b = a.b + c.length)
}
f.toString = function() {
if (this.c) return this.c;
if (!this.a) return "";
for (var a = [], b = this.a.l(), c = 0; c < b.length; c++)
for (var d = b[c], e = encodeURIComponent(String(d)), d = this.h(d), g = 0; g < d.length; g++) {
var m = e;
"" !== d[g] && (m += "=" + encodeURIComponent(String(d[g])));
a.push(m)
}
return this.c = a.join("&")
};
function U(a, b) {
var c = String(b);
a.f && (c = c.toLowerCase());
return c
}
function Wa(a, b) {
b && !a.f && (T(a), a.c = null, a.a.forEach(function(a, b) {
var c = b.toLowerCase();
b != c && (this.remove(b), $a(this, c, a))
}, a));
a.f = b
};
t("yt.config_", window.yt && window.yt.config_ || window.ytcfg && window.ytcfg.data_ || {});
var ab = l("ytPubsubPubsubInstance") || new L;
L.prototype.subscribe = L.prototype.O;
L.prototype.unsubscribeByKey = L.prototype.u;
L.prototype.publish = L.prototype.P;
L.prototype.clear = L.prototype.clear;
t("ytPubsubPubsubInstance", ab);
var bb = l("ytPubsubPubsubSubscribedKeys") || {};
t("ytPubsubPubsubSubscribedKeys", bb);
var cb = l("ytPubsubPubsubTopicToKeys") || {};
t("ytPubsubPubsubTopicToKeys", cb);
var db = l("ytPubsubPubsubIsSynchronous") || {};
t("ytPubsubPubsubIsSynchronous", db);
var W = null;
function eb() {}
f = eb.prototype;
f.D = function() {
return !1
};
f.B = function() {
return ""
};
f.C = function() {};
f.A = function() {};
f.G = function() {};
f.K = function() {};
f.F = function() {};
f.H = function() {};
f.I = function() {};
f.M = function() {};
f.o = function() {};
var fb, gb, X, hb;
function ib(a) {
var b = fb;
b.Open("ExternalWidgetInterface", "1.000", "ExternalWidgetInterface");
b.Execute("SetWidgetInfo", "1", gb);
a = b.Execute.apply(b, a);
b.Close();
return a
}
function jb() {
try {
return 1 == ib(["WriteWidgetData", "YouTubeLBL", X, X.length.toString()])
} catch (a) {}
return !1
}
function Y(a) {
var b = new Common.API.Plugin;
p(b.setOnScreenSaver) && p(b.setOffScreenSaver) && (a ? b.setOnScreenSaver() : b.setOffScreenSaver())
}
var kb = "unknown";
function Z() {
this.f = "";
this.g = 0;
this.a = K("lbl-video");
this.a.OnCurrentPlayTime = "yt.tv.leanbacklite.facadeInstance.onPlayback";
this.a.OnAuthenticationFailed = "yt.tv.leanbacklite.samsung.OnAuthenticationFailed";
this.a.OnConnectionFailed = "yt.tv.leanbacklite.samsung.OnConnectionFailed";
this.a.OnNetworkDisconnected = "yt.tv.leanbacklite.samsung.OnNetworkDisconnected";
this.a.OnRenderError = "yt.tv.leanbacklite.samsung.OnRenderError";
this.a.OnStreamNotFound = "yt.tv.leanbacklite.samsung.OnStreamNotFound";
this.a.OnStreamInfoReady =
"yt.tv.leanbacklite.samsung.OnStreamInfoReady";
this.c = K("lbl-flash");
this.c.focus();
this.J()
}
u(Z, eb);
f = Z.prototype;
f.D = function() {
return null !== this.a && p(this.a.Play)
};
f.B = function() {
var a = "";
try {
a = this.a.GetPlayerVersion()
} catch (b) {}
return "1.0" + (a ? "_" + a : "")
};
f.C = function(a) {
this.b = a
};
f.G = function(a) {
this.f = K("samsung-external").GetESN("WIDEVINE");
a += ea("|DEVICE_ID=%s|STREAM_ID=%s|DRM_URL=%s|USER_DATA=%s|PORTAL=%s|COMPONENT=WV|CUR_TIME=PTS|DEVICE_TYPE_ID=|IP_ADDR=|ACK_URL=|HEARTBEAT_URL=%s|HEARTBEAT_PERIOD=%s|I_SEEK=TIME|", this.f || "", this.b.streamId || "", this.b.drmServerUrl, this.b.userData || "", "YouTube", this.b.heartbeatUrl || "", this.b.heartbeatPeriod || "");
this.a.Play(a);
Y(!1)
};
f.F = function() {
this.a.Pause();
Y(!0)
};
f.H = function() {
this.a.Resume();
Y(!1)
};
f.K = function() {
this.a.Stop();
Y(!0)
};
f.A = function() {
this.a.Close()
};
f.I = function(a) {
a -= this.g;
0 < a ? this.a.JumpForward(a) : this.a.JumpBackward(-a)
};
f.J = function() {
var a = window.location.search,
b = (a instanceof P ? new P(a) : new P(a, void 0)).b,
c = K("pluginObjectNNavi"),
a = {};
a.country = b.get("country");
a.lang = b.get("lang");
a.model = b.get("modelid");
a.vendor = "SAMSUNG";
a.firmware = b.get("remocon", "") + "mgr" + b.get("mgrver", "") + "|" + c.GetFirmware();
V(b, "pairingCode") ? a.pairingCode = b.get("pairingCode") : V(b, "data") && (c = b.get("data"), 0 == c.indexOf("pairingCode=") ? a.pairingCode = c.substr(c.indexOf("=") + 1) : a.v = c);
switch (b.get("product")) {
case "0":
a.type = "DTV";
break;
case "2":
a.type = "BDP";
break;
default:
a.type = "OTHER"
}
for (var d in a) {
a: for (b = String(a[d]), c = 0; 1 > c; c++)
if ('"' == b.charAt(0) && '"' == b.charAt(b.length - 1)) {
b = b.substring(1, b.length - 1);
break a
}a[d] = b
}
if (a.l && "function" == typeof a.l) d = a.l();
else if (a.h && "function" == typeof a.h) d = void 0;
else if (ba(a) || k(a))
for (d = [], b = a.length, c = 0; c < b; c++) d.push(c);
else d = oa(a);
if ("undefined" == typeof d) throw Error("Keys are undefined");
b = new Q(null, 0, void 0);
a = Ma(a);
for (c = 0; c < d.length; c++) {
var e = d[c],
g = a[c];
"array" == n(g) ? $a(b,
e, g) : Za(b, e, g)
}
try {
this.c.setParams(R(b.toString()))
} catch (m) {
Ia(this.J, 1E3, this)
}
};
f.M = function(a) {
this.g = a / 1E3;
try {
this.c.onPlayback(a)
} catch (b) {}
};
f.o = function(a, b) {
try {
this.c.onError(a, b)
} catch (c) {}
Y(!1)
};
t("yt.tv.leanbacklite.samsung.getStorageStatus", function() {
return kb
});
t("yt.tv.leanbacklite.samsung.readFromStorage", function() {
return X
});
t("yt.tv.leanbacklite.samsung.writeToStorage", function(a) {
X = a && "null" != a ? a : "";
hb.start()
});
t("yt.tv.leanbacklite.samsung.OnAuthenticationFailed", function() {
W.o("wv.err.authFailed")
});
t("yt.tv.leanbacklite.samsung.OnConnectionFailed", function() {
W.o("wv.err.connectFailed")
});
t("yt.tv.leanbacklite.samsung.OnNetworkDisconnected", function() {
W.o("wv.err.networkDisconnect")
});
t("yt.tv.leanbacklite.samsung.OnRenderError", function(a) {
W.o("wv.err.render", a)
});
t("yt.tv.leanbacklite.samsung.OnStreamNotFound", function() {
W.o("wv.err.streamNotFound")
});
t("yt.tv.leanbacklite.samsung.OnStreamInfoReady", function() {
var a = K("lbl-video");
try {
var b = a.GetVideoWidth(),
c = a.GetVideoHeight(),
d = Math.min(960 / b, 540 / c);
a.SetDisplayArea(480 - b / 2 * d, 270 - c / 2 * d, b * d, c * d)
} catch (e) {}
});
t("yt.tv.leanbacklite.samsung.WidevineFacade", Z);
Z.prototype.isAvailable = Z.prototype.D;
Z.prototype.getVersion = Z.prototype.B;
Z.prototype.initVideo = Z.prototype.C;
Z.prototype.closeVideo = Z.prototype.A;
Z.prototype.playVideo = Z.prototype.G;
Z.prototype.stopVideo = Z.prototype.K;
Z.prototype.pauseVideo = Z.prototype.F;
Z.prototype.resumeVideo = Z.prototype.H;
Z.prototype.seekVideo = Z.prototype.I;
Z.prototype.onPlayback = Z.prototype.M;
W = new Z;
t("yt.tv.leanbacklite.facadeInstance", W);
kb = function() {
var a = K("pluginSef");
if (!a) {
a = document.getElementsByTagName("head")[0];
if (!a) return "noHead";
a.innerHTML += '<object id="pluginSef" border="0" classid="clsid:SAMSUNG-INFOLINK-SEF"></object>';
a = K("pluginSef")
}
if (!a) return "creationError";
if (!p(a.Open)) return "initError";
fb = a;
gb = location.href.match(/file:\/(\/localhost)?(.*?)\/index.html\?.*/)[2];
if (!gb) return "noPath";
try {
var b = ib(["ReadWidgetData", "YouTubeLBL"]);
X = b ? String(b) : void 0
} catch (c) {}
hb = new J(jb, 1E3);
return "ok"
}();
}).call(this);
you get the Message YT ended its support bla bla something like that.
But the url http://www.youtube.com/leanback is still working.
It looks the same as if i go there using the YT app on my ps3.
I have a Jailbreaked PS3 and also backed up the YT app from it.
Think there will be some options for us to edit the TV app to use the "leanback" url instead of the "leanbacklite"
just my quick findings.
Unfort. i have no time to do further resarch but maybe someone else can go from there.
regards