PageSourceSearch

https://www.triotop-koeln.de/files/triotop/plugins/audioplayer/mediaelement-and-player.js?v=03ada9b7

js triotop-koeln.de collected 2026-10-03 01:18:48 UTC 272,909 bytes, 8,592 lines download raw bytes

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

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.