Test Failed
Push — main ( b09f12...0abb31 )
by chief
05:29
created

web/public/player/player_asset/embed.js   F

Complexity

Total Complexity 1027
Complexity/F 2.26

Size

Lines of Code 3979
Function Count 455

Duplication

Duplicated Lines 163
Ratio 4.1 %

Importance

Changes 0
Metric Value
eloc 3158
c 0
b 0
f 0
dl 163
loc 3979
rs 0.8
wmc 1027
mnd 572
bc 572
fnc 455
bpm 1.2571
cpm 2.2571
noi 734

254 Functions

Rating   Name   Duplication   Size   Complexity  
F embed.js ➔ EMBy 0 21 25
A embed.js ➔ EMBfd 0 4 1
A embed.js ➔ EMB2d 0 6 3
A embed.js ➔ EMBtd 0 7 2
A embed.js ➔ EMBKc 0 4 2
A embed.js ➔ EMBEc 0 3 3
C embed.js ➔ EMBdd 36 36 9
D embed.js ➔ EMByb 0 23 12
C embed.js ➔ EMBRb 0 41 10
A embed.js ➔ EMBW 0 3 1
A embed.js ➔ EMBAc 0 4 1
A embed.js ➔ EMBS 0 4 1
C embed.js ➔ EMBqd 0 47 11
A embed.js ➔ EMBze 0 8 2
A embed.js ➔ EMBkb 0 8 4
A embed.js ➔ EMBfb 0 7 4
B embed.js ➔ EMBBd 0 22 6
A embed.js ➔ EMB4c 0 5 4
A embed.js ➔ EMBOc 0 11 2
A embed.js ➔ EMB2c 0 4 1
C embed.js ➔ EMBwc 0 38 9
A embed.js ➔ EMBgb 0 3 1
A embed.js ➔ EMBNc 0 3 1
A embed.js ➔ EMBTd 0 4 4
A embed.js ➔ EMBrd 0 15 5
A embed.js ➔ EMBMd 0 8 5
A embed.js ➔ EMBwd 0 17 4
A embed.js ➔ EMB8a 0 4 1
A embed.js ➔ EMBLe 0 8 1
A embed.js ➔ EMB7 0 4 1
A embed.js ➔ EMBk 0 4 2
A embed.js ➔ EMBrc 0 3 5
A embed.js ➔ EMB3c 10 10 3
A embed.js ➔ EMBcd 0 9 1
A embed.js ➔ EMB4 0 10 2
A embed.js ➔ EMBta 0 3 1
B embed.js ➔ EMBje 0 22 7
A embed.js ➔ EMB5c 0 4 2
B embed.js ➔ EMB3 0 3 8
C embed.js ➔ EMBce 6 11 10
B embed.js ➔ EMBld 0 23 8
A embed.js ➔ EMBjd 0 7 2
A embed.js ➔ EMBsd 0 3 4
A embed.js ➔ EMB8c 0 5 1
A embed.js ➔ EMBGc 0 7 3
A embed.js ➔ EMBWb 0 4 1
A embed.js ➔ EMBVd 0 6 4
F embed.js ➔ EMBne 0 1 15
A embed.js ➔ EMBee 0 7 2
A embed.js ➔ EMBYd 0 16 3
A embed.js ➔ EMBAa 0 6 2
A embed.js ➔ EMB8d 0 14 5
B embed.js ➔ EMBsc 0 7 8
B embed.js ➔ EMBeb 0 9 6
A embed.js ➔ EMBP 0 5 1
A embed.js ➔ EMBZd 0 15 2
A embed.js ➔ EMBCd 0 12 3
B embed.js ➔ EMB0 0 22 6
A embed.js ➔ EMBm 0 6 5
A embed.js ➔ EMBKe 0 18 1
B embed.js ➔ EMBye 0 19 6
C embed.js ➔ EMBCc 0 29 9
C embed.js ➔ EMBF 23 23 9
A embed.js ➔ EMBpa 0 5 2
A embed.js ➔ EMBbc 0 9 3
A embed.js ➔ EMBoa 0 4 2
A embed.js ➔ EMBba 0 3 1
A embed.js ➔ EMBbd 0 3 1
A embed.js ➔ EMBJb 0 4 2
A embed.js ➔ EMBM 0 3 2
A embed.js ➔ EMBAd 0 4 1
A embed.js ➔ EMB1c 0 4 1
A embed.js ➔ EMBob 0 7 4
A embed.js ➔ EMB1d 0 5 2
A embed.js ➔ EMBo 0 4 4
A embed.js ➔ EMBSc 0 4 2
A embed.js ➔ EMBPd 0 5 2
A embed.js ➔ EMBtc 0 7 4
A embed.js ➔ EMBI 0 3 3
F embed.js ➔ EMBlc 0 3 17
A embed.js ➔ EMBE 0 3 2
A embed.js ➔ EMB5a 0 4 1
F embed.js ➔ EMBhe 16 33 14
A embed.js ➔ EMBfc 0 6 1
A embed.js ➔ EMBDc 0 6 2
A embed.js ➔ EMBwe 0 17 4
A embed.js ➔ EMBAe 0 6 1
A embed.js ➔ EMBve 0 8 3
A embed.js ➔ EMBKd 0 3 1
A embed.js ➔ EMBV 0 3 2
A embed.js ➔ EMBFb 0 3 1
A embed.js ➔ EMBdc 0 8 5
A embed.js ➔ EMBue 0 5 1
A embed.js ➔ EMBJe 0 6 1
A embed.js ➔ EMBha 0 14 4
B embed.js ➔ EMBLd 0 36 7
A embed.js ➔ EMBRc 0 3 3
A embed.js ➔ EMBkc 0 1 1
A embed.js ➔ EMB5 0 3 1
B embed.js ➔ EMB$c 0 28 8
A embed.js ➔ EMB1b 0 3 5
A embed.js ➔ EMBR 0 15 1
A embed.js ➔ EMBt 0 4 1
C embed.js ➔ EMBXd 0 32 10
A embed.js ➔ EMBi 0 3 1
A embed.js ➔ EMBPe 0 20 3
A embed.js ➔ EMBJd 0 5 1
A embed.js ➔ EMBLc 0 6 2
A embed.js ➔ EMBT 0 6 1
A embed.js ➔ EMB9c 0 8 2
A embed.js ➔ EMBNd 0 7 2
A embed.js ➔ EMBFc 0 3 1
A embed.js ➔ EMBGd 0 6 2
A embed.js ➔ EMBRd 0 4 3
A embed.js ➔ EMBHb 0 7 2
A embed.js ➔ EMB9a 0 3 1
A embed.js ➔ EMBUc 0 5 2
A embed.js ➔ EMBMe 0 6 1
A embed.js ➔ EMBza 0 4 1
A embed.js ➔ EMB7a 0 3 2
A embed.js ➔ EMBMc 0 5 1
A embed.js ➔ EMBbe 0 4 1
A embed.js ➔ EMBZ 0 5 2
A embed.js ➔ EMBUd 0 21 2
A embed.js ➔ EMB1a 0 3 1
A embed.js ➔ EMBvc 0 3 1
A embed.js ➔ EMBte 0 8 2
A embed.js ➔ EMBIe 0 13 1
A embed.js ➔ EMBz 0 5 2
B embed.js ➔ EMBnd 16 16 8
A embed.js ➔ EMBEb 0 9 3
A embed.js ➔ EMBhd 0 3 1
B embed.js ➔ EMBxc 0 9 6
A embed.js ➔ EMBg 0 6 3
A embed.js ➔ EMBHe 0 5 1
D embed.js ➔ EMB9 0 10 13
A embed.js ➔ EMBqc 0 1 1
A embed.js ➔ EMBDb 0 5 2
B embed.js ➔ EMB_d 0 6 8
A embed.js ➔ EMBre 0 5 1
A embed.js ➔ EMBO 0 3 2
F embed.js ➔ EMBDd 0 56 21
F embed.js ➔ EMB9d 0 5 16
A embed.js ➔ EMBcb 0 5 2
A embed.js ➔ EMBn 0 6 2
C embed.js ➔ EMBNb 0 17 9
A embed.js ➔ EMBcc 0 3 2
A embed.js ➔ EMBsb 0 5 2
A embed.js ➔ EMBnc 0 9 5
B embed.js ➔ EMBfe 0 4 7
A embed.js ➔ EMBge 0 4 1
F embed.js ➔ EMB3b 0 8 15
F embed.js ➔ EMB7d 0 3 22
F embed.js ➔ EMBae 0 22 16
C embed.js ➔ EMBaa 14 14 9
A embed.js ➔ EMBPb 0 9 3
A embed.js ➔ EMBrb 0 6 2
A embed.js ➔ EMBNe 0 10 1
A embed.js ➔ EMBSd 0 1 1
A embed.js ➔ EMBD 0 3 2
A embed.js ➔ EMBwb 0 4 4
A embed.js ➔ EMBj 0 3 1
A embed.js ➔ EMBxe 0 4 1
A embed.js ➔ EMBMb 0 1 2
A embed.js ➔ EMBJ 0 3 2
A embed.js ➔ EMBJa 0 3 2
A embed.js ➔ EMBSb 0 9 4
A embed.js ➔ EMBXc 0 10 2
A embed.js ➔ EMB3d 0 23 2
B embed.js ➔ EMB5d 0 21 6
B embed.js ➔ EMBnb 0 7 6
A embed.js ➔ EMBU 0 4 2
A embed.js ➔ EMBQ 0 4 5
A embed.js ➔ EMBse 0 9 1
A embed.js ➔ EMBda 0 4 1
B embed.js ➔ EMBxb 8 8 6
A embed.js ➔ EMBva 0 3 2
A embed.js ➔ EMBia 0 8 2
A embed.js ➔ EMB7c 0 4 2
A embed.js ➔ EMBzd 0 9 3
A embed.js ➔ EMBca 0 4 1
B embed.js ➔ EMBOe 0 31 7
A embed.js ➔ EMBpb 0 9 3
F embed.js ➔ EMBOd 0 5 14
A embed.js ➔ EMBsa 0 10 5
A embed.js ➔ EMBid 0 7 3
A embed.js ➔ EMBFe 0 4 3
A embed.js ➔ EMBxd 0 10 1
D embed.js ➔ EMBqe 0 52 12
A embed.js ➔ EMBGb 0 14 4
A embed.js ➔ EMBN 0 3 2
A embed.js ➔ EMBme 0 3 1
F embed.js ➔ EMBEd 20 35 26
A embed.js ➔ EMBga 0 3 1
A embed.js ➔ EMBib 0 4 2
A embed.js ➔ EMBle 0 11 2
A embed.js ➔ EMBh 0 5 3
A embed.js ➔ EMB$a 0 4 3
A embed.js ➔ EMBde 0 6 2
A embed.js ➔ EMBQc 0 5 3
C embed.js ➔ EMBpd 14 17 9
A embed.js ➔ EMBUb 0 9 1
A embed.js ➔ EMBed 0 3 1
B embed.js ➔ EMBdb 0 23 5
B embed.js ➔ EMBie 0 7 6
B embed.js ➔ EMBab 0 5 7
A embed.js ➔ EMB$d 0 6 2
A embed.js ➔ EMBmd 0 3 1
A embed.js ➔ EMB6c 0 12 5
A embed.js ➔ EMBA 0 6 1
A embed.js ➔ EMBqb 0 3 1
F embed.js ➔ EMBke 0 41 14
A embed.js ➔ EMBL 0 17 5
C embed.js ➔ EMBX 0 32 11
D embed.js ➔ EMB5b 0 5 12
A embed.js ➔ EMBOb 0 14 5
A embed.js ➔ EMBwa 0 3 5
A embed.js ➔ EMBgd 0 4 3
A embed.js ➔ EMBs 0 4 3
A embed.js ➔ EMB_c 0 11 4
F embed.js ➔ EMBYc 0 9 14
A embed.js ➔ EMBjb 0 4 2
A embed.js ➔ EMBGe 0 21 5
A embed.js ➔ EMBua 0 3 2
A embed.js ➔ EMBa 0 3 4
A embed.js ➔ EMBxa 0 3 2
A embed.js ➔ EMBac 0 3 1
A embed.js ➔ EMBIc 0 6 4
A embed.js ➔ EMB0d 0 9 3
A embed.js ➔ EMBBc 0 12 3
A embed.js ➔ EMB6a 0 5 2
A embed.js ➔ EMBY 0 15 2
A embed.js ➔ EMB6 0 3 1
A embed.js ➔ EMBhb 0 3 2
A embed.js ➔ EMBQb 0 3 1
A embed.js ➔ EMBya 0 4 3
A embed.js ➔ EMBB 0 4 1
A embed.js ➔ EMBCb 0 5 3
A embed.js ➔ EMBTc 0 3 3
A embed.js ➔ EMBK 0 15 5
A embed.js ➔ EMBuc 0 3 1
F embed.js ➔ EMBra 0 8 23
A embed.js ➔ EMBHd 0 5 2
A embed.js ➔ EMBCa 0 7 4
A embed.js ➔ EMBHc 0 5 1
A embed.js ➔ EMBWd 0 8 3
A embed.js ➔ EMBJc 0 19 4
A embed.js ➔ EMBC 0 3 2
A embed.js ➔ EMBKb 0 3 1
B embed.js ➔ EMBpc 0 1 7
A embed.js ➔ EMBG 0 5 2
A embed.js ➔ EMB8 0 17 4
A embed.js ➔ EMBH 0 3 1
A embed.js ➔ EMBKa 0 3 1

How to fix   Duplicated Code    Complexity   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

Complexity

 Tip:   Before tackling complexity, make sure that you eliminate any duplication first. This often can reduce the size of classes significantly.

Complex classes like web/public/player/player_asset/embed.js often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes.

Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.

1
var _____WB$wombat$assign$function_____ = function(name) {
2
    return (self._wb_wombat && self._wb_wombat.local_init && self._wb_wombat.local_init(name)) || self[name];
0 ignored issues
show
Bug introduced by
The variable self seems to be never declared. If this is a global, consider adding a /** global: self */ comment.

This checks looks for references to variables that have not been declared. This is most likey a typographical error or a variable has been renamed.

To learn more about declaring variables in Javascript, see the MDN.

Loading history...
3
};
4
if (!self.__WB_pmw) {
0 ignored issues
show
Bug introduced by
The variable self seems to be never declared. If this is a global, consider adding a /** global: self */ comment.

This checks looks for references to variables that have not been declared. This is most likey a typographical error or a variable has been renamed.

To learn more about declaring variables in Javascript, see the MDN.

Loading history...
5
    self.__WB_pmw = function(obj) {
6
        this.__WB_source = obj;
7
        return this;
8
    }
9
} {
10
    let window = _____WB$wombat$assign$function_____("window");
11
    let self = _____WB$wombat$assign$function_____("self");
0 ignored issues
show
Unused Code introduced by
The variable self seems to be never used. Consider removing it.
Loading history...
12
    let document = _____WB$wombat$assign$function_____("document");
13
    let location = _____WB$wombat$assign$function_____("location");
14
    let top = _____WB$wombat$assign$function_____("top");
15
    let parent = _____WB$wombat$assign$function_____("parent");
16
    let frames = _____WB$wombat$assign$function_____("frames");
0 ignored issues
show
Unused Code introduced by
The variable frames seems to be never used. Consider removing it.
Loading history...
17
    let opener = _____WB$wombat$assign$function_____("opener");
18
19
    function EMBa(a) {
0 ignored issues
show
Bug introduced by
The function EMBa is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBa = function() { /* ... */ }; instead.
Loading history...
20
        throw a;
21
    }
22
    var EMBb = void 0,
0 ignored issues
show
Coding Style introduced by
Consider using undefined instead of void(0). It is equivalent and more straightforward to read.
Loading history...
23
        EMBc = !0,
24
        EMBd = null,
25
        EMBe = !1,
26
        EMB, EMBf = this;
27
28
    function EMBg(a) {
0 ignored issues
show
Bug introduced by
The function EMBg is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBg = function() { /* ... */ }; instead.
Loading history...
29
        for (var a = a.split("."), b = EMBf, c; c = a.shift();)
30
            if (b[c] != EMBd) b = b[c];
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
31
            else return EMBd;
32
        return b
33
    }
34
35
    function EMBh(a) {
0 ignored issues
show
Bug introduced by
The function EMBh is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBh = function() { /* ... */ }; instead.
Loading history...
36
        a.getInstance = function() {
37
            return a.Ha ? a.Ha : a.Ha = new a
0 ignored issues
show
Coding Style Best Practice introduced by
By convention, constructors like a should be capitalized.
Loading history...
38
        }
39
    }
40
41 View Code Duplication
    function EMBaa(a) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
Bug introduced by
The function EMBaa is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBaa = function() { /* ... */ }; instead.
Loading history...
42
        var b = typeof a;
43
        if ("object" == b)
44
            if (a) {
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
45
                if (a instanceof Array) return "array";
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
46
                if (a instanceof Object) return b;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
47
                var c = Object.prototype.toString.call(a);
48
                if ("[object Window]" == c) return "object";
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
49
                if ("[object Array]" == c || "number" == typeof a.length && "undefined" != typeof a.splice && "undefined" != typeof a.propertyIsEnumerable && !a.propertyIsEnumerable("splice")) return "array";
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
50
                if ("[object Function]" == c || "undefined" != typeof a.call && "undefined" != typeof a.propertyIsEnumerable && !a.propertyIsEnumerable("call")) return "function"
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
51
            } else return "null";
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
52
        else if ("function" == b && "undefined" == typeof a.call) return "object";
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
53
        return b
54
    }
55
56
    function EMBi(a) {
0 ignored issues
show
Bug introduced by
The function EMBi is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBi = function() { /* ... */ }; instead.
Loading history...
57
        return a !== EMBb
58
    }
59
60
    function EMBba(a) {
0 ignored issues
show
Bug introduced by
The function EMBba is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBba = function() { /* ... */ }; instead.
Loading history...
61
        return "array" == EMBaa(a)
62
    }
63
64
    function EMBca(a) {
0 ignored issues
show
Bug introduced by
The function EMBca is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBca = function() { /* ... */ }; instead.
Loading history...
65
        var b = EMBaa(a);
66
        return "array" == b || "object" == b && "number" == typeof a.length
67
    }
68
69
    function EMBj(a) {
0 ignored issues
show
Bug introduced by
The function EMBj is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBj = function() { /* ... */ }; instead.
Loading history...
70
        return "string" == typeof a
71
    }
72
73
    function EMBda(a) {
0 ignored issues
show
Bug introduced by
The function EMBda is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBda = function() { /* ... */ }; instead.
Loading history...
74
        var b = typeof a;
75
        return "object" == b && a != EMBd || "function" == b
76
    }
77
    var EMBea = "closure_uid_" + Math.floor(2147483648 * Math.random()).toString(36),
78
        EMBfa = 0;
79
80
    function EMBga(a, b, c) {
0 ignored issues
show
Unused Code introduced by
The parameter b is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
Bug introduced by
The function EMBga is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBga = function() { /* ... */ }; instead.
Loading history...
Unused Code introduced by
The parameter c is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
81
        return a.call.apply(a.bind, arguments)
82
    }
83
84
    function EMBha(a, b, c) {
0 ignored issues
show
Bug introduced by
The function EMBha is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBha = function() { /* ... */ }; instead.
Loading history...
Unused Code introduced by
The parameter c is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
85
        a || EMBa(Error());
86
        if (2 < arguments.length) {
87
            var d = Array.prototype.slice.call(arguments, 2);
88
            return function() {
89
                var c = Array.prototype.slice.call(arguments);
90
                Array.prototype.unshift.apply(c, d);
91
                return a.apply(b, c)
92
            }
93
        }
94
        return function() {
95
            return a.apply(b, arguments)
96
        }
97
    }
98
99
    function EMBk(a, b, c) {
0 ignored issues
show
Bug introduced by
The function EMBk is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBk = function() { /* ... */ }; instead.
Loading history...
Unused Code introduced by
The parameter b is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
Unused Code introduced by
The parameter a is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
Unused Code introduced by
The parameter c is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
100
        EMBk = Function.prototype.bind && -1 != Function.prototype.bind.toString().indexOf("native code") ? EMBga : EMBha;
0 ignored issues
show
Comprehensibility introduced by
It seems like you are trying to overwrite a function name here. EMBk is already defined in line 99 as a function. While this will work, it can be very confusing.
Loading history...
101
        return EMBk.apply(EMBd, arguments)
102
    }
103
104
    function EMBia(a, b) {
0 ignored issues
show
Unused Code introduced by
The parameter b is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
Bug introduced by
The function EMBia is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBia = function() { /* ... */ }; instead.
Loading history...
105
        var c = Array.prototype.slice.call(arguments, 1);
106
        return function() {
107
            var b = Array.prototype.slice.call(arguments);
108
            b.unshift.apply(b, c);
109
            return a.apply(this, b)
110
        }
111
    }
112
    var EMBl = Date.now || function() {
113
        return +new Date
114
    };
115
116
    function EMBm(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBm is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBm = function() { /* ... */ }; instead.
Loading history...
117
        var c = a.split("."),
118
            d = EMBf;
119
        !(c[0] in d) && d.execScript && d.execScript("var " + c[0]);
120
        for (var e; c.length && (e = c.shift());) !c.length && EMBi(b) ? d[e] = b : d = d[e] ? d[e] : d[e] = {}
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
121
    }
122
123
    function EMBn(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBn is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBn = function() { /* ... */ }; instead.
Loading history...
124
        function c() {}
125
        c.prototype = b.prototype;
126
        a.Cd = b.prototype;
127
        a.prototype = new c
0 ignored issues
show
Coding Style Best Practice introduced by
By convention, constructors like c should be capitalized.
Loading history...
128
    }
129
    Function.prototype.bind = Function.prototype.bind || function(a, b) {
0 ignored issues
show
Unused Code introduced by
The parameter b is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
Compatibility Best Practice introduced by
You are extending the built-in type Function. This may have unintended consequences on other objects using this built-in type. Consider subclassing instead.
Loading history...
130
        if (1 < arguments.length) {
131
            var c = Array.prototype.slice.call(arguments, 1);
132
            c.unshift(this, a);
133
            return EMBk.apply(EMBd, c)
134
        }
135
        return EMBk(this, a)
136
    };
137
138
    function EMBo(a) {
0 ignored issues
show
Bug introduced by
The function EMBo is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBo = function() { /* ... */ }; instead.
Loading history...
139
        if (!EMBja.test(a)) return a; - 1 != a.indexOf("&") && (a = a.replace(EMBka, "&amp;")); - 1 != a.indexOf("<") && (a = a.replace(EMBla, "&lt;")); - 1 != a.indexOf(">") && (a = a.replace(EMBma, "&gt;")); - 1 != a.indexOf('"') && (a = a.replace(EMBna, "&quot;"));
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
140
        return a
141
    }
142
    var EMBka = /&/g,
143
        EMBla = /</g,
144
        EMBma = />/g,
145
        EMBna = /\"/g,
146
        EMBja = /[&<>\"]/;
147
148
    function EMBoa(a) {
0 ignored issues
show
Bug introduced by
The function EMBoa is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBoa = function() { /* ... */ }; instead.
Loading history...
149
        for (var b = 0, c = 0; c < a.length; ++c) b = 31 * b + a.charCodeAt(c), b %= 4294967296;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
150
        return b
151
    }
152
153
    function EMBpa(a) {
0 ignored issues
show
Bug introduced by
The function EMBpa is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBpa = function() { /* ... */ }; instead.
Loading history...
154
        return ("" + a).replace(/\-([a-z])/g, function(a, c) {
155
            return c.toUpperCase()
156
        })
157
    };
158
    var EMBp = Array.prototype,
159
        EMBq = EMBp.indexOf ? function(a, b, c) {
160
            return EMBp.indexOf.call(a, b, c)
161
        } : function(a, b, c) {
162
            c = c == EMBd ? 0 : 0 > c ? Math.max(0, a.length + c) : c;
163
            if (EMBj(a)) return !EMBj(b) || 1 != b.length ? -1 : a.indexOf(b, c);
0 ignored issues
show
Best Practice introduced by
Comparing 1 to b.length using the != operator is not safe. Consider using !== instead.
Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
164
            for (; c < a.length; c++)
165
                if (c in a && a[c] === b) return c;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
166
            return -1
167
        },
168
        EMBr = EMBp.forEach ? function(a, b, c) {
169
            EMBp.forEach.call(a, b, c)
170
        } : function(a, b, c) {
171
            for (var d = a.length, e = EMBj(a) ? a.split("") : a, f = 0; f < d; f++) f in e && b.call(c, e[f], f, a)
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
172
        },
173
        EMBqa = EMBp.filter ? function(a, b, c) {
174
            return EMBp.filter.call(a, b, c)
175
        } : function(a,
176
            b, c) {
177
            for (var d = a.length, e = [], f = 0, g = EMBj(a) ? a.split("") : a, h = 0; h < d; h++)
178
                if (h in g) {
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
179
                    var i = g[h];
180
                    b.call(c, i, h, a) && (e[f++] = i)
181
                } return e
182
        };
183
184
    function EMBra(a) {
0 ignored issues
show
Bug introduced by
The function EMBra is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBra = function() { /* ... */ }; instead.
Loading history...
185
        var b = a.length;
186
        if (0 < b) {
187
            for (var c = Array(b), d = 0; d < b; d++) c[d] = a[d];
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
188
            return c
189
        }
190
        return []
191
    }
192
193
    function EMBsa(a, b) {
0 ignored issues
show
Unused Code introduced by
The parameter b is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
Bug introduced by
The function EMBsa is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBsa = function() { /* ... */ }; instead.
Loading history...
194
        for (var c = 1; c < arguments.length; c++) {
195
            var d = arguments[c],
196
                e;
197
            if (EMBba(d) || (e = EMBca(d)) && d.hasOwnProperty("callee")) a.push.apply(a, d);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
198
            else if (e)
199
                for (var f = a.length, g = d.length, h = 0; h < g; h++) a[f + h] = d[h];
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
200
            else a.push(d)
201
        }
202
    }
203
204
    function EMBta(a, b, c, d) {
0 ignored issues
show
Bug introduced by
The function EMBta is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBta = function() { /* ... */ }; instead.
Loading history...
Unused Code introduced by
The parameter d is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
Unused Code introduced by
The parameter c is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
Unused Code introduced by
The parameter b is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
205
        EMBp.splice.apply(a, EMBua(arguments, 1))
206
    }
207
208
    function EMBua(a, b, c) {
0 ignored issues
show
Bug introduced by
The function EMBua is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBua = function() { /* ... */ }; instead.
Loading history...
209
        return 2 >= arguments.length ? EMBp.slice.call(a, b) : EMBp.slice.call(a, b, c)
210
    };
211
212
    function EMBs(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBs is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBs = function() { /* ... */ }; instead.
Loading history...
213
        this.x = EMBi(a) ? a : 0;
214
        this.y = EMBi(b) ? b : 0
215
    }
216
    EMBs.prototype.a = function() {
217
        return new EMBs(this.x, this.y)
218
    };
219
220
    function EMBva(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBva is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBva = function() { /* ... */ }; instead.
Loading history...
221
        return new EMBs(a.x - b.x, a.y - b.y)
222
    };
223
224
    function EMBt(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBt is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBt = function() { /* ... */ }; instead.
Loading history...
225
        this.width = a;
226
        this.height = b
227
    }
228
    EMBt.prototype.a = function() {
229
        return new EMBt(this.width, this.height)
230
    };
231
    EMBt.prototype.floor = function() {
232
        this.width = Math.floor(this.width);
233
        this.height = Math.floor(this.height);
234
        return this
235
    };
236
    EMBt.prototype.round = function() {
237
        this.width = Math.round(this.width);
238
        this.height = Math.round(this.height);
239
        return this
240
    };
241
242
    function EMBwa(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBwa is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBwa = function() { /* ... */ }; instead.
Loading history...
243
        for (var c in a) b.call(EMBb, a[c], c, a)
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Complexity introduced by
A for in loop automatically includes the property of any prototype object, consider checking the key using hasOwnProperty.

When iterating over the keys of an object, this includes not only the keys of the object, but also keys contained in the prototype of that object. It is generally a best practice to check for these keys specifically:

var someObject;
for (var key in someObject) {
    if ( ! someObject.hasOwnProperty(key)) {
        continue; // Skip keys from the prototype.
    }

    doSomethingWith(key);
}
Loading history...
244
    }
245
246
    function EMBxa(a) {
0 ignored issues
show
Bug introduced by
The function EMBxa is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBxa = function() { /* ... */ }; instead.
Loading history...
247
        for (var b in a) return a[b]
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
248
    }
1 ignored issue
show
Best Practice introduced by
There is no return statement in this branch, but you do return something in other branches. Did you maybe miss it? If you do not want to return anything, consider adding return undefined; explicitly.
Loading history...
249
250
    function EMBya(a, b, c) {
0 ignored issues
show
Bug introduced by
The function EMBya is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBya = function() { /* ... */ }; instead.
Loading history...
251
        for (var d in a)
0 ignored issues
show
Complexity introduced by
A for in loop automatically includes the property of any prototype object, consider checking the key using hasOwnProperty.

When iterating over the keys of an object, this includes not only the keys of the object, but also keys contained in the prototype of that object. It is generally a best practice to check for these keys specifically:

var someObject;
for (var key in someObject) {
    if ( ! someObject.hasOwnProperty(key)) {
        continue; // Skip keys from the prototype.
    }

    doSomethingWith(key);
}
Loading history...
252
            if (b.call(c, a[d], d, a)) return d
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
253
    }
1 ignored issue
show
Best Practice introduced by
There is no return statement in this branch, but you do return something in other branches. Did you maybe miss it? If you do not want to return anything, consider adding return undefined; explicitly.
Loading history...
254
255
    function EMBza(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBza is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBza = function() { /* ... */ }; instead.
Loading history...
256
        var c = EMBya(a, b, EMBb);
257
        return c && a[c]
258
    }
259
260
    function EMBAa(a) {
0 ignored issues
show
Bug introduced by
The function EMBAa is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBAa = function() { /* ... */ }; instead.
Loading history...
261
        var b = {},
262
            c;
263
        for (c in a) b[c] = a[c];
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
264
        return b
265
    }
266
    var EMBBa = "constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");
