PageSourceSearch

https://custompublishingcouncil.com/cms/res/mediaelement/mediaelement-and-player.js

js custompublishingcouncil.com collected 2026-09-26 13:22:14 UTC 258,356 bytes, 8,407 lines download raw bytes

vendor: 26,268 bytes, lines 1-711
1var _____WB$wombat$assign$function_____=function(name){return (self._wb_wombat && self._wb_wombat.local_init && self._wb_wombat.local_init(name))||self[name];};if(!self.__WB_pmw){self.__WB_pmw=function(obj){this.__WB_source=obj;return this;}}{
2let window = _____WB$wombat$assign$function_____("window");
3let self = _____WB$wombat$assign$function_____("self");
4let document = _____WB$wombat$assign$function_____("document");
5let location = _____WB$wombat$assign$function_____("location");
6let top = _____WB$wombat$assign$function_____("top");
7let parent = _____WB$wombat$assign$function_____("parent");
8let frames = _____WB$wombat$assign$function_____("frames");
9let opens = _____WB$wombat$assign$function_____("opens");
10/*!
11 * MediaElement.js
12 * http://www.mediaelementjs.com/
13 *
14 * Wrapper that mimics native HTML5 MediaElement (audio and video)
15 * using a variety of technologies (pure JavaScript, Flash, iframe)
16 *
17 * Copyright 2010-2017, John Dyer (http://j.hn/)
18 * License: MIT
19 *
20 */(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){
21
22},{}],2:[function(_dereq_,module,exports){
23(function (global){
24var topLevel = typeof global !== 'undefined' ? global :
25    typeof window !== 'undefined' ? window : {}
26var minDoc = _dereq_(1);
27
28var doccy;
29
30if (typeof document !== 'undefined') {
31    doccy = document;
32} else {
33    doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'];
34
35    if (!doccy) {
36        doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'] = minDoc;
37    }
38}
39
40module.exports = doccy;
41
42}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
43},{"1":1}],3:[function(_dereq_,module,exports){
44(function (global){
45var win;
46
47if (typeof window !== "undefined") {
48    win = window;
49} else if (typeof global !== "undefined") {
50    win = global;
51} else if (typeof self !== "undefined"){
52    win = self;
53} else {
54    win = {};
55}
56
57module.exports = win;
58
59}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
60},{}],4:[function(_dereq_,module,exports){
61(function (root) {
62
63  // Store setTimeout reference so promise-polyfill will be unaffected by
64  // other code modifying setTimeout (like sinon.useFakeTimers())
65  var setTimeoutFunc = setTimeout;
66
67  function noop() {}
68  
69  // Polyfill for Function.prototype.bind
70  function bind(fn, thisArg) {
71    return function () {
72      fn.apply(thisArg, arguments);
73    };
74  }
75
76  function Promise(fn) {
77    if (typeof this !== 'object') throw new TypeError('Promises must be constructed via new');
78    if (typeof fn !== 'function') throw new TypeError('not a function');
79    this._state = 0;
80    this._handled = false;
81    this._value = undefined;
82    this._deferreds = [];
83
84    doResolve(fn, this);
85  }
86
87  function handle(self, deferred) {
88    while (self._state === 3) {
89      self = self._value;
90    }
91    if (self._state === 0) {
92      self._deferreds.push(deferred);
93      return;
94    }
95    self._handled = true;
96    Promise._immediateFn(function () {
97      var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;
98      if (cb === null) {
99        (self._state === 1 ? resolve : reject)(deferred.promise, self._value);
100        return;
101      }
102      var ret;
103      try {
104        ret = cb(self._value);
105      } catch (e) {
106        reject(deferred.promise, e);
107        return;
108      }
109      resolve(deferred.promise, ret);
110    });
111  }
112
113  function resolve(self, newValue) {
114    try {
115      // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure
116      if (newValue === self) throw new TypeError('A promise cannot be resolved with itself.');
117      if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) {
118        var then = newValue.then;
119        if (newValue instanceof Promise) {
120          self._state = 3;
121          self._value = newValue;
122          finale(self);
123          return;
124        } else if (typeof then === 'function') {
125          doResolve(bind(then, newValue), self);
126          return;
127        }
128      }
129      self._state = 1;
130      self._value = newValue;
131      finale(self);
132    } catch (e) {
133      reject(self, e);
134    }
135  }
136
137  function reject(self, newValue) {
138    self._state = 2;
139    self._value = newValue;
140    finale(self);
141  }
142
143  function finale(self) {
144    if (self._state === 2 && self._deferreds.length === 0) {
145      Promise._immediateFn(function() {
146        if (!self._handled) {
147          Promise._unhandledRejectionFn(self._value);
148        }
149      });
150    }
151
152    for (var i = 0, len = self._deferreds.length; i < len; i++) {
153      handle(self, self._deferreds[i]);
154    }
155    self._deferreds = null;
156  }
157
158  function Handler(onFulfilled, onRejected, promise) {
159    this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;
160    this.onRejected = typeof onRejected === 'function' ? onRejected : null;
161    this.promise = promise;
162  }
163
164  /**
165   * Take a potentially misbehaving resolver function and make sure
166   * onFulfilled and onRejected are only called once.
167   *
168   * Makes no guarantees about asynchrony.
169   */
170  function doResolve(fn, self) {
171    var done = false;
172    try {
173      fn(function (value) {
174        if (done) return;
175        done = true;
176        resolve(self, value);
177      }, function (reason) {
178        if (done) return;
179        done = true;
180        reject(self, reason);
181      });
182    } catch (ex) {
183      if (done) return;
184      done = true;
185      reject(self, ex);
186    }
187  }
188
189  Promise.prototype['catch'] = function (onRejected) {
190    return this.then(null, onRejected);
191  };
192
193  Promise.prototype.then = function (onFulfilled, onRejected) {
194    var prom = new (this.constructor)(noop);
195
196    handle(this, new Handler(onFulfilled, onRejected, prom));
197    return prom;
198  };
199
200  Promise.all = function (arr) {
201    var args = Array.prototype.slice.call(arr);
202
203    return new Promise(function (resolve, reject) {
204      if (args.length === 0) return resolve([]);
205      var remaining = args.length;
206
207      function res(i, val) {
208        try {
209          if (val && (typeof val === 'object' || typeof val === 'function')) {
210            var then = val.then;
211            if (typeof then === 'function') {
212              then.call(val, function (val) {
213                res(i, val);
214              }, reject);
215              return;
216            }
217          }
218          args[i] = val;
219          if (--remaining === 0) {
220            resolve(args);
221          }
222        } catch (ex) {
223          reject(ex);
224        }
225      }
226
227      for (var i = 0; i < args.length; i++) {
228        res(i, args[i]);
229      }
230    });
231  };
232
233  Promise.resolve = function (value) {
234    if (value && typeof value === 'object' && value.constructor === Promise) {
235      return value;
236    }
237
238    return new Promise(function (resolve) {
239      resolve(value);
240    });
241  };
242
243  Promise.reject = function (value) {
244    return new Promise(function (resolve, reject) {
245      reject(value);
246    });
247  };
248
249  Promise.race = function (values) {
250    return new Promise(function (resolve, reject) {
251      for (var i = 0, len = values.length; i < len; i++) {
252        values[i].then(resolve, reject);
253      }
254    });
255  };
256
257  // Use polyfill for setImmediate for performance gains
258  Promise._immediateFn = (typeof setImmediate === 'function' && function (fn) { setImmediate(fn); }) ||
259    function (fn) {
260      setTimeoutFunc(fn, 0);
261    };
262
263  Promise._unhandledRejectionFn = function _unhandledRejectionFn(err) {
264    if (typeof console !== 'undefined' && console) {
265      console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console
266    }
267  };
268
269  /**
270   * Set the immediate function to execute callbacks
271   * @param fn {function} Function to execute
272   * @deprecated
273   */
274  Promise._setImmediateFn = function _setImmediateFn(fn) {
275    Promise._immediateFn = fn;
276  };
277
278  /**
279   * Change the function to execute on unhandled rejection
280   * @param {function} fn Function to execute on unhandled rejection
281   * @deprecated
282   */
283  Promise._setUnhandledRejectionFn = function _setUnhandledRejectionFn(fn) {
284    Promise._unhandledRejectionFn = fn;
285  };
286  
287  if (typeof module !== 'undefined' && module.exports) {
288    module.exports = Promise;
289  } else if (!root.Promise) {
290    root.Promise = Promise;
291  }
292
293})(this);
294
295},{}],5:[function(_dereq_,module,exports){
296'use strict';
297
298Object.defineProperty(exports, "__esModule", {
299	value: true
300});
301
302var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
303
304var _mejs = _dereq_(7);
305
306var _mejs2 = _interopRequireDefault(_mejs);
307
308var _en = _dereq_(15);
309
310var _general = _dereq_(27);
311
312function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
313
314var i18n = { lang: 'en', en: _en.EN };
315
316i18n.language = function () {
317	for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
318		args[_key] = arguments[_key];
319	}
320
321	if (args !== null && args !== undefined && args.length) {
322
323		if (typeof args[0] !== 'string') {
324			throw new TypeError('Language code must be a string value');
325		}
326
327		if (!/^[a-z]{2}(\-[a-z]{2})?$/i.test(args[0])) {
328			throw new TypeError('Language code must have format `xx` or `xx-xx`');
329		}
330
331		i18n.lang = args[0];
332
333		if (i18n[args[0]] === undefined) {
334			args[1] = args[1] !== null && args[1] !== undefined && _typeof(args[1]) === 'object' ? args[1] : {};
335			i18n[args[0]] = !(0, _general.isObjectEmpty)(args[1]) ? args[1] : _en.EN;
336		} else if (args[1] !== null && args[1] !== undefined && _typeof(args[1]) === 'object') {
337			i18n[args[0]] = args[1];
338		}
339	}
340
341	return i18n.lang;
342};
343
344i18n.t = function (message) {
345	var pluralParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
346
347
348	if (typeof message === 'string' && message.length) {
349
350		var str = void 0,
351		    pluralForm = void 0;
352
353		var language = i18n.language();
354
355		var _plural = function _plural(input, number, form) {
356
357			if ((typeof input === 'undefined' ? 'undefined' : _typeof(input)) !== 'object' || typeof number !== 'number' || typeof form !== 'number') {
358				return input;
359			}
360
361			var _pluralForms = function () {
362				return [function () {
363					return arguments.length <= 1 ? undefined : arguments[1];
364				}, function () {
365					return (arguments.length <= 0 ? undefined : arguments[0]) === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];
366				}, function () {
367					return (arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];
368				}, function () {
369					if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
370						return arguments.length <= 1 ? undefined : arguments[1];
371					} else if ((arguments.length <= 0 ? undefined : arguments[0]) !== 0) {
372						return arguments.length <= 2 ? undefined : arguments[2];
373					} else {
374						return arguments.length <= 3 ? undefined : arguments[3];
375					}
376				}, function () {
377					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1 || (arguments.length <= 0 ? undefined : arguments[0]) === 11) {
378						return arguments.length <= 1 ? undefined : arguments[1];
379					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2 || (arguments.length <= 0 ? undefined : arguments[0]) === 12) {
380						return arguments.length <= 2 ? undefined : arguments[2];
381					} else if ((arguments.length <= 0 ? undefined : arguments[0]) > 2 && (arguments.length <= 0 ? undefined : arguments[0]) < 20) {
382						return arguments.length <= 3 ? undefined : arguments[3];
383					} else {
384						return arguments.length <= 4 ? undefined : arguments[4];
385					}
386				}, function () {
387					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
388						return arguments.length <= 1 ? undefined : arguments[1];
389					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 > 0 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 20) {
390						return arguments.length <= 2 ? undefined : arguments[2];
391					} else {
392						return arguments.length <= 3 ? undefined : arguments[3];
393					}
394				}, function () {
395					if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
396						return arguments.length <= 1 ? undefined : arguments[1];
397					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) {
398						return arguments.length <= 2 ? undefined : arguments[2];
399					} else {
400						return [3];
401					}
402				}, function () {
403					if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
404						return arguments.length <= 1 ? undefined : arguments[1];
405					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) {
406						return arguments.length <= 2 ? undefined : arguments[2];
407					} else {
408						return arguments.length <= 3 ? undefined : arguments[3];
409					}
410				}, function () {
411					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
412						return arguments.length <= 1 ? undefined : arguments[1];
413					} else if ((arguments.length <= 0 ? undefined : arguments[0]) >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) <= 4) {
414						return arguments.length <= 2 ? undefined : arguments[2];
415					} else {
416						return arguments.length <= 3 ? undefined : arguments[3];
417					}
418				}, function () {
419					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
420						return arguments.length <= 1 ? undefined : arguments[1];
421					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) {
422						return arguments.length <= 2 ? undefined : arguments[2];
423					} else {
424						return arguments.length <= 3 ? undefined : arguments[3];
425					}
426				}, function () {
427					if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 1) {
428						return arguments.length <= 2 ? undefined : arguments[2];
429					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 2) {
430						return arguments.length <= 3 ? undefined : arguments[3];
431					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 3 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 === 4) {
432						return arguments.length <= 4 ? undefined : arguments[4];
433					} else {
434						return arguments.length <= 1 ? undefined : arguments[1];
435					}
436				}, function () {
437					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
438						return arguments.length <= 1 ? undefined : arguments[1];
439					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
440						return arguments.length <= 2 ? undefined : arguments[2];
441					} else if ((arguments.length <= 0 ? undefined : arguments[0]) > 2 && (arguments.length <= 0 ? undefined : arguments[0]) < 7) {
442						return arguments.length <= 3 ? undefined : arguments[3];
443					} else if ((arguments.length <= 0 ? undefined : arguments[0]) > 6 && (arguments.length <= 0 ? undefined : arguments[0]) < 11) {
444						return arguments.length <= 4 ? undefined : arguments[4];
445					} else {
446						return arguments.length <= 5 ? undefined : arguments[5];
447					}
448				}, function () {
449					if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) {
450						return arguments.length <= 1 ? undefined : arguments[1];
451					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
452						return arguments.length <= 2 ? undefined : arguments[2];
453					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
454						return arguments.length <= 3 ? undefined : arguments[3];
455					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 3 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 <= 10) {
456						return arguments.length <= 4 ? undefined : arguments[4];
457					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 11) {
458						return arguments.length <= 5 ? undefined : arguments[5];
459					} else {
460						return arguments.length <= 6 ? undefined : arguments[6];
461					}
462				}, function () {
463					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
464						return arguments.length <= 1 ? undefined : arguments[1];
465					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 > 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 11) {
466						return arguments.length <= 2 ? undefined : arguments[2];
467					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 > 10 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 20) {
468						return arguments.length <= 3 ? undefined : arguments[3];
469					} else {
470						return arguments.length <= 4 ? undefined : arguments[4];
471					}
472				}, function () {
473					if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1) {
474						return arguments.length <= 1 ? undefined : arguments[1];
475					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 2) {
476						return arguments.length <= 2 ? undefined : arguments[2];
477					} else {
478						return arguments.length <= 3 ? undefined : arguments[3];
479					}
480				}, function () {
481					return (arguments.length <= 0 ? undefined : arguments[0]) !== 11 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];
482				}, function () {
483					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
484						return arguments.length <= 1 ? undefined : arguments[1];
485					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) {
486						return arguments.length <= 2 ? undefined : arguments[2];
487					} else {
488						return arguments.length <= 3 ? undefined : arguments[3];
489					}
490				}, function () {
491					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
492						return arguments.length <= 1 ? undefined : arguments[1];
493					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
494						return arguments.length <= 2 ? undefined : arguments[2];
495					} else if ((arguments.length <= 0 ? undefined : arguments[0]) !== 8 && (arguments.length <= 0 ? undefined : arguments[0]) !== 11) {
496						return arguments.length <= 3 ? undefined : arguments[3];
497					} else {
498						return arguments.length <= 4 ? undefined : arguments[4];
499					}
500				}, function () {
501					return (arguments.length <= 0 ? undefined : arguments[0]) === 0 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];
502				}, function () {
503					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
504						return arguments.length <= 1 ? undefined : arguments[1];
505					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
506						return arguments.length <= 2 ? undefined : arguments[2];
507					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 3) {
508						return arguments.length <= 3 ? undefined : arguments[3];
509					} else {
510						return arguments.length <= 4 ? undefined : arguments[4];
511					}
512				}, function () {
513					if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) {
514						return arguments.length <= 1 ? undefined : arguments[1];
515					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
516						return arguments.length <= 2 ? undefined : arguments[2];
517					} else {
518						return arguments.length <= 3 ? undefined : arguments[3];
519					}
520				}];
521			}();
522
523			return _pluralForms[form].apply(null, [number].concat(input));
524		};
525
526		if (i18n[language] !== undefined) {
527			str = i18n[language][message];
528			if (pluralParam !== null && typeof pluralParam === 'number') {
529				pluralForm = i18n[language]['mejs.plural-form'];
530				str = _plural.apply(null, [str, pluralParam, pluralForm]);
531			}
532		}
533
534		if (!str && i18n.en) {
535			str = i18n.en[message];
536			if (pluralParam !== null && typeof pluralParam === 'number') {
537				pluralForm = i18n.en['mejs.plural-form'];
538				str = _plural.apply(null, [str, pluralParam, pluralForm]);
539			}
540		}
541
542		str = str || message;
543
544		if (pluralParam !== null && typeof pluralParam === 'number') {
545			str = str.replace('%1', pluralParam);
546		}
547
548		return (0, _general.escapeHTML)(str);
549	}
550
551	return message;
552};
553
554_mejs2.default.i18n = i18n;
555
556if (typeof mejsL10n !== 'undefined') {
557	_mejs2.default.i18n.language(mejsL10n.language, mejsL10n.strings);
558}
559
560exports.default = i18n;
561
562},{"15":15,"27":27,"7":7}],6:[function(_dereq_,module,exports){
563'use strict';
564
565Object.defineProperty(exports, "__esModule", {
566	value: true
567});
568
569var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
570
571var _window = _dereq_(3);
572
573var _window2 = _interopRequireDefault(_window);
574
575var _document = _dereq_(2);
576
577var _document2 = _interopRequireDefault(_document);
578
579var _mejs = _dereq_(7);
580
581var _mejs2 = _interopRequireDefault(_mejs);
582
583var _general = _dereq_(27);
584
585var _media2 = _dereq_(28);
586
587var _renderer = _dereq_(8);
588
589var _constants = _dereq_(25);
590
591function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
592
593function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
594
595var MediaElement = function MediaElement(idOrNode, options, sources) {
596	var _this = this;
597
598	_classCallCheck(this, MediaElement);
599
600	var t = this;
601
602	sources = Array.isArray(sources) ? sources : null;
603
604	t.defaults = {
605		renderers: [],
606
607		fakeNodeName: 'mediaelementwrapper',
608
609		pluginPath: 'build/',
610
611		shimScriptAccess: 'sameDomain'
612	};
613
614	options = Object.assign(t.defaults, options);
615
616	t.mediaElement = _document2.default.createElement(options.fakeNodeName);
617
618	var id = idOrNode,
619	    error = false;
620
621	if (typeof idOrNode === 'string') {
622		t.mediaElement.originalNode = _document2.default.getElementById(idOrNode);
623	} else {
624		t.mediaElement.originalNode = idOrNode;
625		id = idOrNode.id;
626	}
627
628	if (t.mediaElement.originalNode === undefined || t.mediaElement.originalNode === null) {
629		return null;
630	}
631
632	t.mediaElement.options = options;
633	id = id || 'mejs_' + Math.random().toString().slice(2);
634
635	t.mediaElement.originalNode.setAttribute('id', id + '_from_mejs');
636
637	var tagName = t.mediaElement.originalNode.tagName.toLowerCase();
638	if (['video', 'audio'].indexOf(tagName) > -1 && !t.mediaElement.originalNode.getAttribute('preload')) {
639		t.mediaElement.originalNode.setAttribute('preload', 'none');
640	}
641
642	t.mediaElement.originalNode.parentNode.insertBefore(t.mediaElement, t.mediaElement.originalNode);
643
644	t.mediaElement.appendChild(t.mediaElement.originalNode);
645
646	var processURL = function processURL(url, type) {
647		if (_window2.default.location.protocol === 'https:' && url.indexOf('http:') === 0 && _constants.IS_IOS && _mejs2.default.html5media.mediaTypes.indexOf(type) > -1) {
648			var xhr = new XMLHttpRequest();
649			xhr.onreadystatechange = function () {
650				if (this.readyState === 4 && this.status === 200) {
651					var _url = _window2.default.URL || _window2.default.webkitURL,
652					    blobUrl = _url.createObjectURL(this.response);
653					t.mediaElement.originalNode.setAttribute('src', blobUrl);
654					return blobUrl;
655				}
656				return url;
657			};
658			xhr.open('GET', url);
659			xhr.responseType = 'blob';
660			xhr.send();
661		}
662
663		return url;
664	};
665
666	var mediaFiles = void 0;
667
668	if (sources !== null) {
669		mediaFiles = sources;
670	} else if (t.mediaElement.originalNode !== null) {
671
672		mediaFiles = [];
673
674		switch (t.mediaElement.originalNode.nodeName.toLowerCase()) {
675			case 'iframe':
676				mediaFiles.push({
677					type: '',
678					src: t.mediaElement.originalNode.getAttribute('src')
679				});
680				break;
681			case 'audio':
682			case 'video':
683				var _sources = t.mediaElement.originalNode.children.length,
684				    nodeSource = t.mediaElement.originalNode.getAttribute('src');
685
686				if (nodeSource) {
687					var node = t.mediaElement.originalNode,
688					    type = (0, _media2.formatType)(nodeSource, node.getAttribute('type'));
689					mediaFiles.push({
690						type: type,
691						src: processURL(nodeSource, type)
692					});
693				}
694
695				for (var i = 0; i < _sources; i++) {
696					var n = t.mediaElement.originalNode.children[i];
697					if (n.tagName.toLowerCase() === 'source') {
698						var src = n.getAttribute('src'),
699						    _type = (0, _media2.formatType)(src, n.getAttribute('type'));
700						mediaFiles.push({ type: _type, src: processURL(src, _type) });
701					}
702				}
703				break;
704		}
705	}
706
707	t.mediaElement.id = id;
708	t.mediaElement.renderers = {};
709	t.mediaElement.events = {};
710	t.mediaElement.promises = [];
711	t.mediaElement.renderer = null;
712	t.mediaElement.rendererName = null;
713
714	t.mediaElement.changeRenderer = function (rendererName, mediaFiles) {
715
716		var t = _this,
717		    media = Object.keys(mediaFiles[0]).length > 2 ? mediaFiles[0] : mediaFiles[0].src;
718
719		if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && t.mediaElement.renderer.name === rendererName) {
720			t.mediaElement.renderer.pause();
721			if (t.mediaElement.renderer.stop) {
722				t.mediaElement.renderer.stop();
723			}
724			t.mediaElement.renderer.show();
725			t.mediaElement.renderer.setSrc(media);
726			return true;
727		}
728
729		if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) {
730			t.mediaElement.renderer.pause();
731			if (t.mediaElement.renderer.stop) {
732				t.mediaElement.renderer.stop();
733			}
734			t.mediaElement.renderer.hide();
735		}
736
737		var newRenderer = t.mediaElement.renderers[rendererName],
738		    newRendererType = null;
739
740		if (newRenderer !== undefined && newRenderer !== null) {
741			newRenderer.show();
742			newRenderer.setSrc(media);
743			t.mediaElement.renderer = newRenderer;
vendor: 4,488 bytes, lines 744-871
744			t.mediaElement.rendererName = rendererName;
745			return true;
746		}
747
748		var rendererArray = t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : _renderer.renderer.order;
749
750		for (var _i = 0, total = rendererArray.length; _i < total; _i++) {
751			var index = rendererArray[_i];
752
753			if (index === rendererName) {
754				var rendererList = _renderer.renderer.renderers;
755				newRendererType = rendererList[index];
756
757				var renderOptions = Object.assign(newRendererType.options, t.mediaElement.options);
758				newRenderer = newRendererType.create(t.mediaElement, renderOptions, mediaFiles);
759				newRenderer.name = rendererName;
760
761				t.mediaElement.renderers[newRendererType.name] = newRenderer;
762				t.mediaElement.renderer = newRenderer;
763				t.mediaElement.rendererName = rendererName;
764				newRenderer.show();
765				return true;
766			}
767		}
768
769		return false;
770	};
771
772	t.mediaElement.setSize = function (width, height) {
773		if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) {
774			t.mediaElement.renderer.setSize(width, height);
775		}
776	};
777
778	t.mediaElement.generateError = function (message, urlList) {
779		message = message || '';
780		urlList = Array.isArray(urlList) ? urlList : [];
781		var event = (0, _general.createEvent)('error', t.mediaElement);
782		event.message = message;
783		event.urls = urlList;
784		t.mediaElement.dispatchEvent(event);
785		error = true;
786	};
787
788	var props = _mejs2.default.html5media.properties,
789	    methods = _mejs2.default.html5media.methods,
790	    addProperty = function addProperty(obj, name, onGet, onSet) {
791		var oldValue = obj[name];
792		var getFn = function getFn() {
793			return onGet.apply(obj, [oldValue]);
794		},
795		    setFn = function setFn(newValue) {
796			oldValue = onSet.apply(obj, [newValue]);
797			return oldValue;
798		};
799
800		Object.defineProperty(obj, name, {
801			get: getFn,
802			set: setFn
803		});
804	},
805	    assignGettersSetters = function assignGettersSetters(propName) {
806		if (propName !== 'src') {
807
808			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1),
809			    getFn = function getFn() {
810				return t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer['get' + capName] === 'function' ? t.mediaElement.renderer['get' + capName]() : null;
811			},
812			    setFn = function setFn(value) {
813				if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer['set' + capName] === 'function') {
814					t.mediaElement.renderer['set' + capName](value);
815				}
816			};
817
818			addProperty(t.mediaElement, propName, getFn, setFn);
819			t.mediaElement['get' + capName] = getFn;
820			t.mediaElement['set' + capName] = setFn;
821		}
822	},
823	    getSrc = function getSrc() {
824		return t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null ? t.mediaElement.renderer.getSrc() : null;
825	},
826	    setSrc = function setSrc(value) {
827		var mediaFiles = [];
828
829		if (typeof value === 'string') {
830			mediaFiles.push({
831				src: value,
832				type: value ? (0, _media2.getTypeFromFile)(value) : ''
833			});
834		} else if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src !== undefined) {
835			var _src = (0, _media2.absolutizeUrl)(value.src),
836			    _type2 = value.type,
837			    media = Object.assign(value, {
838				src: _src,
839				type: (_type2 === '' || _type2 === null || _type2 === undefined) && _src ? (0, _media2.getTypeFromFile)(_src) : _type2
840			});
841			mediaFiles.push(media);
842		} else if (Array.isArray(value)) {
843			for (var _i2 = 0, total = value.length; _i2 < total; _i2++) {
844
845				var _src2 = (0, _media2.absolutizeUrl)(value[_i2].src),
846				    _type3 = value[_i2].type,
847				    _media = Object.assign(value[_i2], {
848					src: _src2,
849					type: (_type3 === '' || _type3 === null || _type3 === undefined) && _src2 ? (0, _media2.getTypeFromFile)(_src2) : _type3
850				});
851
852				mediaFiles.push(_media);
853			}
854		}
855
856		var renderInfo = _renderer.renderer.select(mediaFiles, t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : []),
857		    event = void 0;
858
859		if (!t.mediaElement.paused) {
860			t.mediaElement.pause();
861			event = (0, _general.createEvent)('pause', t.mediaElement);
862			t.mediaElement.dispatchEvent(event);
863		}
864		t.mediaElement.originalNode.src = mediaFiles[0].src || '';
865
866		if (renderInfo === null && mediaFiles[0].src) {
867			t.mediaElement.generateError('No renderer found', mediaFiles);
868			return;
869		}
870
871		return mediaFiles[0].src ? t.mediaElement.changeRenderer(renderInfo.rendererN
871ame, mediaFiles) : null;
872	},
873	    triggerAction = function triggerAction(methodName, args) {
874		try {
875			if (methodName === 'play' && t.mediaElement.rendererName === 'native_dash') {
876				setTimeout(function () {
877					t.mediaElement.renderer[methodName](args);
878				}, 150);
879			} else {
880				t.mediaElement.renderer[methodName](args);
881			}
882		} catch (e) {
883			t.mediaElement.generateError(e, mediaFiles);
884		}
885	},
886	    assignMethods = function assignMethods(methodName) {
887		t.mediaElement[methodName] = function () {
888			for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
889				args[_key] = arguments[_key];
890			}
891
892			if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer[methodName] === 'function') {
893				if (t.mediaElement.promises.length) {
894					Promise.all(t.mediaElement.promises).then(function () {
895						triggerAction(methodName, args);
896					}).catch(function (e) {
897						t.mediaElement.generateError(e, mediaFiles);
898					});
899				} else {
900					triggerAction(methodName, args);
901				}
902			}
903			return null;
904		};
905	};
906
907	addProperty(t.mediaElement, 'src', getSrc, setSrc);
908	t.mediaElement.getSrc = getSrc;
909	t.mediaElement.setSrc = setSrc;
910
911	for (var _i3 = 0, total = props.length; _i3 < total; _i3++) {
912		assignGettersSetters(props[_i3]);
913	}
914
915	for (var _i4 = 0, _total = methods.length; _i4 < _total; _i4++) {
916		assignMethods(methods[_i4]);
917	}
918
919	t.mediaElement.addEventListener = function (eventName, callback) {
920		t.mediaElement.events[eventName] = t.mediaElement.events[eventName] || [];
921
922		t.mediaElement.events[eventName].push(callback);
923	};
924	t.mediaElement.removeEventListener = function (eventName, callback) {
925		if (!eventName) {
926			t.mediaElement.events = {};
927			return true;
928		}
929
930		var callbacks = t.mediaElement.events[eventName];
931
932		if (!callbacks) {
933			return true;
934		}
935
936		if (!callback) {
937			t.mediaElement.events[eventName] = [];
938			return true;
939		}
940
941		for (var _i5 = 0; _i5 < callbacks.length; _i5++) {
942			if (callbacks[_i5] === callback) {
943				t.mediaElement.events[eventName].splice(_i5, 1);
944				return true;
945			}
946		}
947		return false;
948	};
949
950	t.mediaElement.dispatchEvent = function (event) {
951		var callbacks = t.mediaElement.events[event.type];
952		if (callbacks) {
953			for (var _i6 = 0; _i6 < callbacks.length; _i6++) {
954				callbacks[_i6].apply(null, [event]);
955			}
956		}
957	};
958
959	if (mediaFiles.length) {
960		t.mediaElement.src = mediaFiles;
961	}
962
963	if (t.mediaElement.promises.length) {
964		Promise.all(t.mediaElement.promises).then(function () {
965			if (t.mediaElement.options.success) {
966				t.mediaElement.options.success(t.mediaElement, t.mediaElement.originalNode);
967			}
968		}).catch(function () {
969			if (error && t.mediaElement.options.error) {
970				t.mediaElement.options.error(t.mediaElement, t.mediaElement.originalNode);
971			}
972		});
973	} else {
974		if (t.mediaElement.options.success) {
975			t.mediaElement.options.success(t.mediaElement, t.mediaElement.originalNode);
976		}
977
978		if (error && t.mediaElement.options.error) {
979			t.mediaElement.options.error(t.mediaElement, t.mediaElement.originalNode);
980		}
981	}
982
983	return t.mediaElement;
984};
985
986_window2.default.MediaElement = MediaElement;
987_mejs2.default.MediaElement = MediaElement;
988
989exports.default = MediaElement;
990
991},{"2":2,"25":25,"27":27,"28":28,"3":3,"7":7,"8":8}],7:[function(_dereq_,module,exports){
992'use strict';
993
994Object.defineProperty(exports, "__esModule", {
995	value: true
996});
997
998var _window = _dereq_(3);
999
1000var _window2 = _interopRequireDefault(_window);
1001
1002function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1003
1004var mejs = {};
1005
1006mejs.version = '4.2.5';
1007
1008mejs.html5media = {
1009	properties: ['volume', 'src', 'currentTime', 'muted', 'duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable', 'currentSrc', 'preload', 'bufferedBytes', 'bufferedTime', 'initialTime', 'startOffsetTime', 'defaultPlaybackRate', 'playbackRate', 'played', 'autoplay', 'loop', 'controls'],
1010	readOnlyProperties: ['duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable'],
1011
1012	methods: ['load', 'play', 'pause', 'canPlayType'],
1013
1014	events: ['loadstart', 'durationchange', 'loadedmetadata', 'loadeddata', 'progress', 'canplay', 'canplaythrough', 'suspend', 'abort', 'error', 'emptied', 'stalled', 'play', 'playing', 'pause', 'waiting', 'seeking', 'seeked', 'timeupdate', 'ended', 'ratechange', 'volumechange'],
1015
1016	mediaTypes: ['audio/mp3', 'audio/ogg', 'audio/oga', 'audio/wav', 'audio/x-wav', 'audio/wave', 'audio/x-pn-wav', 'audio/mpeg', 'audio/mp4', 'video/mp4', 'video/webm', 'video/ogg', 'video/ogv']
1017};
1018
1019_window2.default.mejs = mejs;
1020
1021exports.default = mejs;
1022
1023},{"3":3}],8:[function(_dereq_,module,exports){
1024'use strict';
1025
1026Object.defineProperty(exports, "__esModule", {
1027	value: true
1028});
1029exports.renderer = undefined;
1030
1031var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
1032
1033var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
1034
1035var _mejs = _dereq_(7);
1036
1037var _mejs2 = _interopRequireDefault(_mejs);
1038
1039function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1040
1041function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
1042
1043var Renderer = function () {
vendor: 5,597 bytes, lines 1044-1255
1044	function Renderer() {
1045		_classCallCheck(this, Renderer);
1046
1047		this.renderers = {};
1048		this.order = [];
1049	}
1050
1051	_createClass(Renderer, [{
1052		key: 'add',
1053		value: function add(renderer) {
1054			if (renderer.name === undefined) {
1055				throw new TypeError('renderer must contain at least `name` property');
1056			}
1057
1058			this.renderers[renderer.name] = renderer;
1059			this.order.push(renderer.name);
1060		}
1061	}, {
1062		key: 'select',
1063		value: function select(mediaFiles) {
1064			var renderers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
1065
1066			var renderersLength = renderers.length;
1067
1068			renderers = renderers.length ? renderers : this.order;
1069
1070			if (!renderersLength) {
1071				var rendererIndicator = [/^(html5|native)/i, /^flash/i, /iframe$/i],
1072				    rendererRanking = function rendererRanking(renderer) {
1073					for (var i = 0, total = rendererIndicator.length; i < total; i++) {
1074						if (rendererIndicator[i].test(renderer)) {
1075							return i;
1076						}
1077					}
1078					return rendererIndicator.length;
1079				};
1080
1081				renderers.sort(function (a, b) {
1082					return rendererRanking(a) - rendererRanking(b);
1083				});
1084			}
1085
1086			for (var i = 0, total = renderers.length; i < total; i++) {
1087				var key = renderers[i],
1088				    _renderer = this.renderers[key];
1089
1090				if (_renderer !== null && _renderer !== undefined) {
1091					for (var j = 0, jl = mediaFiles.length; j < jl; j++) {
1092						if (typeof _renderer.canPlayType === 'function' && typeof mediaFiles[j].type === 'string' && _renderer.canPlayType(mediaFiles[j].type)) {
1093							return {
1094								rendererName: _renderer.name,
1095								src: mediaFiles[j].src
1096							};
1097						}
1098					}
1099				}
1100			}
1101
1102			return null;
1103		}
1104	}, {
1105		key: 'order',
1106		set: function set(order) {
1107			if (!Array.isArray(order)) {
1108				throw new TypeError('order must be an array of strings.');
1109			}
1110
1111			this._order = order;
1112		},
1113		get: function get() {
1114			return this._order;
1115		}
1116	}, {
1117		key: 'renderers',
1118		set: function set(renderers) {
1119			if (renderers !== null && (typeof renderers === 'undefined' ? 'undefined' : _typeof(renderers)) !== 'object') {
1120				throw new TypeError('renderers must be an array of objects.');
1121			}
1122
1123			this._renderers = renderers;
1124		},
1125		get: function get() {
1126			return this._renderers;
1127		}
1128	}]);
1129
1130	return Renderer;
1131}();
1132
1133var renderer = exports.renderer = new Renderer();
1134
1135_mejs2.default.Renderers = renderer;
1136
1137},{"7":7}],9:[function(_dereq_,module,exports){
1138'use strict';
1139
1140var _window = _dereq_(3);
1141
1142var _window2 = _interopRequireDefault(_window);
1143
1144var _document = _dereq_(2);
1145
1146var _document2 = _interopRequireDefault(_document);
1147
1148var _i18n = _dereq_(5);
1149
1150var _i18n2 = _interopRequireDefault(_i18n);
1151
1152var _player = _dereq_(16);
1153
1154var _player2 = _interopRequireDefault(_player);
1155
1156var _constants = _dereq_(25);
1157
1158var Features = _interopRequireWildcard(_constants);
1159
1160var _general = _dereq_(27);
1161
1162var _dom = _dereq_(26);
1163
1164var _media = _dereq_(28);
1165
1166function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
1167
1168function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1169
1170Object.assign(_player.config, {
1171	usePluginFullScreen: true,
1172
1173	fullscreenText: null,
1174
1175	useFakeFullscreen: false
1176});
1177
1178Object.assign(_player2.default.prototype, {
1179	isFullScreen: false,
1180
1181	isNativeFullScreen: false,
1182
1183	isInIframe: false,
1184
1185	isPluginClickThroughCreated: false,
1186
1187	fullscreenMode: '',
1188
1189	containerSizeTimeout: null,
1190
1191	buildfullscreen: function buildfullscreen(player) {
1192		if (!player.isVideo) {
1193			return;
1194		}
1195
1196		player.isInIframe = _window2.default.location !== _window2.default.parent.location;
1197
1198		player.detectFullscreenMode();
1199
1200		var t = this,
1201		    fullscreenTitle = (0, _general.isString)(t.options.fullscreenText) ? t.options.fullscreenText : _i18n2.default.t('mejs.fullscreen'),
1202		    fullscreenBtn = _document2.default.createElement('div');
1203
1204		fullscreenBtn.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'fullscreen-button';
1205		fullscreenBtn.innerHTML = '<button type="button" aria-controls="' + t.id + '" title="' + fullscreenTitle + '" aria-label="' + fullscreenTitle + '" tabindex="0"></button>';
1206		t.addControlElement(fullscreenBtn, 'fullscreen');
1207
1208		fullscreenBtn.addEventListener('click', function () {
1209			var isFullScreen = Features.HAS_TRUE_NATIVE_FULLSCREEN && Features.IS_FULLSCREEN || player.isFullScreen;
1210
1211			if (isFullScreen) {
1212				player.exitFullScreen();
1213			} else {
1214				player.enterFullScreen();
1215			}
1216		});
1217
1218		player.fullscreenBtn = fullscreenBtn;
1219
1220		t.options.keyActions.push({
1221			keys: [70],
1222			action: function action(player, media, key, event) {
1223				if (!event.ctrlKey) {
1224					if (typeof player.enterFullScreen !== 'undefined') {
1225						if (player.isFullScreen) {
1226							player.exitFullScreen();
1227						} else {
1228							player.enterFullScreen();
1229						}
1230					}
1231				}
1232			}
1233		});
1234
1235		t.exitFullscreenCallback = function (e) {
1236			var key = e.which || e.keyCode || 0;
1237			if (key === 27 && (Features.HAS_TRUE_NATIVE_FULLSCREEN && Features.IS_FULLSCREEN || t.isFullScreen)) {
1238				player.exitFullScreen();
1239			}
1240		};
1241
1242		t.globalBind('keydown', t.exitFullscreenCallback);
1243
1244		t.normalHeight = 0;
1245		t.normalWidth = 0;
1246
1247		if (Features.HAS_TRUE_NATIVE_FULLSCREEN) {
1248			var fullscreenChanged = function fullscreenChanged() {
1249				if (player.isFullScreen) {
1250					if (Features.isFullScreen()) {
1251						player.isNativeFullScreen = true;
1252
1253						player.setControlsSize();
1254					} else {
1255						player.isNativeFullScreen = false;
1256
1257						player.exitFullScreen();
1258					}
1259				}
1260			};
1261
1262			player.globalBind(Features.FULLSCREEN_EVENT_NAME, fullscreenChanged);
1263		}
1264	},
1265	cleanfullscreen: function cleanfullscreen(player) {
1266		player.exitFullScreen();
1267		player.globalUnbind('keydown', player.exitFullscreenCallback);
1268	},
1269	detectFullscreenMode: function detectFullscreenMode() {
1270		var t = this,
1271		    isNative = t.media.rendererName !== null && /(native|html5)/i.test(t.media.rendererName);
1272
1273		var mode = '';
1274
1275		if (Features.HAS_TRUE_NATIVE_FULLSCREEN && isNative) {
1276			mode = 'native-native';
1277		} else if (Features.HAS_TRUE_NATIVE_FULLSCREEN && !isNative) {
1278			mode = 'plugin-native';
1279		} else if (t.usePluginFullScreen && Features.SUPPORT_POINTER_EVENTS) {
1280			mode = 'plugin-click';
1281		}
1282
1283		t.fullscreenMode = mode;
1284		return mode;
1285	},
1286	enterFullScreen: function enterFullScreen() {
1287		var t = this,
1288		    isNative = t.media.rendererName !== null && /(html5|native)/i.test(t.media.rendererName),
1289		    containerStyles = getComputedStyle(t.container);
1290
1291		if (t.options.useFakeFullscreen === false && Features.IS_IOS && Features.HAS_IOS_FULLSCREEN && typeof t.media.originalNode.webkitEnterFullscreen === 'function' && t.media.originalNode.canPlayType((0, _media.getTypeFromFile)(t.media.getSrc()))) {
1292			t.media.originalNode.webkitEnterFullscreen();
1293			return;
1294		}
1295
1296		(0, _dom.addClass)(_document2.default.documentElement, t.options.classPrefix + 'fullscreen');
1297		(0, _dom.addClass)(t.container, t.options.classPrefix + 'container-fullscreen');
1298
1299		t.normalHeight = parseFloat(containerStyles.height);
1300		t.normalWidth = parseFloat(containerStyles.width);
1301
1302		if (t.fullscreenMode === 'native-native' || t.fullscreenMode === 'plugin-native') {
1303			Features.requestFullScreen(t.container);
1304
1305			if (t.isInIframe) {
1306				setTimeout(function checkFullscreen() {
1307
1308					if (t.isNativeFullScreen) {
1309						var percentErrorMargin = 0.002,
1310						    windowWidth = _window2.default.innerWidth || _document2.default.documentElement.clientWidth || _document2.default.body.clientWidth,
1311						    screenWidth = screen.width,
1312						    absDiff = Math.abs(screenWidth - windowWidth),
1313						    marginError = screenWidth * percentErrorMargin;
1314
1315						if (absDiff > marginError) {
1316							t.exitFullScreen();
1317						} else {
1318							setTimeout(checkFullscreen, 500);
1319						}
1320					}
1321				}, 1000);
1322			}
1323		}
1324
1325		t.container.style.width = '100%';
1326		t.container.style.height = '100%';
1327
1328		t.containerSizeTimeout = setTimeout(function () {
1329			t.container.style.width = '100%';
1330			t.container.style.height = '100%';
1331			t.setControlsSize();
1332		}, 500);
1333
1334		if (isNative) {
1335			t.node.style.width = '100%';
1336			t.node.style.height = '100%';
1337		} else {
1338			var elements = t.container.querySelectorAll('embed, object, video'),
1339			    _total = elements.length;
1340			for (var i = 0; i < _total; i++) {
1341				elements[i].style.width = '100%';
1342				elements[i].style.height = '100%';
1343			}
1344		}
1345
1346		if (t.options.setDimensions && typeof t.media.setSize === 'function') {
1347			t.media.setSize(screen.width, screen.height);
1348		}
1349
1350		var layers = t.layers.children,
1351		    total = layers.length;
1352		for (var _i = 0; _i < total; _i++) {
1353			layers[_i].style.width = '100%';
1354			layers[_i].style.height = '100%';
1355		}
1356
1357		if (t.fullscreenBtn) {
1358			(0, _dom.removeClass)(t.fullscreenBtn, t.options.classPrefix + 'fullscreen');
1359			(0, _dom.addClass)(t.fullscreenBtn, t.options.classPrefix + 'unfullscreen');
1360		}
1361
1362		t.setControlsSize();
1363		t.isFullScreen = true;
1364
1365		var zoomFactor = Math.min(screen.width / t.width, screen.height / t.height),
1366		    captionText = t.container.querySelector('.' + t.options.classPrefix + 'captions-text');
1367		if (captionText) {
1368			captionText.style.fontSize = zoomFactor * 100 + '%';
1369			captionText.style.lineHeight = 'normal';
1370			t.container.querySelector('.' + t.options.classPrefix + 'captions-position').style.bottom = '45px';
1371		}
1372		var event = (0, _general.createEvent)('enteredfullscreen', t.container);
1373		t.container.dispatchEvent(event);
1374	},
1375	exitFullScreen: function exitFullScreen() {
1376		var t = this,
1377		    isNative = t.media.rendererName !== null && /(native|html5)/i.test(t.media.rendererN
1377ame);
1378
1379		clearTimeout(t.containerSizeTimeout);
1380
1381		if (Features.HAS_TRUE_NATIVE_FULLSCREEN && (Features.IS_FULLSCREEN || t.isFullScreen)) {
1382			Features.cancelFullScreen();
1383		}
1384
1385		(0, _dom.removeClass)(_document2.default.documentElement, t.options.classPrefix + 'fullscreen');
1386		(0, _dom.removeClass)(t.container, t.options.classPrefix + 'container-fullscreen');
1387
1388		if (t.options.setDimensions) {
1389			t.container.style.width = t.normalWidth + 'px';
1390			t.container.style.height = t.normalHeight + 'px';
1391
1392			if (isNative) {
1393				t.node.style.width = t.normalWidth + 'px';
1394				t.node.style.height = t.normalHeight + 'px';
1395			} else {
1396				var elements = t.container.querySelectorAll('embed, object, video'),
1397				    _total2 = elements.length;
1398				for (var i = 0; i < _total2; i++) {
1399					elements[i].style.width = t.normalWidth + 'px';
1400					elements[i].style.height = t.normalHeight + 'px';
1401				}
1402			}
1403
1404			if (typeof t.media.setSize === 'function') {
1405				t.media.setSize(t.normalWidth, t.normalHeight);
1406			}
1407
1408			var layers = t.layers.children,
1409			    total = layers.length;
1410			for (var _i2 = 0; _i2 < total; _i2++) {
1411				layers[_i2].style.width = t.normalWidth + 'px';
1412				layers[_i2].style.height = t.normalHeight + 'px';
1413			}
1414		}
1415
1416		if (t.fullscreenBtn) {
1417			(0, _dom.removeClass)(t.fullscreenBtn, t.options.classPrefix + 'unfullscreen');
1418			(0, _dom.addClass)(t.fullscreenBtn, t.options.classPrefix + 'fullscreen');
1419		}
1420
1421		t.setControlsSize();
1422		t.isFullScreen = false;
1423
1424		var captionText = t.container.querySelector('.' + t.options.classPrefix + 'captions-text');
1425		if (captionText) {
1426			captionText.style.fontSize = '';
1427			captionText.style.lineHeight = '';
1428			t.container.querySelector('.' + t.options.classPrefix + 'captions-position').style.bottom = '';
1429		}
1430		var event = (0, _general.createEvent)('exitedfullscreen', t.container);
1431		t.container.dispatchEvent(event);
1432	}
1433});
1434
1435},{"16":16,"2":2,"25":25,"26":26,"27":27,"28":28,"3":3,"5":5}],10:[function(_dereq_,module,exports){
1436'use strict';
1437
1438var _document = _dereq_(2);
1439
1440var _document2 = _interopRequireDefault(_document);
1441
1442var _player = _dereq_(16);
1443
1444var _player2 = _interopRequireDefault(_player);
1445
1446var _i18n = _dereq_(5);
1447
1448var _i18n2 = _interopRequireDefault(_i18n);
1449
1450var _general = _dereq_(27);
1451
1452var _dom = _dereq_(26);
1453
1454function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1455
1456Object.assign(_player.config, {
1457	playText: null,
1458
1459	pauseText: null
1460});
1461
1462Object.assign(_player2.default.prototype, {
1463	buildplaypause: function buildplaypause(player, controls, layers, media) {
1464		var t = this,
1465		    op = t.options,
1466		    playTitle = (0, _general.isString)(op.playText) ? op.playText : _i18n2.default.t('mejs.play'),
1467		    pauseTitle = (0, _general.isString)(op.pauseText) ? op.pauseText : _i18n2.default.t('mejs.pause'),
1468		    play = _document2.default.createElement('div');
1469
1470		play.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'playpause-button ' + t.options.classPrefix + 'play';
1471		play.innerHTML = '<button type="button" aria-controls="' + t.id + '" title="' + playTitle + '" aria-label="' + pauseTitle + '" tabindex="0"></button>';
1472		play.addEventListener('click', function () {
1473			if (t.paused) {
1474				t.play();
1475			} else {
1476				t.pause();
1477			}
1478		});
1479
1480		var playBtn = play.querySelector('button');
1481		t.addControlElement(play, 'playpause');
1482
1483		function togglePlayPause(which) {
1484			if ('play' === which) {
1485				(0, _dom.removeClass)(play, t.options.classPrefix + 'play');
1486				(0, _dom.removeClass)(play, t.options.classPrefix + 'replay');
1487				(0, _dom.addClass)(play, t.options.classPrefix + 'pause');
1488				playBtn.setAttribute('title', pauseTitle);
1489				playBtn.setAttribute('aria-label', pauseTitle);
1490			} else {
1491
1492				(0, _dom.removeClass)(play, t.options.classPrefix + 'pause');
1493				(0, _dom.removeClass)(play, t.options.classPrefix + 'replay');
1494				(0, _dom.addClass)(play, t.options.classPrefix + 'play');
1495				playBtn.setAttribute('title', playTitle);
1496				playBtn.setAttribute('aria-label', playTitle);
1497			}
1498		}
1499
1500		togglePlayPause('pse');
1501
1502		media.addEventListener('loadedmetadata', function () {
1503			if (media.rendererName.indexOf('flash') === -1) {
1504				togglePlayPause('pse');
1505			}
1506		});
1507		media.addEventListener('play', function () {
1508			togglePlayPause('play');
1509		});
1510		media.addEventListener('playing', function () {
1511			togglePlayPause('play');
1512		});
1513		media.addEventListener('pause', function () {
1514			togglePlayPause('pse');
1515		});
1516		media.addEventListener('ended', function () {
1517			if (!player.options.loop) {
1518				(0, _dom.removeClass)(play, t.options.classPrefix + 'pause');
1519				(0, _dom.removeClass)(play, t.options.classPrefix + 'play');
1520				(0, _dom.addClass)(play, t.options.classPrefix + 'replay');
1521				playBtn.setAttribute('title', playTitle);
1522				playBtn.setAttribute('aria-label', playTitle);
1523			}
1524		});
1525	}
1526});
1527
1528},{"16":16,"2":2,"26":26,"27":27,"5":5}],11:[function(_dereq_,module,exports){
1529'use strict';
1530
1531var _document = _dereq_(2);
1532
1533var _document2 = _interopRequireDefault(_document);
1534
1535var _player = _dereq_(16);
1536
1537var _player2 = _interopRequireDefault(_player);
1538
1539var _i18n = _dereq_(5);
1540
1541var _i18n2 = _interopRequireDefault(_i18n);
1542
1543var _constants = _dereq_(25);
1544
1545var _time = _dereq_(30);
1546
1547var _dom = _dereq_(26);
1548
1549function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1550
1551Object.assign(_player.config, {
1552	enableProgressTooltip: true,
1553
1554	useSmoothHover: true,
1555
1556	forceLive: false
1557});
1558
1559Object.assign(_player2.default.prototype, {
1560	buildprogress: function buildprogress(player, controls, layers, media) {
1561
1562		var lastKeyPressTime = 0,
1563		    mouseIsDown = false,
1564		    startedPaused = false;
1565
1566		var t = this,
1567		    autoRewindInitial = player.options.autoRewind,
1568		    tooltip = player.options.enableProgressTooltip ? '<span class="' + t.options.classPrefix + 'time-float">' + ('<span class="' + t.options.classPrefix + 'time-float-current">00:00</span>') + ('<span class="' + t.options.classPrefix + 'time-float-corner"></span>') + '</span>' : '',
1569		    rail = _document2.default.createElement('div');
1570
1571		rail.className = t.options.classPrefix + 'time-rail';
1572		rail.innerHTML = '<span class="' + t.options.classPrefix + 'time-total ' + t.options.classPrefix + 'time-slider">' + ('<span class="' + t.options.classPrefix + 'time-buffering"></span>') + ('<span class="' + t.options.classPrefix + 'time-loaded"></span>') + ('<span class="' + t.options.classPrefix + 'time-current"></span>') + ('<span class="' + t.options.classPrefix + 'time-hovered no-hover"></span>') + ('<span class="' + t.options.classPrefix + 'time-handle"><span class="' + t.options.classPrefix + 'time-handle-content"></span></span>') + ('' + tooltip) + '</span>';
1573
1574		t.addControlElement(rail, 'progress');
1575
1576		t.options.keyActions.push({
1577			keys: [37, 227],
1578			action: function action(player) {
1579				if (!isNaN(player.duration) && player.duration > 0) {
1580					if (player.isVideo) {
1581						player.showControls();
1582						player.startControlsTimer();
1583					}
1584
1585					player.container.querySelector('.' + _player.config.classPrefix + 'time-total').focus();
1586
1587					var newTime = Math.max(player.currentTime - player.options.defaultSeekBackwardInterval(player), 0);
1588					player.setCurrentTime(newTime);
1589				}
1590			}
1591		}, {
1592			keys: [39, 228],
1593			action: function action(player) {
1594
1595				if (!isNaN(player.duration) && player.duration > 0) {
1596					if (player.isVideo) {
1597						player.showControls();
1598						player.startControlsTimer();
1599					}
1600
1601					player.container.querySelector('.' + _player.config.classPrefix + 'time-total').focus();
1602
1603					var newTime = Math.min(player.currentTime + player.options.defaultSeekForwardInterval(player), player.duration);
1604					player.setCurrentTime(newTime);
1605				}
1606			}
1607		});
1608
1609		t.rail = controls.querySelector('.' + t.options.classPrefix + 'time-rail');
1610		t.total = controls.querySelector('.' + t.options.classPrefix + 'time-total');
1611		t.loaded = controls.querySelector('.' + t.options.classPrefix + 'time-loaded');
1612		t.current = controls.querySelector('.' + t.options.classPrefix + 'time-current');
1613		t.handle = controls.querySelector('.' + t.options.classPrefix + 'time-handle');
1614		t.timefloat = controls.querySelector('.' + t.options.classPrefix + 'time-float');
1615		t.timefloatcurrent = controls.querySelector('.' + t.options.classPrefix + 'time-float-current');
1616		t.slider = controls.querySelector('.' + t.options.classPrefix + 'time-slider');
1617		t.hovered = controls.querySelector('.' + t.options.classPrefix + 'time-hovered');
1618		t.buffer = controls.querySelector('.' + t.options.classPrefix + 'time-buffering');
1619		t.newTime = 0;
1620		t.forcedHandlePause = false;
vendor: 4,258 bytes, lines 1621-1739
1621		t.setTransformStyle = function (element, value) {
1622			element.style.transform = value;
1623			element.style.webkitTransform = value;
1624			element.style.MozTransform = value;
1625			element.style.msTransform = value;
1626			element.style.OTransform = value;
1627		};
1628
1629		t.buffer.style.display = 'none';
1630
1631		var handleMouseMove = function handleMouseMove(e) {
1632			var totalStyles = getComputedStyle(t.total),
1633			    offsetStyles = (0, _dom.offset)(t.total),
1634			    width = t.total.offsetWidth,
1635			    transform = function () {
1636				if (totalStyles.webkitTransform !== undefined) {
1637					return 'webkitTransform';
1638				} else if (totalStyles.mozTransform !== undefined) {
1639					return 'mozTransform ';
1640				} else if (totalStyles.oTransform !== undefined) {
1641					return 'oTransform';
1642				} else if (totalStyles.msTransform !== undefined) {
1643					return 'msTransform';
1644				} else {
1645					return 'transform';
1646				}
1647			}(),
1648			    cssMatrix = function () {
1649				if ('WebKitCSSMatrix' in window) {
1650					return 'WebKitCSSMatrix';
1651				} else if ('MSCSSMatrix' in window) {
1652					return 'MSCSSMatrix';
1653				} else if ('CSSMatrix' in window) {
1654					return 'CSSMatrix';
1655				}
1656			}();
1657
1658			var percentage = 0,
1659			    leftPos = 0,
1660			    pos = 0,
1661			    x = void 0;
1662
1663			if (e.originalEvent && e.originalEvent.changedTouches) {
1664				x = e.originalEvent.changedTouches[0].pageX;
1665			} else if (e.changedTouches) {
1666				x = e.changedTouches[0].pageX;
1667			} else {
1668				x = e.pageX;
1669			}
1670
1671			if (t.getDuration()) {
1672				if (x < offsetStyles.left) {
1673					x = offsetStyles.left;
1674				} else if (x > width + offsetStyles.left) {
1675					x = width + offsetStyles.left;
1676				}
1677
1678				pos = x - offsetStyles.left;
1679				percentage = pos / width;
1680				t.newTime = percentage <= 0.02 ? 0 : percentage * t.getDuration();
1681
1682				if (mouseIsDown && t.getCurrentTime() !== null && t.newTime.toFixed(4) !== t.getCurrentTime().toFixed(4)) {
1683					t.setCurrentRailHandle(t.newTime);
1684					t.updateCurrent(t.newTime);
1685				}
1686
1687				if (!_constants.IS_IOS && !_constants.IS_ANDROID) {
1688					if (pos < 0) {
1689						pos = 0;
1690					}
1691					if (t.options.useSmoothHover && cssMatrix !== null && typeof window[cssMatrix] !== 'undefined') {
1692						var matrix = new window[cssMatrix](getComputedStyle(t.handle)[transform]),
1693						    handleLocation = matrix.m41,
1694						    hoverScaleX = pos / parseFloat(getComputedStyle(t.total).width) - handleLocation / parseFloat(getComputedStyle(t.total).width);
1695
1696						t.hovered.style.left = handleLocation + 'px';
1697						t.setTransformStyle(t.hovered, 'scaleX(' + hoverScaleX + ')');
1698						t.hovered.setAttribute('pos', pos);
1699
1700						if (hoverScaleX >= 0) {
1701							(0, _dom.removeClass)(t.hovered, 'negative');
1702						} else {
1703							(0, _dom.addClass)(t.hovered, 'negative');
1704						}
1705					}
1706
1707					if (t.timefloat) {
1708						var half = t.timefloat.offsetWidth / 2,
1709						    offsetContainer = mejs.Utils.offset(t.container),
1710						    tooltipStyles = getComputedStyle(t.timefloat);
1711
1712						if (x - offsetContainer.left < t.timefloat.offsetWidth) {
1713							leftPos = half;
1714						} else if (x - offsetContainer.left >= t.container.offsetWidth - half) {
1715							leftPos = t.total.offsetWidth - half;
1716						} else {
1717							leftPos = pos;
1718						}
1719
1720						if ((0, _dom.hasClass)(t.container, t.options.classPrefix + 'long-video')) {
1721							leftPos += parseFloat(tooltipStyles.marginLeft) / 2 + t.timefloat.offsetWidth / 2;
1722						}
1723
1724						t.timefloat.style.left = leftPos + 'px';
1725						t.timefloatcurrent.innerHTML = (0, _time.secondsToTimeCode)(t.newTime, player.options.alwaysShowHours, player.options.showTimecodeFrameCount, player.options.framesPerSecond, player.options.secondsDecimalLength);
1726						t.timefloat.style.display = 'block';
1727					}
1728				}
1729			} else if (!_constants.IS_IOS && !_constants.IS_ANDROID && t.timefloat) {
1730				leftPos = t.timefloat.offsetWidth + width >= t.container.offsetWidth ? t.timefloat.offsetWidth / 2 : 0;
1731				t.timefloat.style.left = leftPos + 'px';
1732				t.timefloat.style.left = leftPos + 'px';
1733				t.timefloat.style.display = 'block';
1734			}
1735		},
1736		    updateSlider = function updateSlider() {
1737			var seconds = t.getCurrentTime(),
1738			    timeSliderText = _i18n2.default.t('mejs.time-slider'),
1739			    time = (0, _time.secondsToTimeCode)(seconds, player.options.alwaysShowHours, player.options.showTimeco
1739deFrameCount, player.options.framesPerSecond, player.options.secondsDecimalLength),
1740			    duration = t.getDuration();
1741
1742			t.slider.setAttribute('role', 'slider');
1743			t.slider.tabIndex = 0;
1744
1745			if (media.paused) {
1746				t.slider.setAttribute('aria-label', timeSliderText);
1747				t.slider.setAttribute('aria-valuemin', 0);
1748				t.slider.setAttribute('aria-valuemax', duration);
1749				t.slider.setAttribute('aria-valuenow', seconds);
1750				t.slider.setAttribute('aria-valuetext', time);
1751			} else {
1752				t.slider.removeAttribute('aria-label');
1753				t.slider.removeAttribute('aria-valuemin');
1754				t.slider.removeAttribute('aria-valuemax');
1755				t.slider.removeAttribute('aria-valuenow');
1756				t.slider.removeAttribute('aria-valuetext');
1757			}
1758		},
1759		    restartPlayer = function restartPlayer() {
1760			if (new Date() - lastKeyPressTime >= 1000) {
1761				t.play();
1762			}
1763		},
1764		    handleMouseup = function handleMouseup() {
1765			if (mouseIsDown && t.getCurrentTime() !== null && t.newTime.toFixed(4) !== t.getCurrentTime().toFixed(4)) {
1766				t.setCurrentTime(t.newTime);
1767				t.setCurrentRail();
1768				t.updateCurrent(t.newTime);
1769			}
1770			if (t.forcedHandlePause) {
1771				t.slider.focus();
1772				t.play();
1773			}
1774			t.forcedHandlePause = false;
1775		};
1776
1777		t.slider.addEventListener('focus', function () {
1778			player.options.autoRewind = false;
1779		});
1780		t.slider.addEventListener('blur', function () {
1781			player.options.autoRewind = autoRewindInitial;
1782		});
1783		t.slider.addEventListener('keydown', function (e) {
1784			if (new Date() - lastKeyPressTime >= 1000) {
1785				startedPaused = t.paused;
1786			}
1787
1788			if (t.options.keyActions.length) {
1789
1790				var keyCode = e.which || e.keyCode || 0,
1791				    duration = t.getDuration(),
1792				    seekForward = player.options.defaultSeekForwardInterval(media),
1793				    seekBackward = player.options.defaultSeekBackwardInterval(media);
1794
1795				var seekTime = t.getCurrentTime();
1796				var volume = t.container.querySelector('.' + t.options.classPrefix + 'volume-slider');
1797
1798				if (keyCode === 38 || keyCode === 40) {
1799					if (volume) {
1800						volume.style.display = 'block';
1801					}
1802					if (t.isVideo) {
1803						t.showControls();
1804						t.startControlsTimer();
1805					}
1806
1807					var newVolume = keyCode === 38 ? Math.min(t.volume + 0.1, 1) : Math.max(t.volume - 0.1, 0),
1808					    mutePlayer = newVolume <= 0;
1809					t.setVolume(newVolume);
1810					t.setMuted(mutePlayer);
1811					return;
1812				} else {
1813					if (volume) {
1814						volume.style.display = 'none';
1815					}
1816				}
1817
1818				switch (keyCode) {
1819					case 37:
1820						if (t.getDuration() !== Infinity) {
1821							seekTime -= seekBackward;
1822						}
1823						break;
1824					case 39:
1825						if (t.getDuration() !== Infinity) {
1826							seekTime += seekForward;
1827						}
1828						break;
1829					case 36:
1830						seekTime = 0;
1831						break;
1832					case 35:
1833						seekTime = duration;
1834						break;
1835					case 13:
1836					case 32:
1837						if (_constants.IS_FIREFOX) {
1838							if (t.paused) {
1839								t.play();
1840							} else {
1841								t.pause();
1842							}
1843						}
1844						return;
1845					default:
1846						return;
1847				}
1848
1849				seekTime = seekTime < 0 ? 0 : seekTime >= duration ? duration : Math.floor(seekTime);
1850				lastKeyPressTime = new Date();
1851				if (!startedPaused) {
1852					player.pause();
1853				}
1854
1855				if (seekTime < t.getDuration() && !startedPaused) {
1856					setTimeout(restartPlayer, 1100);
1857				}
1858
1859				t.setCurrentTime(seekTime);
1860				player.showControls();
1861
1862				e.preventDefault();
1863				e.stopPropagation();
1864			}
1865		});
1866
1867		var events = ['mousedown', 'touchstart'];
1868
1869		t.slider.addEventListener('dragstart', function () {
1870			return false;
1871		});
1872
1873		for (var i = 0, total = events.length; i < total; i++) {
1874			t.slider.addEventListener(events[i], function (e) {
1875				t.forcedHandlePause = false;
1876				if (t.getDuration() !== Infinity) {
1877					if (e.which === 1 || e.which === 0) {
1878						if (!t.paused) {
1879							t.pause();
1880							t.forcedHandlePause = true;
1881						}
1882
1883						mouseIsDown = true;
1884						handleMouseMove(e);
1885						var endEvents = ['mouseup', 'touchend'];
1886
1887						for (var j = 0, totalEvents = endEvents.length; j < totalEvents; j++) {
1888							t.container.addEventListener(endEvents[j], function (event) {
1889								var target = event.target;
1890								if (target === t.slider || target.closest('.' + t.options.classPrefix + 'time-slider')) {
1891									handleMouseMove(event);
1892								}
1893							});
1894						}
1895						t.globalBind('mouseup.dur touchend.dur', function () {
1896							handleMouseup();
1897							mouseIsDown = false;
vendor: 6,406 bytes, lines 1898-2098
1898							if (t.timefloat) {
1899								t.timefloat.style.display = 'none';
1900							}
1901						});
1902					}
1903				}
1904			}, _constants.SUPPORT_PASSIVE_EVENT && events[i] === 'touchstart' ? { passive: true } : false);
1905		}
1906		t.slider.addEventListener('mouseenter', function (e) {
1907			if (e.target === t.slider && t.getDuration() !== Infinity) {
1908				t.container.addEventListener('mousemove', function (event) {
1909					var target = event.target;
1910					if (target === t.slider || target.closest('.' + t.options.classPrefix + 'time-slider')) {
1911						handleMouseMove(event);
1912					}
1913				});
1914				if (t.timefloat && !_constants.IS_IOS && !_constants.IS_ANDROID) {
1915					t.timefloat.style.display = 'block';
1916				}
1917				if (t.hovered && !_constants.IS_IOS && !_constants.IS_ANDROID && t.options.useSmoothHover) {
1918					(0, _dom.removeClass)(t.hovered, 'no-hover');
1919				}
1920			}
1921		});
1922		t.slider.addEventListener('mouseleave', function () {
1923			if (t.getDuration() !== Infinity) {
1924				if (!mouseIsDown) {
1925					if (t.timefloat) {
1926						t.timefloat.style.display = 'none';
1927					}
1928					if (t.hovered && t.options.useSmoothHover) {
1929						(0, _dom.addClass)(t.hovered, 'no-hover');
1930					}
1931				}
1932			}
1933		});
1934
1935		t.broadcastCallback = function (e) {
1936			var broadcast = controls.querySelector('.' + t.options.classPrefix + 'broadcast');
1937			if (!t.options.forceLive && t.getDuration() !== Infinity) {
1938				if (broadcast) {
1939					t.slider.style.display = '';
1940					broadcast.remove();
1941				}
1942
1943				player.setProgressRail(e);
1944				if (!t.forcedHandlePause) {
1945					player.setCurrentRail(e);
1946				}
1947				updateSlider();
1948			} else if (!broadcast || t.options.forceLive) {
1949				var label = _document2.default.createElement('span');
1950				label.className = t.options.classPrefix + 'broadcast';
1951				label.innerText = _i18n2.default.t('mejs.live-broadcast');
1952				t.slider.style.display = 'none';
1953				t.rail.appendChild(label);
1954			}
1955		};
1956
1957		media.addEventListener('progress', t.broadcastCallback);
1958		media.addEventListener('timeupdate', t.broadcastCallback);
1959		media.addEventListener('play', function () {
1960			t.buffer.style.display = 'none';
1961		});
1962		media.addEventListener('playing', function () {
1963			t.buffer.style.display = 'none';
1964		});
1965		media.addEventListener('seeking', function () {
1966			t.buffer.style.display = '';
1967		});
1968		media.addEventListener('seeked', function () {
1969			t.buffer.style.display = 'none';
1970		});
1971		media.addEventListener('pause', function () {
1972			t.buffer.style.display = 'none';
1973		});
1974		media.addEventListener('waiting', function () {
1975			t.buffer.style.display = '';
1976		});
1977		media.addEventListener('loadeddata', function () {
1978			t.buffer.style.display = '';
1979		});
1980		media.addEventListener('canplay', function () {
1981			t.buffer.style.display = 'none';
1982		});
1983		media.addEventListener('error', function () {
1984			t.buffer.style.display = 'none';
1985		});
1986
1987		t.container.addEventListener('controlsresize', function (e) {
1988			if (t.getDuration() !== Infinity) {
1989				player.setProgressRail(e);
1990				if (!t.forcedHandlePause) {
1991					player.setCurrentRail(e);
1992				}
1993			}
1994		});
1995	},
1996	cleanprogress: function cleanprogress(player, controls, layers, media) {
1997		media.removeEventListener('progress', player.broadcastCallback);
1998		media.removeEventListener('timeupdate', player.broadcastCallback);
1999		if (player.rail) {
2000			player.rail.remove();
2001		}
2002	},
2003	setProgressRail: function setProgressRail(e) {
2004		var t = this,
2005		    target = e !== undefined ? e.detail.target || e.target : t.media;
2006
2007		var percent = null;
2008
2009		if (target && target.buffered && target.buffered.length > 0 && target.buffered.end && t.getDuration()) {
2010			percent = target.buffered.end(target.buffered.length - 1) / t.getDuration();
2011		} else if (target && target.bytesTotal !== undefined && target.bytesTotal > 0 && target.bufferedBytes !== undefined) {
2012				percent = target.bufferedBytes / target.bytesTotal;
2013			} else if (e && e.lengthComputable && e.total !== 0) {
2014					percent = e.loaded / e.total;
2015				}
2016
2017		if (percent !== null) {
2018			percent = Math.min(1, Math.max(0, percent));
2019
2020			if (t.loaded) {
2021				t.setTransformStyle(t.loaded, 'scaleX(' + percent + ')');
2022			}
2023		}
2024	},
2025	setCurrentRailHandle: function setCurrentRailHandle(fakeTime) {
2026		var t = this;
2027		t.setCurrentRailMain(t, fakeTime);
2028	},
2029	setCurrentRail: function setCurrentRail() {
2030		var t = this;
2031		t.setCurrentRailMain(t);
2032	},
2033	setCurrentRailMain: function setCurrentRailMain(t, fakeTime) {
2034		if (t.getCurrentTime() !== undefined && t.getDuration()) {
2035			var nTime = typeof fakeTime === 'undefined' ? t.getCurrentTime() : fakeTime;
2036
2037			if (t.total && t.handle) {
2038				var tW = parseFloat(getComputedStyle(t.total).width);
2039
2040				var newWidth = Math.round(tW * nTime / t.getDuration()),
2041				    handlePos = newWidth - Math.round(t.handle.offsetWidth / 2);
2042
2043				handlePos = handlePos < 0 ? 0 : handlePos;
2044				t.setTransformStyle(t.current, 'scaleX(' + newWidth / tW + ')');
2045				t.setTransformStyle(t.handle, 'translateX(' + handlePos + 'px)');
2046
2047				if (t.options.useSmoothHover && !(0, _dom.hasClass)(t.hovered, 'no-hover')) {
2048					var pos = parseInt(t.hovered.getAttribute('pos'));
2049					pos = isNaN(pos) ? 0 : pos;
2050
2051					var hoverScaleX = pos / tW - handlePos / tW;
2052
2053					t.hovered.style.left = handlePos + 'px';
2054					t.setTransformStyle(t.hovered, 'scaleX(' + hoverScaleX + ')');
2055
2056					if (hoverScaleX >= 0) {
2057						(0, _dom.removeClass)(t.hovered, 'negative');
2058					} else {
2059						(0, _dom.addClass)(t.hovered, 'negative');
2060					}
2061				}
2062			}
2063		}
2064	}
2065});
2066
2067},{"16":16,"2":2,"25":25,"26":26,"30":30,"5":5}],12:[function(_dereq_,module,exports){
2068'use strict';
2069
2070var _document = _dereq_(2);
2071
2072var _document2 = _interopRequireDefault(_document);
2073
2074var _player = _dereq_(16);
2075
2076var _player2 = _interopRequireDefault(_player);
2077
2078var _time = _dereq_(30);
2079
2080var _dom = _dereq_(26);
2081
2082function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2083
2084Object.assign(_player.config, {
2085	duration: 0,
2086
2087	timeAndDurationSeparator: '<span> | </span>'
2088});
2089
2090Object.assign(_player2.default.prototype, {
2091	buildcurrent: function buildcurrent(player, controls, layers, media) {
2092		var t = this,
2093		    time = _document2.default.createElement('div');
2094
2095		time.className = t.options.classPrefix + 'time';
2096		time.setAttribute('role', 'timer');
2097		time.setAttribute('aria-live', 'off');
2098		time.innerHTML = '<span class="' + t.options.classPrefix + 'currenttime">' + (0, _time.secondsToTimeCode)(0, player.options.alwaysShowHours, player.options.showTimeco
2098deFrameCount, player.options.framesPerSecond, player.options.secondsDecimalLength) + '</span>';
2099
2100		t.addControlElement(time, 'current');
2101		player.updateCurrent();
2102		t.updateTimeCallback = function () {
2103			if (t.controlsAreVisible) {
2104				player.updateCurrent();
2105			}
2106		};
2107		media.addEventListener('timeupdate', t.updateTimeCallback);
2108	},
2109	cleancurrent: function cleancurrent(player, controls, layers, media) {
2110		media.removeEventListener('timeupdate', player.updateTimeCallback);
2111	},
2112	buildduration: function buildduration(player, controls, layers, media) {
2113		var t = this,
2114		    currTime = controls.lastChild.querySelector('.' + t.options.classPrefix + 'currenttime');
2115
2116		if (currTime) {
2117			controls.querySelector('.' + t.options.classPrefix + 'time').innerHTML += t.options.timeAndDurationSeparator + '<span class="' + t.options.classPrefix + 'duration">' + ((0, _time.secondsToTimeCode)(t.options.duration, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength) + '</span>');
2118		} else {
2119			if (controls.querySelector('.' + t.options.classPrefix + 'currenttime')) {
2120				(0, _dom.addClass)(controls.querySelector('.' + t.options.classPrefix + 'currenttime').parentNode, t.options.classPrefix + 'currenttime-container');
2121			}
2122
2123			var duration = _document2.default.createElement('div');
2124			duration.className = t.options.classPrefix + 'time ' + t.options.classPrefix + 'duration-container';
2125			duration.innerHTML = '<span class="' + t.options.classPrefix + 'duration">' + ((0, _time.secondsToTimeCode)(t.options.duration, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength) + '</span>');
2126
2127			t.addControlElement(duration, 'duration');
2128		}
2129
2130		t.updateDurationCallback = function () {
2131			if (t.controlsAreVisible) {
2132				player.updateDuration();
2133			}
2134		};
2135
2136		media.addEventListener('timeupdate', t.updateDurationCallback);
2137	},
2138	cleanduration: function cleanduration(player, controls, layers, media) {
2139		media.removeEventListener('timeupdate', player.updateDurationCallback);
2140	},
2141	updateCurrent: function updateCurrent() {
2142		var t = this;
2143
2144		var currentTime = t.getCurrentTime();
2145
2146		if (isNaN(currentTime)) {
2147			currentTime = 0;
2148		}
2149
2150		var timecode = (0, _time.secondsToTimeCode)(currentTime, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength);
2151
2152		if (timecode.length > 5) {
2153			(0, _dom.addClass)(t.container, t.options.classPrefix + 'long-video');
2154		} else {
2155			(0, _dom.removeClass)(t.container, t.options.classPrefix + 'long-video');
2156		}
2157
2158		if (t.controls.querySelector('.' + t.options.classPrefix + 'currenttime')) {
2159			t.controls.querySelector('.' + t.options.classPrefix + 'currenttime').innerText = timecode;
2160		}
2161	},
2162	updateDuration: function updateDuration() {
2163		var t = this;
2164
2165		var duration = t.getDuration();
2166
2167		if (isNaN(duration) || duration === Infinity || duration < 0) {
2168			t.media.duration = t.options.duration = duration = 0;
2169		}
2170
2171		if (t.options.duration > 0) {
2172			duration = t.options.duration;
2173		}
2174
2175		var timecode = (0, _time.secondsToTimeCode)(duration, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength);
2176
2177		if (timecode.length > 5) {
2178			(0, _dom.addClass)(t.container, t.options.classPrefix + 'long-video');
2179		} else {
2180			(0, _dom.removeClass)(t.container, t.options.classPrefix + 'long-video');
2181		}
2182
2183		if (t.controls.querySelector('.' + t.options.classPrefix + 'duration') && duration > 0) {
2184			t.controls.querySelector('.' + t.options.classPrefix + 'duration').innerHTML = timecode;
2185		}
2186	}
2187});
2188
2189},{"16":16,"2":2,"26":26,"30":30}],13:[function(_dereq_,module,exports){
2190'use strict';
2191
2192var _document = _dereq_(2);
2193
2194var _document2 = _interopRequireDefault(_document);
2195
2196var _mejs = _dereq_(7);
2197
2198var _mejs2 = _interopRequireDefault(_mejs);
2199
2200var _i18n = _dereq_(5);
2201
2202var _i18n2 = _interopRequireDefault(_i18n);
2203
2204var _player = _dereq_(16);
2205
2206var _player2 = _interopRequireDefault(_player);
2207
2208var _time = _dereq_(30);
2209
2210var _general = _dereq_(27);
2211
2212var _dom = _dereq_(26);
2213
2214function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2215
2216Object.assign(_player.config, {
2217	startLanguage: '',
2218
2219	tracksText: null,
2220
2221	chaptersText: null,
2222
2223	tracksAriaLive: false,
2224
2225	hideCaptionsButtonWhenEmpty: true,
2226
2227	toggleCaptionsButtonWhenOnlyOne: false,
2228
2229	slidesSelector: ''
2230});
2231
2232Object.assign(_player2.default.prototype, {
2233	hasChapters: false,
2234
2235	buildtracks: function buildtracks(player, controls, layers, media) {
2236
2237		this.findTracks();
2238
2239		if (!player.tracks.length && (!player.trackFiles || !player.trackFiles.length === 0)) {
2240			return;
2241		}
2242
2243		var t = this,
2244		    attr = t.options.tracksAriaLive ? ' role="log" aria-live="assertive" aria-atomic="false"' : '',
2245		    tracksTitle = (0, _general.isString)(t.options.tracksText) ? t.options.tracksText : _i18n2.default.t('mejs.captions-subtitles'),
2246		    chaptersTitle = (0, _general.isString)(t.options.chaptersText) ? t.options.chaptersText : _i18n2.default.t('mejs.captions-chapters'),
2247		    total = player.trackFiles === null ? player.tracks.length : player.trackFiles.length;
2248
2249		if (t.domNode.textTracks) {
2250			for (var i = t.domNode.textTracks.length - 1; i >= 0; i--) {
2251				t.domNode.textTracks[i].mode = 'hidden';
2252			}
2253		}
2254
2255		t.cleartracks(player);
2256
2257		player.captions = _document2.default.createElement('div');
2258		player.captions.className = t.options.classPrefix + 'captions-layer ' + t.options.classPrefix + 'layer';
2259		player.captions.innerHTML = '<div class="' + t.options.classPrefix + 'captions-position ' + t.options.classPrefix + 'captions-position-hover"' + attr + '>' + ('<span class="' + t.options.classPrefix + 'captions-text"></span>') + '</div>';
2260		player.captions.style.display = 'none';
2261		layers.insertBefore(player.captions, layers.firstChild);
2262
2263		player.captionsText = player.captions.querySelector('.' + t.options.classPrefix + 'captions-text');
2264
2265		player.captionsButton = _document2.default.createElement('div');
2266		player.captionsButton.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'captions-button';
2267		player.captionsButton.innerHTML = '<button type="button" aria-controls="' + t.id + '" title="' + tracksTitle + '" aria-label="' + tracksTitle + '" tabindex="0"></button>' + ('<div class="' + t.options.classPrefix + 'captions-selector ' + t.options.classPrefix + 'offscreen">') + ('<ul class="' + t.options.classPrefix + 'captions-selector-list">') + ('<li class="' + t.options.classPrefix + 'captions-selector-list-item">') + ('<input type="radio" class="' + t.options.classPrefix + 'captions-selector-input" ') + ('name="' + player.id + '_captions" id="' + player.id + '_captions_none" ') + 'value="none" checked disabled>' + ('<label class="' + t.options.classPrefix + 'captions-selector-label ') + (t.options.classPrefix + 'captions-selected" ') + ('for="' + player.id + '_captions_none">' + _i18n2.default.t('mejs.none') + '</label>') + '</li>' + '</ul>' + '</div>';
2268
2269		t.addControlElement(player.captionsButton, 'tracks');
2270
2271		player.captionsButton.querySelector('.' + t.options.classPrefix + 'captions-selector-input').disabled = false;
2272
2273		player.chaptersButton = _document2.default.createElement('div');
2274		player.chaptersButton.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'chapters-button';
2275		player.chaptersButton.innerHTML = '<button type="button" aria-controls="' + t.id + '" title="' + chaptersTitle + '" aria-label="' + chaptersTitle + '" tabindex="0"></button>' + ('<div class="' + t.options.classPrefix + 'chapters-selector ' + t.options.classPrefix + 'offscreen">') + ('<ul class="' + t.options.classPrefix + 'chapters-selector-list"></ul>') + '</div>';
2276
2277		var subtitleCount = 0;
2278
2279		for (var _i = 0; _i < total; _i++) {
2280			var kind = player.tracks[_i].kind,
2281			    src = player.tracks[_i].src;
2282			if (src.trim()) {
2283				if (kind === 'subtitles' || kind === 'captions') {
2284					subtitleCount++;
2285				} else if (kind === 'chapters' && !controls.querySelector('.' + t.options.classPrefix + 'chapter-selector')) {
2286					player.captionsButton.parentNode.insertBefore(player.chaptersButton, player.captionsButton);
2287				}
2288			}
2289		}
2290
2291		player.trackToLoad = -1;
2292		player.selectedTrack = null;
2293		player.isLoadingTrack = false;
2294
2295		for (var _i2 = 0; _i2 < total; _i2++) {
2296			var _kind = player.tracks[_i2].kind;
2297			if (player.tracks[_i2].src.trim() && (_kind === 'subtitles' || _kind === 'captions')) {
2298				player.addTrackButton(player.tracks[_i2].trackId, player.tracks[_i2].srclang, player.tracks[_i2].label);
2299			}
2300		}
2301
2302		player.loadNextTrack();
2303
2304		var inEvents = ['mouseenter', 'focusin'],
2305		    outEvents = ['mouseleave', 'focusout'];
2306
2307		if (t.options.toggleCaptionsButtonWhenOnlyOne && subtitleCount === 1) {
2308			player.captionsButton.addEventListener('click', function (e) {
2309				var trackId = 'none';
2310				if (player.selectedTrack === null) {
2311					trackId = player.tracks[0].trackId;
2312				}
2313				var keyboard = e.keyCode || e.which;
2314				player.setTrack(trackId, typeof keyboard !== 'undefined');
2315			});
2316		} else {
2317			var labels = player.captionsButton.querySelectorAll('.' + t.options.classPrefix + 'captions-selector-label'),
2318			    captions = player.captionsButton.querySelectorAll('input[type=radio]');
2319
2320			for (var _i3 = 0, _total = inEvents.length; _i3 < _total; _i3++) {
2321				player.captionsButton.addEventListener(inEvents[_i3], function () {
2322					(0, _dom.removeClass)(this.querySelector('.' + t.options.classPrefix + 'captions-selector'), t.options.classPrefix + 'offscreen');
2323				});
2324			}
2325
2326			for (var _i4 = 0, _total2 = outEvents.length; _i4 < _total2; _i4++) {
2327				player.captionsButton.addEventListener(outEvents[_i4], function () {
2328					(0, _dom.addClass)(this.querySelector('.' + t.options.classPrefix + 'captions-selector'), t.options.classPrefix + 'offscreen');
2329				});
2330			}
2331
2332			for (var _i5 = 0, _total3 = captions.length; _i5 < _total3; _i5++) {
2333				captions[_i5].addEventListener('click', function (e) {
2334					var keyboard = e.keyCode || e.which;
2335					player.setTrack(this.value, typeof keyboard !== 'undefined');
2336				});
2337			}
2338
2339			for (var _i6 = 0, _total4 = labels.length; _i6 < _total4; _i6++) {
2340				labels[_i6].addEventListener('click', function (e) {
2341					var radio = (0, _dom.siblings)(this, function (el) {
2342						return el.tagName === 'INPUT';
2343					})[0],
2344					    event = (0, _general.createEvent)('click', radio);
2345					radio.dispatchEvent(event);
2346					e.preventDefault();
2347				});
2348			}
2349
2350			player.captionsButton.addEventListener('keydown', function (e) {
2351				e.stopPropagation();
2352			});
2353		}
2354
2355		for (var _i7 = 0, _total5 = inEvents.length; _i7 < _total5; _i7++) {
2356			player.chaptersButton.addEventListener(inEvents[_i7], function () {
2357				if (this.querySelector('.' + t.options.classPrefix + 'chapters-selector-list').children.length) {
2358					(0, _dom.removeClass)(this.querySelector('.' + t.options.classPrefix + 'chapters-selector'), t.options.classPrefix + 'offscreen');
2359				}
2360			});
2361		}
2362
2363		for (var _i8 = 0, _total6 = outEvents.length; _i8 < _total6; _i8++) {
2364			player.chaptersButton.addEventListener(outEvents[_i8], function () {
2365				(0, _dom.addClass)(this.querySelector('.' + t.options.classPrefix + 'chapters-selector'), t.options.classPrefix + 'offscreen');
2366			});
2367		}
2368
2369		player.chaptersButton.addEventListener('keydown', function (e) {
2370			e.stopPropagation();
2371		});
2372
2373		if (!player.options.alwaysShowControls) {
2374			player.container.addEventListener('controlsshown', function () {
2375				(0, _dom.addClass)(player.container.querySelector('.' + t.options.classPrefix + 'captions-position'), t.options.classPrefix + 'captions-position-hover');
2376			});
2377
2378			player.container.addEventListener('controlshidden', function () {
2379				if (!media.paused) {
2380					(0, _dom.removeClass)(player.container.querySelector('.' + t.options.classPrefix + 'captions-position'), t.options.classPrefix + 'captions-position-hover');
2381				}
2382			});
2383		} else {
2384			(0, _dom.addClass)(player.container.querySelector('.' + t.options.classPrefix + 'captions-position'), t.options.classPrefix + 'captions-position-hover');
2385		}
2386
2387		media.addEventListener('timeupdate', function () {
2388			player.displayCaptions();
2389		});
2390
2391		if (player.options.slidesSelector !== '') {
2392			player.slidesContainer = _document2.default.querySelectorAll(player.options.slidesSelector);
2393
2394			media.addEventListener('timeupdate', function () {
2395				player.displaySlides();
2396			});
2397		}
2398	},
2399	cleartracks: function cleartracks(player) {
2400		if (player) {
2401			if (player.captions) {
2402				player.captions.remove();
2403			}
2404			if (player.chapters) {
2405				player.chapters.remove();
2406			}
2407			if (player.captionsText) {
2408				player.captionsText.remove();
2409			}
2410			if (player.captionsButton) {
2411				player.captionsButton.remove();
2412			}
2413			if (player.chaptersButton) {
2414				player.chaptersButton.remove();
2415			}
2416		}
2417	},
2418	rebuildtracks: function rebuildtracks() {
2419		var t = this;
2420		t.findTracks();
2421		t.buildtracks(t, t.controls, t.layers, t.media);
2422	},
2423	findTracks: function findTracks() {
2424		var t = this,
2425		    tracktags = t.trackFiles === null ? t.node.querySelectorAll('track') : t.trackFiles,
2426		    total = tracktags.length;
2427
2428		t.tracks = [];
2429		for (var i = 0; i < total; i++) {
2430			var track = tracktags[i],
2431			    srclang = track.getAttribute('srclang').toLowerCase() || '',
2432			    trackId = t.id + '_track_' + i + '_' + track.getAttribute('kind') + '_' + srclang;
2433			t.tracks.push({
2434				trackId: trackId,
2435				srclang: srclang,
2436				src: track.getAttribute('src'),
2437				kind: track.getAttribute('kind'),
2438				label: track.getAttribute('label') || '',
2439				entries: [],
2440				isLoaded: false
2441			});
2442		}
2443	},
2444	setTrack: function setTrack(trackId, setByKeyboard) {
2445
2446		var t = this,
2447		    radios = t.captionsButton.querySelectorAll('input[type="radio"]'),
2448		    captions = t.captionsButton.querySelectorAll('.' + t.options.classPrefix + 'captions-selected'),
2449		    track = t.captionsButton.querySelector('input[value="' + trackId + '"]');
2450
2451		for (var i = 0, total = radios.length; i < total; i++) {
2452			radios[i].checked = false;
2453		}
2454
2455		for (var _i9 = 0, _total7 = captions.length; _i9 < _total7; _i9++) {
2456			(0, _dom.removeClass)(captions[_i9], t.options.classPrefix + 'captions-selected');
2457		}
2458
2459		track.checked = true;
2460		var labels = (0, _dom.siblings)(track, function (el) {
2461			return (0, _dom.hasClass)(el, t.options.classPrefix + 'captions-selector-label');
2462		});
2463		for (var _i10 = 0, _total8 = labels.length; _i10 < _total8; _i10++) {
2464			(0, _dom.addClass)(labels[_i10], t.options.classPrefix + 'captions-selected');
2465		}
2466
2467		if (trackId === 'none') {
2468			t.selectedTrack = null;
2469			(0, _dom.removeClass)(t.captionsButton, t.options.classPrefix + 'captions-enabled');
2470		} else {
2471			for (var _i11 = 0, _total9 = t.tracks.length; _i11 < _total9; _i11++) {
2472				var _track = t.tracks[_i11];
2473				if (_track.trackId === trackId) {
2474					if (t.selectedTrack === null) {
2475						(0, _dom.addClass)(t.captionsButton, t.options.classPrefix + 'captions-enabled');
2476					}
2477					t.selectedTrack = _track;
2478					t.captions.setAttribute('lang', t.selectedTrack.srclang);
2479					t.displayCaptions();
2480					break;
2481				}
2482			}
2483		}
2484
2485		var event = (0, _general.createEvent)('captionschange', t.media);
2486		event.detail.caption = t.selectedTrack;
2487		t.media.dispatchEvent(event);
2488
2489		if (!setByKeyboard) {
2490			setTimeout(function () {
2491				t.container.focus();
2492			}, 500);
2493		}
2494	},
2495	loadNextTrack: function loadNextTrack() {
2496		var t = this;
2497
2498		t.trackToLoad++;
2499		if (t.trackToLoad < t.tracks.length) {
2500			t.isLoadingTrack = true;
2501			t.loadTrack(t.trackToLoad);
2502		} else {
2503			t.isLoadingTrack = false;
2504			t.checkForTracks();
2505		}
2506	},
2507	loadTrack: function loadTrack(index) {
2508		var t = this,
2509		    track = t.tracks[index];
2510
2511		if (track !== undefined && (track.src !== undefined || track.src !== "")) {
2512			(0, _dom.ajax)(track.src, 'text', function (d) {
2513				track.entries = typeof d === 'string' && /<tt\s+xml/ig.exec(d) ? _mejs2.default.TrackFormatParser.dfxp.parse(d) : _mejs2.default.TrackFormatParser.webvtt.parse(d);
2514
2515				track.isLoaded = true;
2516				t.enableTrackButton(track);
2517				t.loadNextTrack();
2518
2519				if (track.kind === 'slides') {
2520					t.setupSlides(track);
2521				} else if (track.kind === 'chapters' && !t.hasChapters) {
2522						t.drawChapters(track);
2523						t.hasChapters = true;
2524					}
2525			}, function () {
2526				t.removeTrackButton(track.trackId);
2527				t.loadNextTrack();
2528			});
2529		}
2530	},
2531	enableTrackButton: function enableTrackButton(track) {
2532		var t = this,
2533		    lang = track.srclang,
2534		    target = _document2.default.getElementById('' + track.trackId);
2535
2536		if (!target) {
2537			return;
2538		}
2539
2540		var label = track.label;
2541
2542		if (label === '') {
2543			label = _i18n2.default.t(_mejs2.default.language.codes[lang]) || lang;
2544		}
2545		target.disabled = false;
2546		var targetSiblings = (0, _dom.siblings)(target, function (el) {
2547			return (0, _dom.hasClass)(el, t.options.classPrefix + 'captions-selector-label');
2548		});
2549		for (var i = 0, total = targetSiblings.length; i < total; i++) {
2550			targetSiblings[i].innerHTML = label;
2551		}
2552
2553		if (t.options.startLanguage === lang) {
2554			target.checked = true;
2555			var event = (0, _general.createEvent)('click', target);
2556			target.dispatchEvent(event);
2557		}
2558	},
2559	removeTrackButton: function removeTrackButton(trackId) {
2560		var element = _document2.default.getElementById('' + trackId);
2561		if (element) {
2562			var button = element.closest('li');
2563			if (button) {
2564				button.remove();
2565			}
2566		}
2567	},
2568	addTrackButton: function addTrackButton(trackId, lang, label) {
2569		var t = this;
2570		if (label === '') {
2571			label = _i18n2.default.t(_mejs2.default.language.codes[lang]) || lang;
2572		}
2573
2574		t.captionsButton.querySelector('ul').innerHTML += '<li class="' + t.options.classPrefix + 'captions-selector-list-item">' + ('<input type="radio" class="' + t.options.classPrefix + 'captions-selector-input" ') + ('name="' + t.id + '_captions" id="' + trackId + '" value="' + trackId + '" disabled>') + ('<label class="' + t.options.classPrefix + 'captions-selector-label"') + ('for="' + trackId + '">' + label + ' (loading)</label>') + '</li>';
2575	},
2576	checkForTracks: function checkForTracks() {
2577		var t = this;
2578
2579		var hasSubtitles = false;
2580
2581		if (t.options.hideCaptionsButtonWhenEmpty) {
2582			for (var i = 0, total = t.tracks.length; i < total; i++) {
2583				var kind = t.tracks[i].kind;
2584				if ((kind === 'subtitles' || kind === 'captions') && t.tracks[i].isLoaded) {
2585					hasSubtitles = true;
2586					break;
2587				}
2588			}
2589
2590			t.captionsButton.style.display = hasSubtitles ? '' : 'none';
2591			t.setControlsSize();
2592		}
2593	},
2594	displayCaptions: function displayCaptions() {
2595		if (this.tracks === undefined) {
2596			return;
2597		}
2598
2599		var t = this,
2600		    track = t.selectedTrack,
2601		    sanitize = function sanitize(html) {
2602			var div = _document2.default.createElement('div');
2603			div.innerHTML = html;
2604
2605			var scripts = div.getElementsByTagName('script');
2606			var i = scripts.length;
2607			while (i--) {
2608				scripts[i].remove();
2609			}
2610
2611			var allElements = div.getElementsByTagName('*');
2612			for (var _i12 = 0, n = allElements.length; _i12 < n; _i12++) {
2613				var attributesObj = allElements[_i12].attributes,
2614				    attributes = Array.prototype.slice.call(attributesObj);
2615
2616				for (var j = 0, total = attributes.length; j < total; j++) {
2617					if (attributes[j].name.startsWith('on') || attributes[j].value.startsWith('javascript')) {
2618						allElements[_i12].remove();
2619					} else if (attributes[j].name === 'style') {
2620						allElements[_i12].removeAttribute(attributes[j].name);
2621					}
2622				}
2623			}
2624			return div.innerHTML;
2625		};
2626
2627		if (track !== null && track.isLoaded) {
2628			var i = t.searchTrackPosition(track.entries, t.media.currentTime);
2629			if (i > -1) {
2630				t.captionsText.innerHTML = sanitize(track.entries[i].text);
2631				t.captionsText.className = t.options.classPrefix + 'captions-text ' + (track.entries[i].identifier || '');
2632				t.captions.style.display = '';
2633				t.captions.style.height = '0px';
2634				return;
2635			}
2636			t.captions.style.display = 'none';
2637		} else {
2638			t.captions.style.display = 'none';
2639		}
2640	},
2641	setupSlides: function setupSlides(track) {
2642		var t = this;
2643		t.slides = track;
2644		t.slides.entries.imgs = [t.slides.entries.length];
2645		t.showSlide(0);
2646	},
2647	showSlide: function showSlide(index) {
2648		var _this = this;
2649
2650		var t = this;
2651
2652		if (t.tracks === undefined || t.slidesContainer === undefined) {
2653			return;
2654		}
2655
2656		var url = t.slides.entries[index].text;
2657
2658		var img = t.slides.entries[index].imgs;
2659
2660		if (img === undefined || img.fadeIn === undefined) {
2661			var image = _document2.default.createElement('img');
2662			image.src = url;
2663			image.addEventListener('load', function () {
2664				var self = _this,
2665				    visible = (0, _dom.siblings)(self, function (el) {
2666					return visible(el);
2667				});
2668				self.style.display = 'none';
2669				t.slidesContainer.innerHTML += self.innerHTML;
2670				(0, _dom.fadeIn)(t.slidesContainer.querySelector(image));
2671				for (var i = 0, total = visible.length; i < total; i++) {
2672					(0, _dom.fadeOut)(visible[i], 400);
2673				}
2674			});
2675			t.slides.entries[index].imgs = img = image;
2676		} else if (!(0, _dom.visible)(img)) {
2677			var _visible = (0, _dom.siblings)(self, function (el) {
2678				return _visible(el);
2679			});
2680			(0, _dom.fadeIn)(t.slidesContainer.querySelector(img));
2681			for (var i = 0, total = _visible.length; i < total; i++) {
2682				(0, _dom.fadeOut)(_visible[i]);
2683			}
2684		}
2685	},
2686	displaySlides: function displaySlides() {
2687		var t = this;
2688
2689		if (this.slides === undefined) {
2690			return;
2691		}
2692
2693		var slides = t.slides,
2694		    i = t.searchTrackPosition(slides.entries, t.media.currentTime);
2695
2696		if (i > -1) {
2697			t.showSlide(i);
2698		}
2699	},
2700	drawChapters: function drawChapters(chapters) {
2701		var t = this,
vendor: 4,190 bytes, lines 2702-2838
2702		    total = chapters.entries.length;
2703
2704		if (!total) {
2705			return;
2706		}
2707
2708		t.chaptersButton.querySelector('ul').innerHTML = '';
2709
2710		for (var i = 0; i < total; i++) {
2711			t.chaptersButton.querySelector('ul').innerHTML += '<li class="' + t.options.classPrefix + 'chapters-selector-list-item" ' + 'role="menuitemcheckbox" aria-live="polite" aria-disabled="false" aria-checked="false">' + ('<input type="radio" class="' + t.options.classPrefix + 'captions-selector-input" ') + ('name="' + t.id + '_chapters" id="' + t.id + '_chapters_' + i + '" value="' + chapters.entries[i].start + '" disabled>') + ('<label class="' + t.options.classPrefix + 'chapters-selector-label"') + ('for="' + t.id + '_chapters_' + i + '">' + chapters.entries[i].text + '</label>') + '</li>';
2712		}
2713
2714		var radios = t.chaptersButton.querySelectorAll('input[type="radio"]'),
2715		    labels = t.chaptersButton.querySelectorAll('.' + t.options.classPrefix + 'chapters-selector-label');
2716
2717		for (var _i13 = 0, _total10 = radios.length; _i13 < _total10; _i13++) {
2718			radios[_i13].disabled = false;
2719			radios[_i13].checked = false;
2720			radios[_i13].addEventListener('click', function (e) {
2721				var self = this,
2722				    listItems = t.chaptersButton.querySelectorAll('li'),
2723				    label = (0, _dom.siblings)(self, function (el) {
2724					return (0, _dom.hasClass)(el, t.options.classPrefix + 'chapters-selector-label');
2725				})[0];
2726
2727				self.checked = true;
2728				self.parentNode.setAttribute('aria-checked', true);
2729				(0, _dom.addClass)(label, t.options.classPrefix + 'chapters-selected');
2730				(0, _dom.removeClass)(t.chaptersButton.querySelector('.' + t.options.classPrefix + 'chapters-selected'), t.options.classPrefix + 'chapters-selected');
2731
2732				for (var _i14 = 0, _total11 = listItems.length; _i14 < _total11; _i14++) {
2733					listItems[_i14].setAttribute('aria-checked', false);
2734				}
2735
2736				var keyboard = e.keyCode || e.which;
2737				if (typeof keyboard === 'undefined') {
2738					setTimeout(function () {
2739						t.container.focus();
2740					}, 500);
2741				}
2742
2743				t.media.setCurrentTime(parseFloat(self.value));
2744				if (t.media.paused) {
2745					t.media.play();
2746				}
2747			});
2748		}
2749
2750		for (var _i15 = 0, _total12 = labels.length; _i15 < _total12; _i15++) {
2751			labels[_i15].addEventListener('click', function (e) {
2752				var radio = (0, _dom.siblings)(this, function (el) {
2753					return el.tagName === 'INPUT';
2754				})[0],
2755				    event = (0, _general.createEvent)('click', radio);
2756				radio.dispatchEvent(event);
2757				e.preventDefault();
2758			});
2759		}
2760	},
2761	searchTrackPosition: function searchTrackPosition(tracks, currentTime) {
2762		var lo = 0,
2763		    hi = tracks.length - 1,
2764		    mid = void 0,
2765		    start = void 0,
2766		    stop = void 0;
2767
2768		while (lo <= hi) {
2769			mid = lo + hi >> 1;
2770			start = tracks[mid].start;
2771			stop = tracks[mid].stop;
2772
2773			if (currentTime >= start && currentTime < stop) {
2774				return mid;
2775			} else if (start < currentTime) {
2776				lo = mid + 1;
2777			} else if (start > currentTime) {
2778				hi = mid - 1;
2779			}
2780		}
2781
2782		return -1;
2783	}
2784});
2785
2786_mejs2.default.language = {
2787	codes: {
2788		af: 'mejs.afrikaans',
2789		sq: 'mejs.albanian',
2790		ar: 'mejs.arabic',
2791		be: 'mejs.belarusian',
2792		bg: 'mejs.bulgarian',
2793		ca: 'mejs.catalan',
2794		zh: 'mejs.chinese',
2795		'zh-cn': 'mejs.chinese-simplified',
2796		'zh-tw': 'mejs.chines-traditional',
2797		hr: 'mejs.croatian',
2798		cs: 'mejs.czech',
2799		da: 'mejs.danish',
2800		nl: 'mejs.dutch',
2801		en: 'mejs.english',
2802		et: 'mejs.estonian',
2803		fl: 'mejs.filipino',
2804		fi: 'mejs.finnish',
2805		fr: 'mejs.french',
2806		gl: 'mejs.galician',
2807		de: 'mejs.german',
2808		el: 'mejs.greek',
2809		ht: 'mejs.haitian-creole',
2810		iw: 'mejs.hebrew',
2811		hi: 'mejs.hindi',
2812		hu: 'mejs.hungarian',
2813		is: 'mejs.icelandic',
2814		id: 'mejs.indonesian',
2815		ga: 'mejs.irish',
2816		it: 'mejs.italian',
2817		ja: 'mejs.japanese',
2818		ko: 'mejs.korean',
2819		lv: 'mejs.latvian',
2820		lt: 'mejs.lithuanian',
2821		mk: 'mejs.macedonian',
2822		ms: 'mejs.malay',
2823		mt: 'mejs.maltese',
2824		no: 'mejs.norwegian',
2825		fa: 'mejs.persian',
2826		pl: 'mejs.polish',
2827		pt: 'mejs.portuguese',
2828		ro: 'mejs.romanian',
2829		ru: 'mejs.russian',
2830		sr: 'mejs.serbian',
2831		sk: 'mejs.slovak',
2832		sl: 'mejs.slovenian',
2833		es: 'mejs.spanish',
2834		sw: 'mejs.swahili',
2835		sv: 'mejs.swedish',
2836		tl: 'mejs.tagalog',
2837		th: 'mejs.thai',
2838		tr: 'mejs.turkish',
2839		uk: 'mejs.ukrainian',
2840		vi: 'mejs.vietnamese',
2841		cy: 'mejs.welsh',
2842		yi: 'mejs.yiddish'
2843	}
2844};
2845
2846_mejs2.default.TrackFormatParser = {
2847	webvtt: {
2848		pattern: /^((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{1,3})?) --\> ((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{3})?)(.*)$/,
2849
2850		parse: function parse(trackText) {
2851			var lines = trackText.split(/\r?\n/),
2852			    entries = [];
2853
2854			var timecode = void 0,
2855			    text = void 0,
2856			    identifier = void 0;
2857
2858			for (var i = 0, total = lines.length; i < total; i++) {
2859				timecode = this.pattern.exec(lines[i]);
2860
2861				if (timecode && i < lines.length) {
2862					if (i - 1 >= 0 && lines[i - 1] !== '') {
2863						identifier = lines[i - 1];
2864					}
2865					i++;
2866
2867					text = lines[i];
2868					i++;
2869					while (lines[i] !== '' && i < lines.length) {
2870						text = text + '\n' + lines[i];
2871						i++;
2872					}
2873					text = text.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig, "<a href='$1' target='_blank'>$1</a>");
2874					entries.push({
2875						identifier: identifier,
2876						start: (0, _time.convertSMPTEtoSeconds)(timecode[1]) === 0 ? 0.200 : (0, _time.convertSMPTEtoSeconds)(timecode[1]),
2877						stop: (0, _time.convertSMPTEtoSeconds)(timecode[3]),
2878						text: text,
2879						settings: timecode[5]
2880					});
2881				}
2882				identifier = '';
2883			}
2884			return entries;
2885		}
2886	},
2887
2888	dfxp: {
2889		parse: function parse(trackText) {
2890			trackText = $(trackText).filter('tt');
2891			var container = trackText.firstChild,
2892			    lines = container.querySelectorAll('p'),
2893			    styleNode = trackText.getElementById('' + container.attr('style')),
2894			    entries = [];
2895
2896			var styles = void 0;
2897
2898			if (styleNode.length) {
2899				styleNode.removeAttribute('id');
2900				var attributes = styleNode.attributes;
2901				if (attributes.length) {
2902					styles = {};
2903					for (var i = 0, total = attributes.length; i < total; i++) {
2904						styles[attributes[i].name.split(":")[1]] = attributes[i].value;
2905					}
2906				}
2907			}
2908
2909			for (var _i16 = 0, _total13 = lines.length; _i16 < _total13; _i16++) {
2910				var style = void 0,
2911				    _temp = {
2912					start: null,
2913					stop: null,
2914					style: null,
2915					text: null
2916				};
2917
2918				if (lines.eq(_i16).attr('begin')) {
2919					_temp.start = (0, _time.convertSMPTEtoSeconds)(lines.eq(_i16).attr('begin'));
2920				}
2921				if (!_temp.start && lines.eq(_i16 - 1).attr('end')) {
2922					_temp.start = (0, _time.convertSMPTEtoSeconds)(lines.eq(_i16 - 1).attr('end'));
2923				}
2924				if (lines.eq(_i16).attr('end')) {
2925					_temp.stop = (0, _time.convertSMPTEtoSeconds)(lines.eq(_i16).attr('end'));
2926				}
2927				if (!_temp.stop && lines.eq(_i16 + 1).attr('begin')) {
2928					_temp.stop = (0, _time.convertSMPTEtoSeconds)(lines.eq(_i16 + 1).attr('begin'));
2929				}
2930
2931				if (styles) {
2932					style = '';
2933					for (var _style in styles) {
2934						style += _style + ':' + styles[_style] + ';';
2935					}
2936				}
2937				if (style) {
2938					_temp.style = style;
2939				}
2940				if (_temp.start === 0) {
2941					_temp.start = 0.200;
2942				}
2943				_temp.text = lines.eq(_i16).innerHTML.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig, "<a href='$1' target='_blank'>$1</a>");
2944				entries.push(_temp);
2945			}
2946			return entries;
2947		}
2948	}
2949};
2950
2951},{"16":16,"2":2,"26":26,"27":27,"30":30,"5":5,"7":7}],14:[function(_dereq_,module,exports){
2952'use strict';
2953
2954var _document = _dereq_(2);
2955
2956var _document2 = _interopRequireDefault(_document);
2957
2958var _player = _dereq_(16);
2959
2960var _player2 = _interopRequireDefault(_player);
2961
2962var _i18n = _dereq_(5);
2963
2964var _i18n2 = _interopRequireDefault(_i18n);
2965
2966var _constants = _dereq_(25);
2967
2968var _general = _dereq_(27);
2969
2970var _dom = _dereq_(26);
2971
2972function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2973
2974Object.assign(_player.config, {
2975	muteText: null,
2976
2977	unmuteText: null,
2978
2979	allyVolumeControlText: null,
2980
2981	hideVolumeOnTouchDevices: true,
2982
2983	audioVolume: 'horizontal',
2984
2985	videoVolume: 'vertical',
2986
2987	startVolume: 0.8
2988});
2989
2990Object.assign(_player2.default.prototype, {
2991	buildvolume: function buildvolume(player, controls, layers, media) {
2992		if ((_constants.IS_ANDROID || _constants.IS_IOS) && this.options.hideVolumeOnTouchDevices) {
2993			return;
2994		}
2995
2996		var t = this,
2997		    mode = t.isVideo ? t.options.videoVolume : t.options.audioVolume,
2998		    muteText = (0, _general.isString)(t.options.muteText) ? t.options.muteText : _i18n2.default.t('mejs.mute'),
2999		    unmuteText = (0, _general.isString)(t.options.unmuteText) ? t.options.unmuteText : _i18n2.default.t('mejs.unmute'),
3000		    volumeControlText = (0, _general.isString)(t.options.allyVolumeControlText) ? t.options.allyVolumeControlText : _i18n2.default.t('mejs.volume-help-text'),
3001		    mute = _document2.default.createElement('div');
3002
3003		mute.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'volume-button ' + t.options.classPrefix + 'mute';
3004		mute.innerHTML = mode === 'horizontal' ? '<button type="button" aria-controls="' + t.id + '" title="' + muteText + '" aria-label="' + muteText + '" tabindex="0"></button>' : '<button type="button" aria-controls="' + t.id + '" title="' + muteText + '" aria-label="' + muteText + '" tabindex="0"></button>' + ('<a href="javascript:void(0);" class="' + t.options.classPrefix + 'volume-slider" ') + ('aria-label="' + _i18n2.default.t('mejs.volume-slider') + '" aria-valuemin="0" aria-valuemax="100" role="slider" ') + 'aria-orientation="vertical">' + ('<span class="' + t.options.classPrefix + 'offscreen">' + volumeControlText + '</span>') + ('<div class="' + t.options.classPrefix + 'volume-total">') + ('<div class="' + t.options.classPrefix + 'volume-current"></div>') + ('<div class="' + t.options.classPrefix + 'volume-handle"></div>') + '</div>' + '</a>';
3005
3006		t.addControlElement(mute, 'volume');
3007
3008		t.options.keyActions.push({
3009			keys: [38],
3010			action: function action(player) {
3011				var volumeSlider = player.container.querySelector('.' + _player.config.classPrefix + 'volume-slider');
3012				if (volumeSlider || player.container.querySelector('.' + _player.config.classPrefix + 'volume-slider').matches(':focus')) {
3013					volumeSlider.style.display = 'block';
3014				}
3015				if (player.isVideo) {
3016					player.showControls();
3017					player.startControlsTimer();
3018				}
3019
3020				var newVolume = Math.min(player.volume + 0.1, 1);
3021				player.setVolume(newVolume);
3022				if (newVolume > 0) {
3023					player.setMuted(false);
3024				}
3025			}
3026		}, {
3027			keys: [40],
3028			action: function action(player) {
3029				var volumeSlider = player.container.querySelector('.' + _player.config.classPrefix + 'volume-slider');
3030				if (volumeSlider) {
3031					volumeSlider.style.display = 'block';
3032				}
3033
3034				if (player.isVideo) {
3035					player.showControls();
3036					player.startControlsTimer();
3037				}
3038
3039				var newVolume = Math.max(player.volume - 0.1, 0);
3040				player.setVolume(newVolume);
3041
3042				if (newVolume <= 0.1) {
3043					player.setMuted(true);
3044				}
3045			}
3046		}, {
3047			keys: [77],
3048			action: function action(player) {
3049				player.container.querySelector('.' + _player.config.classPrefix + 'volume-slider').style.display = 'block';
3050				if (player.isVideo) {
3051					player.showControls();
3052					player.startControlsTimer();
3053				}
3054				if (player.media.muted) {
3055					player.setMuted(false);
3056				} else {
3057					player.setMuted(true);
3058				}
3059			}
3060		});
3061
3062		if (mode === 'horizontal') {
3063			var anchor = _document2.default.createElement('a');
3064			anchor.className = t.options.classPrefix + 'horizontal-volume-slider';
3065			anchor.href = 'javascript:void(0);';
3066			anchor.setAttribute('aria-label', _i18n2.default.t('mejs.volume-slider'));
3067			anchor.setAttribute('aria-valuemin', 0);
3068			anchor.setAttribute('aria-valuemax', 100);
3069			anchor.setAttribute('role', 'slider');
3070			anchor.innerHTML += '<span class="' + t.options.classPrefix + 'offscreen">' + volumeControlText + '</span>' + ('<div class="' + t.options.classPrefix + 'horizontal-volume-total">') + ('<div class="' + t.options.classPrefix + 'horizontal-volume-current"></div>') + ('<div class="' + t.options.classPrefix + 'horizontal-volume-handle"></div>') + '</div>';
3071			mute.parentNode.insertBefore(anchor, mute.nextSibling);
3072		}
3073
3074		var mouseIsDown = false,
3075		    mouseIsOver = false,
3076		    modified = false,
3077		    updateVolumeSlider = function updateVolumeSlider() {
3078			var volume = Math.floor(media.volume * 100);
3079			volumeSlider.setAttribute('aria-valuenow', volume);
vendor: 9,773 bytes, lines 3080-3388
3080			volumeSlider.setAttribute('aria-valuetext', volume + '%');
3081		};
3082
3083		var volumeSlider = mode === 'vertical' ? t.container.querySelector('.' + t.options.classPrefix + 'volume-slider') : t.container.querySelector('.' + t.options.classPrefix + 'horizontal-volume-slider'),
3084		    volumeTotal = mode === 'vertical' ? t.container.querySelector('.' + t.options.classPrefix + 'volume-total') : t.container.querySelector('.' + t.options.classPrefix + 'horizontal-volume-total'),
3085		    volumeCurrent = mode === 'vertical' ? t.container.querySelector('.' + t.options.classPrefix + 'volume-current') : t.container.querySelector('.' + t.options.classPrefix + 'horizontal-volume-current'),
3086		    volumeHandle = mode === 'vertical' ? t.container.querySelector('.' + t.options.classPrefix + 'volume-handle') : t.container.querySelector('.' + t.options.classPrefix + 'horizontal-volume-handle'),
3087		    positionVolumeHandle = function positionVolumeHandle(volume) {
3088
3089			if (volume === null || isNaN(volume) || volume === undefined) {
3090				return;
3091			}
3092
3093			volume = Math.max(0, volume);
3094			volume = Math.min(volume, 1);
3095
3096			if (volume === 0) {
3097				(0, _dom.removeClass)(mute, t.options.classPrefix + 'mute');
3098				(0, _dom.addClass)(mute, t.options.classPrefix + 'unmute');
3099				var button = mute.firstElementChild;
3100				button.setAttribute('title', unmuteText);
3101				button.setAttribute('aria-label', unmuteText);
3102			} else {
3103				(0, _dom.removeClass)(mute, t.options.classPrefix + 'unmute');
3104				(0, _dom.addClass)(mute, t.options.classPrefix + 'mute');
3105				var _button = mute.firstElementChild;
3106				_button.setAttribute('title', muteText);
3107				_button.setAttribute('aria-label', muteText);
3108			}
3109
3110			var volumePercentage = volume * 100 + '%',
3111			    volumeStyles = getComputedStyle(volumeHandle);
3112
3113			if (mode === 'vertical') {
3114				volumeCurrent.style.bottom = 0;
3115				volumeCurrent.style.height = volumePercentage;
3116				volumeHandle.style.bottom = volumePercentage;
3117				volumeHandle.style.marginBottom = -parseFloat(volumeStyles.height) / 2 + 'px';
3118			} else {
3119				volumeCurrent.style.left = 0;
3120				volumeCurrent.style.width = volumePercentage;
3121				volumeHandle.style.left = volumePercentage;
3122				volumeHandle.style.marginLeft = -parseFloat(volumeStyles.width) / 2 + 'px';
3123			}
3124		},
3125		    handleVolumeMove = function handleVolumeMove(e) {
3126			var totalOffset = (0, _dom.offset)(volumeTotal),
3127			    volumeStyles = getComputedStyle(volumeTotal);
3128
3129			modified = true;
3130
3131			var volume = null;
3132
3133			if (mode === 'vertical') {
3134				var railHeight = parseFloat(volumeStyles.height),
3135				    newY = e.pageY - totalOffset.top;
3136
3137				volume = (railHeight - newY) / railHeight;
3138
3139				if (totalOffset.top === 0 || totalOffset.left === 0) {
3140					return;
3141				}
3142			} else {
3143				var railWidth = parseFloat(volumeStyles.width),
3144				    newX = e.pageX - totalOffset.left;
3145
3146				volume = newX / railWidth;
3147			}
3148
3149			volume = Math.max(0, volume);
3150			volume = Math.min(volume, 1);
3151
3152			positionVolumeHandle(volume);
3153
3154			t.setMuted(volume === 0);
3155			t.setVolume(volume);
3156
3157			e.preventDefault();
3158			e.stopPropagation();
3159		},
3160		    toggleMute = function toggleMute() {
3161			if (t.muted) {
3162				positionVolumeHandle(0);
3163				(0, _dom.removeClass)(mute, t.options.classPrefix + 'mute');
3164				(0, _dom.addClass)(mute, t.options.classPrefix + 'unmute');
3165			} else {
3166				positionVolumeHandle(media.volume);
3167				(0, _dom.removeClass)(mute, t.options.classPrefix + 'unmute');
3168				(0, _dom.addClass)(mute, t.options.classPrefix + 'mute');
3169			}
3170		};
3171
3172		player.container.addEventListener('keydown', function (e) {
3173			var hasFocus = !!e.target.closest('.' + t.options.classPrefix + 'container');
3174			if (!hasFocus && mode === 'vertical') {
3175				volumeSlider.style.display = 'none';
3176			}
3177		});
3178
3179		mute.addEventListener('mouseenter', function (e) {
3180			if (e.target === mute) {
3181				volumeSlider.style.display = 'block';
3182				mouseIsOver = true;
3183				e.preventDefault();
3184				e.stopPropagation();
3185			}
3186		});
3187		mute.addEventListener('focusin', function () {
3188			volumeSlider.style.display = 'block';
3189			mouseIsOver = true;
3190		});
3191
3192		mute.addEventListener('focusout', function (e) {
3193			if ((!e.relatedTarget || e.relatedTarget && !e.relatedTarget.matches('.' + t.options.classPrefix + 'volume-slider')) && mode === 'vertical') {
3194				volumeSlider.style.display = 'none';
3195			}
3196		});
3197		mute.addEventListener('mouseleave', function () {
3198			mouseIsOver = false;
3199			if (!mouseIsDown && mode === 'vertical') {
3200				volumeSlider.style.display = 'none';
3201			}
3202		});
3203		mute.addEventListener('focusout', function () {
3204			mouseIsOver = false;
3205		});
3206		mute.addEventListener('keydown', function (e) {
3207			if (t.options.keyActions.length) {
3208				var keyCode = e.which || e.keyCode || 0,
3209				    volume = media.volume;
3210
3211				switch (keyCode) {
3212					case 38:
3213						volume = Math.min(volume + 0.1, 1);
3214						break;
3215					case 40:
3216						volume = Math.max(0, volume - 0.1);
3217						break;
3218					default:
3219						return true;
3220				}
3221
3222				mouseIsDown = false;
3223				positionVolumeHandle(volume);
3224				media.setVolume(volume);
3225
3226				e.preventDefault();
3227				e.stopPropagation();
3228			}
3229		});
3230		mute.querySelector('button').addEventListener('click', function () {
3231			media.setMuted(!media.muted);
3232			var event = (0, _general.createEvent)('volumechange', media);
3233			media.dispatchEvent(event);
3234		});
3235
3236		volumeSlider.addEventListener('dragstart', function () {
3237			return false;
3238		});
3239
3240		volumeSlider.addEventListener('mouseover', function () {
3241			mouseIsOver = true;
3242		});
3243		volumeSlider.addEventListener('focusin', function () {
3244			volumeSlider.style.display = 'block';
3245			mouseIsOver = true;
3246		});
3247		volumeSlider.addEventListener('focusout', function () {
3248			mouseIsOver = false;
3249			if (!mouseIsDown && mode === 'vertical') {
3250				volumeSlider.style.display = 'none';
3251			}
3252		});
3253		volumeSlider.addEventListener('mousedown', function (e) {
3254			handleVolumeMove(e);
3255			t.globalBind('mousemove.vol', function (event) {
3256				var target = event.target;
3257				if (mouseIsDown && (target === volumeSlider || target.closest(mode === 'vertical' ? '.' + t.options.classPrefix + 'volume-slider' : '.' + t.options.classPrefix + 'horizontal-volume-slider'))) {
3258					handleVolumeMove(event);
3259				}
3260			});
3261			t.globalBind('mouseup.vol', function () {
3262				mouseIsDown = false;
3263				if (!mouseIsOver && mode === 'vertical') {
3264					volumeSlider.style.display = 'none';
3265				}
3266			});
3267			mouseIsDown = true;
3268			e.preventDefault();
3269			e.stopPropagation();
3270		});
3271
3272		media.addEventListener('volumechange', function (e) {
3273			if (!mouseIsDown) {
3274				toggleMute();
3275			}
3276			updateVolumeSlider(e);
3277		});
3278
3279		var rendered = false;
3280		media.addEventListener('rendererready', function () {
3281			if (!modified) {
3282				setTimeout(function () {
3283					rendered = true;
3284					if (player.options.startVolume === 0 || media.originalNode.muted) {
3285						media.setMuted(true);
3286						player.options.startVolume = 0;
3287					}
3288					media.setVolume(player.options.startVolume);
3289					t.setControlsSize();
3290				}, 250);
3291			}
3292		});
3293
3294		media.addEventListener('loadedmetadata', function () {
3295			setTimeout(function () {
3296				if (!modified && !rendered) {
3297					if (player.options.startVolume === 0 || media.originalNode.muted) {
3298						media.setMuted(true);
3299						player.options.startVolume = 0;
3300					}
3301					media.setVolume(player.options.startVolume);
3302					t.setControlsSize();
3303				}
3304				rendered = false;
3305			}, 250);
3306		});
3307
3308		if (player.options.startVolume === 0 || media.originalNode.muted) {
3309			media.setMuted(true);
3310			player.options.startVolume = 0;
3311			toggleMute();
3312		}
3313
3314		t.container.addEventListener('controlsresize', function () {
3315			toggleMute();
3316		});
3317	}
3318});
3319
3320},{"16":16,"2":2,"25":25,"26":26,"27":27,"5":5}],15:[function(_dereq_,module,exports){
3321'use strict';
3322
3323Object.defineProperty(exports, "__esModule", {
3324	value: true
3325});
3326var EN = exports.EN = {
3327	'mejs.plural-form': 1,
3328
3329	'mejs.download-file': 'Download File',
3330
3331	'mejs.install-flash': 'You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/',
3332
3333	'mejs.fullscreen': 'Fullscreen',
3334
3335	'mejs.play': 'Play',
3336	'mejs.pause': 'Pause',
3337
3338	'mejs.time-slider': 'Time Slider',
3339	'mejs.time-help-text': 'Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.',
3340	'mejs.live-broadcast': 'Live Broadcast',
3341
3342	'mejs.volume-help-text': 'Use Up/Down Arrow keys to increase or decrease volume.',
3343	'mejs.unmute': 'Unmute',
3344	'mejs.mute': 'Mute',
3345	'mejs.volume-slider': 'Volume Slider',
3346
3347	'mejs.video-player': 'Video Player',
3348	'mejs.audio-player': 'Audio Player',
3349
3350	'mejs.captions-subtitles': 'Captions/Subtitles',
3351	'mejs.captions-chapters': 'Chapters',
3352	'mejs.none': 'None',
3353	'mejs.afrikaans': 'Afrikaans',
3354	'mejs.albanian': 'Albanian',
3355	'mejs.arabic': 'Arabic',
3356	'mejs.belarusian': 'Belarusian',
3357	'mejs.bulgarian': 'Bulgarian',
3358	'mejs.catalan': 'Catalan',
3359	'mejs.chinese': 'Chinese',
3360	'mejs.chinese-simplified': 'Chinese (Simplified)',
3361	'mejs.chinese-traditional': 'Chinese (Traditional)',
3362	'mejs.croatian': 'Croatian',
3363	'mejs.czech': 'Czech',
3364	'mejs.danish': 'Danish',
3365	'mejs.dutch': 'Dutch',
3366	'mejs.english': 'English',
3367	'mejs.estonian': 'Estonian',
3368	'mejs.filipino': 'Filipino',
3369	'mejs.finnish': 'Finnish',
3370	'mejs.french': 'French',
3371	'mejs.galician': 'Galician',
3372	'mejs.german': 'German',
3373	'mejs.greek': 'Greek',
3374	'mejs.haitian-creole': 'Haitian Creole',
3375	'mejs.hebrew': 'Hebrew',
3376	'mejs.hindi': 'Hindi',
3377	'mejs.hungarian': 'Hungarian',
3378	'mejs.icelandic': 'Icelandic',
3379	'mejs.indonesian': 'Indonesian',
3380	'mejs.irish': 'Irish',
3381	'mejs.italian': 'Italian',
3382	'mejs.japanese': 'Japanese',
3383	'mejs.korean': 'Korean',
3384	'mejs.latvian': 'Latvian',
3385	'mejs.lithuanian': 'Lithuanian',
3386	'mejs.macedonian': 'Macedonian',
3387	'mejs.malay': 'Malay',
3388	'mejs.maltese': 'Maltese',
3389	'mejs.norwegian': 'Norwegian',
3390	'mejs.persian': 'Persian',
3391	'mejs.polish': 'Polish',
3392	'mejs.portuguese': 'Portuguese',
3393	'mejs.romanian': 'Romanian',
3394	'mejs.russian': 'Russian',
3395	'mejs.serbian': 'Serbian',
3396	'mejs.slovak': 'Slovak',
3397	'mejs.slovenian': 'Slovenian',
3398	'mejs.spanish': 'Spanish',
3399	'mejs.swahili': 'Swahili',
3400	'mejs.swedish': 'Swedish',
3401	'mejs.tagalog': 'Tagalog',
3402	'mejs.thai': 'Thai',
3403	'mejs.turkish': 'Turkish',
3404	'mejs.ukrainian': 'Ukrainian',
3405	'mejs.vietnamese': 'Vietnamese',
3406	'mejs.welsh': 'Welsh',
3407	'mejs.yiddish': 'Yiddish'
3408};
3409
3410},{}],16:[function(_dereq_,module,exports){
3411'use strict';
3412
3413Object.defineProperty(exports, "__esModule", {
3414	value: true
3415});
3416exports.config = undefined;
3417
3418var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
3419
3420var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
3421
3422var _window = _dereq_(3);
3423
3424var _window2 = _interopRequireDefault(_window);
3425
3426var _document = _dereq_(2);
3427
3428var _document2 = _interopRequireDefault(_document);
3429
3430var _mejs = _dereq_(7);
3431
3432var _mejs2 = _interopRequireDefault(_mejs);
3433
3434var _mediaelement = _dereq_(6);
3435
3436var _mediaelement2 = _interopRequireDefault(_mediaelement);
3437
3438var _default = _dereq_(17);
3439
3440var _default2 = _interopRequireDefault(_default);
3441
3442var _i18n = _dereq_(5);
3443
3444var _i18n2 = _interopRequireDefault(_i18n);
3445
3446var _constants = _dereq_(25);
3447
3448var _general = _dereq_(27);
3449
3450var _time = _dereq_(30);
3451
3452var _media = _dereq_(28);
3453
3454var _dom = _dereq_(26);
3455
3456var dom = _interopRequireWildcard(_dom);
3457
3458function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
3459
3460function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3461
3462function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
3463
3464_mejs2.default.mepIndex = 0;
3465
3466_mejs2.default.players = {};
3467
3468var config = exports.config = {
3469	poster: '',
3470
3471	showPosterWhenEnded: false,
3472
3473	showPosterWhenPaused: false,
3474
3475	defaultVideoWidth: 480,
3476
3477	defaultVideoHeight: 270,
3478
3479	videoWidth: -1,
3480
3481	videoHeight: -1,
3482
3483	defaultAudioWidth: 400,
3484
3485	defaultAudioHeight: 40,
3486
3487	defaultSeekBackwardInterval: function defaultSeekBackwardInterval(media) {
3488		return media.getDuration() * 0.05;
3489	},
3490
3491	defaultSeekForwardInterval: function defaultSeekForwardInterval(media) {
3492		return media.getDuration() * 0.05;
3493	},
3494
3495	setDimensions: true,
3496
3497	audioWidth: -1,
3498
3499	audioHeight: -1,
3500
3501	loop: false,
3502
3503	autoRewind: true,
3504
3505	enableAutosize: true,
3506
3507	timeFormat: '',
3508
3509	alwaysShowHours: false,
3510
3511	showTimecodeFrameCount: false,
3512
3513	framesPerSecond: 25,
3514
3515	alwaysShowControls: false,
3516
3517	hideVideoControlsOnLoad: false,
3518
3519	hideVideoControlsOnPause: false,
3520
3521	clickToPlayPause: true,
3522
3523	controlsTimeoutDefault: 1500,
3524
3525	controlsTimeoutMouseEnter: 2500,
3526
3527	controlsTimeoutMouseLeave: 1000,
3528
3529	iPadUseNativeControls: false,
3530
3531	iPhoneUseNativeControls: false,
3532
3533	AndroidUseNativeControls: false,
3534
3535	features: ['playpause', 'current', 'progress', 'duration', 'tracks', 'volume', 'fullscreen'],
3536
3537	useDefaultControls: false,
3538
3539	isVideo: true,
3540
3541	stretching: 'auto',
3542
3543	classPrefix: 'mejs__',
3544
3545	enableKeyboard: true,
3546
3547	pauseOtherPlayers: true,
3548
3549	secondsDecimalLength: 0,
3550
3551	customError: null,
3552
3553	keyActions: [{
3554		keys: [32, 179],
3555		action: function action(player) {
3556
3557			if (!_constants.IS_FIREFOX) {
3558				if (player.paused || player.ended) {
3559					player.play();
3560				} else {
3561					player.pause();
3562				}
3563			}
3564		}
3565	}]
3566};
3567
3568_mejs2.default.MepDefaults = config;
3569
3570var MediaElementPlayer = function () {
3571	function MediaElementPlayer(node, o) {
3572		_classCallCheck(this, MediaElementPlayer);
3573
3574		var t = this,
3575		    element = typeof node === 'string' ? _document2.default.getElementById(node) : node;
3576
3577		if (!(t instanceof MediaElementPlayer)) {
3578			return new MediaElementPlayer(element, o);
3579		}
3580
3581		t.node = t.media = element;
3582
3583		if (!t.node) {
3584			return;
3585		}
3586
3587		if (t.media.player) {
3588			return t.media.player;
3589		}
3590
3591		t.hasFocus = false;
3592
3593		t.controlsAreVisible = true;
3594
3595		t.controlsEnabled = true;
3596
3597		t.controlsTimer = null;
3598
3599		t.currentMediaTime = 0;
3600
3601		t.proxy = null;
3602
3603		if (o === undefined) {
3604			var options = t.node.getAttribute('data-mejsoptions');
3605			o = options ? JSON.parse(options) : {};
3606		}
3607
3608		t.options = Object.assign({}, config, o);
3609
3610		if (t.options.loop && !t.media.getAttribute('loop')) {
3611			t.media.loop = true;
3612			t.node.loop = true;
3613		} else if (t.media.loop) {
3614			t.options.loop = true;
3615		}
3616
3617		if (!t.options.timeFormat) {
3618			t.options.timeFormat = 'mm:ss';
3619			if (t.options.alwaysShowHours) {
3620				t.options.timeFormat = 'hh:mm:ss';
3621			}
3622			if (t.options.showTimecodeFrameCount) {
3623				t.options.timeFormat += ':ff';
3624			}
3625		}
3626
3627		(0, _time.calculateTimeFormat)(0, t.options, t.options.framesPerSecond || 25);
3628
3629		t.id = 'mep_' + _mejs2.default.mepIndex++;
3630
3631		_mejs2.default.players[t.id] = t;
3632
3633		var playerOptions = Object.assign({}, t.options, {
3634			success: function success(media, domNode) {
3635				t._meReady(media, domNode);
3636			},
3637			error: function error(e) {
3638				t._handleError(e);
3639			}
3640		}),
3641		    tagName = t.node.tagName.toLowerCase();
3642
3643		t.isDynamic = tagName !== 'audio' && tagName !== 'video' && tagName !== 'iframe';
3644		t.isVideo = t.isDynamic ? t.options.isVideo : tagName !== 'audio' && t.options.isVideo;
3645		t.mediaFiles = null;
3646		t.trackFiles = null;
3647
3648		if (_constants.IS_IPAD && t.options.iPadUseNativeControls || _constants.IS_IPHONE && t.options.iPhoneUseNativeControls) {
3649			t.node.setAttribute('controls', true);
3650
3651			if (_constants.IS_IPAD && t.node.getAttribute('autoplay')) {
3652				t.play();
3653			}
3654		} else if ((t.isVideo || !t.isVideo && (t.options.features.length || t.options.useDefaultControls)) && !(_constants.IS_ANDROID && t.options.AndroidUseNativeControls)) {
3655			t.node.removeAttribute('controls');
3656			var videoPlayerTitle = t.isVideo ? _i18n2.default.t('mejs.video-player') : _i18n2.default.t('mejs.audio-player');
3657
3658			var offscreen = _document2.default.createElement('span');
3659			offscreen.className = t.options.classPrefix + 'offscreen';
3660			offscreen.innerText = videoPlayerTitle;
3661			t.media.parentNode.insertBefore(offscreen, t.media);
3662
3663			t.container = _document2.default.createElement('div');
3664			t.container.id = t.id;
3665			t.container.className = t.options.classPrefix + 'container ' + t.options.classPrefix + 'container-keyboard-inactive ' + t.media.className;
3666			t.container.tabIndex = 0;
3667			t.container.setAttribute('role', 'application');
3668			t.container.setAttribute('aria-label', videoPlayerTitle);
3669			t.container.innerHTML = '<div class="' + t.options.classPrefix + 'inner">' + ('<div class="' + t.options.classPrefix + 'mediaelement"></div>') + ('<div class="' + t.options.classPrefix + 'layers"></div>') + ('<div class="' + t.options.classPrefix + 'controls"></div>') + '</div>';
3670			t.container.addEventListener('focus', function (e) {
3671				if (!t.controlsAreVisible && !t.hasFocus && t.controlsEnabled) {
3672					t.showControls(true);
3673
3674					var btnSelector = (0, _general.isNodeAfter)(e.relatedTarget, t.container) ? '.' + t.options.classPrefix + 'controls .' + t.options.classPrefix + 'button:last-child > button' : '.' + t.options.classPrefix + 'playpause-button > button',
3675					    button = t.container.querySelector(btnSelector);
3676
3677					button.focus();
3678				}
3679			});
3680			t.node.parentNode.insertBefore(t.container, t.node);
3681
3682			if (!t.options.features.length && !t.options.useDefaultControls) {
3683				t.container.style.background = 'transparent';
3684				t.container.querySelector('.' + t.options.classPrefix + 'controls').style.display = 'none';
3685			}
3686
3687			if (t.isVideo && t.options.stretching === 'fill' && !dom.hasClass(t.container.parentNode, t.options.classPrefix + 'fill-container')) {
3688				t.outerContainer = t.media.parentNode;
3689
3690				var wrapper = _document2.default.createElement('div');
3691				wrapper.className = t.options.classPrefix + 'fill-container';
3692				t.container.parentNode.insertBefore(wrapper, t.container);
3693				wrapper.appendChild(t.container);
3694			}
3695
3696			if (_constants.IS_ANDROID) {
3697				dom.addClass(t.container, t.options.classPrefix + 'android');
3698			}
3699			if (_constants.IS_IOS) {
3700				dom.addClass(t.container, t.options.classPrefix + 'ios');
3701			}
3702			if (_constants.IS_IPAD) {
3703				dom.addClass(t.container, t.options.classPrefix + 'ipad');
3704			}
3705			if (_constants.IS_IPHONE) {
3706				dom.addClass(t.container, t.options.classPrefix + 'iphone');
3707			}
3708			dom.addClass(t.container, t.isVideo ? t.options.classPrefix + 'video' : t.options.classPrefix + 'audio');
3709
3710			if (_constants.IS_SAFARI && !_constants.IS_IOS) {
3711
3712				dom.addClass(t.container, t.options.classPrefix + 'hide-cues');
3713
3714				var cloneNode = t.node.cloneNode(),
3715				    children = t.node.children,
3716				    mediaFiles = [],
3717				    tracks = [];
3718
3719				for (var i = 0, total = children.length; i < total; i++) {
3720					var childNode = children[i];
3721
3722					(function () {
3723						switch (childNode.tagName.toLowerCase()) {
3724							case 'source':
3725								var elements = {};
3726								Array.prototype.slice.call(childNode.attributes).forEach(function (item) {
3727									elements[item.name] = item.value;
3728								});
3729								elements.type = (0, _media.formatType)(elements.src, elements.type);
3730								mediaFiles.push(elements);
3731								break;
3732							case 'track':
3733								childNode.mode = 'hidden';
3734								tracks.push(childNode);
3735								break;
3736							default:
3737								cloneNode.appendChild(childNode);
3738								break;
3739						}
3740					})();
3741				}
3742
3743				t.node.remove();
3744				t.node = t.media = cloneNode;
3745
3746				if (mediaFiles.length) {
3747					t.mediaFiles = mediaFiles;
3748				}
3749				if (tracks.length) {
3750					t.trackFiles = tracks;
3751				}
3752			}
3753
3754			t.container.querySelector('.' + t.options.classPrefix + 'mediaelement').appendChild(t.node);
3755
3756			t.media.player = t;
3757
3758			t.controls = t.container.querySelector('.' + t.options.classPrefix + 'controls');
3759			t.layers = t.container.querySelector('.' + t.options.classPrefix + 'layers');
3760
3761			var tagType = t.isVideo ? 'video' : 'audio',
3762			    capsTagName = tagType.substring(0, 1).toUpperCase() + tagType.substring(1);
3763
3764			if (t.options[tagType + 'Width'] > 0 || t.options[tagType + 'Width'].toString().indexOf('%') > -1) {
3765				t.width = t.options[tagType + 'Width'];
3766			} else if (t.node.style.width !== '' && t.node.style.width !== null) {
3767				t.width = t.node.style.width;
3768			} else if (t.node.getAttribute('width')) {
3769				t.width = t.node.getAttribute('width');
3770			} else {
3771				t.width = t.options['default' + capsTagName + 'Width'];
3772			}
3773
3774			if (t.options[tagType + 'Height'] > 0 || t.options[tagType + 'Height'].toString().indexOf('%') > -1) {
3775				t.height = t.options[tagType + 'Height'];
3776			} else if (t.node.style.height !== '' && t.node.style.height !== null) {
3777				t.height = t.node.style.height;
3778			} else if (t.node.getAttribute('height')) {
3779				t.height = t.node.getAttribute('height');
3780			} else {
3781				t.height = t.options['default' + capsTagName + 'Height'];
3782			}
3783
3784			t.initialAspectRatio = t.height >= t.width ? t.width / t.height : t.height / t.width;
3785
3786			t.setPlayerSize(t.width, t.height);
3787
3788			playerOptions.pluginWidth = t.width;
3789			playerOptions.pluginHeight = t.height;
3790		} else if (!t.isVideo && !t.options.features.length && !t.options.useDefaultControls) {
3791				t.node.style.display = 'none';
3792			}
3793
3794		_mejs2.default.MepDefaults = playerOptions;
3795
3796		new _mediaelement2.default(t.media, playerOptions, t.mediaFiles);
3797
3798		if (t.container !== undefined && t.options.features.length && t.controlsAreVisible && !t.options.hideVideoControlsOnLoad) {
3799			var event = (0, _general.createEvent)('controlsshown', t.container);
3800			t.container.dispatchEvent(event);
3801		}
3802
3803		return t;
3804	}
3805
3806	_createClass(MediaElementPlayer, [{
3807		key: 'showControls',
3808		value: function showControls(doAnimation) {
3809			var t = this;
3810
3811			doAnimation = doAnimation === undefined || doAnimation;
3812
3813			if (t.controlsAreVisible || !t.isVideo) {
3814				return;
3815			}
3816
3817			if (doAnimation) {
3818				(function () {
3819					dom.fadeIn(t.controls, 200, function () {
3820						dom.removeClass(t.controls, t.options.classPrefix + 'offscreen');
3821						var event = (0, _general.createEvent)('controlsshown', t.container);
3822						t.container.dispatchEvent(event);
3823					});
3824
3825					var controls = t.container.querySelectorAll('.' + t.options.classPrefix + 'control');
3826
3827					var _loop = function _loop(i, total) {
3828						dom.fadeIn(controls[i], 200, function () {
3829							dom.removeClass(controls[i], t.options.classPrefix + 'offscreen');
3830						});
3831					};
3832
3833					for (var i = 0, total = controls.length; i < total; i++) {
3834						_loop(i, total);
3835					}
3836				})();
3837			} else {
3838				dom.removeClass(t.controls, t.options.classPrefix + 'offscreen');
3839				t.controls.style.display = '';
3840				t.controls.style.opacity = 1;
3841
3842				var controls = t.container.querySelectorAll('.' + t.options.classPrefix + 'control');
3843				for (var i = 0, total = controls.length; i < total; i++) {
3844					dom.removeClass(controls[i], t.options.classPrefix + 'offscreen');
3845					controls[i].style.display = '';
3846				}
3847
3848				var event = (0, _general.createEvent)('controlsshown', t.container);
3849				t.container.dispatchEvent(event);
3850			}
3851
3852			t.controlsAreVisible = true;
3853			t.setControlsSize();
3854		}
3855	}, {
3856		key: 'hideControls',
3857		value: function hideControls(doAnimation, forceHide) {
3858			var t = this;
3859
3860			doAnimation = doAnimation === undefined || doAnimation;
3861
3862			if (forceHide !== true && (!t.controlsAreVisible || t.options.alwaysShowControls || t.paused && t.readyState === 4 && (!t.options.hideVideoControlsOnLoad && t.currentTime <= 0 || !t.options.hideVideoControlsOnPause && t.currentTime > 0) || t.isVideo && !t.options.hideVideoControlsOnLoad && !t.readyState || t.ended)) {
3863				return;
3864			}
3865
3866			if (doAnimation) {
3867				(function () {
3868					dom.fadeOut(t.controls, 200, function () {
3869						dom.addClass(t.controls, t.options.classPrefix + 'offscreen');
3870						t.controls.style.display = '';
3871						var event = (0, _general.createEvent)('controlshidden', t.container);
vendor: 15,986 bytes, lines 3872-4428
3872						t.container.dispatchEvent(event);
3873					});
3874
3875					var controls = t.container.querySelectorAll('.' + t.options.classPrefix + 'control');
3876
3877					var _loop2 = function _loop2(i, total) {
3878						dom.fadeOut(controls[i], 200, function () {
3879							dom.addClass(controls[i], t.options.classPrefix + 'offscreen');
3880							controls[i].style.display = '';
3881						});
3882					};
3883
3884					for (var i = 0, total = controls.length; i < total; i++) {
3885						_loop2(i, total);
3886					}
3887				})();
3888			} else {
3889				dom.addClass(t.controls, t.options.classPrefix + 'offscreen');
3890				t.controls.style.display = '';
3891				t.controls.style.opacity = 0;
3892
3893				var controls = t.container.querySelectorAll('.' + t.options.classPrefix + 'control');
3894				for (var i = 0, total = controls.length; i < total; i++) {
3895					dom.addClass(controls[i], t.options.classPrefix + 'offscreen');
3896					controls[i].style.display = '';
3897				}
3898
3899				var event = (0, _general.createEvent)('controlshidden', t.container);
3900				t.container.dispatchEvent(event);
3901			}
3902
3903			t.controlsAreVisible = false;
3904		}
3905	}, {
3906		key: 'startControlsTimer',
3907		value: function startControlsTimer(timeout) {
3908			var t = this;
3909
3910			timeout = typeof timeout !== 'undefined' ? timeout : t.options.controlsTimeoutDefault;
3911
3912			t.killControlsTimer('start');
3913
3914			t.controlsTimer = setTimeout(function () {
3915				t.hideControls();
3916				t.killControlsTimer('hide');
3917			}, timeout);
3918		}
3919	}, {
3920		key: 'killControlsTimer',
3921		value: function killControlsTimer() {
3922			var t = this;
3923
3924			if (t.controlsTimer !== null) {
3925				clearTimeout(t.controlsTimer);
3926				delete t.controlsTimer;
3927				t.controlsTimer = null;
3928			}
3929		}
3930	}, {
3931		key: 'disableControls',
3932		value: function disableControls() {
3933			var t = this;
3934
3935			t.killControlsTimer();
3936			t.controlsEnabled = false;
3937			t.hideControls(false, true);
3938		}
3939	}, {
3940		key: 'enableControls',
3941		value: function enableControls() {
3942			var t = this;
3943
3944			t.controlsEnabled = true;
3945			t.showControls(false);
3946		}
3947	}, {
3948		key: '_setDefaultPlayer',
3949		value: function _setDefaultPlayer() {
3950			var t = this;
3951			if (t.proxy) {
3952				t.proxy.pause();
3953			}
3954			t.proxy = new _default2.default(t);
3955			t.media.addEventListener('loadedmetadata', function () {
3956				if (t.getCurrentTime() > 0 && t.currentMediaTime > 0) {
3957					t.setCurrentTime(t.currentMediaTime);
3958					if (!_constants.IS_IOS && !_constants.IS_ANDROID) {
3959						t.play();
3960					}
3961				}
3962			});
3963		}
3964	}, {
3965		key: '_meReady',
3966		value: function _meReady(media, domNode) {
3967			var t = this,
3968			    autoplayAttr = domNode.getAttribute('autoplay'),
3969			    autoplay = !(autoplayAttr === undefined || autoplayAttr === null || autoplayAttr === 'false'),
3970			    isNative = media.rendererName !== null && /(native|html5)/i.test(t.media.rendererName);
3971
3972			if (t.controls) {
3973				t.enableControls();
3974			}
3975
3976			if (t.container && t.container.querySelector('.' + t.options.classPrefix + 'overlay-play')) {
3977				t.container.querySelector('.' + t.options.classPrefix + 'overlay-play').style.display = '';
3978			}
3979
3980			if (t.created) {
3981				return;
3982			}
3983
3984			t.created = true;
3985			t.media = media;
3986			t.domNode = domNode;
3987
3988			if (!(_constants.IS_ANDROID && t.options.AndroidUseNativeControls) && !(_constants.IS_IPAD && t.options.iPadUseNativeControls) && !(_constants.IS_IPHONE && t.options.iPhoneUseNativeControls)) {
3989				if (!t.isVideo && !t.options.features.length && !t.options.useDefaultControls) {
3990					if (autoplay && isNative) {
3991						t.play();
3992					}
3993
3994					if (t.options.success) {
3995
3996						if (typeof t.options.success === 'string') {
3997							_window2.default[t.options.success](t.media, t.domNode, t);
3998						} else {
3999							t.options.success(t.media, t.domNode, t);
4000						}
4001					}
4002
4003					return;
4004				}
4005
4006				t.featurePosition = {};
4007
4008				t._setDefaultPlayer();
4009
4010				t.buildposter(t, t.controls, t.layers, t.media);
4011				t.buildkeyboard(t, t.controls, t.layers, t.media);
4012				t.buildoverlays(t, t.controls, t.layers, t.media);
4013
4014				if (t.options.useDefaultControls) {
4015					var defaultControls = ['playpause', 'current', 'progress', 'duration', 'tracks', 'volume', 'fullscreen'];
4016					t.options.features = defaultControls.concat(t.options.features.filter(function (item) {
4017						return defaultControls.indexOf(item) === -1;
4018					}));
4019				}
4020
4021				for (var i = 0, total = t.options.features.length; i < total; i++) {
4022					var feature = t.options.features[i];
4023					if (t['build' + feature]) {
4024						try {
4025							t['build' + feature](t, t.controls, t.layers, t.media);
4026						} catch (e) {
4027							console.error('error building ' + feature, e);
4028						}
4029					}
4030				}
4031
4032				var event = (0, _general.createEvent)('controlsready', t.container);
4033				t.container.dispatchEvent(event);
4034
4035				t.setPlayerSize(t.width, t.height);
4036				t.setControlsSize();
4037
4038				if (t.isVideo) {
4039					t.clickToPlayPauseCallback = function () {
4040
4041						if (t.options.clickToPlayPause) {
4042							var button = t.container.querySelector('.' + t.options.classPrefix + 'overlay-button'),
4043							    pressed = button.getAttribute('aria-pressed');
4044
4045							if (t.paused && pressed) {
4046								t.pause();
4047							} else if (t.paused) {
4048								t.play();
4049							} else {
4050								t.pause();
4051							}
4052
4053							button.setAttribute('aria-pressed', !pressed);
4054							t.container.focus();
4055						}
4056					};
4057
4058					t.createIframeLayer();
4059
4060					t.media.addEventListener('click', t.clickToPlayPauseCallback);
4061
4062					if ((_constants.IS_ANDROID || _constants.IS_IOS) && !t.options.alwaysShowControls) {
4063						t.node.addEventListener('touchstart', function () {
4064							if (t.controlsAreVisible) {
4065								t.hideControls(false);
4066							} else {
4067								if (t.controlsEnabled) {
4068									t.showControls(false);
4069								}
4070							}
4071						}, _constants.SUPPORT_PASSIVE_EVENT ? { passive: true } : false);
4072					} else {
4073						t.container.addEventListener('mouseenter', function () {
4074							if (t.controlsEnabled) {
4075								if (!t.options.alwaysShowControls) {
4076									t.killControlsTimer('enter');
4077									t.showControls();
4078									t.startControlsTimer(t.options.controlsTimeoutMouseEnter);
4079								}
4080							}
4081						});
4082						t.container.addEventListener('mousemove', function () {
4083							if (t.controlsEnabled) {
4084								if (!t.controlsAreVisible) {
4085									t.showControls();
4086								}
4087								if (!t.options.alwaysShowControls) {
4088									t.startControlsTimer(t.options.controlsTimeoutMouseEnter);
4089								}
4090							}
4091						});
4092						t.container.addEventListener('mouseleave', function () {
4093							if (t.controlsEnabled) {
4094								if (!t.paused && !t.options.alwaysShowControls) {
4095									t.startControlsTimer(t.options.controlsTimeoutMouseLeave);
4096								}
4097							}
4098						});
4099					}
4100
4101					if (t.options.hideVideoControlsOnLoad) {
4102						t.hideControls(false);
4103					}
4104
4105					if (t.options.enableAutosize) {
4106						t.media.addEventListener('loadedmetadata', function (e) {
4107							var target = e !== undefined ? e.detail.target || e.target : t.media;
4108							if (t.options.videoHeight <= 0 && !t.domNode.getAttribute('height') && !t.domNode.style.height && target !== null && !isNaN(target.videoHeight)) {
4109								t.setPlayerSize(target.videoWidth, target.videoHeight);
4110								t.setControlsSize();
4111								t.media.setSize(target.videoWidth, target.videoHeight);
4112							}
4113						});
4114					}
4115				}
4116
4117				t.media.addEventListener('play', function () {
4118					t.hasFocus = true;
4119
4120					for (var playerIndex in _mejs2.default.players) {
4121						if (_mejs2.default.players.hasOwnProperty(playerIndex)) {
4122							var p = _mejs2.default.players[playerIndex];
4123
4124							if (p.id !== t.id && t.options.pauseOtherPlayers && !p.paused && !p.ended) {
4125								p.pause();
4126								p.hasFocus = false;
4127							}
4128						}
4129					}
4130
4131					if (!(_constants.IS_ANDROID || _constants.IS_IOS) && !t.options.alwaysShowControls && t.isVideo) {
4132						t.hideControls();
4133					}
4134				});
4135
4136				t.media.addEventListener('ended', function () {
4137					if (t.options.autoRewind) {
4138						try {
4139							t.setCurrentTime(0);
4140
4141							setTimeout(function () {
4142								var loadingElement = t.container.querySelector('.' + t.options.classPrefix + 'overlay-loading');
4143								if (loadingElement && loadingElement.parentNode) {
4144									loadingElement.parentNode.style.display = 'none';
4145								}
4146							}, 20);
4147						} catch (exp) {
4148							
4149						}
4150					}
4151
4152					if (typeof t.media.renderer.stop === 'function') {
4153						t.media.renderer.stop();
4154					} else {
4155						t.pause();
4156					}
4157
4158					if (t.setProgressRail) {
4159						t.setProgressRail();
4160					}
4161					if (t.setCurrentRail) {
4162						t.setCurrentRail();
4163					}
4164
4165					if (t.options.loop) {
4166						t.play();
4167					} else if (!t.options.alwaysShowControls && t.controlsEnabled) {
4168						t.showControls();
4169					}
4170				});
4171
4172				t.media.addEventListener('loadedmetadata', function () {
4173
4174					(0, _time.calculateTimeFormat)(t.getDuration(), t.options, t.options.framesPerSecond || 25);
4175
4176					if (t.updateDuration) {
4177						t.updateDuration();
4178					}
4179					if (t.updateCurrent) {
4180						t.updateCurrent();
4181					}
4182
4183					if (!t.isFullScreen) {
4184						t.setPlayerSize(t.width, t.height);
4185						t.setControlsSize();
4186					}
4187				});
4188
4189				var duration = null;
4190				t.media.addEventListener('timeupdate', function () {
4191					if (!isNaN(t.getDuration()) && duration !== t.getDuration()) {
4192						duration = t.getDuration();
4193						(0, _time.calculateTimeFormat)(duration, t.options, t.options.framesPerSecond || 25);
4194
4195						if (t.updateDuration) {
4196							t.updateDuration();
4197						}
4198						if (t.updateCurrent) {
4199							t.updateCurrent();
4200						}
4201
4202						t.setControlsSize();
4203					}
4204				});
4205
4206				t.container.addEventListener('click', function (e) {
4207					dom.addClass(e.currentTarget, t.options.classPrefix + 'container-keyboard-inactive');
4208				});
4209
4210				t.container.addEventListener('focusin', function (e) {
4211					dom.removeClass(e.currentTarget, t.options.classPrefix + 'container-keyboard-inactive');
4212					if (t.isVideo && !_constants.IS_ANDROID && !_constants.IS_IOS && t.controlsEnabled && !t.options.alwaysShowControls) {
4213						t.killControlsTimer('enter');
4214						t.showControls();
4215						t.startControlsTimer(t.options.controlsTimeoutMouseEnter);
4216					}
4217				});
4218
4219				t.container.addEventListener('focusout', function (e) {
4220					setTimeout(function () {
4221						if (e.relatedTarget) {
4222							if (t.keyboardAction && !e.relatedTarget.closest('.' + t.options.classPrefix + 'container')) {
4223								t.keyboardAction = false;
4224								if (t.isVideo && !t.options.alwaysShowControls && !t.paused) {
4225									t.startControlsTimer(t.options.controlsTimeoutMouseLeave);
4226								}
4227							}
4228						}
4229					}, 0);
4230				});
4231
4232				setTimeout(function () {
4233					t.setPlayerSize(t.width, t.height);
4234					t.setControlsSize();
4235				}, 0);
4236
4237				t.globalResizeCallback = function () {
4238					if (!(t.isFullScreen || _constants.HAS_TRUE_NATIVE_FULLSCREEN && _document2.default.webkitIsFullScreen)) {
4239						t.setPlayerSize(t.width, t.height);
4240					}
4241
4242					t.setControlsSize();
4243				};
4244
4245				t.globalBind('resize', t.globalResizeCallback);
4246			}
4247
4248			if (autoplay && isNative) {
4249				t.play();
4250			}
4251
4252			if (t.options.success) {
4253				if (typeof t.options.success === 'string') {
4254					_window2.default[t.options.success](t.media, t.domNode, t);
4255				} else {
4256					t.options.success(t.media, t.domNode, t);
4257				}
4258			}
4259		}
4260	}, {
4261		key: '_handleError',
4262		value: function _handleError(e, media, node) {
4263			var t = this,
4264			    play = t.layers.querySelector('.' + t.options.classPrefix + 'overlay-play');
4265
4266			if (play) {
4267				play.style.display = 'none';
4268			}
4269
4270			if (t.options.error) {
4271				t.options.error(e, media, node);
4272			}
4273
4274			if (t.container.querySelector('.' + t.options.classPrefix + 'cannotplay')) {
4275				t.container.querySelector('.' + t.options.classPrefix + 'cannotplay').remove();
4276			}
4277
4278			var errorContainer = _document2.default.createElement('div');
4279			errorContainer.className = t.options.classPrefix + 'cannotplay';
4280			errorContainer.style.width = '100%';
4281			errorContainer.style.height = '100%';
4282
4283			var errorContent = typeof t.options.customError === 'function' ? t.options.customError(t.media, t.media.originalNode) : t.options.customError,
4284			    imgError = '';
4285
4286			if (!errorContent) {
4287				var poster = t.media.originalNode.getAttribute('poster');
4288				if (poster) {
4289					imgError = '<img src="' + poster + '" alt="' + _mejs2.default.i18n.t('mejs.download-file') + '">';
4290				}
4291
4292				if (e.message) {
4293					errorContent = '<p>' + e.message + '</p>';
4294				}
4295
4296				if (e.urls) {
4297					for (var i = 0, total = e.urls.length; i < total; i++) {
4298						var url = e.urls[i];
4299						errorContent += '<a href="' + url.src + '" data-type="' + url.type + '"><span>' + _mejs2.default.i18n.t('mejs.download-file') + ': ' + url.src + '</span></a>';
4300					}
4301				}
4302			}
4303
4304			if (errorContent && t.layers.querySelector('.' + t.options.classPrefix + 'overlay-error')) {
4305				errorContainer.innerHTML = errorContent;
4306				t.layers.querySelector('.' + t.options.classPrefix + 'overlay-error').innerHTML = '' + imgError + errorContainer.outerHTML;
4307				t.layers.querySelector('.' + t.options.classPrefix + 'overlay-error').parentNode.style.display = 'block';
4308			}
4309
4310			if (t.controlsEnabled) {
4311				t.disableControls();
4312			}
4313		}
4314	}, {
4315		key: 'setPlayerSize',
4316		value: function setPlayerSize(width, height) {
4317			var t = this;
4318
4319			if (!t.options.setDimensions) {
4320				return false;
4321			}
4322
4323			if (typeof width !== 'undefined') {
4324				t.width = width;
4325			}
4326
4327			if (typeof height !== 'undefined') {
4328				t.height = height;
4329			}
4330
4331			switch (t.options.stretching) {
4332				case 'fill':
4333					if (t.isVideo) {
4334						t.setFillMode();
4335					} else {
4336						t.setDimensions(t.width, t.height);
4337					}
4338					break;
4339				case 'responsive':
4340					t.setResponsiveMode();
4341					break;
4342				case 'none':
4343					t.setDimensions(t.width, t.height);
4344					break;
4345
4346				default:
4347					if (t.hasFluidMode() === true) {
4348						t.setResponsiveMode();
4349					} else {
4350						t.setDimensions(t.width, t.height);
4351					}
4352					break;
4353			}
4354		}
4355	}, {
4356		key: 'hasFluidMode',
4357		value: function hasFluidMode() {
4358			var t = this;
4359
4360			return t.height.toString().indexOf('%') !== -1 || t.node && t.node.style.maxWidth && t.node.style.maxWidth !== 'none' && t.node.style.maxWidth !== t.width || t.node && t.node.currentStyle && t.node.currentStyle.maxWidth === '100%';
4361		}
4362	}, {
4363		key: 'setResponsiveMode',
4364		value: function setResponsiveMode() {
4365			var t = this,
4366			    parent = function () {
4367
4368				var parentEl = void 0,
4369				    el = t.container;
4370
4371				while (el) {
4372					try {
4373						if (_constants.IS_FIREFOX && el.tagName.toLowerCase() === 'html' && _window2.default.self !== _window2.default.top && _window2.default.frameElement !== null) {
4374							return _window2.default.frameElement;
4375						} else {
4376							parentEl = el.parentElement;
4377						}
4378					} catch (e) {
4379						parentEl = el.parentElement;
4380					}
4381
4382					if (parentEl && dom.visible(parentEl)) {
4383						return parentEl;
4384					}
4385					el = parentEl;
4386				}
4387
4388				return null;
4389			}(),
4390			    parentStyles = parent ? getComputedStyle(parent, null) : getComputedStyle(_document2.default.body, null),
4391			    nativeWidth = function () {
4392				if (t.isVideo) {
4393					if (t.media.videoWidth && t.media.videoWidth > 0) {
4394						return t.media.videoWidth;
4395					} else if (t.node.getAttribute('width')) {
4396						return t.node.getAttribute('width');
4397					} else {
4398						return t.options.defaultVideoWidth;
4399					}
4400				} else {
4401					return t.options.defaultAudioWidth;
4402				}
4403			}(),
4404			    nativeHeight = function () {
4405				if (t.isVideo) {
4406					if (t.media.videoHeight && t.media.videoHeight > 0) {
4407						return t.media.videoHeight;
4408					} else if (t.node.getAttribute('height')) {
4409						return t.node.getAttribute('height');
4410					} else {
4411						return t.options.defaultVideoHeight;
4412					}
4413				} else {
4414					return t.options.defaultAudioHeight;
4415				}
4416			}(),
4417			    aspectRatio = function () {
4418				var ratio = 1;
4419				if (!t.isVideo) {
4420					return ratio;
4421				}
4422
4423				if (t.media.videoWidth && t.media.videoWidth > 0 && t.media.videoHeight && t.media.videoHeight > 0) {
4424					ratio = t.height >= t.width ? t.media.videoWidth / t.media.videoHeight : t.media.videoHeight / t.media.videoWidth;
4425				} else {
4426					ratio = t.initialAspectRatio;
4427				}
4428
4429				if (isNaN(ratio) || ratio < 0.01 || ratio > 100) {
4430					ratio = 1;
4431				}
4432
4433				return ratio;
4434			}(),
4435			    parentHeight = parseFloat(parentStyles.height);
4436
4437			var newHeight = void 0,
4438			    parentWidth = parseFloat(parentStyles.width);
4439
4440			if (t.isVideo) {
4441				if (t.height === '100%') {
4442					newHeight = parseFloat(parentWidth * nativeHeight / nativeWidth, 10);
4443				} else {
4444					newHeight = t.height >= t.width ? parseFloat(parentWidth / aspectRatio, 10) : parseFloat(parentWidth * aspectRatio, 10);
4445				}
4446			} else {
4447				newHeight = nativeHeight;
4448			}
4449
4450			if (isNaN(newHeight)) {
4451				newHeight = parentHeight;
4452			}
4453
4454			if (t.container.parentNode.length > 0 && t.container.parentNode.tagName.toLowerCase() === 'body') {
4455				parentWidth = _window2.default.innerWidth || _document2.default.documentElement.clientWidth || _document2.default.body.clientWidth;
4456				newHeight = _window2.default.innerHeight || _document2.default.documentElement.clientHeight || _document2.default.body.clientHeight;
4457			}
4458
4459			if (newHeight && parentWidth) {
4460				t.container.style.width = parentWidth + 'px';
4461				t.container.style.height = newHeight + 'px';
4462
4463				t.node.style.width = '100%';
4464				t.node.style.height = '100%';
4465
4466				if (t.isVideo && t.media.setSize) {
4467					t.media.setSize(parentWidth, newHeight);
4468				}
4469
4470				var layerChildren = t.layers.children;
4471				for (var i = 0, total = layerChildren.length; i < total; i++) {
4472					layerChildren[i].style.width = '100%';
4473					layerChildren[i].style.height = '100%';
4474				}
4475			}
4476		}
4477	}, {
4478		key: 'setFillMode',
4479		value: function setFillMode() {
4480			var t = this;
4481
4482			var parent = void 0,
4483			    isIframe = false;
4484
4485			try {
4486				if (_window2.default.self !== _window2.default.top) {
4487					isIframe = true;
4488					parent = _window2.default.frameElement;
4489				} else {
4490					parent = t.outerContainer;
4491				}
4492			} catch (e) {
4493				parent = t.outerContainer;
4494			}
4495
4496			var parentStyles = getComputedStyle(parent);
4497
4498			if (t.node.style.height !== 'none' && t.node.style.height !== t.height) {
4499				t.node.style.height = 'auto';
4500			}
4501			if (t.node.style.maxWidth !== 'none' && t.node.style.maxWidth !== t.width) {
4502				t.node.style.maxWidth = 'none';
4503			}
4504
4505			if (t.node.style.maxHeight !== 'none' && t.node.style.maxHeight !== t.height) {
4506				t.node.style.maxHeight = 'none';
4507			}
4508
4509			if (t.node.currentStyle) {
4510				if (t.node.currentStyle.height === '100%') {
4511					t.node.currentStyle.height = 'auto';
4512				}
4513				if (t.node.currentStyle.maxWidth === '100%') {
4514					t.node.currentStyle.maxWidth = 'none';
4515				}
4516				if (t.node.currentStyle.maxHeight === '100%') {
4517					t.node.currentStyle.maxHeight = 'none';
4518				}
4519			}
4520
4521			if (!isIframe && !parseFloat(parentStyles.width)) {
4522				parent.style.width = t.media.offsetWidth + 'px';
4523			}
4524
4525			if (!isIframe && !parseFloat(parentStyles.height)) {
4526				parent.style.height = t.media.offsetHeight + 'px';
4527			}
4528
4529			parentStyles = getComputedStyle(parent);
4530
4531			var parentWidth = parseFloat(parentStyles.width),
4532			    parentHeight = parseFloat(parentStyles.height);
4533
4534			t.setDimensions('100%', '100%');
4535
4536			var poster = t.container.querySelector('.' + t.options.classPrefix + 'poster>img');
4537			if (poster) {
4538				poster.style.display = '';
4539			}
4540
4541			var targetElement = t.container.querySelectorAll('object, embed, iframe, video'),
4542			    initHeight = t.height,
4543			    initWidth = t.width,
4544			    scaleX1 = parentWidth,
4545			    scaleY1 = initHeight * parentWidth / initWidth,
4546			    scaleX2 = initWidth * parentHeight / initHeight,
4547			    scaleY2 = parentHeight,
4548			    bScaleOnWidth = scaleX2 > parentWidth === false,
4549			    finalWidth = bScaleOnWidth ? Math.floor(scaleX1) : Math.floor(scaleX2),
4550			    finalHeight = bScaleOnWidth ? Math.floor(scaleY1) : Math.floor(scaleY2),
4551			    width = bScaleOnWidth ? parentWidth + 'px' : finalWidth + 'px',
4552			    height = bScaleOnWidth ? finalHeight + 'px' : parentHeight + 'px';
4553
4554			for (var i = 0, total = targetElement.length; i < total; i++) {
4555				targetElement[i].style.height = height;
4556				targetElement[i].style.width = width;
4557				if (t.media.setSize) {
4558					t.media.setSize(width, height);
4559				}
4560
4561				targetElement[i].style.marginLeft = Math.floor((parentWidth - finalW
4561idth) / 2) + 'px';
4562				targetElement[i].style.marginTop = 0;
4563			}
4564		}
4565	}, {
4566		key: 'setDimensions',
4567		value: function setDimensions(width, height) {
4568			var t = this;
4569
4570			width = (0, _general.isString)(width) && width.indexOf('%') > -1 ? width : parseFloat(width) + 'px';
4571			height = (0, _general.isString)(height) && height.indexOf('%') > -1 ? height : parseFloat(height) + 'px';
4572
4573			t.container.style.width = width;
4574			t.container.style.height = height;
4575
4576			var layers = t.layers.children;
4577			for (var i = 0, total = layers.length; i < total; i++) {
4578				layers[i].style.width = width;
4579				layers[i].style.height = height;
4580			}
4581		}
4582	}, {
4583		key: 'setControlsSize',
4584		value: function setControlsSize() {
4585			var t = this;
4586
4587			if (!dom.visible(t.container)) {
4588				return;
4589			}
4590
4591			if (t.rail && dom.visible(t.rail)) {
4592				var totalStyles = t.total ? getComputedStyle(t.total, null) : null,
4593				    totalMargin = totalStyles ? parseFloat(totalStyles.marginLeft) + parseFloat(totalStyles.marginRight) : 0,
4594				    railStyles = getComputedStyle(t.rail),
4595				    railMargin = parseFloat(railStyles.marginLeft) + parseFloat(railStyles.marginRight);
4596
4597				var siblingsWidth = 0;
4598
4599				var siblings = dom.siblings(t.rail, function (el) {
4600					return el !== t.rail;
4601				}),
4602				    total = siblings.length;
4603				for (var i = 0; i < total; i++) {
4604					siblingsWidth += siblings[i].offsetWidth;
4605				}
4606
4607				siblingsWidth += totalMargin + (totalMargin === 0 ? railMargin * 2 : railMargin) + 1;
4608
4609				t.container.style.minWidth = siblingsWidth + 'px';
4610
4611				var event = (0, _general.createEvent)('controlsresize', t.container);
4612				t.container.dispatchEvent(event);
4613			} else {
4614				var children = t.controls.children;
4615				var minWidth = 0;
4616
4617				for (var _i = 0, _total = children.length; _i < _total; _i++) {
4618					minWidth += children[_i].offsetWidth;
4619				}
4620
4621				t.container.style.minWidth = minWidth + 'px';
4622			}
4623		}
4624	}, {
4625		key: 'addControlElement',
4626		value: function addControlElement(element, key) {
4627
4628			var t = this;
4629
4630			if (t.featurePosition[key] !== undefined) {
4631				var child = t.controls.children[t.featurePosition[key] - 1];
4632				child.parentNode.insertBefore(element, child.nextSibling);
4633			} else {
4634				t.controls.appendChild(element);
4635				var children = t.controls.children;
4636				for (var i = 0, total = children.length; i < total; i++) {
4637					if (element === children[i]) {
4638						t.featurePosition[key] = i;
4639						break;
4640					}
4641				}
4642			}
4643		}
4644	}, {
4645		key: 'createIframeLayer',
4646		value: function createIframeLayer() {
4647			var t = this;
4648
4649			if (t.isVideo && t.media.rendererName !== null && t.media.rendererName.indexOf('iframe') > -1 && !_document2.default.getElementById(t.media.id + '-iframe-overlay')) {
4650
4651				var layer = _document2.default.createElement('div'),
4652				    target = _document2.default.getElementById(t.media.id + '_' + t.media.rendererName);
4653
4654				layer.id = t.media.id + '-iframe-overlay';
4655				layer.className = t.options.classPrefix + 'iframe-overlay';
4656				layer.addEventListener('click', function (e) {
4657					if (t.options.clickToPlayPause) {
4658						if (t.paused) {
4659							t.play();
4660						} else {
4661							t.pause();
4662						}
4663
4664						e.preventDefault();
4665						e.stopPropagation();
4666					}
4667				});
4668
4669				target.parentNode.insertBefore(layer, target);
4670			}
4671		}
4672	}, {
4673		key: 'resetSize',
4674		value: function resetSize() {
4675			var t = this;
4676
4677			setTimeout(function () {
4678				t.setPlayerSize(t.width, t.height);
4679				t.setControlsSize();
4680			}, 50);
4681		}
4682	}, {
4683		key: 'setPoster',
4684		value: function setPoster(url) {
4685			var t = this;
4686
4687			var posterDiv = t.container.querySelector('.' + t.options.classPrefix + 'poster');
4688
4689			if (!posterDiv) {
4690				posterDiv = _document2.default.createElement('div');
4691				posterDiv.className = t.options.classPrefix + 'poster ' + t.options.classPrefix + 'layer';
4692				t.layers.appendChild(posterDiv);
4693			}
4694
4695			var posterImg = posterDiv.querySelector('img');
4696
4697			if (!posterImg && url) {
4698				posterImg = _document2.default.createElement('img');
4699				posterImg.className = t.options.classPrefix + 'poster-img';
4700				posterImg.width = '100%';
4701				posterImg.height = '100%';
4702				posterDiv.style.display = '';
vendor: 10,660 bytes, lines 4703-5076
4703				posterDiv.appendChild(posterImg);
4704			}
4705
4706			if (url) {
4707				posterImg.setAttribute('src', url);
4708				posterDiv.style.backgroundImage = 'url("' + url + '")';
4709				posterDiv.style.display = '';
4710			} else if (posterImg) {
4711				posterDiv.style.backgroundImage = 'none';
4712				posterDiv.style.display = 'none';
4713				posterImg.remove();
4714			} else {
4715				posterDiv.style.display = 'none';
4716			}
4717		}
4718	}, {
4719		key: 'changeSkin',
4720		value: function changeSkin(className) {
4721			var t = this;
4722
4723			t.container.className = t.options.classPrefix + 'container ' + className;
4724			t.setPlayerSize(t.width, t.height);
4725			t.setControlsSize();
4726		}
4727	}, {
4728		key: 'globalBind',
4729		value: function globalBind(events, callback) {
4730			var t = this,
4731			    doc = t.node ? t.node.ownerDocument : _document2.default;
4732
4733			events = (0, _general.splitEvents)(events, t.id);
4734			if (events.d) {
4735				var eventList = events.d.split(' ');
4736				for (var i = 0, total = eventList.length; i < total; i++) {
4737					eventList[i].split('.').reduce(function (part, e) {
4738						doc.addEventListener(e, callback, false);
4739						return e;
4740					}, '');
4741				}
4742			}
4743			if (events.w) {
4744				var _eventList = events.w.split(' ');
4745				for (var _i2 = 0, _total2 = _eventList.length; _i2 < _total2; _i2++) {
4746					_eventList[_i2].split('.').reduce(function (part, e) {
4747						_window2.default.addEventListener(e, callback, false);
4748						return e;
4749					}, '');
4750				}
4751			}
4752		}
4753	}, {
4754		key: 'globalUnbind',
4755		value: function globalUnbind(events, callback) {
4756			var t = this,
4757			    doc = t.node ? t.node.ownerDocument : _document2.default;
4758
4759			events = (0, _general.splitEvents)(events, t.id);
4760			if (events.d) {
4761				var eventList = events.d.split(' ');
4762				for (var i = 0, total = eventList.length; i < total; i++) {
4763					eventList[i].split('.').reduce(function (part, e) {
4764						doc.removeEventListener(e, callback, false);
4765						return e;
4766					}, '');
4767				}
4768			}
4769			if (events.w) {
4770				var _eventList2 = events.w.split(' ');
4771				for (var _i3 = 0, _total3 = _eventList2.length; _i3 < _total3; _i3++) {
4772					_eventList2[_i3].split('.').reduce(function (part, e) {
4773						_window2.default.removeEventListener(e, callback, false);
4774						return e;
4775					}, '');
4776				}
4777			}
4778		}
4779	}, {
4780		key: 'buildposter',
4781		value: function buildposter(player, controls, layers, media) {
4782			var t = this,
4783			    poster = _document2.default.createElement('div');
4784
4785			poster.className = t.options.classPrefix + 'poster ' + t.options.classPrefix + 'layer';
4786			layers.appendChild(poster);
4787
4788			var posterUrl = media.originalNode.getAttribute('poster');
4789
4790			if (player.options.poster !== '') {
4791				if (posterUrl && _constants.IS_IOS) {
4792					media.originalNode.removeAttribute('poster');
4793				}
4794				posterUrl = player.options.poster;
4795			}
4796
4797			if (posterUrl) {
4798				t.setPoster(posterUrl);
4799			} else if (t.media.renderer !== null && typeof t.media.renderer.getPosterUrl === 'function') {
4800				t.setPoster(t.media.renderer.getPosterUrl());
4801			} else {
4802				poster.style.display = 'none';
4803			}
4804
4805			media.addEventListener('play', function () {
4806				poster.style.display = 'none';
4807			});
4808
4809			media.addEventListener('playing', function () {
4810				poster.style.display = 'none';
4811			});
4812
4813			if (player.options.showPosterWhenEnded && player.options.autoRewind) {
4814				media.addEventListener('ended', function () {
4815					poster.style.display = '';
4816				});
4817			}
4818
4819			media.addEventListener('error', function () {
4820				poster.style.display = 'none';
4821			});
4822
4823			if (player.options.showPosterWhenPaused) {
4824				media.addEventListener('pause', function () {
4825					if (!player.ended) {
4826						poster.style.display = '';
4827					}
4828				});
4829			}
4830		}
4831	}, {
4832		key: 'buildoverlays',
4833		value: function buildoverlays(player, controls, layers, media) {
4834
4835			if (!player.isVideo) {
4836				return;
4837			}
4838
4839			var t = this,
4840			    loading = _document2.default.createElement('div'),
4841			    error = _document2.default.createElement('div'),
4842			    bigPlay = _document2.default.createElement('div');
4843
4844			loading.style.display = 'none';
4845			loading.className = t.options.classPrefix + 'overlay ' + t.options.classPrefix + 'layer';
4846			loading.innerHTML = '<div class="' + t.options.classPrefix + 'overlay-loading">' + ('<span class="' + t.options.classPrefix + 'overlay-loading-bg-img"></span>') + '</div>';
4847			layers.appendChild(loading);
4848
4849			error.style.display = 'none';
4850			error.className = t.options.classPrefix + 'overlay ' + t.options.classPrefix + 'layer';
4851			error.innerHTML = '<div class="' + t.options.classPrefix + 'overlay-error"></div>';
4852			layers.appendChild(error);
4853
4854			bigPlay.className = t.options.classPrefix + 'overlay ' + t.options.classPrefix + 'layer ' + t.options.classPrefix + 'overlay-play';
4855			bigPlay.innerHTML = '<div class="' + t.options.classPrefix + 'overlay-button" role="button" tabindex="0" ' + ('aria-label="' + _i18n2.default.t('mejs.play') + '" aria-pressed="false"></div>');
4856			bigPlay.addEventListener('click', function () {
4857				if (t.options.clickToPlayPause) {
4858
4859					var button = t.container.querySelector('.' + t.options.classPrefix + 'overlay-button'),
4860					    pressed = button.getAttribute('aria-pressed');
4861
4862					if (t.paused) {
4863						t.play();
4864					} else {
4865						t.pause();
4866					}
4867
4868					button.setAttribute('aria-pressed', !!pressed);
4869					t.container.focus();
4870				}
4871			});
4872
4873			bigPlay.addEventListener('keydown', function (e) {
4874				var keyPressed = e.keyCode || e.which || 0;
4875
4876				if (keyPressed === 13 || _constants.IS_FIREFOX && keyPressed === 32) {
4877					var event = (0, _general.createEvent)('click', bigPlay);
4878					bigPlay.dispatchEvent(event);
4879					return false;
4880				}
4881			});
4882
4883			layers.appendChild(bigPlay);
4884
4885			if (t.media.rendererName !== null && (/(youtube|facebook)/i.test(t.media.rendererName) && !(t.media.originalNode.getAttribute('poster') || player.options.poster || typeof t.media.renderer.getPosterUrl === 'function' && t.media.renderer.getPosterUrl()) || _constants.IS_STOCK_ANDROID || t.media.originalNode.getAttribute('autoplay'))) {
4886				bigPlay.style.display = 'none';
4887			}
4888
4889			var hasError = false;
4890
4891			media.addEventListener('play', function () {
4892				bigPlay.style.display = 'none';
4893				loading.style.display = 'none';
4894				error.style.display = 'none';
4895				hasError = false;
4896			});
4897			media.addEventListener('playing', function () {
4898				bigPlay.style.display = 'none';
4899				loading.style.display = 'none';
4900				error.style.display = 'none';
4901				hasError = false;
4902			});
4903			media.addEventListener('seeking', function () {
4904				bigPlay.style.display = 'none';
4905				loading.style.display = '';
4906				hasError = false;
4907			});
4908			media.addEventListener('seeked', function () {
4909				bigPlay.style.display = t.paused && !_constants.IS_STOCK_ANDROID ? '' : 'none';
4910				loading.style.display = 'none';
4911				hasError = false;
4912			});
4913			media.addEventListener('pause', function () {
4914				loading.style.display = 'none';
4915				if (!_constants.IS_STOCK_ANDROID && !hasError) {
4916					bigPlay.style.display = '';
4917				}
4918				hasError = false;
4919			});
4920			media.addEventListener('waiting', function () {
4921				loading.style.display = '';
4922				hasError = false;
4923			});
4924
4925			media.addEventListener('loadeddata', function () {
4926				loading.style.display = '';
4927
4928				if (_constants.IS_ANDROID) {
4929					media.canplayTimeout = setTimeout(function () {
4930						if (_document2.default.createEvent) {
4931							var evt = _document2.default.createEvent('HTMLEvents');
4932							evt.initEvent('canplay', true, true);
4933							return media.dispatchEvent(evt);
4934						}
4935					}, 300);
4936				}
4937				hasError = false;
4938			});
4939			media.addEventListener('canplay', function () {
4940				loading.style.display = 'none';
4941
4942				clearTimeout(media.canplayTimeout);
4943				hasError = false;
4944			});
4945
4946			media.addEventListener('error', function (e) {
4947				t._handleError(e, t.media, t.node);
4948				loading.style.display = 'none';
4949				bigPlay.style.display = 'none';
4950				hasError = true;
4951			});
4952
4953			media.addEventListener('loadedmetadata', function () {
4954				if (!t.controlsEnabled) {
4955					t.enableControls();
4956				}
4957			});
4958
4959			media.addEventListener('keydown', function (e) {
4960				t.onkeydown(player, media, e);
4961				hasError = false;
4962			});
4963		}
4964	}, {
4965		key: 'buildkeyboard',
4966		value: function buildkeyboard(player, controls, layers, media) {
4967
4968			var t = this;
4969
4970			t.container.addEventListener('keydown', function () {
4971				t.keyboardAction = true;
4972			});
4973
4974			t.globalKeydownCallback = function (event) {
4975				var container = _document2.default.activeElement.closest('.' + t.options.classPrefix + 'container'),
4976				    target = t.media.closest('.' + t.options.classPrefix + 'container');
4977				t.hasFocus = !!(container && target && container.id === target.id);
4978				return t.onkeydown(player, media, event);
4979			};
4980
4981			t.globalClickCallback = function (event) {
4982				t.hasFocus = !!event.target.closest('.' + t.options.classPrefix + 'container');
4983			};
4984
4985			t.globalBind('keydown', t.globalKeydownCallback);
4986
4987			t.globalBind('click', t.globalClickCallback);
4988		}
4989	}, {
4990		key: 'onkeydown',
4991		value: function onkeydown(player, media, e) {
4992
4993			if (player.hasFocus && player.options.enableKeyboard) {
4994				for (var i = 0, total = player.options.keyActions.length; i < total; i++) {
4995					var keyAction = player.options.keyActions[i];
4996
4997					for (var j = 0, jl = keyAction.keys.length; j < jl; j++) {
4998						if (e.keyCode === keyAction.keys[j]) {
4999							keyAction.action(player, media, e.keyCode, e);
5000							e.preventDefault();
5001							e.stopPropagation();
5002							return;
5003						}
5004					}
5005				}
5006			}
5007
5008			return true;
5009		}
5010	}, {
5011		key: 'play',
5012		value: function play() {
5013			this.proxy.play();
5014		}
5015	}, {
5016		key: 'pause',
5017		value: function pause() {
5018			this.proxy.pause();
5019		}
5020	}, {
5021		key: 'load',
5022		value: function load() {
5023			this.proxy.load();
5024		}
5025	}, {
5026		key: 'setCurrentTime',
5027		value: function setCurrentTime(time) {
5028			this.proxy.setCurrentTime(time);
5029		}
5030	}, {
5031		key: 'getCurrentTime',
5032		value: function getCurrentTime() {
5033			return this.proxy.currentTime;
5034		}
5035	}, {
5036		key: 'getDuration',
5037		value: function getDuration() {
5038			return this.proxy.duration;
5039		}
5040	}, {
5041		key: 'setVolume',
5042		value: function setVolume(volume) {
5043			this.proxy.volume = volume;
5044		}
5045	}, {
5046		key: 'getVolume',
5047		value: function getVolume() {
5048			return this.proxy.getVolume();
5049		}
5050	}, {
5051		key: 'setMuted',
5052		value: function setMuted(value) {
5053			this.proxy.setMuted(value);
5054		}
5055	}, {
5056		key: 'setSrc',
5057		value: function setSrc(src) {
5058			if (!this.controlsEnabled) {
5059				this.enableControls();
5060			}
5061			this.proxy.setSrc(src);
5062		}
5063	}, {
5064		key: 'getSrc',
5065		value: function getSrc() {
5066			return this.proxy.getSrc();
5067		}
5068	}, {
5069		key: 'canPlayType',
5070		value: function canPlayType(type) {
5071			return this.proxy.canPlayType(type);
5072		}
5073	}, {
5074		key: 'remove',
5075		value: function remove() {
5076			var t = this,
5077			    rendererName = t.media.rendererName,
5078			    src = t.media.originalNode.src;
5079
5080			for (var featureIndex in t.options.features) {
5081				var feature = t.options.features[featureIndex];
5082				if (t['clean' + feature]) {
5083					try {
5084						t['clean' + feature](t, t.layers, t.controls, t.media);
5085					} catch (e) {
5086						console.error('error cleaning ' + feature, e);
5087					}
5088				}
5089			}
5090
5091			var nativeWidth = t.node.getAttribute('width'),
5092			    nativeHeight = t.node.getAttribute('height');
5093
5094			if (nativeWidth) {
5095				if (nativeWidth.indexOf('%') === -1) {
5096					nativeWidth = nativeWidth + 'px';
5097				}
5098			} else {
5099				nativeWidth = 'auto';
5100			}
5101
5102			if (nativeHeight) {
5103				if (nativeHeight.indexOf('%') === -1) {
5104					nativeHeight = nativeHeight + 'px';
5105				}
5106			} else {
5107				nativeHeight = 'auto';
5108			}
5109
5110			t.node.style.width = nativeWidth;
5111			t.node.style.height = nativeHeight;
5112
5113			t.setPlayerSize(0, 0);
5114
5115			if (!t.isDynamic) {
5116				(function () {
5117					t.node.setAttribute('controls', true);
5118					t.node.setAttribute('id', t.node.getAttribute('id').replace('_' + rendererName, '').replace('_from_mejs', ''));
5119					var poster = t.container.querySelector('.' + t.options.classPrefix + 'poster>img');
5120					if (poster) {
5121						t.node.setAttribute('poster', poster.src);
5122					}
5123
5124					delete t.node.autoplay;
5125
5126					if (t.media.canPlayType((0, _media.getTypeFromFile)(src)) !== '') {
5127						t.node.setAttribute('src', src);
5128					}
5129
5130					if (~rendererName.indexOf('iframe')) {
5131						var layer = _document2.default.getElementById(t.media.id + '-iframe-overlay');
5132						layer.remove();
5133					}
5134
5135					var node = t.node.cloneNode();
5136					node.style.display = '';
5137					t.container.parentNode.insertBefore(node, t.container);
5138					t.node.remove();
5139
5140					if (t.mediaFiles) {
5141						for (var i = 0, total = t.mediaFiles.length; i < total; i++) {
5142							var source = _document2.default.createElement('source');
5143							source.setAttribute('src', t.mediaFiles[i].src);
5144							source.setAttribute('type', t.mediaFiles[i].type);
5145							node.appendChild(source);
5146						}
5147					}
5148					if (t.trackFiles) {
5149						var _loop3 = function _loop3(_i4, _total4) {
5150							var track = t.trackFiles[_i4];
5151							var newTrack = _document2.default.createElement('track');
5152							newTrack.kind = track.kind;
5153							newTrack.label = track.label;
5154							newTrack.srclang = track.srclang;
5155							newTrack.src = track.src;
5156
5157							node.appendChild(newTrack);
5158							newTrack.addEventListener('load', function () {
5159								this.mode = 'showing';
5160								node.textTracks[_i4].mode = 'showing';
5161							});
5162						};
5163
5164						for (var _i4 = 0, _total4 = t.trackFiles.length; _i4 < _total4; _i4++) {
5165							_loop3(_i4, _total4);
5166						}
5167					}
5168
5169					delete t.node;
5170					delete t.mediaFiles;
5171					delete t.trackFiles;
5172				})();
5173			} else {
5174				t.container.parentNode.insertBefore(t.node, t.container);
5175			}
5176
5177			if (typeof t.media.renderer.destroy === 'function') {
5178				t.media.renderer.destroy();
5179			}
5180
5181			delete _mejs2.default.players[t.id];
5182
5183			if (_typeof(t.container) === 'object') {
5184				var offscreen = t.container.parentNode.querySelector('.' + t.options.classPrefix + 'offscreen');
5185				offscreen.remove();
5186				t.container.remove();
5187			}
5188			t.globalUnbind('resize', t.globalResizeCallback);
5189			t.globalUnbind('keydown', t.globalKeydownCallback);
5190			t.globalUnbind('click', t.globalClickCallback);
5191
5192			delete t.media.player;
5193		}
5194	}, {
5195		key: 'paused',
5196		get: function get() {
5197			return this.proxy.paused;
5198		}
5199	}, {
5200		key: 'muted',
5201		get: function get() {
5202			return this.proxy.muted;
5203		},
5204		set: function set(muted) {
5205			this.setMuted(muted);
5206		}
5207	}, {
5208		key: 'ended',
5209		get: function get() {
5210			return this.proxy.ended;
5211		}
5212	}, {
5213		key: 'readyState',
5214		get: function get() {
5215			return this.proxy.readyState;
5216		}
5217	}, {
5218		key: 'currentTime',
5219		set: function set(time) {
5220			this.setCurrentTime(time);
5221		},
5222		get: function get() {
5223			return this.getCurrentTime();
5224		}
5225	}, {
5226		key: 'duration',
5227		get: function get() {
5228			return this.getDuration();
5229		}
5230	}, {
5231		key: 'volume',
5232		set: function set(volume) {
5233			this.setVolume(volume);
5234		},
5235		get: function get() {
5236			return this.getVolume();
5237		}
5238	}, {
5239		key: 'src',
5240		set: function set(src) {
5241			this.setSrc(src);
5242		},
5243		get: function get() {
vendor: 10,189 bytes, lines 5244-5625
5244			return this.getSrc();
5245		}
5246	}]);
5247
5248	return MediaElementPlayer;
5249}();
5250
5251_window2.default.MediaElementPlayer = MediaElementPlayer;
5252_mejs2.default.MediaElementPlayer = MediaElementPlayer;
5253
5254exports.default = MediaElementPlayer;
5255
5256},{"17":17,"2":2,"25":25,"26":26,"27":27,"28":28,"3":3,"30":30,"5":5,"6":6,"7":7}],17:[function(_dereq_,module,exports){
5257'use strict';
5258
5259Object.defineProperty(exports, "__esModule", {
5260	value: true
5261});
5262
5263var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
5264
5265var _window = _dereq_(3);
5266
5267var _window2 = _interopRequireDefault(_window);
5268
5269function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5270
5271function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
5272
5273var DefaultPlayer = function () {
5274	function DefaultPlayer(player) {
5275		_classCallCheck(this, DefaultPlayer);
5276
5277		this.media = player.media;
5278		this.isVideo = player.isVideo;
5279		this.classPrefix = player.options.classPrefix;
5280		this.createIframeLayer = function () {
5281			return player.createIframeLayer();
5282		};
5283		this.setPoster = function (url) {
5284			return player.setPoster(url);
5285		};
5286		return this;
5287	}
5288
5289	_createClass(DefaultPlayer, [{
5290		key: 'play',
5291		value: function play() {
5292			this.media.play();
5293		}
5294	}, {
5295		key: 'pause',
5296		value: function pause() {
5297			this.media.pause();
5298		}
5299	}, {
5300		key: 'load',
5301		value: function load() {
5302			var t = this;
5303
5304			if (!t.isLoaded) {
5305				t.media.load();
5306			}
5307
5308			t.isLoaded = true;
5309		}
5310	}, {
5311		key: 'setCurrentTime',
5312		value: function setCurrentTime(time) {
5313			this.media.setCurrentTime(time);
5314		}
5315	}, {
5316		key: 'getCurrentTime',
5317		value: function getCurrentTime() {
5318			return this.media.currentTime;
5319		}
5320	}, {
5321		key: 'getDuration',
5322		value: function getDuration() {
5323			return this.media.getDuration();
5324		}
5325	}, {
5326		key: 'setVolume',
5327		value: function setVolume(volume) {
5328			this.media.setVolume(volume);
5329		}
5330	}, {
5331		key: 'getVolume',
5332		value: function getVolume() {
5333			return this.media.getVolume();
5334		}
5335	}, {
5336		key: 'setMuted',
5337		value: function setMuted(value) {
5338			this.media.setMuted(value);
5339		}
5340	}, {
5341		key: 'setSrc',
5342		value: function setSrc(src) {
5343			var t = this,
5344			    layer = document.getElementById(t.media.id + '-iframe-overlay');
5345
5346			if (layer) {
5347				layer.remove();
5348			}
5349
5350			t.media.setSrc(src);
5351			t.createIframeLayer();
5352			if (t.media.renderer !== null && typeof t.media.renderer.getPosterUrl === 'function') {
5353				t.setPoster(t.media.renderer.getPosterUrl());
5354			}
5355		}
5356	}, {
5357		key: 'getSrc',
5358		value: function getSrc() {
5359			return this.media.getSrc();
5360		}
5361	}, {
5362		key: 'canPlayType',
5363		value: function canPlayType(type) {
5364			return this.media.canPlayType(type);
5365		}
5366	}, {
5367		key: 'paused',
5368		get: function get() {
5369			return this.media.paused;
5370		}
5371	}, {
5372		key: 'muted',
5373		set: function set(muted) {
5374			this.setMuted(muted);
5375		},
5376		get: function get() {
5377			return this.media.muted;
5378		}
5379	}, {
5380		key: 'ended',
5381		get: function get() {
5382			return this.media.ended;
5383		}
5384	}, {
5385		key: 'readyState',
5386		get: function get() {
5387			return this.media.readyState;
5388		}
5389	}, {
5390		key: 'currentTime',
5391		set: function set(time) {
5392			this.setCurrentTime(time);
5393		},
5394		get: function get() {
5395			return this.getCurrentTime();
5396		}
5397	}, {
5398		key: 'duration',
5399		get: function get() {
5400			return this.getDuration();
5401		}
5402	}, {
5403		key: 'volume',
5404		set: function set(volume) {
5405			this.setVolume(volume);
5406		},
5407		get: function get() {
5408			return this.getVolume();
5409		}
5410	}, {
5411		key: 'src',
5412		set: function set(src) {
5413			this.setSrc(src);
5414		},
5415		get: function get() {
5416			return this.getSrc();
5417		}
5418	}]);
5419
5420	return DefaultPlayer;
5421}();
5422
5423exports.default = DefaultPlayer;
5424
5425
5426_window2.default.DefaultPlayer = DefaultPlayer;
5427
5428},{"3":3}],18:[function(_dereq_,module,exports){
5429'use strict';
5430
5431var _window = _dereq_(3);
5432
5433var _window2 = _interopRequireDefault(_window);
5434
5435var _mejs = _dereq_(7);
5436
5437var _mejs2 = _interopRequireDefault(_mejs);
5438
5439var _player = _dereq_(16);
5440
5441var _player2 = _interopRequireDefault(_player);
5442
5443function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5444
5445if (typeof jQuery !== 'undefined') {
5446	_mejs2.default.$ = _window2.default.jQuery = _window2.default.$ = jQuery;
5447} else if (typeof Zepto !== 'undefined') {
5448	_mejs2.default.$ = _window2.default.Zepto = _window2.default.$ = Zepto;
5449} else if (typeof ender !== 'undefined') {
5450	_mejs2.default.$ = _window2.default.ender = _window2.default.$ = ender;
5451}
5452
5453(function ($) {
5454	if (typeof $ !== 'undefined') {
5455		$.fn.mediaelementplayer = function (options) {
5456			if (options === false) {
5457				this.each(function () {
5458					var player = $(this).data('mediaelementplayer');
5459					if (player) {
5460						player.remove();
5461					}
5462					$(this).removeData('mediaelementplayer');
5463				});
5464			} else {
5465				this.each(function () {
5466					$(this).data('mediaelementplayer', new _player2.default(this, options));
5467				});
5468			}
5469			return this;
5470		};
5471
5472		$(document).ready(function () {
5473			$('.' + _mejs2.default.MepDefaults.classPrefix + 'player').mediaelementplayer();
5474		});
5475	}
5476})(_mejs2.default.$);
5477
5478},{"16":16,"3":3,"7":7}],19:[function(_dereq_,module,exports){
5479'use strict';
5480
5481var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
5482
5483var _window = _dereq_(3);
5484
5485var _window2 = _interopRequireDefault(_window);
5486
5487var _mejs = _dereq_(7);
5488
5489var _mejs2 = _interopRequireDefault(_mejs);
5490
5491var _renderer = _dereq_(8);
5492
5493var _general = _dereq_(27);
5494
5495var _media = _dereq_(28);
5496
5497var _constants = _dereq_(25);
5498
5499var _dom = _dereq_(26);
5500
5501function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5502
5503var NativeDash = {
5504
5505	promise: null,
5506
5507	load: function load(settings) {
5508		if (typeof dashjs !== 'undefined') {
5509			NativeDash.promise = new Promise(function (resolve) {
5510				resolve();
5511			}).then(function () {
5512				NativeDash._createPlayer(settings);
5513			});
5514		} else {
5515			settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.dashjs.org/latest/dash.all.min.js';
5516
5517			NativeDash.promise = NativeDash.promise || (0, _dom.loadScript)(settings.options.path);
5518			NativeDash.promise.then(function () {
5519				NativeDash._createPlayer(settings);
5520			});
5521		}
5522
5523		return NativeDash.promise;
5524	},
5525
5526	_createPlayer: function _createPlayer(settings) {
5527		var player = dashjs.MediaPlayer().create();
5528		_window2.default['__ready__' + settings.id](player);
5529		return player;
5530	}
5531};
5532
5533var DashNativeRenderer = {
5534	name: 'native_dash',
5535	options: {
5536		prefix: 'native_dash',
5537		dash: {
5538			path: 'https://cdn.dashjs.org/latest/dash.all.min.js',
5539			debug: false,
5540			drm: {},
5541
5542			robustnessLevel: ''
5543		}
5544	},
5545
5546	canPlayType: function canPlayType(type) {
5547		return _constants.HAS_MSE && ['application/dash+xml'].indexOf(type.toLowerCase()) > -1;
5548	},
5549
5550	create: function create(mediaElement, options, mediaFiles) {
5551
5552		var originalNode = mediaElement.originalNode,
5553		    id = mediaElement.id + '_' + options.prefix,
5554		    autoplay = originalNode.autoplay,
5555		    children = originalNode.children;
5556
5557		var node = null,
5558		    dashPlayer = null;
5559
5560		originalNode.removeAttribute('type');
5561		for (var i = 0, total = children.length; i < total; i++) {
5562			children[i].removeAttribute('type');
5563		}
5564
5565		node = originalNode.cloneNode(true);
5566		options = Object.assign(options, mediaElement.options);
5567
5568		var props = _mejs2.default.html5media.properties,
5569		    events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']),
5570		    attachNativeEvents = function attachNativeEvents(e) {
5571			if (e.type !== 'error') {
5572				var _event = (0, _general.createEvent)(e.type, mediaElement);
5573				mediaElement.dispatchEvent(_event);
5574			}
5575		},
5576		    assignGettersSetters = function assignGettersSetters(propName) {
5577			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
5578
5579			node['get' + capName] = function () {
5580				return dashPlayer !== null ? node[propName] : null;
5581			};
5582
5583			node['set' + capName] = function (value) {
5584				if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
5585					if (propName === 'src') {
5586						var source = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value;
5587						node[propName] = source;
5588						if (dashPlayer !== null) {
5589							dashPlayer.reset();
5590							for (var _i = 0, _total = events.length; _i < _total; _i++) {
5591								node.removeEventListener(events[_i], attachNativeEvents);
5592							}
5593							dashPlayer = NativeDash._createPlayer({
5594								options: options.dash,
5595								id: id
5596							});
5597
5598							if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && _typeof(value.drm) === 'object') {
5599								dashPlayer.setProtectionData(value.drm);
5600								if ((0, _general.isString)(options.dash.robustnessLevel) && options.dash.robustnessLevel) {
5601									dashPlayer.getProtectionController().setRobustnessLevel(options.dash.robustnessLevel);
5602								}
5603							}
5604							dashPlayer.attachSource(source);
5605							if (autoplay) {
5606								dashPlayer.play();
5607							}
5608						}
5609					} else {
5610						node[propName] = value;
5611					}
5612				}
5613			};
5614		};
5615
5616		for (var _i2 = 0, _total2 = props.length; _i2 < _total2; _i2++) {
5617			assignGettersSetters(props[_i2]);
5618		}
5619
5620		_window2.default['__ready__' + id] = function (_dashPlayer) {
5621			mediaElement.dashPlayer = dashPlayer = _dashPlayer;
5622
5623			var dashEvents = dashjs.MediaPlayer.events,
5624			    assignEvents = function assignEvents(eventName) {
5625				if (eventName === 'loadedmetadata') {
5626					dashPlayer.getDebug().setLogToBrowserConsole(options.dash.debug);
5627					dashPlayer.initialize();
5628					dashPlayer.setScheduleWhilePaused(false);
5629					dashPlayer.setFastSwitchEnabled(true);
5630					dashPlayer.attachView(node);
5631					dashPlayer.setAutoPlay(false);
5632
5633					if (_typeof(options.dash.drm) === 'object' && !_mejs2.default.Utils.isObjectEmpty(options.dash.drm)) {
5634						dashPlayer.setProtectionData(options.dash.drm);
5635						if ((0, _general.isString)(options.dash.robustnessLevel) && options.dash.robustnessLevel) {
5636							dashPlayer.getProtectionController().setRobustnessLevel(options.dash.robustnessLevel);
5637						}
5638					}
5639					dashPlayer.attachSource(node.getSrc());
5640				}
5641
5642				node.addEventListener(eventName, attachNativeEvents);
5643			};
5644
5645			for (var _i3 = 0, _total3 = events.length; _i3 < _total3; _i3++) {
5646				assignEvents(events[_i3]);
5647			}
5648
5649			var assignMdashEvents = function assignMdashEvents(name, data) {
5650				if (name.toLowerCase() === 'error') {
5651					mediaElement.generateError(data.message, node.src);
5652					console.error(data);
5653				} else {
5654					var _event2 = (0, _general.createEvent)(name, mediaElement);
5655					_event2.data = data;
5656					mediaElement.dispatchEvent(_event2);
5657				}
5658			};
5659
5660			for (var eventType in dashEvents) {
5661				if (dashEvents.hasOwnProperty(eventType)) {
5662					dashPlayer.on(dashEvents[eventType], function (e) {
5663						for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
5664							args[_key - 1] = arguments[_key];
5665						}
5666
5667						return assignMdashEvents(e.type, args);
5668					});
5669				}
5670			}
5671		};
5672
5673		if (mediaFiles && mediaFiles.length > 0) {
5674			for (var _i4 = 0, _total4 = mediaFiles.length; _i4 < _total4; _i4++) {
5675				if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i4].type)) {
5676					node.setAttribute('src', mediaFiles[_i4].src);
5677					if (typeof mediaFiles[_i4].drm !== 'undefined') {
5678						options.dash.drm = mediaFiles[_i4].drm;
5679					}
5680					break;
5681				}
5682			}
5683		}
5684
5685		node.setAttribute('id', id);
5686
5687		originalNode.parentNode.insertBefore(node, originalNode);
5688		originalNode.autoplay = false;
5689		originalNode.style.display = 'none';
5690
5691		node.setSize = function (width, height) {
5692			node.style.width = width + 'px';
5693			node.style.height = height + 'px';
5694			return node;
5695		};
5696
5697		node.hide = function () {
5698			node.pause();
5699			node.style.display = 'none';
5700			return node;
5701		};
5702
5703		node.show = function () {
5704			node.style.display = '';
5705			return node;
5706		};
5707
5708		node.destroy = function () {
5709			if (dashPlayer !== null) {
5710				dashPlayer.reset();
5711			}
5712		};
5713
5714		var event = (0, _general.createEvent)('rendererready', node);
5715		mediaElement.dispatchEvent(event);
5716
5717		mediaElement.promises.push(NativeDash.load({
5718			options: options.dash,
5719			id: id
5720		}));
5721
5722		return node;
5723	}
5724};
5725
5726_media.typeChecks.push(function (url) {
5727	return ~url.toLowerCase().indexOf('.mpd') ? 'application/dash+xml' : null;
5728});
5729
5730_renderer.renderer.add(DashNativeRenderer);
5731
5732},{"25":25,"26":26,"27":27,"28":28,"3":3,"7":7,"8":8}],20:[function(_dereq_,module,exports){
5733'use strict';
5734
5735Object.defineProperty(exports, "__esModule", {
5736	value: true
5737});
5738exports.PluginDetector = undefined;
5739
5740var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
5741
5742var _window = _dereq_(3);
5743
5744var _window2 = _interopRequireDefault(_window);
5745
5746var _document = _dereq_(2);
5747
5748var _document2 = _interopRequireDefault(_document);
5749
5750var _mejs = _dereq_(7);
5751
5752var _mejs2 = _interopRequireDefault(_mejs);
5753
5754var _i18n = _dereq_(5);
5755
5756var _i18n2 = _interopRequireDefault(_i18n);
5757
5758var _renderer = _dereq_(8);
5759
5760var _general = _dereq_(27);
5761
5762var _constants = _dereq_(25);
5763
5764var _media = _dereq_(28);
5765
5766function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5767
5768var PluginDetector = exports.PluginDetector = {
5769	plugins: [],
5770
5771	hasPluginVersion: function hasPluginVersion(plugin, v) {
5772		var pv = PluginDetector.plugins[plugin];
5773		v[1] = v[1] || 0;
5774		v[2] = v[2] || 0;
5775		return pv[0] > v[0] || pv[0] === v[0] && pv[1] > v[1] || pv[0] === v[0] && pv[1] === v[1] && pv[2] >= v[2];
5776	},
5777
5778	addPlugin: function addPlugin(p, pluginName, mimeType, activeX, axDetect) {
5779		PluginDetector.plugins[p] = PluginDetector.detectPlugin(pluginName, mimeType, activeX, axDetect);
5780	},
5781
5782	detectPlugin: function detectPlugin(pluginName, mimeType, activeX, axDetect) {
5783
5784		var version = [0, 0, 0],
5785		    description = void 0,
5786		    ax = void 0;
5787
5788		if (_constants.NAV.plugins !== null && _constants.NAV.plugins !== undefined && _typeof(_constants.NAV.plugins[pluginName]) === 'object') {
5789			description = _constants.NAV.plugins[pluginName].description;
5790			if (description && !(typeof _constants.NAV.mimeTypes !== 'undefined' && _constants.NAV.mimeTypes[mimeType] && !_constants.NAV.mimeTypes[mimeType].enabledPlugin)) {
5791				version = description.replace(pluginName, '').replace(/^\s+/, '').replace(/\sr/gi, '.').split('.');
5792				for (var i = 0, total = version.length; i < total; i++) {
5793					version[i] = parseInt(version[i].match(/\d+/), 10);
5794				}
5795			}
5796		} else if (_window2.default.ActiveXObject !== undefined) {
5797			try {
5798				ax = new ActiveXObject(activeX);
5799				if (ax) {
5800					version = axDetect(ax);
5801				}
5802			} catch (e) {
5803				
5804			}
5805		}
5806		return version;
5807	}
5808};
5809
5810PluginDetector.addPlugin('flash', 'Shockwave Flash', 'application/x-shockwave-flash', 'ShockwaveFlash.ShockwaveFlash', function (ax) {
5811	var version = [],
5812	    d = ax.GetVariable("$version");
5813
5814	if (d) {
5815		d = d.split(" ")[1].split(",");
5816		version = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
5817	}
5818	return version;
5819});
5820
5821var FlashMediaElementRenderer = {
5822	create: function create(mediaElement, options, mediaFiles) {
5823
5824		var flash = {};
5825		var isActive = false;
5826
5827		flash.options = options;
5828		flash.id = mediaElement.id + '_' + flash.options.prefix;
5829		flash.mediaElement = mediaElement;
5830		flash.flashState = {};
5831		flash.flashApi = null;
5832		flash.flashApiStack = [];
5833
5834		var props = _mejs2.default.html5media.properties,
5835		    assignGettersSetters = function assignGettersSetters(propName) {
5836			flash.flashState[propName] = null;
5837
5838			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
5839
5840			flash['get' + capName] = function () {
5841				if (flash.flashApi !== null) {
5842					if (typeof flash.flashApi['get_' + propName] === 'function') {
5843						var value = flash.flashApi['get_' + propName]();
5844
5845						if (propName === 'buffered') {
5846							return {
5847								start: function start() {
5848									return 0;
5849								},
5850								end: function end() {
5851									return value;
5852								},
5853								length: 1
5854							};
5855						}
5856						return value;
5857					} else {
5858						return null;
5859					}
5860				} else {
5861					return null;
5862				}
5863			};
5864
5865			flash['set' + capName] = function (value) {
5866				if (propName === 'src') {
5867					value = (0, _media.absolutizeUrl)(value);
5868				}
5869
5870				if (flash.flashApi !== null && flash.flashApi['set_' + propName] !== undefined) {
5871					try {
5872						flash.flashApi['set_' + propName](value);
5873					} catch (e) {
5874						
5875					}
5876				} else {
5877					flash.flashApiStack.push({
5878						type: 'set',
5879						propName: propName,
5880						value: value
5881					});
5882				}
5883			};
5884		};
5885
5886		for (var i = 0, total = props.length; i < total; i++) {
5887			assignGettersSetters(props[i]);
5888		}
5889
5890		var methods = _mejs2.default.html5media.methods,
5891		    assignMethods = function assignMethods(methodName) {
5892			flash[methodName] = function () {
5893				if (isActive) {
5894					if (flash.flashApi !== null) {
5895						if (flash.flashApi['fire_' + methodName]) {
5896							try {
5897								flash.flashApi['fire_' + methodName]();
5898							} catch (e) {
5899								
5900							}
5901						} else {
5902							
5903						}
5904					} else {
5905						flash.flashApiStack.push({
5906							type: 'call',
5907							methodName: methodName
5908						});
5909					}
5910				}
5911			};
5912		};
5913		methods.push('stop');
5914		for (var _i = 0, _total = methods.length; _i < _total; _i++) {
5915			assignMethods(methods[_i]);
5916		}
5917
5918		var initEvents = ['rendererready'];
5919
5920		for (var _i2 = 0, _total2 = initEvents.length; _i2 < _total2; _i2++) {
5921			var event = (0, _general.createEvent)(initEvents[_i2], flash);
5922			mediaElement.dispatchEvent(event);
5923		}
5924
5925		_window2.default['__ready__' + flash.id] = function () {
5926
5927			flash.flashReady = true;
5928			flash.flashApi = _document2.default.getElementById('__' + flash.id);
5929
5930			if (flash.flashApiStack.length) {
5931				for (var _i3 = 0, _total3 = flash.flashApiStack.length; _i3 < _total3; _i3++) {
5932					var stackItem = flash.flashApiStack[_i3];
5933
5934					if (stackItem.type === 'set') {
5935						var propName = stackItem.propName,
5936						    capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
5937
5938						flash['set' + capName](stackItem.value);
5939					} else if (stackItem.type === 'call') {
5940						flash[stackItem.methodName]();
5941					}
5942				}
5943			}
5944		};
5945
5946		_window2.default['__event__' + flash.id] = function (eventName, message) {
5947			var event = (0, _general.createEvent)(eventName, flash);
5948			if (message) {
5949				try {
5950					event.data = JSON.parse(message);
5951					event.details.data = JSON.parse(message);
5952				} catch (e) {
5953					event.message = message;
5954				}
5955			}
5956
5957			flash.mediaElement.dispatchEvent(event);
5958		};
5959
5960		flash.flashWrapper = _document2.default.createElement('div');
5961
5962		if (['always', 'sameDomain'].indexOf(flash.options.shimScriptAccess) === -1) {
5963			flash.options.shimScriptAccess = 'sameDomain';
5964		}
5965
5966		var autoplay = mediaElement.originalNode.autoplay,
5967		    flashVars = ['uid=' + flash.id, 'autoplay=' + autoplay, 'allowScriptAccess=' + flash.options.shimScriptAccess, 'preload=' + (mediaElement.originalNode.getAttribute('preload') || '')],
5968		    isVideo = mediaElement.originalNode !== null && mediaElement.originalNode.tagName.toLowerCase() === 'video',
5969		    flashHeight = isVideo ? mediaElement.originalNode.height : 1,
5970		    flashWidth = isVideo ? mediaElement.originalNode.width : 1;
5971
5972		if (mediaElement.originalNode.getAttribute('src')) {
5973			flashVars.push('src=' + mediaElement.originalNode.getAttribute('src'));
5974		}
5975
5976		if (flash.options.enablePseudoStreaming === true) {
5977			flashVars.push('pseudostreamstart=' + flash.options.pseudoStreamingStartQueryParam);
5978			flashVars.push('pseudostreamtype=' + flash.options.pseudoStreamingType);
5979		}
5980
5981		mediaElement.appendChild(flash.flashWrapper);
5982		mediaElement.originalNode.style.display = 'none';
5983
5984		var settings = [];
5985
5986		if (_constants.IS_IE || _constants.IS_EDGE) {
5987			var specialIEContainer = _document2.default.createElement('div');
5988			flash.flashWrapper.appendChild(specialIEContainer);
5989
5990			if (_constants.IS_EDGE) {
5991				settings = ['type="application/x-shockwave-flash"', 'data="' + flash.options.pluginPath + flash.options.filename + '"', 'id="__' + flash.id + '"', 'width="' + flashWidth + '"', 'height="' + flashHeight + '"'];
5992			} else {
5993				settings = ['classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"', 'codebase="http://download.macromedia.com/pub/s
5993hockwave/cabs/flash/swflash.cab"', 'id="__' + flash.id + '"', 'width="' + flashWidth + '"', 'height="' + flashHeight + '"'];
5994			}
5995
5996			if (!isVideo) {
5997				settings.push('style="clip: rect(0 0 0 0); position: absolute;"');
5998			}
5999
6000			specialIEContainer.outerHTML = '<object ' + settings.join(' ') + '>' + ('<param name="movie" value="' + flash.options.pluginPath + flash.options.filename + '?x=' + new Date() + '" />') + ('<param name="flashvars" value="' + flashVars.join('&amp;') + '" />') + '<param name="quality" value="high" />' + '<param name="bgcolor" value="#000000" />' + '<param name="wmode" value="transparent" />' + ('<param name="allowScriptAccess" value="' + flash.options.shimScriptAccess + '" />') + '<param name="allowFullScreen" value="true" />' + ('<div>' + _i18n2.default.t('mejs.install-flash') + '</div>') + '</object>';
6001		} else {
6002
6003			settings = ['id="__' + flash.id + '"', 'name="__' + flash.id + '"', 'play="true"', 'loop="false"', 'quality="high"', 'bgcolor="#000000"', 'wmode="transparent"', 'allowScriptAccess="' + flash.options.shimScriptAccess + '"', 'allowFullScreen="true"', 'type="application/x-shockwave-flash"', 'pluginspage="http://www.macromedia.com/go/getflashplayer"', 'src="' + flash.options.pluginPath + flash.options.filename + '"', 'flashvars="' + flashVars.join('&') + '"'];
6004
6005			if (isVideo) {
6006				settings.push('width="${flashWidth}"');
6007				settings.push('height="${flashHeight}"');
6008			} else {
6009				settings.push('style="position: fixed; left: -9999em; top: -9999em;"');
6010			}
6011
6012			flash.flashWrapper.innerHTML = '<embed ' + settings.join(' ') + '>';
6013		}
6014
6015		flash.flashNode = flash.flashWrapper.lastChild;
6016
6017		flash.hide = function () {
6018			isActive = false;
6019			if (isVideo) {
6020				flash.flashNode.style.display = 'none';
6021			}
6022		};
6023		flash.show = function () {
6024			isActive = true;
6025			if (isVideo) {
6026				flash.flashNode.style.display = '';
6027			}
6028		};
6029		flash.setSize = function (width, height) {
6030			flash.flashNode.style.width = width + 'px';
6031			flash.flashNode.style.height = height + 'px';
6032
6033			if (flash.flashApi !== null && typeof flash.flashApi.fire_setSize === 'function') {
6034				flash.flashApi.fire_setSize(width, height);
6035			}
6036		};
6037
6038		flash.destroy = function () {
6039			flash.flashNode.remove();
6040		};
6041
6042		if (mediaFiles && mediaFiles.length > 0) {
6043			for (var _i4 = 0, _total4 = mediaFiles.length; _i4 < _total4; _i4++) {
6044				if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i4].type)) {
6045					flash.setSrc(mediaFiles[_i4].src);
6046					break;
6047				}
6048			}
6049		}
6050
6051		return flash;
6052	}
6053};
6054
6055var hasFlash = PluginDetector.hasPluginVersion('flash', [10, 0, 0]);
6056
6057if (hasFlash) {
6058	_media.typeChecks.push(function (url) {
6059		url = url.toLowerCase();
6060
6061		if (url.startsWith('rtmp')) {
6062			if (~url.indexOf('.mp3')) {
6063				return 'audio/rtmp';
6064			} else {
6065				return 'video/rtmp';
6066			}
6067		} else if (/\.og(a|g)/i.test(url)) {
6068			return 'audio/ogg';
6069		} else if (~url.indexOf('.m3u8')) {
6070			return 'application/x-mpegURL';
6071		} else if (~url.indexOf('.mpd')) {
6072			return 'application/dash+xml';
6073		} else if (~url.indexOf('.flv')) {
6074			return 'video/flv';
6075		} else {
6076			return null;
6077		}
6078	});
6079
6080	var FlashMediaElementVideoRenderer = {
6081		name: 'flash_video',
6082		options: {
6083			prefix: 'flash_video',
6084			filename: 'mediaelement-flash-video.swf',
6085			enablePseudoStreaming: false,
6086
6087			pseudoStreamingStartQueryParam: 'start',
6088
6089			pseudoStreamingType: 'byte'
6090		},
6091
6092		canPlayType: function canPlayType(type) {
6093			return ~['video/mp4', 'video/rtmp', 'audio/rtmp', 'rtmp/mp4', 'audio/mp4', 'video/flv', 'video/x-flv'].indexOf(type.toLowerCase());
6094		},
6095
6096		create: FlashMediaElementRenderer.create
6097
6098	};
6099	_renderer.renderer.add(FlashMediaElementVideoRenderer);
6100
6101	var FlashMediaElementHlsVideoRenderer = {
6102		name: 'flash_hls',
6103		options: {
6104			prefix: 'flash_hls',
6105			filename: 'mediaelement-flash-video-hls.swf'
6106		},
6107
6108		canPlayType: function canPlayType(type) {
6109			return ~['application/x-mpegurl', 'application/vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase());
6110		},
6111
6112		create: FlashMediaElementRenderer.create
6113	};
6114	_renderer.renderer.add(FlashMediaElementHlsVideoRenderer);
6115
6116	var FlashMediaElementMdashVideoRenderer = {
6117		name: 'flash_dash',
6118		options: {
6119			prefix: 'flash_dash',
6120			filename: 'mediaelement-flash-video-mdash.swf'
6121		},
6122
6123		canPlayType: function canPlayType(type) {
6124			return ~['application/dash+xml'].indexOf(type.toLowerCase());
6125		},
6126
6127		create: FlashMediaElementRenderer.create
6128	};
6129	_renderer.renderer.add(FlashMediaElementMdashVideoRenderer);
6130
6131	var FlashMediaElementAudioRenderer = {
6132		name: 'flash_audio',
6133		options: {
6134			prefix: 'flash_audio',
6135			filename: 'mediaelement-flash-audio.swf'
6136		},
6137
6138		canPlayType: function canPlayType(type) {
6139			return ~['audio/mp3'].indexOf(type.toLowerCase());
6140		},
6141
6142		create: FlashMediaElementRenderer.create
6143	};
6144	_renderer.renderer.add(FlashMediaElementAudioRenderer);
6145
6146	var FlashMediaElementAudioOggRenderer = {
6147		name: 'flash_audio_ogg',
6148		options: {
6149			prefix: 'flash_audio_ogg',
6150			filename: 'mediaelement-flash-audio-ogg.swf'
6151		},
6152
6153		canPlayType: function canPlayType(type) {
6154			return ~['audio/ogg', 'audio/oga', 'audio/ogv'].indexOf(type.toLowerCase());
6155		},
6156
6157		create: FlashMediaElementRenderer.create
6158	};
6159	_renderer.renderer.add(FlashMediaElementAudioOggRenderer);
6160}
6161
6162},{"2":2,"25":25,"27":27,"28":28,"3":3,"5":5,"7":7,"8":8}],21:[function(_dereq_,module,exports){
6163'use strict';
6164
6165var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
6166
6167var _window = _dereq_(3);
6168
6169var _window2 = _interopRequireDefault(_window);
6170
6171var _mejs = _dereq_(7);
6172
6173var _mejs2 = _interopRequireDefault(_mejs);
6174
6175var _renderer = _dereq_(8);
6176
6177var _general = _dereq_(27);
6178
6179var _constants = _dereq_(25);
6180
6181var _media = _dereq_(28);
6182
6183var _dom = _dereq_(26);
6184
6185function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6186
6187var NativeFlv = {
6188
6189	promise: null,
6190
6191	load: function load(settings) {
6192		if (typeof flvjs !== 'undefined') {
6193			NativeFlv.promise = new Promise(function (resolve) {
6194				resolve();
6195			}).then(function () {
6196				NativeFlv._createPlayer(settings);
6197			});
6198		} else {
6199			settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdnjs.cloudflare.com/ajax/libs/flv.js/1.3.3/flv.min.js';
6200
6201			NativeFlv.promise = NativeFlv.promise || (0, _dom.loadScript)(settings.options.path);
6202			NativeFlv.promise.then(function () {
6203				NativeFlv._createPlayer(settings);
6204			});
6205		}
6206
6207		return NativeFlv.promise;
6208	},
6209
6210	_createPlayer: function _createPlayer(settings) {
6211		flvjs.LoggingControl.enableDebug = settings.options.debug;
6212		flvjs.LoggingControl.enableVerbose = settings.options.debug;
6213		var player = flvjs.createPlayer(settings.options, settings.configs);
6214		_window2.default['__ready__' + settings.id](player);
6215		return player;
6216	}
6217};
6218
6219var FlvNativeRenderer = {
6220	name: 'native_flv',
6221	options: {
6222		prefix: 'native_flv',
6223		flv: {
6224			path: 'https://cdnjs.cloudflare.com/ajax/libs/flv.js/1.3.3/flv.min.js',
6225
6226			cors: true,
6227			debug: false
6228		}
6229	},
6230
6231	canPlayType: function canPlayType(type) {
6232		return _constants.HAS_MSE && ['video/x-flv', 'video/flv'].indexOf(type.toLowerCase()) > -1;
6233	},
6234
6235	create: function create(mediaElement, options, mediaFiles) {
6236
6237		var originalNode = mediaElement.originalNode,
6238		    id = mediaElement.id + '_' + options.prefix;
6239
6240		var node = null,
6241		    flvPlayer = null;
6242
6243		node = originalNode.cloneNode(true);
6244		options = Object.assign(options, mediaElement.options);
6245
6246		var props = _mejs2.default.html5media.properties,
6247		    events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']),
6248		    attachNativeEvents = function attachNativeEvents(e) {
6249			if (e.type !== 'error') {
6250				var _event = (0, _general.createEvent)(e.type, mediaElement);
6251				mediaElement.dispatchEvent(_event);
6252			}
6253		},
6254		    assignGettersSetters = function assignGettersSetters(propName) {
6255			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
6256
6257			node['get' + capName] = function () {
6258				return flvPlayer !== null ? node[propName] : null;
6259			};
6260
6261			node['set' + capName] = function (value) {
6262				if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
6263					if (propName === 'src') {
6264						node[propName] = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value;
6265						if (flvPlayer !== null) {
6266							var _flvOptions = {};
6267							_flvOptions.type = 'flv';
6268							_flvOptions.url = value;
6269							_flvOptions.cors = options.flv.cors;
6270							_flvOptions.debug = options.flv.debug;
6271							_flvOptions.path = options.flv.path;
6272							var _flvConfigs = options.flv.configs;
6273
6274							flvPlayer.destroy();
6275							for (var i = 0, total = events.length; i < total; i++) {
6276								node.removeEventListener(events[i], attachNativeEvents);
6277							}
6278							flvPlayer = NativeFlv._createPlayer({
6279								options: _flvOptions,
6280								configs: _flvConfigs,
6281								id: id
6282							});
6283							flvPlayer.attachMediaElement(node);
6284							flvPlayer.load();
6285						}
6286					} else {
6287						node[propName] = value;
6288					}
6289				}
6290			};
6291		};
6292
6293		for (var i = 0, total = props.length; i < total; i++) {
6294			assignGettersSetters(props[i]);
6295		}
6296
6297		_window2.default['__ready__' + id] = function (_flvPlayer) {
6298			mediaElement.flvPlayer = flvPlayer = _flvPlayer;
6299
6300			var flvEvents = flvjs.Events,
6301			    assignEvents = function assignEvents(eventName) {
6302				if (eventName === 'loadedmetadata') {
6303					flvPlayer.unload();
6304					flvPlayer.detachMediaElement();
6305					flvPlayer.attachMediaElement(node);
6306					flvPlayer.load();
6307				}
6308
6309				node.addEventListener(eventName, attachNativeEvents);
6310			};
6311
6312			for (var _i = 0, _total = events.length; _i < _total; _i++) {
6313				assignEvents(events[_i]);
6314			}
6315
6316			var assignFlvEvents = function assignFlvEvents(name, data) {
6317				if (name === 'error') {
6318					var message = data[0] + ': ' + data[1] + ' ' + data[2].msg;
6319					mediaElement.generateError(message, node.src);
6320				} else {
6321					var _event2 = (0, _general.createEvent)(name, mediaElement);
6322					_event2.data = data;
6323					mediaElement.dispatchEvent(_event2);
6324				}
6325			};
6326
6327			var _loop = function _loop(eventType) {
6328				if (flvEvents.hasOwnProperty(eventType)) {
6329					flvPlayer.on(flvEvents[eventType], function () {
6330						for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
6331							args[_key] = arguments[_key];
6332						}
6333
6334						return assignFlvEvents(flvEvents[eventType], args);
6335					});
6336				}
6337			};
6338
6339			for (var eventType in flvEvents) {
6340				_loop(eventType);
6341			}
6342		};
6343
6344		if (mediaFiles && mediaFiles.length > 0) {
6345			for (var _i2 = 0, _total2 = mediaFiles.length; _i2 < _total2; _i2++) {
6346				if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i2].type)) {
6347					node.setAttribute('src', mediaFiles[_i2].src);
6348					break;
6349				}
6350			}
6351		}
6352
6353		node.setAttribute('id', id);
6354
6355		originalNode.parentNode.insertBefore(node, originalNode);
6356		originalNode.autoplay = false;
vendor: 25,868 bytes, lines 6357-7351
6357		originalNode.style.display = 'none';
6358
6359		var flvOptions = {};
6360		flvOptions.type = 'flv';
6361		flvOptions.url = node.src;
6362		flvOptions.cors = options.flv.cors;
6363		flvOptions.debug = options.flv.debug;
6364		flvOptions.path = options.flv.path;
6365		var flvConfigs = options.flv.configs;
6366
6367		node.setSize = function (width, height) {
6368			node.style.width = width + 'px';
6369			node.style.height = height + 'px';
6370			return node;
6371		};
6372
6373		node.hide = function () {
6374			if (flvPlayer !== null) {
6375				flvPlayer.pause();
6376			}
6377			node.style.display = 'none';
6378			return node;
6379		};
6380
6381		node.show = function () {
6382			node.style.display = '';
6383			return node;
6384		};
6385
6386		node.destroy = function () {
6387			if (flvPlayer !== null) {
6388				flvPlayer.destroy();
6389			}
6390		};
6391
6392		var event = (0, _general.createEvent)('rendererready', node);
6393		mediaElement.dispatchEvent(event);
6394
6395		mediaElement.promises.push(NativeFlv.load({
6396			options: flvOptions,
6397			configs: flvConfigs,
6398			id: id
6399		}));
6400
6401		return node;
6402	}
6403};
6404
6405_media.typeChecks.push(function (url) {
6406	return ~url.toLowerCase().indexOf('.flv') ? 'video/flv' : null;
6407});
6408
6409_renderer.renderer.add(FlvNativeRenderer);
6410
6411},{"25":25,"26":26,"27":27,"28":28,"3":3,"7":7,"8":8}],22:[function(_dereq_,module,exports){
6412'use strict';
6413
6414var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
6415
6416var _window = _dereq_(3);
6417
6418var _window2 = _interopRequireDefault(_window);
6419
6420var _mejs = _dereq_(7);
6421
6422var _mejs2 = _interopRequireDefault(_mejs);
6423
6424var _renderer = _dereq_(8);
6425
6426var _general = _dereq_(27);
6427
6428var _constants = _dereq_(25);
6429
6430var _media = _dereq_(28);
6431
6432var _dom = _dereq_(26);
6433
6434function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6435
6436var NativeHls = {
6437
6438	promise: null,
6439
6440	load: function load(settings) {
6441		if (typeof Hls !== 'undefined') {
6442			NativeHls.promise = new Promise(function (resolve) {
6443				resolve();
6444			}).then(function () {
6445				NativeHls._createPlayer(settings);
6446			});
6447		} else {
6448			settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdnjs.cloudflare.com/ajax/libs/hls.js/0.8.1/hls.min.js';
6449
6450			NativeHls.promise = NativeHls.promise || (0, _dom.loadScript)(settings.options.path);
6451			NativeHls.promise.then(function () {
6452				NativeHls._createPlayer(settings);
6453			});
6454		}
6455
6456		return NativeHls.promise;
6457	},
6458
6459	_createPlayer: function _createPlayer(settings) {
6460		var player = new Hls(settings.options);
6461		_window2.default['__ready__' + settings.id](player);
6462		return player;
6463	}
6464};
6465
6466var HlsNativeRenderer = {
6467	name: 'native_hls',
6468	options: {
6469		prefix: 'native_hls',
6470		hls: {
6471			path: 'https://cdnjs.cloudflare.com/ajax/libs/hls.js/0.8.1/hls.min.js',
6472
6473			autoStartLoad: false,
6474			debug: false
6475		}
6476	},
6477
6478	canPlayType: function canPlayType(type) {
6479		return _constants.HAS_MSE && ['application/x-mpegurl', 'application/vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()) > -1;
6480	},
6481
6482	create: function create(mediaElement, options, mediaFiles) {
6483
6484		var originalNode = mediaElement.originalNode,
6485		    id = mediaElement.id + '_' + options.prefix,
6486		    preload = originalNode.getAttribute('preload'),
6487		    autoplay = originalNode.autoplay;
6488
6489		var hlsPlayer = null,
6490		    node = null,
6491		    index = 0,
6492		    total = mediaFiles.length;
6493
6494		node = originalNode.cloneNode(true);
6495		options = Object.assign(options, mediaElement.options);
6496		options.hls.autoStartLoad = preload && preload !== 'none' || autoplay;
6497
6498		var props = _mejs2.default.html5media.properties,
6499		    events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']),
6500		    attachNativeEvents = function attachNativeEvents(e) {
6501			if (e.type !== 'error') {
6502				var _event = (0, _general.createEvent)(e.type, mediaElement);
6503				mediaElement.dispatchEvent(_event);
6504			}
6505		},
6506		    assignGettersSetters = function assignGettersSetters(propName) {
6507			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
6508
6509			node['get' + capName] = function () {
6510				return hlsPlayer !== null ? node[propName] : null;
6511			};
6512
6513			node['set' + capName] = function (value) {
6514				if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
6515					if (propName === 'src') {
6516						node[propName] = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value;
6517						if (hlsPlayer !== null) {
6518							hlsPlayer.destroy();
6519							for (var i = 0, _total = events.length; i < _total; i++) {
6520								node.removeEventListener(events[i], attachNativeEvents);
6521							}
6522							hlsPlayer = NativeHls._createPlayer({
6523								options: options.hls,
6524								id: id
6525							});
6526							hlsPlayer.loadSource(value);
6527							hlsPlayer.attachMedia(node);
6528						}
6529					} else {
6530						node[propName] = value;
6531					}
6532				}
6533			};
6534		};
6535
6536		for (var i = 0, _total2 = props.length; i < _total2; i++) {
6537			assignGettersSetters(props[i]);
6538		}
6539
6540		_window2.default['__ready__' + id] = function (_hlsPlayer) {
6541			mediaElement.hlsPlayer = hlsPlayer = _hlsPlayer;
6542			var hlsEvents = Hls.Events,
6543			    assignEvents = function assignEvents(eventName) {
6544				if (eventName === 'loadedmetadata') {
6545					var url = mediaElement.originalNode.src;
6546					hlsPlayer.detachMedia();
6547					hlsPlayer.loadSource(url);
6548					hlsPlayer.attachMedia(node);
6549				}
6550
6551				node.addEventListener(eventName, attachNativeEvents);
6552			};
6553
6554			for (var _i = 0, _total3 = events.length; _i < _total3; _i++) {
6555				assignEvents(events[_i]);
6556			}
6557
6558			var recoverDecodingErrorDate = void 0,
6559			    recoverSwapAudioCodecDate = void 0;
6560			var assignHlsEvents = function assignHlsEvents(name, data) {
6561				if (name === 'hlsError') {
6562					console.warn(data);
6563					data = data[1];
6564
6565					if (data.fatal) {
6566						switch (data.type) {
6567							case 'mediaError':
6568								var now = new Date().getTime();
6569								if (!recoverDecodingErrorDate || now - recoverDecodingErrorDate > 3000) {
6570									recoverDecodingErrorDate = new Date().getTime();
6571									hlsPlayer.recoverMediaError();
6572								} else if (!recoverSwapAudioCodecDate || now - recoverSwapAudioCodecDate > 3000) {
6573									recoverSwapAudioCodecDate = new Date().getTime();
6574									console.warn('Attempting to swap Audio Codec and recover from media error');
6575									hlsPlayer.swapAudioCodec();
6576									hlsPlayer.recoverMediaError();
6577								} else {
6578									var message = 'Cannot recover, last media error recovery failed';
6579									mediaElement.generateError(message, node.src);
6580									console.error(message);
6581								}
6582								break;
6583							case 'networkError':
6584								if (data.details === 'manifestLoadError') {
6585									if (index < total) {
6586										node.setSrc(mediaFiles[index++].src);
6587										node.load();
6588										node.play();
6589									}
6590								} else {
6591									var _message = 'Network error';
6592									mediaElement.generateError(_message, mediaFiles);
6593									console.error(_message);
6594								}
6595								break;
6596							default:
6597								hlsPlayer.destroy();
6598								break;
6599						}
6600					}
6601				} else {
6602					var _event2 = (0, _general.createEvent)(name, mediaElement);
6603					_event2.data = data;
6604					mediaElement.dispatchEvent(_event2);
6605				}
6606			};
6607
6608			var _loop = function _loop(eventType) {
6609				if (hlsEvents.hasOwnProperty(eventType)) {
6610					hlsPlayer.on(hlsEvents[eventType], function () {
6611						for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
6612							args[_key] = arguments[_key];
6613						}
6614
6615						return assignHlsEvents(hlsEvents[eventType], args);
6616					});
6617				}
6618			};
6619
6620			for (var eventType in hlsEvents) {
6621				_loop(eventType);
6622			}
6623		};
6624
6625		if (total > 0) {
6626			for (; index < total; index++) {
6627				if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[index].type)) {
6628					node.setAttribute('src', mediaFiles[index].src);
6629					break;
6630				}
6631			}
6632		}
6633
6634		if (preload !== 'auto' && !autoplay) {
6635			node.addEventListener('play', function () {
6636				if (hlsPlayer !== null) {
6637					hlsPlayer.startLoad();
6638				}
6639			});
6640
6641			node.addEventListener('pause', function () {
6642				if (hlsPlayer !== null) {
6643					hlsPlayer.stopLoad();
6644				}
6645			});
6646		}
6647
6648		node.setAttribute('id', id);
6649
6650		originalNode.parentNode.insertBefore(node, originalNode);
6651		originalNode.autoplay = false;
6652		originalNode.style.display = 'none';
6653
6654		node.setSize = function (width, height) {
6655			node.style.width = width + 'px';
6656			node.style.height = height + 'px';
6657			return node;
6658		};
6659
6660		node.hide = function () {
6661			node.pause();
6662			node.style.display = 'none';
6663			return node;
6664		};
6665
6666		node.show = function () {
6667			node.style.display = '';
6668			return node;
6669		};
6670
6671		node.destroy = function () {
6672			if (hlsPlayer !== null) {
6673				hlsPlayer.stopLoad();
6674				hlsPlayer.destroy();
6675			}
6676		};
6677
6678		var event = (0, _general.createEvent)('rendererready', node);
6679		mediaElement.dispatchEvent(event);
6680
6681		mediaElement.promises.push(NativeHls.load({
6682			options: options.hls,
6683			id: id
6684		}));
6685
6686		return node;
6687	}
6688};
6689
6690_media.typeChecks.push(function (url) {
6691	return ~url.toLowerCase().indexOf('.m3u8') ? 'application/x-mpegURL' : null;
6692});
6693
6694_renderer.renderer.add(HlsNativeRenderer);
6695
6696},{"25":25,"26":26,"27":27,"28":28,"3":3,"7":7,"8":8}],23:[function(_dereq_,module,exports){
6697'use strict';
6698
6699var _window = _dereq_(3);
6700
6701var _window2 = _interopRequireDefault(_window);
6702
6703var _document = _dereq_(2);
6704
6705var _document2 = _interopRequireDefault(_document);
6706
6707var _mejs = _dereq_(7);
6708
6709var _mejs2 = _interopRequireDefault(_mejs);
6710
6711var _renderer = _dereq_(8);
6712
6713var _general = _dereq_(27);
6714
6715var _constants = _dereq_(25);
6716
6717function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6718
6719var HtmlMediaElement = {
6720	name: 'html5',
6721	options: {
6722		prefix: 'html5'
6723	},
6724
6725	canPlayType: function canPlayType(type) {
6726
6727		var mediaElement = _document2.default.createElement('video');
6728
6729		if (_constants.IS_ANDROID && /\/mp(3|4)$/i.test(type) || ~['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()) && _constants.SUPPORTS_NATIVE_HLS) {
6730			return 'yes';
6731		} else if (mediaElement.canPlayType) {
6732			return mediaElement.canPlayType(type.toLowerCase()).replace(/no/, '');
6733		} else {
6734			return '';
6735		}
6736	},
6737
6738	create: function create(mediaElement, options, mediaFiles) {
6739
6740		var id = mediaElement.id + '_' + options.prefix;
6741		var isActive = false;
6742
6743		var node = null;
6744
6745		if (mediaElement.originalNode === undefined || mediaElement.originalNode === null) {
6746			node = _document2.default.createElement('audio');
6747			mediaElement.appendChild(node);
6748		} else {
6749			node = mediaElement.originalNode;
6750		}
6751
6752		node.setAttribute('id', id);
6753
6754		var props = _mejs2.default.html5media.properties,
6755		    assignGettersSetters = function assignGettersSetters(propName) {
6756			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
6757
6758			node['get' + capName] = function () {
6759				return node[propName];
6760			};
6761
6762			node['set' + capName] = function (value) {
6763				if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
6764					node[propName] = value;
6765				}
6766			};
6767		};
6768
6769		for (var i = 0, _total = props.length; i < _total; i++) {
6770			assignGettersSetters(props[i]);
6771		}
6772
6773		var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']),
6774		    assignEvents = function assignEvents(eventName) {
6775			node.addEventListener(eventName, function (e) {
6776				if (isActive) {
6777					var _event = (0, _general.createEvent)(e.type, e.target);
6778					mediaElement.dispatchEvent(_event);
6779				}
6780			});
6781		};
6782
6783		for (var _i = 0, _total2 = events.length; _i < _total2; _i++) {
6784			assignEvents(events[_i]);
6785		}
6786
6787		node.setSize = function (width, height) {
6788			node.style.width = width + 'px';
6789			node.style.height = height + 'px';
6790			return node;
6791		};
6792
6793		node.hide = function () {
6794			isActive = false;
6795			node.style.display = 'none';
6796
6797			return node;
6798		};
6799
6800		node.show = function () {
6801			isActive = true;
6802			node.style.display = '';
6803
6804			return node;
6805		};
6806
6807		var index = 0,
6808		    total = mediaFiles.length;
6809		if (total > 0) {
6810			for (; index < total; index++) {
6811				if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[index].type)) {
6812					node.setAttribute('src', mediaFiles[index].src);
6813					break;
6814				}
6815			}
6816		}
6817
6818		node.addEventListener('error', function (e) {
6819			if (e.target.error.code === 4 && isActive) {
6820				if (index < total) {
6821					node.src = mediaFiles[index++].src;
6822					node.load();
6823					node.play();
6824				} else {
6825					mediaElement.generateError('Media error: Format(s) not supported or source(s) not found', mediaFiles);
6826				}
6827			}
6828		});
6829
6830		var event = (0, _general.createEvent)('rendererready', node);
6831		mediaElement.dispatchEvent(event);
6832
6833		return node;
6834	}
6835};
6836
6837_window2.default.HtmlMediaElement = _mejs2.default.HtmlMediaElement = HtmlMediaElement;
6838
6839_renderer.renderer.add(HtmlMediaElement);
6840
6841},{"2":2,"25":25,"27":27,"3":3,"7":7,"8":8}],24:[function(_dereq_,module,exports){
6842'use strict';
6843
6844var _window = _dereq_(3);
6845
6846var _window2 = _interopRequireDefault(_window);
6847
6848var _document = _dereq_(2);
6849
6850var _document2 = _interopRequireDefault(_document);
6851
6852var _mejs = _dereq_(7);
6853
6854var _mejs2 = _interopRequireDefault(_mejs);
6855
6856var _renderer = _dereq_(8);
6857
6858var _general = _dereq_(27);
6859
6860var _media = _dereq_(28);
6861
6862var _dom = _dereq_(26);
6863
6864function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6865
6866var YouTubeApi = {
6867	isIframeStarted: false,
6868
6869	isIframeLoaded: false,
6870
6871	iframeQueue: [],
6872
6873	enqueueIframe: function enqueueIframe(settings) {
6874		YouTubeApi.isLoaded = typeof YT !== 'undefined' && YT.loaded;
6875
6876		if (YouTubeApi.isLoaded) {
6877			YouTubeApi.createIframe(settings);
6878		} else {
6879			YouTubeApi.loadIframeApi();
6880			YouTubeApi.iframeQueue.push(settings);
6881		}
6882	},
6883
6884	loadIframeApi: function loadIframeApi() {
6885		if (!YouTubeApi.isIframeStarted) {
6886			(0, _dom.loadScript)('https://www.youtube.com/player_api');
6887			YouTubeApi.isIframeStarted = true;
6888		}
6889	},
6890
6891	iFrameReady: function iFrameReady() {
6892
6893		YouTubeApi.isLoaded = true;
6894		YouTubeApi.isIframeLoaded = true;
6895
6896		while (YouTubeApi.iframeQueue.length > 0) {
6897			var settings = YouTubeApi.iframeQueue.pop();
6898			YouTubeApi.createIframe(settings);
6899		}
6900	},
6901
6902	createIframe: function createIframe(settings) {
6903		return new YT.Player(settings.containerId, settings);
6904	},
6905
6906	getYouTubeId: function getYouTubeId(url) {
6907
6908		var youTubeId = '';
6909
6910		if (url.indexOf('?') > 0) {
6911			youTubeId = YouTubeApi.getYouTubeIdFromParam(url);
6912
6913			if (youTubeId === '') {
6914				youTubeId = YouTubeApi.getYouTubeIdFromUrl(url);
6915			}
6916		} else {
6917			youTubeId = YouTubeApi.getYouTubeIdFromUrl(url);
6918		}
6919
6920		var id = youTubeId.substring(youTubeId.lastIndexOf('/') + 1);
6921		youTubeId = id.split('?');
6922		return youTubeId[0];
6923	},
6924
6925	getYouTubeIdFromParam: function getYouTubeIdFromParam(url) {
6926
6927		if (url === undefined || url === null || !url.trim().length) {
6928			return null;
6929		}
6930
6931		var parts = url.split('?'),
6932		    parameters = parts[1].split('&');
6933
6934		var youTubeId = '';
6935
6936		for (var i = 0, total = parameters.length; i < total; i++) {
6937			var paramParts = parameters[i].split('=');
6938			if (paramParts[0] === 'v') {
6939				youTubeId = paramParts[1];
6940				break;
6941			}
6942		}
6943
6944		return youTubeId;
6945	},
6946
6947	getYouTubeIdFromUrl: function getYouTubeIdFromUrl(url) {
6948
6949		if (url === undefined || url === null || !url.trim().length) {
6950			return null;
6951		}
6952
6953		var parts = url.split('?');
6954		url = parts[0];
6955		return url.substring(url.lastIndexOf('/') + 1);
6956	},
6957
6958	getYouTubeNoCookieUrl: function getYouTubeNoCookieUrl(url) {
6959		if (url === undefined || url === null || !url.trim().length || url.indexOf('http://www.youtube') === -1) {
6960			return url;
6961		}
6962
6963		var parts = url.split('/');
6964		parts[2] = parts[2].replace('.com', '-nocookie.com');
6965		return parts.join('/');
6966	}
6967};
6968
6969var YouTubeIframeRenderer = {
6970	name: 'youtube_iframe',
6971
6972	options: {
6973		prefix: 'youtube_iframe',
6974
6975		youtube: {
6976			autoplay: 0,
6977			controls: 0,
6978			disablekb: 1,
6979			end: 0,
6980			loop: 0,
6981			modestbranding: 0,
6982			playsinline: 0,
6983			rel: 0,
6984			showinfo: 0,
6985			start: 0,
6986			iv_load_policy: 3,
6987
6988			nocookie: false,
6989
6990			imageQuality: null
6991		}
6992	},
6993
6994	canPlayType: function canPlayType(type) {
6995		return ~['video/youtube', 'video/x-youtube'].indexOf(type.toLowerCase());
6996	},
6997
6998	create: function create(mediaElement, options, mediaFiles) {
6999
7000		var youtube = {},
7001		    apiStack = [],
7002		    readyState = 4;
7003
7004		var youTubeApi = null,
7005		    paused = true,
7006		    ended = false,
7007		    youTubeIframe = null,
7008		    volume = 1;
7009
7010		youtube.options = options;
7011		youtube.id = mediaElement.id + '_' + options.prefix;
7012		youtube.mediaElement = mediaElement;
7013
7014		var props = _mejs2.default.html5media.properties,
7015		    assignGettersSetters = function assignGettersSetters(propName) {
7016
7017			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
7018
7019			youtube['get' + capName] = function () {
7020				if (youTubeApi !== null) {
7021					var value = null;
7022
7023					switch (propName) {
7024						case 'currentTime':
7025							return youTubeApi.getCurrentTime();
7026						case 'duration':
7027							return youTubeApi.getDuration();
7028						case 'volume':
7029							volume = youTubeApi.getVolume() / 100;
7030							return volume;
7031						case 'paused':
7032							return paused;
7033						case 'ended':
7034							return ended;
7035						case 'muted':
7036							return youTubeApi.isMuted();
7037						case 'buffered':
7038							var percentLoaded = youTubeApi.getVideoLoadedFraction(),
7039							    duration = youTubeApi.getDuration();
7040							return {
7041								start: function start() {
7042									return 0;
7043								},
7044								end: function end() {
7045									return percentLoaded * duration;
7046								},
7047								length: 1
7048							};
7049						case 'src':
7050							return youTubeApi.getVideoUrl();
7051						case 'readyState':
7052							return readyState;
7053					}
7054
7055					return value;
7056				} else {
7057					return null;
7058				}
7059			};
7060
7061			youtube['set' + capName] = function (value) {
7062				if (youTubeApi !== null) {
7063					switch (propName) {
7064						case 'src':
7065							var url = typeof value === 'string' ? value : value[0].src,
7066							    _videoId = YouTubeApi.getYouTubeId(url);
7067
7068							if (mediaElement.originalNode.autoplay) {
7069								youTubeApi.loadVideoById(_videoId);
7070							} else {
7071								youTubeApi.cueVideoById(_videoId);
7072							}
7073							break;
7074						case 'currentTime':
7075							youTubeApi.seekTo(value);
7076							break;
7077						case 'muted':
7078							if (value) {
7079								youTubeApi.mute();
7080							} else {
7081								youTubeApi.unMute();
7082							}
7083							setTimeout(function () {
7084								var event = (0, _general.createEvent)('volumechange', youtube);
7085								mediaElement.dispatchEvent(event);
7086							}, 50);
7087							break;
7088						case 'volume':
7089							volume = value;
7090							youTubeApi.setVolume(value * 100);
7091							setTimeout(function () {
7092								var event = (0, _general.createEvent)('volumechange', youtube);
7093								mediaElement.dispatchEvent(event);
7094							}, 50);
7095							break;
7096						case 'readyState':
7097							var event = (0, _general.createEvent)('canplay', youtube);
7098							mediaElement.dispatchEvent(event);
7099							break;
7100						default:
7101							
7102							break;
7103					}
7104				} else {
7105					apiStack.push({ type: 'set', propName: propName, value: value });
7106				}
7107			};
7108		};
7109
7110		for (var i = 0, total = props.length; i < total; i++) {
7111			assignGettersSetters(props[i]);
7112		}
7113
7114		var methods = _mejs2.default.html5media.methods,
7115		    assignMethods = function assignMethods(methodName) {
7116			youtube[methodName] = function () {
7117				if (youTubeApi !== null) {
7118					switch (methodName) {
7119						case 'play':
7120							paused = false;
7121							return youTubeApi.playVideo();
7122						case 'pause':
7123							paused = true;
7124							return youTubeApi.pauseVideo();
7125						case 'load':
7126							return null;
7127					}
7128				} else {
7129					apiStack.push({ type: 'call', methodName: methodName });
7130				}
7131			};
7132		};
7133
7134		for (var _i = 0, _total = methods.length; _i < _total; _i++) {
7135			assignMethods(methods[_i]);
7136		}
7137
7138		var youtubeContainer = _document2.default.createElement('div');
7139		youtubeContainer.id = youtube.id;
7140
7141		if (youtube.options.youtube.nocookie) {
7142			mediaElement.originalNode.src = YouTubeApi.getYouTubeNoCookieUrl(mediaFiles[0].src);
7143		}
7144
7145		mediaElement.originalNode.parentNode.insertBefore(youtubeContainer, mediaElement.originalNode);
7146		mediaElement.originalNode.style.display = 'none';
7147
7148		var isAudio = mediaElement.originalNode.tagName.toLowerCase() === 'audio',
7149		    height = isAudio ? '1' : mediaElement.originalNode.height,
7150		    width = isAudio ? '1' : mediaElement.originalNode.width,
7151		    videoId = YouTubeApi.getYouTubeId(mediaFiles[0].src),
7152		    youtubeSettings = {
7153			id: youtube.id,
7154			containerId: youtubeContainer.id,
7155			videoId: videoId,
7156			height: height,
7157			width: width,
7158			playerVars: Object.assign({
7159				controls: 0,
7160				rel: 0,
7161				disablekb: 1,
7162				showinfo: 0,
7163				modestbranding: 0,
7164				html5: 1,
7165				playsinline: 0,
7166				start: 0,
7167				end: 0,
7168				iv_load_policy: 3
7169			}, youtube.options.youtube),
7170			origin: _window2.default.location.host,
7171			events: {
7172				onReady: function onReady(e) {
7173					mediaElement.youTubeApi = youTubeApi = e.target;
7174					mediaElement.youTubeState = {
7175						paused: true,
7176						ended: false
7177					};
7178
7179					if (apiStack.length) {
7180						for (var _i2 = 0, _total2 = apiStack.length; _i2 < _total2; _i2++) {
7181
7182							var stackItem = apiStack[_i2];
7183
7184							if (stackItem.type === 'set') {
7185								var propName = stackItem.propName,
7186								    capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
7187
7188								youtube['set' + capName](stackItem.value);
7189							} else if (stackItem.type === 'call') {
7190								youtube[stackItem.methodName]();
7191							}
7192						}
7193					}
7194
7195					youTubeIframe = youTubeApi.getIframe();
7196
7197					if (mediaElement.originalNode.getAttribute('muted')) {
7198						youTubeApi.mute();
7199					}
7200
7201					var events = ['mouseover', 'mouseout'],
7202					    assignEvents = function assignEvents(e) {
7203						var newEvent = (0, _general.createEvent)(e.type, youtube);
7204						mediaElement.dispatchEvent(newEvent);
7205					};
7206
7207					for (var _i3 = 0, _total3 = events.length; _i3 < _total3; _i3++) {
7208						youTubeIframe.addEventListener(events[_i3], assignEvents, false);
7209					}
7210
7211					var initEvents = ['rendererready', 'loadedmetadata', 'loadeddata', 'canplay'];
7212
7213					for (var _i4 = 0, _total4 = initEvents.length; _i4 < _total4; _i4++) {
7214						var event = (0, _general.createEvent)(initEvents[_i4], youtube);
7215						mediaElement.dispatchEvent(event);
7216					}
7217				},
7218				onStateChange: function onStateChange(e) {
7219					var events = [];
7220
7221					switch (e.data) {
7222						case -1:
7223							events = ['loadedmetadata'];
7224							paused = true;
7225							ended = false;
7226							break;
7227						case 0:
7228							events = ['ended'];
7229							paused = false;
7230							ended = !youtube.options.youtube.loop;
7231							if (!youtube.options.youtube.loop) {
7232								youtube.stopInterval();
7233							}
7234							break;
7235						case 1:
7236							events = ['play', 'playing'];
7237							paused = false;
7238							ended = false;
7239							youtube.startInterval();
7240							break;
7241						case 2:
7242							events = ['pause'];
7243							paused = true;
7244							ended = false;
7245							youtube.stopInterval();
7246							break;
7247						case 3:
7248							events = ['progress'];
7249							ended = false;
7250							break;
7251						case 5:
7252							events = ['loadeddata', 'loadedmetadata', 'canplay'];
7253							paused = true;
7254							ended = false;
7255							break;
7256					}
7257
7258					for (var _i5 = 0, _total5 = events.length; _i5 < _total5; _i5++) {
7259						var event = (0, _general.createEvent)(events[_i5], youtube);
7260						mediaElement.dispatchEvent(event);
7261					}
7262				},
7263				onError: function onError(e) {
7264					var event = (0, _general.createEvent)('error', youtube);
7265					event.data = e.data;
7266					mediaElement.dispatchEvent(event);
7267				}
7268			}
7269		};
7270
7271		if (isAudio) {
7272			youtubeSettings.playerVars.playsinline = 1;
7273		}
7274
7275		if (mediaElement.originalNode.autoplay) {
7276			youtubeSettings.playerVars.autoplay = 1;
7277		}
7278
7279		if (mediaElement.originalNode.loop) {
7280			youtubeSettings.playerVars.loop = 1;
7281		}
7282
7283		YouTubeApi.enqueueIframe(youtubeSettings);
7284
7285		youtube.onEvent = function (eventName, player, _youTubeState) {
7286			if (_youTubeState !== null && _youTubeState !== undefined) {
7287				mediaElement.youTubeState = _youTubeState;
7288			}
7289		};
7290
7291		youtube.setSize = function (width, height) {
7292			if (youTubeApi !== null) {
7293				youTubeApi.setSize(width, height);
7294			}
7295		};
7296		youtube.hide = function () {
7297			youtube.stopInterval();
7298			youtube.pause();
7299			if (youTubeIframe) {
7300				youTubeIframe.style.display = 'none';
7301			}
7302		};
7303		youtube.show = function () {
7304			if (youTubeIframe) {
7305				youTubeIframe.style.display = '';
7306			}
7307		};
7308		youtube.destroy = function () {
7309			youTubeApi.destroy();
7310		};
7311		youtube.interval = null;
7312
7313		youtube.startInterval = function () {
7314			youtube.interval = setInterval(function () {
7315				var event = (0, _general.createEvent)('timeupdate', youtube);
7316				mediaElement.dispatchEvent(event);
7317			}, 250);
7318		};
7319		youtube.stopInterval = function () {
7320			if (youtube.interval) {
7321				clearInterval(youtube.interval);
7322			}
7323		};
7324		youtube.getPosterUrl = function () {
7325			var quality = options.youtube.imageQuality,
7326			    resolutions = ['default', 'hqdefault', 'mqdefault', 'sddefault', 'maxresdefault'],
7327			    id = YouTubeApi.getYouTubeId(mediaElement.originalNode.src);
7328			return quality && resolutions.indexOf(quality) > -1 && id ? 'https://img.youtube.com/vi/' + id + '/' + quality + '.jpg' : '';
7329		};
7330
7331		return youtube;
7332	}
7333};
7334
7335_window2.default.onYouTubePlayerAPIReady = function () {
7336	YouTubeApi.iFrameReady();
7337};
7338
7339_media.typeChecks.push(function (url) {
7340	return (/\/\/(www\.youtube|youtu\.?be)/i.test(url) ? 'video/x-youtube' : null
7341	);
7342});
7343
7344_renderer.renderer.add(YouTubeIframeRenderer);
7345
7346},{"2":2,"26":26,"27":27,"28":28,"3":3,"7":7,"8":8}],25:[function(_dereq_,module,exports){
7347'use strict';
7348
7349Object.defineProperty(exports, "__esModule", {
7350	value: true
7351});
7352exports.cancelFullScreen = exports.requestFullScreen = exports.isFullScreen = exports.FULLSCREEN_EVENT_NAME = exports.HAS_NATIVE_FULLSCREEN_ENABLED = exports.HAS_TRUE_NATIVE_FULLSCREEN = exports.HAS_IOS_FULLSCREEN = exports.HAS_MS_NATIVE_FULLSCREEN = exports.HAS_MOZ_NATIVE_FULLSCREEN = exports.HAS_WEBKIT_NATIVE_FULLSCREEN = exports.HAS_NATIVE_FULLSCREEN = exports.SUPPORTS_NATIVE_HLS = exports.SUPPORT_PASSIVE_EVENT = exports.SUPPORT_POINTER_EVENTS = exports.HAS_MSE = exports.IS_STOCK_ANDROID = exports.IS_SAFARI = exports.IS_FIREFOX = exports.IS_CHROME = exports.IS_EDGE = exports.IS_IE = exports.IS_ANDROID = exports.IS_IOS = exports.IS_IPOD = exports.IS_IPHONE = exports.IS_IPAD = exports.UA = exports.NAV = undefined;
7353
7354var _window = _dereq_(3);
7355
7356var _window2 = _interopRequireDefault(_window);
7357
7358var _document = _dereq_(2);
7359
7360var _document2 = _interopRequireDefault(_document);
7361
7362var _mejs = _dereq_(7);
7363
7364var _mejs2 = _interopRequireDefault(_mejs);
7365
7366function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7367
7368var NAV = exports.NAV = _window2.default.navigator;
7369var UA = exports.UA = NAV.userAgent.toLowerCase();
7370var IS_IPAD = exports.IS_IPAD = /ipad/i.test(UA) && !_window2.default.MSStream;
7371var IS_IPHONE = exports.IS_IPHONE = /iphone/i.test(UA) && !_window2.default.MSStream;
7372var IS_IPOD = exports.IS_IPOD = /ipod/i.test(UA) && !_window2.default.MSStream;
7373var IS_IOS = exports.IS_IOS = /ipad|iphone|ipod/i.test(UA) && !_window2.default.MSStream;
7374var IS_ANDROID = exports.IS_ANDROID = /android/i.test(UA);
7375var IS_IE = exports.IS_IE = /(trident|microsoft)/i.test(NAV.appName);
7376var IS_EDGE = exports.IS_EDGE = 'msLaunchUri' in NAV && !('documentMode' in _document2.default);
7377var IS_CHROME = exports.IS_CHROME = /chrome/i.test(UA);
7378var IS_FIREFOX = exports.IS_FIREFOX = /firefox/i.test(UA);
7379var IS_SAFARI = exports.IS_SAFARI = /safari/i.test(UA) && !IS_CHROME;
7380var IS_STOCK_ANDROID = exports.IS_STOCK_ANDROID = /^mozilla\/\d+\.\d+\s\(linux;\su;/i.test(UA);
7381var HAS_MSE = exports.HAS_MSE = 'MediaSource' in _window2.default;
7382var SUPPORT_POINTER_EVENTS = exports.SUPPORT_POINTER_EVENTS = function () {
7383	var element = _document2.default.createElement('x'),
7384	    documentElement = _document2.default.documentElement,
7385	    getComputedStyle = _window2.default.getComputedStyle;
7386
7387	if (!('pointerEvents' in element.style)) {
7388		return false;
7389	}
7390
7391	element.style.pointerEvents = 'auto';
7392	element.style.pointerEvents = 'x';
7393	documentElement.appendChild(element);
7394	var supports = getComputedStyle && getComputedStyle(element, '').pointerEvents === 'auto';
7395	element.remove();
7396	return !!supports;
7397}();
7398
7399var SUPPORT_PASSIVE_EVENT = exports.SUPPORT_PASSIVE_EVENT = function () {
7400	var supportsPassive = false;
7401	try {
7402		var opts = Object.defineProperty({}, 'passive', {
7403			get: function get() {
7404				supportsPassive = true;
7405			}
7406		});
7407		_window2.default.addEventListener('test', null, opts);
7408	} catch (e) {}
7409
7410	return supportsPassive;
7411}();
7412
7413var html5Elements = ['source', 'track', 'audio', 'video'];
7414var video = void 0;
7415
7416for (var i = 0, total = html5Elements.length; i < total; i++) {
7417	video = _document2.default.createElement(html5Elements[i]);
7418}
7419
7420var SUPPORTS_NATIVE_HLS = exports.SUPPORTS_NATIVE_HLS = IS_SAFARI || IS_ANDROID && (IS_CHROME || IS_STOCK_ANDROID) || IS_IE && /edge/i.test(UA);
7421
7422var hasiOSFullScreen = video.webkitEnterFullscreen !== undefined;
7423
7424var hasNativeFullscreen = video.requestFullscreen !== undefined;
7425
7426if (hasiOSFullScreen && /mac os x 10_5/i.test(UA)) {
7427	hasNativeFullscreen = false;
7428	hasiOSFullScreen = false;
7429}
7430
7431var hasWebkitNativeFullScreen = video.webkitRequestFullScreen !== undefined;
7432var hasMozNativeFullScreen = video.mozRequestFullScreen !== undefined;
7433var hasMsNativeFullScreen = video.msRequestFullscreen !== undefined;
7434var hasTrueNativeFullScreen = hasWebkitNativeFullScreen || hasMozNativeFullScreen || hasMsNativeFullScreen;
7435var nativeFullScreenEnabled = hasTrueNativeFullScreen;
7436var fullScreenEventName = '';
7437var isFullScreen = void 0,
7438    requestFullScreen = void 0,
7439    cancelFullScreen = void 0;
7440
7441if (hasMozNativeFullScreen) {
7442	nativeFullScreenEnabled = _document2.default.mozFullScreenEnabled;
7443} else if (hasMsNativeFullScreen) {
7444	nativeFullScreenEnabled = _document2.default.msFullscreenEnabled;
7445}
7446
7447if (IS_CHROME) {
7448	hasiOSFullScreen = false;
7449}
7450
7451if (hasTrueNativeFullScreen) {
7452	if (hasWebkitNativeFullScreen) {
7453		fullScreenEventName = 'webkitfullscreenchange';
7454	} else if (hasMozNativeFullScreen) {
7455		fullScreenEventName = 'mozfullscreenchange';
7456	} else if (hasMsNativeFullScreen) {
7457		fullScreenEventName = 'MSFullscreenChange';
7458	}
7459
7460	exports.isFullScreen = isFullScreen = function isFullScreen() {
7461		if (hasMozNativeFullScreen) {
7462			return _document2.default.mozFullScreen;
7463		} else if (hasWebkitNativeFullScreen) {
7464			return _document2.default.webkitIsFullScreen;
7465		} else if (hasMsNativeFullScreen) {
7466			return _document2.default.msFullscreenElement !== null;
7467		}
7468	};
7469
7470	exports.requestFullScreen = requestFullScreen = function requestFullScreen(el) {
7471		if (hasWebkitNativeFullScreen) {
7472			el.webkitRequestFullScreen();
7473		} else if (hasMozNativeFullScreen) {
7474			el.mozRequestFullScreen();
7475		} else if (hasMsNativeFullScreen) {
7476			el.msRequestFullscreen();
7477		}
7478	};
7479
7480	exports.cancelFullScreen = cancelFullScreen = function cancelFullScreen() {
7481		if (hasWebkitNativeFullScreen) {
7482			_document2.default.webkitCancelFullScreen();
7483		} else if (hasMozNativeFullScreen) {
7484			_document2.default.mozCancelFullScreen();
7485		} else if (hasMsNativeFullScreen) {
7486			_document2.default.msExitFullscreen();
7487		}
7488	};
7489}
7490
7491var HAS_NATIVE_FULLSCREEN = exports.HAS_NATIVE_FULLSCREEN = hasNativeFullscreen;
7492var HAS_WEBKIT_NATIVE_FULLSCREEN = exports.HAS_WEBKIT_NATIVE_FULLSCREEN = hasWebkitNativeFullScreen;
7493var HAS_MOZ_NATIVE_FULLSCREEN = exports.HAS_MOZ_NATIVE_FULLSCREEN = hasMozNativeFullScreen;
7494var HAS_MS_NATIVE_FULLSCREEN = exports.HAS_MS_NATIVE_FULLSCREEN = hasMsNativeFullScreen;
7495var HAS_IOS_FULLSCREEN = exports.HAS_IOS_FULLSCREEN = hasiOSFullScreen;
7496var HAS_TRUE_NATIVE_FULLSCREEN = exports.HAS_TRUE_NATIVE_FULLSCREEN = hasTrueNativeFullScreen;
vendor: 19,344 bytes, lines 7497-8194
7497var HAS_NATIVE_FULLSCREEN_ENABLED = exports.HAS_NATIVE_FULLSCREEN_ENABLED = nativeFullScreenEnabled;
7498var FULLSCREEN_EVENT_NAME = exports.FULLSCREEN_EVENT_NAME = fullScreenEventName;
7499exports.isFullScreen = isFullScreen;
7500exports.requestFullScreen = requestFullScreen;
7501exports.cancelFullScreen = cancelFullScreen;
7502
7503
7504_mejs2.default.Features = _mejs2.default.Features || {};
7505_mejs2.default.Features.isiPad = IS_IPAD;
7506_mejs2.default.Features.isiPod = IS_IPOD;
7507_mejs2.default.Features.isiPhone = IS_IPHONE;
7508_mejs2.default.Features.isiOS = _mejs2.default.Features.isiPhone || _mejs2.default.Features.isiPad;
7509_mejs2.default.Features.isAndroid = IS_ANDROID;
7510_mejs2.default.Features.isIE = IS_IE;
7511_mejs2.default.Features.isEdge = IS_EDGE;
7512_mejs2.default.Features.isChrome = IS_CHROME;
7513_mejs2.default.Features.isFirefox = IS_FIREFOX;
7514_mejs2.default.Features.isSafari = IS_SAFARI;
7515_mejs2.default.Features.isStockAndroid = IS_STOCK_ANDROID;
7516_mejs2.default.Features.hasMSE = HAS_MSE;
7517_mejs2.default.Features.supportsNativeHLS = SUPPORTS_NATIVE_HLS;
7518_mejs2.default.Features.supportsPointerEvents = SUPPORT_POINTER_EVENTS;
7519_mejs2.default.Features.supportsPassiveEvent = SUPPORT_PASSIVE_EVENT;
7520_mejs2.default.Features.hasiOSFullScreen = HAS_IOS_FULLSCREEN;
7521_mejs2.default.Features.hasNativeFullscreen = HAS_NATIVE_FULLSCREEN;
7522_mejs2.default.Features.hasWebkitNativeFullScreen = HAS_WEBKIT_NATIVE_FULLSCREEN;
7523_mejs2.default.Features.hasMozNativeFullScreen = HAS_MOZ_NATIVE_FULLSCREEN;
7524_mejs2.default.Features.hasMsNativeFullScreen = HAS_MS_NATIVE_FULLSCREEN;
7525_mejs2.default.Features.hasTrueNativeFullScreen = HAS_TRUE_NATIVE_FULLSCREEN;
7526_mejs2.default.Features.nativeFullScreenEnabled = HAS_NATIVE_FULLSCREEN_ENABLED;
7527_mejs2.default.Features.fullScreenEventName = FULLSCREEN_EVENT_NAME;
7528_mejs2.default.Features.isFullScreen = isFullScreen;
7529_mejs2.default.Features.requestFullScreen = requestFullScreen;
7530_mejs2.default.Features.cancelFullScreen = cancelFullScreen;
7531
7532},{"2":2,"3":3,"7":7}],26:[function(_dereq_,module,exports){
7533'use strict';
7534
7535Object.defineProperty(exports, "__esModule", {
7536	value: true
7537});
7538exports.removeClass = exports.addClass = exports.hasClass = undefined;
7539exports.loadScript = loadScript;
7540exports.offset = offset;
7541exports.toggleClass = toggleClass;
7542exports.fadeOut = fadeOut;
7543exports.fadeIn = fadeIn;
7544exports.siblings = siblings;
7545exports.visible = visible;
7546exports.ajax = ajax;
7547
7548var _window = _dereq_(3);
7549
7550var _window2 = _interopRequireDefault(_window);
7551
7552var _document = _dereq_(2);
7553
7554var _document2 = _interopRequireDefault(_document);
7555
7556var _mejs = _dereq_(7);
7557
7558var _mejs2 = _interopRequireDefault(_mejs);
7559
7560function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7561
7562function loadScript(url) {
7563	return new Promise(function (resolve, reject) {
7564		var script = _document2.default.createElement('script');
7565		script.src = url;
7566		script.async = true;
7567		script.onload = function () {
7568			script.remove();
7569			resolve();
7570		};
7571		script.onerror = function () {
7572			script.remove();
7573			reject();
7574		};
7575		_document2.default.head.appendChild(script);
7576	});
7577}
7578
7579function offset(el) {
7580	var rect = el.getBoundingClientRect(),
7581	    scrollLeft = _window2.default.pageXOffset || _document2.default.documentElement.scrollLeft,
7582	    scrollTop = _window2.default.pageYOffset || _document2.default.documentElement.scrollTop;
7583	return { top: rect.top + scrollTop, left: rect.left + scrollLeft };
7584}
7585
7586var hasClassMethod = void 0,
7587    addClassMethod = void 0,
7588    removeClassMethod = void 0;
7589
7590if ('classList' in _document2.default.documentElement) {
7591	hasClassMethod = function hasClassMethod(el, className) {
7592		return el.classList !== undefined && el.classList.contains(className);
7593	};
7594	addClassMethod = function addClassMethod(el, className) {
7595		return el.classList.add(className);
7596	};
7597	removeClassMethod = function removeClassMethod(el, className) {
7598		return el.classList.remove(className);
7599	};
7600} else {
7601	hasClassMethod = function hasClassMethod(el, className) {
7602		return new RegExp('\\b' + className + '\\b').test(el.className);
7603	};
7604	addClassMethod = function addClassMethod(el, className) {
7605		if (!hasClass(el, className)) {
7606			el.className += ' ' + className;
7607		}
7608	};
7609	removeClassMethod = function removeClassMethod(el, className) {
7610		el.className = el.className.replace(new RegExp('\\b' + className + '\\b', 'g'), '');
7611	};
7612}
7613
7614var hasClass = exports.hasClass = hasClassMethod;
7615var addClass = exports.addClass = addClassMethod;
7616var removeClass = exports.removeClass = removeClassMethod;
7617
7618function toggleClass(el, className) {
7619	hasClass(el, className) ? removeClass(el, className) : addClass(el, className);
7620}
7621
7622function fadeOut(el) {
7623	var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400;
7624	var callback = arguments[2];
7625
7626	if (!el.style.opacity) {
7627		el.style.opacity = 1;
7628	}
7629
7630	var start = null;
7631	_window2.default.requestAnimationFrame(function animate(timestamp) {
7632		start = start || timestamp;
7633		var progress = timestamp - start;
7634		var opacity = parseFloat(1 - progress / duration, 2);
7635		el.style.opacity = opacity < 0 ? 0 : opacity;
7636		if (progress > duration) {
7637			if (callback && typeof callback === 'function') {
7638				callback();
7639			}
7640		} else {
7641			_window2.default.requestAnimationFrame(animate);
7642		}
7643	});
7644}
7645
7646function fadeIn(el) {
7647	var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400;
7648	var callback = arguments[2];
7649
7650	if (!el.style.opacity) {
7651		el.style.opacity = 0;
7652	}
7653
7654	var start = null;
7655	_window2.default.requestAnimationFrame(function animate(timestamp) {
7656		start = start || timestamp;
7657		var progress = timestamp - start;
7658		var opacity = parseFloat(progress / duration, 2);
7659		el.style.opacity = opacity > 1 ? 1 : opacity;
7660		if (progress > duration) {
7661			if (callback && typeof callback === 'function') {
7662				callback();
7663			}
7664		} else {
7665			_window2.default.requestAnimationFrame(animate);
7666		}
7667	});
7668}
7669
7670function siblings(el, filter) {
7671	var siblings = [];
7672	el = el.parentNode.firstChild;
7673	do {
7674		if (!filter || filter(el)) {
7675			siblings.push(el);
7676		}
7677	} while (el = el.nextSibling);
7678	return siblings;
7679}
7680
7681function visible(elem) {
7682	return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);
7683}
7684
7685function ajax(url, dataType, success, error) {
7686	var xhr = _window2.default.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
7687
7688	var type = 'application/x-www-form-urlencoded; charset=UTF-8',
7689	    completed = false,
7690	    accept = '*/'.concat('*');
7691
7692	switch (dataType) {
7693		case 'text':
7694			type = 'text/plain';
7695			break;
7696		case 'json':
7697			type = 'application/json, text/javascript';
7698			break;
7699		case 'html':
7700			type = 'text/html';
7701			break;
7702		case 'xml':
7703			type = 'application/xml, text/xml';
7704			break;
7705	}
7706
7707	if (type !== 'application/x-www-form-urlencoded') {
7708		accept = type + ', */*; q=0.01';
7709	}
7710
7711	if (xhr) {
7712		xhr.open('GET', url, true);
7713		xhr.setRequestHeader('Accept', accept);
7714		xhr.onreadystatechange = function () {
7715			if (completed) {
7716				return;
7717			}
7718
7719			if (xhr.readyState === 4) {
7720				if (xhr.status === 200) {
7721					completed = true;
7722					var data = void 0;
7723					switch (dataType) {
7724						case 'json':
7725							data = JSON.parse(xhr.responseText);
7726							break;
7727						case 'xml':
7728							data = xhr.responseXML;
7729							break;
7730						default:
7731							data = xhr.responseText;
7732							break;
7733					}
7734					success(data);
7735				} else if (typeof error === 'function') {
7736					error(xhr.status);
7737				}
7738			}
7739		};
7740
7741		xhr.send();
7742	}
7743}
7744
7745_mejs2.default.Utils = _mejs2.default.Utils || {};
7746_mejs2.default.Utils.offset = offset;
7747_mejs2.default.Utils.hasClass = hasClass;
7748_mejs2.default.Utils.addClass = addClass;
7749_mejs2.default.Utils.removeClass = removeClass;
7750_mejs2.default.Utils.toggleClass = toggleClass;
7751_mejs2.default.Utils.fadeIn = fadeIn;
7752_mejs2.default.Utils.fadeOut = fadeOut;
7753_mejs2.default.Utils.siblings = siblings;
7754_mejs2.default.Utils.visible = visible;
7755_mejs2.default.Utils.ajax = ajax;
7756_mejs2.default.Utils.loadScript = loadScript;
7757
7758},{"2":2,"3":3,"7":7}],27:[function(_dereq_,module,exports){
7759'use strict';
7760
7761Object.defineProperty(exports, "__esModule", {
7762	value: true
7763});
7764exports.escapeHTML = escapeHTML;
7765exports.debounce = debounce;
7766exports.isObjectEmpty = isObjectEmpty;
7767exports.splitEvents = splitEvents;
7768exports.createEvent = createEvent;
7769exports.isNodeAfter = isNodeAfter;
7770exports.isString = isString;
7771
7772var _mejs = _dereq_(7);
7773
7774var _mejs2 = _interopRequireDefault(_mejs);
7775
7776function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7777
7778function escapeHTML(input) {
7779
7780	if (typeof input !== 'string') {
7781		throw new Error('Argument passed must be a string');
7782	}
7783
7784	var map = {
7785		'&': '&amp;',
7786		'<': '&lt;',
7787		'>': '&gt;',
7788		'"': '&quot;'
7789	};
7790
7791	return input.replace(/[&<>"]/g, function (c) {
7792		return map[c];
7793	});
7794}
7795
7796function debounce(func, wait) {
7797	var _this = this,
7798	    _arguments = arguments;
7799
7800	var immediate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
7801
7802
7803	if (typeof func !== 'function') {
7804		throw new Error('First argument must be a function');
7805	}
7806
7807	if (typeof wait !== 'number') {
7808		throw new Error('Second argument must be a numeric value');
7809	}
7810
7811	var timeout = void 0;
7812	return function () {
7813		var context = _this,
7814		    args = _arguments;
7815		var later = function later() {
7816			timeout = null;
7817			if (!immediate) {
7818				func.apply(context, args);
7819			}
7820		};
7821		var callNow = immediate && !timeout;
7822		clearTimeout(timeout);
7823		timeout = setTimeout(later, wait);
7824
7825		if (callNow) {
7826			func.apply(context, args);
7827		}
7828	};
7829}
7830
7831function isObjectEmpty(instance) {
7832	return Object.getOwnPropertyNames(instance).length <= 0;
7833}
7834
7835function splitEvents(events, id) {
7836	var rwindow = /^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/;
7837
7838	var ret = { d: [], w: [] };
7839	(events || '').split(' ').forEach(function (v) {
7840		var eventName = '' + v + (id ? '.' + id : '');
7841
7842		if (eventName.startsWith('.')) {
7843			ret.d.push(eventName);
7844			ret.w.push(eventName);
7845		} else {
7846			ret[rwindow.test(v) ? 'w' : 'd'].push(eventName);
7847		}
7848	});
7849
7850	ret.d = ret.d.join(' ');
7851	ret.w = ret.w.join(' ');
7852	return ret;
7853}
7854
7855function createEvent(eventName, target) {
7856
7857	if (typeof eventName !== 'string') {
7858		throw new Error('Event name must be a string');
7859	}
7860
7861	var eventFrags = eventName.match(/([a-z]+\.([a-z]+))/i),
7862	    detail = {
7863		target: target
7864	};
7865
7866	if (eventFrags !== null) {
7867		eventName = eventFrags[1];
7868		detail.namespace = eventFrags[2];
7869	}
7870
7871	return new window.CustomEvent(eventName, {
7872		detail: detail
7873	});
7874}
7875
7876function isNodeAfter(sourceNode, targetNode) {
7877
7878	return !!(sourceNode && targetNode && sourceNode.compareDocumentPosition(targetNode) & 2);
7879}
7880
7881function isString(value) {
7882	return typeof value === 'string';
7883}
7884
7885_mejs2.default.Utils = _mejs2.default.Utils || {};
7886_mejs2.default.Utils.escapeHTML = escapeHTML;
7887_mejs2.default.Utils.debounce = debounce;
7888_mejs2.default.Utils.isObjectEmpty = isObjectEmpty;
7889_mejs2.default.Utils.splitEvents = splitEvents;
7890_mejs2.default.Utils.createEvent = createEvent;
7891_mejs2.default.Utils.isNodeAfter = isNodeAfter;
7892_mejs2.default.Utils.isString = isString;
7893
7894},{"7":7}],28:[function(_dereq_,module,exports){
7895'use strict';
7896
7897Object.defineProperty(exports, "__esModule", {
7898	value: true
7899});
7900exports.typeChecks = undefined;
7901exports.absolutizeUrl = absolutizeUrl;
7902exports.formatType = formatType;
7903exports.getMimeFromType = getMimeFromType;
7904exports.getTypeFromFile = getTypeFromFile;
7905exports.getExtension = getExtension;
7906exports.normalizeExtension = normalizeExtension;
7907
7908var _mejs = _dereq_(7);
7909
7910var _mejs2 = _interopRequireDefault(_mejs);
7911
7912var _general = _dereq_(27);
7913
7914function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7915
7916var typeChecks = exports.typeChecks = [];
7917
7918function absolutizeUrl(url) {
7919
7920	if (typeof url !== 'string') {
7921		throw new Error('`url` argument must be a string');
7922	}
7923
7924	var el = document.createElement('div');
7925	el.innerHTML = '<a href="' + (0, _general.escapeHTML)(url) + '">x</a>';
7926	return el.firstChild.href;
7927}
7928
7929function formatType(url) {
7930	var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
7931
7932	return url && !type ? getTypeFromFile(url) : type;
7933}
7934
7935function getMimeFromType(type) {
7936
7937	if (typeof type !== 'string') {
7938		throw new Error('`type` argument must be a string');
7939	}
7940
7941	return type && type.indexOf(';') > -1 ? type.substr(0, type.indexOf(';')) : type;
7942}
7943
7944function getTypeFromFile(url) {
7945
7946	if (typeof url !== 'string') {
7947		throw new Error('`url` argument must be a string');
7948	}
7949
7950	for (var i = 0, total = typeChecks.length; i < total; i++) {
7951		var type = typeChecks[i](url);
7952
7953		if (type) {
7954			return type;
7955		}
7956	}
7957
7958	var ext = getExtension(url),
7959	    normalizedExt = normalizeExtension(ext);
7960
7961	var mime = 'video/mp4';
7962
7963	if (normalizedExt) {
7964		if (~['mp4', 'm4v', 'ogg', 'ogv', 'webm', 'flv', 'mpeg', 'mov'].indexOf(normalizedExt)) {
7965			mime = 'video/' + normalizedExt;
7966		} else if (~['mp3', 'oga', 'wav', 'mid', 'midi'].indexOf(normalizedExt)) {
7967			mime = 'audio/' + normalizedExt;
7968		}
7969	}
7970
7971	return mime;
7972}
7973
7974function getExtension(url) {
7975
7976	if (typeof url !== 'string') {
7977		throw new Error('`url` argument must be a string');
7978	}
7979
7980	var baseUrl = url.split('?')[0],
7981	    baseName = baseUrl.split('\\').pop().split('/').pop();
7982	return ~baseName.indexOf('.') ? baseName.substring(baseName.lastIndexOf('.') + 1) : '';
7983}
7984
7985function normalizeExtension(extension) {
7986
7987	if (typeof extension !== 'string') {
7988		throw new Error('`extension` argument must be a string');
7989	}
7990
7991	switch (extension) {
7992		case 'mp4':
7993		case 'm4v':
7994			return 'mp4';
7995		case 'webm':
7996		case 'webma':
7997		case 'webmv':
7998			return 'webm';
7999		case 'ogg':
8000		case 'oga':
8001		case 'ogv':
8002			return 'ogg';
8003		default:
8004			return extension;
8005	}
8006}
8007
8008_mejs2.default.Utils = _mejs2.default.Utils || {};
8009_mejs2.default.Utils.typeChecks = typeChecks;
8010_mejs2.default.Utils.absolutizeUrl = absolutizeUrl;
8011_mejs2.default.Utils.formatType = formatType;
8012_mejs2.default.Utils.getMimeFromType = getMimeFromType;
8013_mejs2.default.Utils.getTypeFromFile = getTypeFromFile;
8014_mejs2.default.Utils.getExtension = getExtension;
8015_mejs2.default.Utils.normalizeExtension = normalizeExtension;
8016
8017},{"27":27,"7":7}],29:[function(_dereq_,module,exports){
8018'use strict';
8019
8020var _document = _dereq_(2);
8021
8022var _document2 = _interopRequireDefault(_document);
8023
8024var _promisePolyfill = _dereq_(4);
8025
8026var _promisePolyfill2 = _interopRequireDefault(_promisePolyfill);
8027
8028function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8029
8030(function (arr) {
8031	arr.forEach(function (item) {
8032		if (item.hasOwnProperty('remove')) {
8033			return;
8034		}
8035		Object.defineProperty(item, 'remove', {
8036			configurable: true,
8037			enumerable: true,
8038			writable: true,
8039			value: function remove() {
8040				this.parentNode.removeChild(this);
8041			}
8042		});
8043	});
8044})([Element.prototype, CharacterData.prototype, DocumentType.prototype]);
8045
8046(function () {
8047
8048	if (typeof window.CustomEvent === 'function') {
8049		return false;
8050	}
8051
8052	function CustomEvent(event, params) {
8053		params = params || { bubbles: false, cancelable: false, detail: undefined };
8054		var evt = _document2.default.createEvent('CustomEvent');
8055		evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
8056		return evt;
8057	}
8058
8059	CustomEvent.prototype = window.Event.prototype;
8060	window.CustomEvent = CustomEvent;
8061})();
8062
8063if (typeof Object.assign !== 'function') {
8064	Object.assign = function (target) {
8065
8066		if (target === null || target === undefined) {
8067			throw new TypeError('Cannot convert undefined or null to object');
8068		}
8069
8070		var to = Object(target);
8071
8072		for (var index = 1, total = arguments.length; index < total; index++) {
8073			var nextSource = arguments[index];
8074
8075			if (nextSource !== null) {
8076				for (var nextKey in nextSource) {
8077					if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
8078						to[nextKey] = nextSource[nextKey];
8079					}
8080				}
8081			}
8082		}
8083		return to;
8084	};
8085}
8086
8087if (!String.prototype.startsWith) {
8088	String.prototype.startsWith = function (searchString, position) {
8089		position = position || 0;
8090		return this.substr(position, searchString.length) === searchString;
8091	};
8092}
8093
8094if (!Element.prototype.matches) {
8095	Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function (s) {
8096		var matches = (this.document || this.ownerDocument).querySelectorAll(s),
8097		    i = matches.length - 1;
8098		while (--i >= 0 && matches.item(i) !== this) {}
8099		return i > -1;
8100	};
8101}
8102
8103if (window.Element && !Element.prototype.closest) {
8104	Element.prototype.closest = function (s) {
8105		var matches = (this.document || this.ownerDocument).querySelectorAll(s),
8106		    i = void 0,
8107		    el = this;
8108		do {
8109			i = matches.length;
8110			while (--i >= 0 && matches.item(i) !== el) {}
8111		} while (i < 0 && (el = el.parentElement));
8112		return el;
8113	};
8114}
8115
8116(function () {
8117	var lastTime = 0;
8118	var vendors = ['ms', 'moz', 'webkit', 'o'];
8119	for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
8120		window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];
8121		window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];
8122	}
8123
8124	if (!window.requestAnimationFrame) window.requestAnimationFrame = function (callback) {
8125		var currTime = new Date().getTime();
8126		var timeToCall = Math.max(0, 16 - (currTime - lastTime));
8127		var id = window.setTimeout(function () {
8128			callback(currTime + timeToCall);
8129		}, timeToCall);
8130		lastTime = currTime + timeToCall;
8131		return id;
8132	};
8133
8134	if (!window.cancelAnimationFrame) window.cancelAnimationFrame = function (id) {
8135		clearTimeout(id);
8136	};
8137})();
8138
8139if (/firefox/i.test(navigator.userAgent)) {
8140	var getComputedStyle = window.getComputedStyle;
8141	window.getComputedStyle = function (el, pseudoEl) {
8142		var t = getComputedStyle(el, pseudoEl);
8143		return t === null ? { getPropertyValue: function getPropertyValue() {} } : t;
8144	};
8145}
8146
8147if (!window.Promise) {
8148	window.Promise = _promisePolyfill2.default;
8149}
8150
8151(function (constructor) {
8152	if (constructor && constructor.prototype && constructor.prototype.children === null) {
8153		Object.defineProperty(constructor.prototype, 'children', {
8154			get: function get() {
8155				var i = 0,
8156				    node = void 0,
8157				    nodes = this.childNodes,
8158				    children = [];
8159				while (node = nodes[i++]) {
8160					if (node.nodeType === 1) {
8161						children.push(node);
8162					}
8163				}
8164				return children;
8165			}
8166		});
8167	}
8168})(window.Node || window.Element);
8169
8170},{"2":2,"4":4}],30:[function(_dereq_,module,exports){
8171'use strict';
8172
8173Object.defineProperty(exports, "__esModule", {
8174	value: true
8175});
8176exports.isDropFrame = isDropFrame;
8177exports.secondsToTimeCode = secondsToTimeCode;
8178exports.timeCodeToSeconds = timeCodeToSeconds;
8179exports.calculateTimeFormat = calculateTimeFormat;
8180exports.convertSMPTEtoSeconds = convertSMPTEtoSeconds;
8181
8182var _mejs = _dereq_(7);
8183
8184var _mejs2 = _interopRequireDefault(_mejs);
8185
8186function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8187
8188function isDropFrame() {
8189	var fps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 25;
8190
8191	return !(fps % 1 === 0);
8192}
8193function secondsToTimeCode(time) {
8194	var forceHours = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
8195	var showFrameCount = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
8196	var fps = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 25;
8197	var secondsDecimalLength = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
8198
8199
8200	time = !time || typeof time !== 'number' || time < 0 ? 0 : time;
8201
8202	var dropFrames = Math.round(fps * 0.066666),
8203	    timeBase = Math.round(fps),
8204	    framesPer24Hours = Math.round(fps * 3600) * 24,
8205	    framesPer10Minutes = Math.round(fps * 600),
8206	    frameSep = isDropFrame(fps) ? ';' : ':',
8207	    hours = void 0,
8208	    minutes = void 0,
8209	    seconds = void 0,
8210	    frames = void 0,
8211	    f = Math.round(time * fps);
8212
8213	if (isDropFrame(fps)) {
8214
8215		if (f < 0) {
8216			f = framesPer24Hours + f;
8217		}
8218
8219		f = f % framesPer24Hours;
8220
8221		var d = Math.floor(f / framesPer10Minutes);
8222		var m = f % framesPer10Minutes;
8223		f = f + dropFrames * 9 * d;
8224		if (m > dropFrames) {
8225			f = f + dropFrames * Math.floor((m - dropFrames) / Math.round(timeBase * 60 - dropFrames));
8226		}
8227
8228		var timeBaseDivision = Math.floor(f / timeBase);
8229
8230		hours = Math.floor(Math.floor(timeBaseDivision / 60) / 60);
8231		minutes = Math.floor(timeBaseDivision / 60) % 60;
8232
8233		if (showFrameCount) {
8234			seconds = timeBaseDivision % 60;
8235		} else {
8236			seconds = (f / timeBase % 60).toFixed(secondsDecimalLength);
8237		}
8238	} else {
8239		hours = Math.floor(time / 3600) % 24;
8240		minutes = Math.floor(time / 60) % 60;
8241		if (showFrameCount) {
8242			seconds = Math.floor(time % 60);
8243		} else {
8244			seconds = (time % 60).toFixed(secondsDecimalLength);
8245		}
8246	}
8247	hours = hours <= 0 ? 0 : hours;
8248	minutes = minutes <= 0 ? 0 : minutes;
8249	seconds = seconds <= 0 ? 0 : seconds;
8250
8251	var result = forceHours || hours > 0 ? (hours < 10 ? '0' + hours : hours) + ':' : '';
8252	result += (minutes < 10 ? '0' + minutes : minutes) + ':';
8253	result += '' + (seconds < 10 ? '0' + seconds : seconds);
8254
8255	if (showFrameCount) {
8256		frames = (f % timeBase).toFixed(0);
8257		frames = frames <= 0 ? 0 : frames;
8258		result += frames < 10 ? frameSep + '0' + frames : '' + frameSep + frames;
8259	}
8260
8261	return result;
8262}
8263
8264function timeCodeToSeconds(time) {
8265	var fps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 25;
8266
8267
8268	if (typeof time !== 'string') {
8269		throw new TypeError('Time must be a string');
8270	}
8271
8272	if (time.indexOf(';') > 0) {
8273		time = time.replace(';', ':');
8274	}
8275
8276	if (!/\d{2}(\:\d{2}){0,3}/i.test(time)) {
8277		throw new TypeError('Time code must have the format `00:00:00`');
8278	}
8279
8280	var parts = time.split(':');
8281
8282	var output = void 0,
8283	    hours = 0,
8284	    minutes = 0,
8285	    seconds = 0,
8286	    frames = 0,
8287	    totalMinutes = 0,
8288	    dropFrames = Math.round(fps * 0.066666),
8289	    timeBase = Math.round(fps),
8290	    hFrames = timeBase * 3600,
8291	    mFrames = timeBase * 60;
8292
8293	switch (parts.length) {
8294		default:
8295		case 1:
8296			seconds = parseInt(parts[0], 10);
8297			break;
8298		case 2:
8299			minutes = parseInt(parts[0], 10);
8300			seconds = parseInt(parts[1], 10);
8301			break;
8302		case 3:
8303			hours = parseInt(parts[0], 10);
8304			minutes = parseInt(parts[1], 10);
8305			seconds = parseInt(parts[2], 10);
8306			break;
8307		case 4:
8308			hours = parseInt(parts[0], 10);
8309			minutes = parseInt(parts[1], 10);
8310			seconds = parseInt(parts[2], 10);
8311			frames = parseInt(parts[3], 10);
8312			break;
8313	}
8314
8315	if (isDropFrame(fps)) {
8316		totalMinutes = 60 * hours + minutes;
8317		output = hFrames * hours + mFrames * minutes + timeBase * seconds + frames - dropFrames * (totalMinutes - Math.floor(totalMinutes / 10));
8318	} else {
8319		output = (hFrames * hours + mFrames * minutes + fps * seconds + frames) / fps;
8320	}
8321
8322	return parseFloat(output.toFixed(3));
8323}
8324
8325function calculateTimeFormat(time, options) {
8326	var fps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 25;
8327
8328
8329	time = !time || typeof time !== 'number' || time < 0 ? 0 : time;
8330
8331	var hours = Math.floor(time / 3600) % 24,
8332	    minutes = Math.floor(time / 60) % 60,
8333	    seconds = Math.floor(time % 60),
8334	    frames = Math.floor((time % 1 * fps).toFixed(3)),
8335	    lis = [[frames, 'f'], [seconds, 's'], [minutes, 'm'], [hours, 'h']];
8336
8337	var format = options.timeFormat,
8338	    firstTwoPlaces = format[1] === format[0],
8339	    separatorIndex = firstTwoPlaces ? 2 : 1,
8340	    separator = format.length < separatorIndex ? format[separatorIndex] : ':',
8341	    firstChar = format[0],
8342	    required = false;
vendor: 1,473 bytes, lines 8343-8407
8343
8344	for (var i = 0, len = lis.length; i < len; i++) {
8345		if (~format.indexOf(lis[i][1])) {
8346			required = true;
8347		} else if (required) {
8348			var hasNextValue = false;
8349			for (var j = i; j < len; j++) {
8350				if (lis[j][0] > 0) {
8351					hasNextValue = true;
8352					break;
8353				}
8354			}
8355
8356			if (!hasNextValue) {
8357				break;
8358			}
8359
8360			if (!firstTwoPlaces) {
8361				format = firstChar + format;
8362			}
8363			format = lis[i][1] + separator + format;
8364			if (firstTwoPlaces) {
8365				format = lis[i][1] + format;
8366			}
8367			firstChar = lis[i][1];
8368		}
8369	}
8370
8371	options.currentTimeFormat = format;
8372}
8373
8374function convertSMPTEtoSeconds(SMPTE) {
8375
8376	if (typeof SMPTE !== 'string') {
8377		throw new TypeError('Argument must be a string value');
8378	}
8379
8380	SMPTE = SMPTE.replace(',', '.');
8381
8382	var decimalLen = ~SMPTE.indexOf('.') ? SMPTE.split('.')[1].length : 0;
8383
8384	var secs = 0,
8385	    multiplier = 1;
8386
8387	SMPTE = SMPTE.split(':').reverse();
8388
8389	for (var i = 0, total = SMPTE.length; i < total; i++) {
8390		multiplier = 1;
8391		if (i > 0) {
8392			multiplier = Math.pow(60, i);
8393		}
8394		secs += Number(SMPTE[i]) * multiplier;
8395	}
8396	return Number(secs.toFixed(decimalLen));
8397}
8398
8399_mejs2.default.Utils = _mejs2.default.Utils || {};
8400_mejs2.default.Utils.secondsToTimeCode = secondsToTimeCode;
8401_mejs2.default.Utils.timeCodeToSeconds = timeCodeToSeconds;
8402_mejs2.default.Utils.calculateTimeFormat = calculateTimeFormat;
8403_mejs2.default.Utils.convertSMPTEtoSeconds = convertSMPTEtoSeconds;
8404
8405},{"7":7}]},{},[29,6,5,15,23,20,19,21,22,24,16,18,17,9,10,11,12,13,14]);
8406
8407}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.