PageSourceSearch

https://mairie-grazac31.fr/plugins/mediaelement/resources/js/mediaelement-and-player.js

js mairie-grazac31.fr collected 2026-10-03 02:47:58 UTC 253,207 bytes, 7,892 lines download raw bytes

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