267
268
    function EMBCa(a, b) {
0 ignored issues
show
Unused Code introduced by
The parameter b is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
Bug introduced by
The function EMBCa is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBCa = function() { /* ... */ }; instead.
Loading history...
269
        for (var c, d, e = 1; e < arguments.length; e++) {
270
            d = arguments[e];
271
            for (c in d) a[c] = d[c];
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
272
            for (var f = 0; f < EMBBa.length; f++) c = EMBBa[f], Object.prototype.hasOwnProperty.call(d, c) && (a[c] = d[c])
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
273
        }
274
    };
275
    var EMBu, EMBDa, EMBEa, EMBFa, EMBGa, EMBHa, EMBIa;
276
277
    function EMBJa() {
0 ignored issues
show
Bug introduced by
The function EMBJa is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBJa = function() { /* ... */ }; instead.
Loading history...
278
        return EMBf.navigator ? EMBf.navigator.userAgent : EMBd
279
    }
280
281
    function EMBKa() {
0 ignored issues
show
Bug introduced by
The function EMBKa is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBKa = function() { /* ... */ }; instead.
Loading history...
282
        return EMBf.navigator
283
    }
284
    EMBGa = EMBFa = EMBEa = EMBDa = EMBu = EMBe;
285
    var EMBLa;
286
    if (EMBLa = EMBJa()) {
287
        var EMBMa = EMBKa();
288
        EMBu = 0 == EMBLa.indexOf("Opera");
0 ignored issues
show
Best Practice introduced by
Comparing 0 to EMBLa.indexOf("Opera") using the == operator is not safe. Consider using === instead.
Loading history...
289
        EMBDa = !EMBu && -1 != EMBLa.indexOf("MSIE");
290
        EMBFa = (EMBEa = !EMBu && -1 != EMBLa.indexOf("WebKit")) && -1 != EMBLa.indexOf("Mobile");
291
        EMBGa = !EMBu && !EMBEa && "Gecko" == EMBMa.product
292
    }
293
    var EMBNa = EMBu,
294
        EMBv = EMBDa,
295
        EMBw = EMBGa,
296
        EMBx = EMBEa,
297
        EMBOa = EMBFa,
298
        EMBPa = EMBKa(),
299
        EMBQa = EMBPa && EMBPa.platform || "";
300
    EMBHa = -1 != EMBQa.indexOf("Mac");
301
    EMBIa = -1 != EMBQa.indexOf("Win");
302
    var EMBRa = !!EMBKa() && -1 != (EMBKa().appVersion || "").indexOf("X11"),
303
        EMBSa;
304
    a: {
305
        var EMBTa = "",
306
            EMBUa;
307
        if (EMBNa && EMBf.opera) var EMBVa = EMBf.opera.version,
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
308
            EMBTa = "function" == typeof EMBVa ? EMBVa() : EMBVa;
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable EMBTa already seems to be declared on line 305. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
309
        else if (EMBw ? EMBUa = /rv\:([^\);]+)(\)|;)/ : EMBv ? EMBUa = /MSIE\s+([^\);]+)(\)|;)/ : EMBx && (EMBUa = /WebKit\/(\S+)/), EMBUa) var EMBWa = EMBUa.exec(EMBJa()),
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Bug introduced by
The variable EMBUa does not seem to be initialized in case EMBw ? EMBUa = rv\:([^\)... = WebKit\/(\S+), EMBUa on line 309 is true. Are you sure this can never be the case?
Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
310
            EMBTa = EMBWa ? EMBWa[1] : "";
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable EMBTa already seems to be declared on line 305. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
311
        if (EMBv) {
312
            var EMBXa, EMBYa = EMBf.document;
313
            EMBXa = EMBYa ? EMBYa.documentMode : EMBb;
314
            if (EMBXa > parseFloat(EMBTa)) {
315
                EMBSa = "" + EMBXa;
316
                break a
317
            }
318
        }
319
        EMBSa = EMBTa
320
    }
321
    var EMBZa = EMBSa,
322
        EMB_a = {};
323
324
    function EMBy(a) {
0 ignored issues
show
Bug introduced by
The function EMBy is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBy = function() { /* ... */ }; instead.
Loading history...
325
        var b;
326
        if (!(b = EMB_a[a])) {
327
            b = 0;
328
            for (var c = ("" + EMBZa).replace(/^[\s\xa0]+|[\s\xa0]+$/g, "").split("."), d = ("" + a).replace(/^[\s\xa0]+|[\s\xa0]+$/g, "").split("."), e = Math.max(c.length, d.length), f = 0; 0 == b && f < e; f++) {
0 ignored issues
show
Best Practice introduced by
Comparing 0 to b using the == operator is not safe. Consider using === instead.
Loading history...
329
                var g = c[f] || "",
330
                    h = d[f] || "",
331
                    i = RegExp("(\\d*)(\\D*)", "g"),
332
                    j = RegExp("(\\d*)(\\D*)", "g");
333
                do {
334
                    var k = i.exec(g) || ["", "", ""],
335
                        l = j.exec(h) || ["", "", ""];
336
                    if (0 == k[0].length && 0 == l[0].length) break;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Best Practice introduced by
Comparing 0 to l.0.length using the == operator is not safe. Consider using === instead.
Loading history...
Best Practice introduced by
Comparing 0 to k.0.length using the == operator is not safe. Consider using === instead.
Loading history...
337
                    b = ((0 == k[1].length ? 0 : parseInt(k[1], 10)) < (0 == l[1].length ? 0 : parseInt(l[1], 10)) ? -1 : (0 == k[1].length ? 0 : parseInt(k[1],
0 ignored issues
show
Best Practice introduced by
Comparing 0 to l.1.length using the == operator is not safe. Consider using === instead.
Loading history...
Best Practice introduced by
Comparing 0 to k.1.length using the == operator is not safe. Consider using === instead.
Loading history...
338
                        10)) > (0 == l[1].length ? 0 : parseInt(l[1], 10)) ? 1 : 0) || ((0 == k[2].length) < (0 == l[2].length) ? -1 : (0 == k[2].length) > (0 == l[2].length) ? 1 : 0) || (k[2] < l[2] ? -1 : k[2] > l[2] ? 1 : 0)
0 ignored issues
show
Best Practice introduced by
Comparing 0 to k.2.length using the == operator is not safe. Consider using === instead.
Loading history...
Best Practice introduced by
Comparing 0 to l.2.length using the == operator is not safe. Consider using === instead.
Loading history...
339
                } while (0 == b)
340
            }
341
            b = EMB_a[a] = 0 <= b
342
        }
343
        return b
344
    }
345
    var EMB0a = {};
346
347
    function EMB1a(a) {
0 ignored issues
show
Bug introduced by
The function EMB1a is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMB1a = function() { /* ... */ }; instead.
Loading history...
348
        return EMB0a[a] || (EMB0a[a] = EMBv && !!document.documentMode && document.documentMode >= a)
349
    };
350
    var EMB2a, EMB3a = !EMBv || EMB1a(9);
351
    !EMBw && !EMBv || EMBv && EMB1a(9) || EMBw && EMBy("1.9.1");
352
    var EMB4a = EMBv && !EMBy("9");
353
354
    function EMB5a(a) {
0 ignored issues
show
Bug introduced by
The function EMB5a is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMB5a = function() { /* ... */ }; instead.
Loading history...
355
        a = a.className;
356
        return EMBj(a) && a.match(/\S+/g) || []
357
    }
358
359
    function EMBz(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBz is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBz = function() { /* ... */ }; instead.
Loading history...
Unused Code introduced by
The parameter b is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
360
        for (var c = EMB5a(a), d = EMBua(arguments, 1), e = c.length + d.length, f = c, g = 0; g < d.length; g++) 0 <= EMBq(f, d[g]) || f.push(d[g]);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
361
        a.className = c.join(" ");
362
        return c.length == e
363
    }
364
365
    function EMBA(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBA is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBA = function() { /* ... */ }; instead.
Loading history...
Unused Code introduced by
The parameter b is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
366
        var c = EMB5a(a),
367
            d = EMBua(arguments, 1),
368
            c = EMB6a(c, d);
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable c already seems to be declared on line 366. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
369
        a.className = c.join(" ")
370
    }
371
372
    function EMB6a(a, b) {
0 ignored issues
show
Bug introduced by
The function EMB6a is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMB6a = function() { /* ... */ }; instead.
Loading history...
373
        return EMBqa(a, function(a) {
374
            return !(0 <= EMBq(b, a))
375
        })
376
    }
377
378
    function EMBB(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBB is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBB = function() { /* ... */ }; instead.
Loading history...
379
        var c = EMB5a(a);
380
        return 0 <= EMBq(c, b)
381
    }
382
383
    function EMB7a(a, b, c) {
0 ignored issues
show
Bug introduced by
The function EMB7a is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMB7a = function() { /* ... */ }; instead.
Loading history...
384
        c ? EMBz(a, b) : EMBA(a, b)
385
    }
386
387
    function EMB8a(a, b) {
0 ignored issues
show
Bug introduced by
The function EMB8a is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMB8a = function() { /* ... */ }; instead.
Loading history...
388
        var c = !EMBB(a, b);
389
        EMB7a(a, b, c)
390
    };
391
392
    function EMBC(a) {
0 ignored issues
show
Bug introduced by
The function EMBC is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBC = function() { /* ... */ }; instead.
Loading history...
393
        return a ? new EMB9a(EMBD(a)) : EMB2a || (EMB2a = new EMB9a)
394
    }
395
396
    function EMBE(a) {
0 ignored issues
show
Bug introduced by
The function EMBE is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBE = function() { /* ... */ }; instead.
Loading history...
397
        return EMBj(a) ? document.getElementById(a) : a
398
    }
399
400
    function EMB$a(a, b) {
0 ignored issues
show
Bug introduced by
The function EMB$a is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMB$a = function() { /* ... */ }; instead.
Loading history...
401
        var c = b || document;
402
        return c.querySelectorAll && c.querySelector ? c.querySelectorAll("." + a) : c.getElementsByClassName ? c.getElementsByClassName(a) : EMBF("*", a, b)
403
    }
404
405
    function EMBG(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBG is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBG = function() { /* ... */ }; instead.
Loading history...
406
        var c = b || document,
407
            d = EMBd;
0 ignored issues
show
Unused Code introduced by
The variable d seems to be never used. Consider removing it.
Loading history...
408
        return (d = c.querySelectorAll && c.querySelector ? c.querySelector("." + a) : EMB$a(a, b)[0]) || EMBd
409
    }
410
411 View Code Duplication
    function EMBF(a, b, c) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
Bug introduced by
The function EMBF is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBF = function() { /* ... */ }; instead.
Loading history...
412
        var d = document,
413
            c = c || d,
414
            a = a && "*" != a ? a.toUpperCase() : "";
415
        if (c.querySelectorAll && c.querySelector && (a || b)) return c.querySelectorAll(a + (b ? "." + b : ""));
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
416
        if (b && c.getElementsByClassName) {
417
            c = c.getElementsByClassName(b);
418
            if (a) {
419
                for (var d = {}, e = 0, f = 0, g; g = c[f]; f++) a == g.nodeName && (d[e++] = g);
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable d already seems to be declared on line 412. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
420
                d.length = e;
421
                return d
422
            }
423
            return c
424
        }
425
        c = c.getElementsByTagName(a || "*");
426
        if (b) {
427
            d = {};
428
            for (f = e = 0; g = c[f]; f++) a = g.className, "function" == typeof a.split && 0 <= EMBq(a.split(/\s+/), b) && (d[e++] = g);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
429
            d.length = e;
430
            return d
431
        }
432
        return c
433
    }
434
435
    function EMBab(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBab is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBab = function() { /* ... */ }; instead.
Loading history...
436
        EMBwa(b, function(b, d) {
437
            "style" == d ? a.style.cssText = b : "class" == d ? a.className = b : "for" == d ? a.htmlFor = b : d in EMBbb ? a.setAttribute(EMBbb[d], b) : 0 == d.lastIndexOf("aria-", 0) ? a.setAttribute(d, b) : a[d] = b
0 ignored issues
show
Best Practice introduced by
Comparing 0 to d.lastIndexOf("aria-", 0) using the == operator is not safe. Consider using === instead.
Loading history...
438
        })
439
    }
440
    var EMBbb = {
441
        cellpadding: "cellPadding",
442
        cellspacing: "cellSpacing",
443
        colspan: "colSpan",
444
        rowspan: "rowSpan",
445
        valign: "vAlign",
446
        height: "height",
447
        width: "width",
448
        usemap: "useMap",
449
        frameborder: "frameBorder",
450
        maxlength: "maxLength",
451
        type: "type"
452
    };
453
454
    function EMBcb(a) {
0 ignored issues
show
Bug introduced by
The function EMBcb is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBcb = function() { /* ... */ }; instead.
Loading history...
455
        a = a.document;
456
        a = "CSS1Compat" == a.compatMode ? a.documentElement : a.body;
457
        return new EMBt(a.clientWidth, a.clientHeight)
458
    }
459
460
    function EMBdb(a, b, c) {
0 ignored issues
show
Unused Code introduced by
The parameter b is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
Bug introduced by
The function EMBdb is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBdb = function() { /* ... */ }; instead.
Loading history...
Unused Code introduced by
The parameter c is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
Unused Code introduced by
The parameter a is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
461
        var d = arguments,
462
            e = document,
463
            f = d[0],
464
            g = d[1];
465
        if (!EMB3a && g && (g.name || g.type)) {
466
            f = ["<", f];
467
            g.name && f.push(' name="', EMBo(g.name), '"');
468
            if (g.type) {
469
                f.push(' type="', EMBo(g.type), '"');
470
                var h = {};
471
                EMBCa(h, g);
472
                g = h;
473
                delete g.type
474
            }
475
            f.push(">");
476
            f = f.join("")
477
        }
478
        f = e.createElement(f);
479
        g && (EMBj(g) ? f.className = g : EMBba(g) ? EMBz.apply(EMBd, [f].concat(g)) : EMBab(f, g));
480
        2 < d.length && EMBeb(e, f, d, 2);
481
        return f
482
    }
483
484
    function EMBeb(a, b, c, d) {
0 ignored issues
show
Bug introduced by
The function EMBeb is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBeb = function() { /* ... */ }; instead.
Loading history...
485
        function e(c) {
486
            c && b.appendChild(EMBj(c) ? a.createTextNode(c) : c)
487
        }
488
        for (; d < c.length; d++) {
489
            var f = c[d];
490
            EMBca(f) && !(EMBda(f) && 0 < f.nodeType) ? EMBr(EMBfb(f) ? EMBra(f) : f, e) : e(f)
491
        }
492
    }
493
494
    function EMBgb(a, b) {
0 ignored issues
show
Unused Code introduced by
The parameter b is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
Bug introduced by
The function EMBgb is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBgb = function() { /* ... */ }; instead.
Loading history...
495
        EMBeb(EMBD(a), a, arguments, 1)
496
    }
497
498
    function EMBhb(a) {
0 ignored issues
show
Bug introduced by
The function EMBhb is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBhb = function() { /* ... */ }; instead.
Loading history...
499
        for (var b; b = a.firstChild;) a.removeChild(b)
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
500
    }
501
502
    function EMBib(a) {
0 ignored issues
show
Bug introduced by
The function EMBib is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBib = function() { /* ... */ }; instead.
Loading history...
503
        for (; a && 1 != a.nodeType;) a = a.nextSibling;
0 ignored issues
show
Best Practice introduced by
Comparing 1 to a.nodeType using the != operator is not safe. Consider using !== instead.
Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
504
        return a
505
    }
506
507
    function EMBD(a) {
0 ignored issues
show
Bug introduced by
The function EMBD is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBD = function() { /* ... */ }; instead.
Loading history...
508
        return 9 == a.nodeType ? a : a.ownerDocument || a.document
509
    }
510
511
    function EMBjb(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBjb is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBjb = function() { /* ... */ }; instead.
Loading history...
512
        var c = [];
513
        return EMBkb(a, b, c, EMBc) ? c[0] : EMBb
514
    }
515
516
    function EMBkb(a, b, c, d) {
0 ignored issues
show
Bug introduced by
The function EMBkb is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBkb = function() { /* ... */ }; instead.
Loading history...
517
        if (a != EMBd)
518
            for (a = a.firstChild; a;) {
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
519
                if (b(a) && (c.push(a), d) || EMBkb(a, b, c, d)) return EMBc;
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
520
                a = a.nextSibling
521
            }
522
        return EMBe
523
    }
524
    var EMBlb = {
525
            SCRIPT: 1,
526
            STYLE: 1,
527
            HEAD: 1,
528
            IFRAME: 1,
529
            OBJECT: 1
530
        },
531
        EMBmb = {
532
            IMG: " ",
533
            BR: "\n"
534
        };
535
536
    function EMBnb(a, b, c) {
0 ignored issues
show
Bug introduced by
The function EMBnb is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBnb = function() { /* ... */ }; instead.
Loading history...
537
        if (!(a.nodeName in EMBlb))
538
            if (3 == a.nodeType) c ? b.push(("" + a.nodeValue).replace(/(\r\n|\r|\n)/g, "")) : b.push(a.nodeValue);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
539
            else if (a.nodeName in EMBmb) b.push(EMBmb[a.nodeName]);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
540
        else
541
            for (a = a.firstChild; a;) EMBnb(a, b, c), a = a.nextSibling
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
542
    }
543
544
    function EMBfb(a) {
0 ignored issues
show
Bug introduced by
The function EMBfb is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBfb = function() { /* ... */ }; instead.
Loading history...
545
        if (a && "number" == typeof a.length) {
546
            if (EMBda(a)) return "function" == typeof a.item || "string" == typeof a.item;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
547
            if ("function" == EMBaa(a)) return "function" == typeof a.item
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
548
        }
549
        return EMBe
550
    }
551
552
    function EMBob(a, b, c) {
0 ignored issues
show
Bug introduced by
The function EMBob is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBob = function() { /* ... */ }; instead.
Loading history...
553
        if (!b && !c) return EMBd;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
554
        var d = b ? b.toUpperCase() : EMBd;
555
        return EMBpb(a, function(a) {
556
            return (!d || a.nodeName == d) && (!c || EMBB(a, c))
557
        }, EMBc)
558
    }
559
560
    function EMBH(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBH is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBH = function() { /* ... */ }; instead.
Loading history...
561
        return EMBob(a, EMBd, b)
562
    }
563
564
    function EMBpb(a, b, c, d) {
0 ignored issues
show
Bug introduced by
The function EMBpb is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBpb = function() { /* ... */ }; instead.
Loading history...
565
        c || (a = a.parentNode);
566
        for (var c = d == EMBd, e = 0; a && (c || e <= d);) {
567
            if (b(a)) return a;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
568
            a = a.parentNode;
569
            e++
570
        }
571
        return EMBd
572
    }
573
574
    function EMB9a(a) {
0 ignored issues
show
Bug introduced by
The function EMB9a is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMB9a = function() { /* ... */ }; instead.
Loading history...
575
        this.a = a || EMBf.document || document
576
    }
577
578
    function EMBqb(a) {
0 ignored issues
show
Bug introduced by
The function EMBqb is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBqb = function() { /* ... */ }; instead.
Loading history...
579
        return "CSS1Compat" == a.a.compatMode
580
    }
581
582
    function EMBrb(a) {
0 ignored issues
show
Bug introduced by
The function EMBrb is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBrb = function() { /* ... */ }; instead.
Loading history...
583
        var b = a.a,
584
            a = !EMBx && "CSS1Compat" == b.compatMode ? b.documentElement : b.body,
585
            b = b.parentWindow || b.defaultView;
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable b already seems to be declared on line 583. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
586
        return new EMBs(b.pageXOffset || a.scrollLeft, b.pageYOffset || a.scrollTop)
587
    }
588
    EMB9a.prototype.appendChild = function(a, b) {
589
        a.appendChild(b)
590
    };
591
592
    function EMBI(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBI is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBI = function() { /* ... */ }; instead.
Loading history...
593
        return a.dataset ? a.dataset[EMBsb(b)] : a.getAttribute("data-" + b)
594
    }
595
596
    function EMBJ(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBJ is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBJ = function() { /* ... */ }; instead.
Loading history...
597
        a.dataset ? delete a.dataset[EMBsb(b)] : a.removeAttribute("data-" + b)
598
    }
599
    var EMBtb = {};
600
601
    function EMBsb(a) {
0 ignored issues
show
Bug introduced by
The function EMBsb is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBsb = function() { /* ... */ }; instead.
Loading history...
602
        return EMBtb[a] || (EMBtb[a] = ("" + a).replace(/\-([a-z])/g, function(a, c) {
603
            return c.toUpperCase()
604
        }))
605
    };
606
    var EMBub = EMBg("yt.dom.getNextId_");
607
    if (!EMBub) {
608
        EMBub = function() {
609
            return ++EMBvb
610
        };
611
        EMBm("yt.dom.getNextId_", EMBub);
612
        var EMBvb = 0
613
    }
614
615
    function EMBwb(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBwb is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBwb = function() { /* ... */ }; instead.
Loading history...
616
        var c = EMBF(a, EMBd, b);
617
        return c.length ? c[0] : EMBd
618
    }
619
620 View Code Duplication
    function EMBxb() {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
Bug introduced by
The function EMBxb is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBxb = function() { /* ... */ }; instead.
Loading history...
621
        var a = document;
622
        if ("fullScreenElement" in a) return a.fullScreenElement;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
623
        if ("mozFullScreenElement" in a) return a.mozFullScreenElement;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
624
        if ("msFullScreenElement" in a) return a.msFullScreenElement;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
625
        if ("oFullScreenElement" in a) return a.oFullScreenElement;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
626
        if ("webkitFullScreenElement" in a) return a.webkitFullScreenElement
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if "webkitFullScreenElement" in a is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
627
    };
628
629
    function EMByb(a) {
0 ignored issues
show
Bug introduced by
The function EMByb is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMByb = function() { /* ... */ }; instead.
Loading history...
630
        if (a = a || EMBg("window.event")) {
631
            for (var b in a) 0 <= EMBq(EMBzb, b) || (this[b] = a[b]);
0 ignored issues
show
Complexity introduced by
A for in loop automatically includes the property of any prototype object, consider checking the key using hasOwnProperty.

When iterating over the keys of an object, this includes not only the keys of the object, but also keys contained in the prototype of that object. It is generally a best practice to check for these keys specifically:

var someObject;
for (var key in someObject) {
    if ( ! someObject.hasOwnProperty(key)) {
        continue; // Skip keys from the prototype.
    }

    doSomethingWith(key);
}
Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
632
            if ((b = a.target || a.srcElement) && 3 == b.nodeType) b = b.parentNode;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
633
            this.target = b;
634
            if (b = a.relatedTarget) try {
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
635
                b = b.nodeName && b
636
            } catch (c) {
637
                b = EMBd
638
            } else "mouseover" == this.type ? b = a.fromElement : "mouseout" == this.type && (b = a.toElement);
639
            this.relatedTarget = b;
640
            this.clientX = a.clientX !== EMBb ? a.clientX : a.pageX;
641
            this.clientY = a.clientY !== EMBb ? a.clientY : a.pageY;
642
            if ((a.clientX || a.clientY) && document.body && document.documentElement) this.pageX =
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
643
                a.clientX + document.body.scrollLeft + document.documentElement.scrollLeft, this.pageY = a.clientY + document.body.scrollTop + document.documentElement.scrollTop;
644
            this.keyCode = a.keyCode ? a.keyCode : a.which;
645
            this.charCode = a.charCode || ("keypress" == this.type ? this.keyCode : 0);
646
            this.altKey = a.altKey;
647
            this.ctrlKey = a.ctrlKey;
648
            this.shiftKey = a.shiftKey;
649
            this.W = a
650
        }
651
    }
652
    var EMBzb = "stopPropagation preventMouseEvent preventManipulation preventDefault layerX layerY".split(" ");
653
    EMB = EMByb.prototype;
654
    EMB.type = "";
655
    EMB.target = EMBd;
656
    EMB.relatedTarget = EMBd;
657
    EMB.currentTarget = EMBd;
658
    EMB.data = EMBd;
659
    EMB.source = EMBd;
660
    EMB.origin = EMBd;
661
    EMB.keyCode = 0;
662
    EMB.charCode = 0;
663
    EMB.altKey = EMBe;
664
    EMB.ctrlKey = EMBe;
665
    EMB.shiftKey = EMBe;
666
    EMB.W = EMBd;
667
    EMB.clientX = 0;
668
    EMB.clientY = 0;
669
    EMB.pageX = 0;
670
    EMB.pageY = 0;
671
    EMB.changedTouches = EMBd;
672
    EMB.preventDefault = function() {
673
        this.W.returnValue = EMBe;
674
        this.W.preventDefault && this.W.preventDefault()
675
    };
676
    var EMBAb = EMBg("yt.events.listeners_") || {};
677
    EMBm("yt.events.listeners_", EMBAb);
678
    var EMBBb = EMBg("yt.events.counter_") || {
679
        count: 0
680
    };
681
    EMBm("yt.events.counter_", EMBBb);
682
683
    function EMBCb(a, b, c, d) {
0 ignored issues
show
Bug introduced by
The function EMBCb is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBCb = function() { /* ... */ }; instead.
Loading history...
684
        return EMBya(EMBAb, function(e) {
685
            return e[0] == a && e[1] == b && e[2] == c && e[4] == !!d
686
        })
687
    }
688
689
    function EMBK(a, b, c, d) {
0 ignored issues
show
Bug introduced by
The function EMBK is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBK = function() { /* ... */ }; instead.
Loading history...
690
        function e(b) {
691
            b = new EMByb(b);
692
            b.currentTarget = a;
693
            return c.call(a, b)
694
        }
695
        if (!a || !a.addEventListener && !a.attachEvent) return "";
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
696
        var d = !!d,
697
            f = EMBCb(a, b, c, d);
698
        if (f) return f;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
699
        f = ++EMBBb.count + "";
700
        EMBAb[f] = [a, b, c, e, d];
701
        a.addEventListener ? a.addEventListener(b, e, d) : a.attachEvent("on" + b, e);
702
        return f
703
    }
704
705
    function EMBDb(a, b, c) {
0 ignored issues
show
Bug introduced by
The function EMBDb is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBDb = function() { /* ... */ }; instead.
Loading history...
706
        EMBEb(a, b, function(a) {
707
            return EMBB(a, c)
708
        })
709
    }
710
711
    function EMBEb(a, b, c) {
0 ignored issues
show
Bug introduced by
The function EMBEb is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBEb = function() { /* ... */ }; instead.
Loading history...
712
        var d = a || document;
713
        EMBK(d, "click", function(a) {
714
            var f = EMBpb(a.target, function(a) {
715
                return a === d || c(a)
716
            }, EMBc);
717
            f && f !== d && (a.currentTarget = f, b.call(f, a))
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
718
        })
719
    }
720
721
    function EMBFb(a) {
0 ignored issues
show
Bug introduced by
The function EMBFb is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBFb = function() { /* ... */ }; instead.
Loading history...
722
        (a = EMBCb(document, a, EMBL, EMBe)) && EMBGb(a)
723
    }
724
725
    function EMBGb(a) {
0 ignored issues
show
Bug introduced by
The function EMBGb is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBGb = function() { /* ... */ }; instead.
Loading history...
726
        "string" == typeof a && (a = [a]);
727
        EMBr(a, function(a) {
728
            if (a in EMBAb) {
729
                var c = EMBAb[a],
730
                    d = c[0],
731
                    e = c[1],
732
                    f = c[3],
733
                    c = c[4];
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable c already seems to be declared on line 729. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
734
                d.removeEventListener ? d.removeEventListener(e, f, c) : d.detachEvent("on" + e, f);
735
                delete EMBAb[a]
736
            }
737
        })
738
    }
739
740
    function EMBHb(a) {
0 ignored issues
show
Bug introduced by
The function EMBHb is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBHb = function() { /* ... */ }; instead.
Loading history...
741
        if (document.createEvent) {
742
            var b = document.createEvent("HTMLEvents");
743
            b.initEvent("click", EMBc, EMBc);
744
            a.dispatchEvent(b)
745
        } else b = document.createEventObject(), a.fireEvent("onclick", b)
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
746
    };
747
    var EMBIb = new function() {
748
        this.a = EMBl()
749
    };
750
751
    function EMBJb(a) {
0 ignored issues
show
Bug introduced by
The function EMBJb is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBJb = function() { /* ... */ }; instead.
Loading history...
752
        this.a = a || "";
753
        this.b = EMBIb
754
    }
755
    EMB = EMBJb.prototype;
756
    EMB.la = EMBc;
757
    EMB.Pa = EMBc;
758
    EMB.Oa = EMBc;
759
    EMB.ma = EMBe;
760
    EMB.Qa = EMBe;
761
762
    function EMBM(a) {
0 ignored issues
show
Bug introduced by
The function EMBM is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBM = function() { /* ... */ }; instead.
Loading history...
763
        return 10 > a ? "0" + a : "" + a
764
    }
765
766
    function EMBKb(a) {
0 ignored issues
show
Bug introduced by
The function EMBKb is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBKb = function() { /* ... */ }; instead.
Loading history...
767
        EMBJb.call(this, a)
768
    }
769
    EMBn(EMBKb, EMBJb);
770
    var EMBLb = "StopIteration" in EMBf ? EMBf.StopIteration : Error("StopIteration");
771
772
    function EMBMb() {}
0 ignored issues
show
Bug introduced by
The function EMBMb is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBMb = function() { /* ... */ }; instead.
Loading history...
773
    EMBMb.prototype.next = function() {
774
        EMBa(EMBLb)
775
    };
776
    EMBMb.prototype.K = function() {
777
        return this
778
    };
779
780
    function EMBNb(a) {
0 ignored issues
show
Bug introduced by
The function EMBNb is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBNb = function() { /* ... */ }; instead.
Loading history...
781
        if (a instanceof EMBMb) return a;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
782
        if ("function" == typeof a.K) return a.K(EMBe);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
783
        if (EMBca(a)) {
784
            var b = 0,
785
                c = new EMBMb;
786
            c.next = function() {
787
                for (;;) {
788
                    b >= a.length && EMBa(EMBLb);
0 ignored issues
show
Bug introduced by
The variable b is changed as part of the for loop for example by b++ on line 790. Only the value of the last iteration will be visible in this function if it is called after the loop.
Loading history...
789
                    if (b in a) return a[b++];
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
790
                    b++
791
                }
792
            };
793
            return c
794
        }
795
        EMBa(Error("Not implemented"))
796
    }
1 ignored issue
show
Best Practice introduced by
There is no return statement in this branch, but you do return something in other branches. Did you maybe miss it? If you do not want to return anything, consider adding return undefined; explicitly.
Loading history...
797
798
    function EMBOb(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBOb is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBOb = function() { /* ... */ }; instead.
Loading history...
799
        if (EMBca(a)) try {
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
800
            EMBr(a, b, EMBb)
801
        } catch (c) {
802
            c !== EMBLb && EMBa(c)
803
        } else {
804
            a = EMBNb(a);
805
            try {
806
                for (;;) b.call(EMBb, a.next(), EMBb, a)
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
807
            } catch (d) {
808
                d !== EMBLb && EMBa(d)
809
            }
810
        }
811
    }
812
813
    function EMBPb(a) {
0 ignored issues
show
Bug introduced by
The function EMBPb is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBPb = function() { /* ... */ }; instead.
Loading history...
814
        if (EMBca(a)) return EMBra(a);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
815
        var a = EMBNb(a),
816
            b = [];
817
        EMBOb(a, function(a) {
818
            b.push(a)
819
        });
820
        return b
821
    };
822
823
    function EMBQb(a) {
0 ignored issues
show
Bug introduced by
The function EMBQb is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBQb = function() { /* ... */ }; instead.
Loading history...
824
        return EMBRb(a || arguments.callee.caller, [])
825
    }
826
827
    function EMBRb(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBRb is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBRb = function() { /* ... */ }; instead.
Loading history...
828
        var c = [];
829
        if (0 <= EMBq(b, a)) c.push("[...circular reference...]");
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
830
        else if (a && 50 > b.length) {
831
            c.push(EMBSb(a) + "(");
832
            for (var d = a.arguments, e = 0; e < d.length; e++) {
833
                0 < e && c.push(", ");
834
                var f;
835
                f = d[e];
836
                switch (typeof f) {
837
                    case "object":
838
                        f = f ? "object" : "null";
839
                        break;
840
                    case "string":
841
                        break;
842
                    case "number":
843
                        f = "" + f;
844
                        break;
845
                    case "boolean":
846
                        f = f ? "true" : "false";
847
                        break;
848
                    case "function":
849
                        f = (f = EMBSb(f)) ? f : "[fn]";
850
                        break;
851
                    default:
852
                        f = typeof f
853
                }
854
                40 < f.length && (f = f.substr(0, 40) + "...");
855
                c.push(f)
856
            }
857
            b.push(a);
858
            c.push(")\n");
859
            try {
860
                c.push(EMBRb(a.caller,
861
                    b))
862
            } catch (g) {
863
                c.push("[exception trying to get caller]\n")
864
            }
865
        } else a ? c.push("[...long stack...]") : c.push("[end]");
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
866
        return c.join("")
867
    }
868
869
    function EMBSb(a) {
0 ignored issues
show
Bug introduced by
The function EMBSb is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBSb = function() { /* ... */ }; instead.
Loading history...
870
        if (EMBTb[a]) return EMBTb[a];
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
871
        a = "" + a;
872
        if (!EMBTb[a]) {
873
            var b = /function ([^\(]+)/.exec(a);
874
            EMBTb[a] = b ? b[1] : "[Anonymous]"
875
        }
876
        return EMBTb[a]
877
    }
878
    var EMBTb = {};
879
880
    function EMBUb(a, b, c, d, e) {
0 ignored issues
show
Bug introduced by
The function EMBUb is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBUb = function() { /* ... */ }; instead.
Loading history...
881
        "number" == typeof e || EMBVb++;
882
        this.f = d || EMBl();
883
        this.r = a;
884
        this.e = b;
885
        this.d = c;
886
        delete this.b;
887
        delete this.a
888
    }
889
    EMBUb.prototype.b = EMBd;
890
    EMBUb.prototype.a = EMBd;
891
    var EMBVb = 0;
892
    EMBUb.prototype.getLevel = function() {
893
        return this.r
894
    };
895
896
    function EMBN(a) {
0 ignored issues
show
Bug introduced by
The function EMBN is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBN = function() { /* ... */ }; instead.
Loading history...
897
        this.f = a
898
    }
899
    EMBN.prototype.d = EMBd;
900
    EMBN.prototype.b = EMBd;
901
    EMBN.prototype.a = EMBd;
902
903
    function EMBWb(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBWb is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBWb = function() { /* ... */ }; instead.
Loading history...
904
        this.name = a;
905
        this.value = b
906
    }
907
    EMBWb.prototype.toString = function() {
908
        return this.name
909
    };
910
    var EMBXb = new EMBWb("SHOUT", 1200),
911
        EMBYb = new EMBWb("SEVERE", 1E3),
912
        EMBZb = new EMBWb("WARNING", 900),
913
        EMB_b = new EMBWb("INFO", 800),
914
        EMB0b = new EMBWb("CONFIG", 700);
915
    EMBN.prototype.getLevel = function() {
916
        return this.b
917
    };
918
919
    function EMB1b(a) {
0 ignored issues
show
Bug introduced by
The function EMB1b is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMB1b = function() { /* ... */ }; instead.
Loading history...
920
        return a.b ? a.b : a.d ? EMB1b(a.d) : EMBd
921
    }
922
    EMBN.prototype.log = function(a, b, c) {
923
        if (a.value >= EMB1b(this).value) {
924
            a = this.e(a, b, c);
925
            b = "log:" + a.e;
926
            EMBf.console && (EMBf.console.timeStamp ? EMBf.console.timeStamp(b) : EMBf.console.markTimeline && EMBf.console.markTimeline(b));
927
            EMBf.msWriteProfilerMark && EMBf.msWriteProfilerMark(b);
928
            for (b = this; b;) {
929
                var c = b,
930
                    d = a;
931
                if (c.a)
932
                    for (var e = 0, f = EMBb; f = c.a[e]; e++) f(d);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Unused Code introduced by
The assignment to variable f seems to be never used. Consider removing it.
Loading history...
933
                b = b.d
934
            }
935
        }
936
    };
937
    EMBN.prototype.e = function(a, b, c) {
938
        var d = new EMBUb(a, "" + b, this.f);
939
        if (c) {
940
            d.b = c;
941
            var e;
942
            var f = arguments.callee.caller;
943
            try {
944
                var g;
945
                var h = EMBg("window.location.href");
946
                if (EMBj(c)) g = {
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
947
                    message: c,
948
                    name: "Unknown error",
949
                    lineNumber: "Not available",
950
                    fileName: h,
951
                    stack: "Not available"
952
                };
953
                else {
954
                    var i, j, k = EMBe;
955
                    try {
956
                        i = c.lineNumber || c.Db || "Not available"
957
                    } catch (l) {
958
                        i = "Not available", k = EMBc
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
959
                    }
960
                    try {
961
                        j = c.fileName || c.filename || c.sourceURL || h
962
                    } catch (n) {
963
                        j = "Not available", k = EMBc
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
964
                    }
965
                    g = k || !c.lineNumber || !c.fileName || !c.stack ? {
966
                        message: c.message,
967
                        name: c.name,
968
                        lineNumber: i,
969
                        fileName: j,
970
                        stack: c.stack || "Not available"
971
                    } : c
972
                }
973
                e = "Message: " + EMBo(g.message) + '\nUrl: <a href="view-source:' + g.fileName + '" target="_new">' + g.fileName + "</a>\nLine: " + g.lineNumber + "\n\nBrowser stack:\n" + EMBo(g.stack + "-> ") + "[end]\n\nJS stack traversal:\n" + EMBo(EMBQb(f) + "-> ")
974
            } catch (m) {
975
                e = "Exception trying to expose exception! You win, we lose. " + m
976
            }
977
            d.a = e
978
        }
979
        return d
980
    };
981
    EMBN.prototype.info = function(a, b) {
982
        this.log(EMB_b, a, b)
983
    };
984
    var EMB2b = EMBd;
985
986
    function EMB3b() {
0 ignored issues
show
Bug introduced by
The function EMB3b is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMB3b = function() { /* ... */ }; instead.
Loading history...
987
        this.r = EMBk(this.e, this);
988
        this.a = new EMBKb;
989
        this.a.la = EMBe;
990
        this.b = this.a.ma = EMBe;
991
        this.d = "";
992
        this.f = {}
993
    }
994
    EMB3b.prototype.e = function(a) {
995
        if (!this.f[a.d]) {
996
            var b;
997
            b = this.a;
998
            var c = [];
999
            c.push(b.a, " ");
1000
            if (b.la) {
1001
                var d = new Date(a.f);
1002
                c.push("[", EMBM(d.getFullYear() - 2E3) + EMBM(d.getMonth() + 1) + EMBM(d.getDate()) + " " + EMBM(d.getHours()) + ":" + EMBM(d.getMinutes()) + ":" + EMBM(d.getSeconds()) + "." + EMBM(Math.floor(d.getMilliseconds() / 10)), "] ")
1003
            }
1004
            if (b.Pa) {
1005
                var d = (a.f - b.b.a) / 1E3,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable d already seems to be declared on line 1001. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
1006
                    e = d.toFixed(3),
1007
                    f = 0;
1008
                if (1 > d) f = 2;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1009
                else
1010
                    for (; 100 > d;) f++, d *= 10;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Complexity Coding Style introduced by
You seem to be assigning a new value to the loop variable f here. Please check if this was indeed your intention. Even if it was, consider using another kind of loop instead.
Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1011
                for (; 0 < f--;) e = " " + e;
0 ignored issues
show
Complexity Coding Style introduced by
You seem to be assigning a new value to the loop variable f here. Please check if this was indeed your intention. Even if it was, consider using another kind of loop instead.
Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1012
                c.push("[", e, "s] ")
1013
            }
1014
            b.Oa && c.push("[", a.d, "] ");
1015
            b.Qa && c.push("[", a.getLevel().name,
1016
                "] ");
1017
            c.push(a.e, "\n");
1018
            b.ma && a.b && c.push(a.a, "\n");
1019
            b = c.join("");
1020
            if (EMB4b) switch (a.getLevel()) {
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1021
                case EMBXb:
1022
                    EMB5b("info", b);
1023
                    break;
1024
                case EMBYb:
1025
                    EMB5b("error", b);
1026
                    break;
1027
                case EMBZb:
1028
                    EMB5b("warn", b);
1029
                    break;
1030
                default:
1031
                    EMB5b("debug", b)
1032
            } else window.opera ? window.opera.postError(b) : this.d += b
1033
        }
1034
    };
1035
    var EMB6b = EMBd,
1036
        EMB4b = window.console;
1037
1038
    function EMB5b(a, b) {
0 ignored issues
show
Bug introduced by
The function EMB5b is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMB5b = function() { /* ... */ }; instead.
Loading history...
1039
        var c = EMB4b;
1040
        if (c[a]) c[a](b);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1041
        else c.log(b)
1042
    };
1043
    var EMB7b = window.yt && window.yt.config_ || {};
1044
    EMBm("yt.config_", EMB7b);
1045
    var EMB8b = window.yt && window.yt.tokens_ || {};
1046
    EMBm("yt.tokens_", EMB8b);
1047
    EMBm("yt.globals_", window.yt && window.yt.globals_ || {});
1048
    var EMB9b = window.yt && window.yt.msgs_ || {};
1049
    EMBm("yt.msgs_", EMB9b);
1050
    var EMB$b = window.yt && window.yt.timeouts_ || [];
1051
    EMBm("yt.timeouts_", EMB$b);
1052
    EMBm("yt.intervals_", window.yt && window.yt.intervals_ || []);
1053
1054
    function EMBO(a) {
0 ignored issues
show
Bug introduced by
The function EMBO is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBO = function() { /* ... */ }; instead.
Loading history...
1055
        return a in EMB7b ? EMB7b[a] : EMBb
1056
    }
1057
1058
    function EMBac(a) {
0 ignored issues
show
Bug introduced by
The function EMBac is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBac = function() { /* ... */ }; instead.
Loading history...
Unused Code introduced by
The parameter a is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
1059
        EMBbc(EMB8b, arguments)
1060
    }
1061
1062
    function EMBcc() {
0 ignored issues
show
Bug introduced by
The function EMBcc is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBcc = function() { /* ... */ }; instead.
Loading history...
1063
        return "html5_ajax" in EMB8b ? EMB8b.html5_ajax : EMBb
1064
    }
1065
1066
    function EMBP(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBP is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBP = function() { /* ... */ }; instead.
Loading history...
1067
        var c = window.setTimeout(a, b);
1068
        EMB$b.push(c);
1069
        return c
1070
    }
1071
1072
    function EMBdc(a, b, c) {
0 ignored issues
show
Bug introduced by
The function EMBdc is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBdc = function() { /* ... */ }; instead.
Loading history...
1073
        var d = b || {};
1074
        if (a = a in EMB9b ? EMB9b[a] : c)
1075
            for (var e in d) a = a.replace(RegExp("\\$" + e, "gi"), function() {
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Complexity introduced by
A for in loop automatically includes the property of any prototype object, consider checking the key using hasOwnProperty.

When iterating over the keys of an object, this includes not only the keys of the object, but also keys contained in the prototype of that object. It is generally a best practice to check for these keys specifically:

var someObject;
for (var key in someObject) {
    if ( ! someObject.hasOwnProperty(key)) {
        continue; // Skip keys from the prototype.
    }

    doSomethingWith(key);
}
Loading history...
1076
                return d[e]
0 ignored issues
show
introduced by
The variable e is changed by the for-each loop on line 1075. Only the value of the last iteration will be visible in this function if it is called outside of the loop.
Loading history...
1077
            });
1078
        return a
1079
    }
1080
1081
    function EMBbc(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBbc is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBbc = function() { /* ... */ }; instead.
Loading history...
1082
        if (1 < b.length) {
1083
            var c = b[0];
1084
            a[c] = b[1]
1085
        } else {
1086
            var d = b[0];
1087
            for (c in d) a[c] = d[c]
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1088
        }
1089
    }
1090
    var EMBec = !!eval("/*@cc_on!@*/false");
0 ignored issues
show
Security Performance introduced by
Calls to eval are slow and potentially dangerous, especially on untrusted code. Please consider whether there is another way to achieve your goal.
Loading history...
1091
1092
    function EMBfc() {
0 ignored issues
show
Bug introduced by
The function EMBfc is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBfc = function() { /* ... */ }; instead.
Loading history...
1093
        this.source = EMBd;
1094
        this.origin = "*";
1095
        this.d = this.a = this.b = this.e = EMBd;
1096
        EMBK(window, "message", EMBk(this.f, this))
1097
    }
1098
    EMBfc.prototype.f = function(a) {
1099
        if (!("*" != EMBO("POST_MESSAGE_ORIGIN") && a.origin != EMBO("POST_MESSAGE_ORIGIN"))) switch (this.source = a.source, this.origin = "null" == a.origin ? this.origin : a.origin, a = JSON.parse(a.data), this.e = a.id, a.event) {
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1100
            case "listening":
1101
                this.a && (this.a(), this.a = EMBd);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1102
                break;
1103
            case "command":
1104
                this.b && (!this.d || 0 <= EMBq(this.d, a.func)) && this.b(a.func, a.args)
1105
        }
1106
    };
1107
1108
    function EMBQ(a) {
0 ignored issues
show
Bug introduced by
The function EMBQ is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBQ = function() { /* ... */ }; instead.
Loading history...
1109
        var b = EMBgc;
1110
        b.source && (a.id = b.e, b.source.postMessage(JSON.stringify(a), b.origin))
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1111
    };
1112
1113
    function EMBR(a) {
0 ignored issues
show
Bug introduced by
The function EMBR is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBR = function() { /* ... */ }; instead.
Loading history...
1114
        a = a || {};
1115
        this.url = a.url || this.url;
1116
        this.urlV8 = a.url_v8 || this.urlV8;
1117
        this.urlV9As2 = a.url_v9as2 || this.urlV9As2;
1118
        this.minVersion = a.min_version || this.minVersion;
1119
        this.args = a.args || EMBAa(EMBhc);
1120
        this.assets = a.assets || {};
1121
        this.attrs = a.attrs || EMBAa(EMBic);
1122
        this.params = a.params || EMBAa(EMBjc);
1123
        this.fallback = a.fallback || this.fallback;
1124
        this.fallbackMessage = a.fallbackMessage || this.fallbackMessage;
1125
        this.html5 = a.html5 || this.html5;
1126
        this.disable = a.disable || {}
1127
    }
1128
    var EMBhc = {
1129
            enablejsapi: 1
1130
        },
1131
        EMBic = {
1132
            width: "640",
1133
            height: "385"
1134
        },
1135
        EMBjc = {
1136
            allowscriptaccess: "always",
1137
            allowfullscreen: "true",
1138
            bgcolor: "#000000"
1139
        };
1140
    EMB = EMBR.prototype;
1141
    EMB.url = "";
1142
    EMB.urlV8 = "";
1143
    EMB.urlV9As2 = "";
1144
    EMB.minVersion = "8.0.0";
1145
    EMB.html5 = EMBe;
1146
1147
    function EMBkc() {};
0 ignored issues
show
Bug introduced by
The function EMBkc is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBkc = function() { /* ... */ }; instead.
Loading history...
1148
1149
    function EMBS() {
0 ignored issues
show
Bug introduced by
The function EMBS is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBS = function() { /* ... */ }; instead.
Loading history...
1150
        this.a = [];
1151
        this.l = {}
1152
    }
1153
    EMBn(EMBS, EMBkc);
1154
    EMB = EMBS.prototype;
1155
    EMB.qa = 1;
1156
    EMB.Q = 0;
1157
    EMB.ra = function(a, b, c) {
1158
        var d = this.l[a];
1159
        d || (d = this.l[a] = []);
1160
        var e = this.qa;
1161
        this.a[e] = a;
1162
        this.a[e + 1] = b;
1163
        this.a[e + 2] = c;
1164
        this.qa = e + 3;
1165
        d.push(e);
1166
        return e
1167
    };
1168
    EMB.ba = function(a) {
1169
        if (0 != this.Q) return this.b || (this.b = []), this.b.push(a), EMBe;
0 ignored issues
show
Best Practice introduced by
Comparing 0 to this.Q using the != operator is not safe. Consider using !== instead.
Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1170
        var b = this.a[a];
1171
        if (b) {
1172
            var c = this.l[b];
1173
            if (c) {
1174
                var d = EMBq(c, a);
1175
                0 <= d && EMBp.splice.call(c, d, 1)
1176
            }
1177
            delete this.a[a];
1178
            delete this.a[a + 1];
1179
            delete this.a[a + 2]
1180
        }
1181
        return !!b
1182
    };
1183
    EMB.Ca = function(a, b) {
1184
        var c = this.l[a];
1185
        if (c) {
1186
            this.Q++;
1187
            for (var d = EMBua(arguments, 1), e = 0, f = c.length; e < f; e++) {
1188
                var g = c[e];
1189
                this.a[g + 1].apply(this.a[g + 2], d)
1190
            }
1191
            this.Q--;
1192
            if (this.b && 0 == this.Q)
0 ignored issues
show
Best Practice introduced by
Comparing 0 to this.Q using the == operator is not safe. Consider using === instead.
Loading history...
1193
                for (; c = this.b.pop();) this.ba(c);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1194
            return 0 != e
0 ignored issues
show
Best Practice introduced by
Comparing 0 to e using the != operator is not safe. Consider using !== instead.
Loading history...
1195
        }
1196
        return EMBe
1197
    };
1198
    EMB.clear = function(a) {
1199
        if (a) {
1200
            var b = this.l[a];
1201
            b && (EMBr(b, this.ba, this), delete this.l[a])
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1202
        } else this.a.length = 0, this.l = {}
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1203
    };
1204
    EMB.I = function(a) {
1205
        if (a) {
1206
            var b = this.l[a];
1207
            return b ? b.length : 0
1208
        }
1209
        a = 0;
1210
        for (b in this.l) a += this.I(b);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1211
        return a
1212
    };
1213
1214
    function EMBlc(a) {
0 ignored issues
show
Bug introduced by
The function EMBlc is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBlc = function() { /* ... */ }; instead.
Loading history...
1215
        this.a = a
1216
    }
1217
    var EMBmc = /\s*;\s*/;
1218
1219
    function EMBnc(a, b, c, d, e, f) {
0 ignored issues
show
Bug introduced by
The function EMBnc is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBnc = function() { /* ... */ }; instead.
Loading history...
1220
        /[;=\s]/.test(b) && EMBa(Error('Invalid cookie name "' + b + '"'));
1221
        /[;\r\n]/.test(c) && EMBa(Error('Invalid cookie value "' + c + '"'));
1222
        EMBi(d) || (d = -1);
1223
        f = f ? ";domain=" + f : "";
1224
        e = e ? ";path=" + e : "";
1225
        d = 0 > d ? "" : 0 == d ? ";expires=" + (new Date(1970, 1, 1)).toUTCString() : ";expires=" + (new Date(EMBl() + 1E3 * d)).toUTCString();
0 ignored issues
show
Best Practice introduced by
Comparing 0 to d using the == operator is not safe. Consider using === instead.
Loading history...
1226
        a.a.cookie = b + "=" + c + f + e + d + ""
1227
    }
1228
    EMBlc.prototype.I = function() {
1229
        return !this.a.cookie ? 0 : (this.a.cookie || "").split(EMBmc).length
1230
    };
1231
    EMBlc.prototype.clear = function() {
1232
        for (var a = (this.a.cookie || "").split(EMBmc), b = [], c = [], d, e, f = 0; e = a[f]; f++) d = e.indexOf("="), -1 == d ? (b.push(""), c.push(e)) : (b.push(e.substring(0, d)), c.push(e.substring(d + 1)));
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1233
        for (a = b.length - 1; 0 <= a; a--) EMBnc(this, b[a], "", 0, EMBb, EMBb)
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1234
    };
1235
    var EMBoc = new EMBlc(document);
1236
    EMBoc.b = 3950;
1237
1238
    function EMBpc() {};
0 ignored issues
show
Bug introduced by
The function EMBpc is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBpc = function() { /* ... */ }; instead.
Loading history...
1239
1240
    function EMBqc() {}
0 ignored issues
show
Bug introduced by
The function EMBqc is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBqc = function() { /* ... */ }; instead.
Loading history...
1241
    EMBn(EMBqc, EMBpc);
1242
    EMBqc.prototype.I = function() {
1243
        var a = 0;
1244
        EMBOb(this.K(EMBc), function() {
1245
            a++
1246
        });
1247
        return a
1248
    };
1249
    EMBqc.prototype.clear = function() {
1250
        var a = EMBPb(this.K(EMBc)),
1251
            b = this;
1252
        EMBr(a, function(a) {
1253
            b.j.removeItem(a)
1254
        })
1255
    };
1256
1257
    function EMBrc(a) {
0 ignored issues
show
Bug introduced by
The function EMBrc is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBrc = function() { /* ... */ }; instead.
Loading history...
1258
        this.j = a
1259
    }
1260
    EMBn(EMBrc, EMBqc);
1261
    EMBrc.prototype.I = function() {
1262
        return this.j.length
1263
    };
1264
    EMBrc.prototype.K = function(a) {
1265
        var b = 0,
1266
            c = new EMBMb,
1267
            d = this;
1268
        c.next = function() {
1269
            b >= d.I() && EMBa(EMBLb);
1270
            var c;
1271
            c = d.j.key(b++);
1272
            if (a) return c;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1273
            c = d.j.getItem(c);
1274
            if (EMBj(c)) return c;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1275
            EMBa("Storage mechanism: Invalid value was encountered")
1276
        };
1 ignored issue
show
Best Practice introduced by
There is no return statement in this branch, but you do return something in other branches. Did you maybe miss it? If you do not want to return anything, consider adding return undefined; explicitly.
Loading history...
1277
        return c
1278
    };
1279
    EMBrc.prototype.clear = function() {
1280
        this.j.clear()
1281
    };
1282
1283
    function EMBsc() {
0 ignored issues
show
Bug introduced by
The function EMBsc is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBsc = function() { /* ... */ }; instead.
Loading history...
1284
        var a = EMBd;
0 ignored issues
show
Unused Code introduced by
The assignment to variable a seems to be never used. Consider removing it.
Loading history...
1285
        try {
1286
            a = window.localStorage || EMBd
1287
        } catch (b) {}
0 ignored issues
show
Coding Style Comprehensibility Best Practice introduced by
Empty catch clauses should be used with caution; consider adding a comment why this is needed.
Loading history...
1288
        this.j = a
1289
    }
1290
    EMBn(EMBsc, EMBrc);
1291
1292
    function EMBtc(a) {
0 ignored issues
show
Bug introduced by
The function EMBtc is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBtc = function() { /* ... */ }; instead.
Loading history...
1293
        a = "" + a;
1294
        if (/^\s*$/.test(a) ? 0 : /^[\],:{}\s\u2028\u2029]*$/.test(a.replace(/\\["\\\/bfnrtu]/g, "@").replace(/"[^"\\\n\r\u2028\u2029\x00-\x08\x10-\x1f\x80-\x9f]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]").replace(/(?:^|:|,)(?:[\s\u2028\u2029]*\[)+/g, ""))) try {
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1295
            return eval("(" + a + ")")
0 ignored issues
show
Security Performance introduced by
Calls to eval are slow and potentially dangerous, especially on untrusted code. Please consider whether there is another way to achieve your goal.
Loading history...
1296
        } catch (b) {}
0 ignored issues
show
Coding Style Comprehensibility Best Practice introduced by
Empty catch clauses should be used with caution; consider adding a comment why this is needed.
Loading history...
1297
        EMBa(Error("Invalid JSON string: " + a))
1298
    }
1 ignored issue
show
Best Practice introduced by
There is no return statement in this branch, but you do return something in other branches. Did you maybe miss it? If you do not want to return anything, consider adding return undefined; explicitly.
Loading history...
1299
1300
    function EMBuc(a) {
0 ignored issues
show
Bug introduced by
The function EMBuc is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBuc = function() { /* ... */ }; instead.
Loading history...
1301
        return eval("(" + a + ")")
0 ignored issues
show
Security Performance introduced by
Calls to eval are slow and potentially dangerous, especially on untrusted code. Please consider whether there is another way to achieve your goal.
Loading history...
1302
    }
1303
1304
    function EMBvc() {
0 ignored issues
show
Bug introduced by
The function EMBvc is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBvc = function() { /* ... */ }; instead.
Loading history...
1305
        this.a = EMBb
1306
    }
1307
1308
    function EMBwc(a, b, c) {
0 ignored issues
show
Bug introduced by
The function EMBwc is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBwc = function() { /* ... */ }; instead.
Loading history...
1309
        switch (typeof b) {
1310
            case "string":
1311
                EMBxc(b, c);
1312
                break;
1313
            case "number":
1314
                c.push(isFinite(b) && !isNaN(b) ? b : "null");
1315
                break;
1316
            case "boolean":
1317
                c.push(b);
1318
                break;
1319
            case "undefined":
1320
                c.push("null");
1321
                break;
1322
            case "object":
1323
                if (b == EMBd) {
1324
                    c.push("null");
1325
                    break
1326
                }
1327
                if (EMBba(b)) {
1328
                    var d = b.length;
1329
                    c.push("[");
1330
                    for (var e = "", f = 0; f < d; f++) c.push(e), e = b[f], EMBwc(a, a.a ? a.a.call(b, "" + f, e) : e, c), e = ",";
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1331
                    c.push("]");
1332
                    break
1333
                }
1334
                c.push("{");
1335
                d = "";
1336
                for (f in b) Object.prototype.hasOwnProperty.call(b, f) && (e = b[f], "function" != typeof e && (c.push(d), EMBxc(f,
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1337
                    c), c.push(":"), EMBwc(a, a.a ? a.a.call(b, f, e) : e, c), d = ","));
1338
                c.push("}");
1339
                break;
1340
            case "function":
1341
                break;
1342
            default:
1343
                EMBa(Error("Unknown type: " + typeof b))
1344
        }
1345
    }
1346
    var EMByc = {
1347
            '"': '\\"',
1348
            "\\": "\\\\",
1349
            "/": "\\/",
1350
            "\u0008": "\\b",
1351
            "\u000c": "\\f",
1352
            "\n": "\\n",
1353
            "\r": "\\r",
1354
            "\t": "\\t",
1355
            "\x0B": "\\u000b"
1356
        },
1357
        EMBzc = /\uffff/.test("\uffff") ? /[\\\"\x00-\x1f\x7f-\uffff]/g : /[\\\"\x00-\x1f\x7f-\xff]/g;
1358
1359
    function EMBxc(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBxc is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBxc = function() { /* ... */ }; instead.
Loading history...
1360
        b.push('"', a.replace(EMBzc, function(a) {
1361
            if (a in EMByc) return EMByc[a];
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1362
            var b = a.charCodeAt(0),
1363
                e = "\\u";
1364
            16 > b ? e += "000" : 256 > b ? e += "00" : 4096 > b && (e += "0");
1365
            return EMByc[a] = e + b.toString(16)
1366
        }), '"')
1367
    };
1368
1369
    function EMBAc(a) {
0 ignored issues
show
Bug introduced by
The function EMBAc is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBAc = function() { /* ... */ }; instead.
Loading history...
1370
        this.a = a;
1371
        this.b = new EMBvc
1372
    }
1373
    EMBAc.prototype.a = EMBd;
1374
    EMBAc.prototype.b = EMBd;
1375
1376
    function EMBBc() {
0 ignored issues
show
Bug introduced by
The function EMBBc is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBBc = function() { /* ... */ }; instead.
Loading history...
1377
        var a = new EMBsc,
1378
            b;
1379
        if (b = a) a: {
0 ignored issues
show
Comprehensibility Best Practice introduced by
The name a is already used for a variable on line 1377. Please consider using another name to prevent misunderstandings.
Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1380
            try {
1381
                b = !!a.j && !!a.j.getItem;
1382
                break a
1383
            } catch (c) {}
0 ignored issues
show
Coding Style Comprehensibility Best Practice introduced by
Empty catch clauses should be used with caution; consider adding a comment why this is needed.
Loading history...
1384
            b = EMBe
1385
        }
1386
        b && (this.a = new EMBAc(a))
1387
    }
1388
    EMBBc.prototype.a = EMBd;
1389
1390
    function EMBCc(a) {
0 ignored issues
show
Bug introduced by
The function EMBCc is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBCc = function() { /* ... */ }; instead.
Loading history...
1391
        var b = {
1392
            volume: 100,
1393
            muted: EMBe,
1394
            nonNormalized: 100
1395
        };
1396
        if (a.a) {
1397
            var c = {};
1398
            try {
1399
                var d;
1400
                var e;
1401
                var f = a.a.a.j.getItem("yt-player-volume");
1402
                EMBj(f) || f === EMBd ? e = f : EMBa("Storage mechanism: Invalid value was encountered");
1403
                if (e !== EMBd) try {
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Bug introduced by
The variable e seems to not be initialized for all possible execution paths.
Loading history...
1404
                    d = EMBtc(e)
1405
                } catch (g) {
1406
                    EMBa("Storage: Invalid value was encountered")
1407
                }
1408
                c = d || {}
1409
            } catch (h) {
1410
                a.a.a.j.removeItem("yt-player-volume")
1411
            }
1412
            b.volume = isNaN(c.volume) ? 100 : Math.min(Math.max(c.volume, 0), 100);
1413
            b.nonNormalized = isNaN(c.nonNormalized) ? b.volume : c.nonNormalized;
1414
            b.muted = c.muted ==
1415
                EMBb ? EMBe : c.muted
1416
        }
1417
        return b
1418
    };
1419
1420
    function EMBT(a, b, c, d) {
0 ignored issues
show
Bug introduced by
The function EMBT is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBT = function() { /* ... */ }; instead.
Loading history...
1421
        this.top = a;
1422
        this.right = b;
1423
        this.bottom = c;
1424
        this.left = d
1425
    }
1426
    EMBT.prototype.a = function() {
1427
        return new EMBT(this.top, this.right, this.bottom, this.left)
1428
    };
1429
1430
    function EMBDc(a, b, c, d) {
0 ignored issues
show
Bug introduced by
The function EMBDc is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBDc = function() { /* ... */ }; instead.
Loading history...
1431
        this.left = a;
1432
        this.top = b;
1433
        this.width = c;
1434
        this.height = d
1435
    }
1436
    EMBDc.prototype.a = function() {
1437
        return new EMBDc(this.left, this.top, this.width, this.height)
1438
    };
1439
1440
    function EMBEc(a, b, c) {
0 ignored issues
show
Bug introduced by
The function EMBEc is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBEc = function() { /* ... */ }; instead.
Loading history...
1441
        EMBj(b) ? EMBFc(a, c, b) : EMBwa(b, EMBia(EMBFc, a))
1442
    }
1443
1444
    function EMBFc(a, b, c) {
0 ignored issues
show
Bug introduced by
The function EMBFc is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBFc = function() { /* ... */ }; instead.
Loading history...
1445
        a.style[EMBpa(c)] = b
1446
    }
1447
1448
    function EMBU(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBU is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBU = function() { /* ... */ }; instead.
Loading history...
1449
        var c = EMBD(a);
1450
        return c.defaultView && c.defaultView.getComputedStyle && (c = c.defaultView.getComputedStyle(a, EMBd)) ? c[b] || c.getPropertyValue(b) || "" : ""
1451
    }
1452
1453
    function EMBV(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBV is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBV = function() { /* ... */ }; instead.
Loading history...
1454
        return a.currentStyle ? a.currentStyle[b] : EMBd
1455
    }
1456
1457
    function EMBW(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBW is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBW = function() { /* ... */ }; instead.
Loading history...
1458
        return EMBU(a, b) || EMBV(a, b) || a.style && a.style[b]
1459
    }
1460
1461
    function EMBGc(a) {
0 ignored issues
show
Bug introduced by
The function EMBGc is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBGc = function() { /* ... */ }; instead.
Loading history...
1462
        if (EMBOa && EMBx) {
1463
            var b = a.ownerDocument.defaultView;
1464
            if (b != b.top) return EMBe
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1465
        }
1466
        return !!a.getBoundingClientRect
1467
    }
1468
1469
    function EMBHc(a) {
0 ignored issues
show
Bug introduced by
The function EMBHc is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBHc = function() { /* ... */ }; instead.
Loading history...
1470
        var b = a.getBoundingClientRect();
1471
        EMBv && (a = a.ownerDocument, b.left -= a.documentElement.clientLeft + a.body.clientLeft, b.top -= a.documentElement.clientTop + a.body.clientTop);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1472
        return b
1473
    }
1474
1475
    function EMBIc(a) {
0 ignored issues
show
Bug introduced by
The function EMBIc is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBIc = function() { /* ... */ }; instead.
Loading history...
1476
        if (EMBv && !EMB1a(8)) return a.offsetParent;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1477
        for (var b = EMBD(a), c = EMBW(a, "position"), d = "fixed" == c || "absolute" == c, a = a.parentNode; a && a != b; a = a.parentNode)
1478
            if (c = EMBW(a, "position"), d = d && "static" == c && a != b.documentElement && a != b.body, !d && (a.scrollWidth > a.clientWidth || a.scrollHeight > a.clientHeight || "fixed" == c || "absolute" == c || "relative" == c)) return a;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1479
        return EMBd
1480
    }
1481
1482
    function EMBX(a) {
0 ignored issues
show
Bug introduced by
The function EMBX is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBX = function() { /* ... */ }; instead.
Loading history...
1483
        var b, c = EMBD(a),
1484
            d = EMBW(a, "position"),
1485
            e = EMBw && c.getBoxObjectFor && !a.getBoundingClientRect && "absolute" == d && (b = c.getBoxObjectFor(a)) && (0 > b.screenX || 0 > b.screenY),
1486
            f = new EMBs(0, 0),
1487
            g;
1488
        b = c ? EMBD(c) : document;
1489
        g = EMBv && !EMB1a(9) && !EMBqb(EMBC(b)) ? b.body : b.documentElement;
1490
        if (a == g) return f;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1491
        if (EMBGc(a)) b = EMBHc(a), a = EMBrb(EMBC(c)), f.x = b.left + a.x, f.y = b.top + a.y;
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1492
        else if (c.getBoxObjectFor && !e) b = c.getBoxObjectFor(a), a = c.getBoxObjectFor(g), f.x = b.screenX - a.screenX, f.y = b.screenY - a.screenY;
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1493
        else {
1494
            b = a;
1495
            do {
1496
                f.x +=
1497
                    b.offsetLeft;
1498
                f.y += b.offsetTop;
1499
                b != a && (f.x += b.clientLeft || 0, f.y += b.clientTop || 0);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1500
                if (EMBx && "fixed" == EMBW(b, "position")) {
1501
                    f.x += c.body.scrollLeft;
1502
                    f.y += c.body.scrollTop;
1503
                    break
1504
                }
1505
                b = b.offsetParent
1506
            } while (b && b != a);
1507
            if (EMBNa || EMBx && "absolute" == d) f.y -= c.body.offsetTop;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1508
            for (b = a;
1509
                (b = EMBIc(b)) && b != c.body && b != g;)
1510
                if (f.x -= b.scrollLeft, !EMBNa || "TR" != b.tagName) f.y -= b.scrollTop
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1511
        }
1512
        return f
1513
    }
1514
1515
    function EMBJc(a) {
0 ignored issues
show
Bug introduced by
The function EMBJc is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBJc = function() { /* ... */ }; instead.
Loading history...
1516
        var b = new EMBs;
1517
        if (1 == a.nodeType)
0 ignored issues
show
Best Practice introduced by
Comparing 1 to a.nodeType using the == operator is not safe. Consider using === instead.
Loading history...
1518
            if (EMBGc(a)) a = EMBHc(a), b.x = a.left, b.y = a.top;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1519
            else {
1520
                var c = EMBrb(EMBC(a)),
1521
                    a = EMBX(a);
1522
                b.x = a.x - c.x;
1523
                b.y = a.y - c.y
1524
            }
1525
        else {
1526
            var c = "function" == EMBaa(a.b),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable c already seems to be declared on line 1520. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
1527
                d = a;
1528
            a.targetTouches ? d = a.targetTouches[0] : c && a.a.targetTouches && (d = a.a.targetTouches[0]);
1529
            b.x = d.clientX;
1530
            b.y = d.clientY
1531
        }
1532
        return b
1533
    }
1534
1535
    function EMBKc(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBKc is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBKc = function() { /* ... */ }; instead.
Loading history...
1536
        "number" == typeof a && (a = (b ? Math.round(a) : a) + "px");
1537
        return a
1538
    }
1539
1540
    function EMBY(a) {
0 ignored issues
show
Bug introduced by
The function EMBY is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBY = function() { /* ... */ }; instead.
Loading history...
1541
        if ("none" != EMBW(a, "display")) return EMBLc(a);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1542
        var b = a.style,
1543
            c = b.display,
1544
            d = b.visibility,
1545
            e = b.position;
1546
        b.visibility = "hidden";
1547
        b.position = "absolute";
1548
        b.display = "inline";
1549
        a = EMBLc(a);
1550
        b.display = c;
1551
        b.position = e;
1552
        b.visibility = d;
1553
        return a
1554
    }
1555
1556
    function EMBLc(a) {
0 ignored issues
show
Bug introduced by
The function EMBLc is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBLc = function() { /* ... */ }; instead.
Loading history...
1557
        var b = a.offsetWidth,
1558
            c = a.offsetHeight,
1559
            d = EMBx && !b && !c;
1560
        return (!EMBi(b) || d) && a.getBoundingClientRect ? (a = EMBHc(a), new EMBt(a.right - a.left, a.bottom - a.top)) : new EMBt(b, c)
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1561
    }
1562
1563
    function EMBMc(a) {
0 ignored issues
show
Bug introduced by
The function EMBMc is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBMc = function() { /* ... */ }; instead.
Loading history...
1564
        var b = EMBX(a),
1565
            a = EMBY(a);
1566
        return new EMBDc(b.x, b.y, a.width, a.height)
1567
    }
1568
1569
    function EMBNc(a) {
0 ignored issues
show
Bug introduced by
The function EMBNc is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBNc = function() { /* ... */ }; instead.
Loading history...
1570
        return "rtl" == EMBW(a, "direction")
1571
    }
1572
1573
    function EMBOc(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBOc is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBOc = function() { /* ... */ }; instead.
Loading history...
1574
        if (/^\d+px?$/.test(b)) return parseInt(b, 10);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1575
        var c = a.style.left,
1576
            d = a.runtimeStyle.left;
1577
        a.runtimeStyle.left = a.currentStyle.left;
1578
        a.style.left = b;
1579
        var e = a.style.pixelLeft;
1580
        a.style.left = c;
1581
        a.runtimeStyle.left = d;
1582
        return e
1583
    }
1584
    var EMBPc = {
1585
        thin: 2,
1586
        medium: 4,
1587
        thick: 6
1588
    };
1589
1590
    function EMBQc(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBQc is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBQc = function() { /* ... */ }; instead.
Loading history...
1591
        if ("none" == EMBV(a, b + "Style")) return 0;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1592
        var c = EMBV(a, b + "Width");
1593
        return c in EMBPc ? EMBPc[c] : EMBOc(a, c)
1594
    };
1595
1596
    function EMBRc(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBRc is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBRc = function() { /* ... */ }; instead.
Loading history...
1597
        if ((a = EMBE(a)) && a.style) a.style.display = b ? "" : "none", EMB7a(a, "hid", !b)
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1598
    }
1599
1600
    function EMBSc(a) {
0 ignored issues
show
Bug introduced by
The function EMBSc is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBSc = function() { /* ... */ }; instead.
Loading history...
1601
        a = EMBE(a);
1602
        return !a ? EMBe : !("none" == a.style.display || EMBB(a, "hid"))
1603
    }
1604
1605
    function EMBTc(a) {
0 ignored issues
show
Bug introduced by
The function EMBTc is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBTc = function() { /* ... */ }; instead.
Loading history...
1606
        if (a = EMBE(a)) EMBSc(a) ? (a.style.display = "none", EMBz(a, "hid")) : (a.style.display = "", EMBA(a, "hid"))
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1607
    }
1608
1609
    function EMBUc(a) {
0 ignored issues
show
Bug introduced by
The function EMBUc is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBUc = function() { /* ... */ }; instead.
Loading history...
1610
        EMBr(arguments, function(a) {
1611
            EMBRc(a, EMBc)
1612
        })
1613
    }
1614
1615
    function EMBZ(a) {
0 ignored issues
show
Bug introduced by
The function EMBZ is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBZ = function() { /* ... */ }; instead.
Loading history...
1616
        EMBr(arguments, function(a) {
1617
            EMBRc(a, EMBe)
1618
        })
1619
    };
1620
    var EMBVc = {},
1621
        EMBWc = 0;
1622
1623
    function EMBXc(a) {
0 ignored issues
show
Bug introduced by
The function EMBXc is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBXc = function() { /* ... */ }; instead.
Loading history...
1624
        var b = new Image,
0 ignored issues
show
Bug introduced by
The variable Image seems to be never declared. If this is a global, consider adding a /** global: Image */ comment.

This checks looks for references to variables that have not been declared. This is most likey a typographical error or a variable has been renamed.

To learn more about declaring variables in Javascript, see the MDN.

Loading history...
1625
            c = "" + EMBWc++;
1626
        EMBVc[c] = b;
1627
        b.onload = b.onerror = function() {
1628
            delete EMBVc[c]
1629
        };
1630
        b.src = a;
1631
        b = eval("null")
0 ignored issues
show
Security Performance introduced by
Calls to eval are slow and potentially dangerous, especially on untrusted code. Please consider whether there is another way to achieve your goal.
Loading history...
Unused Code introduced by
The assignment to variable b seems to be never used. Consider removing it.
Loading history...
1632
    };
1633
    var EMB_ = EMBg("yt.timing") || {};
1634
    EMBm("yt.timing", EMB_);
1635
    EMB_.Bd = 0;
1636
    EMB_.zd = 0;
1637
    EMB_.Ab = function() {
1638
        var a = EMB_.timer || {};
1639
        a.ol = EMBl();
1640
        EMB_.timer = a
1641
    };
1642
    EMB_.info = function(a, b) {
1643
        var c = EMB_.info_args || {};
1644
        c[a] = b;
1645
        EMB_.info_args = c
1646
    };
1647
    EMB_.ha = function() {
1648
        var a = EMBO("TIMING_ACTION"),
1649
            b = EMB_.timer || {},
1650
            c = EMB_.info_args || {},
1651
            d = b.start,
1652
            e = "",
1653
            f = [],
1654
            g = [];
1655
        delete b.start;
1656
        EMB_.srt && (e = "&srt=" + EMB_.srt);
1657
        b.aft && b.plev && (b.aft = Math.min(b.aft, b.plev));
1658
        for (var h in b) f.push(h + "." + Math.round(b[h] - d));
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Complexity introduced by
A for in loop automatically includes the property of any prototype object, consider checking the key using hasOwnProperty.

When iterating over the keys of an object, this includes not only the keys of the object, but also keys contained in the prototype of that object. It is generally a best practice to check for these keys specifically:

var someObject;
for (var key in someObject) {
    if ( ! someObject.hasOwnProperty(key)) {
        continue; // Skip keys from the prototype.
    }

    doSomethingWith(key);
}
Loading history...
1659
        for (h in c) g.push(h + "=" + c[h]);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1660
        b.vr && b.gv && f.push("vl." + Math.round(b.vr - b.gv));
1661
        !b.aft && b.vr && b.cl ? b.cl > b.vr ? f.push("aft." + Math.round(b.cl - d)) : f.push("aft." + Math.round(b.vr - d)) : !b.aft && b.vr ? f.push("aft." + Math.round(b.vr - d)) : b.aft || f.push("aft." + Math.round(b.ol -
1662
            d));
1663
        EMBXc(["https:" == window.location.protocol ? "http://web.archive.org/web/20120609184921/https://gg.google.com/csi" : "http://web.archive.org/web/20120609184921/http://csi.gstatic.com/csi", "?v=2&s=youtube&action=", a, e, "&", g.join("&"), "&rt=", f.join(",")].join(""))
1664
    };
1665
    EMB_.vb = function() {
1666
        var a = EMBO("TIMING_ACTION"),
1667
            b = EMB_.timer || {};
1668
        a && b.start && (EMB_.wff && -1 != a.indexOf("ajax") && b.vr && b.cl ? EMB_.ha() : EMB_.wff && -1 == a.indexOf("ajax") && b.vr ? EMB_.ha() : !EMB_.wff && (b.ol || b.aft) && EMB_.ha())
1669
    };
1670
    EMB_.Bb = function() {
1671
        EMB_.Ab();
1672
        EMB_.vb()
1673
    };
1674
1675
    function EMBYc(a, b, c, d, e, f, g) {
0 ignored issues
show
Bug introduced by
The function EMBYc is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBYc = function() { /* ... */ }; instead.
Loading history...
1676
        var h = [];
1677
        a && h.push(a, ":");
1678
        c && (h.push("//"), b && h.push(b, "@"), h.push(c), d && h.push(":", d));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1679
        e && h.push(e);
1680
        f && h.push("?", f);
1681
        g && h.push("#", g);
1682
        return h.join("")
1683
    }
1684
    var EMBZc = RegExp("^(?:([^:/?#.]+):)?(?://(?:([^/?#]*)@)?([\\w\\d\\-\\u0100-\\uffff.%]*)(?::([0-9]+))?)?([^?#]+)?(?:\\?([^#]*))?(?:#(.*))?$");
1685
1686
    function EMB_c(a) {
0 ignored issues
show
Bug introduced by
The function EMB_c is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMB_c = function() { /* ... */ }; instead.
Loading history...
1687
        if (EMB0c) {
1688
            EMB0c = EMBe;
1689
            var b = EMBf.location;
1690
            if (b) {
1691
                var c = b.href;
1692
                if (c && (c = (c = EMB_c(c)[3] || EMBd) && decodeURIComponent(c)) && c != b.hostname) EMB0c = EMBc, EMBa(Error())
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1693
            }
1694
        }
1695
        return a.match(EMBZc)
1696
    }
1697
    var EMB0c = EMBx;
1698
1699
    function EMB1c() {
0 ignored issues
show
Bug introduced by
The function EMB1c is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMB1c = function() { /* ... */ }; instead.
Loading history...
1700
        var a = EMB_c(document.location.href);
1701
        return EMBYc(a[1], a[2], a[3], a[4])
1702
    }
1703
1704
    function EMB2c(a) {
0 ignored issues
show
Bug introduced by
The function EMB2c is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMB2c = function() { /* ... */ }; instead.
Loading history...
1705
        a = EMB_c(a);
1706
        return EMBYc(EMBd, EMBd, EMBd, EMBd, a[5], a[6], a[7])
1707
    }
1708
1709 View Code Duplication
    function EMB3c(a) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
Bug introduced by
The function EMB3c is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMB3c = function() { /* ... */ }; instead.
Loading history...
1710
        if (a[1]) {
1711
            var b = a[0],
1712
                c = b.indexOf("#");
1713
            0 <= c && (a.push(b.substr(c)), a[0] = b = b.substr(0, c));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1714
            c = b.indexOf("?");
1715
            0 > c ? a[1] = "?" : c == b.length - 1 && (a[1] = EMBb)
1716
        }
1717
        return a.join("")
1718
    }
1719
1720
    function EMB4c(a, b, c) {
0 ignored issues
show
Bug introduced by
The function EMB4c is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMB4c = function() { /* ... */ }; instead.
Loading history...
1721
        if (EMBba(b))
1722
            for (var d = 0; d < b.length; d++) EMB4c(a, "" + b[d], c);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1723
        else b != EMBd && c.push("&", a, "" === b ? "" : "=", encodeURIComponent("" + b))
1724
    }
1725
1726
    function EMB5c(a, b) {
0 ignored issues
show
Bug introduced by
The function EMB5c is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMB5c = function() { /* ... */ }; instead.
Loading history...
1727
        for (var c in b) EMB4c(c, b[c], a);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Complexity introduced by
A for in loop automatically includes the property of any prototype object, consider checking the key using hasOwnProperty.

When iterating over the keys of an object, this includes not only the keys of the object, but also keys contained in the prototype of that object. It is generally a best practice to check for these keys specifically:

var someObject;
for (var key in someObject) {
    if ( ! someObject.hasOwnProperty(key)) {
        continue; // Skip keys from the prototype.
    }

    doSomethingWith(key);
}
Loading history...
1728
        return a
1729
    };
1730
1731
    function EMB6c(a) {
0 ignored issues
show
Bug introduced by
The function EMB6c is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMB6c = function() { /* ... */ }; instead.
Loading history...
1732
        "?" == a.charAt(0) && (a = a.substr(1));
1733
        for (var a = a.split("&"), b = {}, c = 0, d = a.length; c < d; c++) {
1734
            var e = a[c].split("=");
1735
            if (1 == e.length && e[0] || 2 == e.length) {
0 ignored issues
show
Best Practice introduced by
Comparing 1 to e.length using the == operator is not safe. Consider using === instead.
Loading history...
1736
                var f = e[0],
1737
                    e = decodeURIComponent((e[1] || "").replace(/\+/g, " "));
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable e already seems to be declared on line 1734. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
1738
                f in b ? EMBba(b[f]) ? EMBsa(b[f], e) : b[f] = [b[f], e] : b[f] = e
1739
            }
1740
        }
1741
        return b
1742
    }
1743
1744
    function EMB7c(a) {
0 ignored issues
show
Bug introduced by
The function EMB7c is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMB7c = function() { /* ... */ }; instead.
Loading history...
1745
        "#" == a.charAt(0) && (a = "!" == a.charAt(1) ? a.substr(2) : a.substr(1));
1746
        return EMB6c(a)
1747
    }
1748
1749
    function EMB8c(a) {
0 ignored issues
show
Bug introduced by
The function EMB8c is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMB8c = function() { /* ... */ }; instead.
Loading history...
1750
        a = EMB5c([], a);
1751
        a[0] = "";
1752
        return a.join("")
1753
    }
1754
1755
    function EMB9c(a, b) {
0 ignored issues
show
Bug introduced by
The function EMB9c is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMB9c = function() { /* ... */ }; instead.
Loading history...
1756
        var c = a.split("?", 2),
1757
            a = c[0],
1758
            c = EMB6c(c[1] || ""),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable c already seems to be declared on line 1756. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
1759
            d;
1760
        for (d in b) c[d] = b[d];
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1761
        return EMB3c(EMB5c([a], c))
1762
    };
1763
1764
    function EMB$c(a) {
0 ignored issues
show
Bug introduced by
The function EMB$c is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMB$c = function() { /* ... */ }; instead.
Loading history...
1765
        var b = EMBad;
1766
        if ("view" == a && b.convViewUrl) return b.convViewUrl;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1767
        if (!b.baseUrl || !b.uid) return EMBd;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1768
        var c = b.rmktEnabled && b.vid,
1769
            d = b.focEnabled;
1770
        if (!c && !d) return EMBd;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1771
        var e = {
1772
            label: d ? "followon_" + a : "default"
1773
        };
1774
        if (c) {
1775
            c = {
1776
                utvid: b.vid,
1777
                utuid: b.uid,
1778
                type: a
1779
            };
1780
            b.eventLabel && (c.el = b.eventLabel);
1781
            b.playerStyle && (c.ps = b.playerStyle);
1782
            var f = [],
1783
                g;
1784
            for (g in c) f.push(encodeURIComponent(g) + "=" + encodeURIComponent(c[g]));
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1785
            e.data = f.join(";")
1786
        }
1787
        if (d && "view" == a && b.vid && b.uid && (b.oeid || b.ieid)) b.oeid && (e.oeid = b.oeid), b.ieid &&
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1788
            (e.ieid = b.ieid), e.evid = b.vid;
1789
        d && (e.foc_id = b.uid);
1790
        return EMB3c(EMB5c([b.baseUrl], e))
1791
    }
1792
1793
    function EMBbd(a) {
0 ignored issues
show
Bug introduced by
The function EMBbd is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBbd = function() { /* ... */ }; instead.
Loading history...
1794
        (a = EMB$c(a)) && EMBXc(a)
1795
    }
1796
    var EMBad = EMBd;
1797
1798
    function EMBcd(a, b, c, d) {
0 ignored issues
show
Bug introduced by
The function EMBcd is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBcd = function() { /* ... */ }; instead.
Loading history...
1799
        a = EMB3c(EMB5c(["/sharing_services"], {
1800
            name: a,
1801
            v: b,
1802
            locale: c,
1803
            feature: d
1804
        }));
1805
        EMBXc(a)
1806
    };
1807
1808 View Code Duplication
    function EMBdd(a, b) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
Bug introduced by
The function EMBdd is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBdd = function() { /* ... */ }; instead.
Loading history...
1809
        var c = b || {};
1810
        c.target = c.target || a.target || "YouTube";
1811
        c.width = c.width || 600;
1812
        c.height = c.height || 600;
1813
        var d = c;
1814
        d || (d = {});
1815
        var e = window,
1816
            c = "undefined" != typeof a.href ? a.href : "" + a,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable c already seems to be declared on line 1809. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
1817
            f = d.target || a.target,
1818
            g = [],
1819
            h;
1820
        for (h in d) switch (h) {
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1821
            case "width":
1822
            case "height":
1823
            case "top":
1824
            case "left":
1825
                g.push(h + "=" + d[h]);
1826
                break;
1827
            case "target":
1828
            case "noreferrer":
1829
                break;
1830
            default:
1831
                g.push(h + "=" + (d[h] ? 1 : 0))
1832
        }
1833
        h = g.join(",");
1834
        if (d.noreferrer) {
1835
            if (d = e.open("", f, h)) EMBv && -1 != c.indexOf(";") && (c = "'" + c.replace(/'/g, "%27") + "'"), d.opener =
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1836
                EMBd, EMBx ? d.location.href = c : (c = EMBo(c), d.document.write('<META HTTP-EQUIV="refresh" content="0; url=' + c + '">'), d.document.close())
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1837
        } else d = e.open(c, f, h);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1838
        c = d;
1839
        if (!c) return EMBc;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1840
        c.opener || (c.opener = window);
1841
        c.focus();
1842
        return EMBe
1843
    };
1844
1845
    function EMB0() {
0 ignored issues
show
Bug introduced by
The function EMB0 is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMB0 = function() { /* ... */ }; instead.
Loading history...
1846
        var a;
1847
        a = this.a;
1848
        a = "" + a;
1849
        a: {
0 ignored issues
show
Comprehensibility Best Practice introduced by
The name a is already used for a variable on line 1846. Please consider using another name to prevent misunderstandings.
Loading history...
1850
            for (var b = a + "=", c = (EMBoc.a.cookie || "").split(EMBmc), d = 0, e; e = c[d]; d++) {
1851
                if (0 == e.indexOf(b)) {
0 ignored issues
show
Best Practice introduced by
Comparing 0 to e.indexOf(b) using the == operator is not safe. Consider using === instead.
Loading history...
1852
                    a = e.substr(b.length);
1853
                    break a
1854
                }
1855
                if (e == a) {
1856
                    a = "";
1857
                    break a
1858
                }
1859
            }
1860
            a = EMBb
1861
        }
1862
        if (a) {
1863
            a = unescape(a).split("&");
1864
            for (b = 0; b < a.length; b++) d = a[b].split("="), c = d[0], (d = d[1]) && (EMB1[c] = d.toString())
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Complexity Coding Style introduced by
You seem to be assigning a new value to the loop variable d here. Please check if this was indeed your intention. Even if it was, consider using another kind of loop instead.
Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1865
        }
1866
    }
1867
    EMBh(EMB0);
1868
    var EMB1 = EMBg("yt.prefs.UserPrefs.prefs_") || {};
1869
    EMBm("yt.prefs.UserPrefs.prefs_", EMB1);
1870
    EMB0.prototype.a = "PREF";
1871
1872
    function EMBed(a) {
0 ignored issues
show
Bug introduced by
The function EMBed is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBed = function() { /* ... */ }; instead.
Loading history...
1873
        a == EMBd && EMBa("ExpectedNotNull")
1874
    }
1875
1876
    function EMBfd(a) {
0 ignored issues
show
Bug introduced by
The function EMBfd is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBfd = function() { /* ... */ }; instead.
Loading history...
1877
        /^\w+$/.test(a) || EMBa("ExpectedRegexMismatch: " + a);
1878
        /^f([1-9][0-9]*)$/.test(a) && EMBa("ExpectedRegexMatch: " + a)
1879
    }
1880
1881
    function EMBgd(a) {
0 ignored issues
show
Bug introduced by
The function EMBgd is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBgd = function() { /* ... */ }; instead.
Loading history...
1882
        a = EMB1[a] !== EMBb ? EMB1[a].toString() : EMBd;
1883
        return a != EMBd && /^[A-Fa-f0-9]+$/.test(a) ? parseInt(a, 16) : EMBd
1884
    }
1885
1886
    function EMBhd(a) {
0 ignored issues
show
Bug introduced by
The function EMBhd is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBhd = function() { /* ... */ }; instead.
Loading history...
1887
        return !!((EMBgd("f" + (Math.floor(a / 31) + 1)) || 0) & 1 << a % 31)
1888
    }
1889
1890
    function EMBid(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBid is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBid = function() { /* ... */ }; instead.
Loading history...
1891
        var c = "f" + (Math.floor(a / 31) + 1),
1892
            d = 1 << a % 31,
1893
            e = EMBgd(c) || 0,
1894
            e = b ? e | d : e & ~d;
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable e already seems to be declared on line 1893. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
1895
        0 == e ? delete EMB1[c] : (d = e.toString(16), EMB1[c] = d.toString())
0 ignored issues
show
Best Practice introduced by
Comparing 0 to e using the == operator is not safe. Consider using === instead.
Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
1896
    }
1897
1898
    function EMBjd(a) {
0 ignored issues
show
Bug introduced by
The function EMBjd is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBjd = function() { /* ... */ }; instead.
Loading history...
1899
        var a = a.a,
1900
            b, c = [];
1901
        for (b in EMB1) c.push(b + "=" + escape(EMB1[b]));
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
1902
        b = c.join("&");
1903
        EMBnc(EMBoc, "" + a, b, 31536E4, "/", "youtube.com")
1904
    }
1905
    EMB0.prototype.clear = function() {
1906
        EMB1 = {}
1907
    };
1908
    var EMBkd = {
1909
        Sc: 0,
1910
        Tb: 1,
1911
        ta: 2,
1912
        vc: 3,
1913
        Ub: 4,
1914
        sd: 5,
1915
        ud: 6,
1916
        rd: 7,
1917
        pd: 8,
1918
        qd: 9,
1919
        td: 10,
1920
        od: 11,
1921
        Zc: 12,
1922
        Yc: 13,
1923
        Xc: 14,
1924
        kc: 15,
1925
        Ic: 16,
1926
        Lc: 17,
1927
        Mc: 18,
1928
        Kc: 19,
1929
        Jc: 20,
1930
        $c: 21,
1931
        Xb: 22,
1932
        nd: 23,
1933
        Wb: 24,
1934
        Fb: 25,
1935
        Yb: 26,
1936
        ic: 27,
1937
        Vc: 28,
1938
        Vb: 29,
1939
        Uc: 30,
1940
        jd: 31,
1941
        fd: 32,
1942
        fc: 33,
1943
        dd: 34,
1944
        ad: 35,
1945
        bd: 36,
1946
        cd: 37,
1947
        ed: 38,
1948
        wc: 39,
1949
        Pc: 40,
1950
        Gb: 41,
1951
        Oc: 42,
1952
        Ib: 43,
1953
        sa: 44,
1954
        $b: 45,
1955
        Fc: 46,
1956
        kd: 47,
1957
        vd: 48,
1958
        wd: 49,
1959
        yd: 50,
1960
        Wc: 51,
1961
        Ob: 52,
1962
        Qb: 53,
1963
        Gc: 54,
1964
        rc: 55,
1965
        Zb: 56,
1966
        Tc: 57,
1967
        Qc: 58,
1968
        hc: 59,
1969
        Cc: 60,
1970
        sc: 61,
1971
        xc: 62,
1972
        Hb: 63,
1973
        md: 64,
1974
        Lb: 65,
1975
        Kb: 66,
1976
        yc: 67,
1977
        Sb: 68,
1978
        bc: 69,
1979
        lc: 70,
1980
        Dc: 71,
1981
        jc: 72,
1982
        Rc: 73,
1983
        zc: 74,
1984
        ua: 75,
1985
        Jb: 76,
1986
        Nc: 77,
1987
        cc: 78,
1988
        ld: 79,
1989
        tc: 80,
1990
        Pb: 81,
1991
        Bc: 82,
1992
        mc: 83,
1993
        oc: 84,
1994
        nc: 85,
1995
        pc: 86,
1996
        qc: 87,
1997
        Mb: 88,
1998
        Eb: 89,
1999
        Nb: 90,
2000
        Hc: 91,
2001
        Ec: 92,
2002
        Rb: 93,
2003
        xd: 94,
2004
        ec: 95,
2005
        dc: 96,
2006
        gc: 97,
2007
        uc: 98,
2008
        ac: 99,
2009
        Ac: 100
2010
    };
2011
2012
    function EMBld(a) {
0 ignored issues
show
Bug introduced by
The function EMBld is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBld = function() { /* ... */ }; instead.
Loading history...
2013
        for (var b = [], c = EMBmd, d = a.elements, e, f = 0; e = d[f]; f++)
2014
            if (!(e.form != a || e.disabled || "fieldset" == e.tagName.toLowerCase())) {
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2015
                var g = e.name;
2016
                switch (e.type.toLowerCase()) {
2017
                    case "file":
2018
                    case "submit":
2019
                    case "reset":
2020
                    case "button":
2021
                        break;
2022
                    case "select-multiple":
2023
                        e = EMBnd(e);
2024
                        if (e != EMBd)
2025
                            for (var h, i = 0; h = e[i]; i++) c(b, g, h);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2026
                        break;
2027
                    default:
2028
                        h = EMBnd(e), h != EMBd && c(b, g, h)
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2029
                }
2030
            } d = a.getElementsByTagName("input");
2031
        for (f = 0; e = d[f]; f++) e.form == a && "image" == e.type.toLowerCase() && (g = e.name, c(b, g, e.value), c(b, g + ".x", "0"), c(b, g +
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2032
            ".y", "0"));
2033
        return b.join("&")
2034
    }
2035
2036
    function EMBmd(a, b, c) {
0 ignored issues
show
Bug introduced by
The function EMBmd is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBmd = function() { /* ... */ }; instead.
Loading history...
2037
        a.push(encodeURIComponent(b) + "=" + encodeURIComponent(c))
2038
    }
2039
2040 View Code Duplication
    function EMBnd(a) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
Bug introduced by
The function EMBnd is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBnd = function() { /* ... */ }; instead.
Loading history...
2041
        var b = a.type;
2042
        if (!EMBi(b)) return EMBd;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2043
        switch (b.toLowerCase()) {
2044
            case "checkbox":
2045
            case "radio":
2046
                return a.checked ? a.value : EMBd;
2047
            case "select-one":
2048
                return b = a.selectedIndex, 0 <= b ? a.options[b].value : EMBd;
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2049
            case "select-multiple":
2050
                for (var b = [], c, d = 0; c = a.options[d]; d++) c.selected && b.push(c.value);
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable b already seems to be declared on line 2041. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2051
                return b.length ? b : EMBd;
2052
            default:
2053
                return EMBi(a.value) ? a.value : EMBd
2054
        }
2055
    };
2056
    var EMBod = EMBd;
2057
    "undefined" != typeof XMLHttpRequest ? EMBod = function() {
2058
        return new XMLHttpRequest
2059
    } : "undefined" != typeof ActiveXObject && (EMBod = function() {
0 ignored issues
show
Bug introduced by
The variable ActiveXObject seems to be never declared. If this is a global, consider adding a /** global: ActiveXObject */ comment.

This checks looks for references to variables that have not been declared. This is most likey a typographical error or a variable has been renamed.

To learn more about declaring variables in Javascript, see the MDN.

Loading history...
2060
        return new ActiveXObject("Microsoft.XMLHTTP")
0 ignored issues
show
Bug introduced by
The variable ActiveXObject seems to be never declared. If this is a global, consider adding a /** global: ActiveXObject */ comment.

This checks looks for references to variables that have not been declared. This is most likey a typographical error or a variable has been renamed.

To learn more about declaring variables in Javascript, see the MDN.

Loading history...
2061
    });
2062
2063
    function EMBpd(a, b, c, d, e) {
0 ignored issues
show
Bug introduced by
The function EMBpd is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBpd = function() { /* ... */ }; instead.
Loading history...
2064
        var f = EMBod && EMBod();
2065 View Code Duplication
        if ("open" in f) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if "open" in f is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
2066
            f.onreadystatechange = function() {
2067
                4 == (f && "readyState" in f ? f.readyState : 0) && b && b(f)
2068
            };
2069
            c = (c || "GET").toUpperCase();
2070
            d = d || "";
2071
            f.open(c, a, EMBc);
2072
            a = "POST" == c;
2073
            if (e)
2074
                for (var g in e) f.setRequestHeader(g, e[g]), "content-type" == g.toLowerCase() && (a = EMBe);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Complexity introduced by
A for in loop automatically includes the property of any prototype object, consider checking the key using hasOwnProperty.

When iterating over the keys of an object, this includes not only the keys of the object, but also keys contained in the prototype of that object. It is generally a best practice to check for these keys specifically:

var someObject;
for (var key in someObject) {
    if ( ! someObject.hasOwnProperty(key)) {
        continue; // Skip keys from the prototype.
    }

    doSomethingWith(key);
}
Loading history...
2075
            a && f.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
2076
            f.send(d);
2077
            return f
2078
        }
2079
    }
2080
2081
    function EMBqd(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBqd is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBqd = function() { /* ... */ }; instead.
Loading history...
2082
        var c = b.format || "JSON";
2083
        b.mb && (a = document.location.protocol + "//" + document.location.hostname + a);
2084
        var d = b.P;
2085
        d && (a = EMB9c(a, d));
2086
        var e = b.jb || "";
2087
        if (d = b.nb) e = EMB6c(e), EMBCa(e, d), e = EMB8c(e);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2088
        var f = EMBe,
2089
            g, h = EMBpd(a, function(a) {
2090
                if (!f) {
2091
                    f = EMBc;
2092
                    g && window.clearTimeout(g);
2093
                    var d;
2094
                    a: switch (a && "status" in a ? a.status : -1) {
0 ignored issues
show
Comprehensibility Best Practice introduced by
The name a is already used for a variable on line 2089. Please consider using another name to prevent misunderstandings.
Loading history...
2095
                        case 0:
2096
                        case 200:
2097
                        case 204:
2098
                        case 304:
2099
                            d = EMBc;
2100
                            break a;
2101
                        default:
2102
                            d = EMBe
2103
                    }
2104
                    var e = EMBd;
2105
                    if (d || 400 <= a.status && 500 > a.status) e = EMBrd(c, a);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2106
                    if (d) a: {
0 ignored issues
show
Comprehensibility Best Practice introduced by
The name a is already used for a variable on line 2089. Please consider using another name to prevent misunderstandings.
Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2107
                        switch (c) {
2108
                            case "XML":
2109
                                d = 0 == parseInt(e && e.return_code,
0 ignored issues
show
Best Practice introduced by
Comparing 0 to parseInt(e && e.return_code, 10) using the == operator is not safe. Consider using === instead.
Loading history...
2110
                                    10);
2111
                                break a;
2112
                            case "RAW":
2113
                                d = EMBc;
2114
                                break a
2115
                        }
2116
                        d = !!e
2117
                    }
2118
                    var e = e || {},
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable e already seems to be declared on line 2104. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
2119
                        h = b.B || EMBf;
2120
                    d ? b.C && b.C.call(h, a, e) : b.va && b.va.call(h, a, e);
2121
                    b.ca && b.ca.call(h, a, e)
2122
                }
2123
            }, b.method, e, b.headers);
2124
        b.ob && 0 < b.timeout && (g = EMBP(function() {
2125
            f || (f = EMBc, h.abort(), window.clearTimeout(g), b.ob.call(b.B || EMBf, h))
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2126
        }, b.timeout))
2127
    }
2128
2129
    function EMBrd(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBrd is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBrd = function() { /* ... */ }; instead.
Loading history...
2130
        var c = EMBd;
2131
        switch (a) {
2132
            case "JSON":
2133
                var d = b.responseText,
2134
                    e = b.getResponseHeader("Content-Type") || "";
2135
                d && 0 <= e.indexOf("json") && (c = EMBuc(d));
2136
                break;
2137
            case "XML":
2138
                if (d = (d = b.responseXML) ? EMBsd(d) : EMBd) c = {}, EMBr(d.getElementsByTagName("*"), function(a) {
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2139
                    c[a.tagName] = EMBtd(a)
2140
                })
2141
        }
2142
        return c
2143
    }
2144
2145
    function EMBsd(a) {
0 ignored issues
show
Bug introduced by
The function EMBsd is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBsd = function() { /* ... */ }; instead.
Loading history...
2146
        return !a ? EMBd : (a = ("responseXML" in a ? a.responseXML : a).getElementsByTagName("root")) && 0 < a.length ? a[0] : EMBd
2147
    }
2148
2149
    function EMBtd(a) {
0 ignored issues
show
Bug introduced by
The function EMBtd is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBtd = function() { /* ... */ }; instead.
Loading history...
2150
        var b = "";
2151
        EMBr(a.childNodes, function(a) {
2152
            b += a.nodeValue
2153
        });
2154
        return b
2155
    }
2156
    var EMBud = {
2157
            html5_ajax: "action_get_html5_token",
2158
            watch_actions_ajax: "action_get_watch_actions_token",
2159
            addto_ajax: "action_get_wl_token"
2160
        },
2161
        EMBvd = {
2162
            html5_ajax: "html5_ajax_token",
2163
            watch_actions_ajax: "watch_actions_ajax_token",
2164
            addto_ajax: "addto_ajax_token"
2165
        };
2166
2167
    function EMBwd() {
0 ignored issues
show
Bug introduced by
The function EMBwd is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBwd = function() { /* ... */ }; instead.
Loading history...
2168
        var a = EMBxd;
2169
        if (EMBcc() && a) window.setTimeout(a, 0);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2170
        else {
2171
            var b = EMB1c() + "/token_ajax",
2172
                c = {};
2173
            c[EMBud.html5_ajax] = 1;
2174
            EMBqd(b, {
2175
                format: "RAW",
2176
                method: "GET",
2177
                P: c,
2178
                ca: function(b) {
2179
                    if (b = EMB6c(b.responseText)[EMBvd.html5_ajax]) EMBac("html5_ajax", b), a && a()
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2180
                }
2181
            })
2182
        }
2183
    };
2184
    var EMByd = EMBg("yt.pubsub.instance_") || new EMBS;
2185
    EMBS.prototype.subscribe = EMBS.prototype.ra;
2186
    EMBS.prototype.unsubscribeByKey = EMBS.prototype.ba;
2187
    EMBS.prototype.publish = EMBS.prototype.Ca;
2188
    EMBS.prototype.clear = EMBS.prototype.clear;
2189
    EMBm("yt.pubsub.instance_", EMByd);
2190
2191
    function EMBzd(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBzd is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBzd = function() { /* ... */ }; instead.
Loading history...
2192
        var c = EMBg("yt.pubsub.instance_");
2193
        c && c.subscribe(a, function() {
2194
            var a = arguments;
2195
            EMBP(function() {
2196
                b.apply(EMBf, a)
2197
            }, 0)
2198
        }, EMBb)
2199
    }
2200
2201
    function EMBAd(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBAd is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBAd = function() { /* ... */ }; instead.
Loading history...
Unused Code introduced by
The parameter a is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
Unused Code introduced by
The parameter b is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
2202
        var c = EMBg("yt.pubsub.instance_");
2203
        c && c.publish.apply(c, arguments)
2204
    };
2205
2206
    function EMBBd(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBBd is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBBd = function() { /* ... */ }; instead.
Loading history...
2207
        var c = "scriptload-" + EMBoa(a),
2208
            d = document.getElementById(c),
2209
            e = d && EMBI(d, "loaded"),
2210
            f = d && !e;
2211
        if (e) b && b();
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2212
        else if (f) b && EMBzd(c, b);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2213
        else {
2214
            d && (c = "scriptload-" + (Math.floor(2147483648 * Math.random()).toString(36) + Math.abs(Math.floor(2147483648 * Math.random()) ^ EMBl()).toString(36)));
2215
            b && EMBzd(c, b);
2216
            var g = EMBCd(a, c, function() {
2217
                if (!EMBI(g, "loaded")) {
2218
                    var a = g;
2219
                    a.dataset ? a.dataset[EMBsb("loaded")] = "true" : a.setAttribute("data-loaded", "true");
2220
                    EMBAd(c);
2221
                    var a = c,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable a already seems to be declared on line 2218. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
2222
                        b = EMBg("yt.pubsub.instance_");
2223
                    b && b.clear(a)
2224
                }
2225
            })
2226
        }
2227
    }
2228
2229
    function EMBCd(a, b, c) {
0 ignored issues
show
Bug introduced by
The function EMBCd is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBCd = function() { /* ... */ }; instead.
Loading history...
2230
        var d = document.createElement("script");
2231
        d.id = b;
2232
        d.onload = c;
2233
        d.onreadystatechange = function() {
2234
            if ("loaded" == d.readyState || "complete" == d.readyState) d.onload()
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2235
        };
2236
        d.src = a;
2237
        a = document.getElementsByTagName("head")[0];
2238
        a.insertBefore(d, a.firstChild);
2239
        return d
2240
    };
2241
2242
    function EMBDd(a, b, c, d, e, f) {
0 ignored issues
show
Bug introduced by
The function EMBDd is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBDd = function() { /* ... */ }; instead.
Loading history...
2243
        var g, h;
2244
        if (g = c.offsetParent) {
2245
            var i = "HTML" == g.tagName || "BODY" == g.tagName;
2246
            if (!i || "static" != EMBW(g, "position")) h = EMBX(g), i || (i = (i = EMBNc(g)) && EMBw ? -g.scrollLeft : i && (!EMBv || !EMBy("8")) ? g.scrollWidth - g.clientWidth - g.scrollLeft : g.scrollLeft, h = EMBva(h, new EMBs(i, g.scrollTop)))
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2247
        }
2248
        g = h || new EMBs;
2249
        h = EMBMc(a);
2250
        for (var i = new EMBT(0, Infinity, Infinity, 0), j = EMBC(a), k = j.a.body, l = j.a.documentElement, n = !EMBx && "CSS1Compat" == j.a.compatMode ? j.a.documentElement : j.a.body, m = a; m = EMBIc(m);)
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable i already seems to be declared on line 2245. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
2251
            if ((!EMBv ||
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2252
                    0 != m.clientWidth) && (!EMBx || 0 != m.clientHeight || m != k) && m != k && m != l && "visible" != EMBW(m, "overflow")) {
0 ignored issues
show
Best Practice introduced by
Comparing 0 to m.clientWidth using the != operator is not safe. Consider using !== instead.
Loading history...
Best Practice introduced by
Comparing 0 to m.clientHeight using the != operator is not safe. Consider using !== instead.
Loading history...
2253
                var p = EMBX(m),
2254
                    o;
2255
                o = m;
2256
                if (EMBw && !EMBy("1.9")) {
2257
                    var q = parseFloat(EMBU(o, "borderLeftWidth"));
2258
                    if (EMBNc(o)) var r = o.offsetWidth - o.clientWidth - q - parseFloat(EMBU(o, "borderRightWidth")),
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2259
                        q = q + r;
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable q already seems to be declared on line 2257. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
2260
                    o = new EMBs(q, parseFloat(EMBU(o, "borderTopWidth")))
2261
                } else o = new EMBs(o.clientLeft, o.clientTop);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2262
                p.x += o.x;
2263
                p.y += o.y;
2264
                i.top = Math.max(i.top, p.y);
2265
                i.right = Math.min(i.right, p.x + m.clientWidth);
2266
                i.bottom = Math.min(i.bottom, p.y + m.clientHeight);
2267
                i.left = Math.max(i.left, p.x)
2268
            } k = n.scrollLeft;
2269
        n = n.scrollTop;
2270
        i.left = Math.max(i.left, k);
2271
        i.top = Math.max(i.top, n);
2272
        j = EMBcb(j.a.parentWindow || j.a.defaultView || window);
2273
        i.right = Math.min(i.right, k + j.width);
2274
        i.bottom = Math.min(i.bottom, n + j.height);
2275
        if (i = 0 <= i.top && 0 <= i.left && i.bottom > i.top && i.right > i.left ? i : EMBd) k = new EMBDc(i.left, i.top, i.right - i.left, i.bottom - i.top), i = Math.max(h.left, k.left), j = Math.min(h.left + h.width, k.left + k.width), i <= j && (n = Math.max(h.top, k.top), k = Math.min(h.top + h.height, k.top + k.height), n <= k && (h.left =
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2276
            i, h.top = n, h.width = j - i, h.height = k - n));
2277
        i = EMBC(a);
2278
        n = EMBC(c);
2279
        if (i.a != n.a) {
2280
            j = i.a.body;
2281
            n = n.a.parentWindow || n.a.defaultView;
2282
            k = new EMBs(0, 0);
2283
            l = EMBD(j) ? EMBD(j).parentWindow || EMBD(j).defaultView : window;
2284
            m = j;
2285
            do p = l == n ? EMBX(m) : EMBJc(m), k.x += p.x, k.y += p.y; while (l && l != n && (m = l.frameElement) && (l = l.parent));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2286
            j = EMBva(k, EMBX(j));
2287
            EMBv && !EMBqb(i) && (j = EMBva(j, EMBrb(i)));
2288
            h.left += j.x;
2289
            h.top += j.y
2290
        }
2291
        a = (b & 4 && EMBNc(a) ? b ^ 2 : b) & -5;
0 ignored issues
show
introduced by
You have used a bitwise operator & in a condition. Did you maybe want to use the logical operator &&
Loading history...
2292
        b = new EMBs(a & 2 ? h.left + h.width : h.left, a & 1 ? h.top + h.height : h.top);
0 ignored issues
show
introduced by
You have used a bitwise operator & in a condition. Did you maybe want to use the logical operator &&
Loading history...
2293
        b = EMBva(b, g);
2294
        e && (b.x += (a & 2 ? -1 : 1) * e.x, b.y +=
0 ignored issues
show
introduced by
You have used a bitwise operator & in a condition. Did you maybe want to use the logical operator &&
Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2295
            (a & 1 ? -1 : 1) * e.y);
0 ignored issues
show
introduced by
You have used a bitwise operator & in a condition. Did you maybe want to use the logical operator &&
Loading history...
2296
        EMBEd(b, c, d, f, EMBb, EMBb, EMBb)
2297
    }
2298
2299
    function EMBEd(a, b, c, d, e, f, g) {
0 ignored issues
show
Bug introduced by
The function EMBEd is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBEd = function() { /* ... */ }; instead.
Loading history...
2300
        var a = a.a(),
2301
            h = (c & 4 && EMBNc(b) ? c ^ 2 : c) & -5,
0 ignored issues
show
introduced by
You have used a bitwise operator & in a condition. Did you maybe want to use the logical operator &&
Loading history...
2302
            c = EMBY(b),
2303
            g = g ? g.a() : c.a();
2304 View Code Duplication
        if (d || 0 != h)(h & 2 ? a.x -= g.width + (d ? d.right : 0) : d && (a.x += d.left), h & 1) ? a.y -= g.height + (d ? d.bottom : 0) : d && (a.y += d.top);
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Best Practice introduced by
Comparing 0 to h using the != operator is not safe. Consider using !== instead.
Loading history...
introduced by
You have used a bitwise operator & in a condition. Did you maybe want to use the logical operator &&
Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2305 View Code Duplication
        if (f) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
2306
            if (e) {
2307
                d = a;
2308
                h = 0;
2309
                if (65 == (f & 65) && (d.x < e.left || d.x >= e.right)) f &= -2;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2310
                if (132 == (f & 132) && (d.y < e.top || d.y >= e.bottom)) f &= -5;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2311
                d.x < e.left && f & 1 && (d.x = e.left, h |= 1);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2312
                d.x < e.left && (d.x + g.width > e.right && f & 16) && (g.width = Math.max(g.width - (d.x + g.width - e.right), 0), h |= 4);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2313
                d.x + g.width > e.right && f & 1 && (d.x = Math.max(e.right -
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2314
                    g.width, e.left), h |= 1);
2315
                f & 2 && (h |= (d.x < e.left ? 16 : 0) | (d.x + g.width > e.right ? 32 : 0));
2316
                d.y < e.top && f & 4 && (d.y = e.top, h |= 2);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2317
                d.y >= e.top && (d.y + g.height > e.bottom && f & 32) && (g.height = Math.max(g.height - (d.y + g.height - e.bottom), 0), h |= 8);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2318
                d.y + g.height > e.bottom && f & 4 && (d.y = Math.max(e.bottom - g.height, e.top), h |= 2);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2319
                f & 8 && (h |= (d.y < e.top ? 64 : 0) | (d.y + g.height > e.bottom ? 128 : 0));
2320
                e = h
2321
            } else e = 256;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2322
            if (e & 496) return
0 ignored issues
show
introduced by
You have used a bitwise operator & in a condition. Did you maybe want to use the logical operator &&
Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2323
        }
2324
        f = a;
2325
        e = EMBw && (EMBHa || EMBRa) && EMBy("1.9");
2326
        f instanceof EMBs ? (a = f.x, f = f.y) : (a = f, f = EMBb);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2327
        b.style.left = EMBKc(a, e);
2328
        b.style.top = EMBKc(f,
2329
            e);
2330
        if (!(c == g || (!c || !g ? 0 : c.width == g.width && c.height == g.height)))(a = EMBqb(EMBC(EMBD(b))), EMBv && (!a || !EMBy("8"))) ? (c = b.style, a) ? (EMBv ? (a = EMBOc(b, EMBV(b, "paddingLeft")), e = EMBOc(b, EMBV(b, "paddingRight")), f = EMBOc(b, EMBV(b, "paddingTop")), d = EMBOc(b, EMBV(b, "paddingBottom")), a = new EMBT(f, e, d, a)) : (a = EMBU(b, "paddingLeft"), e = EMBU(b, "paddingRight"), f = EMBU(b, "paddingTop"), d = EMBU(b, "paddingBottom"), a = new EMBT(parseFloat(f), parseFloat(e), parseFloat(d), parseFloat(a))), EMBv ? (e = EMBQc(b, "borderLeft"), f = EMBQc(b, "borderRight"),
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2331
            d = EMBQc(b, "borderTop"), b = EMBQc(b, "borderBottom"), b = new EMBT(d, f, b, e)) : (e = EMBU(b, "borderLeftWidth"), f = EMBU(b, "borderRightWidth"), d = EMBU(b, "borderTopWidth"), b = EMBU(b, "borderBottomWidth"), b = new EMBT(parseFloat(d), parseFloat(f), parseFloat(b), parseFloat(e))), c.pixelWidth = g.width - b.left - a.left - a.right - b.right, c.pixelHeight = g.height - b.top - a.top - a.bottom - b.bottom) : (c.pixelWidth = g.width, c.pixelHeight = g.height) : (b = b.style, EMBw ? b.MozBoxSizing = "border-box" : EMBx ? b.WebkitBoxSizing = "border-box" : b.boxSizing = "border-box",
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2332
            b.width = Math.max(g.width, 0) + "px", b.height = Math.max(g.height, 0) + "px")
2333
    };
2334
    var EMB2 = {},
2335
        EMBFd = "ontouchstart" in document;
2336
2337
    function EMBGd(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBGd is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBGd = function() { /* ... */ }; instead.
Loading history...
2338
        var c = EMB2[a].maxNumParents[b],
2339
            d;
2340
        0 < c ? d = c : -1 != a.indexOf("mouse") && (d = 2);
2341
        return d
0 ignored issues
show
Bug introduced by
The variable d seems to not be initialized for all possible execution paths.
Loading history...
2342
    }
2343
2344
    function EMBHd(a, b, c) {
0 ignored issues
show
Bug introduced by
The function EMBHd is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBHd = function() { /* ... */ }; instead.
Loading history...
2345
        return EMBpb(b, function(b) {
2346
            return EMBB(b, a)
2347
        }, EMBc, c) || EMBd
2348
    }
2349
2350
    function EMBL(a) {
0 ignored issues
show
Bug introduced by
The function EMBL is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBL = function() { /* ... */ }; instead.
Loading history...
2351
        if ("HTML" != a.target.tagName && a.type in EMB2) {
2352
            var b = EMB2[a.type],
2353
                c;
2354
            for (c in b.l) {
2355
                var d = EMBGd(a.type, c),
2356
                    e = EMBHd(c, a.target, d);
2357
                if (e) {
2358
                    var f = EMBc;
2359
                    b.checkRelatedTarget[c] && (a.relatedTarget && EMBpb(a.relatedTarget, function(a) {
2360
                        return a == e
0 ignored issues
show
Bug introduced by
The variable e is changed as part of the for-each loop for example by EMBHd(c, a.target, d) on line 2356. Only the value of the last iteration will be visible in this function if it is called after the loop.
Loading history...
2361
                    }, EMBc, d)) && (f = EMBe);
2362
                    f && b.Ca(c, e, a.type, a)
2363
                }
2364
            }
2365
        }
2366
    }
2367
    EMBK(document, "blur", EMBL, EMBc);
2368
    EMBK(document, "change", EMBL, EMBc);
2369
    EMBK(document, "click", EMBL);
2370
    EMBK(document, "focus", EMBL, EMBc);
2371
    EMBK(document, "mouseover", EMBL);
2372
    EMBK(document, "mouseout", EMBL);
2373
    EMBK(document, "mousedown", EMBL);
2374
    EMBK(document, "keydown", EMBL);
2375
    EMBK(document, "keyup", EMBL);
2376
    EMBK(document, "keypress", EMBL);
2377
    EMBK(document, "cut", EMBL);
2378
    EMBK(document, "paste", EMBL);
2379
    EMBFd && (EMBK(document, "touchstart", EMBL), EMBK(document, "touchend", EMBL), EMBK(document, "touchcancel", EMBL));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2380
    var EMBId = window.yt && window.yt.uix && window.yt.uix.widgets_ || {};
2381
    EMBm("yt.uix.widgets_", EMBId);
2382
2383
    function EMBJd(a) {
0 ignored issues
show
Bug introduced by
The function EMBJd is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBJd = function() { /* ... */ }; instead.
Loading history...
2384
        var a = a.getInstance(),
2385
            b = EMB3(a);
2386
        !(b in EMBId) && a.Da() && (a.M(), EMBId[b] = a)
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2387
    };
2388
2389
    function EMBKd() {
0 ignored issues
show
Bug introduced by
The function EMBKd is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBKd = function() { /* ... */ }; instead.
Loading history...
2390
        this.a = {}
2391
    }
2392
    EMB = EMBKd.prototype;
2393
    EMB.Cb = !!eval("/*@cc_on!@*/false");
0 ignored issues
show
Security Performance introduced by
Calls to eval are slow and potentially dangerous, especially on untrusted code. Please consider whether there is another way to achieve your goal.
Loading history...
2394
    EMB.Da = function() {
2395
        return EMBc
2396
    };
2397
2398
    function EMB4(a, b, c, d) {
0 ignored issues
show
Bug introduced by
The function EMB4 is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMB4 = function() { /* ... */ }; instead.
Loading history...
2399
        var d = EMB3(a, d),
2400
            e = EMBk(c, a);
2401
        b in EMB2 || (EMB2[b] = new EMBS, EMB2[b].maxNumParents = {}, EMB2[b].checkRelatedTarget = {});
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2402
        b = EMB2[b];
2403
        b.ra(d, e);
2404
        b.maxNumParents[d] = EMBb;
2405
        b.checkRelatedTarget[d] = EMBb;
2406
        a.a[c] = e
2407
    }
2408
    EMB.N = function(a, b, c) {
0 ignored issues
show
Unused Code introduced by
The parameter c is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
2409
        var d = this.getData(a, b);
2410
        if (d && (d = EMBg(d))) {
2411
            var e = EMBua(arguments, 2);
2412
            EMBta(e, 0, 0, a);
2413
            d.apply(EMBd, e)
2414
        }
2415
    };
2416
    EMB.getData = function(a, b) {
2417
        return EMBI(a, b)
2418
    };
2419
    EMB.setData = function(a, b, c) {
2420
        a.dataset ? a.dataset[EMBsb(b)] = c : a.setAttribute("data-" + b, c)
2421
    };
2422
2423
    function EMB3(a, b) {
0 ignored issues
show
Bug introduced by
The function EMB3 is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMB3 = function() { /* ... */ }; instead.
Loading history...
2424
        return "yt-uix" + (a.A ? "-" + a.A : "") + (b ? "-" + b : "")
2425
    };
2426
2427
    function EMB5() {
0 ignored issues
show
Bug introduced by
The function EMB5 is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMB5 = function() { /* ... */ }; instead.
Loading history...
2428
        this.a = {}
2429
    }
2430
    EMBn(EMB5, EMBKd);
2431
    EMBh(EMB5);
2432
    EMB = EMB5.prototype;
2433
    EMB.A = "tooltip";
2434
    EMB.V = 0;
2435
    EMB.M = function() {
2436
        EMB4(this, "mouseover", this.U);
2437
        EMB4(this, "mouseout", this.J);
2438
        EMB4(this, "click", this.J);
2439
        EMB4(this, "touchstart", this.fa);
2440
        EMB4(this, "touchend", this.T);
2441
        EMB4(this, "touchcancel", this.T)
2442
    };
2443
    EMB.Da = function() {
2444
        return !(this.Cb && 0 == EMBZa.indexOf("6"))
0 ignored issues
show
Best Practice introduced by
Comparing 0 to EMBZa.indexOf("6") using the == operator is not safe. Consider using === instead.
Loading history...
2445
    };
2446
    EMB.U = function(a) {
2447
        if (!(this.V && 1E3 > EMBl() - this.V)) {
2448
            var b = parseInt(this.getData(a, "tooltip-hide-timer"), 10);
2449
            b && (EMBJ(a, "tooltip-hide-timer"), window.clearTimeout(b));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2450
            var b = EMBk(function() {
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable b already seems to be declared on line 2448. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
2451
                    EMBLd(this, a);
2452
                    EMBJ(a, "tooltip-show-timer")
2453
                }, this),
2454
                c = parseInt(this.getData(a, "tooltip-show-delay"), 10) || 0,
2455
                b = EMBP(b, c);
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable b already seems to be declared on line 2448. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
2456
            this.setData(a, "tooltip-show-timer", b.toString());
2457
            a.title && (this.setData(a, "tooltip-text", a.title), a.title = "")
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2458
        }
2459
    };
2460
    EMB.J = function(a) {
2461
        var b = parseInt(this.getData(a, "tooltip-show-timer"), 10);
2462
        b && (window.clearTimeout(b), EMBJ(a, "tooltip-show-timer"));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2463
        b = EMBk(function() {
2464
            if (a) {
2465
                var b = EMBE(EMBMd(this, a));
2466
                if (b) {
2467
                    EMBNd(b);
2468
                    b && b.parentNode && b.parentNode.removeChild(b);
2469
                    EMBJ(a, "content-id")
2470
                }
2471
            }
2472
            EMBJ(a, "tooltip-hide-timer")
2473
        }, this);
2474
        b = EMBP(b, 50);
2475
        this.setData(a, "tooltip-hide-timer", b.toString());
2476
        if (b = this.getData(a, "tooltip-text")) a.title = b
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2477
    };
2478
    EMB.fa = function(a, b, c) {
2479
        this.V = 0;
2480
        this.U(EMBHd(EMB3(this), c.changedTouches[0].target, EMBGd(b, EMB3(this))), b)
2481
    };
2482
    EMB.T = function(a, b, c) {
2483
        this.V = EMBl();
2484
        this.J(EMBHd(EMB3(this), c.changedTouches[0].target, EMBGd(b, EMB3(this))), b)
2485
    };
2486
2487
    function EMBOd(a, b, c) {
0 ignored issues
show
Bug introduced by
The function EMBOd is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBOd = function() { /* ... */ }; instead.
Loading history...
2488
        a.setData(b, "tooltip-text", c);
2489
        a = a.getData(b, "content-id");
2490
        if (a = EMBE(a)) a.innerHTML = c
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2491
    }
2492
    EMB.Fa = function(a) {
2493
        return this.getData(a, "tooltip-text") || a.title
2494
    };
2495
2496
    function EMBLd(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBLd is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBLd = function() { /* ... */ }; instead.
Loading history...
2497
        if (b) {
2498
            var c = a.Fa(b);
2499
            if (c) {
2500
                var d = EMBE(EMBMd(a, b));
2501
                if (!d) {
2502
                    d = document.createElement("div");
2503
                    d.id = EMBMd(a, b);
2504
                    d.className = EMB3(a, "tip");
2505
                    var e = document.createElement("div");
2506
                    e.className = EMB3(a, "tip-body");
2507
                    var f = document.createElement("div");
2508
                    f.className = EMB3(a, "tip-arrow");
2509
                    var g = document.createElement("div");
2510
                    g.className = EMB3(a, "tip-content");
2511
                    var h = EMBPd(a, b),
2512
                        i = EMBMd(a, b, "content");
2513
                    g.id = i;
2514
                    a.setData(b, "content-id", i);
2515
                    e.appendChild(g);
2516
                    h && d.appendChild(h);
2517
                    d.appendChild(e);
2518
                    d.appendChild(f);
2519
                    (EMBxb() || document.body).appendChild(d);
2520
                    EMBOd(a, b, c);
2521
                    if ((c = parseInt(a.getData(b, "tooltip-max-width"), 10)) && e.offsetWidth > c) e.style.width = c + "px", EMBz(g, EMB3(a, "normal-wrap"));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2522
                    g = EMBB(b, EMB3(a, "reverse"));
2523
                    a.ga(b, d, e, h, f, g) || a.ga(b, d, e, h, f, !g);
2524
                    var j = EMB3(a, "tip-visible");
2525
                    EMBP(function() {
2526
                        EMBz(d, j)
2527
                    }, 0)
2528
                }
2529
            }
2530
        }
2531
    }
2532
    EMB.ga = function(a, b, c, d, e, f) {
2533
        EMB7a(b, EMB3(this, "tip-reverse"), f);
2534
        var g = 0;
2535
        f && (g = 1);
2536
        var e = EMBY(a),
2537
            f = new EMBs((e.width - 10) / 2, f ? e.height : 0),
2538
            h = EMBX(a);
2539
        EMBEd(new EMBs(h.x + f.x, h.y + f.y), b, g);
2540
        var g = EMBcb(window),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable g already seems to be declared on line 2534. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
2541
            h = EMBJc(b),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable h already seems to be declared on line 2538. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
2542
            b = EMBY(c),
2543
            i = b.width / 2;
2544
        d && (d.style.left = "3px", d.style.height = b.height + "px", d.style.width = b.width + "px");
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2545
        d = !!(g.height < h.y + e.height);
2546
        e = !!(h.y < e.height);
2547
        f = !!(h.x < i);
2548
        g = !!(g.width < h.x + i);
2549
        h = (b.width + 3) / -2 - -5;
2550
        a = this.getData(a, "force-tooltip-direction");
2551
        if ("left" == a || f) h = -5;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2552
        else if ("right" == a ||
2553
            g) h = 20 - b.width - 3;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2554
        c.style.left = h + "px";
2555
        return !(d || e)
2556
    };
2557
2558
    function EMBMd(a, b, c) {
0 ignored issues
show
Bug introduced by
The function EMBMd is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBMd = function() { /* ... */ }; instead.
Loading history...
2559
        var a = EMB3(a),
2560
            d = b.__yt_uid_key;
2561
        d || (d = EMBub(), b.__yt_uid_key = d);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2562
        b = a + d;
2563
        c && (b += "-" + c);
2564
        return b
2565
    }
2566
2567
    function EMBPd(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBPd is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBPd = function() { /* ... */ }; instead.
Loading history...
2568
        var c = EMBd;
2569
        EMBIa && EMBB(b, EMB3(a, "masked")) && ((c = EMBE("yt-uix-tooltip-shared-mask")) ? (c.parentNode.removeChild(c), EMBUc(c)) : (c = document.createElement("iframe"), c.src = 'javascript:""', c.id = "yt-uix-tooltip-shared-mask", c.className = EMB3(a, "tip-mask")));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2570
        return c
2571
    }
2572
2573
    function EMBNd(a) {
0 ignored issues
show
Bug introduced by
The function EMBNd is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBNd = function() { /* ... */ }; instead.
Loading history...
2574
        var b = EMBE("yt-uix-tooltip-shared-mask"),
2575
            c = b && EMBpb(b, function(b) {
2576
                return b == a
2577
            }, EMBe, 2);
2578
        b && c && (b.parentNode.removeChild(b), EMBZ(b), document.body.appendChild(b))
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2579
    };
2580
    !EMBv || EMB1a(9);
2581
    !EMBv || EMB1a(9);
2582
    EMBv && EMBy("8");
2583
    !EMBx || EMBy("528");
2584
    EMBw && EMBy("1.9b") || EMBv && EMBy("8") || EMBNa && EMBy("9.5") || EMBx && EMBy("528");
2585
    EMBw && !EMBy("8") || EMBv && EMBy("9");
2586
    EMBv || EMBw && EMBy("1.9.3");
2587
    var EMBQd = EMBf.window;
2588
2589
    function EMBRd(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBRd is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBRd = function() { /* ... */ }; instead.
Loading history...
2590
        "function" == EMBaa(a) ? b && (a = EMBk(a, b)) : a && "function" == typeof a.handleEvent ? a = EMBk(a.handleEvent, a) : EMBa(Error("Invalid listener argument"));
2591
        EMBQd.setTimeout(a, 200)
2592
    };
2593
    new EMBS;
0 ignored issues
show
Unused Code Best Practice introduced by
The object created with new EMBS() is not used but discarded. Consider invoking another function instead of a constructor if you are doing this purely for side effects.
Loading history...
2594
2595
    function EMBSd() {}
0 ignored issues
show
Bug introduced by
The function EMBSd is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBSd = function() { /* ... */ }; instead.
Loading history...
2596
    EMBh(EMBSd);
2597
    EMBSd.getInstance();
2598
    document.createElement("input");
2599
2600
    function EMB6() {
0 ignored issues
show
Bug introduced by
The function EMB6 is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMB6 = function() { /* ... */ }; instead.
Loading history...
2601
        this.a = {}
2602
    }
2603
    EMBn(EMB6, EMBKd);
2604
    EMBh(EMB6);
2605
    EMB6.prototype.A = "expander";
2606
    EMB6.prototype.M = function() {
2607
        EMB4(this, "click", this.b, "head");
2608
        EMB4(this, "keypress", this.d, "head")
2609
    };
2610
    EMB6.prototype.b = function(a) {
2611
        EMBTd(this, a)
2612
    };
2613
    EMB6.prototype.d = function(a, b, c) {
2614
        c && 13 == c.keyCode && EMBTd(this, a)
2615
    };
2616
2617
    function EMBTd(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBTd is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBTd = function() { /* ... */ }; instead.
Loading history...
2618
        var c = EMBH(b, EMB3(a));
2619
        c && (EMB8a(c, EMB3(a, "collapsed")), a.N(c, "expander-action"))
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2620
    }
2621
2622
    function EMB7(a, b) {
0 ignored issues
show
Bug introduced by
The function EMB7 is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMB7 = function() { /* ... */ }; instead.
Loading history...
2623
        var c = EMBH(b, EMB3(a));
2624
        c && (EMBz(c, EMB3(a, "collapsed")), a.N(c, "expander-action"))
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2625
    };
2626
2627
    function EMBUd(a, b, c, d) {
0 ignored issues
show
Bug introduced by
The function EMBUd is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBUd = function() { /* ... */ }; instead.
Loading history...
2628
        this.c = a;
2629
        this.$ = EMBe;
2630
        a = EMB1c() + "/share_ajax";
2631
        EMBqd(a, {
2632
            format: "JSON",
2633
            P: {
2634
                action_get_email: 1,
2635
                video_id: c,
2636
                list: d
2637
            },
2638
            C: function(a, c) {
2639
                this.c.innerHTML = c.email_html;
2640
                this.D();
2641
                this.focus();
2642
                var d = c.sharing_binary_url;
2643
                d && EMBVd(this, d, c.contacts, b)
2644
            },
2645
            B: this
2646
        })
2647
    }
2648
    EMB = EMBUd.prototype;
2649
    EMB.D = function() {
2650
        this.o = this.c.getElementsByTagName("form")[0];
2651
        EMBK(this.o, "submit", EMBk(this.Na, this));
2652
        EMBG("share-email-send", this.o);
2653
        this.Z = EMBG("share-email-success", this.c);
2654
        this.d = EMBG("share-email-remail", this.Z);
2655
        EMBK(this.d, "click", EMBk(function() {
2656
            EMBWd(this);
2657
            this.focus()
2658
        }, this));
2659
        this.aa = EMBG("share-email-recipients", this.c);
2660
        this.a = EMBG("share-email-note", this.c);
2661
        this.b = EMBG("share-email-preview-note", this.c);
2662
        EMBK(this.a, "keyup", EMBk(this.Ma, this))
2663
    };
2664
2665
    function EMBVd(a, b, c, d) {
0 ignored issues
show
Bug introduced by
The function EMBVd is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBVd = function() { /* ... */ }; instead.
Loading history...
2666
        EMBBd(b, EMBk(function() {
2667
            var a = EMBg("yt.sharing.ContactTools");
2668
            a && a.createContactTools(this.aa, EMBd, c, d)
2669
        }, a))
2670
    }
2671
    EMB.q = function() {
2672
        this.o && (this.$ && EMBWd(this), this.focus())
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2673
    };
2674
    EMB.focus = function() {
2675
        this.aa.focus()
2676
    };
2677
2678
    function EMBWd(a) {
0 ignored issues
show
Bug introduced by
The function EMBWd is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBWd = function() { /* ... */ }; instead.
Loading history...
2679
        a.$ = EMBe;
2680
        a.aa.value = "";
2681
        a.a.value = "";
2682
        a.b.innerHTML = "";
2683
        EMBZ(a.Z);
2684
        EMBUc(a.o)
2685
    }
2686
    EMB.Ma = function() {
2687
        var a = this.a.value,
2688
            a = a.substring(0, 300),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable a already seems to be declared on line 2687. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
2689
            a = EMBo(a),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable a already seems to be declared on line 2687. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
2690
            a = a.replace(/\n/g, "<br>");
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable a already seems to be declared on line 2687. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
2691
        this.b.innerHTML = a
2692
    };
2693
    EMB.Na = function(a) {
2694
        a.preventDefault();
2695
        var b = EMBF("button", EMBd, this.o)[0];
2696
        b.disabled = EMBc;
2697
        var c = EMBG("share-email-captcha", this.c),
2698
            d = EMBG("share-email-error", this.c),
2699
            e = EMBG("yt-alert-content", d),
2700
            a = EMB1c() + EMB2c(this.o.action);
2701
        EMBqd(a, {
2702
            format: "JSON",
2703
            method: "POST",
2704
            jb: EMBld(this.o),
2705
            C: function() {
2706
                this.$ = EMBc;
2707
                EMBUc(this.Z);
2708
                EMBZ(this.o);
2709
                EMBZ(d);
2710
                EMBZ(c)
2711
            },
2712
            va: function(a, b) {
2713
                b.captcha_html && (c.innerHTML = b.captcha_html, EMBUc(c));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2714
                b.errors && (e.innerHTML = b.errors.join("<br>"), EMBUc(d))
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2715
            },
2716
            ca: function() {
2717
                b.disabled =
2718
                    EMBe
2719
            },
2720
            B: this
2721
        })
2722
    };
2723
2724
    function EMBXd(a, b, c) {
0 ignored issues
show
Bug introduced by
The function EMBXd is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBXd = function() { /* ... */ }; instead.
Loading history...
2725
        this.c = a;
2726
        a = EMB1c() + "/share_ajax";
2727
        EMBqd(a, {
2728
            format: "JSON",
2729
            P: {
2730
                action_get_embed: 1,
2731
                video_id: b,
2732
                list: c
2733
            },
2734
            C: function(a, b) {
2735
                this.c.innerHTML = b.embed_html;
2736
                this.La = b.legacy_url;
2737
                this.Ka = b.legacy_code;
2738
                this.Ja = b.iframe_url;
2739
                this.Ia = b.iframe_code;
2740
                this.D();
2741
                EMB0.getInstance();
2742
                this.w && (this.w.checked = !EMBhd(EMBkd.ta));
2743
                this.O.checked = EMBhd(EMBkd.sa);
2744
                this.u && (this.u.checked = EMBhd(EMBkd.ua));
2745
                var c;
2746
                EMBfd("ems");
2747
                c = EMB1.ems !== EMBb ? EMB1.ems.toString() : EMBd;
2748
                c = c != EMBd ? c : "";
2749
                (c in this.k ? this.k[c] : EMBxa(this.k)).select();
2750
                EMB8(this);
2751
                this.q()
2752
            },
2753
            B: this
2754
        })
2755
    }
2756
    EMB = EMBXd.prototype;
2757
    EMB.D = function() {
2758
        this.a = EMBG("share-embed-code", this.c);
2759
        EMBK(this.a, "click", EMBk(this.Ta, this));
2760
        EMBYd(this);
2761
        EMBZd(this)
2762
    };
2763
2764
    function EMBYd(a) {
0 ignored issues
show
Bug introduced by
The function EMBYd is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBYd = function() { /* ... */ }; instead.
Loading history...
2765
        var b = EMBG("share-embed-size-list", a.c),
2766
            c = EMB$a("share-embed-size-radio", b);
2767
        a.k = {};
2768
        EMBr(c, function(a) {
2769
            EMBB(a, "share-embed-size-radio-custom") || (a = new EMB_d(a), this.k[a.name] = a)
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2770
        }, a);
2771
        var c = EMBxa(a.k).width / EMBxa(a.k).height,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable c already seems to be declared on line 2766. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
2772
            d = EMBG("share-embed-size-radio-custom", b),
2773
            c = new EMB0d(d, c);
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable c already seems to be declared on line 2766. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
2774
        a.k[c.name] = c;
2775
        a.d = c;
2776
        EMBDb(b, EMBk(a.kb, a), "share-embed-size");
2777
        b = EMBG("share-embed-customize", b);
2778
        EMBK(b, "keyup", EMBk(a.lb, a))
2779
    }
2780
2781
    function EMBZd(a) {
0 ignored issues
show
Bug introduced by
The function EMBZd is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBZd = function() { /* ... */ }; instead.
Loading history...
2782
        var b = {},
2783
            c = EMB$a("share-embed-option", a.c);
2784
        EMBr(c, function(a) {
2785
            b[a.name] = a
2786
        });
2787
        a.w = b["show-related"];
2788
        a.w && EMBK(a.w, "click", EMBk(a.fb, a));
2789
        a.O = b["delayed-cookies"];
2790
        EMBK(a.O, "click", EMBk(a.eb, a));
2791
        a.b = b["use-https"];
2792
        EMBK(a.b, "click", EMBk(a.hb, a));
2793
        a.u = b["use-flash-code"] || EMBd;
2794
        a.u && EMBK(a.u, "click", EMBk(a.gb, a))
2795
    }
2796
    EMB.q = function() {
2797
        this.focus()
2798
    };
2799
    EMB.focus = function() {
2800
        this.a && (this.a.focus(), this.a.select())
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2801
    };
2802
2803
    function EMB8(a) {
0 ignored issues
show
Bug introduced by
The function EMB8 is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMB8 = function() { /* ... */ }; instead.
Loading history...
2804
        var b = a.Ia,
2805
            c = a.Ja;
2806
        a.u && a.u.checked && (b = a.Ka, c = a.La);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2807
        a.O.checked && (c = c.replace("youtube.com", "youtube-nocookie.com"));
2808
        a.b.checked && (c = c.split("//"), c[0] = "https:", c = c.join("//"));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2809
        var d = {};
2810
        a.w && !a.w.checked && (d.rel = 0);
2811
        c = EMB9c(c, d);
2812
        d = EMB1d(a);
2813
        if (!d.width || 200 > d.width) d = EMBxa(a.k);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2814
        b = b.replace(/__url__/g, EMBo(c));
2815
        b = b.replace(/__width__/g, d.width + "");
2816
        b = b.replace(/__height__/g, d.height + "");
2817
        b = EMBo(b);
2818
        b != a.a.innerHTML && (a.a.innerHTML = b)
2819
    }
2820
2821
    function EMB1d(a) {
0 ignored issues
show
Bug introduced by
The function EMB1d is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMB1d = function() { /* ... */ }; instead.
Loading history...
2822
        return EMBza(a.k, function(a) {
2823
            return a.L.checked
2824
        }) || EMBd
2825
    }
2826
    EMB.fb = function() {
2827
        var a = this.w.checked,
2828
            b = EMB0.getInstance();
2829
        EMBid(EMBkd.ta, !a);
2830
        EMBjd(b);
2831
        EMB8(this)
2832
    };
2833
    EMB.eb = function() {
2834
        var a = this.O.checked,
2835
            b = EMB0.getInstance();
2836
        EMBid(EMBkd.sa, a);
2837
        EMBjd(b);
2838
        EMB8(this)
2839
    };
2840
    EMB.hb = function() {
2841
        EMB8(this)
2842
    };
2843
    EMB.gb = function() {
2844
        var a = this.u.checked,
2845
            b = EMB0.getInstance();
2846
        EMBid(EMBkd.ua, a);
2847
        EMBjd(b);
2848
        EMB8(this)
2849
    };
2850
    EMB.Ta = function() {
2851
        this.focus()
2852
    };
2853
    EMB.kb = function(a) {
2854
        a = this.k[EMBG("share-embed-size-radio", a.currentTarget).value];
2855
        a.select();
2856
        var b = EMB0.getInstance(),
2857
            c = a.name;
2858
        EMBfd("ems");
2859
        EMBed(c);
2860
        EMB1.ems = c.toString();
2861
        EMBjd(b);
2862
        EMB8(this);
2863
        a != this.d && this.focus()
2864
    };
2865
    EMB.lb = function() {
2866
        EMB8(this)
2867
    };
2868
2869
    function EMB_d(a) {
0 ignored issues
show
Bug introduced by
The function EMB_d is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMB_d = function() { /* ... */ }; instead.
Loading history...
2870
        this.name = a.value;
2871
        this.L = a;
2872
        this.width = parseInt(EMBI(this.L, "width"), 10);
2873
        this.height = parseInt(EMBI(this.L, "height"), 10)
2874
    }
2875
    EMB_d.prototype.select = function() {
2876
        this.L.checked = EMBc;
2877
        var a = EMBob(this.L, "li"),
2878
            b = EMBob(a, "ul"),
2879
            b = EMBF("li", "selected", b);
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable b already seems to be declared on line 2878. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
2880
        EMBr(b, function(a) {
2881
            EMBA(a, "selected")
2882
        });
2883
        EMBz(a, "selected")
2884
    };
2885
2886
    function EMB0d(a, b) {
0 ignored issues
show
Bug introduced by
The function EMB0d is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMB0d = function() { /* ... */ }; instead.
Loading history...
2887
        EMB_d.call(this, a);
2888
        this.d = b;
2889
        var c = EMBob(a, "li");
2890
        this.b = EMBG("share-embed-size-custom-width", c);
2891
        this.a = EMBG("share-embed-size-custom-height", c);
2892
        EMBK(this.b, "keyup", EMBk(this.f, this));
2893
        EMBK(this.a, "keyup", EMBk(this.e, this))
2894
    }
2895
    EMBn(EMB0d, EMB_d);
2896
    EMB0d.prototype.f = function() {
2897
        this.width = parseInt(this.b.value, 10);
2898
        this.height = Math.round(this.width / this.d) || 0;
2899
        this.a.value = this.height + ""
2900
    };
2901
    EMB0d.prototype.e = function() {
2902
        this.height = parseInt(this.a.value, 10);
2903
        this.width = Math.round(this.height * this.d) || 0;
2904
        this.b.value = this.width + ""
2905
    };
2906
2907
    function EMB2d(a, b, c, d) {
0 ignored issues
show
Bug introduced by
The function EMB2d is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMB2d = function() { /* ... */ }; instead.
Loading history...
2908
        this.c = a;
2909
        this.d = b || EMBd;
2910
        this.X = c || EMBd;
2911
        EMB3d(this, d)
2912
    }
2913
    var EMB4d = {
2914
        FACEBOOK: "share_facebook",
2915
        BLOGGER: "share_blogger",
2916
        TWITTER: "share_twitter"
2917
    };
2918
2919
    function EMB5d(a) {
0 ignored issues
show
Bug introduced by
The function EMB5d is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMB5d = function() { /* ... */ }; instead.
Loading history...
2920
        var b = ["h", "m", "s"],
2921
            c = EMBra(b);
2922
        c.reverse();
2923
        var d = {},
2924
            a = a.toLowerCase().match(/\d+\s*[hms]?/g) || [],
2925
            a = EMBqa(a, function(a) {
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable a already seems to be declared on line 2924. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
2926
                var b = (a.match(/[hms]/) || [""])[0];
2927
                return b ? (d[b] = parseInt(a.match(/\d+/)[0], 10), EMBe) : EMBc
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
2928
            });
2929
        for (a.reverse(); a.length && c.length;) {
2930
            var e = c.shift();
2931
            e in d || (d[e] = parseInt(a.shift(), 10))
2932
        }
2933
        if (a.length || 59 < d.s || 59 < d.m || 9 < d.h) return EMBd;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
2934
        var f = "";
2935
        EMBr(b, function(a) {
2936
            d[a] && (f += d[a] + a)
2937
        });
2938
        return f || EMBd
2939
    }
2940
2941
    function EMB3d(a, b) {
0 ignored issues
show
Bug introduced by
The function EMB3d is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMB3d = function() { /* ... */ }; instead.
Loading history...
2942
        var c = EMB1c() + "/share_ajax";
2943
        EMBqd(c, {
2944
            format: "JSON",
2945
            P: {
2946
                action_get_share_box: 1,
2947
                video_id: a.d,
2948
                list: a.X
2949
            },
2950
            C: function(a, c) {
2951
                this.c.innerHTML = c.share_html;
2952
                this.Sa = c.url_short;
2953
                this.Ra = c.url_long;
2954
                this.ib = c.lang;
2955
                this.Y = EMBd;
2956
                "session_index" in c && (this.Y = c.session_index);
2957
                this.D();
2958
                b && b();
2959
                this.q()
2960
            },
2961
            B: a
2962
        })
2963
    }
2964
    EMB = EMB2d.prototype;
2965
    EMB.D = function() {
2966
        var a = EMBG("share-panel-show-url-options");
2967
        EMBK(a, "click", EMBk(this.ab, this));
2968
        a = EMBG("share-panel-show-more");
2969
        EMBK(a, "click", EMBk(this.Xa, this));
2970
        a = EMBG("share-panel-embed", this.c);
2971
        EMBK(a, "click", EMBk(this.Va, this));
2972
        a = EMBG("share-panel-email", this.c);
2973
        EMBK(a, "click", EMBk(this.Ua, this));
2974
        (a = EMBG("share-panel-hangout", this.c)) && EMBK(a, "click", EMBk(this.Wa, this));
2975
        this.g = EMBG("share-panel-url", this.c);
2976
        EMBK(this.g, "click", EMBk(this.bb, this));
2977
        EMBK(this.g, "focus", EMBk(function() {
2978
            EMBz(this.g,
2979
                "focused")
2980
        }, this));
2981
        EMBK(this.g, "blur", EMBk(function() {
2982
            EMBA(this.g, "focused")
2983
        }, this));
2984
        this.oa = EMBG("share-panel-long-url", this.c);
2985
        this.e = EMBG("share-panel-start-at", this.c);
2986
        this.n = EMBG("share-panel-start-at-time", this.c);
2987
        EMBK(this.n, "keyup", EMBk(this.cb, this));
2988
        EMBK(this.n, "click", EMBk(this.$a, this));
2989
        EMBK(this.n, "focus", EMBk(function() {
2990
            EMBz(this.n, "focused")
2991
        }, this));
2992
        EMBK(this.n, "blur", EMBk(function() {
2993
            EMBA(this.n, "focused")
2994
        }, this));
2995
        this.na = EMBG("share-panel-hd", this.c);
2996
        this.f = EMBG("share-panel-url-options",
2997
            this.c);
2998
        EMBK(this.f, "click", EMBk(this.pa, this));
2999
        this.r = EMBG("share-panel-services", this.c);
3000
        this.ia = EMBG("share-panel-buttons", this.c);
3001
        a = EMBG("share-panel-show-more", this.c);
3002
        EMBK(a, "click", EMBk(this.Za, this));
3003
        EMBDb(this.c, EMBk(this.Ya, this), "share-service-button")
3004
    };
3005
    EMB.q = function() {
3006
        this.g && !EMBB(this.g, "focused") && (this.g.focus(), this.g.select())
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3007
    };
3008
    EMB.pa = function() {
3009
        if (!EMBB(this.g, "focused")) {
3010
            var a = this.Sa;
3011
            this.oa && this.oa.checked && (a = this.Ra);
3012
            var b = {};
3013
            this.na && this.na.checked && (b.hd = 1);
3014
            var c = !this.e.disabled && this.e.checked && EMB5d(this.n.value);
3015
            c && (b.t = c);
3016
            a = EMB3c(EMB5c([a], b));
3017
            this.g.value != a && (this.g.value = a)
3018
        }
3019
    };
3020
    EMB.cb = function() {
3021
        this.e.checked = EMBc;
3022
        this.pa()
3023
    };
3024
    EMB.$a = function() {
3025
        this.e.checked = EMBc;
3026
        this.n.value.match(/[1-9]/) || (this.n.value = "")
3027
    };
3028
    EMB.bb = function() {
3029
        this.g.select()
3030
    };
3031
    EMB.Ua = function() {
3032
        var a = EMB6.getInstance();
3033
        EMB7(a, this.ia);
3034
        EMB7(a, this.f);
3035
        EMB7(a, this.r);
3036
        this.b && EMBZ(this.b);
3037
        this.a || (this.a = EMBG("share-panel-email-container", this.c));
3038
        EMBTc(this.a);
3039
        !EMBI(this.a, "disabled") && EMBSc(this.a) && (this.ja ? this.ja.q() : this.ja = new EMBUd(this.a, this.Y, this.d, this.X));
3040
        EMBad && EMBbd("share_mail")
3041
    };
3042
    EMB.Wa = function() {
3043
        var a = EMBO("PLAYER_REFERENCE");
3044
        a && a.pauseVideo && a.pauseVideo();
3045
        var a = EMB3c(EMB5c(["http://web.archive.org/web/20120609184921/https://talkgadget.google.com/hangouts"], {
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable a already seems to be declared on line 3043. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3046
                hl: this.ib,
3047
                authuser: this.Y,
3048
                gid: "youtube",
3049
                gd: this.d
3050
            })),
3051
            b = window.screen.height,
3052
            c = Math.min(0.9 * window.screen.width, 1E3),
3053
            b = Math.min(0.9 * b, 800);
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable b already seems to be declared on line 3051. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3054
        EMBcd("HANGOUT", this.d + "");
3055
        EMBdd(a, {
3056
            width: c,
3057
            height: b
3058
        })
3059
    };
3060
    EMB.Va = function() {
3061
        var a = EMB6.getInstance();
3062
        EMB7(a, this.ia);
3063
        EMB7(a, this.f);
3064
        EMB7(a, this.r);
3065
        this.a && EMBZ(this.a);
3066
        this.b || (this.b = EMBG("share-panel-embed-container", this.c));
3067
        EMBTc(this.b);
3068
        !EMBI(this.b, "disabled") && EMBSc(this.b) && (this.ka ? this.ka.q() : this.ka = new EMBXd(this.b, this.d, this.X));
3069
        EMBad && EMBbd("share_embed")
3070
    };
3071
    EMB.Ya = function(a) {
3072
        a = EMBI(a.currentTarget, "service-name") || "";
3073
        (a = EMB4d[a]) && EMBad && EMBbd(a)
3074
    };
3075
    EMB.ab = function() {
3076
        EMB7(EMB6.getInstance(), this.r);
3077
        this.a && EMBZ(this.a);
3078
        this.b && EMBZ(this.b)
3079
    };
3080
    EMB.Xa = function() {
3081
        EMB7(EMB6.getInstance(), this.f);
3082
        this.a && EMBZ(this.a);
3083
        this.b && EMBZ(this.b)
3084
    };
3085
    EMB.Za = function() {
3086
        this.a && EMBZ(this.a);
3087
        this.b && EMBZ(this.b)
3088
    };
3089
    var EMB6d = 0;
3090
    new function(a, b) {
0 ignored issues
show
Unused Code Best Practice introduced by
The object created with new function(Param, Para...d = b; EMB6d++; }(0, 0) is not used but discarded. Consider invoking another function instead of a constructor if you are doing this purely for side effects.
Loading history...
3091
        this.start = a;
3092
        this.end = b;
3093
        EMB6d++
3094
    }(0, 0);
3095
3096
    function EMB7d() {
0 ignored issues
show
Bug introduced by
The function EMB7d is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMB7d = function() { /* ... */ }; instead.
Loading history...
3097
        this.a = {}
3098
    }
3099
    EMBn(EMB7d, EMBKd);
3100
    EMBh(EMB7d);
3101
    EMB = EMB7d.prototype;
3102
    EMB.A = "button";
3103
    EMB.M = function() {
3104
        EMB4(this, "click", this.sb);
3105
        EMB4(this, "keydown", this.tb);
3106
        EMB4(this, "keypress", this.ub)
3107
    };
3108
    EMB.sb = function(a) {
3109
        a && !a.disabled && (EMB8d(this, a), this.click(a))
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3110
    };
3111
    EMB.tb = function(a, b, c) {
3112
        if (!c.altKey && (!c.ctrlKey && !c.shiftKey) && (b = EMB9(this, a))) {
3113
            var d = function(a) {
3114
                var b = "";
3115
                a.tagName && (b = a.tagName.toLowerCase());
3116
                return "ul" == b || "table" == b
3117
            };
3118
            if (d = d(b) ? b : EMBjb(b, d)) {
3119
                var d = d.tagName.toLowerCase(),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable d already seems to be declared on line 3113. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3120
                    e;
3121
                "ul" == d ? e = this.xb : "table" == d && (e = this.wb);
3122
                e && EMB9d(this, a, b, c, EMBk(e, this))
3123
            }
3124
        }
3125
    };
3126
3127
    function EMB9d(a, b, c, d, e) {
0 ignored issues
show
Bug introduced by
The function EMB9d is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMB9d = function() { /* ... */ }; instead.
Loading history...
3128
        var f = EMBSc(c),
3129
            g = 9 == d.keyCode;
3130
        g || 32 == d.keyCode || 13 == d.keyCode ? (d = EMB$d(a, c)) ? (b = d.firstElementChild != EMBb ? d.firstElementChild : EMBib(d.firstChild), "a" == b.tagName.toLowerCase() ? window.location = b.href : EMBHb(b)) : g && EMBae(a, b) : f ? 27 == d.keyCode ? (EMB$d(a, c), EMBae(a, b)) : e(b, c, d) : (a = EMBB(b, EMB3(a, "reverse")) ? 38 : 40, d.keyCode == a && (EMBHb(b), d.preventDefault()))
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3131
    }
3132
    EMB.ub = function(a, b, c) {
3133
        !c.altKey && (!c.ctrlKey && !c.shiftKey) && (a = EMB9(this, a), EMBSc(a) && c.preventDefault())
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3134
    };
3135
3136
    function EMB$d(a, b) {
0 ignored issues
show
Bug introduced by
The function EMB$d is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMB$d = function() { /* ... */ }; instead.
Loading history...
3137
        var c = EMB3(a, "menu-item-highlight"),
3138
            d = EMBG(c, b);
3139
        d && EMBA(d, c);
3140
        return d
3141
    }
3142
3143
    function EMBbe(a, b, c) {
0 ignored issues
show
Bug introduced by
The function EMBbe is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBbe = function() { /* ... */ }; instead.
Loading history...
3144
        EMBz(c, EMB3(a, "menu-item-highlight"));
3145
        b.setAttribute("aria-activedescendant", c.getAttribute("id"))
3146
    }
3147
    EMB.wb = function(a, b, c) {
3148
        var d = EMB$d(this, b),
3149
            b = EMBwb("table", b),
3150
            e = EMBwb("tr", b),
3151
            e = EMBF("td", EMBd, e).length,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable e already seems to be declared on line 3150. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3152
            b = EMBF("td", EMBd, b),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable b already seems to be declared on line 3149. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3153
            d = EMBce(d, b, e, c); - 1 != d && (EMBbe(this, a, b[d]), c.preventDefault())
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Comprehensibility Naming Best Practice introduced by
The variable d already seems to be declared on line 3148. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3154
    };
3155
    EMB.xb = function(a, b, c) {
3156
        if (40 == c.keyCode || 38 == c.keyCode) {
3157
            var d = EMB$d(this, b),
3158
                b = EMBF("li", EMBd, b),
3159
                d = EMBce(d, b, 1, c);
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable d already seems to be declared on line 3157. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3160
            EMBbe(this, a, b[d]);
3161
            c.preventDefault()
3162
        }
3163
    };
3164
3165
    function EMBce(a, b, c, d) {
0 ignored issues
show
Bug introduced by
The function EMBce is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBce = function() { /* ... */ }; instead.
Loading history...
3166
        var e = b.length,
3167
            a = EMBq(b, a);
3168 View Code Duplication
        if (-1 == a)
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
3169
            if (38 == d.keyCode) a = e - c;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3170
            else {
3171
                if (37 == d.keyCode || 38 == d.keyCode || 40 == d.keyCode) a = 0
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3172
            }
3173
        else 39 == d.keyCode ? (a % c == c - 1 && (a -= c), a += 1) : 37 == d.keyCode ? (0 == a % c && (a += c), a -= 1) : 38 == d.keyCode ? (a < c && (a += e), a -= c) : 40 == d.keyCode && (a >= e - c && (a -= e), a += c);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Best Practice introduced by
Comparing 0 to a % c using the == operator is not safe. Consider using === instead.
Loading history...
3174
        return a
3175
    }
3176
3177
    function EMBde(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBde is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBde = function() { /* ... */ }; instead.
Loading history...
3178
        if (!EMBIa || !EMBB(b, EMB3(a, "masked"))) return EMBd;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3179
        var c = b.iframeMask;
3180
        c || (c = document.createElement("iframe"), c.src = 'javascript:""', c.className = EMB3(a, "menu-mask"), b.iframeMask = c);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3181
        return c
3182
    }
3183
3184
    function EMBee(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBee is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBee = function() { /* ... */ }; instead.
Loading history...
3185
        if (a.getData(b, "button-menu-root-container")) {
3186
            var c = a.getData(b, "button-menu-root-container");
3187
            return EMBH(b, c)
3188
        }
3189
        return document.body
3190
    }
3191
    EMB.Ea = function(a) {
3192
        if (a) {
3193
            var b = EMB9(this, a);
3194
            if (b) {
3195
                a.setAttribute("aria-pressed", "true");
3196
                a.setAttribute("aria-expanded", "true");
3197
                b.originalParentNode = b.parentNode;
3198
                b.activeButtonNode = a;
3199
                b.parentNode.removeChild(b);
3200
                this.getData(a, "button-has-sibling-menu") ? a.parentNode.appendChild(b) : EMBee(this, a).appendChild(b);
3201
                b.style.minWidth = a.offsetWidth - 2 + "px";
3202
                var c = EMBde(this, a);
3203
                c && document.body.appendChild(c);
3204
                var c = EMBH(a, EMB3(this, "group")),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable c already seems to be declared on line 3202. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3205
                    d = !!this.getData(a, "button-menu-ignore-group"),
3206
                    c = c && !d ? c : a,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable c already seems to be declared on line 3202. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3207
                    d = 5,
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable d already seems to be declared on line 3205. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3208
                    e = 4,
3209
                    f =
3210
                    EMBMc(a);
3211
                if (EMBB(a, EMB3(this, "reverse"))) {
3212
                    d = 4;
3213
                    e = 5;
3214
                    f = f.top + "px";
3215
                    try {
3216
                        b.style.maxHeight = f
3217
                    } catch (g) {}
0 ignored issues
show
Coding Style Comprehensibility Best Practice introduced by
Empty catch clauses should be used with caution; consider adding a comment why this is needed.
Loading history...
3218
                }
3219
                EMBB(a, "flip") && (EMBB(a, EMB3(this, "reverse")) ? (d = 6, e = 7) : (d = 7, e = 6));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3220
                var h;
3221
                this.getData(a, "button-has-sibling-menu") ? h = EMBIc(c) : this.getData(a, "button-menu-root-container") && (h = EMBee(this, a));
3222
                EMBv && !EMBy("8") && (h = EMBd);
3223
                var i;
3224
                h && (i = EMBMc(h), i = new EMBT(-i.top, i.left, i.top, -i.left));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3225
                h = new EMBs(0, 1);
3226
                if (f = EMBde(this, a)) {
3227
                    var j = EMBY(b);
3228
                    f.style.width = j.width + "px";
3229
                    f.style.height = j.height + "px";
3230
                    EMBDd(c, d, f, e, h, i)
0 ignored issues
show
Bug introduced by
The variable i seems to not be initialized for all possible execution paths. Are you sure EMBDd handles undefined variables?
Loading history...
3231
                }
3232
                EMBDd(c,
3233
                    d, b, e, h, i);
3234
                EMBUc(b);
3235
                this.N(a, "button-menu-action", EMBc);
3236
                EMBz(a, EMB3(this, "active"));
3237
                i = EMBk(this.rb, this, a);
3238
                b = EMBK(document, "click", i);
3239
                i = EMBK(document, "contextmenu", i);
3240
                this.setData(a, "button-listener", b);
3241
                this.setData(a, "button-context-menu-listener", i)
3242
            }
3243
        }
3244
    };
3245
3246
    function EMBae(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBae is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBae = function() { /* ... */ }; instead.
Loading history...
3247
        if (b) {
3248
            var c = EMB9(a, b);
3249
            if (c) {
3250
                b.setAttribute("aria-pressed", "false");
3251
                b.setAttribute("aria-expanded", "false");
3252
                EMBZ(c);
3253
                a.N(b, "button-menu-action", EMBe);
3254
                var d = EMBde(a, b);
3255
                EMBP(function() {
3256
                    d && d.parentNode && d.parentNode.removeChild(d);
3257
                    c.originalParentNode && (c.parentNode.removeChild(c), c.originalParentNode.appendChild(c), c.originalParentNode = EMBd, c.activeButtonNode = EMBd)
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3258
                }, 1)
3259
            }
3260
            var e = EMBH(b, EMB3(a, "group"));
3261
            EMBA(b, EMB3(a, "active"));
3262
            e && EMBA(e, EMB3(a, "group-active"));
3263
            if (e = a.getData(b, "button-listener")) EMBGb(e),
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3264
                EMBJ(b, "button-listener");
3265
            if (e = a.getData(b, "button-context-menu-listener")) EMBGb(e), EMBJ(b, "button-context-menu-listener")
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3266
        }
3267
    }
3268
    EMB.rb = function(a, b) {
3269
        var c;
3270
        c = b || window.event;
3271
        c = c.target || c.srcElement;
3272
        3 == c.nodeType && (c = c.parentNode);
3273
        var d = EMBH(c, EMB3(this));
3274
        if (d) {
3275
            var d = EMB9(this, d),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable d already seems to be declared on line 3273. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3276
                e = EMB9(this, a);
3277
            if (d == e) return
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3278
        }
3279
        if (!EMBH(c, EMB3(this, "menu")) || EMBB(c, EMB3(this, "menu-item")) || EMBB(c, EMB3(this, "menu-close")))
3280
            if (EMBae(this, a), (d = EMBH(c, EMB3(this, "menu"))) && this.getData(a, "button-menu-indicate-selected")) {
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3281
                if (e = EMBG(EMB3(this, "content"), a)) {
3282
                    var f;
3283
                    EMB4a && "innerText" in c ? f = c.innerText.replace(/(\r\n|\r|\n)/g, "\n") : (f = [], EMBnb(c, f, EMBc),
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3284
                        f = f.join(""));
3285
                    f = f.replace(/ \xAD /g, " ").replace(/\xAD/g, "");
3286
                    f = f.replace(/\u200B/g, "");
3287
                    EMB4a || (f = f.replace(/ +/g, " "));
3288
                    " " != f && (f = f.replace(/^\s*/, ""));
3289
                    if ("textContent" in e) e.textContent = f;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3290
                    else if (e.firstChild && 3 == e.firstChild.nodeType) {
3291
                        for (; e.lastChild != e.firstChild;) e.removeChild(e.lastChild);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3292
                        e.firstChild.data = f
3293
                    } else EMBhb(e), e.appendChild(EMBD(e).createTextNode(f))
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3294
                }
3295
                e = EMB3(this, "menu-item-selected");
3296
                (d = EMBG(e, d)) && EMBA(d, e);
3297
                EMBz(c.parentNode, e)
3298
            }
3299
    };
3300
3301
    function EMB9(a, b) {
0 ignored issues
show
Bug introduced by
The function EMB9 is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMB9 = function() { /* ... */ }; instead.
Loading history...
3302
        if (!b.widgetMenu) {
3303
            var c = a.getData(b, "button-menu-id"),
3304
                c = c && EMBE(c),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable c already seems to be declared on line 3303. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3305
                d = EMB3(a, "menu");
3306
            c ? (EMBz(c, d), EMBz(c, EMB3(a, "menu-external"))) : c = EMBG(d, b);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3307
            b.widgetMenu = c
3308
        }
3309
        return b.widgetMenu
3310
    }
3311
3312
    function EMB8d(a, b) {
0 ignored issues
show
Bug introduced by
The function EMB8d is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMB8d = function() { /* ... */ }; instead.
Loading history...
3313
        if (a.getData(b, "button-toggle")) {
3314
            var c = EMBH(b, EMB3(a, "group"));
3315
            if (c && a.getData(c, "button-toggle-group")) {
3316
                var d = a.getData(c, "button-toggle-group"),
3317
                    c = EMB$a(EMB3(a), c),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable c already seems to be declared on line 3314. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3318
                    e = EMB3(a, "toggled"),
3319
                    f = EMBB(b, e);
3320
                EMBr(c, function(a) {
3321
                    a != b || "optional" == d && f ? EMBA(a, e) : EMBz(b, e)
3322
                })
3323
            } else EMB8a(b, EMB3(a, "toggled"))
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3324
        }
3325
    }
3326
    EMB.click = function(a) {
3327
        if (EMB9(this, a)) {
3328
            var b = EMB9(this, a),
3329
                c = EMBH(b.activeButtonNode || b.parentNode, EMB3(this));
3330
            c && c != a ? (EMBae(this, c), EMBP(EMBk(this.Ea, this, a), 1)) : EMBSc(b) ? EMBae(this, a) : this.Ea(a);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3331
            a.focus()
3332
        }
3333
        this.N(a, "button-action")
3334
    };
3335
    new EMBS;
0 ignored issues
show
Unused Code Best Practice introduced by
The object created with new EMBS() is not used but discarded. Consider invoking another function instead of a constructor if you are doing this purely for side effects.
Loading history...
3336
3337
    function EMBfe() {
0 ignored issues
show
Bug introduced by
The function EMBfe is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBfe = function() { /* ... */ }; instead.
Loading history...
3338
        var a = EMBJa();
3339
        return (!a ? 0 : 0 <= a.toLowerCase().indexOf("android 2.2")) ? EMBc : (a = document.createElement("video")) && a.canPlayType && (a.canPlayType('video/mp4; codecs="avc1.42001E, mp4a.40.2"') || a.canPlayType('video/webm; codecs="vp8.0, vorbis"'))
3340
    };
3341
3342
    function EMBge() {
0 ignored issues
show
Bug introduced by
The function EMBge is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBge = function() { /* ... */ }; instead.
Loading history...
3343
        this.a = [];
3344
        EMBhe(this)
3345
    }
3346
    EMBh(EMBge);
3347
    EMB = EMBge.prototype;
3348
    EMB.i = 0;
3349
    EMB.z = 0;
3350
    EMB.F = 0;
3351
    EMB.da = "";
3352
    EMB.p = 0;
3353
    EMB.load = function(a) {
3354
        3 <= this.p ? a(this) : this.a.push(a)
3355
    };
3356
    EMB.isSupported = function(a, b, c) {
3357
        a = "string" == typeof a ? a.split(".") : [a, b, c];
3358
        a[0] = parseInt(a[0], 10) || 0;
3359
        a[1] = parseInt(a[1], 10) || 0;
3360
        a[2] = parseInt(a[2], 10) || 0;
3361
        return this.i > a[0] || this.i == a[0] && this.z > a[1] || this.i == a[0] && this.z == a[1] && this.F >= a[2]
3362
    };
3363
3364
    function EMBhe(a) {
0 ignored issues
show
Bug introduced by
The function EMBhe is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBhe = function() { /* ... */ }; instead.
Loading history...
3365
        if (3 > a.p)
3366
            if (1 > a.p) {
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3367
                var b = EMBg("window.navigator.plugins"),
3368
                    c = EMBg("window.navigator.mimeTypes"),
3369
                    b = b && b["Shockwave Flash"],
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable b already seems to be declared on line 3367. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3370
                    c = c && c["application/x-shockwave-flash"],
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable c already seems to be declared on line 3368. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3371
                    c = b && c && c.enabledPlugin && b.description || "";
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable c already seems to be declared on line 3368. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3372 View Code Duplication
                if (b = c) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
3373
                    var d = b.indexOf("Shockwave Flash");
3374
                    0 <= d && (b = b.substr(d + 15));
3375
                    for (var d = b.split(" "), e = "", b = "", f = 0, g = d.length; f < g; f++)
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable b already seems to be declared on line 3367. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
Comprehensibility Naming Best Practice introduced by
The variable d already seems to be declared on line 3373. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3376
                        if (e)
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3377
                            if (b) break;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3378
                            else b = d[f];
3379
                    else e = d[f];
3380
                    e = e.split(".");
3381
                    d = parseInt(e[0], 10) || 0;
3382
                    e = parseInt(e[1], 10) || 0;
3383
                    f = 0;
0 ignored issues
show
Complexity Coding Style introduced by
You seem to be assigning a new value to the loop variable f here. Please check if this was indeed your intention. Even if it was, consider using another kind of loop instead.
Loading history...
3384
                    if ("r" == b.charAt(0) || "d" == b.charAt(0)) f = parseInt(b.substr(1),
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3385
                        10) || 0;
3386
                    b = [d, e, f]
3387
                } else b = [0, 0, 0];
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3388
                a.da = c;
3389
                c = b;
3390
                a.i = c[0];
3391
                a.z = c[1];
3392
                a.F = c[2];
3393
                a.p = 1;
3394
                0 < a.i ? EMBie(a) : EMBhe(a)
3395
            } else 2 > a.p ? EMBje(a) : EMBie(a)
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3396
    }
3397
    EMB.Ga = function(a) {
3398
        a ? (a = a.split(" ")[1].split(","), a = [parseInt(a[0], 10) || 0, parseInt(a[1], 10) || 0, parseInt(a[2], 10) || 0]) : a = [0, 0, 0];
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3399
        this.i = a[0];
3400
        this.z = a[1];
3401
        this.F = a[2];
3402
        this.p = 2;
3403
        0 < this.i ? EMBie(this) : EMBhe(this)
3404
    };
3405
3406
    function EMBie(a) {
0 ignored issues
show
Bug introduced by
The function EMBie is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBie = function() { /* ... */ }; instead.
Loading history...
3407
        if (3 > a.p) {
3408
            a.p = 3;
3409
            for (var b = 0, c = a.a.length; b < c; b++) a.a[b](a);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3410
            a.a = []
3411
        }
3412
    }
3413
3414
    function EMBje(a) {
0 ignored issues
show
Bug introduced by
The function EMBje is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBje = function() { /* ... */ }; instead.
Loading history...
3415
        function b() {
3416
            if (c && "GetVariable" in c) try {
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3417
                d = c.GetVariable("$version")
3418
            } catch (a) {
3419
                d = ""
3420
            }
3421
            d || 10 <= i ? (e && f && e.removeChild(f), h(d || "")) : (i++, EMBP(b, 10))
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3422
        }
3423
        var c, d, e, f;
3424
        if (EMBec) {
3425
            try {
3426
                c = new ActiveXObject("ShockwaveFlash.ShockwaveFlash")
0 ignored issues
show
Bug introduced by
The variable ActiveXObject seems to be never declared. If this is a global, consider adding a /** global: ActiveXObject */ comment.

This checks looks for references to variables that have not been declared. This is most likey a typographical error or a variable has been renamed.

To learn more about declaring variables in Javascript, see the MDN.

Loading history...
3427
            } catch (g) {
3428
                c = EMBd
3429
            }
3430
            c || a.Ga("")
3431
        } else e = document.getElementsByTagName("body")[0], f = document.createElement("object"), f.setAttribute("type", "application/x-shockwave-flash"), c = e.appendChild(f);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3432
        var h = EMBk(a.Ga, a),
3433
            i = 0;
3434
        EMBP(b, 0)
3435
    };
3436
3437
    function EMBke(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBke is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBke = function() { /* ... */ }; instead.
Loading history...
3438
        a = EMBE(a);
3439
        b instanceof EMBR || (b = new EMBR(b));
3440
        if (window != window.top) {
3441
            var c = EMBd;
3442
            document.referrer && (c = document.referrer.substring(0, 128));
3443
            b.args.framer = c
3444
        }
3445
        EMBle(function(c) {
3446
            if (c.isSupported(b.minVersion) || EMBO("IS_OPERA_MINI")) {
3447
                var e = (-1 < c.da.indexOf("Gnash") && -1 == c.da.indexOf("AVM2") || 9 == c.i && 1 == c.z || 9 == c.i && 0 == c.z && 1 == c.F ? EMBe : 9 <= c.i) && b.url || (-1 < navigator.userAgent.indexOf("Sony/COM2") && !c.isSupported(9, 1, 58) ? EMBe : EMBc) && b.urlV9As2 || b.urlV8 || b.url,
0 ignored issues
show
Best Practice introduced by
Comparing 1 to c.F using the == operator is not safe. Consider using === instead.
Loading history...
Best Practice introduced by
Comparing 1 to c.z using the == operator is not safe. Consider using === instead.
Loading history...
Bug introduced by
The variable navigator seems to be never declared. If this is a global, consider adding a /** global: navigator */ comment.

This checks looks for references to variables that have not been declared. This is most likey a typographical error or a variable has been renamed.

To learn more about declaring variables in Javascript, see the MDN.

Loading history...
3448
                    c = a,
3449
                    f = b;
3450
                if ((c = EMBE(c)) && e && f) {
3451
                    f instanceof
3452
                    EMBR || (f = new EMBR(f));
3453
                    var g = EMBAa(f.attrs),
3454
                        h = EMBAa(f.params);
3455
                    h.flashvars = EMB8c(f.args);
3456
                    if (EMBec) {
3457
                        g.classid = "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000";
3458
                        h.movie = e;
3459
                        var e = document.createElement("object"),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable e already seems to be declared on line 3447. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3460
                            i;
3461
                        for (i in g) e.setAttribute(i, g[i]);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3462
                        for (i in h) g = document.createElement("param"), g.setAttribute("name", i), g.setAttribute("value", h[i]), e.appendChild(g)
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3463
                    } else {
3464
                        g.type = "application/x-shockwave-flash";
3465
                        g.src = e;
3466
                        e = document.createElement("embed");
3467
                        for (i in g) e.setAttribute(i, g[i]);
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3468
                        for (i in h) e.setAttribute(i,
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3469
                            h[i])
3470
                    }
3471
                    i = document.createElement("div");
3472
                    i.appendChild(e);
3473
                    c.innerHTML = i.innerHTML
3474
                }
3475
            } else 0 == c.i && b.fallback ? b.fallback() : 0 == c.i && b.fallbackMessage ? b.fallbackMessage() : a.innerHTML = '<div id="flash-upgrade">' + EMBdc("FLASH_UPGRADE", EMBb, 'You need to upgrade your Adobe Flash Player to watchthis video. <br> <a href="http://web.archive.org/web/20120609184921/http://get.adobe.com/flashplayer/">Download it from Adobe.</a>') + "</div>"
0 ignored issues
show
Best Practice introduced by
Comparing 0 to c.i using the == operator is not safe. Consider using === instead.
Loading history...
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3476
        })
3477
    }
3478
3479
    function EMBle(a) {
0 ignored issues
show
Bug introduced by
The function EMBle is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBle = function() { /* ... */ }; instead.
Loading history...
3480
        EMBge.getInstance().load(function(b) {
3481
            var c = EMB0.getInstance(),
3482
                d = [b.i, b.z, b.F].join(".");
3483
            EMBfd("fv");
3484
            EMBed(d);
3485
            EMB1.fv = d.toString();
3486
            EMBjd(c);
3487
            a(b)
3488
        })
3489
    };
3490
3491
    function EMBme() {
0 ignored issues
show
Bug introduced by
The function EMBme is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBme = function() { /* ... */ }; instead.
Loading history...
3492
        this.a = {}
3493
    }
3494
    EMBn(EMBme, EMB5);
3495
    EMBh(EMBme);
3496
    EMB = EMBme.prototype;
3497
    EMB.A = "range-tooltip";
3498
    EMB.H = EMBd;
3499
    EMB.format = EMBd;
3500
    EMB.max = 0;
3501
    EMB.Aa = 0;
3502
    EMB.za = 0;
3503
    EMB.S = EMBd;
3504
    EMB.Fa = function() {
3505
        return " "
3506
    };
3507
    EMB.ga = function(a, b) {
3508
        this.H = b;
3509
        var c = this.getData(a, this.A + "-format");
3510
        c && (this.format = EMBg(c));
3511
        this.max = parseInt(this.getData(a, "range-max"), 10);
3512
        this.Aa = EMBX(a).x;
3513
        this.za = EMBY(a).width
3514
    };
3515
    EMB.M = function() {
3516
        EMB5.prototype.M.call(this);
3517
        EMB4(this, "mousemove", this.xa);
3518
        EMB4(this, "touchmove", this.ya)
3519
    };
3520
    EMB.U = function(a, b) {
3521
        this.Ba || (EMB5.prototype.U.call(this, a, b), EMBK(document, "mousemove", EMBL))
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3522
    };
3523
    EMB.J = function(a, b) {
3524
        EMB5.prototype.J.call(this, a, b);
3525
        EMBFb("mousemove")
3526
    };
3527
    EMB.fa = function(a, b, c) {
3528
        this.S || (this.S = c.changedTouches[0].identifier, EMB5.prototype.fa.call(this, a, b, c), EMBK(document, "touchmove", EMBL), this.ya(0, b, c))
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3529
    };
3530
    EMB.T = function(a, b, c) {
3531
        EMB5.prototype.T.call(this, a, b, c);
3532
        EMBFb("touchmove");
3533
        this.Ba = EMBc;
3534
        EMBRd(function() {
3535
            this.Ba = EMBe
3536
        }, this);
3537
        this.S = EMBd
3538
    };
3539
    EMB.xa = function(a, b, c) {
3540
        if (this.H) {
3541
            b = (c.pageX - this.Aa) / this.za;
3542
            b = Math.min(Math.max(b, 0), 1);
3543
            b *= this.max;
3544
            this.format && (b = this.format(b));
3545
            EMBOd(this, a, b);
3546
            var b = EMBG(EMB3(this, "tip-body"), this.H),
3547
                d = this.H,
3548
                e = new EMBs(-5, 0),
3549
                a = EMBX(a);
3550
            EMBEd(new EMBs(c.pageX + e.x, a.y + e.y), d, 0);
3551
            c = (EMBY(b).width + 3) / -2 - -5;
3552
            b.style.left = c + "px"
3553
        }
3554
    };
3555
    EMB.ya = function(a, b, c) {
3556
        if (this.H)
3557
            for (a = 0; a < c.changedTouches.length; a++) {
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3558
                var d = c.changedTouches[a];
3559
                if (d.identifier == this.S) {
3560
                    c.pageX = d.pageX;
3561
                    c.pageY = d.pageY;
3562
                    this.xa(EMBHd(EMB3(this), d.target, EMBGd(b, EMB3(this))), 0, c);
3563
                    break
3564
                }
3565
            }
3566
    };
3567
3568
    function EMBne() {}
0 ignored issues
show
Bug introduced by
The function EMBne is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBne = function() { /* ... */ }; instead.
Loading history...
3569
    EMB = EMBne.prototype;
3570
    EMB.wa = EMBe;
3571
    EMB.G = EMBd;
3572
    EMB.R = EMBd;
3573
    EMB.qb = function() {
3574
        EMB7a(this.G, "actions-mode", EMBe)
3575
    };
3576
    EMB.pb = function() {
3577
        600 > this.G.clientWidth && EMBz(this.R, "small-view")
3578
    };
3579
    EMB.ea = EMBd;
3580
    EMB.zb = function(a, b) {
3581
        if (!this.wa) {
3582
            this.wa = EMBc;
3583
            this.G = EMBG("player-root", EMBb);
3584
            this.R = EMBG("player-actions-container", this.G);
3585
            var c = EMBG("player-actions-close", this.R);
3586
            EMBK(c, "click", EMBk(this.qb, this))
3587
        }
3588
        EMB7a(this.G, "actions-mode", EMBc);
3589
        this.ea ? this.ea.q() : (c = EMBG("player-actions-share", this.R), this.ea = new EMB2d(c, a, b, EMBk(this.pb, this)))
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3590
    };
3591
    var EMBoe = EMBg("yt.playerConfig") || {};
3592
    EMBm("yt.playerConfig", EMBoe);
3593
    var EMBpe = EMBg("yt.player.playerReferences_") || {};
3594
    EMBm("yt.player.playerReferences_", EMBpe);
3595
3596
    function EMBqe(a) {
0 ignored issues
show
Bug introduced by
The function EMBqe is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBqe = function() { /* ... */ }; instead.
Loading history...
3597
        var b = EMBE("player");
3598
        if (b) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if b is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
3599
            var c;
3600
            c = a instanceof EMBR ? a : new EMBR(a);
3601
            var a = !!c.disable.html5,
3602
                d = !!c.disable.flash,
3603
                e = EMBfe() && (EMBg("yt.player.VideoPlayer") || c.assets.js);
3604
            c.args.eurl || (c.args.eurl = EMBre());
3605
            c.args.enablejsapi = "1";
3606
            var f = EMBe;
3607
            c.html5 && (f = EMBc);
3608
            f && !e && (c.args.html5_unavailable = "1");
3609
            var g = {
3610
                    pubsub: new EMBS,
3611
                    subscribedEvents: {}
3612
                },
3613
                h = b;
3614
            EMBse(b, c);
3615
            var h = EMBG("player-container", b),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable h already seems to be declared on line 3613. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3616
                b = "player" + (h[EMBea] || (h[EMBea] = ++EMBfa)),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable b already seems to be declared on line 3597. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3617
                i = {
3618
                    target: h,
3619
                    playerId: b,
3620
                    playerapiid: c.args.playerapiid,
3621
                    jsapicallback: EMBte(c.args.jsapicallback),
3622
                    elementId: c.attrs.id,
3623
                    api: g,
3624
                    onReadyCalled: EMBe,
3625
                    eventLabel: c.args.el,
3626
                    actions: new EMBne
3627
                };
3628
            c.args.playerapiid = b;
3629
            c.args.jsapicallback = "ytPlayerOnYouTubePlayerReady";
3630
            var j, k, l = EMBue;
3631
            f && e ? (j = EMBve, d || (k = l)) : (j = l, e && !a && (k = EMBve));
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3632
            k && (c.fallback = function(a) {
3633
                a = a || c;
3634
                a instanceof EMBR || (a = new EMBR(a));
3635
                delete a.fallback;
3636
                f ? a.args.autoplay = 1 : EMBwd();
3637
                a.attrs.id = i.elementId;
3638
                k(h, a)
3639
            });
3640
            c.fallbackMessage = EMBwe(i);
3641
            EMBpe[b] = i;
3642
            EMBP(function() {
3643
                j(h, c)
3644
            }, 0);
3645
            return g
3646
        }
3647
    }
3648
3649
    function EMBxd() {
0 ignored issues
show
Bug introduced by
The function EMBxd is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBxd = function() { /* ... */ }; instead.
Loading history...
3650
        EMBqd("/html5", {
3651
            mb: EMBc,
3652
            method: "POST",
3653
            nb: {
3654
                prefer_html5: EMBc,
3655
                session_token: EMBcc()
3656
            }
3657
        })
3658
    }
3659
3660
    function EMBwe(a) {
0 ignored issues
show
Bug introduced by
The function EMBwe is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBwe = function() { /* ... */ }; instead.
Loading history...
3661
        var b = a.target,
3662
            c = a.eventLabel;
3663
        return function() {
3664
            var a = EMBdc("PLAYER_FALLBACK_OVERRIDE");
3665
            if (!a) {
3666
                var a = EMBdc("PLAYER_FALLBACK", EMBb, 'The Adobe Flash Player or an HTML5 supported browser is required for video playback. <br> <a href="http://web.archive.org/web/20120609184921/http://get.adobe.com/flashplayer/">Get the latest Flash Player</a> <br> <a href="/html5">Learn more about upgrading to an HTML5 browser</a>'),
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable a already seems to be declared on line 3664. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3667
                    e = navigator.userAgent.match(/Version\/(\d).*Safari/);
0 ignored issues
show
Bug introduced by
The variable navigator seems to be never declared. If this is a global, consider adding a /** global: navigator */ comment.

This checks looks for references to variables that have not been declared. This is most likey a typographical error or a variable has been renamed.

To learn more about declaring variables in Javascript, see the MDN.

Loading history...
3668
                e && 5 <= parseInt(e[1], 10) && (a = EMBdc("QUICKTIME_FALLBACK", EMBb,
3669
                    'The Adobe Flash Player or QuickTime is required for video playback. <br> <a href="http://web.archive.org/web/20120609184921/http://get.adobe.com/flashplayer/">Get the latest Flash Player</a> <br> <a href="http://web.archive.org/web/20120609184921/http://www.apple.com/quicktime/download/">Get the latest version of QuickTime</a>'))
3670
            }
3671
            b.innerHTML = '<div class="fallback-message">' + a + "</div>";
3672
            "embedded" == c && EMBr(b.getElementsByTagName("a"), function(a) {
3673
                a.setAttribute("target", "_blank")
3674
            })
3675
        }
3676
    }
3677
3678
    function EMBse(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBse is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBse = function() { /* ... */ }; instead.
Loading history...
3679
        EMBz(a, "player-root");
3680
        b.attrs.width && EMBEc(a, "width", b.attrs.width);
3681
        b.attrs.height && EMBEc(a, "height", b.attrs.height);
3682
        EMBEc(a, "overflow", "hidden");
3683
        var c = EMBdb("div", "player-container"),
3684
            d = EMBdb("div", "player-actions-container", EMBdb("div", "player-actions-share"), EMBdb("div", "player-actions-close", EMBdb("div", "player-actions-close-button")));
3685
        EMBgb(a, c, d)
3686
    }
3687
3688
    function EMBve(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBve is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBve = function() { /* ... */ }; instead.
Loading history...
3689
        EMBxe(a);
3690
        b.attrs.id = b.attrs.id + "-html5";
3691
        var c = EMBg("yt.player.VideoPlayer");
3692
        c ? new c(a, b) : EMBBd(b.assets.js, function() {
0 ignored issues
show
Coding Style Best Practice introduced by
By convention, constructors like c should be capitalized.
Loading history...
3693
            new(EMBg("yt.player.VideoPlayer"))(a, b)
0 ignored issues
show
Unused Code Best Practice introduced by
The object created with new EMBg("yt.player.VideoPlayer")(a, b) is not used but discarded. Consider invoking another function instead of a constructor if you are doing this purely for side effects.
Loading history...
3694
        })
3695
    }
3696
3697
    function EMBue(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBue is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBue = function() { /* ... */ }; instead.
Loading history...
3698
        EMBxe(a);
3699
        b.attrs.id = b.attrs.id + "-flash";
3700
        EMBke(a, b)
3701
    }
3702
3703
    function EMBxe(a) {
0 ignored issues
show
Bug introduced by
The function EMBxe is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBxe = function() { /* ... */ }; instead.
Loading history...
3704
        a = EMBE(a);
3705
        EMBhb(a)
3706
    }
3707
3708
    function EMBre() {
0 ignored issues
show
Bug introduced by
The function EMBre is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBre = function() { /* ... */ }; instead.
Loading history...
3709
        var a = "unknown";
3710
        document.referrer && (a = document.referrer.substring(0, 128));
3711
        return a
3712
    }
3713
3714
    function EMBye(a) {
0 ignored issues
show
Bug introduced by
The function EMBye is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBye = function() { /* ... */ }; instead.
Loading history...
3715
        var b = EMBpe[a],
3716
            c = EMBE(b.target).firstElementChild != EMBb ? EMBE(b.target).firstElementChild : EMBib(EMBE(b.target).firstChild),
3717
            d = c.getApiInterface();
3718
        EMBr(d, function(a) {
3719
            b.api[a] = EMBk(c[a], c)
3720
        });
3721
        b.api.yb = EMBk(b.api.destroy, c);
3722
        b.api.destroy = EMBk(function() {
3723
            this.yb();
3724
            delete EMBpe[a]
3725
        }, b.api);
3726
        b.api.nativeAddEventListener = EMBk(b.api.addEventListener, c);
3727
        for (var e in b.api.subscribedEvents) b.api.nativeAddEventListener(e, EMBze(b.api, e));
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
Complexity introduced by
A for in loop automatically includes the property of any prototype object, consider checking the key using hasOwnProperty.

When iterating over the keys of an object, this includes not only the keys of the object, but also keys contained in the prototype of that object. It is generally a best practice to check for these keys specifically:

var someObject;
for (var key in someObject) {
    if ( ! someObject.hasOwnProperty(key)) {
        continue; // Skip keys from the prototype.
    }

    doSomethingWith(key);
}
Loading history...
3728
        b.api.addEventListener = EMBAe;
3729
        "embedded" === b.eventLabel && b.api.addEventListener("SHARE_CLICKED",
3730
            EMBk(b.actions.zb, b.actions));
3731
        b.onReadyCalled || (b.onReadyCalled = EMBc, b.jsapicallback ? (d = b.jsapicallback) && d(b.playerapiid) : window.onYouTubePlayerReady && onYouTubePlayerReady(b.playerapiid))
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3732
    }
3733
3734
    function EMBze(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBze is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBze = function() { /* ... */ }; instead.
Loading history...
3735
        var c = "ytPlayer" + (b + (a[EMBea] || (a[EMBea] = ++EMBfa))),
3736
            d = EMBk(function(a) {
3737
                this.pubsub.publish(b, a)
3738
            }, a);
3739
        EMBm(c, d);
3740
        return c
3741
    }
3742
3743
    function EMBAe(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBAe is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBAe = function() { /* ... */ }; instead.
Loading history...
3744
        var c = EMBte(b);
3745
        this.subscribedEvents[a] || this.nativeAddEventListener(a, EMBze(this, a));
3746
        this.subscribedEvents[a] = 1;
3747
        this.pubsub.subscribe(a, c)
3748
    }
3749
3750
    function EMBte(a) {
0 ignored issues
show
Bug introduced by
The function EMBte is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBte = function() { /* ... */ }; instead.
Loading history...
3751
        var b = a;
3752
        "string" == typeof a && (b = function() {
3753
            EMBg(a).apply(window, arguments)
3754
        });
3755
        b || (b = EMBg("onYouTubePlayerReady"));
3756
        return b
3757
    }
3758
    EMBg("ytPlayerOnYouTubePlayerReady") || EMBm("ytPlayerOnYouTubePlayerReady", EMBye);
3759
    EMBm("yt.setAjaxToken", EMBac);
3760
    EMBm("yt.tracking.share", EMBcd);
3761
    EMBm("yt.window.popup", EMBdd);
3762
    EMBJd(EMB7d);
3763
    EMBJd(EMB6);
3764
    EMBJd(EMB5);
3765
    EMBJd(EMBme);
3766
    EMB6b || (EMB6b = new EMB3b);
3767
    if (-1 != window.location.href.indexOf("Debug=true")) {
3768
        var EMBBe = EMB6b;
3769
        if (EMBc != EMBBe.b) {
3770
            var EMBCe;
3771
            EMB2b || (EMB2b = new EMBN(""), EMB2b.b = EMB0b);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3772
            EMBCe = EMB2b;
3773
            var EMBDe = EMBBe.r;
3774
            EMBCe.a || (EMBCe.a = []);
3775
            EMBCe.a.push(EMBDe);
3776
            EMBBe.b = EMBc
3777
        }
3778
    };
3779
    var EMB$, EMBgc = new EMBfc,
3780
        EMBEe = EMBd;
3781
3782
    function EMBFe(a, b) {
0 ignored issues
show
Bug introduced by
The function EMBFe is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBFe = function() { /* ... */ }; instead.
Loading history...
3783
        var c = EMB$;
3784
        c[a] && (c[a].apply(c, b || []), (0 == a.search("cue") || 0 == a.search("load")) && EMBGe())
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
Best Practice introduced by
Comparing 0 to a.search("load") using the == operator is not safe. Consider using === instead.
Loading history...
Best Practice introduced by
Comparing 0 to a.search("cue") using the == operator is not safe. Consider using === instead.
Loading history...
3785
    }
3786
3787
    function EMBHe() {
0 ignored issues
show
Bug introduced by
The function EMBHe is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBHe = function() { /* ... */ }; instead.
Loading history...
3788
        var a = document.documentElement.clientHeight || document.body.clientHeight,
3789
            a = Math.round(100 * (a - EMBE("watch-longform-ad").offsetHeight) / a) + "%";
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable a already seems to be declared on line 3788. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3790
        EMBE("player").style.height = a
3791
    }
3792
3793
    function EMBIe() {
0 ignored issues
show
Bug introduced by
The function EMBIe is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBIe = function() { /* ... */ }; instead.
Loading history...
3794
        EMBEe = new EMBBc;
3795
        EMBgc.a = EMBJe;
3796
        var a = EMBgc;
3797
        a.b = EMBFe;
3798
        a.d = EMBd;
3799
        EMB$.addEventListener("onStateChange", EMBKe);
3800
        EMB$.addEventListener("onPlaybackQualityChange", EMBLe);
3801
        EMB$.addEventListener("onError", EMBMe);
3802
        EMB$.addEventListener("onVideoProgress", EMBNe);
3803
        EMB$.addEventListener("onVolumeChange", EMBOe);
3804
        EMB$.addEventListener("onApiChange", EMBPe)
3805
    }
3806
3807
    function EMBGe() {
0 ignored issues
show
Bug introduced by
The function EMBGe is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBGe = function() { /* ... */ }; instead.
Loading history...
3808
        for (var a = EMB$.getApiInterface(), b = {
3809
                event: "initialDelivery",
3810
                apiInterface: a,
3811
                info: {}
3812
            }, c = 0, d = a.length; c < d; c++) {
3813
            var e = a[c];
3814
            if (0 == e.search("get") || 0 == e.search("is")) {
0 ignored issues
show
Best Practice introduced by
Comparing 0 to e.search("get") using the == operator is not safe. Consider using === instead.
Loading history...
Best Practice introduced by
Comparing 0 to e.search("is") using the == operator is not safe. Consider using === instead.
Loading history...
3815
                var f;
3816
                f = e;
3817
                var g = 0;
3818
                0 == f.search("get") ? g = 3 : 0 == f.search("is") && (g = 2);
0 ignored issues
show
Best Practice introduced by
Comparing 0 to f.search("get") using the == operator is not safe. Consider using === instead.
Loading history...
Best Practice introduced by
Comparing 0 to f.search("is") using the == operator is not safe. Consider using === instead.
Loading history...
3819
                f = f.charAt(g).toLowerCase() + f.substr(g + 1);
3820
                try {
3821
                    var h = EMB$[e]();
3822
                    b.info[f] = h
3823
                } catch (i) {}
0 ignored issues
show
Coding Style Comprehensibility Best Practice introduced by
Empty catch clauses should be used with caution; consider adding a comment why this is needed.
Loading history...
3824
            }
3825
        }
3826
        EMBQ(b)
3827
    }
3828
3829
    function EMBKe(a) {
0 ignored issues
show
Bug introduced by
The function EMBKe is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBKe = function() { /* ... */ }; instead.
Loading history...
3830
        a = {
3831
            event: "onStateChange",
3832
            info: {
3833
                playerState: a,
3834
                duration: EMB$.getDuration(),
3835
                videoData: EMB$.getVideoData(),
3836
                videoStartBytes: EMB$.getVideoStartBytes(),
3837
                videoBytesTotal: EMB$.getVideoBytesTotal(),
3838
                playbackQuality: EMB$.getPlaybackQuality(),
3839
                availableQualityLevels: EMB$.getAvailableQualityLevels(),
3840
                videoUrl: EMB$.getVideoUrl(),
3841
                playlist: EMB$.getPlaylist(),
3842
                playlistIndex: EMB$.getPlaylistIndex()
3843
            }
3844
        };
3845
        EMBQ(a)
3846
    }
3847
3848
    function EMBOe(a) {
0 ignored issues
show
Bug introduced by
The function EMBOe is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBOe = function() { /* ... */ }; instead.
Loading history...
3849
        var b = EMBEe;
3850
        if (b.a) {
3851
            var c = {};
3852
            c.volume = isNaN(a.volume) ? EMBCc(b).volume : Math.min(Math.max(a.volume, 0), 100);
3853
            c.nonNormalized = a.nonNormalized;
3854
            c.muted = a.muted == EMBb ? EMBCc(b).muted : a.muted;
3855
            try {
3856
                var d = b.a;
3857
                if (EMBi(c)) {
3858
                    var e = d.a,
3859
                        f, a = [];
3860
                    EMBwc(d.b, c, a);
3861
                    f = a.join("");
3862
                    try {
3863
                        e.j.setItem("yt-player-volume", f)
3864
                    } catch (g) {
3865
                        EMBa("Storage mechanism: Quota exceeded")
3866
                    }
3867
                } else d.a.j.removeItem("yt-player-volume")
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3868
            } catch (h) {}
0 ignored issues
show
Coding Style Comprehensibility Best Practice introduced by
Empty catch clauses should be used with caution; consider adding a comment why this is needed.
Loading history...
3869
        }
3870
        c = {
3871
            event: "infoDelivery",
3872
            info: {
3873
                muted: EMB$.isMuted(),
3874
                volume: EMB$.getVolume()
3875
            }
3876
        };
3877
        EMBQ(c)
3878
    }
3879
3880
    function EMBLe(a) {
0 ignored issues
show
Bug introduced by
The function EMBLe is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBLe = function() { /* ... */ }; instead.
Loading history...
3881
        EMBQ({
3882
            event: "onPlaybackQualityChange",
3883
            info: {
3884
                playbackQuality: a
3885
            }
3886
        })
3887
    }
3888
3889
    function EMBNe(a) {
0 ignored issues
show
Bug introduced by
The function EMBNe is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBNe = function() { /* ... */ }; instead.
Loading history...
3890
        a = {
3891
            event: "infoDelivery",
3892
            info: {
3893
                currentTime: a,
3894
                videoBytesLoaded: EMB$.getVideoBytesLoaded()
3895
            }
3896
        };
3897
        EMBQ(a)
3898
    }
3899
3900
    function EMBPe() {
0 ignored issues
show
Bug introduced by
The function EMBPe is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBPe = function() { /* ... */ }; instead.
Loading history...
3901
        for (var a = EMB$.getOptions(), b = {
3902
                event: "onApiChange",
3903
                info: {
3904
                    namespaces: a
3905
                }
3906
            }, c = 0, d = a.length; c < d; c++) {
3907
            var e = a[c],
3908
                f = EMB$.getOptions(e);
3909
            b.info[e] = {
3910
                options: f
3911
            };
3912
            for (var g = 0, h = f.length; g < h; g++) {
3913
                var i = f[g],
3914
                    j = EMB$.getOption(e, i);
3915
                b.info[e][i] = j
3916
            }
3917
        }
3918
        EMBQ(b)
3919
    }
3920
3921
    function EMBMe(a) {
0 ignored issues
show
Bug introduced by
The function EMBMe is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBMe = function() { /* ... */ }; instead.
Loading history...
3922
        EMBQ({
3923
            event: "onError",
3924
            error: a
3925
        })
3926
    }
3927
3928
    function EMBJe() {
0 ignored issues
show
Bug introduced by
The function EMBJe is declared conditionally. This is not supported by all runtimes. Consider moving it to root scope or using var EMBJe = function() { /* ... */ }; instead.
Loading history...
3929
        EMBGe();
3930
        EMBQ({
3931
            event: "onReady"
3932
        })
3933
    };
3934
    EMBm("yt.embed.writeEmbed", function() {
3935
        var a = new EMBR(EMBO("PLAYER_CONFIG")),
3936
            b;
3937
        b = a instanceof EMBR ? a.args : a.args;
3938
        var c;
3939
        c = EMBO("CONVERSION_CONFIG_DICT");
3940
        if (!c || !c.socialEnabled) c = EMBd;
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3941
        else {
3942
            var d, e = c.oeid,
3943
                f = window.location.hash;
3944
            d = EMB7c(f);
3945
            var g = window.location,
3946
                h, e = {
0 ignored issues
show
Comprehensibility Naming Best Practice introduced by
The variable e already seems to be declared on line 3942. Consider using another variable name or omitting the var keyword.

This check looks for variables that are declared in multiple lines. There may be several reasons for this.

In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs.

If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared.

Loading history...
3947
                    oeid: e
3948
                },
3949
                i = "";
3950
            "#" == f.charAt(0) && (i = "!" == f.charAt(1) ? f.substr(0, 2) : f.substr(0, 1));
3951
            f = EMB7c(f);
3952
            for (h in e) f[h] = e[h];
0 ignored issues
show
Coding Style Best Practice introduced by
Curly braces around statements make for more readable code and help prevent bugs when you add further statements.

Consider adding curly braces around all statements when they are executed conditionally. This is optional if there is only one statement, but leaving them out can lead to unexpected behaviour if another statement is added later.

Consider:

if (a > 0)
    b = 42;

If you or someone else later decides to put another statement in, only the first statement will be executed.

if (a > 0)
    console.log("a > 0");
    b = 42;

In this case the statement b = 42 will always be executed, while the logging statement will be executed conditionally.

if (a > 0) {
    console.log("a > 0");
    b = 42;
}

ensures that the proper code will be executed conditionally no matter how many statements are added or removed.

Loading history...
3953
            h = i + EMB8c(f);
3954
            g.hash = h;
3955
            d = d.oeid;
3956
            c = c.ieid = d
3957
        }
3958
        c && (b.ieid = c);
3959
        c = EMB7c(window.location.hash);
3960
        (c = c.t || c.at) ? (d = window.location.hash.replace(/\bat=[^&]*&?/,
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3961
            ""), window.location.hash = d && "#" != d ? d : "#!", d = c, c = 0, -1 != d.indexOf("h") && (d = d.split("h"), c = 3600 * d[0], d = d[1]), -1 != d.indexOf("m") && (d = d.split("m"), c = 60 * d[0] + c, d = d[1]), -1 != d.indexOf("s")) ? (d = d.split("s"), c = 1 * d[0] + c) : c = 1 * d + c: c = 0;
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3962
        c && (b.start = c, b.resume = 1);
0 ignored issues
show
Comprehensibility introduced by
Usage of the sequence operator is discouraged, since it may lead to obfuscated code.

The sequence or comma operator allows the inclusion of multiple expressions where only is permitted. The result of the sequence is the value of the last expression.

This operator is most often used in for statements.

Used in another places it can make code hard to read, especially when people do not realize it even exists as a seperate operator.

This check looks for usage of the sequence operator in locations where it is not necessary and could be replaced by a series of expressions or statements.

var a,b,c;

a = 1, b = 1,  c= 3;

could just as well be written as:

var a,b,c;

a = 1;
b = 1;
c = 3;

To learn more about the sequence operator, please refer to the MDN.

Loading history...
3963
        window != window.top && (a.args.el = "embedded");
3964
        EMBO("CUED_AUTOPLAY") && (a.args.autoplay = 1);
3965
        a.args.jsapicallback = EMBIe;
3966
        EMB$ = EMBqe(a)
3967
    });
3968
    EMBm("yt.setConfig", function(a) {
0 ignored issues
show
Unused Code introduced by
The parameter a is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
3969
        EMBbc(EMB7b, arguments)
3970
    });
3971
    EMBm("yt.setMsg", function(a) {
0 ignored issues
show
Unused Code introduced by
The parameter a is not used and could be removed.

This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.

Loading history...
3972
        EMBbc(EMB9b, arguments)
3973
    });
3974
    EMBK(window, "load", EMB_.Bb);
3975
    EMBK(window, "resize", EMBHe);
3976
    EMBK(EMBE("watch-longform-ad-placeholder"), "resize", EMBHe);
3977
3978
3979
}